{"version":3,"sources":["./$_lazy_route_resources|lazy|groupOptions: {}|namespace object","./src/app/account/account.service.ts","./src/app/account/unauthorized/unauthorized.component.ts","./src/app/account/unauthorized/unauthorized.component.html","./src/app/analytics/googleAnalytics.service.ts","./src/app/app-routing.module.ts","./src/app/app.component.ts","./src/app/app.component.html","./src/app/app.module.ts","./src/app/core/guards/auth.guard.ts","./src/app/core/guards/jwt.interceptor.ts","./src/app/core/helpers/app.error.service.ts","./src/app/core/helpers/constants.ts","./src/app/core/helpers/toast.service.ts","./src/app/core/helpers/toasts-container.component.ts","./src/app/core/helpers/utility.service.ts","./src/app/core/helpers/utility.ts","./src/app/layouts/footer/footer.component.ts","./src/app/layouts/footer/footer.component.html","./src/app/layouts/horizontal/horizontal.component.ts","./src/app/layouts/horizontal/horizontal.component.html","./src/app/layouts/horizontaltopbar/horizontaltopbar.component.ts","./src/app/layouts/horizontaltopbar/horizontaltopbar.component.html","./src/app/layouts/horizontaltopbar/menu.ts","./src/app/layouts/layout.component.ts","./src/app/layouts/layout.component.html","./src/app/layouts/layouts.model.ts","./src/app/layouts/layouts.module.ts","./src/app/layouts/rightsidebar/rightsidebar.component.ts","./src/app/layouts/rightsidebar/rightsidebar.component.html","./src/app/layouts/sidebar/menu.ts","./src/app/layouts/sidebar/sidebar.component.ts","./src/app/layouts/sidebar/sidebar.component.html","./src/app/layouts/topbar/topbar.component.ts","./src/app/layouts/topbar/topbar.component.html","./src/app/layouts/vertical/vertical.component.ts","./src/app/layouts/vertical/vertical.component.html","./src/app/pages/campaigns/campaign-audit/campaign-audit.component.ts","./src/app/pages/campaigns/campaign-audit/campaign-audit.component.html","./src/app/pages/campaigns/campaign-budget-audit/campaign-budget-audit.component.ts","./src/app/pages/campaigns/campaign-budget-audit/campaign-budget-audit.component.html","./src/app/pages/campaigns/campaign-details/campaign-details.component.ts","./src/app/pages/campaigns/campaign-details/campaign-details.component.html","./src/app/pages/campaigns/campaigns-main/campaigns-main.component.ts","./src/app/pages/campaigns/campaigns-main/campaigns-main.component.html","./src/app/pages/campaigns/campaigns.apiservice.ts","./src/app/pages/campaigns/campaigns.service.ts","./src/app/pages/campaigns/edit-campaign/edit-campaign.component.ts","./src/app/pages/campaigns/edit-campaign/edit-campaign.component.html","./src/app/pages/clients/client-details/client-details.component.ts","./src/app/pages/clients/client-details/client-details.component.html","./src/app/pages/clients/client-reporting-update-select-campaigns-modal/client-reporting-update-select-campaigns-modal.component.ts","./src/app/pages/clients/client-reporting-update-select-campaigns-modal/client-reporting-update-select-campaigns-modal.component.html","./src/app/pages/clients/client-reporting-update/client-reporting-update.component.ts","./src/app/pages/clients/client-reporting-update/client-reporting-update.component.html","./src/app/pages/clients/clients-main/clients-main.component.ts","./src/app/pages/clients/clients-main/clients-main.component.html","./src/app/pages/clients/clients.apiservice.ts","./src/app/pages/clients/clients.service.ts","./src/app/pages/clients/prospect-details/prospect-details.component.ts","./src/app/pages/clients/prospect-details/prospect-details.component.html","./src/app/pages/clients/prospects-main/prospects-main.component.ts","./src/app/pages/clients/prospects-main/prospects-main.component.html","./src/app/pages/companies/company-main/company-main.component.ts","./src/app/pages/companies/company-main/company-main.component.html","./src/app/pages/companies/company.apiservice.ts","./src/app/pages/companies/company.service.ts","./src/app/pages/coupons/coupon.apiservice.ts","./src/app/pages/coupons/coupon.service.ts","./src/app/pages/coupons/coupons-main/coupons-main.component.ts","./src/app/pages/coupons/coupons-main/coupons-main.component.html","./src/app/pages/coupons/edit-coupon/edit-coupon.component.ts","./src/app/pages/coupons/edit-coupon/edit-coupon.component.html","./src/app/pages/dashboard/add-widget-item/add-widget-item.component.ts","./src/app/pages/dashboard/add-widget-item/add-widget-item.component.html","./src/app/pages/dashboard/dashboard.apiservice.ts","./src/app/pages/dashboard/dashboard.component.ts","./src/app/pages/dashboard/dashboard.component.html","./src/app/pages/dashboard/dashboard.module.ts","./src/app/pages/dashboard/widget/widget.component.ts","./src/app/pages/dashboard/widget/widget.component.html","./src/app/pages/global-search/global-search.apiservice.ts","./src/app/pages/global-search/global-search.component.ts","./src/app/pages/global-search/global-search.component.html","./src/app/pages/global-search/global-search.module.ts","./src/app/pages/leads/leads-details/leads-details.component.ts","./src/app/pages/leads/leads-details/leads-details.component.html","./src/app/pages/leads/leads-main/leads-main.component.ts","./src/app/pages/leads/leads-main/leads-main.component.html","./src/app/pages/leads/leads.apiservice.ts","./src/app/pages/leads/leads.module.ts","./src/app/pages/leads/leads.service.ts","./src/app/pages/my-account/payment-method/payment-method.apiservice.ts","./src/app/pages/orders/orders.apiservice.ts","./src/app/pages/pages-routing.module.ts","./src/app/pages/pages.module.ts","./src/app/pages/products/products-api.service.ts","./src/app/pages/products/products.service.ts","./src/app/pages/reports/report-view/report-view.component.ts","./src/app/pages/reports/report-view/report-view.component.html","./src/app/pages/reports/reports-brand-report/reports-brand-report.component.ts","./src/app/pages/reports/reports-brand-report/reports-brand-report.component.html","./src/app/pages/reports/reports-main/reports-main.component.ts","./src/app/pages/reports/reports-main/reports-main.component.html","./src/app/pages/reports/reports-raw-campaigns-data/reports-raw-campaigns-data.component.ts","./src/app/pages/reports/reports-raw-campaigns-data/reports-raw-campaigns-data.component.html","./src/app/pages/reports/reports-rollup-company-main/reports-rollup-company-main.component.ts","./src/app/pages/reports/reports-rollup-company-main/reports-rollup-company-main.component.html","./src/app/pages/reports/reports-rollup-main/reports-rollup-main.component.ts","./src/app/pages/reports/reports-rollup-main/reports-rollup-main.component.html","./src/app/pages/reports/reports-rollup-report-view-progress/reports-rollup-report-view-progress.component.ts","./src/app/pages/reports/reports-rollup-report-view-progress/reports-rollup-report-view-progress.component.html","./src/app/pages/reports/reports-rollup-report-view/reports-rollup-report-view.component.html","./src/app/pages/reports/reports-rollup-report-view/reports-rollup-report-view.component.ts","./src/app/pages/reports/reports-routing.module.ts","./src/app/pages/reports/reports-simple-campaigns/reports-simple-campaigns.component.ts","./src/app/pages/reports/reports-simple-campaigns/reports-simple-campaigns.component.html","./src/app/pages/reports/reports.apiservice.ts","./src/app/pages/reports/reports.module.ts","./src/app/pages/reports/weekly-reports/weekly-reports.component.ts","./src/app/pages/reports/weekly-reports/weekly-reports.component.html","./src/app/pages/searches/new-search/new-search-fields/new-search-fields.component.ts","./src/app/pages/searches/new-search/new-search-fields/new-search-fields.component.html","./src/app/pages/searches/new-search/new-search-main/new-search-main.component.ts","./src/app/pages/searches/new-search/new-search-main/new-search-main.component.html","./src/app/pages/searches/saved-searches/saved-searches.component.ts","./src/app/pages/searches/saved-searches/saved-searches.component.html","./src/app/pages/searches/searches-main/searches-main.component.html","./src/app/pages/searches/searches-main/searches-main.component.ts","./src/app/pages/searches/searches.apiservice.ts","./src/app/pages/searches/searches.module.ts","./src/app/pages/shop/cart-wizard/cart-wizard.component.ts","./src/app/pages/shop/cart-wizard/cart-wizard.component.html","./src/app/pages/shop/order-complete/order-complete.component.html","./src/app/pages/shop/order-complete/order-complete.component.ts","./src/app/pages/shop/product-checkout/product-checkout.component.ts","./src/app/pages/shop/product-checkout/product-checkout.component.html","./src/app/pages/shop/product-input/product-input.component.ts","./src/app/pages/shop/product-input/product-input.component.html","./src/app/pages/shop/product-tile/product-tile.component.ts","./src/app/pages/shop/product-tile/product-tile.component.html","./src/app/pages/shop/products-list/products-list.component.ts","./src/app/pages/shop/products-list/products-list.component.html","./src/app/pages/shop/shop-routing.module.ts","./src/app/pages/shop/shop.apiservice.ts","./src/app/pages/shop/shop.module.ts","./src/app/pages/subscriptions/edit-subscription/edit-subscription.component.ts","./src/app/pages/subscriptions/edit-subscription/edit-subscription.component.html","./src/app/pages/subscriptions/subscription.apiservice.ts","./src/app/pages/tags/edit-tag/edit-tag.component.ts","./src/app/pages/tags/edit-tag/edit-tag.component.html","./src/app/pages/tags/tags-main/tags-main.component.ts","./src/app/pages/tags/tags-main/tags-main.component.html","./src/app/pages/tags/tags.apiservice.ts","./src/app/pages/tasks/tasks-list/tasks-list.component.ts","./src/app/pages/tasks/tasks-list/tasks-list.component.html","./src/app/pages/tasks/tasks.apiservice.ts","./src/app/pages/tasks/tasks.service.ts","./src/app/pages/users/users-main/users-main.component.ts","./src/app/pages/users/users-main/users-main.component.html","./src/app/pages/users/users.apiservice.ts","./src/app/pages/users/users.service.ts","./src/app/shared/api/datafeed.service.ts","./src/app/shared/components/404/404.component.ts","./src/app/shared/components/404/404.component.html","./src/app/shared/components/campaign-datatable/campaign-datatable-sortable.directive.ts","./src/app/shared/components/campaign-datatable/campaign-datatable.component.ts","./src/app/shared/components/campaign-datatable/campaign-datatable.component.html","./src/app/shared/components/campaign-datatable/campaign-datatable.module.ts","./src/app/shared/components/datatable/datatable-sortable.directive.ts","./src/app/shared/components/datatable/datatable.component.ts","./src/app/shared/components/datatable/datatable.component.html","./src/app/shared/components/datatable/datatable.model.ts","./src/app/shared/components/datatable/datatable.module.ts","./src/app/shared/components/notes/notes.component.ts","./src/app/shared/components/notes/notes.component.html","./src/app/shared/components/notes/notes.module.ts","./src/app/shared/components/report-datatable/report-datatable-sortable.directive.ts","./src/app/shared/components/report-datatable/report-datatable.component.ts","./src/app/shared/components/report-datatable/report-datatable.component.html","./src/app/shared/components/report-datatable/report-datatable.module.ts","./src/app/shared/components/special-datatable/special-datatable-sortable.directive.ts","./src/app/shared/components/special-datatable/special-datatable.component.ts","./src/app/shared/components/special-datatable/special-datatable.component.html","./src/app/shared/components/special-datatable/special-datatable.module.ts","./src/app/shared/components/subscriptions/subscription.component.ts","./src/app/shared/components/subscriptions/subscription.component.html","./src/app/shared/components/tags-tab/tags-tab.component.ts","./src/app/shared/components/tags-tab/tags-tab.component.html","./src/app/shared/components/tasks-dashboard/tasks-dashboard.component.ts","./src/app/shared/components/tasks-dashboard/tasks-dashboard.component.html","./src/app/shared/components/tasks-datatable/tasks-datatable-sortable.directive.ts","./src/app/shared/components/tasks-datatable/tasks-datatable.component.ts","./src/app/shared/components/tasks-datatable/tasks-datatable.component.html","./src/app/shared/components/tasks-datatable/tasks-datatable.module.ts","./src/app/shared/http/base.http.ts","./src/app/shared/modals/add-campaign-check/add-campaigncheck.component.ts","./src/app/shared/modals/add-campaign-check/add-campaigncheck.component.html","./src/app/shared/modals/add-client/add-client.component.ts","./src/app/shared/modals/add-client/add-client.component.html","./src/app/shared/modals/add-company/add-company.component.ts","./src/app/shared/modals/add-company/add-company.component.html","./src/app/shared/modals/add-lead/add-lead.component.ts","./src/app/shared/modals/add-lead/add-lead.component.html","./src/app/shared/modals/add-note/add-note.component.ts","./src/app/shared/modals/add-note/add-note.component.html","./src/app/shared/modals/add-order/add-order-subscription.component.ts","./src/app/shared/modals/add-order/add-order-subscription.component.html","./src/app/shared/modals/add-order/add-order.component.ts","./src/app/shared/modals/add-order/add-order.component.html","./src/app/shared/modals/add-payment-method/add-payment-method.component.ts","./src/app/shared/modals/add-payment-method/add-payment-method.component.html","./src/app/shared/modals/add-task/add-task.component.ts","./src/app/shared/modals/add-task/add-task.component.html","./src/app/shared/modals/add-user/add-user.component.ts","./src/app/shared/modals/add-user/add-user.component.html","./src/app/shared/modals/assign-tag/assign-tag.component.ts","./src/app/shared/modals/assign-tag/assign-tag.component.html","./src/app/shared/modals/merge-campaign/merge-campaign.component.ts","./src/app/shared/modals/merge-campaign/merge-campaign.component.html","./src/app/shared/modals/merge-clients/merge-clients.component.ts","./src/app/shared/modals/merge-clients/merge-clients.component.html","./src/app/shared/modals/process-order-payment/process-order-payment.component.ts","./src/app/shared/modals/process-order-payment/process-order-payment.component.html","./src/app/shared/modals/products-modal/products-modal.component.ts","./src/app/shared/modals/products-modal/products-modal.component.html","./src/app/shared/pagetitle/pagetitle.component.html","./src/app/shared/pagetitle/pagetitle.component.ts","./src/app/shared/shared.module.ts","./src/app/shared/shared.pipe.ts","./src/app/shared/utility.ts","./src/app/shared/widget/recent-activity/recent-activity.component.html","./src/app/shared/widget/recent-activity/recent-activity.component.ts","./src/app/shared/widget/widget.module.ts","./src/app/store/app.service.ts","./src/environments/environment.prod.ts","./src/main.ts","./node_modules/moment/locale|sync|/^/.*$"],"names":[],"mappings":"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W,GAAG;IACzB,UAAU,EAAE,IAAI;IAChB,eAAe,EAAE,YAAY;IAC7B,OAAO,EAAE,0CAA0C;IACnD,UAAU,EAAE,0CAA0C;IACtD,qBAAqB,EAAE,0CAA0C;IACjE,iBAAiB,EAAE,cAAc;CAClC,CAAC;AAEF;;;;;;EAME;AACF,sEAAsE;;;;;;;;;;;;;;;;;;ACpBvB;AAGF;AACY;AAEzD,IAAI,6EAAsB,EAAE;IAC1B,6DAAc,EAAE,CAAC;CAClB;AAED,wEAAwB,CAAC,eAAe,CAAC,sDAAS,CAAC;KAChD,KAAK,CAAC,aAAG,IAAI,cAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAlB,CAAkB,CAAC,CAAC;;;;;;;;;;;ACXpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0B","file":"main.f26ea45a55a1e228c0dd.js","sourcesContent":["function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncaught exception popping up in devtools\n\treturn Promise.resolve().then(function() {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t});\n}\nwebpackEmptyAsyncContext.keys = function() { return []; };\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = 98255;\nmodule.exports = webpackEmptyAsyncContext;","import { Injectable } from '@angular/core';\r\nimport { IUser } from '../core/models/auth.models';\r\nimport { HttpService } from '../shared/http/base.http';\r\n@Injectable()\r\nexport class AccountService extends HttpService {\r\n login(user: IUser) {\r\n return this.post<any>('/auth/login', user, { 'Content-Type': 'application/json; charset=utf-8' });\r\n }\r\n signup(user: IUser) {\r\n return this.post<any>('/auth/signup', user, { 'Content-Type': 'application/json; charset=utf-8' });\r\n }\r\n sendEmail(userId: number) {\r\n return this.get<any>('/auth/sendEmail?id=' + userId);\r\n }\r\n verifyUser(userId: string, token: string) {\r\n return this.post<any>('/auth/verifyEmail', { id: userId, token: token }, { 'Content-Type': 'application/json; charset=utf-8' });\r\n }\r\n verifyInvitation(token: string) {\r\n return this.put(`/auth/verifyInvitation/${encodeURIComponent(token)}`, { 'Content-Type': 'application/json; charset=utf-8' });\r\n }\r\n requestResetPassword(email: string) {\r\n const hostname = window.location.origin;\r\n return this.get<any>(`/auth/requestResetPassword?email=${email}&hostname=${hostname}`, { 'Content-Type': 'application/json; charset=utf-8' });\r\n }\r\n confirmResetPassword(resetPasswordModel: any) {\r\n return this.post<any>('/auth/confirmResetPassword', resetPasswordModel, { 'Content-Type': 'application/json; charset=utf-8' });\r\n }\r\n getEmailFromToken(token: string) {\r\n return this.get<any>('/auth/getEmailFromToken?token=' + encodeURIComponent(token), { 'Content-Type': 'application/json; charset=utf-8' });\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-unauthorized',\n templateUrl: './unauthorized.component.html',\n styleUrls: ['./unauthorized.component.scss']\n})\n\n/**\n * Page 500 Component\n */\nexport class UnauthorizedComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","<div class=\"my-5 pt-5\">\n <div class=\"container\">\n <div class=\"row\">\n <div class=\"col-lg-12\">\n <div class=\"text-center mb-5\">\n <h1 class=\"display-1 fw-semibold\">5<span class=\"text-primary mx-2\">0</span>0</h1>\n <h4 class=\"text-uppercase\">Internal Server Error</h4>\n <div class=\"mt-5 text-center\">\n <a class=\"btn btn-primary waves-effect waves-light\" routerLink=\"/pages/dashboard\">Back to Dashboard</a>\n </div>\n </div>\n </div>\n </div>\n <div class=\"row justify-content-center\">\n <div class=\"col-md-10 col-xl-8\">\n <div>\n <img src=\"assets/images/error-img.png\" alt=\"\" class=\"img-fluid\">\n </div>\n </div>\n <!-- end row -->\n </div>\n <!-- end row -->\n </div>\n <!-- end container -->\n</div>\n<!-- end content -->","import { Injectable } from '@angular/core';\r\nimport { NavigationEnd, Router } from '@angular/router';\r\nimport { environment } from '../../environments/environment';\r\n\r\ndeclare var gtag: Function;\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class GoogleAnalyticsService {\r\n constructor(private router: Router) {}\r\n\r\n public initialize() {\r\n this.onRouteChange();\r\n\r\n // dynamically add analytics scripts to document head\r\n try {\r\n const url = 'https://www.googletagmanager.com/gtag/js?id=';\r\n const gTagScript = document.createElement('script'); \r\n gTagScript.async = true;\r\n gTagScript.src = `${url}${environment.googleAnalyticsId}`;\r\n document.head.appendChild(gTagScript);\r\n\r\n const dataLayerScript = document.createElement('script');\r\n dataLayerScript.innerHTML = `\r\n window.dataLayer = window.dataLayer || [];\r\n function gtag(){dataLayer.push(arguments);}\r\n gtag('js', new Date());\r\n gtag('config', '${environment.googleAnalyticsId}', {'send_page_view': false});`;\r\n document.head.appendChild(dataLayerScript);\r\n } catch (e) {\r\n console.error('Error adding Google Analytics', e);\r\n }\r\n }\r\n\r\n // track visited routes\r\n private onRouteChange() { \r\n this.router.events.subscribe((event) => {\r\n if (event instanceof NavigationEnd) {\r\n gtag('config', environment.googleAnalyticsId, {\r\n page_path: event.urlAfterRedirects,\r\n });\r\n }\r\n });\r\n }\r\n\r\n // use gtag.js to send Google Analytics Events\r\n public event(action: string, eventCategory?: string, eventLabel?: string, value?: string) {\r\n gtag('event', action, {\r\n ...(eventCategory && { event_category: eventCategory }),\r\n ...(eventLabel && { event_label: eventLabel }),\r\n ...(value && { value: value }),\r\n });\r\n }\r\n}","import { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\nimport { LayoutComponent } from './layouts/layout.component';\r\nimport { AuthGuard } from './core/guards/auth.guard';\r\nimport { UnauthorizedComponent } from './account/unauthorized/unauthorized.component';\r\n\r\nconst routes: Routes = [\r\n {\r\n path: '',\r\n loadChildren: () => import('./account/account.module').then(mod => mod.AccountModule)\r\n },\r\n {\r\n path: 'unauthorized',\r\n component: UnauthorizedComponent\r\n },\r\n {\r\n path: 'account',\r\n loadChildren: () => import('./account/account.module').then(mod => mod.AccountModule)\r\n },\r\n {\r\n path: 'pages',\r\n component: LayoutComponent,\r\n canActivate: [AuthGuard],\r\n canActivateChild: [AuthGuard],\r\n loadChildren: () => import('./pages/pages.module').then(m => m.PagesModule)\r\n },\r\n {\r\n path: 'automations',\r\n redirectTo: 'workflow-definitions'\r\n },\r\n {\r\n path: 'workflow-definitions',\r\n canActivate: [AuthGuard],\r\n loadChildren: () => import('./automations/automations.module').then(mod => mod.AutomationsModule),\r\n },\r\n {\r\n path: 'workflow-instances',\r\n canActivate: [AuthGuard],\r\n loadChildren: () => import('./automations/automations.module').then(mod => mod.AutomationsModule)\r\n },\r\n {\r\n path: 'workflow-registry',\r\n canActivate: [AuthGuard],\r\n loadChildren: () => import('./automations/automations.module').then(mod => mod.AutomationsModule)\r\n },\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forRoot(routes, { scrollPositionRestoration: 'top', relativeLinkResolution: 'legacy' })],\r\n exports: [RouterModule]\r\n})\r\nexport class AppRoutingModule { }\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { NavigationEnd, Router } from '@angular/router';\r\nimport { AppService } from './store/app.service';\r\nimport { environment } from '../environments/environment';\r\nimport { GoogleAnalyticsService } from './analytics/googleAnalytics.service';\r\n\r\n@Component({\r\n selector: 'app-root',\r\n templateUrl: './app.component.html',\r\n styleUrls: ['./app.component.scss']\r\n})\r\nexport class AppComponent implements OnInit {\r\n\r\n constructor(\r\n private router: Router,\r\n private appService: AppService,\r\n private readonly googleAnalyticsService: GoogleAnalyticsService\r\n ) {\r\n this.router.events.subscribe((val) => {\r\n if (val instanceof NavigationEnd) {\r\n appService.setActiveRoute$(val);\r\n }\r\n });\r\n }\r\n ngOnInit()\r\n {\r\n if (environment.production) {\r\n this.googleAnalyticsService.initialize();\r\n if (location.protocol === 'http:') {\r\n window.location.href = location.href.replace('http', 'https');\r\n }\r\n }\r\n }\r\n title = 'ReachMe';\r\n}\r\n","<app-toasts aria-live=\"polite\" aria-atomic=\"true\"></app-toasts>\r\n<router-outlet ngxUiLoaderBlurred [blur]=\"10\"></router-outlet>\r\n<ngx-ui-loader></ngx-ui-loader>\r\n","import { DEFAULT_CURRENCY_CODE, ErrorHandler, NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';\nimport { BrowserModule } from '@angular/platform-browser';\nimport {\n HttpClientModule,\n HttpClient,\n HTTP_INTERCEPTORS,\n} from '@angular/common/http';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\n\nimport { AppRoutingModule } from './app-routing.module';\nimport { AppComponent } from './app.component';\nimport { TranslateModule, TranslateLoader } from '@ngx-translate/core';\nimport { TranslateHttpLoader } from '@ngx-translate/http-loader';\n\nimport { PagesModule } from './pages/pages.module';\nimport { LayoutsModule } from './layouts/layouts.module';\n\nimport { AuthGuard } from './core/guards/auth.guard';\nimport { JwtModule } from '@auth0/angular-jwt';\nimport * as util from '../app/core/helpers/utility';\nimport { ErrorService } from './core/helpers/app.error.service';\nimport { JwtInterceptor } from './core/guards/jwt.interceptor';\nimport { SortablejsModule } from 'ngx-sortablejs'\nimport { NgxUiLoaderConfig, NgxUiLoaderHttpModule, NgxUiLoaderModule, NgxUiLoaderRouterModule } from \"ngx-ui-loader\";\nimport { UnauthorizedComponent } from './account/unauthorized/unauthorized.component';\nimport { UtilityService } from './core/helpers/utility.service';\nimport { environment } from '../environments/environment';\nimport { ToastService } from './core/helpers/toast.service';\nimport { ToastsContainer } from './core/helpers/toasts-container.component';\nimport { NgbModule } from '@ng-bootstrap/ng-bootstrap';\nimport { NgxSpinnerModule } from \"ngx-spinner\";\nimport { ProductCheckoutComponent } from './pages/shop/product-checkout/product-checkout.component';\nimport { CurrencyPipe } from '@angular/common';\nimport { NgxMatTagInputModule } from 'ngx-mat-tag-input';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { MatIconModule } from '@angular/material/icon';\n\nexport function createTranslateLoader(http: HttpClient): any {\n return new TranslateHttpLoader(http, 'assets/i18n/', '.json');\n}\n\nconst ngxUiLoaderConfig: NgxUiLoaderConfig = {\n fgsColor: '#000000',\n pbColor: '#000000',\n fastFadeOut: true,\n};\n@NgModule({\n declarations: [AppComponent, UnauthorizedComponent, ToastsContainer],\n imports: [\n NgbModule,\n TranslateModule.forRoot({\n defaultLanguage: 'en',\n loader: {\n provide: TranslateLoader,\n useFactory: createTranslateLoader,\n deps: [HttpClient],\n },\n }),\n HttpClientModule,\n JwtModule.forRoot({\n config: {\n tokenGetter: util.getAuthToken,\n allowedDomains: ['localhost:5001'],\n disallowedRoutes: [],\n },\n }),\n BrowserModule,\n AppRoutingModule,\n PagesModule,\n LayoutsModule,\n BrowserAnimationsModule,\n NgxUiLoaderModule.forRoot(ngxUiLoaderConfig),\n //NgxUiLoaderRouterModule, //\n NgxUiLoaderHttpModule.forRoot({\n showForeground: true, exclude: [\n `${environment.baseUrl}/api/GmailClient/Mailboxes?Detailed=true`,\n `${environment.baseUrl}/api/GmailClient/Archived/Summary`,\n `${environment.baseUrl}/api/products/getProductMedia`,\n ],\n excludeRegexp: [\n \".*\\\\/widget\\\\/value\\\\?widgetId=.*\"\n ]\n }\n ),\n NgxSpinnerModule,\n NgxMatTagInputModule,\n MatChipsModule,\n MatIconModule,\n SortablejsModule.forRoot({ animation: 150 }),\n ],\n providers: [\n { provide: HTTP_INTERCEPTORS, useClass: JwtInterceptor, multi: true },\n { provide: ErrorHandler, useClass: ErrorService },\n { provide: DEFAULT_CURRENCY_CODE, useValue: 'USD' },\n AuthGuard,\n UtilityService,\n ToastService,\n CurrencyPipe\n ],\n schemas:[\n CUSTOM_ELEMENTS_SCHEMA\n ],\n bootstrap: [AppComponent],\n})\nexport class AppModule { }\n","import {\r\n CanActivate,\r\n ActivatedRouteSnapshot,\r\n RouterStateSnapshot,\r\n UrlTree,\r\n Router,\r\n CanDeactivate,\r\n CanActivateChild,\r\n} from '@angular/router';\r\nimport { Injectable } from '@angular/core';\r\nimport { JwtHelperService } from '@auth0/angular-jwt';\r\nimport * as util from '../helpers/utility';\r\nimport { Constants, ROLES, ROLES_KEY } from '../helpers/constants';\r\nimport { Observable, of } from 'rxjs';\r\nimport * as _ from 'underscore';\r\nimport { AppService } from '../../store/app.service';\r\n@Injectable()\r\nexport class AuthGuard implements CanActivate, CanActivateChild {\r\n constructor(\r\n private router: Router,\r\n private appService: AppService,\r\n private jwtHelperService: JwtHelperService,\r\n ) { }\r\n\r\n\r\n canActivate(route: ActivatedRouteSnapshot, url: any): Observable<boolean> {\r\n var token = util.getAuthToken();\r\n if (token === '') {\r\n this.router.navigate(['/account/login']);\r\n localStorage.removeItem(Constants.LS_AUTHENTICATION_KEY);\r\n return of(false);\r\n }\r\n if (token && !this.jwtHelperService.isTokenExpired(token)) {\r\n var tokenData = this.jwtHelperService.decodeToken(token);\r\n var r = tokenData[ROLES_KEY];\r\n var roles: Array<any> = [];\r\n if (typeof (r) === 'string')\r\n roles = [JSON.parse(r)];\r\n else\r\n roles = tokenData[ROLES_KEY].map((x: any) => JSON.parse(x))\r\n\r\n if (this.appService.getActiveUserRoles$().value.length == 0)\r\n this.appService.setActiveUserRoles$(roles);\r\n\r\n if (this.appService.getActiveUser$().value.id == null) {\r\n let u = util.getActiveUser();\r\n u.roles = roles;\r\n this.appService.setActiveUser$(u);\r\n if (u?.forcePasswordReset) {\r\n this.router.navigate(['/account/reset-password', token, true]);\r\n }\r\n }\r\n\r\n\r\n if (tokenData.code === ROLES.Admin.Code) /// admin access all\r\n return of(true);\r\n\r\n if (_.isEmpty(route.data)) // route is open for all\r\n return of(true);\r\n if ((route.data.roles).some((r: any) => roles.map(x => x.code).includes(r)))\r\n return of(true);\r\n else\r\n this.router.navigate(['/pages/dashboard']);\r\n\r\n }\r\n else this.router.navigate(['/login']);\r\n return of(false);\r\n }\r\n canActivateChild(route: ActivatedRouteSnapshot, url: any): boolean {\r\n const userRole = this.appService.getActiveUser$().value?.roles;\r\n let codes = userRole.map(x => x.code);\r\n if (codes.indexOf(ROLES.Admin.Code) > -1)\r\n return true;\r\n if (_.isEmpty(route.data)) // route is open for all\r\n return true;\r\n if ((route.data.roles as Array<number>).some(r => codes.includes(r)))\r\n return true;\r\n else\r\n this.router.navigate(['/pages/dashboard']);\r\n return false;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\nimport {\n HttpRequest,\n HttpHandler,\n HttpEvent,\n HttpInterceptor,\n HttpErrorResponse,\n} from '@angular/common/http';\nimport { Observable, of, throwError } from 'rxjs';\nimport * as util from '../../core/helpers/utility'\nimport { catchError } from 'rxjs/operators';\nimport { Router } from '@angular/router';\n\n@Injectable()\nexport class JwtInterceptor implements HttpInterceptor {\n constructor(private router: Router) { }\n\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n const currentUser = util.getActiveUser();\n if (currentUser && currentUser.authToken) {\n request = request.clone({\n setHeaders: {\n Authorization: `Bearer ${currentUser.authToken}`,\n },\n });\n }\n return next.handle(request).pipe(catchError(x=> this.handleAuthError(x)));\n }\n \n private handleAuthError(err: HttpErrorResponse): Observable<any> {\n if (err.status === 401 || err.status === 403) {\n this.router.navigateByUrl(`/account/login`);\n return of(err.message);\n }\n return throwError(err);\n }\n}\n","import { Injectable, ErrorHandler, Injector } from '@angular/core';\nimport Swal from 'sweetalert2';\nimport { HttpErrorResponse } from '@angular/common/http';\n//import { AppService } from './app.service';\nimport * as _ from 'underscore'\nimport { NgxUiLoaderService } from 'ngx-ui-loader';\nimport { environment } from '../../../environments/environment';\n@Injectable()\nexport class ErrorService implements ErrorHandler {\n constructor(\n private injector: Injector,\n private ngxLoader: NgxUiLoaderService\n ) {\n }\n handleError(error: any) {\n if (error instanceof HttpErrorResponse) {\n let errorMessage = '';\n if (error.error instanceof ProgressEvent) {\n Swal.fire('Something really bad happened', error.message, 'error') \n } else {\n // server-side error\n Swal.fire('Error', this.getErrorMessage(error), 'error')\n }\n } else {\n console.log(error + \" ELSEE\");\n\n if(environment.production == false){\n console.log(error);\n }\n }\n \n if(environment.production == false){\n console.log(error);\n }\n }\n\n getErrorMessage(error: any) {\n if (!_.isEmpty(error.error) && (typeof error.error === 'string' || error.error instanceof String))\n return error.error;\n if (!_.isEmpty(error.error) && (typeof error.error.msg === 'string' || error.error.msg instanceof String))\n return error.error.msg;\n if (!_.isEmpty(error.error) && (typeof error.error.Msg === 'string' || error.error.Msg instanceof String))\n return error.error.Msg;\n if (typeof error.message === 'string' || error.message instanceof String)\n return error.message;\n }\n}\n","export const Constants = {\n LS_AUTHENTICATION_KEY: 'LS_AUTH_RM',\n LS_COMPANY_KEY: 'LS_COMPANY_RM',\n LS_ROOT_KEY: '_LS_ROOT_RM'\n}\nexport const PAGE_KEYS = {\n Dashboard: \"Dashboard\",\n Clients: 'Clients'\n}\nexport const ROLES_KEY = 'http://schemas.microsoft.com/ws/2008/06/identity/claims/role';\nexport const NOTES_TYPE = {\n Campaigns: 1,\n Clients: 2,\n Leads: 3\n}\nexport const TAGS_TYPE = {\n Campaigns: 1,\n Clients: 2,\n Products: 3\n}\nexport const ROLES_TYPE = {\n Internal: 1,\n External: 2\n}\nexport const CART_STEPS = {\n BundleDetails: 1,\n RequiredInfo: 2,\n Cart: 3,\n Checkout: 4,\n Completed: 5\n}\nexport const PAGE_NAMES = {\n MyAccount: 'MyAccount',\n Shop: 'Shop',\n Home: 'Home',\n Dashboard: 'Dashboard',\n Campaigns: 'Campaigns',\n CampaignsDetails: 'CampaignsDetails',\n EditCampaign: 'EditCampaign',\n Tasks: 'Tasks',\n Reports: 'Reports',\n Subscriptions: 'Subscriptions',\n SubscriptionsDetails: 'SubscriptionsDetails',\n Orders: 'Orders',\n OrdersDetails: 'Orders Details',\n PaymentMethods: 'PaymentMethods',\n Leads: 'Leads',\n LeadDetails: 'LeadDetails',\n Clients: 'Clients',\n ClientDetails: 'ClientDetails',\n Prospects: 'Prospects',\n ProspectsDetails: 'ProspectsDetails',\n Brands: 'Brands',\n Users: 'Users',\n Companies: 'Companies',\n Searches: 'SavedSearches',\n GlobalSearch: 'GlobalSerche',\n Products: 'Products',\n ProductsDetails: 'ProductsDetails',\n Tags: 'Tags',\n EditTag: 'EditTag',\n Coupons: 'Coupons',\n EditCoupon: 'EditCoupon',\n Emails: 'Emails',\n Settings: 'Settings',\n Automations: 'Automations',\n Forms: 'Forms'\n}\n\n// DO NOT CHANGE THE Code PROPERTY, It is matched in database\nexport const ROLES = {\n Admin: { Code: 1, IsInternal: true },\n TechServices: { Code: 2, IsInternal: true },\n DMS: { Code: 3, IsInternal: true },\n ShopManager: { Code: 4, IsInternal: true },\n CompanyOwner: { Code: 5, IsInternal: false, Company: { Required: true } },\n MarketingManager: { Code: 6, IsInternal: false, Company: { Required: true }, Client: { Required: false } },\n ClientOwner: { Code: 7, IsInternal: false, Client: { Required: true } },\n Employee: { Code: 8, IsInternal: false, Client: { Required: true }, Campaign: { Required: false } },\n SubscriptionEmployee: { Code: 9, IsInternal: false, Client: { Required: true }, Campaign: { Required: false } },\n SalesRep: { Code: 10, IsInternal: true },\n Staff: { Code: 12, IsInternal: true }\n}\nexport const PRODUCT_TYPES = {\n SimpleProduct: { code: 1, title: 'Simple Product' },\n SimpleSubscription: { code: 2, title: 'Simple Subscription' },\n VariableSubscription: { code: 3, title: 'Variable Subscription' }\n}\nexport const PRODUCT_FAMILY = {\n Bundle: 0,\n DigitalMarketing: 1,\n CampaignConsulting: 2,\n SEOProgram: 3,\n HostedWebsite: 4,\n SocialMedia: 5,\n AdSpend: 6,\n AddPlatform: 7,\n}\nexport const TASK_PRIORITY = [{\n title: 'Critical',\n value: 1,\n},\n{\n title: 'Essential',\n value: 2,\n},\n{\n title: 'Non-Essential',\n value: 3,\n}\n]\n// https://atlastechdev.atlassian.net/browse/REAC-59 - 2. Updates to fields: *Update the possible values of Stage to:\nexport const CAMPAIGN_STAGES = [\n {\n title: \"Tech Setup\",\n value: 1\n },\n {\n title: \"Campaign Set-Up\",\n value: 2\n },\n {\n title: \"Client Approval\",\n value: 3\n },\n {\n title: \"QC\",\n value: 4\n },\n {\n title: \"Waiting to Start\",\n value: 5\n },\n {\n title: \"Active\",\n value: 6\n },\n {\n title: \"Paused\",\n value: 7\n },\n {\n title: \"Inactive\",\n value: 8\n },\n {\n title: \"Cancelling\",\n value: 9\n },\n]\nexport const COUPON_TYPES = [\n {\n title: \"Fixed Amount\",\n value: 1\n },\n {\n title: \"Percentage\",\n value: 2\n },\n]\n\nexport const RESTRICTION_TYPES = [\n {\n title: \"Cart\",\n value: 1\n },\n {\n title: \"Product\",\n value: 2\n },\n]\n\nexport const TRX_STATUS = {\n TransactionApproved: 1,\n TransactionDeclined: 2,\n Error: 3,\n}\nexport const ORDER_STATUS = [\n { title: 'Pending', value: 0 },\n { title: 'PaymentPending', value: 1 },\n { title: 'Canceled', value: 2, },\n { title: 'Completed', value: 3, },\n { title: 'Fully Refunded', value: 4, },\n { title: 'Partially Refunded', value: 5, }\n]\n\nexport const COUNTRY_LIST = [\n \"Afghanistan\",\n \"Albania\",\n \"Algeria\",\n \"American Samoa\",\n \"Andorra\",\n \"Angola\",\n \"Anguilla\",\n \"Antarctica\",\n \"Antigua and Barbuda\",\n \"Argentina\",\n \"Armenia\",\n \"Aruba\",\n \"Australia\",\n \"Austria\",\n \"Azerbaijan\",\n \"Bahamas (the)\",\n \"Bahrain\",\n \"Bangladesh\",\n \"Barbados\",\n \"Belarus\",\n \"Belgium\",\n \"Belize\",\n \"Benin\",\n \"Bermuda\",\n \"Bhutan\",\n \"Bolivia (Plurinational State of)\",\n \"Bonaire, Sint Eustatius and Saba\",\n \"Bosnia and Herzegovina\",\n \"Botswana\",\n \"Bouvet Island\",\n \"Brazil\",\n \"British Indian Ocean Territory (the)\",\n \"Brunei Darussalam\",\n \"Bulgaria\",\n \"Burkina Faso\",\n \"Burundi\",\n \"Cabo Verde\",\n \"Cambodia\",\n \"Cameroon\",\n \"Canada\",\n \"Cayman Islands (the)\",\n \"Central African Republic (the)\",\n \"Chad\",\n \"Chile\",\n \"China\",\n \"Christmas Island\",\n \"Cocos (Keeling) Islands (the)\",\n \"Colombia\",\n \"Comoros (the)\",\n \"Congo (the Democratic Republic of the)\",\n \"Congo (the)\",\n \"Cook Islands (the)\",\n \"Costa Rica\",\n \"Croatia\",\n \"Cuba\",\n \"Curaçao\",\n \"Cyprus\",\n \"Czechia\",\n \"Côte d'Ivoire\",\n \"Denmark\",\n \"Djibouti\",\n \"Dominica\",\n \"Dominican Republic (the)\",\n \"Ecuador\",\n \"Egypt\",\n \"El Salvador\",\n \"Equatorial Guinea\",\n \"Eritrea\",\n \"Estonia\",\n \"Eswatini\",\n \"Ethiopia\",\n \"Falkland Islands (the) [Malvinas]\",\n \"Faroe Islands (the)\",\n \"Fiji\",\n \"Finland\",\n \"France\",\n \"French Guiana\",\n \"French Polynesia\",\n \"French Southern Territories (the)\",\n \"Gabon\",\n \"Gambia (the)\",\n \"Georgia\",\n \"Germany\",\n \"Ghana\",\n \"Gibraltar\",\n \"Greece\",\n \"Greenland\",\n \"Grenada\",\n \"Guadeloupe\",\n \"Guam\",\n \"Guatemala\",\n \"Guernsey\",\n \"Guinea\",\n \"Guinea-Bissau\",\n \"Guyana\",\n \"Haiti\",\n \"Heard Island and McDonald Islands\",\n \"Holy See (the)\",\n \"Honduras\",\n \"Hong Kong\",\n \"Hungary\",\n \"Iceland\",\n \"India\",\n \"Indonesia\",\n \"Iran (Islamic Republic of)\",\n \"Iraq\",\n \"Ireland\",\n \"Isle of Man\",\n \"Israel\",\n \"Italy\",\n \"Jamaica\",\n \"Japan\",\n \"Jersey\",\n \"Jordan\",\n \"Kazakhstan\",\n \"Kenya\",\n \"Kiribati\",\n \"Korea (the Democratic People's Republic of)\",\n \"Korea (the Republic of)\",\n \"Kuwait\",\n \"Kyrgyzstan\",\n \"Lao People's Democratic Republic (the)\",\n \"Latvia\",\n \"Lebanon\",\n \"Lesotho\",\n \"Liberia\",\n \"Libya\",\n \"Liechtenstein\",\n \"Lithuania\",\n \"Luxembourg\",\n \"Macao\",\n \"Madagascar\",\n \"Malawi\",\n \"Malaysia\",\n \"Maldives\",\n \"Mali\",\n \"Malta\",\n \"Marshall Islands (the)\",\n \"Martinique\",\n \"Mauritania\",\n \"Mauritius\",\n \"Mayotte\",\n \"Mexico\",\n \"Micronesia (Federated States of)\",\n \"Moldova (the Republic of)\",\n \"Monaco\",\n \"Mongolia\",\n \"Montenegro\",\n \"Montserrat\",\n \"Morocco\",\n \"Mozambique\",\n \"Myanmar\",\n \"Namibia\",\n \"Nauru\",\n \"Nepal\",\n \"Netherlands (the)\",\n \"New Caledonia\",\n \"New Zealand\",\n \"Nicaragua\",\n \"Niger (the)\",\n \"Nigeria\",\n \"Niue\",\n \"Norfolk Island\",\n \"Northern Mariana Islands (the)\",\n \"Norway\",\n \"Oman\",\n \"Pakistan\",\n \"Palau\",\n \"Palestine, State of\",\n \"Panama\",\n \"Papua New Guinea\",\n \"Paraguay\",\n \"Peru\",\n \"Philippines (the)\",\n \"Pitcairn\",\n \"Poland\",\n \"Portugal\",\n \"Puerto Rico\",\n \"Qatar\",\n \"Republic of North Macedonia\",\n \"Romania\",\n \"Russian Federation (the)\",\n \"Rwanda\",\n \"Réunion\",\n \"Saint Barthélemy\",\n \"Saint Helena, Ascension and Tristan da Cunha\",\n \"Saint Kitts and Nevis\",\n \"Saint Lucia\",\n \"Saint Martin (French part)\",\n \"Saint Pierre and Miquelon\",\n \"Saint Vincent and the Grenadines\",\n \"Samoa\",\n \"San Marino\",\n \"Sao Tome and Principe\",\n \"Saudi Arabia\",\n \"Senegal\",\n \"Serbia\",\n \"Seychelles\",\n \"Sierra Leone\",\n \"Singapore\",\n \"Sint Maarten (Dutch part)\",\n \"Slovakia\",\n \"Slovenia\",\n \"Solomon Islands\",\n \"Somalia\",\n \"South Africa\",\n \"South Georgia and the South Sandwich Islands\",\n \"South Sudan\",\n \"Spain\",\n \"Sri Lanka\",\n \"Sudan (the)\",\n \"Suriname\",\n \"Svalbard and Jan Mayen\",\n \"Sweden\",\n \"Switzerland\",\n \"Syrian Arab Republic\",\n \"Taiwan\",\n \"Tajikistan\",\n \"Tanzania, United Republic of\",\n \"Thailand\",\n \"Timor-Leste\",\n \"Togo\",\n \"Tokelau\",\n \"Tonga\",\n \"Trinidad and Tobago\",\n \"Tunisia\",\n \"Turkey\",\n \"Turkmenistan\",\n \"Turks and Caicos Islands (the)\",\n \"Tuvalu\",\n \"Uganda\",\n \"Ukraine\",\n \"United Arab Emirates (the)\",\n \"United Kingdom of Great Britain and Northern Ireland (the)\",\n \"United States Minor Outlying Islands (the)\",\n \"United States of America\",\n \"Uruguay\",\n \"Uzbekistan\",\n \"Vanuatu\",\n \"Venezuela (Bolivarian Republic of)\",\n \"Viet Nam\",\n \"Virgin Islands (British)\",\n \"Virgin Islands (U.S.)\",\n \"Wallis and Futuna\",\n \"Western Sahara\",\n \"Yemen\",\n \"Zambia\",\n \"Zimbabwe\",\n \"Åland Islands\"\n];\n\n\n","import { Injectable, TemplateRef } from '@angular/core';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class ToastService {\r\n toasts: any[] = [];\r\n\r\n show(textOrTpl: string | TemplateRef<any>, options: any = {}) {\r\n this.toasts.push({ textOrTpl, ...options });\r\n }\r\n\r\n remove(toast: any) {\r\n this.toasts = this.toasts.filter(t => t !== toast);\r\n }\r\n\r\n showStandard(msg: string, delay: number = 10000) {\r\n this.show(msg, { classname: 'bg-primary text-center text-white', delay });\r\n }\r\n\r\n /**\r\n * Success message \r\n */\r\n showSuccess(msg: string, delay: number = 10000) {\r\n this.show(msg, { classname: 'bg-success text-center text-white', delay });\r\n }\r\n\r\n /**\r\n * Danger message \r\n */\r\n showDanger(msg: string, delay: number = 10000) {\r\n this.show(msg, { classname: 'bg-danger text-center text-white', delay });\r\n }\r\n\r\n /**\r\n * Warning message \r\n */\r\n showWarning(msg: string, delay: number = 10000) {\r\n this.show(msg, { classname: 'bg-warning text-center text-white', delay });\r\n }\r\n}\r\n","import { Component, TemplateRef } from '@angular/core';\r\n\r\nimport { ToastService } from './toast.service';\r\n\r\n@Component({\r\n selector: 'app-toasts',\r\n template: `\r\n <ngb-toast\r\n *ngFor=\"let toast of toastService.toasts\"\r\n [class]=\"toast.classname\"\r\n [autohide]=\"true\"\r\n [delay]=\"toast.delay || 5000\"\r\n (hidden)=\"toastService.remove(toast)\"\r\n >\r\n <ng-template [ngIf]=\"isTemplate(toast)\" [ngIfElse]=\"text\">\r\n <ng-template [ngTemplateOutlet]=\"toast.textOrTpl\"></ng-template>\r\n </ng-template>\r\n\r\n <ng-template #text>{{ toast.textOrTpl }}</ng-template>\r\n </ngb-toast>\r\n `,\r\n host: { '[class.ngb-toasts]': 'true' }\r\n})\r\nexport class ToastsContainer {\r\n constructor(public toastService: ToastService) { }\r\n\r\n isTemplate(toast: { textOrTpl: any; }) { return toast.textOrTpl instanceof TemplateRef; }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { JwtHelperService } from '@auth0/angular-jwt';\r\nimport { ProductsApiService } from '../../pages/products/products-api.service';\r\nimport { ProductsService } from '../../pages/products/products.service';\r\nimport { ROLES_KEY } from './constants';\r\nimport { getAuthToken } from './utility';\r\n@Injectable()\r\nexport class UtilityService {\r\n constructor(\r\n private jwtHelperService: JwtHelperService,\r\n private productApiService: ProductsApiService,\r\n private sanitizer: DomSanitizer\r\n ) {\r\n }\r\n getUserRoles() {\r\n var token = getAuthToken();\r\n if (token && !this.jwtHelperService.isTokenExpired(token)) {\r\n var tokenData = this.jwtHelperService.decodeToken(token);\r\n var roles = tokenData[ROLES_KEY];\r\n try {\r\n if (typeof roles === 'string')\r\n return [JSON.parse(roles).code];\r\n else\r\n return [...roles].map(x => +JSON.parse(x).code);\r\n }\r\n catch (ex) {\r\n console.error(ex);\r\n }\r\n }\r\n return [];\r\n }\r\n getProdMediaLink(productId: any) {\r\n return this.productApiService.getProductMedia(productId);\r\n }\r\n byteToImageSrc(byte: any) {\r\n return this.sanitizer.bypassSecurityTrustUrl('data:image/png;base64,' + byte)\r\n }\r\n}\r\n","import { Constants, ROLES, ROLES_KEY } from \"./constants\";\r\nimport * as _ from 'underscore'\r\nimport { AbstractControl, FormGroup, ValidationErrors, ValidatorFn } from \"@angular/forms\";\r\nimport { BehaviorSubject } from \"rxjs\";\r\n\r\nconst typeCache: { [label: string]: boolean } = {};\r\nexport function type<T>(label: T | ''): T {\r\n if (typeCache[label as string]) {\r\n throw new Error(`Action type \"${label}\" is not unqiue\"`);\r\n }\r\n\r\n typeCache[label as string] = true;\r\n return label as T;\r\n}\r\n\r\nexport function getAuthToken() {\r\n if (Constants.LS_AUTHENTICATION_KEY in localStorage) {\r\n var user = JSON.parse(localStorage.getItem(Constants.LS_AUTHENTICATION_KEY) || '')\r\n if (user)\r\n return user.authToken;\r\n }\r\n return '';\r\n}\r\nexport function getActiveUser() {\r\n if (Constants.LS_AUTHENTICATION_KEY in localStorage) {\r\n var user = JSON.parse(localStorage.getItem(Constants.LS_AUTHENTICATION_KEY) || '')\r\n if (user)\r\n return user;\r\n }\r\n return null;\r\n}\r\n\r\nexport function numberMaxLengthValidator(number: number): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null => {\r\n if (control.value == null)\r\n return null;\r\n const forbidden = control.value.toString().length > number;\r\n return forbidden ? { maxLength: { value: control.value } } : null;\r\n };\r\n}\r\nexport function numberMinLengthValidator(number: number): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null => {\r\n if (control.value == null)\r\n return null;\r\n const forbidden = control.value.toString().length < number;\r\n return forbidden ? { minLength: { value: control.value } } : null;\r\n };\r\n}\r\n\r\nexport function createGuid() {\r\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\r\n var r = Math.random() * 16 | 0, v = c === 'x' ? r : (r & 0x3 | 0x8);\r\n return v.toString(16);\r\n });\r\n}\r\nexport function createEmptyGuid() {\r\n return '00000000-0000-0000-0000-000000000000';\r\n}\r\n\r\nexport function matchingPasswords(passwordKey: string, passwordConfirmationKey: string) {\r\n return (group: FormGroup) => {\r\n let password = group.controls[passwordKey];\r\n let passwordConfirmation = group.controls[passwordConfirmationKey];\r\n if ((password.value !== null && passwordConfirmation.value != null) && (password.value !== \"\" && passwordConfirmation.value != \"\") && password.value !== passwordConfirmation.value) {\r\n return passwordConfirmation.setErrors({ mismatchedPasswords: true })\r\n }\r\n }\r\n}\r\n\r\nexport function getRolesForPage(p: any, pageName: string) {\r\n let r = { isAdmin: false, canCreate: false, canRead: false, canWrite: false, canDelete: false, options: null }\r\n r.isAdmin = hasAdminRole(p)\r\n for (var role of p) {\r\n\r\n var pagePerms = role.perms.find((x: any) => x.pageName === pageName);\r\n if (pagePerms) {\r\n r.canRead = r.canRead || pagePerms.canRead;\r\n r.canCreate = r.canCreate || pagePerms.canCreate;\r\n r.canWrite = r.canWrite || pagePerms.canWrite;\r\n r.canDelete = r.canDelete || pagePerms.canDelete;\r\n r.options = pagePerms.options;\r\n }\r\n }\r\n return r;\r\n}\r\nexport function hasAdminRole(r: any) {\r\n return r.find((x: any) => x.code == ROLES.Admin.Code) ? true : false;\r\n}\r\n\r\nexport function hasShopManagerRole(r: any) {\r\n return r.find((x: any) => x.code == ROLES.ShopManager.Code) ? true : false;\r\n}\r\n\r\n\r\nexport const atleasOneTrue: ValidatorFn = (control: AbstractControl): ValidationErrors | null => {\r\n const google = control.get('isGoogle');\r\n const fb = control.get('isFacebook');\r\n const tt = control.get('isTikTok');\r\n\r\n if (google?.value === fb?.value === tt?.value === null)\r\n return { atleasOneTrue: false }\r\n\r\n return (google && google.value) || (fb && fb.value) || (tt && tt.value) ? null : { atleasOneTrue: false };\r\n};\r\nexport function ordinalSuffixOf(i: number | undefined) {\r\n if (i === undefined)\r\n return '';\r\n var j = i % 10,\r\n k = i % 100;\r\n if (j == 1 && k != 11) {\r\n return i + \"st\";\r\n }\r\n if (j == 2 && k != 12) {\r\n return i + \"nd\";\r\n }\r\n if (j == 3 && k != 13) {\r\n return i + \"rd\";\r\n }\r\n return i + \"th\";\r\n}\r\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-footer',\n templateUrl: './footer.component.html',\n styleUrls: ['./footer.component.scss']\n})\n\n/**\n * Footer Component\n */\nexport class FooterComponent implements OnInit {\n\n // set the currenr year\n year: number = new Date().getFullYear();\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","<footer class=\"footer\">\n <div class=\"container-fluid\">\n <div class=\"row\">\n <div class=\"col-sm-6\">\n {{year}} © Minia.\n </div>\n <div class=\"col-sm-6\">\n <div class=\"text-sm-end d-none d-sm-block\">\n Design & Develop by <a href=\"#!\" class=\"text-decoration-underline\">Themesbrand</a>\n </div>\n </div>\n </div>\n </div>\n</footer>","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-horizontal',\n templateUrl: './horizontal.component.html',\n styleUrls: ['./horizontal.component.scss']\n})\n\n/**\n * Horizontal Component\n */\nexport class HorizontalComponent implements OnInit {\n\n isCondensed = false;\n \n constructor() { }\n\n ngOnInit(): void {\n document.body.setAttribute('data-layout', 'horizontal');\n document.body.removeAttribute('data-sidebar');\n }\n\n /**\n * on settings button clicked from topbar\n */\n onSettingsButtonClicked() {\n document.body.classList.toggle('right-bar-enabled');\n }\n\n /**\n * Mobile Toggle Menu\n */\n onToggleMobileMenu() {\n const element = document.getElementById('topnav-menu-content');\n element?.classList.toggle('show');\n }\n\n}\n","<div id=\"layout-wrapper\">\n <!-- Top bar -->\n <app-horizontaltopbar (mobileMenuButtonClicked)=\"onToggleMobileMenu()\" (settingsButtonClicked)=\"onSettingsButtonClicked()\"></app-horizontaltopbar>\n <div class=\"main-content\">\n <div class=\"page-content\">\n <div class=\"container-fluid\">\n <!-- content -->\n <router-outlet></router-outlet>\n </div>\n </div>\n </div>\n</div>\n<app-rightsidebar></app-rightsidebar>","\nimport { Component, OnInit, AfterViewInit, Output, EventEmitter } from '@angular/core';\nimport { Router, NavigationEnd } from '@angular/router';\n\nimport { MENU } from './menu';\nimport { MenuItem } from './menu.model';\n\nimport { TranslateService } from '@ngx-translate/core';\nimport { CookieService } from 'ngx-cookie-service';\n\nimport { LAYOUT_MODE } from \"../layouts.model\";\n\n@Component({\n selector: 'app-horizontaltopbar',\n templateUrl: './horizontaltopbar.component.html',\n styleUrls: ['./horizontaltopbar.component.scss'],\n})\n\n/**\n * Horizontal-Topbar Component\n */\nexport class HorizontaltopbarComponent implements OnInit, AfterViewInit {\n \n mode: string | undefined;\n layoutMode!: string;\n\n menuItems: MenuItem[] = [];\n element: any;\n flagvalue: any;\n cookieValue: any;\n countryName: any;\n valueset: any;\n\n /**\n * Language Listing\n */\n listLang = [\n { text: 'English', flag: 'assets/images/flags/us.jpg', lang: 'en' },\n { text: 'Spanish', flag: 'assets/images/flags/spain.jpg', lang: 'es' },\n { text: 'German', flag: 'assets/images/flags/germany.jpg', lang: 'de' },\n { text: 'Italian', flag: 'assets/images/flags/italy.jpg', lang: 'it' },\n { text: 'Russian', flag: 'assets/images/flags/russia.jpg', lang: 'ru' },\n ];\n\n @Output() settingsButtonClicked = new EventEmitter();\n @Output() mobileMenuButtonClicked = new EventEmitter();\n\n constructor(\n private router: Router,\n public translate: TranslateService,\n public _cookiesService: CookieService,\n ) {\n router.events.subscribe((event) => {\n if (event instanceof NavigationEnd) {\n this.activateMenu();\n }\n });\n }\n\n /***\n * Language Value Set\n */\n setLanguage(text: string, lang: string, flag: string) {\n this.countryName = text;\n this.flagvalue = flag;\n this.cookieValue = lang;\n }\n\n ngOnInit(): void {\n this.element = document.documentElement;\n this.layoutMode = LAYOUT_MODE;\n this.initialize();\n /***\n * Language value cookies wise set\n */\n this.cookieValue = this._cookiesService.get('lang');\n const val = this.listLang.filter(x => x.lang === this.cookieValue);\n this.countryName = val.map(element => element.text);\n if (val.length === 0) {\n if (this.flagvalue === undefined) { this.valueset = 'assets/images/flags/us.jpg'; }\n } else {\n this.flagvalue = val.map(element => element.flag);\n }\n }\n\n /**\n * Initialize\n */\n initialize(): void {\n this.menuItems = MENU;\n }\n\n /**\n * Returns true or false if given menu item has child or not\n * @param item menuItem\n */\n hasItems(item: MenuItem) {\n return item.subItems !== undefined ? item.subItems.length > 0 : false;\n }\n\n /**\n * on settings button clicked from topbar\n */\n onSettingsButtonClicked() {\n document.body.classList.toggle('right-bar-enabled');\n }\n\n /**\n * On menu click\n */\n onMenuClick(event: any) {\n const nextEl = event.target.nextElementSibling;\n if (nextEl) {\n const parentEl = event.target.parentNode;\n if (parentEl) {\n parentEl.classList.remove('show');\n }\n nextEl.classList.toggle('show');\n }\n return false;\n }\n\n ngAfterViewInit() {\n this.activateMenu();\n }\n\n /**\n * remove active and mm-active class\n */\n _removeAllClass(className: any) {\n const els = document.getElementsByClassName(className);\n while (els[0]) {\n els[0].classList.remove(className);\n }\n }\n /**\n * Topbar Light-Dark Mode Change\n */\n changeMode(mode: string) {\n this.mode = mode;\n this.layoutMode = mode;\n // this.eventService.broadcast('changeMode', mode);\n }\n\n /**\n * Toggle the menu bar when having mobile screen\n */\n toggleMobileMenu(event: any) {\n event.preventDefault();\n this.mobileMenuButtonClicked.emit();\n }\n\n /**\n * Toggles the right sidebar\n */\n toggleRightSidebar() {\n this.settingsButtonClicked.emit();\n }\n\n /**\n * Activates the menu\n */\n private activateMenu() {\n const resetParent = (el: any) => {\n const parent = el.parentElement;\n if (parent) {\n parent.classList.remove('active');\n const parent2 = parent.parentElement;\n this._removeAllClass('mm-active');\n this._removeAllClass('mm-show');\n if (parent2) {\n parent2.classList.remove('active');\n const parent3 = parent2.parentElement;\n if (parent3) {\n parent3.classList.remove('active');\n const parent4 = parent3.parentElement;\n if (parent4) {\n parent4.classList.remove('active');\n const parent5 = parent4.parentElement;\n if (parent5) {\n parent5.classList.remove('active');\n const menuelement = document.getElementById(\n 'topnav-menu-content'\n );\n if (menuelement !== null)\n if (menuelement.classList.contains('show'))\n document\n .getElementById('topnav-menu-content')!\n .classList.remove('show');\n }\n }\n }\n }\n }\n };\n\n // activate menu item based on location\n const links: any = document.getElementsByClassName('side-nav-link-ref');\n let matchingMenuItem = null;\n // tslint:disable-next-line: prefer-for-of\n for (let i = 0; i < links.length; i++) {\n // reset menu\n resetParent(links[i]);\n }\n // tslint:disable-next-line: prefer-for-of\n for (let i = 0; i < links.length; i++) {\n // tslint:disable-next-line: no-string-literal\n if (location.pathname === links[i]['pathname']) {\n matchingMenuItem = links[i];\n break;\n }\n }\n\n if (matchingMenuItem) {\n const parent = matchingMenuItem.parentElement;\n /**\n * TODO: This is hard coded way of expading/activating parent menu dropdown and working till level 3.\n * We should come up with non hard coded approach\n */\n if (parent) {\n parent.classList.add('active');\n const parent2 = parent.parentElement;\n if (parent2) {\n parent2.classList.add('active');\n const parent3 = parent2.parentElement;\n if (parent3) {\n parent3.classList.add('active');\n const parent4 = parent3.parentElement;\n if (parent4) {\n parent4.classList.add('active');\n const parent5 = parent4.parentElement;\n if (parent5) {\n parent5.classList.add('active');\n }\n }\n }\n }\n }\n }\n }\n\n /**\n * Logout the user\n */\n logout() {\n this.router.navigate(['/account/login']);\n }\n\n\n}\n","<header id=\"page-topbar\">\n <div class=\"navbar-header\">\n <div class=\"d-flex\">\n <!-- LOGO -->\n <div class=\"navbar-brand-box\">\n <a routerLink=\"/\" class=\"logo logo-dark\">\n <span class=\"logo-sm\">\n <img src=\"assets/images/logo-sm.svg\" alt=\"\" height=\"24\">\n </span>\n <span class=\"logo-lg\">\n <img src=\"assets/images/logo-sm.svg\" alt=\"\" height=\"24\"> <span class=\"logo-txt\">Minia</span>\n </span>\n </a>\n\n <a routerLink=\"/\" class=\"logo logo-light\">\n <span class=\"logo-sm\">\n <img src=\"assets/images/logo-sm.svg\" alt=\"\" height=\"24\">\n </span>\n <span class=\"logo-lg\">\n <img src=\"assets/images/logo-sm.svg\" alt=\"\" height=\"24\"> <span class=\"logo-txt\">Minia</span>\n </span>\n </a>\n </div>\n\n <button type=\"button\" class=\"btn btn-sm px-3 font-size-16 header-item d-lg-none\" id=\"vertical-menu-btn\"\n (click)=\"toggleMobileMenu($event)\">\n <i class=\"fa fa-fw fa-bars\"></i>\n </button>\n\n <!-- App Search-->\n <form class=\"app-search d-none d-lg-block\">\n <div class=\"position-relative\">\n <input type=\"text\" class=\"form-control\" placeholder=\"Search...\">\n <button class=\"btn btn-primary\" type=\"button\"><i class=\"bx bx-search-alt align-middle\"></i></button>\n </div>\n </form>\n </div>\n\n <div class=\"d-flex\">\n\n <div class=\"dropdown d-inline-block d-lg-none ms-2\" ngbDropdown>\n <button type=\"button\" class=\"btn header-item\" id=\"page-header-search-dropdown\" data-bs-toggle=\"dropdown\"\n aria-haspopup=\"true\" aria-expanded=\"false\" ngbDropdownToggle>\n <i-feather name=\"search\" class=\"icon-lg\"></i-feather>\n </button>\n <div class=\"dropdown-menu dropdown-menu-lg dropdown-menu-end p-0\"\n aria-labelledby=\"page-header-search-dropdown\" ngbDropdownMenu>\n\n <form class=\"p-3\">\n <div class=\"form-group m-0\">\n <div class=\"input-group\">\n <input type=\"text\" class=\"form-control\" placeholder=\"Search ...\"\n aria-label=\"Search Result\">\n\n <button class=\"btn btn-primary\" type=\"submit\"><i class=\"mdi mdi-magnify\"></i></button>\n </div>\n </div>\n </form>\n </div>\n </div>\n\n <div class=\"dropdown d-none d-sm-inline-block\" ngbDropdown>\n <button type=\"button\" class=\"btn header-item\" data-bs-toggle=\"dropdown\" aria-haspopup=\"true\"\n aria-expanded=\"false\" ngbDropdownToggle>\n <img *ngIf=\"flagvalue !== undefined\" src=\"{{flagvalue}}\" alt=\"Header Language\" height=\"16\">\n <img *ngIf=\"flagvalue === undefined\" src=\"{{valueset}}\" alt=\"Header Language\" height=\"16\">\n </button>\n <div class=\"dropdown-menu dropdown-menu-end\" ngbDropdownMenu>\n <a href=\"javascript:void(0);\" class=\"dropdown-item notify-item\" *ngFor=\"let item of listLang\"\n (click)=\"setLanguage(item.text, item.lang, item.flag)\"\n [ngClass]=\"{'active': cookieValue === item.lang}\">\n <img src=\"{{item.flag}}\" alt=\"user-image\" class=\"me-1\" height=\"12\"> <span\n class=\"align-middle\">{{item.text}}</span>\n </a>\n </div>\n </div>\n \n <div class=\"dropdown d-none d-sm-inline-block\">\n <button type=\"button\" class=\"btn header-item\" id=\"mode-setting-btn\">\n <ng-container *ngIf=\"layoutMode == 'light'\">\n <i-feather name=\"moon\" class=\"icon-lg\" (click)=\"changeMode('dark')\"></i-feather>\n </ng-container>\n <ng-container *ngIf=\"layoutMode == 'dark'\">\n <i-feather name=\"sun\" class=\"icon-lg\" (click)=\"changeMode('light')\"></i-feather>\n </ng-container>\n </button>\n </div>\n\n <div class=\"dropdown d-none d-lg-inline-block ms-1\" ngbDropdown>\n <button type=\"button\" class=\"btn header-item\" data-bs-toggle=\"dropdown\" aria-haspopup=\"true\"\n aria-expanded=\"false\" ngbDropdownToggle>\n <i-feather name=\"grid\" class=\"icon-lg\"></i-feather>\n </button>\n <div class=\"dropdown-menu dropdown-menu-lg dropdown-menu-end\" ngbDropdownMenu>\n <div class=\"p-2\">\n <div class=\"row g-0\">\n <div class=\"col\">\n <a class=\"dropdown-icon-item\" href=\"javascript:void(0)\">\n <img src=\"assets/images/brands/github.png\" alt=\"Github\">\n <span>GitHub</span>\n </a>\n </div>\n <div class=\"col\">\n <a class=\"dropdown-icon-item\" href=\"javascript:void(0)\">\n <img src=\"assets/images/brands/bitbucket.png\" alt=\"bitbucket\">\n <span>Bitbucket</span>\n </a>\n </div>\n <div class=\"col\">\n <a class=\"dropdown-icon-item\" href=\"javascript:void(0)\">\n <img src=\"assets/images/brands/dribbble.png\" alt=\"dribbble\">\n <span>Dribbble</span>\n </a>\n </div>\n </div>\n\n <div class=\"row g-0\">\n <div class=\"col\">\n <a class=\"dropdown-icon-item\" href=\"javascript:void(0)\">\n <img src=\"assets/images/brands/dropbox.png\" alt=\"dropbox\">\n <span>Dropbox</span>\n </a>\n </div>\n <div class=\"col\">\n <a class=\"dropdown-icon-item\" href=\"javascript:void(0)\">\n <img src=\"assets/images/brands/mail_chimp.png\" alt=\"mail_chimp\">\n <span>Mail Chimp</span>\n </a>\n </div>\n <div class=\"col\">\n <a class=\"dropdown-icon-item\" href=\"javascript:void(0)\">\n <img src=\"assets/images/brands/slack.png\" alt=\"slack\">\n <span>Slack</span>\n </a>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"dropdown d-inline-block\" ngbDropdown>\n <button type=\"button\" class=\"btn header-item noti-icon position-relative\"\n id=\"page-header-notifications-dropdown\" data-bs-toggle=\"dropdown\" aria-haspopup=\"true\"\n aria-expanded=\"false\" ngbDropdownToggle>\n <i-feather name=\"bell\" class=\"icon-lg\"></i-feather>\n <span class=\"badge bg-danger rounded-pill\">5</span>\n </button>\n <div class=\"dropdown-menu dropdown-menu-lg dropdown-menu-end p-0\"\n aria-labelledby=\"page-header-notifications-dropdown\" ngbDropdownMenu>\n <div class=\"p-3\">\n <div class=\"row align-items-center\">\n <div class=\"col\">\n <h6 class=\"m-0\"> {{ 'HEADER.NOTIFICATIONS.TITLE' | translate}} </h6>\n </div>\n <div class=\"col-auto\">\n <a href=\"#!\" class=\"small text-reset text-decoration-underline\"> {{ 'HEADER.NOTIFICATIONS.VIEW_ALL' | translate}}</a>\n </div>\n </div>\n </div>\n <ngx-simplebar style=\"max-height: 230px;\">\n <a href=\"#!\" class=\"text-reset notification-item\">\n <div class=\"d-flex\">\n <div class=\"flex-shrink-0 me-3\">\n <img src=\"assets/images/users/avatar-3.jpg\" class=\"rounded-circle avatar-sm\"\n alt=\"user-pic\">\n </div>\n <div class=\"flex-grow-1\">\n <h6 class=\"mb-1\">{{ 'HEADER.NOTIFICATIONS.FIRST.TITLE' | translate}}</h6>\n <div class=\"font-size-13 text-muted\">\n <p class=\"mb-1\">{{ 'HEADER.NOTIFICATIONS.FIRST.TEXT' | translate}}</p>\n <p class=\"mb-0\"><i class=\"mdi mdi-clock-outline\"></i> <span>{{ 'HEADER.NOTIFICATIONS.FIRST.TIME' | translate}}</span>\n </p>\n </div>\n </div>\n </div>\n </a>\n <a href=\"#!\" class=\"text-reset notification-item\">\n <div class=\"d-flex\">\n <div class=\"flex-shrink-0 avatar-sm me-3\">\n <span class=\"avatar-title bg-primary rounded-circle font-size-16\">\n <i class=\"bx bx-cart\"></i>\n </span>\n </div>\n <div class=\"flex-grow-1\">\n <h6 class=\"mb-1\">{{ 'HEADER.NOTIFICATIONS.SECOND.TITLE' | translate}}</h6>\n <div class=\"font-size-13 text-muted\">\n <p class=\"mb-1\">{{ 'HEADER.NOTIFICATIONS.SECOND.TEXT' | translate}}</p>\n <p class=\"mb-0\"><i class=\"mdi mdi-clock-outline\"></i> <span>{{ 'HEADER.NOTIFICATIONS.SECOND.TIME' | translate}}</span></p>\n </div>\n </div>\n </div>\n </a>\n <a href=\"#!\" class=\"text-reset notification-item\">\n <div class=\"d-flex\">\n <div class=\"flex-shrink-0 avatar-sm me-3\">\n <span class=\"avatar-title bg-success rounded-circle font-size-16\">\n <i class=\"bx bx-badge-check\"></i>\n </span>\n </div>\n <div class=\"flex-grow-1\">\n <h6 class=\"mb-1\">{{ 'HEADER.NOTIFICATIONS.THIRD.TITLE' | translate}}</h6>\n <div class=\"font-size-13 text-muted\">\n <p class=\"mb-1\">{{ 'HEADER.NOTIFICATIONS.THIRD.TEXT' | translate}}</p>\n <p class=\"mb-0\"><i class=\"mdi mdi-clock-outline\"></i> <span>{{ 'HEADER.NOTIFICATIONS.THIRD.TIME' |\n translate}}</span></p>\n </div>\n </div>\n </div>\n </a>\n\n <a href=\"#!\" class=\"text-reset notification-item\">\n <div class=\"d-flex\">\n <div class=\"flex-shrink-0 me-3\">\n <img src=\"assets/images/users/avatar-6.jpg\" class=\"rounded-circle avatar-sm\"\n alt=\"user-pic\">\n </div>\n <div class=\"flex-grow-1\">\n <h6 class=\"mb-1\">{{ 'HEADER.NOTIFICATIONS.FOUR.TITLE' | translate}}</h6>\n <div class=\"font-size-13 text-muted\">\n <p class=\"mb-1\">{{ 'HEADER.NOTIFICATIONS.FOUR.TEXT' | translate}}</p>\n <p class=\"mb-0\"><i class=\"mdi mdi-clock-outline\"></i> <span>{{ 'HEADER.NOTIFICATIONS.FOUR.TIME' |\n translate}}</span>\n </p>\n </div>\n </div>\n </div>\n </a>\n </ngx-simplebar>\n <div class=\"p-2 border-top d-grid\">\n <a class=\"btn btn-sm btn-link font-size-14 text-center\" href=\"javascript:void(0)\">\n <i class=\"mdi mdi-arrow-right-circle me-1\"></i> <span>{{\n 'HEADER.NOTIFICATIONS.LOAD_MORE' | translate}}</span>\n </a>\n </div>\n </div>\n </div>\n\n <div class=\"dropdown d-inline-block\">\n <button type=\"button\" class=\"btn header-item right-bar-toggle me-2\" (click)=\"toggleRightSidebar()\">\n <i-feather name=\"settings\" class=\"icon-lg\"></i-feather>\n </button>\n </div>\n\n <div class=\"dropdown d-inline-block\" ngbDropdown>\n <button type=\"button\" class=\"btn header-item bg-soft-light border-start border-end\"\n id=\"page-header-user-dropdown\" data-bs-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\"\n ngbDropdownToggle>\n <img class=\"rounded-circle header-profile-user\" src=\"assets/images/users/avatar-1.jpg\"\n alt=\"Header Avatar\">\n <span class=\"d-none d-xl-inline-block ms-1 fw-medium\">Shawn L.</span>\n <i class=\"mdi mdi-chevron-down d-none d-xl-inline-block\"></i>\n </button>\n <div class=\"dropdown-menu dropdown-menu-end\" ngbDropdownMenu>\n <!-- item-->\n <a class=\"dropdown-item\" routerLink=\"/apps/profile\"><i\n class=\"mdi mdi-face-profile font-size-16 align-middle me-1\"></i> Profile</a>\n <a class=\"dropdown-item\" routerLink=\"/account/lock-screen\"><i\n class=\"mdi mdi-lock font-size-16 align-middle me-1\"></i> Lock screen</a>\n <div class=\"dropdown-divider\"></div>\n <a class=\"dropdown-item\" href=\"javascript: void(0);\" (click)=\"logout()\"><i\n class=\"mdi mdi-logout text-muted font-size-16 align-middle me-1\"></i> <span\n class=\"align-middle\" key=\"t-logout\">{{ 'MENUITEMS.AUTHENTICATION.LIST.LOGOUT' | translate}}</span></a>\n </div>\n </div>\n\n </div>\n </div>\n</header>\n<div class=\"topnav\">\n <div class=\"container-fluid\">\n <nav class=\"navbar navbar-light navbar-expand-lg topnav-menu active\">\n <div class=\"collapse navbar-collapse active\" id=\"topnav-menu-content\">\n <ul class=\"navbar-nav\">\n <ng-container *ngFor=\"let item of menuItems\">\n <li class=\"nav-item dropdown\">\n <a class=\"nav-link dropdown-toggle arrow-none\" *ngIf=\"!item.subItems\"\n (click)=\"onMenuClick($event)\" href=\"javascript: void(0);\" id=\"topnav-components\"\n [routerLink]=\"item.link\" role=\"button\">\n <i-feather name=\"{{ item.icon }}\"></i-feather>{{ item.label | translate}} <div\n class=\"arrow-down\" *ngIf=\"hasItems(item)\"></div>\n </a>\n\n <a *ngIf=\"item.subItems\" class=\"nav-link dropdown-toggle arrow-none\"\n (click)=\"onMenuClick($event)\" href=\"javascript: void(0);\" id=\"topnav-components\"\n role=\"button\">\n <i-feather name=\"{{ item.icon }}\"></i-feather>\n {{item.label | translate }}\n <div class=\"arrow-down\"></div>\n </a>\n\n <div class=\"dropdown-menu\" aria-labelledby=\"topnav-dashboard\" *ngIf=\"hasItems(item)\">\n <ng-template ngFor let-i=\"index\" let-subitem [ngForOf]=\"item.subItems\">\n <a class=\"col dropdown-item side-nav-link-ref\" *ngIf=\"!hasItems(subitem)\"\n href=\"javascript: void(0);\" [routerLink]=\"subitem.link\"\n routerLinkActive=\"active\">{{subitem.label | translate }}</a>\n\n <div class=\"dropdown\" *ngIf=\"hasItems(subitem)\">\n <a class=\"dropdown-item dropdown-toggle\" href=\"javascript: void(0);\"\n (click)=\"onMenuClick($event)\">{{ subitem.label | translate }}\n <div class=\"arrow-down\"></div>\n </a>\n <div class=\"dropdown-menu\">\n <ng-template ngFor let-subSubitem [ngForOf]=\"subitem.subItems\">\n <a class=\"dropdown-item side-nav-link-ref\" *ngIf=\"!hasItems(subSubitem)\"\n href=\"javascript: void(0);\" [routerLink]=\"subSubitem.link\"\n routerLinkActive=\"active\">{{ subSubitem.label | translate }}</a>\n <div class=\"dropdown\" *ngIf=\"hasItems(subSubitem)\">\n\n <a class=\"dropdown-item dropdown-toggle\" href=\"javascript: void(0);\"\n (click)=\"onMenuClick($event)\">{{ subSubitem.label | translate }}\n <div class=\"arrow-down\"></div>\n </a>\n <div class=\"dropdown-menu\">\n <ng-template ngFor let-subSubSubitem [ngForOf]=\"subSubitem.subItems\">\n <a class=\"dropdown-item side-nav-link-ref\" href=\"javascript: void(0);\" [routerLink]=\"subSubSubitem.link\"\n routerLinkActive=\"active\">{{ subSubSubitem.label | translate }}</a>\n </ng-template>\n </div>\n </div>\n </ng-template>\n </div>\n </div>\n </ng-template>\n </div>\n </li>\n </ng-container>\n </ul>\n </div>\n </nav>\n </div>\n</div>","import { MenuItem } from './menu.model';\n\nexport const MENU: MenuItem[] = [\n {\n id: 1,\n label: 'MENUITEMS.DASHBOARDS.TEXT',\n icon: 'home',\n link: '/',\n },\n {\n id: 2,\n label: 'MENUITEMS.ELEMENTS.TEXT',\n icon: 'briefcase',\n subItems: [\n {\n id: 3,\n label: 'MENUITEMS.COMPONENTS.LIST.ALERTS',\n link: '/ui/alerts',\n parentId: 2\n },\n {\n id: 4,\n label: 'MENUITEMS.COMPONENTS.LIST.BUTTONS',\n link: '/ui/buttons',\n parentId: 2\n },\n {\n id: 5,\n label: 'MENUITEMS.COMPONENTS.LIST.CARDS',\n link: '/ui/cards',\n parentId: 2\n },\n {\n id: 6,\n label: 'MENUITEMS.COMPONENTS.LIST.CAROUSEL',\n link: '/ui/carousel',\n parentId: 2\n },\n {\n id: 7,\n label: 'MENUITEMS.COMPONENTS.LIST.DROPDOWNS',\n link: '/ui/dropdowns',\n parentId: 2\n },\n {\n id: 8,\n label: 'MENUITEMS.COMPONENTS.LIST.GRID',\n link: '/ui/grid',\n parentId: 2\n },\n {\n id: 9,\n label: 'MENUITEMS.COMPONENTS.LIST.IMAGES',\n link: '/ui/images',\n parentId: 2\n },\n {\n id: 10,\n label: 'MENUITEMS.COMPONENTS.LIST.MODALS',\n link: '/ui/modals',\n parentId: 2\n },\n {\n id: 11,\n label: 'MENUITEMS.COMPONENTS.LIST.PROGRESSBAR',\n link: '/ui/progressbars',\n parentId: 2\n },\n {\n id: 12,\n label: 'MENUITEMS.COMPONENTS.LIST.TABS',\n link: '/ui/tabs-accordions',\n parentId: 2\n },\n {\n id: 13,\n label: 'MENUITEMS.COMPONENTS.LIST.TYPOGRAPHY',\n link: '/ui/typography',\n parentId: 2\n },\n {\n id: 14,\n label: 'MENUITEMS.COMPONENTS.LIST.VIDEO',\n link: '/ui/video',\n parentId: 2\n },\n {\n id: 15,\n label: 'MENUITEMS.COMPONENTS.LIST.GENERAL',\n link: '/ui/general',\n parentId: 2\n },\n {\n id: 15,\n label: 'MENUITEMS.COMPONENTS.LIST.COLORS',\n link: '/ui/colors',\n parentId: 2\n }\n ]\n },\n {\n id: 16,\n label: 'MENUITEMS.APPS.TEXT',\n icon: 'grid',\n subItems: [\n {\n id: 17,\n label: 'MENUITEMS.APPS.LIST.CALENDAR',\n link: '/apps/calender',\n parentId: 16\n },\n {\n id: 18,\n label: 'MENUITEMS.APPS.LIST.CHAT',\n link: '/apps/chat',\n parentId: 16\n },\n {\n id: 19,\n label: 'MENUITEMS.APPS.LIST.EMAIL',\n icon: 'bx-receipt',\n subItems: [\n {\n id: 20,\n label: 'MENUITEMS.APPS.LIST.INBOX',\n link: '/apps/inbox',\n parentId: 19\n },\n {\n id: 21,\n label: 'MENUITEMS.APPS.LIST.READEMAIL',\n link: '/apps/read/1',\n parentId: 19\n },\n ]\n },\n {\n id: 22,\n label: 'MENUITEMS.APPS.LIST.INVOICES',\n icon: 'bx-receipt',\n subItems: [\n {\n id: 23,\n label: 'MENUITEMS.APPS.LIST.INVOICELIST',\n link: '/apps/invoice-list',\n parentId: 22\n },\n {\n id: 24,\n label: 'MENUITEMS.APPS.LIST.INVOICEDETAIL',\n link: '/apps/invoice-detail',\n parentId: 22\n },\n ]\n },\n {\n id: 25,\n label: 'MENUITEMS.APPS.LIST.CONTACTS',\n subItems: [\n {\n id: 26,\n label: 'MENUITEMS.APPS.LIST.USERGRID',\n link: '/apps/user-grid',\n parentId: 25\n },\n {\n id: 27,\n label: 'MENUITEMS.APPS.LIST.USERLIST',\n link: '/apps/user-list',\n parentId: 25\n },\n {\n id: 28,\n label: 'MENUITEMS.APPS.LIST.PROFILE',\n link: '/apps/profile',\n parentId: 25\n }\n ]\n }\n ]\n },\n {\n id: 29,\n label: 'MENUITEMS.COMPONENTS.TEXT',\n icon: 'box',\n subItems: [\n {\n id: 30,\n label: 'MENUITEMS.FORMS.TEXT',\n icon: 'box',\n badge: {\n variant: 'danger',\n text: 'MENUITEMS.FORMS.BADGE',\n },\n subItems: [\n {\n id: 31,\n label: 'MENUITEMS.FORMS.LIST.ELEMENTS',\n link: '/form/elements',\n parentId: 30\n },\n {\n id: 32,\n label: 'MENUITEMS.FORMS.LIST.VALIDATION',\n link: '/form/validation',\n parentId: 30\n },\n {\n id: 33,\n label: 'MENUITEMS.FORMS.LIST.ADVANCED',\n link: '/form/advanced',\n parentId: 30\n },\n {\n id: 34,\n label: 'MENUITEMS.FORMS.LIST.EDITOR',\n link: '/form/editor',\n parentId: 30\n },\n {\n id: 35,\n label: 'MENUITEMS.FORMS.LIST.FILEUPLOAD',\n link: '/form/uploads',\n parentId: 30\n },\n {\n id: 36,\n label: 'MENUITEMS.FORMS.LIST.WIZARD',\n link: '/form/wizard',\n parentId: 30\n },\n {\n id: 37,\n label: 'MENUITEMS.FORMS.LIST.MASK',\n link: '/form/mask',\n parentId: 30\n }\n ]\n },\n {\n id: 38,\n icon: 'sliders',\n label: 'MENUITEMS.TABLES.TEXT',\n subItems: [\n {\n id: 39,\n label: 'MENUITEMS.TABLES.LIST.BASIC',\n link: '/tables/basic',\n parentId: 38\n },\n {\n id: 40,\n label: 'MENUITEMS.TABLES.LIST.ADVANCED',\n link: '/tables/datatable',\n parentId: 38\n }\n ]\n },\n {\n id: 41,\n icon: 'pie-chart',\n label: 'MENUITEMS.CHARTS.TEXT',\n subItems: [\n {\n id: 42,\n label: 'MENUITEMS.CHARTS.LIST.APEX',\n link: '/chart/apex',\n parentId: 41\n },\n {\n id: 43,\n label: 'MENUITEMS.CHARTS.LIST.ECHARTS',\n link: '/chart/echart',\n parentId: 41\n },\n {\n id: 44,\n label: 'MENUITEMS.CHARTS.LIST.CHARTJS',\n link: '/chart/chartjs',\n parentId: 41\n }\n ]\n },\n {\n id: 45,\n label: 'MENUITEMS.ICONS.TEXT',\n icon: 'cpu',\n subItems: [\n {\n id: 46,\n label: 'MENUITEMS.ICONS.LIST.BOXICONS',\n link: '/icons/boxicons',\n parentId: 45\n },\n {\n id: 47,\n label: 'MENUITEMS.ICONS.LIST.MATERIALDESIGN',\n link: '/icons/materialdesign',\n parentId: 45\n },\n {\n id: 48,\n label: 'MENUITEMS.ICONS.LIST.DRIPICONS',\n link: '/icons/dripicons',\n parentId: 45\n },\n {\n id: 49,\n label: 'MENUITEMS.ICONS.LIST.FONTAWESOME',\n link: '/icons/fontawesome',\n parentId: 45\n },\n ]\n },\n {\n id: 50,\n label: 'MENUITEMS.MAPS.TEXT',\n icon: 'map',\n subItems: [\n {\n id: 51,\n label: 'MENUITEMS.MAPS.LIST.GOOGLEMAP',\n link: '/maps/google',\n parentId: 50\n },\n {\n id: 52,\n label: 'MENUITEMS.MAPS.LIST.LEAFLET',\n link: '/maps/leaflet',\n parentId: 50\n }\n ]\n },\n ]\n },\n {\n id: 52,\n label: 'MENUITEMS.EXTRAPAGES.TEXT',\n icon: 'file-text',\n subItems: [\n {\n id: 53,\n label: 'MENUITEMS.AUTHENTICATION.TEXT',\n icon: 'users',\n subItems: [\n {\n id: 54,\n label: 'MENUITEMS.AUTHENTICATION.LIST.LOGIN',\n link: '/account/login',\n parentId: 53\n },\n {\n id: 55,\n label: 'MENUITEMS.AUTHENTICATION.LIST.REGISTER',\n link: '/account/register',\n parentId: 53\n },\n\n {\n id: 56,\n label: 'MENUITEMS.AUTHENTICATION.LIST.RECOVERPWD',\n link: '/account/recoverpw',\n parentId: 53\n },\n {\n id: 57,\n label: 'MENUITEMS.AUTHENTICATION.LIST.LOCKSCREEN',\n link: '/account/look-screen',\n parentId: 53\n },\n {\n id: 58,\n label: 'MENUITEMS.AUTHENTICATION.LIST.LOGOUT',\n link: '/account/logout',\n parentId: 53\n },\n {\n id: 59,\n label: 'MENUITEMS.AUTHENTICATION.LIST.CONFIRMMAIL',\n link: '/account/confirm-mail',\n parentId: 53\n },\n {\n id: 60,\n label: 'MENUITEMS.AUTHENTICATION.LIST.EMAILVERIFICATION',\n link: '/account/email-verification',\n parentId: 53\n },\n {\n id: 61,\n label: 'MENUITEMS.AUTHENTICATION.LIST.TWOSTEPVERIFICATION',\n link: '/account/two-step-verification',\n parentId: 53\n }\n ]\n },\n {\n id: 62,\n label: 'MENUITEMS.UTILITY.TEXT',\n icon: 'file-text',\n subItems: [\n {\n id: 63,\n label: 'MENUITEMS.PAGES.LIST.STARTER',\n link: '/pages/starter',\n parentId: 62\n },\n {\n id: 64,\n label: 'MENUITEMS.PAGES.LIST.MAINTENANCE',\n link: '/pages/maintenance',\n parentId: 62\n },\n {\n id: 65,\n label: 'Coming Soon',\n link: '/pages/coming-soon',\n parentId: 62\n },\n {\n id: 66,\n label: 'MENUITEMS.PAGES.LIST.TIMELINE',\n link: '/pages/timeline',\n parentId: 62\n },\n {\n id: 67,\n label: 'MENUITEMS.PAGES.LIST.FAQS',\n link: '/pages/faqs',\n parentId: 62\n },\n {\n id: 68,\n label: 'MENUITEMS.PAGES.LIST.PRICING',\n link: '/pages/pricing',\n parentId: 62\n },\n {\n id: 69,\n label: 'MENUITEMS.PAGES.LIST.ERROR404',\n link: '/pages/404',\n parentId: 62\n },\n {\n id: 70,\n label: 'MENUITEMS.PAGES.LIST.ERROR500',\n link: '/pages/500',\n parentId: 62\n },\n ]\n },\n ]\n }\n\n];\n\n","import { Component, OnInit } from '@angular/core';\nimport {\n LAYOUT_VERTICAL, LAYOUT_HORIZONTAL, LAYOUT_MODE, LAYOUT_WIDTH,\n LAYOUT_POSITION, SIDEBAR_SIZE, SIDEBAR_COLOR, TOPBAR\n} from './layouts.model';\n\n@Component({\n selector: 'app-layout',\n templateUrl: './layout.component.html',\n styleUrls: ['./layout.component.scss']\n})\n\n/**\n * Layout Component\n */\nexport class LayoutComponent implements OnInit {\n\n // layout related config\n layoutType!: string;\n layoutMode!: string;\n layoutwidth!: string;\n layoutposition!: string;\n topbar!: string;\n sidebarcolor!: string;\n sidebarsize!: string;\n\n constructor() { }\n\n ngOnInit() {\n\n this.layoutMode = LAYOUT_MODE;\n // default settings\n this.layoutType = LAYOUT_VERTICAL;\n this.layoutwidth = LAYOUT_WIDTH;\n this.layoutposition = LAYOUT_POSITION;\n this.sidebarcolor = SIDEBAR_COLOR;\n this.sidebarsize = SIDEBAR_SIZE;\n this.topbar = TOPBAR;\n\n this.LayoutMode(this.layoutMode);\n this.LayoutWidth(this.layoutwidth);\n this.LayoutPosition(this.layoutposition);\n this.Topbar(this.topbar);\n this.SidebarColor(this.sidebarcolor);\n this.SidebarSize(this.sidebarsize);\n\n // listen to event and change the layout, theme, etc\n /* this.eventService.subscribe('changeLayout', (layout) => {\n this.layoutType = layout;\n });\n\n this.eventService.subscribe('changeMode', (mode) => {\n this.layoutMode = mode;\n this.LayoutMode(this.layoutMode);\n });\n\n this.eventService.subscribe('changeWidth', (width) => {\n this.layoutwidth = width;\n this.LayoutWidth(this.layoutwidth);\n });\n\n this.eventService.subscribe('changePosition', (position) => {\n this.layoutposition = position;\n this.LayoutPosition(this.layoutposition);\n });\n\n this.eventService.subscribe('changeTopbar', (topbar) => {\n this.topbar = topbar;\n this.Topbar(this.topbar);\n });\n\n this.eventService.subscribe('changeSidebarColor', (sidebarcolor) => {\n this.sidebarcolor = sidebarcolor;\n this.SidebarColor(this.sidebarcolor);\n });\n\n this.eventService.subscribe('changeSidebarSize', (sidebarsize) => {\n this.sidebarsize = sidebarsize;\n this.SidebarSize(this.sidebarsize);\n });\n */\n\n }\n\n ngAfterViewInit() {\n document.body.setAttribute(\"data-sidebar\", \"dark\");\n }\n\n /**\n * Check if the vertical layout is requested\n */\n isVerticalLayoutRequested() {\n return this.layoutType === LAYOUT_VERTICAL;\n }\n\n /**\n * Check if the horizontal layout is requested\n */\n isHorizontalLayoutRequested() {\n return this.layoutType === LAYOUT_HORIZONTAL;\n }\n\n /**\n * Layout Mode Set\n */\n LayoutMode(mode: string) {\n switch (mode) {\n case \"light\":\n document.body.setAttribute(\"data-layout-mode\", \"light\");\n document.body.setAttribute(\"data-topbar\", \"light\");\n\n break;\n case \"dark\":\n document.body.setAttribute(\"data-layout-mode\", \"dark\");\n document.body.setAttribute(\"data-topbar\", \"dark\");\n document.body.setAttribute(\"data-sidebar\", \"dark\");\n break;\n default:\n document.body.setAttribute(\"data-layout-mode\", \"light\");\n document.body.setAttribute(\"data-topbar\", \"light\");\n break;\n }\n\n }\n\n /**\n * Layout Width Set\n */\n LayoutWidth(width: string) {\n switch (width) {\n case \"light\":\n document.body.setAttribute(\"data-layout-size\", \"fluid\");\n break;\n case \"boxed\":\n document.body.setAttribute(\"data-layout-size\", \"boxed\");\n break;\n default:\n document.body.setAttribute(\"data-layout-size\", \"light\");\n break;\n }\n }\n\n /**\n * Layout Position Set\n */\n LayoutPosition(position: string) {\n if (position === 'fixed') {\n document.body.setAttribute(\"data-layout-scrollable\", \"false\");\n } else {\n document.body.setAttribute(\"data-layout-scrollable\", \"true\");\n }\n }\n\n /**\n * Layout Sidebar Color Set\n */\n SidebarColor(color: string) {\n switch (color) {\n case \"light\":\n document.body.setAttribute('data-sidebar', 'light');\n break;\n case \"dark\":\n document.body.setAttribute(\"data-sidebar\", \"dark\");\n break;\n case \"brand\":\n document.body.setAttribute(\"data-sidebar\", \"brand\");\n break;\n default:\n document.body.setAttribute(\"data-sidebar\", \"light\");\n break;\n }\n }\n\n /**\n * Layout Topbar Set\n */\n Topbar(topbar: string) {\n switch (topbar) {\n case \"light\":\n document.body.setAttribute(\"data-topbar\", \"light\");\n break;\n case \"dark\":\n document.body.setAttribute(\"data-topbar\", \"dark\");\n break;\n default:\n document.body.setAttribute(\"data-topbar\", \"light\");\n break;\n }\n }\n\n /**\n * Layout Sidebar Size Set\n */\n SidebarSize(size: string) {\n switch (size) {\n case \"default\":\n document.body.setAttribute('data-sidebar-size', 'lg');\n break;\n case \"compact\":\n document.body.setAttribute('data-sidebar-size', 'md');\n break;\n case \"small\":\n document.body.setAttribute('data-sidebar-size', 'sm');\n break;\n default:\n document.body.setAttribute('data-sidebar-size', 'lg');\n break;\n }\n }\n\n}\n","<!-- Vertical layout -->\n<app-vertical *ngIf=\"isVerticalLayoutRequested()\"></app-vertical>\n\n<!-- horizontal layout -->\n<app-horizontal *ngIf=\"isHorizontalLayoutRequested()\"></app-horizontal>","// export layout related constants\nexport const LAYOUT_VERTICAL = 'vertical';\n\nexport const LAYOUT_HORIZONTAL = 'horizontal';\n\nexport const LAYOUT_MODE = 'light';\n\nexport const LAYOUT_WIDTH = 'fluid';\n\nexport const LAYOUT_POSITION = 'fixed';\n\nexport const TOPBAR = 'light';\n\nexport const SIDEBAR_SIZE = 'default';\n\nexport const SIDEBAR_COLOR = 'light';\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\nimport { FeatherModule } from 'angular-feather';\nimport { allIcons } from 'angular-feather/icons';\nimport { SimplebarAngularModule } from 'simplebar-angular';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { ClickOutsideModule } from 'ng-click-outside';\n\nimport { VerticalComponent } from './vertical/vertical.component';\nimport { TopbarComponent } from './topbar/topbar.component';\nimport { LayoutComponent } from './layout.component';\nimport { SidebarComponent } from './sidebar/sidebar.component';\nimport { FooterComponent } from './footer/footer.component';\nimport { RightsidebarComponent } from './rightsidebar/rightsidebar.component';\nimport { HorizontalComponent } from './horizontal/horizontal.component';\nimport { HorizontaltopbarComponent } from './horizontaltopbar/horizontaltopbar.component';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\n@NgModule({\n declarations: [\n VerticalComponent,\n TopbarComponent,\n LayoutComponent,\n SidebarComponent,\n FooterComponent,\n RightsidebarComponent,\n HorizontalComponent,\n HorizontaltopbarComponent\n ],\n imports: [\n FormsModule,\n ReactiveFormsModule,\n CommonModule,\n TranslateModule,\n RouterModule,\n FeatherModule.pick(allIcons),\n SimplebarAngularModule,\n ClickOutsideModule\n ],\n exports: [VerticalComponent]\n})\nexport class LayoutsModule { }\n","import { Component, OnInit } from '@angular/core';\nimport { LAYOUT_MODE, LAYOUT_WIDTH, TOPBAR, SIDEBAR_SIZE, SIDEBAR_COLOR, LAYOUT_POSITION } from '../layouts.model';\n\n@Component({\n selector: 'app-rightsidebar',\n templateUrl: './rightsidebar.component.html',\n styleUrls: ['./rightsidebar.component.scss']\n})\n\n/**\n * Right Sidebar Component\n */\nexport class RightsidebarComponent implements OnInit {\n\n layout!: string | null;\n mode: string | undefined;\n width: string | undefined;\n position: string | undefined;\n topbar: string | undefined;\n sidebarcolor: string | undefined;\n sidebarsize: string | undefined;\n\n constructor() { }\n\n ngOnInit(): void {\n this.mode = LAYOUT_MODE;\n this.width = LAYOUT_WIDTH;\n this.topbar = TOPBAR;\n this.sidebarcolor = SIDEBAR_COLOR;\n this.sidebarsize = SIDEBAR_SIZE;\n this.position = LAYOUT_POSITION;\n\n /**\n * horizontal-vertical layput set\n */\n this.layout = document.body.getAttribute('data-layout');\n const vertical = document.getElementById('is-layout');\n if (vertical != null) {\n vertical.setAttribute('checked', 'true');\n }\n if (this.layout == 'horizontal') {\n vertical?.removeAttribute('checked');\n }\n }\n\n /**\n * Hide the sidebar\n */\n public hide() {\n document.body.classList.remove('right-bar-enabled');\n }\n\n /**\n * Change the layout onclick\n * @param layout Change the layout\n */\n changeLayout(layout: any) {\n // this.eventService.broadcast('changeLayout', layout);\n // if (layout.target.checked == true)\n // this.eventService.broadcast('changeLayout', 'vertical');\n // else\n // this.eventService.broadcast('changeLayout', 'horizontal');\n }\n\n /**\n * Change the Mode onclick\n * @param mode Change the layout\n */\n changeMode(mode: string) {\n this.mode = mode;\n // this.eventService.broadcast('changeMode', mode);\n }\n\n /**\n * Change the Width onclick\n * @param Width Change the layout\n */\n changeWidth(width: string) {\n this.width = width;\n //this.eventService.broadcast('changeWidth', width);\n }\n\n /**\n * Change the Position onclick\n * @param Position Change the layout\n */\n changePosition(scrollable: string) {\n this.position = scrollable;\n // this.eventService.broadcast('changePosition', scrollable);\n }\n\n /**\n * Change the Topbar onclick\n * @param topbar Change the layout\n */\n changeTopbar(topbar: string) {\n this.topbar = topbar;\n // this.eventService.broadcast('changeTopbar', topbar);\n }\n\n /**\n * Change the Sidebar Color onclick\n * @param Sidebar Color Change the layout\n */\n changeSidebarColor(sidebarcolor: string) {\n this.sidebarcolor = sidebarcolor;\n // this.eventService.broadcast('changeSidebarColor', sidebarcolor);\n }\n\n /**\n * Change the Sidebar Size onclick\n * @param Sidebar Size Change the layout\n */\n changeSidebarSize(sidebarsize: string) {\n this.sidebarsize = sidebarsize;\n // this.eventService.broadcast('changeSidebarSize', sidebarsize);\n }\n\n}\n","<!-- Right Sidebar -->\n<div class=\"right-bar\" (clickOutside)=\"hide()\" [exclude]=\"'.right-bar-toggle'\">\n <ngx-simplebar class=\"h-100\">\n <div class=\"rightbar-title d-flex align-items-center bg-dark p-3\">\n <h5 class=\"m-0 me-2 text-white\">Theme Customizer</h5>\n <a href=\"javascript:void(0);\" class=\"right-bar-toggle ms-auto\" (click)=\"hide();\">\n <i class=\"mdi mdi-close noti-icon\"></i>\n </a>\n </div>\n\n <!-- Settings -->\n <hr class=\"m-0\" />\n\n <div class=\"p-4\">\n <h6 class=\"mb-3\">Layout</h6>\n <div class=\"form-check form-switch\">\n <input class=\"form-check-input\" type=\"checkbox\" id=\"is-layout\" (click)=\"changeLayout($event)\">\n <label class=\"form-check-label\" for=\"is-layout\">{{ layout == 'vertical' ? 'vertical' : 'horizontal' }}</label>\n </div>\n\n <h6 class=\"mt-4 mb-3\">Layout Mode</h6>\n\n <div class=\"form-check form-check-inline\">\n <input class=\"form-check-input\" type=\"radio\" name=\"mode\" id=\"layout-mode-light\" value=\"light\"\n [checked]=\"mode === 'light'\" (change)=\"changeMode('light')\">\n <label class=\"form-check-label\" for=\"layout-mode-light\">Light</label>\n </div>\n <div class=\"form-check form-check-inline\">\n <input class=\"form-check-input\" type=\"radio\" name=\"mode\" id=\"layout-mode-dark\" value=\"dark\"\n [checked]=\"mode === 'dark'\" (change)=\"changeMode('dark')\">\n <label class=\"form-check-label\" for=\"layout-mode-dark\">Dark</label>\n </div>\n\n <h6 class=\"mt-4 mb-3\">Layout Width</h6>\n\n <div class=\"form-check form-check-inline\">\n <input class=\"form-check-input\" type=\"radio\" name=\"layout-width\" id=\"layout-width-fuild\" value=\"fluid\"\n [checked]=\"width === 'fluid'\" (change)=\"changeWidth('fluid')\">\n <label class=\"form-check-label\" for=\"layout-width-fuild\">Fluid</label>\n </div>\n <div class=\"form-check form-check-inline\">\n <input class=\"form-check-input\" type=\"radio\" name=\"layout-width\" id=\"layout-width-boxed\" value=\"boxed\"\n [checked]=\"width === 'boxed'\" (change)=\"changeWidth('boxed')\">\n <label class=\"form-check-label\" for=\"layout-width-boxed\">Boxed</label>\n </div>\n\n <h6 class=\"mt-4 mb-3\">Layout Position</h6>\n\n <div class=\"form-check form-check-inline\">\n <input class=\"form-check-input\" type=\"radio\" name=\"layout-position\" id=\"layout-position-fixed\"\n value=\"fixed\" [checked]=\"position === 'fixed'\" (change)=\"changePosition('fixed')\">\n <label class=\"form-check-label\" for=\"layout-position-fixed\">Fixed</label>\n </div>\n <div class=\"form-check form-check-inline\">\n <input class=\"form-check-input\" type=\"radio\" name=\"layout-position\" id=\"layout-position-scrollable\"\n value=\"scrollable\" [checked]=\"position === 'scrollable'\" (change)=\"changePosition('scrollable')\">\n <label class=\"form-check-label\" for=\"layout-position-scrollable\">Scrollable</label>\n </div>\n\n <h6 class=\"mt-4 mb-3\">Topbar Color</h6>\n\n <div class=\"form-check form-check-inline\">\n <input class=\"form-check-input\" type=\"radio\" name=\"topbar-color\" id=\"topbar-color-light\" value=\"light\"\n [checked]=\"topbar === 'light'\" (change)=\"changeTopbar('light')\">\n <label class=\"form-check-label\" for=\"topbar-color-light\">Light</label>\n </div>\n <div class=\"form-check form-check-inline\">\n <input class=\"form-check-input\" type=\"radio\" name=\"topbar-color\" id=\"topbar-color-dark\" value=\"dark\"\n [checked]=\"topbar === 'dark'\" (change)=\"changeTopbar('dark')\">\n <label class=\"form-check-label\" for=\"topbar-color-dark\">Dark</label>\n </div>\n\n <div *ngIf=\"layout !== 'horizontal'\">\n <h6 class=\"mt-4 mb-3 sidebar-setting\">Sidebar Size</h6>\n\n <div class=\"form-check sidebar-setting\">\n <input class=\"form-check-input\" type=\"radio\" name=\"sidebar-size\" id=\"sidebar-size-default\"\n value=\"default\" [checked]=\"sidebarsize === 'default'\" (change)=\"changeSidebarSize('default')\">\n <label class=\"form-check-label\" for=\"sidebar-size-default\">Default</label>\n </div>\n <div class=\"form-check sidebar-setting\">\n <input class=\"form-check-input\" type=\"radio\" name=\"sidebar-size\" id=\"sidebar-size-compact\"\n value=\"compact\" [checked]=\"sidebarsize === 'compact'\" (change)=\"changeSidebarSize('compact')\">\n <label class=\"form-check-label\" for=\"sidebar-size-compact\">Compact</label>\n </div>\n <div class=\"form-check sidebar-setting\">\n <input class=\"form-check-input\" type=\"radio\" name=\"sidebar-size\" id=\"sidebar-size-small\"\n value=\"small\" [checked]=\"sidebarsize === 'small'\" (change)=\"changeSidebarSize('small')\">\n <label class=\"form-check-label\" for=\"sidebar-size-small\">Small</label>\n </div>\n\n <h6 class=\"mt-4 mb-3 sidebar-setting\">Sidebar Color</h6>\n\n <div class=\"form-check sidebar-setting\">\n <input class=\"form-check-input\" type=\"radio\" name=\"sidebar-color\" id=\"sidebar-color-light\"\n value=\"light\" [checked]=\"sidebarcolor === 'light'\" (change)=\"changeSidebarColor('light')\">\n <label class=\"form-check-label\" for=\"sidebar-color-light\">Light</label>\n </div>\n <div class=\"form-check sidebar-setting\">\n <input class=\"form-check-input\" type=\"radio\" name=\"sidebar-color\" id=\"sidebar-color-dark\"\n value=\"dark\" [checked]=\"sidebarcolor === 'dark'\" (change)=\"changeSidebarColor('dark')\">\n <label class=\"form-check-label\" for=\"sidebar-color-dark\">Dark</label>\n </div>\n <div class=\"form-check sidebar-setting\">\n <input class=\"form-check-input\" type=\"radio\" name=\"sidebar-color\" id=\"sidebar-color-brand\"\n value=\"brand\" [checked]=\"sidebarcolor === 'brand'\" (change)=\"changeSidebarColor('brand')\">\n <label class=\"form-check-label\" for=\"sidebar-color-brand\">Brand</label>\n </div>\n\n </div>\n </div>\n\n </ngx-simplebar>\n</div>\n<!-- /Right-bar -->","import { PAGE_NAMES } from '../../core/helpers/constants';\nimport { MenuItem } from './menu.model';\n\nexport const MENU: MenuItem[] = [\n // {\n // id: 1,\n // label: 'MENUITEMS.MENU.TEXT',\n // isTitle: true\n // },\n // {\n // id: 3,\n // label: 'MENUITEMS.EMAIL.TEXT',\n // icon: 'mail',\n // link: '/pages/emails',\n // pageName: PAGE_NAMES.Emails\n // },\n // {\n // id: 17,\n // label: 'MENUITEMS.SETTINGS.TEXT',\n // icon: 'settings',\n // link: '',\n // pageName: PAGE_NAMES.Settings\n // },\n {\n id: 1,\n label: 'MENUITEMS.HOME.TEXT',\n icon: 'home',\n link: '/pages/dashboard',\n pageName: PAGE_NAMES.Dashboard\n },\n {\n id: 2,\n label: 'MENUITEMS.TASKS.TEXT',\n icon: 'list',\n link: '/pages/tasks',\n pageName: PAGE_NAMES.Tasks\n },\n {\n id: 4,\n label: 'MENUITEMS.CAMPAIGNS.TEXT',\n icon: 'globe',\n link: '/pages/campaigns',\n pageName: PAGE_NAMES.Campaigns\n },\n {\n id: 5,\n label: 'REPORTS',\n icon: 'layout',\n link: '/pages/reports',\n pageName: PAGE_NAMES.Reports\n },\n {\n id: 6,\n label: 'MENUITEMS.LEADS.TEXT',\n icon: 'bar-chart-2',\n link: '/pages/leads',\n pageName: PAGE_NAMES.Leads\n },\n {\n id: 7,\n label: 'MENUITEMS.COMPANIES.TEXT',\n icon: 'briefcase',\n link: '/pages/companies',\n pageName: PAGE_NAMES.Companies\n },\n {\n id: 8,\n label: 'MENUITEMS.CLIENTS.TEXT',\n icon: 'user',\n link: '/pages/clients',\n pageName: PAGE_NAMES.Clients\n },\n {\n id: 9,\n label: 'MENUITEMS.PROSPECTS.TEXT',\n icon: 'user-plus',\n pageName: PAGE_NAMES.Prospects,\n link: '/pages/prospects',\n },\n {\n id: 10,\n label: 'MENUITEMS.USERS.TEXT',\n icon: 'server',\n link: '/pages/users',\n pageName: PAGE_NAMES.Users\n },\n {\n id: 11,\n label: 'MENUITEMS.SHOP.TEXT',\n icon: 'shopping-bag',\n link: '/pages/shop',\n pageName: PAGE_NAMES.Shop\n },\n {\n id: 12,\n label: 'MENUITEMS.PRODUCTS.TEXT',\n icon: 'package',\n link: '/pages/products',\n pageName: PAGE_NAMES.Products\n },\n {\n id: 13,\n label: 'MENUITEMS.COUPONS.TEXT',\n icon: 'percent',\n link: '/pages/coupons',\n pageName: PAGE_NAMES.Coupons\n },\n {\n id: 14,\n label: 'MENUITEMS.SUBSCRIPTIONS.TEXT',\n icon: 'refresh-cw',\n link: '/pages/subscriptions',\n pageName: PAGE_NAMES.Subscriptions\n },\n {\n id: 15,\n label: 'ORDERS',\n icon: 'dollar-sign',\n link: '/pages/orders',\n pageName: PAGE_NAMES.Orders\n },\n {\n id: 16,\n label: 'MENUITEMS.SEARCHES.TEXT',\n icon: 'search',\n link: '/pages/searches',\n pageName: PAGE_NAMES.Searches\n },\n {\n id: 17,\n label: 'MENUITEMS.TAGS.TEXT',\n icon: 'tag',\n link: '/pages/tags',\n pageName: PAGE_NAMES.Tags\n },\n {\n id: 18,\n label: 'FORMS',\n icon: 'book-open',\n name: 'forms',\n link: 'https://reachagency.co/forms',\n openOnNewPage: true,\n pageName: PAGE_NAMES.Forms\n },\n {\n id: 19,\n label: 'AUTOMATIONS',\n faIcon: 'fas fa-magic fa-lg',\n name: 'automations',\n link: '/automations',\n openOnNewPage: true,\n pageName: PAGE_NAMES.Automations\n },\n {\n id: 20,\n label: 'MY ACCOUNT',\n faIcon: 'fas fa-clipboard-user fa-lg',\n link: '/pages/myaccount',\n pageName: PAGE_NAMES.MyAccount\n },\n {\n id: 21,\n label: 'PARTNERS',\n faIcon: 'fa fa-users',\n link: 'https://reach.marketing/partners/',\n openOnNewPage: true,\n pageName: 'Partners'\n },\n {\n id: 22,\n label: 'FAQ',\n faIcon: 'fa fa-question',\n link: 'https://reach.marketing/faq/',\n openOnNewPage: true,\n pageName: 'FAQ'\n },\n {\n id: 23,\n label: 'MENUITEMS.LOGOUT.TEXT',\n faIcon: 'fas fa-sign-out-alt fa-lg',\n name: 'logout'\n },\n];\n","import { Component, OnInit, ViewChild, ElementRef } from '@angular/core';\nimport MetisMenu from 'metismenujs';\nimport { Router, NavigationEnd } from '@angular/router';\nimport { MENU } from './menu';\nimport { MenuItem } from './menu.model';\n\nimport { TranslateService } from '@ngx-translate/core';\nimport { Constants, ROLES } from '../../core/helpers/constants';\nimport { AppService } from '../../store/app.service';\nimport * as _ from 'underscore';\n\n@Component({\n selector: 'app-sidebar',\n templateUrl: './sidebar.component.html',\n styleUrls: ['./sidebar.component.scss']\n})\n\n/**\n * Sidebar Component\n */\nexport class SidebarComponent implements OnInit {\n\n @ViewChild('sideMenu') sideMenu!: ElementRef;\n menu: any;\n menuItems: MenuItem[] = [];\n userRoles: any[] = []\n\n constructor(\n private router: Router,\n public translate: TranslateService,\n public appService: AppService\n ) {\n translate.setDefaultLang('en');\n router.events.forEach((event) => {\n if (event instanceof NavigationEnd) {\n this._activateMenuDropdown();\n }\n });\n }\n\n ngOnInit(): void {\n this.userRoles = this.appService.getActiveUserRoles$().value\n if (this.userRoles.find(x => x.code == ROLES.Admin.Code))\n this.menuItems = MENU;\n else {\n var mergedRoles: any[] = [];\n for (var r of this.userRoles) {\n for (var p of r.perms) {\n mergedRoles.push(p.pageName)\n }\n }\n this.menuItems = MENU.filter(m => mergedRoles.includes(m.pageName))\n if (this.userRoles.find(x => ((x.code == 5) || (x.code == 6) || (x.code == 7) || (x.code == 8) || (x.code == 9))) != undefined) {\n this.menuItems.push(MENU.find(x => x.pageName == 'Partners')!);\n this.menuItems.push(MENU.find(x => x.pageName == 'FAQ')!);\n this.menuItems = this.menuItems.filter(m => m.pageName && !['Subscriptions', 'Orders', 'Users'].includes(m.pageName));\n if (this.userRoles.find(x => ((x.code == 5) || (x.code == 6) || (x.code == 8))) != undefined) {\n if (!this.menuItems.some(item => item.pageName === 'MyAccount')) {\n this.menuItems.push(MENU.find(x => x.pageName == 'MyAccount')!);\n }\n }\n }\n this.menuItems.push(MENU.find(x => x.name == 'logout')!)\n }\n this.menuItems = _.sortBy(this.menuItems, 'id');\n }\n\n /**\n * Initialize\n */\n initialize(): void {\n this.menuItems = MENU;\n }\n\n /***\n * Activate droup down set \n */\n ngAfterViewInit() {\n this.menu = new MetisMenu('#side-menu');\n this._activateMenuDropdown();\n }\n\n /**\n * Returns true or false if given menu item has child or not\n * @param item menuItem\n */\n hasItems(item: MenuItem) {\n return item.subItems !== undefined ? item.subItems.length > 0 : false;\n }\n\n /**\n * remove active and mm-active class\n */\n _removeAllClass(className: any) {\n const els = document.getElementsByClassName(className);\n while (els[0]) {\n els[0].classList.remove(className);\n }\n }\n\n /**\n * Logout the user\n */\n doLogout() {\n localStorage.removeItem(Constants.LS_AUTHENTICATION_KEY);\n this.appService.clearData();\n this.router.navigate(['/account/login']);\n }\n\n menuClicked(name?: string) {\n if (name === \"logout\") {\n this.doLogout();\n }\n }\n\n // Method to check if the user has any of the specified roles (External Users)\n hasSpecialRoles(): boolean {\n return this.userRoles.some(x => [5, 6, 7, 8, 9].includes(x.code));\n }\n\n /**\n * Activate the parent dropdown\n */\n _activateMenuDropdown() {\n this._removeAllClass('mm-active');\n this._removeAllClass('mm-show');\n const links: any = document.getElementsByClassName('side-nav-link-ref');\n let menuItemEl = null;\n // tslint:disable-next-line: prefer-for-of\n const paths = [];\n for (let i = 0; i < links.length; i++) {\n paths.push(links[i]['pathname']);\n }\n var itemIndex = paths.indexOf(window.location.pathname);\n if (itemIndex === -1) {\n const strIndex = window.location.pathname.lastIndexOf('/');\n const item = window.location.pathname.substr(0, strIndex).toString();\n menuItemEl = links[paths.indexOf(item)];\n } else {\n menuItemEl = links[itemIndex];\n }\n if (menuItemEl) {\n menuItemEl.classList.add('active');\n const parentEl = menuItemEl.parentElement;\n if (parentEl) {\n parentEl.classList.add('mm-active');\n const parent2El = parentEl.parentElement.closest('ul');\n if (parent2El && parent2El.id !== 'side-menu') {\n parent2El.classList.add('mm-show');\n const parent3El = parent2El.parentElement;\n if (parent3El && parent3El.id !== 'side-menu') {\n parent3El.classList.add('mm-active');\n const childAnchor = parent3El.querySelector('.has-arrow');\n const childDropdown = parent3El.querySelector('.has-dropdown');\n if (childAnchor) {\n childAnchor.classList.add('mm-active');\n }\n if (childDropdown) {\n childDropdown.classList.add('mm-active');\n }\n const parent4El = parent3El.parentElement;\n if (parent4El && parent4El.id !== 'side-menu') {\n parent4El.classList.add('mm-show');\n const parent5El = parent4El.parentElement;\n if (parent5El && parent5El.id !== 'side-menu') {\n parent5El.classList.add('mm-active');\n const childanchor = parent5El.querySelector('.is-parent');\n if (childanchor && parent5El.id !== 'side-menu') {\n childanchor.classList.add('mm-active');\n }\n }\n }\n }\n }\n }\n }\n }\n}\n","<!-- ========== Left Sidebar Start ========== -->\n<div class=\"vertical-menu\">\n <ngx-simplebar class=\"h-100\">\n <!--- Sidemenu -->\n <div id=\"sidebar-menu\">\n <!-- Left Menu Start -->\n <ul class=\"metismenu list-unstyled\" id=\"side-menu\">\n <ng-container *ngFor=\"let item of menuItems\">\n <li class=\"menu-title\" *ngIf=\"item.isTitle\">{{ (item.label | translate) | uppercase }}</li>\n <li *ngIf=\"!item.isTitle && !item.isLayout\">\n <a [routerLink]=\"item.link\" *ngIf=\"item.link && !hasItems(item) && !item.openOnNewPage\" class=\"side-nav-link-ref\" routerLinkActive=\"active\"\n [target]=\"item.openOnNewPage ? '_blank': '_self'\">\n <i-feather *ngIf=\"item.icon\" name=\"{{ item.icon }}\"></i-feather>\n <i *ngIf=\"item.faIcon\" class=\"{{item.faIcon}}\" style=\"font-size: initial; min-width: 1.5em;text-align: center;\"></i>\n <span>{{ item.label | translate }}</span>\n <span class=\"badge rounded-pill bg-{{item.badge.variant}} float-end\" *ngIf=\"item.badge\">{{item.badge.text | translate}}</span>\n </a>\n <a [href]=\"item.link\" *ngIf=\"item.link && !hasItems(item) && item.openOnNewPage\"\n class=\"side-nav-link-ref\" routerLinkActive=\"active\" [target]=\"item.openOnNewPage ? '_blank': '_self'\">\n <i-feather *ngIf=\"item.icon\" name=\"{{ item.icon }}\"></i-feather>\n <i *ngIf=\"item.faIcon\" class=\"{{item.faIcon}}\" style=\"font-size: initial; min-width: 1.5em;text-align: center;\"></i>\n <span>{{ item.label | translate }}</span>\n <span class=\"badge rounded-pill bg-{{item.badge.variant}} float-end\" *ngIf=\"item.badge\">{{item.badge.text| translate}}</span>\n </a>\n <a [routerLink]=\"\" (click)=\"menuClicked(item.name)\" *ngIf=\"!item.link\" class=\"side-nav-link-ref\"\n [target]=\"item.openOnNewPage ? '_blank': '_self'\">\n <i-feather *ngIf=\"item.icon\" name=\"{{ item.icon }}\"></i-feather>\n <i *ngIf=\"item.faIcon\" class=\"{{item.faIcon}}\" style=\"font-size: initial; min-width: 1.5em;text-align: center;\"></i>\n <span>{{ item.label | translate }}</span>\n <span class=\"badge rounded-pill bg-{{item.badge.variant}} float-end\" *ngIf=\"item.badge\">{{item.badge.text | translate}}</span>\n </a>\n </li>\n </ng-container>\n </ul>\n <div *ngIf=\"hasSpecialRoles()\" class=\"alert alert-dark info-text\">\n Subscriptions, Orders, Users & Payment Methods can be found under My Account\n </div>\n </div>\n <div id=\"contact-us\" style=\"text-align: center;margin-bottom: 40px;\">\n Need Help? <br><a target=\"_blank\" style=\"color: #495057;\" href=\"https://franchisefocusedmarketing.com/reach-feedback-form/\">Contact Us</a>\n </div>\n <!-- Sidebar -->\n </ngx-simplebar>\n</div>\n<!-- Left Sidebar End -->","import { Component, OnInit, EventEmitter, Output } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { CookieService } from 'ngx-cookie-service';\nimport { TranslateService } from '@ngx-translate/core';\nimport { LAYOUT_MODE } from \"../layouts.model\";\nimport { PAGE_NAMES, ROLES } from '../../core/helpers/constants';\nimport { AppService } from '../../store/app.service';\nimport { ClientsService } from '../../pages/clients/clients.service';\nimport { TasksService } from '../../pages/tasks/tasks.service';\nimport { UsersService } from '../../pages/users/users.service';\nimport { CompanyService } from '../../pages/companies/company.service';\nimport { IPermission, IUser } from '../../core/models/auth.models';\nimport { getRolesForPage, hasAdminRole, hasShopManagerRole } from '../../core/helpers/utility';\nimport Swal from 'sweetalert2';\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\nimport { AddLeadModal } from '../../shared/modals/add-lead/add-lead.component';\nimport { CampaignsService } from '../../pages/campaigns/campaigns.service';\nimport { ProductsService } from '../../pages/products/products.service';\nimport { LeadsService } from '../../pages/leads/leads.service';\nimport { CouponsService } from '../../pages/coupons/coupon.service';\nimport { AddOrderModal } from '../../shared/modals/add-order/add-order.component';\nimport { EditSubscriptionModal } from '../../pages/subscriptions/edit-subscription/edit-subscription.component';\nimport { AddPaymentMethodModal } from '../../shared/modals/add-payment-method/add-payment-method.component';\nimport { LoadDataFromServer } from '../../shared/components/datatable/datatable.model';\nimport { UtilityService } from '../../core/helpers/utility.service';\nimport { map } from 'rxjs/operators';\n\n@Component({\n selector: 'app-topbar',\n templateUrl: './topbar.component.html',\n styleUrls: ['./topbar.component.scss']\n})\n\n/**\n * Topbar Component\n */\nexport class TopbarComponent implements OnInit {\n\n mode: string | undefined;\n element: any;\n cookieValue: any;\n countryName: any;\n public activePage: string = '';\n changeLayoutStarted = false;\n searchKeyword: any = '';\n PAGE_NAMES = PAGE_NAMES;\n @Output() oAddClientClick = new EventEmitter();\n\n //new\n toggleLogo: boolean = true;\n public userRoles: Array<number> = [];\n externalUser: boolean = false;\n\n savedSearchId!: string;\n private loadEvent!: LoadDataFromServer;\n\n activeUser: IUser = {} as IUser;\n public isAdmin: boolean = false;\n public isShopManager: boolean = false;\n public permissions: { [key: string]: IPermission } = {};\n\n constructor(\n private modalService: NgbModal,\n private router: Router,\n public _cookiesService: CookieService,\n public route: ActivatedRoute,\n public translate: TranslateService,\n public appService: AppService,\n private cService: ClientsService,\n private campaignService: CampaignsService,\n private couponService: CouponsService,\n private tasksService: TasksService,\n private uService: UsersService,\n private compService: CompanyService,\n private leadService: LeadsService,\n private productsService: ProductsService,\n public utilService: UtilityService\n ) {\n this.userRoles = [...this.utilService.getUserRoles()];\n this.appService.getActiveUser$()\n .subscribe(u => {\n this.activeUser = u;\n this.isAdmin = hasAdminRole(u.roles);\n this.isShopManager = hasShopManagerRole(u.roles);\n var r = getRolesForPage(u.roles, PAGE_NAMES.Campaigns);\n this.permissions[PAGE_NAMES.Campaigns] =\n {\n canRead: r.canRead,\n canWrite: r.canWrite,\n canCreate: r.canCreate,\n canDelete: r.canDelete,\n }\n r = getRolesForPage(u.roles, PAGE_NAMES.Clients);\n this.permissions[PAGE_NAMES.Clients] =\n {\n canRead: r.canRead,\n canWrite: r.canWrite,\n canDelete: r.canDelete,\n canCreate: r.canCreate,\n }\n r = getRolesForPage(u.roles, PAGE_NAMES.Prospects);\n this.permissions[PAGE_NAMES.Prospects] =\n {\n canRead: r.canRead,\n canWrite: r.canWrite,\n canDelete: r.canDelete,\n canCreate: r.canCreate,\n }\n r = getRolesForPage(u.roles, PAGE_NAMES.Users);\n this.permissions[PAGE_NAMES.Users] =\n {\n canRead: r.canRead,\n canWrite: r.canWrite,\n canDelete: r.canDelete,\n canCreate: r.canCreate,\n };\n r = getRolesForPage(u.roles, PAGE_NAMES.Leads);\n this.permissions[PAGE_NAMES.Leads] =\n {\n canRead: r.canRead,\n canWrite: r.canWrite,\n canDelete: r.canDelete,\n canCreate: r.canCreate,\n };\n r = getRolesForPage(u.roles, PAGE_NAMES.Companies);\n this.permissions[PAGE_NAMES.Companies] =\n {\n canRead: r.canRead,\n canWrite: r.canWrite,\n canDelete: r.canDelete,\n canCreate: r.canCreate,\n };\n r = getRolesForPage(u.roles, PAGE_NAMES.Coupons);\n this.permissions[PAGE_NAMES.Coupons] =\n {\n canRead: r.canRead,\n canWrite: r.canWrite,\n canDelete: r.canDelete,\n canCreate: r.canCreate,\n };\n r = getRolesForPage(u.roles, PAGE_NAMES.MyAccount);\n this.permissions[PAGE_NAMES.MyAccount] =\n {\n canRead: r.canRead,\n canWrite: r.canWrite,\n canDelete: r.canDelete,\n canCreate: r.canCreate,\n };\n r = getRolesForPage(u.roles, PAGE_NAMES.Subscriptions);\n this.permissions[PAGE_NAMES.Subscriptions] =\n {\n canRead: r.canRead,\n canWrite: r.canWrite,\n canDelete: r.canDelete,\n canCreate: r.canCreate,\n };\n r = getRolesForPage(u.roles, PAGE_NAMES.SubscriptionsDetails);\n this.permissions[PAGE_NAMES.SubscriptionsDetails] =\n {\n canRead: r.canRead,\n canWrite: r.canWrite,\n canDelete: r.canDelete,\n canCreate: r.canCreate,\n };\n r = getRolesForPage(u.roles, PAGE_NAMES.Orders);\n this.permissions[PAGE_NAMES.Orders] =\n {\n canRead: r.canRead,\n canWrite: r.canWrite,\n canDelete: r.canDelete,\n canCreate: r.canCreate,\n };\n r = getRolesForPage(u.roles, PAGE_NAMES.Tags);\n this.permissions[PAGE_NAMES.Tags] =\n {\n canRead: r.canRead,\n canWrite: r.canWrite,\n canDelete: r.canDelete,\n canCreate: r.canCreate,\n };\n r = getRolesForPage(u.roles, PAGE_NAMES.Products);\n this.permissions[PAGE_NAMES.Products] =\n {\n canRead: r.canRead,\n canWrite: r.canWrite,\n canDelete: r.canDelete,\n canCreate: r.canCreate,\n };\n })\n this.appService.getActiveRoute$()\n .pipe(\n map((route: any) => {\n const url = route.url;\n if (url.includes('dashboard')) return PAGE_NAMES.Dashboard;\n if (url.includes('clients')) return PAGE_NAMES.Clients;\n if (url.includes('client-details')) return PAGE_NAMES.ClientDetails;\n if (url.includes('prospects')) return PAGE_NAMES.Prospects;\n if (url.includes('prospect-details')) return PAGE_NAMES.ProspectsDetails;\n if (url.includes('lead-details')) return PAGE_NAMES.LeadDetails;\n if (url.includes('rollup-campaigns')) return PAGE_NAMES.Reports;\n if (url.includes('campaigns')) return PAGE_NAMES.Campaigns;\n if (url.includes('campaign-details')) return PAGE_NAMES.CampaignsDetails;\n if (url.includes('edit-campaign')) return PAGE_NAMES.EditCampaign;\n if (url.includes('tags')) return PAGE_NAMES.Tags;\n if (url.includes('edit-tag')) return PAGE_NAMES.EditTag;\n if (url.includes('global-search')) return PAGE_NAMES.GlobalSearch;\n if (url.includes('task')) return PAGE_NAMES.Tasks;\n if (url.includes('users')) return PAGE_NAMES.Users;\n if (url.includes('companies')) return PAGE_NAMES.Companies;\n if (url.includes('searches')) return PAGE_NAMES.Searches;\n if (url.includes('reports')) return PAGE_NAMES.Reports;\n if (url.includes('leads')) return PAGE_NAMES.Leads;\n if (url.includes('products/')) return PAGE_NAMES.ProductsDetails;\n if (url.includes('products')) return PAGE_NAMES.Products;\n if (url.includes('coupons')) return PAGE_NAMES.Coupons;\n if (url.includes('edit-coupon')) return PAGE_NAMES.EditCoupon;\n if (url.endsWith('subscriptions') || url.endsWith('subscriptions/')) return PAGE_NAMES.Subscriptions;\n if (url.includes('subscriptions')) return PAGE_NAMES.SubscriptionsDetails;\n if (url.includes('emails')) return PAGE_NAMES.Emails;\n if (url.includes('orders/details')) return PAGE_NAMES.OrdersDetails;\n if (url.includes('orders')) return PAGE_NAMES.Orders;\n if (url.includes('shop')) return PAGE_NAMES.Shop;\n // keep MyAccount at the end\n if (url.includes('myaccount')) return PAGE_NAMES.MyAccount;\n return '';\n })\n )\n .subscribe((activePage: string) => {\n this.activePage = activePage;\n this.appService.setActivePage$(this.activePage);\n });\n\n this.tasksService.onSave.subscribe((x: boolean) => {\n if (x) {\n this.appService.setForceLoadingTasks(true);\n }\n })\n\n if (!this.userRoles.includes(1) && !this.userRoles.includes(10) && !this.userRoles.includes(2) && !this.userRoles.includes(3) && !this.userRoles.includes(4) && !this.userRoles.includes(12)) {\n this.externalUser = true;\n }\n }\n\n onEditClick(action: any) {\n this.cService.openEditClientModal({ id: action === 'add' ? null : -1 }, {});\n }\n onDeleteClientClick() {\n this.cService.deleteClient();\n }\n onDeleteCampaignClick() {\n this.campaignService.deleteCampaign();\n }\n\n onDeleteProspectClick() {\n this.cService.deleteProspect();\n }\n\n onDeleteCouponClick() {\n this.couponService.deleteCoupon();\n }\n\n onAddTaskClick(action: any) {\n this.tasksService.openEditTaskModal({ id: action === 'add' ? null : -1 }, true, true);\n }\n\n onUserClick(action: any) {\n if (!this.isAdmin) {\n if (this.activeUser.roles.some(r => [ROLES.MarketingManager.Code].includes(r.code))) {\n if (this.activeUser.marketingManagerOf.length === 0) {\n Swal.fire('Users ', \"You need to be assigned to a company first\", 'warning');\n return;\n }\n }\n else if (this.activeUser.roles.some(r => [ROLES.CompanyOwner.Code].includes(r.code))) {\n if (this.activeUser.companyOwnerOf.length === 0) {\n Swal.fire('Users ', \"You need to be assigned to a company first\", 'warning');\n return;\n }\n }\n else if (this.activeUser.roles.some(r => [ROLES.ClientOwner.Code].includes(r.code))) {\n if (this.activeUser.clientOwnerOf.length === 0) {\n Swal.fire('Users ', \"You need to be assigned to a client first\", 'warning');\n return;\n }\n }\n }\n this.uService.openEditUserModal({ id: action === 'add' ? null : -1 });\n }\n\n onCompanyClick(action: any) {\n this.compService.openEditCompanyModal({ id: action === 'add' ? null : -1 });\n }\n\n onLeadsClick() {\n const dialogRef = this.modalService.open(AddLeadModal, { size: 'lg' });\n dialogRef.componentInstance.oSaveClicked.subscribe(() => {\n this.appService.fetchAllLeads({\n SavedSearchId: this.savedSearchId,\n PageNumber: 1,\n PageSize: 50,\n ...this.loadEvent\n });\n })\n }\n\n onLeadDeleteClick(){\n this.leadService.deleteLeads();\n }\n\n onSubscriptionAddClick() {\n this.router.navigate(['pages/shop/']);\n }\n\n onOrderAddClick() {\n var modal = this.modalService.open(AddOrderModal, { size: 'lg' });\n modal.componentInstance.oSaveClicked.subscribe(() => {\n this.appService.fetchAllUserOrders();\n });\n }\n\n onAddNewPaymentMethod() {\n const dialogRef = this.modalService.open(AddPaymentMethodModal, { size: 'lg' });\n dialogRef.componentInstance.oSaveClicked.subscribe(() => {\n this.appService.fetchAllUserPaymentMethods();\n })\n }\n\n onSubscriptionEditClick() {\n var subscriptionId = this.router.url.split('/').slice(-1).pop();\n var modal = this.modalService.open(EditSubscriptionModal, { size: 'lg' });\n modal.componentInstance.iId = subscriptionId;\n modal.componentInstance.oSaveClicked.subscribe(() => {\n //this.appService.fetchAllUserSubscriptions();\n this.router.navigateByUrl('/', {skipLocationChange: true})\n .then(() => this.router.navigate(['/pages/subscriptions/' + subscriptionId]));\n });\n }\n\n onReportClick(action: any) {\n // console.log('Add Report Clicked.');\n // this.compService.openEditCompanyModal({ id: action === 'add' ? null : -1 });\n }\n\n onProductsAddClick(action: any) {\n this.productsService.openEditModal({ id: action === 'add' ? null : -1 });\n }\n onProductsEditClick(action: any) {\n this.productsService.openEditModal({ id: action === 'add' ? null : -1 });\n }\n onProductsDeleteClick() {\n this.productsService.deleteProductForm();\n }\n\n /**\n * Language Listing\n */\n\n @Output() settingsButtonClicked = new EventEmitter();\n @Output() mobileMenuButtonClicked = new EventEmitter();\n\n layoutMode!: string;\n\n ngOnInit(): void {\n this.layoutMode = LAYOUT_MODE;\n\n this.element = document.documentElement;\n // Cookies wise Language set\n this.cookieValue = this._cookiesService.get('lang');\n }\n\n /**\n * Language Value Set\n */\n setLanguage(text: string, lang: string, flag: string) {\n this.countryName = text;\n this.cookieValue = lang;\n // this.languageService.setLanguage(lang);\n }\n\n /**\n * Topbar Light-Dark Mode Change\n */\n changeMode(mode: string) {\n this.layoutMode = mode;\n this.mode = mode;\n // this.eventService.broadcast('changeMode', mode);\n }\n\n /**\n * Toggle the menu bar when having mobile screen\n */\n toggleMobileMenu(event: any) {\n this.toggleLogo = !this.toggleLogo;\n event.preventDefault();\n this.mobileMenuButtonClicked.emit();\n }\n\n /**\n * Toggles the right sidebar\n */\n toggleRightSidebar() {\n this.settingsButtonClicked.emit();\n }\n\n changeLayoutText() { return this.changeLayoutStarted ? 'Finish Change Layout' : 'Change Layout'; }\n\n changeLayoutClick() {\n this.changeLayoutStarted = !this.changeLayoutStarted;\n this.appService.changeLayout(this.changeLayoutStarted);\n }\n addWidgetClick() {\n this.appService.addWidget$();\n }\n\n search() {\n if (this.searchKeyword && this.searchKeyword.trim() !== '')\n this.router.navigate(['pages/global-search/' + this.searchKeyword]);\n this.searchKeyword = '';\n }\n}\n","<header id=\"page-topbar\">\n <div class=\"d-flex flex-row flex-space-between\">\n <div class=\"d-flex\">\n <div class=\"d-flex\" style=\"align-items: center;\">\n <button type=\"button\" style=\"padding: 15px 20px; min-width: 69px;\"\n class=\"btn btn-sm px-3 font-size-16 header-item\" id=\"vertical-menu-btn\"\n (click)=\"toggleMobileMenu($event)\">\n <i class=\"fa fa-fw fa-bars\"></i>\n </button>\n <span *ngIf=\"toggleLogo\" class=\"page-title hide-from-980\" style=\"min-width: 150px; margin-right: 16px;\">\n <h1>REACH</h1>\n </span>\n <div [ngClass]=\"(activePage !== PAGE_NAMES.Subscriptions) ? 'right-element' : 'right-element hide-from-980'\">\n <span class=\"page-title\">\n <h1>{{ (appService.getPageTitle$() | async) | uppercase}}</h1>\n </span>\n </div>\n </div>\n </div>\n <div class=\"d-flex dv-date align-items-center right-element\">\n </div>\n <div class=\"d-flex flex-row top-header-right hide-from-768\" style=\"align-items: center !important;\">\n <div style=\"display: flex; flex-direction: row; align-items: center; padding: 8px 4px 8px 8px; border: 1px solid white; border-radius: 16px; min-width: 265px; background-color: white; max-height: 34px !important;\">\n <i-feather name=\"search\" style=\"width: 16px; height: 16px; color: grey;\"></i-feather>\n <input type=\"text\" placeholder=\"Search\" class=\"form-control form-control-sm ms-2\"\n [(ngModel)]=\"searchKeyword\" style=\"border: none !important; background-color: white !important; max-height: 15px; max-width: 220px;\"\n (keyup.enter)=\"search()\">\n </div>\n <div id=\"templates\" class=\"d-flex\">\n <ng-template [ngIf]=\"activePage===PAGE_NAMES.Dashboard && !externalUser\">\n <div class=\"d-flex align-items-center\">\n <button type=\"button\" class=\"blue-button\" style=\"margin-right: 15px;\"\n (click)=\"addWidgetClick()\">Add\n Widget</button>\n <button type=\"button\" class=\"blue-button\"\n (click)=\"changeLayoutClick()\">{{changeLayoutText()}}</button>\n </div>\n </ng-template>\n <ng-template\n [ngIf]=\"activePage===PAGE_NAMES.Clients && (isAdmin || permissions[PAGE_NAMES.Clients]?.canCreate)\">\n <div class=\"btn-block d-flex justify-content-end align-items-center\" style=\"display: flex;\">\n <button type=\"button\" class=\"blue-button\" (click)=\"onEditClick('add')\">ADD CLIENT</button>\n </div>\n </ng-template>\n <ng-template\n [ngIf]=\"activePage===PAGE_NAMES.ClientDetails && (isAdmin || permissions[PAGE_NAMES.Clients]?.canWrite || permissions[PAGE_NAMES.Clients]?.canDelete)\">\n <div class=\"btn-block d-flex justify-content-end align-items-center\" style=\"display: flex;\">\n <button *ngIf=\"(isAdmin || permissions[PAGE_NAMES.Clients]?.canWrite)\" type=\"button\"\n class=\"blue-button\" (click)=\"onEditClick('edit')\">EDIT\n CLIENT</button>\n <button style=\"margin-left: 5px;\"\n *ngIf=\"(isAdmin || permissions[PAGE_NAMES.Clients]?.canDelete)\" type=\"button\"\n class=\"blue-button\" (click)=\"onDeleteClientClick()\">DELETE\n </button>\n </div>\n </ng-template>\n <ng-template\n [ngIf]=\"activePage===PAGE_NAMES.Prospects && (isAdmin || permissions[PAGE_NAMES.Prospects]?.canCreate)\">\n <div class=\"btn-block d-flex justify-content-end align-items-center\" style=\"display: flex;\">\n <button type=\"button\" class=\"blue-button\" (click)=\"onEditClick('add')\">ADD\n PROSPECT</button>\n </div>\n </ng-template>\n <ng-template\n [ngIf]=\"(activePage===PAGE_NAMES.ProspectsDetails) && (isAdmin || permissions[PAGE_NAMES.Prospects]?.canWrite || permissions[PAGE_NAMES.Prospects]?.canDelete)\">\n <div class=\"btn-block d-flex justify-content-end align-items-center\" style=\"display: flex;\">\n <button *ngIf=\"(isAdmin || permissions[PAGE_NAMES.Prospects]?.canWrite)\" \n type=\"button\" class=\"blue-button\" (click)=\"onEditClick('edit')\">EDIT\n PROSPECT</button>\n <button *ngIf=\"(isAdmin || permissions[PAGE_NAMES.Prospects]?.canDelete)\"\n style=\"margin-left: 5px;\" type=\"button\" class=\"blue-button\"\n (click)=\"onDeleteProspectClick()\">DELETE\n </button>\n </div>\n </ng-template>\n <ng-template\n [ngIf]=\"activePage===PAGE_NAMES.Campaigns && (isAdmin || permissions[PAGE_NAMES.Campaigns]?.canCreate)\">\n <div class=\"btn-block d-flex justify-content-end align-items-center\" style=\"display: flex;\">\n <button type=\"button\" [routerLink]=\"['edit-campaign/']\" class=\"blue-button\">ADD A CAMPAIGN</button>\n </div>\n </ng-template>\n <ng-template\n [ngIf]=\"activePage===PAGE_NAMES.Coupons && (isAdmin || permissions[PAGE_NAMES.Coupons]?.canCreate)\">\n <div class=\"btn-block d-flex justify-content-end align-items-center\" style=\"display: flex;\">\n <button type=\"button\" [routerLink]=\"['edit-coupon/']\" class=\"blue-button\">ADD COUPON</button>\n </div>\n </ng-template>\n <ng-template\n [ngIf]=\"activePage===PAGE_NAMES.CampaignsDetails && (isAdmin || permissions[PAGE_NAMES.Campaigns]?.canWrite || permissions[PAGE_NAMES.Campaigns]?.canDelete)\">\n <div class=\"btn-block d-flex justify-content-end align-items-center\" style=\"display: flex;\">\n <button *ngIf=\"(isAdmin || permissions[PAGE_NAMES.Campaigns]?.canWrite)\" type=\"button\"\n [routerLink]=\"['edit-campaign/' +(appService.getActiveRoute$() | async).url.split('/').slice(-1)[0]]\"\n class=\"blue-button\">EDIT CAMPAIGN</button>\n <button *ngIf=\"(isAdmin || permissions[PAGE_NAMES.Campaigns]?.canDelete)\"\n style=\"margin-left: 5px;\" type=\"button\" class=\"blue-button\"\n (click)=\"onDeleteCampaignClick()\">DELETE\n </button>\n </div>\n </ng-template>\n <ng-template [ngIf]=\"activePage===PAGE_NAMES.Tags && (isAdmin || permissions[PAGE_NAMES.Tags]?.canCreate)\">\n <div class=\"btn-block d-flex justify-content-end align-items-center\" style=\"display: flex;\">\n <button type=\"button\" class=\"blue-button\" [routerLink]=\"['edit-tag/']\">ADD TAG</button>\n </div>\n </ng-template>\n <ng-template [ngIf]=\"activePage===PAGE_NAMES.EditTag\">\n <div class=\"btn-block d-flex justify-content-end align-items-center\" style=\"display: flex;\">\n <button type=\"button\" class=\"blue-button\" [routerLink]=\"['tags/']\">BACK TO LIST</button>\n </div>\n </ng-template>\n <ng-template [ngIf]=\"activePage===PAGE_NAMES.EditCampaign\">\n <div class=\"btn-block d-flex justify-content-end align-items-center\" style=\"display: flex;\">\n <button type=\"button\" class=\"blue-button\" [routerLink]=\"['campaigns/']\">BACK TO LIST</button>\n </div>\n </ng-template>\n <ng-template [ngIf]=\"activePage===PAGE_NAMES.GlobalSearch\">\n <div class=\"btn-block d-flex justify-content-end align-items-center\" style=\"display: flex;\">\n </div>\n </ng-template>\n <ng-template [ngIf]=\"activePage===PAGE_NAMES.Searches\">\n </ng-template>\n <ng-template\n [ngIf]=\"activePage===PAGE_NAMES.Users && (isAdmin || permissions[PAGE_NAMES.Users]?.canCreate)\">\n <div class=\"btn-block d-flex justify-content-end align-items-center\" style=\"display: flex;\">\n <button type=\"button\" class=\"blue-button\" (click)=\"onUserClick('add')\">ADD USER</button>\n </div>\n </ng-template>\n <ng-template\n [ngIf]=\"activePage===PAGE_NAMES.Companies && (isAdmin || permissions[PAGE_NAMES.Companies]?.canCreate)\">\n <div class=\"btn-block d-flex justify-content-end align-items-center\" style=\"display: flex;\">\n <button type=\"button\" class=\"blue-button\" (click)=\"onCompanyClick('add')\">ADD COMPANY</button>\n </div>\n </ng-template>\n <ng-template [ngIf]=\"((activePage===PAGE_NAMES.Leads || activePage===PAGE_NAMES.LeadDetails) && ((isAdmin) || permissions[PAGE_NAMES.Leads]?.canCreate || permissions[PAGE_NAMES.Leads]?.canDelete))\">\n <div class=\"btn-block d-flex justify-content-end align-items-center\" style=\"display: flex;\">\n <button *ngIf=\"(isAdmin || permissions[PAGE_NAMES.Leads]?.canCreate)\"\n type=\"button\" class=\"blue-button\" (click)=\"onLeadsClick()\">ADD LEAD</button>\n <button *ngIf=\"activePage===PAGE_NAMES.LeadDetails && ((isAdmin) || permissions[PAGE_NAMES.Leads]?.canDelete)\"\n style=\"margin-left: 5px;\" type=\"button\" class=\"blue-button\"\n (click)=\"onLeadDeleteClick()\">DELETE</button>\n </div>\n </ng-template>\n <ng-template [ngIf]=\"activePage===PAGE_NAMES.Products && (isAdmin || permissions[PAGE_NAMES.Products]?.canCreate)\">\n <div class=\"btn-block d-flex justify-content-end align-items-center\" style=\"display: flex;\">\n <button type=\"button\" class=\"blue-button\"\n (click)=\"onProductsAddClick('add')\">ADD PRODUCT</button>\n </div>\n </ng-template>\n <ng-template\n [ngIf]=\"activePage===PAGE_NAMES.ProductsDetails && (isAdmin || permissions[PAGE_NAMES.Products]?.canWrite || permissions[PAGE_NAMES.Products]?.canDelete)\">\n <div class=\"btn-block d-flex justify-content-end align-items-center\" style=\"display: flex;\">\n <button *ngIf=\"(isAdmin || permissions[PAGE_NAMES.Products]?.canWrite)\" type=\"button\"\n class=\"blue-button\" (click)=\"onProductsEditClick('edit')\">EDIT PRODUCT</button> \n <button style=\"margin-left: 5px;\"\n *ngIf=\"(isAdmin || permissions[PAGE_NAMES.Products]?.canDelete)\" type=\"button\"\n class=\"blue-button\" (click)=\"onProductsDeleteClick()\">DELETE</button>\n </div>\n </ng-template>\n <ng-template\n [ngIf]=\"activePage===PAGE_NAMES.Subscriptions && (isAdmin || permissions[PAGE_NAMES.Subscriptions]?.canCreate)\">\n <div class=\"btn-block d-flex justify-content-end align-items-center\" style=\"display: flex;\">\n <button type=\"button\" (click)=\"onSubscriptionAddClick()\" class=\"blue-button\">ADD SUBSCRIPTION</button>\n </div>\n </ng-template>\n <ng-template\n [ngIf]=\"activePage===PAGE_NAMES.SubscriptionsDetails && (isAdmin || permissions[PAGE_NAMES.Subscriptions]?.canWrite)\">\n <div class=\"btn-block d-flex justify-content-end align-items-center\" style=\"display: flex;\">\n <button type=\"button\" (click)=\"onSubscriptionEditClick()\"\n class=\"blue-button\">EDIT SUBSCRIPTION</button>\n </div>\n </ng-template>\n <ng-template [ngIf]=\"activePage===PAGE_NAMES.Orders && (isAdmin || permissions[PAGE_NAMES.Orders]?.canWrite)\">\n <div class=\"btn-block d-flex justify-content-end align-items-center\" style=\"display: flex;\">\n <button type=\"button\" (click)=\"onOrderAddClick()\" class=\"blue-button\">ADD ORDER</button>\n </div>\n </ng-template>\n <ng-template [ngIf]=\"activePage===PAGE_NAMES.Shop\">\n <div class=\"btn-block d-flex justify-content-end align-items-center\" style=\"display: flex;\">\n </div>\n </ng-template>\n <ng-template\n [ngIf]=\"activePage===PAGE_NAMES.MyAccount && (isAdmin || permissions[PAGE_NAMES.MyAccount]?.canCreate)\">\n <div class=\"btn-block d-flex justify-content-end align-items-center\" style=\"display: flex;\">\n <button type=\"button\" (click)=\"onAddNewPaymentMethod()\" class=\"blue-button\">ADD PAYMENT METHOD</button>\n </div>\n </ng-template>\n </div>\n </div>\n </div>\n</header>","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\nimport { ReplaySubject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport Swal from 'sweetalert2';\nimport { IClient } from '../../core/models/clients.models';\nimport { ClientsApiService } from '../../pages/clients/clients.apiservice';\nimport { AddClientModal } from '../../shared/modals/add-client/add-client.component';\nimport { AppService } from '../../store/app.service';\n\n@Component({\n selector: 'app-vertical',\n templateUrl: './vertical.component.html',\n styleUrls: ['./vertical.component.scss']\n})\n\n/**\n * Vertical Component\n */\nexport class VerticalComponent implements OnInit, OnDestroy {\n private destroyed$: ReplaySubject<boolean> = new ReplaySubject(1);\n isCondensed = false;\n\n constructor() {\n }\n\n ngOnInit(): void {\n document.body.setAttribute('data-layout', 'vertical');\n }\n\n /**\n * On mobile toggle button clicked\n */\n onToggleMobileMenu() {\n document.body.classList.toggle('sidebar-enable');\n const currentSIdebarSize = document.body.getAttribute(\"data-sidebar-size\");\n if (window.screen.width >= 992) {\n if (currentSIdebarSize == null) {\n (document.body.getAttribute('data-sidebar-size') == null || document.body.getAttribute('data-sidebar-size') == \"lg\") ? document.body.setAttribute('data-sidebar-size', 'sm') : document.body.setAttribute('data-sidebar-size', 'lg')\n } else if (currentSIdebarSize == \"md\") {\n (document.body.getAttribute('data-sidebar-size') == \"md\") ? document.body.setAttribute('data-sidebar-size', 'sm') : document.body.setAttribute('data-sidebar-size', 'md')\n } else {\n (document.body.getAttribute('data-sidebar-size') == \"sm\") ? document.body.setAttribute('data-sidebar-size', 'lg') : document.body.setAttribute('data-sidebar-size', 'sm')\n }\n }\n this.isCondensed = !this.isCondensed;\n }\n\n /**\n * on settings button clicked from topbar\n */\n onSettingsButtonClicked() {\n document.body.classList.toggle('right-bar-enabled');\n }\n\n\n\n ngOnDestroy() {\n this.destroyed$.next(true);\n this.destroyed$.complete();\n }\n}\n","<div id=\"layout-wrapper\">\n <!-- Top Bar -->\n <app-topbar (mobileMenuButtonClicked)=\"onToggleMobileMenu()\"\n (settingsButtonClicked)=\"onSettingsButtonClicked()\">\n </app-topbar>\n <app-sidebar></app-sidebar>\n <div class=\"main-content\" id=\"mainContent\">\n <div class=\"page-content\">\n <div class=\"container-fluid\">\n <!-- content -->\n <router-outlet></router-outlet>\n </div>\n </div>\n </div>\n</div>\n<app-rightsidebar></app-rightsidebar>","import { Component, Input, OnInit } from '@angular/core';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { pipe, ReplaySubject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { createGuid } from '../../../core/helpers/utility';\r\nimport { ICampaignAudit, INotes } from '../../../core/models/campaigns.model';\r\nimport { CampaignsApiService } from '../campaigns.apiservice';\r\nimport { AppService } from '../../../store/app.service';\r\nimport { ICampaign } from '../../../core/models/campaigns.model';\r\nimport { DataFeedService } from '../../../shared/api/datafeed.service';\r\n\r\n@Component({\r\n selector: 'app-campaign-audit',\r\n templateUrl: './campaign-audit.component.html',\r\n styleUrls: ['./campaign-audit.component.scss']\r\n})\r\nexport class CampaignAuditComponent implements OnInit {\r\n private destroyed$: ReplaySubject<boolean> = new ReplaySubject(1);\r\n\r\n campaignData: ICampaign = {} as ICampaign;\r\n platform = '';\r\n\r\n bitOptions = [\r\n {\r\n title: 'Yes',\r\n value: true\r\n },\r\n {\r\n title: 'No',\r\n value: false\r\n },\r\n {\r\n title: 'N/A',\r\n value: null\r\n }\r\n ]\r\n submitted = false;\r\n userId: string = '';\r\n auditData: Array<ICampaignAudit>;\r\n auditForm: FormGroup;\r\n campaignId: string = '';\r\n @Input() iCanWrite = false;\r\n @Input() set iCampaignId(id: string) {\r\n this.campaignId = id;\r\n this.campaignService.getAudit(id)\r\n .pipe(takeUntil(this.destroyed$))\r\n .subscribe((response: any) => {\r\n if (response.data) {\r\n const auditDataNulls: any = {};\r\n for (const key in response.data) {\r\n if (response.data[key] === null) {\r\n auditDataNulls[key] = null;\r\n }\r\n }\r\n this.auditForm.patchValue({ \r\n id: response.data.id || null,\r\n campaignId: id,\r\n ...auditDataNulls \r\n });\r\n } else {\r\n this.auditForm.patchValue({ campaignId: id });\r\n }\r\n });\r\n }\r\n\r\n constructor(\r\n private appService: AppService,\r\n private dataFeedService: DataFeedService,\r\n private campaignService: CampaignsApiService,\r\n private formBuilder: FormBuilder\r\n ) {\r\n this.auditData = new Array<ICampaignAudit>();\r\n this.auditForm = this.formBuilder.group({\r\n id: [null],\r\n // lastCheck: [null],\r\n campaignId: [null],\r\n adsLive: [''],\r\n producingLeads: [''],\r\n leadsEmailChecked: [''],\r\n adsSalesMatch: [''],\r\n adsSetRefreshed: [''],\r\n locationTargetCorrect: [''],\r\n budgetMatchSubscription: [''],\r\n fbDemographicCorrect: [''],\r\n // fbLeadsCenterAccess: [''],\r\n googleAdsCorrectLandingPage: [''],\r\n googleKeywordsCorrect: [''],\r\n googleNegtiveKeywords: [''],\r\n lpLandingPageCorrect: [''],\r\n lpPageTimeLong: [''],\r\n lpCrossPlatform: [''],\r\n lpCorrectOfferShown: [''],\r\n // communicationWithClient: [''],\r\n cpL30d: ['', Validators.required],\r\n cpL7d: ['', Validators.required],\r\n lastClientCallDate: [null, Validators.required],\r\n lastEmailSentDate: [null, Validators.required],\r\n // lastAudit: [null],\r\n internalNotes: [''],\r\n externalNotes: ['']\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n this.appService.getActiveUser$()\r\n .pipe(takeUntil(this.destroyed$))\r\n .subscribe(u => {\r\n if (u.id !== undefined) {\r\n this.userId = u.id;\r\n }\r\n });\r\n this.loadCampaignDetails(this.campaignId);\r\n }\r\n \r\n loadCampaignDetails(id: string): void {\r\n this.campaignService.getCampaignDetails(id)\r\n .pipe(takeUntil(this.destroyed$))\r\n .subscribe((response: any) => {\r\n this.campaignData = response.data;\r\n // console.log('Campaign Data:', this.campaignData);\r\n this.platform = this.campaignData.platform;\r\n });\r\n }\r\n\r\n onAuditSubmit() {\r\n this.submitted = true;\r\n if (this.auditForm.invalid) {\r\n return;\r\n }\r\n if (this.f.id.value === null) {\r\n this.f.id.setValue(createGuid());\r\n }\r\n \r\n let formValues: ICampaignAudit = this.auditForm.value;\r\n this.campaignService.saveAudit(formValues)\r\n .pipe(takeUntil(this.destroyed$))\r\n .subscribe((response: any) => {\r\n this.createAuditNote(formValues);\r\n })\r\n }\r\n\r\n get f() { return this.auditForm.controls; }\r\n\r\n createAuditNote(values: any) {\r\n const formatDate = (dateStr: string) => {\r\n const date = new Date(dateStr);\r\n return date.toLocaleDateString('en-US', { year: 'numeric', month: 'long', day: 'numeric' });\r\n };\r\n \r\n let body = [\r\n `CPL (Last 30 Days): $${values.cpL30d}`,\r\n `CPL (Last 7 Days): $${values.cpL7d}`,\r\n `Last Call: ${formatDate(values.lastClientCallDate)}`,\r\n `Last Email: ${formatDate(values.lastEmailSentDate)}`,\r\n ``\r\n ];\r\n \r\n const skipKeys = ['id', 'campaignId', 'cpL30d', 'cpL7d', 'lastClientCallDate', 'lastEmailSentDate', 'internalNotes', 'externalNotes'];\r\n if (this.campaignData.platform === 'Google') {\r\n skipKeys.push('fbDemographicCorrect', 'adsSetRefreshed');\r\n } else if (this.campaignData.platform === 'Facebook') {\r\n skipKeys.push('googleAdsCorrectLandingPage', 'googleKeywordsCorrect', 'googleNegtiveKeywords');\r\n }\r\n const textValues: any = {};\r\n \r\n for (const key in values) {\r\n if (!skipKeys.includes(key)) {\r\n textValues[key] = values[key] === true ? 'Yes' : values[key] === false ? 'No' : 'N/A';\r\n }\r\n }\r\n \r\n const headings: { [key: string]: string } = {\r\n adsLive: 'Are the Campaign and Ads Live and Delivering?',\r\n producingLeads: 'Is the Campaign Producing Leads?',\r\n leadsEmailChecked: 'Leads Checked in REACH to Confirm Lead Delivery?',\r\n adsSalesMatch: 'Are all Naming Conventions correct on the Campaign, AdSet/AdGroup, and Ad level? Are all Copy and Creatives Approved and Correct?',\r\n locationTargetCorrect: 'Is the Location Targeting Correct?',\r\n budgetMatchSubscription: 'Does the Campaign Daily Budget Match the Subscription?',\r\n fbDemographicCorrect: 'Is the Demographic Targeting Correct?',\r\n adsSetRefreshed: 'Have the Ads Been Refreshed Recently?',\r\n googleAdsCorrectLandingPage: 'Are the Ads Directing to the Correct Landing Page?',\r\n googleKeywordsCorrect: 'Are the Correct Keywords Being Used?',\r\n googleNegtiveKeywords: 'Are the Negative Keywords / Keyword Lists Being Used?',\r\n lpLandingPageCorrect: 'Does the Landing Page Load Correctly?',\r\n lpPageTimeLong: 'Is the Landing Page Load Time Excessively Long?',\r\n lpCrossPlatform: 'Does the Landing Page Look Right on Mobile and Desktop?',\r\n lpCorrectOfferShown: 'Is the Correct Offer Being Shown on the Landing Page?'\r\n };\r\n \r\n for (const key in textValues) {\r\n body.push(`${headings[key as keyof typeof headings] || key.replace(/([A-Z])/g, ' $1').trim()}: ${textValues[key]}`);\r\n }\r\n\r\n if (values.internalNotes > '') {\r\n body.push(``);\r\n body.push(`Audit Notes:`);\r\n body.push(`${values.internalNotes}`);\r\n }\r\n\r\n let bodytext = body.join('\\n');\r\n \r\n let date = new Date();\r\n let note: INotes = {\r\n campaignId: values.campaignId,\r\n id: createGuid(),\r\n updatedOn: date,\r\n assignedUserName: '',\r\n assignedUserId: this.userId,\r\n title: 'Campaign Audit',\r\n description: bodytext,\r\n type: 1,\r\n clientId: '',\r\n campaignName: values.campaignName,\r\n isInternal: true,\r\n noteFiles: []\r\n }\r\n this.dataFeedService.saveNote(note)\r\n .pipe(takeUntil(this.destroyed$))\r\n .subscribe((response: any) => {\r\n // this.resetAuditForm();\r\n });\r\n\r\n let externalBody = [\r\n `The monthly audit for this campaign has been completed. All key items and fundamental components have been thoroughly reviewed, checked, and verified as correct.`,\r\n ``,\r\n `CPL (Last 30 Days): $${values.cpL30d}`,\r\n `CPL (Last 7 Days): $${values.cpL7d}`\r\n ];\r\n if (values.externalNotes > '') {\r\n externalBody.push(``);\r\n externalBody.push(`DMS Notes:`);\r\n externalBody.push(`${values.externalNotes}`);\r\n }\r\n\r\n let externalBodytext = externalBody.join('\\n');\r\n\r\n let externalNote: INotes = {\r\n campaignId: values.campaignId,\r\n id: createGuid(),\r\n updatedOn: date,\r\n assignedUserName: '',\r\n assignedUserId: this.userId,\r\n title: 'Full Campaign Audit Completed',\r\n description: externalBodytext,\r\n type: 1,\r\n clientId: '',\r\n campaignName: values.campaignName,\r\n isInternal: false,\r\n noteFiles: []\r\n }\r\n\r\n this.dataFeedService.saveNote(externalNote)\r\n .pipe(takeUntil(this.destroyed$))\r\n .subscribe((response: any) => {\r\n });\r\n }\r\n/*\r\n resetAuditForm() {\r\n this.auditForm = this.formBuilder.group({\r\n id: [null],\r\n // lastCheck: [null],\r\n campaignId: [null],\r\n adsLive: [''],\r\n producingLeads: [''],\r\n leadsEmailChecked: [''],\r\n adsSalesMatch: [''],\r\n adsSetRefreshed: [''],\r\n locationTargetCorrect: [''],\r\n budgetMatchSubscription: [''],\r\n fbDemographicCorrect: [''],\r\n // fbLeadsCenterAccess: ['],\r\n googleAdsCorrectLandingPage: [''],\r\n googleKeywordsCorrect: [''],\r\n googleNegtiveKeywords: [''],\r\n lpLandingPageCorrect: [''],\r\n lpPageTimeLong: [''],\r\n lpCrossPlatform: [''],\r\n lpCorrectOfferShown: [''],\r\n // communicationWithClient: ['],\r\n cpL30d: ['', Validators.required],\r\n cpL7d: ['', Validators.required],\r\n lastClientCallDate: [null, Validators.required],\r\n lastEmailSentDate: [null, Validators.required],\r\n // lastAudit: [null],\r\n internalNotes: [''],\r\n externalNotes: ['']\r\n });\r\n\r\n this.campaignService.getAudit(this.campaignId)\r\n .pipe(takeUntil(this.destroyed$))\r\n .subscribe((response: any) => {\r\n const auditDataNulls: any = {};\r\n for (const key in response.data) {\r\n if (response.data[key] === null) {\r\n auditDataNulls[key] = null;\r\n }\r\n }\r\n this.auditForm.patchValue({ \r\n id: response.data.id,\r\n campaignId: this.campaignId,\r\n ...auditDataNulls \r\n });\r\n });\r\n }\r\n*/\r\n}\r\n","<div class=\"container-fluid\" [ngClass]=\"{'disable-all':!iCanWrite}\">\r\n <div class=\"row auditForm\">\r\n <div class=\"col\">\r\n <form style=\"padding: 8px 8px 8px 8px;\" [formGroup]=\"auditForm\" (ngSubmit)=\"onAuditSubmit()\">\r\n <div class=\"row mb-10 mt-10\">\r\n <h3>Full Campaign Audit</h3>\r\n </div>\r\n <div class=\"row mb-10\">\r\n <div class=\"col-md-6\">\r\n <label>CPL (Last 30 Days)</label>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <input [ngClass]=\"{ 'is-invalid': submitted && f.cpL30d.errors }\" type=\"number\" formControlName=\"cpL30d\"\r\n class=\"form-control\" />\r\n <div *ngIf=\"submitted && f.cpL30d.errors\" class=\"invalid-feedback\">\r\n <div *ngIf=\"f.cpL30d.errors.required\">Required</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-10\">\r\n <div class=\"col-md-6\">\r\n <label>CPL (Last 7 Days)</label>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <input [ngClass]=\"{ 'is-invalid': submitted && f.cpL7d.errors }\" type=\"number\" formControlName=\"cpL7d\"\r\n class=\"form-control\" />\r\n <div *ngIf=\"submitted && f.cpL7d.errors\" class=\"invalid-feedback\">\r\n <div *ngIf=\"f.cpL7d.errors.required\">Required</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-10\">\r\n <div class=\"col-md-6\">\r\n <label>Last Call with Client</label>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <input\r\n [ngClass]=\"{ 'is-invalid': submitted && f.lastClientCallDate.errors, 'disable-calender':!iCanWrite }\"\r\n mwlFlatpickr [altInputClass]=\"'datetime'\" [altInput]=\"true\" [convertModelValue]=\"true\"\r\n formControlName=\"lastClientCallDate\" class=\"form-control\" />\r\n <div *ngIf=\"submitted && f.lastClientCallDate.errors\" class=\"invalid-feedback\">\r\n <div *ngIf=\"f.lastClientCallDate.errors.required\">Required</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-10\">\r\n <div class=\"col-md-6\">\r\n <label>Last Email Sent</label>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <input\r\n [ngClass]=\"{ 'is-invalid': submitted && f.lastEmailSentDate.errors,'disable-calender':!iCanWrite }\"\r\n mwlFlatpickr [altInputClass]=\"'datetime'\" [altInput]=\"true\" [convertModelValue]=\"true\"\r\n formControlName=\"lastEmailSentDate\" class=\"form-control\" />\r\n <div *ngIf=\"submitted && f.lastEmailSentDate.errors\" class=\"invalid-feedback\">\r\n <div *ngIf=\"f.lastEmailSentDate.errors.required\">Required</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-10\">\r\n <div class=\"col-md-6\">\r\n <label>Are the Campaign and Ads Live and Delivering?</label>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div *ngFor=\"let o of bitOptions\" class=\"form-check\">\r\n <input class=\"form-check-input\" type=\"radio\" formControlName=\"adsLive\" [value]=\"o.value\" [id]=\"'adsLive' + (o.value === null ? 'null' : o.value)\">\r\n <label class=\"form-check-label\" [for]=\"'adsLive' + (o.value === null ? 'null' : o.value)\">{{o.title}}</label>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-10\">\r\n <div class=\"col-md-6\">\r\n <label>Is the Campaign Producing Leads?</label>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div *ngFor=\"let o of bitOptions\" class=\"form-check\">\r\n <input class=\"form-check-input\" type=\"radio\" formControlName=\"producingLeads\" [value]=\"o.value\" [id]=\"'producingLeads' + (o.value === null ? 'null' : o.value)\">\r\n <label class=\"form-check-label\" [for]=\"'producingLeads' + (o.value === null ? 'null' : o.value)\">{{o.title}}</label>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-10\">\r\n <div class=\"col-md-6\">\r\n <label>Leads Checked in REACH to Confirm Lead Delivery? (Non-Xpo Only)</label>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div *ngFor=\"let o of bitOptions\" class=\"form-check\">\r\n <input class=\"form-check-input\" type=\"radio\" formControlName=\"leadsEmailChecked\" [value]=\"o.value\" [id]=\"'leadsEmailChecked' + (o.value === null ? 'null' : o.value)\">\r\n <label class=\"form-check-label\" [for]=\"'leadsEmailChecked' + (o.value === null ? 'null' : o.value)\">{{o.title}}</label>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-10\">\r\n <div class=\"col-md-6\">\r\n <label>Are all Naming Conventions correct on the Campaign, AdSet/AdGroup, and Ad level? Are all Copy and Creatives Approved and Correct?</label>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div *ngFor=\"let o of bitOptions\" class=\"form-check\">\r\n <input class=\"form-check-input\" type=\"radio\" formControlName=\"adsSalesMatch\" [value]=\"o.value\" [id]=\"'adsSalesMatch' + (o.value === null ? 'null' : o.value)\">\r\n <label class=\"form-check-label\" [for]=\"'adsSalesMatch' + (o.value === null ? 'null' : o.value)\">{{o.title}}</label>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-10\">\r\n <div class=\"col-md-6\">\r\n <label>Is the Location Targeting Correct?</label>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div *ngFor=\"let o of bitOptions\" class=\"form-check\">\r\n <input class=\"form-check-input\" type=\"radio\" formControlName=\"locationTargetCorrect\" [value]=\"o.value\" [id]=\"'locationTargetCorrect' + (o.value === null ? 'null' : o.value)\">\r\n <label class=\"form-check-label\" [for]=\"'locationTargetCorrect' + (o.value === null ? 'null' : o.value)\">{{o.title}}</label>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-10\">\r\n <div class=\"col-md-6\">\r\n <label>Does the Campaign Daily Budget Match the Subscription?</label>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div *ngFor=\"let o of bitOptions\" class=\"form-check\">\r\n <input class=\"form-check-input\" type=\"radio\" formControlName=\"budgetMatchSubscription\" [value]=\"o.value\" [id]=\"'budgetMatchSubscription' + (o.value === null ? 'null' : o.value)\">\r\n <label class=\"form-check-label\" [for]=\"'budgetMatchSubscription' + (o.value === null ? 'null' : o.value)\">{{o.title}}</label>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"platform == 'Facebook'\" class=\"row mb-10\">\r\n <div class=\"col-md-6\">\r\n <label>Have the Ads Been Refreshed Recently?</label>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div *ngFor=\"let o of bitOptions\" class=\"form-check\">\r\n <input class=\"form-check-input\" type=\"radio\" formControlName=\"adsSetRefreshed\" [value]=\"o.value\" [id]=\"'adsSetRefreshed' + (o.value === null ? 'null' : o.value)\">\r\n <label class=\"form-check-label\" [for]=\"'adsSetRefreshed' + (o.value === null ? 'null' : o.value)\">{{o.title}}</label>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"platform == 'Facebook'\" class=\"row mb-10\">\r\n <div class=\"col-md-6\">\r\n <label>Is the Demographic Targeting Correct?</label>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div *ngFor=\"let o of bitOptions\" class=\"form-check\">\r\n <input class=\"form-check-input\" type=\"radio\" formControlName=\"fbDemographicCorrect\" [value]=\"o.value\" [id]=\"'fbDemographicCorrect' + (o.value === null ? 'null' : o.value)\">\r\n <label class=\"form-check-label\" [for]=\"'fbDemographicCorrect' + (o.value === null ? 'null' : o.value)\">{{o.title}}</label>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"platform == 'Google'\" class=\"row mb-10\">\r\n <div class=\"col-md-6\">\r\n <label>Are the Ads Directing to the Correct Landing Page?</label>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div *ngFor=\"let o of bitOptions\" class=\"form-check\">\r\n <input class=\"form-check-input\" type=\"radio\" formControlName=\"googleAdsCorrectLandingPage\" [value]=\"o.value\" [id]=\"'googleAdsCorrectLandingPage' + (o.value === null ? 'null' : o.value)\">\r\n <label class=\"form-check-label\" [for]=\"'googleAdsCorrectLandingPage' + (o.value === null ? 'null' : o.value)\">{{o.title}}</label>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"platform == 'Google'\" class=\"row mb-10\">\r\n <div class=\"col-md-6\">\r\n <label>Are the Correct Keywords Being Used?</label>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div *ngFor=\"let o of bitOptions\" class=\"form-check\">\r\n <input class=\"form-check-input\" type=\"radio\" formControlName=\"googleKeywordsCorrect\" [value]=\"o.value\" [id]=\"'googleKeywordsCorrect' + (o.value === null ? 'null' : o.value)\">\r\n <label class=\"form-check-label\" [for]=\"'googleKeywordsCorrect' + (o.value === null ? 'null' : o.value)\">{{o.title}}</label>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"platform == 'Google'\" class=\"row mb-10\">\r\n <div class=\"col-md-6\">\r\n <label>Are the Negative Keywords / Keyword Lists Being Used?</label>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div *ngFor=\"let o of bitOptions\" class=\"form-check\">\r\n <input class=\"form-check-input\" type=\"radio\" formControlName=\"googleNegtiveKeywords\" [value]=\"o.value\" [id]=\"'googleNegtiveKeywords' + (o.value === null ? 'null' : o.value)\">\r\n <label class=\"form-check-label\" [for]=\"'googleNegtiveKeywords' + (o.value === null ? 'null' : o.value)\">{{o.title}}</label>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-10\">\r\n <div class=\"col-md-6\">\r\n <label *ngIf=\"platform == 'Google'\">Does the Landing Page Load Correctly?</label>\r\n <label *ngIf=\"platform == 'Facebook'\">If there is a Landing Page, Does it Load Correctly?</label>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div *ngFor=\"let o of bitOptions\" class=\"form-check\">\r\n <input class=\"form-check-input\" type=\"radio\" formControlName=\"lpLandingPageCorrect\" [value]=\"o.value\" [id]=\"'lpLandingPageCorrect' + (o.value === null ? 'null' : o.value)\">\r\n <label class=\"form-check-label\" [for]=\"'lpLandingPageCorrect' + (o.value === null ? 'null' : o.value)\">{{o.title}}</label>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-10\">\r\n <div class=\"col-md-6\">\r\n <label *ngIf=\"platform == 'Google'\">Is the Landing Page Load Time Excessively Long?</label>\r\n <label *ngIf=\"platform == 'Facebook'\">If there is an LP, is the Load Time Excessively Long?</label>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div *ngFor=\"let o of bitOptions\" class=\"form-check\">\r\n <input class=\"form-check-input\" type=\"radio\" formControlName=\"lpPageTimeLong\" [value]=\"o.value\" [id]=\"'lpPageTimeLong' + (o.value === null ? 'null' : o.value)\">\r\n <label class=\"form-check-label\" [for]=\"'lpPageTimeLong' + (o.value === null ? 'null' : o.value)\">{{o.title}}</label>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-10\">\r\n <div class=\"col-md-6\">\r\n <label *ngIf=\"platform == 'Google'\">Does the Landing Page Look Right on Mobile and Desktop?</label>\r\n <label *ngIf=\"platform == 'Facebook'\">If there is an LP, Does it Look Right on Mobile and Desktop?</label>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div *ngFor=\"let o of bitOptions\" class=\"form-check\">\r\n <input class=\"form-check-input\" type=\"radio\" formControlName=\"lpCrossPlatform\" [value]=\"o.value\" [id]=\"'lpCrossPlatform' + (o.value === null ? 'null' : o.value)\">\r\n <label class=\"form-check-label\" [for]=\"'lpCrossPlatform' + (o.value === null ? 'null' : o.value)\">{{o.title}}</label>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-10\">\r\n <div class=\"col-md-6\">\r\n <label *ngIf=\"platform == 'Google'\">Is the Correct Offer Being Shown on the Landing Page?</label>\r\n <label *ngIf=\"platform == 'Facebook'\">If there is an LP, is the Correct Offer Being Shown?</label>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div *ngFor=\"let o of bitOptions\" class=\"form-check\">\r\n <input class=\"form-check-input\" type=\"radio\" formControlName=\"lpCorrectOfferShown\" [value]=\"o.value\" [id]=\"'lpCorrectOfferShown' + (o.value === null ? 'null' : o.value)\">\r\n <label class=\"form-check-label\" [for]=\"'lpCorrectOfferShown' + (o.value === null ? 'null' : o.value)\">{{o.title}}</label>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-10\">\r\n <div class=\"col-md-12\">\r\n <label>Internal Notes (Optional)</label>\r\n <textarea rows=\"3\" class=\"form-control\" formControlName=\"internalNotes\" [ngClass]=\"{ 'is-invalid': submitted && f.internalNotes.errors }\"\r\n placeholder=\"Additional info about the audit, or special reasons for selecting No or N/A above\"></textarea>\r\n </div>\r\n </div>\r\n <div class=\"row mb-10\">\r\n <div class=\"col-md-12\">\r\n <label>External Notes (Optional but Recommended)</label>\r\n <textarea rows=\"5\" class=\"form-control\" formControlName=\"externalNotes\" [ngClass]=\"{ 'is-invalid': submitted && f.externalNotes.errors }\"\r\n placeholder=\"Notes to the Client About This Audit. Insights, changes, recommendations based on campaign performance, etc. (These are notes similar to what you would say on a Campaign Check)\"></textarea>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngIf=\"iCanWrite\" style=\"margin-top: 22px;\">\r\n <div class=\"col-md-12\">\r\n <button type=\"submit\" class=\"blue-button\">SAVE</button>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n</div>","import { Component, Input, OnInit } from '@angular/core';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { pipe, ReplaySubject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { ReportsApiService } from '../../reports/reports.apiservice';\r\nimport { CampaignsApiService } from '../campaigns.apiservice';\r\nimport { OrdersApiService } from '../../orders/orders.apiservice';\r\nimport { SubscriptionApiService } from '../../subscriptions/subscription.apiservice';\r\nimport { ICampaign } from '../../../core/models/campaigns.model';\r\nimport { IReportingPeriod } from '../../../core/models/reporting.models';\r\n\r\n@Component({\r\n selector: 'app-campaign-budget-audit',\r\n templateUrl: './campaign-budget-audit.component.html',\r\n styleUrls: ['./campaign-budget-audit.component.scss']\r\n})\r\nexport class CampaignBudgetAuditComponent implements OnInit {\r\n private destroyed$: ReplaySubject<boolean> = new ReplaySubject(1);\r\n\r\n // ordersData: Array<any> = [];\r\n productsData: Array<any> = [];\r\n aggregateData: Array<any> = [];\r\n budgetTotals: any = {\r\n date: '',\r\n cartDiscount: 0,\r\n refundAmount: 0,\r\n proratePrice: 0,\r\n couponAmount: 0,\r\n totalPrice: 0,\r\n cost: 0,\r\n netAmount: 0,\r\n percentDifference: 0\r\n };\r\n campaignData: ICampaign = {} as ICampaign;\r\n budgetForm: FormGroup;\r\n reportMetrics: any = {};\r\n reportPeriods: Array<IReportingPeriod> = [];\r\n DateStart: string | null = null;\r\n DateStop: string | null = null;\r\n selectedPeriod: string | null = null;\r\n platform = '';\r\n \r\n campaignId: string = '';\r\n @Input() set iCampaignId(id: string) {\r\n this.campaignId = id;\r\n }\r\n\r\n budgetColumns = [\r\n { title: 'Month', field: 'date', sortable: true, pipe: 'P_AppDateFormat', pipeArgs: ['MMM yyyy'] },\r\n { title: 'Paid', field: 'totalPrice', sortable: true, pipe: 'Currency', pipeArgs: ['USD', 'symbol', '1.2-2'] },\r\n { title: 'Spent', field: 'cost', sortable: true, pipe: 'Currency', pipeArgs: ['USD', 'symbol', '1.2-2'] },\r\n { title: 'Difference', field: 'netAmount', sortable: true, pipe: 'Currency', pipeArgs: ['USD', 'symbol', '1.2-2'], hoverValue: 'dailyBudget' },\r\n { title: ' ', field: '' },\r\n { title: 'Order Amount', field: 'proratePrice', sortable: true, pipe: 'Currency', pipeArgs: ['USD', 'symbol', '1.2-2'] },\r\n { title: 'Product Coupons', field: 'couponAmount', sortable: true, pipe: 'Currency', pipeArgs: ['USD', 'symbol', '1.2-2'] },\r\n { title: 'Cart Coupon Amount', field: 'cartDiscount', sortable: true, pipe: 'Currency', pipeArgs: ['USD', 'symbol', '1.2-2'] },\r\n { title: 'Order Refund Amount', field: 'refundAmount', sortable: true, pipe: 'Currency', pipeArgs: ['USD', 'symbol', '1.2-2'] },\r\n ];\r\n\r\n constructor(\r\n private ordersApiService: OrdersApiService,\r\n private reportsApiService: ReportsApiService,\r\n private subscriptionService: SubscriptionApiService,\r\n private campaignService: CampaignsApiService,\r\n private formBuilder: FormBuilder\r\n ) {\r\n this.budgetForm = this.formBuilder.group({\r\n key: [null, [Validators.required]],\r\n startDate: [null, [Validators.required]],\r\n stopDate: [null, [Validators.required]]\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n this.loadCampaignDetails(this.campaignId);\r\n }\r\n\r\n loadCampaignDetails(id: string): void {\r\n this.campaignService.getCampaignDetails(id)\r\n .pipe(takeUntil(this.destroyed$))\r\n .subscribe((response: any) => {\r\n this.campaignData = response.data;\r\n // console.log('Campaign Data:', this.campaignData);\r\n this.platform = this.campaignData.platform;\r\n this.loadReportPeriods();\r\n });\r\n }\r\n\r\n async loadReportPeriods() {\r\n await this.getSupportedReportingPeriods();\r\n\r\n this.DateStart = this.reportPeriods.find(f => f.key == 'Last 6 Months')?.startDate || '';\r\n this.DateStop = this.reportPeriods.find(f => f.key == 'Last 6 Months')?.stopDate || '';\r\n this.selectedPeriod = 'Last 6 Months';\r\n\r\n this.budgetForm.patchValue({\r\n key: this.selectedPeriod,\r\n startDate: this.DateStart,\r\n stopDate: this.DateStop,\r\n });\r\n\r\n // await this.getReportData();\r\n }\r\n\r\n getSupportedReportingPeriods(): Promise<void> {\r\n return new Promise((resolve) => {\r\n const today = new Date();\r\n const lastMonth = new Date(today.getFullYear(), today.getMonth() - 1, 1);\r\n const threeMonthsAgo = new Date(today.getFullYear(), today.getMonth() - 3, 1);\r\n const sixMonthsAgo = new Date(today.getFullYear(), today.getMonth() - 6, 1);\r\n const startOfThisMonth = new Date(today.getFullYear(), today.getMonth(), 1);\r\n const startOfThisYear = new Date(today.getFullYear(), 0, 1);\r\n const startOfLastYear = new Date(today.getFullYear() - 1, 0, 1);\r\n const endOfLastYear = new Date(today.getFullYear() - 1, 11, 31);\r\n\r\n this.reportPeriods.push({ key: 'Last Month', startDate: `${lastMonth.getFullYear()}-${String(lastMonth.getMonth() + 1).padStart(2, '0')}`, stopDate: `${startOfThisMonth.getFullYear()}-${String(startOfThisMonth.getMonth() + 1).padStart(2, '0')}` });\r\n this.reportPeriods.push({ key: 'This Month', startDate: `${startOfThisMonth.getFullYear()}-${String(startOfThisMonth.getMonth() + 1).padStart(2, '0')}`, stopDate: `${today.getFullYear()}-${String(today.getMonth() + 1).padStart(2, '0')}` });\r\n this.reportPeriods.push({ key: 'Last 3 Months', startDate: `${threeMonthsAgo.getFullYear()}-${String(threeMonthsAgo.getMonth() + 1).padStart(2, '0')}`, stopDate: `${lastMonth.getFullYear()}-${String(lastMonth.getMonth() + 1).padStart(2, '0')}` });\r\n this.reportPeriods.push({ key: 'Last 6 Months', startDate: `${sixMonthsAgo.getFullYear()}-${String(sixMonthsAgo.getMonth() + 1).padStart(2, '0')}`, stopDate: `${lastMonth.getFullYear()}-${String(lastMonth.getMonth() + 1).padStart(2, '0')}` });\r\n this.reportPeriods.push({ key: 'This Year', startDate: `${startOfThisYear.getFullYear()}-${String(startOfThisYear.getMonth() + 1).padStart(2, '0')}`, stopDate: `${today.getFullYear()}-${String(today.getMonth() + 1).padStart(2, '0')}` });\r\n this.reportPeriods.push({ key: 'Last Year', startDate: `${startOfLastYear.getFullYear()}-${String(startOfLastYear.getMonth() + 1).padStart(2, '0')}`, stopDate: `${endOfLastYear.getFullYear()}-${String(endOfLastYear.getMonth() + 1).padStart(2, '0')}` });\r\n\r\n resolve();\r\n });\r\n }\r\n\r\n onReportPeriodChange(selectedPeriod: string) {\r\n let period = this.reportPeriods.find(f => f.key == selectedPeriod);\r\n this.DateStart = period?.startDate as string;\r\n this.DateStop = period?.stopDate as string;\r\n\r\n this.budgetForm.patchValue({\r\n key: selectedPeriod,\r\n startDate: this.DateStart,\r\n stopDate: this.DateStop,\r\n });\r\n }\r\n get selectedReportPeriod(): string | undefined | null { return this.budgetForm?.controls?.key?.value; }\r\n // get datesReadonly(): boolean { return !(this.selectedReportPeriod == 'Custom'); }\r\n\r\n submitBudgetForm() {\r\n if (this.budgetForm.invalid) {\r\n return;\r\n }\r\n this.DateStart = this.budgetForm.get('startDate')?.value;\r\n this.DateStop = this.budgetForm.get('stopDate')?.value;\r\n this.selectedPeriod = this.budgetForm.get('key')?.value;\r\n\r\n this.loadOrders();\r\n this.getReportData();\r\n }\r\n\r\n async loadOrders(): Promise<void> {\r\n // this.ordersData = [];\r\n this.productsData = [];\r\n this.subscriptionService.getAllSubscriptions(this.campaignData.id, this.campaignData.clientId)\r\n .pipe(takeUntil(this.destroyed$))\r\n .subscribe((response: any) => {\r\n // console.log('Subscriptions', response);\r\n if (response.subscriptions) {\r\n response.subscriptions.forEach((subscription: any) => {\r\n this.subscriptionService.getSubscription(subscription.id)\r\n .pipe(takeUntil(this.destroyed$))\r\n .subscribe((response: any) => {\r\n // console.log('Subscription', response);\r\n if (response && response.subscription.orders) {\r\n response.subscription.orders.forEach((order: any) => {\r\n if (order.paid && order.isActive) {\r\n this.ordersApiService.getShopOrderDetails(order.id)\r\n .pipe(takeUntil(this.destroyed$))\r\n .subscribe((orderDetails: any) => {\r\n // this.ordersData.push(orderDetails.data);\r\n orderDetails.data.products.forEach((product: any) => {\r\n let productPush: any = {};\r\n if (product.type === 3) { \r\n productPush.subscriptionNumericId = subscription.numericId;\r\n productPush.subscriptionId = subscription.id;\r\n\r\n productPush.orderNumber = orderDetails.data.orderNumber;\r\n productPush.orderId = orderDetails.data.id;\r\n productPush.cartCoupon = orderDetails.data.cartCoupon;\r\n productPush.cartDiscount = orderDetails.data.cartDiscount || 0;\r\n productPush.refundAmount = orderDetails.data.refundAmount || 0;\r\n productPush.orderDate = orderDetails.data.orderDate;\r\n\r\n productPush.productName = product.display;\r\n productPush.proratePrice = product.proratePrice || 0;\r\n productPush.couponAmount = product.couponAmount || 0;\r\n productPush.totalPrice = product.proratePrice - product.couponAmount;\r\n productPush.couponCodes = product.couponCodes;\r\n \r\n if (this.campaignData.platform == \"Facebook\" && product.isFacebook) {\r\n this.productsData.push(productPush);\r\n } else if ((this.campaignData.platform == \"Google\" || this.campaignData.platform == \"National Add On\") && product.isGoogle) {\r\n this.productsData.push(productPush);\r\n }\r\n }\r\n });\r\n });\r\n }\r\n });\r\n }\r\n });\r\n });\r\n }\r\n });\r\n // console.log('Campaign', this.campaignData);\r\n // console.log('Orders', this.ordersData);\r\n // console.log('Products', this.productsData);\r\n }\r\n\r\n async getReportData(): Promise<void> {\r\n let reachCampaignID = this.campaignData.id;\r\n this.reportMetrics = [];\r\n\r\n if (this.campaignData.platform === 'Google' || this.campaignData.platform === 'Facebook') {\r\n let PerformanceMetrics = '7';\r\n\r\n if (reachCampaignID && this.campaignData.platform && this.DateStart && this.DateStop) {\r\n const startDate = new Date(this.DateStart + 'T00:00:00');\r\n const endDate = new Date(this.DateStop + 'T23:59:59');\r\n\r\n for (let date = new Date(startDate); date <= endDate;) {\r\n const monthStart = new Date(date.getFullYear(), date.getMonth(), 1);\r\n const monthEnd = new Date(date.getFullYear(), date.getMonth() + 1, 0);\r\n\r\n await this.reportsApiService.getRawCampaignsData(reachCampaignID, this.campaignData.platform, monthStart.toISOString().split('T')[0], monthEnd.toISOString().split('T')[0], PerformanceMetrics)\r\n .pipe(takeUntil(this.destroyed$))\r\n .toPromise()\r\n .then((data: any) => {\r\n // console.log('Raw Campaigns Data:', data);\r\n if (!data.ErrorMessage && data.Platform) {\r\n this.reportMetrics.push({\r\n noData: '',\r\n Platform: data.Platform.trim(),\r\n DateRange: data.GraphDateRange.trim(),\r\n Cost: data.Cost,\r\n Leads: data.Conversions,\r\n Month: `${monthEnd.getFullYear()}-${monthEnd.getMonth() + 1}-1`\r\n });\r\n } else {\r\n this.reportMetrics.push({\r\n noData: 'No data found for the selected campaign or date range.',\r\n Platform: '',\r\n DateRange: '',\r\n Cost: 0,\r\n Leads: 0,\r\n Month: `${monthEnd.getFullYear()}-${monthEnd.getMonth() + 1}-1`\r\n });\r\n }\r\n })\r\n .catch((error: any) => {\r\n console.error('Error fetching raw campaigns data:', error);\r\n this.reportMetrics.push({\r\n noData: 'Error fetching data.',\r\n Platform: '',\r\n DateRange: '',\r\n Cost: 0,\r\n Month: `${monthStart.getFullYear()}-${monthStart.getMonth() + 1}-1`\r\n });\r\n });\r\n\r\n date.setMonth(date.getMonth() + 1);\r\n date.setDate(1); // Reset the date to the first of the month\r\n }\r\n\r\n // console.log('Report Data:', this.reportMetrics);\r\n }\r\n } else {\r\n console.error('Invalid Platform:', this.campaignData.platform);\r\n }\r\n\r\n // this.aggregateBudgetData();\r\n this.aggregateDataByMonthYear();\r\n } \r\n\r\n aggregateDataByMonthYear() {\r\n const groupedProductsData: { [key: string]: any } = {};\r\n const groupedReportMetrics: { [key: string]: any } = {};\r\n this.aggregateData = [];\r\n\r\n const startDate = new Date(this.DateStart + 'T00:00:00');\r\n const endDate = new Date(this.DateStop + 'T23:59:59');\r\n endDate.setMonth(endDate.getMonth() + 1);\r\n endDate.setDate(0);\r\n\r\n this.productsData.forEach(product => {\r\n const date = new Date(product.orderDate);\r\n const monthYear = `${date.getFullYear()}-${date.getMonth() + 1}`;\r\n\r\n if (date >= startDate && date <= endDate) {\r\n if (!groupedProductsData[monthYear]) {\r\n groupedProductsData[monthYear] = {\r\n monthYear,\r\n cartDiscount: 0,\r\n refundAmount: 0,\r\n proratePrice: 0,\r\n couponAmount: 0,\r\n totalPrice: 0,\r\n cost: 0,\r\n netAmount: 0\r\n };\r\n }\r\n\r\n groupedProductsData[monthYear].cartDiscount += product.cartDiscount;\r\n groupedProductsData[monthYear].refundAmount += product.refundAmount;\r\n groupedProductsData[monthYear].proratePrice += product.proratePrice;\r\n groupedProductsData[monthYear].couponAmount += product.couponAmount;\r\n groupedProductsData[monthYear].totalPrice += product.totalPrice;\r\n // groupedProductsData[monthYear].date = date.toISOString();\r\n }\r\n });\r\n\r\n this.reportMetrics.forEach((report: any) => {\r\n const date = new Date(report.Month);\r\n const monthYear = `${date.getFullYear()}-${date.getMonth() + 1}`;\r\n\r\n if (date >= startDate && date <= endDate) {\r\n if (!groupedReportMetrics[monthYear]) {\r\n groupedReportMetrics[monthYear] = {\r\n monthYear,\r\n cost: 0,\r\n netAmount: 0,\r\n percentDifference: 0\r\n };\r\n }\r\n\r\n groupedReportMetrics[monthYear].date = date.toISOString();\r\n groupedReportMetrics[monthYear].cost = report.Cost;\r\n groupedReportMetrics[monthYear].netAmount = report.Cost - (groupedProductsData[monthYear]?.totalPrice || 0);\r\n groupedReportMetrics[monthYear].percentDifference = groupedReportMetrics[monthYear].netAmount / (groupedProductsData[monthYear]?.totalPrice || 1);\r\n if (!(groupedReportMetrics[monthYear].percentDifference < 0.03 && groupedReportMetrics[monthYear].percentDifference > -0.03)) {\r\n groupedReportMetrics[monthYear].statusColor = 'red';\r\n }\r\n if (date.getMonth() === new Date().getMonth() && date.getFullYear() === new Date().getFullYear()) {\r\n const daysInMonth = new Date(date.getFullYear(), date.getMonth() + 1, 0).getDate();\r\n const today = new Date().getDate();\r\n const daysLeftInMonth = daysInMonth - today + 1; // Include Today\r\n groupedReportMetrics[monthYear].dailyBudget = ((groupedProductsData[monthYear]?.totalPrice - report.Cost) / daysLeftInMonth) || 0;\r\n } else {\r\n groupedReportMetrics[monthYear].dailyBudget = null;\r\n }\r\n \r\n }\r\n });\r\n\r\n const allMonthYears = new Set([...Object.keys(groupedProductsData), ...Object.keys(groupedReportMetrics)]);\r\n\r\n allMonthYears.forEach(monthYear => {\r\n this.aggregateData.push({\r\n ...groupedProductsData[monthYear],\r\n ...groupedReportMetrics[monthYear],\r\n monthYear\r\n });\r\n });\r\n\r\n this.aggregateData.sort((b, a) => {\r\n const dateA = new Date(a.date || `${a.monthYear}-01`);\r\n const dateB = new Date(b.date || `${b.monthYear}-01`);\r\n return dateA.getTime() - dateB.getTime();\r\n });\r\n\r\n this.budgetTotals = this.getTotals(this.aggregateData);\r\n this.budgetTotals.percentDifference = (this.budgetTotals.netAmount / this.budgetTotals.totalPrice) || 0;\r\n // console.log('Aggregate Data', this.aggregateData);\r\n // console.log('Budget Totals', this.budgetTotals);\r\n }\r\n\r\n getTotals(data: Array<any>): any {\r\n const totals: any = {};\r\n\r\n data.forEach(item => {\r\n Object.keys(item).forEach(key => {\r\n if (typeof item[key] === 'number') {\r\n if (!totals[key]) {\r\n totals[key] = 0;\r\n }\r\n totals[key] += item[key];\r\n }\r\n });\r\n });\r\n\r\n return totals;\r\n }\r\n}\r\n","<div class=\"container-fluid\">\r\n <div class=\"row budgetAudit\"> \r\n <div class=\"col\">\r\n <div fxLayout=\"column\" fxLayoutAlign=\"center center\">\r\n <h3 style=\"padding-top: 18px;\">Budget Audit</h3>\r\n <div class=\"budgetDate\">\r\n <div class=\"\" style=\"padding: 18px;\">\r\n <form [formGroup]=\"budgetForm\" (ngSubmit)=\"submitBudgetForm()\">\r\n <div>\r\n <div class=\"formGroup dateSelect\">\r\n <div class=\"form dropdown\">\r\n <select class=\"form-select mb-2\" aria-label=\"Please select period.\" (change)=\"onReportPeriodChange(t.value)\" #t>\r\n <option selected disabled>Please select period.</option>\r\n <option type=\"button\" ngbDropdownItem *ngFor=\"let p of reportPeriods\" [selected]=\"selectedPeriod==p.key\">\r\n {{ p.key }}\r\n </option>\r\n </select>\r\n </div>\r\n <div class=\"dateRange\">\r\n <div class=\"form dateInput\">\r\n <label class=\"sr-only\" for=\"startDate\">Start</label>\r\n <input type=\"month\" formControlName=\"startDate\"\r\n class=\"form-control form-date date-custom\" [ngClass]=\"{ 'is-invalid': budgetForm.controls.startDate.errors }\" />\r\n <div *ngIf=\"budgetForm.controls.startDate.errors\" class=\"invalid-feedback\">\r\n <div *ngIf=\"budgetForm.controls.startDate.errors.required\">Please select period.</div>\r\n </div>\r\n </div>\r\n \r\n <div class=\"form dateInput\">\r\n <span style=\"margin: 0 6px;\">—</span>\r\n </div>\r\n \r\n <div class=\"form dateInput\">\r\n <label class=\"sr-only\" for=\"stopDate\">End</label>\r\n <input type=\"month\" formControlName=\"stopDate\"\r\n class=\"form-control form-date date-custom\" [ngClass]=\"{ 'is-invalid': budgetForm.controls.stopDate.errors }\" />\r\n <div *ngIf=\"budgetForm.controls.stopDate.errors\" class=\"invalid-feedback\">\r\n <div *ngIf=\"budgetForm.controls.stopDate.errors.required\">Please select period.</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"formGroup\">\r\n <div class=\"form submit\">\r\n <button type=\"submit\" class=\"btn btn-primary mb-2\">Update</button>\r\n </div>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n <div *ngIf=\"aggregateData.length > 0\" class=\"budgetTable\">\r\n <app-report-datatable \r\n [iSortColumn]=\"'monthYear'\"\r\n [iSortDirection]=\"'desc'\"\r\n [iColumns]=\"budgetColumns\" \r\n [iData$]=\"aggregateData\"\r\n [iTotalCount]=\"aggregateData.length\"\r\n [iTotalData]=\"budgetTotals\"\r\n [iShowFooter]=\"false\"\r\n [iPageSize]=\"100\"\r\n [iShowSearch]=\"false\"\r\n [iShowPagination]=\"false\"\r\n [iReportTitle]=\"'Budget Audit By Month'\"\r\n >\r\n </app-report-datatable>\r\n\r\n <div *ngIf=\"budgetTotals.cost > 0\" class=\"budgetTotals\">\r\n <div class=\"budgetTotal\">\r\n <div class=\"budgetTotalLabel\">Total Paid</div>\r\n <div class=\"budgetTotalValue\">{{ budgetTotals.totalPrice | currency:'USD' }}</div>\r\n </div>\r\n <div class=\"budgetTotal\">\r\n <div class=\"budgetTotalLabel\">Total Spent</div>\r\n <div class=\"budgetTotalValue\">{{ budgetTotals.cost | currency:'USD' }}</div>\r\n </div>\r\n <div class=\"budgetTotal\">\r\n <div class=\"budgetTotalLabel\">Total Difference</div>\r\n <div class=\"budgetTotalValue\">{{ budgetTotals.netAmount | currency:'USD' }}</div>\r\n </div>\r\n <div class=\"budgetTotal\">\r\n <div class=\"budgetTotalLabel\">Total % Difference</div>\r\n <div class=\"budgetTotalValue\">{{ budgetTotals.percentDifference | percent:'1.2-2' }}</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>","import { ReplaySubject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { AppService } from '../../../store/app.service';\r\nimport { TasksService } from '../../tasks/tasks.service';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { ILead } from '../../../core/models/lead.models';\r\nimport { ITask } from '../../../core/models/tasks.models';\r\nimport { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { CampaignsApiService } from '../campaigns.apiservice';\r\nimport { TasksApiService } from '../../tasks/tasks.apiservice';\r\nimport { LeadsApiService } from '../../leads/leads.apiservice';\r\nimport { IPermission } from '../../../core/models/auth.models';\r\nimport { getRolesForPage } from '../../../core/helpers/utility';\r\nimport { ICampaign } from '../../../core/models/campaigns.model';\r\nimport { OrdersApiService } from '../../orders/orders.apiservice';\r\nimport { ICampaignCheck } from '../../../core/models/campaigns.model';\r\nimport { DataFeedService } from '../../../shared/api/datafeed.service';\r\nimport { UtilityService } from '../../../core/helpers/utility.service';\r\nimport { IReportingPeriod } from '../../../core/models/reporting.models';\r\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\r\nimport { SubscriptionApiService } from '../../subscriptions/subscription.apiservice';\r\nimport { CAMPAIGN_STAGES, PAGE_NAMES, ROLES, ROLES_TYPE } from '../../../core/helpers/constants';\r\nimport { IColumn, LoadDataFromServer } from '../../../shared/components/datatable/datatable.model';\r\nimport { AddCampaignCheckModal } from '../../../shared/modals/add-campaign-check/add-campaigncheck.component';\r\n\r\n\r\n@Component({\r\n selector: 'app-campaign-details',\r\n templateUrl: './campaign-details.component.html',\r\n styleUrls: ['./campaign-details.component.scss']\r\n})\r\n\r\nexport class CampaignDetailsComponent implements OnInit, OnDestroy {\r\n\r\n orderColumns = [\r\n { title: 'ID', field: 'numericId', sortable: true, searchable: true },\r\n { title: 'From', field: 'startDate', sortable: true, searchable: true },\r\n { title: 'To', field: 'endDate', sortable: true, searchable: true },\r\n { title: 'Amount', field: 'amount', sortable: true, searchable: true, pipe: 'Currency', pipeArgs: ['USD', 'symbol', '1.0-2'] },\r\n { title: 'Status', field: 'status', sortable: true, searchable: true, type: 'html' },\r\n { title: 'Subscription ID', field: 'subscriptionNumericId', sortable: true, searchable: true, anchorLink: true, anchorType: 'subscription', anchorParamsField: 'subscriptionId' },\r\n { title: 'Campaign', field: 'campaignName', sortable: true, searchable: true, pipe: 'cleanupCampaign' },\r\n { title: 'Generated On', field: 'generatedOn', sortable: true, searchable: true, pipe: 'P_AppDateFormat', pipeArgs: ['YYYY-MM-DD HH:mm'] },\r\n ]\r\n\r\n columns = [\r\n { title: 'Received At', field: 'createdAt', sortable: true, searchable: true, pipe: 'P_AppDateFormat', pipeArgs: ['MM/DD/YYYY HH:mm', true] },\r\n { title: 'First Name', field: 'firstName', sortable: true, searchable: true },\r\n { title: 'Last Name', field: 'lastName', sortable: true, searchable: true },\r\n { title: 'Email', field: 'email', sortable: true, searchable: true },\r\n { title: 'Phone', field: 'phone', sortable: true, searchable: true },\r\n { title: 'Campaign', field: 'campaignName', sortable: true, searchable: true },\r\n { title: 'Referal Source', field: 'referralSource', sortable: true, searchable: true },\r\n ]\r\n\r\n active: number = 1;\r\n dataTotalCount: number = 0;\r\n leadsTotalCount: number = 0;\r\n\r\n ordersData: Array<any> = [];\r\n mostRecentOrder: any = {};\r\n\r\n userId: string = '';\r\n\r\n savedSearchId!: string;\r\n \r\n doWhat: IPermission = {} as IPermission;\r\n campaignData: ICampaign = {} as ICampaign;\r\n\r\n isAdmin: boolean = false;\r\n isExternal: boolean = false;\r\n showTasks: boolean = true;\r\n isLoaded: boolean = false;\r\n showOnlyMyTasks: boolean = true;\r\n showCompletedTasks: boolean = false;\r\n\r\n private loadEvent!: LoadDataFromServer;\r\n \r\n \r\n private destroyed$: ReplaySubject<boolean> = new ReplaySubject(1);\r\n\r\n public CAMPAIGN_STAGES = CAMPAIGN_STAGES;\r\n public ROLES = ROLES;\r\n public ROLES_TYPE = ROLES_TYPE;\r\n\r\n columnsTasks: Array<IColumn> = new Array<IColumn>();\r\n completedTasksColumns: Array<IColumn> = new Array<IColumn>();\r\n subscriptions: Array<any> = new Array<any>();\r\n tasksData: Array<ITask> = new Array<ITask>();\r\n permTasksData: Array<ITask> = new Array<ITask>();\r\n completedTasksData: Array<ITask> = new Array<ITask>();\r\n leadsData: Array<ILead> = new Array<ILead>();\r\n permLeadsData: Array<ILead> = new Array<ILead>();\r\n\r\n roleOptions: any = {};\r\n \r\n userRoles: Array<number> = [];\r\n \r\n reportingPeriods: Array<IReportingPeriod> = [];\r\n\r\n iframeUrl: SafeResourceUrl = this.sanitizer.bypassSecurityTrustResourceUrl('');\r\n\r\n constructor(\r\n private appService: AppService,\r\n private sanitizer: DomSanitizer,\r\n public uService: UtilityService,\r\n private route: ActivatedRoute,\r\n private tasksService: TasksService,\r\n private taskApiService: TasksApiService,\r\n private modalService: NgbModal,\r\n private campaignService: CampaignsApiService,\r\n private dataFeedService: DataFeedService,\r\n private leadsApi: LeadsApiService,\r\n private ordersApiService: OrdersApiService,\r\n private subscriptionService: SubscriptionApiService,\r\n public router: Router) {\r\n\r\n this.userRoles = [...this.uService.getUserRoles()];\r\n\r\n this.columnsTasks.push({ title: 'Title', field: 'title', sortable: true, searchable: true } as IColumn);\r\n this.columnsTasks.push({ title: 'Client', field: 'clientName', sortable: true, searchable: true, anchorLink: true, anchorType: 'client', anchorParamsField: 'clientId' } as IColumn);\r\n this.columnsTasks.push({ title: 'Campaign', field: 'campaignName', sortable: true, searchable: true, anchorLink: true, anchorType: 'campaign', anchorParamsField: 'campaignId' } as IColumn);\r\n this.columnsTasks.push({ title: 'Due Date', field: 'dueDate', sortable: true, pipe: 'P_AppDateFormat', pipeArgs: ['MM/DD/YYYY'] } as IColumn);\r\n this.columnsTasks.push({ title: 'Assigned User', field: 'assignedUserName', sortable: true, visible: (this.userRoles.includes(ROLES.Admin.Code) || this.userRoles.includes(ROLES.TechServices.Code) || this.userRoles.includes(ROLES.DMS.Code) || this.userRoles.includes(ROLES.SalesRep.Code)) } as IColumn);\r\n\r\n this.completedTasksColumns.push({ title: 'Title', field: 'title', sortable: true, searchable: true } as IColumn);\r\n this.completedTasksColumns.push({ title: 'Client', field: 'clientName', sortable: true, searchable: true, anchorLink: true, anchorType: 'client', anchorParamsField: 'clientId' } as IColumn);\r\n this.completedTasksColumns.push({ title: 'Campaign', field: 'campaignName', sortable: true, searchable: true, anchorLink: true, anchorType: 'campaign', anchorParamsField: 'campaignId' } as IColumn);\r\n this.completedTasksColumns.push({ title: 'Completed On', field: 'completedOn', sortable: true, pipe: 'P_AppDateFormat', pipeArgs: ['YYYY/MM/DD HH:mm', true] } as IColumn);\r\n this.completedTasksColumns.push({ title: 'Assigned User', field: 'assignedUserName', sortable: true, visible: (this.userRoles.includes(ROLES.Admin.Code) || this.userRoles.includes(ROLES.TechServices.Code) || this.userRoles.includes(ROLES.DMS.Code) || this.userRoles.includes(ROLES.SalesRep.Code)) } as IColumn);\r\n }\r\n\r\n ngOnInit(): void {\r\n this.appService.setPageTitle$('Campaign');\r\n\r\n this.appService.getActiveUser$()\r\n .pipe(takeUntil(this.destroyed$))\r\n .subscribe(u => {\r\n if (u.id !== undefined) {\r\n this.userId = u.id;\r\n }\r\n this.isExternal = u.type == ROLES_TYPE.External;\r\n var r = getRolesForPage(u.roles, PAGE_NAMES.Campaigns);\r\n this.isAdmin = r.isAdmin;\r\n if (this.isAdmin) {\r\n this.showOnlyMyTasks = false;\r\n }\r\n if (r.options) {\r\n this.roleOptions = JSON.parse(r.options!);\r\n }\r\n });\r\n\r\n let id = this.route.snapshot.paramMap.get('id');\r\n if (id) {\r\n this.loadCampaignDetails(id);\r\n }\r\n\r\n this.configureTasksService();\r\n }\r\n\r\n loadCampaignDetails(id: string): void {\r\n this.campaignService.getCampaignDetails(id)\r\n .pipe(takeUntil(this.destroyed$))\r\n .subscribe((response: any) => {\r\n this.campaignData = response.data;\r\n this.iframeUrl = this.sanitizer.bypassSecurityTrustResourceUrl(`https://dms.reach.marketing/dmm/kpis.php?campaignID=${this.campaignData.id}&platform=${this.campaignData.platform}`);\r\n if (this.campaignData.subscriptionActive && !this.isExternal) {\r\n this.loadMostRecentOrder();\r\n } else {\r\n this.mostRecentOrder.status = '<label style=\"color:red\">No Active Subscription</label>';\r\n }\r\n });\r\n }\r\n\r\n loadMostRecentOrder(): void {\r\n this.subscriptionService.getAllSubscriptions(this.campaignData.id, this.campaignData.clientId)\r\n .pipe(takeUntil(this.destroyed$))\r\n .subscribe((response: any) => {\r\n if (response.subscriptions) {\r\n const subscriptions = response.subscriptions.map((x: any) => {\r\n x.dms = x.campaigns[0].dms;\r\n x.salesrep = x.campaigns[0].salesRep;\r\n return x;\r\n });\r\n const activeSubscription: any = subscriptions.find((sub: any) => sub.status === 'Active');\r\n if (activeSubscription) {\r\n this.subscriptionService.getSubscription(activeSubscription.id)\r\n .pipe(takeUntil(this.destroyed$))\r\n .subscribe(\r\n (response: any) => {\r\n if (response && response.subscription.orders) {\r\n const sortedOrders: Array<{ generatedOn: string; paid: boolean; isActive: boolean; refundText: string; status?: string }> = response.subscription.orders.sort((a: { generatedOn: string }, b: { generatedOn: string }) => new Date(b.generatedOn).getTime() - new Date(a.generatedOn).getTime());\r\n \r\n this.mostRecentOrder = sortedOrders[0];\r\n this.mostRecentOrder.status = this.mostRecentOrder.paid && this.mostRecentOrder.isActive ? '<label style=\"color: green !important;\">Paid ' + this.mostRecentOrder.refundText + '</label>' : (this.mostRecentOrder.paid && !this.mostRecentOrder.isActive ? '<label style=\"color:red\">Voided</label>' : (!this.mostRecentOrder.paid && this.mostRecentOrder.isActive ? '<label style=\"color:red\">Not Paid</label>' : '<label style=\"color:red\">Canceled</label>'));\r\n }\r\n });\r\n }\r\n }\r\n });\r\n }\r\n\r\n loadTasksData(id: string): void {\r\n this.taskApiService.getTasksByCampaign(id)\r\n .pipe(takeUntil(this.destroyed$))\r\n .subscribe((response: any) => {\r\n this.permTasksData = response.data;\r\n this.tasksData = this.permTasksData.filter((x: ITask) => (x.isCompleted === null || x.isCompleted === false) && (this.showOnlyMyTasks ? x.assignedUserId.includes(this.userId) : true));\r\n this.completedTasksData = this.permTasksData.filter((x: ITask) => (x.isCompleted && x.isCompleted === true) && (this.showOnlyMyTasks ? x.assignedUserId.includes(this.userId) : true));\r\n });\r\n }\r\n\r\n filterLeads() {\r\n this.doWhat = this.appService.getUserRolesForPage(PAGE_NAMES.Leads);\r\n this.leadsApi.getAllLeads({search: this.campaignData.campaignId})\r\n .pipe(takeUntil(this.destroyed$))\r\n .subscribe((response: any) => {\r\n if (response.leads) {\r\n this.permLeadsData = [...response.leads].filter((x: ILead) => x.campaignId == this.campaignData.id);\r\n this.leadsData = this.permLeadsData;\r\n if (!this.isLoaded) {\r\n this.leadsTotalCount = this.leadsData.length;\r\n this.isLoaded = true;\r\n }\r\n }\r\n });\r\n }\r\n\r\n configureTasksService() {\r\n this.tasksService.onSave.pipe(takeUntil(this.destroyed$))\r\n .subscribe((v: any) => {\r\n if (v) {\r\n this.refreshTasksData();\r\n }\r\n });\r\n this.tasksService.onDelete.pipe(takeUntil(this.destroyed$))\r\n .subscribe((v: any) => {\r\n if (v) {\r\n this.refreshTasksData();\r\n }\r\n });\r\n this.tasksService.onMarkAsComplete.pipe(takeUntil(this.destroyed$))\r\n .subscribe((v: any) => {\r\n if (v) {\r\n this.refreshTasksData();\r\n }\r\n });\r\n this.tasksService.onReloadTaskData.pipe(takeUntil(this.destroyed$))\r\n .subscribe((v: any) => {\r\n if (v) {\r\n this.refreshTasksData();\r\n }\r\n });\r\n }\r\n\r\n refreshTasksData(): void {\r\n let id = this.route.snapshot.paramMap.get('id');\r\n if (id) {\r\n this.loadTasksData(id);\r\n }\r\n }\r\n\r\n ngAfterViewInit() {}\r\n\r\n onTaskRowClick(evt: any) {\r\n this.tasksService.openEditTaskModal(evt, this.isAdmin || this.roleOptions.tasks.canEdit, this.isAdmin || this.roleOptions.tasks.canDelete);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroyed$.next(true);\r\n this.destroyed$.complete();\r\n }\r\n\r\n onAddTask() {\r\n this.tasksService.openEditTaskModal({id: null, clientId: this.campaignData.clientId, campaignId: this.campaignData.id}, this.isAdmin || this.roleOptions.tasks.canEdit, this.isAdmin || this.roleOptions.tasks.canDelete);\r\n }\r\n\r\n onLoadingData(event: LoadDataFromServer) {\r\n this.loadEvent = event;\r\n if ((event.search != \"\") && (event.search != null)) {\r\n this.leadsData = this.permLeadsData.filter((x: ILead) => x.firstName.toLowerCase().includes(event.search.toLowerCase()) || x.lastName.toLowerCase().includes(event.search.toLowerCase()) || x.email.toLowerCase().includes(event.search.toLowerCase()) || x.phone.toLowerCase().includes(event.search.toLowerCase()) || x.campaignName.toLowerCase().includes(event.search.toLowerCase()) || x.referralSource.toLowerCase().includes(event.search.toLowerCase()));\r\n this.leadsTotalCount = this.leadsData.length;\r\n this.leadsData = this.leadsData.slice((event.pageNumber - 1) * Number(event.pageSize), event.pageNumber * Number(event.pageSize));\r\n }\r\n else {\r\n this.leadsData = this.permLeadsData.slice((event.pageNumber - 1) * Number(event.pageSize), event.pageNumber * Number(event.pageSize));\r\n this.leadsTotalCount = this.permLeadsData.length;\r\n }\r\n }\r\n\r\n onDelete(event: any) {\r\n this.leadsApi.deleteLead(event)\r\n .pipe(takeUntil(this.destroyed$))\r\n .subscribe((response: any) => {\r\n this.appService.fetchAllLeads({\r\n SavedSearchId: this.savedSearchId,\r\n ...this.loadEvent\r\n });\r\n })\r\n }\r\n\r\n getRowLink(row: any) {\r\n return `/pages/lead-details/${row.id}`;\r\n }\r\n \r\n loadOrders(): void {\r\n this.ordersData = [];\r\n this.subscriptionService.getAllSubscriptions(this.campaignData.id, this.campaignData.clientId)\r\n .pipe(takeUntil(this.destroyed$))\r\n .subscribe((response: any) => {\r\n if (response.subscriptions) {\r\n response.subscriptions.forEach((subscription: any) => {\r\n this.subscriptionService.getSubscription(subscription.id)\r\n .pipe(takeUntil(this.destroyed$))\r\n .subscribe((response: any) => {\r\n if (response && response.subscription.orders) {\r\n response.subscription.orders.forEach((order: any) => {\r\n order.status = order.paid && order.isActive ? '<label style=\"color:green\">Paid ' + order.refundText + '</label>' : (order.paid && !order.isActive ? '<label style=\"color:red\">Voided</label>' : (!order.paid && order.isActive ? '<label style=\"color:red\">Not Paid</label>' : '<label style=\"color:red\">Canceled</label>'));\r\n order.subscriptionNumericId = subscription.numericId;\r\n order.subscriptionId = subscription.id;\r\n order.campaignName = subscription.campaigns[0].campaignName;\r\n this.ordersData.push(order);\r\n });\r\n this.dataTotalCount = this.ordersData.length;\r\n }\r\n });\r\n });\r\n }\r\n });\r\n }\r\n\r\n onClick(event: any) {\r\n this.router.navigate(['/pages/orders/details', event.id]);\r\n }\r\n\r\n changeShowTasks() {\r\n if (this.showCompletedTasks) {\r\n this.showTasks = true;\r\n this.showCompletedTasks = false;\r\n }\r\n }\r\n \r\n changeShowCompletedTasks() {\r\n if (this.showTasks) {\r\n this.completedTasksData = this.permTasksData.filter((x: ITask) => (x.isCompleted && x.isCompleted === true) && (this.showOnlyMyTasks ? x.assignedUserId.includes(this.userId) : true));\r\n this.showTasks = false;\r\n this.showCompletedTasks = true;\r\n }\r\n }\r\n\r\n onShowMyTasksChange() {\r\n this.refreshTasksData();\r\n }\r\n\r\n onTasksTabClick(): void {\r\n this.refreshTasksData();\r\n }\r\n\r\n onCampaignCheck(){\r\n const dialogRef = this.modalService.open(AddCampaignCheckModal);\r\n dialogRef.componentInstance.iActiveUserExternal = this.isExternal;\r\n dialogRef.componentInstance.isIsAdmin = this.isAdmin;\r\n dialogRef.componentInstance.iCampaignId = this.campaignData.id;\r\n dialogRef.componentInstance.iType = 1;\r\n dialogRef.componentInstance.isGooglePlatform = this.campaignData.platform == 'Google' ? true : false;\r\n\r\n const dialogSubmitSubscription = dialogRef.componentInstance.oSaveClicked.subscribe((r: ICampaignCheck) => {\r\n\r\n this.dataFeedService.saveCampaignCheck(r)\r\n .pipe(takeUntil(this.destroyed$))\r\n .subscribe((response: any) => {\r\n dialogRef.dismiss();\r\n this.refreshTasksData();\r\n this.appService.fetchAllNotes(this.campaignData.id, 1);\r\n })\r\n dialogSubmitSubscription.unsubscribe();\r\n })\r\n }\r\n\r\n}\r\n","<div class=\"row\">\n <div class=\"col-md-12\">\n <div class=\"card\" style=\"background-color: #e9e9ef !important;\">\n <div class=\"card-body\">\n <div class=\"details_top\">\n <h2 style=\"text-align: center;\">{{ campaignData.name }}</h2>\n <h3 style=\"text-align: center;\">{{ campaignData.platform }}</h3>\n <h4 style=\"text-align: center;\">\n <a style=\"color: blue;\" [routerLink]=\"['/pages/client-details', campaignData?.client?.id]\" class=\"\" title=\"view client details\">{{campaignData?.client?.firstName}} {{campaignData?.client?.lastName}}</a>\n </h4>\n <div class=\"row row-gap-4 d-flex align-items-stretch\" style=\"margin-top: 25px;\">\n <div class=\"location_info col-12 \" [ngClass]=\"(isExternal) ? 'col-xl-4' : 'col-xl-3'\">\n <div class=\"card details-card\">\n <h5 class=\"card-title\">Location Info:</h5>\n <div class=\"card-body\">\n <p><strong>Address:</strong><br />\n {{ campaignData?.street }}\n <ng-container *ngIf=\"campaignData?.city || campaignData?.state || campaignData?.zipcode\">\n <br />\n </ng-container>\n {{ campaignData?.city }}<ng-container *ngIf=\"campaignData?.city && campaignData?.state\">, </ng-container>{{ campaignData?.state }} {{ campaignData?.zipcode }}\n </p>\n <p><strong>Email:</strong> {{campaignData?.locationEmail}}</p>\n <p><strong>Phone:</strong> {{campaignData?.locationPhone}}</p>\n <p> <span *ngIf=\"campaignData?.crmName\"><strong>CRM:</strong> {{campaignData?.crmName}}<br /></span>\n <span *ngIf=\"campaignData?.crmId\"><strong>CRM ID:</strong> {{campaignData?.crmId}}</span></p>\n </div>\n </div>\n </div>\n <div class=\"col-12 \" [ngClass]=\"(isExternal) ? 'col-xl-4' : 'col-xl-3'\">\n <div class=\"card details-card\">\n <h5 class=\"card-title\">Campaign Info:</h5>\n <div class=\"card-body\">\n <p><strong>DMS:</strong> {{ campaignData?.dmsName }}</p>\n <p><strong>Stage:</strong> {{ campaignData?.stageId | P_CampaignStageTitle }}</p>\n <p><strong>Active Subscription? </strong> {{ campaignData.subscriptionActive | P_Boolean }}</p>\n <div *ngIf=\"!isExternal && (mostRecentOrder !== {})\" style=\"display: flex; flex-direction: row;\"><strong>Most Recent Order Status: </strong>\n <p [innerHTML]=\"mostRecentOrder.status\" style=\"padding-left: 3.5px;\"></div>\n <div style=\"margin-bottom: 10px;\" *ngIf=\"!isExternal\" >\n <h6>Ad Account Info ({{ campaignData.platform }}):</h6>\n <div id=\"adAccounts\" *ngIf=\"campaignData?.campaignAdAccounts?.length != 0\" style=\"width: 100%;\">\n <div class=\"ad-accounts-header\">\n <div class=\"ad-account-column\"><strong>Ad Account ID</strong></div>\n <div class=\"ad-account-column\"><strong>Ad Campaign ID</strong></div>\n <div class=\"ad-account-column\"><strong>Ad Label</strong></div>\n </div>\n \n <div *ngFor=\"let ad of campaignData.campaignAdAccounts\" class=\"ad-accounts-row\">\n <div class=\"ad-account-column\">{{ad.platformAccountID}}</div>\n <div class=\"ad-account-column\">{{ad.platformCampaignID}}</div>\n <div class=\"ad-account-column\">{{ad.adLabel}}</div>\n </div>\n </div>\n </div>\n <div *ngIf=\"campaignData?.employees?.length !== 0\" style=\"padding-bottom: 15px;\">\n <h6>Employee Users:</h6>\n <span *ngFor=\"let e of campaignData.employees; let last = last\">\n {{ e.firstName }} {{ e.lastName }}<ng-container *ngIf=\"!last\">, </ng-container>\n </span>\n </div>\n </div>\n </div>\n </div>\n <div class=\"col-12 \" [ngClass]=\"(isExternal) ? 'col-xl-4' : 'col-xl-3'\">\n <div class=\"card details-card\">\n <h5 class=\"card-title\">Campaign KPIs:</h5>\n <div class=\"card-body\">\n <iframe [src]=\"iframeUrl\" width=\"600\" height=\"260\"></iframe>\n </div>\n </div>\n </div>\n <div *ngIf=\"!isExternal\" class=\"col-12 col-xl-3\">\n <div class=\"card details-card\">\n <h5 class=\"card-title\">Internal Info:</h5>\n <div class=\"card-body newlines\">\n <p><strong>Campaign ID:</strong> {{ campaignData?.campaignId }}</p>\n <p><strong>Campaign Notes:</strong><br *ngIf=\"campaignData?.opportunityNotes\" />\n {{ campaignData.opportunityNotes }}</p>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"dv-custom-navs\">\n <ul ngbNav #nav=\"ngbNav\" [(activeId)]=\"active\" class=\"nav-tabs\" style=\"display: flex; flex-direction: row; flex-wrap: nowrap;\">\n <li [ngbNavItem]=\"1\" [ngStyle]=\"{'z-index': (active === 1) ? '5' : '0'}\" *ngIf=\"isAdmin || (roleOptions.notes && roleOptions.notes.canRead)\">\n <a ngbNavLink>\n <i-feather name=\"paperclip\"></i-feather><label>NOTES</label>\n </a>\n <ng-template ngbNavContent>\n <app-notes [iCanDelete]=\"isAdmin || (roleOptions.notes && roleOptions.notes.canDelete)\"\n [iCanWrite]=\"isAdmin || (roleOptions.notes && roleOptions.notes.canWrite)\" [iIsAdmin]=\"isAdmin\"\n [iIsExternal]=\"isExternal\" [iHideActionColName]=\"true\" [isGooglePlatform] = \"campaignData.platform == 'Google'\" [iParentId]=\"campaignData.id\" [iType]=\"1\">\n </app-notes>\n </ng-template>\n </li>\n <li style=\"left: -7.5px;\" [ngStyle]=\"{'z-index': (active === 2) ? '5' : '0'}\" *ngIf=\"isAdmin || (roleOptions.tasks && roleOptions.tasks.canRead)\" [ngbNavItem]=\"2\" (click)=\"onTasksTabClick()\">\n <a ngbNavLink>\n <i-feather name=\"list\"></i-feather><label>TASKS</label>\n </a>\n <ng-template ngbNavContent>\n <div style=\"background-color: white !important;\">\n <div style=\"display: flex; padding: 8px 16px 8px 16px; justify-content: end;\">\n <div style=\"display: flex; flex-direction: row; flex-wrap: nowrap; align-items: center;\">\n <button class=\"blue-button\" style=\"float: right; margin-right: 8px;\" type=\"button\" (click)=\"onCampaignCheck()\">\n CAMPAIGN CHECK\n </button>\n <button class=\"blue-button\" type=\"button\" (click)=\"onAddTask()\">ADD TASK</button>\n </div>\n </div>\n <div fxLayout=\"row\" fxLayoutAlign=\"space-between center\">\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\">\n <div (click)=\"changeShowTasks()\" style=\"padding-left: 16px; padding-right: 16px;\">\n <h2 [style.color]=\"showTasks ? '#495057' : '#EBE9EB'\" [style.border-bottom]=\"showTasks ? '2px solid rgb(73, 80, 87)' : '2px solid #EBE9EB'\" style=\"margin-bottom: 0px !important; padding: 0px 16px 8px 16px; cursor: pointer;\">TO-DO</h2>\n </div>\n <div (click)=\"changeShowCompletedTasks()\" style=\"padding-left: 16px; padding-right: 16px;\">\n <h2 [style.color]=\"showCompletedTasks ? '#495057' : '#EBE9EB'\" [style.border-bottom]=\"showCompletedTasks ? '2px solid rgb(73, 80, 87)' : '2px solid #EBE9EB'\" style=\"padding: 0px 16px 8px 16px; margin-bottom: 0px !important; cursor: pointer;\">COMPLETED</h2>\n </div>\n </div>\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\" style=\"padding-right: 16px;\">\n <button type=\"button\" class=\"gray-button\">\n <label for=\"showMyTasksCheckbox\">\n <input type=\"checkbox\" id=\"showMyTasksCheckbox\" [(ngModel)]=\"showOnlyMyTasks\" (change)=\"onShowMyTasksChange()\" value=\"Show Only My Tasks\">\n Show Only My Tasks\n </label>\n </button>\n </div>\n </div>\n <app-tasks-datatable *ngIf=\"showTasks\" [iCanRead]=\"isAdmin || (roleOptions.tasks && roleOptions.tasks.canRead)\"\n [iCanWrite]=\"isAdmin || (roleOptions.tasks && roleOptions.tasks.canWrite)\"\n [iCanDelete]=\"isAdmin || (roleOptions.tasks && roleOptions.tasks.canDelete)\"\n (oRowClick)=\"onTaskRowClick($event)\" [iSortColumn]=\"'title'\" [iColumns]=\"columnsTasks\"\n [iShowActions]=\"false\" [iData$]=\"tasksData\">\n </app-tasks-datatable>\n <app-tasks-datatable *ngIf=\"showCompletedTasks\" [iCanRead]=\"isAdmin || (roleOptions.tasks && roleOptions.tasks.canRead)\"\n [iCanWrite]=\"isAdmin || (roleOptions.tasks && roleOptions.tasks.canWrite)\"\n [iCanDelete]=\"isAdmin || (roleOptions.tasks && roleOptions.tasks.canDelete)\"\n (oRowClick)=\"onTaskRowClick($event)\" [iSortColumn]=\"'completedOn'\" [iSortDirection]=\"'desc'\"\n [iColumns]=\"completedTasksColumns\" [iShowActions]=\"false\" [iData$]=\"completedTasksData\" [isCompleted]=\"true\">\n </app-tasks-datatable>\n </div>\n </ng-template>\n </li>\n <li style=\"left: -15px;\" [ngStyle]=\"{'z-index': (active === 3) ? '5' : '0'}\" *ngIf=\"isAdmin || (roleOptions.subscriptions && roleOptions.subscriptions.canRead)\" [ngbNavItem]=\"3\">\n <a ngbNavLink>\n <i-feather name=\"refresh-cw\"></i-feather><label>SUBSCRIPTIONS</label>\n </a>\n <ng-template ngbNavContent>\n <app-subscription-shared [iCampaignId]=\"campaignData.id\" [iClientId]=\"campaignData?.client?.id\">\n </app-subscription-shared>\n </ng-template>\n </li>\n <li (click)=\"loadOrders();\" style=\"left: -22.5px;\" [ngStyle]=\"{'z-index': (active === 4) ? '5' : '0'}\" *ngIf=\"isAdmin || (roleOptions.subscriptions && roleOptions.subscriptions.canRead)\" [ngbNavItem]=\"4\">\n <a ngbNavLink>\n <i-feather name=\"file-text\"></i-feather><label>ORDERS</label>\n </a>\n <ng-template ngbNavContent>\n <app-campaign-datatable\n [iCanRead]=\"doWhat.canRead\" [iShowViewAction]=\"false\" [iColumns]=\"orderColumns\"\n [iHideHeaderActions]=\"false\" (oRowClick)=\"onClick($event)\" [iData$]=\"ordersData\"\n [iShowSelect]=\"false\" iSortColumn=\"numericId\" [iShowExport]=\"false\" [iShowEditAction]=\"false\" [iHideHeaderActions]=\"false\" [iTotalCount]=\"ordersData.length\" \n iSortDirection=\"desc\">\n </app-campaign-datatable>\n </ng-template>\n </li>\n <li style=\"left: -30px;\" [ngStyle]=\"{'z-index': (active === 5) ? '5' : '0'}\" *ngIf=\"isAdmin || (roleOptions.dashboard && roleOptions.dashboard.canRead)\" [ngbNavItem]=\"5\">\n <a ngbNavLink>\n <i-feather name=\"layout\"></i-feather><label>REPORTS</label>\n </a>\n <ng-template ngbNavContent>\n <div style=\"background: white; padding: 25px;\">\n <app-report-view></app-report-view>\n </div>\n </ng-template>\n </li>\n <li style=\"left: -37.5px;\" (click)=\"filterLeads();\" [ngStyle]=\"{'z-index': (active === 6) ? '5' : '0'}\" *ngIf=\"isAdmin || (roleOptions.dashboard && roleOptions.dashboard.canRead)\" [ngbNavItem]=\"6\">\n <a ngbNavLink>\n <i-feather name=\"bar-chart-2\"></i-feather><label>LEADS</label>\n </a>\n <ng-template ngbNavContent>\n <div style=\"background-color: white; padding: 8px;\">\n <app-campaign-datatable [iCanRead]=\"doWhat.canRead\" [iCanWrite]=\"doWhat.canWrite\" [iCanDelete]=\"doWhat.canDelete\"\n [iColumns]=\"columns\" (oDeleteRows)=\"onDelete($event)\" [iRowLinkHandler]=\"getRowLink\"\n [iTotalCount]=\"leadsTotalCount\" [iHideHeaderActions]=\"true\"\n [iData$]=\"leadsData\" (oLoadDataFromServer)=\"onLoadingData($event)\" [iShowSelect]=\"false\"\n iSortColumn=\"createdat\" iSortDirection=\"desc\" [iShowSelect]=\"true\">\n </app-campaign-datatable>\n </div>\n <!-- <ngx-spinner bdColor=\"rgba(0, 0, 0, 0.8)\" size=\"medium\" color=\"#000\" type=\"ball-spin-clockwise\" [fullScreen]=\"true\">\n <p style=\"color: white\">Data export in progress this may take several minutes.</p>\n </ngx-spinner> -->\n </ng-template>\n </li>\n <li style=\"left: -45px;\" [ngStyle]=\"{'z-index': (active === 7) ? '5' : '0'}\" [ngbNavItem]=\"7\" *ngIf=\"isAdmin || (roleOptions.tags && roleOptions.tags.canRead)\">\n <a ngbNavLink>\n <i-feather name=\"tag\"></i-feather><label>TAGS</label>\n </a>\n <ng-template ngbNavContent>\n <app-tags-tab [iCanWrite]=\"isAdmin || (roleOptions.tags && roleOptions.tags.canWrite)\"\n [iParentId]=\"campaignData.id\" [iType]=\"1\"></app-tags-tab>\n </ng-template>\n </li>\n <li style=\"left: -52.5px;\" [ngStyle]=\"{'z-index': (active === 8) ? '5' : '0'}\" *ngIf=\"isAdmin || (roleOptions.audit && roleOptions.audit.canRead)\" [ngbNavItem]=\"8\">\n <a ngbNavLink>\n <i-feather name=\"file-text\"></i-feather><label>AUDIT</label>\n </a>\n <ng-template ngbNavContent>\n <div class=\"container-fluid\" style=\"background-color: white; padding: 8px !important;\">\n <div class=\"row campaignAudit\">\n <div class=\"col\">\n <app-campaign-audit [iCanWrite]=\"isAdmin || (roleOptions.audit && roleOptions.audit.canWrite)\" [iCampaignId]=\"campaignData.id\"></app-campaign-audit>\n </div>\n <div class=\"col\">\n <app-campaign-budget-audit [iCampaignId]=\"campaignData.id\"></app-campaign-budget-audit>\n </div>\n </div>\n </div>\n </ng-template>\n </li>\n </ul>\n <div [ngbNavOutlet]=\"nav\"></div>\n </div>\n </div>\n </div>\n </div>\n</div>\n","import { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { ReplaySubject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport Swal from 'sweetalert2';\nimport { PAGE_NAMES, ROLES } from '../../../core/helpers/constants';\nimport { getRolesForPage } from '../../../core/helpers/utility';\nimport { IPermission } from '../../../core/models/auth.models';\nimport { ICampaign } from '../../../core/models/campaigns.model';\nimport { LoadDataFromServer } from '../../../shared/components/datatable/datatable.model';\nimport { AppService } from '../../../store/app.service';\nimport { CampaignsApiService } from '../campaigns.apiservice';\nimport { MergeCampaignsModal } from '../../../shared/modals/merge-campaign/merge-campaign.component';\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\nimport { UtilityService } from '../../../core/helpers/utility.service';\nimport { environment } from '../../../../environments/environment';\n\n@Component({\n selector: 'app-campaigns',\n templateUrl: './campaigns-main.component.html',\n styleUrls: ['./campaigns-main.component.scss']\n})\nexport class CampaignsMainComponent implements OnInit {\n doWhat: IPermission = {} as IPermission;\n\n columns = [\n { title: 'Name', field: 'name', sortable: true, searchable: true },\n { title: 'Client', field: 'clientName', sortable: true, searchable: true },\n { title: 'Platform', field: 'platform', sortable: true, searchable: true },\n { title: 'DMS', field: 'dmsName', sortable: true, searchable: true },\n { title: 'Stage', field: 'stageId', sortable: true, pipe: 'P_CampaignStageTitle', searchable: true },\n { title: 'Active Subscription', field: 'subscriptionActive', pipe: 'P_Boolean', sortable: true, searchable: true },\n ]\n\n campaignsData: Array<any>\n private destroyed$: ReplaySubject<boolean> = new ReplaySubject(1);\n private loadEvent!: LoadDataFromServer;\n dataTotalCount: number = 0;\n showDeleted: boolean = false;\n hideInactive: boolean = false;\n hideInactiveDefaultRoles = [1, 2, 3, 4, 5, 6, 10, 12];\n savedSearchId!: string;\n public userRoles: Array<number> = [];\n public ROLES = ROLES;\n\n constructor(\n private router: Router,\n private cApiService: CampaignsApiService,\n private modalService: NgbModal,\n private uService: UtilityService,\n private route: ActivatedRoute,\n private appService: AppService) {\n this.campaignsData = new Array<any>();\n }\n\n ngOnInit(): void {\n this.appService.setPageTitle$('Campaigns');\n this.userRoles = [...this.uService.getUserRoles()];\n this.doWhat = this.appService.getUserRolesForPage(PAGE_NAMES.Campaigns);\n this.fetchCampaigns();\n this.savedSearchId = this.route.snapshot.queryParams['savedsearchid'];\n\n if (!this.savedSearchId && this.userRoles.some(role => this.hideInactiveDefaultRoles.includes(role))) {\n this.hideInactive = true;\n }\n\n if (this.hideInactive && !this.savedSearchId) {\n if (environment.production) {\n this.savedSearchId = 'b934ac9a-28dc-4b5d-8848-0eb0011bce73';\n } else {\n this.savedSearchId = '2b606d1f-8a9a-4fb1-b951-f1e2f1a3a2d3';\n }\n }\n \n }\n\n fetchCampaigns() {\n this.appService.getAllCampaigns$()\n .pipe(takeUntil(this.destroyed$))\n .subscribe((response: any) => {\n this.campaignsData = response.data.map((campaign: any) => {\n if (campaign.stageId === 8) {\n campaign.statusColor = 'gray';\n }\n return campaign;\n });\n this.dataTotalCount = response.totalCount;\n });\n }\n\n onLoadingData(event: LoadDataFromServer) {\n this.loadEvent = event;\n let search = this.loadEvent.search ? this.loadEvent.search : '';\n if (this.hideInactive && search !== '') {\n this.hideInactive = false;\n this.savedSearchId = '';\n }\n this.appService.fetchAllCampaigns({\n SavedSearchId: this.savedSearchId,\n ShowDeleted: this.showDeleted,\n ...this.loadEvent\n });\n }\n\n onShowDeletedChange(){\n this.appService.fetchAllCampaigns({\n SavedSearchId: this.savedSearchId,\n ShowDeleted: this.showDeleted,\n ...this.loadEvent\n });\n }\n\n onHideInactiveChange() {\n if (this.hideInactive) {\n if (environment.production) {\n this.savedSearchId = 'b934ac9a-28dc-4b5d-8848-0eb0011bce73';\n } else {\n this.savedSearchId = '2b606d1f-8a9a-4fb1-b951-f1e2f1a3a2d3';\n }\n this.appService.fetchAllCampaigns({\n SavedSearchId: this.savedSearchId,\n ShowDeleted: this.showDeleted,\n ...this.loadEvent\n });\n } else {\n this.savedSearchId = '';\n this.appService.fetchAllCampaigns({\n SavedSearchId: this.savedSearchId,\n ShowDeleted: this.showDeleted,\n ...this.loadEvent\n });\n }\n }\n\n editRow(evt: any) {\n this.router.navigate(['/pages/edit-campaign', evt.id]);\n }\n\n deleteRows(evt: any) {\n this.cApiService.deleteCampaign(evt)\n .pipe(takeUntil(this.destroyed$))\n .subscribe((response: any) => {\n if (response.good) {\n Swal.fire('Campaigns ', \"Campaign(s) deleted\", 'success')\n }\n this.appService.fetchAllCampaigns({\n SavedSearchId: this.savedSearchId,\n ShowDeleted: this.showDeleted,\n ...this.loadEvent\n });\n })\n }\n\n getRowLink(row: any) {\n return `/pages/campaign-details/${row.id}`;\n }\n\n ngAfterViewInit() {\n\n }\n\n handleMergeRecordsClicked(evt: string[]) {\n let campaignsToMerge = this.campaignsData.filter(f => evt.includes(f.id));\n // let groupedClient = campaignsToMerge.reduce(\n // (result:any, currentValue:any) => { \n // (result[currentValue['clientId']] = result[currentValue['clientId']] || []).push(currentValue);\n // return result;\n // }, {});\n\n let groupedPlatform = campaignsToMerge.reduce(\n (result:any, currentValue:any) => { \n (result[currentValue['platform']] = result[currentValue['platform']] || []).push(currentValue);\n return result;\n }, {});\n\n if(Object.keys(groupedPlatform).length > 1){\n Swal.fire({\n title: 'Cannot Merge',\n text: \"Selected campaigns must have same platform.\",\n icon: 'error',\n showCancelButton: false,\n confirmButtonText: 'Ok'\n }).then((result) => {\n \n })\n }\n else{\n let size = campaignsToMerge.length == 2 ? 'lg' : 'xl';\n\n const dialogRef = this.modalService.open(MergeCampaignsModal, { size: size });\n\n dialogRef.componentInstance.campaignsToMerge = campaignsToMerge;\n const dialogSubmitSubscription = dialogRef.componentInstance.oMergeComplete.subscribe((r: any) => {\n this.appService.fetchAllCampaigns({\n SavedSearchId: this.savedSearchId,\n ShowDeleted: this.showDeleted,\n ...this.loadEvent\n });\n dialogSubmitSubscription.unsubscribe();\n })\n } \n }\n\n async export() {\n this.cApiService.export({\n SavedSearchId: this.savedSearchId,\n ShowDeleted: this.showDeleted,\n ...this.loadEvent\n }).then((x: any) => {\n var newBlob = new Blob([x], { type: \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\" });\n const data = window.URL.createObjectURL(newBlob);\n var link = document.createElement('a');\n link.href = data;\n link.download = \"campaigns.xlsx\";\n link.dispatchEvent(new MouseEvent('click', { bubbles: true, cancelable: true, view: window }));\n setTimeout(function () {\n // For Firefox it is necessary to delay revoking the ObjectURL\n window.URL.revokeObjectURL(data);\n link.remove();\n }, 100);\n });\n }\n}\n","<div class=\"card\" style=\"background-color: transparent !important;\">\r\n <div class=\"header\">\r\n <p class=\"seperator\"></p>\r\n <button type=\"button\" class=\"gray-button\" (click)=\"hideInactive = !hideInactive; onHideInactiveChange()\">\r\n <label for=\"hideInactive\" (click)=\"$event.stopPropagation()\">\r\n <input type=\"checkbox\" id=\"hideInactive\" [(ngModel)]=\"hideInactive\" (change)=\"onHideInactiveChange()\" value=\"Hide Inactive Campaigns\">\r\n Hide Inactive Campaigns\r\n </label>\r\n </button>\r\n <button type=\"button\" class=\"gray-button\" *ngIf=\"doWhat.isAdmin\" style=\"margin-left: 15px;\" (click)=\"showDeleted = !showDeleted; onShowDeletedChange()\">\r\n <label for=\"showDeleted\" (click)=\"$event.stopPropagation()\">\r\n <input type=\"checkbox\" id=\"showDeleted\" [(ngModel)]=\"showDeleted\" (change)=\"onShowDeletedChange()\" value=\"Show Deleted Campaigns\">\r\n Show Deleted Campaigns\r\n </label>\r\n </button>\r\n </div>\r\n <app-campaign-datatable [iShowDropdownAdd]=\"true\" [iColumns]=\"columns\" [iCanRead]=\"doWhat.canRead\" [iCanWrite]=\"doWhat.canWrite\"\r\n [iCanDelete]=\"doWhat.canDelete\" [iRowLinkHandler]=\"getRowLink\" (oDeleteRows)=\"deleteRows($event)\" [iShowMerge]=\"doWhat.isAdmin || userRoles.includes(ROLES.TechServices.Code)\"\r\n (oMergeRecords)=\"handleMergeRecordsClicked($event)\" (oEditRow)=\"editRow($event)\" [iData$]=\"campaignsData\" [iIsServerLoading]=\"true\" [iTotalCount]=\"dataTotalCount\" \r\n (oLoadDataFromServer)=\"onLoadingData($event)\" (oCustomDataExport)=\"export()\" [iIsCustomDataExport]=\"true\"></app-campaign-datatable>\r\n</div>","import { Injectable } from '@angular/core';\r\nimport { ICampaign, ICampaignAudit, INotes } from '../../core/models/campaigns.model';\r\nimport { HttpService } from '../../shared/http/base.http';\r\n\r\n@Injectable()\r\nexport class CampaignsApiService extends HttpService {\r\n getAllCampaigns(request: any) {\r\n return this.post<Array<ICampaign>>('/campaigns/getAllCampaigns', request);\r\n }\r\n getNewCampaignId() {\r\n return this.get<string>('/campaigns/getNewCampaignId')\r\n }\r\n getCampaignsByClient(clientId: any) {\r\n return this.get<Array<ICampaign>>('/campaigns/getCampaignsByClient?id=' + clientId)\r\n }\r\n getCampaignsNamesByClient(clientId: any) {\r\n return this.get<Array<ICampaign>>('/campaigns/getCampaignsNamesByClient?id=' + clientId)\r\n }\r\n\r\n getCampaignDetails(id: any) {\r\n return this.get<ICampaign>('/campaigns/getCampaignDetails?id=' + id)\r\n }\r\n saveCampaign(data: ICampaign) {\r\n return this.post('/campaigns/saveCampaign', data, { 'Content-Type': 'application/json; charset=utf-8' });\r\n }\r\n deleteCampaign(ids: Array<string>) {\r\n return this.post('/campaigns/deleteCampaign', ids, { 'Content-Type': 'application/json; charset=utf-8' });\r\n }\r\n getAudit(id: string) {\r\n return this.get<ICampaignAudit>('/campaigns/getAudit?id=' + id)\r\n }\r\n saveAudit(data: ICampaignAudit) {\r\n return this.post('/campaigns/saveAudit', data, { 'Content-Type': 'application/json; charset=utf-8' });\r\n }\r\n async export(request: any) {\r\n return await this.postDownload('/campaigns/export', request);\r\n }\r\n mergeCampaigns(mergedCampaign: any, primaryCampaignId: string, CampaignIdsToMerge: string[]) {\r\n let url_ = \"/campaigns/mergeCampaigns?\";\r\n if (primaryCampaignId !== undefined && primaryCampaignId !== null)\r\n url_ += \"primaryCampaignId=\" + encodeURIComponent(\"\" + primaryCampaignId) + \"&\";\r\n if (CampaignIdsToMerge !== undefined && CampaignIdsToMerge !== null)\r\n CampaignIdsToMerge && CampaignIdsToMerge.forEach(item => { url_ += \"campaignIdsToMerge=\" + encodeURIComponent(\"\" + item) + \"&\"; });\r\n\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n // const content_ = JSON.stringify(mergedClient);\r\n\r\n return this.post(url_, mergedCampaign, { 'Content-Type': 'application/json; charset=utf-8' });\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\nimport Swal from 'sweetalert2';\nimport { AppService } from '../../store/app.service';\nimport { CampaignsApiService } from './campaigns.apiservice';\n\n@Injectable()\nexport class CampaignsService {\n\n constructor(\n private appService: AppService,\n private campaignService: CampaignsApiService,\n private router: Router\n ) { }\n\n deleteCampaign() {\n var d = this.appService.getActiveRoute$().value.url.split('/');\n var cId = d[d.length - 1];\n Swal.fire({\n title: 'Are you sure?',\n text: \"You won't be able to revert this!\",\n icon: 'warning',\n showCancelButton: true,\n confirmButtonColor: '#3085d6',\n cancelButtonColor: '#d33',\n confirmButtonText: 'Yes, delete it!'\n }).then((result) => {\n if (result.isConfirmed) {\n this.campaignService.deleteCampaign([cId])\n .subscribe((r: any) => {\n if (r.good) {\n this.router.navigate(['/pages/campaigns']);\n }\n })\n }\n })\n }\n\n}\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { ReplaySubject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { CAMPAIGN_STAGES, PAGE_NAMES, ROLES, ROLES_TYPE } from '../../../core/helpers/constants';\nimport { createGuid, getRolesForPage } from '../../../core/helpers/utility';\nimport { IUser } from '../../../core/models/auth.models';\nimport { ICampaign, ICampaignAddAccount } from '../../../core/models/campaigns.model';\nimport { IClient } from '../../../core/models/clients.models';\nimport { ISalesRep } from '../../../core/models/datafeed.models';\nimport { DataFeedService } from '../../../shared/api/datafeed.service';\nimport { AppService } from '../../../store/app.service';\nimport { ClientsApiService } from '../../clients/clients.apiservice';\nimport { CampaignsApiService } from '../campaigns.apiservice';\n@Component({\n selector: 'app-edit-campaign',\n templateUrl: './edit-campaign.component.html',\n styleUrls: ['./edit-campaign.component.scss']\n})\nexport class EditCampaignComponent implements OnInit, OnDestroy {\n private destroyed$: ReplaySubject<boolean> = new ReplaySubject(1);\n public CAMPAIGN_STAGES = CAMPAIGN_STAGES;\n public allPlatforms = ['Campaign Consulting', 'Facebook', 'Google', 'TikTok', 'National Add On', 'Other', 'Website', 'YouTube'];\n public allBundles = ['Bundle1', 'Bundle2', 'Bundle3', 'Bundle4', 'Bundle5',];\n public defaultCRMNames = [\n { title: 'ClubReady', value: 'clubready' },\n { title: 'MindBody', value: 'mindbody' },\n { title: 'Loyalsnap', value: 'loyalsnap' },\n { title: 'Glofox', value: 'glofox' },\n { title: 'Other', value: 'Other' },\n ];\n isCustomCrmName = false;\n editCampaignForm!: FormGroup;\n submitted = false;\n\n allDms: Array<ISalesRep> = new Array<ISalesRep>();\n allClients: Array<IClient> = new Array<IClient>();\n allEmployees: Array<IUser> = new Array<IUser>();\n activeBundle: string = '';\n\n isAdmin: boolean = false;\n isExternal: boolean = false;\n canDelete: boolean = false;\n canRead: boolean = false;\n canWrite: boolean = false;\n isAddAcountMode: boolean = false;\n isUpdateAccountMode: boolean = false;\n currentAccountId: string = '';\n currentCampaignId: string = '';\n currentAdLabel: string = '';\n currentAdAccountId: string = '';\n isAddAccountSubmitted: boolean = false;\n options: any = null;\n campaignAdAccounts: Array<ICampaignAddAccount> = new Array<ICampaignAddAccount>();\n\n //new\n returnPath: string = '/pages/campaigns';\n\n constructor(\n private dataFeedService: DataFeedService,\n private router: Router,\n private formBuilder: FormBuilder,\n private route: ActivatedRoute,\n private campaignsService: CampaignsApiService,\n private clientService: ClientsApiService,\n private appService: AppService) {\n\n this.editCampaignForm = this.formBuilder.group({\n id: [null],\n campaignId: ['', [Validators.required]],\n subscriptionId: [''],\n subscriptionActive: [false],\n name: ['', [Validators.required]],\n platform: [''],\n dmsId: ['', [Validators.required]],\n stageId: [null, [Validators.required]],\n clientId: ['', [Validators.required]],\n opportunityNotes: [''],\n crmId: [''],\n crmName: [''],\n employees: [null],\n street: ['', [Validators.required, Validators.maxLength(200)]],\n city: ['', [Validators.maxLength(200)]],\n state: ['', [Validators.maxLength(200)]],\n zipcode: ['', [Validators.maxLength(10)]],\n locationPhone: ['', [Validators.maxLength(20)]],\n locationEmail: ['', [Validators.email, Validators.maxLength(50)]],\n //nextActionNotes: [''], https://atlastechdev.atlassian.net/browse/REAC-59\n //nextActionDate: [new Date()], https://atlastechdev.atlassian.net/browse/REAC-59\n //nextActionTime: ['00:00'], https://atlastechdev.atlassian.net/browse/REAC-59\n bundle: [''],\n platformCampaignId: [''],\n platformAccountId: [''],\n });\n }\n\n ngOnInit(): void {\n\n this.f.crmName.valueChanges\n .pipe(takeUntil(this.destroyed$)\n ).subscribe(value => {\n if (value === \"Other\") {\n this.f.crmName.setValue('');\n this.isCustomCrmName = true;\n }\n })\n\n\n this.appService.getActiveUser$()\n .pipe(takeUntil(this.destroyed$))\n .subscribe(u => {\n this.isExternal = u.type == ROLES_TYPE.External;\n var r = getRolesForPage(u.roles, PAGE_NAMES.Campaigns);\n this.isAdmin = r.isAdmin;\n this.canRead = r.canRead;\n this.canWrite = r.canWrite;\n this.canDelete = r.canDelete;\n if (r.options)\n this.options = JSON.parse(r.options!)\n })\n let id = this.route.snapshot.paramMap.get('id');\n this.appService.setPageTitle$(`Campaign - ${id ? 'Edit' : 'Add'}`);\n if (id) {\n this.getCampaignDetails(id);\n }\n else {\n this.getNewCampaignId();\n }\n if (id) {\n this.returnPath = '/pages/campaign-details/' + id;\n }\n this.getAllSalesReps();\n this.getAllClients();\n }\n\n getAllSalesReps() {\n this.dataFeedService.getAllUsersWithRole(ROLES.DMS.Code)\n .pipe(takeUntil(this.destroyed$)\n )\n .subscribe((response: any) => {\n if (response.good) {\n this.allDms = [...response.data];\n // this.addClientForm.patchValue({ brandId: response.data[0] });\n }\n });\n }\n\n getAllClients() {\n this.dataFeedService.getAllClients()\n .pipe(takeUntil(this.destroyed$)\n )\n .subscribe((response: any) => {\n if (response.good) {\n this.allClients = [...response.data];\n // this.addClientForm.patchValue({ brandId: response.data[0] });\n }\n });\n }\n\n getCampaignDetails(id: any) {\n this.campaignsService.getCampaignDetails(id)\n .pipe(takeUntil(this.destroyed$))\n .subscribe((response: any) => {\n // let date: Date = new Date(response.data.nextActionDate);\n // let time = `${date.getHours()}${\":\"}${date.getMinutes()}`;\n this.editCampaignForm.patchValue(response.data);\n this.campaignAdAccounts = response.data.campaignAdAccounts;\n this.editCampaignForm.patchValue(\n {\n clientId: response.data.client.id,\n employees: response.data.employees.map((x: any) => ({ id: x.id, fullName: `${x.firstName} ${x.lastName}` }))\n });\n this.isCustomCrmName = !(this.defaultCRMNames.find(x => x.value === response.data.crmName));\n });\n }\n\n getNewCampaignId() {\n let guid = createGuid();\n this.f.id.setValue(guid);\n\n this.campaignsService.getNewCampaignId()\n .pipe(takeUntil(this.destroyed$))\n .subscribe((response: any) => {\n if (response.data) this.f.campaignId.setValue(response.data);\n });\n }\n\n get f() { return this.editCampaignForm.controls; }\n\n editRow(evt: any) { }\n\n deleteRows(evt: any) { }\n\n onClientRowClick(evt: any) {\n this.router.navigate(['/pages/client-details', evt.id]);\n }\n\n updateProspectClientDetails() {\n let clientId = this.f.clientId.value;\n this.f.dmsId.setValue('');\n if (clientId) {\n this.clientService.getClientDetails(clientId)\n .pipe(takeUntil(this.destroyed$))\n .subscribe((response: any) => {\n if (response.data.dmsId)\n this.f.dmsId.setValue(response.data.dmsId);\n });\n }\n }\n onShowDropdown() {\n this.isCustomCrmName = false;\n this.editCampaignForm.patchValue({ crmName: this.defaultCRMNames[0].value })\n }\n\n onSubmit() {\n this.submitted = true;\n if (this.editCampaignForm.invalid)\n return;\n if (this.f.id.value === null)\n this.f.id.setValue(createGuid())\n\n let formValues: ICampaign = this.editCampaignForm.value;\n formValues.campaignAdAccounts = this.campaignAdAccounts;\n formValues = this.trimObjectStrings(formValues);\n\n // let actionTime = this.f.nextActionTime.value;\n // if (actionTime && actionTime != \"\") {\n // let h = actionTime.split(\":\")[0];\n // let m = actionTime.split(\":\")[1];\n // let d = new Date(formValues.nextActionDate);\n // d.setHours(h, m, 0);\n // (formValues.nextActionDate as Date) = d;\n // }\n\n this.campaignsService.saveCampaign(formValues)\n .pipe(takeUntil(this.destroyed$))\n .subscribe(() => {\n //this.appService.fetchAllClients();\n this.router.navigate(['/pages/campaign-details/', formValues.id]);\n });\n }\n\n // This function will recursively iterate through the object\n trimObjectStrings(obj: any): any {\n // Iterate over each property of the object\n for (const key in obj) {\n if (obj.hasOwnProperty(key)) {\n const value = obj[key];\n \n if (typeof value === 'string') {\n // Trim the string if the value is a string\n obj[key] = value.trim();\n } else if (typeof value === 'object' && value !== null) {\n // Recursively call the function if the value is an object (or array)\n this.trimObjectStrings(value);\n }\n }\n }\n return obj;\n }\n\n deleteAdAccount(adAccount: any){\n const index = this.campaignAdAccounts.findIndex((Ad: { id: string; }) => Ad.id == adAccount.id);\n this.campaignAdAccounts.splice(index, 1);\n }\n\n OnAddAccontClick(){\n this.isAddAcountMode = true;\n this.isUpdateAccountMode = false;\n this.currentAccountId = '';\n this.currentCampaignId = '';\n this.currentAdLabel = '';\n this.currentAdAccountId = '';\n this.isAddAccountSubmitted = false;\n }\n\n onEditAccountClick(adAccountId: string){\n var adAccount = this.campaignAdAccounts.find((Ad => Ad.id == adAccountId))\n if(adAccount){\n this.isAddAcountMode = true;\n this.isUpdateAccountMode = true;\n this.currentAccountId = adAccount.platformAccountID;\n this.currentCampaignId = adAccount.platformCampaignID;\n this.currentAdLabel = adAccount.adLabel;\n this.currentAdAccountId = adAccount.id;\n this.isAddAccountSubmitted = false;\n }\n }\n\n CancelAddMode(){\n this.isAddAcountMode = false;\n this.isUpdateAccountMode = false;\n }\n\n updateAccountDetail(){\n var adAccount = this.campaignAdAccounts.find((Ad => Ad.id == this.currentAdAccountId))\n if(adAccount){\n adAccount.adLabel = this.currentAdLabel;\n adAccount.platformAccountID = this.currentAccountId;\n adAccount.platformCampaignID = this.currentCampaignId;\n }\n this.isAddAcountMode = false;\n this.isUpdateAccountMode = true;\n }\n\n addAccountDetail(){\n var adObj = {\n id:createGuid(),\n rmCampaignId:this.f.id.value,\n platformCampaignID: this.currentCampaignId,\n platformAccountID: this.currentAccountId,\n adLabel: this.currentAdLabel\n }\n\n this.campaignAdAccounts.push(adObj);\n this.isAddAcountMode = false;\n this.isUpdateAccountMode = true;\n }\n\n ngAfterViewInit() {\n }\n ngOnDestroy(): void {\n this.destroyed$.next(true);\n this.destroyed$.complete();\n }\n}\n","<div class=\"row\">\n <div class=\"col-md-12\">\n <div class=\"card card-custom\">\n <div class=\"card-body\">\n <form [formGroup]=\"editCampaignForm\" (ngSubmit)=\"onSubmit()\">\n <div class=\"row mb-3\">\n <label class=\"col-sm-4 center-label\" for=\"campaignId\">Campaign ID</label>\n <div class=\"col-sm-4\">\n <input readonly type=\"text\" class=\"form-control\" formControlName=\"campaignId\">\n </div>\n </div>\n\n <div class=\"row mb-3\">\n <label class=\"col-sm-4 center-label\" for=\"name\">Campaign Name</label>\n <div class=\"col-sm-4\">\n <input type=\"text\" class=\"form-control\" formControlName=\"name\"\n [ngClass]=\"{ 'is-invalid': submitted && f.name.errors }\"\n placeholder=\"Campaign Name\">\n </div>\n </div>\n <div *ngIf=\"submitted && f.name.errors\" class=\"row mb-minus-3 row-validation\">\n <div class=\"col-sm-3\"> </div>\n <div class=\"col-sm-9\">\n <div *ngIf=\"f.name.errors.required\">\n Name is Required\n </div>\n </div>\n </div>\n\n <!-- <div class=\"row mb-3\">\n <label class=\"col-sm-4\" for=\"locationAddress\">Address</label>\n <div class=\"col-sm-4\">\n <textarea rows=\"3\" class=\"form-control\" formControlName=\"locationAddress\"\n [ngClass]=\"{ 'is-invalid': submitted && f.locationAddress.errors }\"\n placeholder=\"Location's Address\"></textarea>\n </div>\n </div>\n <div *ngIf=\"submitted && f.locationAddress.errors\" class=\"row mb-minus-3 row-validation\">\n <div class=\"col-sm-3\"> </div>\n <div class=\"col-sm-9\">\n <div *ngIf=\"f.locationAddress.errors.required\">Address is Required </div>\n <div *ngIf=\"f.locationAddress.errors.max\">Cannot be greater than 200 characters</div>\n </div>\n </div>\n </div> -->\n <div class=\"row mb-3\">\n <label class=\"col-sm-4 center-label\" for=\"street\">Location Street</label>\n <div class=\"col-sm-4\">\n <input type=\"text\" class=\"form-control\" formControlName=\"street\"\n [ngClass]=\"{ 'is-invalid': submitted && f.street.errors }\"\n placeholder=\"Street Address\">\n </div>\n </div>\n <div *ngIf=\"submitted && f.street.errors\" class=\"row mb-minus-3 row-validation\">\n <div class=\"col-sm-3\"> </div>\n <div class=\"col-sm-9\">\n <div *ngIf=\"f.street.errors.required\">Street address is Required </div>\n <div *ngIf=\"f.street.errors.max\">Street cannot be greater than 200 characters</div>\n </div>\n </div>\n <div class=\"row mb-3\">\n <label class=\"col-sm-4 center-label\" for=\"city\">Location City</label>\n <div class=\"col-sm-4\">\n <input type=\"text\" class=\"form-control\" formControlName=\"city\"\n [ngClass]=\"{ 'is-invalid': submitted && f.city.errors }\"\n placeholder=\"city\">\n </div>\n </div>\n <div *ngIf=\"submitted && f.city.errors\" class=\"row mb-minus-3 row-validation\">\n <div class=\"col-sm-3\"> </div>\n <div class=\"col-sm-9\">\n <div *ngIf=\"f.city.errors.max\">City cannot be greater than 200 characters</div>\n </div>\n </div>\n <div class=\"row mb-3\">\n <label class=\"col-sm-4 center-label\" for=\"state\">Location State</label>\n <div class=\"col-sm-4\">\n <input type=\"text\" class=\"form-control\" formControlName=\"state\"\n [ngClass]=\"{ 'is-invalid': submitted && f.state.errors }\"\n placeholder=\"State\">\n </div>\n </div>\n <div *ngIf=\"submitted && f.state.errors\" class=\"row mb-minus-3 row-validation\">\n <div class=\"col-sm-3\"> </div>\n <div class=\"col-sm-9\">\n <div *ngIf=\"f.state.errors.max\">State cannot be greater than 200 characters</div>\n </div>\n </div>\n <div class=\"row mb-3\">\n <label class=\"col-sm-4 center-label\" for=\"zipcode\">Location Zipcode</label>\n <div class=\"col-sm-4\">\n <input type=\"text\" class=\"form-control\" formControlName=\"zipcode\"\n [ngClass]=\"{ 'is-invalid': submitted && f.zipcode.errors }\"\n placeholder=\"Zipcode\">\n </div>\n </div>\n <div *ngIf=\"submitted && f.zipcode.errors\" class=\"row mb-minus-3 row-validation\">\n <div class=\"col-sm-3\"> </div>\n <div class=\"col-sm-9\">\n <div *ngIf=\"f.zipcode.errors.max\">Zipcode cannot be greater than 10 characters</div>\n </div>\n </div>\n <div class=\"row mb-3\">\n <label class=\"col-sm-4 center-label\" for=\"locationPhone\">Phone</label>\n <div class=\"col-sm-4\">\n <input type=\"text\" class=\"form-control\" formControlName=\"locationPhone\"\n [ngClass]=\"{ 'is-invalid': submitted && f.locationPhone.errors }\"\n placeholder=\"Location's Phone Number\">\n </div>\n </div>\n <div *ngIf=\"submitted && f.locationPhone.errors\" class=\"row mb-minus-3 row-validation\">\n <div class=\"col-sm-3\"> </div>\n <div class=\"col-sm-9\">\n <div *ngIf=\"f.locationPhone.errors.required\">Phone Number is Required</div>\n <div *ngIf=\"f.locationPhone.errors.max\">Phone cannot be greater than 20 characters</div>\n </div>\n </div>\n\n <div class=\"row mb-3\">\n <label class=\"col-sm-4 center-label\" for=\"locationEmail\">Email</label>\n <div class=\"col-sm-4\">\n <input type=\"text\" class=\"form-control\" formControlName=\"locationEmail\"\n [ngClass]=\"{ 'is-invalid': submitted && f.locationEmail.errors }\"\n placeholder=\"Location's Email Address\">\n </div>\n </div>\n <div *ngIf=\"submitted && f.locationEmail.errors\" class=\"row mb-minus-3 row-validation\">\n <div class=\"col-sm-3\"> </div>\n <div class=\"col-sm-9\">\n <div *ngIf=\"f.locationEmail.errors.required\">Email is Required</div>\n <div *ngIf=\"f.locationEmail.errors.max\">Email cannot be greater than 50 characters</div>\n <div *ngIf=\"f.locationEmail.errors.email\">Invalid Email Address</div>\n </div>\n </div>\n\n <div class=\"row mb-3\">\n <label class=\"col-sm-4 center-label\" for=\"platform\">Platform</label>\n <div class=\"col-sm-4\">\n <ng-select [ngClass]=\"{ 'is-invalid': submitted && f.platform.errors }\"\n formControlName=\"platform\">\n <ng-option *ngFor=\"let p of allPlatforms\" [value]=\"p\">{{p}}</ng-option>\n </ng-select>\n </div>\n </div>\n <div *ngIf=\"submitted && f.platform.errors\" class=\"row mb-minus-3 row-validation\">\n <div class=\"col-sm-3\"> </div>\n <div class=\"col-sm-9\">\n <div *ngIf=\"f.platform.errors.required\">Platform is Required</div>\n </div>\n </div>\n <!-- \n <div class=\"row mb-3\">\n <label class=\"col-sm-3 center-label\" for=\"subscriptionId\">Subscription ID</label>\n <div class=\"col-sm-4\">\n <input type=\"text\" class=\"form-control\" formControlName=\"subscriptionId\"\n [ngClass]=\"{ 'is-invalid': submitted && f.subscriptionId.errors }\"\n placeholder=\"Subscription ID\">\n </div>\n </div>\n <div *ngIf=\"submitted && f.subscriptionId.errors\" class=\"row mb-minus-3 row-validation\">\n <div class=\"col-sm-3\"> </div>\n <div class=\"col-sm-9\">\n <div *ngIf=\"f.subscriptionId.errors.required\">Subscription ID is Required</div>\n </div>\n </div>\n -->\n\n <!-- https://atlastechdev.atlassian.net/browse/REAC-59 -->\n <!-- Subscription Active - just make this true/false based on whether this campaign has subscriptions\n Have made this row readonly and values pre populated according to above condition -->\n <div class=\"row mb-3\" [hidden]=\"f.id?.value === null\">\n <label class=\"col-sm-4 center-label\" for=\"subActive\">Active Subscription?</label>\n <div class=\"col-sm-3\">\n {{ f.subscriptionActive.value | P_Boolean }}\n </div>\n </div>\n\n <div class=\"row mb-3\">\n <label class=\"col-sm-4 center-label\" for=\"stageId\">Stage</label>\n <div class=\"col-sm-3\">\n <ng-select [ngClass]=\"{ 'is-invalid': submitted && f.stageId.errors }\"\n formControlName=\"stageId\">\n <ng-option *ngFor=\"let stage of CAMPAIGN_STAGES\" [value]=\"stage.value\">{{stage.title}}\n </ng-option>\n </ng-select>\n </div>\n </div>\n <div *ngIf=\"submitted && f.stageId.errors\" class=\"row mb-minus-3 row-validation\">\n <div class=\"col-sm-3\"> </div>\n <div class=\"col-sm-9\">\n <div *ngIf=\"f.stageId.errors.required\">Stage is Required</div>\n </div>\n </div>\n\n <div class=\"row mb-3\">\n <label class=\"col-sm-4 center-label\" for=\"crmName\">CRM Name</label>\n <div class=\"col-sm-4\">\n <ng-select *ngIf=\"!isCustomCrmName\" formControlName=\"crmName\">\n <ng-option *ngFor=\"let c of defaultCRMNames\" [value]=\"c.value\">{{c.title}}\n </ng-option>\n </ng-select>\n <input *ngIf=\"isCustomCrmName\" type=\"text\" class=\"form-control\" formControlName=\"crmName\"\n [ngClass]=\"{ 'is-invalid': submitted && f.crmName.errors }\"\n placeholder=\"CRM Name\">\n </div>\n <div *ngIf=\"isCustomCrmName\" class=\"col-md-1\">\n <i-feather name=\"corner-right-up\" (click)=\"onShowDropdown()\" title=\"Show Dropdown\"\n class=\"icon-sm icon\"></i-feather>\n </div>\n </div>\n <div *ngIf=\"submitted && f.crmName.errors\" class=\"row mb-minus-3 row-validation\">\n <div class=\"col-sm-3\"> </div>\n <div class=\"col-sm-9\">\n <div *ngIf=\"f.crmName.errors.required\">CRM Name is Required</div>\n </div>\n </div>\n\n <div class=\"row mb-3\">\n <label class=\"col-sm-4 center-label\" for=\"crmId\">CRM ID</label>\n <div class=\"col-sm-4\">\n <input type=\"text\" class=\"form-control\" formControlName=\"crmId\"\n [ngClass]=\"{ 'is-invalid': submitted && f.crmId.errors }\" placeholder=\"CRM ID\">\n </div>\n </div>\n <div *ngIf=\"submitted && f.crmId.errors\" class=\"row mb-minus-3 row-validation\">\n <div class=\"col-sm-3\"> </div>\n <div class=\"col-sm-9\">\n <div *ngIf=\"f.crmId.errors.required\">CRM ID is Required</div>\n </div>\n </div>\n\n <div class=\"row mb-3\">\n <label class=\"col-sm-4 center-label\" for=\"clientId\">Client</label>\n <div class=\"col-sm-3\">\n <ng-select [ngClass]=\"{ 'is-invalid': submitted && f.clientId.errors }\"\n (change)=\"updateProspectClientDetails()\" formControlName=\"clientId\">\n <ng-option *ngFor=\"let c of allClients\" [value]=\"c.id\">{{c.firstName}} {{c.lastName}}\n </ng-option>\n </ng-select>\n </div>\n </div>\n <div *ngIf=\"submitted && f.clientId.errors\" class=\"row mb-minus-3 row-validation\">\n <div class=\"col-sm-3\"> </div>\n <div class=\"col-sm-9\">\n <div *ngIf=\"f.clientId.errors.required\">Client is Required</div>\n </div>\n </div>\n\n <div class=\"row mb-3\" [ngClass]=\"{'disabled' : options !==null && !options.canAssign}\">\n <label class=\"col-sm-4 center-label\" for=\"dmsId\">DMS</label>\n <div class=\"col-sm-3\">\n <ng-select [ngClass]=\"{ 'is-invalid': submitted && f.dmsId.errors }\"\n formControlName=\"dmsId\">\n <ng-option *ngFor=\"let rep of allDms\" [value]=\"rep.id\">{{rep.firstName}}\n {{rep.lastName}}</ng-option>\n </ng-select>\n </div>\n </div>\n <div *ngIf=\"submitted && f.dmsId.errors\" class=\"row mb-minus-3 row-validation\">\n <div class=\"col-sm-3\"> </div>\n <div class=\"col-sm-9\">\n <div *ngIf=\"f.dmsId.errors.required\">DMS is Required</div>\n </div>\n </div>\n <!--\n <div class=\"row mb-3\">\n <label class=\"col-sm-3\" for=\"employeeIds\">Employees</label>\n <div class=\"col-sm-9\">\n <ul style=\"max-height: 150px; overflow-y:scroll\" class=\"list-group col-sm-4\">\n <li class=\"list-group-item\" *ngIf=\"f.employees.value?.length === 0\">No employee found\n </li>\n <li class=\"list-group-item\" *ngFor=\"let e of f.employees.value\">{{e.fullName }}</li>\n </ul>\n </div>\n </div>\n -->\n <div *ngIf=\"!isExternal || isAdmin\" class=\"row mb-3\">\n <label class=\"col-sm-4\" for=\"opportunityNotes\">Internal Notes</label>\n <div class=\"col-sm-4\">\n <textarea rows=\"3\" class=\"form-control\" formControlName=\"opportunityNotes\"\n [ngClass]=\"{ 'is-invalid': submitted && f.opportunityNotes.errors }\"\n placeholder=\"Special setups: location targeting, changes to lead routing, etc.\"></textarea>\n </div>\n </div>\n <div *ngIf=\"submitted && f.opportunityNotes.errors\" class=\"row mb-minus-3 row-validation\">\n <div class=\"col-sm-3\"> </div>\n <div class=\"col-sm-9\">\n <div *ngIf=\"f.opportunityNotes.errors.required\">Internal Notes are Required\n </div>\n </div>\n </div>\n <div class=\"row mb-3\">\n <label class=\"col-sm-4\" for=\"platformAccountId\">Ad Account Info</label>\n <div class=\"col-sm-4\">\n <table id=\"adAcccounts\" style=\"width: 100%;\" *ngIf=\"campaignAdAccounts?.length != 0\">\n <tr>\n <td style=\"width: 35%;\"><strong>Ad Account ID</strong></td>\n <td style=\"width: 35%;\"><strong>Ad Campaign ID</strong></td>\n <td style=\"width: 30%;\"><strong>Ad Label</strong></td>\n <td></td>\n <td></td>\n </tr>\n <tr *ngFor=\"let ad of campaignAdAccounts;\">\n <td>{{ad.platformAccountID}}</td>\n <td>{{ad.platformCampaignID}}</td>\n <td>{{ad.adLabel}}</td>\n <td>\n <span class=\"input-group-text\" style=\"cursor: pointer;\"\n title=\"Click to edit Ad account.\" (click)=\"onEditAccountClick(ad.id)\">\n <i class=\"fa-solid fa-pen-to-square\"></i>\n </span>\n </td>\n <td>\n <span class=\"input-group-text\" style=\"cursor: pointer;\"\n title=\"Click to remove Ad account.\" (click)=\"deleteAdAccount(ad)\">\n <i class=\"fas fa-times\"></i>\n </span>\n </td>\n </tr>\n </table>\n <button *ngIf=\"!isAddAcountMode\" class=\"btn btn-sm btn-black\" (click)=\"OnAddAccontClick()\">Add Account</button>\n <div *ngIf=\"isAddAcountMode\" class=\"row pb-2\" style=\"margin-top: 10px;border: 1px lightgray solid;padding-top: 10px;\">\n <div class=\"row\">\n <label class=\"col-sm-4 center-label\">Platform Account ID</label>\n <div class=\"col-sm-8\">\n <input type=\"text\" class=\"form-control\" [(ngModel)]=\"currentAccountId\" [ngModelOptions]=\"{standalone: true}\"\n [ngClass]=\"{ 'is-invalid': isAddAccountSubmitted && currentAccountId.trim().length == 0 }\"\n placeholder=\"Platform Account ID\">\n </div>\n </div>\n <div *ngIf=\"isAddAccountSubmitted && currentAccountId.trim().length == 0\" class=\"row mb-minus-3 row-validation\">\n <div>Platform Account ID is Required</div>\n </div>\n \n <div class=\"row\" style=\"margin-top: 5px;\">\n <label class=\"col-sm-4 center-label\">Platform Campaign ID</label>\n <div class=\"col-sm-8\">\n <input type=\"text\" class=\"form-control\" [(ngModel)]=\"currentCampaignId\" [ngModelOptions]=\"{standalone: true}\"\n [ngClass]=\"{ 'is-invalid': isAddAccountSubmitted && currentCampaignId.trim().length == 0 }\"\n placeholder=\"Platform Campaign ID\">\n </div>\n </div>\n <div class=\"row\" style=\"margin-top: 5px;\">\n <label class=\"col-sm-4 center-label\">Platform Ad Label</label>\n <div class=\"col-sm-8\">\n <input type=\"text\" class=\"form-control\" [(ngModel)]=\"currentAdLabel\" [ngModelOptions]=\"{standalone: true}\"\n [ngClass]=\"{ 'is-invalid': isAddAccountSubmitted && currentAdLabel.trim().length == 0 }\"\n placeholder=\"Platform Ad Label\">\n </div>\n </div>\n <div *ngIf=\"isAddAccountSubmitted && currentCampaignId.trim().length == 0\" class=\"row mb-minus-3 row-validation\">\n <div>Platform Campaign ID is Required</div>\n </div>\n <div class=\"col-sm-2\">\n <button *ngIf=\"!isUpdateAccountMode\" [disabled]=\"currentCampaignId.trim().length == 0 || currentAccountId.trim().length == 0\" type=\"button\" class=\"btn btn-sm btn-dark mt-2\" (click)=\"addAccountDetail()\">\n Add</button>\n <button *ngIf=\"isUpdateAccountMode\" [disabled]=\"currentCampaignId.trim().length == 0 || currentAccountId.trim().length == 0\" type=\"button\" class=\"btn btn-sm btn-dark mt-2\" (click)=\"updateAccountDetail()\">\n Update</button>\n </div>\n <div class=\"col-sm-1\">\n <button type=\"button\" class=\"btn btn-sm btn-dark mt-2\" (click)=\"CancelAddMode()\">\n Cancel</button>\n </div>\n </div>\n </div>\n </div>\n <!-- <div *ngIf=\"!isExternal || isAdmin\" class=\"row mb-3\">\n <label class=\"col-sm-4 center-label\" for=\"platformAccountId\">Platform Account ID</label>\n <div class=\"col-sm-4\">\n <input type=\"text\" class=\"form-control\" formControlName=\"platformAccountId\"\n [ngClass]=\"{ 'is-invalid': submitted && f.platformAccountId.errors }\"\n placeholder=\"Platform Account ID\">\n </div>\n </div>\n <div *ngIf=\"submitted && f.platformAccountId.errors\" class=\"row mb-minus-3 row-validation\">\n <div *ngIf=\"f.platformAccountId.errors.required\">Platform Account ID is Required</div>\n </div>\n\n <div *ngIf=\"!isExternal || isAdmin\" class=\"row mb-3\">\n <label class=\"col-sm-4 center-label\" for=\"platformCampaignId\">Platform Campaign ID</label>\n <div class=\"col-sm-4\">\n <input type=\"text\" class=\"form-control\" formControlName=\"platformCampaignId\"\n [ngClass]=\"{ 'is-invalid': submitted && f.platformCampaignId.errors }\"\n placeholder=\"Platform Campaign ID\">\n </div>\n </div>\n <div *ngIf=\"submitted && f.platformCampaignId.errors\" class=\"row mb-minus-3 row-validation\">\n <div class=\"col-sm-3\"> </div>\n <div class=\"col-sm-9\">\n <div *ngIf=\"f.platformCampaignId.errors.required\">Platform Campaign ID is Required</div>\n </div>\n </div> -->\n\n <div class=\"row mb-3\">\n <div class=\"col-sm-4\"></div>\n <div class=\"col-sm-4\" style=\"display: flex; flex-direction: row; flex-wrap: nowrap; justify-content: space-between; align-items: center;\">\n <a [routerLink]=\"returnPath\" class=\"btn btn-orange\" type=\"button\">Cancel</a>\n <button class=\"blue-button\" type=\"submit\">Save</button>\n </div>\n </div>\n </form>\n </div>\n </div>\n\n </div>\n</div>","import { ReplaySubject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { AppService } from '../../../store/app.service';\r\nimport { ILead } from '../../../core/models/lead.models';\r\nimport { TasksService } from '../../tasks/tasks.service';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { ITask } from '../../../core/models/tasks.models';\r\nimport { ClientsApiService } from '../clients.apiservice';\r\nimport { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { IClient } from '../../../core/models/clients.models';\r\nimport { IPermission } from '../../../core/models/auth.models';\r\nimport { TasksApiService } from '../../tasks/tasks.apiservice';\r\nimport { LeadsApiService } from '../../leads/leads.apiservice';\r\nimport { getRolesForPage } from '../../../core/helpers/utility';\r\nimport { ICampaign } from '../../../core/models/campaigns.model';\r\nimport { ReportsApiService } from '../../reports/reports.apiservice';\r\nimport { RefreshSignals } from '../../../layouts/sidebar/menu.model';\r\nimport { UtilityService } from '../../../core/helpers/utility.service';\r\nimport { IReportingConfig } from '../../../core/models/reporting.models';\r\nimport { CampaignsApiService } from '../../campaigns/campaigns.apiservice';\r\nimport { PAGE_NAMES, ROLES, ROLES_TYPE } from '../../../core/helpers/constants';\r\nimport { SubscriptionApiService } from '../../subscriptions/subscription.apiservice';\r\nimport { IColumn, LoadDataFromServer } from '../../../shared/components/datatable/datatable.model';\r\nimport { ClientReportingUpdateModalComponent } from '../client-reporting-update/client-reporting-update.component';\r\nimport { OrdersApiService } from '../../orders/orders.apiservice';\r\n\r\n@Component({\r\n selector: 'app-clients',\r\n templateUrl: './client-details.component.html',\r\n styleUrls: ['./client-details.component.scss']\r\n})\r\n\r\nexport class ClientDetailsComponent implements OnInit, OnDestroy {\r\n\r\n savedSearchId!: string;\r\n private loadEvent!: LoadDataFromServer;\r\n\r\n doWhat: IPermission = {} as IPermission;\r\n\r\n campaignColumns = [\r\n { title: 'Received At', field: 'createdAt', sortable: true, searchable: true, pipe: 'P_AppDateFormat', pipeArgs: ['MM/DD/YYYY HH:mm', true] },\r\n { title: 'First Name', field: 'firstName', sortable: true, searchable: true },\r\n { title: 'Last Name', field: 'lastName', sortable: true, searchable: true },\r\n { title: 'Email', field: 'email', sortable: true, searchable: true },\r\n { title: 'Phone', field: 'phone', sortable: true, searchable: true },\r\n { title: 'Campaign', field: 'campaignName', sortable: true, searchable: true },\r\n { title: 'Referal Source', field: 'referralSource', sortable: true, searchable: true },\r\n ]\r\n\r\n orderColumns = [\r\n { title: 'ID', field: 'numericId', sortable: true, searchable: true },\r\n { title: 'From', field: 'startDate', sortable: true, searchable: true },\r\n { title: 'To', field: 'endDate', sortable: true, searchable: true },\r\n { title: 'Amount', field: 'amount', sortable: true, searchable: true, pipe: 'Currency', pipeArgs: ['USD', 'symbol', '1.0-2'] },\r\n { title: 'Status', field: 'status', sortable: true, searchable: true, type: 'html' },\r\n { title: 'Subscription ID', field: 'subscriptionNumericId', sortable: true, searchable: true, anchorLink: true, anchorType: 'subscription', anchorParamsField: 'subscriptionId' },\r\n { title: 'Campaign', field: 'campaignName', sortable: true, searchable: true, pipe: 'cleanupCampaign' },\r\n { title: 'Generated On', field: 'generatedOn', sortable: true, searchable: true, pipe: 'P_AppDateFormat', pipeArgs: ['YYYY-MM-DD HH:mm'] },\r\n ]\r\n\r\n columnsCampaign = [\r\n { title: 'Name', field: 'name', sortable: true, searchable: true },\r\n { title: 'Client', field: 'clientName', sortable: true, searchable: true },\r\n { title: 'Platform', field: 'platform', sortable: true, searchable: true },\r\n { title: 'DMS', field: 'dmsName', sortable: true, searchable: true },\r\n { title: 'Stage', field: 'stageId', sortable: true, pipe: 'P_CampaignStageTitle', searchable: true },\r\n { title: 'Active Subscription', field: 'subscriptionActive', pipe: 'P_Boolean', searchable: true },\r\n ];\r\n\r\n reportingConfigTableColumns = [\r\n { title: 'Report Type', field: 'reportType' },\r\n { title: 'Is Rollup', field: 'isRollup' },\r\n { title: 'Platforms', field: 'platforms' },\r\n { title: 'Campaigns', field: 'campaigns' },\r\n { title: 'To Email', field: 'toEmail' },\r\n ];\r\n\r\n reportingConfigTableData = new Array<{ reportingConfig: IReportingConfig, id: string, reportType: string, isRollup: boolean, platforms: string, campaigns: string, toEmail: string }>();\r\n\r\n showTasks: boolean = true;\r\n showCompletedTasks: boolean = false;\r\n showOnlyMyTasks: boolean = true;\r\n isAdmin: boolean = false;\r\n isExternal: boolean = false;\r\n \r\n userId: string = '';\r\n subscriptions = new Array<any>(); \r\n leadsData = new Array<ILead>();\r\n ordersData = new Array<any>();\r\n \r\n active = 1;\r\n dataTotalCount: number = 0;\r\n leadsTotalCount: number = 0;\r\n\r\n public ROLES = ROLES;\r\n\r\n columnsTasks = new Array<IColumn>();\r\n campaignsData = new Array<ICampaign>();\r\n completedTasksColumns: Array<IColumn> = []\r\n tasksData: Array<ITask> = new Array<ITask>();\r\n completedTasksData: Array<ITask> = new Array<ITask>();\r\n permTasksData: Array<ITask> = new Array<ITask>();\r\n reportingConfigData: Array<IReportingConfig> = [];\r\n public userRoles: Array<number> = [];\r\n roleOptions: any = {};\r\n\r\n clientData: IClient = {} as IClient;\r\n\r\n private destroyed$: ReplaySubject<boolean> = new ReplaySubject(1);\r\n\r\n checkingOrders: Array<any> = new Array<any>();\r\n clientId: string = '';\r\n\r\n selectedCampaignId: string | null = null;\r\n\r\n constructor(\r\n private modalService: NgbModal,\r\n private route: ActivatedRoute,\r\n public uService: UtilityService,\r\n private router: Router,\r\n private taskApiService: TasksApiService,\r\n private tasksService: TasksService,\r\n private appService: AppService,\r\n private clientService: ClientsApiService,\r\n private campaignsService: CampaignsApiService,\r\n private leadsApi: LeadsApiService,\r\n private reportsService: ReportsApiService,\r\n private subscriptionService: SubscriptionApiService,\r\n private ordersApiService: OrdersApiService) {\r\n\r\n this.userRoles = [...this.uService.getUserRoles()];\r\n\r\n this.columnsTasks.push({ title: 'Title', field: 'title', sortable: true, searchable: true } as IColumn);\r\n this.columnsTasks.push({ title: 'Client', field: 'clientName', sortable: true, searchable: true } as IColumn);\r\n this.columnsTasks.push({ title: 'Campaign', field: 'campaignName', sortable: true, searchable: true, anchorLink: true, anchorType: 'campaign', anchorParamsField: 'campaignId' } as IColumn);\r\n this.columnsTasks.push({ title: 'Due Date', field: 'dueDate', sortable: true, pipe: 'P_AppDateFormat', pipeArgs: ['MM/DD/YYYY'] } as IColumn);\r\n this.columnsTasks.push({ title: 'Assigned User', field: 'assignedUserName', sortable: true, visible: (this.userRoles.includes(ROLES.Admin.Code) || this.userRoles.includes(ROLES.TechServices.Code)) || this.userRoles.includes(ROLES.SalesRep.Code) } as IColumn);\r\n\r\n this.completedTasksColumns.push({ title: 'Title', field: 'title', sortable: true, searchable: true } as IColumn);\r\n this.completedTasksColumns.push({ title: 'Client', field: 'clientName', sortable: true, searchable: true } as IColumn);\r\n this.completedTasksColumns.push({ title: 'Campaign', field: 'campaignName', sortable: true, searchable: true, anchorLink: true, anchorType: 'campaign', anchorParamsField: 'campaignId' } as IColumn);\r\n this.completedTasksColumns.push({ title: 'Completed On', field: 'completedOn', sortable: true, pipe: 'P_AppDateFormat', pipeArgs: ['YYYY/MM/DD HH:mm', true] } as IColumn);\r\n this.completedTasksColumns.push({ title: 'Assigned User', field: 'assignedUserName', sortable: true, visible: (this.userRoles.includes(ROLES.Admin.Code) || this.userRoles.includes(ROLES.TechServices.Code) || this.userRoles.includes(ROLES.SalesRep.Code)) } as IColumn);\r\n }\r\n\r\n ngOnInit(): void {\r\n this.appService.setPageTitle$('Client');\r\n this.appService.setRefreshSignal$(PAGE_NAMES.ClientDetails, '');\r\n\r\n this.appService.getActiveUser$()\r\n .pipe(takeUntil(this.destroyed$))\r\n .subscribe(u => {\r\n if (u.id !== undefined) {\r\n this.userId = u.id;\r\n }\r\n this.isExternal = u.type == ROLES_TYPE.External\r\n var r = getRolesForPage(u.roles, PAGE_NAMES.Clients);\r\n this.isAdmin = r.isAdmin;\r\n if (this.isAdmin) {\r\n this.showOnlyMyTasks = false;\r\n }\r\n if (r.options) {\r\n this.roleOptions = JSON.parse(r.options!);\r\n }\r\n });\r\n\r\n let id = this.route.snapshot.paramMap.get('id');\r\n this.clientId = id!;\r\n\r\n if (id) {\r\n this.clientService.getClientDetails(id)\r\n .pipe(takeUntil(this.destroyed$))\r\n .subscribe((response: any) => {\r\n this.clientData = response.data;\r\n });\r\n }\r\n\r\n const sub = this.appService.getRefreshSignal$(PAGE_NAMES.ClientDetails);\r\n if (sub !== null) {\r\n sub.pipe(takeUntil(this.destroyed$))\r\n .subscribe((r: RefreshSignals) => {\r\n this.doRefresh(r.id);\r\n })\r\n }\r\n\r\n this.configureTasksService();\r\n }\r\n\r\n loadCampaigns() {\r\n if (this.clientId) {\r\n this.campaignsService.getCampaignsByClient(this.clientId)\r\n .pipe(takeUntil(this.destroyed$))\r\n .subscribe((response: any) => {\r\n this.campaignsData = response.data.map((campaign: any) => {\r\n if (campaign.stageId === 8) {\r\n campaign.statusColor = 'gray';\r\n }\r\n return campaign;\r\n }).sort((a: ICampaign, b: ICampaign) => a.name.localeCompare(b.name));\r\n });\r\n }\r\n // console.log(this.campaignsData);\r\n }\r\n\r\n updateReportView(campaignId: string) {\r\n this.selectedCampaignId = campaignId;\r\n }\r\n\r\n loadOrders() {\r\n this.checkingOrders = [];\r\n this.ordersApiService.getAllOrders()\r\n .pipe()\r\n .subscribe((response: any) => {\r\n this.ordersData = response.orders;\r\n this.dataTotalCount = this.ordersData.length;\r\n this.subscriptionService.getAllSubscriptions(null, this.clientId!)\r\n .pipe(takeUntil(this.destroyed$))\r\n .subscribe((response: any) => {\r\n if (response.subscriptions) {\r\n this.subscriptions = response.subscriptions.map((x:any) => {x.dms = x.campaigns[0].dms; x.salesrep = x.campaigns[0].salesRep; return x});\r\n this.subscriptions.forEach((subscription: any) => {\r\n var orders = this.ordersData.filter((order: any) => order.subscriptionNumericId === subscription.numericId);\r\n orders.forEach((order: any) => {\r\n order.status = order.paid && order.isActive ? '<label style=\"color:green\">Paid ' + order.refundText + '</label>' : (order.paid && !order.isActive ? '<label style=\"color:red\">Voided</label>' : (!order.paid && order.isActive ? '<label style=\"color:red\">Not Paid</label>' : '<label style=\"color:red\">Canceled</label>'));\r\n order.clientId = subscription.campaigns[0].clientId;\r\n this.checkingOrders.push(order);\r\n });\r\n });\r\n }\r\n });\r\n });\r\n }\r\n\r\n filterLeads() {\r\n this.doWhat = this.appService.getUserRolesForPage(PAGE_NAMES.Leads);\r\n this.campaignsService.getCampaignsByClient(this.clientId)\r\n .pipe(takeUntil(this.destroyed$))\r\n .subscribe((response: any) => {\r\n this.campaignsData = response.data;\r\n this.campaignsData.forEach((campaign: ICampaign) => {\r\n this.leadsApi.getAllLeads({ search: campaign.campaignId })\r\n .pipe(takeUntil(this.destroyed$))\r\n .subscribe((response: any) => {\r\n if (response.leads) {\r\n var tempLeadsData = [...response.leads].filter((x: ILead) => x.campaignId === campaign.id);\r\n this.leadsData = this.leadsData.concat(tempLeadsData);\r\n this.leadsTotalCount = this.leadsData.length;\r\n }\r\n });\r\n });\r\n });\r\n }\r\n\r\n loadTasksData() {\r\n let id = this.route.snapshot.paramMap.get('id');\r\n if (id) {\r\n this.taskApiService.getTasksByClient(id)\r\n .pipe(takeUntil(this.destroyed$))\r\n .subscribe((response: any) => {\r\n this.tasksData = [...response.data.filter((x: ITask) => (x.isCompleted === null || x.isCompleted === false) && (this.showOnlyMyTasks ? x.assignedUserId.includes(this.userId) : true))];\r\n this.completedTasksData = [...response.data.filter((x: ITask) => (x.isCompleted && x.isCompleted === true) && (this.showOnlyMyTasks ? x.assignedUserId.includes(this.userId) : true))];\r\n });\r\n }\r\n }\r\n\r\n loadTasks() {\r\n let id = this.route.snapshot.paramMap.get('id');\r\n if (id) {\r\n this.taskApiService.getTasksByClient(id)\r\n .pipe(takeUntil(this.destroyed$))\r\n .subscribe((response: any) => {\r\n this.tasksData = [...response.data.filter((x: ITask) => (x.isCompleted === null || x.isCompleted === false) && (this.showOnlyMyTasks ? x.assignedUserId.includes(this.userId) : true))];\r\n this.permTasksData = [...response.data];\r\n });\r\n }\r\n }\r\n\r\n configureTasksService() {\r\n this.tasksService.onSave.pipe(takeUntil(this.destroyed$))\r\n .subscribe((v: any) => {\r\n if (v) {\r\n this.loadTasksData();\r\n }\r\n });\r\n this.tasksService.onDelete.pipe(takeUntil(this.destroyed$))\r\n .subscribe((v: any) => {\r\n if (v) {\r\n this.loadTasksData();\r\n }\r\n });\r\n this.tasksService.onMarkAsComplete.pipe(takeUntil(this.destroyed$))\r\n .subscribe((v: any) => {\r\n if (v) {\r\n this.loadTasksData();\r\n }\r\n });\r\n }\r\n\r\n doRefresh(id: string) {\r\n if (id !== \"\")\r\n this.clientService.getClientDetails(id)\r\n .pipe(takeUntil(this.destroyed$))\r\n .subscribe((response: any) => {\r\n this.clientData = response.data;\r\n });\r\n }\r\n\r\n onTaskRowClick(evt: any) {\r\n this.tasksService.openEditTaskModal(evt, this.isAdmin || this.roleOptions.tasks.canEdit, this.isAdmin || this.roleOptions.tasks.canDelete);\r\n }\r\n\r\n onCampaignsRowClick(evt: any) {\r\n this.router.navigate(['/pages/campaign-details', evt.id]);\r\n }\r\n\r\n getCampaignRowLink(row: any) {\r\n return `/pages/campaign-details/${row.id}`;\r\n }\r\n\r\n getReportingConfigTableData(clientId: string): void {\r\n this.reportingConfigTableData = [];\r\n this.reportingConfigData = [];\r\n\r\n if (clientId) {\r\n this.reportsService\r\n .getReportingConfigsByClient(clientId)\r\n .pipe(takeUntil(this.destroyed$))\r\n .subscribe((response: any) => {\r\n let configs = new Array<any>();\r\n this.reportingConfigData = response.data;\r\n\r\n this.reportingConfigData\r\n .forEach((reportingConfig: any) => {\r\n let platformsAll = reportingConfig.platforms as Array<string>;\r\n let distinctPlatforms = platformsAll.filter((v, i, a) => a.indexOf(v) === i);\r\n let groupedPlatforms = this.groupBy(platformsAll, (c: any) => c);\r\n\r\n let platforms = distinctPlatforms.map(m => `${m} (${groupedPlatforms[m].length})`).join(', \\r\\n');\r\n\r\n let c = {\r\n reportingConfig: reportingConfig,\r\n id: reportingConfig.id /* Need this column as part of table so that when on delete we can access the list of IDs that were selected*/,\r\n reportType: reportingConfig.reportType,\r\n isRollup: reportingConfig.isRollup === true ? 'yes' : 'no',\r\n platforms: platforms,\r\n campaigns: reportingConfig.campaigns.filter((n: any, i: any) => reportingConfig.campaigns.indexOf(n) === i).join(', \\r\\n'),\r\n toEmail: reportingConfig.toEmail\r\n };\r\n configs.push(c);\r\n })\r\n this.reportingConfigTableData = configs;\r\n });\r\n }\r\n }\r\n\r\n loadReportingConfigs() {\r\n this.reportingConfigTableData = [];\r\n this.reportingConfigData = [];\r\n\r\n if (this.clientId) {\r\n this.reportsService\r\n .getReportingConfigsByClient(this.clientId)\r\n .pipe(takeUntil(this.destroyed$))\r\n .subscribe((response: any) => {\r\n let configs = new Array<any>();\r\n this.reportingConfigData = response.data;\r\n\r\n this.reportingConfigData\r\n .forEach((reportingConfig: any) => {\r\n let platformsAll = reportingConfig.platforms as Array<string>;\r\n let distinctPlatforms = platformsAll.filter((v, i, a) => a.indexOf(v) === i);\r\n let groupedPlatforms = this.groupBy(platformsAll, (c: any) => c);\r\n\r\n let platforms = distinctPlatforms.map(m => `${m} (${groupedPlatforms[m].length})`).join(', \\r\\n');\r\n\r\n let c = {\r\n reportingConfig: reportingConfig,\r\n id: reportingConfig.id /* Need this column as part of table so that when on delete we can access the list of IDs that were selected*/,\r\n reportType: reportingConfig.reportType,\r\n isRollup: reportingConfig.isRollup === true ? 'yes' : 'no',\r\n platforms: platforms,\r\n campaigns: reportingConfig.campaigns.filter((n: any, i: any) => reportingConfig.campaigns.indexOf(n) === i).join(', \\r\\n'),\r\n toEmail: reportingConfig.toEmail\r\n };\r\n configs.push(c);\r\n })\r\n this.reportingConfigTableData = configs;\r\n });\r\n }\r\n }\r\n\r\n groupBy(arr: Array<any>, func: { (c: any): any; (arg0: any): any; }) {\r\n return arr.reduce((r: { [x: string]: any[]; }, v: any, i: any, a: any, k = func(v)) => ((r[k] || (r[k] = [])).push(v), r), {});\r\n }\r\n\r\n addNewReportingConfig() {\r\n let reportingConfig = {} as IReportingConfig;\r\n reportingConfig.isRollup = false;\r\n reportingConfig.client = this.clientData;\r\n reportingConfig.clientId = this.clientData.id;\r\n reportingConfig.toEmail = this.clientData.email;\r\n\r\n this.openReportingConfigModal(reportingConfig);\r\n }\r\n\r\n editReportingConfigRow(evt: any) {\r\n this.openReportingConfigModal(evt.reportingConfig);\r\n }\r\n\r\n isReportingConfig(res: Array<string> | IReportingConfig): res is IReportingConfig {\r\n return (res as IReportingConfig).id !== undefined;\r\n }\r\n\r\n deleteReportingConfigRows(evt: Array<string> | IReportingConfig) {\r\n let param: Array<string> = [];\r\n\r\n if (this.isReportingConfig(evt)) {\r\n param = [(evt as IReportingConfig).id];\r\n }\r\n else {\r\n param = evt as Array<string>;\r\n }\r\n\r\n this.reportsService.deleteReportingConfig(param)\r\n .pipe(takeUntil(this.destroyed$))\r\n .subscribe((response: any) => {\r\n this.getReportingConfigTableData(this.clientData.id);\r\n });\r\n }\r\n\r\n openReportingConfigModal(reportingConfig: IReportingConfig) {\r\n const dialogRef = this.modalService.open(ClientReportingUpdateModalComponent, { size: 'lg' });\r\n dialogRef.componentInstance.CampaignsData = this.campaignsData;\r\n dialogRef.componentInstance.ReportingConfig = reportingConfig;\r\n\r\n const dialogSubmitSubscription = dialogRef.componentInstance.oSaveClicked.subscribe((r: any) => {\r\n this.reportsService.saveReportingConfig(r)\r\n .pipe(takeUntil(this.destroyed$))\r\n .subscribe((response: any) => {\r\n dialogRef.dismiss();\r\n this.getReportingConfigTableData(this.clientData.id);\r\n })\r\n\r\n dialogSubmitSubscription.unsubscribe();\r\n })\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroyed$.next(true);\r\n this.destroyed$.complete();\r\n }\r\n\r\n onAddCampaign() {\r\n this.router.navigate(['pages/edit-campaign/']);\r\n }\r\n\r\n onAddTask() {\r\n this.tasksService.openEditTaskModal({ id: null, clientId: this.clientData.id }, this.isAdmin || this.roleOptions.tasks.canEdit, this.isAdmin || this.roleOptions.tasks.canDelete);\r\n }\r\n\r\n onDelete(event: any) {\r\n this.leadsApi.deleteLead(event)\r\n .pipe(takeUntil(this.destroyed$))\r\n .subscribe((response: any) => {\r\n this.appService.fetchAllLeads({\r\n SavedSearchId: this.savedSearchId,\r\n ...this.loadEvent\r\n });\r\n });\r\n }\r\n\r\n getRowLink(row: any) {\r\n return `/pages/lead-details/${row.id}`;\r\n }\r\n\r\n onClick(event: any) {\r\n this.router.navigate(['/pages/orders/details', event.id]);\r\n }\r\n\r\n changeShowTasks() {\r\n if (this.showCompletedTasks) {\r\n this.showTasks = true;\r\n this.showCompletedTasks = false;\r\n }\r\n }\r\n \r\n changeShowCompletedTasks() {\r\n if (this.showTasks) {\r\n this.completedTasksData = this.permTasksData.filter((x: ITask) => (x.isCompleted && x.isCompleted === true) && (this.showOnlyMyTasks ? x.assignedUserId.includes(this.userId) : true));\r\n this.showTasks = false;\r\n this.showCompletedTasks = true;\r\n }\r\n }\r\n\r\n onShowMyTasksChange() {\r\n this.loadTasksData();\r\n }\r\n}\r\n","<div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <div class=\"card card-custom\">\r\n <div class=\"card-body\">\r\n <div class=\"details_top\">\r\n <h2 style=\"text-align: center;\">{{clientData?.firstName}} {{clientData?.lastName}}</h2>\r\n <h4 style=\"text-align: center;\">{{clientData?.brand}}</h4>\r\n <div class=\"row row-gap-4 d-flex align-items-stretch\" style=\"margin-top: 25px;\">\r\n <div class=\"col-12 \" [ngClass]=\"(isExternal) ? 'col-xl-6' : 'col-xl-6'\">\r\n <div class=\"card details-card\">\r\n <h5 class=\"card-title\">Contact Info:</h5>\r\n <div class=\"card-body\">\r\n <p><strong>Email:</strong> {{clientData?.email}} <a *ngIf=\"clientData.email\" style=\"color: inherit;\" href=\"mailto:{{ clientData.email }}\"><i-feather name=\"mail\" style=\"width: 1.3em; height: 1em; stroke-width: 1px;\"></i-feather></a></p>\r\n <p><strong>Phone:</strong> {{clientData?.phone}}</p>\r\n <p><strong>Address:</strong><br *ngIf=\"clientData?.brandAddress\" />\r\n {{clientData?.brandAddress}}</p>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-12 \" [ngClass]=\"(isExternal) ? 'col-xl-6' : 'col-xl-6'\">\r\n <div class=\"card details-card\">\r\n <h5 class=\"card-title\">Additional Info:</h5>\r\n <div class=\"card-body\">\r\n <p><strong>DMS:</strong> {{ clientData?.dmsName }}</p>\r\n <p><strong>Sales Rep:</strong> {{ clientData?.salesRep }}</p>\r\n <p *ngIf=\"clientData?.emailForInvoice\"><strong>Invoice Email:</strong> {{ clientData?.emailForInvoice }}</p>\r\n <p *ngIf=\"!isExternal\"><strong>Owner User Record:</strong> {{clientData?.clientOwner}}</p>\r\n <p><strong>Employee Users:</strong><br *ngIf=\"clientData?.employees?.length !== 0\" />\r\n <span *ngFor=\"let e of clientData.employees; let last = last\">\r\n {{ e.firstName }} {{ e.lastName }}<ng-container *ngIf=\"!last\">, </ng-container>\r\n </span>\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"dv-custom-navs\">\r\n <ul ngbNav #nav=\"ngbNav\" [(activeId)]=\"active\" class=\"nav-tabs\">\r\n <li [ngbNavItem]=\"1\" [ngStyle]=\"{'z-index': (active === 1) ? '5' : '0'}\" *ngIf=\"isAdmin || (roleOptions.notes && roleOptions.notes.canRead)\">\r\n <a ngbNavLink>\r\n <i-feather name=\"paperclip\"></i-feather><label>NOTES</label>\r\n </a>\r\n <ng-template ngbNavContent>\r\n <app-notes [iIsAdmin]=\"isAdmin\" [iIsExternal]=\"isExternal\"\r\n [iCanDelete]=\"isAdmin || roleOptions.notes.canDelete\"\r\n [iCanWrite]=\"isAdmin || roleOptions.notes.canWrite\" [iParentId]=\"clientData.id\" [iType]=\"2\">\r\n </app-notes>\r\n </ng-template>\r\n </li>\r\n <li [ngbNavItem]=\"2\" style=\"left: -5px;\" [ngStyle]=\"{'z-index': (active === 2) ? '5' : '0'}\" *ngIf=\"isAdmin || (roleOptions.campaigns && roleOptions.campaigns.canRead)\" (click)=\"loadCampaigns()\">\r\n <a ngbNavLink>\r\n <i-feather name=\"edit\"></i-feather><label>CAMPAIGNS</label>\r\n </a>\r\n <ng-template ngbNavContent>\r\n <div style=\"background-color: white; padding: 8px 16px 8px 16px;\">\r\n <div style=\"display: flex; background-color: white; padding-bottom: 16px;\">\r\n <div style=\"flex: 1;\"></div>\r\n <button *ngIf=\"isAdmin || (roleOptions.campaigns && roleOptions.campaigns.canWrite)\" class=\"blue-button\"\r\n type=\"button\" (click)=\"onAddCampaign()\">ADD CAMPAIGN</button>\r\n </div>\r\n <app-campaign-datatable [iCanRead]=\"isAdmin || (roleOptions.campaigns && roleOptions.campaigns.canRead)\"\r\n [iCanWrite]=\"isAdmin || (roleOptions.campaigns && roleOptions.campaigns.canWrite)\"\r\n [iCanDelete]=\"isAdmin || (roleOptions.campaigns && roleOptions.campaigns.canDelete)\"\r\n (oRowClick)=\"onCampaignsRowClick($event)\" [iColumns]=\"columnsCampaign\" [iShowActions]=\"false\"\r\n [iData$]=\"campaignsData\" [iRowLinkHandler]=\"getCampaignRowLink\" [iShowSelect]=\"false\">\r\n </app-campaign-datatable>\r\n </div>\r\n </ng-template>\r\n </li>\r\n <li [ngbNavItem]=\"3\" style=\"left: -10px;\" [ngStyle]=\"{'z-index': (active === 3) ? '5' : '0'}\" *ngIf=\"isAdmin || (roleOptions.tasks && roleOptions.tasks.canRead)\" (click)=\"loadTasks()\">\r\n <a ngbNavLink>\r\n <i-feather name=\"list\"></i-feather><label>TASKS</label>\r\n </a>\r\n <ng-template ngbNavContent>\r\n <div style=\"background-color: white !important;\">\r\n <div style=\"display: flex; padding: 8px 16px 16px 16px; align-items: center; justify-content: end;\">\r\n <button class=\"blue-button\" type=\"button\" (click)=\"onAddTask()\">ADD TASK</button>\r\n </div>\r\n <div fxLayout=\"row\" fxLayoutAlign=\"space-between center\">\r\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\">\r\n <div (click)=\"changeShowTasks()\" style=\"padding-left: 16px; padding-right: 16px;\">\r\n <h2 [style.color]=\"showTasks ? '#495057' : '#EBE9EB'\" [style.border-bottom]=\"showTasks ? '2px solid rgb(73, 80, 87)' : '2px solid #EBE9EB'\" style=\"margin-bottom: 0px !important; padding: 0px 16px 8px 16px; cursor: pointer;\">TO-DO</h2>\r\n </div>\r\n <div (click)=\"changeShowCompletedTasks()\" style=\"padding-left: 16px; padding-right: 16px;\">\r\n <h2 [style.color]=\"showCompletedTasks ? '#495057' : '#EBE9EB'\" [style.border-bottom]=\"showCompletedTasks ? '2px solid rgb(73, 80, 87)' : '2px solid #EBE9EB'\" style=\"padding: 0px 16px 8px 16px; margin-bottom: 0px !important; cursor: pointer;\">COMPLETED</h2>\r\n </div>\r\n </div>\r\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\" style=\"padding-right: 16px;\">\r\n <button type=\"button\" class=\"gray-button\">\r\n <label for=\"showMyTasksCheckbox\">\r\n <input type=\"checkbox\" id=\"showMyTasksCheckbox\" [(ngModel)]=\"showOnlyMyTasks\" (change)=\"onShowMyTasksChange()\" value=\"Show Only My Tasks\">\r\n Show Only My Tasks\r\n </label>\r\n </button>\r\n </div>\r\n </div>\r\n <app-tasks-datatable *ngIf=\"showTasks\" [iCanRead]=\"isAdmin || (roleOptions.tasks && roleOptions.tasks.canRead)\"\r\n [iCanWrite]=\"isAdmin || (roleOptions.tasks && roleOptions.tasks.canWrite)\"\r\n [iCanDelete]=\"isAdmin || (roleOptions.tasks && roleOptions.tasks.canDelete)\"\r\n (oRowClick)=\"onTaskRowClick($event)\" [iSortColumn]=\"'title'\" [iColumns]=\"columnsTasks\"\r\n [iShowActions]=\"false\" [iData$]=\"tasksData\">\r\n </app-tasks-datatable>\r\n <app-tasks-datatable *ngIf=\"showCompletedTasks\" [iCanRead]=\"isAdmin || (roleOptions.tasks && roleOptions.tasks.canRead)\"\r\n [iCanWrite]=\"isAdmin || (roleOptions.tasks && roleOptions.tasks.canWrite)\"\r\n [iCanDelete]=\"isAdmin || (roleOptions.tasks && roleOptions.tasks.canDelete)\"\r\n (oRowClick)=\"onTaskRowClick($event)\" [iSortColumn]=\"'completedOn'\" [iSortDirection]=\"'desc'\"\r\n [iColumns]=\"completedTasksColumns\" [iShowActions]=\"false\" [iData$]=\"completedTasksData\" [isCompleted]=\"true\">\r\n </app-tasks-datatable>\r\n </div>\r\n </ng-template>\r\n </li>\r\n <li [ngbNavItem]=\"4\" style=\"left: -15px;\" [ngStyle]=\"{'z-index': (active === 4) ? '5' : '0'}\" *ngIf=\"isAdmin || (roleOptions.tags && roleOptions.tags.canRead)\">\r\n <a ngbNavLink>\r\n <i-feather name=\"tag\"></i-feather><label>TAGS</label>\r\n </a>\r\n <ng-template ngbNavContent>\r\n <app-tags-tab [iCanWrite]=\"isAdmin || (roleOptions.tags && roleOptions.tags.canWrite)\"\r\n [iParentId]=\"clientData.id\" [iType]=\"2\"></app-tags-tab>\r\n </ng-template>\r\n </li>\r\n <li [ngbNavItem]=\"5\" style=\"left: -20px;\" [ngStyle]=\"{'z-index': (active === 5) ? '5' : '0'}\" *ngIf=\"isAdmin || (roleOptions.subscriptions && roleOptions.subscriptions.canRead)\">\r\n <a ngbNavLink>\r\n <i-feather name=\"refresh-cw\"></i-feather><label>SUBSCRIPTIONS</label>\r\n </a>\r\n <ng-template ngbNavContent>\r\n <app-subscription-shared [iClientId]=\"clientData.id\">\r\n </app-subscription-shared>\r\n </ng-template>\r\n </li>\r\n <li style=\"left: -25px;\" (click)=\"loadOrders();\" [ngStyle]=\"{'z-index': (active === 6) ? '5' : '0'}\" *ngIf=\"isAdmin || (roleOptions.subscriptions && roleOptions.subscriptions.canRead)\" [ngbNavItem]=\"6\">\r\n <a ngbNavLink>\r\n <i-feather name=\"dollar-sign\"></i-feather><label>ORDERS</label>\r\n </a>\r\n <ng-template ngbNavContent>\r\n <div style=\"background-color: white; padding: 24px 16px 8px 16px;\">\r\n <app-campaign-datatable\r\n iSortColumn=\"numericId\"\r\n iSortDirection=\"desc\"\r\n [iCanRead]=\"doWhat.canRead\"\r\n [iColumns]=\"orderColumns\"\r\n [iData$]=\"checkingOrders\"\r\n [iHideHeaderActions]=\"false\"\r\n [iShowActions]=\"true\"\r\n [iShowEditAction]=\"false\"\r\n [iShowExport]=\"false\"\r\n [iShowSelect]=\"false\"\r\n [iShowViewAction]=\"true\"\r\n [iTotalCount]=\"checkingOrders.length\"\r\n (oRowClick)=\"onClick($event)\">\r\n </app-campaign-datatable>\r\n </div>\r\n </ng-template>\r\n </li>\r\n <li style=\"left: -30px;\" [ngStyle]=\"{'z-index': (active === 7) ? '5' : '0'}\" *ngIf=\"isAdmin || (roleOptions.reports && roleOptions.reports.canRead)\" [ngbNavItem]=\"7\" (click)=\"loadReportingConfigs()\">\r\n <a ngbNavLink>\r\n <i-feather name=\"file-text\"></i-feather><label>EMAIL REPORTS</label>\r\n </a>\r\n <ng-template ngbNavContent>\r\n <div style=\"background-color: white; padding: 8px 16px 8px 16px;\">\r\n <div style=\"display: flex; margin-bottom: 16px; justify-content: flex-end;\">\r\n <button *ngIf=\"isAdmin || (roleOptions.reports && roleOptions.reports.canWrite)\" class=\"blue-button\"\r\n type=\"button\" (click)=\"addNewReportingConfig()\">ADD REPORTING</button>\r\n </div>\r\n <app-datatable [iCanRead]=\"isAdmin || (roleOptions.reports && roleOptions.reports.canRead)\"\r\n [iCanWrite]=\"isAdmin || (roleOptions.reports && roleOptions.reports.canEdit)\"\r\n [iCanDelete]=\"isAdmin || (roleOptions.reports && roleOptions.reports.canDelete)\"\r\n [iColumns]=\"reportingConfigTableColumns\" [iData$]=\"reportingConfigTableData\" \r\n iSortColumn=\"campaigns\" [iShowActions]=\"true\"\r\n [iShowExport]=\"false\" (oAddNew)=\"addNewReportingConfig()\" (oEditRow)=\"editReportingConfigRow($event)\"\r\n (oDeleteRows)=\"deleteReportingConfigRows($event)\">\r\n </app-datatable>\r\n </div>\r\n </ng-template>\r\n </li>\r\n <li style=\"left: -35px;\" (click)=\"filterLeads();\" [ngStyle]=\"{'z-index': (active === 8) ? '5' : '0'}\" *ngIf=\"isAdmin || (roleOptions.dashboard && roleOptions.dashboard.canRead)\" [ngbNavItem]=\"8\">\r\n <a ngbNavLink>\r\n <i-feather name=\"bar-chart-2\"></i-feather><label>LEADS</label>\r\n </a>\r\n <ng-template ngbNavContent>\r\n <div style=\"background-color: white; padding: 24px 16px 8px 16px;\">\r\n <app-campaign-datatable [iCanRead]=\"doWhat.canRead\" [iCanWrite]=\"doWhat.canWrite\" [iCanDelete]=\"doWhat.canDelete\"\r\n [iColumns]=\"campaignColumns\" (oDeleteRows)=\"onDelete($event)\" [iRowLinkHandler]=\"getRowLink\"\r\n [iTotalCount]=\"leadsTotalCount\"\r\n [iData$]=\"leadsData\" [iShowSelect]=\"false\"\r\n iSortColumn=\"createdat\" iSortDirection=\"desc\" [iShowSelect]=\"true\">\r\n </app-campaign-datatable>\r\n </div>\r\n </ng-template>\r\n </li>\r\n <li style=\"left: -40px;\" [ngStyle]=\"{'z-index': (active === 9) ? '9' : '0'}\" *ngIf=\"isAdmin || (roleOptions.campaigns && roleOptions.campaigns.canRead)\" [ngbNavItem]=\"9\" (click)=\"loadCampaigns()\">\r\n <a ngbNavLink>\r\n <i-feather name=\"layout\"></i-feather><label>REPORTS</label>\r\n </a>\r\n <ng-template ngbNavContent>\r\n <div class=\"campaignSelect\">\r\n <label for=\"campaignSelector\">Select Campaign:</label>\r\n <select id=\"campaignSelector\" class=\"form-select\" [(ngModel)]=\"selectedCampaignId\" (ngModelChange)=\"updateReportView($event)\">\r\n <option value=\"\">-- Select --</option>\r\n <option *ngFor=\"let campaign of campaignsData\" [value]=\"campaign.id\">{{ campaign.name }}</option>\r\n </select>\r\n </div>\r\n <div *ngIf=\"selectedCampaignId\" style=\"background: white; padding: 25px;\">\r\n <app-report-view [Iid]=\"selectedCampaignId\"></app-report-view>\r\n </div>\r\n </ng-template>\r\n </li>\r\n </ul>\r\n <div [ngbNavOutlet]=\"nav\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { ICampaign } from '../../../core/models/campaigns.model';\n\n@Component({\n selector: 'app-client-reporting-update-select-campaigns-modal',\n templateUrl: './client-reporting-update-select-campaigns-modal.component.html',\n styleUrls: ['./client-reporting-update-select-campaigns-modal.component.scss']\n})\nexport class ClientReportingUpdateSelectCampaignsModalComponent implements OnInit {\n @Input() CurrentlySelected: Array<ICampaign> = [];\n @Input() ReportType: string = '';\n @Input() Platform: string = '';\n @Input() CampaignsData: Array<ICampaign> = [];\n @Output() oSaveClicked = new EventEmitter<Array<string>>();\n\n CampaignOptions$ = new BehaviorSubject<Array<{ text: string, value: string }>>([]);\n\n constructor() { }\n\n ngOnInit(): void { \n this.updateCampaignsOptions();\n }\n\n updateCampaignsOptions(): void {\n // Using All Campaigns\n var unfilteredOptions = this.createSelectOptions(this.CampaignsData, this.Platform, this.ReportType);\n\n // Get Selected options\n var selectedCampaigns = this.SelectedOptions(this.CurrentlySelected, this.Platform, this.ReportType);\n\n // Not Selected\n var opts = unfilteredOptions.filter(co => !selectedCampaigns.find(sc => co.value === sc.value));\n this.CampaignOptions$.next(opts);\n }\n\n SelectedOptions(campaigns: Array<ICampaign>, platform: string, reportType: string): Array<{ text: string, value: string }> {\n if (!campaigns || !platform) return [];\n let res = campaigns.filter(f => f.platform.toLowerCase() === platform.toLowerCase());\n\n return Array.from(res, r => { return { value: r.campaignId, text: `${r.name}` }; });\n }\n\n createSelectOptions(campaigns: Array<ICampaign>, platform: string, reportType: string): Array<{ text: string, value: string }> {\n if (!campaigns || !platform) return [];\n let res = campaigns.filter(f => f.platform.toLowerCase() === platform.toLowerCase());\n\n return Array.from(res, r => { return { value: r.id, text: `${r.name}` }; });\n\n // if (reportType == 'Simple') {\n // let nonUnique = res.filter(f => f.platformAccountId).map(m => m.platformAccountId);\n // let unique = new Set(nonUnique); // Set returns only unique values.\n\n // return Array.from(unique, val => { return { value: val, text: val }; });\n // }\n\n // if (reportType == 'Advanced') {\n // return Array.from(res, r => { return { value: r.id, text: `${r.platform} - ${r.platformCampaignId} - ${r.name}` }; });\n // }\n\n // return [];\n }\n\n\n getCampaignsByPlatformByAccount(accountId: string): Array<string> {\n let nonUnique = this.CampaignsData\n .filter(f => f.platform.toLowerCase() === this.Platform.toLowerCase())\n .filter(f => f.platformAccountId == accountId)\n .map(m => m.id);\n let unique = new Set(nonUnique);\n\n return Array.from(unique, val => val);\n }\n\n onSubmit(selectedValue: string) {\n console.log('Pop submitted.');\n // let campaigns = this.CampaignsData.filter(x => x.id == selectedValue)[0];\n // this.CurrentlySelected.push(campaigns);\n // this.updateCampaignsOptions();\n // if (this.ReportType == 'Simple') {\n // let campaigns = this.getCampaignsByPlatformByAccount(selectedValue);\n // this.oSaveClicked.emit(campaigns)\n // }\n\n // if (this.ReportType == 'Advanced') {\n // this.oSaveClicked.emit([selectedValue])\n // }\n\n this.oSaveClicked.emit([selectedValue])\n\n } \n} \n","<ng-template #popContent style=\"padding-top: 0.5rem;\">\n <div class=\"row pb-1\">\n <div class=\"col\">\n <select class=\"form-control form-select select-custom\" #selectedValue>\n <option value=\"\" disabled selected>\n {{ (CampaignOptions$ | async)?.length == 0 ? 'No options for selected platform and report type' : '' }}\n </option>\n <option *ngFor=\"let option of (CampaignOptions$ | async)\" [value]=\"option.value\">\n {{ option.text }}\n </option>\n </select> \n </div>\n </div>\n <div class=\"row pb-1\">\n <div class=\"col\">\n <a class=\"a-btn btn btn-outline-secondary\" style=\"margin-right: 10px; cursor: pointer;\"\n (click)=\"onSubmit(selectedValue.value); pg.close();\">\n Add\n </a>\n </div>\n </div> \n</ng-template>\n\n<a style=\"text-decoration: none; font-weight: bold; cursor: pointer; margin-right: 10px;\" placement=\"top\"\n [ngbPopover]=\"popContent\" [popoverTitle]=\"'Select ' + Platform + (ReportType == 'Advanced' ? ' Campaign' : ' Platform Account')\" [autoClose]=\"'outside'\"\n #pg=\"ngbPopover\">\n {{ Platform }}<i-feather name=\"plus\"></i-feather>\n</a> \n \n\n ","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { FormArray, FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\nimport { ReplaySubject } from 'rxjs';\nimport { createGuid } from '../../../core/helpers/utility';\nimport { ICampaign } from '../../../core/models/campaigns.model';\nimport { IReportingConfig, IReportingConfigCCEmail, IReportingConfigCampaign } from '../../../core/models/reporting.models';\n\n@Component({\n selector: 'app-client-reporting-update',\n templateUrl: './client-reporting-update.component.html',\n styleUrls: ['./client-reporting-update.component.scss']\n})\nexport class ClientReportingUpdateModalComponent implements OnInit {\n\n private destroyed$: ReplaySubject<boolean> = new ReplaySubject(1);\n @Output() oSaveClicked = new EventEmitter<any>();\n @Input() CampaignsData: Array<ICampaign> = [];\n @Input() ReportingConfig = {} as IReportingConfig;\n\n editForm: FormGroup;\n get f() { return this.editForm.controls; }\n get rmReportingConfigCcemails() { return this.editForm.get('rmReportingConfigCcemails') as FormArray; }\n get rmReportingConfigCampaigns() { return this.editForm.get('rmReportingConfigCampaigns') as FormArray; }\n\n submitted = false;\n\n constructor(\n public activeModal: NgbActiveModal,\n private fb: FormBuilder,) {\n this.editForm = this.fb.group({\n id: [null],\n clientId: [null, [Validators.required]],\n isRollup: [false],\n reportType: [null, [Validators.required]],\n toEmail: [null, [Validators.required, Validators.email]],\n rmReportingConfigCcemails: this.fb.array([]),\n rmReportingConfigCampaigns: this.fb.array([], [Validators.required]),\n });\n }\n\n ngOnInit(): void {\n this.updateReportingConfigData();\n }\n\n updateReportingConfigData() {\n // console.log(this.ReportingConfig); \n\n this.f.id.setValue(this.ReportingConfig.id);\n this.f.clientId.setValue(this.ReportingConfig.clientId);\n this.f.toEmail.setValue(this.ReportingConfig.toEmail);\n this.f.isRollup.setValue(this.ReportingConfig.isRollup);\n this.f.reportType.setValue(this.ReportingConfig.reportType);\n\n if (this.ReportingConfig.rmReportingConfigCcemails) {\n this.ReportingConfig.rmReportingConfigCcemails\n .forEach((cc: IReportingConfigCCEmail) => {\n this.rmReportingConfigCcemails.push(\n this.fb.group({\n id: [cc.id],\n reportingConfigId: [cc.reportingConfigId],\n ccEmail: [cc.ccemail, [Validators.required, Validators.email]]\n })\n );\n });\n }\n\n if (this.ReportingConfig.rmReportingConfigCampaigns) {\n this.ReportingConfig.rmReportingConfigCampaigns.sort((s1, s2) => {\n if (s1.campaign?.platform == s2.campaign?.platform) return (s1.campaign?.name ?? '') < (s2.campaign?.name ?? '') ? -1 : 1;\n return (s1.campaign?.platform ?? '') < (s2.campaign?.platform ?? '') ? -1 : 1;\n });\n this.ReportingConfig.rmReportingConfigCampaigns\n .forEach((cc: IReportingConfigCampaign) => {\n this.rmReportingConfigCampaigns.push(\n this.fb.group({\n id: [cc.id],\n reportingConfigId: [cc.reportingConfigId],\n\n campaignId: [cc.campaignId, [Validators.required]],\n campaignName: [cc.campaign?.name],\n platform: [cc.campaign?.platform],\n adAccounts: [cc.campaign?.campaignAdAccounts],\n platformCampaignId: [cc.campaign?.platformCampaignId],\n platformAccountId: [cc.campaign?.platformAccountId],\n })\n );\n });\n }\n }\n\n removeReportingCC(i: number) {\n // console.log(i);\n this.rmReportingConfigCcemails.removeAt(i);\n }\n\n removeReportingConfigCampaign(i: number) {\n // console.log(i);\n this.rmReportingConfigCampaigns.removeAt(i);\n }\n\n clearEditFormCampaigns() {\n this.rmReportingConfigCampaigns.clear();\n }\n\n editReportingCC(i: number) {\n console.log(i);\n // this.rmReportingConfigCcemails.removeAt (cc);\n }\n\n addNewCC(): void {\n this.submitted = false;\n //console.log(this.f.value);\n this.rmReportingConfigCcemails.push(this.fb.group({\n id: [createGuid()],\n reportingConfigId: [this.ReportingConfig?.id],\n ccEmail: [null, [Validators.required, Validators.email]]\n })\n );\n }\n\n addCampaignToConfig(selectedCampaignIds: Array<string>): void {\n this.submitted = false;\n\n for (let selectedCampaignId of selectedCampaignIds) {\n if (selectedCampaignId !== null && selectedCampaignId !== '') {\n let selectedCampaign = this.CampaignsData.find(f => f.id === selectedCampaignId);\n\n let newRow = this.fb.group({\n id: [createGuid()],\n campaignId: [selectedCampaign?.id, [Validators.required]],\n campaignName: [selectedCampaign?.name, [Validators.required]],\n platform: [selectedCampaign?.platform, [Validators.required]],\n adAccounts: [selectedCampaign?.campaignAdAccounts],\n platformCampaignId: [selectedCampaign?.platformCampaignId],\n platformAccountId: [selectedCampaign?.platformAccountId],\n });\n\n this.rmReportingConfigCampaigns.push(newRow);\n }\n }\n }\n\n getCCsErrors(i: number) {\n if (!this.submitted) return;\n if (!this.rmReportingConfigCcemails) return;\n\n return (this.rmReportingConfigCcemails.controls[i] as FormGroup).controls?.ccEmail?.errors;\n }\n\n onSubmit() {\n this.submitted = true;\n\n //console.log(this.editForm);\n //console.log(this.editForm.errors);\n\n if (this.editForm.invalid)\n return;\n\n var updatedForm = this.editForm.value;\n if (!(updatedForm.id) || updatedForm.id === '')\n updatedForm.id = createGuid();\n\n updatedForm.rmReportingConfigCcemails.forEach((cc: IReportingConfigCCEmail) => {\n if (!(cc.id) || cc.id === '')\n cc.id = createGuid();\n\n if (!(cc.reportingConfigId) || cc.reportingConfigId === '')\n cc.reportingConfigId = updatedForm.id;\n });\n\n updatedForm.rmReportingConfigCampaigns.forEach((cCamp: IReportingConfigCampaign) => {\n if (!(cCamp.id) || cCamp.id === '')\n cCamp.id = createGuid();\n\n if (!(cCamp.reportingConfigId) || cCamp.reportingConfigId === '')\n cCamp.reportingConfigId = updatedForm.id;\n });\n\n this.oSaveClicked.emit(updatedForm);\n //console.log(updatedForm);\n }\n\n ngOnDestroy() {\n this.destroyed$.next(true);\n this.destroyed$.complete();\n }\n\n getEditFormCampaignsByPlatform(platform: string): Array<any> {\n if (!platform) return [];\n return this.editForm.value.rmReportingConfigCampaigns.filter((f: any) => f.platform.toLowerCase() === platform.toLowerCase());\n }\n}\n","<div class=\"modal-box\" cdkDrag>\n <form [formGroup]=\"editForm\" (ngSubmit)=\"onSubmit()\">\n <div class=\"modal-header\" style=\"cursor: move; justify-content: space-between;\" cdkDragHandle>\n <h4 class=\"modal-title\">{{ !(ReportingConfig?.id) || ReportingConfig.id === '' ?\n 'Add' :'Edit'}} Reporting Config</h4>\n <button type=\"button\" class=\"close\" aria-label=\"Close\" (click)=\"activeModal.dismiss('Cross click')\">\n <span aria-hidden=\"true\">×</span>\n </button>\n </div>\n <div class=\"modal-body\">\n <div class=\"row mb-2\">\n <label class=\"col-sm-4\" for=\"campaignId\">Client</label>\n <div class=\"col-sm-8\">\n <input type=\"text\" class=\"form-control\"\n value=\"{{ReportingConfig.client?.firstName}} {{ReportingConfig.client?.lastName}}\" readonly>\n </div>\n </div>\n\n <div class=\"row mb-2\">\n <label class=\"col-sm-4\" for=\"subActive\">To Email</label>\n <div class=\"col-sm-8\">\n <input type=\"text\" class=\"form-control\" formControlName=\"toEmail\"\n [ngClass]=\"{ 'is-invalid': submitted && f.toEmail.errors }\">\n <div *ngIf=\"submitted && f.toEmail.errors\" class=\"invalid-feedback\">\n <div *ngIf=\"f.toEmail.errors.required\">Valid email is required.</div>\n <div *ngIf=\"f.toEmail.errors.email\">Please enter a valid email.</div>\n </div>\n </div>\n </div>\n <div class=\"row mb-0\">\n <label class=\"col-sm-4\" for=\"subActive\">CC Emails</label> \n <div class=\"col-sm-8 px-0\" formArrayName=\"rmReportingConfigCcemails\">\n <ul class=\"collection col-12 row s6\">\n <li *ngFor=\"let cc of rmReportingConfigCcemails.controls; let i=index\" class=\"collection-item col-md-6 px-0\">\n <span [formGroupName]=\"i\">\n <div class=\"row mt-1\">\n <div class=\"col col-10 p-0\">\n <input type=\"text\" class=\"form-control\" formControlName=\"ccEmail\"\n [ngClass]=\"{ 'is-invalid': submitted && cc.get('ccEmail')?.errors }\">\n <div *ngIf=\"submitted && cc.get('ccEmail')?.errors\" class=\"invalid-feedback\">\n <div *ngIf=\"cc.get('ccEmail')?.errors?.required\">Valid email is required.</div>\n <div *ngIf=\"cc.get('ccEmail')?.errors?.email\">Please enter a valid email.</div>\n </div>\n </div>\n <div class=\"col col-1 p-0 pr-3\">\n <a class=\"a-btn text-danger\" style=\"cursor: pointer;\" (click)=\"removeReportingCC(i)\">\n <i-feather name=\"trash-2\" style=\"margin-top:5px;\"> </i-feather>\n </a>\n </div>\n </div>\n </span>\n </li> \n </ul>\n\n <a class=\"a-btn ms-1\" style=\"cursor: pointer;\" (click)=\"addNewCC()\">\n <i-feather name=\"plus\"> </i-feather>\n </a>\n </div> \n </div>\n\n <div class=\"row mb-2\">\n <label class=\"col-sm-4\" for=\"name\">Is Rollup</label>\n <div class=\"col-sm-8\">\n <input type=\"checkbox\" formControlName=\"isRollup\" class=\"form-check-input\" />\n </div>\n </div>\n\n <div class=\"row mb-2\">\n <label class=\"col-sm-4\" for=\"name\">Report type</label>\n <div class=\"col-sm-8\">\n <div class=\"radio-inline\">\n <label class=\"radio-label\">\n <input type=\"radio\" value=\"Simple\" formControlName=\"reportType\" (click)=\"clearEditFormCampaigns()\"\n [attr.disabled]=\"!(ReportingConfig?.id) || ReportingConfig.id === '' ? null : true\"\n [ngClass]=\"{ 'is-invalid': submitted && f.reportType.errors}\">\n <span> Simple</span>\n </label>\n \n <label class=\"radio-label\">\n <input type=\"radio\" value=\"Advanced\" formControlName=\"reportType\" (click)=\"clearEditFormCampaigns()\"\n [attr.disabled]=\"!(ReportingConfig?.id) || ReportingConfig.id === '' ? null : true\"\n [ngClass]=\"{ 'is-invalid': submitted && f.reportType.errors }\">\n <span> Advanced</span>\n </label>\n </div>\n <div *ngIf=\"submitted && f.reportType?.errors\" style=\"font-size: 80%; color: #fd625e;\">\n <div *ngIf=\"f.reportType?.errors?.required\">Report type is required.</div>\n </div>\n </div>\n </div>\n\n <div class=\"row mb-3\"\n *ngIf=\"f.reportType.value === 'Simple' || getEditFormCampaignsByPlatform('Facebook').length >= 0 || getEditFormCampaignsByPlatform('Google').length >= 0\">\n <label class=\"col-sm-4\" for=\"name\" *ngIf=\"f.reportType.value === 'Advanced'\">Add Campaigns. </label>\n <label class=\"col-sm-4\" for=\"name\" *ngIf=\"f.reportType.value === 'Simple'\">Add platform campaigns.</label>\n <div class=\"col col-8\" *ngIf=\"f.reportType.value\">\n\n <ng-container *ngFor=\"let platform of ['Facebook', 'Google']\">\n <app-client-reporting-update-select-campaigns-modal\n *ngIf=\"f.reportType.value === 'Simple' || getEditFormCampaignsByPlatform(platform).length >= 0\"\n [ReportType]=\"f.reportType.value\" [Platform]=\"platform\" [CampaignsData]=\"CampaignsData\"\n (oSaveClicked)=\"addCampaignToConfig($event)\" [CurrentlySelected]=\"getEditFormCampaignsByPlatform(platform)\">\n </app-client-reporting-update-select-campaigns-modal>\n </ng-container>\n\n </div>\n\n\n <div class=\"col col-8\" *ngIf=\"submitted && f.rmReportingConfigCampaigns?.errors\"\n style=\"font-size: 80%; color: #fd625e;\">\n <div *ngIf=\"f.rmReportingConfigCampaigns?.errors?.required\">Please add at least 1 (one) campaign.</div>\n </div>\n </div>\n\n <div formArrayName=\"rmReportingConfigCampaigns\" class=\"row\">\n <div class=\"col col-md-6 px-1\" *ngFor=\"let crc of rmReportingConfigCampaigns.controls; let i=index\">\n <div class=\"card\">\n <div class=\"card-body bg-light text-black\" [formGroupName]=\"i\">\n\n <div class=\"row\">\n <label class=\"col col-5 px-1\">Platform</label>\n <div class=\"col col-7\">\n <h6 class=\"card-subtitle mb-2 text-muted\">{{ crc.get('platform')?.value }}</h6>\n </div>\n </div>\n\n <div class=\"row\">\n <label class=\"col col-5 px-1\">Campaign Name</label>\n <div class=\"col col-7\">\n <h6 class=\"card-subtitle mb-2 text-muted\">{{ crc.get('campaignName')?.value }}</h6>\n </div>\n </div>\n \n <div class=\"row\">\n <label class=\"col col-8 px-1\">Ad Account Info ({{ crc.get('platform')?.value }}):</label>\n <div class=\"\">\n <table id=adAcccounts style=\"width: 100%;\" *ngIf=\"crc.get('adAccounts')?.value.length != 0\">\n <tr>\n <td style=\"width: 35%;\"><strong>Ad Account ID</strong></td>\n <td style=\"width: 35%;\"><strong>Ad Campaign ID</strong></td>\n <td style=\"width: 30%;\"><strong>Ad Label</strong></td>\n </tr>\n <tr *ngFor=\"let ad of crc.get('adAccounts')?.value;\">\n <td>{{ad.platformAccountID}}</td>\n <td>{{ad.platformCampaignID}}</td>\n <td>{{ad.adLabel}}</td>\n </tr>\n </table>\n </div>\n </div>\n\n <!-- <div class=\"row\">\n <label class=\"col col-5 px-1\" style=\"padding-right: 0 !important;\">Platform Campaign Id</label>\n <div class=\"col col-7\">\n <h5 class=\"card-title\">{{ crc.get('platformCampaignId')?.value }}</h5>\n </div>\n </div>\n\n <div class=\"row\">\n <label class=\"col col-5 px-1\" style=\"padding-right: 0 !important;\">Platform Account Id</label>\n <div class=\"col col-7\">\n <h5 class=\"card-title\">{{ crc.get('platformAccountId')?.value }}</h5>\n </div>\n </div> -->\n\n <div class=\"row\">\n <label class=\"col col-5\"></label>\n <div class=\"col col-7\">\n <a class=\"a-btn text-danger\" style=\"cursor: pointer;\" (click)=\"removeReportingConfigCampaign(i)\">\n <i-feather name=\"trash-2\" style=\"margin-top:5px;\"> </i-feather>\n </a>\n </div>\n </div>\n\n </div>\n </div>\n </div>\n </div>\n\n </div>\n <div class=\"modal-footer\" style=\"cursor: move; display: flex; flex-direction: row; justify-content: space-between; align-content: center; align-items: center; flex-wrap: wrap;\" cdkDragHandle>\n <button type=\"button\" class=\"btn btn-orange\" (click)=\"activeModal.close('Close click')\">Cancel</button>\n <button type=\"submit\" class=\"blue-button\">Save</button>\n </div>\n </form>\n</div>","import { Component, OnInit } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { ReplaySubject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { PAGE_NAMES } from '../../../core/helpers/constants';\r\nimport { IPermission } from '../../../core/models/auth.models';\r\nimport { IClient } from '../../../core/models/clients.models';\r\nimport { LoadDataFromServer } from '../../../shared/components/datatable/datatable.model';\r\nimport { AppService } from '../../../store/app.service';\r\nimport { ClientsApiService } from '../clients.apiservice';\r\nimport { ClientsService } from '../clients.service';\r\nimport { MergeClientsModal } from '../../../shared/modals/merge-clients/merge-clients.component';\r\n\r\n@Component({\r\n selector: 'app-clients',\r\n templateUrl: './clients-main.component.html',\r\n styleUrls: ['./clients-main.component.scss']\r\n})\r\nexport class ClientsMainComponent implements OnInit {\r\n doWhat: IPermission = {} as IPermission;\r\n columns = [\r\n { title: 'First Name', field: 'firstName', sortable: true, searchable: true },\r\n { title: 'Last Name', field: 'lastName', sortable: true, searchable: true },\r\n { title: 'Company', field: 'brand', sortable: true, searchable: true },\r\n { title: 'DMS', field: 'dmsName', sortable: true, searchable: true },\r\n { title: 'Sales Rep', field: 'salesRep', sortable: true, searchable: true },\r\n { title: 'Phone', field: 'phone', sortable: true, searchable: true },\r\n { title: 'Email', field: 'email', sortable: true, searchable: true },\r\n ]\r\n clientsData: Array<IClient>\r\n savedSearchId: any;\r\n private loadEvent!: LoadDataFromServer;\r\n dataTotalCount: number = 0;\r\n private destroyed$: ReplaySubject<boolean> = new ReplaySubject(1);\r\n constructor(\r\n private modalService: NgbModal,\r\n private router: Router,\r\n private route: ActivatedRoute,\r\n private cService: ClientsService,\r\n private clientService: ClientsApiService,\r\n private appService: AppService) {\r\n this.clientsData = new Array<IClient>();\r\n }\r\n\r\n ngOnInit(): void {\r\n this.appService.setPageTitle$('Clients');\r\n this.doWhat = this.appService.getUserRolesForPage(PAGE_NAMES.Clients);\r\n this.appService.getAllClients$()\r\n .pipe(takeUntil(this.destroyed$)\r\n )\r\n .subscribe((response: any) => {\r\n this.clientsData = [...response.data];\r\n this.dataTotalCount = response.totalCount;\r\n });\r\n this.savedSearchId = this.route.snapshot.queryParams['savedsearchid'];\r\n }\r\n\r\n onLoadingData(event: LoadDataFromServer) {\r\n this.loadEvent = event;\r\n this.appService.fetchAllClients({\r\n SavedSearchId: this.savedSearchId,\r\n ...this.loadEvent\r\n });\r\n }\r\n\r\n editRow(evt: any) {\r\n this.cService.openEditClientModal(evt, {\r\n SavedSearchId: this.savedSearchId,\r\n ...this.loadEvent\r\n });\r\n }\r\n\r\n deleteRows(evt: any) {\r\n this.clientService.deleteClient(evt)\r\n .pipe(takeUntil(this.destroyed$))\r\n .subscribe((response: any) => {\r\n this.appService.fetchAllClients({\r\n SavedSearchId: this.savedSearchId,\r\n ...this.loadEvent\r\n });\r\n })\r\n }\r\n\r\n getRowLink(row: any) {\r\n return `/pages/client-details/${row.id}`;\r\n }\r\n\r\n\r\n ngAfterViewInit() {\r\n\r\n }\r\n\r\n handleMergeRecordsClicked(evt: string[]) {\r\n let clientsToMerge = this.clientsData.filter(f => evt.includes(f.id));\r\n let size = clientsToMerge.length == 2 ? 'lg' : 'xl';\r\n\r\n const dialogRef = this.modalService.open(MergeClientsModal, { size: size });\r\n\r\n dialogRef.componentInstance.clientsToMerge = clientsToMerge;\r\n const dialogSubmitSubscription = dialogRef.componentInstance.oMergeComplete.subscribe((r: any) => {\r\n this.appService.fetchAllClients({\r\n SavedSearchId: this.savedSearchId,\r\n ...this.loadEvent\r\n });\r\n dialogSubmitSubscription.unsubscribe();\r\n })\r\n }\r\n\r\n async export() {\r\n this.clientService.exportClients({\r\n SavedSearchId: this.savedSearchId,\r\n ...this.loadEvent\r\n }).then((x: any) => {\r\n var newBlob = new Blob([x], { type: \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\" });\r\n const data = window.URL.createObjectURL(newBlob);\r\n var link = document.createElement('a');\r\n link.href = data;\r\n link.download = \"clients.xlsx\";\r\n link.dispatchEvent(new MouseEvent('click', { bubbles: true, cancelable: true, view: window }));\r\n setTimeout(function () {\r\n // For Firefox it is necessary to delay revoking the ObjectURL\r\n window.URL.revokeObjectURL(data);\r\n link.remove();\r\n }, 100);\r\n });\r\n }\r\n}\r\n","<app-campaign-datatable [iCanRead]=\"doWhat.canRead\" [iCanWrite]=\"doWhat.canWrite\" [iCanDelete]=\"doWhat.canDelete\"\r\n [iColumns]=\"columns\" [iSortColumn]=\"'lastName,firstName'\" [iRowLinkHandler]=\"getRowLink\"\r\n (oDeleteRows)=\"deleteRows($event)\" (oEditRow)=\"editRow($event)\" [iData$]=\"clientsData\" [iShowMerge]=\"doWhat.canWrite\"\r\n (oMergeRecords)=\"handleMergeRecordsClicked($event)\" [iIsServerLoading]=\"true\" [iTotalCount]=\"dataTotalCount\"\r\n (oLoadDataFromServer)=\"onLoadingData($event)\" (oCustomDataExport)=\"export()\" [iIsCustomDataExport]=\"true\">\r\n</app-campaign-datatable>","import { Injectable } from '@angular/core';\nimport { IClient } from '../../core/models/clients.models';\nimport { HttpService } from '../../shared/http/base.http';\n@Injectable()\nexport class ClientsApiService extends HttpService {\n getAllClients(request: any) {\n return this.post<any>('/clients/getAllClients', request);\n }\n getAllProspectClients(request: any) {\n return this.post<any>('/clients/getAllProspectClients', request);\n }\n getClientDetails(id: any) {\n return this.get<IClient>('/clients/getClientDetails?id=' + id)\n }\n saveClient(data: IClient) {\n return this.post('/clients/saveClient', data, { 'Content-Type': 'application/json; charset=utf-8' });\n }\n deleteClient(ids: Array<string>) {\n return this.post('/clients/deleteClient', ids, { 'Content-Type': 'application/json; charset=utf-8' });\n }\n mergeClients(mergedClient: any, primaryClientId: string, clientIdsToMerge: string[]) {\n let url_ = \"/clients/mergeclients?\";\n if (primaryClientId !== undefined && primaryClientId !== null)\n url_ += \"primaryClientId=\" + encodeURIComponent(\"\" + primaryClientId) + \"&\";\n if (clientIdsToMerge !== undefined && clientIdsToMerge !== null)\n clientIdsToMerge && clientIdsToMerge.forEach(item => { url_ += \"clientIdsToMerge=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n\n url_ = url_.replace(/[?&]$/, \"\");\n // const content_ = JSON.stringify(mergedClient);\n\n return this.post(url_, mergedClient, { 'Content-Type': 'application/json; charset=utf-8' });\n }\n async exportClients(request: any) {\n return await this.postDownload('/clients/export', request);\n }\n\n async exportProspectClients(request: any) {\n return await this.postDownload('/clients/exportProspect', request);\n }\n}\n","import { Injectable } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport Swal from 'sweetalert2';\r\nimport { PAGE_NAMES } from '../../core/helpers/constants';\r\nimport { IClient } from '../../core/models/clients.models';\r\nimport { AddClientModal } from '../../shared/modals/add-client/add-client.component';\r\nimport { AppService } from '../../store/app.service';\r\nimport { ClientsApiService } from './clients.apiservice';\r\n\r\n@Injectable()\r\nexport class ClientsService {\r\n\r\n public activeClient: IClient = {} as IClient;\r\n\r\n constructor(\r\n private modalService: NgbModal,\r\n private appService: AppService,\r\n private clientService: ClientsApiService,\r\n private router: Router\r\n ) {\r\n\r\n }\r\n\r\n openEditClientModal(evt: any, request: any) {\r\n const dialogRef = this.modalService.open(AddClientModal, { size: 'lg' });\r\n if (evt.id === -1) {\r\n var d = this.appService.getActiveRoute$().value.url.split('/');\r\n evt.id = d[d.length - 1]\r\n }\r\n dialogRef.componentInstance.iId = evt.id;\r\n const dialogSubmitSubscription = dialogRef.componentInstance.oSaveClicked.subscribe((r: IClient) => {\r\n\r\n this.clientService.saveClient(r)\r\n .subscribe((response: any) => {\r\n dialogRef.dismiss();\r\n const sub = this.appService.getActivePage$()\r\n .subscribe(page => {\r\n if (page === PAGE_NAMES.Clients)\r\n this.appService.fetchAllClients(request);\r\n else if (page === PAGE_NAMES.ClientDetails)\r\n this.appService.setRefreshSignal$(PAGE_NAMES.ClientDetails, r.id);\r\n else if (page === PAGE_NAMES.ProspectsDetails)\r\n this.appService.setRefreshSignal$(PAGE_NAMES.ProspectsDetails, r.id);\r\n });\r\n sub.unsubscribe();\r\n })\r\n dialogSubmitSubscription.unsubscribe();\r\n })\r\n }\r\n\r\n\r\n\r\n deleteClient() {\r\n var d = this.appService.getActiveRoute$().value.url.split('/');\r\n var cId = d[d.length - 1];\r\n Swal.fire({\r\n title: 'Are you sure?',\r\n text: \"You won't be able to revert this!\",\r\n icon: 'warning',\r\n showCancelButton: true,\r\n confirmButtonColor: '#3085d6',\r\n cancelButtonColor: '#d33',\r\n confirmButtonText: 'Yes, delete it!'\r\n }).then((result) => {\r\n if (result.isConfirmed) {\r\n this.clientService.deleteClient([cId])\r\n .subscribe((r: any) => {\r\n if (r.good) {\r\n this.router.navigate(['/pages/clients']);\r\n }\r\n })\r\n }\r\n })\r\n }\r\n\r\n deleteProspect() {\r\n var d = this.appService.getActiveRoute$().value.url.split('/');\r\n var cId = d[d.length - 1];\r\n Swal.fire({\r\n title: 'Are you sure?',\r\n text: \"You won't be able to revert this!\",\r\n icon: 'warning',\r\n showCancelButton: true,\r\n confirmButtonColor: '#3085d6',\r\n cancelButtonColor: '#d33',\r\n confirmButtonText: 'Yes, delete it!'\r\n }).then((result) => {\r\n if (result.isConfirmed) {\r\n this.clientService.deleteClient([cId])\r\n .subscribe((r: any) => {\r\n if (r.good) {\r\n this.router.navigate(['/pages/prospects']);\r\n }\r\n })\r\n }\r\n })\r\n }\r\n\r\n}\r\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { ReplaySubject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { PAGE_NAMES, ROLES, ROLES_TYPE } from '../../../core/helpers/constants';\nimport { getRolesForPage } from '../../../core/helpers/utility';\nimport { UtilityService } from '../../../core/helpers/utility.service';\nimport { IClient } from '../../../core/models/clients.models';\nimport { ITask } from '../../../core/models/tasks.models';\nimport { RefreshSignals } from '../../../layouts/sidebar/menu.model';\nimport { IColumn, LoadDataFromServer } from '../../../shared/components/datatable/datatable.model';\nimport { AppService } from '../../../store/app.service';\nimport { TasksApiService } from '../../tasks/tasks.apiservice';\nimport { TasksService } from '../../tasks/tasks.service';\nimport { ClientsApiService } from '../clients.apiservice';\nimport { ICampaign } from '../../../core/models/campaigns.model';\nimport { CampaignsApiService } from '../../campaigns/campaigns.apiservice';\nimport { IPermission } from '../../../core/models/auth.models';\nimport { OrdersApiService } from '../../orders/orders.apiservice';\nimport { SubscriptionApiService } from '../../subscriptions/subscription.apiservice';\n\n@Component({\n selector: 'app-prospect-details',\n templateUrl: './prospect-details.component.html',\n styleUrls: ['./prospect-details.component.scss']\n})\n\nexport class ProspectDetailsComponent implements OnInit, OnDestroy {\n\n ordersData = new Array<any>();\n checkingOrders: Array<any> = new Array<any>();\n clientId: string = '';\n subscriptions = new Array<any>(); \n\n active = 1;\n public ROLES = ROLES;\n columnsTasks: Array<IColumn> = [];\n compltedTasksColumns: Array<IColumn> = []\n tasksData: Array<ITask> = new Array<ITask>();\n completedTasksData: Array<ITask> = new Array<ITask>();\n permTasksData: Array<ITask> = new Array<ITask>();\n clientData: IClient\n\n roleOptions: any = {};\n isAdmin: boolean = false;\n public userRoles: Array<number> = [];\n isExternal: boolean = false;\n\n orderColumns = [\n { title: 'ID', field: 'numericId', sortable: true, searchable: true },\n { title: 'From', field: 'startDate', sortable: true, searchable: true },\n { title: 'To', field: 'endDate', sortable: true, searchable: true },\n { title: 'Amount', field: 'amount', sortable: true, searchable: true, pipe: 'Currency', pipeArgs: ['USD', 'symbol', '1.0-2'] },\n { title: 'Status', field: 'status', sortable: true, searchable: true, type: 'html' },\n { title: 'Subscription ID', field: 'subscriptionNumericId', sortable: true, searchable: true, anchorLink: true, anchorType: 'subscription', anchorParamsField: 'subscriptionId' },\n { title: 'Campaign', field: 'campaignName', sortable: true, searchable: true, pipe: 'cleanupCampaign' },\n { title: 'Generated On', field: 'generatedOn', sortable: true, searchable: true, pipe: 'P_AppDateFormat', pipeArgs: ['YYYY-MM-DD HH:mm'] },\n ]\n\n doWhat: IPermission = {} as IPermission;\n showTasks: boolean = true;\n showCompletedTasks: boolean = false;\n showOnlyMyTasks: boolean = true;\n userId: string = '';\n\n dataTotalCount: number = 0;\n private loadEvent!: LoadDataFromServer;\n\n campaignsData: Array<ICampaign> = [];\n columnsCampaign = [\n { title: 'Name', field: 'name', sortable: true, searchable: true },\n { title: 'Client', field: 'clientName', sortable: true, searchable: true },\n { title: 'Platform', field: 'platform', sortable: true, searchable: true },\n { title: 'DMS', field: 'dmsName', sortable: true, searchable: true },\n { title: 'Stage', field: 'stageId', sortable: true, pipe: 'P_CampaignStageTitle', searchable: true },\n { title: 'Active Subscription', field: 'subscriptionActive', pipe: 'P_Boolean', searchable: true },\n ];\n \n private destroyed$: ReplaySubject<boolean> = new ReplaySubject(1);\n constructor(\n private route: ActivatedRoute,\n public uService: UtilityService,\n private router: Router,\n private taskApiService: TasksApiService,\n private tasksService: TasksService,\n private appService: AppService,\n private clientService: ClientsApiService,\n private campaignsService: CampaignsApiService,\n private ordersApiService: OrdersApiService,\n private subscriptionService: SubscriptionApiService) {\n this.userRoles = [...this.uService.getUserRoles()];\n this.clientData = {} as IClient;\n this.columnsTasks.push({ title: 'Title', field: 'title', sortable: true, searchable: true } as IColumn);\n this.columnsTasks.push({ title: 'Client', field: 'clientName', sortable: true, searchable: true } as IColumn);\n this.columnsTasks.push({ title: 'Campaign', field: 'campaignName', sortable: true, searchable: true, anchorLink: true, anchorType: 'campaign', anchorParamsField: 'campaignId' } as IColumn);\n this.columnsTasks.push({ title: 'Due Date', field: 'dueDate', sortable: true, pipe: 'P_AppDateFormat', pipeArgs: ['MM/DD/YYYY'] } as IColumn);\n this.columnsTasks.push({ title: 'Assigned User', field: 'assignedUserName', sortable: true, visible: (this.userRoles.includes(ROLES.Admin.Code) || this.userRoles.includes(ROLES.TechServices.Code)) } as IColumn);\n\n\n this.compltedTasksColumns.push({ title: 'Title', field: 'title', sortable: true, searchable: true } as IColumn);\n this.compltedTasksColumns.push({ title: 'Client', field: 'clientName', sortable: true, searchable: true } as IColumn);\n this.compltedTasksColumns.push({ title: 'Campaign', field: 'campaignName', sortable: true, searchable: true, anchorLink: true, anchorType: 'campaign', anchorParamsField: 'campaignId' } as IColumn);\n this.compltedTasksColumns.push({ title: 'Completed On', field: 'completedOn', sortable: true, pipe: 'P_AppDateFormat', pipeArgs: ['YYYY/MM/DD HH:mm', true] } as IColumn);\n this.compltedTasksColumns.push({ title: 'Assigned User', field: 'assignedUserName', sortable: true, visible: (this.userRoles.includes(ROLES.Admin.Code) || this.userRoles.includes(ROLES.TechServices.Code)) } as IColumn);\n\n //new\n this.campaignsData = new Array<ICampaign>();\n }\n\n ngOnInit(): void {\n this.appService.setPageTitle$('Prospect');\n this.appService.setRefreshSignal$(PAGE_NAMES.ProspectsDetails, '');\n\n this.appService.getActiveUser$()\n .pipe(takeUntil(this.destroyed$))\n .subscribe(u => {\n if (u.id !== undefined) {\n this.userId = u.id;\n }\n this.isExternal = u.type == ROLES_TYPE.External\n var r = getRolesForPage(u.roles, PAGE_NAMES.Clients);\n this.isAdmin = r.isAdmin;\n if (this.isAdmin) {\n this.showOnlyMyTasks = false;\n }\n if (r.options)\n this.roleOptions = JSON.parse(r.options!);\n })\n let id = this.route.snapshot.paramMap.get('id');\n this.clientId = id!;\n\n if (id) {\n this.clientService.getClientDetails(id)\n .pipe(takeUntil(this.destroyed$))\n .subscribe((response: any) => {\n this.clientData = response.data;\n });\n }\n const sub = this.appService.getRefreshSignal$(PAGE_NAMES.ProspectsDetails);\n if (sub !== null) {\n sub.pipe(takeUntil(this.destroyed$))\n .subscribe((r: RefreshSignals) => {\n this.doRefresh(r.id);\n })\n }\n \n this.configureTasksService();\n }\n\n doRefresh(id: string) {\n if (id !== \"\")\n this.clientService.getClientDetails(id)\n .pipe(takeUntil(this.destroyed$))\n .subscribe((response: any) => {\n this.clientData = response.data;\n });\n }\n onTaskRowClick(evt: any) {\n this.tasksService.openEditTaskModal(evt, this.isAdmin || this.roleOptions.tasks.canEdit, this.isAdmin || this.roleOptions.tasks.canDelete);\n }\n\n onCampaignsRowClick(evt: any) {\n this.router.navigate(['/pages/campaign-details', evt.id]);\n }\n\n loadTasksData() {\n let id = this.route.snapshot.paramMap.get('id');\n if (id) {\n this.taskApiService.getTasksByClient(id)\n .pipe(takeUntil(this.destroyed$))\n .subscribe((response: any) => {\n this.tasksData = [...response.data.filter((x: ITask) => (x.isCompleted === null || x.isCompleted === false) && (this.showOnlyMyTasks ? x.assignedUserId.includes(this.userId) : true))];\n this.completedTasksData = [...response.data.filter((x: ITask) => (x.isCompleted && x.isCompleted === true) && (this.showOnlyMyTasks ? x.assignedUserId.includes(this.userId) : true))];\n });\n }\n }\n\n loadTasks() {\n let id = this.route.snapshot.paramMap.get('id');\n if (id) {\n this.taskApiService.getTasksByClient(id)\n .pipe(takeUntil(this.destroyed$))\n .subscribe((response: any) => {\n this.tasksData = [...response.data.filter((x: ITask) => (x.isCompleted === null || x.isCompleted === false) && (this.showOnlyMyTasks ? x.assignedUserId.includes(this.userId) : true))];\n this.permTasksData = [...response.data];\n });\n }\n }\n\n loadCampaigns() {\n if (this.clientId) {\n this.campaignsService.getCampaignsByClient(this.clientId)\n .pipe(takeUntil(this.destroyed$))\n .subscribe((response: any) => {\n this.campaignsData = response.data.map((campaign: any) => {\n if (campaign.stageId === 8) {\n campaign.statusColor = 'gray';\n }\n return campaign;\n });\n });\n }\n }\n\n configureTasksService() {\n this.tasksService.onSave.pipe(takeUntil(this.destroyed$))\n .subscribe((v: any) => {\n if (v) {\n this.loadTasksData();\n }\n });\n this.tasksService.onDelete.pipe(takeUntil(this.destroyed$))\n .subscribe((v: any) => {\n if (v) {\n this.loadTasksData();\n }\n });\n this.tasksService.onMarkAsComplete.pipe(takeUntil(this.destroyed$))\n .subscribe((v: any) => {\n if (v) {\n this.loadTasksData();\n }\n });\n }\n\n ngAfterViewInit() {}\n\n ngOnDestroy(): void {\n this.destroyed$.next(true);\n this.destroyed$.complete();\n }\n\n onAddCampaign() {\n this.router.navigate(['pages/edit-campaign/']);\n }\n\n onAddTask() {\n this.tasksService.openEditTaskModal({ id: null, clientId: this.clientData.id }, this.isAdmin || this.roleOptions.tasks.canEdit, this.isAdmin || this.roleOptions.tasks.canDelete);\n }\n\n //new\n getCampaignRowLink(row: any) {\n return `/pages/campaign-details/${row.id}`;\n }\n \n //new3\n changeShowTasks() {\n if (this.showCompletedTasks) {\n this.showTasks = true;\n this.showCompletedTasks = false;\n }\n }\n \n changeShowCompletedTasks() {\n if (this.showTasks) {\n this.completedTasksData = this.permTasksData.filter((x: ITask) => (x.isCompleted && x.isCompleted === true) && (this.showOnlyMyTasks ? x.assignedUserId.includes(this.userId) : true));\n this.showTasks = false;\n this.showCompletedTasks = true;\n }\n }\n\n onShowMyTasksChange() {\n this.loadTasksData();\n }\n\n // Orders\n onClick(event: any) {\n this.router.navigate(['/pages/orders/details', event.id]);\n }\n\n loadOrders() {\n this.checkingOrders = [];\n this.ordersApiService.getAllOrders()\n .pipe()\n .subscribe((response: any) => {\n this.ordersData = response.orders;\n this.dataTotalCount = this.ordersData.length;\n this.subscriptionService.getAllSubscriptions(null, this.clientId!)\n .pipe(takeUntil(this.destroyed$))\n .subscribe((response: any) => {\n if (response.subscriptions) {\n this.subscriptions = response.subscriptions.map((x:any) => {x.dms = x.campaigns[0].dms; x.salesrep = x.campaigns[0].salesRep; return x});\n this.subscriptions.forEach((subscription: any) => {\n var orders = this.ordersData.filter((order: any) => order.subscriptionNumericId === subscription.numericId);\n orders.forEach((order: any) => {\n order.status = order.paid && order.isActive ? '<label style=\"color:green\">Paid ' + order.refundText + '</label>' : (order.paid && !order.isActive ? '<label style=\"color:red\">Voided</label>' : (!order.paid && order.isActive ? '<label style=\"color:red\">Not Paid</label>' : '<label style=\"color:red\">Canceled</label>'));\n order.clientId = subscription.campaigns[0].clientId;\n this.checkingOrders.push(order);\n });\n });\n }\n });\n });\n }\n}","<div class=\"row\">\n <div class=\"col-md-12\">\n <div class=\"card-body\">\n <div class=\"details_top\">\n <h2 style=\"text-align: center;\">{{clientData?.firstName}} {{clientData?.lastName}}</h2>\n <h4 style=\"text-align: center;\">{{clientData?.brand}}</h4>\n\n <div class=\"row row-gap-4 d-flex align-items-stretch\" style=\"margin-top: 25px;\">\n <div class=\"col-12 \" [ngClass]=\"(isExternal) ? 'col-xl-6' : 'col-xl-6'\">\n <div class=\"card details-card\">\n <h5 class=\"card-title\">Contact Info:</h5>\n <div class=\"card-body\">\n <p><strong>Email:</strong> {{clientData?.email}} <a *ngIf=\"clientData.email\" style=\"color: inherit;\" href=\"mailto:{{ clientData.email }}\"><i-feather name=\"mail\" style=\"width: 1.3em; height: 1em; stroke-width: 1px;\"></i-feather></a></p>\n <p><strong>Phone:</strong> {{clientData?.phone}}</p>\n <p><strong>Address:</strong><br *ngIf=\"clientData?.brandAddress\" />\n {{clientData?.brandAddress}}</p>\n </div>\n </div>\n </div>\n\n <div class=\"col-12 \" [ngClass]=\"(isExternal) ? 'col-xl-6' : 'col-xl-6'\">\n <div class=\"card details-card\">\n <h5 class=\"card-title\">Additional Info:</h5>\n <div class=\"card-body\">\n <p><strong>DMS:</strong> {{ clientData?.dmsName }}</p>\n <p><strong>Sales Rep:</strong> {{ clientData?.salesRep }}</p>\n <p *ngIf=\"!isExternal\"><strong>Owner User Record:</strong> {{clientData?.clientOwner}}</p>\n \n <p><strong>Employee Users:</strong><br *ngIf=\"clientData?.employees?.length !== 0\" />\n <span *ngFor=\"let e of clientData.employees; let last = last\">\n {{ e.firstName }} {{ e.lastName }}<ng-container *ngIf=\"!last\">, </ng-container>\n </span>\n </p>\n\n </div>\n </div>\n </div>\n\n </div>\n </div>\n <div class=\"dv-custom-navs\">\n <ul ngbNav #nav=\"ngbNav\" [(activeId)]=\"active\" class=\"nav-tabs\">\n <li [ngbNavItem]=\"1\" [ngStyle]=\"{'z-index': (active === 1) ? '5' : '0'}\" *ngIf=\"isAdmin || (roleOptions.notes && roleOptions.notes.canRead)\">\n <a ngbNavLink>\n <i-feather name=\"paperclip\"></i-feather><label>NOTES</label>\n </a>\n <ng-template ngbNavContent>\n <app-notes [iIsAdmin]=\"isAdmin\" [iIsExternal]=\"isExternal\"\n [iCanDelete]=\"isAdmin || roleOptions.notes.canDelete\"\n [iCanWrite]=\"isAdmin || roleOptions.notes.canWrite\" [iParentId]=\"clientData.id\" [iType]=\"2\">\n </app-notes>\n </ng-template>\n </li>\n <li [ngbNavItem]=\"2\" style=\"left: -5px;\" [ngStyle]=\"{'z-index': (active === 2) ? '5' : '0'}\" *ngIf=\"isAdmin || (roleOptions.campaigns && roleOptions.campaigns.canRead)\" (click)=\"loadCampaigns()\">\n <a ngbNavLink>\n <i-feather name=\"edit\"></i-feather><label>CAMPAIGNS</label>\n </a>\n <ng-template ngbNavContent>\n <div style=\"background-color: white; padding: 24px 16px 8px 16px;\">\n <app-campaign-datatable [iCanRead]=\"isAdmin || (roleOptions.campaigns && roleOptions.campaigns.canRead)\"\n [iCanWrite]=\"isAdmin || (roleOptions.campaigns && roleOptions.campaigns.canWrite)\" [iShowSelect]=\"false\"\n [iCanDelete]=\"isAdmin || (roleOptions.campaigns && roleOptions.campaigns.canDelete)\"\n (oRowClick)=\"onCampaignsRowClick($event)\" [iColumns]=\"columnsCampaign\" [iShowActions]=\"false\"\n [iData$]=\"campaignsData\" [iRowLinkHandler]=\"getCampaignRowLink\">\n </app-campaign-datatable>\n </div>\n </ng-template>\n </li>\n <li [ngbNavItem]=\"3\" style=\"left: -10px;\" [ngStyle]=\"{'z-index': (active === 3) ? '5' : '0'}\" *ngIf=\"isAdmin || (roleOptions.tasks && roleOptions.tasks.canRead)\" (click)=\"loadTasks()\">\n <a ngbNavLink>\n <i-feather name=\"list\"></i-feather><label>TASKS</label>\n </a>\n <ng-template ngbNavContent>\n <div style=\"background-color: white;\">\n <div style=\"display: flex; padding: 8px 16px 16px 16px; justify-content: flex-end; align-items: center;\">\n <button class=\"blue-button\" type=\"button\" (click)=\"onAddTask()\">ADD TASK</button>\n </div>\n <div fxLayout=\"row\" fxLayoutAlign=\"space-between center\">\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\">\n <div (click)=\"changeShowTasks()\" style=\"padding-left: 16px; padding-right: 16px;\">\n <h2 [style.color]=\"showTasks ? '#495057' : '#EBE9EB'\" [style.border-bottom]=\"showTasks ? '2px solid rgb(73, 80, 87)' : '2px solid #EBE9EB'\" style=\"padding: 0px 16px 8px 16px; margin-bottom: 0px !important; cursor: pointer;\">TO-DO</h2>\n </div>\n <div (click)=\"changeShowCompletedTasks()\" style=\"padding-left: 16px; padding-right: 16px;\">\n <h2 [style.color]=\"showCompletedTasks ? '#495057' : '#EBE9EB'\" [style.border-bottom]=\"showCompletedTasks ? '2px solid rgb(73, 80, 87)' : '2px solid #EBE9EB'\" style=\"padding: 0px 16px 8px 16px; margin-bottom: 0px !important; cursor: pointer;\">COMPLETED</h2>\n </div>\n </div>\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\" style=\"padding-right: 16px;\">\n <button type=\"button\" class=\"gray-button\">\n <label for=\"showMyTasksCheckbox\">\n <input type=\"checkbox\" id=\"showMyTasksCheckbox\" [(ngModel)]=\"showOnlyMyTasks\" (change)=\"onShowMyTasksChange()\" value=\"Show Only My Tasks\">\n Show Only My Tasks\n </label>\n </button>\n </div>\n </div>\n <app-tasks-datatable *ngIf=\"showTasks\" [iCanRead]=\"isAdmin || (roleOptions.tasks && roleOptions.tasks.canRead)\"\n [iCanWrite]=\"isAdmin || (roleOptions.tasks && roleOptions.tasks.canWrite)\"\n [iCanDelete]=\"isAdmin || (roleOptions.tasks && roleOptions.tasks.canDelete)\"\n (oRowClick)=\"onTaskRowClick($event)\" [iSortColumn]=\"'title'\" [iColumns]=\"columnsTasks\" [iShowActions]=\"false\"\n [iData$]=\"tasksData\">\n </app-tasks-datatable>\n <app-tasks-datatable *ngIf=\"showCompletedTasks\" [iCanRead]=\"isAdmin || (roleOptions.tasks && roleOptions.tasks.canRead)\"\n [iCanWrite]=\"isAdmin || (roleOptions.tasks && roleOptions.tasks.canWrite)\"\n [iCanDelete]=\"isAdmin || (roleOptions.tasks && roleOptions.tasks.canDelete)\"\n (oRowClick)=\"onTaskRowClick($event)\" iSortColumn=\"completedOn\" [iColumns]=\"compltedTasksColumns\" [iShowActions]=\"false\"\n [iData$]=\"completedTasksData\" [isCompleted]=\"true\">\n </app-tasks-datatable>\n </div>\n </ng-template>\n </li>\n <li [ngbNavItem]=\"4\" style=\"left: -15px;\" [ngStyle]=\"{'z-index': (active === 4) ? '5' : '0'}\" *ngIf=\"isAdmin || (roleOptions.tags && roleOptions.tags.canRead)\">\n <a ngbNavLink>\n <i-feather name=\"tag\"></i-feather><label>TAGS</label>\n </a>\n <ng-template ngbNavContent>\n <app-tags-tab [iCanWrite]=\"isAdmin || (roleOptions.tags && roleOptions.tags.canWrite)\"\n [iParentId]=\"clientData.id\" [iType]=\"2\"></app-tags-tab>\n </ng-template>\n </li>\n <li [ngbNavItem]=\"5\" style=\"left: -20px;\" [ngStyle]=\"{'z-index': (active === 5) ? '5' : '0'}\" *ngIf=\"isAdmin || (roleOptions.subscriptions && roleOptions.subscriptions.canRead)\">\n <a ngbNavLink>\n <i-feather name=\"check\"></i-feather><label>SUBSCRIPTIONS</label>\n </a>\n <ng-template ngbNavContent>\n <app-subscription-shared [iClientId]=\"clientData.id\">\n </app-subscription-shared>\n </ng-template>\n </li>\n <li style=\"left: -25px;\" (click)=\"loadOrders();\" [ngStyle]=\"{'z-index': (active === 6) ? '5' : '0'}\" *ngIf=\"isAdmin || (roleOptions.dashboard && roleOptions.dashboard.canRead)\" [ngbNavItem]=\"6\">\n <a ngbNavLink>\n <i-feather name=\"dollar-sign\"></i-feather><label>ORDERS</label>\n </a>\n <ng-template ngbNavContent>\n <div style=\"background-color: white; padding: 24px 16px 8px 16px;\">\n <app-campaign-datatable\n iSortColumn=\"numericId\"\n iSortDirection=\"desc\"\n [iCanRead]=\"doWhat.canRead\"\n [iColumns]=\"orderColumns\"\n [iData$]=\"checkingOrders\"\n [iHideHeaderActions]=\"false\"\n [iShowActions]=\"true\"\n [iShowEditAction]=\"false\"\n [iShowExport]=\"false\"\n [iShowSelect]=\"false\"\n [iShowViewAction]=\"true\"\n [iTotalCount]=\"checkingOrders.length\"\n (oRowClick)=\"onClick($event)\">\n </app-campaign-datatable>\n </div>\n </ng-template>\n </li>\n </ul>\n <div [ngbNavOutlet]=\"nav\"></div>\n </div>\n </div>\n </div>\n</div>","import { Component, OnInit } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { ReplaySubject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { PAGE_NAMES } from '../../../core/helpers/constants';\r\nimport { IPermission } from '../../../core/models/auth.models';\r\nimport { IClient } from '../../../core/models/clients.models';\r\nimport { LoadDataFromServer } from '../../../shared/components/datatable/datatable.model';\r\nimport { AppService } from '../../../store/app.service';\r\nimport { ClientsApiService } from '../clients.apiservice';\r\nimport { ClientsService } from '../clients.service';\r\nimport { MergeClientsModal } from '../../../shared/modals/merge-clients/merge-clients.component';\r\n\r\n@Component({\r\n selector: 'app-prospects',\r\n templateUrl: './prospects-main.component.html',\r\n styleUrls: ['./prospects-main.component.scss']\r\n})\r\nexport class ProspectsMainComponent implements OnInit {\r\n doWhat: IPermission = {} as IPermission;\r\n columns = [\r\n { title: 'First Name', field: 'firstName', sortable: true, searchable: true },\r\n { title: 'Last Name', field: 'lastName', sortable: true, searchable: true },\r\n { title: 'Company', field: 'brand', sortable: true, searchable: true },\r\n { title: 'DMS', field: 'dmsName', sortable: true, searchable: true },\r\n { title: 'Sales Rep', field: 'salesRep', sortable: true, searchable: true },\r\n { title: 'Phone', field: 'phone', sortable: true, searchable: true },\r\n { title: 'Email', field: 'email', sortable: true, searchable: true },\r\n ]\r\n clientsData: Array<IClient>\r\n savedSearchId: any;\r\n private loadEvent!: LoadDataFromServer;\r\n dataTotalCount: number = 0;\r\n private destroyed$: ReplaySubject<boolean> = new ReplaySubject(1);\r\n constructor(\r\n private modalService: NgbModal,\r\n private router: Router,\r\n private route: ActivatedRoute,\r\n private cService: ClientsService,\r\n private clientService: ClientsApiService,\r\n private appService: AppService) {\r\n this.clientsData = new Array<IClient>();\r\n }\r\n\r\n ngOnInit(): void {\r\n this.appService.setPageTitle$('Prospects');\r\n this.doWhat = this.appService.getUserRolesForPage(PAGE_NAMES.Prospects);\r\n this.appService.getAllProspectClients$()\r\n .pipe(takeUntil(this.destroyed$)\r\n )\r\n .subscribe((response: any) => {\r\n this.clientsData = [...response.data];\r\n this.dataTotalCount = response.totalCount;\r\n });\r\n this.savedSearchId = this.route.snapshot.queryParams['savedsearchid'];\r\n }\r\n\r\n onLoadingData(event: LoadDataFromServer) {\r\n this.loadEvent = event;\r\n this.appService.fetchAllProspectClients({\r\n SavedSearchId: this.savedSearchId,\r\n ...this.loadEvent\r\n });\r\n }\r\n\r\n editRow(evt: any) {\r\n this.cService.openEditClientModal(evt,{\r\n SavedSearchId: this.savedSearchId,\r\n ...this.loadEvent\r\n });\r\n }\r\n\r\n deleteRows(evt: any) {\r\n this.clientService.deleteClient(evt)\r\n .pipe(takeUntil(this.destroyed$))\r\n .subscribe((response: any) => {\r\n this.appService.fetchAllProspectClients({\r\n SavedSearchId: this.savedSearchId,\r\n ...this.loadEvent\r\n });\r\n })\r\n }\r\n\r\n getRowLink(row: any) {\r\n return `/pages/prospect-details/${row.id}`;\r\n }\r\n\r\n ngAfterViewInit() { }\r\n\r\n handleMergeRecordsClicked(evt: string[]) {\r\n let clientsToMerge = this.clientsData.filter(f => evt.includes(f.id));\r\n let size = clientsToMerge.length == 2 ? 'lg' : 'xl';\r\n\r\n const dialogRef = this.modalService.open(MergeClientsModal, { size: size });\r\n\r\n dialogRef.componentInstance.clientsToMerge = clientsToMerge;\r\n const dialogSubmitSubscription = dialogRef.componentInstance.oMergeComplete.subscribe((r: any) => {\r\n this.appService.fetchAllProspectClients({\r\n SavedSearchId: this.savedSearchId,\r\n ...this.loadEvent\r\n });\r\n dialogSubmitSubscription.unsubscribe();\r\n })\r\n }\r\n\r\n async export() {\r\n this.clientService.exportProspectClients({\r\n SavedSearchId: this.savedSearchId,\r\n ...this.loadEvent\r\n }).then((x: any) => {\r\n var newBlob = new Blob([x], { type: \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\" });\r\n const data = window.URL.createObjectURL(newBlob);\r\n var link = document.createElement('a');\r\n link.href = data;\r\n link.download = \"prospect-clients.xlsx\";\r\n link.dispatchEvent(new MouseEvent('click', { bubbles: true, cancelable: true, view: window }));\r\n setTimeout(function () {\r\n // For Firefox it is necessary to delay revoking the ObjectURL\r\n window.URL.revokeObjectURL(data);\r\n link.remove();\r\n }, 100);\r\n });\r\n }\r\n}\r\n","<app-campaign-datatable [iCanRead]=\"doWhat.canRead\" [iCanWrite]=\"doWhat.canWrite\" [iCanDelete]=\"doWhat.canDelete\"\r\n [iColumns]=\"columns\" [iSortColumn]=\"'lastName,firstName'\" [iRowLinkHandler]=\"getRowLink\"\r\n (oDeleteRows)=\"deleteRows($event)\" (oEditRow)=\"editRow($event)\" [iData$]=\"clientsData\" [iShowMerge]=\"true\"\r\n (oMergeRecords)=\"handleMergeRecordsClicked($event)\" [iIsServerLoading]=\"true\" [iTotalCount]=\"dataTotalCount\"\r\n (oLoadDataFromServer)=\"onLoadingData($event)\" (oCustomDataExport)=\"export()\" [iIsCustomDataExport]=\"true\">\r\n</app-campaign-datatable>","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { ReplaySubject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport Swal from 'sweetalert2';\nimport { PAGE_NAMES } from '../../../core/helpers/constants';\nimport { IPermission } from '../../../core/models/auth.models';\nimport { ICompany } from '../../../core/models/datafeed.models';\nimport { AppService } from '../../../store/app.service';\nimport { CompanyApiService } from '../company.apiservice';\nimport { CompanyService } from '../company.service';\n\n@Component({\n selector: 'app-company-main',\n templateUrl: './company-main.component.html',\n styleUrls: ['./company-main.component.scss'],\n})\nexport class CompanyMainComponent implements OnInit, OnDestroy {\n doWhat: IPermission = {} as IPermission;\n columns = [\n { title: 'Company Name', field: 'name', sortable: true, searchable: true },\n { title: 'Contact Name', field: 'companyOwner.firstName', sortable: true, searchable: true },\n { title: 'Contact Email', field: 'companyOwner.email', searchable: true, sortable: true },\n { title: 'Contact Phone', field: 'companyOwner.phone', searchable: true },\n ];\n private destroyed$: ReplaySubject<boolean> = new ReplaySubject(1);\n companiesData: Array<ICompany>\n\n constructor(\n private appService: AppService,\n private companyApiService: CompanyApiService,\n private route: ActivatedRoute,\n private compService: CompanyService,\n ) {\n this.companiesData = new Array<ICompany>();\n }\n\n ngOnInit(): void {\n\n this.appService.setPageTitle$('Companies');\n this.doWhat = this.appService.getUserRolesForPage(PAGE_NAMES.Companies);\n this.appService.getAllCompanies$()\n .pipe(takeUntil(this.destroyed$)\n )\n .subscribe((response: Array<ICompany>) => {\n this.companiesData = [...response];\n });\n const savedSearchId = this.route.snapshot.queryParams['savedsearchid'];\n this.appService.fetchAllCompanies(savedSearchId);\n }\n\n editRow(evt: any) {\n this.compService.openEditCompanyModal(evt)\n }\n deleteRows(evt: any) {\n this.companyApiService.deleteCompany(evt)\n .pipe(takeUntil(this.destroyed$))\n .subscribe((response: any) => {\n this.appService.fetchAllCompanies(null);\n })\n\n }\n onClientRowClick(evt: any) {\n this.compService.openEditCompanyModal(evt)\n }\n\n ngOnDestroy(): void {\n this.destroyed$.next(true);\n this.destroyed$.complete();\n }\n}\n","<app-campaign-datatable\n[iShowExport]='false'\n[iCanRead]=\"doWhat.canRead\"\n[iCanWrite]=\"doWhat.canWrite\"\n[iCanDelete]=\"doWhat.canDelete\"\n[iColumns]=\"columns\"\n(oRowClick)=\"onClientRowClick($event)\"\n(oDeleteRows)=\"deleteRows($event)\"\n (oEditRow)=\"editRow($event)\"\n [iData$]=\"companiesData\"></app-campaign-datatable>\n","import { Injectable } from '@angular/core';\nimport { ICompany } from '../../core/models/datafeed.models';\nimport { HttpService } from '../../shared/http/base.http';\n@Injectable()\nexport class CompanyApiService extends HttpService {\n getAllCompanies(savedSearchId: any) {\n const query = savedSearchId ? `?savedSearchId=${savedSearchId}` : '';\n return this.get<Array<ICompany>>('/companies/getAllCompanies' + query);\n }\n getCompanyDetails(id: any) {\n return this.get<ICompany>('/companies/getCompanyDetails?id=' + id)\n }\n saveCompany(data: ICompany) {\n return this.post('/companies/saveCompany', data, { 'Content-Type': 'application/json; charset=utf-8' });\n }\n deleteCompany(data: Array<string>) {\n return this.post('/companies/deleteCompany', data, { 'Content-Type': 'application/json; charset=utf-8' });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\nimport Swal from 'sweetalert2';\nimport { ICompany } from '../../core/models/datafeed.models';\nimport { AddCompanyModal } from '../../shared/modals/add-company/add-company.component';\nimport { AppService } from '../../store/app.service';\nimport { CompanyApiService } from './company.apiservice';\n\n@Injectable()\nexport class CompanyService {\n\n constructor(\n private modalService: NgbModal,\n private appService: AppService,\n private compService: CompanyApiService,\n ) {\n\n }\n\n openEditCompanyModal(evt: any) {\n const dialogRef = this.modalService.open(AddCompanyModal, { size: 'lg' });\n // if (evt.id === -1) {\n // var d = this.appService.getActiveRoute$().value.url.split('/');\n // evt.id = d[d.length - 1]\n // }\n dialogRef.componentInstance.iId = evt.id;\n const dialogSubmitSubscription = dialogRef.componentInstance.oSaveClicked.subscribe((r: ICompany) => {\n\n this.compService.saveCompany(r)\n .subscribe((response: any) => {\n dialogRef.dismiss();\n this.appService.fetchAllCompanies(null);\n })\n dialogSubmitSubscription.unsubscribe();\n })\n }\n\n}\n","import { Injectable } from '@angular/core';\r\nimport { ICoupon } from '../../core/models/coupon.models';\r\nimport { HttpService } from '../../shared/http/base.http';\r\n\r\n@Injectable()\r\nexport class CouponsApiService extends HttpService {\r\n getAllCoupons(savedSearchId: any) {\r\n const query = savedSearchId ? `?savedSearchId=${savedSearchId}` : '';\r\n return this.get<Array<ICoupon>>('/coupons/getAllCoupons' + query);\r\n }\r\n getCouponDetails(id: any) {\r\n return this.get<ICoupon>('/coupons/getCouponDetails?id=' + id)\r\n }\r\n saveCoupon(data: ICoupon) {\r\n return this.post('/coupons/saveCoupon', data, { 'Content-Type': 'application/json; charset=utf-8' });\r\n }\r\n deleteCoupon(ids: Array<string>) {\r\n return this.post('/coupons/deleteCoupon', ids, { 'Content-Type': 'application/json; charset=utf-8' });\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport Swal from 'sweetalert2';\r\nimport { AppService } from '../../store/app.service';\r\nimport { CouponsApiService } from './coupon.apiservice';\r\n\r\n@Injectable()\r\nexport class CouponsService {\r\n\r\n constructor(\r\n private appService: AppService,\r\n private couponService: CouponsApiService,\r\n private router: Router\r\n ) { }\r\n\r\n deleteCoupon() {\r\n var d = this.appService.getActiveRoute$().value.url.split('/');\r\n var cId = d[d.length - 1];\r\n Swal.fire({\r\n title: 'Are you sure?',\r\n text: \"You won't be able to revert this!\",\r\n icon: 'warning',\r\n showCancelButton: true,\r\n confirmButtonColor: '#3085d6',\r\n cancelButtonColor: '#d33',\r\n confirmButtonText: 'Yes, delete it!'\r\n }).then((result) => {\r\n if (result.isConfirmed) {\r\n this.couponService.deleteCoupon([cId])\r\n .subscribe((r: any) => {\r\n if (r.good) {\r\n this.router.navigate(['/pages/coupons']);\r\n }\r\n })\r\n }\r\n })\r\n }\r\n\r\n}\r\n","import { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { ReplaySubject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport Swal from 'sweetalert2';\nimport { PAGE_NAMES } from '../../../core/helpers/constants';\nimport { IPermission } from '../../../core/models/auth.models';\nimport { ICoupon } from '../../../core/models/coupon.models';\nimport { AppService } from '../../../store/app.service';\nimport { CouponsApiService } from '../coupon.apiservice';\n@Component({\n selector: 'app-coupons',\n templateUrl: './coupons-main.component.html',\n styleUrls: ['./coupons-main.component.scss']\n})\nexport class CouponsMainComponent implements OnInit {\n doWhat: IPermission = {} as IPermission;\n\n columns = [\n { title: 'Code', field: 'code', sortable: true, searchable: true },\n { title: 'Type', field: 'type', sortable: true, searchable: true, pipe: 'P_CouponTypesTitle' },\n { title: 'Amount', field: 'amount', sortable: true, searchable: true },\n { title: 'Description', field: 'description', sortable: true, searchable: true },\n { title: 'Product Names', field: 'includeProductNames', sortable: true, searchable: true },\n { title: 'Time Limit', field: 'expiryDate', searchable: true, pipe: 'P_CouponExpiry' },\n ]\n couponsData: Array<ICoupon>\n private destroyed$: ReplaySubject<boolean> = new ReplaySubject(1);\n constructor(\n private router: Router,\n private cApiService: CouponsApiService,\n private route: ActivatedRoute,\n private appService: AppService) {\n this.couponsData = new Array<ICoupon>();\n }\n\n ngOnInit(): void {\n this.appService.setPageTitle$('Coupons');\n this.doWhat = this.appService.getUserRolesForPage(PAGE_NAMES.Coupons);\n this.appService.getAllCoupons$()\n .pipe(takeUntil(this.destroyed$)\n )\n .subscribe((response: Array<ICoupon>) => {\n this.couponsData = [...response];\n });\n\n\n }\n ngAfterViewInit() {\n const savedSearchId = this.route.snapshot.queryParams['savedsearchid'];\n this.appService.fetchAllCoupons(savedSearchId);\n }\n\n editRow(evt: any) {\n this.router.navigate(['/pages/edit-coupon', evt.id]);\n }\n\n deleteRows(evt: any) {\n this.cApiService.deleteCoupon(evt)\n .pipe(takeUntil(this.destroyed$))\n .subscribe((response: any) => {\n if (response.good) {\n Swal.fire('Coupons ', \"Coupon(s) deleted\", 'success')\n }\n this.appService.fetchAllCoupons(null);\n })\n }\n\n getRowLink(row: any) {\n return `/pages/edit-coupon/${row.id}`;\n }\n}\n","<app-campaign-datatable [iShowDropdownAdd]=\"false\" [iColumns]=\"columns\" [iCanRead]=\"doWhat.canRead\" [iCanWrite]=\"doWhat.canWrite\" [iCanDelete]=\"doWhat.canDelete\" [iRowLinkHandler]=\"getRowLink\" (oDeleteRows)=\"deleteRows($event)\"\r\n (oEditRow)=\"editRow($event)\" [iData$]=\"couponsData\" [iShowSelect]=\"false\"></app-campaign-datatable>","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { ReplaySubject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport * as _ from 'underscore';\r\nimport { COUPON_TYPES, PAGE_NAMES, ROLES_TYPE, RESTRICTION_TYPES } from '../../../core/helpers/constants';\r\nimport { createGuid, getRolesForPage } from '../../../core/helpers/utility';\r\nimport { IClient } from '../../../core/models/clients.models';\r\nimport { ICoupon } from '../../../core/models/coupon.models';\r\nimport { ISubscription } from '../../../core/models/datafeed.models';\r\nimport { IProductMain } from '../../../core/models/products.models';\r\nimport { Utility } from '../../../shared/utility';\r\nimport { AppService } from '../../../store/app.service';\r\nimport { CouponsApiService } from '../coupon.apiservice';\r\n@Component({\r\n selector: 'app-edit-coupon',\r\n templateUrl: './edit-coupon.component.html',\r\n styleUrls: ['./edit-coupon.component.scss']\r\n})\r\nexport class EditCouponComponent implements OnInit, OnDestroy {\r\n private destroyed$: ReplaySubject<boolean> = new ReplaySubject(1);\r\n public COUPON_TYPES = COUPON_TYPES;\r\n public RESTRICTION_TYPES = RESTRICTION_TYPES;\r\n\r\n couponAmountTitle = 'Coupon Amount ($)';\r\n haveNoEndDate: boolean = false;\r\n minUsage = 1;\r\n\r\n editCouponForm!: FormGroup;\r\n submitted = false;\r\n\r\n allSubscriptions = new Array<ISubscription>();\r\n allClients = new Array<IClient>();\r\n clientsFiltered: Array<Array<IClient>> = new Array<Array<IClient>>();\r\n subscriptionsFiltered: Array<Array<ISubscription>> = new Array<Array<ISubscription>>();\r\n\r\n allProducts: Array<IProductMain> = new Array<IProductMain>();\r\n productsIncludeSource: Array<IProductMain> = new Array<IProductMain>();\r\n productsExcludeSource: Array<IProductMain> = new Array<IProductMain>();\r\n\r\n isAdmin: boolean = false;\r\n isExternal: boolean = false;\r\n canDelete: boolean = false;\r\n canRead: boolean = false;\r\n canWrite: boolean = false;\r\n options: any = null;\r\n\r\n\r\n constructor(\r\n private router: Router,\r\n private formBuilder: FormBuilder,\r\n private route: ActivatedRoute,\r\n private couponsApiService: CouponsApiService,\r\n private appService: AppService) {\r\n\r\n\r\n this.editCouponForm = this.formBuilder.group({\r\n id: [null],\r\n usageLimit: [null, [Validators.max(999999), Validators.min(0)]],\r\n code: ['', [Validators.required, Validators.maxLength(50)]],\r\n description: [''],\r\n type: [COUPON_TYPES[0].value],\r\n amount: ['', [Validators.required]],\r\n startDate: [null, [Validators.required]],\r\n expiryDate: [null],\r\n restrictionType:RESTRICTION_TYPES[0].value,\r\n usageWithOtherCoupons: [false],\r\n usageLimitSubscriptions: [null],\r\n usageLimitClients: [null],\r\n includeProductsIds: [[]],\r\n excludeProductsIds: [[]],\r\n cbNoExpiryDate: [this.haveNoEndDate]\r\n\r\n });\r\n }\r\n\r\n\r\n\r\n\r\n\r\n ngOnInit(): void {\r\n\r\n this.f.type.valueChanges\r\n .pipe(takeUntil(this.destroyed$)\r\n ).subscribe(value => {\r\n if (value === 1)\r\n this.couponAmountTitle = 'Coupon Amount ($)';\r\n else\r\n this.couponAmountTitle = 'Coupon Amount (%)';\r\n });\r\n this.f.includeProductsIds.valueChanges\r\n .pipe(takeUntil(this.destroyed$)\r\n ).subscribe(prods => {\r\n this.productsExcludeSource = this.allProducts.filter(x => !prods.includes(x.id));\r\n });\r\n this.f.excludeProductsIds.valueChanges\r\n .pipe(takeUntil(this.destroyed$)\r\n ).subscribe(prods => {\r\n this.productsIncludeSource = this.allProducts.filter(x => !prods.includes(x.id));\r\n });\r\n this.f.expiryDate.valueChanges\r\n .pipe(takeUntil(this.destroyed$)\r\n ).subscribe(val => {\r\n if (val !== \"\" && val !== null && val !== undefined) {\r\n this.haveNoEndDate = false;\r\n this.editCouponForm.patchValue({ cbNoExpiryDate: false })\r\n }\r\n });\r\n this.f.restrictionType.valueChanges\r\n .pipe(takeUntil(this.destroyed$)\r\n ).subscribe(value => {\r\n if(value === 1){\r\n this.editCouponForm.patchValue({includeProductsIds: []});\r\n this.editCouponForm.patchValue({excludeProductsIds: []});\r\n }\r\n });\r\n\r\n\r\n this.appService.getActiveUser$()\r\n .pipe(takeUntil(this.destroyed$))\r\n .subscribe(u => {\r\n this.isExternal = u.type == ROLES_TYPE.External;\r\n var r = getRolesForPage(u.roles, PAGE_NAMES.Coupons);\r\n this.isAdmin = r.isAdmin;\r\n this.canRead = r.canRead;\r\n this.canWrite = r.canWrite;\r\n this.canDelete = r.canDelete;\r\n if (r.options)\r\n this.options = JSON.parse(r.options!)\r\n })\r\n let id = this.route.snapshot.paramMap.get('id');\r\n this.appService.setPageTitle$(`Coupons - ${id ? 'Edit' : 'Add'}`);\r\n if (id) {\r\n this.getCouponDetails(id);\r\n }\r\n else {\r\n this.haveNoEndDate = false;\r\n this.editCouponForm.patchValue({ startDate: new Date() });\r\n }\r\n this.appService.getAllProductsFeed$()\r\n .pipe(takeUntil(this.destroyed$))\r\n .subscribe((prods: Array<IProductMain>) => {\r\n this.allProducts = prods;\r\n this.productsIncludeSource = [...prods.filter(y => !this.f.excludeProductsIds.value.includes(y.id))];\r\n this.productsExcludeSource = [...prods.filter(y => !this.f.includeProductsIds.value.includes(y.id))];\r\n })\r\n this.appService.fetchAllProductsFeed();\r\n }\r\n\r\n getCouponDetails(id: any) {\r\n this.couponsApiService.getCouponDetails(id)\r\n .pipe(takeUntil(this.destroyed$))\r\n .subscribe((response: any) => {\r\n this.editCouponForm.patchValue(response.data);\r\n if (response.data.expiryDate === null) {\r\n this.haveNoEndDate = true\r\n this.editCouponForm.patchValue({ cbNoExpiryDate: true })\r\n }\r\n });\r\n }\r\n\r\n get f() { return this.editCouponForm.controls; }\r\n\r\n editRow() { }\r\n\r\n deleteRows() { }\r\n onSubLimitChange() {\r\n this.validateUsageLimit();\r\n }\r\n\r\n validateUsageLimit() {\r\n let total = this.f.usageLimit.value;\r\n if (_.isNull(total))\r\n return;\r\n let subUsage = this.f.usageLimitSubscriptions.value ?? 0;\r\n let clUsage = this.f.usageLimitClients.value ?? 0;\r\n if (total <= (subUsage + clUsage)) {\r\n let diff = (subUsage + clUsage) - total\r\n this.f.usageLimit.setValue(total + diff);\r\n }\r\n this.f.usageLimit.setValidators([Validators.required, Validators.min(subUsage + clUsage)]);\r\n this.f.usageLimit.updateValueAndValidity();\r\n this.minUsage = subUsage + clUsage;\r\n\r\n }\r\n\r\n\r\n onClientRowClick(evt: any) {\r\n this.router.navigate(['/pages/client-details', evt.id]);\r\n }\r\n onNoEndDateChange(evt: any) {\r\n var val = evt.target.checked;\r\n this.haveNoEndDate = val;\r\n if (val) {\r\n this.editCouponForm.patchValue({ expiryDate: null })\r\n }\r\n }\r\n onSubmit() {\r\n this.submitted = true;\r\n if(this.f.restrictionType.value == 2 && this.f.includeProductsIds.value.length == 0 && this.f.excludeProductsIds.value.length == 0){\r\n return;\r\n }\r\n if (this.editCouponForm.invalid)\r\n return;\r\n if (this.f.id.value === null)\r\n this.f.id.setValue(createGuid())\r\n let formValues: ICoupon = this.editCouponForm.value;\r\n\r\n formValues = this.trimObjectStrings(formValues);\r\n\r\n\r\n formValues.startDate = Utility.getDateFromDateTime(formValues.startDate);\r\n if (formValues.expiryDate)\r\n formValues.expiryDate = Utility.getDateFromDateTime(formValues.expiryDate);\r\n this.couponsApiService.saveCoupon(formValues)\r\n .pipe(takeUntil(this.destroyed$))\r\n .subscribe(() => {\r\n this.router.navigate(['/pages/coupons']);\r\n });\r\n }\r\n decimelFilter(event: any) {\r\n const reg = /^-?\\d*(\\.\\d{0,2})?$/;\r\n let input = event.target.value + String.fromCharCode(event.charCode);\r\n\r\n if (!reg.test(input)) {\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n // This function will recursively iterate through the object\r\n trimObjectStrings(obj: any): any {\r\n // Iterate over each property of the object\r\n for (const key in obj) {\r\n if (obj.hasOwnProperty(key)) {\r\n const value = obj[key];\r\n \r\n if (typeof value === 'string') {\r\n // Trim the string if the value is a string\r\n obj[key] = value.trim();\r\n } else if (typeof value === 'object' && value !== null) {\r\n // Recursively call the function if the value is an object (or array)\r\n this.trimObjectStrings(value);\r\n }\r\n }\r\n }\r\n return obj;\r\n }\r\n\r\n ngAfterViewInit() {\r\n }\r\n ngOnDestroy(): void {\r\n this.destroyed$.next(true);\r\n this.destroyed$.complete();\r\n }\r\n}\r\n","<div class=\"row\" [ngClass]=\"{'readonly-all': !isAdmin && !canWrite}\">\n <div class=\"col-md-12\">\n <div class=\"card card-custom\">\n <div class=\"card-body\">\n <form [formGroup]=\"editCouponForm\" (ngSubmit)=\"onSubmit()\">\n <div class=\"row mb-3\">\n <div class=\"col-md-12\">\n <h4>Coupon Info</h4>\n </div>\n </div>\n <div class=\"row mb-3\">\n <div class=\"col-md-5\">\n <div class=\"row\">\n <label class=\"col-sm-5 col-form-label\" for=\"code\">Coupon Code</label>\n <div class=\"col-sm-7\">\n <input type=\"text\" class=\"form-control\" formControlName=\"code\"\n [ngClass]=\"{ 'is-invalid': submitted && f.code.errors }\"\n placeholder=\"Enter coupon code\">\n <div *ngIf=\"submitted && f.code.errors\" class=\"invalid-feedback\">\n <div *ngIf=\"f.code.errors.required\">Code is required</div>\n <div *ngIf=\"f.code.errors.maxLength\">Maximum length is 50 characters</div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"row mb-3\">\n <div class=\"col-md-5\">\n <div class=\"row\">\n <label class=\"col-sm-5 col-form-label\" for=\"description\">Description</label>\n <div class=\"col-sm-7\">\n <textarea rows=\"3\" class=\"form-control\" formControlName=\"description\"\n [ngClass]=\"{ 'is-invalid': submitted && f.description.errors }\"\n placeholder=\"Enter description\"></textarea>\n <div *ngIf=\"submitted && f.description.errors\" class=\"invalid-feedback\">\n <div *ngIf=\"f.description.errors.required\">Description is required </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"col-md-5\">\n <div class=\"row\">\n <label class=\"col-sm-5\" for=\"name\">Can be used with other coupons</label>\n <div class=\"col-sm-7\" style=\"display: flex; flex-direction: column; justify-content: center; align-items: flex-start;\">\n <input type=\"checkbox\" formControlName=\"usageWithOtherCoupons\"\n class=\"form-check-input\" />\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"row mb-3\">\n <div class=\"col-md-5\">\n <div class=\"row\">\n <label class=\"col-sm-5 col-form-label\" for=\"type\">Discount Type</label>\n <div class=\"col-sm-7\">\n <select formControlName=\"type\" class=\"form-control form-select\">\n <option *ngFor=\"let p of COUPON_TYPES\" [ngValue]=\"p.value\">{{p.title}}</option>\n </select>\n <div *ngIf=\"submitted && f.type.errors\" class=\"invalid-feedback\">\n <div *ngIf=\"f.type.errors.required\">Discount type is required</div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"col-md-5\">\n <div class=\"row\">\n <label class=\"col-sm-5 col-form-label\" for=\"amount\">{{couponAmountTitle}}</label>\n <div class=\"col-sm-7\">\n <input type=\"number\" (keypress)=\"decimelFilter($event)\" class=\"form-control\"\n formControlName=\"amount\"\n [ngClass]=\"{ 'is-invalid': submitted && f.amount.errors }\"\n placeholder=\"Enter coupon amount\">\n <div *ngIf=\"submitted && f.amount.errors\" class=\"invalid-feedback\">\n <div *ngIf=\"f.amount.errors.required\">Coupon Amount is required</div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"row mb-3\">\n <div class=\"col-md-5\">\n <div class=\"row\">\n <label class=\"col-sm-5 col-form-label\">Start Date</label>\n <div class=\"col-md-7\">\n <input\n [ngClass]=\"{ 'is-invalid': submitted && f.startDate.errors, 'disable-calender': !isAdmin && !canWrite }\"\n mwlFlatpickr [altInputClass]=\"'datetime'\" [altInput]=\"true\"\n [convertModelValue]=\"true\" formControlName=\"startDate\" class=\"form-control\" />\n <div *ngIf=\"submitted && f.startDate.errors\" class=\"invalid-feedback\">\n <div *ngIf=\"f.startDate.errors.required\">required</div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"col-md-5\">\n <div class=\"row\">\n <label class=\"col-sm-5 col-form-label\">Expiry Date</label>\n <div class=\"col-md-7\">\n <input\n [ngClass]=\"{ 'is-invalid': submitted && f.expiryDate.errors, 'disable-calender': haveNoEndDate || (!isAdmin && !canWrite) }\"\n mwlFlatpickr [altInputClass]=\"'datetime'\" [altInput]=\"true\"\n [convertModelValue]=\"true\" formControlName=\"expiryDate\" class=\"form-control\" />\n <div *ngIf=\"submitted && f.expiryDate.errors\" class=\"invalid-feedback\">\n <div *ngIf=\"f.expiryDate.errors.required\">required</div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"col-md-2\">\n <div class=\"row\">\n <label class=\"col-sm-5 col-form-label\" for=\"name\">No End Date</label>\n <div class=\"col-sm-7\" style=\"display: flex; flex-direction: column; justify-content: center; align-items: flex-start;\">\n <input formControlName=\"cbNoExpiryDate\" (change)=\"onNoEndDateChange($event)\"\n type=\"checkbox\" class=\"form-check-input\" />\n </div>\n </div>\n </div>\n\n </div>\n <hr />\n <div class=\"row mb-3\">\n <div class=\"col-md-12\">\n <h4>Usage Limits</h4>\n </div>\n </div>\n <div class=\"row mb-3\">\n <div class=\"col-md-5\">\n <div class=\"row\">\n <label class=\"col-sm-5 col-form-label\" for=\"usageLimit\">Total Usage Limit</label>\n <div class=\"col-sm-7\">\n <input type=\"number\" (change)=\"validateUsageLimit()\" class=\"form-control\"\n formControlName=\"usageLimit\"\n [ngClass]=\"{ 'is-invalid': submitted && f.usageLimit.errors }\"\n placeholder=\"Enter usage limit\">\n <span style=\"font-size:10px\">leave blank for unlimited</span>\n <div *ngIf=\"submitted && f?.usageLimit?.errors\" class=\"invalid-feedback\">\n <div *ngIf=\"f.usageLimit.errors?.max\">Cannot be greater than 999999</div>\n <div *ngIf=\"f.usageLimit.errors?.min\">Minmum allowed number is {{minUsage}}\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"row mb-3\">\n <div class=\"col-md-5\">\n <div class=\"row\">\n <label class=\"col-sm-5 col-form-label\" for=\"usageLimitSubscriptions\">Subscription Usage Limit</label>\n <div class=\"col-sm-7\">\n <input type=\"number\" (change)=\"validateUsageLimit()\" class=\"form-control\"\n formControlName=\"usageLimitSubscriptions\"\n [ngClass]=\"{ 'is-invalid': submitted && f.usageLimitSubscriptions.errors }\"\n placeholder=\"Enter usage limit\">\n <span style=\"font-size:10px\">leave blank for unlimited</span>\n <div *ngIf=\"submitted && f?.usageLimitSubscriptions?.errors\"\n class=\"invalid-feedback\">\n <div *ngIf=\"f.usageLimitSubscriptions.errors?.required\">Usage limit is required\n </div>\n <div *ngIf=\"f.usageLimitSubscriptions.errors?.max\">Cannot be greater than 999999\n </div>\n <div *ngIf=\"f.usageLimitSubscriptions.errors?.min\">Minmum allowed number is\n {{minUsage}}\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"col-md-5\">\n <div class=\"row\">\n <label class=\"col-sm-5 col-form-label\" for=\"usageLimitClients\">Clients Usage Limit</label>\n <div class=\"col-sm-7\">\n <input type=\"number\" (change)=\"validateUsageLimit()\" class=\"form-control\"\n formControlName=\"usageLimitClients\"\n [ngClass]=\"{ 'is-invalid': submitted && f.usageLimitClients.errors }\"\n placeholder=\"Enter usage limit\">\n <span style=\"font-size:10px\">leave blank for unlimited</span>\n <div *ngIf=\"submitted && f?.usageLimitClients?.errors\" class=\"invalid-feedback\">\n <div *ngIf=\"f.usageLimitClients.errors?.required\">Usage limit is required</div>\n <div *ngIf=\"f.usageLimitClients.errors?.max\">Cannot be greater than 999999</div>\n <div *ngIf=\"f.usageLimitClients.errors?.min\">Minmum allowed number is\n {{minUsage}}\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <!-- <div *ngIf=\"isAdmin || canWrite\" class=\"col-md-7\">\n <button style=\"margin-left:10px;float:right\" (click)=\"addUsageWithSubscription()\"\n class=\"btn btn-page\">Add Subscription</button>\n <button style=\"float:right\" (click)=\"addUsageWithClient()\" class=\"btn btn-page\">Add\n Client</button>\n </div> -->\n\n\n <!-- <div style=\"border: 0.5px solid #f5eaea; padding-top:20px\" formArrayName=\"usageWithSubscriptions\">\n <div class=\"d-flex align-items-center justify-content-center\"\n *ngIf=\"usageWithSubscriptions.controls.length === 0\">\n <p>No subscription limits found.</p>\n </div>\n <div class=\"mb-3\" *ngFor=\"let c of usageWithSubscriptions.controls; let i=index\">\n <div [formGroupName]=\"i\">\n <div class=\"row\">\n <div class=\"col-md-5\">\n <div class=\"row\">\n <label class=\"col-sm-5 col-form-label\">Subscription</label>\n <input type=\"hidden\" formControlName=\"id\" />\n <div [ngClass]=\"{ 'col-sm-7' : true }\">\n <ng-select\n [ngClass]=\"{ 'is-invalid': submitted && usageWithSubscriptions.at(i).get('subscriptionId')?.errors }\"\n formControlName=\"subscriptionId\">\n <ng-option *ngFor=\"let r of subscriptionsFiltered[i]\"\n [value]=\"r.id\">\n {{r.email}}</ng-option>\n </ng-select>\n <div *ngIf=\"submitted && usageWithSubscriptions.at(i).get('subscriptionId')?.errors\"\n class=\"invalid-feedback\">\n <div\n *ngIf=\"usageWithSubscriptions.at(i).get('subscriptionId')?.errors?.required\">\n Please select a subscription</div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"col-md-5\">\n <div class=\"row\">\n <label class=\"col-sm-5\" for=\"usageLimit\">Usage Limit</label>\n <div class=\"col-sm-7\">\n <input type=\"number\" (change)=\"onSubLimitChange($event,i)\" class=\"form-control\" formControlName=\"usageLimit\"\n [ngClass]=\"{ 'is-invalid': submitted && usageWithSubscriptions.at(i).get('usageLimit')?.errors }\"\n placeholder=\"Enter usage limit\">\n <div *ngIf=\"submitted && usageWithSubscriptions.at(i).get('usageLimit')?.errors\"\n class=\"invalid-feedback\">\n <div\n *ngIf=\"usageWithSubscriptions.at(i)?.get('usageLimit')?.errors?.required\">\n Usage limit is required\n </div>\n <div *ngIf=\"usageWithSubscriptions.at(i)?.get('usageLimit')?.errors?.max\">\n Cannot be greater than 999999\n </div>\n <div *ngIf=\"usageWithSubscriptions.at(i)?.get('usageLimit')?.errors?.min\">\n Minmum allowed number is 1\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"col-sm-1\">\n <button *ngIf=\"isAdmin || canWrite\" type=\"button\" class=\"btn btn-outline-danger btn-sm\"\n (click)=\"deleteUsageWithSubscription(i)\">\n X\n </button>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <div style=\"margin-top:10px; border: 0.5px solid #f5eaea; padding-top:20px\" formArrayName=\"usageWithClients\">\n <div class=\"d-flex align-items-center justify-content-center\"\n *ngIf=\"usageWithClients.controls.length === 0\">\n <p>No clients limits found.</p>\n </div>\n <div class=\"mb-3\" *ngFor=\"let c of usageWithClients.controls; let i=index\">\n <div [formGroupName]=\"i\">\n <div class=\"row\">\n <div class=\"col-md-5\">\n <div class=\"row\">\n <label class=\"col-sm-5 col-form-label\">Clients</label>\n <input type=\"hidden\" formControlName=\"id\" />\n <div [ngClass]=\"{ 'col-sm-7' : true }\">\n <ng-select\n [ngClass]=\"{ 'is-invalid': submitted && usageWithClients.at(i).get('clientId')?.errors }\"\n formControlName=\"clientId\">\n <ng-option *ngFor=\"let r of clientsFiltered[i]\" [value]=\"r.id\">\n {{r.firstName}} {{r.lastName}}</ng-option>\n </ng-select>\n <div *ngIf=\"submitted && usageWithClients.at(i).get('clientId')?.errors\"\n class=\"invalid-feedback\">\n <div *ngIf=\"usageWithClients.at(i).get('clientId')?.errors?.required\">\n Please select a client</div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"col-md-5\">\n <div class=\"row\">\n <label class=\"col-sm-5\" for=\"usageLimit\">Usage Limit</label>\n <div class=\"col-sm-7\">\n <input type=\"number\" (change)=\"onSubLimitChange($event,i)\" class=\"form-control\" formControlName=\"usageLimit\"\n [ngClass]=\"{ 'is-invalid': submitted && usageWithClients.at(i).get('usageLimit')?.errors }\"\n placeholder=\"Enter usage limit\">\n <div *ngIf=\"submitted && usageWithClients.at(i).get('usageLimit')?.errors\"\n class=\"invalid-feedback\">\n <div *ngIf=\"usageWithClients.at(i)?.get('usageLimit')?.errors?.required\">\n Usage limit is required\n </div>\n <div *ngIf=\"usageWithClients.at(i)?.get('usageLimit')?.errors?.max\">\n Cannot be greater than 999999\n </div>\n <div *ngIf=\"usageWithClients.at(i)?.get('usageLimit')?.errors?.min\">\n Minmum allowed number is 1\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"col-sm-1\">\n <button *ngIf=\"isAdmin || canWrite\" type=\"button\" class=\"btn btn-outline-danger btn-sm\"\n (click)=\"deleteUsageWithClients(i)\">\n X\n </button>\n </div>\n </div>\n </div>\n </div>\n </div> -->\n\n <hr />\n <div class=\"row mb-3\">\n <div class=\"col-md-12\">\n <h4>Restrictions</h4>\n </div>\n </div>\n <div class=\"row mb-3\">\n <div class=\"col-md-5\">\n <div class=\"row\">\n <label class=\"col-sm-5 col-form-label\">Type</label>\n <div class=\"row col-md-7\" style=\"padding-top: 8px;\">\n <div class=\"col-md-4\" style=\"margin-right: 8px;\">\n <div class=\"form-check form-check-right\">\n <input class=\"form-check-input\" [value]=\"1\" id=\"formRadiosRight1\" type=\"radio\"\n formControlName=\"restrictionType\" >\n <label class=\"form-check-label\" for=\"formRadiosRight1\">\n Cart\n </label>\n </div>\n </div>\n <div class=\"col-md-4\">\n <div class=\"form-check form-check-right\">\n <input class=\"form-check-input\" [value]=\"2\" id=\"formRadiosRight2\" type=\"radio\"\n formControlName=\"restrictionType\" >\n <label class=\"form-check-label\" for=\"formRadiosRight2\">\n Product\n </label>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n \n <div *ngIf=\"f.restrictionType.value == 2\" class=\"row mb-3\">\n <div class=\"col-md-5\">\n <div class=\"row\">\n <label class=\"col-sm-5 col-form-label\">Include Products</label>\n <div class=\"col-md-7\">\n <ng-select [multiple]=\"true\"\n [ngClass]=\"{ 'is-invalid': submitted && f.includeProductsIds?.errors }\"\n formControlName=\"includeProductsIds\">\n <ng-option *ngFor=\"let r of productsIncludeSource\" [value]=\"r.id\">\n {{r.name}}</ng-option>\n </ng-select>\n <div *ngIf=\"submitted && f.includeProductsIds?.errors\" class=\"invalid-feedback\">\n <div *ngIf=\"f.includeProductsIds?.errors?.required\">Required</div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"col-md-5\">\n <div class=\"row\">\n <label class=\"col-sm-5 col-form-label\">Exclude Products</label>\n <div class=\"col-md-7\">\n <ng-select [multiple]=\"true\"\n [ngClass]=\"{ 'is-invalid': submitted && f.excludeProductsIds?.errors }\"\n formControlName=\"excludeProductsIds\">\n <ng-option *ngFor=\"let r of productsExcludeSource\" [value]=\"r.id\">\n {{r.name}}</ng-option>\n </ng-select>\n <div *ngIf=\"submitted && f.excludeProductsIds?.errors\" class=\"invalid-feedback\">\n <div *ngIf=\"f.excludeProductsIds?.errors?.required\">Required</div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div *ngIf=\"isAdmin || canWrite\" class=\"row mb-3\">\n <div class=\"col-sm-12 d-flex flex-row justify-content-between align-items-center\">\n <a [routerLink]=\"['/pages/coupons']\" class=\"btn btn-orange\" type=\"button\">Cancel</a>\n <button class=\"blue-button\" style=\"margin-right:20px\" type=\"submit\">Save</button>\n </div>\n </div>\n </form>\n </div>\n </div>\n </div>\n</div>","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\nimport { ReplaySubject } from 'rxjs';\nimport { IWidget } from '../../../core/models/widget.model';\nimport { AppService } from '../../../store/app.service';\nimport { DashboardApiService } from '../dashboard.apiservice';\n\n@Component({\n selector: 'app-widget-item',\n templateUrl: './add-widget-item.component.html',\n styleUrls: ['./add-widget-item.component.scss']\n})\n\nexport class AddWidgetItemComponent implements OnInit {\n private destroyed$: ReplaySubject<boolean> = new ReplaySubject(1);\n @Input() widgetId!: string;\n @Input() widgetName!: string;\n\n savedSearches!: any[];\n selectedSavedSearches: string[] = [];\n constructor(private appService: AppService,\n private dashboardService: DashboardApiService,\n public activeModal: NgbActiveModal) {\n\n }\n\n ngOnInit(): void {\n this.dashboardService.getWidgetSavedSearches().subscribe((response: any) => {\n if (response.good) {\n this.savedSearches = response.savedSearch;\n }\n })\n }\n\n selectionChange(evt: any) {\n this.selectedSavedSearches = evt.map((x: any) => x.id);\n }\n\n save() {\n const request = { WidgetId: this.widgetId, SavedSearchesIds: this.selectedSavedSearches };\n this.dashboardService.addWidgetItems(request).subscribe((response: any) => {\n if (response.good) {\n this.appService.updateWidget$(response.data);\n this.activeModal.close();\n }\n });\n }\n}","<div class=\"example-box\" cdkDrag>\n <div class=\"modal-header\" style=\"justify-content: space-between;\">\n <h4 class=\"modal-title\">Add Saved Search to {{widgetName}}</h4>\n <button type=\"button\" class=\"close\" aria-label=\"Close\" (click)=\"activeModal.dismiss('Cross click')\">\n <span aria-hidden=\"true\">×</span>\n </button>\n </div>\n <div class=\"modal-body\">\n <div class=\"row mb-3\">\n <label class=\"col-sm-3\">Searches</label>\n <div class=\"col-sm-9\">\n <ng-select placeholder=\"Select\" [multiple]=\"true\" (change)=\"selectionChange($event)\" [items]=\"savedSearches\" bindLabel=\"name\"\n bindValue=\"id\">\n </ng-select>\n </div>\n </div>\n </div>\n <div class=\"modal-footer\" style=\"justify-content: space-between;\">\n <button type=\"button\" class=\"btn btn-orange\" (click)=\"activeModal.close('Close click')\">Cancel</button>\n <button type=\"submit\" class=\"blue-button\" (click)=\"save()\">Save</button>\n </div>\n</div>\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { IWidget } from '../../core/models/widget.model';\nimport { HttpService } from '../../shared/http/base.http';\n\n@Injectable()\nexport class DashboardApiService extends HttpService {\n getUserWidgets() {\n return this.get<IWidget[]>('/widget/all')\n }\n\n getWidgetValues(widgetId: string) {\n return this.get<IWidget>('/widget/value?widgetId=' + widgetId)\n }\n\n renameWidget(widgetId: string, newName: string) {\n return this.post<IWidget>(`/widget/rename?widgetId=${widgetId}&newname=${newName}`, null)\n }\n\n addWidget() {\n return this.post(`/widget`, null)\n }\n\n reorderWidget(widgetId: string, newOrder: number) {\n return this.get(`/widget/reorder?widgetId=${widgetId}&newOrder=${newOrder}`)\n }\n\n reorderWidgetItem(itemId: string, newOrder: number) {\n return this.get(`/widget/item/reorder?itemId=${itemId}&newOrder=${newOrder}`)\n }\n\n deleteWidget(widgetId: string) {\n return this.delete(`/widget?widgetId=${widgetId}`)\n }\n\n getWidgetSavedSearches() {\n return this.get(`/widget/savedsearches`)\n }\n\n addWidgetItems(request: any) {\n return this.post(`/widget/item`, request)\n }\n\n editWidgetItems(request: any) {\n return this.post(`/widget/editItems`, request)\n }\n}","import { Component, Input, OnInit } from '@angular/core';\nimport { BehaviorSubject, ReplaySubject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { IWidget } from '../../core/models/widget.model';\nimport { AppService } from '../../store/app.service';\nimport { Options, SortableEvent } from 'sortablejs';\nimport { IPermission, IUser } from '../../core/models/auth.models';\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\nimport * as util from '../../core/helpers/utility';\nimport { UtilityService } from '../../core/helpers/utility.service';\nimport { IColumn, LoadDataFromServer } from '../../shared/components/datatable/datatable.model';\nimport { PAGE_NAMES, ROLES, ROLES_TYPE } from '../../core/helpers/constants';\nimport { ITask } from '../../core/models/tasks.models';\nimport { TasksApiService } from '../tasks/tasks.apiservice';\nimport { TasksService } from '../tasks/tasks.service';\nimport { DataFeedService } from '../../shared/api/datafeed.service';\nimport { ICompany } from '../../core/models/datafeed.models';\nimport { ReportsApiService } from '../reports/reports.apiservice';\nimport { ICampaign } from '../../core/models/campaigns.model';\nimport { IRollupReportDataResponse } from '../../core/models/reports.models';\nimport { NgxUiLoaderService } from 'ngx-ui-loader';\nimport { createEmptyGuid } from '../../core/helpers/utility';\nimport { FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';\nimport { Router } from '@angular/router';\nimport { IReportingPeriod } from '../../core/models/reporting.models';\nimport { TasksDashboardComponent } from '../../shared/components/tasks-dashboard/tasks-dashboard.component';\n\n@Component({\n selector: 'app-dashboard',\n templateUrl: './dashboard.component.html',\n styleUrls: ['./dashboard.component.scss']\n})\n\n/**\n * Dashboard Component\n */\nexport class DashboardComponent implements OnInit {\n\n ROLES = ROLES;\n activeUser: IUser = {} as IUser;\n public userRoles: Array<number> = [];\n private loadEvent!: LoadDataFromServer;\n doWhat: IPermission = {} as IPermission;\n private destroyed$: ReplaySubject<boolean> = new ReplaySubject(1);\n\n id: any = '';\n token: string = '';\n isAdmin: boolean = false;\n externalUser: boolean = false;\n\n // vague names\n columns: Array<IColumn> = [];\n dataTotalCount: number = 0;\n iframeSrc: SafeResourceUrl= '';\n\n // change this!\n getHeight: string = '85vh';\n\n // Tabs\n tabNumber = 1;\n tabs = ['Tasks', 'Dashboard', 'Widgets'];\n activeTab = this.tabs[1];\n active: number = 1;\n\n // Widgets\n widgets!: IWidget[];\n\n // Data Structures\n platforms: Array<string> = [];\n todoTasksData: Array<ITask> = new Array<ITask>();\n companiesData: Array<ICompany> = [];\n campValues: Array<{ state: string; count: number; }> = [];\n // leadValues: Array<{ state: string; count: number; }> = [];\n\n // Marketing Manager Dash\n tooManyCompanies = false;\n rollupReportDataResponse: IRollupReportDataResponse | null = null;\n reportformsubmitted = false;\n companyId = '';\n companyData = {} as ICompany;\n filteredCampaignsData = new BehaviorSubject<Array<ICampaign>>([]);\n bShowSelect$ = new BehaviorSubject(false);\n loadCompleted = false;\n dataLoadCompleted = false;\n reportPeriods: Array<IReportingPeriod> = [];\n @Input() iReportFormat: string = '';\n reportUrl = '' as SafeResourceUrl;\n totalLeadCount: number = 0;\n totalClientCount: number = 0;\n totalCampaignCount: number = 0;\n totalActiveCampaignCount: number = 0;\n totalFacebookCampaignCount: number = 0;\n totalGoogleCampaignCount: number = 0;\n interval: any;\n\n reportForm: FormGroup = this.fb.group({\n key: [null, [Validators.required]],\n startDate: [null, [Validators.required]],\n stopDate: [null, [Validators.required]],\n platforms: ['All', [Validators.required]],\n reportFormat: ['html', [Validators.required]],\n aggregation: ['All', [Validators.required]],\n });\n\n sortableOptions: Options = {\n group: 'test',\n handle: '.draghandler',\n onUpdate:(event) => this.onWidgetDrop(event),\n dataIdAttr: 'id'\n };\n\n constructor(private appService: AppService, \n private sanitizer: DomSanitizer, \n private tasksService: TasksService,\n private dataFeedService: DataFeedService,\n private reportsService: ReportsApiService,\n private taskApiService: TasksApiService,\n private fb: FormBuilder,\n private router: Router,\n private ngxService: NgxUiLoaderService,\n public uService: UtilityService) { \n\n this.userRoles = [...this.uService.getUserRoles()];\n this.appService.getActiveUser$()\n .pipe(takeUntil(this.destroyed$))\n .subscribe(u => {\n this.activeUser = u;\n }\n )\n\n this.columns.push({ title: 'Title', field: 'title', sortable: true, searchable: true } as IColumn);\n this.columns.push({ title: 'Client', field: 'clientName', sortable: true, searchable: true, anchorLink: true, anchorType: 'client', anchorParamsField: 'clientId' } as IColumn);\n this.columns.push({ title: 'Campaign', field: 'campaignName', sortable: true, searchable: true, anchorLink: true, anchorType: 'campaign', anchorParamsField: 'campaignId' } as IColumn);\n this.columns.push({ title: 'Due Date', field: 'dueDate', sortable: true, pipe: 'P_AppDateFormat', pipeArgs: ['MM/DD/YYYY'] } as IColumn);\n this.columns.push({ title: 'Assigned User', field: 'assignedUserName', sortable: true, searchable: true, visible: (this.userRoles.includes(ROLES.Admin.Code)) || this.activeUser.type === ROLES_TYPE.Internal } as IColumn);\n }\n\n get selectedReportPeriod(): string | undefined | null { return this.reportForm?.controls?.key?.value; }\n get datesReadonly(): boolean { return !(this.selectedReportPeriod == 'Custom'); }\n get completed(): Array<ICampaign> { return this.rollupReportDataResponse?.campaigns.filter(f => f.bundle == \"Faulted\" || f.bundle == \"Completed\") ?? []; }\n get totalCompleted() { return this.completed.length; }\n get totalCampaigns() { return this.rollupReportDataResponse?.campaigns ? this.rollupReportDataResponse?.campaigns?.length : 0; }\n get combinedStatus() { return this.totalCampaigns == 0 ? 0 : 100 * this.totalCompleted / this.totalCampaigns; };\n get isEmptyCompanyGuid() { return this.companyId == createEmptyGuid(); };\n get aggregation() { return this.reportForm.get('aggregation') as FormControl; }\n get formPlatforms() { return this.reportForm.get('platforms') as FormControl; }\n get startDate() { return this.reportForm.get('startDate') as FormControl; }\n get stopDate() { return this.reportForm.get('stopDate') as FormControl; }\n get reportFormat() { return this.reportForm.get('reportFormat') as FormControl; }\n get key() { return this.reportForm.get('key') as FormControl; }\n\n ngOnInit(): void {\n this.token = util.getAuthToken();\n this.id = this.activeUser.id;\n\n if (this.userRoles.includes(1) || this.userRoles.includes(2) || this.userRoles.includes(10)) {\n if (this.userRoles.includes(1) || this.userRoles.includes(2)) {\n this.activeTab = this.tabs[0];\n this.tabNumber = 0;\n this.isAdmin = true;\n this.tabs = ['Tasks', 'Sales Pipeline', 'DMS Dash', 'Widgets', 'Manager Dash'];\n }\n // Bypass security check for this URL\n this.iframeSrc = this.sanitizer.bypassSecurityTrustResourceUrl(`https://prospects.reach.marketing/inside/?authToken=${this.token}&userId=${this.id}&role=${this.userRoles[0]}`);\n }\n else if (this.userRoles.includes(3)) {\n // Bypass security check for this URL\n this.iframeSrc = this.sanitizer.bypassSecurityTrustResourceUrl(`https://dms.reach.marketing/testgrounds/?authToken=${this.token}&userId=${this.id}`);\n }\n else if (this.userRoles.includes(4) || this.userRoles.includes(12)) {\n this.tabs = ['Tasks', 'Widgets'];\n this.activeTab = this.tabs[0];\n }\n else {\n this.externalUser = true;\n }\n\n this.appService.setPageTitle$('');\n this.appService.getWidgets$()\n .pipe(takeUntil(this.destroyed$))\n .subscribe((response: IWidget[]) => {\n this.widgets = response.sort((a, b) => a.order - b.order);\n });\n this.appService.fetchWidgets();\n\n if (!this.externalUser) {\n this.appService.getAllTasks$()\n .pipe(takeUntil(this.destroyed$))\n .subscribe((response: any) => {\n this.todoTasksData = response.data;\n this.dataTotalCount = response.totalCount;\n });\n\n this.appService.getForceLoadingTasks()\n .pipe(takeUntil(this.destroyed$))\n .subscribe((res: Boolean) => {\n if (res) {\n this.loadData();\n this.appService.setForceLoadingTasks(false);\n }\n })\n\n this.tasksService.onSave.pipe(takeUntil(this.destroyed$))\n .subscribe((v: any) => {\n if (v) {\n this.loadData();\n }\n });\n this.tasksService.onDelete.pipe(takeUntil(this.destroyed$))\n .subscribe((v: any) => {\n if (v) {\n this.loadData();\n }\n });\n this.tasksService.onMarkAsComplete.pipe(takeUntil(this.destroyed$))\n .subscribe((v: any) => {\n if (v) {\n this.loadData();\n }\n });\n }\n if (this.externalUser) {\n this.viewAllMMDash();\n }\n }\n\n selectTab(tab: string) {\n this.activeTab = tab;\n this.tabNumber = this.tabs.indexOf(tab);\n if (this.isAdmin) {\n if (this.activeTab === 'DMS Dash') {\n this.iframeSrc = this.sanitizer.bypassSecurityTrustResourceUrl(`https://dms.reach.marketing/testgrounds/?authToken=${this.token}&userId=${this.id}`);\n }\n else {\n this.iframeSrc = this.sanitizer.bypassSecurityTrustResourceUrl(`https://prospects.reach.marketing/inside/?authToken=${this.token}&userId=${this.id}&role=${this.userRoles[0]}`);\n }\n if (this.activeTab === 'Manager Dash') {\n this.viewAllMMDash();\n }\n }\n }\n\n onCheckBoxChange(params: any) {\n this.taskApiService.markTask({ id: params.data.id, isCompleted: params.evt.currentTarget.checked })\n .pipe(takeUntil(this.destroyed$))\n .subscribe((response: any) => {\n this.loadData();\n })\n }\n\n onWidgetDrop(event: SortableEvent) {\n const widgetId = event.item.id;\n const newOrder = event.newIndex! + 1;\n this.appService.reorderWidget(widgetId, newOrder);\n }\n\n getLoadingParameters() {\n var yourDate = new Date();\n const offset = yourDate.getTimezoneOffset();\n yourDate = new Date(yourDate.getTime() + (offset*60*3429))\n let todayAtUserComputer = yourDate.toISOString().split('T')[0];\n return {\n savedSearchId: null,\n showOnlyMyTasks: true,\n dueDate: 'Overdue',\n completion: 'ToDo',\n todayAtUserComputer,\n ...this.loadEvent\n }\n }\n\n editRow(evt: any) {\n evt.allTasksloadingParameters = this.getLoadingParameters();\n this.tasksService.openEditTaskModal(evt);\n }\n\n onLoadingData(event: LoadDataFromServer) {\n this.loadEvent = event;\n if (!this.externalUser) {\n this.loadData();\n }\n }\n\n deleteRows(evt: any) {\n this.taskApiService.deleteTask(evt.id)\n .pipe(takeUntil(this.destroyed$))\n .subscribe((response: any) => {\n this.loadData();\n })\n }\n\n loadData() {\n this.appService.fetchAllTasks(this.getLoadingParameters());\n }\n\n onFormSubmit() {\n this.ngxService.start();\n this.reportformsubmitted = true;\n \n if (this.reportForm.invalid)\n return;\n\n var campaigns = [] as Array<string>;\n campaigns = [createEmptyGuid()];\n\n let params = {\n companyId: this.companyId,\n reportFormat: this.reportFormat.value,\n campaigns: campaigns,\n aggregation: this.aggregation.value,\n platforms: this.formPlatforms.value,\n dateStart: this.startDate.value,\n dateStop: this.stopDate.value,\n };\n\n var paramsUrl = \"\" + this.router.createUrlTree([''], { queryParams: params });\n paramsUrl = paramsUrl.replace('/', '');\n\n this.rollupReportDataResponse = null;\n this.reportsService.startRollupReportProcess(paramsUrl)\n .subscribe(res => {\n this.rollupReportDataResponse = res.data;\n if (this.rollupReportDataResponse?.orderId) {\n this.dataLoadCompleted = false;\n this.active = 2;\n if (this.rollupReportDataResponse?.orderId) {\n this.interval = setInterval(() => {\n this.reportsService.getRollupReportProgress(this.rollupReportDataResponse?.orderId as string)\n .subscribe(res => {\n if (res.data.status == 'Completed') {\n clearInterval(this.interval);\n this.dataLoadCompleted = true;\n this.active = 3;\n if (this.rollupReportDataResponse) {\n this.reportsService.getRollupReport(this.rollupReportDataResponse?.orderId, this.iReportFormat)\n .subscribe(responseUrl => {\n document.querySelector('iframe')?.setAttribute(\"src\", responseUrl);\n });\n this.loadCompleted = true;\n }\n }\n });\n \n this.reportsService.getRollupReportCampaignsProgress(this.rollupReportDataResponse?.orderId as string)\n .subscribe(res => {\n for (var initial of res.data) {\n var campaign = this.rollupReportDataResponse?.campaigns.find(f => f.id == initial.campaignId);\n if (campaign) {\n if (initial.status == \"Faulted\" || initial.status == \"Completed\") {\n campaign.bundle = initial.status;\n campaign.opportunityNotes = initial.message;\n }\n else if (initial.status == \"Started\" && !(campaign.bundle == \"Faulted\" || campaign.bundle == \"Completed\")) {\n campaign.bundle = initial.status;\n campaign.opportunityNotes = initial.message;\n }\n }\n }\n \n if (this.rollupReportDataResponse) {\n this.rollupReportDataResponse.campaigns = this.rollupReportDataResponse.campaigns.sort((a, b) => a.bundle == 'Started' && b.bundle !== 'Started' ? -1 : 1); \n }\n });\n \n }, 1000);\n }\n }\n });\n }\n\n onReportPeriodChange(selectedPeriod: string) {\n let period = this.reportPeriods.find(f => f.key == selectedPeriod);\n\n this.key.setValue(selectedPeriod);\n this.startDate.setValue(period?.startDate);\n this.stopDate.setValue(period?.stopDate);\n\n this.active = 1;\n }\n\n handlePlatformsChange($event: any, val: string) {\n var target = $event.target;\n if (target.checked) {\n this.active = 1;\n }\n }\n\n onFrameLoadComplete() {\n if (this.rollupReportDataResponse) {\n this.loadCompleted = true;\n }\n this.ngxService.stopAll();\n }\n\n viewAllMMDash() {\n this.doWhat = this.appService.getUserRolesForPage(PAGE_NAMES.Campaigns);\n this.appService.getAllCampaigns$()\n .pipe(takeUntil(this.destroyed$))\n .subscribe((response: any) => {\n this.totalCampaignCount = response.totalCount;\n var totalActiveCampaigns = [...response.data].filter((x: any) => x.stage !== 'Inactive');\n this.totalActiveCampaignCount = totalActiveCampaigns.length;\n this.totalFacebookCampaignCount = totalActiveCampaigns.filter((x: any) => x.platform === 'Facebook').length;\n this.totalGoogleCampaignCount = totalActiveCampaigns.filter((x: any) => x.platform === 'Google').length;\n const counts = [...response.data].reduce((acc: { [key: string]: number }, item) => {\n let key = item['stageId']?.toString();\n if (key) {\n key = DASH_CAMPAIGN_STAGES.find(x => x.value === Number(key))?.title;\n if (key !== 'Inactive') {\n acc[key] = (acc[key] || 0) + 1;\n }\n }\n return acc;\n }, {});\n \n this.campValues = Object.entries(counts).map(([state, count]) => ({state, count: Number(count)}))\n .sort((a, b) => CALLING_DASH_CAMPAIGN_STAGES.indexOf(a.state) - (CALLING_DASH_CAMPAIGN_STAGES.indexOf(b.state)));\n });\n this.appService.fetchAllCampaigns({});\n\n\n this.doWhat = this.appService.getUserRolesForPage(PAGE_NAMES.Clients);\n this.appService.getAllClients$()\n .pipe(takeUntil(this.destroyed$))\n .subscribe((response: any) => {\n this.totalClientCount = [...response.data].length;\n });\n this.appService.fetchAllClients({});\n\n this.doWhat = this.appService.getUserRolesForPage(PAGE_NAMES.Leads);\n this.appService.getAllLeads$()\n .pipe(takeUntil(this.destroyed$))\n .subscribe((response: any) => {\n if (response.leads) {\n this.totalLeadCount = response.totalCount;\n }\n });\n this.appService.fetchAllLeads({});\n\n this.dataFeedService.getAssociatedCompanies()\n .subscribe(res => {\n this.companiesData = [...res.data];\n if ([...res.data].length > 1) {\n this.tooManyCompanies = true;\n } else {\n this.doWhat = this.appService.getUserRolesForPage(PAGE_NAMES.Reports);\n let id = [...res.data][0]['id'];\n \n if (id) {\n this.companyId = id;\n if (!this.isEmptyCompanyGuid) {\n this.dataFeedService.getCompanyData(id)\n .pipe(takeUntil(this.destroyed$))\n .subscribe((response: any) => {\n this.companyData = response.data;\n });\n }\n this.dataFeedService.getCompanyAssociatedCampaigns(id)\n .pipe(takeUntil(this.destroyed$))\n .subscribe((response: any) => {\n this.platforms = Array.from(new Set([...response.data].filter(f => f.campaignAdAccounts.length > 0).map(item => item.platform)));\n });\n }\n \n this.reportsService.getSupportedReportingPeriods()\n .pipe(takeUntil(this.destroyed$))\n .subscribe((response: Array<any>) => {\n this.reportPeriods = response as Array<IReportingPeriod>;\n this.reportPeriods = this.reportPeriods.slice(1);\n this.onReportPeriodChange(\"Past Week\");\n });\n }\n });\n }\n}\n\nexport const DASH_CAMPAIGN_STAGES = [\n {\n title: \"Tech Setup\",\n value: 1\n },\n {\n title: \"Campaign Set-Up\",\n value: 2\n },\n {\n title: \"Client Approval\",\n value: 3\n },\n {\n title: \"QC\",\n value: 4\n },\n {\n title: \"Waiting to Start\",\n value: 5\n },\n {\n title: \"Active\",\n value: 6\n },\n {\n title: \"Paused\",\n value: 7\n },\n {\n title: \"Inactive\",\n value: 8\n },\n {\n title: \"Cancelling\",\n value: 9\n },\n];\n\nexport const CALLING_DASH_CAMPAIGN_STAGES = [\n \"Tech Setup\",\n \"Campaign Set-Up\",\n \"Client Approval\",\n \"QC\",\n \"Waiting to Start\",\n \"Active\",\n \"Cancelling\",\n \"Paused\"\n];\n","<ul *ngIf=\"!externalUser\" class=\"tab-titles\">\n <li *ngFor=\"let tab of tabs; let t = index;\" (click)=\"selectTab(tab)\" [ngStyle]=\"{'margin-left' : (t !== 0) ? '-15px' : '0px', 'z-index' : (activeTab === tab) ? '5' : '0'}\" [ngClass]=\"(activeTab === tab) ? 'activeLI' : 'inactiveLI'\"><h5>{{ tab }}</h5></li>\n</ul>\n<div class=\"todo-card\" [ngStyle]=\"{'display': ((activeTab === 'Tasks') && !externalUser) ? 'block' : 'none'}\">\n <div class=\"card-body\">\n <app-tasks-dashboard></app-tasks-dashboard>\n </div>\n</div>\n<div *ngIf=\"((activeTab === 'Dashboard') && !externalUser) || (activeTab === 'Sales Pipeline') || (activeTab === 'DMS Dash')\" class=\"todo-card\">\n <iframe allow=\"clipboard-read; clipboard-write\" [style.height]=\"getHeight\" style=\"width: 100%;\"[src]=\"iframeSrc\" scrolling=\"yes\"></iframe>\n</div>\n<div style=\"margin-top: 20px;\" *ngIf=\"(activeTab === 'Widgets')\" class=\"d-flex flex-wrap\" [sortablejs]=\"widgets\" [sortablejsOptions]=\"sortableOptions\">\n <ng-container *ngFor=\"let widget of widgets;\">\n <app-widget [widget]=\"widget\" [id]='widget.id'></app-widget>\n </ng-container>\n</div>\n<div *ngIf=\"(activeTab === 'Manager Dash') || externalUser\" class=\"mm-dash-row\">\n <div class=\"mm-dash-cell\">\n <h5 class=\"cell-title\">Summary</h5>\n <div class=\"under-title-inner-cell\">\n <div class=\"inner-cell-block\">\n <h5>Total Campaigns:</h5>\n <div class=\"campaign-totals-row\">\n <h3>{{ totalActiveCampaignCount }}</h3>\n </div>\n </div>\n <div class=\"inner-cell-block\">\n <h5>Total Meta Campaigns:</h5>\n <div class=\"campaign-totals-row\">\n <h3>{{ totalFacebookCampaignCount }}</h3>\n </div>\n </div>\n <div class=\"inner-cell-block\">\n <h5>Total Google Campaigns:</h5>\n <div class=\"campaign-totals-row\">\n <h3>{{ totalGoogleCampaignCount }}</h3>\n </div>\n </div>\n <div class=\"inner-cell-block\">\n <h5>Total # Of Clients:</h5>\n <div class=\"campaign-totals-row\">\n <h3>{{ this.totalClientCount }}</h3>\n </div>\n </div>\n </div>\n <div class=\"inner-cell-block\">\n <p class=\"disclaimer-text\">Total campaigns include all active campaigns as well as those currently in the setup phases.</p>\n </div>\n </div>\n <div *ngIf=\"campValues.length > 0\" class=\"mm-dash-cell\">\n <h5 class=\"cell-title\">Stages</h5>\n <div class=\"under-title-inner-cell\">\n <div *ngFor=\"let item of campValues;\" class=\"inner-cell-block\">\n <h5>{{ item.state }} Campaigns: </h5>\n <div class=\"campaign-totals-row\">\n <h3>{{ item.count }}</h3>\n </div>\n </div>\n </div>\n </div>\n <div *ngIf=\"(this.totalLeadCount > 0)\" class=\"mm-dash-cell\">\n <h5 class=\"cell-title\">Leads</h5>\n <div class=\"under-title-inner-cell\">\n <div class=\"inner-cell-block\">\n <h5>Total # Of Leads:</h5>\n <div class=\"campaign-totals-row\">\n <h3>{{ this.totalLeadCount }}</h3>\n </div>\n </div>\n </div>\n <div class=\"inner-cell-block\">\n <p class=\"disclaimer-text\">Lead metrics are displayed if REACH is actively collecting leads. If your brand does not permit the storage of personally identifiable information (PII), this will not be reflected in the system. Please use the Rollup Reporting widget for the most accurate campaign performance metrics.</p>\n </div>\n </div>\n <div *ngIf=\"!tooManyCompanies\" class=\"mm-dash-cell\">\n <h5 class=\"cell-title\">Reporting</h5>\n <div class=\"under-title-inner-cell\">\n <form [formGroup]=\"reportForm\" (submit)=\"onFormSubmit()\" class=\"mm-reporting-form\">\n <div>\n <div *ngIf=\"!isEmptyCompanyGuid\" class=\"g-3 align-items-center mb-3\">\n <label class=\"col-6 mb-2\">Company Name</label>\n <div class=\"col-6 mb-2\">{{ companyData.name }}</div>\n <label class=\"col-6 mb-2\">Platforms</label>\n <div class=\"col-auto\">\n <div class=\"form-check form-check-inline\">\n <input class=\"form-check-input\" type=\"radio\" value=\"All\" name=\"platforms\" formControlName=\"platforms\"\n id=\"AllPlatforms\" checked (change)=\"handlePlatformsChange($event, 'All')\">\n <label class=\"form-check-label\" for=\"AllPlatforms\">\n All\n </label>\n </div>\n <div *ngFor=\"let platform of platforms\" class=\"form-check form-check-inline\">\n <input class=\"form-check-input\" type=\"radio\" [value]=\"platform\" name=\"platforms\"\n formControlName=\"platforms\" id=\"platform_{{ platform }}\"\n (change)=\"handlePlatformsChange($event, platform)\">\n <label class=\"form-check-label\" for=\"platform_{{ platform }}\">\n {{ platform }}\n </label>\n </div>\n </div>\n </div>\n <div class=\"row g-3 align-items-center mb-3\">\n <label class=\"col-12 mb-2\">Please select report period</label>\n <div class=\"col-auto\" style=\"margin-top: 0px !important;\">\n <select class=\"form-select mb-2\" aria-label=\"Please select period.\" (change)=\"onReportPeriodChange(t.value)\" #t>\n <option selected disabled>Please select period.</option>\n <option type=\"button\" ngbDropdownItem *ngFor=\"let p of reportPeriods\"\n [selected]=\"selectedReportPeriod==p.key\">\n {{ p.key }}\n </option>\n </select>\n </div>\n <label class=\"col-2 mb-2\"></label>\n </div>\n </div>\n <div class=\"col-auto\">\n <button type=\"submit\" class=\"blue-button\" style=\"width: 100% !important;\">View Rollup Report</button>\n </div>\n </form>\n </div>\n </div>\n <ul ngbNav #nav=\"ngbNav\" [(activeId)]=\"active\" style=\"width: 24% !important;\">\n <li [ngbNavItem]=\"1\">\n </li>\n <li [ngbNavItem]=\"3\" style=\"width: 48% !important;\">\n <ng-template ngbNavContent style=\"background-color: white;\">\n <div class=\"la-ball-spin-clockwise la-dark la-3x\" *ngIf=\"!loadCompleted\">\n <div></div>\n <div></div>\n <div></div>\n <div></div>\n <div></div>\n <div></div>\n <div></div>\n <div></div>\n </div>\n <div style=\"background-color: white; border-radius: 0.25rem;\">\n <h5 class=\"cell-title\">Rollup Report</h5>\n <iframe #iframe style=\"height: 99vh; padding: 8px;\" width=\"100%\" (load)=\"onFrameLoadComplete()\"></iframe>\n </div>\n </ng-template>\n </li>\n </ul>\n <div [ngbNavOutlet]=\"nav\" style=\"background-color: transparent; width: 100%;\"></div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\nimport { DashboardComponent } from './dashboard.component';\nimport { WidgetComponent } from './widget/widget.component';\nimport { DashboardApiService } from './dashboard.apiservice';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { MatCardModule } from '@angular/material/card';\nimport { SortablejsModule } from 'ngx-sortablejs'\nimport { AddWidgetItemComponent } from './add-widget-item/add-widget-item.component';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { NgSelectModule } from '@ng-select/ng-select';\nimport { DatatableModule } from \"../../shared/components/datatable/datatable.module\";\nimport { TasksDatatableModule } from \"../../shared/components/tasks-datatable/tasks-datatable.module\";\nimport { NgbNavModule } from '@ng-bootstrap/ng-bootstrap';\nimport { FeatherModule } from 'angular-feather';\nimport { SharedModule } from '../../shared/shared.module';\n\n@NgModule({\n declarations: [\n DashboardComponent,\n WidgetComponent,\n AddWidgetItemComponent\n ],\n providers: [DashboardApiService],\n imports: [\n FormsModule,\n ReactiveFormsModule,\n CommonModule,\n RouterModule,\n DragDropModule,\n MatCardModule,\n SortablejsModule,\n MatCheckboxModule,\n NgSelectModule,\n DatatableModule,\n TasksDatatableModule,\n NgbNavModule,\n FeatherModule,\n SharedModule\n ]\n})\nexport class DashboardModule { }\n","import { Component, Input, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\nimport { ReplaySubject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { Options, SortableEvent } from 'sortablejs';\nimport { IWidget } from '../../../core/models/widget.model';\nimport { AppService } from '../../../store/app.service';\nimport { AddWidgetItemComponent } from '../add-widget-item/add-widget-item.component';\n@Component({\n selector: 'app-widget',\n templateUrl: './widget.component.html',\n styleUrls: ['./widget.component.scss']\n})\n\nexport class WidgetComponent implements OnInit {\n private destroyed$: ReplaySubject<boolean> = new ReplaySubject(1);\n @Input() widget!: IWidget;\n renameVisible: boolean = false;\n editVisible: boolean = false;\n newName: any = '';\n changeLayoutStarted: boolean = false;\n removeItemsList: string[] = [];\n\n constructor(private appService: AppService,\n private modalService: NgbModal,\n private router: Router) {\n this.appService.getChangeLayoutValue()\n .pipe(takeUntil(this.destroyed$))\n .subscribe((response: boolean) => { this.changeLayoutStarted = response; });\n }\n\n ngOnInit(): void {\n if (this.widget.items.length && this.widget.items[0].value === '') {\n this.appService.fetchWidgetValues(this.widget.id);\n }\n }\n\n refresh() {\n this.widget.items.forEach(item => item.value = '');\n this.appService.fetchWidgetValues(this.widget.id);\n }\n\n removeWidget() {\n this.appService.removeWidget$(this.widget.id);\n }\n\n renameWidget() {\n this.renameVisible = true;\n this.newName = this.widget.name;\n }\n\n cancelRename() {\n this.renameVisible = false;\n }\n\n completeRename() {\n this.appService.renameWidget$(this.widget.id, this.newName);\n this.newName = '';\n this.renameVisible = false;\n }\n\n addItem() {\n const dialogRef = this.modalService.open(AddWidgetItemComponent);\n dialogRef.componentInstance.widgetId = this.widget.id;\n dialogRef.componentInstance.widgetName = this.widget.name;\n }\n\n edit() {\n this.editVisible = true;\n this.removeItemsList = [];\n }\n\n addItemToRemoveList(itemId: string) {\n this.removeItemsList.push(itemId);\n }\n\n isItemToBeDeleted(itemId: string) {\n return this.removeItemsList.indexOf(itemId) > -1;\n }\n\n\n completeEdit() {\n var request = {\n WidgetId: this.widget.id,\n RemoveItems: this.removeItemsList\n }\n this.appService.editWidgetItems$(request);\n this.removeItemsList = [];\n this.editVisible = false;\n }\n\n cancelEdit() {\n this.editVisible = false;\n this.removeItemsList = [];\n }\n\n itemClicked(item: any) {\n const query = { queryParams: { savedsearchid: item.savedSearchId } };\n if (item.resultType.toLowerCase() === 'user')\n this.router.navigate(['/pages/users'], query);\n\n else if (item.resultType.toLowerCase() === 'campaign')\n this.router.navigate(['/pages/campaigns'], query);\n\n else if (item.resultType.toLowerCase() === 'company')\n this.router.navigate(['/pages/companies'], query);\n\n else if (item.resultType.toLowerCase() === 'client')\n this.router.navigate(['/pages/clients'], query);\n\n else if (item.resultType.toLowerCase() === 'prospect')\n this.router.navigate(['/pages/prospects'], query);\n\n else if (item.resultType.toLowerCase() === 'tag')\n this.router.navigate(['/pages/tags'], query);\n\n else if (item.resultType.toLowerCase() === 'lead')\n this.router.navigate(['/pages/leads'], query);\n\n else if (item.resultType.toLowerCase() === 'task')\n this.router.navigate(['/pages/tasks'], query);\n }\n\n onWidgetItemDrop(event: SortableEvent) {\n const itemId = event.item.id;\n const newOrder = event.newIndex! + 1;\n this.appService.reorderWidgetItem(itemId, newOrder);\n }\n\n getSortableOptions(widget: IWidget) {\n const sortableOptions: Options = {\n group: 'widgetItems' + widget.id,\n handle: '.itemdraghandler',\n onUpdate: (event) => this.onWidgetItemDrop(event),\n dataIdAttr: 'id'\n };\n return sortableOptions;\n\n }\n}","<mat-card class=\"card\" [id]=\"widget.id\">\n <mat-card-title>\n <div>\n <div class=\"header\">\n <div class=\"title\">\n <p *ngIf=\"!renameVisible\">{{widget.name}}</p>\n <input *ngIf=\"renameVisible\" type=\"text\" [(ngModel)]=\"newName\">\n </div>\n <div class=\"seperator\"></div>\n <div class=\"widget-actions\" *ngIf=\"!editVisible\">\n <div *ngIf=\"!changeLayoutStarted\">\n <a role=\"button\" (click)=\"edit()\">\n <i class=\"fas fa-edit fa-xs\"></i>\n </a>\n <a role=\"button\" (click)=\"refresh()\">\n <i class=\"fas fa-sync-alt fa-xs\"></i>\n </a>\n <a role=\"button\" (click)=\"removeWidget()\">\n <i class=\"fas fa-times fa-xs\"></i>\n </a>\n </div>\n <div *ngIf=\"!changeLayoutStarted\">\n <a role=\"button\" (click)=\"renameWidget()\" *ngIf=\"!renameVisible\"\n class=\"btn btn-xs btn-link text-info font-13\" style=\"font-size: xx-small;\">Rename</a>\n <a role=\"button\" (click)=\"completeRename()\" *ngIf=\"renameVisible\"\n class=\"btn btn-xs btn-link text-info font-13\" style=\"font-size: xx-small;\">Save</a>\n <a role=\"button\" (click)=\"cancelRename()\" *ngIf=\"renameVisible\"\n class=\"btn btn-xs btn-link text-info font-13\" style=\"font-size: xx-small;\">Cancel</a>\n </div>\n <div *ngIf=\"changeLayoutStarted\">\n <i class=\"fas fa-bars fa-xs draghandler\" style=\"cursor: move;\"></i>\n </div>\n </div>\n </div>\n </div>\n </mat-card-title>\n <mat-card-content>\n <div [sortablejs]=\"widget.items\" [sortablejsOptions]=\"getSortableOptions(widget)\" style=\"padding-top: 15px;\">\n <ng-container *ngFor=\"let item of widget.items;\">\n <div [id]='item.id'>\n <hr style=\"margin-top: 5px;\">\n <div class=\"item\" [class.item-delete]=\"isItemToBeDeleted(item.id)\">\n <p (click)=\"itemClicked(item)\" class=\"name\">{{item.name}}</p>\n <p class=\"namevalueseperator\"></p>\n <i class=\"fa-solid fa-spinner fa-spin\" *ngIf=\"item.value === ''\" style=\"font-size: 17px;\"></i>\n <p (click)=\"itemClicked(item)\" *ngIf=\"item.value !== ''\" class=\"value\">{{item.value}}</p>\n <a role=\"button\" *ngIf=\"editVisible\" (click)=\"addItemToRemoveList(item.id)\">\n <i class=\"fas fa-trash-alt fa-xs\"></i>\n </a>\n <div class=\"moveitem\" *ngIf=\"changeLayoutStarted\">\n <i class=\"fas fa-bars fa-xs itemdraghandler\" style=\"cursor: move;\"></i>\n </div>\n </div>\n </div>\n </ng-container>\n </div>\n <div class=\"d-flex justify-content-end\" *ngIf=\"!editVisible\">\n <a (click)=\"addItem()\" role=\"button\" class=\"btn btn-xs btn-link text-info font-13\"\n style=\"font-size: xx-small;\">Add Another Stat</a>\n </div>\n <div class=\"d-flex justify-content-end\">\n <a role=\"button\" (click)=\"completeEdit()\" *ngIf=\"editVisible\" class=\"btn btn-xs btn-link text-info font-13\"\n style=\"font-size: xx-small;\">Save</a>\n <a role=\"button\" (click)=\"cancelEdit()\" *ngIf=\"editVisible\" class=\"btn btn-xs btn-link text-info font-13\"\n style=\"font-size: xx-small;\">Cancel</a>\n </div>\n </mat-card-content>\n</mat-card>","import { Injectable } from '@angular/core';\nimport { of } from 'rxjs';\nimport { HttpService } from '../../shared/http/base.http';\n\n@Injectable()\nexport class GlobalSearchApiService extends HttpService {\n getSearchResults(keyword: string) {\n return this.get('/globalsearch?keyword=' + keyword);\n }\n}","import { Component, OnInit } from '@angular/core';\nimport { ReplaySubject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { GlobalSearchApiService } from './global-search.apiservice';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { CAMPAIGN_STAGES } from '../../core/helpers/constants';\nimport { AppService } from '../../store/app.service';\n\n@Component({\n selector: 'app-global-search',\n templateUrl: './global-search.component.html',\n styleUrls: ['./global-search.component.scss']\n})\n\nexport class GlobalSearchComponent implements OnInit {\n\n private destroyed$: ReplaySubject<boolean> = new ReplaySubject(1);\n result: Map<string, any[]> = new Map();\n keyword: string = '';\n constructor(private searchApiService: GlobalSearchApiService,\n private route: ActivatedRoute,\n private router: Router,\n private appService: AppService) { }\n\n ngOnInit(): void {\n this.appService.setPageTitle$('');\n this.columns.prospects = [...this.columns.clients];\n\n this.route.params.subscribe(params => {\n this.keyword = params['keyword'];\n this.search(this.keyword);\n });\n }\n\n columns: any = {\n \"clients\": [\n { \"field\": \"firstname\", \"title\": \"First Name\" },\n { \"field\": \"lastname\", \"title\": \"Last Name\" },\n { \"field\": \"brand\", \"title\": \"Company\" },\n { \"field\": \"dmsname\", \"title\": \"DMS\" },\n { \"field\": \"salesrep\", \"title\": \"Sales Rep\" },\n { \"field\": \"phone\", \"title\": \"Phone\" },\n { \"field\": \"email\", \"title\": \"Email\" }\n ],\n \"campaigns\": [\n { \"field\": \"name\", \"title\": \"Name\" },\n { \"field\": \"clientname\", \"title\": \"Client\" },\n { \"field\": \"platform\", \"title\": \"Platform\" },\n { \"field\": \"dms\", \"title\": \"DMS\" },\n { \"field\": \"stage\", \"title\": \"Stage\", \"transform\": this.getStageName },\n { \"field\": \"subscriptionactive\", \"title\": \"Active Subscription\", transform: this.getActiveSubscribtion }\n ],\n \"tags\": [\n { \"field\": \"name\", \"title\": \"Name\" },\n { \"field\": \"description\", \"title\": \"Description\" },\n { \"field\": \"categories\", \"title\": \"Categories\" }\n ],\n \"companies\": [\n { \"field\": \"companyname\", \"title\": \"Name\" },\n { \"field\": \"firstname\", \"title\": \"First Name\" },\n { \"field\": \"lastname\", \"title\": \"Last Name\" },\n { \"field\": \"email\", \"title\": \"Email\" }\n ],\n \"users\": [\n { \"field\": \"firstname\", \"title\": \"First Name\" },\n { \"field\": \"lastname\", \"title\": \"Last Name\" },\n { \"field\": \"email\", \"title\": \"Email\" }\n ],\n \"leads\": [\n { \"field\": \"firstname\", \"title\": \"First Name\" },\n { \"field\": \"lastname\", \"title\": \"Last Name\" },\n { \"field\": \"email\", \"title\": \"Email\" },\n { \"field\": \"phone\", \"title\": \"Phone\" },\n { \"field\": \"campaignname\", \"title\": \"Campaign\" },\n { \"field\": \"referralid\", \"title\": \"Referral Id\" },\n { \"field\": \"referralsource\", \"title\": \"Referral Source\" },\n ],\n \"tasks\": [\n { \"field\": \"title\", \"title\": \"Title\" },\n { \"field\": \"clientname\", \"title\": \"Client Name\" },\n { \"field\": \"campaignname\", \"title\": \"Campaign Name\" },\n { \"field\": \"duedate\", \"title\": \"Due Date\" },\n { \"field\": \"assignedusername\", \"title\": \"Assigned User\" },\n ],\n \"subscriptions\": [\n { \"field\": \"numericid\", \"title\": \"#\" },\n { \"field\": \"product\", \"title\": \"Products\" },\n { \"field\": \"clientname\", \"title\": \"Client Name\" },\n { \"field\": \"startdate\", \"title\": \"Start Date\", pipe: 'P_AppDateFormat', pipeArgs: ['MM/DD/YYYY'] },\n { \"field\": \"status\", \"title\": \"Status\" },\n { \"field\": \"campaigns\", \"title\": \"Campaigns\" },\n ]\n }\n\n search(keyword: string) {\n this.result.clear();\n const that = this;\n this.searchApiService.getSearchResults(keyword)\n .pipe(takeUntil(this.destroyed$))\n .subscribe((response: any) => {\n that.result = that.processSearchResponse(response, that.columns);\n });\n }\n\n processSearchResponse(response: any, columns: any): Map<string, any[]> {\n response.data = this.onlyUnique(response.data);\n var result: Map<string, any[]> = new Map();\n for (let i = 0; i < response.data.length; i++) {\n const responseItem = response.data[i];\n const type = responseItem.estype;\n const defination = columns[type];\n if (!result.has(type)) {\n result.set(type, []);\n }\n let row: any = {};\n Object.keys(responseItem).forEach((key: string) => {\n var lowerCaseKey = key.toLowerCase();\n if (defination.find((x: any) => x.field === lowerCaseKey)?.transform) {\n row[lowerCaseKey] = defination.find((x: any) => x.field === lowerCaseKey).transform(responseItem);\n } else {\n row[lowerCaseKey] = responseItem[key];\n }\n });\n result.get(type)?.push(row);\n }\n return result;\n }\n\n onlyUnique(arr: Array<any>) {\n arr = arr.map((x: any) => { return { ...x, id: x.id.split('_')[0] } });\n arr = arr.filter((v, i, a) => a.findIndex(v2 => (v2.id === v.id)) === i);\n return arr;\n }\n\n getLink(entity: any) {\n if (entity.estype === 'clients') { return `/pages/client-details/${entity.id}`; }\n else if (entity.estype === 'campaigns') { return `/pages/campaign-details/${entity.id}`; }\n else if (entity.estype === 'tags') { return `/pages/tags/`; }\n else if (entity.estype === 'companies') { return `/pages/companies/`; }\n else if (entity.estype === 'users') { return `/pages/users/`; }\n else if (entity.estype === 'leads') { return `/pages/leads/details/${entity.id}`; }\n else if (entity.estype === 'tasks') { return `/pages/tasks`; }\n else if (entity.estype === 'subscriptions') { return `/pages/subscriptions/${entity.id}`; }\n else if (entity.estype === 'prospects') { return `/pages/prospect-details/${entity.id}`; }\n return null;\n }\n\n onRowClick(evt: any) {\n const link = this.getLink(evt);\n this.router.navigate([link]);\n }\n\n getStageName(item: any) {\n return CAMPAIGN_STAGES.find(x => x.value === item.Stage)?.title;\n }\n\n getActiveSubscribtion(item: any) {\n return item.subscriptionactive ? \"Yes\" : \"No\";\n }\n}\n","<ng-container *ngFor=\"let category of result | keyvalue\">\n <mat-card class=\"card\">\n <mat-card-title class=\"title\">\n {{category.key}}\n <hr>\n </mat-card-title>\n <mat-card-content class=\"body\" ngPreserveWhitespaces>\n <app-datatable [iCanRead]=\"true\" [iCanWrite]=\"true\" [iColumns]=\"columns[category.key]\" [iData$]=\"category.value\" [iShowActions]=\"false\"\n [iShowHeader]=\"false\" [iShowSelect]=\"false\" (oRowClick)=\"onRowClick($event)\"></app-datatable>\n </mat-card-content>\n </mat-card>\n</ng-container>\n\n<ng-container *ngIf=\"result.size === 0\">\n <mat-card class=\"card\">\n <mat-card-title class=\"title\">\n No Results Found for {{keyword}}\n <hr>\n </mat-card-title>\n <mat-card-content class=\"body\" ngPreserveWhitespaces>\n <app-datatable [iCanRead]=\"true\" [iCanWrite]=\"true\" [iShowActions]=\"false\" [iShowHeader]=\"false\" [iShowSelect]=\"false\"></app-datatable>\n </mat-card-content>\n </mat-card>\n</ng-container>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\nimport { GlobalSearchComponent } from './global-search.component';\nimport { GlobalSearchApiService } from './global-search.apiservice';\nimport {MatCardModule} from '@angular/material/card';\nimport { DatatableModule } from '../../shared/components/datatable/datatable.module';\nimport { SpecialDatatableModule } from '../../shared/components/special-datatable/special-datatable.module';\n\n@NgModule({\n declarations: [\n GlobalSearchComponent,\n ],\n imports: [\n CommonModule,\n RouterModule,\n MatCardModule,\n DatatableModule,\n SpecialDatatableModule\n ],\n providers: [GlobalSearchApiService]\n})\nexport class GlobalSearchModule { }\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { ReplaySubject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { PAGE_NAMES, ROLES, ROLES_TYPE } from '../../../core/helpers/constants';\nimport { getRolesForPage } from '../../../core/helpers/utility';\nimport { UtilityService } from '../../../core/helpers/utility.service';\nimport { IPermission } from '../../../core/models/auth.models';\nimport { ILead } from '../../../core/models/lead.models';\nimport { P_AppDateFormat } from '../../../shared/shared.pipe';\nimport { AppService } from '../../../store/app.service';\nimport { LeadsApiService } from '../leads.apiservice';\n@Component({\n selector: 'app-leads-details',\n templateUrl: './leads-details.component.html',\n styleUrls: ['./leads-details.component.scss']\n})\nexport class LeadsDetailsComponent implements OnInit, OnDestroy {\n\n public ROLES = ROLES;\n doWhat: IPermission = {} as IPermission;\n\n leadData: ILead\n active = 1;\n roleOptions: any = {};\n isExternal: boolean = false;\n public userRoles: Array<number> = [];\n\n private destroyed$: ReplaySubject<boolean> = new ReplaySubject(1);\n constructor(\n private uService: UtilityService,\n private route: ActivatedRoute,\n private appService: AppService,\n private leadsApiService: LeadsApiService,\n private datePipe: P_AppDateFormat) {\n this.leadData = {} as ILead;\n this.userRoles = [...this.uService.getUserRoles()];\n }\n\n ngOnInit(): void {\n this.appService.setPageTitle$('Leads');\n this.doWhat = this.appService.getUserRolesForPage(PAGE_NAMES.Leads);\n this.route.params.subscribe(params => {\n const id = params.id;\n if (id) {\n this.leadsApiService.getLead(id)\n .pipe(takeUntil(this.destroyed$))\n .subscribe((response: any) => {\n this.leadData = response.lead;\n });\n }\n });\n this.appService.getActiveUser$()\n .pipe(takeUntil(this.destroyed$))\n .subscribe(u => {\n this.isExternal = u.type == ROLES_TYPE.External\n });\n }\n\n ngOnDestroy(): void {\n this.destroyed$.next(true);\n this.destroyed$.complete();\n }\n\n formatDate(date: Date) {\n return this.datePipe.transform(date, 'MM/DD/YYYY HH:mm');\n }\n}\n","<div class=\"row\">\n <div class=\"col-md-12\">\n <div class=\"card-body\">\n <div class=\"details_top\">\n <div class=\"row row-gap-4 d-flex align-items-stretch\">\n <div class=\"col-12 col-xl-6\">\n <div class=\"card details-card\">\n <h5 class=\"card-title\">Lead Info:</h5>\n <div class=\"card-body\">\n <p><strong>Name:</strong> {{leadData?.firstName}} {{leadData?.lastName}}</p>\n <p><strong>Email:</strong> {{leadData?.email}}</p>\n <p><strong>Phone:</strong> {{leadData?.phone}}</p>\n <p><strong>Received At:</strong> {{ formatDate(leadData.createdAt) }}</p>\n <p><strong>Referral Source:</strong> {{leadData?.referralSource}}</p>\n <p><strong>Referral ID:</strong> {{leadData?.referralId}}</p>\n\n <p *ngIf=\"leadData.isMember\"><strong>Converted to a Member? </strong> <span *ngIf=\"leadData.isMember\">Yes</span>\n <span *ngIf=\"!leadData.isMember\">No</span></p>\n <p *ngIf=\"leadData.isMember\"><strong>Member Since:</strong> {{leadData.memberSince | P_AppDateFormat}}</p>\n </div>\n </div>\n </div>\n\n <div class=\"col-12 col-xl-6\">\n <div class=\"card details-card\">\n <h5 class=\"card-title\">Campaign Info:</h5>\n <div class=\"card-body\">\n <p><strong>Campaign:</strong> \n <a style=\"color: blue;\" [routerLink]=\"['/pages/campaign-details', leadData?.campaignId]\" class=\"\"\n title=\"View Campaign\">\n {{leadData?.campaignName}}\n </a>\n </p>\n <p *ngIf=\"leadData?.crmName\"><strong>CRM:</strong> {{ leadData?.crmName }}</p>\n <p *ngIf=\"leadData?.crmId\"><strong>CRM ID:</strong> {{ leadData?.crmId }}</p>\n <p *ngIf=\"leadData?.pageTitle\"><strong>Landing Page Title:</strong> {{leadData?.pageTitle}}</p>\n <p *ngIf=\"leadData?.pageUrl\"><strong>Landing Page URL:</strong> {{leadData?.pageUrl}}</p>\n </div>\n </div>\n </div>\n\n </div>\n </div>\n </div>\n <div class=\"dv-custom-navs\">\n <ul ngbNav #nav=\"ngbNav\" [activeId]=\"1\" class=\"nav-tabs\">\n <li [ngbNavItem]=\"1\" style=\"clip-path: polygon(0 0, 80% 0, 100% 100%, 0% 100%) !important;\">\n <a ngbNavLink>\n <i-feather name=\"paperclip\"></i-feather><label>NOTES</label>\n </a>\n <ng-template ngbNavContent>\n <app-notes [iCanDelete]=\"doWhat.isAdmin || (doWhat.roleOptions && doWhat.roleOptions.notes.canDelete)\" [iCanWrite]=\"doWhat.isAdmin || (!isExternal) || doWhat.isAdmin || (doWhat.roleOptions && doWhat.roleOptions.notes.canWrite)\" [iParentId]=\"leadData.id\" [iType]=\"3\"></app-notes>\n </ng-template>\n </li>\n </ul>\n <div [ngbNavOutlet]=\"nav\"></div>\n </div>\n </div>\n</div>","import { Component, OnInit } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { ReplaySubject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { ILead } from '../../../core/models/lead.models';\r\nimport { AppService } from '../../../store/app.service';\r\nimport { LeadsApiService } from '../leads.apiservice';\r\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { AddLeadModal } from '../../../shared/modals/add-lead/add-lead.component';\r\nimport { IPermission } from '../../../core/models/auth.models';\r\nimport { PAGE_NAMES } from '../../../core/helpers/constants';\r\nimport { LoadDataFromServer } from '../../../shared/components/datatable/datatable.model';\r\nimport { NgxSpinnerService } from 'ngx-spinner';\r\n\r\n@Component({\r\n selector: 'app-leads',\r\n templateUrl: './leads-main.component.html',\r\n styleUrls: ['./leads-main.component.scss']\r\n})\r\nexport class LeadsMainComponent implements OnInit {\r\n doWhat: IPermission = {} as IPermission;\r\n columns = [\r\n { title: 'Received At', field: 'createdAt', sortable: true, searchable: true, pipe: 'P_AppDateFormat', pipeArgs: ['MM/DD/YYYY HH:mm', true] },\r\n { title: 'First Name', field: 'firstName', sortable: true, searchable: true },\r\n { title: 'Last Name', field: 'lastName', sortable: true, searchable: true },\r\n { title: 'Email', field: 'email', sortable: true, searchable: true },\r\n { title: 'Phone', field: 'phone', sortable: true, searchable: true },\r\n { title: 'Campaign', field: 'campaignName', sortable: true, searchable: true },\r\n { title: 'Referal Source', field: 'referralSource', sortable: true, searchable: true },\r\n ]\r\n leadsData: Array<ILead>;\r\n leadsTotalCount: number = 0;\r\n savedSearchId!: string;\r\n private destroyed$: ReplaySubject<boolean> = new ReplaySubject(1);\r\n private loadEvent!: LoadDataFromServer;\r\n constructor(\r\n private router: Router,\r\n private modalService: NgbModal,\r\n private route: ActivatedRoute,\r\n private appService: AppService,\r\n private leadsApi: LeadsApiService,\r\n private spinner: NgxSpinnerService) {\r\n this.leadsData = new Array<ILead>();\r\n }\r\n\r\n ngOnInit(): void {\r\n this.appService.setPageTitle$('Leads');\r\n this.doWhat = this.appService.getUserRolesForPage(PAGE_NAMES.Leads);\r\n this.appService.getAllLeads$()\r\n .pipe(takeUntil(this.destroyed$))\r\n .subscribe((response: any) => {\r\n if (response.leads) {\r\n this.leadsData = [...response.leads];\r\n this.leadsTotalCount = response.totalCount;\r\n }\r\n });\r\n this.savedSearchId = this.route.snapshot.queryParams['savedsearchid'];\r\n }\r\n\r\n onDelete(event: any) {\r\n this.leadsApi.deleteLead(event)\r\n .pipe(takeUntil(this.destroyed$))\r\n .subscribe(() => {\r\n this.appService.fetchAllLeads({\r\n SavedSearchId: this.savedSearchId,\r\n ...this.loadEvent\r\n });\r\n })\r\n }\r\n\r\n onEdit(event: any) {\r\n const selectedLead: ILead = event;\r\n const dialogRef = this.modalService.open(AddLeadModal, { size: 'lg' });\r\n dialogRef.componentInstance.iId = selectedLead.id;\r\n }\r\n\r\n getRowLink(row: any) {\r\n return `/pages/lead-details/${row.id}`;\r\n }\r\n\r\n\r\n onLoadingData(event: LoadDataFromServer) {\r\n this.loadEvent = event;\r\n this.appService.fetchAllLeads({\r\n SavedSearchId: this.savedSearchId,\r\n ...this.loadEvent\r\n });\r\n }\r\n\r\n onAddNew() {\r\n const dialogRef = this.modalService.open(AddLeadModal, { size: 'lg', backdrop: 'static' });\r\n dialogRef.componentInstance.oSaveClicked.subscribe(() => {\r\n this.appService.fetchAllLeads({\r\n SavedSearchId: this.savedSearchId,\r\n ...this.loadEvent\r\n });\r\n })\r\n }\r\n\r\n exportLeads() {\r\n this.spinner.show();\r\n this.leadsApi.exportLeads({\r\n SavedSearchId: this.savedSearchId,\r\n ...this.loadEvent\r\n }).then((x: any) => {\r\n var newBlob = new Blob([x], { type: \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\" });\r\n const data = window.URL.createObjectURL(newBlob);\r\n var link = document.createElement('a');\r\n link.href = data;\r\n link.download = \"leads.xlsx\";\r\n link.dispatchEvent(new MouseEvent('click', { bubbles: true, cancelable: true, view: window }));\r\n this.spinner.hide();\r\n setTimeout(function () {\r\n // For Firefox it is necessary to delay revoking the ObjectURL\r\n window.URL.revokeObjectURL(data);\r\n link.remove();\r\n }, 100);\r\n });\r\n }\r\n}\r\n","<app-campaign-datatable [iCanRead]=\"doWhat.canRead\" [iCanWrite]=\"doWhat.canWrite\" [iCanDelete]=\"doWhat.canDelete\"\r\n [iColumns]=\"columns\" (oDeleteRows)=\"onDelete($event)\" [iRowLinkHandler]=\"getRowLink\" [iIsServerLoading]=\"true\"\r\n [iTotalCount]=\"leadsTotalCount\" (oCustomDataExport)=\"exportLeads()\" [iIsCustomDataExport]=\"true\"\r\n [iData$]=\"leadsData\" (oEditRow)=\"onEdit($event)\" (oLoadDataFromServer)=\"onLoadingData($event)\" [iShowSelect]=\"false\"\r\n iSortColumn=\"createdat\" iSortDirection=\"desc\" (oAddNew)=\"onAddNew()\" [iShowSelect]=\"true\">\r\n</app-campaign-datatable>\r\n<ngx-spinner bdColor=\"rgba(0, 0, 0, 0.8)\" size=\"medium\" color=\"#000\" type=\"ball-spin-clockwise\" [fullScreen]=\"true\">\r\n <p style=\"color: white\">Data export in progress this may take several minutes.</p>\r\n</ngx-spinner>","import { Injectable } from '@angular/core';\nimport { ILead } from '../../core/models/lead.models';\nimport { HttpService } from '../../shared/http/base.http';\n\n@Injectable()\nexport class LeadsApiService extends HttpService {\n\n getAllLeads(request: any) {\n return this.post<Array<ILead>>('/leads/all', request);\n }\n\n getLead(leadId: string) {\n return this.get('/leads?leadId=' + leadId);\n }\n\n addEdit(data: ILead) {\n return this.post('/leads', data);\n }\n\n deleteLead(leadIds: Array<string>) {\n return this.post('/leads/delete', leadIds);\n }\n\n exportLeads(request: any) {\n return this.postDownload('/leads/export', request);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { MatCardModule } from '@angular/material/card';\nimport { SortablejsModule } from 'ngx-sortablejs'\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { NgSelectModule } from '@ng-select/ng-select';\nimport { LeadsMainComponent } from './leads-main/leads-main.component';\nimport { LeadsApiService } from './leads.apiservice';\nimport { DatatableModule } from '../../shared/components/datatable/datatable.module';\nimport { P_AppDateFormat } from '../../shared/shared.pipe';\nimport { NotesModule } from '../../shared/components/notes/notes.module';\nimport { LeadsDetailsComponent } from './leads-details/leads-details.component';\nimport { SharedModule } from '../../shared/shared.module';\nimport { NgxSpinnerModule } from 'ngx-spinner';\nimport { CampaignDatatableModule } from \"../../shared/components/campaign-datatable/campaign-datatable.module\";\n\n@NgModule({\n declarations: [\n LeadsMainComponent,\n LeadsDetailsComponent\n ],\n providers: [LeadsApiService, P_AppDateFormat],\n imports: [\n FormsModule,\n ReactiveFormsModule,\n CommonModule,\n RouterModule,\n DragDropModule,\n MatCardModule,\n SortablejsModule,\n MatCheckboxModule,\n NgSelectModule,\n DatatableModule,\n NotesModule,\n SharedModule,\n NgxSpinnerModule,\n CampaignDatatableModule\n ]\n})\nexport class LeadsModule { }\n","import { Injectable } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport Swal from 'sweetalert2';\r\nimport { AppService } from '../../store/app.service';\r\nimport { LeadsApiService } from './leads.apiservice';\r\n\r\n@Injectable()\r\nexport class LeadsService {\r\n\r\n\r\n constructor(\r\n private appService: AppService,\r\n private leadService: LeadsApiService,\r\n private router: Router\r\n ) {\r\n\r\n }\r\n\r\n\r\n deleteLeads() {\r\n var d = this.appService.getActiveRoute$().value.url.split('/');\r\n var cId = d[d.length - 1];\r\n Swal.fire({\r\n title: 'Are you sure?',\r\n text: \"You won't be able to revert this!\",\r\n icon: 'warning',\r\n showCancelButton: true,\r\n confirmButtonColor: '#3085d6',\r\n cancelButtonColor: '#d33',\r\n confirmButtonText: 'Yes, delete it!'\r\n }).then((result) => {\r\n if (result.isConfirmed) {\r\n this.leadService.deleteLead([cId])\r\n .subscribe((r: any) => {\r\n if (r.good) {\r\n this.router.navigate(['/pages/leads']);\r\n }\r\n })\r\n }\r\n })\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\nimport { HttpService } from '../../../shared/http/base.http';\n\n\n@Injectable()\nexport class PaymentMethodApiService extends HttpService {\n\n getAllPaymentMethods() {\n return this.get<Array<any>>('/PaymentMethod/all?');\n }\n\n getPaymentMethodsByClient(clientId: any) {\n return this.get<Array<any>>('/PaymentMethod/Client?clientId=' + clientId);\n }\n\n getPaymentMethod(id: string) {\n return this.get('/PaymentMethod?id=' + id);\n }\n\n addEdit(data: any) {\n return this.post('/PaymentMethod', data);\n }\n\n deletePaymentMethod(ids: any) {\n return this.post('/PaymentMethod/Delete', ids);\n }\n\n getSubscriptionsByClient(clientId: string) {\n return this.get<any>(`/Subscriptions/all?clientId=${clientId}`);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpService } from '../../shared/http/base.http';\nimport { LoadDataFromServer } from '../../shared/components/datatable/datatable.model';\n\n@Injectable()\nexport class OrdersApiService extends HttpService {\n\n async exportOrderData(request: any) {\n //return await this.postDownloadWithSearch('/order/exportOrder?ordersearch=${orders}' );\n return await this.postDownload ('/order/exportOrder',request);\n }\n getAllOrders() {\n return this.get<Array<any>>('/order/');\n }\n\n payOrder(orderId: string) {\n return this.get(`/order/pay?orderId=${orderId}`);\n }\n\n cancelOrder(orderStatus: any){\n return this.post('/order/updateorderstatus', orderStatus);\n }\n\n addOrder(data: any) {\n return this.post('/order', data);\n }\n\n addOrderToSubscription(data: any) {\n return this.post('/order/addorder', data);\n }\n\n processOrderPayment(data: any) {\n return this.post('/order/processOrderPayment', data, { 'Content-Type': 'application/json; charset=utf-8' });\n }\n\n processOrderRefund(data: any) {\n return this.post('/order/processOrderRefund', data, { 'Content-Type': 'application/json; charset=utf-8' });\n }\n\n // SHOP //\n getAllShopOrders() {\n return this.get<Array<any>>('/order/getAllShopOrders');\n }\n\n getAllShopOrdersByFilter(request: any) {\n return this.post<Array<any>>('/order/GetAllShopOrdersByFilter', request);\n }\n\n getShopOrderDetails(id: string) {\n return this.get(`/order/getShopOrderDetails?id=${id}`);\n }\n async getOrderInvoice(id: string) {\n return await this.getDownload(`/order/orderInvoice?id=${id}`);\n }\n\n // SHOP //\n}\n","import { NgModule } from '@angular/core';\nimport { ROLES } from '../core/helpers/constants';\nimport { RouterModule, Routes } from '@angular/router';\nimport { PageNotFoundComponent } from '../shared/components/404/404.component';\nimport { CampaignDetailsComponent } from './campaigns/campaign-details/campaign-details.component';\nimport { CampaignsMainComponent } from './campaigns/campaigns-main/campaigns-main.component';\nimport { EditCampaignComponent } from './campaigns/edit-campaign/edit-campaign.component';\nimport { ClientDetailsComponent } from './clients/client-details/client-details.component';\nimport { ClientsMainComponent } from './clients/clients-main/clients-main.component';\nimport { ProspectDetailsComponent } from './clients/prospect-details/prospect-details.component';\nimport { ProspectsMainComponent } from './clients/prospects-main/prospects-main.component';\nimport { CompanyMainComponent } from './companies/company-main/company-main.component';\nimport { CouponsMainComponent } from './coupons/coupons-main/coupons-main.component';\nimport { EditCouponComponent } from './coupons/edit-coupon/edit-coupon.component';\nimport { DashboardComponent } from './dashboard/dashboard.component';\nimport { GlobalSearchComponent } from './global-search/global-search.component';\nimport { LeadsDetailsComponent } from './leads/leads-details/leads-details.component';\nimport { LeadsMainComponent } from './leads/leads-main/leads-main.component';\nimport { SearchesMainComponent } from './searches/searches-main/searches-main.component';\nimport { EditTagComponent } from './tags/edit-tag/edit-tag.component';\nimport { TagsMainComponent } from './tags/tags-main/tags-main.component';\nimport { TasksListComponent } from './tasks/tasks-list/tasks-list.component';\nimport { UsersMainComponent } from './users/users-main/users-main.component';\n\nconst routes: Routes = [\n {\n path: '',\n component: DashboardComponent,\n },\n {\n path: 'dashboard',\n component: DashboardComponent\n },\n {\n path: 'clients',\n component: ClientsMainComponent\n },\n {\n path: 'prospects',\n component: ProspectsMainComponent,\n data: { roles: [ROLES.Admin.Code, ROLES.TechServices.Code, ROLES.DMS.Code, ROLES.ShopManager.Code, ROLES.SalesRep.Code, ROLES.Staff.Code] }\n },\n {\n path: 'prospect-details/:id',\n component: ProspectDetailsComponent,\n data: { roles: [ROLES.Admin.Code, ROLES.TechServices.Code, ROLES.DMS.Code, ROLES.ShopManager.Code, ROLES.SalesRep.Code, ROLES.Staff.Code] }\n },\n {\n path: 'client-details/:id',\n component: ClientDetailsComponent\n },\n {\n path: 'campaigns',\n component: CampaignsMainComponent\n },\n {\n path: 'edit-campaign',\n component: EditCampaignComponent,\n data: { roles: [ROLES.Admin.Code, ROLES.TechServices.Code, ROLES.DMS.Code, ROLES.ShopManager.Code, ROLES.SalesRep.Code] }\n },\n {\n path: 'edit-campaign/:id',\n component: EditCampaignComponent,\n data: { roles: [ROLES.Admin.Code, ROLES.TechServices.Code, ROLES.DMS.Code, ROLES.ShopManager.Code, ROLES.SalesRep.Code] }\n },\n {\n path: 'campaign-details/:id',\n component: CampaignDetailsComponent\n },\n {\n path: 'global-search/:keyword',\n component: GlobalSearchComponent,\n },\n {\n path: 'tags',\n component: TagsMainComponent,\n data: { roles: [ROLES.Admin.Code, ROLES.TechServices.Code, ROLES.DMS.Code, ROLES.ShopManager.Code, ROLES.SalesRep.Code, ROLES.Staff.Code] }\n },\n {\n path: 'edit-tag',\n component: EditTagComponent,\n data: { roles: [ROLES.Admin.Code, ROLES.TechServices.Code, ROLES.DMS.Code, ROLES.ShopManager.Code, ROLES.SalesRep.Code] }\n },\n {\n path: 'edit-tag/:id',\n component: EditTagComponent,\n data: { roles: [ROLES.Admin.Code, ROLES.TechServices.Code, ROLES.DMS.Code, ROLES.ShopManager.Code, ROLES.SalesRep.Code] }\n },\n {\n path: 'companies',\n component: CompanyMainComponent,\n data: { roles: [ROLES.Admin.Code, ROLES.TechServices.Code, ROLES.DMS.Code, ROLES.ShopManager.Code, ROLES.SalesRep.Code, ROLES.Staff.Code] }\n },\n {\n path: 'users',\n component: UsersMainComponent\n },\n {\n path: 'searches',\n component: SearchesMainComponent\n },\n {\n path: 'searches/:id',\n component: SearchesMainComponent\n },\n {\n path: 'tasks',\n component: TasksListComponent,\n data: { roles: [ROLES.Admin.Code, ROLES.TechServices.Code, ROLES.DMS.Code, ROLES.SalesRep.Code, ROLES.ShopManager.Code, ROLES.Staff.Code] }\n },\n {\n path: 'reports',\n loadChildren: () => import('./reports/reports.module').then(mod => mod.ReportsModule)\n },\n {\n path: 'leads',\n component: LeadsMainComponent\n },\n {\n path: 'leads/:id',\n component: LeadsMainComponent\n },\n {\n path: 'lead-details/:id',\n component: LeadsDetailsComponent\n },\n {\n path: 'products',\n loadChildren: () => import('./products/products.module').then(mod => mod.ProductsModule),\n data: { roles: [ROLES.Admin.Code, ROLES.TechServices.Code, ROLES.DMS.Code, ROLES.ShopManager.Code, ROLES.SalesRep.Code] }\n },\n {\n path: 'coupons',\n component: CouponsMainComponent,\n data: { roles: [ROLES.Admin.Code, ROLES.TechServices.Code, ROLES.DMS.Code, ROLES.ShopManager.Code, ROLES.SalesRep.Code] }\n },\n {\n path: 'edit-coupon',\n component: EditCouponComponent,\n data: { roles: [ROLES.Admin.Code, ROLES.TechServices.Code, ROLES.DMS.Code, ROLES.ShopManager.Code, ROLES.SalesRep.Code] }\n },\n {\n path: 'edit-coupon/:id',\n component: EditCouponComponent,\n data: { roles: [ROLES.Admin.Code, ROLES.TechServices.Code, ROLES.DMS.Code, ROLES.ShopManager.Code, ROLES.SalesRep.Code] }\n },\n {\n path: 'subscriptions',\n loadChildren: () => import('./subscriptions/subscription.module').then(mod => mod.SubscriptionModule)\n },\n {\n path: 'shop',\n loadChildren: () => import('./shop/shop.module').then(mod => mod.ShopModule)\n },\n {\n path: 'myaccount',\n loadChildren: () => import('./my-account/my-account.module').then(mod => mod.MyAccountModule)\n },\n {\n path: 'orders',\n loadChildren: () => import('./orders/orders.module').then(mod => mod.OrdersModule)\n },\n {\n path: 'emails',\n loadChildren: () => import('./emails/emails.module').then(m => m.EmailModule),\n data: { roles: [ROLES.Admin.Code, ROLES.TechServices.Code, ROLES.DMS.Code, ROLES.ShopManager.Code, ROLES.SalesRep.Code] }\n },\n {\n\n path: '**',\n pathMatch: 'full',\n component: PageNotFoundComponent,\n data: { roles: [ROLES.Admin.Code, ROLES.TechServices.Code, ROLES.DMS.Code, ROLES.ShopManager.Code, ROLES.SalesRep.Code] }\n },\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule]\n})\n\nexport class PagesRoutingModule { }\n","import { NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';\nimport { CommonModule } from '@angular/common'; \nimport { CountToModule } from 'angular-count-to';\nimport { NgbNavModule } from '@ng-bootstrap/ng-bootstrap';\nimport { SimplebarAngularModule } from 'simplebar-angular';\nimport { LightboxModule } from 'ngx-lightbox';\nimport { SharedModule } from '../shared/shared.module';\nimport { WidgetModule } from '../shared/widget/widget.module';\nimport { PagesRoutingModule } from './pages-routing.module';\nimport { ClientsApiService } from './clients/clients.apiservice';\nimport { ClientsMainComponent } from './clients/clients-main/clients-main.component';\nimport { ClientDetailsComponent } from './clients/client-details/client-details.component';\nimport { DashboardModule } from './dashboard/dashboard.module';\nimport { CampaignsApiService } from './campaigns/campaigns.apiservice';\nimport { CampaignsMainComponent } from './campaigns/campaigns-main/campaigns-main.component';\nimport { EditCampaignComponent } from './campaigns/edit-campaign/edit-campaign.component';\nimport { CampaignDetailsComponent } from './campaigns/campaign-details/campaign-details.component';\nimport { CampaignAuditComponent } from './campaigns/campaign-audit/campaign-audit.component';\nimport { CampaignBudgetAuditComponent } from './campaigns/campaign-budget-audit/campaign-budget-audit.component';\nimport { GlobalSearchModule } from './global-search/global-search.module';\nimport { ClientReportingUpdateModalComponent } from './clients/client-reporting-update/client-reporting-update.component';\nimport { ClientsService } from './clients/clients.service';\nimport { LeadsService } from './leads/leads.service';\nimport { TagsMainComponent } from './tags/tags-main/tags-main.component';\nimport { EditTagComponent } from './tags/edit-tag/edit-tag.component';\nimport { TagsApiService } from './tags/tags.apiservice';\nimport { DatatableModule } from '../shared/components/datatable/datatable.module';\nimport { SearchesModule } from './searches/searches.module';\nimport { TasksListComponent } from './tasks/tasks-list/tasks-list.component';\nimport { TasksApiService } from './tasks/tasks.apiservice';\nimport { TasksService } from './tasks/tasks.service';\nimport { UsersApiService } from './users/users.apiservice';\nimport { UsersService } from './users/users.service';\nimport { UsersMainComponent } from './users/users-main/users-main.component';\nimport { CompanyMainComponent } from './companies/company-main/company-main.component';\nimport { CompanyApiService } from './companies/company.apiservice';\nimport { CompanyService } from './companies/company.service';\nimport { MergeClientsModal } from '../shared/modals/merge-clients/merge-clients.component';\nimport { MergeCampaignsModal } from '../shared/modals/merge-campaign/merge-campaign.component';\nimport { ClientReportingUpdateSelectCampaignsModalComponent } from './clients/client-reporting-update-select-campaigns-modal/client-reporting-update-select-campaigns-modal.component';\nimport { LeadsModule } from './leads/leads.module';\nimport { NotesModule } from '../shared/components/notes/notes.module';\nimport { CampaignsService } from './campaigns/campaigns.service';\nimport { CouponsMainComponent } from './coupons/coupons-main/coupons-main.component';\nimport { EditCouponComponent } from './coupons/edit-coupon/edit-coupon.component';\nimport { CouponsApiService } from './coupons/coupon.apiservice';\nimport { CouponsService } from './coupons/coupon.service';\nimport { SubscriptionSharedComponent } from '../shared/components/subscriptions/subscription.component';\nimport { NgxUiLoaderModule } from 'ngx-ui-loader';\nimport { ShopModule } from './shop/shop.module';\nimport { AccountService } from '../account/account.service';\nimport { ProductsApiService } from './products/products-api.service'; \nimport { ProspectsMainComponent } from './clients/prospects-main/prospects-main.component';\nimport { ProspectDetailsComponent } from './clients/prospect-details/prospect-details.component'; \nimport { ReportsApiService } from './reports/reports.apiservice';\nimport { PageNotFoundComponent } from '../shared/components/404/404.component';\nimport { SubscriptionApiService } from './subscriptions/subscription.apiservice';\nimport { OrdersApiService } from './orders/orders.apiservice';\nimport { PaymentMethodApiService } from './my-account/payment-method/payment-method.apiservice';\nimport { SpecialDatatableModule } from \"../shared/components/special-datatable/special-datatable.module\";\nimport { CampaignDatatableModule } from \"../shared/components/campaign-datatable/campaign-datatable.module\";\nimport { ReportDatatableModule } from \"../shared/components/report-datatable/report-datatable.module\";\nimport { TasksDatatableModule } from \"../shared/components/tasks-datatable/tasks-datatable.module\";\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { ReportsModule } from './reports/reports.module';\n\n@NgModule({\n declarations: [\n ClientsMainComponent,\n ProspectsMainComponent,\n ProspectDetailsComponent,\n CampaignsMainComponent,\n CompanyMainComponent,\n CampaignDetailsComponent,\n TasksListComponent,\n CampaignAuditComponent,\n CampaignBudgetAuditComponent,\n EditCampaignComponent,\n ClientDetailsComponent,\n ClientReportingUpdateModalComponent,\n TagsMainComponent,\n EditTagComponent,\n UsersMainComponent,\n MergeClientsModal,\n MergeCampaignsModal,\n ClientReportingUpdateSelectCampaignsModalComponent,\n CouponsMainComponent,\n EditCouponComponent,\n SubscriptionSharedComponent,\n PageNotFoundComponent\n ],\n providers: [\n ClientsService,\n LeadsService,\n CampaignsService,\n UsersService,\n TasksService,\n CompanyService,\n ClientsApiService,\n CampaignsApiService,\n TagsApiService,\n TasksApiService,\n UsersApiService,\n ProductsApiService,\n SubscriptionApiService,\n OrdersApiService,\n PaymentMethodApiService,\n CompanyApiService,\n CouponsApiService,\n CouponsService,\n AccountService,\n ReportsApiService\n ],\n imports: [\n NgxUiLoaderModule,\n CommonModule,\n WidgetModule,\n CountToModule,\n SharedModule,\n PagesRoutingModule,\n SimplebarAngularModule,\n NgbNavModule,\n LightboxModule,\n DashboardModule,\n GlobalSearchModule,\n DatatableModule,\n SearchesModule,\n LeadsModule,\n NotesModule,\n ShopModule,\n SpecialDatatableModule,\n CampaignDatatableModule,\n ReportDatatableModule,\n TasksDatatableModule,\n DragDropModule,\n ReportsModule\n ],\n schemas: [CUSTOM_ELEMENTS_SCHEMA]\n})\nexport class PagesModule { }\n","import { Injectable } from '@angular/core';\nimport { HttpService } from '../../shared/http/base.http';\n\n@Injectable()\nexport class ProductsApiService extends HttpService {\n\n getAllProducts(savedSearch: string = '') {\n return this.get<any>(`/products/getAllProducts`);\n }\n\n getProductDetails(id: string) {\n return this.get<any>(`/products/getProductDetails?id=${id}`);\n }\n\n getProductMedia(id: string) {\n return this.get<any>(`/products/getProductMedia?id=${id}`, { 'responseType': 'blob' as 'json' });\n }\n\n saveProduct(data: any) {\n return this.post('/products/saveProduct', data, { 'Content-Type': 'application/json; charset=utf-8' });\n }\n makeProductCopy(id: string) {\n return this.get('/products/makeProductCopy?id=' + id);\n }\n saveProductMedia(data: any) {\n return this.post('/products/saveProductMedia', data);\n }\n deleteProducts(data: Array<string>) {\n return this.post('/products/deleteProducts', data, { 'Content-Type': 'application/json; charset=utf-8' });\n }\n\n\n // create(data: IProduct) {\n // // console.log('creating: ', data)\n // return this.post<{ good: boolean, data: IProduct }>(`${this.productsApiBase}`, data, { 'Content-Type': 'application/json; charset=utf-8' });\n // }\n\n // update(id: string, data: IProduct): Observable<any> { // : Observable<{ good: boolean, data: IProduct }> {\n // return this.put(`${this.productsApiBase}/${id}`, data, { 'Content-Type': 'application/json; charset=utf-8' });\n // }\n\n // deleteOne(id: string): Observable<any> { // <{ good: boolean, data: number }>\n // return this.delete(`${this.productsApiBase}/${id}`, { 'Content-Type': 'application/json; charset=utf-8' });\n // }\n\n // deleteMany(ids: Array<string>) {\n // return this.post<{ good: boolean, data: number }>(`${this.productsApiBase}/DeleteMany`, ids, { 'Content-Type': 'application/json; charset=utf-8' });\n // }\n\n // uploadProductMedia(productId: string, file: File) {\n // const formData = new FormData();\n // formData.append(\"Files\", file);\n // return this.post<{ good: boolean, data: IProductsMedium }>(`${this.productsApiBase}/ProductsMedia/${productId}`, formData);\n // }\n\n // saveAssociatedTags(productId: string, tagAss: any[]) {\n // return this.post<{ good: boolean, data: { productId: string, tagId: string } }>(`${this.productsApiBase}/ProductsTags/${productId}`, tagAss, { 'Content-Type': 'application/json; charset=utf-8' });\n // }\n\n // saveProductDependencies(productId: any, productDependencies: any[]) {\n // return this.post<{ good: boolean, data: any }>(`${this.productsApiBase}/ProductsDependencies/${productId}`, productDependencies, { 'Content-Type': 'application/json; charset=utf-8' });\n // }\n // updateProductRequiredDependencies(productId: string, requiredDependencies: string): Observable<any> {\n // let payload = { requiredDependencies: requiredDependencies };\n // return this.post<{ good: boolean, data: any }>(`${this.productsApiBase}/ProductsDependencies/Required/${productId}/${requiredDependencies}`, { 'Content-Type': 'application/json; charset=utf-8' });\n // }\n\n // deleteManyDependencies(productId: string, productDependentsIds: Array<string>): Observable<any> {\n // return this.post(`${this.productsApiBase}/ProductsDependencies/Delete/${productId}`, productDependentsIds, { 'Content-Type': 'application/json; charset=utf-8' });\n // }\n}\n","import { Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\nimport Swal from 'sweetalert2';\nimport { IProductMain } from '../../core/models/products.models';\nimport { AppService } from '../../store/app.service';\nimport { ProductsApiService } from './products-api.service';\nimport { ProductsModalComponent } from '../../shared/modals/products-modal/products-modal.component';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ProductsService {\n constructor(\n private productApiService: ProductsApiService,\n private modalService: NgbModal,\n private _appService: AppService,\n private router: Router,\n ) { }\n\n openEditModal(evt: any) {\n\n const dialogRef = this.modalService.open(ProductsModalComponent, { size: 'lg' });\n if (evt.id === -1) {\n var d = this._appService.getActiveRoute$().value.url.split('/');\n evt.id = d[d.length - 1]\n }\n\n dialogRef.componentInstance.iId = evt.id;\n const dialogSubmitSubscription = dialogRef.componentInstance.oSaveClicked.subscribe((r: IProductMain) => {\n\n this.productApiService.saveProduct(r)\n .subscribe((response: any) => {\n if (response.good) {\n dialogRef.dismiss();\n this._appService.fetchAllProductsMain(null);\n }\n })\n dialogSubmitSubscription.unsubscribe();\n })\n\n }\n\n deleteProductForm() {\n var d = this._appService.getActiveRoute$().value.url.split('/');\n let id = d[d.length - 1]\n Swal.fire({\n title: 'Are you sure?',\n text: \"You won't be able to revert this!\",\n icon: 'warning',\n showCancelButton: true,\n confirmButtonColor: '#3085d6',\n cancelButtonColor: '#d33',\n confirmButtonText: 'Yes, delete it!'\n }).then((result) => {\n if (result.isConfirmed) {\n this.productApiService.deleteProducts([id])\n .subscribe((r: any) => {\n if (r.good) {\n this.router.navigate(['/pages/products']);\n }\n })\n }\n });\n }\n}\n","import { Component, OnDestroy, OnInit, OnChanges, SimpleChanges, Input } from '@angular/core';\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\nimport { ActivatedRoute } from '@angular/router';\nimport { pipe, ReplaySubject } from 'rxjs';\nimport { AppService } from '../../../store/app.service';\nimport { ReportsApiService } from '../reports.apiservice';\nimport { CampaignsApiService } from '../../campaigns/campaigns.apiservice';\nimport { environment } from '../../../../environments/environment';\nimport { FormBuilder, FormGroup, Validators, FormControl } from '@angular/forms';\nimport { IReportingPeriod } from '../../../core/models/reporting.models';\nimport { takeUntil } from 'rxjs/operators';\nimport { get } from 'underscore';\n\n@Component({\n selector: 'app-report-view',\n templateUrl: './report-view.component.html',\n styleUrls: ['./report-view.component.scss']\n})\nexport class ReportViewComponent implements OnInit, OnDestroy, OnChanges {\n @Input() Iid: string | null = null;\n private destroyed$: ReplaySubject<boolean> = new ReplaySubject(1);\n\n reportMetrics: any = {};\n dailyLeads: { Date: string; Conversions: number }[] = [];\n platform: string = '';\n campaignName: string = '';\n reportForm: FormGroup;\n reportPeriods: Array<IReportingPeriod> = [];\n DateStart: string | null = null;\n DateStop: string | null = null;\n selectedPeriod: string | null = null;\n loadCompleted = false;\n validPlatform = true;\n\n defaultGoogleColumns = [\n { title: 'Cost', field: 'Cost', sortable: true, pipe: 'Currency', pipeArgs: ['USD', 'symbol', '1.2-2'] },\n { title: 'Impressions', field: 'Impressions', sortable: true, pipe: 'NumberPipe' },\n { title: 'Clicks', field: 'Clicks', sortable: true },\n { title: 'CTR', field: 'Ctr', sortable: true, pipe: 'PercentPipe' },\n { title: 'CPC', field: 'Cpc', sortable: true, pipe: 'Currency', pipeArgs: ['USD', 'symbol', '1.2-2'] },\n { title: 'Leads', field: 'Leads', sortable: true },\n { title: 'LSR', field: 'Lsr', sortable: true, pipe: 'PercentPipe' },\n { title: 'CPL', field: 'Cpl', sortable: true, pipe: 'Currency', pipeArgs: ['USD', 'symbol', '1.2-2'] },\n ];\n defaultMetaColumns = [\n { title: 'Cost', field: 'Cost', sortable: true, pipe: 'Currency', pipeArgs: ['USD', 'symbol', '1.2-2'] },\n { title: 'Impressions', field: 'Impressions', sortable: true, pipe: 'NumberPipe' },\n { title: 'CPM', field: 'Cpm', sortable: true, pipe: 'Currency', pipeArgs: ['USD', 'symbol', '1.2-2'] },\n { title: 'Clicks', field: 'Clicks', sortable: true },\n { title: 'CTR', field: 'Ctr', sortable: true, pipe: 'PercentPipe' },\n { title: 'Leads', field: 'Leads', sortable: true },\n { title: 'LSR', field: 'Lsr', sortable: true, pipe: 'PercentPipe' },\n { title: 'CPL', field: 'Cpl', sortable: true, pipe: 'Currency', pipeArgs: ['USD', 'symbol', '1.2-2'] },\n ];\n allCampaignsColumns: any[] = [];\n devicesColumns: any[] = [];\n adsColumns: any[] = [];\n googleKeywordsColumns: any[] = [];\n metaDemographicsColumns: any[] = [];\n metaAgeDemographicsColumns: any[] = [];\n metaGenderDemographicsColumns: any[] = [];\n\n constructor(\n private route: ActivatedRoute,\n private reportsApiService: ReportsApiService,\n private campaignsApiService: CampaignsApiService,\n private fb: FormBuilder,\n private appService: AppService\n ) {\n this.reportForm = this.fb.group({\n key: [null, [Validators.required]],\n startDate: [null, [Validators.required]],\n stopDate: [null, [Validators.required]],\n showLeadsByDay: [true],\n showDevices: [false],\n showKeywords: [false],\n showAds: [false],\n showCaculator: [false],\n showDemographics: [false],\n Booked: [null],\n Show: [null],\n Sold: [null]\n });\n\n this.reportForm.get('Booked')?.valueChanges.subscribe(() => this.updateReportMetrics());\n this.reportForm.get('Show')?.valueChanges.subscribe(() => this.updateReportMetrics());\n this.reportForm.get('Sold')?.valueChanges.subscribe(() => this.updateReportMetrics());\n }\n\n ngOnInit(): void {\n this.loadReport();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.Iid && !changes.Iid.isFirstChange()) {\n this.clearReportData();\n this.loadReport();\n }\n }\n\n clearReportData() {\n this.reportMetrics = {};\n this.dailyLeads = [];\n this.platform = '';\n this.campaignName = '';\n this.loadCompleted = false;\n this.validPlatform = true;\n }\n\n async loadReport() {\n if (!this.appService.getPageTitle$().getValue()) {\n this.appService.setPageTitle$('Campaign Report');\n }\n await this.getSupportedReportingPeriods();\n\n this.DateStart = this.reportPeriods.find(f => f.key == 'Past Week')?.startDate || '';\n this.DateStop = this.reportPeriods.find(f => f.key == 'Past Week')?.stopDate || '';\n this.selectedPeriod = 'Past Week';\n\n this.reportForm.patchValue({\n key: this.selectedPeriod,\n startDate: this.DateStart,\n stopDate: this.DateStop,\n });\n\n await this.getReportData();\n }\n\n getSupportedReportingPeriods(): Promise<void> {\n return new Promise((resolve, reject) => {\n this.reportsApiService.getSupportedReportingPeriods()\n .pipe(takeUntil(this.destroyed$))\n .subscribe((response: Array<IReportingPeriod>) => {\n this.reportPeriods = response;\n resolve();\n }, reject);\n });\n }\n\n async getReportData(): Promise<void> {\n let reachCampaignID = this.Iid || this.route.snapshot.paramMap.get('id');\n if (reachCampaignID) {\n await this.loadCampaignDetails(reachCampaignID);\n }\n\n if (this.platform === 'Google' || this.platform === 'Facebook') {\n let PerformanceMetrics = '7';\n\n if (reachCampaignID && this.platform && this.DateStart && this.DateStop) {\n this.reportsApiService.getRawCampaignsData(reachCampaignID, this.platform, this.DateStart, this.DateStop, PerformanceMetrics)\n .subscribe(\n (data) => {\n // console.log('Raw Campaigns Data:', data);\n if (!data.ErrorMessage && data.Platform) {\n this.reportMetrics.noData = '';\n this.reportMetrics.Platform = data.Platform.trim();\n this.reportMetrics.DateRange = data.GraphDateRange.trim();\n \n this.getOverviewMetrics(data);\n\n if (data.DaySplitsAdsPdfModels && data.DaySplitsAdsPdfModels.length > 1) {\n // Multiple Campaigns\n this.getIndividualCampaignsMetrics(data);\n }\n\n if (this.reportMetrics.Platform === 'Google') {\n this.allCampaignsColumns = [\n { title: 'Campaign', field: 'Name', sortable: true, searchable: true },\n ...this.defaultGoogleColumns\n ];\n this.devicesColumns = [\n { title: 'Device', field: 'Device', sortable: true, searchable: true },\n ...this.defaultGoogleColumns\n ];\n this.googleKeywordsColumns = [\n { title: 'Keyword', field: 'Keyword', sortable: true, searchable: true },\n ...this.defaultGoogleColumns\n ];\n \n // this.getGoogleAdsMetrics(data);\n this.getGoogleKeywordsMetrics(data);\n this.getGoogleDevicesMetrics(data);\n\n this.reportForm.patchValue({\n showKeywords: true,\n showAds: false,\n showDemographics: false\n });\n } else if (this.reportMetrics.Platform === 'Meta') {\n this.allCampaignsColumns = [\n { title: 'Campaign', field: 'Name', sortable: true, searchable: true },\n ...this.defaultMetaColumns\n ];\n this.devicesColumns = [\n { title: 'Device', field: 'Device', sortable: true, searchable: true },\n ...this.defaultMetaColumns\n ];\n this.adsColumns = [\n { title: 'Thumbnail', type: 'image', width: '75px', field: 'ThumbnailUrl', sortable: false, searchable: false },\n { title: 'Ad', type: 'html', field: 'AdText', sortable: true, searchable: true },\n { title: 'Frequency', field: 'Frequency', sortable: true, pipe: 'NumberPipe', pipeArgs: [[2]] },\n ...this.defaultMetaColumns\n ];\n this.metaDemographicsColumns = [\n { title: 'Age', field: 'Age', sortable: true, searchable: true },\n { title: 'Gender', field: 'Gender', sortable: true, searchable: true },\n ...this.defaultMetaColumns\n ];\n this.metaAgeDemographicsColumns = [\n { title: 'Age', field: 'Age', sortable: true, searchable: true },\n ...this.defaultMetaColumns\n ];\n this.metaGenderDemographicsColumns = [\n { title: 'Gender', field: 'Gender', sortable: true, searchable: true },\n ...this.defaultMetaColumns\n ];\n\n this.getMetaAdsMetrics(data);\n this.getMetaDemographicsMetrics(data);\n this.getMetaDevicesMetrics(data);\n\n this.reportForm.patchValue({\n showKeywords: false,\n showAds: true,\n showDemographics: true\n });\n }\n\n this.dailyLeads = this.getDailyLeads(data);\n this.loadCompleted = true;\n } else {\n // console.error('No data found for the selected campaign or date range.');\n this.reportMetrics = {};\n this.reportMetrics.noData = 'No data found for the selected campaign or date range.';\n this.loadCompleted = true;\n }\n },\n (error) => {\n console.error('Error fetching raw campaigns data:', error);\n }\n );\n }\n // console.log('Report Data:', this.reportMetrics);\n } else {\n console.error('Invalid Platform:', this.platform);\n this.loadCompleted = true;\n this.validPlatform = false;\n }\n } \n\n toTitleCase(str: string): string {\n return str.replace(/_/g, ' ').replace(/\\w\\S*/g, (txt) => {\n return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();\n });\n }\n\n loadCampaignDetails(id: string): Promise<void> {\n return new Promise((resolve, reject) => {\n this.campaignsApiService.getCampaignDetails(id)\n .pipe(takeUntil(this.destroyed$))\n .subscribe((response: any) => {\n this.platform = response.data.platform;\n this.campaignName = response.data.name;\n resolve();\n }, reject);\n });\n }\n\n ngOnDestroy(): void {\n this.destroyed$.next(true);\n this.destroyed$.complete();\n }\n\n getTotalMetrics(data: any, item: string): number {\n let total = 0;\n for (const key in data) {\n if (data.hasOwnProperty(key)) {\n const metric = data[key].Metrics;\n if (metric && metric[item]) {\n total += metric[item];\n }\n }\n }\n return total;\n }\n getDailyLeads(data: any): any {\n let leads: any = [];\n for (let i = 0; i < data.Data.length; i++) {\n leads[i] = {\n Conversions: data.Data[i] || 0,\n Date: data.Dates[i] || ''\n };\n }\n // Sort the leads array by the Date property\n leads.sort((a: any, b: any) => (a.Date && b.Date) ? a.Date.localeCompare(b.Date) : 0);\n // console.log('Daily Leads:', leads);\n return leads;\n }\n convertMicrosToDollars(micros: number): number {\n return micros / 1000000; // 1 micros = 1/1000000 dollar\n }\n\n getMaxConversions() {\n return Math.max(...this.dailyLeads.map(lead => lead.Conversions));\n }\n \n get recentLeads() {\n return this.dailyLeads.slice(-62);\n }\n\n onReportPeriodChange(selectedPeriod: string) {\n let period = this.reportPeriods.find(f => f.key == selectedPeriod);\n this.DateStart = period?.startDate as string;\n this.DateStop = period?.stopDate as string;\n\n this.reportForm.patchValue({\n key: selectedPeriod,\n startDate: this.DateStart,\n stopDate: this.DateStop,\n });\n }\n get selectedReportPeriod(): string | undefined | null { return this.reportForm?.controls?.key?.value; }\n get datesReadonly(): boolean { return !(this.selectedReportPeriod == 'Custom'); }\n\n updateReport() {\n if (this.reportForm.invalid) {\n return;\n }\n this.loadCompleted = false;\n this.DateStart = this.reportForm.get('startDate')?.value;\n this.DateStop = this.reportForm.get('stopDate')?.value;\n this.selectedPeriod = this.reportForm.get('key')?.value;\n\n const formValues = {\n // Booked: this.reportForm.get('Booked')?.value,\n // Show: this.reportForm.get('Show')?.value,\n // Sold: this.reportForm.get('Sold')?.value,\n Booked: null,\n Show: null,\n Sold: null,\n showCaculator: this.reportForm.get('showCaculator')?.value\n };\n\n this.getReportData().then(() => {\n this.reportForm.patchValue(formValues);\n this.resetReportMetrics();\n });\n }\n\n formatAdBody(body: string): string {\n let shortened = body.length > 128 ? body.substring(0, 128) + '...' : body;\n let html = shortened.replace(/(?:\\r\\n|\\r|\\n)/g, '<br>');\n return html;\n }\n\n async convertImageUrlToBase64(imageUrl: string): Promise<string> {\n const response = await fetch(imageUrl);\n const blob = await response.blob();\n return new Promise<string>((resolve, reject) => {\n const reader = new FileReader();\n reader.onloadend = () => {\n resolve(reader.result as string);\n };\n reader.onerror = reject;\n reader.readAsDataURL(blob);\n });\n }\n async getImageUrl(imageUrl: string): Promise<string> {\n const base64ImageData = await this.convertImageUrlToBase64(imageUrl);\n // Remove the data URL prefix to get only the base64 string\n const base64String = base64ImageData.replace(/^data:image\\/(png|jpg|jpeg);base64,/, '');\n return base64String;\n }\n\n getOverviewMetrics(data: any) {\n const Clicks = data.Clicks > 0 ? data.Clicks : 0;\n const Impressions = data.Impressions > 0 ? data.Impressions : 0;\n const Leads = data.Conversions > 0 ? data.Conversions : 0;\n const Cost = data.Cost > 0 ? data.Cost : 0;\n\n this.reportMetrics.Clicks = Clicks;\n this.reportMetrics.Impressions = Impressions;\n this.reportMetrics.Leads = Leads;\n this.reportMetrics.Cost = Cost;\n this.reportMetrics.Ctr = Impressions > 0 ? Clicks / Impressions : 0;\n this.reportMetrics.Cpc = Clicks > 0 ? Cost / Clicks : 0;\n this.reportMetrics.Cpm = Impressions > 0 ? (Cost / Impressions) * 1000 : 0;\n this.reportMetrics.Lsr = Clicks > 0 ? Leads / Clicks : 0;\n this.reportMetrics.Cpl = Leads > 0 ? Cost / Leads : 0;\n }\n\n getIndividualCampaignsMetrics(data: any) {\n this.reportMetrics.AllCampaigns = data.DaySplitsAdsPdfModels.map((model: any) => {\n const Clicks = model.Clicks > 0 ? model.Clicks : 0;\n const Impressions = model.Impressions > 0 ? model.Impressions : 0;\n const Leads = model.Conversions > 0 ? model.Conversions : 0;\n const Cost = model.Cost > 0 ? model.Cost : 0;\n return {\n Name: model.CampaignName.trim(),\n Clicks,\n Impressions,\n Leads,\n Cost,\n Ctr: (Impressions > 0 ? Clicks / Impressions : 0),\n Cpc: Clicks > 0 ? Cost / Clicks : 0,\n Cpm: Impressions > 0 ? (Cost / Impressions) * 1000 : 0,\n Lsr: (Clicks > 0 ? Leads / Clicks : 0),\n Cpl: Leads > 0 ? Cost / Leads : 0\n };\n });\n }\n\n getGoogleAdsMetrics(data: any) {\n this.reportMetrics.Ads = data.GoogleTopFives.map((ad: any) => {\n const Clicks = ad.clicks > 0 ? ad.clicks : 0;\n const Impressions = ad.impressions > 0 ? ad.impressions : 0;\n const Leads = ad.conversions > 0 ? ad.conversions : 0;\n const Cost = ad.cost > 0 ? ad.cost : 0;\n return {\n Clicks,\n Impressions,\n Leads,\n Cost,\n Ctr: Impressions > 0 ? Clicks / Impressions : 0,\n Cpc: Clicks > 0 ? Cost / Clicks : 0,\n Cpm: Impressions > 0 ? (Cost / Impressions) * 1000 : 0,\n Lsr: Clicks > 0 ? Leads / Clicks : 0,\n Cpl: Leads > 0 ? Cost / Leads : 0,\n Desc1: ad.desc1,\n Desc2: ad.desc2,\n HeadlinePart1: ad.headlinePart1,\n HeadlinePart2: ad.headlinePart2,\n HeadlinePart3: ad.headlinePart3\n };\n });\n }\n\n getGoogleKeywordsMetrics(data: any) {\n this.reportMetrics.Keywords = data.GoogleKeywords.map((keyword: any) => {\n const Clicks = keyword.clicks > 0 ? keyword.clicks : 0;\n const Impressions = keyword.impressions > 0 ? keyword.impressions : 0;\n const Leads = keyword.conversions > 0 ? keyword.conversions : 0;\n const Cost = keyword.cost > 0 ? keyword.cost : 0;\n return {\n Clicks,\n Impressions,\n Leads,\n Cost,\n Ctr: Impressions > 0 ? Clicks / Impressions : 0,\n Cpc: Clicks > 0 ? Cost / Clicks : 0,\n Cpm: Impressions > 0 ? (Cost / Impressions) * 1000 : 0,\n Lsr: Clicks > 0 ? Leads / Clicks : 0,\n Cpl: Leads > 0 ? Cost / Leads : 0,\n Keyword: keyword.keyword\n };\n }).reduce((acc: any, curr: any) => {\n const existingKeyword = acc.find((item: any) => item.Keyword === curr.Keyword);\n if (existingKeyword) {\n existingKeyword.Clicks += curr.Clicks;\n existingKeyword.Impressions += curr.Impressions;\n existingKeyword.Leads += curr.Leads;\n existingKeyword.Cost = existingKeyword.Cost + curr.Cost;\n existingKeyword.Ctr = existingKeyword.Impressions > 0 ? existingKeyword.Clicks / existingKeyword.Impressions : 0;\n existingKeyword.Cpc = existingKeyword.Clicks > 0 ? existingKeyword.Cost / existingKeyword.Clicks : 0;\n existingKeyword.Cpm = existingKeyword.Impressions > 0 ? (existingKeyword.Cost / existingKeyword.Impressions) * 1000 : 0;\n existingKeyword.Lsr = existingKeyword.Clicks > 0 ? existingKeyword.Leads / existingKeyword.Clicks : 0;\n existingKeyword.Cpl = existingKeyword.Leads > 0 ? existingKeyword.Cost / existingKeyword.Leads : 0;\n } else {\n acc.push(curr);\n }\n return acc;\n }, []);\n }\n\n getGoogleDevicesMetrics(data: any) {\n this.reportMetrics.Devices = data.GoogleDevices.map((device: any) => {\n const Clicks = device.clicks > 0 ? device.clicks : 0;\n const Impressions = device.impressions > 0 ? device.impressions : 0;\n const Leads = device.conversions > 0 ? device.conversions : 0;\n const Cost = device.cost > 0 ? device.cost : 0;\n return {\n Clicks,\n Impressions,\n Leads,\n Cost,\n Ctr: Impressions > 0 ? Clicks / Impressions : 0,\n Cpc: Clicks > 0 ? Cost / Clicks : 0,\n Cpm: Impressions > 0 ? (Cost / Impressions) * 1000 : 0,\n Lsr: Clicks > 0 ? Leads / Clicks : 0,\n Cpl: Leads > 0 ? Cost / Leads : 0,\n Device: device.device\n };\n }).reduce((acc: any, curr: any) => {\n const existingDevice = acc.find((item: any) => item.Device === curr.Device);\n if (existingDevice) {\n existingDevice.Clicks += curr.Clicks;\n existingDevice.Impressions += curr.Impressions;\n existingDevice.Leads += curr.Leads;\n existingDevice.Cost = existingDevice.Cost + curr.Cost;\n existingDevice.Ctr = existingDevice.Impressions > 0 ? existingDevice.Clicks / existingDevice.Impressions : 0;\n existingDevice.Cpc = existingDevice.Clicks > 0 ? existingDevice.Cost / existingDevice.Clicks : 0;\n existingDevice.Cpm = existingDevice.Impressions > 0 ? (existingDevice.Cost / existingDevice.Impressions) * 1000 : 0;\n existingDevice.Lsr = existingDevice.Clicks > 0 ? existingDevice.Leads / existingDevice.Clicks : 0;\n existingDevice.Cpl = existingDevice.Leads > 0 ? existingDevice.Cost / existingDevice.Leads : 0;\n } else {\n acc.push(curr);\n }\n return acc;\n }, []);\n }\n\n async getMetaAdsMetrics(data: any) {\n const ads = await Promise.all(data.FacebookTopFives.map(async (ad: any) => {\n const Clicks = ad.clicks > 0 ? ad.clicks : 0;\n const Frequency = Number(ad.frequency) > 0 ? Number(ad.frequency) : 0;\n const Impressions = ad.impressions > 0 ? ad.impressions : 0;\n const Leads = Number(ad.leads) > 0 ? Number(ad.leads) : 0;\n const Cost = Number(ad.spend) ? Number(ad.spend) : 0;\n const ThumbnailUrl = await this.getImageUrl(ad.FbTopFiveModel[0].thumbnail_url);\n const AdText = '<strong>' + ad.FbTopFiveModel[0].title + '</strong>\\n\\n' + ad.FbTopFiveModel[0].body;\n return {\n Clicks,\n Frequency,\n Impressions,\n Leads,\n Cost,\n Ctr: Impressions > 0 ? Clicks / Impressions : 0,\n Cpc: Clicks > 0 ? Cost / Clicks : 0,\n Cpm: Impressions > 0 ? (Cost / Impressions) * 1000 : 0,\n Lsr: Clicks > 0 ? Leads / Clicks : 0,\n Cpl: Leads > 0 ? Cost / Leads : 0,\n Body: ad.FbTopFiveModel[0].body,\n ThumbnailUrl,\n Title: ad.FbTopFiveModel[0].title,\n AdName: ad.FbTopFiveModel[0].ad_name,\n AdText: this.formatAdBody(AdText)\n };\n }));\n this.reportMetrics.Ads = ads;\n }\n\n getMetaDemographicsMetrics(data: any) {\n this.reportMetrics.Demographics = data.FacebookDemographics.map((demographic: any) => {\n const mergedActions: any = {};\n \n demographic.actionsList.forEach((actionsList: any) => {\n const key = `${actionsList.age}-${actionsList.gender}`;\n if (!mergedActions[key]) {\n mergedActions[key] = {\n Clicks: 0,\n Impressions: 0,\n Leads: 0,\n Cost: 0,\n Age: actionsList.age,\n Gender: this.toTitleCase(actionsList.gender)\n };\n }\n \n if (actionsList.actions) {\n actionsList.actions.forEach((action: any) => {\n const value = Number(action.Value);\n if (action.ActionType === 'link_click') {\n mergedActions[key].Clicks += value > 0 ? value : 0;\n } else if (action.ActionType === 'lead') {\n mergedActions[key].Leads += value > 0 ? value : 0;\n }\n });\n } else {\n mergedActions[key].Clicks = 0;\n mergedActions[key].Leads = 0;\n }\n \n mergedActions[key].Impressions += actionsList.impressions > 0 ? actionsList.impressions : 0;\n mergedActions[key].Cost += Number(actionsList.spend) > 0 ? Number(actionsList.spend) : 0;\n });\n \n const mergedArray = Object.values(mergedActions).map((item: any) => {\n return {\n Clicks: item.Clicks,\n Impressions: item.Impressions,\n Leads: item.Leads,\n Cost: item.Cost,\n Ctr: item.Impressions > 0 ? item.Clicks / item.Impressions : 0,\n Cpc: item.Clicks > 0 ? item.Cost / item.Clicks : 0,\n Cpm: item.Impressions > 0 ? (item.Cost / item.Impressions) * 1000 : 0,\n Lsr: item.Clicks > 0 ? item.Leads / item.Clicks : 0,\n Cpl: item.Leads > 0 ? item.Cost / item.Leads : 0,\n Age: item.Age,\n Gender: item.Gender\n };\n });\n \n return mergedArray;\n }).flat();\n \n this.reportMetrics.AgeDemographics = this.reportMetrics.Demographics.reduce((acc: any, curr: any) => {\n if (!acc[curr.Age]) {\n acc[curr.Age] = {\n Clicks: 0,\n Impressions: 0,\n Leads: 0,\n Cost: 0,\n Age: curr.Age\n };\n }\n acc[curr.Age].Clicks += curr.Clicks;\n acc[curr.Age].Impressions += curr.Impressions;\n acc[curr.Age].Leads += curr.Leads;\n acc[curr.Age].Cost += curr.Cost;\n return acc;\n }, {});\n \n this.reportMetrics.AgeDemographics = Object.values(this.reportMetrics.AgeDemographics).map((item: any) => {\n return {\n Clicks: item.Clicks,\n Impressions: item.Impressions,\n Leads: item.Leads,\n Cost: item.Cost,\n Ctr: item.Impressions > 0 ? item.Clicks / item.Impressions : 0,\n Cpc: item.Clicks > 0 ? item.Cost / item.Clicks : 0,\n Cpm: item.Impressions > 0 ? (item.Cost / item.Impressions) * 1000 : 0,\n Lsr: item.Clicks > 0 ? item.Leads / item.Clicks : 0,\n Cpl: item.Leads > 0 ? item.Cost / item.Leads : 0,\n Age: item.Age\n };\n });\n \n this.reportMetrics.GenderDemographics = this.reportMetrics.Demographics.reduce((acc: any, curr: any) => {\n if (!acc[curr.Gender]) {\n acc[curr.Gender] = {\n Clicks: 0,\n Impressions: 0,\n Leads: 0,\n Cost: 0,\n Gender: curr.Gender\n };\n }\n acc[curr.Gender].Clicks += curr.Clicks;\n acc[curr.Gender].Impressions += curr.Impressions;\n acc[curr.Gender].Leads += curr.Leads;\n acc[curr.Gender].Cost += curr.Cost;\n return acc;\n }, {});\n \n this.reportMetrics.GenderDemographics = Object.values(this.reportMetrics.GenderDemographics).map((item: any) => {\n return {\n Clicks: item.Clicks,\n Impressions: item.Impressions,\n Leads: item.Leads,\n Cost: item.Cost,\n Ctr: item.Impressions > 0 ? item.Clicks / item.Impressions : 0,\n Cpc: item.Clicks > 0 ? item.Cost / item.Clicks : 0,\n Cpm: item.Impressions > 0 ? (item.Cost / item.Impressions) * 1000 : 0,\n Lsr: item.Clicks > 0 ? item.Leads / item.Clicks : 0,\n Cpl: item.Leads > 0 ? item.Cost / item.Leads : 0,\n Gender: item.Gender\n };\n });\n\n this.reportMetrics.AgeGenderDemographics = this.reportMetrics.Demographics.reduce((acc: any, curr: any) => {\n const key = `${curr.Age}-${curr.Gender}`;\n if (!acc[key]) {\n acc[key] = {\n Clicks: 0,\n Impressions: 0,\n Leads: 0,\n Cost: 0,\n Age: curr.Age,\n Gender: curr.Gender\n };\n }\n acc[key].Clicks += curr.Clicks;\n acc[key].Impressions += curr.Impressions;\n acc[key].Leads += curr.Leads;\n acc[key].Cost += curr.Cost;\n return acc;\n }, {});\n\n this.reportMetrics.AgeGenderDemographics = Object.values(this.reportMetrics.AgeGenderDemographics).map((item: any) => {\n return {\n Clicks: item.Clicks,\n Impressions: item.Impressions,\n Leads: item.Leads,\n Cost: item.Cost,\n Ctr: item.Impressions > 0 ? item.Clicks / item.Impressions : 0,\n Cpc: item.Clicks > 0 ? item.Cost / item.Clicks : 0,\n Cpm: item.Impressions > 0 ? (item.Cost / item.Impressions) * 1000 : 0,\n Lsr: item.Clicks > 0 ? item.Leads / item.Clicks : 0,\n Cpl: item.Leads > 0 ? item.Cost / item.Leads : 0,\n Age: item.Age,\n Gender: item.Gender\n };\n });\n }\n\n getMetaDevicesMetrics(data: any) {\n this.reportMetrics.Devices = data.FacebookDevices.map((device: any) => {\n const mergedActions: any = {};\n \n device.actionsList.forEach((actionsList: any) => {\n const key = actionsList.device_platform;\n if (!mergedActions[key]) {\n mergedActions[key] = {\n Clicks: 0,\n Impressions: 0,\n Leads: 0,\n Cost: 0,\n Device: this.toTitleCase(actionsList.device_platform)\n };\n }\n \n if (actionsList.actions) {\n actionsList.actions.forEach((action: any) => {\n const value = Number(action.Value);\n if (action.ActionType === 'link_click') {\n mergedActions[key].Clicks += value > 0 ? value : 0;\n } else if (action.ActionType === 'lead') {\n mergedActions[key].Leads += value > 0 ? value : 0;\n }\n });\n } else {\n mergedActions[key].Clicks = 0;\n mergedActions[key].Leads = 0;\n }\n\n mergedActions[key].Impressions += actionsList.impressions > 0 ? actionsList.impressions : 0;\n mergedActions[key].Cost += Number(actionsList.spend) > 0 ? Number(actionsList.spend) : 0;\n });\n \n return Object.values(mergedActions);\n }).flat().reduce((acc: any, curr: any) => {\n const existingDevice = acc.find((item: any) => item.Device === curr.Device);\n if (existingDevice) {\n existingDevice.Clicks += curr.Clicks;\n existingDevice.Impressions += curr.Impressions;\n existingDevice.Leads += curr.Leads;\n existingDevice.Cost = existingDevice.Cost + curr.Cost;\n existingDevice.Ctr = existingDevice.Impressions > 0 ? existingDevice.Clicks / existingDevice.Impressions : 0;\n existingDevice.Cpc = existingDevice.Clicks > 0 ? existingDevice.Cost / existingDevice.Clicks : 0;\n existingDevice.Cpm = existingDevice.Impressions > 0 ? (existingDevice.Cost / existingDevice.Impressions) * 1000 : 0;\n existingDevice.Lsr = existingDevice.Clicks > 0 ? existingDevice.Leads / existingDevice.Clicks : 0;\n existingDevice.Cpl = existingDevice.Leads > 0 ? existingDevice.Cost / existingDevice.Leads : 0;\n } else {\n acc.push({\n ...curr,\n Ctr: curr.Impressions > 0 ? curr.Clicks / curr.Impressions : 0,\n Cpc: curr.Clicks > 0 ? curr.Cost / curr.Clicks : 0,\n Cpm: curr.Impressions > 0 ? (curr.Cost / curr.Impressions) * 1000 : 0,\n Lsr: curr.Clicks > 0 ? curr.Leads / curr.Clicks : 0,\n Cpl: curr.Leads > 0 ? curr.Cost / curr.Leads : 0\n });\n }\n return acc;\n }, []);\n }\n\n updateReportMetrics() {\n const Booked = this.reportForm.get('Booked')?.value || 0;\n const Show = this.reportForm.get('Show')?.value || 0;\n const Sold = this.reportForm.get('Sold')?.value || 0;\n\n const Leads = this.reportMetrics.Leads > 0 ? this.reportMetrics.Leads : 0;\n const Cost = this.reportMetrics.Cost > 0 ? this.reportMetrics.Cost : 0;\n \n if (Booked) {\n this.reportMetrics.Booked = Booked;\n this.reportMetrics.BookingPercent = Booked / Leads;\n this.reportMetrics.CostPerBooking = Cost / Booked;\n } else {\n this.reportMetrics.Booked = null;\n this.reportMetrics.BookingPercent = null;\n this.reportMetrics.CostPerBooking = null;\n }\n\n if (Show) {\n this.reportMetrics.Show = Show;\n this.reportMetrics.LeadToShowPercent = Show / Leads;\n this.reportMetrics.CostPerShow = Cost / Show;\n } else {\n this.reportMetrics.Show = null;\n this.reportMetrics.LeadToShowPercent = null;\n this.reportMetrics.CostPerShow = null;\n }\n\n if (Booked && Show) {\n this.reportMetrics.BookToShowPercent = Show / Booked;\n } else {\n this.reportMetrics.BookToShowPercent = null;\n }\n\n if (Sold) {\n this.reportMetrics.Sold = Sold;\n this.reportMetrics.LeadToSoldPercent = Sold / Leads;\n this.reportMetrics.CostPerAcquisition = Cost / Sold;\n } else {\n this.reportMetrics.Sold = null;\n this.reportMetrics.LeadToSoldPercent = null;\n this.reportMetrics.CostPerAcquisition = null;\n }\n\n if (Booked && Sold) {\n this.reportMetrics.BookToSoldPercent = Sold / Booked;\n } else {\n this.reportMetrics.BookToSoldPercent = null;\n }\n\n if (Show && Sold) {\n this.reportMetrics.ShowToSoldPercent = Sold / Show;\n } else {\n this.reportMetrics.ShowToSoldPercent = null;\n }\n }\n\n resetReportMetrics() {\n this.reportMetrics.Booked = 0;\n this.reportMetrics.BookingPercent = 0;\n this.reportMetrics.CostPerBooking = 0;\n this.reportMetrics.Show = 0;\n this.reportMetrics.LeadToShowPercent = 0;\n this.reportMetrics.CostPerShow = 0;\n this.reportMetrics.BookToShowPercent = 0;\n this.reportMetrics.Sold = 0;\n this.reportMetrics.LeadToSoldPercent = 0;\n this.reportMetrics.CostPerAcquisition = 0;\n this.reportMetrics.BookToSoldPercent = 0;\n this.reportMetrics.ShowToSoldPercent = 0;\n }\n\n}\n","<div *ngIf=\"!loadCompleted\" class=\"row loading\">\n Data is Loading\n <div class=\"la-ball-spin-clockwise\">\n <div></div><div></div><div></div><div></div><div></div><div></div><div></div>\n </div>\n</div>\n\n<div *ngIf=\"loadCompleted && validPlatform\" class=\"reports\" [ngClass]=\"{\n 'google': reportMetrics.Platform === 'Google',\n 'meta': reportMetrics.Platform === 'Meta'\n}\">\n <div class=\"left\">\n <h3 style=\"text-align: center;\">{{ campaignName }}</h3>\n\n <div class=\"reportForm\" style=\"padding: 18px;\">\n <form [formGroup]=\"reportForm\" (ngSubmit)=\"updateReport()\">\n <div>\n <div class=\"formGroup dateSelect\">\n <div class=\"form groupHeader\">\n <label>Please select report period:</label>\n </div>\n <div class=\"form dropdown\">\n <select class=\"form-select mb-2\" aria-label=\"Please select period.\" (change)=\"onReportPeriodChange(t.value)\" #t>\n <option selected disabled>Please select period.</option>\n <option type=\"button\" ngbDropdownItem *ngFor=\"let p of reportPeriods\" [selected]=\"selectedPeriod==p.key\">\n {{ p.key }}\n </option>\n </select>\n </div>\n <div class=\"dateRange\">\n <div class=\"form dateInput\">\n <label class=\"sr-only\" for=\"startDate\">Start</label>\n <input type=\"date\" [readonly]=\"datesReadonly\" formControlName=\"startDate\"\n class=\"form-control form-date date-custom\" [ngClass]=\"{ 'is-invalid': reportForm.controls.startDate.errors }\" />\n <div *ngIf=\"reportForm.controls.startDate.errors\" class=\"invalid-feedback\">\n <div *ngIf=\"reportForm.controls.startDate.errors.required\">Please select period.</div>\n </div>\n </div>\n\n <div class=\"form dateInput\">\n <span style=\"margin: 0 6px;\">—</span>\n </div>\n\n <div class=\"form dateInput\">\n <label class=\"sr-only\" for=\"stopDate\">End</label>\n <input type=\"date\" [readonly]=\"datesReadonly\" formControlName=\"stopDate\"\n class=\"form-control form-date date-custom\" [ngClass]=\"{ 'is-invalid': reportForm.controls.stopDate.errors }\" />\n <div *ngIf=\"reportForm.controls.stopDate.errors\" class=\"invalid-feedback\">\n <div *ngIf=\"reportForm.controls.stopDate.errors.required\">Please select period.</div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"formGroup\">\n <div class=\"form groupHeader\">\n <label class=\"mb-2\">Show Sections:</label>\n </div>\n <div class=\"form checkbox\" fxLayout=\"row\" fxLayoutAlign=\"start center\">\n <div *ngIf=\"reportMetrics.Platform === 'Google' || reportMetrics.Platform === 'Meta'\">\n <div class=\"form-check\">\n <input class=\"form-check-input\" type=\"checkbox\" formControlName=\"showLeadsByDay\" id=\"showLeadsByDay\">\n <label class=\"form-check-label\" for=\"showLeadsByDay\">Leads by Day Chart</label>\n </div>\n <div class=\"form-check\">\n <input class=\"form-check-input\" type=\"checkbox\" formControlName=\"showDevices\" id=\"showDevices\">\n <label class=\"form-check-label\" for=\"showDevices\">Devices</label>\n </div>\n <div *ngIf=\"reportMetrics.Platform === 'Google'\" class=\"form-check\">\n <input class=\"form-check-input\" type=\"checkbox\" formControlName=\"showKeywords\" id=\"showKeywords\">\n <label class=\"form-check-label\" for=\"showKeywords\">Keywords</label>\n </div>\n <div *ngIf=\"reportMetrics.Platform === 'Meta'\" class=\"form-check\">\n <input class=\"form-check-input\" type=\"checkbox\" formControlName=\"showAds\" id=\"showAds\">\n <label class=\"form-check-label\" for=\"showAds\">Ads</label>\n </div>\n <div *ngIf=\"reportMetrics.Platform === 'Meta'\" class=\"form-check\">\n <input class=\"form-check-input\" type=\"checkbox\" formControlName=\"showDemographics\" id=\"showDemographics\">\n <label class=\"form-check-label\" for=\"showDemographics\">Demographics</label>\n </div>\n <div class=\"form-check\">\n <input class=\"form-check-input\" type=\"checkbox\" formControlName=\"showCaculator\" id=\"showCaculator\">\n <label class=\"form-check-label\" for=\"showCaculator\">Calculate Sales Funnel</label>\n </div>\n </div>\n </div>\n </div>\n <div *ngIf=\"reportForm.get('showCaculator')?.value\" class=\"formGroup caculator\">\n <div class=\"form groupHeader\">\n <label>Enter Values for This Date Range:</label>\n </div>\n <div class=\"form inputValues\">\n <label for=\"Booked\">Booked</label>\n <input type=\"number\" formControlName=\"Booked\"\n class=\"form-control form-input\" placeholder=\"Enter # of Leads who boooked\" />\n </div>\n <div class=\"form inputValues\">\n <label for=\"Show\">Show</label>\n <input type=\"number\" formControlName=\"Show\"\n class=\"form-control form-input\" placeholder=\"Enter # of Leads who showed\" />\n </div>\n <div class=\"form inputValues\">\n <label for=\"Sold\">Sold</label>\n <input type=\"number\" formControlName=\"Sold\"\n class=\"form-control form-input\" placeholder=\"Enter # of Leads who purchased\" />\n </div>\n </div>\n <div class=\"formGroup\">\n <div class=\"form submit\">\n <button type=\"submit\" class=\"btn btn-primary mb-2\">Update</button>\n </div>\n </div>\n </div>\n </form>\n </div>\n </div>\n <div class=\"right\">\n <div class=\"nodata\" *ngIf=\"reportMetrics.noData; else showSummary\">\n <h3 style=\"text-align: center;\">{{ this.reportMetrics.noData }}</h3>\n </div>\n <ng-template #showSummary>\n <div class=\"summary\">\n <h3 style=\"text-align: center;\">Marketing Summary</h3>\n <div class=\"blocks\" style=\"margin-top: 25px;\">\n <div class=\"kpi\">\n <h3>{{ reportMetrics.Cost | currency }}</h3>\n Cost \n </div>\n <div class=\"kpi\">\n <h3>{{ reportMetrics.Impressions | number }}</h3>\n Impressions \n </div>\n <div *ngIf=\"reportMetrics.Platform === 'Meta'\" class=\"kpi\">\n <h3>{{ reportMetrics.Cpm | currency }}</h3>\n Cost Per 1,000 Impressions (CPM) \n </div>\n <div class=\"kpi\">\n <h3>{{ reportMetrics.Clicks | number }}</h3>\n Clicks \n </div>\n <div *ngIf=\"reportMetrics.Platform === 'Google'\" class=\"kpi\">\n <h3>{{ reportMetrics.Cpc | currency }}</h3>\n Cost Per Click (CPC)\n </div>\n </div>\n <div class=\"blocks\" style=\"margin-top: 25px;\">\n <div class=\"kpi\">\n <h3>{{ reportMetrics.Ctr | percent:'1.2-2' }}</h3>\n Click Through Rate (CTR) \n </div>\n <div class=\"kpi\">\n <h3>{{ reportMetrics.Leads | number }}</h3>\n Leads \n </div>\n <div class=\"kpi\">\n <h3>{{ reportMetrics.Lsr | percent:'1.2-2' }}</h3>\n Lead Submission Rate (LSR) \n </div>\n <div class=\"kpi\">\n <h3>{{ reportMetrics.Cpl | currency }}</h3>\n Cost Per Lead (CPL) \n </div>\n </div>\n </div>\n </ng-template>\n <section *ngIf=\"reportForm.get('showCaculator')?.value\">\n <h3 style=\"text-align: center;\">Sales Funnel</h3>\n <div class=\"summary\">\n <div class=\"blocks\" style=\"margin-top: 25px;\">\n <div *ngIf=\"reportMetrics.BookingPercent\" class=\"cac\">\n <h3>{{ reportMetrics.BookingPercent | percent:'1.2-2' }}</h3>\n Lead to Book %\n </div>\n <div *ngIf=\"reportMetrics.BookToShowPercent\" class=\"cac\">\n <h3>{{ reportMetrics.BookToShowPercent | percent:'1.2-2' }}</h3>\n Book to Show %\n </div>\n <div *ngIf=\"reportMetrics.LeadToShowPercent\" class=\"cac\">\n <h3>{{ reportMetrics.LeadToShowPercent | percent:'1.2-2' }}</h3>\n Lead to Show %\n </div>\n </div>\n <div class=\"blocks\" style=\"margin-top: 25px;\">\n <div *ngIf=\"reportMetrics.LeadToSoldPercent\" class=\"cac\">\n <h3>{{ reportMetrics.LeadToSoldPercent | percent:'1.2-2' }}</h3>\n Lead to Sold %\n </div>\n <div *ngIf=\"reportMetrics.BookToSoldPercent\" class=\"cac\">\n <h3>{{ reportMetrics.BookToSoldPercent | percent:'1.2-2' }}</h3>\n Book to Sold %\n </div>\n <div *ngIf=\"reportMetrics.ShowToSoldPercent\" class=\"cac\">\n <h3>{{ reportMetrics.ShowToSoldPercent | percent:'1.2-2' }}</h3>\n Show to Sold %\n </div>\n </div>\n <div class=\"blocks\" style=\"margin-top: 25px;\">\n <div *ngIf=\"reportMetrics.CostPerBooking\" class=\"cac\">\n <h3>{{ reportMetrics.CostPerBooking | currency }}</h3>\n Cost Per Booking\n </div>\n <div *ngIf=\"reportMetrics.CostPerShow\" class=\"cac\">\n <h3>{{ reportMetrics.CostPerShow | currency }}</h3>\n Cost Per Show\n </div>\n </div>\n <div class=\"blocks\" style=\"margin-top: 25px;\">\n <div *ngIf=\"reportMetrics.CostPerAcquisition\" class=\"cac\">\n <h3>{{ reportMetrics.CostPerAcquisition | currency }}</h3>\n Cost Per Acquisition\n </div>\n </div>\n </div>\n </section>\n\n <section *ngIf=\"reportForm.get('showLeadsByDay')?.value && reportMetrics.Leads > 0\" class=\"leadsChart\">\n <h3 style=\"text-align: center;\">Leads by Day</h3>\n <p style=\"text-align: center; font-size: 0.9em;\">(Will Show a Maximum of the Last 2 Months)</p>\n <div class=\"background\">\n <ul class=\"barGraph\">\n <li *ngFor=\"let lead of recentLeads; let i = index\"\n [ngStyle]=\"{\n 'grid-row': ((getMaxConversions()*36) - (lead.Conversions*36) + (getMaxConversions()*3)) + ' / span ' + ((lead.Conversions*36) + 1),\n 'grid-column': (i + 1)\n }\"\n title=\"{{ lead.Date | date:'MMM d' }}\">\n <span class=\"leadNum\">{{ lead.Conversions }}</span>\n <div class=\"bar\" [ngClass]=\"{ 'empty': lead.Conversions === 0 }\"></div>\n <ng-container *ngIf=\"recentLeads.length <= 30; else shortDate\">\n <span class=\"leadDate\">{{ lead.Date | date:'MMM d' }}</span>\n </ng-container>\n <ng-template #shortDate>\n <span class=\"leadDate\">{{ lead.Date | date:'d' }}</span>\n </ng-template>\n </li>\n </ul>\n </div>\n </section>\n\n <section *ngIf=\"reportMetrics.AllCampaigns && reportMetrics.AllCampaigns.length > 0\">\n <app-report-datatable \n [iSortColumn]=\"'Leads'\"\n [iSortDirection]=\"'desc'\"\n [iColumns]=\"allCampaignsColumns\" \n [iData$]=\"reportMetrics.AllCampaigns\"\n [iTotalCount]=\"reportMetrics.AllCampaigns.length\"\n [iShowFooter]=\"reportMetrics.AllCampaigns.length > 25\"\n [iReportTitle]=\"'Campaigns'\"\n >\n </app-report-datatable>\n </section>\n\n <section *ngIf=\"reportForm.get('showDevices')?.value && reportMetrics.Devices && reportMetrics.Devices.length > 0\">\n <app-report-datatable \n [iSortColumn]=\"'Leads'\"\n [iSortDirection]=\"'desc'\"\n [iColumns]=\"devicesColumns\" \n [iData$]=\"reportMetrics.Devices\"\n [iTotalCount]=\"reportMetrics.Devices.length\"\n [iShowFooter]=\"reportMetrics.Devices.length > 25\"\n [iReportTitle]=\"'Devices'\"\n >\n </app-report-datatable>\n </section>\n\n <section *ngIf=\"reportForm.get('showKeywords')?.value && reportMetrics.Keywords && reportMetrics.Keywords.length > 0\">\n <app-report-datatable \n [iSortColumn]=\"'Leads'\"\n [iSortDirection]=\"'desc'\"\n [iColumns]=\"googleKeywordsColumns\" \n [iData$]=\"reportMetrics.Keywords\"\n [iTotalCount]=\"reportMetrics.Keywords.length\"\n [iShowFooter]=\"reportMetrics.Keywords.length > 25\"\n [iReportTitle]=\"'Keywords'\"\n >\n </app-report-datatable>\n </section>\n\n <section *ngIf=\"reportForm.get('showAds')?.value && reportMetrics.Ads && reportMetrics.Ads.length > 0\">\n <app-report-datatable \n [iSortColumn]=\"'Leads'\"\n [iSortDirection]=\"'desc'\"\n [iColumns]=\"adsColumns\" \n [iData$]=\"reportMetrics.Ads\"\n [iTotalCount]=\"reportMetrics.Ads.length\"\n [iShowFooter]=\"reportMetrics.Ads.length > 25\"\n [iReportTitle]=\"'Ads'\"\n >\n </app-report-datatable>\n <!--\n <tr *ngFor=\"let ad of reportMetrics.Ads\">\n <td *ngIf=\"reportMetrics.Platform === 'Google'\">\n <strong>{{ ad.HeadlinePart1 }}{{ ad.HeadlinePart2 }}{{ ad.HeadlinePart3 }}</strong><br />\n {{ ad.Desc1 }}{{ ad.Desc2 }}\n </td>\n <td *ngIf=\"reportMetrics.Platform === 'Meta'\">\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\" fxLayoutGap=\"15px\">\n <div style=\"min-width: 64px\"><img [src]=\"ad.ThumbnailUrl\" alt=\"Thumbnail\" width=\"64px\"></div>\n <div>\n <strong>{{ ad.Title }}</strong><br />\n <span [innerHTML]=\"formatAdBody(ad.Body)\"></span>\n </div>\n </div>\n </td>\n </tr>\n -->\n </section>\n\n <section *ngIf=\"reportForm.get('showDemographics')?.value && reportMetrics.AgeGenderDemographics && reportMetrics.AgeGenderDemographics.length > 0\">\n <app-report-datatable \n [iSortColumn]=\"'Leads'\"\n [iSortDirection]=\"'desc'\"\n [iColumns]=\"metaDemographicsColumns\" \n [iData$]=\"reportMetrics.AgeGenderDemographics\"\n [iTotalCount]=\"reportMetrics.AgeGenderDemographics.length\"\n [iShowFooter]=\"reportMetrics.AgeGenderDemographics.length > 25\"\n [iReportTitle]=\"'Demographics'\"\n >\n </app-report-datatable>\n\n <app-report-datatable \n [iSortColumn]=\"'Leads'\"\n [iSortDirection]=\"'desc'\"\n [iColumns]=\"metaAgeDemographicsColumns\" \n [iData$]=\"reportMetrics.AgeDemographics\"\n [iTotalCount]=\"reportMetrics.AgeDemographics.length\"\n [iShowFooter]=\"reportMetrics.AgeDemographics.length > 25\"\n [iReportTitle]=\"'Age Demographics'\"\n >\n </app-report-datatable>\n\n <app-report-datatable \n [iSortColumn]=\"'Leads'\"\n [iSortDirection]=\"'desc'\"\n [iColumns]=\"metaGenderDemographicsColumns\" \n [iData$]=\"reportMetrics.GenderDemographics\"\n [iTotalCount]=\"reportMetrics.GenderDemographics.length\"\n [iShowFooter]=\"reportMetrics.GenderDemographics.length > 25\"\n [iReportTitle]=\"'Gender Demographics'\"\n >\n </app-report-datatable>\n </section>\n </div>\n</div>\n\n<div *ngIf=\"!validPlatform\" class=\"row\">\n <div class=\"col-md-12\">\n <div class=\"card\" style=\"background-color: #e9e9ef !important;\">\n <div class=\"card-body\">\n <div class=\"details_top\">\n <h3 style=\"text-align: center;\">Reports are not available for this Platform at this time.</h3>\n </div>\n </div>\n </div>\n</div>\n","import { Component, OnInit, OnDestroy } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { ReplaySubject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { PAGE_NAMES, ROLES_TYPE } from '../../../core/helpers/constants';\nimport { getRolesForPage } from '../../../core/helpers/utility';\nimport { IPermission } from '../../../core/models/auth.models';\nimport { ICompany } from '../../../core/models/datafeed.models';\nimport { DataFeedService } from '../../../shared/api/datafeed.service';\nimport { AppService } from '../../../store/app.service';\nimport { IReportingPeriod } from '../../../core/models/reporting.models';\nimport { ReportsApiService } from '../reports.apiservice';\nimport { FormBuilder, FormGroup, Validators, FormControl } from '@angular/forms';\n\n@Component({\n selector: 'app-reports-brand-report',\n templateUrl: './reports-brand-report.component.html',\n styleUrls: ['./reports-brand-report.component.scss']\n})\nexport class ReportsBrandDashboardComponent implements OnInit, OnDestroy {\n doWhat: IPermission = {} as IPermission;\n companiesData: Array<ICompany> = [];\n selectedCompanyId: string = '';\n private destroyed$: ReplaySubject<boolean> = new ReplaySubject(1);\n isAdmin: boolean = false;\n roleOptions: any = {};\n isExternal: boolean = false;\n isCompanyOwner: boolean = false;\n loading: boolean = false;\n campaignsData: Array<any>\n\n reportForm: FormGroup;\n reportPeriods: Array<IReportingPeriod> = [];\n DateStart: string | null = null;\n DateStop: string | null = null;\n selectedPeriod: string | null = null;\n companyMetaData: { [key: string]: any }[] = [];\n companyMetaTotals: { [key: string]: any }[] = [];\n companyMetaAverages: { [key: string]: any }[] = [];\n companyGoogleData: { [key: string]: any; }[] = [];\n companyGoogleTotals: { [key: string]: any }[] = [];\n companyGoogleAverages: { [key: string]: any }[] = [];\n companyTempTotals: { [key: string]: number } = { cost: 0, leads: 0, impressions: 0 };\n activeTab: string = 'meta';\n\n defaultColumns = [\n { title: 'Location', field: 'location', sortable: true, anchorLink: true, anchorType: 'campaign', anchorParamsField: 'reach_campaign_id', openInNewTab: true, searchable: true },\n { title: 'Owner', field: 'client_name', sortable: true, anchorLink: true, anchorType: 'client', anchorParamsField: 'reach_client_id', openInNewTab: true, searchable: true },\n { title: 'Type', field: 'campaign_type', sortable: true, searchable: true },\n { title: 'Stage', field: 'campaign_stage', sortable: true, searchable: true },\n { title: 'Monthly Budget*', field: 'budget', sortable: true, pipe: 'Currency', pipeArgs: ['USD', 'symbol', '1.0-0'] },\n { title: 'Ad Spend', field: 'cost', sortable: true, pipe: 'Currency', pipeArgs: ['USD', 'symbol', '1.2-2'], hoverValue: 'cost_prev' },\n { title: 'Spend Change', field: 'cost_compare', sortable: true, pipe: 'PercentPipe', statusClass: 'cost_updown' },\n ];\n\n defaultAfterColumns = [\n { title: 'CTR', field: 'ctr', sortable: true, pipe: 'PercentPipe', hoverValue: 'ctr_prev' },\n { title: 'CTR Change', field: 'ctr_compare', sortable: true, pipe: 'PercentPipe', statusClass: 'ctr_updown' },\n { title: 'Leads', field: 'leads', sortable: true, pipe: 'NumberPipe', hoverValue: 'leads_prev' },\n { title: 'Leads Change', field: 'leads_compare', sortable: true, pipe: 'PercentPipe', statusClass: 'leads_updown' },\n { title: 'LSR', field: 'lsr', sortable: true, pipe: 'PercentPipe', hoverValue: 'lsr_prev' },\n { title: 'LSR Change', field: 'lsr_compare', sortable: true, pipe: 'PercentPipe', statusClass: 'lsr_updown' },\n { title: 'CPL', field: 'cpl', sortable: true, pipe: 'Currency', pipeArgs: ['USD', 'symbol', '1.2-2'], statusClass: 'redalert' },\n { title: 'Previous CPL', field: 'cpl_prev', sortable: true, pipe: 'Currency', pipeArgs: ['USD', 'symbol', '1.2-2'] },\n { title: 'CPL Change', field: 'cpl_compare', sortable: true, pipe: 'PercentPipe', statusClass: 'cpl_updown' },\n // { title: 'DMS', field: 'dms', sortable: true, searchable: true },\n ]\n\n defaultGoogleColumns = [\n ...this.defaultColumns,\n { title: 'Impr.', field: 'impressions', sortable: true, pipe: 'NumberPipe', hoverValue: 'impressions_prev' },\n { title: 'Impr. Change', field: 'impressions_compare', sortable: true, pipe: 'PercentPipe', statusClass: 'impressions_updown' },\n { title: 'CPC', field: 'cpc', sortable: true, pipe: 'Currency', pipeArgs: ['USD', 'symbol', '1.2-2'], hoverValue: 'cpc_prev' },\n { title: 'CPC Change', field: 'cpc_compare', sortable: true, pipe: 'PercentPipe', statusClass: 'cpc_updown' },\n ...this.defaultAfterColumns\n ];\n defaultMetaColumns = [\n ...this.defaultColumns,\n { title: 'CPM', field: 'cpm', sortable: true, pipe: 'Currency', pipeArgs: ['USD', 'symbol', '1.2-2'], hoverValue: 'cpm_prev' },\n { title: 'CPM Change', field: 'cpm_compare', sortable: true, pipe: 'PercentPipe', statusClass: 'cpm_updown' },\n ...this.defaultAfterColumns\n ];\n\n defaultPageSize = 10;\n\n constructor(\n private router: Router,\n private appService: AppService, \n private reportsApiService: ReportsApiService,\n private fb: FormBuilder,\n private dataFeedService: DataFeedService\n ) {\n this.reportForm = this.fb.group({\n key: [null, [Validators.required]],\n startDate: [null, [Validators.required]],\n stopDate: [null, [Validators.required]],\n companySelector: [null, [Validators.required]]\n });\n this.campaignsData = new Array<any>();\n }\n\n ngOnInit(): void {\n this.appService.setPageTitle$('Brand Dashboard');\n this.doWhat = this.appService.getUserRolesForPage(PAGE_NAMES.Reports);\n\n this.appService.getActiveUser$()\n .pipe(takeUntil(this.destroyed$))\n .subscribe(u => {\n this.isExternal = u.type === ROLES_TYPE.External;\n this.isCompanyOwner = u.roles.some(r => r.code === 5);\n const r = getRolesForPage(u.roles, PAGE_NAMES.Reports);\n this.isAdmin = r.isAdmin;\n this.roleOptions = r.options ? JSON.parse(r.options ?? '{}') : {};\n });\n\n this.getAssociatedCompanies(); \n this.getSupportedReportingPeriods().then(() => {\n this.setPreviousMonthPeriod();\n });\n // console.log('this.campaignsData', this.campaignsData);\n }\n\n setPreviousMonthPeriod() {\n const previousMonthPeriod = this.reportPeriods.find(period => period.key === 'Previous Month');\n if (previousMonthPeriod) {\n this.DateStart = previousMonthPeriod.startDate;\n this.DateStop = previousMonthPeriod.stopDate;\n this.selectedPeriod = previousMonthPeriod.key ?? null;\n\n this.reportForm.patchValue({\n key: this.selectedPeriod,\n startDate: this.DateStart,\n stopDate: this.DateStop,\n });\n }\n }\n\n getSupportedReportingPeriods(): Promise<void> {\n return new Promise((resolve, reject) => {\n this.reportsApiService.getSupportedReportingPeriods()\n .pipe(takeUntil(this.destroyed$))\n .subscribe((response: Array<IReportingPeriod>) => {\n this.reportPeriods = response;\n resolve();\n }, reject);\n });\n }\n onReportPeriodChange(selectedPeriod: string) {\n let period = this.reportPeriods.find(f => f.key == selectedPeriod);\n this.DateStart = period?.startDate as string;\n this.DateStop = period?.stopDate as string;\n\n this.reportForm.patchValue({\n key: selectedPeriod,\n startDate: this.DateStart,\n stopDate: this.DateStop,\n });\n }\n get selectedReportPeriod(): string | undefined | null { return this.reportForm?.controls?.key?.value; }\n get datesReadonly(): boolean { return !(this.selectedReportPeriod == 'Custom'); }\n\n getAssociatedCompanies() {\n if (this.isExternal) {\n this.dataFeedService.getAssociatedCompanies()\n .subscribe(res => {\n // Remove duplicate companies based on id\n const uniqueCompanies = res.data.filter((company: ICompany, index: number, self: ICompany[]) =>\n index === self.findIndex((c: ICompany) => c.id === company.id)\n );\n\n // Sort companies alphabetically by name\n this.companiesData = [...uniqueCompanies].sort((a, b) => a.name.localeCompare(b.name));\n \n // If only one company\n if (this.companiesData.length === 1) {\n if (this.companiesData[0].id) {\n this.selectedCompanyId = this.companiesData[0].id;\n this.reportForm.patchValue({ companySelector: this.selectedCompanyId });\n }\n }\n });\n\n if (!this.isCompanyOwner) {\n // Marketing Manager only\n this.appService.getAllCampaigns$()\n .pipe(takeUntil(this.destroyed$))\n .subscribe((response: {good:boolean; data:Array<any>; totalCount:number}) => {\n this.campaignsData = response.data;\n });\n this.appService.fetchAllCampaigns({});\n }\n } else {\n this.appService.getAllCompanies$()\n .pipe(takeUntil(this.destroyed$)\n )\n .subscribe((response: Array<ICompany>) => {\n // Remove duplicate companies based on id\n const uniqueCompanies = response.filter((company: ICompany, index: number, self: ICompany[]) =>\n index === self.findIndex((c: ICompany) => c.id === company.id)\n );\n\n // Sort companies alphabetically by name\n this.companiesData = [...uniqueCompanies].sort((a, b) => a.name.localeCompare(b.name));\n });\n this.appService.fetchAllCompanies(null);\n }\n }\n\n updateReport() {\n if (this.reportForm.invalid) {\n this.reportForm.markAllAsTouched(); // Mark all controls as touched to trigger validation\n return;\n }\n this.DateStart = this.reportForm.get('startDate')?.value;\n this.DateStop = this.reportForm.get('stopDate')?.value;\n this.selectedPeriod = this.reportForm.get('key')?.value;\n\n // Update selectedCompanyId from the form control value\n this.selectedCompanyId = this.reportForm.get('companySelector')?.value;\n\n this.loading = true;\n this.updateData(this.selectedCompanyId).finally(() => {\n this.loading = false;\n });\n }\n\n async updateData(companyId: string) {\n const company = this.companiesData.find(c => c.id === companyId);\n if (company && this.DateStart && this.DateStop) {\n const currentStartDate = new Date(this.DateStart);\n const currentEndDate = new Date(this.DateStop);\n\n try {\n const meta = await this.fetchDataJson('meta', company.name, currentStartDate.toISOString().split('T')[0], currentEndDate.toISOString().split('T')[0]);\n this.companyMetaData = [];\n this.companyMetaTotals = [];\n this.companyMetaAverages = [];\n\n if (this.isExternal && !this.isCompanyOwner) {\n // Marketing Manager\n for (const key in meta) {\n if (key === 'totals') {\n continue;\n } else if (key === 'averages') {\n continue;\n } else {\n // Only push if reach_campaign_id matches one of the ids in this.campaignsData\n if (this.campaignsData.some(campaign => campaign.id === meta[key].reach_campaign_id)) {\n this.companyMetaData.push(meta[key]);\n }\n }\n }\n this.companyTempTotals = { cost: 0, leads: 0, impressions: 0 };\n for (const key in this.companyMetaData) { \n const cost = Number(this.companyMetaData[key].cost) || 0;\n const leads = Number(this.companyMetaData[key].leads) || 0;\n const impressions = Number(this.companyMetaData[key].impressions) || 0;\n\n this.companyTempTotals['cost'] += cost;\n this.companyTempTotals['leads'] += leads;\n this.companyTempTotals['impressions'] += impressions;\n }\n this.companyMetaTotals = [{ location: 'Total', ...this.companyTempTotals }];\n } else {\n for (const key in meta) {\n if (key === 'totals') {\n this.companyMetaTotals.push(meta[key]);\n } else if (key === 'averages') {\n this.companyMetaAverages.push(meta[key]);\n } else {\n this.companyMetaData.push(meta[key]);\n }\n }\n }\n // console.log('this.companyMetaData', this.companyMetaData);\n // console.log('this.companyMetaTotals', this.companyMetaTotals);\n // console.log('this.companyMetaAverages', this.companyMetaAverages);\n\n const google = await this.fetchDataJson('google', company.name, currentStartDate.toISOString().split('T')[0], currentEndDate.toISOString().split('T')[0]);\n this.companyGoogleData = [];\n this.companyGoogleTotals = [];\n this.companyGoogleAverages = [];\n\n if (this.isExternal && !this.isCompanyOwner) {\n // Marketing Manager\n for (const key in google) {\n if (key === 'totals') {\n continue;\n } else if (key === 'averages') {\n continue;\n } else {\n // Only push if reach_campaign_id matches one of the ids in this.campaignsData\n if (this.campaignsData.some(campaign => campaign.id === google[key].reach_campaign_id)) {\n this.companyGoogleData.push(google[key]);\n }\n }\n }\n this.companyTempTotals = { cost: 0, leads: 0, impressions: 0 };\n for (const key in this.companyGoogleData) { \n const cost = Number(this.companyGoogleData[key].cost) || 0;\n const leads = Number(this.companyGoogleData[key].leads) || 0;\n const impressions = Number(this.companyGoogleData[key].impressions) || 0;\n\n this.companyTempTotals['cost'] += cost;\n this.companyTempTotals['leads'] += leads;\n this.companyTempTotals['impressions'] += impressions;\n }\n this.companyGoogleTotals = [{ location: 'Total', ...this.companyTempTotals }];\n } else {\n for (const key in google) {\n if (key === 'totals') {\n this.companyGoogleTotals.push(google[key]);\n } else if (key === 'averages') {\n this.companyGoogleAverages.push(google[key]);\n } else {\n this.companyGoogleData.push(google[key]);\n }\n }\n }\n // console.log('this.companyGoogleData', this.companyGoogleData);\n // console.log('this.companyGoogleTotals', this.companyGoogleTotals);\n // console.log('this.companyGoogleAverages', this.companyGoogleAverages);\n } catch (error) {\n console.error('Error updating data:', error);\n }\n }\n }\n\n fetchDataJson(platform: string, companyName: string, startDate: string, endDate: string): Promise<{ [key: string]: string }[]> {\n const url = `https://dms.reach.marketing/dmm/cmo-reach.php?company=${companyName}&start-date=${startDate}&end-date=${endDate}&platform=${platform}`;\n \n return fetch(url)\n .then(response => response.json())\n .then(data => {\n // const arrayData = Object.keys(data).map(key => data[key]);\n // console.log('Array data:', arrayData);\n return data;\n })\n .catch(error => {\n console.error('Error fetching JSON data:', error);\n return [];\n });\n }\n\n getActiveCompanyName(): string {\n const company = this.companiesData.find(c => c.id === this.selectedCompanyId);\n return company ? company.name : '';\n }\n\n ngOnDestroy(): void {\n this.destroyed$.next(true);\n this.destroyed$.complete();\n }\n}","<div class=\"container-fluid p-3\">\n <div class=\"col-12\">\n <div class=\"reportFrame\">\n <div class=\"formFrame\">\n <div class=\"reportForm\">\n <form [formGroup]=\"reportForm\" (ngSubmit)=\"updateReport()\">\n <!-- Show selector if there are multiple companies -->\n <ng-container *ngIf=\"companiesData.length > 1; else singleCompany\">\n <div class=\"form groupHeader\">\n <label>Select Company:</label>\n </div>\n <div class=\"form dropdown\">\n <select class=\"form-select mb-2\" aria-label=\"Please select a Company\" formControlName=\"companySelector\" [ngClass]=\"{ 'is-invalid': reportForm.controls.companySelector.touched && reportForm.controls.companySelector.errors }\">\n <option value=\"\" disabled selected>Please select a Company</option>\n <option *ngFor=\"let company of companiesData\" [value]=\"company.id\">\n {{ company.name }}\n </option>\n </select>\n <div *ngIf=\"reportForm.controls.companySelector.touched && reportForm.controls.companySelector.errors\" class=\"invalid-feedback\">\n <div *ngIf=\"reportForm.controls.companySelector.errors.required\">Please select a Company.</div>\n </div>\n </div>\n </ng-container>\n <ng-template #singleCompany>\n <input type=\"hidden\" formControlName=\"companySelector\" [value]=\"selectedCompanyId\">\n </ng-template>\n\n <div>\n <div class=\"formGroup dateSelect\">\n <div class=\"form groupHeader\">\n <label>Please select report period:</label>\n </div>\n <div class=\"form dropdown\">\n <select class=\"form-select mb-2\" aria-label=\"Please select period.\" (change)=\"onReportPeriodChange(t.value)\" #t>\n <option selected disabled>Please select period.</option>\n <option type=\"button\" ngbDropdownItem *ngFor=\"let p of reportPeriods\" [selected]=\"selectedPeriod==p.key\">\n {{ p.key }}\n </option>\n </select>\n </div>\n <div class=\"dateRange\">\n <div class=\"form dateInput\">\n <label class=\"sr-only\" for=\"startDate\">Start</label>\n <input type=\"date\" [readonly]=\"datesReadonly\" formControlName=\"startDate\"\n class=\"form-control form-date date-custom\" [ngClass]=\"{ 'is-invalid': reportForm.controls.startDate.errors }\" />\n <div *ngIf=\"reportForm.controls.startDate.errors\" class=\"invalid-feedback\">\n <div *ngIf=\"reportForm.controls.startDate.errors.required\">Please select period.</div>\n </div>\n </div>\n\n <div class=\"form dateInput\">\n <span style=\"margin: 0 6px;\">—</span>\n </div>\n\n <div class=\"form dateInput\">\n <label class=\"sr-only\" for=\"stopDate\">End</label>\n <input type=\"date\" [readonly]=\"datesReadonly\" formControlName=\"stopDate\"\n class=\"form-control form-date date-custom\" [ngClass]=\"{ 'is-invalid': reportForm.controls.stopDate.errors }\" />\n <div *ngIf=\"reportForm.controls.stopDate.errors\" class=\"invalid-feedback\">\n <div *ngIf=\"reportForm.controls.stopDate.errors.required\">Please select period.</div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"formGroup\">\n <div class=\"form submit\">\n <button type=\"submit\" class=\"btn btn-primary mb-2\">Update</button>\n </div>\n </div>\n </div>\n </form>\n </div>\n </div>\n <div class=\"reportData\">\n <ng-container *ngIf=\"loading; else dataContent\">\n <div class=\"loading\">\n <div class=\"la-ball-spin-clockwise la-2x\">\n <div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div>\n </div>\n </div>\n </ng-container>\n <ng-template #dataContent>\n <ng-container *ngIf=\"companyMetaData.length || companyGoogleData.length\">\n <h2>{{ getActiveCompanyName() }}</h2>\n <strong>These numbers are for quick reference and can differ slightly from the live dashboard reports.</strong>\n <br>\n <em>*Monthly budget is an estimate, calculated based on the spend over the date range selected.</em>\n <ul style=\"margin-top: 1em;\" class=\"nav nav-tabs\" id=\"reportTabs\" role=\"tablist\">\n <li class=\"nav-item active\" id=\"meta-data-tab\" (click)=\"activeTab = 'meta'\" [class.active]=\"activeTab === 'meta'\" role=\"tab\" aria-controls=\"meta-data\" aria-selected=\"true\">\n <a class=\"nav-link\">Meta</a>\n </li>\n <li class=\"nav-item\" id=\"google-data-tab\" (click)=\"activeTab = 'google'\" [class.active]=\"activeTab === 'google'\" role=\"tab\" aria-controls=\"google-data\" aria-selected=\"false\" style=\"margin-left: -10px;\">\n <a class=\"nav-link\">Google</a>\n </li>\n </ul>\n <div class=\"tab-content\" id=\"reportTabsContent\">\n <div class=\"tab-pane fade\" [class.show]=\"activeTab === 'meta'\" [class.active]=\"activeTab === 'meta'\" id=\"meta-data\" role=\"tabpanel\" aria-labelledby=\"meta-data-tab\">\n <div style=\"padding-top: 10px;\">\n <app-report-datatable \n [iSortColumn]=\"'campaign_name'\"\n [iSortDirection]=\"'asc'\"\n [iColumns]=\"defaultMetaColumns\" \n [iData$]=\"companyMetaData\"\n [iTotalCount]=\"companyMetaData.length\"\n [iShowFooter]=\"companyMetaData.length > defaultPageSize\"\n [iPageSize]=\"defaultPageSize\"\n [iTotalData]=\"companyMetaTotals\"\n [iAverageData]=\"companyMetaAverages\"\n [iReportTitle]=\"'meta'\"\n >\n </app-report-datatable>\n </div>\n </div>\n <div class=\"tab-pane fade\" [class.show]=\"activeTab === 'google'\" [class.active]=\"activeTab === 'google'\" id=\"google-data\" role=\"tabpanel\" aria-labelledby=\"google-data-tab\">\n <div style=\"padding-top: 10px;\">\n <app-report-datatable \n [iSortColumn]=\"'campaign_name'\"\n [iSortDirection]=\"'asc'\"\n [iColumns]=\"defaultGoogleColumns\" \n [iData$]=\"companyGoogleData\"\n [iTotalCount]=\"companyGoogleData.length\"\n [iShowFooter]=\"companyGoogleData.length > defaultPageSize\"\n [iPageSize]=\"defaultPageSize\"\n [iTotalData]=\"companyGoogleTotals\"\n [iAverageData]=\"companyGoogleAverages\"\n [iReportTitle]=\"'google'\"\n >\n </app-report-datatable>\n </div>\n </div>\n </div>\n </ng-container>\n </ng-template>\n\n </div>\n </div>\n </div>\n</div>","import { Component, OnInit } from '@angular/core';\nimport { Location } from '@angular/common';\nimport { ReplaySubject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { PAGE_NAMES, ROLES, ROLES_TYPE } from '../../../core/helpers/constants';\nimport { getRolesForPage } from '../../../core/helpers/utility';\nimport { IPermission } from '../../../core/models/auth.models';\nimport { AppService } from '../../../store/app.service';\nimport { Router } from '@angular/router';\n\n@Component({\n selector: 'app-reports-main',\n templateUrl: './reports-main.component.html',\n styleUrls: ['./reports-main.component.scss']\n})\nexport class ReportsMainComponent implements OnInit {\n doWhat: IPermission = {} as IPermission;\n\n roleOptions: any = {};\n isAdmin: boolean = false;\n public userRoles: Array<any> = [];\n isExternal: boolean = false;\n hasRollupReportsAccess = false;\n hasBrandDashboardAccess = false;\n\n private rollupReportsRoles: Array<any>\n = [ROLES.Admin, ROLES.DMS, ROLES.TechServices, ROLES.ShopManager, ROLES.SalesRep, ROLES.Staff, ROLES.CompanyOwner, ROLES.MarketingManager, ROLES.ClientOwner];\n\n private brandDashboardRoles: Array<any>\n = [ROLES.Admin, ROLES.DMS, ROLES.TechServices, ROLES.ShopManager, ROLES.SalesRep, ROLES.Staff, ROLES.CompanyOwner, ROLES.MarketingManager];\n\n active: any = \"\";\n tabs = ['campaign-report', 'rollup-report', 'weekly-reports', 'brand-report'];\n\n private destroyed$: ReplaySubject<boolean> = new ReplaySubject(1);\n constructor(private appService: AppService, private location: Location, private activatedRoute: Router,) {\n this.userRoles = this.appService.getActiveUserRoles$().value\n }\n\n ngOnInit(): void {\n this.appService.setPageTitle$('Dashboard');\n this.appService.getActiveUser$()\n .pipe(takeUntil(this.destroyed$))\n .subscribe(u => {\n this.isExternal = u.type == ROLES_TYPE.External\n var r = getRolesForPage(u.roles, PAGE_NAMES.Reports);\n this.isAdmin = r.isAdmin;\n if (r.options)\n this.roleOptions = JSON.parse(r.options!);\n });\n\n const urlSnapshot = this.activatedRoute;\n const found = this.tabs.filter(e => urlSnapshot.url.includes(e));\n if (found.length >= 1) {\n const url = found[0];\n const tabIndex = this.tabs.findIndex(x => x.toLowerCase() === url.toLowerCase());\n if (tabIndex > -1) {\n this.active = (tabIndex + 1);\n }\n }\n\n if (!this.active) {\n // console.log('no active.');\n this.active = 1;\n } \n\n this.hasRollupReportsAccess = this.userRoles.some(r => this.rollupReportsRoles.some(w => w.Code == r.code)); \n this.hasBrandDashboardAccess = this.userRoles.some(r => this.brandDashboardRoles.some(w => w.Code == r.code)); \n }\n\n\n onTabChange(event: number) {\n // console.log(event);\n const tabIndex = event - 1;\n this.location.go('/pages/reports/' + this.tabs[tabIndex]);\n }\n\n navigateTo(tab: string) {\n this.activatedRoute.navigate(['/pages/reports', tab]);\n }\n}","<div class=\"dv-custom-navs\">\n <ul ngbNav #nav=\"ngbNav\" [(activeId)]=\"active\" class=\"nav-tabs\" (activeIdChange)=\"onTabChange($event)\">\n <li [ngbNavItem]=\"1\" [ngStyle]=\"{'z-index' : (active === 1) ? '5' : '0'}\">\n <a ngbNavLink (click)=\"navigateTo('campaign-report')\">\n <i-feather name=\"check\"></i-feather><label>Campaign Report</label>\n </a>\n </li>\n <li [ngbNavItem]=\"2\"[ngStyle]=\"{'z-index' : (active === 2) ? '5' : '0', 'left': '-15px'}\">\n <a ngbNavLink (click)=\"navigateTo('rollup-report')\">\n <i-feather name=\"file-text\"></i-feather><label>Rollup Report</label>\n </a>\n </li>\n <li [ngbNavItem]=\"3\" *ngIf=\"isAdmin\" [ngStyle]=\"{'z-index' : (active === 3) ? '5' : '0', 'left': '-30px'}\">\n <a ngbNavLink (click)=\"navigateTo('weekly-reports')\">\n <i-feather name=\"file-text\"></i-feather><label>Weekly Reports</label>\n </a>\n </li>\n <li [ngbNavItem]=\"4\" *ngIf=\"hasBrandDashboardAccess\" [ngStyle]=\"{'z-index' : (active === 4) ? '5' : '0', 'left': '-30px'}\">\n <a ngbNavLink (click)=\"navigateTo('brand-report')\">\n <i-feather name=\"file-text\"></i-feather><label>Brand Dashboard</label>\n </a>\n </li>\n </ul>\n \n <!-- Router outlet for displaying selected tab's component -->\n <router-outlet></router-outlet>\n</div>","import { DatePipe } from '@angular/common';\nimport { Component, OnInit } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators, FormControl } from '@angular/forms';\nimport { Router, ActivatedRoute } from '@angular/router';\nimport { ReplaySubject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport Swal from 'sweetalert2';\nimport { environment } from '../../../../environments/environment';\nimport { PAGE_NAMES } from '../../../core/helpers/constants';\nimport { IPermission } from '../../../core/models/auth.models';\nimport { ICampaign } from '../../../core/models/campaigns.model';\nimport { IReportingPeriod } from '../../../core/models/reporting.models';\nimport { AppService } from '../../../store/app.service';\nimport { ReportsApiService } from '../reports.apiservice';\n\n@Component({\n selector: 'app-reports-raw-campaigns-data',\n templateUrl: './reports-raw-campaigns-data.component.html',\n styleUrls: ['./reports-raw-campaigns-data.component.scss']\n})\nexport class ReportsRawCampaignsDataComponent implements OnInit {\n doWhat: IPermission = {} as IPermission;\n columns = [\n { title: 'Name', field: 'name', sortable: true, searchable: true },\n { title: 'Client', field: 'clientName', sortable: true, searchable: true },\n { title: 'Platform', field: 'platform', sortable: true, searchable: true },\n { title: 'DMS', field: 'dmsName', sortable: true, searchable: true },\n { title: 'Stage', field: 'stageId', sortable: true, pipe: 'P_CampaignStageTitle', searchable: true },\n { title: 'Active Subscription', field: 'subscriptionActive', pipe: 'P_Boolean', searchable: true },\n ]\n campaignsData: Array<ICampaign>\n private destroyed$: ReplaySubject<boolean> = new ReplaySubject(1);\n constructor(\n private router: Router,\n private route: ActivatedRoute,\n private appService: AppService,\n private fb: FormBuilder,\n private reportsService: ReportsApiService,) {\n this.campaignsData = new Array<ICampaign>();\n }\n\n reportForm: FormGroup = this.fb.group({\n key: [null, [Validators.required]],\n startDate: [null, [Validators.required]],\n stopDate: [null, [Validators.required]],\n });\n get startDate() { return this.reportForm.get('startDate') as FormControl; }\n get stopDate() { return this.reportForm.get('stopDate') as FormControl; }\n\n ngOnInit(): void {\n this.appService.setPageTitle$('Reports');\n this.doWhat = this.appService.getUserRolesForPage(PAGE_NAMES.Reports);\n this.appService.getAllCampaigns$()\n .pipe(takeUntil(this.destroyed$)\n )\n .subscribe((response: Array<ICampaign>) => {\n this.campaignsData = [...response];\n this.campaignsData = this.campaignsData.filter(f => f.platform == 'Google');\n this.campaignsData = this.campaignsData.filter(f => f.platformAccountId || f.platformCampaignId);\n });\n const savedSearchId = this.route.snapshot.queryParams['savedsearchid'];\n this.appService.fetchAllCampaigns({ SavedSearchId: savedSearchId });\n\n this.getSupportedReportingPeriods();\n }\n\n viewReportOnNewTab(evt: any) {\n this.validateFormAndOpen(evt, true);\n }\n\n reportformsubmitted = false;\n DateStart = '' as string | null;\n DateStop = '' as string | null;\n validateFormAndOpen(evt: any, isExternal: boolean): void {\n this.reportformsubmitted = true;\n if (this.reportForm.invalid)\n return;\n\n if (this.reportForm.touched == true) {\n this.DateStart = this.startDate.value;\n this.DateStop = this.stopDate.value;\n }\n\n let campaign = this.campaignsData.find(f => f.id == evt.id);\n\n let AccountID = campaign?.platformAccountId;\n let CampaignID = campaign?.platformCampaignId;\n let Platform = campaign?.platform;\n\n if (AccountID) AccountID = AccountID.replace(/\\ /g, '').replace(/\\-/g, '');\n\n let params = { accountId: AccountID, campaignId: CampaignID, platform: Platform, dateStart: this.DateStart, dateStop: this.DateStop };\n // console.log(this.DateStart, this.DateStop);\n // console.log(this.reportForm);\n if (AccountID || CampaignID) {\n if (isExternal) {\n const url = this.router.serializeUrl(\n this.router.createUrlTree(['/', 'dashboard', 'raw-campaigns-data'], { queryParams: params })\n );\n window.open(environment.apiBaseUrl + url, '_blank');\n }\n else {\n this.router.navigate(['/', 'dashboard', 'raw-campaigns-data'], { queryParams: params });\n }\n }\n else {\n Swal.fire(\n 'Cannot view report!',\n 'Please update selected campaign and set either platform campaign/account id.',\n 'error'\n )\n }\n }\n\n reportPeriods: Array<IReportingPeriod> = [];\n getSupportedReportingPeriods() {\n this.reportsService.getSupportedReportingPeriods()\n .pipe(takeUntil(this.destroyed$))\n .subscribe((response: Array<IReportingPeriod>) => {\n // console.log(response);\n this.reportPeriods = response;\n\n this.onReportPeriodChange(\"Past Week\");\n });\n }\n\n get selectedReportPeriod(): string | undefined | null { return this.reportForm?.controls?.key?.value; }\n get datesReadonly(): boolean { return !(this.selectedReportPeriod == 'Custom'); }\n onReportPeriodChange(selectedPeriod: string) {\n let period = this.reportPeriods.find(f => f.key == selectedPeriod);\n\n // console.log(period);\n\n this.DateStart = period?.startDate as string;\n this.DateStop = period?.stopDate as string;\n\n this.reportForm = this.fb.group({\n key: [selectedPeriod, [Validators.required]],\n startDate: [this.DateStart, [Validators.required]],\n stopDate: [this.DateStop, [Validators.required]],\n });\n }\n}","<form [formGroup]=\"reportForm\">\n <div class=\"row g-3 align-items-center\">\n <div class=\"col-auto\">\n <label class=\"mb-2\">Please select report period:</label>\n </div>\n <div class=\"col-auto\">\n <select class=\"form-select mb-2\" aria-label=\"Please select period.\" (change)=\"onReportPeriodChange(t.value)\"\n #t>\n <option selected disabled>Please select period.</option>\n <option type=\"button\" ngbDropdownItem *ngFor=\"let p of reportPeriods\"\n [selected]=\"selectedReportPeriod==p.key\">\n {{ p.key }}\n </option>\n </select>\n </div>\n <div class=\"col-auto\">\n <label class=\"sr-only\" for=\"startDate\">Start</label>\n <input type=\"date\" [readonly]=\"datesReadonly\" formControlName=\"startDate\"\n class=\"form-control form-date date-custom mb-2\"\n [ngClass]=\"{ 'is-invalid': reportformsubmitted && reportForm.controls.startDate.errors }\" />\n\n <div *ngIf=\"reportformsubmitted && reportForm.controls.startDate.errors\" class=\"invalid-feedback\">\n <div *ngIf=\"reportForm.controls.startDate.errors.required\">Please select period.</div>\n </div>\n </div>\n <div class=\"col-auto\">\n <label class=\"mb-2\">-</label>\n </div>\n <div class=\"col-auto\">\n <label class=\"sr-only\" for=\"stopDate\">End</label>\n <input type=\"date\" [readonly]=\"datesReadonly\" formControlName=\"stopDate\"\n class=\"form-control form-date date-custom mb-2\"\n [ngClass]=\"{ 'is-invalid': reportformsubmitted && reportForm.controls.stopDate.errors }\"\n formControlName=\"stopDate\" />\n <div *ngIf=\"reportformsubmitted && reportForm.controls.stopDate.errors\" class=\"invalid-feedback\">\n <div *ngIf=\"reportForm.controls.stopDate.errors.required\">Please select period.</div>\n </div>\n </div>\n </div>\n</form>\n<br/>\n<h4>Will open a new tab to display raw campaigns data.</h4>\n<app-special-datatable [iCanRead]=\"doWhat.canRead\" [iCanWrite]=\"doWhat.canWrite\" [iCanDelete]=\"doWhat.canDelete\"\n [iColumns]=\"columns\" [iData$]=\"campaignsData\" [iShowActions]=\"true\" [iShowExternalAction]=\"true\"\n [iShowExport]=\"false\" [iShowSelect]=\"false\" [iShowEditAction]=\"false\"\n [iShowDeleteAction]=\"false\" (oShowExternal)=\"viewReportOnNewTab($event)\">\n</app-special-datatable>","import { Component, OnInit } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators, FormControl } from '@angular/forms';\nimport { Router, ActivatedRoute } from '@angular/router';\nimport { Location } from '@angular/common';\nimport { BehaviorSubject, ReplaySubject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { PAGE_NAMES } from '../../../core/helpers/constants';\nimport { createEmptyGuid } from '../../../core/helpers/utility';\nimport { IPermission } from '../../../core/models/auth.models';\nimport { ICampaign } from '../../../core/models/campaigns.model';\nimport { ICompany } from '../../../core/models/datafeed.models';\nimport { IReportingPeriod } from '../../../core/models/reporting.models';\nimport { DataFeedService } from '../../../shared/api/datafeed.service';\nimport { AppService } from '../../../store/app.service';\nimport { ReportsApiService } from '../reports.apiservice';\nimport { IRollupReportDataResponse } from '../../../core/models/reports.models';\nimport { environment } from '../../../../environments/environment';\n\n@Component({\n selector: 'app-reports-rollup-company-main',\n templateUrl: './reports-rollup-company-main.component.html',\n styleUrls: ['./reports-rollup-company-main.component.scss']\n})\nexport class ReportsRollupCompanyCampaignsComponent implements OnInit {\n doWhat: IPermission = {} as IPermission;\n\n bShowSelect$ = new BehaviorSubject(false);\n\n companyData = {} as ICompany;\n platforms: Array<string> = [];\n\n columns = [\n { title: 'Name', field: 'name', sortable: true, searchable: true },\n // { title: 'Client', field: 'clientName', sortable: true, searchable: true },\n { title: 'Platform', field: 'platform', sortable: true, searchable: true },\n { title: 'DMS', field: 'dmsName', sortable: true, searchable: true },\n { title: 'Stage', field: 'stageId', sortable: true, pipe: 'P_CampaignStageTitle', searchable: true },\n { title: 'Active Subscription', field: 'subscriptionActive', pipe: 'P_Boolean', searchable: true },\n ]\n campaignsData: Array<ICampaign> = [];\n filteredCampaignsData = new BehaviorSubject<Array<ICampaign>>([]);\n private destroyed$: ReplaySubject<boolean> = new ReplaySubject(1);\n\n constructor(\n private router: Router,\n private route: ActivatedRoute,\n private appService: AppService,\n private fb: FormBuilder,\n private reportsService: ReportsApiService,\n private dataFeedService: DataFeedService,\n private location: Location,) {\n }\n\n reportForm: FormGroup = this.fb.group({\n key: [null, [Validators.required]],\n startDate: [null, [Validators.required]],\n stopDate: [null, [Validators.required]],\n platforms: ['All', [Validators.required]],\n reportFormat: ['html', [Validators.required]],\n aggregation: ['All', [Validators.required]],\n });\n get key() { return this.reportForm.get('key') as FormControl; }\n get startDate() { return this.reportForm.get('startDate') as FormControl; }\n get stopDate() { return this.reportForm.get('stopDate') as FormControl; }\n get formPlatforms() { return this.reportForm.get('platforms') as FormControl; }\n get reportFormat() { return this.reportForm.get('reportFormat') as FormControl; }\n get aggregation() { return this.reportForm.get('aggregation') as FormControl; }\n\n companyId = '';\n ngOnInit(): void {\n this.appService.setPageTitle$('Rollup Report');\n this.appService.setActivePage$(PAGE_NAMES.Reports);\n \n this.doWhat = this.appService.getUserRolesForPage(PAGE_NAMES.Reports);\n\n let id = this.route.snapshot.paramMap.get('id');\n if (id) {\n this.companyId = id;\n this.getCompanyData(id);\n this.getCompanyAssociatedCampaigns(id);\n }\n this.getSupportedReportingPeriods();\n\n let orderId = this.route.snapshot.paramMap.get('orderId');\n // console.log('orderId: ', orderId);\n if (orderId) {\n this.GetRollupReportDataResponse(orderId);\n }\n }\n\n getCompanyData(id: string) {\n if (!this.isEmptyCompanyGuid) {\n this.dataFeedService.getCompanyData(id)\n .pipe(takeUntil(this.destroyed$))\n .subscribe((response: any) => {\n // console.log(response);\n this.companyData = response.data;\n });\n }\n }\n\n getCompanyAssociatedCampaigns(id: string) {\n this.dataFeedService.getCompanyAssociatedCampaigns(id)\n .pipe(takeUntil(this.destroyed$))\n .subscribe((response: any) => {\n // console.log(response);\n this.campaignsData = [...response.data];\n this.campaignsData = this.campaignsData.filter(f => f.campaignAdAccounts.length > 0);\n\n this.platforms = Array.from(new Set(this.campaignsData.map(item => item.platform)));\n this.applyPlatformFilterOnCampaigns('All');\n });\n }\n\n applyPlatformFilterOnCampaigns(platform: string) {\n if (platform.toLowerCase() == 'all') {\n this.filteredCampaignsData.next(this.campaignsData);\n }\n else {\n let filtered = this.campaignsData\n .filter(f => f.platform.toLowerCase() == platform.toLowerCase())\n this.filteredCampaignsData.next(filtered);\n }\n }\n\n reportPeriods: Array<IReportingPeriod> = [];\n getSupportedReportingPeriods() {\n this.reportsService.getSupportedReportingPeriods()\n .pipe(takeUntil(this.destroyed$))\n .subscribe((response: Array<any>) => {\n // console.log(response); \n this.reportPeriods = response as Array<IReportingPeriod>;\n\n // console.log(this.reportPeriods);\n this.onReportPeriodChange(\"Past Week\");\n });\n }\n\n reportformsubmitted = false;\n DateStart = '' as string | undefined | null;\n DateStop = '' as string | undefined | null;\n get selectedReportPeriod(): string | undefined | null { return this.reportForm?.controls?.key?.value; }\n get datesReadonly(): boolean { return !(this.selectedReportPeriod == 'Custom'); }\n onReportPeriodChange(selectedPeriod: string) {\n let period = this.reportPeriods.find(f => f.key == selectedPeriod);\n this.DateStart = period?.startDate;\n this.DateStop = period?.stopDate;\n\n this.key.setValue(selectedPeriod);\n this.startDate.setValue(this.DateStart);\n this.stopDate.setValue(this.DateStop);\n\n this.active = 1;\n }\n\n handleAggregateChange($event: any, val: boolean) {\n var target = $event.target;\n if (target.checked) {\n this.bShowSelect$.next(val);\n this.active = 1;\n }\n }\n\n handlePlatformsChange($event: any, val: string) {\n var target = $event.target;\n if (target.checked) {\n this.applyPlatformFilterOnCampaigns(val);\n this.active = 1;\n }\n }\n\n handleReportFormatChange($event: any, val: string) {\n var target = $event.target;\n if (target.checked && this.active == 3) {\n this.active = 2;\n }\n }\n\n\n get isEmptyCompanyGuid() {\n return this.companyId == createEmptyGuid();\n }\n\n manuallySelectedCampaigns = [] as Array<string>;\n onSelectCheckboxChange(payload: { data: ICampaign, evt: Event }) {\n let target = payload.evt.target as HTMLInputElement\n let campaign = payload.data;\n\n if (target.checked) {\n this.manuallySelectedCampaigns.push(campaign.id);\n }\n else {\n while (this.manuallySelectedCampaigns.indexOf(campaign.id) >= 0) {\n this.manuallySelectedCampaigns.splice(this.manuallySelectedCampaigns.indexOf(campaign.id), 1);\n }\n }\n // console.log(campaign.id);\n // console.log(target.checked);\n // console.log(this.manuallySelectedCampaigns);\n }\n\n dataLoadCompleted = false;\n rollupReportDataResponse: IRollupReportDataResponse | null = null;\n SelectCampaignsError = null as string | null;\n onFormSubmit() {\n this.SelectCampaignsError = null;\n // console.log(this.reportForm.value);\n\n this.reportformsubmitted = true;\n if (this.reportForm.invalid)\n return;\n\n if (this.reportForm.touched == true) {\n this.DateStart = this.startDate.value;\n this.DateStop = this.stopDate.value;\n }\n\n // console.log('this.aggregation.value: ', this.aggregation.value);\n if (this.aggregation.value == 'SelectCampaigns' && this.manuallySelectedCampaigns.length == 0) {\n this.SelectCampaignsError = \"** Please select campaigns.\"\n return;\n }\n\n var campaigns = [] as Array<string>;\n if (this.aggregation.value == 'SelectCampaigns') {\n campaigns = this.manuallySelectedCampaigns;\n }\n else {\n campaigns = [createEmptyGuid()];\n }\n // console.log('campaigns: ', campaigns);\n\n let params = {\n companyId: this.companyId,\n reportFormat: this.reportFormat.value,\n campaigns: campaigns,\n aggregation: this.aggregation.value,\n platforms: this.formPlatforms.value,\n dateStart: this.startDate.value,\n dateStop: this.stopDate.value,\n };\n\n\n var paramsUrl = \"\" + this.router.createUrlTree([''], { queryParams: params });\n paramsUrl = paramsUrl.replace('/', '');\n // console.log(paramsUrl);\n\n this.rollupReportDataResponse = null;\n this.reportsService.startRollupReportProcess(paramsUrl)\n .subscribe(res => {\n this.rollupReportDataResponse = res.data;\n if (this.rollupReportDataResponse?.orderId) {\n this.dataLoadCompleted = false;\n this.active = 2;\n }\n });\n }\n\n GetRollupReportDataResponse(orderId: string) {\n this.reportsService.getRollupReportData(orderId)\n .subscribe(res => {\n if (res?.good && res.data) {\n this.rollupReportDataResponse = res.data;\n this.DataLoadCompleted(true);\n }\n else{\n this.location.go(`/pages/reports/rollup-campaigns/${this.companyId}`);\n }\n });\n }\n\n active: number = 1;\n onTabChange(event: number) {\n // console.log(event); \n // Do Nothing on tab change \n }\n\n DataLoadCompleted(complete: boolean) {\n this.dataLoadCompleted = complete;\n this.active = 3;\n\n this.location.go(`/pages/reports/rollup-report/viewer/${this.companyId}/${this.rollupReportDataResponse?.orderId}`);\n\n // const url = this.router.serializeUrl(\n // this.router.createUrlTree(['/reports/view-rollup-report', this.rollupReportDataResponse?.orderId ?? createEmptyGuid() ])\n // );\n // window.open(url, '_blank');\n }\n\n openHtmlReportNewWindow(){\n if (this.rollupReportDataResponse?.orderId) {\n this.reportsService.getRollupReport(this.rollupReportDataResponse.orderId, 'html')\n .subscribe(responseUrl => {\n window.open(responseUrl);\n });\n }\n }\n\n openPdfReportNewWindow(){\n if (this.rollupReportDataResponse?.orderId) {\n this.reportsService.getRollupReport(this.rollupReportDataResponse.orderId, 'pdf')\n .subscribe(responseUrl => {\n window.open(responseUrl);\n });\n }\n }\n\n get htmlReportUrl() {\n let params = {\n orderId: this.rollupReportDataResponse?.orderId,\n reportFormat: 'html',\n };\n\n var uri = environment.baseUrl + this.router.createUrlTree(['/Dashboard/completed-rollup-report'], { queryParams: params })\n return uri;\n }\n\n get pdfReportUrl() {\n let params = {\n orderId: this.rollupReportDataResponse?.orderId,\n reportFormat: 'pdf',\n };\n\n var uri = environment.baseUrl + this.router.createUrlTree(['/Dashboard/completed-rollup-report'], { queryParams: params })\n return uri;\n }\n\n}","<form [formGroup]=\"reportForm\" (submit)=\"onFormSubmit()\">\n <div *ngIf=\"!isEmptyCompanyGuid\" class=\"row g-3 align-items-center mb-3\">\n <label class=\"col-2 mb-2\">Company Name</label>\n <div class=\"col-8\">{{ companyData.name }}</div>\n </div>\n <div class=\"row g-3 align-items-center mb-3\">\n <label class=\"col-2 mb-2\">Please select report period</label>\n <div class=\"col-auto\">\n <select class=\"form-select mb-2\" aria-label=\"Please select period.\" (change)=\"onReportPeriodChange(t.value)\"\n #t>\n <option selected disabled>Please select period.</option>\n <option type=\"button\" ngbDropdownItem *ngFor=\"let p of reportPeriods\"\n [selected]=\"selectedReportPeriod==p.key\">\n {{ p.key }}\n </option>\n </select>\n </div>\n <div class=\"col-auto\">\n <label class=\"sr-only\" for=\"startDate\">Start</label>\n <input type=\"date\" [readonly]=\"datesReadonly\" formControlName=\"startDate\"\n class=\"form-control form-date date-custom mb-2\"\n [ngClass]=\"{ 'is-invalid': reportformsubmitted && reportForm.controls.startDate.errors }\" />\n\n <div *ngIf=\"reportformsubmitted && reportForm.controls.startDate.errors\" class=\"invalid-feedback\">\n <div *ngIf=\"reportForm.controls.startDate.errors.required\">Please select period.</div>\n </div>\n </div>\n <div class=\"col-auto\">\n <label class=\"mb-2\">-</label>\n </div>\n <div class=\"col-auto\">\n <label class=\"sr-only\" for=\"stopDate\">End</label>\n <input type=\"date\" [readonly]=\"datesReadonly\" formControlName=\"stopDate\"\n class=\"form-control form-date date-custom mb-2\"\n [ngClass]=\"{ 'is-invalid': reportformsubmitted && reportForm.controls.stopDate.errors }\"\n formControlName=\"stopDate\" />\n <div *ngIf=\"reportformsubmitted && reportForm.controls.stopDate.errors\" class=\"invalid-feedback\">\n <div *ngIf=\"reportForm.controls.stopDate.errors.required\">Please select period.</div>\n </div>\n </div>\n </div>\n <div class=\"row g-3 align-items-center mb-3\">\n <label class=\"col-2 mb-2\">Platforms</label>\n <div class=\"col-auto\">\n <div class=\"form-check form-check-inline\">\n <input class=\"form-check-input\" type=\"radio\" value=\"All\" name=\"platforms\" formControlName=\"platforms\"\n id=\"AllPlatforms\" checked (change)=\"handlePlatformsChange($event, 'All')\">\n <label class=\"form-check-label\" for=\"AllPlatforms\">\n All\n </label>\n </div>\n <div *ngFor=\"let platform of platforms\" class=\"form-check form-check-inline\">\n <input class=\"form-check-input\" type=\"radio\" [value]=\"platform\" name=\"platforms\"\n formControlName=\"platforms\" id=\"platform_{{ platform }}\"\n (change)=\"handlePlatformsChange($event, platform)\">\n <label class=\"form-check-label\" for=\"platform_{{ platform }}\">\n {{ platform }}\n </label>\n </div>\n </div>\n </div>\n <div class=\"row g-3 align-items-center mb-3\">\n <label class=\"col-2 mb-2\">Aggregation</label>\n <div class=\"col-auto\">\n <div class=\"form-check form-check-inline\">\n <input class=\"form-check-input\" type=\"radio\" value=\"All\" name=\"aggregation\"\n formControlName=\"aggregation\" id=\"AggregateAll\" checked\n (change)=\"handleAggregateChange($event, false)\">\n <label class=\"form-check-label\" for=\"AggregateAll\">\n All\n </label>\n </div>\n <div class=\"form-check form-check-inline\">\n <input class=\"form-check-input\" type=\"radio\" value=\"SelectCampaigns\" name=\"aggregation\"\n formControlName=\"aggregation\" id=\"SelectCampaigns\" (change)=\"handleAggregateChange($event, true)\">\n <label class=\"form-check-label\" for=\"SelectCampaigns\">\n Select Campaigns\n </label>\n </div>\n </div>\n </div>\n <div class=\"row g-3 align-items-center mb-3\">\n <label class=\"col-2 mb-2\">Report format</label>\n <div class=\"col-auto\">\n <div class=\"form-check form-check-inline\">\n <input class=\"form-check-input\" type=\"radio\" value=\"html\" name=\"reportFormat\"\n formControlName=\"reportFormat\" id=\"reportFormatHtml\" (change)=\"handleReportFormatChange($event, 'html')\">\n <label class=\"form-check-label\" for=\"reportFormatHtml\">\n Html\n </label>\n </div>\n <div class=\"form-check form-check-inline\">\n <input class=\"form-check-input\" type=\"radio\" value=\"pdf\" name=\"reportFormat\"\n formControlName=\"reportFormat\" id=\"reportFormatPdf\" (change)=\"handleReportFormatChange($event, 'pdf')\">\n <label class=\"form-check-label\" for=\"reportFormatPdf\">\n Pdf\n </label>\n </div>\n </div>\n </div>\n <div class=\"row g-3 align-items-center mb-3\">\n <label class=\"col-2 mb-2\"></label>\n <div class=\"col-auto\">\n <button type=\"submit\" class=\"blue-button\">View Rollup Report</button>\n </div>\n <div class=\"col-auto\" *ngIf=\"dataLoadCompleted\">\n <a (click)=\"openHtmlReportNewWindow()\" class=\"btn btn-info\">Open report on new page <i class=\"fas fa-external-link-alt ps-2\"></i></a>\n </div>\n <div class=\"col-auto\" *ngIf=\"dataLoadCompleted\">\n <a (click)=\"openPdfReportNewWindow()\" class=\"btn btn-info\">Open report as pdf <i class=\"fas fa-external-link-alt ps-2\"></i></a>\n </div>\n </div>\n</form>\n<div *ngIf=\"SelectCampaignsError\" class=\"text-danger\">\n {{SelectCampaignsError}}\n</div>\n<div class=\"dv-custom-navs\">\n <ul ngbNav #nav=\"ngbNav\" [(activeId)]=\"active\" class=\"nav-tabs\" (activeIdChange)=\"onTabChange($event)\">\n <li [ngbNavItem]=\"1\">\n <a ngbNavLink>\n <i-feather name=\"check\"></i-feather><label>Campaigns</label>\n </a>\n <ng-template ngbNavContent>\n <app-special-datatable [iShowDropdownAdd]=\"false\" [iShowSelect]=\"(bShowSelect$ | async) ?? false\"\n [iShowActions]=\"false\" [iShowExport]=\"false\" [iColumns]=\"columns\" [iCanRead]=\"doWhat.canRead\"\n [iCanWrite]=\"doWhat.canWrite\" [iData$]=\"(filteredCampaignsData | async) ?? []\"\n (oCBClick)=\"onSelectCheckboxChange($event)\"></app-special-datatable>\n </ng-template>\n </li>\n <li [ngbNavItem]=\"2\" *ngIf=\"rollupReportDataResponse?.orderId\">\n <a ngbNavLink>\n <i-feather name=\"file-text\"></i-feather><label>Progress</label>\n </a>\n <ng-template ngbNavContent>\n <app-reports-rollup-report-view-progress (oDataLoadCompleted)=\"DataLoadCompleted($event)\"\n [iRollupReportDataResponse]=\"rollupReportDataResponse\">\n </app-reports-rollup-report-view-progress>\n </ng-template>\n </li>\n <li [ngbNavItem]=\"3\" *ngIf=\"rollupReportDataResponse?.orderId && dataLoadCompleted\">\n <a ngbNavLink>\n <i-feather name=\"file-text\"></i-feather><label>Report View</label>\n </a>\n <ng-template ngbNavContent>\n <app-reports-rollup-report-view [iReportFormat]=\"reportFormat.value\"\n [iRollupReportDataResponse]=\"rollupReportDataResponse\">\n </app-reports-rollup-report-view>\n </ng-template>\n </li>\n </ul>\n <div [ngbNavOutlet]=\"nav\" style=\"background-color: white; padding: 8px;\"></div>\n</div>","import { Component, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { ReplaySubject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { PAGE_NAMES, ROLES_TYPE } from '../../../core/helpers/constants';\nimport { getRolesForPage } from '../../../core/helpers/utility';\nimport { IPermission } from '../../../core/models/auth.models';\nimport { ICompany } from '../../../core/models/datafeed.models';\nimport { DataFeedService } from '../../../shared/api/datafeed.service';\nimport { AppService } from '../../../store/app.service';\n\n@Component({\n selector: 'app-reports-rollup-main',\n templateUrl: './reports-rollup-main.component.html',\n styleUrls: ['./reports-rollup-main.component.scss']\n})\nexport class ReportsRollupMainComponent implements OnInit {\n doWhat: IPermission = {} as IPermission;\n\n columns = [\n { title: 'Company Name', field: 'name', sortable: true, searchable: true },\n // { title: 'Contact Name', field: 'companyOwner.firstName', sortable: true, searchable: true },\n // { title: 'Contact Email', field: 'companyOwner.email', searchable: true, sortable: true },\n // { title: 'Contact Phone', field: 'companyOwner.phone', searchable: true },\n ];\n companiesData: Array<ICompany> = [];\n \n private destroyed$: ReplaySubject<boolean> = new ReplaySubject(1);\n\n isAdmin: boolean = false;\n roleOptions: any = {};\n isExternal: boolean = false;\n\n constructor(\n private router: Router,\n private appService: AppService, \n private dataFeedService: DataFeedService) {\n }\n\n ngOnInit(): void {\n this.appService.setPageTitle$('Rollup Report');\n this.doWhat = this.appService.getUserRolesForPage(PAGE_NAMES.Reports);\n\n this.appService.getActiveUser$()\n .pipe(takeUntil(this.destroyed$))\n .subscribe(u => {\n this.isExternal = u.type == ROLES_TYPE.External\n var r = getRolesForPage(u.roles, PAGE_NAMES.Reports);\n this.isAdmin = r.isAdmin;\n if (r.options)\n this.roleOptions = JSON.parse(r.options!);\n });\n\n this.getAssociatedCompanies(); \n }\n\n getAssociatedCompanies() {\n this.dataFeedService.getAssociatedCompanies()\n .subscribe(res => {\n console.log(res);\n const uniqueCompanies = res.data.filter((company: ICompany, index: number, self: ICompany[]) =>\n index === self.findIndex((c) => c.id === company.id)\n );\n this.companiesData = [...uniqueCompanies];\n });\n } \n \n onCompanySelected(evt: any ): void {\n // console.log(evt);\n this.router.navigate(['/pages/reports/rollup-campaigns', evt.id]);\n } \n \n}","<div style=\"background-color: white; padding: 8px;\">\n <app-campaign-datatable [iCanRead]=\"doWhat.canRead\" [iCanWrite]=\"doWhat.canWrite\" [iCanDelete]=\"doWhat.canDelete\"\n [iColumns]=\"columns\" [iData$]=\"companiesData\" [iShowViewAction]=\"true\" [iShowActions]=\"false\" [iShowExport]=\"false\"\n [iShowSelect]=\"false\" [iShowEditAction]=\"false\" [iShowDeleteAction]=\"false\" \n (oViewRow)=\"onCompanySelected($event)\" (oRowClick)=\"onCompanySelected($event)\">\n </app-campaign-datatable>\n</div>","import { Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { NgxUiLoaderService } from 'ngx-ui-loader';\nimport { ReplaySubject } from 'rxjs';\nimport { ReportsApiService } from '../reports.apiservice';\nimport { IRollupReportDataResponse } from '../../../core/models/reports.models';\nimport { ICampaign } from '../../../core/models/campaigns.model';\n\n@Component({\n selector: 'app-reports-rollup-report-view-progress',\n templateUrl: './reports-rollup-report-view-progress.component.html',\n styleUrls: ['./reports-rollup-report-view-progress.component.scss']\n})\nexport class ReportsRollupReportViewProgressComponent implements OnInit, OnDestroy {\n private destroyed$: ReplaySubject<boolean> = new ReplaySubject(1);\n\n @Input() iRollupReportDataResponse: IRollupReportDataResponse | null = null;\n @Output() oDataLoadCompleted = new EventEmitter<boolean>();\n\n Error = '';\n \n get completed(): Array<ICampaign> { return this.iRollupReportDataResponse?.campaigns.filter(f => f.bundle == \"Faulted\" || f.bundle == \"Completed\") ?? []; }\n get totalCompleted() { return this.completed.length; }\n get totalCampaigns() { return this.iRollupReportDataResponse?.campaigns ? this.iRollupReportDataResponse?.campaigns?.length : 0; }\n get combinedStatus() { return this.totalCampaigns == 0 ? 0 : 100 * this.totalCompleted / this.totalCampaigns; };\n\n constructor(private reportsService: ReportsApiService, private router: Router, private ngxService: NgxUiLoaderService) {\n }\n\n ngOnInit(): void {\n // console.log(this.iRollupReportDataResponse);\n\n if (this.iRollupReportDataResponse?.orderId) {\n this.startTimer();\n }\n }\n\n interval: any;\n startTimer() {\n this.interval = setInterval(() => {\n\n this.getRollupReportProgress();\n this.getRollupReportCampaignsProgress();\n\n this.ngxService.stopAll();\n\n }, 1000)\n }\n\n stopTimer() {\n clearInterval(this.interval);\n }\n\n onDataLoadCompleted() {\n this.stopTimer();\n this.oDataLoadCompleted.emit(true);\n\n // console.log(\"data load completed.\");\n }\n\n ngOnDestroy(): void {\n this.stopTimer();\n this.destroyed$.next(true);\n this.destroyed$.complete();\n }\n\n getRollupReportProgress() {\n this.reportsService.getRollupReportProgress(this.iRollupReportDataResponse?.orderId as string).subscribe(\n res => {\n if (res.data.status == 'Completed') {\n this.onDataLoadCompleted();\n }\n },\n error => { /* DoNothing console.log(error);*/ }\n );\n }\n\n getRollupReportCampaignsProgress() {\n this.reportsService.getRollupReportCampaignsProgress(this.iRollupReportDataResponse?.orderId as string).subscribe(\n res => {\n // console.log(res);\n for (var initial of res.data) {\n var campaign = this.iRollupReportDataResponse?.campaigns.find(f => f.id == initial.campaignId);\n if (campaign) {\n if (initial.status == \"Faulted\" || initial.status == \"Completed\") {\n campaign.bundle = initial.status;\n campaign.opportunityNotes = initial.message;\n }\n else if (initial.status == \"Started\" && !(campaign.bundle == \"Faulted\" || campaign.bundle == \"Completed\")) {\n campaign.bundle = initial.status;\n campaign.opportunityNotes = initial.message;\n }\n }\n }\n\n if (this.iRollupReportDataResponse) {\n this.iRollupReportDataResponse.campaigns = this.iRollupReportDataResponse.campaigns.sort((a, b) => a.bundle == 'Started' && b.bundle !== 'Started' ? -1 : 1); \n }\n },\n error => { /* DoNothing console.log(error);*/ }\n );\n }\n\n\n MathFloor(combinedStatus: number): number {\n return Math.floor(combinedStatus);\n }\n MathRound(combinedStatus: number): number {\n return Math.round(combinedStatus);\n }\n\n}\n","<div class=\"card flexbox-wrapper\"> \n\n <div *ngIf=\"Error\" class=\"card-header p-0 text-danger\">\n <div class=\"btn-toolbar p-3\" role=\"toolbar\" [innerHTML]=\"Error\">\n </div>\n </div>\n\n <!-- <div class=\"card-header p-0 text-danger\">\n <div class=\"btn-toolbar p-3\" role=\"toolbar\" >\n ** please note you can still change report formart even after the report has procesed.\n </div>\n </div> -->\n\n <div class=\"card-header p-0 \">\n <div class=\"btn-toolbar p-3\" role=\"toolbar\">\n Processing Rollup Report Data.\n </div>\n\n <div class=\"btn-toolbar p-3\" role=\"toolbar\">\n <div class=\"progress w-100\" style=\"height: 1.5rem !important;\">\n <div *ngIf=\"combinedStatus <= 99\" role=\"progressbar\" aria-valuemin=\"0\"\n class=\"bg-info progress-bar progress-bar-striped progress-bar-animated\"\n [attr.aria-valuenow]=\"combinedStatus\" aria-valuemax=\"100\" style=\"width: {{ combinedStatus }}%;\">\n {{MathFloor(combinedStatus)}} %\n </div>\n\n <div *ngIf=\"combinedStatus >= 99 && combinedStatus < 100\" role=\"progressbar\" aria-valuemin=\"0\"\n class=\"bg-success progress-bar progress-bar-striped progress-bar-animated\"\n [attr.aria-valuenow]=\"combinedStatus\" aria-valuemax=\"100\" style=\"width: {{ combinedStatus }}%;\">\n {{MathFloor(combinedStatus)}} %\n </div>\n\n <div *ngIf=\"combinedStatus >= 100\" role=\"progressbar\" aria-valuemin=\"0\" class=\"bg-success progress-bar\"\n [attr.aria-valuenow]=\"combinedStatus\" aria-valuemax=\"100\" style=\"width: {{ combinedStatus }}%;\">\n {{MathFloor(combinedStatus)}} %\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"card-body m-1\">\n <ul class=\"message-list\" *ngIf=\"iRollupReportDataResponse\">\n <li class=\"unread ps-1 pe-1\"\n *ngFor=\"let campaign of ( iRollupReportDataResponse?.campaigns ?? [] ); let i = index;\"\n style=\"background-color: #f6f6f6; font-weight: 500; color: #292d32;\">\n <div class=\"col-mail col-mail-1\">\n <span class=\"text-black\">{{i+1}}</span>\n <span class=\"title\">{{ campaign.platform }}</span>\n </div>\n <div class=\"col-mail col-mail-2\">\n <span class=\"subject\" style=\"right:300px !important;\">{{ campaign.name }}</span>\n <span class=\"date mt-3\" style=\"width:290px !important; padding-left: 5px !important;\">\n\n <div class=\"progress\"\n *ngIf=\"campaign.bundle == 'Queued' || campaign.bundle == 'Queued' || !campaign.bundle\"\n style=\"height: 0.725rem !important;\">\n <div role=\"progressbar\" aria-valuemin=\"0\" class=\"bg-dark progress-bar progress-bar-striped\"\n aria-valuenow=\"1\" aria-valuemax=\"100\" style=\"width: 1%;\">\n </div>\n </div>\n\n <div class=\"progress\" *ngIf=\"campaign.bundle == 'Started'\" style=\"height: 0.725rem !important;\">\n <div role=\"progressbar\" aria-valuemin=\"0\"\n class=\"bg-info progress-bar progress-bar-striped progress-bar-animated\"\n aria-valuenow=\"75\" aria-valuemax=\"100\" style=\"width: 75%;\">\n </div>\n </div>\n\n <div class=\"progress\" *ngIf=\"campaign.bundle == 'Completed'\"\n style=\"height: 0.725rem !important;\">\n <div role=\"progressbar\" aria-valuemin=\"0\" class=\"bg-success progress-bar\"\n aria-valuenow=\"100\" aria-valuemax=\"100\" style=\"width: 100%;\">\n </div>\n </div>\n\n <div *ngIf=\"campaign.bundle == 'Faulted'\" class=\"progress\"\n style=\"height: 0.725rem !important; cursor: pointer;\" >\n <div role=\"progressbar\" aria-valuemin=\"0\"\n class=\"bg-danger progress-bar progress-bar-striped\" aria-valuenow=\"80\"\n aria-valuemax=\"100\" style=\"width: 80%;\"> \n </div>\n </div>\n\n </span>\n </div>\n </li>\n </ul>\n </div>\n</div>","<div class=\"la-ball-spin-clockwise la-dark la-3x\" *ngIf=\"!loadCompleted\">\n <div></div>\n <div></div>\n <div></div>\n <div></div>\n <div></div>\n <div></div>\n <div></div>\n <div></div>\n</div>\n\n<!-- <iframe [srcdoc] = \"reportData\"></iframe> -->\n\n<!-- <div id=\"divRollupReportContent\" *ngIf=\"loadCompleted\" [innerHtml]=\"reportData\"></div> -->\n<iframe #iframe style=\"height: 99vh;\" width=\"100%\" (load)=\"onFrameLoadComplete()\"></iframe> \n ","import { Component, Input, OnInit } from '@angular/core';\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\nimport { Router } from '@angular/router';\nimport { environment } from '../../../../environments/environment';\nimport { ReportsApiService } from '../reports.apiservice';\nimport { IRollupReportDataResponse } from '../../../core/models/reports.models';\n\n@Component({\n selector: 'app-reports-rollup-report-view',\n templateUrl: './reports-rollup-report-view.component.html',\n styleUrls: ['./reports-rollup-report-view.component.scss']\n})\nexport class ReportsRollupReportViewComponent implements OnInit {\n\n @Input() iRollupReportDataResponse: IRollupReportDataResponse | null = null;\n @Input() iReportFormat: string = '';\n\n constructor(private router: Router, private domSanitizer: DomSanitizer, private reportsService: ReportsApiService,) {\n }\n\n loadCompleted = false;\n ngOnInit(): void {\n if (this.iRollupReportDataResponse) {\n this.reportsService.getRollupReport(this.iRollupReportDataResponse?.orderId, this.iReportFormat)\n .subscribe(responseUrl => {\n console.log(responseUrl);\n document.querySelector('iframe')?.setAttribute(\"src\", responseUrl);\n //this.reportUrl = this.domSanitizer.bypassSecurityTrustResourceUrl(responseUrl.toString())\n });\n //this.reportUrl = this.domSanitizer.bypassSecurityTrustResourceUrl(this.reportsService.getRollupReport(this.iRollupReportDataResponse?.orderId));\n // this.reportsService.getRollupReportCompleteDate(this.iRollupReportDataResponse?.orderId)\n // .subscribe(res => {\n // console.log(res);\n // this.reportData = res;\n // // this.reportData = this.domSanitizer.bypassSecurityTrustHtml(res).toString();\n this.loadCompleted = true;\n // });\n }\n }\n\n onFrameLoadComplete() {\n // console.log('this.loadCompleted: ', this.loadCompleted);\n if (this.iRollupReportDataResponse) {\n this.loadCompleted = true;\n }\n }\n\n reportUrl = '' as SafeResourceUrl;\n // getReportUrl(): SafeResourceUrl {\n // var uri = '';\n // if (this.iRollupReportDataResponse) {\n // let params = {\n // orderId: this.iRollupReportDataResponse?.orderId,\n // reportFormat: this.iReportFormat\n // };\n\n // var uri = environment.baseUrl + this.router.createUrlTree(['/Dashboard/completed-rollup-report'], { queryParams: params })\n // }\n\n // return this.domSanitizer.bypassSecurityTrustResourceUrl(uri);\n // }\n\n}\n","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\nimport { ReportViewComponent } from './report-view/report-view.component';\r\nimport { ReportsMainComponent } from './reports-main/reports-main.component';\r\nimport { ReportsRawCampaignsDataComponent } from './reports-raw-campaigns-data/reports-raw-campaigns-data.component';\r\nimport { ReportsRollupCompanyCampaignsComponent } from './reports-rollup-company-main/reports-rollup-company-main.component';\r\nimport { ReportsRollupMainComponent } from './reports-rollup-main/reports-rollup-main.component';\r\nimport { ReportsBrandDashboardComponent } from './reports-brand-report/reports-brand-report.component';\r\nimport { ReportsSimpleCampaignsComponent } from './reports-simple-campaigns/reports-simple-campaigns.component';\r\nimport { WeeklyReportsComponent } from './weekly-reports/weekly-reports.component';\r\n\r\nconst routes: Routes = [\r\n {\r\n path: '',\r\n component: ReportsMainComponent,\r\n children: [\r\n {\r\n path: '',\r\n redirectTo: 'campaign-report',\r\n pathMatch: 'full'\r\n },\r\n {\r\n path: 'campaign-report',\r\n component: ReportsSimpleCampaignsComponent\r\n },\r\n {\r\n path: 'rollup-report',\r\n component: ReportsRollupMainComponent\r\n },\r\n {\r\n path: 'weekly-reports',\r\n component: WeeklyReportsComponent\r\n },\r\n {\r\n path: 'brand-report',\r\n component: ReportsBrandDashboardComponent\r\n }\r\n ]\r\n },\r\n {\r\n path: 'view-report/:id',\r\n component: ReportViewComponent\r\n },\r\n {\r\n path: 'rollup-campaigns/:id',\r\n component: ReportsRollupCompanyCampaignsComponent\r\n },\r\n {\r\n path: 'rollup-report/viewer/:id/:orderId',\r\n component: ReportsRollupCompanyCampaignsComponent\r\n }, \r\n {\r\n path: 'raw-campaigns-data',\r\n component: ReportsRawCampaignsDataComponent\r\n },\r\n {\r\n path: 'brand-report',\r\n component: ReportsBrandDashboardComponent\r\n }\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class ReportsRoutingModule { }\r\n","import { DatePipe } from '@angular/common';\nimport { Component, OnInit } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators, FormControl } from '@angular/forms';\nimport { Router, ActivatedRoute } from '@angular/router';\nimport { ReplaySubject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport Swal from 'sweetalert2';\nimport { PAGE_NAMES } from '../../../core/helpers/constants';\nimport { IPermission } from '../../../core/models/auth.models';\nimport { ICampaign } from '../../../core/models/campaigns.model';\nimport { IReportingPeriod } from '../../../core/models/reporting.models';\nimport { LoadDataFromServer } from '../../../shared/components/datatable/datatable.model';\nimport { AppService } from '../../../store/app.service';\nimport { ReportsApiService } from '../reports.apiservice';\n\n@Component({\n selector: 'app-reports-simple-campaigns',\n templateUrl: './reports-simple-campaigns.component.html',\n styleUrls: ['./reports-simple-campaigns.component.scss']\n})\nexport class ReportsSimpleCampaignsComponent implements OnInit {\n doWhat: IPermission = {} as IPermission;\n columns = [\n { title: 'Name', field: 'name', sortable: true, searchable: true },\n { title: 'Client', field: 'clientName', sortable: true, searchable: true },\n { title: 'Platform', field: 'platform', sortable: true, searchable: true },\n { title: 'DMS', field: 'dmsName', sortable: true, searchable: true },\n { title: 'Stage', field: 'stageId', sortable: true, pipe: 'P_CampaignStageTitle', searchable: true },\n { title: 'Active Subscription', field: 'subscriptionActive', pipe: 'P_Boolean', searchable: true },\n ]\n campaignsData: Array<any>\n private destroyed$: ReplaySubject<boolean> = new ReplaySubject(1);\n constructor(\n private router: Router,\n private route: ActivatedRoute,\n private appService: AppService,\n private fb: FormBuilder,\n private reportsService: ReportsApiService,) {\n this.campaignsData = new Array<any>();\n }\n\n ngOnInit(): void {\n this.appService.setPageTitle$('Campaign Reports');\n this.doWhat = this.appService.getUserRolesForPage(PAGE_NAMES.Reports);\n this.appService.getAllCampaigns$()\n .pipe(takeUntil(this.destroyed$))\n .subscribe((response: {good:boolean; data:Array<ICampaign>; totalCount:number}) => {\n this.campaignsData = response.data.map((campaign: any) => {\n if (campaign.stageId === 8) {\n campaign.statusColor = 'gray';\n }\n return campaign;\n });\n this.dataTotalCount = response.totalCount;\n });\n this.savedSearchId = this.route.snapshot.queryParams['savedsearchid']; \n }\n \n private loadEvent!: LoadDataFromServer;\n dataTotalCount=0;\n savedSearchId!: string;\n onLoadingData(event: LoadDataFromServer) {\n this.loadEvent = event;\n this.appService.fetchAllCampaigns({\n SavedSearchId: this.savedSearchId,\n ...this.loadEvent\n });\n }\n\n getRowLink(row: any) {\n return `/pages/reports/view-report/${row.id}`;\n }\n}\n","<div style=\"padding: 8px; background-color: white;\">\n <app-campaign-datatable [iCanRead]=\"doWhat.canRead\" [iCanWrite]=\"doWhat.canWrite\" [iCanDelete]=\"doWhat.canDelete\" [iColumns]=\"columns\" [iData$]=\"campaignsData\" [iRowLinkHandler]=\"getRowLink\" [iShowViewAction]=\"false\" [iShowExternalAction]=\"false\" [iShowActions]=\"false\" [iShowExport]=\"false\" [iShowSelect]=\"false\" [iShowEditAction]=\"false\" [iShowDeleteAction]=\"false\" (oLoadDataFromServer)=\"onLoadingData($event)\" [iIsServerLoading]=\"true\" [iTotalCount]=\"dataTotalCount\">\n </app-campaign-datatable>\n</div>","import { Injectable } from '@angular/core';\nimport { Observable, Subscriber } from 'rxjs';\nimport { IAdsReportEmailModel, IReportingConfig, IReportingPeriod } from '../../core/models/reporting.models';\nimport { HttpService } from '../../shared/http/base.http'; \nimport { IRollupReportDataResponse, IRollupReportDataStatus, ICampaignDataStatus } from '../../core/models/reports.models';\n\n@Injectable()\nexport class ReportsApiService extends HttpService {\n\n getRawCampaignsData(reachCampaignID: string, platform: string, startDate: string, endDate: string, PerformanceMetrics: string): Observable<any> {\n return this.get<any>('/dashboard/raw-campaigns-result?ReachCampaignID=' + reachCampaignID + '&Platform=' + platform + '&DateStart=' + startDate + '&DateStop=' + endDate + '&PerformanceMatricsCount=' + PerformanceMetrics);\n }\n\n getAdsAccountData(accountID: string, campaignID: string, platform: string, startDate: string, endDate: string, advancedReport: boolean) {\n const url = `/dashboard/AdsAccount?`; // Replace with your API endpoint\n \n // Include other parameters as needed\n const params = {\n accountID: accountID,\n campaignID: campaignID,\n platform: platform,\n dateStart: startDate,\n dateStop: endDate,\n advancedReport: advancedReport.toString()\n };\n \n return this.get(url, { params, responseType: 'text' });\n }\n getReportingConfigsByClient(clientId: any) {\n return this.get<Array<IReportingConfig>>('/reportingConfig/getReportingConfigsByClient?clientId=' + clientId);\n }\n getSupportedReportingPeriods() {\n return this.get<Array<IReportingPeriod>>('/datafeed/getSupportedDatesOptions');\n }\n saveReportingConfig(data: IReportingConfig) {\n return this.post('/reportingConfig/saveReportingConfig', data, { 'Content-Type': 'application/json; charset=utf-8' });\n }\n deleteReportingConfig(ids: Array<string>) {\n return this.post('/reportingConfig/deleteReportingConfig', ids, { 'Content-Type': 'application/json; charset=utf-8' });\n }\n getWeeklyReportsModels(): Observable<{ good: boolean, data: Array<any> }> {\n return this.get<{ good: boolean, data: Array<any> }>('/weeklyReports/weekly-reports-models');\n }\n sendSingleWeeklyReport(reports: { to: string, ccs?: string, subject?: string, reportModels: Array<IAdsReportEmailModel> }) {\n return this.post('/weeklyReports/send-custom', reports, { 'Content-Type': 'application/json; charset=utf-8' });\n }\n\n startRollupReportProcess(reportDataRequest: string): Observable<{ good: boolean, data: IRollupReportDataResponse }> {\n return this.get<{ good: boolean, data: IRollupReportDataResponse }>(`/dashboard/rollup-report${reportDataRequest}`);\n }\n getRollupReportData(OrderId: string): Observable<{ good: boolean, data: IRollupReportDataResponse }> {\n return this.get<{ good: boolean, data: IRollupReportDataResponse }>(`/dashboard/rollup-report-data?OrderId=${OrderId}`);\n }\n getRollupReportProgress(OrderId: string): Observable<{ good: boolean, data: IRollupReportDataStatus }> {\n return this.get<{ good: boolean, data: IRollupReportDataStatus }>(`/dashboard/rollup-report-status?OrderId=${OrderId}`);\n }\n getRollupReportCampaignsProgress(OrderId: string): Observable<{ good: boolean, data: Array<ICampaignDataStatus> }> {\n return this.get<{ good: boolean, data: Array<ICampaignDataStatus> }>(`/dashboard/rollup-report-campaigns-status?OrderId=${OrderId}`);\n }\n\n getRollupReportCompleteDate(OrderId: string): Observable<string> {\n return this.get<string>(`/dashboard/completed-rollup-report?OrderId=${OrderId}`, { responseType: 'text' });\n }\n\n getDashboardReport(reportDataRequest: string): Observable<any> {\n return this.get<any>(`/dashboard/AdsAccountNew${reportDataRequest}`);\n }\n\n getRollupReport(orderId: string, reportFormat: string): Observable<any> {\n var uri = `/dashboard/completed-rollup-report?OrderId=${orderId}&reportFormat=${reportFormat}`;\n return new Observable((observer: Subscriber<any>) => {\n let reportUrl: string | null = null;\n\n this.getAsBlob(uri)\n .then(response => {\n reportUrl = URL.createObjectURL(response);\n observer.next(reportUrl);\n },\n err => {\n console.error(err);\n }\n );\n\n return () => {\n if (reportUrl) {\n URL.revokeObjectURL(reportUrl);\n reportUrl = null;\n }\n };\n });\n }\n\n getReportContentByUrl(url: string): Observable<any> {\n var uri = url;\n return new Observable((observer: Subscriber<any>) => {\n let reportUrl: string | null = null;\n\n this.getAsBlob(uri)\n .then(response => {\n reportUrl = URL.createObjectURL(response);\n observer.next(reportUrl);\n },\n err => {\n console.error(err);\n }\n );\n\n return () => {\n if (reportUrl) {\n URL.revokeObjectURL(reportUrl);\n reportUrl = null;\n }\n };\n });\n }\n}\n\n\n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SharedModule } from '../../shared/shared.module';\nimport { DatatableModule } from '../../shared/components/datatable/datatable.module';\nimport { SpecialDatatableModule } from '../../shared/components/special-datatable/special-datatable.module';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { ReportsRoutingModule } from './reports-routing.module';\nimport { ReportViewComponent } from './report-view/report-view.component';\nimport { ReportsMainComponent } from './reports-main/reports-main.component';\nimport { ReportsRawCampaignsDataComponent } from './reports-raw-campaigns-data/reports-raw-campaigns-data.component';\nimport { ReportsRollupReportViewComponent } from './reports-rollup-report-view/reports-rollup-report-view.component';\nimport { ReportsRollupCompanyCampaignsComponent } from './reports-rollup-company-main/reports-rollup-company-main.component';\nimport { ReportsSimpleCampaignsComponent } from './reports-simple-campaigns/reports-simple-campaigns.component';\nimport { ReportsApiService } from './reports.apiservice';\nimport { WeeklyReportsComponent } from './weekly-reports/weekly-reports.component';\nimport { ReportsRollupReportViewProgressComponent } from './reports-rollup-report-view-progress/reports-rollup-report-view-progress.component';\nimport { ReportsRollupMainComponent } from './reports-rollup-main/reports-rollup-main.component';\nimport { CampaignDatatableModule } from '../../shared/components/campaign-datatable/campaign-datatable.module';\nimport { ReportDatatableModule } from '../../shared/components/report-datatable/report-datatable.module';\nimport { ReportsBrandDashboardComponent } from './reports-brand-report/reports-brand-report.component';\n\n@NgModule({\n declarations: [ \n ReportsMainComponent,\n ReportViewComponent,\n WeeklyReportsComponent,\n WeeklyReportsComponent, \n ReportsRollupMainComponent,\n ReportsBrandDashboardComponent,\n ReportsRollupCompanyCampaignsComponent,\n ReportsSimpleCampaignsComponent,\n ReportsRollupReportViewComponent,\n ReportsRawCampaignsDataComponent, \n ReportsRollupReportViewProgressComponent\n ],\n imports: [\n CommonModule,\n SharedModule,\n DatatableModule,\n SpecialDatatableModule,\n CampaignDatatableModule,\n ReportDatatableModule,\n ReportsRoutingModule,\n DragDropModule, \n ],\n providers:[ \n ReportsApiService,\n ],\n exports: [\n ReportViewComponent,\n ]\n})\nexport class ReportsModule { }\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { Component, ElementRef, OnInit, ViewChild } from '@angular/core';\nimport { ReplaySubject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport Swal from 'sweetalert2';\nimport { PAGE_NAMES, ROLES_TYPE } from '../../../core/helpers/constants';\nimport { getRolesForPage } from '../../../core/helpers/utility';\nimport { UtilityService } from '../../../core/helpers/utility.service';\nimport { IClient } from '../../../core/models/clients.models';\nimport { IAdsReportEmailModel, IReportingConfig } from '../../../core/models/reporting.models';\nimport { AppService } from '../../../store/app.service';\nimport { ReportsApiService } from '../reports.apiservice';\n\n@Component({\n selector: 'app-weekly-reports',\n templateUrl: './weekly-reports.component.html',\n styleUrls: ['./weekly-reports.component.scss']\n})\nexport class WeeklyReportsComponent implements OnInit {\n active = 1;\n \n roleOptions: any = {};\n isAdmin: boolean = false;\n public userRoles: Array<number> = [];\n isExternal: boolean = false;\n\n private destroyed$: ReplaySubject<boolean> = new ReplaySubject(1);\n constructor(\n public uService: UtilityService,\n private appService: AppService,\n private reportsService: ReportsApiService) {\n this.userRoles = [...this.uService.getUserRoles()];\n //this.campaignsData = new Array<ICampaign>();\n }\n\n ngOnInit(): void {\n this.appService.setPageTitle$('Weekly Reports');\n this.appService.setRefreshSignal$(PAGE_NAMES.ClientDetails, '');\n\n this.getWeeklyReportsData();\n\n this.appService.getActiveUser$()\n .pipe(takeUntil(this.destroyed$))\n .subscribe(u => {\n this.isExternal = u.type == ROLES_TYPE.External\n var r = getRolesForPage(u.roles, PAGE_NAMES.Clients);\n this.isAdmin = r.isAdmin;\n if (r.options)\n this.roleOptions = JSON.parse(r.options!);\n })\n }\n\n //adsReportsTableData: Array<IReportingConfig> = [];\n adsReportsTableColumns: Array<any> = [\n { title: 'Client', field: 'client', searchable: true },\n /* { title: 'Email', field: 'toEmail', searchable: true }, */\n { title: 'Company', field: 'company', searchable: true },\n { title: 'Type', field: 'reportType', searchable: true },\n { title: 'Rollup', field: 'isRollup' , searchable: true},\n { title: 'Platforms', field: 'platforms', searchable: true },\n { title: 'Campaigns', field: 'campaigns', searchable: true },\n ];\n adsReportsTableData = new Array<{ reportingConfig: IReportingConfig, id: string, reportType: string, isRollup: boolean, platforms: string, campaigns: string, toEmail: string }>();\n\n getWeeklyReportsData(): void {\n this.adsReportsTableData = []; \n\n this.reportsService.getWeeklyReportsModels()\n .subscribe(res => {\n let configs = new Array<any>();\n\n let clientData = res.data as Array<IClientEmailModel>;\n clientData\n .forEach(client => {\n\n client.adsReports.forEach(report => {\n\n let c = {\n id: report.id /* Need this column as part of table so that when on delete we can access the list of IDs that were selected*/,\n client: client.fullName,\n company: client.brand,\n reportType: report.isAdvancedReport ? 'Advanced' : 'Simple',\n isRollup: report.isRollup === true ? 'yes' : 'no',\n platforms: report.campaigns.filter((n: any, i: any) => report.campaigns.indexOf(n) === i).map(m => m.platform).join(', \\r\\n'),\n campaigns: report.campaigns.filter((n: any, i: any) => report.campaigns.indexOf(n) === i).map(m => m.name).join(', \\r\\n'),\n toEmail: report.toEmail ?? client.email,\n reportEmailModel: report,\n };\n configs.push(c);\n });\n\n });\n this.adsReportsTableData = configs;\n\n });\n }\n\n ngOnDestroy(): void {\n this.destroyed$.next(true);\n this.destroyed$.complete();\n }\n\n ToEmails: string = ''; // 'denzil@atlastech.dev';\n CCEmails: string = '';\n Error: string = '';\n\n @ViewChild('toEmailElement') toEmailElement: ElementRef = {} as ElementRef;\n oSendEmail(event: any) {\n this.Error = '';\n if (!this.ToEmails || this.ToEmails == '') {\n this.toEmailElement.nativeElement.focus();\n this.toEmailElement.nativeElement.select();\n this.Error = \"*** Please enter a valid to email for test run.\";\n return;\n }\n\n var reportEmailModel = event.reportEmailModel as IAdsReportEmailModel;\n // console.log(reportEmailModel);\n\n let reportModels = [reportEmailModel];\n\n // let subject = 'Custom subject';\n\n let x: { to: string, ccs?: string, subject?: string, reportModels: Array<IAdsReportEmailModel> };\n x = { to: this.ToEmails, ccs: this.CCEmails, reportModels: reportModels };\n\n this.reportsService.sendSingleWeeklyReport(x)\n .subscribe(\n (res: any) => {\n let errors = res.data ? res.data : '';\n Swal.fire(\n `Report(s) sent. ${res.data ? 'With Errors:' : ''}`,\n errors,\n 'success',\n );\n },\n (error: HttpErrorResponse) => {\n console.error(error.error);\n\n this.toEmailElement.nativeElement.focus();\n this.toEmailElement.nativeElement.select();\n this.Error = error.error?.data;\n }\n );\n }\n\n} \n\nexport interface IClientEmailModel extends IClient {\n adsReports: Array<IAdsReportEmailModel>,\n}\n","<div style=\"padding: 8px; background-color: white;\">\n <div *ngIf=\"Error\" class=\"card-body text-danger\">\n {{ Error }}\n </div>\n <div class=\"card-body py-0\">\n <div class=\"form-group row\"> \n <label class=\"col col-12 text-danger\">** this section is only viewable by admins only!</label>\n <label class=\"col col-12 text-danger\">** reports will only send to email specified below!</label>\n </div> \n <div class=\"form-group row\">\n <label class=\"col col-auto\">Send to emails</label>\n <div class=\"col col-3\">\n <input type=\"email\" multiple class=\"form-control\" [(ngModel)]=\"ToEmails\" autofocus #toEmailElement />\n </div>\n <label class=\"col col-auto\">Copy emails</label>\n <div class=\"col col-4\">\n <input type=\"email\" multiple class=\"form-control\" [(ngModel)]=\"CCEmails\" />\n </div>\n </div> \n </div>\n <div class=\"card-body\" style=\"padding-top: 8px;\">\n <app-campaign-datatable [iCanRead]=\"true\" [iColumns]=\"adsReportsTableColumns\" [iShowExport]=\"false\"\n [iData$]=\"adsReportsTableData\" [iPageSize]=\"100\" [iShowSendEmail]=\"true\"\n (oSendEmail)=\"oSendEmail($event)\"></app-campaign-datatable>\n </div>\n</div>","import { Component, Input, OnDestroy } from '@angular/core';\nimport { FormControl, FormGroup } from '@angular/forms';\n\n@Component({\n selector: 'app-new-search-fields',\n templateUrl: './new-search-fields.component.html',\n styleUrls: ['./new-search-fields.component.scss']\n})\nexport class NewSearchFieldsComponent implements OnDestroy {\n rows: Array<any> = [];\n @Input() formGroup!: FormGroup;\n @Input() submitted!: boolean;\n @Input() set rowsInput(value: Array<any>) {\n if (value != undefined && value.length) {\n this.rows = value;\n this.addRows();\n }\n }\n @Input() set disabled(value: boolean) {\n if (value === true) {\n this.reset();\n }\n }\n get form() { return this.formGroup.controls; }\n\n addRows() {\n for (var i = 0; i < this.rows.length; i++) {\n var row = this.rows[i];\n this.addFormGroupRow(row);\n }\n }\n\n addFormGroupRow(row: any) {\n if (this.formGroup.contains(row.formControlName)) return;\n this.formGroup.addControl(`${row.formControlName}Operation`, new FormControl(row.operator.default));\n this.formGroup.addControl(row.formControlName, new FormControl(row.value.defaultValue ?? ''));\n if(row.operator.change){\n this.formGroup.controls[`${row.formControlName}Operation`].valueChanges.subscribe(selectedValue => {\n row.operator.change(selectedValue, row);\n })\n }\n }\n\n addNewRow(row: any) {\n let rowNameIndex = 1;\n while (this.rows.findIndex(x => x.formControlName === `${row.formControlName}_${rowNameIndex}`) > -1)\n rowNameIndex++;\n var index: number;\n if (rowNameIndex === 1)\n index = this.rows.findIndex(x => x.formControlName === row.formControlName);\n else\n index = this.rows.findIndex(x => x.formControlName === `${row.formControlName}_${rowNameIndex - 1}`);\n var newRow = { ...row, formControlName: `${row.formControlName}_${rowNameIndex}`, deletable: true, value: { ...row.value, clickOpens: false } };\n this.rows.splice(index + 1, 0, newRow);\n this.addFormGroupRow(newRow);\n }\n\n removeRow(row: any) {\n this.rows = this.rows.filter(x => x.formControlName !== row.formControlName);\n this.formGroup.removeControl(`${row.formControlName}Operation`);\n this.formGroup.removeControl(row.formControlName);\n }\n\n ngOnDestroy(): void {\n for (var i = 0; i < this.rows.length; i++) {\n var row = this.rows[i];\n this.formGroup.removeControl(`${row.formControlName}Operation`);\n this.formGroup.removeControl(row.formControlName);\n }\n }\n\n reset() {\n for (var i = 0; i < this.rows.length; i++) {\n var row = this.rows[i];\n this.formGroup.controls[`${row.formControlName}Operation`]?.setValue(row.operator.default);\n this.formGroup.controls[row.formControlName]?.setValue('');\n }\n }\n\n isDeletable = (row: any) => row.deletable === true;\n}\n","<form [formGroup]=\"formGroup\" style=\"margin-top: 25px; margin-bottom: 25px;\">\n <div class=\"row mb-3\" style=\"align-items: center;\" *ngFor=\"let row of rows\">\n <label class=\"col-sm-2\" style=\"margin-bottom: 0;\" for=\"title\">{{row.name}}</label>\n <div class=\"col-sm-2\">\n <select [formControlName]=\"row.formControlName + 'Operation'\" class=\"form-control form-select select-custom\">\n <option *ngFor=\"let p of row.operator.options\" [ngValue]=\"p.value\">{{p.name}}</option>\n </select>\n </div>\n <div class=\"col-sm-3\">\n <input *ngIf=\"row.value.type=='text'\" type=\"text\" class=\"form-control\"\n [formControlName]=\"row.formControlName\">\n <select *ngIf=\"row.value.type=='select'\" [formControlName]=\"row.formControlName\"\n class=\"form-control form-select select-custom\">\n <option *ngFor=\"let p of row.value.options\" [ngValue]=\"p.value\">{{p.name}}</option>\n </select>\n <input *ngIf=\"row.value.type=='datePicker'\" mwlFlatpickr [mode]=\"row.value.mode\" [altInput]=\"true\"\n [convertModelValue]=\"false\" [altInputClass]=\"'datetime'\" [clickOpens]=\"row.value.clickOpens\"\n [formControlName]=\"row.formControlName\" class=\"form-control\" />\n\n </div>\n <div class=\"col-sm-1 add-row\">\n <button *ngIf=\"!isDeletable(row)\" (click)=\"addNewRow(row)\" type=\"button\"\n class=\"btn btn-outline-secondary btn-sm\">\n +\n </button>\n <button *ngIf=\"isDeletable(row)\" type=\"button\" (click)=\"removeRow(row)\"\n class=\"btn btn-outline-danger btn-sm\">\n x\n </button>\n </div>\n </div>\n</form>","import { Component, EventEmitter, Output } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { CAMPAIGN_STAGES, ROLES, TASK_PRIORITY } from '../../../../core/helpers/constants';\nimport { DataFeedService } from '../../../../shared/api/datafeed.service';\nimport { AppService } from '../../../../store/app.service';\nimport { SearchesApiService } from '../../searches.apiservice';\n\n@Component({\n selector: 'app-new-search-main',\n templateUrl: './new-search-main.component.html',\n styleUrls: ['./new-search-main.component.scss']\n})\nexport class NewSearchMainComponent {\n @Output() searchSaved = new EventEmitter();\n\n active = 1;\n newSearchForm!: FormGroup;\n submitted = false;\n\n campaignDisabled = false;\n companyDisabled = false;\n clientDisabled = false;\n userDisabled = false;\n tagDisabled = false;\n leadDisabled = false;\n taskDisabled = false;\n prospectDisabled = false;\n\n companyVisible = true;\n clientVisible = true;\n campaignVisible = true;\n userVisible = true;\n tagVisible = true;\n leadVisible = true;\n taskVisible = true;\n prospectVisible = true;\n\n editSavedSearchId!: string;\n allowedTypes: any[] = [];\n public allResultTypesPages = ['Campaigns', 'Clients', 'Leads', 'Users', 'Companies', 'Prospects', 'Tags', 'Tasks'];\n public allResultTypes = ['Campaign', 'Client', 'Lead', 'User', 'Company', 'Prospect', 'Tag', 'Task'];\n public stringOperations = [\n { name: 'Equals', value: 'Equals' },\n { name: 'Not Equals', value: 'NotEquals' },\n { name: 'Starts With', value: 'StartsWith' },\n { name: 'Ends With', value: 'EndsWith' },\n { name: 'Contains', value: 'Contains' },\n { name: 'Doesnt Contain', value: 'DoesntContain' },\n { name: 'Is Empty', value: 'IsEmpty' },\n { name: 'Is Filled', value: 'IsFilled' }];\n\n public defaultStringOperation = 'Contains';\n\n constructor(\n private formBuilder: FormBuilder,\n private appService: AppService,\n private router: Router,\n private route: ActivatedRoute,\n private searchApi: SearchesApiService,\n private dataFeedApi: DataFeedService) {\n\n this.newSearchForm = this.formBuilder.group({\n title: ['', [Validators.required]],\n resultType: ['Campaign', [Validators.required]],\n });\n this.onResultTypeChange(this.allResultTypes[0]);\n const savedSearchId = this.route.snapshot.paramMap.get('id');\n if (savedSearchId) {\n this.editSavedSearchId = savedSearchId;\n this.editSavedSearch(savedSearchId);\n }\n\n const userRoles = this.appService.getActiveUserRoles$().value;\n if (userRoles.find(x => x.code == ROLES.Admin.Code))\n this.allowedTypes == this.allResultTypesPages;\n else {\n for (var r of userRoles) {\n for (var p of r.perms) {\n this.allowedTypes.push(p.pageName);\n }\n }\n for (let i = this.allResultTypes.length - 1; i >= 0; i--) {\n let page = this.allResultTypesPages[i];\n let found = this.allowedTypes.find((x: any) => page === x) !== undefined;\n if (!found) {\n this.allResultTypes.splice(i, 1);\n if (i === 7)\n this.taskVisible = false;\n if (i === 6)\n this.tagVisible = false;\n if (i === 5)\n this.prospectVisible = false;\n if (i === 4)\n this.companyVisible = false;\n if (i === 3)\n this.userVisible = false;\n if (i === 2)\n this.leadVisible = false;\n if (i === 1)\n this.clientVisible = false;\n if (i === 0)\n this.campaignVisible = false;\n }\n }\n }\n this.prospectColumns = this.clientsColumns.map(x => {\n var newControlName: any = `prospects.${x.formControlName.split('.')[1]}`;\n return { ...x, formControlName: newControlName }\n })\n this.dataFeedApi.getAllTaskAssignees()\n .subscribe((response: any) => {\n if (response.good) {\n var index = this.taskColumns.findIndex(x => x.formControlName === 'tasks.assignedUser');\n this.taskColumns[index].value.options = response.data.map((x: any) => {\n return { name: x.firstName + ' ' + x.lastName, value: x.id }\n });\n this.taskColumns[index].value.options?.splice(0, 0, { name: 'All', value: '' })\n this.taskColumns = [...this.taskColumns];\n }\n });\n }\n get form() { return this.newSearchForm.controls; }\n\n editSavedSearch(savedSearchId: string) {\n const that = this;\n this.searchApi.getSavedSearch(savedSearchId)\n .subscribe((response: any) => {\n if (response.good) {\n // console.log(response);\n that.newSearchForm.controls['title'].setValue(response.savedSearch.name);\n var resultType = response.savedSearch.resultType.charAt(0).toUpperCase() + response.savedSearch.resultType.slice(1);\n that.newSearchForm.controls['resultType'].setValue(resultType);\n this.onResultTypeChange(resultType);\n for (var i = 0; i < response.savedSearch.fields.length; i++) {\n const field = response.savedSearch.fields[i];\n if (field.name.indexOf('_') >= 0) {\n const name = field.dataType + \".\" + field.name.substring(0, field.name.indexOf('_'));\n var columns = this.getColumnsByType(field.dataType) ?? [];\n const index = columns.findIndex((x: any) => x.formControlName === name);\n const newField: any = JSON.parse(JSON.stringify(columns[index]));\n newField.formControlName = field.dataType + \".\" + field.name;\n newField.operator.default = field.operator;\n newField.value.defaultValue = field.value;\n newField.deletable = true;\n this.addNewColumn(field.dataType, newField);\n }\n else {\n that.newSearchForm.controls[`${field.dataType}.${field.name}Operation`].setValue(field.operator);\n that.newSearchForm.controls[`${field.dataType}.${field.name}`].setValue(field.value);\n }\n }\n }\n });\n }\n\n onResultTypeChange(newResultType: any) {\n this.active = this.allResultTypes.findIndex(x => x === newResultType) + 1;\n if (newResultType === 'Campaign') {\n this.campaignDisabled = this.clientDisabled = this.userDisabled = this.tagDisabled = false;\n this.companyDisabled = this.leadDisabled = this.taskDisabled = this.prospectDisabled = true;\n } else if (newResultType === 'Company') {\n this.companyDisabled = this.clientDisabled = this.userDisabled = false;\n this.campaignDisabled = this.leadDisabled = this.tagDisabled = this.taskDisabled = this.prospectDisabled = true;\n } else if (newResultType === 'Client') {\n this.clientDisabled = this.companyDisabled = this.campaignDisabled = this.userDisabled = this.tagDisabled = false;\n this.leadDisabled = this.taskDisabled = this.prospectDisabled = true;\n } else if (newResultType === 'Prospect') {\n this.prospectDisabled = false;\n this.clientDisabled = this.leadDisabled = this.companyDisabled = this.campaignDisabled = this.userDisabled = this.tagDisabled = this.taskDisabled = true;\n } else if (newResultType === 'User') {\n this.userDisabled = false;\n this.companyDisabled = this.clientDisabled = this.tagDisabled = this.campaignDisabled = this.leadDisabled = this.taskDisabled = this.prospectDisabled = true;\n } else if (newResultType === 'Tag') {\n this.tagDisabled = false;\n this.companyDisabled = this.clientDisabled = this.campaignDisabled = this.userDisabled = this.leadDisabled = this.taskDisabled = this.prospectDisabled = true;\n } else if (newResultType === 'Lead') {\n this.leadDisabled = this.campaignDisabled = false;\n this.companyDisabled = this.clientDisabled = this.tagDisabled = this.userDisabled = this.taskDisabled = this.prospectDisabled = true;\n }\n else if (newResultType === 'Task') {\n this.taskDisabled = this.campaignDisabled = this.clientDisabled = this.userDisabled = false;\n this.companyDisabled = this.leadDisabled = this.tagDisabled = this.prospectDisabled = true;\n }\n }\n\n saveClicked() {\n this.submitted = true;\n if (!this.newSearchForm.valid) return;\n var search: any = { id: this.editSavedSearchId };\n search.fields = [];\n for (var key of Object.keys(this.newSearchForm.value)) {\n if (key === 'title')\n search.name = this.newSearchForm.value[key];\n else if (key === 'resultType')\n search.resultType = this.newSearchForm.value[key];\n else if (key.endsWith('Operation'))\n continue;\n else {\n var value = this.newSearchForm.value[key];\n var operator = this.newSearchForm.value[key + 'Operation'];\n if ((value === '' || value === undefined) && operator !== 'IsEmpty' && operator !== 'IsFilled')\n continue;\n var dataType = key.split('.')[0];\n var name = key.split('.')[1];\n search.fields.push({\n dataType,\n name,\n operator,\n value\n });\n }\n }\n this.appService.addSearch$(search);\n this.resetForm();\n if (this.editSavedSearchId) {\n this.router.navigate(['/pages/searches/']);\n }\n else {\n this.searchSaved.emit();\n }\n }\n\n resetForm() {\n this.newSearchForm.controls['title'].setValue('');\n this.newSearchForm.controls['resultType'].setValue('Campaign');\n }\n\n cancelClicked() {\n this.reset();\n this.router.navigate(['/pages/searches/']);\n this.searchSaved.emit();\n }\n\n reset() {\n this.campaignDisabled = this.clientDisabled = this.userDisabled = this.tagDisabled = this.companyDisabled = this.taskDisabled = true;\n this.resetForm();\n }\n\n onCompletionDateChange(value: any, row: any) {\n var completedWithinDatePickerEnabled = false;\n if (value === '') { // anytime\n this.newSearchForm.controls[row.formControlName].patchValue('');\n } else if (value === 'Today') { // today\n this.newSearchForm.controls[row.formControlName].patchValue(this.getDateString(0));\n } else if (value === 'LastWeek') { // last week\n this.newSearchForm.controls[row.formControlName].patchValue(this.getDateString(-7));\n } else if (value === 'LastMonth') { // last month\n this.newSearchForm.controls[row.formControlName].patchValue(this.getDateString(-30));\n } else if (value === 'Last90Days') { // 90 days\n this.newSearchForm.controls[row.formControlName].patchValue(this.getDateString(-90));\n } else if (value === 'CustomPeriod') { // custom\n this.newSearchForm.controls[row.formControlName].patchValue('');\n completedWithinDatePickerEnabled = true;\n }\n var index = this.taskColumns.findIndex(x => x.formControlName === row.formControlName)\n this.taskColumns[index].value.clickOpens = completedWithinDatePickerEnabled;\n this.taskColumns = [...this.taskColumns];\n }\n\n getDateString(days: number) {\n var today = new Date();\n var target = new Date(today.valueOf());\n target.setDate(today.getDate() + days);\n var dateToString = (date: Date) => `${date.getFullYear()}-${date.getMonth() + 1}-${date.getDate()}`;\n if (days >= 0) {\n return `${dateToString(today)} to ${dateToString(target)}`;\n } else {\n return `${dateToString(target)} to ${dateToString(today)}`;\n }\n }\n\n campaignStages = [{ name: '', value: '' }, ...CAMPAIGN_STAGES.map(x => { return { name: x.title, value: x.value.toString() } })];\n\n campaignColumns = [\n {\n name: 'Name',\n formControlName: 'campaign.name',\n operator: { options: this.stringOperations, default: this.defaultStringOperation },\n value: { type: 'text' }\n },\n {\n name: 'Platform',\n formControlName: 'campaign.platform',\n operator: { options: this.stringOperations, default: this.defaultStringOperation },\n value: { type: 'text' }\n },\n {\n name: 'Location Email',\n formControlName: 'campaign.locationEmail',\n operator: { options: this.stringOperations, default: this.defaultStringOperation },\n value: { type: 'text' }\n },\n {\n name: 'Location Street',\n formControlName: 'campaign.street',\n operator: { options: this.stringOperations, default: this.defaultStringOperation },\n value: { type: 'text' }\n },\n {\n name: 'Location City',\n formControlName: 'campaign.city',\n operator: { options: this.stringOperations, default: this.defaultStringOperation },\n value: { type: 'text' }\n },\n {\n name: 'Location State',\n formControlName: 'campaign.state',\n operator: { options: this.stringOperations, default: this.defaultStringOperation },\n value: { type: 'text' }\n },\n {\n name: 'Location Zipcode',\n formControlName: 'campaign.zipcode',\n operator: { options: this.stringOperations, default: this.defaultStringOperation },\n value: { type: 'text' }\n },\n {\n name: 'Platform Campaign ID',\n formControlName: 'campaign.platformCampaignId',\n operator: { options: this.stringOperations, default: this.defaultStringOperation },\n value: { type: 'text' }\n },\n {\n name: 'Platform Account ID',\n formControlName: 'campaign.platformAccountId',\n operator: { options: this.stringOperations, default: this.defaultStringOperation },\n value: { type: 'text' }\n },\n {\n name: 'DMS',\n formControlName: 'campaign.dms',\n operator: { options: this.stringOperations, default: this.defaultStringOperation },\n value: { type: 'text' }\n },\n {\n name: 'Stage',\n formControlName: 'campaign.stage',\n operator: { options: [{ name: 'Equals', value: 'Equals' }, { name: 'Not Equals', value: 'Not Equals' }], default: 'Equals' },\n value: { type: 'select', options: this.campaignStages }\n },\n {\n name: 'Campaign Notes',\n formControlName: 'campaign.campaignNotes',\n operator: { options: this.stringOperations, default: this.defaultStringOperation },\n value: { type: 'text' }\n },\n {\n name: 'Campaign Creation Notes',\n formControlName: 'campaign.campaignCreationNotes',\n operator: { options: this.stringOperations, default: this.defaultStringOperation },\n value: { type: 'text' }\n },\n {\n name: 'Tags',\n formControlName: 'campaign.tags',\n operator: { options: this.stringOperations, default: this.defaultStringOperation },\n value: { type: 'text' }\n },\n {\n name: 'Crm Name',\n formControlName: 'campaign.crmName',\n operator: { options: this.stringOperations, default: this.defaultStringOperation },\n value: { type: 'text' }\n },\n {\n name: 'Crm Id',\n formControlName: 'campaign.crmId',\n operator: { options: this.stringOperations, default: this.defaultStringOperation },\n value: { type: 'text' }\n }\n ];\n\n clientsColumns = [\n {\n name: 'First Name',\n formControlName: 'client.firstName',\n operator: { options: this.stringOperations, default: this.defaultStringOperation },\n value: { type: 'text' }\n },\n {\n name: 'Last Name',\n formControlName: 'client.lastName',\n operator: { options: this.stringOperations, default: this.defaultStringOperation },\n value: { type: 'text' }\n },\n {\n name: 'DMS',\n formControlName: 'client.dms',\n operator: { options: this.stringOperations, default: this.defaultStringOperation },\n value: { type: 'text' }\n },\n {\n name: 'Sales Rep',\n formControlName: 'client.salesRep',\n operator: { options: this.stringOperations, default: this.defaultStringOperation },\n value: { type: 'text' }\n },\n {\n name: 'Phone',\n formControlName: 'client.phone',\n operator: { options: this.stringOperations, default: this.defaultStringOperation },\n value: { type: 'text' }\n },\n {\n name: 'Address',\n formControlName: 'client.address',\n operator: { options: this.stringOperations, default: this.defaultStringOperation },\n value: { type: 'text' }\n },\n {\n name: 'Tags',\n formControlName: 'client.tags',\n operator: { options: this.stringOperations, default: this.defaultStringOperation },\n value: { type: 'text' }\n },\n {\n name: 'Notes',\n formControlName: 'client.notes',\n operator: { options: this.stringOperations, default: this.defaultStringOperation },\n value: { type: 'text' }\n },\n {\n name: 'Email',\n formControlName: 'client.email',\n operator: { options: this.stringOperations, default: this.defaultStringOperation },\n value: { type: 'text' }\n }\n ];\n\n companyColumns = [\n {\n name: 'Company Name',\n formControlName: 'company.companyName',\n operator: { options: this.stringOperations, default: this.defaultStringOperation },\n value: { type: 'text' }\n },\n {\n name: 'Contact Name',\n formControlName: 'company.contactName',\n operator: { options: this.stringOperations, default: this.defaultStringOperation },\n value: { type: 'text' }\n },\n {\n name: 'Contact Email',\n formControlName: 'company.contactEmail',\n operator: { options: this.stringOperations, default: this.defaultStringOperation },\n value: { type: 'text' }\n },\n {\n name: 'Contact Phone',\n formControlName: 'company.contactPhone',\n operator: { options: this.stringOperations, default: this.defaultStringOperation },\n value: { type: 'text' }\n }\n ];\n\n leadColumns = [\n {\n name: 'First Name',\n formControlName: 'lead.firstName',\n operator: { options: this.stringOperations, default: this.defaultStringOperation },\n value: { type: 'text' }\n },\n {\n name: 'Last Name',\n formControlName: 'lead.lastName',\n operator: { options: this.stringOperations, default: this.defaultStringOperation },\n value: { type: 'text' }\n },\n {\n name: 'Email',\n formControlName: 'lead.email',\n operator: { options: this.stringOperations, default: this.defaultStringOperation },\n value: { type: 'text' }\n },\n {\n name: 'Phone',\n formControlName: 'lead.phone',\n operator: { options: this.stringOperations, default: this.defaultStringOperation },\n value: { type: 'text' }\n },\n {\n name: 'Referral Id',\n formControlName: 'lead.referralid',\n operator: { options: this.stringOperations, default: this.defaultStringOperation },\n value: { type: 'text' }\n },\n {\n name: 'Referral Source',\n formControlName: 'lead.referralsource',\n operator: { options: this.stringOperations, default: this.defaultStringOperation },\n value: { type: 'text' }\n },\n {\n name: 'CRM Name',\n formControlName: 'lead.crmName',\n operator: { options: this.stringOperations, default: this.defaultStringOperation },\n value: { type: 'text' }\n },\n {\n name: 'CRM Id',\n formControlName: 'lead.crmId',\n operator: { options: this.stringOperations, default: this.defaultStringOperation },\n value: { type: 'text' }\n },\n {\n name: 'Page Title',\n formControlName: 'lead.pageTitle',\n operator: { options: this.stringOperations, default: this.defaultStringOperation },\n value: { type: 'text' }\n },\n {\n name: 'Page Url',\n formControlName: 'lead.pageUrl',\n operator: { options: this.stringOperations, default: this.defaultStringOperation },\n value: { type: 'text' }\n },\n {\n name: 'Is ClubReady Member',\n formControlName: 'lead.isMember',\n operator: { options: [{ name: 'Equals', value: 'Equals' }], default: 'Equals' },\n value: { type: 'select', options: [{ name: 'Yes', value: '1' }, { name: 'No', value: '0' }] }\n }\n ];\n\n tagColumns = [\n {\n name: 'Tag Name',\n formControlName: 'tag.tagName',\n operator: { options: this.stringOperations, default: this.defaultStringOperation },\n value: { type: 'text' }\n },\n {\n name: 'Tag Description',\n formControlName: 'tag.tagDescription',\n operator: { options: this.stringOperations, default: this.defaultStringOperation },\n value: { type: 'text' }\n },\n {\n name: 'Tag Categories',\n formControlName: 'tag.tagCategories',\n operator: { options: this.stringOperations, default: this.defaultStringOperation },\n value: { type: 'text' }\n }\n ];\n prospectColumns: any[] = [];\n\n priorityOptions = [{ name: 'Any', value: '' }, ...TASK_PRIORITY.map(x => { return { name: x.title, value: x.value.toString() } })];\n duedateStatusOptions: any[] = [\n { name: 'All', value: '' },\n { name: 'Overdue', value: 'Overdue' },\n { name: 'Today', value: 'Today' },\n { name: 'Upcoming', value: 'Upcoming' }];\n\n completionStatusOptions: any[] = [\n { name: 'All', value: '' },\n { name: 'Completed', value: 'Completed' },\n { name: 'Not Completed', value: 'NotCompleted' }];\n\n completionDateOperations: any[] = [\n { name: 'Anytime', value: '' },\n { name: 'Today', value: 'Today' },\n { name: 'Last Week', value: 'LastWeek' },\n { name: 'Last Month', value: 'LastMonth' },\n { name: 'Last 90 days', value: 'Last90Days' },\n { name: 'Custom', value: 'CustomPeriod' }];\n taskColumns = [\n {\n name: 'Title',\n formControlName: 'tasks.title',\n operator: { options: this.stringOperations, default: this.defaultStringOperation },\n value: { type: 'text' }\n },\n {\n name: 'Description',\n formControlName: 'tasks.description',\n operator: { options: this.stringOperations, default: this.defaultStringOperation },\n value: { type: 'text' }\n },\n {\n name: 'Priority',\n formControlName: 'tasks.priority',\n operator: { options: [{ name: 'Equals', value: 'Equals' }, { name: 'Not Equals', value: 'Not Equals' }], default: 'Equals' },\n value: { type: 'select', options: this.priorityOptions }\n },\n {\n name: 'Due Date',\n formControlName: 'tasks.duedate',\n operator: { options: ['Equals', 'GreaterThan', 'GreaterThanOrEqual', 'LessThan', 'LessThanOrEqual'].map(x => { return { name: x, value: x } }), default: 'Equals' },\n value: { type: 'datePicker', mode: 'single' }\n },\n {\n name: 'Due Date Status',\n formControlName: 'tasks.duedateStatus',\n operator: { options: [{ name: 'Equals', value: 'Equals' }], default: 'Equals' },\n value: { type: 'select', options: this.duedateStatusOptions }\n },\n {\n name: 'Completion Status',\n formControlName: 'tasks.completionStatus',\n operator: { options: [{ name: 'Equals', value: 'Equals' }], default: 'Equals' },\n value: { type: 'select', options: this.completionStatusOptions, }\n },\n {\n name: 'Completed Within',\n formControlName: 'tasks.completionDate',\n operator: { options: this.completionDateOperations, default: '', change: (t: any, r: any) => this.onCompletionDateChange(t, r) },\n value: { type: 'datePicker', mode: 'range', clickOpens: false }\n },\n {\n name: 'Assigned User',\n formControlName: 'tasks.assignedUser',\n operator: { options: [{ name: 'Equals', value: 'Equals' }], default: 'Equals' },\n value: { type: 'select', options: [] }\n }\n ];\n\n userColumns = [\n {\n name: 'User Name',\n formControlName: 'user.userName',\n operator: { options: this.stringOperations, default: this.defaultStringOperation },\n value: { type: 'text' }\n },\n {\n name: 'User Email',\n formControlName: 'user.userEmail',\n operator: { options: this.stringOperations, default: this.defaultStringOperation },\n value: { type: 'text' }\n }\n ];\n\n getColumnsByType(dataType: any) {\n if (dataType === 'campaign') return this.campaignColumns;\n if (dataType === 'client') return this.clientsColumns;\n if (dataType === 'company') return this.companyColumns;\n if (dataType === 'lead') return this.leadColumns;\n if (dataType === 'tag') return this.tagColumns;\n if (dataType === 'user') return this.userColumns;\n return null;\n }\n\n\n addNewColumn(dataType: any, newField: any) {\n var formControlName = newField.formControlName.split('_')[0];\n if (dataType === 'campaign') {\n var index = this.campaignColumns.findIndex(x => x.formControlName === formControlName);\n this.campaignColumns.splice(index + 1, 0, newField);\n this.campaignColumns = [...this.campaignColumns];\n }\n if (dataType === 'client') {\n var index = this.clientsColumns.findIndex(x => x.formControlName === formControlName);\n this.clientsColumns.splice(index + 1, 0, newField);\n this.clientsColumns = [...this.clientsColumns];\n }\n if (dataType === 'company') {\n var index = this.companyColumns.findIndex(x => x.formControlName === formControlName);\n this.companyColumns.splice(index + 1, 0, newField);\n this.companyColumns = [...this.companyColumns];\n }\n if (dataType === 'lead') {\n var index = this.leadColumns.findIndex(x => x.formControlName === formControlName);\n this.leadColumns.splice(index + 1, 0, newField);\n this.leadColumns = [...this.leadColumns];\n }\n if (dataType === 'tag') {\n var index = this.tagColumns.findIndex(x => x.formControlName === formControlName);\n this.tagColumns.splice(index + 1, 0, newField);\n this.tagColumns = [...this.tagColumns];\n }\n if (dataType === 'user') {\n var index = this.userColumns.findIndex(x => x.formControlName === formControlName);\n this.userColumns.splice(index + 1, 0, newField);\n this.userColumns = [...this.userColumns];\n }\n return null;\n }\n}","<form [formGroup]=\"newSearchForm\" style=\"margin-top: 25px; margin-bottom: 25px;\">\r\n <div class=\"row mb-3\" style=\"align-items: center;\">\r\n <label class=\"col-sm-1\" style=\"margin-bottom: 0;\" for=\"title\">Title</label>\r\n <div class=\"col-sm-4\">\r\n <input type=\"text\" class=\"form-control\" formControlName=\"title\"\r\n [ngClass]=\"{ 'is-invalid': submitted && form.title.errors }\" placeholder=\"Enter Search Title\">\r\n <div *ngIf=\"submitted && form.title.errors\" class=\"invalid-feedback\">\r\n <div *ngIf=\"form.title.errors.required\">Title is required</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-3\" style=\"align-items: center;\">\r\n <label class=\"col-sm-1\" style=\"margin-bottom: 0;\" for=\"resultType\">Result Type</label>\r\n <div class=\"col-sm-4\">\r\n <select [ngClass]=\"{ 'is-invalid': submitted && form.resultType.errors }\"\r\n (change)=\"onResultTypeChange($any($event.target).value)\" formControlName=\"resultType\"\r\n class=\"form-control form-select select-custom\">\r\n <option *ngFor=\"let p of allResultTypes\">{{p}}</option>\r\n </select>\r\n <div *ngIf=\"submitted && form.resultType.errors\" class=\"invalid-feedback\">\r\n <div *ngIf=\"form.resultType.errors.required\">Result Type is required</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-3\">\r\n <div class=\"col-sm-5\">\r\n <div style=\"display: flex;\">\r\n <div style=\"flex: 1;\">\r\n </div>\r\n <div style=\"padding-right: 10px;\">\r\n <button type=\"button\" class=\"btn btn-primary\" style=\"width: 110px;\"\r\n (click)=\"saveClicked()\">Save</button>\r\n </div>\r\n <div>\r\n <button type=\"button\" class=\"btn btn-secondary\" style=\"width: 110px;\"\r\n (click)=\"cancelClicked()\">Cancel</button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</form>\r\n\r\n<div class=\"dv-custom-navs\">\r\n <ul ngbNav #nav=\"ngbNav\" style=\"flex-wrap: nowrap;\" [destroyOnHide]=\"false\" [(activeId)]=\"active\" class=\"nav-tabs\">\r\n <li [ngbNavItem]=\"1\" [disabled]=\"campaignDisabled\" *ngIf=\"campaignVisible\">\r\n <a ngbNavLink>\r\n <i-feather name=\"globe\"></i-feather><label [ngStyle]=\"{'color': (campaignDisabled) ? 'grey' : 'black'}\">Campaign</label>\r\n </a>\r\n <ng-template ngbNavContent>\r\n <app-new-search-fields [formGroup]=\"newSearchForm\" [rowsInput]=\"campaignColumns\" [submitted]=\"submitted\"\r\n [disabled]=\"campaignDisabled\"></app-new-search-fields>\r\n </ng-template>\r\n </li>\r\n <li [ngbNavItem]=\"2\" [disabled]=\"clientDisabled\" *ngIf=\"clientVisible\">\r\n <a ngbNavLink>\r\n <i-feather name=\"user\"></i-feather><label [ngStyle]=\"{'color': (clientDisabled) ? 'grey' : 'black'}\">Client</label>\r\n </a>\r\n <ng-template ngbNavContent>\r\n <app-new-search-fields [formGroup]=\"newSearchForm\" [rowsInput]=\"clientsColumns\" [submitted]=\"submitted\"\r\n [disabled]=\"clientDisabled\"></app-new-search-fields>\r\n </ng-template>\r\n </li>\r\n <li [ngbNavItem]=\"3\" [disabled]=\"leadDisabled\" *ngIf=\"leadVisible\">\r\n <a ngbNavLink>\r\n <i-feather name=\"bar-chart-2\"></i-feather><label [ngStyle]=\"{'color': (leadDisabled) ? 'grey' : 'black'}\">Lead</label>\r\n </a>\r\n <ng-template ngbNavContent>\r\n <app-new-search-fields [formGroup]=\"newSearchForm\" [rowsInput]=\"leadColumns\" [submitted]=\"submitted\"\r\n [disabled]=\"leadDisabled\"></app-new-search-fields>\r\n </ng-template>\r\n </li>\r\n <li [ngbNavItem]=\"4\" [disabled]=\"userDisabled\" *ngIf=\"userVisible\">\r\n <a ngbNavLink>\r\n <i-feather name=\"server\"></i-feather><label [ngStyle]=\"{'color': (userDisabled) ? 'grey' : 'black'}\">User</label>\r\n </a>\r\n <ng-template ngbNavContent>\r\n <app-new-search-fields [formGroup]=\"newSearchForm\" [rowsInput]=\"userColumns\" [submitted]=\"submitted\"\r\n [disabled]=\"userDisabled\"></app-new-search-fields>\r\n </ng-template>\r\n </li>\r\n <li [ngbNavItem]=\"5\" [disabled]=\"companyDisabled\" *ngIf=\"companyVisible\">\r\n <a ngbNavLink>\r\n <i-feather name=\"briefcase\"></i-feather><label [ngStyle]=\"{'color': (companyDisabled) ? 'grey' : 'black'}\">Company</label>\r\n </a>\r\n <ng-template ngbNavContent>\r\n <app-new-search-fields [formGroup]=\"newSearchForm\" [rowsInput]=\"companyColumns\" [submitted]=\"submitted\"\r\n [disabled]=\"companyDisabled\"></app-new-search-fields>\r\n </ng-template>\r\n </li>\r\n <li [ngbNavItem]=\"6\" [disabled]=\"prospectDisabled\" *ngIf=\"prospectVisible\">\r\n <a ngbNavLink>\r\n <i-feather name=\"server\"></i-feather><label [ngStyle]=\"{'color': (prospectDisabled) ? 'grey' : 'black'}\">Prospect</label>\r\n </a>\r\n <ng-template ngbNavContent>\r\n <app-new-search-fields [formGroup]=\"newSearchForm\" [rowsInput]=\"prospectColumns\" [submitted]=\"submitted\"\r\n [disabled]=\"prospectDisabled\"></app-new-search-fields>\r\n </ng-template>\r\n </li>\r\n <li [ngbNavItem]=\"7\" [disabled]=\"tagDisabled\" *ngIf=\"tagVisible\">\r\n <a ngbNavLink>\r\n <i-feather name=\"tag\"></i-feather><label [ngStyle]=\"{'color': (tagDisabled) ? 'grey' : 'black'}\">Tag</label>\r\n </a>\r\n <ng-template ngbNavContent>\r\n <app-new-search-fields [formGroup]=\"newSearchForm\" [rowsInput]=\"tagColumns\" [submitted]=\"submitted\"\r\n [disabled]=\"tagDisabled\"></app-new-search-fields>\r\n </ng-template>\r\n </li>\r\n <li [ngbNavItem]=\"8\" [disabled]=\"taskDisabled\" *ngIf=\"tagVisible\">\r\n <a ngbNavLink>\r\n <i-feather name=\"list\"></i-feather><label [ngStyle]=\"{'color': (taskDisabled) ? 'grey' : 'black'}\">Task</label>\r\n </a>\r\n <ng-template ngbNavContent>\r\n <app-new-search-fields [formGroup]=\"newSearchForm\" [rowsInput]=\"taskColumns\" [submitted]=\"submitted\"\r\n [disabled]=\"taskDisabled\"></app-new-search-fields>\r\n </ng-template>\r\n </li>\r\n\r\n </ul>\r\n <div [ngbNavOutlet]=\"nav\" class=\"mt-2\"></div>\r\n</div>","import { Component, OnInit } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { ReplaySubject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport Swal from 'sweetalert2';\r\nimport { PAGE_NAMES } from '../../../core/helpers/constants';\r\nimport { IPermission } from '../../../core/models/auth.models';\r\nimport { ISearch } from '../../../core/models/search.model';\r\nimport { AppService } from '../../../store/app.service';\r\nimport { SearchesApiService } from '../searches.apiservice';\r\n\r\n@Component({\r\n selector: 'app-saved-searches',\r\n templateUrl: './saved-searches.component.html',\r\n styleUrls: ['./saved-searches.component.scss']\r\n})\r\nexport class SavedSearchesComponent implements OnInit {\r\n private destroyed$: ReplaySubject<boolean> = new ReplaySubject(1);\r\n doWhat: IPermission = {} as IPermission;\r\n searches!: ISearch[];\r\n columns = [\r\n { title: 'Name', field: 'name', sortable: true, searchable: true },\r\n { title: 'Type', field: 'resultType', sortable: true, searchable: true },\r\n ];\r\n constructor(private appService: AppService,\r\n private searchApi: SearchesApiService,\r\n private router: Router) { }\r\n\r\n ngOnInit(): void {\r\n this.appService.fetchSearches();\r\n this.doWhat = this.appService.getUserRolesForPage(PAGE_NAMES.Searches);\r\n this.appService.getAllSearches$()\r\n .pipe(takeUntil(this.destroyed$))\r\n .subscribe((response: ISearch[]) => {\r\n this.searches = response;\r\n });\r\n }\r\n\r\n onSearchDelete(event: any) {\r\n this.searchApi.deleteUserSearch(event[0])\r\n .pipe(takeUntil(this.destroyed$))\r\n .subscribe((response: any) => {\r\n this.appService.fetchSearches();\r\n })\r\n }\r\n\r\n onSearchEdit(event: any) {\r\n const selectSearch: ISearch = event;\r\n this.router.navigate(['/pages/searches/', selectSearch.id]);\r\n }\r\n\r\n getRowLink(row: any) {\r\n const selectSearch: ISearch = row;\r\n const query = `?savedsearchid=${selectSearch.id}`;\r\n if (selectSearch.resultType.toLowerCase() === 'user')\r\n return `/pages/users${query}`;\r\n\r\n else if (selectSearch.resultType.toLowerCase() === 'campaign')\r\n return `/pages/campaigns${query}`;\r\n\r\n else if (selectSearch.resultType.toLowerCase() === 'company')\r\n return `/pages/companies${query}`;\r\n\r\n else if (selectSearch.resultType.toLowerCase() === 'client')\r\n return `/pages/clients${query}`;\r\n\r\n else if (selectSearch.resultType.toLowerCase() === 'tag')\r\n return `/pages/tags${query}`;\r\n\r\n else if (selectSearch.resultType.toLowerCase() === 'lead')\r\n return `/pages/leads${query}`;\r\n\r\n else if (selectSearch.resultType.toLowerCase() === 'task')\r\n return `/pages/tasks${query}`;\r\n\r\n else if (selectSearch.resultType.toLowerCase() === 'prospect')\r\n return `/pages/prospects${query}`;\r\n\r\n return null;\r\n }\r\n}\r\n","<app-campaign-datatable [iCanRead]=\"doWhat.canRead\" [iCanWrite]=\"doWhat.canWrite\" [iCanDelete]=\"doWhat.canDelete\" [iHideHeaderActions]=\"true\" [iColumns]=\"columns\" \n[iRowLinkHandler]=\"getRowLink\" [iData$]=\"searches\" (oDeleteRows)=\"onSearchDelete($event)\" (oEditRow)=\"onSearchEdit($event)\" [iShowSelect]=\"false\"></app-campaign-datatable>","<div class=\"dv-custom-navs\">\n <ul ngbNav #nav=\"ngbNav\" [(activeId)]=\"active\" class=\"nav-tabs\">\n <li [ngbNavItem]=\"1\" [ngStyle]=\"{'z-index' : (active === 1) ? '5' : '0'}\">\n <a ngbNavLink>\n <i class=\"fas fa-sd-card\"></i><label>Saved Searches</label>\n </a>\n <ng-template ngbNavContent>\n <div style=\"background-color: white; padding: 8px;\">\n <app-saved-searches></app-saved-searches>\n </div>\n </ng-template>\n </li>\n <li [ngbNavItem]=\"2\" [ngStyle]=\"{'z-index' : (active === 2) ? '5' : '0', 'left': '-10px'}\">\n <a ngbNavLink>\n <i-feather name=\"file-plus\"></i-feather><label>{{mode}} Search</label>\n </a>\n <ng-template ngbNavContent>\n <div style=\"border-bottom: 5px solid white; border-left: 5px solid white; border-right: 5px solid white; padding: 8px;\">\n <app-new-search-main (searchSaved)=\"searchSaved()\"></app-new-search-main>\n </div>\n </ng-template>\n </li>\n </ul>\n <div [ngbNavOutlet]=\"nav\"></div>\n</div>","import { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { AppService } from '../../../store/app.service';\n\n@Component({\n selector: 'app-searches-main',\n templateUrl: './searches-main.component.html',\n styleUrls: ['./searches-main.component.scss']\n})\nexport class SearchesMainComponent implements OnInit {\n active = 1;\n mode = 'Create';\n\n constructor(private appService: AppService,\n private route: ActivatedRoute) {\n this.route.params.subscribe(params => {\n const savedSearchId = params.id;\n this.active = savedSearchId ? 2 : 1;\n this.mode = savedSearchId ? 'Modify' : 'Create';\n });\n }\n\n ngOnInit(): void {\n this.appService.setPageTitle$('Searches');\n }\n\n searchSaved() {\n this.active = 1;\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { HttpService } from '../../shared/http/base.http';\n\n@Injectable()\nexport class SearchesApiService extends HttpService {\n getUserSearches() {\n return this.get('/SavedSearch/user')\n }\n\n getSavedSearch(searchId: string) {\n return this.get(`/SavedSearch?id=${searchId}`)\n }\n\n deleteUserSearch(searchId: string) {\n return this.delete(`/SavedSearch?id=${searchId}`)\n }\n\n addEditSearch(search: any) {\n return this.post(`/SavedSearch`, search)\n }\n}","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { SearchesMainComponent } from './searches-main/searches-main.component';\nimport { SavedSearchesComponent } from './saved-searches/saved-searches.component';\nimport { NewSearchMainComponent } from './new-search/new-search-main/new-search-main.component';\nimport { NgbNavModule } from '@ng-bootstrap/ng-bootstrap';\nimport { FeatherModule } from 'angular-feather';\nimport { allIcons } from 'angular-feather/icons';\nimport { SearchesApiService } from './searches.apiservice';\nimport { DatatableModule } from '../../shared/components/datatable/datatable.module';\nimport { FlatpickrModule } from 'angularx-flatpickr';\nimport { NewSearchFieldsComponent } from './new-search/new-search-fields/new-search-fields.component';\nimport { CampaignDatatableModule } from \"../../shared/components/campaign-datatable/campaign-datatable.module\";\n\n@NgModule({\n declarations: [\n SearchesMainComponent,\n SavedSearchesComponent,\n NewSearchMainComponent,\n NewSearchFieldsComponent\n ],\n exports: [\n FlatpickrModule,\n ],\n providers: [SearchesApiService],\n imports: [\n FormsModule,\n ReactiveFormsModule,\n CommonModule,\n RouterModule,\n NgbNavModule,\n FeatherModule.pick(allIcons),\n DatatableModule,\n FlatpickrModule.forRoot(),\n CampaignDatatableModule\n ]\n})\nexport class SearchesModule { }\n","import * as _ from 'underscore';\r\nimport * as _flatted from 'flatted';\r\nimport { ReplaySubject } from 'rxjs';\r\nimport { Location } from '@angular/common';\r\nimport { filter, takeUntil } from 'rxjs/operators';\r\nimport { ShopApiService } from '../shop.apiservice';\r\nimport { WizardComponent } from 'angular-archwizard';\r\nimport {COMMA, ENTER, N} from '@angular/cdk/keycodes';\r\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { AppService } from '../../../store/app.service';\r\nimport { IUser } from '../../../core/models/auth.models';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport {MatChipInputEvent} from '@angular/material/chips';\r\nimport { IClient } from '../../../core/models/clients.models';\r\nimport { ICompany,} from '../../../core/models/datafeed.models';\r\nimport { getRolesForPage } from '../../../core/helpers/utility';\r\nimport { ICampaign } from '../../../core/models/campaigns.model';\r\nimport { ClientsApiService } from '../../clients/clients.apiservice';\r\nimport { UtilityService } from '../../../core/helpers/utility.service';\r\nimport { DataFeedService } from '../../../shared/api/datafeed.service';\r\nimport { CampaignsApiService } from '../../campaigns/campaigns.apiservice';\r\nimport { FormArray, FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { ProductInputComponent } from '../product-input/product-input.component';\r\nimport { PaymentMethodApiService } from '../../my-account/payment-method/payment-method.apiservice';\r\nimport { AddPaymentMethodModal } from '../../../shared/modals/add-payment-method/add-payment-method.component';\r\nimport { CART_STEPS, PAGE_NAMES, PRODUCT_FAMILY, PRODUCT_TYPES, TRX_STATUS } from '../../../core/helpers/constants';\r\nimport { Component, ElementRef, HostListener, OnInit, OnDestroy, ViewChild, ViewChildren, QueryList } from '@angular/core';\r\nimport { CartStepData, CouponResponse, ICart, ICartData, ICartProductDetails, IProductFinalized, IProductMain, IProductMedia } from '../../../core/models/products.models';\r\n\r\nexport interface Coupon {\r\n name: string;\r\n}\r\n\r\n@Component({\r\n selector: 'app-cart-wizard',\r\n templateUrl: './cart-wizard.component.html',\r\n styleUrls: ['./cart-wizard.component.scss'],\r\n})\r\n\r\nexport class CartWizardComponent implements OnInit, OnDestroy {\r\n @ViewChild(WizardComponent) public wizard!: WizardComponent;\r\n private destroyed$: ReplaySubject<boolean> = new ReplaySubject(1);\r\n @ViewChildren('ProdInputComponent') productInputComponents!: QueryList<ProductInputComponent>;\r\n\r\n // Constants\r\n PRODUCT_TYPES = PRODUCT_TYPES;\r\n PRODUCT_FAMILY = PRODUCT_FAMILY;\r\n CART_STEPS = CART_STEPS;\r\n\r\n ////\r\n product: IProductMain = {} as IProductMain;\r\n productFinalized: IProductFinalized = {} as IProductFinalized;\r\n @ViewChild('stickyBox') stickyBox!: ElementRef;\r\n\r\n // Numbers\r\n chosenPayment: number = -1;\r\n selectedStartTime: number = 0;\r\n private stickyBoxOriginalPosition!: number;\r\n\r\n // Strings\r\n couponCode: string = '';\r\n clientEmail: string = '';\r\n locationTitle: string = '';\r\n brandPlaceholder: string = '';\r\n\r\n // Forms\r\n cartForm!: FormGroup;\r\n campForm!: FormGroup;\r\n paymentForm: FormGroup;\r\n\r\n roleOptions: any = {};\r\n \r\n // Arrays\r\n clientOwnerOf = new Array<string>();\r\n holdClients = new Array<IClient>();\r\n allMyClients = new Array<IClient>();\r\n mapKeys = new Map<string, Array<Map<string, string>>>();\r\n public userRoles: Array<number> = [];\r\n activeUser: IUser = {} as IUser;\r\n saveCardId = new String();\r\n uniqueCouponCodes: Array<string> = [];\r\n myPaymentMethods: Array<any> = new Array<any>();\r\n allCompanies: Array<ICompany> = new Array<ICompany>();\r\n filteredCampaigns = new Map<string, Array<ICampaign>>();\r\n chosenCampaigns = new Array<ICampaign>();\r\n productAdSpendOptions = new Map<string, Array<number>>();\r\n finalizedProducts = new Array<IProductFinalized>();\r\n\r\n paymentSubmitted = false;\r\n selectingDate: boolean = false;\r\n addingGoogle: boolean = false;\r\n addingFacebook: boolean = false;\r\n addingConsulting: boolean = false;\r\n beenHere: boolean = false;\r\n attemptClick: boolean = false;\r\n hasGoogle: boolean = false;\r\n hasFacebook: boolean = false;\r\n requiredInfoCompleted: boolean = false;\r\n isNewCampaign: boolean = false;\r\n isOptionSelected: boolean = false;\r\n isAdmin: boolean = false;\r\n //\r\n\r\n readonly separatorKeysCodes = [ENTER, COMMA] as const;\r\n\r\n coupons: Coupon[] = [];\r\n activeCart: ICart = {} as ICart;\r\n cartStepData: CartStepData = {} as CartStepData;\r\n couponResponse: CouponResponse = {} as CouponResponse;\r\n\r\n constructor(\r\n private appService: AppService,\r\n private route: ActivatedRoute,\r\n private shopService: ShopApiService,\r\n private utilService: UtilityService,\r\n private formBuilder: FormBuilder,\r\n private sanitizer: DomSanitizer,\r\n private router: Router,\r\n private datafeedService: DataFeedService,\r\n private campaignApiService: CampaignsApiService,\r\n private modalService: NgbModal,\r\n private location: Location,\r\n private paymentMethodApi: PaymentMethodApiService,\r\n private clientService: ClientsApiService,\r\n public uService: UtilityService\r\n ) {\r\n this.userRoles = [...this.uService.getUserRoles()];\r\n\r\n this.appService.getActiveUser$()\r\n .pipe(takeUntil(this.destroyed$))\r\n .subscribe(u => {\r\n this.activeUser = u;\r\n });\r\n \r\n this.cartForm = this.formBuilder.group({\r\n cartId: [null],\r\n productId: [null],\r\n adSpend: [null],\r\n couponCode: [null, [Validators.required]],\r\n couponId: [null],\r\n stepsData: this.formBuilder.array([])\r\n });\r\n\r\n this.campForm = this.formBuilder.group({\r\n campaignId: [null, [Validators.required]],\r\n clientId: [null, [Validators.required]],\r\n brandName: [null],\r\n studioLocationName: [null],\r\n campaignName: [null],\r\n studioEmail: [null],\r\n studioPhone: [null],\r\n studioStreet: [null],\r\n studioCity: [null],\r\n studioState: [null],\r\n studioZipcode: [null],\r\n fbPageUrl: [null],\r\n crmName: [null],\r\n crmId: [null],\r\n notes: [null],\r\n isFacebook: [null],\r\n isGoogle: [null]\r\n });\r\n\r\n this.paymentForm = this.formBuilder.group({\r\n methodId: [null, [Validators.required]],\r\n clientId: [null, [Validators.required]],\r\n nickname: [null],\r\n firstName: [null],\r\n lastName: [null, []],\r\n cardNumber: [null, []],\r\n cardCVV: [null],\r\n cardExpiryDate: [null],\r\n agreeTerms: [null, [Validators.requiredTrue]],\r\n address: [null, [Validators.required]],\r\n city: [null, [Validators.required]],\r\n state: [null, [Validators.required]],\r\n zip: [null, [Validators.required]],\r\n });\r\n\r\n this.fc.campaignId.setValidators(this.isNewCampaign ? [] : [Validators.required]);\r\n var validators = this.isNewCampaign ? [Validators.required] : [];\r\n this.fc.brandName.setValidators(validators);\r\n this.fc.studioLocationName.setValidators(validators);\r\n this.fc.studioEmail.setValidators(validators);\r\n this.fc.studioPhone.setValidators(validators);\r\n this.fc.studioStreet.setValidators(validators);\r\n this.fc.campaignId.updateValueAndValidity();\r\n this.fc.brandName.updateValueAndValidity();\r\n this.fc.studioLocationName.updateValueAndValidity();\r\n this.fc.studioEmail.updateValueAndValidity();\r\n this.fc.studioPhone.updateValueAndValidity();\r\n this.fc.studioStreet.updateValueAndValidity();\r\n this.fc.crmName.updateValueAndValidity();\r\n this.fc.crmId.updateValueAndValidity();\r\n }\r\n\r\n ngOnInit(): void {\r\n this.datafeedService.getAssociatedCompanies()\r\n .pipe(takeUntil(this.destroyed$))\r\n .subscribe((response: any) => {\r\n if (response.good) {\r\n this.allCompanies = [...response.data];\r\n var checkCompanies = new Array<ICompany>();\r\n this.allCompanies.forEach((x: ICompany) => {\r\n if ((checkCompanies.find(y => y.id === x.id) === undefined)) {\r\n checkCompanies.push(x);\r\n }\r\n });\r\n this.allCompanies = checkCompanies;\r\n }\r\n });\r\n\r\n this.appService.getActiveUser$()\r\n .pipe(takeUntil(this.destroyed$))\r\n .subscribe(u => {\r\n var r = getRolesForPage(u.roles, PAGE_NAMES.Clients);\r\n this.isAdmin = r.isAdmin;\r\n this.clientOwnerOf = [...u.clientOwnerOf];\r\n if (r.options) {\r\n this.roleOptions = JSON.parse(r.options!);\r\n }\r\n });\r\n\r\n let cartId = this.route.snapshot.paramMap.get('id')!;\r\n\r\n if (cartId) {\r\n this.shopService.getCartDetails(cartId)\r\n .pipe(takeUntil(this.destroyed$))\r\n .subscribe((cart: any) => {\r\n this.activeCart = cart.data;\r\n if (cart.data.currentStep > 1) {\r\n this.router.navigate(['/pages/shop']);\r\n }\r\n this.appService.clearCartProductDetails$();\r\n this.appService.fetchCartProductDetails(cart.data.productId);\r\n\r\n this.appService.getCartProductDetails$()\r\n .pipe(filter(x => !_.isEmpty(x)))\r\n .subscribe((prod: IProductMain) => {\r\n this.product = _.clone(prod);\r\n this.product.media.src = this.utilService.byteToImageSrc(prod.media.blob);\r\n if (cart.data.currentStep === CART_STEPS.BundleDetails) {\r\n if (this.product.familyCode !== PRODUCT_FAMILY.Bundle) {\r\n let pp = _.clone(this.product);\r\n pp.productsInBundle = [];\r\n this.product.productsInBundle = [pp];\r\n }\r\n let i = 0;\r\n let amountsArr = new Array<number>();\r\n _.sortBy(this.product.productsInBundle, \"sortOrder\").forEach((p: ICartProductDetails) => {\r\n if (p.type === PRODUCT_TYPES.VariableSubscription.code) {\r\n amountsArr = p.variableSubscription.map(x => x.amount).sort((n1, n2) => n1 - n2);\r\n if (this.product.familyCode === PRODUCT_FAMILY.Bundle) {\r\n p.bundleId = this.product.id!;\r\n p.bundleName = this.product.name!;\r\n }\r\n this.productAdSpendOptions.set(p.id, amountsArr);\r\n }\r\n p.stepCode = this.activeCart.currentStep;\r\n (p.media as IProductMedia).src = this.sanitizer.bypassSecurityTrustUrl('data:image/png;base64,' + p.media.blob);\r\n this.addStepData(p);\r\n this.stepsData.at(i).get('adSpend')?.setValue(amountsArr[0])\r\n i++;\r\n });\r\n this.onNext(1);\r\n }\r\n else if (cart.data.currentStep === CART_STEPS.RequiredInfo) {\r\n if (this.product.type !== PRODUCT_FAMILY.Bundle) {\r\n let pp = _.clone(this.product);\r\n pp.productsInBundle = [];\r\n this.product.productsInBundle = [pp]\r\n }\r\n let formValues = cart.data.cartData.find((x: any) => x.stepCode === CART_STEPS.RequiredInfo)?.formData;\r\n if (formValues) {\r\n let parsedFormValues = JSON.parse(formValues);\r\n setTimeout(() => {\r\n for (let prodComp of this.productInputComponents.toArray()) {\r\n let formValues = parsedFormValues.find((x: any) => x.familyCode === prodComp.getFormKey());\r\n if (formValues)\r\n prodComp.setFormValues(formValues);\r\n }\r\n }, 1);\r\n }\r\n }\r\n else if (cart.data.currentStep === CART_STEPS.Cart) {\r\n if (this.product.type !== PRODUCT_FAMILY.Bundle) {\r\n let pp = _.clone(this.product);\r\n pp.productsInBundle = [];\r\n this.product.productsInBundle = [pp]\r\n }\r\n let ddArray = JSON.parse(cart.data.cartData.find((x: any) => x.stepCode === CART_STEPS.Cart)?.formData);\r\n if (ddArray[0]) {\r\n this.cartStepData = ddArray[0] as CartStepData\r\n }\r\n else {\r\n this.cartStepData.subtotal = this.product.productsInBundle.map((x: any) => x.data.price).reduce((s: number, f: number) => {\r\n return s + f;\r\n }, 0);\r\n this.cartStepData.total = this.cartStepData.subtotal;\r\n }\r\n if (ddArray[1]) {\r\n this.couponResponse = ddArray[1] as CouponResponse\r\n }\r\n this.cartForm.patchValue({ couponCode: this.couponResponse.code })\r\n }\r\n this.doFinalizeProducts();\r\n });\r\n this.cartForm.patchValue({\r\n cartId: cart.data.id,\r\n productId: this.activeCart.productId,\r\n });\r\n });\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroyed$.next(true);\r\n this.destroyed$.complete();\r\n }\r\n\r\n get fc() { return this.campForm.controls; }\r\n\r\n get fp() { return this.paymentForm.controls! }\r\n\r\n public get stepsData(): FormArray {\r\n return this.cartForm.get('stepsData') as FormArray\r\n }\r\n\r\n addStepData(cartProduct: ICartProductDetails) {\r\n const newStepData = this.formBuilder.group({\r\n id: cartProduct.id,\r\n signupFee: cartProduct.data.signupFee,\r\n display: cartProduct.display,\r\n familyCode: cartProduct.familyCode,\r\n description: cartProduct.description,\r\n stepCode: cartProduct.stepCode,\r\n type: cartProduct.type,\r\n mediaUrl: cartProduct.media.src,\r\n required: false,\r\n duration: cartProduct.data.duration,\r\n includeProduct: [true],\r\n isGoogle: cartProduct.isGoogle,\r\n isFacebook: cartProduct.isFacebook,\r\n price: cartProduct.data.price,\r\n frequency: cartProduct.data.frequency,\r\n bundleId: cartProduct.bundleId,\r\n bundleName: cartProduct.bundleName,\r\n isRequired: cartProduct.isRequired,\r\n adSpend: [1],\r\n })\r\n this.stepsData.push(newStepData);\r\n }\r\n\r\n // Payment\r\n // Checking and Changing Payment Info\r\n onPaymentClientChange(clientId: any) {\r\n this.chosenPayment = -1;\r\n var submitId = (clientId.id !== undefined) ? clientId.id : clientId;\r\n \r\n const sub = this.datafeedService.getPaymentMethodsByClientId(submitId)\r\n .subscribe(res => {\r\n res.data.map((x: any) => x.cardNumber = `****${x.cardNumber}`)\r\n this.myPaymentMethods = [...res.data];\r\n this.checkPayment();\r\n setTimeout(() => { sub.unsubscribe(); }, 0);\r\n });\r\n \r\n this.paymentForm.patchValue({\r\n methodId: null,\r\n address: null,\r\n city: null,\r\n state: null,\r\n zip: null,\r\n });\r\n }\r\n\r\n // Payment Method Change\r\n onPaymentMethodChange(pid: any) {\r\n if (pid && this.chosenPayment !== -1) {\r\n let e = this.myPaymentMethods.find(x => x.id === pid);\r\n this.paymentForm.patchValue({\r\n methodId: pid,\r\n address: e.address,\r\n city: e.city,\r\n state: e.state,\r\n zip: e.zip,\r\n });\r\n } else {\r\n this.paymentForm.patchValue({\r\n methodId: null,\r\n address: null,\r\n city: null,\r\n state: null,\r\n zip: null,\r\n });\r\n }\r\n }\r\n\r\n // Check for valid date.\r\n checkPayment() {\r\n const currentDate = new Date();\r\n var currentYear = currentDate.getFullYear();\r\n var currentMonth = currentDate.getMonth() + 1;\r\n this.myPaymentMethods.forEach((x: any) => {\r\n this.paymentMethodApi.getPaymentMethod(x.id)\r\n .pipe(takeUntil(this.destroyed$)).subscribe((response: any) => {\r\n if(response.paymentMethod.paymentType == 'Card'){\r\n if ((Number(response.paymentMethod.expiry.substring(2, 4) > Number(String(currentYear).substring(2, 4)))) || ((Number(response.paymentMethod.expiry.substring(2, 4) == Number(String(currentYear).substring(2, 4)))) && (Number(response.paymentMethod.expiry.substring(0, 2) >= currentMonth)))) {\r\n x.expiry = response.paymentMethod.expiry.substring(0, 2) + '/' + response.paymentMethod.expiry.substring(2, 4);\r\n if (x.id === this.saveCardId) {\r\n this.choosePayment(this.myPaymentMethods.indexOf(x));\r\n this.onPaymentMethodChange(x.id);\r\n }\r\n }\r\n }\r\n else{\r\n x.expiry = '';\r\n if (x.id === this.saveCardId) {\r\n this.choosePayment(this.myPaymentMethods.indexOf(x));\r\n this.onPaymentMethodChange(x.id);\r\n }\r\n }\r\n });\r\n });\r\n }\r\n\r\n //\r\n doSubmitPaymentForm() {\r\n this.paymentSubmitted = true;\r\n if (this.paymentForm.invalid)\r\n return false;\r\n return true;\r\n }\r\n\r\n //\r\n getPaymentFormValues() {\r\n if (!this.paymentForm.invalid)\r\n return this.paymentForm.value;\r\n }\r\n\r\n // Adding New Method\r\n onAddNewPaymentMethod() {\r\n const dialogRef = this.modalService.open(AddPaymentMethodModal, { size: 'lg', backdrop: 'static' });\r\n dialogRef.componentInstance.isShopOrder = true;\r\n dialogRef.componentInstance.oSaveClicked.subscribe((response: any) => {\r\n this.saveCardId = response.paymentMethod.id;\r\n this.onPaymentClientChange(this.paymentForm.controls[\"clientId\"].value);\r\n });\r\n }\r\n\r\n //\r\n choosePayment(newIndex: number) {\r\n if (this.chosenPayment === newIndex) {\r\n this.chosenPayment = -1;\r\n }\r\n else {\r\n this.chosenPayment = newIndex;\r\n }\r\n }\r\n\r\n // Campaign & Naming (Part 1)\r\n onNameChange(evt: any) {\r\n let a = this.fc.brandName?.value || '';\r\n let b = this.fc.studioLocationName?.value || '';\r\n this.fc.campaignName.setValue(a + ' ' + b);\r\n }\r\n\r\n // Adding Coupon\r\n add(event: MatChipInputEvent): void {\r\n const value = (event.value || '').trim();\r\n if (value) {\r\n this.coupons.push({name: value});\r\n }\r\n event.chipInput!.clear();\r\n }\r\n \r\n // Removing Coupon\r\n remove(coupon: Coupon): void {\r\n const index = this.coupons.indexOf(coupon);\r\n if (index >= 0) {\r\n this.coupons.splice(index, 1);\r\n }\r\n }\r\n\r\n // Selecting Date (Date Part 1???)\r\n clickDate(newDate: number) {\r\n if (this.selectingDate || this.selectedStartTime === 0) {\r\n this.selectedStartTime = newDate;\r\n if (newDate === 2) {\r\n // this.updateCartProductPrices('Firsst');\r\n if (this.coupons.find(x => x.name.toLowerCase() === 'first') !== undefined) {\r\n this.remove(this.coupons.find(x => x.name.toLowerCase() === 'first')!);\r\n }\r\n this.coupons.push({name: 'first'});\r\n this.onApplyCoupon();\r\n }\r\n else {\r\n if (this.coupons.find(x => x.name.toLowerCase() === 'first') !== undefined) {\r\n this.remove(this.coupons.find(x => x.name.toLowerCase() === 'first')!);\r\n }\r\n this.onApplyCoupon();\r\n }\r\n this.selectingDate = false;\r\n }\r\n }\r\n\r\n //\r\n onApplyCoupon() {\r\n this.cartForm.controls['couponCode'].updateValueAndValidity();\r\n var couponStr = Array.prototype.map.call(this.coupons, s => s.name).toString(); // \"1,2,3\"\r\n this.updateCartProductPrices(couponStr);\r\n return;\r\n }\r\n\r\n // GEt CAmpaigns (PArt 1?)\r\n getCampaignsByClient(clientId: string) {\r\n this.campForm.patchValue({ campaignId: null });\r\n this.campaignApiService.getCampaignsByClient(clientId)\r\n .pipe(takeUntil(this.destroyed$))\r\n .subscribe((res: any) => {\r\n if (res.good) {\r\n const updatedCampaigns = res.data.map((x: any) => {\r\n x.disabled = x.rmSubscriptionId != null && x.rmSubscriptionId.length > 0;\r\n x.subscriptionId = x.rmSubscriptionId;\r\n return x;\r\n });\r\n updatedCampaigns.forEach((x: ICampaign) => {\r\n if (x.platform === 'Facebook') {\r\n var name = x.name.substring(0, x.name.indexOf(' FB'));\r\n }\r\n else {\r\n var name = x.name;\r\n }\r\n if (this.filteredCampaigns.get(name) === undefined) {\r\n this.filteredCampaigns.set(name, []); // Initialize an array for this campaign name if it doesn't exist\r\n }\r\n const group = this.filteredCampaigns.get(name); // Add the current campaign to its respective group\r\n group?.push(x);\r\n if (this.mapKeys.get(clientId) === undefined) {\r\n this.mapKeys.set(clientId, new Array<Map<string,string>>());\r\n }\r\n // checkDup is now the array of Maps of string\r\n var checkDup = this.mapKeys.get(clientId);\r\n if (checkDup!.find(x => x.get('name') === name) === undefined) {\r\n this.mapKeys.get(clientId)?.push(new Map([[\"name\", name], [\"platform\", x.platform]]));\r\n this.mapKeys.get(clientId)?.sort((a, b) => a.get('name')!.localeCompare(b.get('name')!));\r\n }\r\n\r\n // if (checkDup!.includes(name) === false) {\r\n // this.mapKeys.get(clientId)?.push(name);\r\n // this.mapKeys.get(clientId)?.sort((a, b) => a!.localeCompare(b!));;\r\n // }\r\n });\r\n }\r\n });\r\n }\r\n\r\n // Products\r\n doFinalizeProducts() {\r\n this.finalizedProducts = [];\r\n for (let ctrl of this.stepsData.controls) {\r\n let id = (ctrl as FormGroup).controls.id.value;\r\n let include = (ctrl as FormGroup).controls.includeProduct?.value;\r\n if (include) {\r\n let fProduct = this.product.productsInBundle.find(x => x.id === id) as IProductFinalized;\r\n if (fProduct !== undefined) {\r\n if (fProduct.bundleId === undefined) {\r\n fProduct.bundleId = '';\r\n }\r\n if ((fProduct.type !== undefined) && (fProduct.type === PRODUCT_TYPES.VariableSubscription.code)) {\r\n fProduct.adSpend = (ctrl as FormGroup).controls.adSpend?.value;\r\n if (typeof (fProduct.adSpend) === 'string') {\r\n fProduct.adSpend = parseInt(fProduct.adSpend);\r\n }\r\n }\r\n if ((this.product !== undefined) && (this.product.type === PRODUCT_FAMILY.Bundle)) {\r\n if (this.product !== undefined) {\r\n if (this.product.id !== undefined) {\r\n fProduct.bundleId = this.product.id;\r\n }\r\n if (this.product.name !== undefined) {\r\n fProduct.bundleName = this.product.name;\r\n }\r\n }\r\n }\r\n this.finalizedProducts.push(fProduct);\r\n }\r\n }\r\n }\r\n if (this.finalizedProducts.filter(x => x.familyCode !== PRODUCT_FAMILY.AdSpend).length === 0) {\r\n this.requiredInfoCompleted = true;\r\n }\r\n }\r\n\r\n // DATES PART 2\r\n showRecurring() {\r\n return this.finalizedProducts.findIndex(x => x.type === PRODUCT_TYPES.SimpleSubscription.code || x.type === PRODUCT_TYPES.VariableSubscription.code) >= 0;\r\n }\r\n\r\n //\r\n getRecurringDate(): any {\r\n var recurringDate = this.finalizedProducts.find(x => x.type === PRODUCT_TYPES.SimpleSubscription.code || x.type === PRODUCT_TYPES.VariableSubscription.code)?.recurringStartDate;\r\n if (recurringDate === undefined) {\r\n recurringDate = '';\r\n }\r\n return recurringDate;\r\n }\r\n\r\n // \r\n getStartDate(): any {\r\n var startDate = this.finalizedProducts.find(x => x.type === PRODUCT_TYPES.SimpleSubscription.code || x.type === PRODUCT_TYPES.VariableSubscription.code)?.prorateSDate;\r\n if (startDate === undefined) {\r\n startDate = new Date(1900);\r\n }\r\n return startDate;\r\n }\r\n\r\n //\r\n getEndDate(): any {\r\n var endDate = this.finalizedProducts.find(x => x.type === PRODUCT_TYPES.SimpleSubscription.code || x.type === PRODUCT_TYPES.VariableSubscription.code)?.prorateEDate;\r\n if (endDate === undefined) {\r\n endDate = new Date(1900);\r\n }\r\n return endDate;\r\n }\r\n\r\n // STEPS\r\n async onStepEnter(evt: any, stepCode: number) {\r\n if (this.activeCart && this.activeCart.currentStep && this.activeCart.currentStep !== stepCode) {\r\n this.shopService.updateCartStep(this.activeCart.id, stepCode)\r\n .subscribe((r: any) => {\r\n if (r.good) {\r\n this.activeCart.currentStep = stepCode;\r\n }\r\n });\r\n }\r\n if (stepCode === CART_STEPS.BundleDetails) {\r\n if (this.beenHere) {\r\n this.router.navigate(['/pages/shop']);\r\n }\r\n this.beenHere = true;\r\n }\r\n if (stepCode === CART_STEPS.RequiredInfo) {\r\n if (this.coupons.find(x => x.name.toLowerCase() === 'first') !== undefined) {\r\n this.remove(this.coupons.find(x => x.name.toLowerCase() === 'first')!);\r\n }\r\n await this.checkHasPlatform();\r\n window.scrollTo(0, 0);\r\n this.isOptionSelected = false;\r\n this.requiredInfoCompleted = false;\r\n this.isNewCampaign = false;\r\n this.campForm.controls[\"clientId\"].setValue('');\r\n this.paymentForm.controls[\"clientId\"].setValue('');\r\n this.locationTitle = '';\r\n this.hasGoogle = false;\r\n this.hasFacebook = false;\r\n if (this.finalizedProducts.filter(x => x.familyCode !== PRODUCT_FAMILY.AdSpend).length > 0) {\r\n this.datafeedService.getClientsFeedByIds(this.clientOwnerOf)\r\n .pipe(takeUntil(this.destroyed$))\r\n .subscribe((res: any) => {\r\n if (res.good) {\r\n res.data.map((x: IClient) => x.fullName = x.firstName + ' ' + x.lastName)\r\n this.allMyClients = [...res.data];\r\n this.holdClients = this.allMyClients;\r\n if (!this.userRoles.includes(1) && !this.userRoles.includes(4)) {\r\n // this.checkoutClients = this.allMyClients;\r\n this.allMyClients.forEach((x: IClient) => {\r\n this.getCampaignsByClient(x.id);\r\n });\r\n }\r\n }\r\n });\r\n }\r\n }\r\n else if (stepCode === CART_STEPS.Cart) {\r\n if (this.coupons.find(x => x.name.toLowerCase() === 'first') !== undefined) {\r\n this.remove(this.coupons.find(x => x.name.toLowerCase() === 'first')!);\r\n }\r\n window.scrollTo(0, 0);\r\n this.paymentSubmitted = false;\r\n this.chosenPayment = -1;\r\n this.paymentForm.patchValue({\r\n methodId: null,\r\n address: null,\r\n city: null,\r\n state: null,\r\n zip: null,\r\n });\r\n this.fp.agreeTerms.reset();\r\n this.selectedStartTime = 0;\r\n\r\n setTimeout(() => {\r\n this.stickyBoxOriginalPosition = this.stickyBox.nativeElement.offsetTop;\r\n });\r\n this.updateCartProductPrices(null);\r\n }\r\n }\r\n \r\n // VISUAL?\r\n @HostListener('window:scroll', [])\r\n onWindowScroll() {\r\n if (this.activeCart.currentStep===CART_STEPS.Cart) {\r\n const stickyBoxCurrentPosition = window.pageYOffset + this.stickyBox.nativeElement.getBoundingClientRect().top;\r\n if (window.pageYOffset > this.stickyBoxOriginalPosition + 200) {\r\n this.stickyBox.nativeElement.style.position = 'fixed';\r\n this.stickyBox.nativeElement.style.top = '90px';\r\n this.stickyBox.nativeElement.style.right = '65px';\r\n } else {\r\n this.stickyBox.nativeElement.style.position = 'relative';\r\n this.stickyBox.nativeElement.style.top = `${this.stickyBoxOriginalPosition}px`;\r\n this.stickyBox.nativeElement.style.right = '0px';\r\n }\r\n }\r\n }\r\n\r\n // FILL\r\n continueToCart() {\r\n if (((!this.hasFacebook) && (!this.hasGoogle)) || (!this.addingFacebook && !this.addingGoogle)) {\r\n window.scrollTo(0, 0);\r\n if (!this.showRecurring()) {\r\n this.selectedStartTime = 1;\r\n this.updateCartProductPrices(null);\r\n }\r\n else {\r\n this.updateCartProductPrices(null);\r\n }\r\n if (this.myPaymentMethods.length === 1) {\r\n this.choosePayment(0); \r\n this.onPaymentMethodChange(this.myPaymentMethods[0].id);\r\n }\r\n this.onNext(CART_STEPS.Cart);\r\n this.wizard.goToNextStep();\r\n }\r\n }\r\n\r\n // FIll && NAVIGATION\r\n onNext(stepCode: number) {\r\n let thisStepData = this.activeCart.cartData.find(x => x.stepCode == stepCode)!\r\n\r\n if (stepCode === CART_STEPS.BundleDetails) {\r\n let formData = this.activeCart;\r\n thisStepData.formData = JSON.stringify(this.stepsData.value);\r\n this.shopService.saveCart(formData)\r\n .pipe(takeUntil(this.destroyed$))\r\n .subscribe((x: any) => {\r\n if (x.good) {\r\n this.wizard.goToNextStep();\r\n this.activeCart.currentStep = stepCode + 1;\r\n }\r\n })\r\n }\r\n else if ((stepCode === CART_STEPS.RequiredInfo)) {\r\n if ((this.isNewCampaign && ((this.fc.studioLocationName.value !== null) && (this.fc.clientId.value !== null) && (this.fc.clientId.value !== '') && (this.fc.brandName.value !== null) && (this.fc.studioEmail.value !== null) && (this.fc.studioPhone.value !== null) && (this.fc.studioStreet.value !== null))) || !this.isNewCampaign) {\r\n this.attemptClick = false;\r\n this.fc.campaignId.setValidators([]);\r\n var validators = this.isNewCampaign ? [Validators.required] : [];\r\n this.fc.brandName.setValidators(validators);\r\n this.fc.studioLocationName.setValidators(validators);\r\n this.fc.studioEmail.setValidators(validators);\r\n this.fc.studioPhone.setValidators(validators);\r\n this.fc.studioStreet.setValidators(validators);\r\n this.fc.campaignId.updateValueAndValidity();\r\n this.fc.brandName.updateValueAndValidity();\r\n this.fc.studioLocationName.updateValueAndValidity();\r\n this.fc.studioEmail.updateValueAndValidity();\r\n this.fc.studioPhone.updateValueAndValidity();\r\n this.fc.studioStreet.updateValueAndValidity();\r\n this.fc.crmName.updateValueAndValidity();\r\n this.fc.crmId.updateValueAndValidity();\r\n\r\n if (this.fc.brandName.value !== null) {\r\n this.fc.brandName.setValue(this.fc.brandName.value.trim());\r\n }\r\n if (this.fc.campaignName.value !== null) {\r\n this.fc.campaignName.setValue(this.fc.campaignName.value.trim());\r\n }\r\n if (this.fc.crmId.value !== null) {\r\n this.fc.crmId.setValue(this.fc.crmId.value.trim());\r\n }\r\n if (this.fc.crmName.value !== null) {\r\n this.fc.crmName.setValue(this.fc.crmName.value.trim());\r\n }\r\n if (this.fc.fbPageUrl.value !== null) {\r\n this.fc.fbPageUrl.setValue(this.fc.fbPageUrl.value.trim());\r\n }\r\n if (this.fc.studioStreet.value !== null) {\r\n this.fc.studioStreet.setValue(this.fc.studioStreet.value.trim());\r\n }\r\n if (this.fc.studioCity.value !== null) {\r\n this.fc.studioCity.setValue(this.fc.studioCity.value.trim());\r\n }\r\n if (this.fc.studioState.value !== null) {\r\n this.fc.studioState.setValue(this.fc.studioState.value.trim());\r\n }\r\n if (this.fc.studioZipcode.value !== null) {\r\n this.fc.studioZipcode.setValue(this.fc.studioZipcode.value.trim());\r\n }\r\n if (this.fc.studioEmail.value !== null) {\r\n this.fc.studioEmail.setValue(this.fc.studioEmail.value.trim());\r\n }\r\n if (this.fc.studioLocationName.value !== null) {\r\n this.fc.studioLocationName.setValue(this.fc.studioLocationName.value.trim());\r\n }\r\n if (this.fc.studioPhone.value !== null) {\r\n this.fc.studioPhone.setValue(this.fc.studioPhone.value.trim());\r\n }\r\n \r\n if (this.isNewCampaign) {\r\n this.campForm.controls[\"campaignId\"].setValue(null);\r\n this.locationTitle = this.campForm.controls['campaignName'].value;\r\n }\r\n else {\r\n this.campForm.controls[\"campaignId\"].setValue(this.chosenCampaigns[0].id)\r\n }\r\n var isConsulting = false;\r\n this.stepsData.controls.forEach((x: any) => {\r\n if (x.value.display.includes('Consulting')) {\r\n isConsulting = true;\r\n }\r\n });\r\n if (!this.addingFacebook && !this.addingGoogle && isConsulting) {\r\n this.locationTitle = this.locationTitle + ' Campaign Consulting';\r\n this.campForm.controls['campaignName'].setValue(this.campForm.controls['campaignName'].value + ' Campaign Consulting');\r\n }\r\n\r\n this.appService.getActiveUser$()\r\n .pipe(takeUntil(this.destroyed$))\r\n .subscribe(u => {\r\n if ((this.campForm.controls[\"clientId\"].value == null) || !this.isNewCampaign) {\r\n this.campForm.controls[\"clientId\"].setValue(this.allMyClients[0].id);\r\n this.paymentForm.controls[\"clientId\"].setValue(this.allMyClients[0].id);\r\n this.onPaymentClientChange(this.allMyClients[0].id);\r\n }\r\n else {\r\n this.paymentForm.controls[\"clientId\"].setValue(this.campForm.controls[\"clientId\"].value);\r\n this.onPaymentClientChange(this.campForm.controls[\"clientId\"].value);\r\n }\r\n });\r\n\r\n var isCampValid = this.campForm.valid;\r\n if (isCampValid) {\r\n this.activeCart.currentStep = CART_STEPS.RequiredInfo;\r\n\r\n if (thisStepData === undefined) {\r\n this.activeCart.cartData.push({\r\n stepCode: CART_STEPS.RequiredInfo,\r\n formData: JSON.stringify(this.campForm.value)\r\n } as ICartData)\r\n }\r\n else {\r\n thisStepData.formData = JSON.stringify(this.campForm.value);\r\n }\r\n this.shopService.saveCart(this.activeCart)\r\n .pipe(takeUntil(this.destroyed$))\r\n .subscribe((x: any) => {\r\n if (x.good) {\r\n this.wizard.goToNextStep();\r\n this.activeCart.currentStep = stepCode + 1;\r\n }\r\n })\r\n }\r\n }\r\n }\r\n else if (stepCode === CART_STEPS.Cart) {\r\n this.activeCart.currentStep = CART_STEPS.Cart;\r\n let infoFormData = [this.cartStepData, this.couponResponse];\r\n if (thisStepData === undefined) {\r\n this.activeCart.cartData.push({\r\n stepCode: CART_STEPS.Cart,\r\n formData: JSON.stringify(infoFormData)\r\n } as ICartData);\r\n this.onNext(CART_STEPS.Cart);\r\n }\r\n else {\r\n thisStepData.formData = JSON.stringify(infoFormData);\r\n this.shopService.saveCart(this.activeCart)\r\n .pipe(takeUntil(this.destroyed$))\r\n .subscribe((x: any) => {\r\n if (x.good) {\r\n }\r\n });\r\n }\r\n }\r\n else if (stepCode === CART_STEPS.Checkout) {\r\n this.clientService.getClientDetails(this.paymentForm.controls[\"clientId\"].value)\r\n .pipe(takeUntil(this.destroyed$))\r\n .subscribe((response: any) => {\r\n this.clientEmail = response.data.email;\r\n });\r\n\r\n let readyForCheckout = this.doSubmitPaymentForm();\r\n if (readyForCheckout) {\r\n this.activeCart.currentStep = CART_STEPS.Checkout;\r\n // right here - gotta change the order amount depending on the product\r\n let formData = [{ ...this.getPaymentFormValues(), orderAmount: this.cartStepData.total.toFixed(2) }];\r\n if (thisStepData === undefined) {\r\n // turn around if invalid\r\n if (this.finalizedProducts[0].type !== PRODUCT_FAMILY.Bundle) {\r\n this.finalizedProducts = [...this.finalizedProducts];\r\n }\r\n this.finalizedProducts.map(x => { x.media.blob = '', x.media.src = '' });\r\n this.activeCart.cartData.push({\r\n stepCode: CART_STEPS.Checkout,\r\n formData: JSON.stringify(formData),\r\n productsData: JSON.stringify(this.finalizedProducts),\r\n couponId: (this.couponResponse.couponApplied && this.couponResponse.couponApplied === true) ? this.couponResponse.id : null\r\n } as ICartData);\r\n }\r\n else {\r\n thisStepData.formData = JSON.stringify(formData);\r\n }\r\n this.shopService.saveCart(this.activeCart)\r\n .pipe(takeUntil(this.destroyed$))\r\n .subscribe((x: any) => {\r\n if (x.good) {\r\n if (x.data.response.transactionStatus === TRX_STATUS.TransactionApproved) {\r\n this.router.navigate(['/pages/shop/ordercomplete', 1, x.data.response.orderNumber, x.data.response.orderId, this.clientEmail, this.getRecurringDate()]);\r\n }\r\n else if (x.data.response.transactionStatus === TRX_STATUS.TransactionDeclined || x.data.response.transactionStatus === TRX_STATUS.Error ) {\r\n this.router.navigate(['/pages/shop/ordercomplete', 0, x.data.response.orderNumber, x.data.response.orderId,]);\r\n }\r\n }\r\n });\r\n }\r\n }\r\n }\r\n\r\n // Client Change ??\r\n onClientChange(event: any) {\r\n if ((event.fullName !== '') && (event.fullName !== undefined) && (event.fullName !== null)) {\r\n this.filteredCampaigns = new Map<string, Array<ICampaign>>();\r\n // this.mapKeys = new Map<string, Array<string>>();\r\n this.mapKeys = new Map<string, Array<Map<string,string>>>();\r\n this.allMyClients = this.holdClients.filter(x => x.fullName.toLowerCase().includes(event.fullName.toLowerCase()));\r\n this.allMyClients.forEach((x: IClient) => {\r\n this.getCampaignsByClient(x.id);\r\n });\r\n } \r\n }\r\n\r\n // NAVIGATION (Part 1??)\r\n onPrevious(stepCode: number) {\r\n this.shopService.updateCartStep(this.activeCart.id, stepCode)\r\n .subscribe((r: any) => {\r\n if (r.good) {\r\n this.wizard.goToPreviousStep();\r\n this.activeCart.currentStep = stepCode;\r\n }\r\n });\r\n }\r\n\r\n // To The Cart (Part 2??)\r\n updateCartProductPrices(couponCode: any) {\r\n var yourDate = new Date();\r\n const offset = yourDate.getTimezoneOffset();\r\n yourDate = new Date(yourDate.getTime() - (offset*60*1000));\r\n let todayAtUserComputer = yourDate.toISOString().split('T')[0];\r\n let getProductPriceRequest: { productIds: string[], productsAdSpend: any[], couponCode: any, clientId: any, todayAtUserComputer: string }\r\n = { productIds: [], productsAdSpend: [], couponCode: couponCode, clientId: null, todayAtUserComputer };\r\n \r\n for (let p of this.finalizedProducts) {\r\n getProductPriceRequest.productIds.push(p!.id);\r\n getProductPriceRequest.productsAdSpend.push(p.adSpend);\r\n }\r\n \r\n this.shopService.getCartProductPrices(getProductPriceRequest)\r\n .subscribe((res: any) => {\r\n for (let responseProduct of res.data.cartProductPrices) {\r\n let p = this.finalizedProducts.find(x => x.id === responseProduct.productId);\r\n p!.proratePrice = responseProduct.proratedAmount;\r\n p!.prorateSDate = responseProduct.prorateStartDate;\r\n p!.prorateEDate = responseProduct.prorateEndDate \r\n p!.recurringPrice = responseProduct.recurringPrice;\r\n p!.recurringStartDate = responseProduct.recurringStartDate;\r\n p!.isProrated = responseProduct.isProrated;\r\n if (responseProduct.discount) {\r\n p!.couponAmount = responseProduct.discount;\r\n p!.couponApplied = true;\r\n p!.finalPrice = p!.proratePrice - p!.couponAmount!;\r\n p!.couponCodes = responseProduct.coupon;\r\n }\r\n else {\r\n p!.couponAmount = undefined;\r\n p!.couponApplied = false;\r\n p!.finalPrice = p!.proratePrice;\r\n p!.couponCodes = \"\";\r\n }\r\n }\r\n this.couponResponse = {\r\n isValid: res.data.couponValid,\r\n code: getProductPriceRequest.couponCode,\r\n responseMessage: res.data.couponInvalidationReason,\r\n id: res.data.couponId\r\n };\r\n if (this.couponResponse.isValid) {\r\n this.couponResponse.couponApplied = true;\r\n this.productFinalized.couponApplied = true;\r\n }\r\n this.calculateCartTotalPrices(res.data.discount, res.data);\r\n })\r\n }\r\n\r\n // NAVIGATION (Part ??)\r\n selectedCampaign(clientId: string, campaign: Map<string, string>) {\r\n if (this.checkCampPlatforms(campaign)) {\r\n this.isNewCampaign = false;\r\n this.campForm.controls[\"clientId\"].setValue(clientId);\r\n this.paymentForm.controls[\"clientId\"].setValue(clientId);\r\n this.onPaymentClientChange(clientId);\r\n this.locationTitle = campaign.get('name')!;\r\n this.setCampIds(campaign); \r\n this.onNext(CART_STEPS.RequiredInfo);\r\n }\r\n }\r\n\r\n // Checking ??\r\n async checkHasPlatform() {\r\n this.stepsData.controls.forEach((x: any) => {\r\n if (x.controls.display.value.includes('Google')) {\r\n this.addingGoogle = true;\r\n }\r\n if (x.controls.display.value.includes('Meta')) {\r\n this.addingFacebook = true;\r\n }\r\n if (x.controls.display.value.includes('Consulting')) {\r\n this.addingConsulting = true;\r\n }\r\n });\r\n }\r\n\r\n // Sorting ??\r\n checkCampPlatforms(campaign: Map<string, string>) {\r\n var returningFalse = true;\r\n\r\n if (campaign.get('platform')!.toLowerCase().includes('consulting')) {\r\n if (!this.addingConsulting) {\r\n returningFalse = false;\r\n }\r\n else {\r\n this.filteredCampaigns.get(campaign!.get('name')!)!.forEach((x: ICampaign) => {\r\n if ((((x.subscriptionActive != null) && (x.subscriptionActive)))) {\r\n returningFalse = false;\r\n }\r\n });\r\n }\r\n } else if (campaign.get('platform')!.toLowerCase().includes('national add on')) {\r\n if (this.addingFacebook || this.addingGoogle) {\r\n returningFalse = false;\r\n }\r\n }\r\n else {\r\n if (this.addingConsulting) {\r\n returningFalse = false;\r\n } \r\n else {\r\n this.filteredCampaigns.get(campaign.get('name')!)!.forEach((x: ICampaign) => {\r\n if (((x.platform === 'Facebook') || (x.platform === 'Google')) && (((x.subscriptionActive != null) && (x.subscriptionActive)))) {\r\n returningFalse = false;\r\n }\r\n });\r\n }\r\n }\r\n \r\n return returningFalse;\r\n }\r\n\r\n // SETTING ??\r\n setCampIds(campaign: Map<string, string>) {\r\n this.chosenCampaigns = this.filteredCampaigns.get(campaign.get('name')!)!;\r\n this.chosenCampaigns.forEach((x: ICampaign) => {\r\n this.campaignApiService.getCampaignDetails(x.id)\r\n .pipe(takeUntil(this.destroyed$))\r\n .subscribe((response: any) => {\r\n if (response.data.subscriptionActive) {\r\n if (x.platform === 'Google') {\r\n this.hasGoogle = true;\r\n } else if (x.platform === 'Facebook') {\r\n this.hasFacebook = true;\r\n }\r\n }\r\n });\r\n });\r\n }\r\n\r\n // Cart (Part 3??)\r\n calculateCartTotalPrices(discountAmt: number, data: any) {\r\n let total = 0;\r\n let recurringTotal = 0;\r\n let discountTotal = 0;\r\n let couponCodes = '';\r\n let cartCouponCodes = '';\r\n let cartDiscountTotal = 0;\r\n this.uniqueCouponCodes = [];\r\n\r\n for (let product of this.finalizedProducts) {\r\n total += product.proratePrice;\r\n if (product.data.signupFee) {\r\n total += product.data.signupFee;\r\n }\r\n if (product.couponAmount) {\r\n discountTotal += product.couponAmount\r\n }\r\n recurringTotal += product.recurringPrice;\r\n }\r\n\r\n if (data != null && data.couponsDetails != null) {\r\n for (let coupon of data.couponsDetails) {\r\n if (coupon.productId === null) {\r\n cartDiscountTotal += coupon.discountAmount;\r\n cartCouponCodes += cartCouponCodes.length > 0 ? ',' + coupon.couponCode : coupon.couponCode;\r\n this.uniqueCouponCodes.push(coupon.couponCode);\r\n }\r\n else {\r\n if (couponCodes.indexOf(coupon.couponCode) < 0) {\r\n couponCodes += couponCodes.length > 0 ? ',' + coupon.couponCode : coupon.couponCode;\r\n this.uniqueCouponCodes.push(coupon.couponCode);\r\n }\r\n }\r\n }\r\n }\r\n\r\n this.product.totalRecurringPrice = recurringTotal;\r\n this.product.total = total;\r\n this.productFinalized.couponAmount = discountTotal;\r\n this.cartStepData = {\r\n ...this.cartStepData,\r\n subtotal: this.product.total,\r\n productDiscount: discountTotal,\r\n cartDiscount: cartDiscountTotal,\r\n productCoupon: couponCodes,\r\n cartCoupon: cartCouponCodes,\r\n total: this.product.total - (discountTotal + cartDiscountTotal),\r\n recurringTotal: this.product.totalRecurringPrice,\r\n couponDetails: data != null && data.couponsDetails != null ? data.couponsDetails : null\r\n };\r\n }\r\n\r\n // EDT?? What? Part what??\r\n openEdit(id: any) {\r\n const dialogRef = this.modalService.open(AddPaymentMethodModal, { size: 'lg', backdrop: 'static' });\r\n dialogRef.componentInstance.iId = id;\r\n dialogRef.componentInstance.isShopOrder = true;\r\n dialogRef.dismissed.subscribe(() => {\r\n this.location.go('/pages/myaccount/payment-methods/');\r\n this.onPaymentClientChange(this.paymentForm.controls[\"clientId\"].value);\r\n });\r\n dialogRef.closed.subscribe(() => {\r\n this.location.go('/pages/myaccount/payment-methods/');\r\n this.onPaymentClientChange(this.paymentForm.controls[\"clientId\"].value);\r\n });\r\n dialogRef.componentInstance.oSaveClicked.subscribe(() => {\r\n this.appService.fetchAllUserPaymentMethods();\r\n this.onPaymentClientChange(this.paymentForm.controls[\"clientId\"].value);\r\n })\r\n this.location.go('/pages/myaccount/payment-methods/' + id);\r\n }\r\n\r\n // Added back\r\n onSwitchChange(evt: any, index: number) {\r\n this.stepsData.at(index).get('includeProduct')?.setValue(evt);\r\n this.doFinalizeProducts();\r\n }\r\n\r\n // Needed\r\n placeOrder() {\r\n this.doSubmitPaymentForm();\r\n if ((this.selectedStartTime !== 0) && !this.fp.methodId.errors?.required && !this.fp.agreeTerms.errors?.required && (this.uniqueCouponCodes.length == this.coupons.length)) {\r\n this.onNext(CART_STEPS.Cart); \r\n this.onNext(CART_STEPS.Checkout);\r\n }\r\n }\r\n\r\n // Maybe move?\r\n changeCompanyFill(evt: any) {\r\n this.clientService.getClientDetails(evt.id)\r\n .pipe(takeUntil(this.destroyed$))\r\n .subscribe((response: any) => {\r\n this.brandPlaceholder = response.data.brand;\r\n this.fc.brandName.setValue(response.data.brand);\r\n this.onNameChange(evt);\r\n });\r\n }\r\n}\r\n","<div class=\"card\" style=\"height: 100%; padding: 50px 50px 65px 50px;\">\r\n <aw-wizard class=\"wizard-design\" >\r\n <form style=\"width: 100%\" [formGroup]=\"cartForm\">\r\n <aw-wizard-step (stepEnter)=\"onStepEnter($event,CART_STEPS.BundleDetails);\" style=\"margin-top: 40px; min-height: 400px;\" stepTitle=\"Product(s)\"></aw-wizard-step>\r\n <aw-wizard-step (stepEnter)=\"onStepEnter($event,CART_STEPS.RequiredInfo)\" style=\"margin-top: 40px\" stepTitle=\"Location\">\r\n <div *ngIf=\"!requiredInfoCompleted\">\r\n <div fxLayout=\"column\">\r\n <div *ngIf=\"!isOptionSelected\">\r\n <div fxLayout=\"column\" fxLayoutAlign=\"space-evenly center\">\r\n <div fxLayout=\"column\" fxLayoutAlign=\"start center\">\r\n <div *ngIf=\"this.userRoles.includes(1) || this.userRoles.includes(4)\" fxLayout=\"column\" fxLayoutAlign=\"center start\" style=\"width: 100% !important;\">\r\n <p>Please select a Client Record:</p>\r\n <ng-select style=\"width: 300px !important;\" [items]=\"this.holdClients\" bindLabel=\"fullName\" bindValue=\"id\" (change)=\"onClientChange($event);\"></ng-select>\r\n </div>\r\n <ng-container>\r\n <div style=\"width: 100%; margin-top: 10px; border-bottom: 2px solid grey;\" fxLayout=\"column\" fxLayoutAlign=\"center start\">\r\n <strong style=\"font-size: 24px; margin-left: 1.25vw;\">Create or Reactivate Previous Campaigns</strong>\r\n <p style=\"margin-left: 1.25vw;\">Locations without active subscriptions are eligble to be reactivated.</p>\r\n </div> \r\n <div style=\"width: 70vw !important;\" fxLayout=\"row wrap\" fxLayoutAlign=\"start center\">\r\n <ng-container *ngFor=\"let p of allMyClients; let i=index;\">\r\n <ng-container *ngFor=\"let z of mapKeys.get(p.id); let k=index;\">\r\n <button type=\"button\" *ngIf=\"checkCampPlatforms(z) && (z.get('name') !== '')\" (click)=\"selectedCampaign(p.id, z);\" fxLayout=\"column\" fxLayoutAlign=\"center center\" style=\"text-align: center; margin-top: 30px; margin-right: 1.25vw; margin-left: 1.25vw; width: 15vw !important;\">\r\n <div fxLayout=\"column\" fxLayoutAlign=\"end center\" [ngStyle]=\"{'background-color': (checkCampPlatforms(z)) ? 'transparent' : 'lightgrey'}\" style=\"width: 15vw; padding-left: 20px !important; padding-right: 20px !important; min-height: 250px;\" class=\"block\">\r\n <div style=\"text-align: center; font-weight: bold; font-size: large;\">\r\n {{z.get('name')}}\r\n </div>\r\n <div [ngClass]=\"(checkCampPlatforms(z)) ? 'okay-camp' : 'bad-camp'\">\r\n <mat-icon style=\"height: 35px; width: 35px; font-size: 35px;\">location_city</mat-icon>\r\n </div>\r\n <button class=\"black-button\" [ngStyle]=\"{'color': (checkCampPlatforms(z)) ? 'white' : 'darkgrey'}\">Select Location</button>\r\n </div>\r\n </button>\r\n </ng-container>\r\n </ng-container>\r\n <div fxLayout=\"column\" fxLayoutAlign=\"center center\" style=\"text-align: center; margin-top: 10px;\">\r\n <button type=\"button\" (click)=\"isNewCampaign = true; isOptionSelected = true;\" fxLayout=\"column\" fxLayoutAlign=\"center center\" style=\"text-align: center; margin-top: 30px; margin-right: 1.25vw; margin-left: 1.25vw; width: 15vw !important;\">\r\n <div fxLayout=\"column\" fxLayoutAlign=\"space-between center\" [ngStyle]=\"{'background-color': 'transparent'}\" style=\"width: 15vw; padding-left: 20px !important; padding-right: 20px !important; min-height: 250px;\" class=\"block\">\r\n <div style=\"text-align: center;font-weight: bold;font-size: large;\">\r\n Create a New Campaign\r\n </div>\r\n <div style=\"display: inline-flex; align-items: center; justify-content: center; width: 75px; height: 75px; border-radius: 50%; border: 2px solid grey; color: black; background-color: transparent; cursor: pointer;\">\r\n <mat-icon style=\"color: black; font-size: 35px; width: 35px; height: 35px;\">add_business</mat-icon>\r\n </div>\r\n <button class=\"orange-button\" [ngStyle]=\"{'color': 'white'}\">Create Location</button>\r\n </div>\r\n </button>\r\n </div>\r\n </div>\r\n <div style=\"width: 100%; margin-top: 40px; border-bottom: 2px solid grey;\" fxLayout=\"column\" fxLayoutAlign=\"center start\">\r\n <strong style=\"font-size: 24px; margin-left: 1.25vw; margin-top: 10px;\">Currently Active Locations</strong>\r\n <p style=\"margin-left: 1.25vw;\">Locations with active subscriptions need to be cancelled to start a new platform. To edit the ad spend for these locations, go to the \"Subscriptions\" tab in the menu.</p>\r\n </div>\r\n <div style=\"width: 70vw !important; margin-bottom: 40px;\" fxLayout=\"row wrap\" fxLayoutAlign=\"start center\">\r\n <ng-container *ngFor=\"let p of allMyClients; let i=index;\">\r\n <ng-container *ngFor=\"let z of mapKeys.get(p.id); let k=index;\">\r\n <button type=\"button\" *ngIf=\"!checkCampPlatforms(z) && (z.get('name') !== '')\" fxLayout=\"column\" fxLayoutAlign=\"center center\" style=\"text-align: center; margin-top: 30px; margin-right: 1.25vw; margin-left: 1.25vw; width: 15vw !important;\">\r\n <div fxLayout=\"column\" fxLayoutAlign=\"end center\" [ngStyle]=\"{'background-color': (checkCampPlatforms(z)) ? 'transparent' : 'lightgrey'}\" style=\"width: 15vw !important; padding-left: 20px !important; padding-right: 20px !important; min-height: 250px;\" class=\"block\">\r\n <div style=\"text-align: center; font-weight: bold; font-size: large;\">\r\n {{z.get('name')}}\r\n </div>\r\n <div [ngClass]=\"(checkCampPlatforms(z)) ? 'okay-camp' : 'bad-camp'\">\r\n <mat-icon style=\"height: 35px; width: 35px; font-size: 35px;\">location_city</mat-icon>\r\n </div>\r\n <div style=\"height: 35px;\"></div>\r\n <!-- <button class=\"black-button\" [ngStyle]=\"{'color': (checkCampPlatforms(z)) ? 'white' : 'darkgrey'}\">Select Location</button> -->\r\n </div>\r\n </button>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"isNewCampaign\" class=\"card card-custom\" style=\"text-align: right; padding-bottom: 20px !important;\" class=\"btn\" style=\"border: 5px solid #EBE9EB;\">\r\n <div fxLayout=\"row\" fxLayoutAlign=\"space-between center\">\r\n <h1 class=\"title\">Add New Campaign</h1>\r\n <div style=\"text-align: right;\">\r\n <button type=\"button\" class=\"btn btn-page\" style=\"width: auto; margin-bottom: 20px !important;\" (click)=\"isOptionSelected = false; isNewCampaign = false;\">Change Selection</button>\r\n </div>\r\n </div>\r\n <div>\r\n <form [formGroup]=\"campForm\">\r\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\">\r\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\" style=\"margin-bottom: 20px !important;\">\r\n <label style=\"margin-right: 20px !important; text-align: start !important; min-width: 100px;\">Client Record*</label>\r\n <ng-select [clearable]=\"false\" (change)=\"changeCompanyFill($event);\" [ngClass]=\"{'is-invalid': (attemptClick && ((fc.clientId.value === undefined) || (fc.clientId.value === ''))) }\" bindLabel=\"fullName\" bindValue=\"id\" [items]=\"allMyClients\" formControlName=\"clientId\" style=\"flex-basis: 300px; text-align: start; min-width: 150px;\"></ng-select>\r\n </div>\r\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\" style=\"width: 100%; margin-bottom: 20px !important;\">\r\n <label style=\"margin-left: 2% !important; margin-right: 2% !important; text-align: start !important; flex-basis: 100px;\">Brand Name*</label>\r\n <input [ngClass]=\"{ 'is-invalid': attemptClick && brandPlaceholder === '' }\" [(ngModel)]=\"brandPlaceholder\" (change)=\"onNameChange($event)\" type=\"text\" formControlName=\"brandName\" class=\"form-control\" />\r\n <div *ngIf=\"attemptClick && fc.brandName.value === null\" class=\"invalid-feedback\" style=\"width: auto !important; margin-left: 20px !important; margin-right: 20px !important;\">\r\n required\r\n </div>\r\n </div>\r\n </div>\r\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\" style=\"width: 100%;\">\r\n <label style=\"text-align: start !important; margin-left: 120px;\">Please don't include Brand Name in the Studio Location Name</label>\r\n </div>\r\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\" style=\"width: 100%;\">\r\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\" style=\"margin-bottom: 20px !important; width: 100%;\">\r\n <label style=\"margin-right: 20px !important; text-align: start !important; min-width: 99px; max-width: 101px;\">Studio Location Name*</label>\r\n <input style=\"width: 100% !important; width: 100%;\" (change)=\"onNameChange($event)\" \r\n [ngClass]=\"{ 'is-invalid': attemptClick && (fc.studioLocationName.value === null || fc.studioLocationName.value === '') }\"\r\n type=\"text\" formControlName=\"studioLocationName\" class=\"form-control\" />\r\n <div *ngIf=\"attemptClick && (fc.studioLocationName.value === null || fc.studioLocationName.value === '')\"\r\n class=\"invalid-feedback\" style=\"width: auto !important; margin-left: 20px !important; margin-right: 20px !important;\">\r\n required\r\n </div>\r\n </div>\r\n </div>\r\n <div fxLayout=\"row\" style=\"margin-bottom: 20px !important;\" fxLayoutAlign=\"space-between center\">\r\n <label style=\"margin-right: 20px !important; text-align: start !important; min-width: 100px;\">Campaign Name*</label>\r\n <input readonly \r\n [ngClass]=\"{ 'is-invalid': attemptClick && (fc.studioLocationName.value === null || fc.brandName.value === null) }\"\r\n type=\"text\" formControlName=\"campaignName\" class=\"form-control\" />\r\n <div *ngIf=\"attemptClick && (fc.studioLocationName.value === null || fc.brandName.value === null)\"\r\n class=\"invalid-feedback\" style=\"width: auto !important; margin-left: 20px !important; margin-right: 20px !important;\">\r\n required\r\n </div>\r\n </div>\r\n <div fxLayout=\"row\" style=\"margin-bottom: 20px !important;\" fxLayoutAlign=\"space-between center\">\r\n <label style=\"margin-right: 20px !important; text-align: start !important; min-width: 100px;\">Studio Email Address*</label>\r\n <input \r\n [ngClass]=\"{ 'is-invalid': attemptClick && fc.studioEmail.value === null }\"\r\n type=\"text\" formControlName=\"studioEmail\" class=\"form-control\" />\r\n <div *ngIf=\"attemptClick && fc.studioEmail.value === null\"\r\n class=\"invalid-feedback\" style=\"width: auto !important; margin-left: 20px !important; margin-right: 20px !important;\">\r\n required\r\n </div>\r\n <label style=\"margin-right: 20px !important; margin-left: 20px !important; text-align: start !important; min-width: 100px;\">Studio Phone Number*</label>\r\n <input\r\n [ngClass]=\"{ 'is-invalid': attemptClick && fc.studioPhone.value === null }\"\r\n type=\"text\" formControlName=\"studioPhone\" class=\"form-control\" />\r\n <div *ngIf=\"attemptClick && fc.studioPhone.value === null\"\r\n class=\"invalid-feedback\" style=\"width: auto !important; margin-left: 20px !important; margin-right: 20px !important;\">\r\n required\r\n </div>\r\n </div>\r\n <div fxLayout=\"row\" style=\"margin-bottom: 20px !important;\" fxLayoutAlign=\"space-between center\">\r\n <label style=\"margin-right: 20px !important; text-align: start !important; min-width: 100px;\">Studio Street*</label>\r\n <input \r\n [ngClass]=\"{ 'is-invalid': attemptClick && fc.studioStreet.value === null }\"\r\n type=\"text\" formControlName=\"studioStreet\" class=\"form-control\" />\r\n <div *ngIf=\"attemptClick && fc.studioStreet.value === null\"\r\n class=\"invalid-feedback\" style=\"width: auto !important; margin-left: 20px !important; margin-right: 20px !important;\">\r\n required\r\n </div>\r\n <label style=\"margin-right: 20px !important; margin-left: 20px !important; text-align: start !important; min-width: 100px;\">Studio City</label>\r\n <input\r\n type=\"text\" formControlName=\"studioCity\" class=\"form-control\" />\r\n <label style=\"margin-right: 20px !important; margin-left: 20px !important; text-align: start !important; min-width: 100px;\">Studio State</label>\r\n <input\r\n type=\"text\" formControlName=\"studioState\" class=\"form-control\" />\r\n <label style=\"margin-right: 20px !important; margin-left: 20px !important; text-align: start !important; min-width: 100px;\">Studio Zipcode</label>\r\n <input\r\n type=\"text\" formControlName=\"studioZipcode\" class=\"form-control\" />\r\n </div>\r\n <!-- <div style=\"margin-bottom: 20px !important;\" class=\"col-md-12\">\r\n <div fxLayout=\"row\" style=\"width: 100%;\" fxLayoutAlign=\"space-between center\">\r\n <div fxLayout=\"column\" fxLayoutAlign=\"start start\" style=\"width: 100%;\">\r\n <label>Studio Address*</label>\r\n <input style=\"width: 100%; margin-right: 20px !important;\" \r\n [ngClass]=\"{ 'is-invalid': attemptClick && fc.studioAddress.value === null }\"\r\n type=\"text\" formControlName=\"studioAddress\" class=\"form-control\" />\r\n </div>\r\n </div>\r\n </div> -->\r\n <div style=\"margin-bottom: 20px !important;\" fxLayout=\"row\" fxLayoutAlign=\"space-between center\">\r\n <label style=\"margin-right: 20px !important; text-align: start !important; min-width: 99px; max-width: 101px;\">Facebook Page Url</label>\r\n <input \r\n [ngClass]=\"{ 'is-invalid': fc.fbPageUrl.errors }\"\r\n type=\"text\" formControlName=\"fbPageUrl\" class=\"form-control\" />\r\n </div>\r\n <div style=\"margin-bottom: 20px !important;\" fxLayout=\"row\" fxLayoutAlign=\"space-between center\">\r\n <label style=\"margin-right: 20px !important; text-align: start !important; min-width: 100px;\">CRM Name</label>\r\n <input \r\n [ngClass]=\"{ 'is-invalid': fc.crmName.errors }\"\r\n type=\"text\" formControlName=\"crmName\" class=\"form-control\" />\r\n <label style=\"margin-right: 20px !important; margin-left: 20px !important; text-align: start !important; min-width: 100px;\">CRM ID</label>\r\n <input \r\n [ngClass]=\"{ 'is-invalid': fc.crmId.errors }\"\r\n type=\"text\" formControlName=\"crmId\" class=\"form-control\" />\r\n </div>\r\n <div fxLayout=\"row\" fxLayoutAlign=\"space-between center\">\r\n <label style=\" margin-bottom: 20px !important;\">Notes</label>\r\n </div>\r\n <div class=\"col-md-12\">\r\n <textarea type=\"text\" rows=\"3\" class=\"form-control\" formControlName=\"notes\"\r\n [ngClass]=\"{ 'is-invalid': fc.notes.errors }\"\r\n placeholder=\"Enter note\"> </textarea>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n <div style=\"width: 100%; margin-top: 20px;\" fxLayout=\"row\" fxLayoutAlign=\"end center\">\r\n <button *ngIf=\"isNewCampaign\" type=\"button\" style=\"width: 25vw !important; margin-right: 0px !important;\" (click)=\"attemptClick = true; onNext(CART_STEPS.RequiredInfo);\"\r\n [ngClass]=\"((fc.studioLocationName.value !== null) && (fc.clientId.value !== null) && (fc.clientId.value !== '') && (fc.brandName.value !== null) && (fc.studioLocationName.value !== '') && (fc.brandName.value !== '') && (fc.studioEmail.value !== null) && (fc.studioPhone.value !== null) && (fc.studioCity.value !== null)) ? 'orange-button' : 'grey-button'\">Next</button>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"requiredInfoCompleted\">\r\n <div fxLayout=\"column\">\r\n <p>No information is required for this product</p>\r\n <p>Please go to next step</p>\r\n <div style=\"height: 5px\">\r\n <hr>\r\n </div>\r\n <div style=\"width: 100%; margin-top: 20px;\" fxLayout=\"row\" fxLayoutAlign=\"space-between center\">\r\n <button type=\"button\" class=\"btn btn-page\"\r\n (click)=\"onPrevious(CART_STEPS.BundleDetails)\">Back</button>\r\n <button type=\"button\" (click)=\"onNext(CART_STEPS.RequiredInfo)\"\r\n class=\"btn btn-page\">Next</button>\r\n </div>\r\n </div>\r\n </div>\r\n </aw-wizard-step>\r\n <aw-wizard-step style=\"margin-top: 40px\" stepTitle=\"Ad Spend\" (stepEnter)=\"onStepEnter($event,CART_STEPS.Cart)\">\r\n <div style=\"width: 100%;\" fxLayout=\"row\" fxLayoutAlign=\"start center\">\r\n <h1>{{(addingFacebook || addingGoogle) ? 'Select Your Ad Spend' : 'Confirm Your Products'}}</h1>\r\n </div>\r\n <div formArrayName=\"stepsData\" style=\"margin-bottom: 32px; margin-top: 20px;\" fxLayout=\"column\" fxLayoutAlign=\"start center\">\r\n <div fxLayout=\"row\" fxLayoutAlign=\"start start\">\r\n <div *ngFor=\"let bProduct of stepsData.controls; let i=index\" fxLayout=\"row\" fxLayoutAlign=\"center\">\r\n <div *ngIf=\"!(bProduct.value.display.includes('Fee') && bProduct.value.display.includes('Management'))\" [formGroupName]=\"i\">\r\n <div [ngClass]=\"(bProduct?.get('includeProduct')?.value) ? 'block' : 'grey-block'\" style=\"min-width: 300px; margin-right: 40px !important; margin-left: 40px !important;\" fxLayout=\"column\">\r\n <div style=\"width: 100%\" fxLayout=\"row\"\r\n fxLayoutAlign=\"center start\">\r\n <h4>{{bProduct.get('display')?.value}}</h4>\r\n </div>\r\n <div style=\"margin-top: 20px; margin-bottom: 20px;\"\r\n fxLayout=\"column\" fxLayoutAlign=\"start center\">\r\n <img [src]=\"bProduct.get('mediaUrl')?.value\"\r\n style=\"height: auto; max-height: 150px !important;\">\r\n </div>\r\n <div fxLayout=\"row\" fxLayoutAlign=\"center center\" style=\"width: 100% !important; min-height: 100px !important;\">\r\n <p style=\"width: 60%;\">{{bProduct.get('description')?.value}}</p>\r\n </div>\r\n <br>\r\n <div *ngIf=\"(stepsData.controls.length > 1) && bProduct.get('isRequired') !==null && bProduct.get('isRequired')?.value === false\"\r\n fxLayout=\"row\" fxLayoutAlign=\"center center\">\r\n <label>Include this product?</label>\r\n <div style=\"padding-left: 0px\">\r\n <ui-switch (valueChange)=\"onSwitchChange($event,i)\"\r\n size=\"small\" defaultBoColor=\"#dfdfdf\"\r\n color=\"#4ba6ef\"\r\n [checked]=\"bProduct?.get('includeProduct')?.value\"\r\n checkedLabel=\"Yes\" uncheckedLabel=\"No\" class=\"ms-1\">\r\n </ui-switch>\r\n </div>\r\n </div>\r\n <br>\r\n <div>\r\n <h4 *ngIf=\"bProduct.value.price != null && !showRecurring()\" style=\"margin-bottom: 20px !important;\">\r\n ${{bProduct.value.price}}\r\n </h4>\r\n <h4 *ngIf=\"bProduct.value.price != null && showRecurring()\" style=\"margin-bottom: 20px !important;\">\r\n ${{bProduct.value.price}} per month\r\n </h4>\r\n <p *ngIf=\"bProduct.value.synchronizeRenewals\"><strong>Subscription Renews On:</strong> {{ (bProduct.value?.synchronizeRenewals || 0) | P_Ordinal }} Day of the Month</p>\r\n </div>\r\n <div *ngIf=\"(bProduct.get('type')?.value === PRODUCT_TYPES.VariableSubscription.code) && (!hasGoogle && !hasFacebook)\"\r\n fxLayout=\"column\" fxLayoutAlign=\"center center\" style=\" padding-top: 20px; border-top: 1px solid darkgrey;\">\r\n <label>Monthly Ad Spend</label>\r\n <div>\r\n <select formControlName=\"adSpend\"\r\n (change)=\"doFinalizeProducts()\" class=\"form-control\"\r\n style=\"width: 120px\">\r\n <option [value]=\"o\"\r\n *ngFor=\"let o of productAdSpendOptions.get(bProduct.get('id')?.value)\">\r\n {{o | currency:'USD' : 'symbol' :\r\n '1.0-0'}}\r\n </option>\r\n </select>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div fxLayout=\"row\" fxLayoutAlign=\"center\">\r\n <div *ngFor=\"let bProduct of stepsData.controls; let i=index\">\r\n <div *ngIf=\"(bProduct.value.display.includes('Fee') && bProduct.value.display.includes('Management'))\" [formGroupName]=\"i\" [ngClass]=\"(bProduct?.get('includeProduct')?.value) ? 'block' : 'grey-block'\" style=\"min-width: 300px; margin-right: 40px !important; margin-left: 40px !important; box-shadow: none;\" fxLayout=\"column\">\r\n <div style=\"width: 100%\" fxLayout=\"row\"\r\n fxLayoutAlign=\"center start\">\r\n <h4>{{bProduct.get('display')?.value}}</h4>\r\n </div>\r\n <div style=\"margin-top: 20px; margin-bottom: 20px;\"\r\n fxLayout=\"column\" fxLayoutAlign=\"start center\">\r\n <img [src]=\"bProduct.get('mediaUrl')?.value\"\r\n style=\"height: auto; max-height: 150px !important;\">\r\n </div>\r\n <div fxLayout=\"row\" fxLayoutAlign=\"center center\" style=\"width: 100% !important; min-height: 100px !important;\">\r\n <p style=\"width: 60%;\">{{bProduct.get('description')?.value}}</p>\r\n </div>\r\n <br>\r\n <div *ngIf=\"(stepsData.controls.length > 1) && bProduct.get('isRequired') !==null && bProduct.get('isRequired')?.value === false\"\r\n fxLayout=\"row\" fxLayoutAlign=\"center center\">\r\n <label> </label>\r\n </div>\r\n <br>\r\n <div>\r\n <h4 *ngIf=\"bProduct.value.price != null && !showRecurring()\" style=\"margin-bottom: 20px !important;\">\r\n {{bProduct.value.price | currency:'USD' : 'symbol' : '1.0-0'}}\r\n </h4>\r\n <h4 *ngIf=\"bProduct.value.price != null && showRecurring()\" style=\"margin-bottom: 20px !important;\">\r\n {{bProduct.value.price | currency:'USD' : 'symbol' : '1.0-0'}} per {{bProduct.value.duration}}\r\n </h4>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div fxLayout=\"row\" fxLayoutAlign=\"space-between center\">\r\n <button style=\"width: 300px\" type=\"button\" class=\"orange-button\" (click)=\"onPrevious(CART_STEPS.RequiredInfo);\">Back</button>\r\n <button style=\"width: 300px\" type=\"button\" (click)=\"continueToCart();\"\r\n [class]=\"(((!hasFacebook) && (!hasGoogle)) || (!addingFacebook && !addingGoogle)) ? 'orange-button' : 'grey-button'\">Continue To Cart</button>\r\n </div>\r\n </aw-wizard-step>\r\n <aw-wizard-step style=\"margin-top: 40px\" stepTitle=\"Checkout\">\r\n <div *ngIf=\"activeCart.currentStep===CART_STEPS.Cart\" fxLayout=\"column\">\r\n <div fxLayout=\"row\" style=\"width: 55vw;\" fxLayoutAlign=\"space-between center\">\r\n <button style=\"width: 100px; margin-left: 0px !important;\" type=\"button\" class=\"orange-button\" (click)=\"onPrevious(CART_STEPS.Cart);\">Back</button>\r\n <h1 class=\"title\">Checkout</h1>\r\n </div>\r\n <div fxLayout=\"row\" fxLayoutAlign=\"space-between\">\r\n <div fxLayout=\"column\" fxLayoutAlign=\"space-between start\">\r\n <div style=\"width: 55vw !important; padding-top: 20px !important; padding-bottom: 20px !important;\" fxLayout=\"row\" fxLayoutAlign=\"space-between start\">\r\n <p style=\"font-size: 18px; font-weight:bold;\">1. Location</p>\r\n <div fxLayout=\"column\" fxLayoutAlign=\"start end\">\r\n <p style=\"color: black; font-size: 18px;\">{{locationTitle}}</p>\r\n <button style=\"color: orange;\" (click)=\"onPrevious(2); onPrevious(1);\">Change</button>\r\n </div>\r\n </div>\r\n <div style=\"border-top: 2px solid black; width: 55vw !important; padding-top: 20px !important;\" fxLayout=\"row\" fxLayoutAlign=\"space-between start\">\r\n <p style=\"font-size: 18px; font-weight:bold;\">2. Start Date</p>\r\n <div fxLayout=\"column\" fxLayoutAlign=\"start start\">\r\n <button *ngIf=\"selectedStartTime === 2 || selectingDate || selectedStartTime === 0\" style=\"color: black; font-size: 18px; margin-bottom:20px;\" (click)=\"clickDate(2);\"><input *ngIf=\"selectingDate || selectedStartTime === 0\" style=\"margin-right: 20px;\" type=\"checkbox\">1st Of Next Month</button>\r\n <button *ngIf=\"selectedStartTime === 1 || selectingDate || selectedStartTime === 0\" style=\"color: black; font-size: 18px;\" (click)=\"clickDate(1);\"><input *ngIf=\"selectingDate || selectedStartTime === 0\" style=\"margin-right: 20px;\" type=\"checkbox\">As Soon As Possible</button>\r\n <strong *ngIf=\"(selectedStartTime === 1) && (((getStartDate() | P_AppDateFormat) !== '') && ((getEndDate() | P_AppDateFormat) !== '')) && showRecurring()\" style=\"font-size: 14px; margin-bottom:20px; width: 100%; text-align: end;\">Date Range: {{(getStartDate() | P_AppDateFormat)}} - {{(getEndDate() | P_AppDateFormat)}}</strong>\r\n <strong *ngIf=\"selectedStartTime === 0 || selectingDate\" style=\"font-size: 14px; margin-bottom:20px;\"></strong>\r\n <div fxLayout=\"row\" style=\"width: 100%;\" fxLayoutAlign=\"end center\">\r\n <button *ngIf=\"!selectingDate && (selectedStartTime !== 0) && showRecurring()\" style=\"color: orange; margin-bottom:20px;\" (click)=\"this.selectingDate = !this.selectingDate;\">Change</button>\r\n </div>\r\n </div>\r\n </div>\r\n <div style=\"width: 55vw !important;\" fxLayout=\"row\" fxLayoutAlign=\"space-between start\">\r\n <div></div>\r\n <div *ngIf=\"paymentSubmitted && selectedStartTime === 0\" style=\"color: red; margin-bottom: 20px;\">Please select a start date</div>\r\n </div>\r\n <div style=\"border-top: 2px solid black; width: 55vw !important; padding-top: 20px !important; padding-bottom: 20px !important;\" fxLayout=\"row\" fxLayoutAlign=\"space-between start\">\r\n <div fxLayout=\"column\" fxLayoutAlign=\"start start\">\r\n <p style=\"font-size: 18px; font-weight:bold;\">3. Payment Method</p>\r\n <p *ngIf=\"holdClients.length > 1\" style=\"font-size: 14px; font-weight:normal;\">Select A Client Record:</p>\r\n <form *ngIf=\"holdClients.length > 1\" [formGroup]=\"paymentForm\" fxLayout=\"column\" fxLayoutAlign=\"center end\">\r\n <ng-select [clearable]=\"false\"\r\n [ngClass]=\"{'is-invalid': paymentSubmitted && fp.clientId.errors, 'disabled-dropdown': holdClients.length === 1 }\"\r\n style=\"width: 300px !important;\" (change)=\"onPaymentClientChange($event)\"\r\n bindLabel=\"fullName\" bindValue=\"id\" [items]=\"holdClients\" formControlName=\"clientId\" >\r\n </ng-select>\r\n </form>\r\n </div>\r\n <div fxLayout=\"column\" style=\"width: 75%;\" fxLayoutAlign=\"center end\">\r\n <div [ngStyle]=\"{'color': (paymentSubmitted && fp.methodId.errors?.required) ? 'red' : 'black'}\" style=\"margin-bottom: 20px;\">\r\n {{(!(myPaymentMethods.length > 0)) ? 'Please add a payment method' : 'Please select a payment method'}}\r\n </div>\r\n <!--(change)=\"onPaymentClientChange($event)\"-->\r\n <form [formGroup]=\"paymentForm\" fxLayout=\"column\" fxLayoutAlign=\"center end\">\r\n <div class=\"scrolling-container\" fxLayout=\"row\" fxLayoutAlign=\"end start\">\r\n <ng-container *ngFor=\"let p of myPaymentMethods\">\r\n <button *ngIf=\"p.expiry != null\" fxLayout=\"column\" style=\"margin-right: 5px !important; margin-left: 5px !important; min-height: 75px !important; min-width: 200px; margin-bottom: 10px; margin-top: 10px;\" (click)=\"choosePayment(myPaymentMethods.indexOf(p)); onPaymentMethodChange(p.id);\" [ngClass]=\"chosenPayment === myPaymentMethods.indexOf(p) ? 'btn credit-card-box chosen-block' : 'btn credit-card-box block'\" fxLayoutAlign=\"space-between start\">\r\n <div fxLayout=\"column\" fxLayoutAlign=\"start start\">\r\n <div style=\"font-weight: bold; font-size: 16px;\">{{p.nickname}}</div>\r\n <div *ngIf=\"p.paymentType == 'Card'\" style=\"margin-bottom: 10px;\">Card Ending In {{p.cardNumber}}</div>\r\n <div *ngIf=\"p.paymentType == 'ACH'\" style=\"margin-bottom: 10px;\">Account Ending In {{p.bankAccountNumber}}</div>\r\n <p *ngIf=\"p.paymentType == 'Card'\">Expires {{p.expiry}}</p>\r\n </div>\r\n <div style=\"width: 100% !important;\" fxLayout=\"row\" fxLayoutAlign=\"end end\">\r\n <button (click)=\"openEdit(p.id);\" style=\"color: blue;\">Edit</button>\r\n </div>\r\n </button>\r\n </ng-container>\r\n </div>\r\n <div fxLayout=\"column\" fxLayoutAlign=\"center center\" style=\"text-align: center;margin-top: 30px;\">\r\n <button type=\"button\" class=\"btn\" style=\"display: inline-flex; /* Center content */\r\n align-items: center; /* Center content vertically */\r\n justify-content: center; /* Center content horizontally */\r\n width: 50px; /* Button width */\r\n height: 50px; /* Button height */\r\n border-radius: 50%; /* Make it round */\r\n border: 2px solid grey; /* Border color */\r\n color: grey; /* Text/Icon color */\r\n background-color: transparent; /* Transparent background */\r\n font-size: 24px; /* Icon size */\r\n cursor: pointer; /* Change cursor on hover */\" (click)=\"choosePayment(chosenPayment); onAddNewPaymentMethod(); onPaymentMethodChange(false);\">\r\n +\r\n </button>\r\n <div style=\"text-align: center;font-weight: bold;font-size: large;\">\r\n Add New\r\n </div>\r\n </div>\r\n </form>\r\n <div style=\"margin-top: 40px !important;\" fxLayout=\"column\" fxLayoutAlign=\"start end\">\r\n <label style=\"min-width: 100px; margin-bottom: 10px; font-size: 18px; font-weight:bold;\"><u>Add Coupon Code</u></label>\r\n <mat-form-field style=\"max-width: 250px !important;\" class=\"example-chip-list\" appearance=\"fill\">\r\n <mat-chip-list #chipList aria-label=\"Fruit selection\">\r\n <mat-chip *ngFor=\"let fruit of coupons\" [selectable]=\"true\"\r\n [removable]=\"true\" (removed)=\"remove(fruit)\">\r\n {{fruit.name}}\r\n <button *ngIf=\"fruit.name.toLowerCase() !== 'first'\" matChipRemove>\r\n <mat-icon>cancel</mat-icon>\r\n </button>\r\n </mat-chip>\r\n <input placeholder=\"Coupon...\"\r\n [matChipInputFor]=\"chipList\"\r\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\"\r\n [matChipInputAddOnBlur]=\"true\"\r\n (matChipInputTokenEnd)=\"add($event)\">\r\n </mat-chip-list>\r\n </mat-form-field>\r\n <button (click)=\"onApplyCoupon();\" class=\"btn btn-black\">Apply Coupon</button>\r\n <div *ngIf=\"couponResponse.couponApplied && (this.uniqueCouponCodes.length === this.coupons.length)\" style=\"margin-top: 20px; color: blue\" role=\"alert\">\r\n Coupon Applied\r\n </div>\r\n <label style=\"color: red; text-align: end; margin-top: 20px !important;\" *ngIf=\"(this.cartStepData.couponDetails != null) && (this.uniqueCouponCodes.length != this.coupons.length)\">Please apply your coupons before checkout</label>\r\n </div>\r\n </div>\r\n </div>\r\n <div style=\"border-top: 2px solid black; width: 55vw !important; padding-top: 20px !important;\" fxLayout=\"column\" fxLayoutAlign=\"end end\">\r\n <div fxLayout=\"column\" style=\"width: 375px;\" fxLayoutAlign=\"start end\">\r\n <div *ngIf=\"cartStepData!.productDiscount ?? 0 > 0\">\r\n <strong style=\"font-size: 18px; font-weight: bold;\">Product coupon amount</strong><br/>\r\n <p style=\"font-size: 16px; margin-bottom: 0px !important; text-align: end;\">{{cartStepData?.productDiscount | currency}} ({{cartStepData?.productCoupon}})</p>\r\n </div>\r\n <div *ngIf=\"(cartStepData!.cartDiscount ?? 0 > 0)\">\r\n <strong style=\"font-size: 18px; font-weight: bold;\">Cart coupon amount</strong><br/>\r\n <p style=\"font-size: 16px; margin-bottom: 0px !important; text-align: end;\">{{cartStepData?.cartDiscount | currency}} ({{cartStepData?.cartCoupon}})</p>\r\n </div>\r\n <div *ngIf=\"((cartStepData!.cartDiscount ?? 0 > 0) || (cartStepData!.productDiscount ?? 0 > 0))\" style=\"margin-bottom: 10px;\">\r\n <strong style=\"font-size: 18px; font-weight: bold;\">Coupon Total</strong>\r\n <br/>\r\n <p style=\"font-size: 16px; margin-bottom: 0px !important; text-align: end;\">{{((cartStepData?.cartDiscount!) + (cartStepData?.productDiscount!)) | currency}}</p>\r\n </div>\r\n <div fxLayout=\"row\" fxLayoutAlign=\"end center\">\r\n <strong style=\"font-size: 20px; font-weight: bold;\">Order Total: {{(selectedStartTime === 0) ? (cartStepData?.recurringTotal | currency) : (cartStepData?.total | currency)}}</strong>\r\n </div>\r\n </div>\r\n </div>\r\n </div> \r\n <div class=\"checkout-section\" fxLayout=\"column\" fxLayoutAlign=\"start end\" style=\"margin-left: 10px;\">\r\n <div class=\"checkout-box\" #stickyBox>\r\n <div fxLayout=\"column\" fxLayoutAlign=\"start center\">\r\n <div style=\"padding-top: 10px; padding-left: 10px; padding-right: 10px; margin-bottom: 10px; width: 100%;\">\r\n <strong style=\"margin-bottom: 20px !important;\">Items:</strong>\r\n <div *ngFor=\"let bProduct of finalizedProducts\" style=\"width: 100%;\" fxLayout=\"row\" fxLayoutAlign=\"space-between center\">\r\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\">\r\n <p style=\"max-width: 80% !important;\">{{bProduct.display}}</p>\r\n </div>\r\n <div fxLayout=\"column\" fxLayoutAlign=\"start end\">\r\n <div *ngIf=\"bProduct.type === PRODUCT_TYPES.SimpleProduct.code\">\r\n <p>\r\n <span>{{(bProduct?.data?.price!) | currency}}</span>\r\n </p>\r\n </div>\r\n <div *ngIf=\"bProduct.type === PRODUCT_TYPES.SimpleSubscription.code\">\r\n <p [ngClass]=\"{'strike':\r\n ((selectedStartTime === 1) || (selectedStartTime === 2))}\">\r\n {{(bProduct?.data?.price!) | currency}}\r\n </p>\r\n <p style=\"text-align: end;\" *ngIf=\"(selectedStartTime !== 0)\">\r\n {{(selectedStartTime === 2) ? ('$0') : (bProduct?.proratePrice) | currency}}\r\n </p>\r\n </div>\r\n <div *ngIf=\"bProduct.type === PRODUCT_TYPES.VariableSubscription.code\">\r\n <p [ngClass]=\"{'strike': ((selectedStartTime === 2) || (selectedStartTime === 1))}\">\r\n {{bProduct?.adSpend | currency}}\r\n </p>\r\n <p style=\"text-align: end;\" *ngIf=\"(selectedStartTime !== 0)\">\r\n {{(selectedStartTime === 2) ? ('$0') : (bProduct?.proratePrice) | currency}}\r\n </p>\r\n </div>\r\n <div *ngIf=\"bProduct?.data?.signupFee\">\r\n <p>\r\n {{bProduct?.data?.signupFee | currency}}\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"((cartStepData!.cartDiscount ?? 0 > 0) || (cartStepData!.productDiscount ?? 0 > 0))\" style=\"margin-bottom: 10px;\">\r\n <strong>Coupon Total</strong>\r\n <br/>\r\n {{((cartStepData?.cartDiscount!) + (cartStepData?.productDiscount!)) | currency}}\r\n </div>\r\n <strong style=\"font-size: 20px; font-weight:bold;\">Total: {{(selectedStartTime === 0) ? (cartStepData?.recurringTotal | currency) : (cartStepData?.total | currency)}}</strong>\r\n </div>\r\n <form fxLayout=\"row\" style=\"width: calc(100% - 20px) !important;\" fxLayoutAlign=\"start center\" [formGroup]=\"paymentForm\">\r\n <label style=\"width: 100% !important; text-align: start;\" for=\"agreeTerms\">I have read and agreed to the <a href=\"https://franchisefocusedmarketing.com/terms/\" target=\"_blank\">terms of service</a></label>\r\n <input type=\"checkbox\" id=\"agreeTerms\" formControlName=\"agreeTerms\"\r\n style=\"margin-left: 2px !important; margin-right: 10px !important;\"/>\r\n </form>\r\n <label style=\"color: red; text-align: start;\" *ngIf=\"paymentSubmitted && fp.agreeTerms.errors?.required\">Please accept the agreement</label>\r\n <button style=\"margin-bottom: 5px; width: calc(100% - 20px); text-align: center;\" (click)=\"this.placeOrder();\" [ngClass]=\"((selectedStartTime !== 0) && !fp.methodId.errors?.required && !fp.agreeTerms.errors?.required && (this.uniqueCouponCodes.length == this.coupons.length)) ? 'orange-button' : 'grey-button'\">Place Order</button>\r\n <div *ngIf=\"(cartStepData!.productDiscount ?? 0 > 0) || (cartStepData!.cartDiscount ?? 0 > 0) || showRecurring()\" style=\"background-color: #EBE9EB; padding: 10px; border-radius: 0 0 15px 15px; width: 100% !important\">\r\n <div *ngIf=\"showRecurring()\">\r\n <strong>Recurring Total: {{cartStepData?.recurringTotal | currency}}</strong><strong *ngIf=\"(cartStepData!.productDiscount ?? 0 > 0) || (cartStepData!.cartDiscount ?? 0 > 0)\">*</strong>\r\n <br>\r\n First Renewal: {{getRecurringDate() | P_AppDateFormat}}\r\n </div>\r\n <div *ngIf=\"(cartStepData!.productDiscount ?? 0 > 0) || (cartStepData!.cartDiscount ?? 0 > 0)\">\r\n <p style=\"margin-bottom: 0px !important;\">*Coupon discounts may or may not persist for subscriptions. Consult with your Business Development representative to confirm this.</p>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </aw-wizard-step>\r\n </form>\r\n </aw-wizard>\r\n</div>\r\n","<div *ngIf=\"orderGood\" fxLayout=\"column\" fxLayoutAlign=\"center center\" style=\"height: 100%\">\r\n <div fxLayout=\"row\" style=\"border-bottom: 2px solid black; margin-top: 20px; min-width:95%\" fxLayoutAlign=\"space-between\">\r\n <h1 style=\"color: black;\">Order Confirmation</h1>\r\n <h1 style=\"color: black;\">ORDER# {{orderNumber}}</h1>\r\n </div>\r\n <h1 style=\"color: black; margin-top: 40px;\">Congratulations!</h1>\r\n <p style=\"color: black; margin-top: 20px; font-size: 20px; margin-left: 20vw; margin-right: 20vw; text-align: center;\">Your order has been confirmed! We have sent a digital receipt to {{clientEmail}}. <br/>We will be in contact with you shortly for next steps!</p>\r\n <mat-icon style=\"width: 100px; font-size: 100px; height: 100px; color: black;\">newspaper</mat-icon>\r\n <button type=\"button\" style=\"margin-top: 20px; margin-bottom: 20px; text-decoration: underline;\" (click)=\"downloadInvoice()\">Download Your Receipt</button>\r\n <p *ngIf=\"(nextPay | P_AppDateFormat) !== 'Invalid date'\" style=\"color: black; margin-top: 20px; font-size: 20px;\">Next Payment: {{nextPay | P_AppDateFormat}}</p>\r\n</div>\r\n\r\n<div *ngIf=\"!orderGood\" fxLayout=\"column\" fxLayoutAlign=\"space-around center\" style=\"height: 100%\">\r\n <div fxLayout=\"column\" fxLayoutAlign=\"center center\" style=\"background-color: transparent; min-height: 300px; min-width:500px\"\r\n class=\"card card-body\">\r\n <div class=\"alert alert-danger\" role=\"alert\">\r\n There was an error processing your payments, please visit <a href=\"pages/orders\" class=\"link-primary\">My Orders</a> page to retry payment\r\n </div>\r\n <div class=\"alert alert-success\" role=\"alert\">\r\n Order saved successfully with ORDER# {{orderNumber}}\r\n </div>\r\n </div>\r\n</div>\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { OrdersApiService } from '../../orders/orders.apiservice';\r\n\r\n@Component({\r\n selector: 'app-order-complete',\r\n templateUrl: './order-complete.component.html',\r\n styleUrls: ['./order-complete.component.scss']\r\n})\r\n\r\nexport class OrderCompleteComponent implements OnInit {\r\n orderNumber: string = '';\r\n orderGood: boolean = true;\r\n orderId: string = '';\r\n clientEmail: string = '';\r\n nextPay: Date = {} as Date;\r\n constructor(\r\n private route: ActivatedRoute,\r\n private orderApiService: OrdersApiService,\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n this.route.params.subscribe(params => {\r\n this.orderGood = Boolean(JSON.parse(params.g));\r\n this.orderNumber = params.n;\r\n this.orderId = params.o;\r\n this.clientEmail = params.e; \r\n this.nextPay = params.d; \r\n });\r\n }\r\n\r\n async downloadInvoice() {\r\n this.orderApiService.getOrderInvoice(\r\n this.orderId\r\n ).then((x: any) => {\r\n var newBlob = new Blob([x], { type: \"application/pdf\" });\r\n const data = window.URL.createObjectURL(newBlob);\r\n var link = document.createElement('a');\r\n link.href = data;\r\n link.download = \"orderinvoice.pdf\";\r\n link.dispatchEvent(new MouseEvent('click', { bubbles: true, cancelable: true, view: window }));\r\n setTimeout(function () {\r\n // For Firefox it is necessary to delay revoking the ObjectURL\r\n window.URL.revokeObjectURL(data);\r\n link.remove();\r\n }, 100);\r\n });\r\n }\r\n\r\n}\r\n","import { Component, Input, Output, EventEmitter } from '@angular/core';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { COUNTRY_LIST, PRODUCT_FAMILY } from '../../../core/helpers/constants';\r\nimport { IClient } from '../../../core/models/clients.models';\r\nimport { DataFeedService } from '../../../shared/api/datafeed.service';\r\nimport { AppService } from '../../../store/app.service';\r\n\r\n@Component({\r\n selector: 'app-product-checkout',\r\n templateUrl: './product-checkout.component.html',\r\n styleUrls: ['./product-checkout.component.scss']\r\n})\r\n\r\nexport class ProductCheckoutComponent {\r\n PRODUCT_FAMILY = PRODUCT_FAMILY;\r\n COUNTRY_LIST = COUNTRY_LIST\r\n @Input() public iProductFamily: number = 1;\r\n @Input() set iAllMyClients(clients: Array<IClient>) {\r\n this.allMyClients = [...clients];\r\n if (clients.length > 0) {\r\n this.fp.clientId.setValue(clients[0].id);\r\n this.onPaymentClientChange({ id: clients[0].id });\r\n }\r\n }\r\n\r\n @Output() oOnSubmit: EventEmitter<any> = new EventEmitter();\r\n\r\n allMyClients = new Array<IClient>();\r\n\r\n\r\n paymentForm: FormGroup\r\n coSubmitted = false;\r\n paymentSubmitted = false;\r\n myPaymentMethods: Array<any> = new Array<any>();\r\n activeUserId!: string;\r\n isNewPaymentMethod = false;\r\n\r\n constructor(\r\n private formBuilder: FormBuilder,\r\n private appService: AppService,\r\n private datafeedService: DataFeedService\r\n ) {\r\n this.paymentForm = this.formBuilder.group({\r\n methodId: [null, [Validators.required]],\r\n clientId: [null, [Validators.required]],\r\n nickname: [null],\r\n firstName: [null],\r\n lastName: [null, []],\r\n cardNumber: [null, []],\r\n cardCVV: [null],\r\n cardExpiryDate: [null],\r\n agreeTerms: [null, [Validators.requiredTrue]],\r\n address: [null, [Validators.required]],\r\n city: [null, [Validators.required]],\r\n state: [null, [Validators.required]],\r\n zip: [null, [Validators.required]],\r\n });\r\n this.appService.fetchAllUserPaymentMethods();\r\n\r\n // this.datafeedService.getPaymentMethodsByUserId()\r\n // .subscribe(res => {\r\n // res.data.map((x: any) => x.cardNumber = `************${x.cardNumber}`)\r\n // this.myPaymentMethods = [...res.data];\r\n // })\r\n\r\n }\r\n get fp() { return this.paymentForm.controls! }\r\n\r\n onPaymentMethodChange(evt: any) {\r\n if (evt) {\r\n let e = this.myPaymentMethods.find(x => x.id === evt.id);\r\n this.paymentForm.patchValue({\r\n address: e.address,\r\n city: e.city,\r\n state: e.state,\r\n zip: e.zip,\r\n });\r\n } else {\r\n this.paymentForm.patchValue({\r\n address: null,\r\n city: null,\r\n state: null,\r\n zip: null,\r\n });\r\n }\r\n }\r\n onPaymentClientChange(evt: any) {\r\n const sub = this.datafeedService.getPaymentMethodsByClientId(evt.id)\r\n .subscribe(res => {\r\n res.data.map((x: any) => x.cardNumber = `************${x.cardNumber}`)\r\n this.myPaymentMethods = [...res.data];\r\n setTimeout(() => { sub.unsubscribe(); }, 0);\r\n });\r\n\r\n this.paymentForm.patchValue({\r\n methodId: null,\r\n address: null,\r\n city: null,\r\n state: null,\r\n zip: null,\r\n });\r\n }\r\n // doSubmitCoForm() {\r\n // this.coSubmitted = true;\r\n // if (this.coForm.invalid)\r\n // return false;\r\n // return true;\r\n // }\r\n // getCoFormValues() {\r\n // if (!this.coForm.invalid)\r\n // return this.coForm.value;\r\n // }\r\n doSubmitPaymentForm() {\r\n this.paymentSubmitted = true;\r\n if (this.paymentForm.invalid)\r\n return false;\r\n return true;\r\n }\r\n getPaymentFormValues() {\r\n if (!this.paymentForm.invalid)\r\n return this.paymentForm.value;\r\n }\r\n onChangePaymentMethodSelectionMode(newPaymentMethod: boolean) {\r\n this.isNewPaymentMethod = newPaymentMethod;\r\n\r\n this.fp.methodId.setValidators(newPaymentMethod ? [] : [Validators.required]);\r\n this.fp.methodId.reset();\r\n this.fp.methodId.updateValueAndValidity();\r\n\r\n let formValidators = newPaymentMethod ? [Validators.required] : [];\r\n\r\n this.fp.nickname.setValidators(formValidators);\r\n this.fp.firstName.setValidators(formValidators);\r\n this.fp.lastName.setValidators(formValidators);\r\n this.fp.cardNumber.setValidators(formValidators);\r\n this.fp.cardExpiryDate.setValidators(formValidators);\r\n this.fp.cardCVV.setValidators(formValidators);\r\n this.fp.agreeTerms.setValidators([Validators.requiredTrue]);\r\n\r\n this.fp.nickname.reset();\r\n this.fp.firstName.reset();\r\n this.fp.lastName.reset();\r\n this.fp.cardNumber.reset();\r\n this.fp.cardExpiryDate.reset();\r\n this.fp.cardCVV.reset();\r\n this.fp.agreeTerms.reset();\r\n\r\n this.fp.nickname.updateValueAndValidity();\r\n this.fp.firstName.updateValueAndValidity();\r\n this.fp.lastName.updateValueAndValidity();\r\n this.fp.cardNumber.updateValueAndValidity();\r\n this.fp.cardExpiryDate.updateValueAndValidity();\r\n this.fp.cardCVV.updateValueAndValidity();\r\n this.fp.agreeTerms.updateValueAndValidity();\r\n }\r\n}\r\n","<div class=\"\">\r\n <!-- <form [formGroup]=\"coForm\">\r\n <div class=\"row\">\r\n <div class=\"col-md-2\">\r\n <h4>Addtional Info</h4>\r\n </div>\r\n <div class=\"col-md-10\">\r\n <textarea rows=\"3\" class=\"form-control\" formControlName=\"bdNotes\"\r\n [ngClass]=\"{ 'is-invalid': coSubmitted && fp.bdNotes.errors }\"\r\n placeholder=\"Addtional info\"></textarea>\r\n <div *ngIf=\"coSubmitted && fp.bdNotes.errors\" class=\"invalid-feedback\">\r\n <div *ngIf=\"fp.bdNotes.errors.required\">Additional info is required </div>\r\n </div>\r\n </div>\r\n </div>\r\n </form> -->\r\n\r\n <form class=\"card-block\" [formGroup]=\"paymentForm\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <div class=\"row mb-10\">\r\n <label class=\"col-md-1\">Client</label>\r\n <div class=\"col-md-4\">\r\n <ng-select [clearable]=\"false\"\r\n [ngClass]=\"{'is-invalid': paymentSubmitted && fp.clientId.errors, 'disabled-dropdown': allMyClients.length ===1 }\"\r\n bindLabel=\"fullName\" bindValue=\"id\" (change)=\"onPaymentClientChange($event)\" [items]=\"allMyClients\" formControlName=\"clientId\">\r\n </ng-select>\r\n </div>\r\n </div>\r\n <div class=\"card\">\r\n <div class=\"card-body\">\r\n <div class=\"row\">\r\n <label *ngIf=\"!isNewPaymentMethod\" class=\"col-md-4\">Select from your saved payment methods</label>\r\n <div *ngIf=\"!isNewPaymentMethod\" class=\"col-md-6\">\r\n <ng-select [ngClass]=\"{'is-invalid': paymentSubmitted && fp.methodId.errors?.required}\"\r\n bindLabel=\"nickname\" (change)=\"onPaymentMethodChange($event)\" bindValue=\"id\"\r\n [items]=\"myPaymentMethods\" formControlName=\"methodId\">\r\n </ng-select>\r\n <div *ngIf=\"paymentSubmitted && fp.methodId.errors\" class=\"invalid-feedback\">\r\n <div *ngIf=\"fp.methodId.errors?.required\">Please select a payment method\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!isNewPaymentMethod\" class=\"col-md-2\">\r\n <button (click)=\"onChangePaymentMethodSelectionMode(true)\" style=\"background: white\" class=\"btn\">Add\r\n New</button>\r\n </div>\r\n <div *ngIf=\"isNewPaymentMethod\" style=\"text-align: right\" class=\"col-md-12\">\r\n <button (click)=\"onChangePaymentMethodSelectionMode(false)\" style=\"background: white\" class=\"btn\">Show Saved Payment Methods</button>\r\n </div>\r\n\r\n </div>\r\n <div *ngIf=\"isNewPaymentMethod\" class=\"row\">\r\n <div class=\"col-md-8\">\r\n <div class=\"row mb-10\">\r\n <div class=\"col-md-12\">\r\n <div fxLayout=\"column\">\r\n <h2>Credit Card</h2>\r\n <p>Pay securely using your credit card.</p>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-10\">\r\n <div class=\"col-md-6\">\r\n <input type=\"text\" class=\"form-control\" formControlName=\"firstName\"\r\n [ngClass]=\"{ 'is-invalid': paymentSubmitted && fp.firstName.errors }\"\r\n placeholder=\"First name on card\">\r\n <div *ngIf=\"paymentSubmitted && fp.firstName.errors\" class=\"invalid-feedback\">\r\n <div *ngIf=\"fp.firstName.errors.required\">First name is required</div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <input type=\"text\" class=\"form-control\" formControlName=\"lastName\"\r\n [ngClass]=\"{ 'is-invalid': paymentSubmitted && fp.lastName.errors }\"\r\n placeholder=\"Last name on card\">\r\n <div *ngIf=\"paymentSubmitted && fp.lastName.errors\" class=\"invalid-feedback\">\r\n <div *ngIf=\"fp.lastName.errors.required\">Last name is required</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-10\">\r\n <div class=\"col-md-12\">\r\n <input type=\"text\" class=\"form-control\" formControlName=\"cardNumber\"\r\n mask=\"0000-0000-0000-0000\"\r\n [ngClass]=\"{ 'is-invalid': paymentSubmitted && fp.cardNumber.errors }\"\r\n placeholder=\"xxxx xxxx xxxx xxxx\">\r\n <div *ngIf=\"paymentSubmitted && fp.cardNumber.errors\" class=\"invalid-feedback\">\r\n <div *ngIf=\"fp.cardNumber.errors.required\">Card number is required</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-10\">\r\n <div class=\"col-md-6\">\r\n <input type=\"text\" class=\"form-control\" mask=\"00/00\"\r\n formControlName=\"cardExpiryDate\"\r\n [ngClass]=\"{ 'is-invalid': paymentSubmitted && fp.cardExpiryDate.errors }\"\r\n placeholder=\"MM/YY\">\r\n <div *ngIf=\"paymentSubmitted && fp.cardExpiryDate.errors\"\r\n class=\"invalid-feedback\">\r\n <div *ngIf=\"fp.cardExpiryDate.errors.required\">Expiry date is required</div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <input type=\"text\" mask=\"0000\" class=\"form-control\" formControlName=\"cardCVV\"\r\n [ngClass]=\"{ 'is-invalid': paymentSubmitted && fp.cardCVV.errors }\"\r\n placeholder=\"CVV\">\r\n <div *ngIf=\"paymentSubmitted && fp.cardCVV.errors\" class=\"invalid-feedback\">\r\n <div *ngIf=\"fp.cardCVV.errors.required\">CVV is required</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-10\">\r\n <div class=\"col-md-12\">\r\n <input type=\"text\" class=\"form-control\" formControlName=\"nickname\"\r\n [ngClass]=\"{ 'is-invalid': paymentSubmitted && fp.nickname.errors }\"\r\n placeholder=\"Card nickname\">\r\n <div *ngIf=\"paymentSubmitted && fp.nickname.errors\" class=\"invalid-feedback\">\r\n <div *ngIf=\"fp.nickname.errors.required\">Card nickname is required</div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-2\">\r\n <h4>Billing Details</h4>\r\n </div>\r\n <div class=\"col-md-10\">\r\n <div class=\"row mb-10\">\r\n <div class=\"col-md-12\">\r\n <input type=\"text\" class=\"form-control\" formControlName=\"address\"\r\n [ngClass]=\"{ 'is-invalid': coSubmitted && fp.adAddress.errors }\" placeholder=\"Street info\">\r\n <div *ngIf=\"coSubmitted && fp.adAddress.errors\" class=\"invalid-feedback\">\r\n <div *ngIf=\"fp.adAddress.errors.required\">Address is required</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-10\">\r\n <div class=\"col-md-4\">\r\n <input type=\"text\" class=\"form-control\" formControlName=\"city\"\r\n [ngClass]=\"{ 'is-invalid': coSubmitted && fp.city.errors }\" placeholder=\"City\">\r\n <div *ngIf=\"coSubmitted && fp.city.errors\" class=\"invalid-feedback\">\r\n <div *ngIf=\"fp.city.errors.required\">City is required</div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-4\">\r\n <input type=\"text\" class=\"form-control\" formControlName=\"state\"\r\n [ngClass]=\"{ 'is-invalid': coSubmitted && fp.state.errors }\" placeholder=\"State\">\r\n <div *ngIf=\"coSubmitted && fp.state.errors\" class=\"invalid-feedback\">\r\n <div *ngIf=\"fp.state.errors.required\">State is required</div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-4\">\r\n <input type=\"text\" class=\"form-control\" formControlName=\"zip\"\r\n [ngClass]=\"{ 'is-invalid': coSubmitted && fp.zip.errors }\" placeholder=\"Zip\">\r\n <div *ngIf=\"coSubmitted && fp.zip.errors\" class=\"invalid-feedback\">\r\n <div *ngIf=\"fp.zip.errors.required\">Zip is required</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div style=\"height: 5px\">\r\n <hr>\r\n </div>\r\n <div style=\"text-align: right;margin-top: 5px;\">\r\n <div class=\"row\">\r\n <div class=\"col-md-9\">\r\n <input type=\"checkbox\" id=\"agreeTerms\" formControlName=\"agreeTerms\"\r\n class=\"form-check-input\" />\r\n </div>\r\n <label class=\"col-md-3\" for=\"agreeTerms\">I have read and agreed the website\r\n <a href=\"https://shop.franchisefocusedmarketing.com/terms-of-service/\" target=\"_blank\">terms &\r\n conditions</a></label>\r\n <label *ngIf=\"paymentSubmitted && fp.agreeTerms.errors?.required\"\r\n class=\"col-sm-11\" style=\"color: red\">Please accept the agreement</label>\r\n </div>\r\n </div>\r\n </form>\r\n</div>","import { Component, OnInit, Input, Output, EventEmitter, OnDestroy } from '@angular/core';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { ReplaySubject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { PRODUCT_FAMILY } from '../../../core/helpers/constants';\r\nimport { atleasOneTrue } from '../../../core/helpers/utility';\r\nimport { ICampaign } from '../../../core/models/campaigns.model';\r\nimport { IClient } from '../../../core/models/clients.models';\r\nimport { IProductMain } from '../../../core/models/products.models';\r\nimport { CampaignsApiService } from '../../campaigns/campaigns.apiservice';\r\n\r\n@Component({\r\n selector: 'app-product-input',\r\n templateUrl: './product-input.component.html',\r\n styleUrls: ['./product-input.component.scss']\r\n})\r\n\r\n/**\r\n * Page Title Component\r\n */\r\nexport class ProductInputComponent implements OnInit, OnDestroy {\r\n private destroyed$: ReplaySubject<boolean> = new ReplaySubject(1);\r\n PRODUCT_FAMILY = PRODUCT_FAMILY;\r\n @Input() set iAllMyClients(clients: Array<IClient>) {\r\n this.allMyClients = [...clients];\r\n }\r\n @Input() public iProductFamily: number = 1;\r\n @Input() iApGoogle: boolean = false;\r\n @Input() iApFacebook: boolean = false;\r\n @Input() iProduct: IProductMain = {} as IProductMain;\r\n @Input() set iSelectClient(clientId: string) {\r\n this.fDigiForm.clientId.setValue(clientId);\r\n }\r\n @Output() oOnSubmit: EventEmitter<any> = new EventEmitter();\r\n @Output() oOnChangeCampaignSelectMode: EventEmitter<any> = new EventEmitter();\r\n @Output() oOnClientSelected: EventEmitter<string> = new EventEmitter();\r\n @Output() oOnCampaignSelected: EventEmitter<string> = new EventEmitter();\r\n\r\n isNewCampaign: boolean = false;\r\n myCampaigns: Array<ICampaign> = new Array<ICampaign>();\r\n allMyClients = new Array<IClient>();\r\n\r\n\r\n formsMap = new Map<number, FormGroup>();\r\n formsSubmittedMap = new Map<number, boolean>();\r\n\r\n constructor(\r\n private formBuilder: FormBuilder,\r\n private campaignApiService: CampaignsApiService\r\n ) {\r\n this.formsMap.set(PRODUCT_FAMILY.DigitalMarketing,\r\n this.formBuilder.group({\r\n campaignId: [null, [Validators.required]],\r\n clientId: [null, [Validators.required]],\r\n brandName: [null],\r\n studioLocationName: [null],\r\n campaignName: [null],\r\n studioEmail: [null],\r\n studioPhone: [null],\r\n studioStreet: [null],\r\n studioCity: [null],\r\n studioState: [null],\r\n studioZipcode: [null],\r\n fbPageUrl: [null],\r\n crmName: [null],\r\n crmId: [null],\r\n notes: [null],\r\n isFacebook: [null],\r\n isGoogle: [null]\r\n }));\r\n this.formsMap.set(PRODUCT_FAMILY.AddPlatform,\r\n this.formBuilder.group({\r\n campaignId: [null, [Validators.required]],\r\n clientId: [null, [Validators.required]],\r\n isFacebook: [null],\r\n isGoogle: [null]\r\n }));\r\n this.formsSubmittedMap.set(PRODUCT_FAMILY.DigitalMarketing, false);\r\n\r\n this.formsMap.set(PRODUCT_FAMILY.CampaignConsulting,\r\n this.formBuilder.group({\r\n notes: [null, [Validators.required]],\r\n }));\r\n this.formsSubmittedMap.set(PRODUCT_FAMILY.CampaignConsulting, false);\r\n\r\n\r\n this.formsMap.set(PRODUCT_FAMILY.SEOProgram,\r\n this.formBuilder.group({\r\n businessAddress: [null, [Validators.required]],\r\n businessEmail: [null, [Validators.required, Validators.email]],\r\n businessPhone: [null, [Validators.required]],\r\n businessName: [null, [Validators.required]],\r\n businessWebsiteUrl: [null, [Validators.required]],\r\n notes: [null],\r\n }));\r\n this.formsSubmittedMap.set(PRODUCT_FAMILY.SEOProgram, false);\r\n\r\n\r\n this.formsMap.set(PRODUCT_FAMILY.HostedWebsite,\r\n this.formBuilder.group({\r\n websiteInfo: [null, [Validators.required]],\r\n notes: [null],\r\n }));\r\n this.formsSubmittedMap.set(PRODUCT_FAMILY.HostedWebsite, false);\r\n\r\n this.formsMap.set(PRODUCT_FAMILY.SocialMedia,\r\n this.formBuilder.group({\r\n websiteUrl: [null, [Validators.required]],\r\n instagramUrl: [null, [Validators.required]],\r\n facebookUrl: [null, [Validators.required]],\r\n notes: [null],\r\n }));\r\n this.formsSubmittedMap.set(PRODUCT_FAMILY.SocialMedia, false);\r\n }\r\n get fDigiForm() { return this.formsMap.get(PRODUCT_FAMILY.DigitalMarketing)?.controls!; }\r\n get fAddPlatformForm() { return this.formsMap.get(PRODUCT_FAMILY.AddPlatform)?.controls!; }\r\n get fCampaignConsultingForm() { return this.formsMap.get(PRODUCT_FAMILY.CampaignConsulting)?.controls!; }\r\n get fSEOForm() { return this.formsMap.get(PRODUCT_FAMILY.SEOProgram)?.controls!; }\r\n get fHostedWebsiteForm() { return this.formsMap.get(PRODUCT_FAMILY.HostedWebsite)?.controls!; }\r\n get fSocialMediaForm() { return this.formsMap.get(PRODUCT_FAMILY.SocialMedia)?.controls!; }\r\n\r\n onNameChange(evt: any) {\r\n let a = this.fDigiForm.brandName?.value || '';\r\n let b = this.fDigiForm.studioLocationName?.value || '';\r\n let c = (a.length || b.length) && this.iApFacebook ? 'FB' : ''\r\n this.fDigiForm.campaignName.setValue(a + ' ' + b + ' ' + c);\r\n }\r\n\r\n onSubmit(formKey?: number) {\r\n let key = this.iProductFamily;\r\n this.formsSubmittedMap.set(key, true);\r\n if (this.formsMap.get(key)?.invalid)\r\n return false;\r\n\r\n if (this.iApFacebook)\r\n this.formsMap?.get(PRODUCT_FAMILY.DigitalMarketing)?.patchValue({ isFacebook: true, isGoogle: false });\r\n else if (this.iApGoogle)\r\n this.formsMap?.get(PRODUCT_FAMILY.DigitalMarketing)?.patchValue({ isFacebook: false, isGoogle: true });\r\n return true;\r\n }\r\n\r\n getFormKey() {\r\n return this.iProductFamily;\r\n }\r\n getFormValues(formKey: number) {\r\n return this.formsMap.get(formKey)?.value;\r\n }\r\n setFormValues(value: any) {\r\n this.formsMap?.get(this.iProductFamily)?.patchValue(value);\r\n }\r\n ngOnInit(): void {\r\n this.fDigiForm.clientId.valueChanges\r\n .pipe(takeUntil(this.destroyed$))\r\n .subscribe(v => {\r\n this.getCampaignsByClient(v);\r\n });\r\n this.fAddPlatformForm.clientId.valueChanges\r\n .pipe(takeUntil(this.destroyed$))\r\n .subscribe(v => {\r\n this.getCampaignsByClient(v);\r\n });\r\n\r\n this.fDigiForm.campaignId.valueChanges\r\n .pipe(takeUntil(this.destroyed$))\r\n .subscribe(v => {\r\n this.oOnCampaignSelected.emit(v);\r\n });\r\n this.fAddPlatformForm.campaignId.valueChanges\r\n .pipe(takeUntil(this.destroyed$))\r\n .subscribe(v => {\r\n this.oOnCampaignSelected.emit(v);\r\n });\r\n }\r\n\r\n getCampaignsByClient(clientId: any) {\r\n this.oOnClientSelected.emit(clientId);\r\n if (clientId) {\r\n this.formsMap?.get(this.iProductFamily)?.patchValue({ campaignId: null });\r\n this.campaignApiService.getCampaignsNamesByClient(clientId)\r\n .pipe(takeUntil(this.destroyed$))\r\n .subscribe((res: any) => {\r\n if (res.good)\r\n this.myCampaigns = res.data.map((x: any) => {\r\n x.disabled = x.rmSubscriptionId != null && x.rmSubscriptionId.length > 0;\r\n return x;\r\n });\r\n });\r\n }\r\n }\r\n\r\n onAddCampaign(newCampaign: boolean) {\r\n this.oOnChangeCampaignSelectMode.emit({ newCampaign });\r\n this.isNewCampaign = newCampaign;\r\n\r\n this.fDigiForm.campaignId.setValue(null);\r\n this.fDigiForm.brandName.setValue(null);\r\n this.fDigiForm.studioLocationName.setValue(null);\r\n this.fDigiForm.campaignName.setValue(null);\r\n this.fDigiForm.studioEmail.setValue(null);\r\n this.fDigiForm.studioPhone.setValue(null);\r\n this.fDigiForm.studioStreet.setValue(null);\r\n this.fDigiForm.studioCity.setValue(null);\r\n this.fDigiForm.studioState.setValue(null);\r\n this.fDigiForm.studioZipcode.setValue(null);\r\n this.fDigiForm.fbPageUrl.setValue(null);\r\n this.fDigiForm.crmName.setValue(null);\r\n this.fDigiForm.crmId.setValue(null);\r\n this.fDigiForm.notes.setValue(null);\r\n this.fDigiForm.isFacebook.setValue(null);\r\n this.fDigiForm.isGoogle.setValue(null);\r\n\r\n this.fDigiForm.campaignId.setValidators(newCampaign ? [] : [Validators.required]);\r\n var validators = newCampaign ? [Validators.required] : [];\r\n this.fDigiForm.brandName.setValidators(validators);\r\n this.fDigiForm.studioLocationName.setValidators(validators);\r\n this.fDigiForm.studioEmail.setValidators(validators);\r\n this.fDigiForm.studioPhone.setValidators(validators);\r\n this.fDigiForm.studioStreet.setValidators(validators);\r\n // this.fDigiForm.crmName.setValidators(validators);\r\n // this.fDigiForm.crmId.setValidators(validators);\r\n if (newCampaign && this.iProduct.canCustomerChoose)\r\n this.formsMap.get(PRODUCT_FAMILY.DigitalMarketing)?.setValidators([atleasOneTrue]);\r\n else\r\n this.formsMap.get(PRODUCT_FAMILY.DigitalMarketing)?.setValidators([]);\r\n\r\n this.fDigiForm.campaignId.updateValueAndValidity();\r\n this.fDigiForm.brandName.updateValueAndValidity();\r\n this.fDigiForm.studioLocationName.updateValueAndValidity();\r\n this.fDigiForm.studioEmail.updateValueAndValidity();\r\n this.fDigiForm.studioPhone.updateValueAndValidity();\r\n this.fDigiForm.studioStreet.updateValueAndValidity();\r\n this.fDigiForm.crmName.updateValueAndValidity();\r\n this.fDigiForm.crmId.updateValueAndValidity();\r\n this.formsMap.get(PRODUCT_FAMILY.DigitalMarketing)?.updateValueAndValidity();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroyed$.next(true);\r\n this.destroyed$.complete();\r\n }\r\n\r\n onCopyNewCampaign(copydata: any) {\r\n //this.onAddNewCampaign();\r\n if (copydata.campaignId) {\r\n let campaign = this.myCampaigns.filter(x => x.id === copydata.campaignId)[0];\r\n let campaignNameArr = campaign.name.split(' ');\r\n campaignNameArr = campaignNameArr.filter(x => x !== 'FB');\r\n this.formsMap.get(PRODUCT_FAMILY.DigitalMarketing)?.controls?.brandName.setValue(campaignNameArr[0]);\r\n if (campaignNameArr.length > 1)\r\n this.formsMap.get(PRODUCT_FAMILY.DigitalMarketing)?.controls?.studioLocationName.setValue(campaignNameArr.slice(1).join(' '));\r\n this.formsMap.get(PRODUCT_FAMILY.DigitalMarketing)?.controls?.campaignName.setValue(campaignNameArr.join(' '));\r\n this.formsMap.get(PRODUCT_FAMILY.DigitalMarketing)?.controls?.studioEmail.setValue(campaign.locationEmail);\r\n this.formsMap.get(PRODUCT_FAMILY.DigitalMarketing)?.controls?.studioPhone.setValue(campaign.locationPhone);\r\n // this.formsMap.get(PRODUCT_FAMILY.DigitalMarketing)?.controls?.studioAddress.setValue(campaign.locationAddress);\r\n this.formsMap.get(PRODUCT_FAMILY.DigitalMarketing)?.controls?.studioStreet.setValue(campaign.street);\r\n this.formsMap.get(PRODUCT_FAMILY.DigitalMarketing)?.controls?.studioCity.setValue(campaign.city);\r\n this.formsMap.get(PRODUCT_FAMILY.DigitalMarketing)?.controls?.studioState.setValue(campaign.state);\r\n this.formsMap.get(PRODUCT_FAMILY.DigitalMarketing)?.controls?.studioZipcode.setValue(campaign.zipcode);\r\n this.formsMap.get(PRODUCT_FAMILY.DigitalMarketing)?.controls?.crmName.setValue(campaign.crmName);\r\n this.formsMap.get(PRODUCT_FAMILY.DigitalMarketing)?.controls?.crmId.setValue(campaign.crmId);\r\n this.formsMap.get(PRODUCT_FAMILY.DigitalMarketing)?.controls?.notes.setValue(campaign.opportunityNotes);\r\n } else {\r\n if (copydata.brandName)\r\n this.formsMap.get(PRODUCT_FAMILY.DigitalMarketing)?.controls?.brandName.setValue(copydata.brandName);\r\n if (copydata.studioLocationName)\r\n this.formsMap.get(PRODUCT_FAMILY.DigitalMarketing)?.controls?.studioLocationName.setValue(copydata.studioLocationName);\r\n if (copydata.brandName && copydata.studioLocationName)\r\n this.formsMap.get(PRODUCT_FAMILY.DigitalMarketing)?.controls?.campaignName.setValue(copydata.brandName + \" \" + copydata.studioLocationName);\r\n if (copydata.studioEmail)\r\n this.formsMap.get(PRODUCT_FAMILY.DigitalMarketing)?.controls?.studioEmail.setValue(copydata.studioEmail);\r\n if (copydata.studioPhone)\r\n this.formsMap.get(PRODUCT_FAMILY.DigitalMarketing)?.controls?.studioPhone.setValue(copydata.studioPhone);\r\n // if (copydata.studioAddress)\r\n // this.formsMap.get(PRODUCT_FAMILY.DigitalMarketing)?.controls?.studioAddress.setValue(copydata.studioAddress);\r\n if (copydata.studioStreet)\r\n this.formsMap.get(PRODUCT_FAMILY.DigitalMarketing)?.controls?.studioStreet.setValue(copydata.studioStreet);\r\n if (copydata.studioCity)\r\n this.formsMap.get(PRODUCT_FAMILY.DigitalMarketing)?.controls?.studioCity.setValue(copydata.studioCity);\r\n if (copydata.studioState)\r\n this.formsMap.get(PRODUCT_FAMILY.DigitalMarketing)?.controls?.studioState.setValue(copydata.studioState);\r\n if (copydata.studioZipcode)\r\n this.formsMap.get(PRODUCT_FAMILY.DigitalMarketing)?.controls?.studioZipcode.setValue(copydata.studioZipcode);\r\n if (copydata.crmName)\r\n this.formsMap.get(PRODUCT_FAMILY.DigitalMarketing)?.controls?.crmName.setValue(copydata.crmName);\r\n if (copydata.crmId)\r\n this.formsMap.get(PRODUCT_FAMILY.DigitalMarketing)?.controls?.crmId.setValue(copydata.crmId);\r\n if (copydata.notes)\r\n this.formsMap.get(PRODUCT_FAMILY.DigitalMarketing)?.controls?.notes.setValue(copydata.notes);\r\n }\r\n }\r\n}\r\n","<div>\r\n <form *ngIf=\"iProductFamily === PRODUCT_FAMILY.DigitalMarketing\"\r\n [formGroup]=\"formsMap.get(PRODUCT_FAMILY.DigitalMarketing)!\"\r\n (ngSubmit)=\"onSubmit(PRODUCT_FAMILY.DigitalMarketing)\">\r\n\r\n <div class=\"row mb-10\">\r\n <div [ngClass]=\"{'col-md-4':!isNewCampaign,'col-md-6':isNewCampaign}\">\r\n <div class=\"row\" fxLayout=\"row\" fxLayoutAlign=\"center center\">\r\n <label class=\"col-md-4\">Client</label>\r\n <div class=\"col-md-8\">\r\n <ng-select [clearable]=\"false\"\r\n [ngClass]=\"{'is-invalid': formsSubmittedMap.get(PRODUCT_FAMILY.DigitalMarketing) && fDigiForm.clientId.errors }\"\r\n bindLabel=\"fullName\" bindValue=\"id\" [items]=\"allMyClients\" formControlName=\"clientId\">\r\n </ng-select>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!isNewCampaign\" class=\"col-md-4\">\r\n <div class=\"row\" fxLayout=\"row\" fxLayoutAlign=\"center center\">\r\n <label class=\"col-md-4\">Campaign</label>\r\n <div class=\"col-md-8\">\r\n <ng-select\r\n [ngClass]=\"{'is-invalid': formsSubmittedMap.get(PRODUCT_FAMILY.DigitalMarketing) && fDigiForm.campaignId.errors}\"\r\n formControlName=\"campaignId\" bindLabel=\"name\" bindValue=\"id\" [items]=\"myCampaigns\">\r\n </ng-select>\r\n <div *ngIf=\"formsSubmittedMap.get(PRODUCT_FAMILY.DigitalMarketing) && fDigiForm.campaignId.errors\"\r\n class=\"invalid-feedback\">\r\n <div *ngIf=\"fDigiForm.campaignId.errors?.required\">Please select a campaign\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div [ngClass]=\"{'col-md-4':!isNewCampaign,'col-md-6':isNewCampaign}\">\r\n <div *ngIf=\"!isNewCampaign\">\r\n <button style=\" width: 200px; float: right;\" (click)=\"onAddCampaign(true)\"\r\n class=\"btn btn-page-orange\">Add\r\n New Campaign</button>\r\n </div>\r\n <div *ngIf=\"isNewCampaign\">\r\n <button (click)=\"onAddCampaign(false)\" style=\" width: 200px; float: right;\"\r\n class=\"btn btn-page-orange\">Show\r\n Existing Campaigns</button>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"iProduct.canCustomerChoose && iProduct.isGoogle && iProduct.isFacebook\" fxLayout=\"row\"\r\n class=\"row mb-10\">\r\n <div class=\"col-md-6\">\r\n <div fxLayout=\"row\" fxLayoutAlign=\"center center\" class=\"row\">\r\n <div class=\"col-md-4\">\r\n <label>Marketing Platforms</label>\r\n </div>\r\n <div class=\"col-md-8\">\r\n <div class=\"row\">\r\n <div class=\"col-sm-2\">\r\n <input type=\"checkbox\" id=\"isGoogle\" formControlName=\"isGoogle\"\r\n class=\"form-check-input\" />\r\n </div>\r\n <label class=\"col-sm-8\" for=\"isGoogle\">Google</label>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-sm-2\">\r\n <input type=\"checkbox\" id=\"isFacebook\" formControlName=\"isFacebook\"\r\n class=\"form-check-input\" />\r\n </div>\r\n <label class=\"col-sm-8\" for=\"isFacebook\">Meta (Facebook/Instagram)</label>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n <div *ngIf=\"isNewCampaign\">\r\n <div class=\"row mb-10\">\r\n <div class=\"col-md-6\">\r\n <div fxLayout=\"row\" fxLayoutAlign=\"center center\" class=\"row\">\r\n <div class=\"col-md-4\">\r\n <label>Brand Name</label>\r\n </div>\r\n <div class=\"col-md-8\">\r\n <input (change)=\"onNameChange($event)\"\r\n [ngClass]=\"{ 'is-invalid': formsSubmittedMap.get(PRODUCT_FAMILY.DigitalMarketing) && fDigiForm.brandName.errors }\"\r\n type=\"text\" formControlName=\"brandName\" class=\"form-control\" />\r\n <div *ngIf=\"formsSubmittedMap.get(PRODUCT_FAMILY.DigitalMarketing) && fDigiForm.brandName.errors\"\r\n class=\"invalid-feedback\">\r\n <div *ngIf=\"fDigiForm.brandName.errors.required\">required</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div fxLayout=\"row\" fxLayoutAlign=\"center center\" class=\"row\">\r\n <div class=\"col-md-4\">\r\n <label>Studio Location Name</label>\r\n </div>\r\n <div class=\"col-md-8\">\r\n <input (change)=\"onNameChange($event)\"\r\n [ngClass]=\"{ 'is-invalid': formsSubmittedMap.get(PRODUCT_FAMILY.DigitalMarketing) && fDigiForm.studioLocationName.errors }\"\r\n type=\"text\" formControlName=\"studioLocationName\" class=\"form-control\" />\r\n <div *ngIf=\"formsSubmittedMap.get(PRODUCT_FAMILY.DigitalMarketing) && fDigiForm.studioLocationName.errors\"\r\n class=\"invalid-feedback\">\r\n <div *ngIf=\"fDigiForm.studioLocationName.errors.required\">required</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-10\">\r\n <div class=\"col-md-12\">\r\n <div fxLayout=\"row\" fxLayoutAlign=\"center center\" class=\"row\">\r\n <div class=\"col-md-2\">\r\n <label>Campaign Name</label>\r\n </div>\r\n <div class=\"col-md-10\">\r\n <input readonly\r\n [ngClass]=\"{ 'is-invalid': formsSubmittedMap.get(PRODUCT_FAMILY.DigitalMarketing) && fDigiForm.campaignName.errors }\"\r\n type=\"text\" formControlName=\"campaignName\" class=\"form-control\" />\r\n <div *ngIf=\"formsSubmittedMap.get(PRODUCT_FAMILY.DigitalMarketing) && fDigiForm.campaignName.errors\"\r\n class=\"invalid-feedback\">\r\n <div *ngIf=\"fDigiForm.campaignName.errors.required\">required</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row mb-10\">\r\n <div class=\"col-md-6\">\r\n <div fxLayout=\"row\" fxLayoutAlign=\"center center\" class=\"row\">\r\n <div class=\"col-md-4\">\r\n <label>Studio Email Address</label>\r\n </div>\r\n <div class=\"col-md-8\">\r\n <input\r\n [ngClass]=\"{ 'is-invalid': formsSubmittedMap.get(PRODUCT_FAMILY.DigitalMarketing) && fDigiForm.studioEmail.errors }\"\r\n type=\"text\" formControlName=\"studioEmail\" class=\"form-control\" />\r\n <div *ngIf=\"formsSubmittedMap.get(PRODUCT_FAMILY.DigitalMarketing) && fDigiForm.studioEmail.errors\"\r\n class=\"invalid-feedback\">\r\n <div *ngIf=\"fDigiForm.studioEmail.errors.required\">required</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div fxLayoutAlign=\"center center\" class=\"row\" class=\"row\">\r\n <div class=\"col-md-4\">\r\n <label>Studio Phone #</label>\r\n </div>\r\n <div class=\"col-md-8\">\r\n <input\r\n [ngClass]=\"{ 'is-invalid': formsSubmittedMap.get(PRODUCT_FAMILY.DigitalMarketing) && fDigiForm.studioPhone.errors }\"\r\n type=\"text\" formControlName=\"studioPhone\" class=\"form-control\" />\r\n <div *ngIf=\"formsSubmittedMap.get(PRODUCT_FAMILY.DigitalMarketing) && fDigiForm.studioPhone.errors\"\r\n class=\"invalid-feedback\">\r\n <div *ngIf=\"fDigiForm.studioPhone.errors.required\">required</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- <div class=\"row mb-10\">\r\n <div class=\"col-md-12\">\r\n <div class=\"row\">\r\n <div class=\"col-md-4\">\r\n <label>Studio Address</label>\r\n </div>\r\n <div class=\"col-md-12\">\r\n <input\r\n [ngClass]=\"{ 'is-invalid': formsSubmittedMap.get(PRODUCT_FAMILY.DigitalMarketing) && fDigiForm.studioAddress.errors }\"\r\n type=\"text\" formControlName=\"studioAddress\" class=\"form-control\" />\r\n <div *ngIf=\"formsSubmittedMap.get(PRODUCT_FAMILY.DigitalMarketing) && fDigiForm.studioAddress.errors\"\r\n class=\"invalid-feedback\">\r\n <div *ngIf=\"fDigiForm.studioAddress.errors.required\">required</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div> -->\r\n\r\n <div class=\"row mb-10\">\r\n <div class=\"col-md-12\">\r\n <label>If you selected facebook above, please provide the facebook page url for this\r\n location</label>\r\n </div>\r\n <div class=\"col-md-12\">\r\n <input\r\n [ngClass]=\"{ 'is-invalid': formsSubmittedMap.get(PRODUCT_FAMILY.DigitalMarketing) && fDigiForm.fbPageUrl.errors }\"\r\n type=\"text\" formControlName=\"fbPageUrl\" class=\"form-control\" />\r\n <div *ngIf=\"formsSubmittedMap.get(PRODUCT_FAMILY.DigitalMarketing) && fDigiForm.fbPageUrl.errors\"\r\n class=\"invalid-feedback\">\r\n <div *ngIf=\"fDigiForm.fbPageUrl.errors.required\">required</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-10\">\r\n <div class=\"col-md-6\">\r\n <div fxLayout=\"row\" fxLayoutAlign=\"center center\" class=\"row\">\r\n <div class=\"col-md-4\">\r\n <label>CRM Name </label>\r\n </div>\r\n <div class=\"col-md-8\">\r\n <input\r\n [ngClass]=\"{ 'is-invalid': formsSubmittedMap.get(PRODUCT_FAMILY.DigitalMarketing) && fDigiForm.crmName.errors }\"\r\n type=\"text\" formControlName=\"crmName\" class=\"form-control\" />\r\n <div *ngIf=\"formsSubmittedMap.get(PRODUCT_FAMILY.DigitalMarketing) && fDigiForm.crmName.errors\"\r\n class=\"invalid-feedback\">\r\n <div *ngIf=\"fDigiForm.crmName.errors.required\">CRM name is required</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div fxLayout=\"row\" fxLayoutAlign=\"center center\" class=\"row\">\r\n <div class=\"col-md-4\">\r\n <label>CRM ID </label>\r\n </div>\r\n <div class=\"col-md-8\">\r\n <input\r\n [ngClass]=\"{ 'is-invalid': formsSubmittedMap.get(PRODUCT_FAMILY.DigitalMarketing) && fDigiForm.crmId.errors }\"\r\n type=\"text\" formControlName=\"crmId\" class=\"form-control\" />\r\n <div *ngIf=\"formsSubmittedMap.get(PRODUCT_FAMILY.DigitalMarketing) && fDigiForm.crmId.errors\"\r\n class=\"invalid-feedback\">\r\n <div *ngIf=\"fDigiForm.crmId.errors.required\">CRM ID is required</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <div class=\"row mb-10\">\r\n <div class=\"col-md-12\">\r\n <label>Notes</label>\r\n </div>\r\n <div class=\"col-md-12\">\r\n <textarea type=\"text\" rows=\"3\" class=\"form-control\" formControlName=\"notes\"\r\n [ngClass]=\"{ 'is-invalid': formsSubmittedMap.get(PRODUCT_FAMILY.DigitalMarketing) && fDigiForm.notes.errors }\"\r\n placeholder=\"Enter note\"> </textarea>\r\n <div *ngIf=\"formsSubmittedMap.get(PRODUCT_FAMILY.DigitalMarketing) && fDigiForm.notes.errors\"\r\n class=\"invalid-feedback\">\r\n <div *ngIf=\"fDigiForm.notes.errors.required\">note is required</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </form>\r\n <form *ngIf=\"iProductFamily === PRODUCT_FAMILY.AddPlatform\"\r\n [formGroup]=\"formsMap.get(PRODUCT_FAMILY.AddPlatform)!\"\r\n (ngSubmit)=\"onSubmit(PRODUCT_FAMILY.AddPlatform)\">\r\n\r\n <div class=\"row mb-10\">\r\n <div class=\"col-md-6\">\r\n <div class=\"row\" fxLayout=\"row\" fxLayoutAlign=\"center center\">\r\n <label class=\"col-md-4\">Client</label>\r\n <div class=\"col-md-8\">\r\n <ng-select [clearable]=\"false\"\r\n [ngClass]=\"{'is-invalid': formsSubmittedMap.get(PRODUCT_FAMILY.AddPlatform) && fAddPlatformForm.clientId.errors}\"\r\n bindLabel=\"fullName\" bindValue=\"id\" [items]=\"allMyClients\" formControlName=\"clientId\">\r\n </ng-select>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-4\">\r\n <div class=\"row\" fxLayout=\"row\" fxLayoutAlign=\"center center\">\r\n <label class=\"col-md-4\">Campaign</label>\r\n <div class=\"col-md-8\">\r\n <ng-select\r\n [ngClass]=\"{'is-invalid': formsSubmittedMap.get(PRODUCT_FAMILY.AddPlatform) && fAddPlatformForm.campaignId.errors}\"\r\n formControlName=\"campaignId\" bindLabel=\"name\" bindValue=\"id\" [items]=\"myCampaigns\">\r\n </ng-select>\r\n <div *ngIf=\"formsSubmittedMap.get(PRODUCT_FAMILY.AddPlatform) && fAddPlatformForm.campaignId.errors\"\r\n class=\"invalid-feedback\">\r\n <div *ngIf=\"fAddPlatformForm.campaignId.errors?.required\">Please select a campaign\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- <div *ngIf=\"showAPGoogle || showAPFacebook\" fxLayout=\"row\"\r\n class=\"row mb-10\">\r\n <div class=\"col-md-6\">\r\n <div fxLayout=\"row\" fxLayoutAlign=\"center center\" class=\"row\">\r\n <div class=\"col-md-4\">\r\n <label>Marketing Platforms</label>\r\n </div>\r\n <div class=\"col-md-8\">\r\n <div *ngIf=\"showAPGoogle\" class=\"row\">\r\n <div class=\"col-sm-2\">\r\n <input type=\"checkbox\" id=\"isGoogle\" formControlName=\"isGoogle\"\r\n class=\"form-check-input\" />\r\n </div>\r\n <label class=\"col-sm-8\" for=\"isGoogle\">Google</label>\r\n </div>\r\n <div *ngIf=\"showAPFacebook\" class=\"row\">\r\n <div class=\"col-sm-2\">\r\n <input type=\"checkbox\" id=\"isFacebook\" formControlName=\"isFacebook\"\r\n class=\"form-check-input\" />\r\n </div>\r\n <label class=\"col-sm-8\" for=\"isFacebook\">Meta (Facebook/Instagram)</label>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div> -->\r\n </form>\r\n\r\n\r\n <form *ngIf=\"iProductFamily === PRODUCT_FAMILY.CampaignConsulting\"\r\n [formGroup]=\"formsMap.get(PRODUCT_FAMILY.CampaignConsulting)!\"\r\n (ngSubmit)=\"onSubmit(PRODUCT_FAMILY.CampaignConsulting)\">\r\n <div class=\"row mb-10\">\r\n <div class=\"col-md-12\">\r\n <label>Notes</label>\r\n </div>\r\n <div class=\"col-md-12\">\r\n <textarea type=\"text\" rows=\"3\" class=\"form-control\" formControlName=\"notes\"\r\n [ngClass]=\"{ 'is-invalid': formsSubmittedMap.get(PRODUCT_FAMILY.CampaignConsulting) && fCampaignConsultingForm.notes.errors }\"\r\n placeholder=\"Enter note\"> </textarea>\r\n <div *ngIf=\"formsSubmittedMap.get(PRODUCT_FAMILY.CampaignConsulting) && fCampaignConsultingForm.notes.errors\"\r\n class=\"invalid-feedback\">\r\n <div *ngIf=\"fCampaignConsultingForm.notes.errors.required\">note is required</div>\r\n </div>\r\n </div>\r\n </div>\r\n </form>\r\n\r\n <form *ngIf=\"iProductFamily === PRODUCT_FAMILY.SEOProgram\" [formGroup]=\"formsMap.get(PRODUCT_FAMILY.SEOProgram)!\"\r\n (ngSubmit)=\"onSubmit(PRODUCT_FAMILY.SEOProgram)\">\r\n\r\n <div class=\"row mb-10\">\r\n <div class=\"col-md-12\">\r\n <div fxLayoutAlign=\"row\" fxLayoutAlign=\"center center\" class=\"row\" class=\"row\">\r\n <div class=\"col-md-2\">\r\n <label>Business Address</label>\r\n </div>\r\n <div class=\"col-md-10\">\r\n <input\r\n [ngClass]=\"{ 'is-invalid': formsSubmittedMap.get(PRODUCT_FAMILY.SEOProgram) && fSEOForm.businessAddress.errors }\"\r\n type=\"text\" formControlName=\"businessAddress\" class=\"form-control\" />\r\n <div *ngIf=\"formsSubmittedMap.get(PRODUCT_FAMILY.SEOProgram) && fSEOForm.businessAddress.errors\"\r\n class=\"invalid-feedback\">\r\n <div *ngIf=\"fSEOForm.businessAddress.errors.required\">Business address is required</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row mb-10\">\r\n <div class=\"col-md-6\">\r\n <div fxLayoutAlign=\"row\" fxLayoutAlign=\"center center\" class=\"row\" class=\"row\">\r\n <div class=\"col-md-4\">\r\n <label>Business Email Address</label>\r\n </div>\r\n <div class=\"col-md-8\">\r\n <input\r\n [ngClass]=\"{ 'is-invalid': formsSubmittedMap.get(PRODUCT_FAMILY.SEOProgram) && fSEOForm.businessEmail.errors }\"\r\n type=\"email\" formControlName=\"businessEmail\" class=\"form-control\" />\r\n <div *ngIf=\"formsSubmittedMap.get(PRODUCT_FAMILY.SEOProgram) && fSEOForm.businessEmail.errors\"\r\n class=\"invalid-feedback\">\r\n <div *ngIf=\"fSEOForm.businessEmail.errors.required\">Business email is required</div>\r\n <div *ngIf=\"fSEOForm.businessEmail.errors.email\">Email must be a valid email address</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div fxLayoutAlign=\"row\" fxLayoutAlign=\"center center\" class=\"row\" class=\"row\">\r\n <div class=\"col-md-4\">\r\n <label>Business Phone </label>\r\n </div>\r\n <div class=\"col-md-8\">\r\n <input\r\n [ngClass]=\"{ 'is-invalid': formsSubmittedMap.get(PRODUCT_FAMILY.SEOProgram) && fSEOForm.businessPhone.errors }\"\r\n type=\"text\" formControlName=\"businessPhone\" class=\"form-control\" />\r\n <div *ngIf=\"formsSubmittedMap.get(PRODUCT_FAMILY.SEOProgram) && fSEOForm.businessPhone.errors\"\r\n class=\"invalid-feedback\">\r\n <div *ngIf=\"fSEOForm.businessPhone.errors.required\">Business phone is required</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-10\">\r\n <div class=\"col-md-6\">\r\n <div fxLayoutAlign=\"row\" fxLayoutAlign=\"center center\" class=\"row\" class=\"row\">\r\n <div class=\"col-md-4\">\r\n <label>Business Name</label>\r\n </div>\r\n <div class=\"col-md-8\">\r\n <input\r\n [ngClass]=\"{ 'is-invalid': formsSubmittedMap.get(PRODUCT_FAMILY.SEOProgram) && fSEOForm.businessName.errors }\"\r\n type=\"text\" formControlName=\"businessName\" class=\"form-control\" />\r\n <div *ngIf=\"formsSubmittedMap.get(PRODUCT_FAMILY.SEOProgram) && fSEOForm.businessName.errors\"\r\n class=\"invalid-feedback\">\r\n <div *ngIf=\"fSEOForm.businessName.errors.required\">Business name is required</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-10\">\r\n <div class=\"col-md-6\">\r\n <div fxLayoutAlign=\"row\" fxLayoutAlign=\"center center\" class=\"row\" class=\"row\">\r\n <div class=\"col-md-4\">\r\n <label>Website Url</label>\r\n </div>\r\n <div class=\"col-md-8\">\r\n <input\r\n [ngClass]=\"{ 'is-invalid': formsSubmittedMap.get(PRODUCT_FAMILY.SEOProgram) && fSEOForm.businessWebsiteUrl.errors }\"\r\n type=\"text\" formControlName=\"businessWebsiteUrl\" class=\"form-control\" />\r\n <div *ngIf=\"formsSubmittedMap.get(PRODUCT_FAMILY.SEOProgram) && fSEOForm.businessWebsiteUrl.errors\"\r\n class=\"invalid-feedback\">\r\n <div *ngIf=\"fSEOForm.businessWebsiteUrl.errors.required\">Website is required</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </form>\r\n\r\n <form *ngIf=\"iProductFamily === PRODUCT_FAMILY.HostedWebsite\"\r\n [formGroup]=\"formsMap.get(PRODUCT_FAMILY.HostedWebsite)!\" (ngSubmit)=\"onSubmit(PRODUCT_FAMILY.HostedWebsite)\">\r\n\r\n <div class=\"row\" class=\"row mb-10\">\r\n <div class=\"col-md-12\">\r\n <label>Website Info</label>\r\n </div>\r\n <div class=\"col-md-12\">\r\n <textarea type=\"text\" rows=\"3\" class=\"form-control\" formControlName=\"websiteInfo\"\r\n [ngClass]=\"{ 'is-invalid': formsSubmittedMap.get(PRODUCT_FAMILY.HostedWebsite) && fHostedWebsiteForm.websiteInfo.errors }\"\r\n placeholder=\"Enter website info\"> </textarea>\r\n <span style=\"font-size:10px\">Please provide your URL (if you have one)</span>\r\n <div *ngIf=\"formsSubmittedMap.get(PRODUCT_FAMILY.HostedWebsite) && fHostedWebsiteForm.websiteInfo.errors\"\r\n class=\"invalid-feedback\">\r\n <div *ngIf=\"fHostedWebsiteForm.websiteInfo.errors.required\">note is required</div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row mb-10\">\r\n <div class=\"col-md-12\">\r\n <label>Notes</label>\r\n </div>\r\n <div class=\"col-md-12\">\r\n <textarea type=\"text\" rows=\"3\" class=\"form-control\" formControlName=\"notes\"\r\n [ngClass]=\"{ 'is-invalid': formsSubmittedMap.get(PRODUCT_FAMILY.HostedWebsite) && fHostedWebsiteForm.notes.errors }\"\r\n placeholder=\"Enter note\"> </textarea>\r\n <div *ngIf=\"formsSubmittedMap.get(PRODUCT_FAMILY.HostedWebsite) && fHostedWebsiteForm.notes.errors\"\r\n class=\"invalid-feedback\">\r\n <div *ngIf=\"fHostedWebsiteForm.notes.errors.required\">note is required</div>\r\n </div>\r\n </div>\r\n </div>\r\n </form>\r\n\r\n <form *ngIf=\"iProductFamily === PRODUCT_FAMILY.SocialMedia\" [formGroup]=\"formsMap.get(PRODUCT_FAMILY.SocialMedia)!\"\r\n (ngSubmit)=\"onSubmit(PRODUCT_FAMILY.SocialMedia)\">\r\n\r\n\r\n <div class=\"row mb-10\">\r\n <div class=\"col-md-12\">\r\n <div fxLayoutAlign=\"row\" fxLayoutAlign=\"center center\" class=\"row\">\r\n <div class=\"col-md-4\">\r\n <label>Website Url</label>\r\n </div>\r\n <div class=\"col-md-8\">\r\n <input\r\n [ngClass]=\"{ 'is-invalid': formsSubmittedMap.get(PRODUCT_FAMILY.SocialMedia) && fSocialMediaForm.websiteUrl.errors }\"\r\n type=\"text\" formControlName=\"websiteUrl\" class=\"form-control\" />\r\n <div *ngIf=\"formsSubmittedMap.get(PRODUCT_FAMILY.SocialMedia) && fSocialMediaForm.websiteUrl.errors\"\r\n class=\"invalid-feedback\">\r\n <div *ngIf=\"fSocialMediaForm.websiteUrl.errors.required\">required</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-10\">\r\n <div class=\"col-md-12\">\r\n <div fxLayoutAlign=\"row\" fxLayoutAlign=\"center center\" class=\"row\">\r\n <div class=\"col-md-4\">\r\n <label>Instagram Url</label>\r\n </div>\r\n <div class=\"col-md-8\">\r\n <input\r\n [ngClass]=\"{ 'is-invalid': formsSubmittedMap.get(PRODUCT_FAMILY.SocialMedia) && fSocialMediaForm.instagramUrl.errors }\"\r\n type=\"text\" formControlName=\"instagramUrl\" class=\"form-control\" />\r\n <div *ngIf=\"formsSubmittedMap.get(PRODUCT_FAMILY.SocialMedia) && fSocialMediaForm.instagramUrl.errors\"\r\n class=\"invalid-feedback\">\r\n <div *ngIf=\"fSocialMediaForm.instagramUrl.errors.required\">required</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-10\">\r\n <div class=\"col-md-12\">\r\n <div fxLayoutAlign=\"row\" fxLayoutAlign=\"center center\" class=\"row\">\r\n <div class=\"col-md-4\">\r\n <label>Facebook Url</label>\r\n </div>\r\n <div class=\"col-md-8\">\r\n <input\r\n [ngClass]=\"{ 'is-invalid': formsSubmittedMap.get(PRODUCT_FAMILY.SocialMedia) && fSocialMediaForm.facebookUrl.errors }\"\r\n type=\"text\" formControlName=\"facebookUrl\" class=\"form-control\" />\r\n <div *ngIf=\"formsSubmittedMap.get(PRODUCT_FAMILY.SocialMedia) && fSocialMediaForm.facebookUrl.errors\"\r\n class=\"invalid-feedback\">\r\n <div *ngIf=\"fSocialMediaForm.facebookUrl.errors.required\">required</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"row mb-10\">\r\n <div class=\"col-md-12\">\r\n <label>Additional Info / Links</label>\r\n </div>\r\n <div class=\"col-md-12\">\r\n <textarea type=\"text\" rows=\"3\" class=\"form-control\" formControlName=\"notes\"\r\n [ngClass]=\"{ 'is-invalid': formsSubmittedMap.get(PRODUCT_FAMILY.SocialMedia) && fSocialMediaForm.notes.errors }\"\r\n placeholder=\"Enter note\"> </textarea>\r\n <div *ngIf=\"formsSubmittedMap.get(PRODUCT_FAMILY.SocialMedia) && fSocialMediaForm.notes.errors\"\r\n class=\"invalid-feedback\">\r\n <div *ngIf=\"fSocialMediaForm.notes.errors.required\">note is required</div>\r\n </div>\r\n </div>\r\n </div>\r\n </form>\r\n</div>","import { Component, OnInit, Input } from '@angular/core';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { ReplaySubject } from 'rxjs';\r\nimport { PRODUCT_TYPES } from '../../../core/helpers/constants';\r\nimport { IProductMain } from '../../../core/models/products.models';\r\n\r\n@Component({\r\n selector: 'app-product-tile',\r\n templateUrl: './product-tile.component.html',\r\n styleUrls: ['./product-tile.component.scss']\r\n})\r\n\r\n/**\r\n * Page Title Component\r\n */\r\nexport class ProductTileComponent implements OnInit {\r\n private destroyed$: ReplaySubject<boolean> = new ReplaySubject(1);\r\n PRODUCT_TYPES = PRODUCT_TYPES;\r\n @Input() product: IProductMain = {} as IProductMain;\r\n constructor(\r\n public sanitizer: DomSanitizer\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n }\r\n}\r\n","<div fxLayout=\"column\" fxLayoutAlign=\"space-between center\" style=\"height: 100%\">\r\n <div fxLayout=\"column\" fxLayoutAlign=\"space-between center\">\r\n <div style=\"height: 100px\" fxLayout=\"row\" fxLayoutAlign=\"center center\">\r\n <img [src]=\"sanitizer.bypassSecurityTrustUrl('data:image/png;base64,' + product.media.blob)\" style=\"height: inherit;\">\r\n </div>\r\n <div style=\"margin-top:10px\">\r\n <h4>{{product.display}}</h4>\r\n </div>\r\n <div>\r\n <p>{{product.description}}</p>\r\n </div>\r\n\r\n <div style=\"width: 100%\" fxLayout=\"column\" fxLayoutAlign=\"start start\">\r\n <div *ngIf=\"product.type === PRODUCT_TYPES.SimpleSubscription.code\">\r\n <label style=\"font-weight: bold\" *ngIf=\"product.isGoogle && product.isGoogle\">Includes Google</label>\r\n </div>\r\n <div *ngIf=\"product.type === PRODUCT_TYPES.SimpleSubscription.code\">\r\n <label style=\"font-weight: bold\" *ngIf=\"product.isFacebook && product.isFacebook\">Includes Facebook</label>\r\n </div>\r\n <div *ngIf=\"product.type === PRODUCT_TYPES.SimpleSubscription.code\">\r\n <label style=\"font-weight: bold\" *ngIf=\"product.isTikTok && product.isTikTok\">Includes TikTok</label>\r\n </div>\r\n </div>\r\n </div>\r\n <div>\r\n <strong *ngIf=\"product.type === PRODUCT_TYPES.SimpleProduct.code\">{{product?.data?.price | currency: 'USD' : 'symbol' :\r\n '1.0-0'}}</strong>\r\n <strong *ngIf=\"product.type === PRODUCT_TYPES.SimpleSubscription.code\">From {{product?.data?.price | currency:'USD' :\r\n 'symbol' : '1.0-0'}} /{{product.data.duration}}</strong>\r\n </div>\r\n</div>","import { Component, OnInit, OnDestroy } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { ReplaySubject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { createGuid } from '../../../core/helpers/utility';\nimport { ICart, IProductMain } from '../../../core/models/products.models';\nimport { AppService } from '../../../store/app.service';\nimport { ShopApiService } from '../shop.apiservice';\nimport { UtilityService } from '../../../core/helpers/utility.service';\nimport { IUser } from '../../../core/models/auth.models';\nimport { ClientsApiService } from '../../clients/clients.apiservice';\n\n@Component({\n selector: 'app-products-list',\n templateUrl: './products-list.component.html',\n styleUrls: ['./products-list.component.scss']\n})\n\n/**\n * Page Title Component\n */\nexport class ProductsListComponent implements OnInit, OnDestroy {\n pageNumber = 1;\n pageSize = 12;\n\n allProducts: Array<IProductMain> = new Array<IProductMain>();\n holdProducts: Array<IProductMain> = new Array<IProductMain>();\n tempProducts: Array<IProductMain> = new Array<IProductMain>();\n\n allMyCompanies: {id: number; name: string}[] = [];\n\n private destroyed$: ReplaySubject<boolean> = new ReplaySubject(1);\n public userRoles: Array<number> = [];\n activeUser: IUser = {} as IUser;\n \n doneLoading: boolean = false;\n\n constructor(\n private shopApiService: ShopApiService,\n private appService: AppService,\n private router: Router,\n public uService: UtilityService,\n private clientService: ClientsApiService,\n ) {\n this.userRoles = [...this.uService.getUserRoles()];\n this.appService.getActiveUser$()\n .pipe(takeUntil(this.destroyed$))\n .subscribe(u => {\n this.activeUser = u;\n });\n }\n\n ngOnInit(): void {\n this.appService.setPageTitle$('Shop');\n\n if (this.activeUser.roles[0].code === 8 || this.activeUser.roles[0].code === 9) {\n this.appService.getAllCampaigns$()\n .pipe(takeUntil(this.destroyed$))\n .subscribe((response: any) => {\n var checkingClients: any[] = [];\n var clientBrands: any[] = [];\n var someProducts: any[] = [];\n\n response.data.forEach((c: any) => {\n if (!checkingClients.find((cc: any) => cc.clientId === c.clientId)) {\n checkingClients.push({clientName: c.clientName, clientId: c.clientId,});\n }\n });\n \n checkingClients.forEach((c: any) => {\n this.clientService.getClientDetails(c.clientId)\n .pipe(takeUntil(this.destroyed$))\n .subscribe((response: any) => {\n if (!clientBrands.find((cb: any) => cb === response.data.brand)) {\n clientBrands.push(response.data.brand);\n }\n });\n });\n\n this.shopApiService.getProducts()\n .pipe(takeUntil(this.destroyed$))\n .subscribe((response: any) => {\n var tempProducts = response.data;\n\n for (var i = 0; i < tempProducts.length; i++) {\n for (var j = 0; j < clientBrands.length; j++) {\n if (tempProducts[i].companyNames.indexOf(clientBrands[j]) > -1 && !tempProducts[i].isBundleOnly) {\n someProducts.push(tempProducts[i]);\n }\n }\n }\n\n this.allProducts = someProducts;\n this.allProducts.sort((a, b) => a.display!.localeCompare(b.display!));\n \n this.tempProducts = this.allProducts.slice(0, this.pageSize);\n this.holdProducts = this.allProducts;\n \n this.allProducts.forEach((p: IProductMain) => {\n p.companyNames.split(',').forEach((pc: string) => {\n if (!this.allMyCompanies.find((c) => c.name === pc) && pc) {\n this.allMyCompanies.push({id: this.allMyCompanies.length, name: pc!});\n }\n })\n });\n\n this.allMyCompanies.sort((a, b) => a.name.localeCompare(b.name));\n this.doneLoading = true;\n });\n });\n \n this.appService.fetchAllCampaigns({});\n\n } else {\n this.shopApiService.getAllProducts()\n .pipe(takeUntil(this.destroyed$))\n .subscribe((response: any) => {\n this.allProducts = [...response.data];\n this.allProducts.sort((a, b) => a.display!.localeCompare(b.display!));\n this.tempProducts = this.allProducts.slice(0, this.pageSize);\n this.holdProducts = this.allProducts;\n this.allProducts.forEach((p: IProductMain) => {\n p.companyNames.split(',').forEach((pc: string) => {\n if (!this.allMyCompanies.find((c) => c.name === pc) && pc) {\n this.allMyCompanies.push({id: this.allMyCompanies.length, name: pc!});\n }\n })\n });\n this.allMyCompanies.sort((a, b) => a.name.localeCompare(b.name));\n this.doneLoading = true;\n });\n }\n }\n\n onCompanyChange(event: any) {\n if (event !== undefined) {\n this.allProducts = this.holdProducts.filter((p: IProductMain) => p.companyNames?.indexOf(event.name) > -1);\n } else {\n this.allProducts = this.holdProducts;\n }\n this.onPageChange(1);\n }\n\n onAddtoCart(id: string) {\n if (this.userRoles.includes(1) || (!this.userRoles.includes(3) && !this.userRoles.includes(10) && !this.userRoles.includes(2) && !this.userRoles.includes(12))) {\n this.shopApiService.saveCart({id: createGuid(), productId: id, currentStep: 1} as ICart)\n .pipe(takeUntil(this.destroyed$))\n .subscribe((r: any) => {\n if (r.good) {\n this.router.navigate(['/pages/shop/cart', r.data.id]);\n }\n });\n }\n }\n\n ngOnDestroy(): void {\n this.destroyed$.next(true);\n this.destroyed$.complete();\n }\n\n onPageChange(pageNumber: number) {\n this.pageNumber = pageNumber;\n this.tempProducts = this.allProducts.slice((this.pageNumber - 1) * this.pageSize, this.pageNumber * this.pageSize);\n }\n}\n","<div fxLayout=\"column\" fxLayoutAlign=\"start center\">\r\n <aw-wizard class=\"wizard-design\" style=\"min-width: 100%;\">\r\n <aw-wizard-step \r\n style=\"margin-top: 16px; min-height: 400px;\" stepTitle=\"Product(s)\">\r\n <div fxLayout=\"row\" fxLayoutAlign=\"space-between center\" style=\"padding-right: 32px;\">\r\n <div>\r\n <p *ngIf=\"doneLoading && ((userRoles.includes(1)) || (userRoles.includes(2)) || (userRoles.includes(4)) || (userRoles.includes(3)) || (userRoles.includes(10)) || (userRoles.includes(12)))\">Please select a Company:</p>\r\n <ng-select *ngIf=\"doneLoading && ((userRoles.includes(1)) || (userRoles.includes(2)) || (userRoles.includes(4)) || (userRoles.includes(3)) || (userRoles.includes(10)) || (userRoles.includes(12)))\" [items]=\"this.allMyCompanies\" bindLabel=\"name\" bindValue=\"id\" (change)=\"onCompanyChange($event)\" style=\"width: 33vw !important;\"></ng-select>\r\n </div>\r\n <div *ngIf=\"(allProducts.length / pageSize) > 1\" class=\"text-md-right float-md-end pagination-rounded\">\r\n <ngb-pagination [maxSize]=\"1\" [rotate]=\"true\" [ellipses]=\"true\"\r\n [collectionSize]=\"allProducts.length\" [page]=\"pageNumber\" [boundaryLinks]=\"true\"\r\n (pageChange)=\"onPageChange($event)\" [pageSize]=\"pageSize\">\r\n </ngb-pagination>\r\n </div>\r\n </div> \r\n <div fxLayout=\"row wrap\" fxLayoutGap=\"32px\" fxLayoutAlign=\"flex-start\" style=\"margin-top: 16px !important;\">\r\n <ng-container *ngFor=\"let p of tempProducts\">\r\n <app-product-tile (click)=\"onAddtoCart(p.id)\" [product]=\"p\" fxFlex.xs=\"100%\" fxFlex.sm=\"33%\" fxFlex=\"0 1 calc(33.3% - 32px)\"></app-product-tile>\r\n </ng-container>\r\n </div>\r\n <div *ngIf=\"(allProducts.length / pageSize) > 1\" fxLayout=\"row\" fxLayoutAlign=\"end center\" style=\"padding-right: 32px;\">\r\n <div class=\"text-md-right float-md-end pagination-rounded\">\r\n <ngb-pagination [maxSize]=\"1\" [rotate]=\"true\" [ellipses]=\"true\"\r\n [collectionSize]=\"allProducts.length\" [page]=\"pageNumber\" [boundaryLinks]=\"true\"\r\n (pageChange)=\"onPageChange($event)\" [pageSize]=\"pageSize\">\r\n </ngb-pagination>\r\n </div>\r\n </div> \r\n </aw-wizard-step>\r\n <aw-wizard-step \r\n style=\"margin-top: 40px; min-height: 400px;\" stepTitle=\"Location\">\r\n </aw-wizard-step>\r\n <aw-wizard-step \r\n style=\"margin-top: 40px; min-height: 400px;\" stepTitle=\"Ad Spend\">\r\n </aw-wizard-step>\r\n <aw-wizard-step \r\n style=\"margin-top: 40px; min-height: 400px;\" stepTitle=\"Checkout\">\r\n </aw-wizard-step>\r\n </aw-wizard>\r\n</div>","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\nimport { CartWizardComponent } from './cart-wizard/cart-wizard.component';\r\nimport { OrderCompleteComponent } from './order-complete/order-complete.component';\r\nimport { ProductsListComponent } from './products-list/products-list.component';\r\n\r\n\r\n\r\nconst routes: Routes = [\r\n {\r\n path: '',\r\n component: ProductsListComponent\r\n },\r\n {\r\n path: 'cart/:id',\r\n component: CartWizardComponent\r\n },\r\n {\r\n path: 'ordercomplete/:g/:n/:o',\r\n component: OrderCompleteComponent\r\n },\r\n {\r\n path: 'ordercomplete/:g/:n/:o/:e/:d',\r\n component: OrderCompleteComponent\r\n },\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class ShopRoutingModule { }\r\n","import { Injectable } from '@angular/core';\r\nimport { ICart, IProductMain } from '../../core/models/products.models';\r\nimport { HttpService } from '../../shared/http/base.http';\r\n@Injectable()\r\nexport class ShopApiService extends HttpService {\r\n\r\n\r\n updateCartStep(id: string, stepCode: number) {\r\n let chunk = { id, stepCode };\r\n return this.post('/shop/updateCartStep', chunk, { 'Content-Type': 'application/json; charset=utf-8' });\r\n }\r\n\r\n saveCart(data: ICart) {\r\n return this.post('/shop/saveCart', data, { 'Content-Type': 'application/json; charset=utf-8' });\r\n }\r\n getCartDetails(id: string) {\r\n return this.get<ICart>('/shop/getCartDetails?id=' + id);\r\n }\r\n getAllProducts() {\r\n return this.get<Array<IProductMain>>('/products/getAllByCompany');\r\n }\r\n getProducts() {\r\n return this.get<Array<IProductMain>>('/products/getAllProducts');\r\n }\r\n getProductDetails(id: string) {\r\n return this.get<IProductMain>('/products/getProductDetailsShop?id=' + id);\r\n }\r\n getCouponDetails(cartId: string, code: string) {\r\n return this.get<any>(`/shop/getCouponDetails?cartId=${cartId}&code=${code}`);\r\n }\r\n\r\n getCartProductPrices(request: any){\r\n return this.post('/shop/getCartProductPrices', request, { 'Content-Type': 'application/json; charset=utf-8' });\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { RouterModule } from '@angular/router';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { MatCardModule } from '@angular/material/card';\r\nimport { SortablejsModule } from 'ngx-sortablejs'\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { NgSelectModule } from '@ng-select/ng-select';\r\nimport { DatatableModule } from '../../shared/components/datatable/datatable.module';\r\nimport { P_AppDateFormat } from '../../shared/shared.pipe';\r\nimport { NotesModule } from '../../shared/components/notes/notes.module';\r\nimport { SharedModule } from '../../shared/shared.module';\r\nimport { ProductTileComponent } from './product-tile/product-tile.component';\r\nimport { ProductsListComponent } from './products-list/products-list.component';\r\nimport { ShopRoutingModule } from './shop-routing.module';\r\nimport { ShopApiService } from './shop.apiservice';\r\nimport { CartWizardComponent } from './cart-wizard/cart-wizard.component';\r\nimport { ProductInputComponent } from './product-input/product-input.component';\r\nimport { OrderCompleteComponent } from './order-complete/order-complete.component';\r\nimport { MatChipsModule } from '@angular/material/chips';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\n\r\n@NgModule({\r\n declarations: [\r\n ProductTileComponent,\r\n ProductsListComponent,\r\n CartWizardComponent,\r\n ProductInputComponent,\r\n OrderCompleteComponent\r\n ],\r\n imports: [\r\n FormsModule,\r\n ReactiveFormsModule,\r\n CommonModule,\r\n RouterModule,\r\n DragDropModule,\r\n MatCardModule,\r\n SortablejsModule,\r\n MatCheckboxModule,\r\n NgSelectModule,\r\n DatatableModule,\r\n NotesModule,\r\n SharedModule,\r\n ShopRoutingModule,\r\n MatChipsModule,\r\n MatIconModule,\r\n MatFormFieldModule\r\n ],\r\n providers: [ShopApiService, P_AppDateFormat]\r\n})\r\nexport class ShopModule { }\r\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { FormArray, FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { NgbActiveModal } from \"@ng-bootstrap/ng-bootstrap\";\nimport { take } from 'rxjs/operators';\nimport { SubscriptionApiService } from '../../../pages/subscriptions/subscription.apiservice';\nimport { AppService } from '../../../store/app.service';\nimport { PaymentMethodApiService } from '../../../pages/my-account/payment-method/payment-method.apiservice';\nimport { UtilityService } from '../../../core/helpers/utility.service';\nimport { ROLES } from '../../../core/helpers/constants';\nimport * as _ from 'underscore';\n\n@Component({\n selector: 'modal-edit-subscription',\n templateUrl: './edit-subscription.component.html',\n styleUrls: ['./edit-subscription.component.scss']\n})\nexport class EditSubscriptionModal {\n\n @Input() section?: string;\n @Output() oSaveClicked = new EventEmitter<any>();\n public userRoles: Array<number> = [];\n public ROLES = ROLES;\n\n @Input() set iId(value: string) {\n this.id = value;\n if (value !== null) {\n this.loadDetails();\n }\n }\n subscription: any;\n allPaymentMethods: Array<any> = new Array<any>();\n clientId?: string = '';\n editForm!: FormGroup;\n addProductForm!: FormGroup;\n submitted = false;\n id: string = '';\n prods: Array<any> = new Array<any>();\n filteredProds: Array<any> = new Array<any>();\n assignedProductId: string = '';\n isAddProductMode: boolean = false;\n constructor(\n private appService: AppService,\n private uService: UtilityService,\n private subscriptionApiService: SubscriptionApiService,\n private paymentMethodApiService: PaymentMethodApiService,\n public activeModal: NgbActiveModal,\n private formBuilder: FormBuilder) {\n this.userRoles = [...this.uService.getUserRoles()];\n this.editForm = this.formBuilder.group({\n id: [null],\n products: this.formBuilder.array([]),\n paymentMethodId: [null, Validators.required],\n });\n this.addProductForm = this.formBuilder.group({\n assignedProductId: [null, Validators.required]\n });\n this.subscriptionApiService.getProductsWithVariables()\n .subscribe((response: any) => {\n if (response.good) {\n this.prods = response.data;\n }\n });\n }\n\n get f() { return this.editForm.controls; }\n\n public get productsForm(): FormArray {\n return this.editForm.get('products') as FormArray\n }\n\n loadDetails() {\n if (this.id) {\n this.subscriptionApiService.getSubscription(this.id)\n .pipe(take(1))\n .subscribe((response: any) => {\n if (response.good) {\n this.subscription = response.subscription;\n this.editForm.patchValue(response.subscription);\n this.clientId = response.subscription.campaigns[0].clientId;\n this.loadPaymentMethodsByClientId();\n for (let i = 0; i < response.subscription.products.length; i++) {\n const product = response.subscription.products[i];\n this.productsForm.push(this.formBuilder.group({ productId: [product.id, Validators.required], adSpendAmount: [product.adSpend] }));\n }\n }\n });\n }\n }\n\n loadPaymentMethodsByClientId() {\n this.paymentMethodApiService.getPaymentMethodsByClient(this.clientId)\n .pipe(take(1))\n .subscribe((response: any) => {\n if (response.good) {\n this.allPaymentMethods = response.paymentMethods.map((x: any) => {\n return { ...x, name: `${x.nickname} - ${x.cardNumber}` }\n });\n }\n });\n }\n\n onSubmit() {\n this.submitted = true;\n if (this.editForm.invalid)\n return;\n const request = {\n id: this.editForm.getRawValue().id,\n adSpend: this.editForm.getRawValue().products.map((x: any) => { return { productId: x.productId, adSpend: x.adSpendAmount } }),\n paymentMethodId: this.editForm.getRawValue().paymentMethodId\n };\n //request.adSpend = request.adSpend.filter((x: any) => x.adSpend !== null);\n this.subscriptionApiService.edit(request).subscribe((response: any) => {\n if (response.good) {\n this.activeModal.close();\n this.oSaveClicked.emit();\n }\n });\n }\n\n deleteProduct(id: string) {\n const index = this.productsForm.value.findIndex((product: { productId: string; }) => product.productId == id);\n this.productsForm.removeAt(index);\n const indexProd = this.subscription.products.findIndex((x: { id: string; }) => x.id == id);\n this.subscription.products.splice(indexProd,1);\n }\n\n addProduct(){\n var selectedProdIds = _.flatten(this.subscription.products.map((x: { id: any; }) => x.id));\n this.filteredProds = this.prods.filter(x => !selectedProdIds.includes(x.id));\n this.isAddProductMode = true;\n }\n\n addProductToSub(){\n var selectedProductId = this.addProductForm.get('assignedProductId')?.value;\n var selectedProduct = this.prods.filter(x => x.id == selectedProductId)[0];\n this.subscription.products.push(selectedProduct);\n this.productsForm.push(this.formBuilder.group({ productId: [selectedProduct.id, Validators.required], adSpendAmount: [selectedProduct.adSpend] }));\n this.isAddProductMode = false;\n } \n\n CancelAddMode(){\n this.isAddProductMode = false;\n }\n\n isProductNotSelected(){\n var selectedProductId = this.addProductForm.get('assignedProductId')?.value;\n if(selectedProductId == null){\n return true;\n }\n else{\n return false;\n }\n }\n\n}\n","<div class=\"modal-box\" cdkDrag>\n <form [formGroup]=\"editForm\" (ngSubmit)=\"onSubmit()\">\n <div class=\"modal-header\" style=\"cursor: move; display: flex; flex-direction: row; justify-content: space-between;\" cdkDragHandle>\n <h4 class=\"modal-title\">Edit Subscription</h4>\n <button type=\"button\" class=\"close\" aria-label=\"Close\" (click)=\"activeModal.dismiss('Cross click')\">\n <span aria-hidden=\"true\">×</span>\n </button>\n </div>\n <div class=\"modal-body\">\n <div class=\"row mb-3\" *ngIf=\"section !== 'products'\">\n <label class=\"col-sm-3\" for=\"paymentMethod\">Payment Method</label>\n <div class=\"col-sm-9\">\n <ng-select formControlName=\"paymentMethodId\"\n [ngClass]=\"{ 'is-invalid': submitted && f.paymentMethodId.errors }\" bindLabel=\"name\" bindValue=\"id\"\n [items]=\"allPaymentMethods\">\n </ng-select>\n <div *ngIf=\"submitted && f.paymentMethodId.errors\" class=\"invalid-feedback\">\n <div *ngIf=\"f.paymentMethodId.errors.required\">payment method is required\n </div>\n </div>\n </div>\n </div>\n <div *ngIf=\"section !== 'payment'\">\n <div class=\"row mb-3\" *ngIf=\"subscription\">\n <div formArrayName=\"products\">\n <div *ngFor=\"let productRow of productsForm.controls; let i=index\" class=\"row mb-3\">\n <ng-container [formGroupName]=\"i\">\n <label class=\"col-sm-3\">Products</label>\n <div class=\"col-sm-4\" style=\"margin: auto;\">\n <div style=\"display: inline ;\">{{subscription.products[i].name}}</div>\n </div>\n <div class=\"col-sm-4\">\n <ng-select *ngIf=\"subscription.products[i].adSpendOptions.length\"\n formControlName=\"adSpendAmount\" [items]=\"subscription.products[i].adSpendOptions\">\n </ng-select>\n </div>\n <div class=\"col-sm-1\">\n <span *ngIf=\"userRoles.includes(ROLES.Admin.Code) || userRoles.includes(ROLES.ShopManager.Code)\" class=\"input-group-text\" style=\"cursor: pointer;\"\n title=\"Click to remove product.\" (click)=\"deleteProduct(subscription.products[i].id)\">\n <i class=\"fas fa-times\"></i>\n </span>\n </div>\n </ng-container>\n </div>\n </div>\n </div>\n <div class=\"row pt-2 pb-2\" *ngIf=\"userRoles.includes(ROLES.Admin.Code) || userRoles.includes(ROLES.ShopManager.Code)\">\n <div class=\"col-4\">\n <button type=\"button\" class=\"btn btn-sm btn-dark mt-2\" (click)=\"addProduct()\">\n Add Product</button>\n </div>\n </div>\n <div *ngIf=\"isAddProductMode\" class=\"row mb-3 pt-2\">\n <form [formGroup]=\"addProductForm\">\n <div class=\"col-sm-5\">\n <ng-select\n placeholder=\"\" [items]=\"filteredProds\" bindLabel=\"name\" bindValue=\"id\"\n formControlName=\"assignedProductId\">\n </ng-select>\n </div>\n </form>\n </div>\n <div *ngIf=\"isAddProductMode && (userRoles.includes(ROLES.Admin.Code) || userRoles.includes(ROLES.ShopManager.Code))\" class=\"row mb-3 pb-2\">\n <div class=\"col-sm-1\">\n <button [disabled]=\"isProductNotSelected()\" type=\"button\" class=\"btn btn-sm btn-dark mt-2\" (click)=\"addProductToSub()\">\n Add</button>\n </div>\n <div class=\"col-sm-1\">\n <button type=\"button\" class=\"btn btn-sm btn-dark mt-2\" (click)=\"CancelAddMode()\">\n Cancel</button>\n </div>\n </div>\n </div>\n </div>\n <div class=\"modal-footer\" style=\"cursor: move; display: flex; flex-direction: row; flex-wrap: nowrap; align-items: center; justify-content: space-between;\" cdkDragHandle>\n <button type=\"button\" class=\"btn btn-orange\" (click)=\"activeModal.close('Close click')\">Cancel</button>\n <button type=\"submit\" class=\"blue-button\">Save</button>\n </div>\n </form>\n</div>","import { Injectable } from '@angular/core';\nimport { HttpService } from '../../shared/http/base.http';\n\n@Injectable()\nexport class SubscriptionApiService extends HttpService {\n\n getAllSubscriptions(campaignId?: any, clientId?: any, subscriptionIds?: string[]) {\n let query = \"\";\n if (campaignId) {\n query += `campaignId=${campaignId}`;\n } else if (clientId) {\n query += `clientId=${clientId}`;\n } else if (subscriptionIds) {\n query += subscriptionIds.map(id => `id=${id}`).join('&');\n }\n return this.get<Array<any>>(`/subscriptions/all?${query}`);\n }\n\n getSubscription(id: string) {\n return this.get('/subscriptions?id=' + id);\n }\n\n edit(data: any) {\n return this.post('/subscriptions/edit', data);\n }\n\n editCampaigns(data: any) {\n return this.post('/subscriptions/editCampaigns', data);\n }\n\n addProducts(data: any) {\n return this.post('/subscriptions/products', data);\n }\n\n addCoupon(data: any) {\n return this.post('/subscriptions/coupon', data);\n }\n\n removeCoupon(id: string) {\n return this.delete(`/subscriptions/coupon?subscriptionCouponId=${id}`);\n }\n\n cancelSubscription(subscriptionId: string) {\n return this.get(`/subscriptions/cancel?id=${subscriptionId}`);\n }\n\n reactiveSubscription(subscriptionId: string) {\n return this.get(`/subscriptions/reactive?id=${subscriptionId}`);\n }\n\n getProductsWithVariables(){\n return this.get('/products/getAllProductsWithVariable');\n }\n\n updateRebillDay(data: any) {\n return this.post('/subscriptions/updaterebillday', data);\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { ReplaySubject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { createGuid } from '../../../core/helpers/utility';\nimport { AppService } from '../../../store/app.service';\nimport { TagsApiService } from '../tags.apiservice';\n@Component({\n selector: 'app-edit-tag',\n templateUrl: './edit-tag.component.html',\n styleUrls: ['./edit-tag.component.scss']\n})\nexport class EditTagComponent implements OnInit {\n private destroyed$: ReplaySubject<boolean> = new ReplaySubject(1);\n editTagForm!: FormGroup;\n submitted = false;\n\n //new\n returnPath: string = '../tags/';\n\n constructor(\n private router: Router,\n private formBuilder: FormBuilder,\n private route: ActivatedRoute,\n private appService: AppService,\n private tagsApiService: TagsApiService) {\n\n this.editTagForm = this.formBuilder.group({\n id: [null],\n name: ['', [Validators.required]],\n description: ['', Validators.required],\n categories: ['', [Validators.required]],\n clientId: [null],\n campaignId: [null]\n });\n }\n\n ngOnInit(): void {\n let id = this.route.snapshot.paramMap.get('id');\n if (id != null) {\n this.returnPath = '../../tags/';\n }\n this.appService.setPageTitle$(`Tags - ${id ? 'Edit' : 'Add New Tag'}`);\n if (id) {\n this.tagsApiService.getTagDetails(id)\n .pipe(takeUntil(this.destroyed$))\n .subscribe((response: any) => {\n this.editTagForm.patchValue(response.data);\n });\n }\n\n }\n get f() { return this.editTagForm.controls; }\n\n onClientRowClick(evt: any) {\n //this.router.navigate(['/pages/tag-details', evt.id]);\n }\n\n onSubmit() {\n this.submitted = true;\n if (this.editTagForm.invalid)\n return;\n if (this.f.id.value === null)\n this.f.id.setValue(createGuid())\n\n var request = this.editTagForm.value;\n request = this.trimObjectStrings(request);\n\n this.tagsApiService.saveTag(request)\n .pipe(takeUntil(this.destroyed$))\n .subscribe((response: any) => {\n this.router.navigate(['/pages/tags']);\n });\n }\n\n // This function will recursively iterate through the object\n trimObjectStrings(obj: any): any {\n // Iterate over each property of the object\n for (const key in obj) {\n if (obj.hasOwnProperty(key)) {\n const value = obj[key];\n \n if (typeof value === 'string') {\n // Trim the string if the value is a string\n obj[key] = value.trim();\n } else if (typeof value === 'object' && value !== null) {\n // Recursively call the function if the value is an object (or array)\n this.trimObjectStrings(value);\n }\n }\n }\n return obj;\n }\n\n ngAfterViewInit() {\n\n }\n\n}\n","<div class=\"row\">\n <div class=\"col-md-12\">\n <div class=\"card card-custom\">\n <div class=\"card-body\">\n <div class=\"row\">\n <div class=\"col-md-6\">\n <form [formGroup]=\"editTagForm\" (ngSubmit)=\"onSubmit()\">\n <div class=\"row mb-3\">\n <label class=\"col-sm-3\" for=\"name\">Name</label>\n <div class=\"col-sm-6\">\n <input type=\"text\" class=\"form-control\" formControlName=\"name\"\n [ngClass]=\"{ 'is-invalid': submitted && f.name.errors }\"\n placeholder=\"Enter tag name\">\n <div *ngIf=\"submitted && f.name.errors\" class=\"invalid-feedback\">\n <div *ngIf=\"f.name.errors.required\">name is required</div>\n </div>\n </div>\n </div>\n <div class=\"row mb-3\">\n <label class=\"col-sm-3\" for=\"description\">Description</label>\n <div class=\"col-sm-6\">\n <textarea rows=\"3\" class=\"form-control\" formControlName=\"description\"\n [ngClass]=\"{ 'is-invalid': submitted && f.description.errors }\"\n placeholder=\"enter description\"></textarea>\n <div *ngIf=\"submitted && f.description.errors\" class=\"invalid-feedback\">\n <div *ngIf=\"f.description.errors.required\">description is required</div>\n </div>\n </div>\n </div>\n <div class=\"row mb-3\">\n <label class=\"col-sm-3\" for=\"categories\">Categories</label>\n <div class=\"col-sm-6\">\n <input type=\"text\" class=\"form-control\" formControlName=\"categories\"\n [ngClass]=\"{ 'is-invalid': submitted && f.categories.errors }\"\n placeholder=\"Enter categories\">\n <div *ngIf=\"submitted && f.categories.errors\" class=\"invalid-feedback\">\n <div *ngIf=\"f.categories.errors.required\">categories is required</div>\n </div>\n </div>\n </div>\n <div class=\"row mb-3\">\n <div class=\"col-sm-3\"></div>\n <div class=\"col-sm-6\" style=\"display: flex; align-items: center; justify-content: space-between; flex-direction: row;\">\n <button type=\"button\" class=\"btn btn-orange\" [routerLink]=\"returnPath\">Cancel</button>\n <button class=\"blue-button\" type=\"submit\">SAVE</button>\n </div>\n </div>\n </form>\n </div>\n <div class=\"col-md-6\">\n </div>\n </div>\n </div>\n </div>\n\n </div>\n</div>","import { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { ReplaySubject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport Swal from 'sweetalert2';\nimport { PAGE_NAMES } from '../../../core/helpers/constants';\nimport { IPermission } from '../../../core/models/auth.models';\nimport { ITag } from '../../../core/models/tags.models';\nimport { AppService } from '../../../store/app.service';\nimport { TagsApiService } from '../tags.apiservice';\n@Component({\n selector: 'app-tags',\n templateUrl: './tags-main.component.html',\n styleUrls: ['./tags-main.component.scss']\n})\nexport class TagsMainComponent implements OnInit {\n doWhat: IPermission = {} as IPermission;\n columns = [\n { title: 'Name', field: 'name', sortable: true, searchable: true },\n { title: 'Description', field: 'description', sortable: true, searchable: true },\n { title: 'Categories', field: 'categories', searchable: true },\n ]\n tagsData: Array<ITag>\n private destroyed$: ReplaySubject<boolean> = new ReplaySubject(1);\n constructor(\n private router: Router,\n private route: ActivatedRoute,\n private tagService: TagsApiService,\n private appService: AppService) {\n this.tagsData = new Array<ITag>();\n }\n\n ngOnInit(): void {\n this.appService.setPageTitle$('Tags');\n this.doWhat = this.appService.getUserRolesForPage(PAGE_NAMES.Tags);\n this.appService.getAllTags$()\n .pipe(takeUntil(this.destroyed$)\n )\n .subscribe((response: Array<ITag>) => {\n this.tagsData = [...response];\n });\n const savedSearchId = this.route.snapshot.queryParams['savedsearchid'];\n this.appService.fetchAllTags(savedSearchId);\n }\n\n editRow(evt: any) {\n this.router.navigate(['/pages/edit-tag', evt.id]);\n }\n deleteRows(evt: any) {\n this.tagService.deleteTag(evt)\n .pipe(takeUntil(this.destroyed$))\n .subscribe((response: any) => {\n const savedSearchId = this.route.snapshot.queryParams['savedsearchid'];\n this.appService.fetchAllTags(savedSearchId);\n })\n }\n onClientRowClick(evt: any) {\n //this.router.navigate(['/pages/tag-details', evt.id]);\n }\n\n ngAfterViewInit() {\n\n }\n\n}\n","<app-campaign-datatable [iCanRead]=\"doWhat.canRead\" [iCanWrite]=\"doWhat.canWrite\" [iCanDelete]=\"doWhat.canDelete\" [iColumns]=\"columns\" (oRowClick)=\"onClientRowClick($event)\" (oDeleteRows)=\"deleteRows($event)\"\n (oEditRow)=\"editRow($event)\" [iData$]=\"tagsData\" [iShowSelect]=\"false\"></app-campaign-datatable>","import { Injectable } from '@angular/core';\nimport { ITag } from '../../core/models/tags.models';\nimport { HttpService } from '../../shared/http/base.http';\n\n@Injectable()\nexport class TagsApiService extends HttpService {\n getAllTags(savedSearchId: any) {\n const query = savedSearchId ? `?savedSearchId=${savedSearchId}` : '';\n return this.get<Array<ITag>>('/tags/getAllTags' + query)\n }\n getAssociatedTags(id: string, type: number) {\n return this.get<Array<ITag>>(`/tags/getAllAssociatedTags?id=${id}&type=${type}`)\n }\n saveAssociatedTags(data: Array<ITag>) {\n return this.post('/tags/saveAssociatedTags', data, { 'Content-Type': 'application/json; charset=utf-8' });\n }\n deleteAssociatedTag(id: string) {\n return this.delete(`/tags/deleteAssociatedTag/${id}`);\n }\n\n getTagDetails(id: any) {\n return this.get<ITag>('/tags/getTagDetails?id=' + id)\n }\n saveTag(data: ITag) {\n return this.post('/tags/saveTag', data, { 'Content-Type': 'application/json; charset=utf-8' });\n }\n\n deleteTag(ids: Array<string>) {\n return this.post('/tags/deleteTag', ids, { 'Content-Type': 'application/json; charset=utf-8' });\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { ReplaySubject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { PAGE_NAMES, ROLES, ROLES_TYPE } from '../../../core/helpers/constants';\nimport { UtilityService } from '../../../core/helpers/utility.service';\nimport { IPermission, IUser } from '../../../core/models/auth.models';\nimport { ITask } from '../../../core/models/tasks.models';\nimport { IColumn, LoadDataFromServer } from '../../../shared/components/datatable/datatable.model';\nimport { AppService } from '../../../store/app.service';\nimport { TasksApiService } from '../tasks.apiservice';\nimport { TasksService } from '../tasks.service';\nimport { FormBuilder, FormGroup } from '@angular/forms';\n\n@Component({\n selector: 'app-tasks-list',\n templateUrl: './tasks-list.component.html',\n styleUrls: ['./tasks-list.component.scss']\n})\n\nexport class TasksListComponent implements OnInit {\n doWhat: IPermission = {} as IPermission;\n activeUser: IUser = {} as IUser;\n ROLES = ROLES;\n showCompleted: boolean = false;\n showDashboard: boolean = true; // Add property to toggle between dashboard and datatable\n\n columns: Array<IColumn> = [];\n completedTasksColumns: Array<IColumn> = []\n private destroyed$: ReplaySubject<boolean> = new ReplaySubject(1);\n allTasksData: Array<ITask> = new Array<ITask>();\n todoTasksData: Array<ITask> = new Array<ITask>();\n completedTasksData: Array<ITask> = new Array<ITask>();\n public userRoles: Array<number> = [];\n showOnlyMyTasks: boolean = true;\n showTasksDue: string = 'All';\n dtForm: FormGroup;\n savedSearchId: any = null;\n private loadEvent!: LoadDataFromServer;\n dataTotalCount: number = 0;\n constructor(\n public uService: UtilityService,\n private appService: AppService,\n private tasksService: TasksService,\n private route: ActivatedRoute,\n private taskApiService: TasksApiService,\n private formBuilder: FormBuilder) {\n this.userRoles = [...this.uService.getUserRoles()];\n this.appService.getActiveUser$()\n .pipe(takeUntil(this.destroyed$))\n .subscribe(u => {\n this.activeUser = u;\n })\n\n this.columns.push({ title: 'Title', field: 'title', sortable: true, searchable: true } as IColumn);\n this.columns.push({ title: 'Client', field: 'clientName', sortable: true, searchable: true, anchorLink: true, anchorType: 'client', anchorParamsField: 'clientId' } as IColumn);\n this.columns.push({ title: 'Campaign', field: 'campaignName', sortable: true, searchable: true, anchorLink: true, anchorType: 'campaign', anchorParamsField: 'campaignId' } as IColumn);\n this.columns.push({ title: 'Due Date', field: 'dueDate', sortable: true, pipe: 'P_AppDateFormat', pipeArgs: ['MM/DD/YYYY'] } as IColumn);\n this.columns.push({ title: 'Assigned User', field: 'assignedUserName', sortable: true, searchable: true, visible: (this.userRoles.includes(ROLES.Admin.Code)) || this.activeUser.type === ROLES_TYPE.Internal } as IColumn);\n\n\n this.completedTasksColumns.push({ title: 'Title', field: 'title', sortable: true, searchable: true } as IColumn);\n this.completedTasksColumns.push({ title: 'Client', field: 'clientName', sortable: true, searchable: true, anchorLink: true, anchorType: 'client', anchorParamsField: 'clientId' } as IColumn);\n this.completedTasksColumns.push({ title: 'Campaign', field: 'campaignName', sortable: true, searchable: true, anchorLink: true, anchorType: 'campaign', anchorParamsField: 'campaignId' } as IColumn);\n this.completedTasksColumns.push({ title: 'Date Completed', field: 'completedOn', sortable: true, pipe: 'P_AppDateFormat', pipeArgs: ['YYYY/MM/DD', true] } as IColumn);\n this.completedTasksColumns.push({ title: 'Assigned User', field: 'assignedUserName', sortable: true, searchable: true, visible: this.userRoles.includes(ROLES.Admin.Code) || this.activeUser.type === ROLES_TYPE.Internal } as IColumn);\n\n this.dtForm = this.formBuilder.group({\n showTasksDue: [this.showTasksDue]\n });\n }\n\n ngOnInit(): void {\n this.appService.setPageTitle$('Tasks');\n this.savedSearchId = this.route.snapshot.queryParams['savedsearchid'];\n this.doWhat = this.appService.getUserRolesForPage(PAGE_NAMES.Tasks);\n this.appService.getAllTasks$()\n .pipe(takeUntil(this.destroyed$)\n )\n .subscribe((response: any) => {\n this.todoTasksData = response.data;\n this.dataTotalCount = response.totalCount;\n });\n\n this.appService.getForceLoadingTasks()\n .pipe(takeUntil(this.destroyed$)).subscribe((res: Boolean) => {\n if (res) {\n this.loadData();\n this.appService.setForceLoadingTasks(false);\n }\n })\n this.configureTasksService();\n }\n\n configureTasksService() {\n this.tasksService.onSave.pipe(takeUntil(this.destroyed$))\n .subscribe((v: any) => {\n if (v) {\n this.loadData();\n }\n });\n this.tasksService.onDelete.pipe(takeUntil(this.destroyed$))\n .subscribe((v: any) => {\n if (v) {\n this.loadData();\n }\n });\n this.tasksService.onMarkAsComplete.pipe(takeUntil(this.destroyed$))\n .subscribe((v: any) => {\n if (v) {\n this.loadData();\n }\n });\n }\n\n onLoadingData(event: LoadDataFromServer) {\n this.loadEvent = event;\n this.loadData();\n }\n\n editRow(evt: any) {\n evt.allTasksloadingParameters = this.getLoadingParameters(this.showCompleted);\n this.tasksService.openEditTaskModal(evt);\n }\n\n deleteRows(evt: any) {\n this.taskApiService.deleteTask(evt.id)\n .pipe(takeUntil(this.destroyed$))\n .subscribe((response: any) => {\n this.loadData();\n })\n }\n\n onCheckBoxChange(params: any) {\n this.taskApiService.markTask({ id: params.data.id, isCompleted: params.evt.currentTarget.checked })\n .pipe(takeUntil(this.destroyed$))\n .subscribe((response: any) => {\n this.loadData();\n })\n }\n\n onShowMyTasksChange() {\n this.loadData();\n }\n\n onDueDateFilterChange() {\n this.showTasksDue = this.dtForm.get('showTasksDue')?.value;\n this.loadData();\n }\n\n getLoadingParameters(showCompleted: boolean) {\n var yourDate = new Date();\n const offset = yourDate.getTimezoneOffset();\n yourDate = new Date(yourDate.getTime() - (offset*60*1000))\n let todayAtUserComputer = yourDate.toISOString().split('T')[0];\n return showCompleted ? {\n savedSearchId: this.savedSearchId,\n showOnlyMyTasks: this.showOnlyMyTasks,\n dueDate: this.showTasksDue,\n completion: 'Completed',\n todayAtUserComputer,\n ...this.loadEvent\n } : {\n savedSearchId: this.savedSearchId,\n showOnlyMyTasks: this.showOnlyMyTasks,\n dueDate: this.showTasksDue,\n completion: 'ToDo',\n todayAtUserComputer,\n ...this.loadEvent\n };\n }\n\n loadData() {\n this.appService.fetchAllTasks(this.getLoadingParameters(this.showCompleted));\n }\n\n showCompletedTasks() {\n this.showCompleted = !this.showCompleted;\n\n this.appService.fetchAllTasks(this.getLoadingParameters(this.showCompleted));\n }\n\n toggleTab(showCompleted: boolean) {\n this.showCompleted = showCompleted;\n this.loadData();\n }\n\n // Add method to toggle between dashboard and datatable\n toggleView() {\n this.showDashboard = !this.showDashboard;\n }\n}\n","<div fxLayout=\"row wrap\" fxLayoutAlign=\"space-between center\">\n <div fxLayout=\"row wrap\" fxLayoutAlign=\"start center\">\n <div class=\"polygon-tab\" [class.active]=\"!showCompleted\" (click)=\"toggleTab(false)\">\n <h2 style=\"margin-bottom: 0px !important;\">TO-DO</h2>\n </div>\n <div class=\"polygon-tab\" [class.active]=\"showCompleted\" (click)=\"toggleTab(true)\">\n <h2 style=\"margin-bottom: 0px !important;\">Completed</h2>\n </div>\n </div>\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\">\n <button *ngIf=\"!showCompleted\" type=\"button\" class=\"gray-button\" (click)=\"toggleView()\" style=\"margin-right: 16px;\">\n {{ showDashboard ? 'Show Table' : 'Show Dashboard' }}\n </button>\n <button *ngIf=\"showCompleted || !showDashboard\" type=\"button\" class=\"gray-button\">\n <label for=\"showMyTasksCheckbox\">\n <input type=\"checkbox\" id=\"showMyTasksCheckbox\" [(ngModel)]=\"showOnlyMyTasks\" (change)=\"onShowMyTasksChange()\" value=\"Show Only My Tasks\">\n Show Only My Tasks\n </label>\n </button>\n <div *ngIf=\"!showDashboard && !showCompleted\" fxLayout=\"row\" fxLayoutAlign=\"start center\">\n <label style=\"margin-bottom: 0px !important; padding-right: 8px; margin-left: 32px !important;\">\n Show Only Tasks With Due Date:\n </label>\n <form [formGroup]=\"dtForm\">\n <select formControlName=\"showTasksDue\" (change)=\"onDueDateFilterChange()\" style=\"border-radius: 4px;\">\n <option>All</option>\n <option>Overdue</option>\n <option>Today</option>\n <option>Upcoming</option>\n </select>\n </form>\n </div>\n </div>\n</div>\n<ng-container *ngIf=\"showDashboard && !showCompleted\">\n <app-tasks-dashboard></app-tasks-dashboard>\n</ng-container>\n<ng-container *ngIf=\"!showDashboard || showCompleted\">\n <app-tasks-datatable\n [iSortColumn]=\"'title'\"\n [iShowActions]=\"userRoles.includes(ROLES.Admin.Code)\"\n (oRowClick)=\"editRow($event)\"\n [iUserRoles]=\"userRoles\"\n (oCBClick)=\"onCheckBoxChange($event)\"\n [iHideHeaderActions]=\"true\"\n [iColumns]=\"(showCompleted) ? completedTasksColumns : columns\"\n (oDeleteRows)=\"deleteRows($event)\"\n (oEditRow)=\"editRow($event)\"\n [iData$]=\"todoTasksData\"\n [iIsServerLoading]=\"true\"\n [iTotalCount]=\"dataTotalCount\"\n (oLoadDataFromServer)=\"onLoadingData($event)\"\n [iShowRedStyling]=\"!showCompleted\">\n </app-tasks-datatable>\n</ng-container>\n\n\n","import { Injectable } from '@angular/core';\nimport { ITask } from '../../core/models/tasks.models';\nimport { HttpService } from '../../shared/http/base.http';\n\n@Injectable()\nexport class TasksApiService extends HttpService {\n\n getAllTasks(request: any) {\n return this.post<any>('/tasks/getAllTasks', request);\n }\n\n getTasksByClient(id: string) {\n return this.get<Array<ITask>>('/tasks/getTasksByClient?id=' + id)\n }\n\n getTasksByCampaign(id: string) {\n return this.get<Array<ITask>>('/tasks/getTasksByCampaign?id=' + id)\n }\n \n getTaskDetails(id: string) {\n return this.get<Array<ITask>>(`/tasks/getTaskDetails?id=${id}`)\n }\n\n saveTask(data: ITask) {\n return this.post('/tasks/saveTask', data, { 'Content-Type': 'application/json; charset=utf-8' });\n }\n\n deleteTask(id: string) {\n return this.delete(`/tasks/deleteTask/${id}`);\n }\n\n markTask(data: any) {\n return this.post('/tasks/markTask', data, { 'Content-Type': 'application/json; charset=utf-8' });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { NgbModal, NgbModalRef } from '@ng-bootstrap/ng-bootstrap';\nimport { BehaviorSubject } from 'rxjs';\nimport { IClient } from '../../core/models/clients.models';\nimport { ITask } from '../../core/models/tasks.models';\nimport { AddTaskModal } from '../../shared/modals/add-task/add-task.component';\nimport { AppService } from '../../store/app.service';\nimport { TasksApiService } from './tasks.apiservice';\n\n@Injectable()\nexport class TasksService {\n\n public activeClient: IClient = {} as IClient;\n public onSave: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n public onDelete: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n public onMarkAsComplete: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n public onReloadTaskData: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n\n constructor(\n private modalService: NgbModal,\n private appService: AppService,\n private taskApi: TasksApiService\n ) { }\n\n openEditTaskModal(evt: any, canEdit = true, canDelete = true): NgbModalRef {\n const dialogRef = this.modalService.open(AddTaskModal);\n dialogRef.componentInstance.iId = evt.id;\n dialogRef.componentInstance.iCanEdit = canEdit;\n dialogRef.componentInstance.iCanDelete = canDelete;\n dialogRef.componentInstance.iClientId = evt.clientId ? evt.clientId : null;\n dialogRef.componentInstance.iCampaignId = evt.campaignId ? evt.campaignId : null;\n const dialogSubmitSubscription = dialogRef.componentInstance.oSaveClicked.subscribe((r: ITask) => {\n this.taskApi.saveTask(r)\n .subscribe((response: any) => {\n dialogRef.dismiss();\n this.onSave.next(true);\n });\n dialogSubmitSubscription.unsubscribe();\n });\n const dialogDeleteSubscription = dialogRef.componentInstance.oDeleteClicked.subscribe((id: string) => {\n this.taskApi.deleteTask(id)\n .subscribe((response: any) => {\n dialogRef.dismiss();\n this.onDelete.next(true);\n })\n dialogDeleteSubscription.unsubscribe();\n });\n const dialogMarkSubscription = dialogRef.componentInstance.oMarkAsCompleteClicked.subscribe((r: any) => {\n this.taskApi.markTask(r)\n .subscribe((response: any) => {\n dialogRef.dismiss();\n this.onMarkAsComplete.next(true);\n })\n dialogMarkSubscription.unsubscribe();\n });\n return dialogRef; // Return the modal reference\n }\n\n ReloadTaskData(evt: any){\n this.onReloadTaskData.next(true);\n }\n}\n","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { debug } from 'console';\nimport { ReplaySubject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport Swal from 'sweetalert2';\nimport { PAGE_NAMES } from '../../../core/helpers/constants';\nimport { IPermission, IUser } from '../../../core/models/auth.models';\nimport { AppService } from '../../../store/app.service';\nimport { UsersApiService } from '../users.apiservice';\nimport { UsersService } from '../users.service';\n\n@Component({\n selector: 'app-users-main',\n templateUrl: './users-main.component.html',\n styleUrls: ['./users-main.component.scss'],\n})\nexport class UsersMainComponent implements OnInit, OnDestroy {\n @Input() usersData: Array<IUser> = []; // Add Input property for usersData\n doWhat: IPermission = {} as IPermission;\n columns = [\n { title: 'First Name', field: 'firstName', sortable: true, searchable: true },\n { title: 'Last Name', field: 'lastName', sortable: true, searchable: true },\n { title: 'Email', field: 'email', searchable: true },\n { title: 'Roles', field: 'code', pipe: 'P_RolesName_Filter', searchable: true },\n { title: 'Last Login', field: 'lastLoginDate', sortable: true, searchable: true, pipe: 'P_AppDateFormat', pipeArgs: ['MM/DD/YYYY HH:mm'] },\n ];\n private destroyed$: ReplaySubject<boolean> = new ReplaySubject(1);\n activeUser: IUser = {} as IUser;\n savedSearchId: any;\n\n constructor(\n private userApiService: UsersApiService,\n private route: ActivatedRoute,\n private appService: AppService,\n private userService: UsersService,\n ) {\n this.savedSearchId = null;\n }\n\n ngOnInit(): void {\n\n this.appService.setPageTitle$('Users');\n this.doWhat = this.appService.getUserRolesForPage(PAGE_NAMES.Users);\n // console.log(this.doWhat);\n this.appService.getActiveUser$()\n .pipe(takeUntil(this.destroyed$)\n )\n .subscribe((response: IUser) => {\n this.activeUser = response;\n // console.log(this.activeUser);\n if (this.activeUser.roles[0].code == 4) {\n this.doWhat.canDelete = false;\n }\n });\n if (this.usersData.length === 0) { // Fetch users data only if not provided by parent\n this.appService.getAllUsers$()\n .pipe(takeUntil(this.destroyed$))\n .subscribe((response: Array<IUser>) => {\n this.usersData = [...response];\n\n // console.log([...response]);\n });\n this.savedSearchId = this.route.snapshot.queryParams['savedsearchid'];\n this.appService.fetchAllUsers(this.savedSearchId);\n }\n }\n\n editRow(evt: any) {\n this.userService.openEditUserModal(evt)\n }\n deleteRows(evt: any) {\n this.userApiService.deleteUser(evt)\n .pipe(takeUntil(this.destroyed$))\n .subscribe((response: any) => {\n this.appService.fetchAllUsers(this.savedSearchId);\n })\n\n }\n archiveRows(evt: any) {\n this.userApiService.archiveUser(evt)\n .pipe(takeUntil(this.destroyed$))\n .subscribe((response: any) => {\n this.appService.fetchAllUsers(this.savedSearchId);\n })\n\n }\n unarchiveRows(evt: any) {\n this.userApiService.unarchiveUser(evt)\n .pipe(takeUntil(this.destroyed$))\n .subscribe((response: any) => {\n this.appService.fetchAllUsers(this.savedSearchId);\n })\n\n }\n onClientRowClick(evt: any) {\n if(evt.canBeEdit == null || evt.canBeEdit){\n this.userService.openEditUserModal(evt);\n }\n }\n\n ngOnDestroy(): void {\n this.destroyed$.next(true);\n this.destroyed$.complete();\n }\n}\n","<app-campaign-datatable [iCanRead]=\"doWhat.canRead\" [iCanWrite]=\"doWhat.canWrite\" [iCanDelete]=\"doWhat.canDelete\" [iColumns]=\"columns\" [iShowExport]='false' [iSortColumn]=\"'lastName,firstName'\"\n (oRowClick)=\"onClientRowClick($event)\" [iActiveUserId]=\"activeUser?.id\" (oDeleteRows)=\"deleteRows($event)\" (oEditRow)=\"editRow($event)\" (oArchiveRows)=\"archiveRows($event)\" (oUnArchiveRows)=\"unarchiveRows($event)\"\n [iData$]=\"usersData\"></app-campaign-datatable>","import { Injectable } from '@angular/core';\nimport { IUser } from '../../core/models/auth.models';\nimport { IClient } from '../../core/models/clients.models';\nimport { HttpService } from '../../shared/http/base.http';\n@Injectable()\nexport class UsersApiService extends HttpService {\n getAllUsers(savedSearchId: any) {\n const query = savedSearchId ? `?savedSearchId=${savedSearchId}` : '';\n return this.get<Array<IUser>>('/users/getAllUsers' + query);\n }\n getUserDetails(id: any) {\n return this.get<IUser>('/users/getUserDetails?id=' + id)\n }\n saveUser(data: IUser) {\n return this.post('/users/saveUser', data, { 'Content-Type': 'application/json; charset=utf-8' });\n }\n deleteUser(data: Array<string>) {\n return this.post('/users/deleteUser', data, { 'Content-Type': 'application/json; charset=utf-8' });\n }\n archiveUser(data: Array<string>) {\n return this.post('/users/archiveUser', data, { 'Content-Type': 'application/json; charset=utf-8' });\n }\n unarchiveUser(data: Array<string>) {\n return this.post('/users/unarchiveUser', data, { 'Content-Type': 'application/json; charset=utf-8' });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\nimport Swal from 'sweetalert2';\nimport { IUser } from '../../core/models/auth.models';\nimport { IClient } from '../../core/models/clients.models';\nimport { AddClientModal } from '../../shared/modals/add-client/add-client.component';\nimport { AddUserModal } from '../../shared/modals/add-user/add-user.component';\nimport { AppService } from '../../store/app.service';\nimport { UsersApiService } from './users.apiservice';\n\n@Injectable()\nexport class UsersService {\n\n constructor(\n private modalService: NgbModal,\n private appService: AppService,\n private userService: UsersApiService,\n ) {\n\n }\n\n openEditUserModal(evt: any) {\n const dialogRef = this.modalService.open(AddUserModal, { size: 'lg' });\n // if (evt.id === -1) {\n // var d = this.appService.getActiveRoute$().value.url.split('/');\n // evt.id = d[d.length - 1]\n // }\n dialogRef.componentInstance.iId = evt.id;\n const dialogSubmitSubscription = dialogRef.componentInstance.oSaveClicked.subscribe((r: IUser) => {\n\n this.userService.saveUser(r)\n .subscribe((response: any) => {\n dialogRef.dismiss();\n this.appService.fetchAllUsers(null);\n })\n dialogSubmitSubscription.unsubscribe();\n })\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { IRole, IRoleCreation, IUser } from '../../core/models/auth.models';\nimport { ICampaign, ICampaignCheck, INotes } from '../../core/models/campaigns.model';\nimport { IClient } from '../../core/models/clients.models';\nimport { ICompany, ISalesRep, ISubscription } from '../../core/models/datafeed.models';\nimport { HttpService } from '../../shared/http/base.http';\n@Injectable()\nexport class DataFeedService extends HttpService {\n\n getRoleRestrictions() {\n return this.get<Array<IRoleCreation>>('/datafeed/getRoleRestrictions');\n }\n getAllCompanies() {\n return this.get<Array<ICompany>>('/datafeed/getAllCompanies');\n }\n getAllClients() {\n return this.get<Array<IClient>>('/datafeed/getAllClients');\n }\n getAllProducts() {\n return this.get<Array<IClient>>('/datafeed/getAllProducts');\n }\n getAllSubscriptions() {\n return this.get<Array<ISubscription>>('/datafeed/getAllSubscriptions');\n }\n getAllEmployees(clientId: string) {\n return this.get<Array<IUser>>(`/datafeed/getAllEmployees?cId=${clientId}`);\n }\n getAllClientCampaigns(ids: any) {\n return this.post('/datafeed/getAllClientCampaigns', ids, { 'Content-Type': 'application/json; charset=utf-8' });\n }\n getClientsFeedByIds(ids: any) {\n return this.post('/datafeed/getClientsFeedByIds', ids, { 'Content-Type': 'application/json; charset=utf-8' });\n }\n getAllTaskAssignees() {\n return this.get<Array<IUser>>('/datafeed/getAllTaskAssignees');\n }\n\n getAllNotesAssignees() {\n return this.get<Array<IUser>>('/datafeed/getAllNotesAssignees');\n }\n\n getNotes(id: string, type: number) {\n return this.get<Array<INotes>>(`/datafeed/getNotes?id=${id}&type=${type}`)\n }\n saveNote(data: INotes) {\n return this.post('/datafeed/saveNote', data, { 'Content-Type': 'application/json; charset=utf-8' });\n }\n saveCampaignCheck(data: ICampaignCheck) {\n return this.post('/datafeed/saveCampaignCheck', data, { 'Content-Type': 'application/json; charset=utf-8' });\n }\n deleteNote(id: string) {\n return this.delete(`/datafeed/deleteNote/${id}`);\n }\n getNoteFileUrl(id: any, filename: any) {\n return this.get(`/datafeed/getNoteFileUrl?id=${id}&filename=${filename}`);\n }\n\n\n getAllRoles() {\n return this.get<Array<IRole>>('/datafeed/getAllRoles');\n }\n getAllUsersWithRole(code: number) {\n return this.get<Array<IRole>>(`/datafeed/getAllUsersWithRole?code=${code}`);\n }\n getUserContactInfo(id: string) {\n return this.get<any>(`/datafeed/getUserContactInfo?id=${id}`)\n }\n\n getAllProductFamilies() {\n return this.get<any>(`/datafeed/getAllProductFamilies`)\n }\n getPaymentMethodsByUserId() {\n return this.get<any>(`/datafeed/getPaymentMethodsByUserId`)\n }\n getPaymentMethodsByClientId(id: string) {\n return this.get<any>(`/datafeed/getPaymentMethodsByClientId?id=${id}`)\n }\n getCompanyData(companyId: string) {\n return this.get<any>(`/datafeed/GetCompany/${companyId}`);\n }\n\n getAssociatedCompanies() {\n return this.get<any>(`/datafeed/getAssociatedCompanies`);\n }\n\n getCompanyAssociatedCampaigns(companyId: string) {\n return this.get<any>(`/datafeed/getCompanyAssociatedCampaigns/${companyId}`);\n }\n}\n","import { Component, Input, OnInit, SimpleChanges } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\nimport { ReplaySubject } from 'rxjs';\nimport { filter, takeUntil, map } from 'rxjs/operators';\nimport Swal from 'sweetalert2';\nimport { NOTES_TYPE } from '../../../core/helpers/constants';\nimport { INotes } from '../../../core/models/campaigns.model';\nimport { DataFeedService } from '../../api/datafeed.service';\nimport { AddNoteModal } from '../../modals/add-note/add-note.component';\nimport { AppService } from '../../../store/app.service';\nimport { CampaignsApiService } from '../../../pages/campaigns/campaigns.apiservice';\n@Component({\n selector: 'app-404',\n templateUrl: './404.component.html',\n styleUrls: ['./404.component.scss']\n})\nexport class PageNotFoundComponent {\n constructor() {\n }\n}\n","<section class=\"container\">\n <span>404</span>\n <span style=\"font-size: 20px;\">The page you are looking for doesn't exist!</span>\n</section>\n","import { Directive, EventEmitter, Input, Output } from '@angular/core';\nimport { Table } from '../datatable/datatable.model';\n\nexport type SortColumn = keyof Table | '';\nexport type SortDirection = 'asc' | 'desc' | '';\nconst rotate: { [key: string]: SortDirection } = { 'asc': 'desc', 'desc': 'asc', '': 'asc' };\n\nexport interface SortEvent {\n column: SortColumn;\n direction: SortDirection;\n}\n\n@Directive({\n // tslint:disable-next-line: directive-selector\n selector: '[dtSortable]',\n // tslint:disable-next-line: no-host-metadata-property\n host: {\n '[class.asc]': 'direction === \"asc\"',\n '[class.desc]': 'direction === \"desc\"',\n '(click)': 'rotate()'\n }\n})\n\nexport class campaignDataTableSortableDirective {\n\n constructor() { }\n\n @Input() sortable: SortColumn = '';\n @Input() direction: SortDirection = '';\n @Output() sort = new EventEmitter<SortEvent>();\n\n rotate() {\n this.direction = rotate[this.direction];\n this.sort.emit({ column: this.sortable, direction: this.direction });\n }\n}\n","import { Component, OnInit, Input, Output, EventEmitter, ViewChildren, QueryList, OnDestroy } from '@angular/core';\nimport { DecimalPipe } from '@angular/common';\nimport { FormBuilder, FormGroup } from '@angular/forms';\nimport * as _ from 'underscore'\nimport Swal from 'sweetalert2';\nimport { campaignDataTableSortableDirective, SortEvent } from './campaign-datatable-sortable.directive';\nimport { P_CampaignStageTitle, P_RolesName_Filter, CleanupCampaignPipe } from '../../shared.pipe';\nimport { ReplaySubject } from 'rxjs';\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\nimport { AppService } from '../../../store/app.service';\nimport { ExportToCsv } from 'export-to-csv';\nimport * as lodash from 'lodash'\nimport { PAGE_NAMES, ROLES } from '../../../core/helpers/constants';\nimport { LoadDataFromServer, sortDirection } from '../datatable/datatable.model';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { UsersService } from '../../../pages/users/users.service';\n\n@Component({\n selector: 'app-campaign-datatable',\n templateUrl: './campaign-datatable.component.html',\n styleUrls: ['./campaign-datatable.component.scss'],\n providers: [DecimalPipe, P_CampaignStageTitle, P_RolesName_Filter, CleanupCampaignPipe]\n})\n\n/**\n * Datatable Component\n */\n\nexport class CampaignDatatableComponent implements OnInit, OnDestroy {\n\n private destroyed$: ReplaySubject<boolean> = new ReplaySubject(1);\n PAGE_NAMES = PAGE_NAMES;\n @ViewChildren(campaignDataTableSortableDirective)\n headers!: QueryList<campaignDataTableSortableDirective>;\n\n dtForm: FormGroup;\n collectionSize: number = 0;\n\n activePage = '';\n //activeUser = {} as IUser;\n @Input() isAdmin: boolean = false;\n @Input() iCanRead: boolean = false;\n @Input() iCanWrite: boolean = false;\n @Input() iCanDelete: boolean = false;\n @Input() iCanCreate: boolean = false;\n @Input() iShowDropdownAdd: boolean = true;\n pageNumber = 1;\n @Input() iActiveUserId: string | undefined = '';\n\n @Input() iHideHeaderActions: boolean = false;\n @Input() iShowExport: boolean = true;\n @Input() iShowHeader: boolean = true;\n @Input() iShowSelect: boolean = true;\n @Input() iShowMerge: boolean = false;\n @Input() iShowExternalAction: boolean = false;\n @Input() iShowDropDownDelete: boolean = true;\n\n @Input() iShowActions: boolean = true;\n @Input() iShowViewAction: boolean = false;\n @Input() iShowEditAction: boolean = true;\n @Input() iShowDeleteAction: boolean = true;\n @Input() iShowDeleteActionFn?: Function = undefined;\n @Input() iShowSendEmail: boolean = false;\n @Input() iShowMakeCopyAction: boolean = false;\n @Input() iShowDateRange: boolean = false;\n\n @Input() iShowSearch: boolean = true;\n @Input() iPageSize = 50;\n\n @Input() iUserRoles: Array<number> = [];\n @Input() iSortDirection = 'asc';\n @Input() iSortColumn = 'name';\n @Input() iSortColumnProps = {} as any;\n @Input() iIsServerLoading = false;\n @Input() iIsCustomDataExport = false;\n @Input() iIsExportFilter = false;\n @Input() iDateField = '';\n \n @Input() iColumns: Array<any> = [];\n @Input() set iData$(data: Array<any>) {\n this.rawData = data || [];\n this.prepareData();\n }\n @Input() set iTotalCount(totalCount: number) {\n this.totalCount = totalCount;\n this.prepareData();\n }\n @Input() iRowLinkHandler?: Function = undefined;\n\n @Input() iShowCustomAction?: Function = undefined;\n @Input() iCustomActionLabel: string = '';\n @Input() iCustomActionHandler?: Function = undefined;\n\n\n\n @Output() oEditRow = new EventEmitter<any>();\n @Output() oViewRow = new EventEmitter<any>();\n @Output() oShowExternal = new EventEmitter<any>();\n @Output() oAddNew = new EventEmitter<any>();\n @Output() oDeleteRows = new EventEmitter<any>();\n @Output() oArchiveRows = new EventEmitter<any>();\n @Output() oUnArchiveRows = new EventEmitter<any>();\n @Output() oRowClick = new EventEmitter<any>();\n @Output() oCBClick = new EventEmitter<any>();\n @Output() oMergeRecords = new EventEmitter<any>();\n @Output() oLoadDataFromServer = new EventEmitter<any>();\n @Output() oSendEmail = new EventEmitter<any>();\n @Output() oOnCopyClicked = new EventEmitter<any>();\n @Output() oCustomDataExport = new EventEmitter<any>();\n \n rawData: Array<any> = new Array<any>();\n viewData: Array<any> = new Array<any>();\n totalCount: number = 0;\n constructor(\n private formBuilder: FormBuilder,\n private appService: AppService,\n private sanitizer: DomSanitizer,\n private uService: UsersService,\n private cleanupCampaignPipe: CleanupCampaignPipe,\n ) {\n\n this.dtForm = this.formBuilder.group({\n pageSize: this.iPageSize,\n activePage: this.pageNumber,\n searchQuery: '',\n startDate: [null],\n endDate: [null],\n });\n\n this.dtForm.get(\"searchQuery\")\n ?.valueChanges\n .pipe(\n debounceTime(400),\n distinctUntilChanged()\n )\n .subscribe(text => {\n if (!this.iIsServerLoading) {\n this.prepareData();\n }\n });\n\n this.dtForm.get(\"startDate\")\n ?.valueChanges\n .pipe(\n debounceTime(400),\n distinctUntilChanged()\n )\n .subscribe(text => {\n if (!this.iIsServerLoading) {\n this.prepareData();\n }\n else{\n this.loadData();\n }\n });\n\n this.dtForm.get(\"endDate\")\n ?.valueChanges\n .pipe(\n debounceTime(400),\n distinctUntilChanged()\n )\n .subscribe(text => {\n if(this.f?.endDate?.value){\n this.f?.endDate?.value.setDate(this.f?.endDate?.value.getDate() + 1);\n }\n if (!this.iIsServerLoading) {\n this.prepareData();\n }\n else{\n this.loadData();\n }\n });\n\n this.appService.getActivePage$().subscribe(p => {\n this.activePage = p;\n });\n }\n\n clearDates(){\n this.dtForm.get(\"startDate\")?.setValue(null);\n this.dtForm.get(\"endDate\")?.setValue(null);\n }\n\n get f() { return this.dtForm.controls; }\n ngOnInit(): void {\n this.loadData();\n }\n\n onPageSizeChange(evt: any) {\n this.loadData();\n this.prepareData();\n }\n\n onPageChange(pageNumber: number) {\n this.pageNumber = pageNumber;\n this.loadData();\n this.prepareData();\n }\n\n /**\n * Creates an array of data to CSV. It will automatically generate a title row based on object keys.\n *\n * @param rows array of data to be converted to CSV.\n * @param fileName filename to save as.\n * @param columns array of object properties to convert to CSV. If skipped, then all object properties will be used for CSV.\n **/\n exportToCsv() {\n if (this.iIsCustomDataExport === true) {\n if(this.iIsExportFilter == false){\n this.oCustomDataExport.emit();\n }\n else{\n const event: LoadDataFromServer = {\n pageSize: this.f.pageSize.value,\n pageNumber: this.pageNumber,\n sortColumn: this.iSortColumn,\n sortDirection: this.iSortDirection === 'asc' ? sortDirection.asc : sortDirection.desc,\n search: this.f?.searchQuery?.value,\n startDate: this.f?.startDate?.value,\n endDate: this.f?.endDate?.value\n }\n this.oCustomDataExport.emit(event);\n }\n return;\n }\n let title = this.appService.getPageTitle$().getValue();\n\n var filtered: Array<any> = [];\n if (this.checkedItemsCount >= 1) {\n /* select checked data */\n for (var i = 0; i < this.viewData.length; i++) {\n if (this.viewData[i].isSelected)\n filtered.push(this.viewData[i]);\n }\n /* end select checked data */\n }\n else {\n /* filter data */\n var query = this.f?.searchQuery?.value;\n if (query != null) {\n if (query === '') {\n filtered = this.rawData\n }\n else {\n filtered = this.search(query, null, null);\n }\n }\n /* end filter data */\n }\n\n /* prepare data, remove null amd undefined values */\n var exportData: Array<any> = [];\n filtered\n .forEach((row: any) => {\n let obj: any = {};\n this.iColumns\n .forEach((col: any) => {\n let value = this.extractFieldValue(row, col.field, col.pipe);\n if (value && value !== null && value !== undefined) {\n obj[col.title] = value;\n }\n else {\n obj[col.title] = '';\n }\n });\n exportData.push(obj);\n });\n /* end prepare data, remove null amd undefined values */\n\n /* export prepared data to csv */\n const options = {\n filename: title,\n fieldSeparator: ',',\n quoteStrings: '\"',\n decimalSeparator: '.',\n showLabels: true,\n showTitle: false,\n title: title,\n useTextFile: false,\n useBom: true,\n useKeysAsHeaders: true,\n };\n const csvExporter = new ExportToCsv(options);\n\n csvExporter.generateCsv(exportData);\n /* end export prepared data to csv */\n }\n\n filterData(array: Array<any>) {\n var query = this.f?.searchQuery?.value;\n var fromDate = this.f?.startDate?.value;\n var toDate = this.f?.endDate?.value;\n var dataset = array;\n if ((query != null && query !== '') || fromDate != null || toDate !=null) {\n dataset = this.search(query, fromDate, toDate);\n }\n else {\n dataset = this.rawData\n }\n return dataset;\n }\n\n paginate(array: Array<any>, pageSize: number, pageNumber: number) {\n return array.slice((pageNumber - 1) * pageSize, pageNumber * pageSize);\n }\n\n onCbHeadChange(evt: any) {\n for (var i = 0; i < this.viewData.length; i++) {\n this.viewData[i].isSelected = evt.target.checked;\n }\n }\n\n editRow(evt: any) {\n this.oEditRow.emit(evt);\n }\n\n onSendEmail(evt: any) {\n this.oSendEmail.emit(evt);\n }\n\n viewRow(evt: any) {\n this.oViewRow.emit(evt);\n }\n\n showExternal(evt: any) {\n this.oShowExternal.emit(evt);\n }\n\n addNew() {\n this.oAddNew.emit();\n }\n\n onUserClick(action: any) {\n this.uService.openEditUserModal({ id: action === 'add' ? null : -1 });\n }\n\n get checkedItemsCount() { return this.getCheckedItemsIds().length; }\n mergeRecords() {\n const itemsIds = this.getCheckedItemsIds();\n\n if (itemsIds.length <= 1)\n return\n\n this.oMergeRecords.emit(itemsIds);\n\n // Swal.fire({\n // title: 'Are you sure you want to merge these records?',\n // text: \"You won't be able to revert this!\",\n // icon: 'warning',\n // showCancelButton: true,\n // confirmButtonColor: '#3085d6',\n // cancelButtonColor: '#d33',\n // confirmButtonText: 'Yes, merge them!'\n // }).then((result) => {\n // if (result.isConfirmed) {\n // this.oMergeRecords.emit(itemsIds);\n // }\n // });\n }\n\n deleteRows() {\n const itemsIds = this.getCheckedItemsIds();\n if (itemsIds.length === 0)\n return\n\n Swal.fire({\n title: 'Are you sure?',\n text: \"You won't be able to revert this!\",\n icon: 'warning',\n showCancelButton: true,\n confirmButtonColor: '#3085d6',\n cancelButtonColor: '#d33',\n confirmButtonText: 'Yes, delete it!'\n }).then((result) => {\n if (result.isConfirmed) {\n this.oDeleteRows.emit(itemsIds);\n }\n })\n }\n onDeleteRow(evt: any, data: any) {\n Swal.fire({\n title: 'Are you sure?',\n text: \"You won't be able to revert this!\",\n icon: 'warning',\n showCancelButton: true,\n confirmButtonColor: '#3085d6',\n cancelButtonColor: '#d33',\n confirmButtonText: 'Yes, delete it!'\n }).then((result) => {\n if (result.isConfirmed) {\n this.oDeleteRows.emit([data.id]);\n evt.stopPropagation();\n }\n })\n\n }\n\n onArchiveRow(evt: any, data: any){\n Swal.fire({\n title: 'Are you sure?',\n text: \"User will be Archived and not able to use the system!\",\n icon: 'warning',\n showCancelButton: true,\n confirmButtonColor: '#3085d6',\n cancelButtonColor: '#d33',\n confirmButtonText: 'Yes, archive it!'\n }).then((result) => {\n if (result.isConfirmed) {\n this.oArchiveRows.emit([data.id]);\n evt.stopPropagation();\n }\n })\n }\n\n onUnArchiveRow(evt: any, data: any){\n Swal.fire({\n title: 'Are you sure?',\n text: \"User will be UnArchived and able to use the system again!\",\n icon: 'warning',\n showCancelButton: true,\n confirmButtonColor: '#3085d6',\n cancelButtonColor: '#d33',\n confirmButtonText: 'Yes, unarchive it!'\n }).then((result) => {\n if (result.isConfirmed) {\n this.oUnArchiveRows.emit([data.id]);\n evt.stopPropagation();\n }\n })\n }\n\n getCheckedItemsIds() {\n const checkedList = new Array<string>();\n for (var i = 0; i < this.viewData.length; i++) {\n if (this.viewData[i].isSelected)\n checkedList.push(this.viewData[i].id);\n }\n return checkedList;\n }\n\n onSort({ column, direction }: SortEvent, colProps: any) {\n // resetting other headers\n this.headers.forEach(header => {\n if (header.sortable !== column) {\n header.direction = '';\n }\n });\n this.iSortColumn = column;\n this.iSortColumnProps = colProps;\n this.iSortDirection = direction;\n this.loadData();\n this.prepareData();\n }\n\n loadData() {\n if (this.iIsServerLoading) {\n const event: LoadDataFromServer = {\n pageSize: this.f.pageSize.value,\n pageNumber: this.pageNumber,\n sortColumn: this.iSortColumn,\n sortDirection: this.iSortDirection === 'asc' ? sortDirection.asc : sortDirection.desc,\n search: this.f?.searchQuery?.value,\n startDate: this.f?.startDate?.value,\n endDate: this.f?.endDate?.value\n }\n this.oLoadDataFromServer.emit(event);\n }\n }\n\n prepareData() {\n if (this.iIsServerLoading) {\n this.viewData = this.rawData;\n this.collectionSize = this.totalCount;\n } else {\n let viewData = this.rawData || [];\n viewData = this.filterData(viewData);\n viewData = [...this.sort(viewData)];\n this.collectionSize = viewData.length;\n viewData = [...this.paginate(viewData, this.f.pageSize.value, this.pageNumber)];\n this.viewData = viewData;\n }\n }\n\n sort(tables: any[]): any[] {\n if (!tables || tables.length === 0) return tables;\n const sortColumns = this.iSortColumn ? this.iSortColumn.split(',') : [];\n const direction = this.iSortDirection;\n if (direction === '' || sortColumns.length === 0) return tables;\n const pipes: any[] = [];\n const pipeArgs: any[] = [];\n for (let index = 0; index < sortColumns.length; index++) {\n const sortColumn = sortColumns[index];\n const column = this.getColumnByField(sortColumn);\n if (column === undefined) {\n return tables;\n }\n if (column.pipe !== undefined) {\n const pipe = this.appService?.getPipeByName(column.pipe);\n pipes.push(pipe);\n pipeArgs.push(column.pipeArgs);\n } else {\n pipes.push(null);\n pipeArgs.push(null);\n }\n }\n return [...tables].sort((a, b) => {\n let valueA: string[] = [];\n let valueB: any[] = [];\n for (var i = 0; i < sortColumns.length; i++) {\n if (pipes[i] !== null) {\n valueA.push(pipes[i].transform(a[sortColumns[i]], ...pipeArgs[i]));\n valueB.push(pipes[i].transform(b[sortColumns[i]], ...pipeArgs[i]));\n } else {\n valueA.push(a[sortColumns[i]]);\n valueB.push(b[sortColumns[i]]);\n }\n }\n const res = this.compare(valueA, valueB);\n return direction === 'asc' ? res : -res;\n });\n }\n\n compare = (a: any[], b: any[]) => {\n if (a.length !== b.length) return 0;\n for (var i = 0; i < a.length; i++) {\n let valueA = a[i];\n let valueB = b[i];\n if (this.isString(valueA)) valueA = valueA.toLowerCase();\n if (this.isString(valueB)) valueB = valueB.toLowerCase();\n if (valueA !== valueB) {\n return valueA < valueB ? -1 : valueA > valueB ? 1 : 0;\n }\n }\n return 0;\n }\n\n\n\n search(query: string, fromDate: any, toDate: any) { \n let r = new Array<any>();\n for (var ele of this.rawData) {\n for (let col of this.iColumns.filter(x => (x.searchable && x.searchable === true))) {\n let value = ele[col.field];\n\n if (value == null || value == undefined)\n continue;\n\n if (col.pipe !== undefined) {\n let pipe = this.appService?.getPipeByName(col.pipe);\n value = pipe?.transform(ele[col.field], col.pipeArgs);\n\n if (value == null || value == undefined)\n continue;\n }\n\n if (col.field === 'campaignName') {\n value = this.cleanupCampaignPipe.transform(value);\n }\n\n if (value.toString().toLowerCase().indexOf(query.toLowerCase()) > -1) {\n if(fromDate != null || toDate != null){\n var fdate;\n if(typeof new Date(value).getMonth === 'function'){\n fdate = new Date(value);\n }\n else{\n const [month, day, year] = ele[this.iDateField].split('/');\n fdate = new Date(+year, +month - 1, +day);\n }\n \n if(fromDate != null && toDate != null){\n if(fdate >= fromDate && fdate <= toDate){\n r.push(ele);\n break;\n }\n }\n else if(fromDate != null){\n if(fdate >= fromDate){\n r.push(ele);\n break;\n }\n }\n else{\n if(fdate <= toDate){\n r.push(ele);\n break;\n }\n }\n }\n else{\n r.push(ele);\n break;\n }\n }\n }\n }\n return r;\n }\n\n extractFieldValue(row: any, colName: string, pipe: string, pipeArgs: any[] = []) {\n let value = lodash.get(row, colName);\n if (pipe) {\n if (pipe === 'cleanupCampaign') {\n value = this.cleanupCampaignPipe.transform(value);\n } else {\n let p = this.appService?.getPipeByName(pipe);\n value = p?.transform(value, ...pipeArgs);\n }\n }\n return value;\n }\n\n getAnchorLink(type: string, param: any) {\n switch (type) {\n case 'client':\n return '/pages/client-details/' + param;\n case 'campaign':\n return '/pages/campaign-details/' + param;\n case 'subscription':\n return '/pages/subscriptions/' + param;\n case 'order':\n return '/pages/orders/details/' + param;\n default:\n return '';\n\n }\n }\n\n onCbChange(evt: any, data: any) {\n this.oCBClick.emit({ evt, data })\n }\n ngOnDestroy(): void {\n this.destroyed$.next(true);\n this.destroyed$.complete();\n }\n\n doServerSearch(event: any) {\n event.stopPropagation();\n event.preventDefault();\n if (!this.iIsServerLoading) return;\n this.loadData();\n }\n\n SafeHtml(str: string) {\n return this.sanitizer.bypassSecurityTrustHtml(str);\n }\n SafeUrl(str: string) {\n return this.sanitizer.bypassSecurityTrustUrl('data:image/png;base64,' + str);\n }\n\n showCustomAction(row: any) {\n if (this.iShowCustomAction === undefined) return false;\n return this.iShowCustomAction.call(null, row);\n }\n\n showDeleteAction(row: any) {\n if (this.iShowDeleteActionFn === undefined) return true;\n return this.iShowDeleteActionFn.call(null, row);\n }\n\n executeCustomAction(row: any) {\n if (this.iCustomActionHandler === undefined) return;\n this.iCustomActionHandler.call(null, row);\n }\n\n getColumnByField(fieldName: string) {\n return this.iColumns.find(x => x.field === fieldName);\n }\n\n getRowLink(row: any) {\n if (this.iRowLinkHandler === undefined) return { routerLink: null, queryParams: null };\n const link = this.iRowLinkHandler.call(null, row);\n const linkParts = link.split('?');\n const linkObject: any = { routerLink: linkParts[0], queryParams: {} }\n if (linkParts.length > 1) {\n const queryParams = linkParts[1].split('&');\n for (var i = 0; i < queryParams.length; i++) {\n linkObject.queryParams[queryParams[i].split('=')[0]] = queryParams[i].split('=')[1];\n }\n }\n return linkObject;\n }\n\n isString = (x: any) => Object.prototype.toString.call(x) === \"[object String]\";\n}","<div class=\"row\">\n <div class=\"col-12\">\n <div class=\"card card-custom\">\n <form [formGroup]=\"dtForm\" *ngIf=\"iShowHeader\">\n <div class=\"card-header\">\n <div class=\"d-flex flex-md-row flex-lg-row flex-sm-row justify-content-between align-items-center\">\n <div class=\"d-flex flex-row align-items-center\">\n <div *ngIf=\"iShowSearch\" id=\"tickets-table_filter\" class=\"dataTables_filter text-md-end\">\n <div *ngIf=\"iShowSearch\" class=\"search-container\">\n <i-feather name=\"search\"></i-feather>\n <input id=\"txtSearchQuery\" type=\"text\" formControlName=\"searchQuery\" placeholder=\"Search\" class=\"form-control form-control-sm ms-2\"\n aria-controls=\"tickets-table\" (keydown.enter)=\"doServerSearch($event)\">\n </div>\n <div class=\"d-inline-block hide-from-980\">\n <button *ngIf=\"(iShowActions && !iHideHeaderActions) && (isAdmin || iShowExport) && (activePage !== PAGE_NAMES.Users)\" type=\"button\" class=\"blue-button\"\n (click)=\"exportToCsv()\">EXPORT</button>\n </div>\n </div>\n <div *ngIf=\"(isAdmin || iCanDelete || iShowMerge || iCanCreate) && (activePage !== PAGE_NAMES.Products) && (activePage !== PAGE_NAMES.Coupons) && (activePage !== PAGE_NAMES.Tags) && (activePage !== PAGE_NAMES.MyAccount) && (activePage !== PAGE_NAMES.Reports) && (activePage !== PAGE_NAMES.Searches) && (activePage !== PAGE_NAMES.ProspectsDetails) && (activePage !== PAGE_NAMES.ClientDetails)\" ngbDropdown class=\"hide-from-980\">\n <button id=\"dropdownBasic1\" class=\"blue-button\"\n ngbDropdownToggle>ACTIONS</button>\n <div ngbDropdownMenu aria-labelledby=\"dropdownBasic1\">\n <button *ngIf=\"(activePage == PAGE_NAMES.Users) && (isAdmin || iCanCreate) && iShowDropdownAdd\" (click)=\"onUserClick('add')\"\n ngbDropdownItem>\n ADD NEW\n </button>\n <button *ngIf=\"(isAdmin || iCanDelete) && iShowDropDownDelete\" (click)=\"deleteRows()\" ngbDropdownItem>\n DELETE\n </button>\n <button *ngIf=\"iShowMerge && checkedItemsCount >= 2\" type=\"button\" ngbDropdownItem (click)=\"mergeRecords()\" title=\"Please select two or more records to merge!\">\n MERGE\n </button>\n </div>\n </div>\n </div>\n <div *ngIf=\"iShowDateRange\" class=\"date-range-container\">\n <label class=\"d-inline-flex align-items-center\">From: </label>\n <input id=\"dtStartDate\"\n mwlFlatpickr [altInputClass]=\"'datetime'\" [altInput]=\"true\"\n [convertModelValue]=\"true\" formControlName=\"startDate\" class=\"form-control\" />\n <label class=\"d-inline-flex align-items-center\">To: </label>\n <input id=\"dtEndDate\"\n mwlFlatpickr [altInputClass]=\"'datetime'\" [altInput]=\"true\"\n [convertModelValue]=\"true\" formControlName=\"endDate\" class=\"form-control\" />\n <a (click)=\"clearDates()\"><i-feather name=\"x-circle\"></i-feather></a>\n </div>\n <div class=\"d-flex flex-row align-items-center hide-from-small\" style=\"justify-content: flex-end;\">\n <div class=\"d-flex justify-content-between align-items-center\">\n <select name=\"tickets-table_length\" aria-controls=\"tickets-table\" formControlName=\"pageSize\" (change)=\"onPageSizeChange($event)\" class=\"form-control form-select select-custom\">\n <option [value]=\"10\">10 Per Page</option>\n <option [value]=\"25\">25 Per Page</option>\n <option [value]=\"50\">50 Per Page</option>\n <option [value]=\"100\">100 Per Page</option>\n <option [value]=\"250\">250 Per Page</option>\n <option [value]=\"500\">500 Per Page</option>\n </select>\n <div class=\"text-md-right float-md-end pagination-rounded\">\n <ngb-pagination [maxSize]=\"1\" [rotate]=\"true\" [ellipses]=\"true\"\n [collectionSize]=\"collectionSize\" [page]=\"pageNumber\" [boundaryLinks]=\"true\"\n (pageChange)=\"onPageChange($event)\" [pageSize]=\"f.pageSize.value\">\n </ngb-pagination>\n </div>\n </div>\n </div>\n </div> \n </div>\n </form>\n <div class=\"card-body\">\n <table cellspacing=\"0\" cellpadding=\"0\" id=\"datatable\" class=\"table dt-responsive wrap w-100\">\n <thead>\n <tr>\n <th *ngIf=\"iShowSelect && (isAdmin || iCanDelete || iCanWrite)\">\n <div class=\"form-check\">\n <input (change)=\"onCbHeadChange($event)\" class=\"form-check-input\" type=\"checkbox\">\n </div>\n </th>\n <ng-container *ngFor=\"let col of iColumns; let i=index\">\n <th *ngIf=\"col.visible === undefined || col.visible\" dtSortable\n [attr.sortable]=\"(col.sortable && col.sortable)? col.field : null\"\n [sortable]=\"(col.sortable && col.sortable)? col.field : null\"\n (sort)=\"onSort($event, col)\">\n {{col.title}}\n <ng-container *ngIf=\"col.title === '' && col.field === 'media'\">\n <i class=\"far fa-image fa-2x\"></i>\n </ng-container>\n <ng-container *ngIf=\"col.title === '' && col.field === 'html'\">\n <i class=\"fas fa-code fa-2x\"></i>\n </ng-container>\n </th>\n </ng-container>\n <th *ngIf=\"(iShowActions || iShowViewAction) && (iCanWrite || iCanDelete)\">\n Actions\n </th>\n <th *ngIf=\"!((iShowActions || iShowViewAction) && (iCanWrite || iCanDelete))\"></th>\n </tr>\n </thead>\n <tbody>\n <tr *ngIf=\"viewData.length==0\">\n <td style=\"text-align: center;\"\n [attr.colspan]=\"(iColumns.length + 1) + ( iShowActions ? 1 :0)\">\n No data found\n </td>\n </tr>\n <tr [style.color]=\"row.isDeleted ? 'red' : null\" [ngClass]=\"row.statusColor ? row.statusColor : ''\" *ngFor=\"let row of viewData; let i=index\">\n <td *ngIf=\"iShowSelect && (isAdmin || iCanDelete || iCanWrite)\" class=\"hide-from-small\">\n <div class=\"form-check\">\n <input [(ngModel)]=\"row.isSelected\" (change)=\"onCbChange($event,row)\"\n (click)=\"$event.stopPropagation();\" class=\"form-check-input\" type=\"checkbox\">\n </div>\n </td>\n <td *ngFor=\"let col of iColumns; let j=index\" style=\"padding: 0px;height: 30px;\">\n <label class=\"task-label\">{{col.title}}: </label>\n <a *ngIf=\"(col.visible === undefined || col.visible )\"\n (click)=\"oRowClick.emit(row)\" [routerLink]=\"getRowLink(row).routerLink\"\n [queryParams]=\"getRowLink(row).queryParams\" role=\"link\">\n <div *ngIf=\"col.anchorLink && col.anchorLink; else html\">\n <a style=\"color: #2563eb;\" [routerLink]=\"getAnchorLink(col.anchorType, row[col.anchorParamsField] )\">\n {{row[col.field]}}\n </a>\n </div>\n <ng-template #html>\n <div *ngIf=\"col.type === 'html'; else image\"\n [innerHTML]=\"SafeHtml(row[col.field])\">\n </div>\n </ng-template>\n <ng-template #image>\n <div *ngIf=\"col.type === 'image'; else normal\">\n <img [src]=\"SafeUrl(extractFieldValue(row, col.field,col.pipe, col?.pipeArgs))\" />\n </div>\n </ng-template>\n <ng-template #normal>\n <ngb-highlight\n [result]=\"extractFieldValue(row, col.field, col.pipe, col?.pipeArgs)\">\n </ngb-highlight>\n </ng-template>\n </a>\n </td>\n <td\n *ngIf=\"( iShowActions || iShowViewAction ) && (iCanWrite || iCanDelete || iCanRead || true)\">\n <div class=\"actions-container\">\n <a *ngIf=\"iShowEditAction && (isAdmin || (iCanWrite && (row.canBeEdit == null || row.canBeEdit == true)) )\" class=\"a-btn\"\n (click)=\"editRow(row);$event.stopPropagation();\">\n <i-feather name=\"edit\"></i-feather>\n </a>\n <a *ngIf=\"iShowViewAction && (isAdmin || iCanRead)\" class=\"a-btn\"\n (click)=\"viewRow(row);$event.stopPropagation();\"\n title=\"View\">\n <i-feather name=\"eye\"></i-feather>\n </a>\n <a *ngIf=\"iShowExternalAction && (isAdmin || iCanRead)\" class=\"a-btn\"\n (click)=\"showExternal(row);$event.stopPropagation();\"\n title=\"Opens on new page\">\n <i-feather name=\"external-link\"></i-feather>\n </a>\n <a *ngIf=\"showDeleteAction(row) && iShowDeleteAction && (isAdmin || iCanDelete) && ( activePage === PAGE_NAMES.Users ? iActiveUserId !== row?.id && row?.archived == true : true)\"\n class=\"a-btn\"\n (click)=\"onDeleteRow($event,row);$event.stopPropagation();\">\n <i-feather name=\"trash\"></i-feather>\n </a>\n <a *ngIf=\"(isAdmin || iCanDelete) && ( activePage === PAGE_NAMES.Users ? iActiveUserId !== row?.id && row?.archived == true : false)\"\n class=\"a-btn\"\n (click)=\"onUnArchiveRow($event,row);$event.stopPropagation();\">\n <mat-icon title=\"UnArchive\">unarchive</mat-icon>\n </a>\n <a *ngIf=\"(isAdmin || iCanDelete) && ( activePage === PAGE_NAMES.Users ? iActiveUserId !== row?.id && row?.archived == false : false)\"\n class=\"a-btn\"\n (click)=\"onArchiveRow($event,row);$event.stopPropagation();\">\n <mat-icon title=\"Archive\">archive</mat-icon>\n </a>\n <a *ngIf=\"iShowSendEmail\" title=\"Email\" class=\"a-btn\"\n (click)=\"onSendEmail(row);$event.stopPropagation();\">\n <i-feather name=\"mail\"></i-feather>\n </a>\n <a *ngIf=\"iShowMakeCopyAction && iCanWrite\" title=\"Create copy of this product\" class=\"a-btn\"\n (click)=\"oOnCopyClicked.emit(row);$event.stopPropagation();\">\n <i-feather name=\"copy\"></i-feather>\n </a>\n <button *ngIf=\"showCustomAction(row)\" type=\"button\" class=\"btn btn-outline-dark button\"\n (click)=\"executeCustomAction(row)\">{{iCustomActionLabel}}</button>\n </div>\n </td>\n </tr>\n </tbody>\n </table>\n <form [formGroup]=\"dtForm\" *ngIf=\"iShowHeader\">\n <div class=\"d-flex flex-row align-items-center\" style=\"justify-content: flex-end;\">\n <div class=\"d-flex justify-content-between align-items-center\">\n <select name=\"tickets-table_length\" aria-controls=\"tickets-table\" formControlName=\"pageSize\" (change)=\"onPageSizeChange($event)\" class=\"form-control form-select select-custom\">\n <option [value]=\"10\">10 Per Page</option>\n <option [value]=\"25\">25 Per Page</option>\n <option [value]=\"50\">50 Per Page</option>\n <option [value]=\"100\">100 Per Page</option>\n <option [value]=\"250\">250 Per Page</option>\n <option [value]=\"500\">500 Per Page</option>\n </select>\n <div class=\"text-md-right float-md-end pagination-rounded\">\n <ngb-pagination [maxSize]=\"1\" [rotate]=\"true\" [ellipses]=\"true\"\n [collectionSize]=\"collectionSize\" [page]=\"pageNumber\" [boundaryLinks]=\"true\"\n (pageChange)=\"onPageChange($event)\" [pageSize]=\"f.pageSize.value\">\n </ngb-pagination>\n </div>\n </div>\n </div>\n </form>\n </div>\n </div> <!-- end col -->\n </div> <!-- end row -->\n</div>","import { NgModule } from \"@angular/core\";\nimport { CampaignDatatableComponent } from \"./campaign-datatable.component\";\nimport { FeatherModule } from 'angular-feather';\nimport { allIcons } from 'angular-feather/icons';\nimport { NgbModule } from '@ng-bootstrap/ng-bootstrap';\nimport { RouterModule } from \"@angular/router\";\nimport { campaignDataTableSortableDirective } from \"./campaign-datatable-sortable.directive\";\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\nimport { CommonModule } from \"@angular/common\";\nimport { FlatpickrModule } from 'angularx-flatpickr';\nimport { MatIconModule } from '@angular/material/icon';\n\n@NgModule({\n declarations: [\n CampaignDatatableComponent,\n campaignDataTableSortableDirective,\n ],\n imports: [\n CommonModule,\n FeatherModule.pick(allIcons),\n RouterModule,\n NgbModule,\n FormsModule,\n MatIconModule,\n ReactiveFormsModule,\n FlatpickrModule.forRoot(),\n ],\n exports: [CampaignDatatableComponent]\n })\n export class CampaignDatatableModule { }","import { Directive, EventEmitter, Input, Output } from '@angular/core';\nimport { Table } from './datatable.model';\n\nexport type SortColumn = keyof Table | '';\nexport type SortDirection = 'asc' | 'desc' | '';\nconst rotate: { [key: string]: SortDirection } = { 'asc': 'desc', 'desc': 'asc', '': 'asc' };\n\nexport interface SortEvent {\n column: SortColumn;\n direction: SortDirection;\n}\n\n@Directive({\n // tslint:disable-next-line: directive-selector\n selector: '[dtSortable]',\n // tslint:disable-next-line: no-host-metadata-property\n host: {\n '[class.asc]': 'direction === \"asc\"',\n '[class.desc]': 'direction === \"desc\"',\n '(click)': 'rotate()'\n }\n})\n\nexport class dataTableSortableDirective {\n\n constructor() { }\n\n @Input() sortable: SortColumn = '';\n @Input() direction: SortDirection = '';\n @Output() sort = new EventEmitter<SortEvent>();\n\n rotate() {\n this.direction = rotate[this.direction];\n this.sort.emit({ column: this.sortable, direction: this.direction });\n }\n}\n","import { Component, OnInit, Input, Output, EventEmitter, ViewChildren, QueryList, OnDestroy } from '@angular/core';\r\nimport { DecimalPipe } from '@angular/common';\r\nimport { FormBuilder, FormGroup } from '@angular/forms';\r\nimport * as _ from 'underscore'\r\nimport Swal from 'sweetalert2';\r\nimport { dataTableSortableDirective, SortEvent } from './datatable-sortable.directive';\r\nimport { P_CampaignStageTitle } from '../../shared.pipe';\r\nimport { ReplaySubject } from 'rxjs';\r\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\r\nimport { AppService } from '../../../store/app.service';\r\nimport { ExportToCsv } from 'export-to-csv';\r\nimport * as lodash from 'lodash'\r\nimport { PAGE_NAMES } from '../../../core/helpers/constants';\r\nimport { LoadDataFromServer, sortDirection } from './datatable.model';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\n\r\n@Component({\r\n selector: 'app-datatable',\r\n templateUrl: './datatable.component.html',\r\n styleUrls: ['./datatable.component.scss'],\r\n providers: [DecimalPipe, P_CampaignStageTitle]\r\n})\r\n\r\n/**\r\n * Datatable Component\r\n */\r\n\r\nexport class DatatableComponent implements OnInit, OnDestroy {\r\n\r\n private destroyed$: ReplaySubject<boolean> = new ReplaySubject(1);\r\n PAGE_NAMES = PAGE_NAMES;\r\n @ViewChildren(dataTableSortableDirective)\r\n headers!: QueryList<dataTableSortableDirective>;\r\n\r\n dtForm: FormGroup;\r\n collectionSize: number = 0;\r\n\r\n activePage = '';\r\n //activeUser = {} as IUser;\r\n @Input() isAdmin: boolean = false;\r\n @Input() iCanRead: boolean = false;\r\n @Input() iCanWrite: boolean = false;\r\n @Input() iCanDelete: boolean = false;\r\n @Input() iShowDropdownAdd: boolean = true;\r\n pageNumber = 1;\r\n @Input() iActiveUserId: string | undefined = '';\r\n\r\n @Input() iHideHeaderActions: boolean = false;\r\n @Input() iShowExport: boolean = true;\r\n @Input() iShowHeader: boolean = true;\r\n @Input() iShowSelect: boolean = true;\r\n @Input() iShowMerge: boolean = false;\r\n @Input() iShowExternalAction: boolean = false;\r\n @Input() iShowDropDownDelete: boolean = true;\r\n\r\n @Input() iShowActions: boolean = true;\r\n @Input() iShowViewAction: boolean = false;\r\n @Input() iShowEditAction: boolean = true;\r\n @Input() iShowDeleteAction: boolean = true;\r\n @Input() iShowDeleteActionFn?: Function = undefined;\r\n @Input() iShowSendEmail: boolean = false;\r\n @Input() iShowMakeCopyAction: boolean = false;\r\n @Input() iShowDateRange: boolean = false;\r\n\r\n @Input() iShowSearch: boolean = true;\r\n @Input() iPageSize = 50;\r\n\r\n @Input() iUserRoles: Array<number> = [];\r\n @Input() iSortDirection = 'asc';\r\n @Input() iSortColumn = 'name';\r\n @Input() iSortColumnProps = {} as any;\r\n @Input() iIsServerLoading = false;\r\n @Input() iIsCustomDataExport = false;\r\n @Input() iIsExportFilter = false;\r\n @Input() iDateField = '';\r\n \r\n @Input() iColumns: Array<any> = [];\r\n @Input() set iData$(data: Array<any>) {\r\n this.rawData = data;\r\n this.prepareData();\r\n }\r\n @Input() set iTotalCount(totalCount: number) {\r\n this.totalCount = totalCount;\r\n this.prepareData();\r\n }\r\n @Input() iRowLinkHandler?: Function = undefined;\r\n\r\n @Input() iShowCustomAction?: Function = undefined;\r\n @Input() iCustomActionLabel: string = '';\r\n @Input() iCustomActionHandler?: Function = undefined;\r\n\r\n\r\n\r\n @Output() oEditRow = new EventEmitter<any>();\r\n @Output() oViewRow = new EventEmitter<any>();\r\n @Output() oShowExternal = new EventEmitter<any>();\r\n @Output() oAddNew = new EventEmitter<any>();\r\n @Output() oDeleteRows = new EventEmitter<any>();\r\n @Output() oArchiveRows = new EventEmitter<any>();\r\n @Output() oUnArchiveRows = new EventEmitter<any>();\r\n @Output() oRowClick = new EventEmitter<any>();\r\n @Output() oCBClick = new EventEmitter<any>();\r\n @Output() oMergeRecords = new EventEmitter<any>();\r\n @Output() oLoadDataFromServer = new EventEmitter<any>();\r\n @Output() oSendEmail = new EventEmitter<any>();\r\n @Output() oOnCopyClicked = new EventEmitter<any>();\r\n @Output() oCustomDataExport = new EventEmitter<any>();\r\n \r\n rawData: Array<any> = new Array<any>();\r\n viewData: Array<any> = new Array<any>();\r\n totalCount: number = 0;\r\n constructor(\r\n private formBuilder: FormBuilder,\r\n private appService: AppService,\r\n private sanitizer: DomSanitizer,\r\n ) {\r\n // console.log(this.iData$);\r\n\r\n this.dtForm = this.formBuilder.group({\r\n pageSize: this.iPageSize,\r\n activePage: this.pageNumber,\r\n searchQuery: '',\r\n startDate: [null],\r\n endDate: [null],\r\n });\r\n\r\n this.dtForm.get(\"searchQuery\")\r\n ?.valueChanges\r\n .pipe(\r\n debounceTime(400),\r\n distinctUntilChanged()\r\n )\r\n .subscribe(text => {\r\n if (!this.iIsServerLoading) {\r\n this.prepareData();\r\n }\r\n });\r\n\r\n this.dtForm.get(\"startDate\")\r\n ?.valueChanges\r\n .pipe(\r\n debounceTime(400),\r\n distinctUntilChanged()\r\n )\r\n .subscribe(text => {\r\n if (!this.iIsServerLoading) {\r\n this.prepareData();\r\n }\r\n else{\r\n this.loadData();\r\n }\r\n });\r\n\r\n this.dtForm.get(\"endDate\")\r\n ?.valueChanges\r\n .pipe(\r\n debounceTime(400),\r\n distinctUntilChanged()\r\n )\r\n .subscribe(text => {\r\n if(this.f?.endDate?.value){\r\n this.f?.endDate?.value.setDate(this.f?.endDate?.value.getDate() + 1);\r\n }\r\n if (!this.iIsServerLoading) {\r\n this.prepareData();\r\n }\r\n else{\r\n this.loadData();\r\n }\r\n });\r\n\r\n this.appService.getActivePage$().subscribe(p => {\r\n this.activePage = p;\r\n // console.log(p)\r\n });\r\n }\r\n\r\n clearDates(){\r\n this.dtForm.get(\"startDate\")?.setValue(null);\r\n this.dtForm.get(\"endDate\")?.setValue(null);\r\n }\r\n\r\n get f() { return this.dtForm.controls; }\r\n ngOnInit(): void {\r\n this.loadData();\r\n }\r\n\r\n onPageSizeChange(evt: any) {\r\n this.loadData();\r\n this.prepareData();\r\n }\r\n\r\n onPageChange(pageNumber: number) {\r\n this.pageNumber = pageNumber;\r\n this.loadData();\r\n this.prepareData();\r\n }\r\n\r\n /**\r\n * Creates an array of data to CSV. It will automatically generate a title row based on object keys.\r\n *\r\n * @param rows array of data to be converted to CSV.\r\n * @param fileName filename to save as.\r\n * @param columns array of object properties to convert to CSV. If skipped, then all object properties will be used for CSV.\r\n **/\r\n exportToCsv() {\r\n if (this.iIsCustomDataExport === true) {\r\n if(this.iIsExportFilter == false){\r\n this.oCustomDataExport.emit();\r\n }\r\n else{\r\n const event: LoadDataFromServer = {\r\n pageSize: this.f.pageSize.value,\r\n pageNumber: this.pageNumber,\r\n sortColumn: this.iSortColumn,\r\n sortDirection: this.iSortDirection === 'asc' ? sortDirection.asc : sortDirection.desc,\r\n search: this.f?.searchQuery?.value,\r\n startDate: this.f?.startDate?.value,\r\n endDate: this.f?.endDate?.value\r\n }\r\n this.oCustomDataExport.emit(event);\r\n }\r\n return;\r\n }\r\n let title = this.appService.getPageTitle$().getValue();\r\n\r\n var filtered: Array<any> = [];\r\n if (this.checkedItemsCount >= 1) {\r\n /* select checked data */\r\n for (var i = 0; i < this.viewData.length; i++) {\r\n if (this.viewData[i].isSelected)\r\n filtered.push(this.viewData[i]);\r\n }\r\n /* end select checked data */\r\n }\r\n else {\r\n /* filter data */\r\n var query = this.f?.searchQuery?.value;\r\n if (query != null) {\r\n if (query === '') {\r\n filtered = this.rawData\r\n }\r\n else {\r\n filtered = this.search(query, null, null);\r\n }\r\n }\r\n /* end filter data */\r\n }\r\n\r\n /* prepare data, remove null amd undefined values */\r\n var exportData: Array<any> = [];\r\n filtered\r\n .forEach((row: any) => {\r\n let obj: any = {};\r\n this.iColumns\r\n .forEach((col: any) => {\r\n let value = this.extractFieldValue(row, col.field, col.pipe);\r\n if (value && value !== null && value !== undefined) {\r\n obj[col.title] = value;\r\n }\r\n else {\r\n obj[col.title] = '';\r\n }\r\n });\r\n exportData.push(obj);\r\n });\r\n /* end prepare data, remove null amd undefined values */\r\n\r\n /* export prepared data to csv */\r\n const options = {\r\n filename: title,\r\n fieldSeparator: ',',\r\n quoteStrings: '\"',\r\n decimalSeparator: '.',\r\n showLabels: true,\r\n showTitle: false,\r\n title: title,\r\n useTextFile: false,\r\n useBom: true,\r\n useKeysAsHeaders: true,\r\n };\r\n const csvExporter = new ExportToCsv(options);\r\n\r\n csvExporter.generateCsv(exportData);\r\n /* end export prepared data to csv */\r\n }\r\n\r\n filterData(array: Array<any>) {\r\n var query = this.f?.searchQuery?.value;\r\n var fromDate = this.f?.startDate?.value;\r\n var toDate = this.f?.endDate?.value;\r\n var dataset = array;\r\n if ((query != null && query !== '') || fromDate != null || toDate !=null) {\r\n dataset = this.search(query, fromDate, toDate);\r\n }\r\n else {\r\n dataset = this.rawData\r\n }\r\n return dataset;\r\n }\r\n\r\n paginate(array: Array<any>, pageSize: number, pageNumber: number) {\r\n return array.slice((pageNumber - 1) * pageSize, pageNumber * pageSize);\r\n }\r\n\r\n onCbHeadChange(evt: any) {\r\n for (var i = 0; i < this.viewData.length; i++) {\r\n this.viewData[i].isSelected = evt.target.checked;\r\n }\r\n }\r\n\r\n editRow(evt: any) {\r\n this.oEditRow.emit(evt);\r\n }\r\n\r\n onSendEmail(evt: any) {\r\n this.oSendEmail.emit(evt);\r\n }\r\n\r\n viewRow(evt: any) {\r\n this.oViewRow.emit(evt);\r\n }\r\n\r\n showExternal(evt: any) {\r\n this.oShowExternal.emit(evt);\r\n }\r\n\r\n addNew() {\r\n this.oAddNew.emit();\r\n }\r\n\r\n get checkedItemsCount() { return this.getCheckedItemsIds().length; }\r\n mergeRecords() {\r\n const itemsIds = this.getCheckedItemsIds();\r\n\r\n if (itemsIds.length <= 1)\r\n return\r\n\r\n this.oMergeRecords.emit(itemsIds);\r\n\r\n // Swal.fire({\r\n // title: 'Are you sure you want to merge these records?',\r\n // text: \"You won't be able to revert this!\",\r\n // icon: 'warning',\r\n // showCancelButton: true,\r\n // confirmButtonColor: '#3085d6',\r\n // cancelButtonColor: '#d33',\r\n // confirmButtonText: 'Yes, merge them!'\r\n // }).then((result) => {\r\n // if (result.isConfirmed) {\r\n // this.oMergeRecords.emit(itemsIds);\r\n // }\r\n // });\r\n }\r\n\r\n deleteRows() {\r\n const itemsIds = this.getCheckedItemsIds();\r\n if (itemsIds.length === 0)\r\n return\r\n\r\n Swal.fire({\r\n title: 'Are you sure?',\r\n text: \"You won't be able to revert this!\",\r\n icon: 'warning',\r\n showCancelButton: true,\r\n confirmButtonColor: '#3085d6',\r\n cancelButtonColor: '#d33',\r\n confirmButtonText: 'Yes, delete it!'\r\n }).then((result) => {\r\n if (result.isConfirmed) {\r\n this.oDeleteRows.emit(itemsIds);\r\n }\r\n })\r\n }\r\n onDeleteRow(evt: any, data: any) {\r\n Swal.fire({\r\n title: 'Are you sure?',\r\n text: \"You won't be able to revert this!\",\r\n icon: 'warning',\r\n showCancelButton: true,\r\n confirmButtonColor: '#3085d6',\r\n cancelButtonColor: '#d33',\r\n confirmButtonText: 'Yes, delete it!'\r\n }).then((result) => {\r\n if (result.isConfirmed) {\r\n this.oDeleteRows.emit([data.id]);\r\n evt.stopPropagation();\r\n }\r\n })\r\n\r\n }\r\n\r\n onArchiveRow(evt: any, data: any){\r\n Swal.fire({\r\n title: 'Are you sure?',\r\n text: \"User will be Archived and not able to use the system!\",\r\n icon: 'warning',\r\n showCancelButton: true,\r\n confirmButtonColor: '#3085d6',\r\n cancelButtonColor: '#d33',\r\n confirmButtonText: 'Yes, archive it!'\r\n }).then((result) => {\r\n if (result.isConfirmed) {\r\n this.oArchiveRows.emit([data.id]);\r\n evt.stopPropagation();\r\n }\r\n })\r\n }\r\n\r\n onUnArchiveRow(evt: any, data: any){\r\n Swal.fire({\r\n title: 'Are you sure?',\r\n text: \"User will be UnArchived and able to use the system again!\",\r\n icon: 'warning',\r\n showCancelButton: true,\r\n confirmButtonColor: '#3085d6',\r\n cancelButtonColor: '#d33',\r\n confirmButtonText: 'Yes, unarchive it!'\r\n }).then((result) => {\r\n if (result.isConfirmed) {\r\n this.oUnArchiveRows.emit([data.id]);\r\n evt.stopPropagation();\r\n }\r\n })\r\n }\r\n\r\n getCheckedItemsIds() {\r\n const checkedList = new Array<string>();\r\n for (var i = 0; i < this.viewData.length; i++) {\r\n if (this.viewData[i].isSelected)\r\n checkedList.push(this.viewData[i].id);\r\n }\r\n return checkedList;\r\n }\r\n\r\n onSort({ column, direction }: SortEvent, colProps: any) {\r\n // resetting other headers\r\n this.headers.forEach(header => {\r\n if (header.sortable !== column) {\r\n header.direction = '';\r\n }\r\n });\r\n this.iSortColumn = column;\r\n this.iSortColumnProps = colProps;\r\n this.iSortDirection = direction;\r\n this.loadData();\r\n this.prepareData();\r\n }\r\n\r\n loadData() {\r\n if (this.iIsServerLoading) {\r\n const event: LoadDataFromServer = {\r\n pageSize: this.f.pageSize.value,\r\n pageNumber: this.pageNumber,\r\n sortColumn: this.iSortColumn,\r\n sortDirection: this.iSortDirection === 'asc' ? sortDirection.asc : sortDirection.desc,\r\n search: this.f?.searchQuery?.value,\r\n startDate: this.f?.startDate?.value,\r\n endDate: this.f?.endDate?.value\r\n }\r\n this.oLoadDataFromServer.emit(event);\r\n }\r\n }\r\n\r\n prepareData() {\r\n if (this.iIsServerLoading) {\r\n this.viewData = this.rawData;\r\n this.collectionSize = this.totalCount;\r\n // console.log(this.viewData);\r\n }\r\n else {\r\n var viewData = this.rawData;\r\n viewData = this.filterData(viewData);\r\n viewData = [...this.sort(viewData)];\r\n this.collectionSize = viewData.length;\r\n viewData = [...this.paginate(viewData, this.f.pageSize.value, this.pageNumber)]\r\n this.viewData = viewData;\r\n }\r\n }\r\n\r\n sort(tables: any[],): any[] {\r\n const sortColumns = this.iSortColumn.split(',');\r\n const direction = this.iSortDirection;\r\n if (direction === '' || sortColumns.length === 0 || tables.length === 0) return tables;\r\n const pipes: any[] = [];\r\n\r\n const pipeArgs: any[] = [];\r\n for (let index = 0; index < sortColumns.length; index++) {\r\n const sortColumn = sortColumns[index];\r\n const column = this.getColumnByField(sortColumn);\r\n if (column === undefined) {\r\n console.log('Unkown sort column ' + sortColumn);\r\n return tables;\r\n }\r\n if (column.pipe !== undefined) {\r\n const pipe = this.appService?.getPipeByName(column.pipe);\r\n pipes.push(pipe);\r\n pipeArgs.push(column.pipeArgs);\r\n }\r\n else {\r\n pipes.push(null);\r\n pipeArgs.push(null);\r\n }\r\n }\r\n return [...tables].sort((a, b) => {\r\n let valueA: string[] = [];\r\n let valueB: any[] = [];\r\n for (var i = 0; i < sortColumns.length; i++) {\r\n if (pipes[i] !== null) {\r\n valueA.push(pipes[i].transform(a[sortColumns[i]], ...pipeArgs[i]));\r\n valueB.push(pipes[i].transform(b[sortColumns[i]], ...pipeArgs[i]));\r\n }\r\n else {\r\n valueA.push(a[sortColumns[i]]);\r\n valueB.push(b[sortColumns[i]]);\r\n }\r\n }\r\n const res = this.compare(valueA, valueB);\r\n return direction === 'asc' ? res : -res;\r\n });\r\n\r\n }\r\n\r\n compare = (a: any[], b: any[]) => {\r\n if (a.length !== b.length) return 0;\r\n for (var i = 0; i < a.length; i++) {\r\n let valueA = a[i];\r\n let valueB = b[i];\r\n if (this.isString(valueA)) valueA = valueA.toLowerCase();\r\n if (this.isString(valueB)) valueB = valueB.toLowerCase();\r\n if (valueA !== valueB) {\r\n return valueA < valueB ? -1 : valueA > valueB ? 1 : 0;\r\n }\r\n }\r\n return 0;\r\n }\r\n\r\n\r\n\r\n search(query: string, fromDate: any, toDate: any) {\r\n // console.log('query: ', query); \r\n \r\n let r = new Array<any>();\r\n for (var ele of this.rawData) {\r\n for (let col of this.iColumns.filter(x => (x.searchable && x.searchable === true))) {\r\n let value = ele[col.field];\r\n\r\n if (value == null || value == undefined)\r\n continue;\r\n\r\n if (col.pipe !== undefined) {\r\n let pipe = this.appService?.getPipeByName(col.pipe);\r\n value = pipe?.transform(ele[col.field], col.pipeArgs);\r\n\r\n if (value == null || value == undefined)\r\n continue;\r\n }\r\n\r\n if (value.toString().toLowerCase().indexOf(query.toLowerCase()) > -1) {\r\n if(fromDate != null || toDate != null){\r\n var fdate;\r\n if(typeof new Date(value).getMonth === 'function'){\r\n fdate = new Date(value);\r\n }\r\n else{\r\n const [month, day, year] = ele[this.iDateField].split('/');\r\n fdate = new Date(+year, +month - 1, +day);\r\n }\r\n \r\n if(fromDate != null && toDate != null){\r\n if(fdate >= fromDate && fdate <= toDate){\r\n r.push(ele);\r\n break;\r\n }\r\n }\r\n else if(fromDate != null){\r\n if(fdate >= fromDate){\r\n r.push(ele);\r\n break;\r\n }\r\n }\r\n else{\r\n if(fdate <= toDate){\r\n r.push(ele);\r\n break;\r\n }\r\n }\r\n }\r\n else{\r\n r.push(ele);\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n return r;\r\n }\r\n\r\n extractFieldValue(row: any, colName: string, pipe: string, pipeArgs: any[] = []) {\r\n let value = lodash.get(row, colName);\r\n if (pipe) {\r\n //TODO:// use injector or something else to properly handle dynamic pipes\r\n let p = this.appService?.getPipeByName(pipe);\r\n value = p?.transform(value, ...pipeArgs);\r\n }\r\n return value;\r\n }\r\n\r\n getAnchorLink(type: string, param: any) {\r\n switch (type) {\r\n case 'client':\r\n return '/pages/client-details/' + param;\r\n case 'campaign':\r\n return '/pages/campaign-details/' + param;\r\n case 'subscription':\r\n return '/pages/subscriptions/' + param;\r\n case 'order':\r\n return '/pages/orders/details/' + param;\r\n default:\r\n return '';\r\n\r\n }\r\n }\r\n\r\n onCbChange(evt: any, data: any) {\r\n this.oCBClick.emit({ evt, data })\r\n }\r\n ngOnDestroy(): void {\r\n this.destroyed$.next(true);\r\n this.destroyed$.complete();\r\n }\r\n\r\n doServerSearch(event: any) {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n if (!this.iIsServerLoading) return;\r\n this.loadData();\r\n }\r\n\r\n SafeHtml(str: string) {\r\n return this.sanitizer.bypassSecurityTrustHtml(str);\r\n }\r\n SafeUrl(str: string) {\r\n return this.sanitizer.bypassSecurityTrustUrl('data:image/png;base64,' + str);\r\n }\r\n\r\n showCustomAction(row: any) {\r\n if (this.iShowCustomAction === undefined) return false;\r\n return this.iShowCustomAction.call(null, row);\r\n }\r\n\r\n showDeleteAction(row: any) {\r\n if (this.iShowDeleteActionFn === undefined) return true;\r\n return this.iShowDeleteActionFn.call(null, row);\r\n }\r\n\r\n executeCustomAction(row: any) {\r\n if (this.iCustomActionHandler === undefined) return;\r\n this.iCustomActionHandler.call(null, row);\r\n }\r\n\r\n getColumnByField(fieldName: string) {\r\n return this.iColumns.find(x => x.field === fieldName);\r\n }\r\n\r\n getRowLink(row: any) {\r\n if (this.iRowLinkHandler === undefined) return { routerLink: null, queryParams: null };\r\n const link = this.iRowLinkHandler.call(null, row);\r\n const linkParts = link.split('?');\r\n const linkObject: any = { routerLink: linkParts[0], queryParams: {} }\r\n if (linkParts.length > 1) {\r\n const queryParams = linkParts[1].split('&');\r\n for (var i = 0; i < queryParams.length; i++) {\r\n linkObject.queryParams[queryParams[i].split('=')[0]] = queryParams[i].split('=')[1];\r\n }\r\n }\r\n return linkObject;\r\n }\r\n\r\n isString = (x: any) => Object.prototype.toString.call(x) === \"[object String]\";\r\n}\r\n","<div class=\"row\">\r\n <div class=\"col-12\">\r\n <div class=\"card card-custom\">\r\n <form [formGroup]=\"dtForm\" *ngIf=\"iShowHeader\">\r\n <div class=\"card-header\">\r\n <div class=\"d-flex flex-md-row flex-lg-row flex-sm-row justify-content-between align-items-center\">\r\n <div class=\"flex-row\">\r\n <div\r\n *ngIf=\"(iShowActions && !iHideHeaderActions) && (isAdmin || iCanDelete || iShowExport) && activePage !== PAGE_NAMES.Users\">\r\n <div *ngIf=\"isAdmin || iCanDelete || iShowMerge\" ngbDropdown\r\n class=\"d-inline-block dropdown-custom\">\r\n <button style=\"margin-right: 20px;\" class=\"btn btn-dd\" id=\"dropdownBasic1\"\r\n ngbDropdownToggle>Actions</button>\r\n <div ngbDropdownMenu aria-labelledby=\"dropdownBasic1\">\r\n <!-- <button *ngIf=\"(isAdmin || iCanWrite) && iShowDropdownAdd\" (click)=\"addNew()\"\r\n ngbDropdownItem>Add\r\n New</button> -->\r\n <button *ngIf=\"(isAdmin || iCanDelete) && iShowDropDownDelete\"\r\n (click)=\"deleteRows()\" ngbDropdownItem>Delete</button>\r\n\r\n <button *ngIf=\"iShowMerge && checkedItemsCount >= 2\" type=\"button\"\r\n ngbDropdownItem (click)=\"mergeRecords()\"\r\n title=\"Please select two or more records to merge!\">Merge\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"d-inline-block\">\r\n <button *ngIf=\"iShowExport\" type=\"button\" class=\"btn btn-outline-dark button\"\r\n style=\"padding-top: 3px;padding-bottom: 3px;\"\r\n (click)=\"exportToCsv()\">Export</button>\r\n <!-- <button *ngIf=\"iShowMerge\" [disabled]=\"checkedItemsCount <= 1\" type=\"button\"\r\n class=\"btn-custom\" style=\"margin-right:10px\" (click)=\"mergeRecords()\" title=\"Please select two or more records to merge!\">Merge\r\n </button> -->\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"iShowDateRange\" class=\"d-flex flex-row align-items-center\">\r\n <label class=\"d-inline-flex align-items-center\">From: </label> \r\n <input id=\"dtStartDate\"\r\n mwlFlatpickr [altInputClass]=\"'datetime'\" [altInput]=\"true\"\r\n [convertModelValue]=\"true\" formControlName=\"startDate\" class=\"form-control\" />\r\n \r\n <label class=\"d-inline-flex align-items-center\">To: </label> \r\n <input id=\"dtEndDate\"\r\n mwlFlatpickr [altInputClass]=\"'datetime'\" [altInput]=\"true\"\r\n [convertModelValue]=\"true\" formControlName=\"endDate\" class=\"form-control\" /><a (click)=\"clearDates()\"><i-feather name=\"x-circle\" style=\"margin: 5px 0px 0px 5px; cursor: pointer;\"></i-feather></a>\r\n </div>\r\n <div class=\"d-flex flex-row align-items-center\">\r\n\r\n <div *ngIf=\"iShowSearch\" id=\"tickets-table_filter\" class=\"dataTables_filter text-md-end\">\r\n <label class=\"d-inline-flex align-items-center\" style=\"margin-bottom: 0;\">Search:\r\n <input id=\"txtSearchQuery\" type=\"text\" formControlName=\"searchQuery\"\r\n class=\"form-control form-control-sm ms-2\" aria-controls=\"tickets-table\"\r\n (keydown.enter)=\"doServerSearch($event)\"></label>\r\n </div>\r\n\r\n <div class=\"d-flex justify-content-between align-items-center\">\r\n\r\n <select name=\"tickets-table_length\" aria-controls=\"tickets-table\" name=\"pageSize\"\r\n formControlName=\"pageSize\" (change)=\"onPageSizeChange($event)\"\r\n class=\"form-control form-select select-custom\">\r\n <option [value]=\"10\">10 Per Page</option>\r\n <option [value]=\"25\">25 Per Page</option>\r\n <option [value]=\"50\">50 Per Page</option>\r\n <option [value]=\"100\">100 Per Page</option>\r\n <option [value]=\"250\">250 Per Page</option>\r\n <option [value]=\"500\">500 Per Page</option>\r\n </select>\r\n\r\n <div class=\"text-md-right float-md-end pagination-rounded\">\r\n <ngb-pagination [maxSize]=\"5\" [rotate]=\"true\" [ellipses]=\"true\"\r\n [collectionSize]=\"collectionSize\" [page]=\"1\" [boundaryLinks]=\"true\"\r\n (pageChange)=\"onPageChange($event)\" [pageSize]=\"f.pageSize.value\">\r\n </ngb-pagination>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </form>\r\n <div class=\"card-body\">\r\n <table cellspacing=\"0\" cellpadding=\"0\" id=\"datatable\" class=\"table dt-responsive nowrap w-100\">\r\n <thead>\r\n <tr>\r\n <th *ngIf=\"iShowSelect && (isAdmin || iCanDelete || iCanWrite)\">\r\n <div class=\"form-check\">\r\n <input (change)=\"onCbHeadChange($event)\" class=\"form-check-input\" type=\"checkbox\">\r\n </div>\r\n </th>\r\n <ng-container *ngFor=\"let col of iColumns; let i=index\">\r\n <th *ngIf=\"col.visible === undefined || col.visible\" dtSortable\r\n [attr.sortable]=\"(col.sortable && col.sortable)? col.field : null\"\r\n [sortable]=\"(col.sortable && col.sortable)? col.field : null\"\r\n (sort)=\"onSort($event, col)\">\r\n {{col.title}}\r\n <ng-container *ngIf=\"col.title === '' && col.field === 'media'\">\r\n <i class=\"far fa-image fa-2x\"></i>\r\n </ng-container>\r\n <ng-container *ngIf=\"col.title === '' && col.field === 'html'\">\r\n <i class=\"fas fa-code fa-2x\"></i>\r\n </ng-container>\r\n </th>\r\n </ng-container>\r\n\r\n\r\n <th *ngIf=\"(iShowActions || iShowViewAction) && (iCanWrite || iCanDelete)\">\r\n Actions\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngIf=\"viewData.length==0\">\r\n <td style=\"text-align: center;\"\r\n [attr.colspan]=\"(iColumns.length + 1) + ( iShowActions ? 1 :0)\">\r\n No data found\r\n </td>\r\n\r\n </tr>\r\n <tr [style.color]=\"row.isDeleted ? 'red' : null\" *ngFor=\"let row of viewData; let i=index\">\r\n <td *ngIf=\"iShowSelect && (isAdmin || iCanDelete || iCanWrite)\">\r\n <div class=\"form-check\">\r\n <input [(ngModel)]=\"row.isSelected\" (change)=\"onCbChange($event,row)\"\r\n (click)=\"$event.stopPropagation();\" class=\"form-check-input\" type=\"checkbox\">\r\n </div>\r\n </td>\r\n <td *ngFor=\"let col of iColumns; let j=index\" style=\"padding: 0px;height: 30px;\">\r\n <a *ngIf=\"(col.visible === undefined || col.visible )\"\r\n style=\"color: inherit ;display: block;padding: 10px;line-height: 30px;\"\r\n (click)=\"oRowClick.emit(row)\" [routerLink]=\"getRowLink(row).routerLink\"\r\n [queryParams]=\"getRowLink(row).queryParams\" role=\"link\">\r\n <div *ngIf=\"col.anchorLink && col.anchorLink; else html\">\r\n <a style=\"color: #2563eb;\" [routerLink]=\"getAnchorLink(col.anchorType, row[col.anchorParamsField] )\">\r\n {{row[col.field]}}\r\n </a>\r\n </div>\r\n\r\n <ng-template #html>\r\n <div *ngIf=\"col.type === 'html'; else image\"\r\n [innerHTML]=\"SafeHtml(row[col.field])\">\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template #image>\r\n <div *ngIf=\"col.type === 'image'; else normal\">\r\n <img [src]=\"SafeUrl(extractFieldValue(row, col.field,col.pipe, col?.pipeArgs))\"\r\n style=\"height: 25px;\" />\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template #normal>\r\n <ngb-highlight\r\n [result]=\"extractFieldValue(row, col.field, col.pipe, col?.pipeArgs)\">\r\n </ngb-highlight>\r\n </ng-template>\r\n </a>\r\n </td>\r\n <td\r\n *ngIf=\"( iShowActions || iShowViewAction ) && (iCanWrite || iCanDelete || iCanRead || true)\">\r\n <!-- <div *ngIf=\"(col.visible ===undefined || col.visible )\"> -->\r\n <a *ngIf=\"iShowEditAction && (isAdmin || (iCanWrite && (row.canBeEdit == null || row.canBeEdit == true)) )\" class=\"a-btn\"\r\n style=\"margin-right: 10px;\" (click)=\"editRow(row);$event.stopPropagation();\">\r\n <i-feather name=\"edit\"></i-feather>\r\n </a>\r\n <!-- <div *ngIf=\"(col.visible ===undefined || col.visible )\"> -->\r\n <a *ngIf=\"iShowViewAction && (isAdmin || iCanRead)\" class=\"a-btn\"\r\n style=\"margin-right: 10px;\" (click)=\"viewRow(row);$event.stopPropagation();\"\r\n title=\"View\">\r\n <i-feather name=\"eye\"></i-feather>\r\n </a>\r\n <a *ngIf=\"iShowExternalAction && (isAdmin || iCanRead)\" class=\"a-btn\"\r\n style=\"margin-right: 10px;\" (click)=\"showExternal(row);$event.stopPropagation();\"\r\n title=\"Opens on new page\">\r\n <i-feather name=\"external-link\"></i-feather>\r\n </a>\r\n <a *ngIf=\"showDeleteAction(row) && iShowDeleteAction && (isAdmin || iCanDelete) && ( activePage === PAGE_NAMES.Users ? iActiveUserId !== row?.id && row?.archived == true : true)\"\r\n class=\"a-btn\" style=\"margin-right: 10px;\"\r\n (click)=\"onDeleteRow($event,row);$event.stopPropagation();\">\r\n <i-feather name=\"trash\"></i-feather>\r\n </a>\r\n <a *ngIf=\"(isAdmin || iCanDelete) && ( activePage === PAGE_NAMES.Users ? iActiveUserId !== row?.id && row?.archived == true : false)\"\r\n class=\"a-btn\" style=\"margin-right: 10px;\"\r\n (click)=\"onUnArchiveRow($event,row);$event.stopPropagation();\">\r\n <mat-icon title=\"UnArchive\">unarchive</mat-icon>\r\n </a>\r\n <a *ngIf=\"(isAdmin || iCanDelete) && ( activePage === PAGE_NAMES.Users ? iActiveUserId !== row?.id && row?.archived == false : false)\"\r\n class=\"a-btn\" style=\"margin-right: 10px;\"\r\n (click)=\"onArchiveRow($event,row);$event.stopPropagation();\">\r\n <mat-icon title=\"Archive\">archive</mat-icon>\r\n </a>\r\n <a *ngIf=\"iShowSendEmail\" title=\"Email\" class=\"a-btn\" style=\"margin-right: 10px;\"\r\n (click)=\"onSendEmail(row);$event.stopPropagation();\">\r\n <i-feather name=\"mail\"></i-feather>\r\n </a>\r\n <a *ngIf=\"iShowMakeCopyAction && iCanWrite\" title=\"Create copy of this product\" class=\"a-btn\"\r\n style=\"margin-right: 10px;\"\r\n (click)=\"oOnCopyClicked.emit(row);$event.stopPropagation();\">\r\n <i-feather name=\"copy\"></i-feather>\r\n </a>\r\n <button *ngIf=\"showCustomAction(row)\" type=\"button\" class=\"btn btn-outline-dark button\"\r\n style=\"padding-top: 3px;padding-bottom: 3px;\"\r\n (click)=\"executeCustomAction(row)\">{{iCustomActionLabel}}</button>\r\n <!-- <a class=\"a-btn\" [routerLink]=\"\">\r\n <i-feather name=\"list\"></i-feather>\r\n </a> -->\r\n <!-- </div> -->\r\n\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n <!-- <div class=\"row justify-content-md-between align-items-md-center mt-2\">\r\n <div class=\"col-sm-12 col-md-5\">\r\n <div class=\"dataTables_info mb-2\" id=\"tickets-table_info\" role=\"status\" aria-live=\"polite\">\r\n Showing\r\n {{service.startIndex}} to\r\n {{service.endIndex}} of {{service.totalRecords}}\r\n entries\r\n </div>\r\n </div>\r\n <div class=\"col-sm-12 col-md-5\">\r\n <div class=\"text-md-right float-md-end pagination-rounded\">\r\n <ngb-pagination [collectionSize]=\"(total$ | async)!\" [(page)]=\"service.page\"\r\n [pageSize]=\"service.pageSize\">\r\n </ngb-pagination>\r\n </div>\r\n </div>\r\n </div> -->\r\n\r\n </div>\r\n </div> <!-- end col -->\r\n </div> <!-- end row -->\r\n</div>","// Table data\nexport interface Table {\n id: number;\n firstName: string;\n lastName: string;\n brand: string;\n dms: string;\n salesRep: string;\n phone: string;\n email: string;\n notes: string;\n}\n\n\nexport interface IColumn {\n type?: string,\n title: string,\n field: string,\n sortable?: boolean,\n searchable?: boolean,\n anchorLink?: boolean,\n anchorType?: string,\n anchorParamsField?: string,\n visible?: boolean\n}\n\nexport interface LoadDataFromServer {\n pageSize: number,\n pageNumber: number,\n sortColumn: string,\n sortDirection: sortDirection,\n search: string,\n startDate: any,\n endDate: any,\n stageId?: number\n}\n\nexport enum sortDirection {\n asc = 'asc',\n desc = 'desc'\n}","import { NgModule } from \"@angular/core\";\nimport { DatatableComponent } from \"./datatable.component\";\nimport { FeatherModule } from 'angular-feather';\nimport { allIcons } from 'angular-feather/icons';\nimport { NgbModule } from '@ng-bootstrap/ng-bootstrap';\nimport { RouterModule } from \"@angular/router\";\nimport { dataTableSortableDirective } from \"./datatable-sortable.directive\";\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\nimport { CommonModule } from \"@angular/common\";\nimport { FlatpickrModule } from 'angularx-flatpickr';\nimport { MatIconModule } from '@angular/material/icon';\n\n@NgModule({\n declarations: [\n DatatableComponent,\n dataTableSortableDirective,\n ],\n imports: [\n CommonModule,\n FeatherModule.pick(allIcons),\n RouterModule,\n NgbModule,\n FormsModule,\n MatIconModule,\n ReactiveFormsModule,\n FlatpickrModule.forRoot(),\n ],\n exports: [DatatableComponent]\n })\n export class DatatableModule { }","import { Component, Input, OnInit, SimpleChanges } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { ReplaySubject } from 'rxjs';\r\nimport { filter, takeUntil, map } from 'rxjs/operators';\r\nimport Swal from 'sweetalert2';\r\nimport { NOTES_TYPE } from '../../../core/helpers/constants';\r\nimport { INotes } from '../../../core/models/campaigns.model';\r\nimport { DataFeedService } from '../../api/datafeed.service';\r\nimport { AddNoteModal } from '../../modals/add-note/add-note.component';\r\nimport { AppService } from '../../../store/app.service';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\n\r\n@Component({\r\n selector: 'app-notes',\r\n templateUrl: './notes.component.html',\r\n styleUrls: ['./notes.component.scss']\r\n})\r\nexport class NotesComponent implements OnInit {\r\n private destroyed$: ReplaySubject<boolean> = new ReplaySubject(1);\r\n\r\n //new\r\n pageNumber = 1;\r\n pageSize = 10;\r\n searchString = '';\r\n filterBy = '';\r\n\r\n notesData: Array<INotes>;\r\n tempNotesData: Array<INotes>;\r\n permNotesData: Array<INotes>;\r\n @Input() iParentId: string = undefined!;\r\n @Input() iType: number = undefined!;\r\n @Input() iCanWrite: boolean = false;\r\n @Input() iCanDelete: boolean = false;\r\n @Input() iIsExternal: boolean = true;\r\n @Input() iIsAdmin: boolean = true;\r\n @Input() iHideActionColName: boolean = false;\r\n @Input() isGooglePlatform: boolean = false;\r\n\r\n\r\n constructor(\r\n private appService: AppService,\r\n private router: Router,\r\n private modalService: NgbModal,\r\n private sanitizer: DomSanitizer,\r\n private dataFeedService: DataFeedService\r\n ) {\r\n this.notesData = new Array<INotes>();\r\n this.tempNotesData = new Array<INotes>();\r\n this.permNotesData = new Array<INotes>();\r\n }\r\n\r\n SafeHtml(str: string) {\r\n return this.sanitizer.bypassSecurityTrustHtml(str);\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if ((changes.iParentId || changes.iType) && (this.iParentId && this.iType)) {\r\n // this.pageNumber = 1;\r\n this.appService.fetchAllNotes(this.iParentId, this.iType);\r\n }\r\n }\r\n\r\n ngOnInit(): void {\r\n this.appService.getAllNotes$()\r\n .pipe(\r\n takeUntil(this.destroyed$)\r\n )\r\n .subscribe((response: Array<INotes>) => {\r\n if (this.filterBy === 'internal') {\r\n this.notesData = response.filter(x => x.isInternal === true);\r\n this.permNotesData = response;\r\n this.tempNotesData = this.notesData.slice(0, this.pageSize);\r\n }\r\n else if (this.filterBy === 'external') {\r\n this.notesData = response.filter(x => x.isInternal === false);\r\n this.permNotesData = response;\r\n this.tempNotesData = this.notesData.slice(0, this.pageSize);\r\n } else {\r\n this.notesData = response;\r\n this.permNotesData = response;\r\n this.tempNotesData = this.notesData.slice(0, this.pageSize);\r\n }\r\n });\r\n \r\n }\r\n\r\n refreshNotes() {\r\n this.appService.getAllNotes$()\r\n .pipe(\r\n takeUntil(this.destroyed$)\r\n )\r\n .subscribe((response: Array<INotes>) => {\r\n if (this.filterBy === 'internal') {\r\n this.notesData = response.filter(x => x.isInternal === true);\r\n this.tempNotesData = this.notesData.slice(0, this.pageSize);\r\n }\r\n else if (this.filterBy === 'external') {\r\n this.notesData = response.filter(x => x.isInternal === false);\r\n this.tempNotesData = this.notesData.slice(0, this.pageSize);\r\n } else {\r\n this.notesData = response;\r\n this.tempNotesData = this.notesData.slice(0, this.pageSize);\r\n }\r\n });\r\n }\r\n\r\n isClientNotes() {\r\n return this.iType === NOTES_TYPE.Clients;\r\n }\r\n\r\n onOpenNote(\r\n id?: string) {\r\n const dialogRef = this.modalService.open(AddNoteModal);\r\n dialogRef.componentInstance.iActiveUserExternal = this.iIsExternal;\r\n dialogRef.componentInstance.isIsAdmin = this.iIsAdmin;\r\n if (this.iType == NOTES_TYPE.Campaigns)\r\n dialogRef.componentInstance.iCampaignId = this.iParentId;\r\n else if (this.iType == NOTES_TYPE.Clients)\r\n dialogRef.componentInstance.iClientId = this.iParentId;\r\n else if (this.iType == NOTES_TYPE.Leads)\r\n dialogRef.componentInstance.iLeadId = this.iParentId;\r\n dialogRef.componentInstance.iType = this.iType\r\n\r\n if (id !== null) {\r\n const thisNote = this.notesData.find(x => x.id === id);\r\n dialogRef.componentInstance.iNote = thisNote;\r\n }\r\n const dialogSubmitSubscription = dialogRef.componentInstance.oSaveClicked.subscribe((r: INotes) => {\r\n\r\n this.dataFeedService.saveNote(r)\r\n .pipe(takeUntil(this.destroyed$))\r\n .subscribe((response: any) => {\r\n dialogRef.dismiss();\r\n this.appService.fetchAllNotes(this.iParentId, this.iType);\r\n })\r\n dialogSubmitSubscription.unsubscribe();\r\n })\r\n const dialogDisregard = dialogRef.componentInstance.oDisregardClicked.subscribe(() => { \r\n dialogRef.dismiss();\r\n dialogDisregard.unsubscribe();\r\n });\r\n }\r\n\r\n onDeleteNote(id: string) {\r\n Swal.fire({\r\n title: 'Are you sure?',\r\n text: \"You won't be able to revert this!\",\r\n icon: 'warning',\r\n showCancelButton: true,\r\n confirmButtonColor: '#3085d6',\r\n cancelButtonColor: '#d33',\r\n confirmButtonText: 'Yes, delete it!'\r\n }).then((result) => {\r\n if (result.isConfirmed) {\r\n this.dataFeedService.deleteNote(id)\r\n .pipe(takeUntil(this.destroyed$))\r\n .subscribe((response: any) => {\r\n this.appService.fetchAllNotes(this.iParentId, this.iType);\r\n });\r\n this.pageNumber = 1;\r\n }\r\n })\r\n }\r\n\r\n onClientRowClick(evt: any) {\r\n this.router.navigate(['/pages/client-details', evt.id]);\r\n }\r\n\r\n getAttachmentUrl(id: any, filename: any) {\r\n this.dataFeedService.getNoteFileUrl(id, filename)\r\n .subscribe((response: any) => {\r\n if (response.good) {\r\n this.downloadFile(response.data);\r\n }\r\n });\r\n }\r\n downloadFile(url: any) {\r\n const e = document.createElement('a');\r\n e.href = url;\r\n e.download = url.substr(url.lastIndexOf('/') + 1);\r\n document.body.appendChild(e);\r\n e.click();\r\n document.body.removeChild(e);\r\n }\r\n ngAfterViewInit() {\r\n\r\n }\r\n\r\n //new\r\n onPageChange(pageNumber: number) {\r\n this.pageNumber = pageNumber;\r\n this.tempNotesData = this.notesData.slice((this.pageNumber - 1) * this.pageSize, this.pageNumber * this.pageSize);\r\n }\r\n\r\n doNoteSearch() {\r\n var newSearchedNotesData = new Array<INotes>();\r\n this.permNotesData.forEach((note) => {\r\n if (note.assignedUserName != null) {\r\n if ((note.assignedUserName.toLowerCase().includes(this.searchString.toLowerCase()))) {\r\n newSearchedNotesData.push(note);\r\n return;\r\n }\r\n }\r\n if (note.description != null) {\r\n if ( (note.description.toLowerCase().includes(this.searchString.toLowerCase()))) {\r\n newSearchedNotesData.push(note);\r\n return;\r\n }\r\n }\r\n if (note.title != null) {\r\n if ((note.title.toLowerCase().includes(this.searchString.toLowerCase()))) {\r\n newSearchedNotesData.push(note);\r\n return;\r\n }\r\n }\r\n if (note.campaignName != null) {\r\n if ((note.campaignName.toLowerCase().includes(this.searchString.toLowerCase()))) {\r\n newSearchedNotesData.push(note);\r\n return;\r\n }\r\n }\r\n\r\n });\r\n this.notesData = newSearchedNotesData;\r\n this.tempNotesData = this.notesData.slice(0, this.pageSize);\r\n this.filterBy = '';\r\n }\r\n}","<div style=\"background-color: white !important;\">\r\n <div fxLayout=\"row\" fxLayoutAlign=\"space-between center\" style=\"padding: 8px 16px 16px 16px;\">\r\n <div fxLayout=\"row\" fxLayoutAlign=\"end center\">\r\n <div style=\"display: flex; flex-direction: row; align-items: center; padding: 8px 4px 8px 8px; border: 1px solid grey; border-radius: 16px; min-width: 265px; background-color: white; max-height: 34px !important;\">\r\n <i-feather name=\"search\" style=\"width: 16px; height: 16px; color: grey;\"></i-feather>\r\n <input type=\"text\" placeholder=\"Search\" class=\"form-control form-control-sm ms-2\" [(ngModel)]=\"searchString\"\r\n style=\"border: none !important; background-color: white !important; max-height: 15px; max-width: 220px;\" (keydown.enter)=\"doNoteSearch()\">\r\n </div>\r\n <div *ngIf=\"!iIsExternal\" style=\"min-width: 120px; margin-left: 16px;\" class=\"\">\r\n <select class=\"form-control form-control-sm ms-2\" [(ngModel)]=\"filterBy\" (change)=\"refreshNotes()\"\r\n style=\"border: 1px solid grey; border-radius: 16px; background-color: white; max-height: 34px !important;\">\r\n <option value=\"\">All</option>\r\n <option value=\"internal\">Internal</option>\r\n <option value=\"external\">External</option>\r\n </select>\r\n </div>\r\n </div>\r\n\r\n <div fxLayout=\"row\" fxLayoutAlign=\"end center\">\r\n <div *ngIf=\"iCanWrite || iIsAdmin\" style=\"background-color: white !important;\" class=\"hide-from-small-578\">\r\n <button style=\"float: right; margin-right: 16px;\" class=\"blue-button\" type=\"button\" (click)=\"onOpenNote()\">\r\n ADD NOTE\r\n </button>\r\n </div>\r\n <div class=\"text-md-right float-md-end pagination-rounded\">\r\n <ngb-pagination [maxSize]=\"1\" [rotate]=\"true\" [ellipses]=\"true\"\r\n [collectionSize]=\"notesData.length\" [page]=\"pageNumber\" [boundaryLinks]=\"true\"\r\n (pageChange)=\"onPageChange($event)\" [pageSize]=\"pageSize\">\r\n </ngb-pagination>\r\n </div>\r\n </div>\r\n </div>\r\n <table style=\"margin-top: 0px !important; width: 100% !important;\">\r\n <thead>\r\n <th style=\"width: 5%;\"></th>\r\n <th style=\"width: 5%;\">UPDATED</th>\r\n <th style=\"width: 15%; text-align: center;\">AUTHOR</th>\r\n <th *ngIf=\"isClientNotes()\" style=\"width: 25%;\">CAMPAIGN</th>\r\n <th style=\"width: 100%;\">NOTE</th>\r\n <th *ngIf=\"iCanWrite || iCanDelete || iIsAdmin\"> {{iHideActionColName ? '': 'ACTIONS' }}</th>\r\n </thead>\r\n <tbody>\r\n <tr *ngIf=\"notesData.length==0\">\r\n <td style=\"text-align: center; padding: 32px;\" [attr.colspan]=\"isClientNotes() ? 5 : 4\">\r\n No data found\r\n </td>\r\n </tr>\r\n <tr *ngFor=\"let note of tempNotesData; let i=index\">\r\n <td style=\"vertical-align: top; width: 5%; text-align: center;\">\r\n <span *ngIf=\"note.isInternal == true\"><i-feather title=\"Internal\" name=\"eye-off\"></i-feather></span>\r\n </td>\r\n <td style=\"vertical-align: top; width: 5%; text-align: center;\" class=\"color-anchor\">\r\n <p style=\"font-weight: bold; color: #495057; padding-right: 8px;\" class=\"hide-from-small\">UPDATED: </p>{{note.updatedOn | P_AppDateFormat}}\r\n </td>\r\n <td style=\"vertical-align: top; width: 15%; text-align: center;\" class=\"color-anchor\">\r\n <p style=\"font-weight: bold; color: #495057; padding-right: 8px;\" class=\"hide-from-small\">AUTHOR: </p>{{note.assignedUserName}}\r\n </td>\r\n <td *ngIf=\"isClientNotes()\" class=\"color-anchor\" style=\"vertical-align: top; width: 15%; text-align: start;\">\r\n <p class=\"hide-from-small\" style=\"font-weight: bold; color: #495057; padding-right: 8px;\">CAMPAIGN: </p>\r\n <a *ngIf=\"note.campaignId\" [routerLink]=\"['/pages/campaign-details', note.campaignId]\"\r\n class=\"text-dark\">\r\n {{note.campaignName}} <i-feather name=\"link\" style=\"width: 16px; height: 16px;\">\r\n </i-feather>\r\n </a>\r\n </td>\r\n <td style=\"flex-direction: column;width: 100%; padding-left: 12px;\">\r\n <p class=\"hide-from-small\" style=\"text-decoration: underline; font-weight: bold; color: #495057;\">NOTE: </p>\r\n <label class=\"color-anchor\" style=\"font-weight: bold;font-size: 15px;\"> {{note.title}}</label>\r\n <p style=\"white-space: pre-wrap;word-break:break-word\" class=\"color-anchor\">{{note.description}}\r\n </p>\r\n <!-- <div [innerHTML]=\"SafeHtml(note.description)\">\r\n </div> -->\r\n <div *ngFor=\"let file of note.noteFiles\">\r\n <a (click)=\"getAttachmentUrl(note.id, file.name)\" target=\"_blank\"\r\n style=\"cursor: pointer;color: inherit;\">\r\n {{file.name}}\r\n <i style=\"margin-left: 10px;\" class=\"fas fa-download\"></i>\r\n </a>\r\n </div>\r\n </td>\r\n <td *ngIf=\"iCanWrite || iCanDelete || iIsAdmin\" style=\"white-space: nowrap; vertical-align: top;\">\r\n <a *ngIf=\"iCanWrite || iIsAdmin\" class=\"a-btn\" style=\"margin-right: 10px;\" [routerLink]=\"\"\r\n (click)=\"onOpenNote(note.id);$event.stopPropagation();\">\r\n <i-feather name=\"edit\"></i-feather>\r\n </a>\r\n <a *ngIf=\"iCanDelete || iIsAdmin\" class=\"a-btn\" style=\"margin-right: 10px;\" [routerLink]=\"\"\r\n (click)=\"onDeleteNote(note.id);$event.stopPropagation();\">\r\n <i-feather name=\"x\"></i-feather>\r\n </a>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n</div>\r\n","import { NgModule } from \"@angular/core\";\nimport { FeatherModule } from \"angular-feather\";\nimport { NotesComponent } from \"./notes.component\";\nimport { allIcons } from 'angular-feather/icons';\nimport {RouterModule} from '@angular/router';\nimport { SharedModule } from \"../../shared.module\";\nimport { CommonModule } from '@angular/common';\n\n@NgModule({\n declarations: [\n NotesComponent\n ],\n imports: [\n FeatherModule.pick(allIcons),\n RouterModule,\n SharedModule,\n CommonModule,\n ],\n exports:[NotesComponent],\n providers: []\n})\nexport class NotesModule { }","import { Directive, EventEmitter, Input, Output } from '@angular/core';\nimport { Table } from '../datatable/datatable.model';\n\nexport type SortColumn = keyof Table | '';\nexport type SortDirection = 'asc' | 'desc' | '';\nconst rotate: { [key: string]: SortDirection } = { 'asc': 'desc', 'desc': 'asc', '': 'asc' };\n\nexport interface SortEvent {\n column: SortColumn;\n direction: SortDirection;\n}\n\n@Directive({\n // tslint:disable-next-line: directive-selector\n selector: '[dtSortable]',\n // tslint:disable-next-line: no-host-metadata-property\n host: {\n '[class.asc]': 'direction === \"asc\"',\n '[class.desc]': 'direction === \"desc\"',\n '(click)': 'rotate()'\n }\n})\n\nexport class reportDataTableSortableDirective {\n\n constructor() { }\n\n @Input() sortable: SortColumn = '';\n @Input() direction: SortDirection = '';\n @Output() sort = new EventEmitter<SortEvent>();\n\n rotate() {\n this.direction = rotate[this.direction];\n this.sort.emit({ column: this.sortable, direction: this.direction });\n }\n}\n","import { Component, OnInit, Input, Output, EventEmitter, ViewChildren, QueryList, OnDestroy } from '@angular/core';\nimport { DecimalPipe, CurrencyPipe } from '@angular/common';\nimport { FormBuilder, FormGroup } from '@angular/forms';\nimport * as _ from 'underscore'\nimport Swal from 'sweetalert2';\nimport { reportDataTableSortableDirective, SortEvent } from './report-datatable-sortable.directive';\nimport { P_CampaignStageTitle, P_RolesName_Filter, CleanupCampaignPipe, NumberPipe, PercentPipe, P_AppDateFormat } from '../../shared.pipe';\nimport { ReplaySubject } from 'rxjs';\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\nimport { AppService } from '../../../store/app.service';\nimport { ExportToCsv } from 'export-to-csv';\nimport * as lodash from 'lodash'\nimport { PAGE_NAMES, ROLES } from '../../../core/helpers/constants';\nimport { LoadDataFromServer, sortDirection } from '../datatable/datatable.model';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { UsersService } from '../../../pages/users/users.service';\n\n@Component({\n selector: 'app-report-datatable',\n templateUrl: './report-datatable.component.html',\n styleUrls: ['./report-datatable.component.scss'],\n providers: [CurrencyPipe, DecimalPipe, P_CampaignStageTitle, P_RolesName_Filter, CleanupCampaignPipe, NumberPipe, PercentPipe]\n})\n\n/**\n * Datatable Component\n */\n\nexport class ReportDatatableComponent implements OnInit, OnDestroy {\n\n private destroyed$: ReplaySubject<boolean> = new ReplaySubject(1);\n PAGE_NAMES = PAGE_NAMES;\n @ViewChildren(reportDataTableSortableDirective)\n headers!: QueryList<reportDataTableSortableDirective>;\n\n dtForm: FormGroup;\n collectionSize: number = 0;\n\n activePage = '';\n //activeUser = {} as IUser;\n @Input() isAdmin: boolean = false;\n @Input() iCanRead: boolean = true;\n pageNumber = 1;\n @Input() iActiveUserId: string | undefined = '';\n\n @Input() iHideHeaderActions: boolean = false;\n @Input() iShowExport: boolean = true;\n @Input() iShowHeader: boolean = true;\n @Input() iShowPagination: boolean = true;\n @Input() iShowFooter: boolean = true;\n @Input() iShowExternalAction: boolean = false;\n\n @Input() iShowActions: boolean = false;\n @Input() iShowViewAction: boolean = false;\n\n @Input() iShowSearch: boolean = true;\n \n @Input() set iPageSize(value: number) {\n this.dtForm.patchValue({ pageSize: value || 25 });\n this.formPageSize = value || 25;\n this.prepareData();\n }\n \n // @Input() iPageSize = 25;\n\n @Input() iUserRoles: Array<number> = [];\n @Input() iSortDirection = 'asc';\n @Input() iSortColumn = 'name';\n @Input() iSortColumnProps = {} as any;\n @Input() iIsServerLoading = false;\n @Input() iIsCustomDataExport = false;\n @Input() iIsExportFilter = false;\n @Input() iDateField = '';\n @Input() iReportTitle = '';\n \n @Input() iColumns: Array<any> = [];\n @Input() set iData$(data: Array<any>) {\n this.rawData = data || [];\n this.prepareData();\n }\n @Input() set iTotalCount(totalCount: number) {\n this.totalCount = totalCount;\n this.prepareData();\n }\n @Input() iTotalData: Array<any> = [];\n @Input() iAverageData: Array<any> = [];\n /*\n @Input() set iTotalData$(totalData: Array<any>) {\n this.totalData = totalData || [];\n // this.prepareData();\n }\n @Input() set iAverageData$(averageData: Array<any>) {\n this.averageData = averageData || [];\n // this.prepareData();\n }\n */\n @Input() iRowLinkHandler?: Function = undefined;\n\n @Output() oViewRow = new EventEmitter<any>();\n @Output() oShowExternal = new EventEmitter<any>();\n @Output() oRowClick = new EventEmitter<any>();\n @Output() oLoadDataFromServer = new EventEmitter<any>();\n @Output() oCustomDataExport = new EventEmitter<any>();\n \n rawData: Array<any> = new Array<any>();\n viewData: Array<any> = new Array<any>();\n totalCount: number = 0;\n totalData: Array<any> = new Array<any>();\n averageData: Array<any> = new Array<any>();\n tooltipText: string = '';\n formPageSize: number = 25;\n\n constructor(\n private formBuilder: FormBuilder,\n private appService: AppService,\n private sanitizer: DomSanitizer,\n private uService: UsersService,\n private cleanupCampaignPipe: CleanupCampaignPipe,\n ) {\n\n this.dtForm = this.formBuilder.group({\n pageSize: this.formPageSize,\n activePage: this.pageNumber,\n searchQuery: '',\n startDate: [null],\n endDate: [null],\n });\n\n this.dtForm.get(\"searchQuery\")\n ?.valueChanges\n .pipe(\n debounceTime(400),\n distinctUntilChanged()\n )\n .subscribe(text => {\n if (!this.iIsServerLoading) {\n this.prepareData();\n }\n });\n\n this.appService.getActivePage$().subscribe(p => {\n this.activePage = p;\n });\n }\n\n get f() { return this.dtForm.controls; }\n ngOnInit(): void {\n this.loadData();\n this.totalData = this.iTotalData;\n this.averageData = this.iAverageData;\n }\n\n onPageSizeChange(evt: any) {\n this.loadData();\n this.prepareData();\n }\n\n onPageChange(pageNumber: number) {\n this.pageNumber = pageNumber;\n this.loadData();\n this.prepareData();\n }\n\n /**\n * Creates an array of data to CSV. It will automatically generate a title row based on object keys.\n *\n * @param rows array of data to be converted to CSV.\n * @param fileName filename to save as.\n * @param columns array of object properties to convert to CSV. If skipped, then all object properties will be used for CSV.\n **/\n exportToCsv() {\n if (this.iIsCustomDataExport === true) {\n if(this.iIsExportFilter == false){\n this.oCustomDataExport.emit();\n }\n else{\n const event: LoadDataFromServer = {\n pageSize: this.f.pageSize.value,\n pageNumber: this.pageNumber,\n sortColumn: this.iSortColumn,\n sortDirection: this.iSortDirection === 'asc' ? sortDirection.asc : sortDirection.desc,\n search: this.f?.searchQuery?.value,\n startDate: this.f?.startDate?.value,\n endDate: this.f?.endDate?.value\n }\n this.oCustomDataExport.emit(event);\n }\n return;\n }\n let title = this.appService.getPageTitle$().getValue();\n\n var filtered: Array<any> = [];\n if (this.checkedItemsCount >= 1) {\n /* select checked data */\n for (var i = 0; i < this.viewData.length; i++) {\n if (this.viewData[i].isSelected)\n filtered.push(this.viewData[i]);\n }\n /* end select checked data */\n }\n else {\n /* filter data */\n var query = this.f?.searchQuery?.value;\n if (query != null) {\n if (query === '') {\n filtered = this.rawData\n }\n else {\n filtered = this.search(query, null, null);\n }\n }\n /* end filter data */\n }\n\n /* prepare data, remove null amd undefined values */\n var exportData: Array<any> = [];\n filtered\n .forEach((row: any) => {\n let obj: any = {};\n this.iColumns\n .forEach((col: any) => {\n let value = this.extractFieldValue(row, col.field, col.pipe);\n if (value && value !== null && value !== undefined) {\n obj[col.title] = value;\n }\n else {\n obj[col.title] = '';\n }\n });\n exportData.push(obj);\n });\n /* end prepare data, remove null amd undefined values */\n\n /* export prepared data to csv */\n const options = {\n filename: title,\n fieldSeparator: ',',\n quoteStrings: '\"',\n decimalSeparator: '.',\n showLabels: true,\n showTitle: false,\n title: title,\n useTextFile: false,\n useBom: true,\n useKeysAsHeaders: true,\n };\n const csvExporter = new ExportToCsv(options);\n\n csvExporter.generateCsv(exportData);\n /* end export prepared data to csv */\n }\n\n filterData(array: Array<any>) {\n var query = this.f?.searchQuery?.value;\n var fromDate = this.f?.startDate?.value || null;\n var toDate = this.f?.endDate?.value || null;\n var dataset = array;\n if ((query != null && query !== '') || fromDate != null || toDate !=null) {\n dataset = this.search(query, fromDate, toDate);\n }\n else {\n dataset = this.rawData\n }\n return dataset;\n }\n\n paginate(array: Array<any>, pageSize: number, pageNumber: number) {\n return array.slice((pageNumber - 1) * pageSize, pageNumber * pageSize);\n }\n\n onCbHeadChange(evt: any) {\n for (var i = 0; i < this.viewData.length; i++) {\n this.viewData[i].isSelected = evt.target.checked;\n }\n }\n\n viewRow(evt: any) {\n this.oViewRow.emit(evt);\n }\n\n showExternal(evt: any) {\n this.oShowExternal.emit(evt);\n }\n\n get checkedItemsCount() { return this.getCheckedItemsIds().length; }\n\n getCheckedItemsIds() {\n const checkedList = new Array<string>();\n for (var i = 0; i < this.viewData.length; i++) {\n if (this.viewData[i].isSelected)\n checkedList.push(this.viewData[i].id);\n }\n return checkedList;\n }\n\n onSort({ column, direction }: SortEvent, colProps: any) {\n // resetting other headers\n this.headers.forEach(header => {\n if (header.sortable !== column) {\n header.direction = '';\n }\n });\n this.iSortColumn = column;\n this.iSortColumnProps = colProps;\n this.iSortDirection = direction;\n this.loadData();\n this.prepareData();\n }\n\n loadData() {\n if (this.iIsServerLoading) {\n const event: LoadDataFromServer = {\n pageSize: this.f.pageSize.value,\n pageNumber: this.pageNumber,\n sortColumn: this.iSortColumn,\n sortDirection: this.iSortDirection === 'asc' ? sortDirection.asc : sortDirection.desc,\n search: this.f?.searchQuery?.value,\n startDate: this.f?.startDate?.value,\n endDate: this.f?.endDate?.value\n }\n this.oLoadDataFromServer.emit(event);\n }\n }\n\n prepareData() {\n if (this.iIsServerLoading) {\n this.viewData = this.rawData;\n this.collectionSize = this.totalCount;\n } else {\n let viewData = this.rawData || [];\n viewData = this.filterData(viewData);\n viewData = [...this.sort(viewData)];\n this.collectionSize = viewData.length;\n viewData = [...this.paginate(viewData, this.f.pageSize.value, this.pageNumber)];\n this.viewData = viewData;\n }\n }\n\n sort(tables: any[]): any[] {\n if (!tables || tables.length === 0) return tables;\n const sortColumns = this.iSortColumn ? this.iSortColumn.split(',') : [];\n const direction = this.iSortDirection;\n if (direction === '' || sortColumns.length === 0) return tables;\n const pipes: any[] = [];\n const pipeArgs: any[] = [];\n for (let index = 0; index < sortColumns.length; index++) {\n const sortColumn = sortColumns[index];\n const column = this.getColumnByField(sortColumn);\n if (column === undefined) {\n return tables;\n }\n if (column.pipe !== undefined) {\n const pipe = this.appService?.getPipeByName(column.pipe);\n pipes.push(pipe);\n pipeArgs.push(column.pipeArgs || []);\n } else {\n pipes.push(null);\n pipeArgs.push([]);\n }\n }\n return [...tables].sort((a, b) => {\n let valueA: any[] = [];\n let valueB: any[] = [];\n for (var i = 0; i < sortColumns.length; i++) {\n if (pipes[i] !== null) {\n let transformedA = pipes[i].transform(a[sortColumns[i]], ...pipeArgs[i]);\n let transformedB = pipes[i].transform(b[sortColumns[i]], ...pipeArgs[i]);\n if (pipes[i] instanceof NumberPipe || pipes[i] instanceof PercentPipe || pipes[i] instanceof CurrencyPipe) {\n transformedA = parseFloat(transformedA.replace(/[^0-9.-]+/g, \"\"));\n transformedB = parseFloat(transformedB.replace(/[^0-9.-]+/g, \"\"));\n } else if (pipes[i] instanceof P_AppDateFormat) {\n transformedA = new Date(a[sortColumns[i]]);\n transformedB = new Date(b[sortColumns[i]]);\n }\n valueA.push(transformedA);\n valueB.push(transformedB);\n } else {\n valueA.push(a[sortColumns[i]]);\n valueB.push(b[sortColumns[i]]);\n }\n }\n const res = this.compare(valueA, valueB);\n return direction === 'asc' ? res : -res;\n });\n }\n\n compare = (a: any[], b: any[]) => {\n if (a.length !== b.length) return 0;\n for (var i = 0; i < a.length; i++) {\n let valueA = a[i];\n let valueB = b[i];\n if (this.isString(valueA)) valueA = valueA.toLowerCase();\n if (this.isString(valueB)) valueB = valueB.toLowerCase();\n if (valueA !== valueB) {\n return valueA < valueB ? -1 : valueA > valueB ? 1 : 0;\n }\n }\n return 0;\n }\n\n\n\n search(query: string, fromDate: any, toDate: any) { \n let r = new Array<any>();\n for (var ele of this.rawData) {\n for (let col of this.iColumns.filter(x => (x.searchable && x.searchable === true))) {\n let value = ele[col.field];\n\n if (value == null || value == undefined)\n continue;\n\n if (col.pipe !== undefined) {\n let pipe = this.appService?.getPipeByName(col.pipe);\n value = pipe?.transform(ele[col.field], col.pipeArgs);\n\n if (value == null || value == undefined)\n continue;\n }\n\n if (col.field === 'campaignName') {\n value = this.cleanupCampaignPipe.transform(value);\n }\n\n if (value.toString().toLowerCase().indexOf(query.toLowerCase()) > -1) {\n if(fromDate != null || toDate != null){\n var fdate;\n if(typeof new Date(value).getMonth === 'function'){\n fdate = new Date(value);\n }\n else{\n const [month, day, year] = ele[this.iDateField].split('/');\n fdate = new Date(+year, +month - 1, +day);\n }\n \n if(fromDate != null && toDate != null){\n if(fdate >= fromDate && fdate <= toDate){\n r.push(ele);\n break;\n }\n }\n else if(fromDate != null){\n if(fdate >= fromDate){\n r.push(ele);\n break;\n }\n }\n else{\n if(fdate <= toDate){\n r.push(ele);\n break;\n }\n }\n }\n else{\n r.push(ele);\n break;\n }\n }\n }\n }\n return r;\n }\n\n extractFieldValue(row: any, colName: string, pipe: string, pipeArgs: any[] = []): any {\n let value = lodash.get(row, colName);\n if (pipe) {\n if (pipe === 'cleanupCampaign') {\n value = this.cleanupCampaignPipe.transform(value);\n } else {\n let p = this.appService?.getPipeByName(pipe);\n value = p?.transform(value, ...(pipeArgs || []));\n }\n }\n return value;\n }\n\n getAnchorLink(type: string, param: any) {\n switch (type) {\n case 'client':\n return '/pages/client-details/' + param;\n case 'campaign':\n return '/pages/campaign-details/' + param;\n case 'report':\n return '/pages/reports/view-report/' + param;\n case 'subscription':\n return '/pages/subscriptions/' + param;\n case 'order':\n return '/pages/orders/details/' + param;\n default:\n return '';\n }\n }\n\n ngOnDestroy(): void {\n this.destroyed$.next(true);\n this.destroyed$.complete();\n }\n\n doServerSearch(event: any) {\n event.stopPropagation();\n event.preventDefault();\n if (!this.iIsServerLoading) return;\n this.loadData();\n }\n\n SafeHtml(str: string) {\n return this.sanitizer.bypassSecurityTrustHtml(str);\n }\n SafeUrl(str: string) {\n return this.sanitizer.bypassSecurityTrustUrl('data:image/png;base64,' + str);\n }\n\n getColumnByField(fieldName: string) {\n return this.iColumns.find(x => x.field === fieldName);\n }\n\n getRowLink(row: any) {\n if (this.iRowLinkHandler === undefined) return { routerLink: null, queryParams: null };\n const link = this.iRowLinkHandler.call(null, row);\n const linkParts = link.split('?');\n const linkObject: any = { routerLink: linkParts[0], queryParams: {} }\n if (linkParts.length > 1) {\n const queryParams = linkParts[1].split('&');\n for (var i = 0; i < queryParams.length; i++) {\n linkObject.queryParams[queryParams[i].split('=')[0]] = queryParams[i].split('=')[1];\n }\n }\n return linkObject;\n }\n\n isString = (x: any) => Object.prototype.toString.call(x) === \"[object String]\";\n\n showTooltip(event: MouseEvent, text: string) {\n if (text === null) return;\n \n this.tooltipText = text;\n const tooltip = document.getElementById(this.iReportTitle + 'hoverValue');\n const target = event.target as HTMLElement;\n if (tooltip && target) {\n tooltip.style.display = 'block';\n const targetRect = target.getBoundingClientRect();\n const tooltipWidth = tooltip.offsetWidth;\n const tooltipHeight = tooltip.offsetHeight;\n const left = targetRect.left + (targetRect.width / 1) - (tooltipWidth / 1);\n const top = targetRect.top - tooltipHeight - 30;\n\n tooltip.style.left = `${left}px`;\n tooltip.style.top = `${top}px`;\n }\n }\n\n hideTooltip() {\n this.tooltipText = '';\n const tooltip = document.getElementById(this.iReportTitle + 'hoverValue');\n if (tooltip) {\n tooltip.style.display = 'none';\n }\n }\n}","<div class=\"row\">\n <div class=\"col-12\">\n <div class=\"card card-custom\">\n <form [formGroup]=\"dtForm\" *ngIf=\"iShowHeader\">\n <div class=\"card-header\">\n <div class=\"d-flex flex-md-row flex-lg-row flex-sm-row justify-content-between align-items-center\">\n <div class=\"d-flex flex-row align-items-center\">\n <div id=\"tickets-table_filter\" class=\"dataTables_filter text-md-end\">\n <div *ngIf=\"iShowSearch\" class=\"search-container\">\n <i-feather name=\"search\"></i-feather>\n <input id=\"txtSearchQuery\" type=\"text\" formControlName=\"searchQuery\" placeholder=\"Search\" class=\"form-control form-control-sm ms-2\"\n aria-controls=\"tickets-table\" (keydown.enter)=\"doServerSearch($event)\">\n </div>\n <div class=\"d-inline-block hide-from-980\">\n <button *ngIf=\"!iHideHeaderActions && (isAdmin || iShowExport)\" type=\"button\" class=\"blue-button\"\n (click)=\"exportToCsv()\">EXPORT</button>\n </div>\n </div>\n </div>\n <div *ngIf=\"iReportTitle\" class=\"d-flex flex-row align-items-center\">\n <div id=\"tickets-table_filter\" class=\"dataTables_filter text-md-center\">\n <div class=\"d-inline-block\">\n <h3 style=\"margin-bottom: 0;\">{{ iReportTitle | titlecase }}</h3>\n </div>\n </div>\n </div>\n <div class=\"d-flex flex-row align-items-center hide-from-small\" style=\"justify-content: flex-end;\">\n <div class=\"d-flex justify-content-between align-items-center\">\n <select name=\"tickets-table_length\" aria-controls=\"tickets-table\" formControlName=\"pageSize\" (change)=\"onPageSizeChange($event)\" class=\"form-control form-select select-custom\">\n <option [value]=\"10\">10 Per Page</option>\n <option [value]=\"25\">25 Per Page</option>\n <option [value]=\"50\">50 Per Page</option>\n <option [value]=\"100\">100 Per Page</option>\n <option [value]=\"250\">250 Per Page</option>\n <option [value]=\"500\">500 Per Page</option>\n </select>\n <div *ngIf=\"iShowPagination\" class=\"text-md-right float-md-end pagination-rounded\">\n <ngb-pagination [maxSize]=\"1\" [rotate]=\"true\" [ellipses]=\"true\"\n [collectionSize]=\"collectionSize\" [page]=\"pageNumber\" [boundaryLinks]=\"true\"\n (pageChange)=\"onPageChange($event)\" [pageSize]=\"f.pageSize.value\">\n </ngb-pagination>\n </div>\n </div>\n </div>\n </div> \n </div>\n </form>\n <div class=\"card-body\">\n <table cellspacing=\"0\" cellpadding=\"0\" id=\"datatable\" class=\"table dt-responsive wrap w-100\">\n <thead>\n <tr>\n <ng-container *ngFor=\"let col of iColumns; let i=index\">\n <th *ngIf=\"col.visible === undefined || col.visible\" dtSortable\n [attr.sortable]=\"(col.sortable && col.sortable)? col.field : null\"\n [sortable]=\"(col.sortable && col.sortable)? col.field : null\"\n (sort)=\"onSort($event, col)\">\n {{col.title}}\n <ng-container *ngIf=\"col.title === '' && col.field === 'media'\">\n <i class=\"far fa-image fa-2x\"></i>\n </ng-container>\n <ng-container *ngIf=\"col.title === '' && col.field === 'html'\">\n <i class=\"fas fa-code fa-2x\"></i>\n </ng-container>\n </th>\n </ng-container>\n <th *ngIf=\"(iShowActions || iShowViewAction)\">\n Actions\n </th>\n </tr>\n </thead>\n <tbody>\n <tr *ngIf=\"viewData.length==0\">\n <td style=\"text-align: center;\"\n [attr.colspan]=\"(iColumns.length + 1) + ( iShowActions ? 1 :0)\">\n No data found\n </td>\n </tr>\n <tr [style.color]=\"row.isDeleted ? 'red' : null\" [ngClass]=\"row.statusColor ? row.statusColor : ''\" *ngFor=\"let row of viewData; let i=index\">\n <td [ngClass]=\"extractFieldValue(row, col.statusClass,'', []) ? extractFieldValue(row, col.statusClass,'', []) : ''\" *ngFor=\"let col of iColumns; let j=index\" style=\"padding: 0px;height: 30px;\">\n <label class=\"task-label\">{{col.title}}: </label>\n <span *ngIf=\"(col.visible === undefined || col.visible )\"\n (click)=\"oRowClick.emit(row)\" [routerLink]=\"getRowLink(row).routerLink\"\n [queryParams]=\"getRowLink(row).queryParams\" role=\"link\"\n >\n <div *ngIf=\"col.anchorLink && col.anchorLink; else html\">\n <a style=\"color: #2563eb;\" [href]=\"getAnchorLink(col.anchorType, row[col.anchorParamsField])\" [attr.target]=\"col.openInNewTab ? '_blank' : '_self'\">\n {{row[col.field]}}\n </a>\n </div>\n <ng-template #html>\n <div *ngIf=\"col.type === 'html'; else image\"\n [innerHTML]=\"SafeHtml(row[col.field])\">\n </div>\n </ng-template>\n <ng-template #image>\n <div *ngIf=\"col.type === 'image'; else normal\">\n <img [src]=\"SafeUrl(extractFieldValue(row, col.field,col.pipe, col?.pipeArgs))\" \n [style.width]=\"col.width ? col.width : 'auto'\" \n [style.height]=\"col.width ? 'auto' : null\" />\n </div>\n </ng-template>\n <ng-template #normal>\n <ngb-highlight\n (mouseover)=\"col.hoverValue ? showTooltip($event, extractFieldValue(row, col.hoverValue, col.pipe, col?.pipeArgs)) : null\"\n (mouseout)=\"hideTooltip()\"\n [result]=\"extractFieldValue(row, col.field, col.pipe, col?.pipeArgs)\">\n </ngb-highlight>\n </ng-template>\n </span>\n </td>\n <td *ngIf=\"( iShowActions || iShowViewAction )\">\n <div class=\"actions-container\">\n <a *ngIf=\"iShowViewAction && (isAdmin || iCanRead)\" class=\"a-btn\"\n (click)=\"viewRow(row);$event.stopPropagation();\"\n title=\"View\">\n <i-feather name=\"eye\"></i-feather>\n </a>\n <a *ngIf=\"iShowExternalAction && (isAdmin || iCanRead)\" class=\"a-btn\"\n (click)=\"showExternal(row);$event.stopPropagation();\"\n title=\"Opens on new page\">\n <i-feather name=\"external-link\"></i-feather>\n </a>\n </div>\n </td>\n </tr>\n </tbody>\n <tfoot *ngIf=\"totalData.length > 0\">\n <tr>\n <td [ngClass]=\"extractFieldValue(totalData[0], col.statusClass,'', []) ? extractFieldValue(totalData[0], col.statusClass,'', []) : ''\" *ngFor=\"let col of iColumns\">\n <span *ngIf=\"totalData[0][col.field] !== undefined\"\n (mouseover)=\"col.hoverValue ? showTooltip($event, extractFieldValue(totalData[0], col.hoverValue, col.pipe, col?.pipeArgs)) : null\"\n (mouseout)=\"hideTooltip()\">\n {{ extractFieldValue(totalData[0], col.field, col.pipe, col.pipeArgs) }}\n </span>\n <span *ngIf=\"totalData[0][col.field] === undefined\"></span>\n </td>\n <td *ngIf=\"(iShowActions || iShowViewAction)\"></td>\n </tr>\n </tfoot>\n <tfoot *ngIf=\"averageData.length > 0\">\n <tr>\n <td [ngClass]=\"extractFieldValue(averageData[0], col.statusClass,'', []) ? extractFieldValue(averageData[0], col.statusClass,'', []) : ''\" *ngFor=\"let col of iColumns\">\n <span *ngIf=\"averageData[0][col.field] !== undefined\"\n (mouseover)=\"col.hoverValue ? showTooltip($event, extractFieldValue(averageData[0], col.hoverValue, col.pipe, col?.pipeArgs)) : null\"\n (mouseout)=\"hideTooltip()\">\n {{ extractFieldValue(averageData[0], col.field, col.pipe, col.pipeArgs) }}\n </span>\n <span *ngIf=\"averageData[0][col.field] === undefined\"></span>\n </td>\n <td *ngIf=\"(iShowActions || iShowViewAction)\"></td>\n </tr>\n </tfoot>\n </table>\n <div id=\"{{iReportTitle}}hoverValue\" class=\"hoverValue\" [innerHTML]=\"tooltipText\"></div>\n <form [formGroup]=\"dtForm\" *ngIf=\"iShowFooter\">\n <div class=\"d-flex flex-row align-items-center\" style=\"justify-content: flex-end;\">\n <div class=\"d-flex justify-content-between align-items-center\">\n <select name=\"tickets-table_length\" aria-controls=\"tickets-table\" formControlName=\"pageSize\" (change)=\"onPageSizeChange($event)\" class=\"form-control form-select select-custom\">\n <option [value]=\"10\">10 Per Page</option>\n <option [value]=\"25\">25 Per Page</option>\n <option [value]=\"50\">50 Per Page</option>\n <option [value]=\"100\">100 Per Page</option>\n <option [value]=\"250\">250 Per Page</option>\n <option [value]=\"500\">500 Per Page</option>\n </select>\n <div class=\"text-md-right float-md-end pagination-rounded\">\n <ngb-pagination [maxSize]=\"1\" [rotate]=\"true\" [ellipses]=\"true\"\n [collectionSize]=\"collectionSize\" [page]=\"pageNumber\" [boundaryLinks]=\"true\"\n (pageChange)=\"onPageChange($event)\" [pageSize]=\"f.pageSize.value\">\n </ngb-pagination>\n </div>\n </div>\n </div>\n </form>\n </div>\n </div> <!-- end col -->\n </div> <!-- end row -->\n</div>","import { NgModule } from \"@angular/core\";\nimport { ReportDatatableComponent } from \"./report-datatable.component\";\nimport { FeatherModule } from 'angular-feather';\nimport { allIcons } from 'angular-feather/icons';\nimport { NgbModule } from '@ng-bootstrap/ng-bootstrap';\nimport { RouterModule } from \"@angular/router\";\nimport { reportDataTableSortableDirective } from \"./report-datatable-sortable.directive\";\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\nimport { CommonModule } from \"@angular/common\";\nimport { FlatpickrModule } from 'angularx-flatpickr';\nimport { MatIconModule } from '@angular/material/icon';\n\n@NgModule({\n declarations: [\n ReportDatatableComponent,\n reportDataTableSortableDirective,\n ],\n imports: [\n CommonModule,\n FeatherModule.pick(allIcons),\n RouterModule,\n NgbModule,\n FormsModule,\n MatIconModule,\n ReactiveFormsModule,\n FlatpickrModule.forRoot(),\n ],\n exports: [ReportDatatableComponent]\n })\n export class ReportDatatableModule { }","import { Directive, EventEmitter, Input, Output } from '@angular/core';\nimport { Table } from '../datatable/datatable.model';\n\nexport type SortColumn = keyof Table | '';\nexport type SortDirection = 'asc' | 'desc' | '';\nconst rotate: { [key: string]: SortDirection } = { 'asc': 'desc', 'desc': 'asc', '': 'asc' };\n\nexport interface SortEvent {\n column: SortColumn;\n direction: SortDirection;\n}\n\n@Directive({\n // tslint:disable-next-line: directive-selector\n selector: '[dtSortable]',\n // tslint:disable-next-line: no-host-metadata-property\n host: {\n '[class.asc]': 'direction === \"asc\"',\n '[class.desc]': 'direction === \"desc\"',\n '(click)': 'rotate()'\n }\n})\n\nexport class SpecialDataTableSortableDirective {\n\n constructor() { }\n\n @Input() sortable: SortColumn = '';\n @Input() direction: SortDirection = '';\n @Output() sort = new EventEmitter<SortEvent>();\n\n rotate() {\n this.direction = rotate[this.direction];\n this.sort.emit({ column: this.sortable, direction: this.direction });\n }\n}\n","import { Component, OnInit, Input, Output, EventEmitter, ViewChildren, QueryList, OnDestroy } from '@angular/core';\r\nimport { DecimalPipe } from '@angular/common';\r\nimport { FormBuilder, FormGroup } from '@angular/forms';\r\nimport * as _ from 'underscore'\r\nimport Swal from 'sweetalert2';\r\nimport { SpecialDataTableSortableDirective, SortEvent } from './special-datatable-sortable.directive';\r\nimport { P_CampaignStageTitle } from '../../shared.pipe';\r\nimport { ReplaySubject } from 'rxjs';\r\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\r\nimport { AppService } from '../../../store/app.service';\r\nimport { ExportToCsv } from 'export-to-csv';\r\nimport * as lodash from 'lodash'\r\nimport { PAGE_NAMES } from '../../../core/helpers/constants';\r\nimport { LoadDataFromServer, sortDirection } from '../datatable/datatable.model';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\n\r\n@Component({\r\n selector: 'app-special-datatable',\r\n templateUrl: './special-datatable.component.html',\r\n styleUrls: ['./special-datatable.component.scss'],\r\n providers: [DecimalPipe, P_CampaignStageTitle]\r\n})\r\n\r\n/**\r\n * Datatable Component\r\n */\r\n\r\nexport class SpecialDatatableComponent implements OnInit, OnDestroy {\r\n\r\n private destroyed$: ReplaySubject<boolean> = new ReplaySubject(1);\r\n PAGE_NAMES = PAGE_NAMES;\r\n @ViewChildren(SpecialDataTableSortableDirective)\r\n headers!: QueryList<SpecialDataTableSortableDirective>;\r\n\r\n dtForm: FormGroup;\r\n collectionSize: number = 0;\r\n\r\n activePage = '';\r\n //activeUser = {} as IUser;\r\n @Input() isAdmin: boolean = false;\r\n @Input() iCanRead: boolean = false;\r\n @Input() iCanWrite: boolean = false;\r\n @Input() iCanDelete: boolean = false;\r\n @Input() iShowDropdownAdd: boolean = true;\r\n pageNumber = 1;\r\n @Input() iActiveUserId: string | undefined = '';\r\n\r\n @Input() iHideHeaderActions: boolean = false;\r\n @Input() iShowExport: boolean = true;\r\n @Input() iShowHeader: boolean = true;\r\n @Input() iShowSelect: boolean = true;\r\n @Input() iShowMerge: boolean = false;\r\n @Input() iShowExternalAction: boolean = false;\r\n @Input() iShowDropDownDelete: boolean = true;\r\n\r\n @Input() iShowActions: boolean = true;\r\n @Input() iShowViewAction: boolean = false;\r\n @Input() iShowEditAction: boolean = true;\r\n @Input() iShowDeleteAction: boolean = true;\r\n @Input() iShowDeleteActionFn?: Function = undefined;\r\n @Input() iShowSendEmail: boolean = false;\r\n @Input() iShowMakeCopyAction: boolean = false;\r\n @Input() iShowDateRange: boolean = false;\r\n\r\n @Input() iShowSearch: boolean = true;\r\n @Input() iPageSize = 50;\r\n\r\n @Input() iUserRoles: Array<number> = [];\r\n @Input() iSortDirection = 'asc';\r\n @Input() iSortColumn = 'name';\r\n @Input() iSortColumnProps = {} as any;\r\n @Input() iIsServerLoading = false;\r\n @Input() iIsCustomDataExport = false;\r\n @Input() iIsExportFilter = false;\r\n @Input() iDateField = '';\r\n \r\n @Input() iColumns: Array<any> = [];\r\n @Input() set iData$(data: Array<any>) {\r\n this.rawData = data;\r\n this.prepareData();\r\n }\r\n @Input() set iTotalCount(totalCount: number) {\r\n this.totalCount = totalCount;\r\n this.prepareData();\r\n }\r\n @Input() iRowLinkHandler?: Function = undefined;\r\n\r\n @Input() iShowCustomAction?: Function = undefined;\r\n @Input() iCustomActionLabel: string = '';\r\n @Input() iCustomActionHandler?: Function = undefined;\r\n\r\n\r\n\r\n @Output() oEditRow = new EventEmitter<any>();\r\n @Output() oViewRow = new EventEmitter<any>();\r\n @Output() oShowExternal = new EventEmitter<any>();\r\n @Output() oAddNew = new EventEmitter<any>();\r\n @Output() oDeleteRows = new EventEmitter<any>();\r\n @Output() oArchiveRows = new EventEmitter<any>();\r\n @Output() oUnArchiveRows = new EventEmitter<any>();\r\n @Output() oRowClick = new EventEmitter<any>();\r\n @Output() oCBClick = new EventEmitter<any>();\r\n @Output() oMergeRecords = new EventEmitter<any>();\r\n @Output() oLoadDataFromServer = new EventEmitter<any>();\r\n @Output() oSendEmail = new EventEmitter<any>();\r\n @Output() oOnCopyClicked = new EventEmitter<any>();\r\n @Output() oCustomDataExport = new EventEmitter<any>();\r\n \r\n rawData: Array<any> = new Array<any>();\r\n viewData: Array<any> = new Array<any>();\r\n totalCount: number = 0;\r\n constructor(\r\n private formBuilder: FormBuilder,\r\n private appService: AppService,\r\n private sanitizer: DomSanitizer,\r\n ) {\r\n\r\n this.dtForm = this.formBuilder.group({\r\n pageSize: [this.iPageSize],\r\n activePage: this.pageNumber,\r\n searchQuery: '',\r\n startDate: [null],\r\n endDate: [null],\r\n });\r\n\r\n this.dtForm.get(\"searchQuery\")\r\n ?.valueChanges\r\n .pipe(\r\n debounceTime(400),\r\n distinctUntilChanged()\r\n )\r\n .subscribe(text => {\r\n if (!this.iIsServerLoading) {\r\n this.prepareData();\r\n }\r\n });\r\n\r\n this.dtForm.get(\"startDate\")\r\n ?.valueChanges\r\n .pipe(\r\n debounceTime(400),\r\n distinctUntilChanged()\r\n )\r\n .subscribe(text => {\r\n if (!this.iIsServerLoading) {\r\n this.prepareData();\r\n }\r\n else{\r\n this.loadData();\r\n }\r\n });\r\n\r\n this.dtForm.get(\"endDate\")\r\n ?.valueChanges\r\n .pipe(\r\n debounceTime(400),\r\n distinctUntilChanged()\r\n )\r\n .subscribe(text => {\r\n if(this.f?.endDate?.value){\r\n this.f?.endDate?.value.setDate(this.f?.endDate?.value.getDate() + 1);\r\n }\r\n if (!this.iIsServerLoading) {\r\n this.prepareData();\r\n }\r\n else{\r\n this.loadData();\r\n }\r\n });\r\n\r\n this.appService.getActivePage$().subscribe(p => {\r\n this.activePage = p;\r\n });\r\n }\r\n\r\n clearDates(){\r\n this.dtForm.get(\"startDate\")?.setValue(null);\r\n this.dtForm.get(\"endDate\")?.setValue(null);\r\n }\r\n\r\n get f() { return this.dtForm.controls; }\r\n ngOnInit(): void {\r\n this.loadData();\r\n }\r\n\r\n onPageSizeChange(evt: any) {\r\n this.loadData();\r\n this.prepareData();\r\n }\r\n\r\n onPageChange(pageNumber: number) {\r\n this.pageNumber = pageNumber;\r\n this.loadData();\r\n this.prepareData();\r\n }\r\n\r\n /**\r\n * Creates an array of data to CSV. It will automatically generate a title row based on object keys.\r\n *\r\n * @param rows array of data to be converted to CSV.\r\n * @param fileName filename to save as.\r\n * @param columns array of object properties to convert to CSV. If skipped, then all object properties will be used for CSV.\r\n **/\r\n exportToCsv() {\r\n if (this.iIsCustomDataExport === true) {\r\n if(this.iIsExportFilter == false){\r\n this.oCustomDataExport.emit();\r\n }\r\n else{\r\n const event: LoadDataFromServer = {\r\n pageSize: this.f.pageSize.value,\r\n pageNumber: this.pageNumber,\r\n sortColumn: this.iSortColumn,\r\n sortDirection: this.iSortDirection === 'asc' ? sortDirection.asc : sortDirection.desc,\r\n search: this.f?.searchQuery?.value,\r\n startDate: this.f?.startDate?.value,\r\n endDate: this.f?.endDate?.value\r\n }\r\n this.oCustomDataExport.emit(event);\r\n }\r\n return;\r\n }\r\n let title = this.appService.getPageTitle$().getValue();\r\n\r\n var filtered: Array<any> = [];\r\n if (this.checkedItemsCount >= 1) {\r\n /* select checked data */\r\n for (var i = 0; i < this.viewData.length; i++) {\r\n if (this.viewData[i].isSelected)\r\n filtered.push(this.viewData[i]);\r\n }\r\n /* end select checked data */\r\n }\r\n else {\r\n /* filter data */\r\n var query = this.f?.searchQuery?.value;\r\n if (query != null) {\r\n if (query === '') {\r\n filtered = this.rawData\r\n }\r\n else {\r\n filtered = this.search(query, null, null);\r\n }\r\n }\r\n /* end filter data */\r\n }\r\n\r\n /* prepare data, remove null amd undefined values */\r\n var exportData: Array<any> = [];\r\n filtered\r\n .forEach((row: any) => {\r\n let obj: any = {};\r\n this.iColumns\r\n .forEach((col: any) => {\r\n let value = this.extractFieldValue(row, col.field, col.pipe);\r\n if (value && value !== null && value !== undefined) {\r\n obj[col.title] = value;\r\n }\r\n else {\r\n obj[col.title] = '';\r\n }\r\n });\r\n exportData.push(obj);\r\n });\r\n /* end prepare data, remove null amd undefined values */\r\n\r\n /* export prepared data to csv */\r\n const options = {\r\n filename: title,\r\n fieldSeparator: ',',\r\n quoteStrings: '\"',\r\n decimalSeparator: '.',\r\n showLabels: true,\r\n showTitle: false,\r\n title: title,\r\n useTextFile: false,\r\n useBom: true,\r\n useKeysAsHeaders: true,\r\n };\r\n const csvExporter = new ExportToCsv(options);\r\n\r\n csvExporter.generateCsv(exportData);\r\n /* end export prepared data to csv */\r\n }\r\n\r\n filterData(array: Array<any>) {\r\n var query = this.f?.searchQuery?.value;\r\n var fromDate = this.f?.startDate?.value;\r\n var toDate = this.f?.endDate?.value;\r\n var dataset = array;\r\n if ((query != null && query !== '') || fromDate != null || toDate !=null) {\r\n dataset = this.search(query, fromDate, toDate);\r\n }\r\n else {\r\n dataset = this.rawData\r\n }\r\n return dataset;\r\n }\r\n\r\n paginate(array: Array<any>, pageSize: number, pageNumber: number) {\r\n return array.slice((pageNumber - 1) * pageSize, pageNumber * pageSize);\r\n }\r\n\r\n onCbHeadChange(evt: any) {\r\n for (var i = 0; i < this.viewData.length; i++) {\r\n this.viewData[i].isSelected = evt.target.checked;\r\n }\r\n }\r\n\r\n editRow(evt: any) {\r\n this.oEditRow.emit(evt);\r\n }\r\n\r\n onSendEmail(evt: any) {\r\n this.oSendEmail.emit(evt);\r\n }\r\n\r\n viewRow(evt: any) {\r\n this.oViewRow.emit(evt);\r\n }\r\n\r\n showExternal(evt: any) {\r\n this.oShowExternal.emit(evt);\r\n }\r\n\r\n addNew() {\r\n this.oAddNew.emit();\r\n }\r\n\r\n get checkedItemsCount() { return this.getCheckedItemsIds().length; }\r\n mergeRecords() {\r\n const itemsIds = this.getCheckedItemsIds();\r\n\r\n if (itemsIds.length <= 1)\r\n return\r\n\r\n this.oMergeRecords.emit(itemsIds);\r\n }\r\n\r\n deleteRows() {\r\n const itemsIds = this.getCheckedItemsIds();\r\n if (itemsIds.length === 0)\r\n return\r\n\r\n Swal.fire({\r\n title: 'Are you sure?',\r\n text: \"You won't be able to revert this!\",\r\n icon: 'warning',\r\n showCancelButton: true,\r\n confirmButtonColor: '#3085d6',\r\n cancelButtonColor: '#d33',\r\n confirmButtonText: 'Yes, delete it!'\r\n }).then((result) => {\r\n if (result.isConfirmed) {\r\n this.oDeleteRows.emit(itemsIds);\r\n }\r\n })\r\n }\r\n onDeleteRow(evt: any, data: any) {\r\n Swal.fire({\r\n title: 'Are you sure?',\r\n text: \"You won't be able to revert this!\",\r\n icon: 'warning',\r\n showCancelButton: true,\r\n confirmButtonColor: '#3085d6',\r\n cancelButtonColor: '#d33',\r\n confirmButtonText: 'Yes, delete it!'\r\n }).then((result) => {\r\n if (result.isConfirmed) {\r\n this.oDeleteRows.emit([data.id]);\r\n evt.stopPropagation();\r\n }\r\n })\r\n\r\n }\r\n\r\n onArchiveRow(evt: any, data: any){\r\n Swal.fire({\r\n title: 'Are you sure?',\r\n text: \"User will be Archived and not able to use the system!\",\r\n icon: 'warning',\r\n showCancelButton: true,\r\n confirmButtonColor: '#3085d6',\r\n cancelButtonColor: '#d33',\r\n confirmButtonText: 'Yes, archive it!'\r\n }).then((result) => {\r\n if (result.isConfirmed) {\r\n this.oArchiveRows.emit([data.id]);\r\n evt.stopPropagation();\r\n }\r\n })\r\n }\r\n\r\n onUnArchiveRow(evt: any, data: any){\r\n Swal.fire({\r\n title: 'Are you sure?',\r\n text: \"User will be UnArchived and able to use the system again!\",\r\n icon: 'warning',\r\n showCancelButton: true,\r\n confirmButtonColor: '#3085d6',\r\n cancelButtonColor: '#d33',\r\n confirmButtonText: 'Yes, unarchive it!'\r\n }).then((result) => {\r\n if (result.isConfirmed) {\r\n this.oUnArchiveRows.emit([data.id]);\r\n evt.stopPropagation();\r\n }\r\n })\r\n }\r\n\r\n getCheckedItemsIds() {\r\n const checkedList = new Array<string>();\r\n for (var i = 0; i < this.viewData.length; i++) {\r\n if (this.viewData[i].isSelected)\r\n checkedList.push(this.viewData[i].id);\r\n }\r\n return checkedList;\r\n }\r\n\r\n onSort({ column, direction }: SortEvent, colProps: any) {\r\n // resetting other headers\r\n this.headers.forEach(header => {\r\n if (header.sortable !== column) {\r\n header.direction = '';\r\n }\r\n });\r\n this.iSortColumn = column;\r\n this.iSortColumnProps = colProps;\r\n this.iSortDirection = direction;\r\n this.loadData();\r\n this.prepareData();\r\n }\r\n\r\n loadData() {\r\n if (this.iIsServerLoading) {\r\n const event: LoadDataFromServer = {\r\n pageSize: this.f.pageSize.value,\r\n pageNumber: this.pageNumber,\r\n sortColumn: this.iSortColumn,\r\n sortDirection: this.iSortDirection === 'asc' ? sortDirection.asc : sortDirection.desc,\r\n search: this.f?.searchQuery?.value,\r\n startDate: this.f?.startDate?.value,\r\n endDate: this.f?.endDate?.value\r\n }\r\n this.oLoadDataFromServer.emit(event);\r\n }\r\n }\r\n\r\n prepareData() {\r\n if (this.iIsServerLoading) {\r\n this.viewData = this.rawData;\r\n this.collectionSize = this.totalCount;\r\n }\r\n else {\r\n var viewData = this.rawData;\r\n viewData = this.filterData(viewData);\r\n viewData = [...this.sort(viewData)];\r\n this.collectionSize = viewData.length;\r\n viewData = [...this.paginate(viewData, this.f.pageSize.value, this.pageNumber)]\r\n this.viewData = viewData;\r\n }\r\n }\r\n\r\n sort(tables: any[],): any[] {\r\n const sortColumns = this.iSortColumn.split(',');\r\n const direction = this.iSortDirection;\r\n if (direction === '' || sortColumns.length === 0 || tables.length === 0) return tables;\r\n const pipes: any[] = [];\r\n\r\n const pipeArgs: any[] = [];\r\n for (let index = 0; index < sortColumns.length; index++) {\r\n const sortColumn = sortColumns[index];\r\n const column = this.getColumnByField(sortColumn);\r\n if (column === undefined) {\r\n return tables;\r\n }\r\n if (column.pipe !== undefined) {\r\n const pipe = this.appService?.getPipeByName(column.pipe);\r\n pipes.push(pipe);\r\n pipeArgs.push(column.pipeArgs);\r\n }\r\n else {\r\n pipes.push(null);\r\n pipeArgs.push(null);\r\n }\r\n }\r\n return [...tables].sort((a, b) => {\r\n let valueA: string[] = [];\r\n let valueB: any[] = [];\r\n for (var i = 0; i < sortColumns.length; i++) {\r\n if (pipes[i] !== null) {\r\n valueA.push(pipes[i].transform(a[sortColumns[i]], ...pipeArgs[i]));\r\n valueB.push(pipes[i].transform(b[sortColumns[i]], ...pipeArgs[i]));\r\n }\r\n else {\r\n valueA.push(a[sortColumns[i]]);\r\n valueB.push(b[sortColumns[i]]);\r\n }\r\n }\r\n const res = this.compare(valueA, valueB);\r\n return direction === 'asc' ? res : -res;\r\n });\r\n\r\n }\r\n\r\n compare = (a: any[], b: any[]) => {\r\n if (a.length !== b.length) return 0;\r\n for (var i = 0; i < a.length; i++) {\r\n let valueA = a[i];\r\n let valueB = b[i];\r\n if (this.isString(valueA)) valueA = valueA.toLowerCase();\r\n if (this.isString(valueB)) valueB = valueB.toLowerCase();\r\n if (valueA !== valueB) {\r\n return valueA < valueB ? -1 : valueA > valueB ? 1 : 0;\r\n }\r\n }\r\n return 0;\r\n }\r\n\r\n\r\n\r\n search(query: string, fromDate: any, toDate: any) {\r\n \r\n let r = new Array<any>();\r\n for (var ele of this.rawData) {\r\n for (let col of this.iColumns.filter(x => (x.searchable && x.searchable === true))) {\r\n let value = ele[col.field];\r\n\r\n if (value == null || value == undefined)\r\n continue;\r\n\r\n if (col.pipe !== undefined) {\r\n let pipe = this.appService?.getPipeByName(col.pipe);\r\n value = pipe?.transform(ele[col.field], col.pipeArgs);\r\n\r\n if (value == null || value == undefined)\r\n continue;\r\n }\r\n\r\n if (value.toString().toLowerCase().indexOf(query.toLowerCase()) > -1) {\r\n if(fromDate != null || toDate != null){\r\n var fdate;\r\n if(typeof new Date(value).getMonth === 'function'){\r\n fdate = new Date(value);\r\n }\r\n else{\r\n const [month, day, year] = ele[this.iDateField].split('/');\r\n fdate = new Date(+year, +month - 1, +day);\r\n }\r\n \r\n if(fromDate != null && toDate != null){\r\n if(fdate >= fromDate && fdate <= toDate){\r\n r.push(ele);\r\n break;\r\n }\r\n }\r\n else if(fromDate != null){\r\n if(fdate >= fromDate){\r\n r.push(ele);\r\n break;\r\n }\r\n }\r\n else{\r\n if(fdate <= toDate){\r\n r.push(ele);\r\n break;\r\n }\r\n }\r\n }\r\n else{\r\n r.push(ele);\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n return r;\r\n }\r\n\r\n extractFieldValue(row: any, colName: string, pipe: string, pipeArgs: any[] = []) {\r\n let value = lodash.get(row, colName);\r\n if (pipe) {\r\n //TODO:// use injector or something else to properly handle dynamic pipes\r\n let p = this.appService?.getPipeByName(pipe);\r\n value = p?.transform(value, ...pipeArgs);\r\n }\r\n return value;\r\n }\r\n\r\n getAnchorLink(type: string, param: any) {\r\n switch (type) {\r\n case 'client':\r\n return '/pages/client-details/' + param;\r\n case 'campaign':\r\n return '/pages/campaign-details/' + param;\r\n case 'subscription':\r\n return '/pages/subscriptions/' + param;\r\n default:\r\n return '';\r\n\r\n }\r\n }\r\n\r\n onCbChange(evt: any, data: any) {\r\n this.oCBClick.emit({ evt, data })\r\n }\r\n ngOnDestroy(): void {\r\n this.destroyed$.next(true);\r\n this.destroyed$.complete();\r\n }\r\n\r\n doServerSearch(event: any) {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n if (!this.iIsServerLoading) return;\r\n this.loadData();\r\n }\r\n\r\n SafeHtml(str: string) {\r\n return this.sanitizer.bypassSecurityTrustHtml(str);\r\n }\r\n SafeUrl(str: string) {\r\n return this.sanitizer.bypassSecurityTrustUrl('data:image/png;base64,' + str);\r\n }\r\n\r\n showCustomAction(row: any) {\r\n if (this.iShowCustomAction === undefined) return false;\r\n return this.iShowCustomAction.call(null, row);\r\n }\r\n\r\n showDeleteAction(row: any) {\r\n if (this.iShowDeleteActionFn === undefined) return true;\r\n return this.iShowDeleteActionFn.call(null, row);\r\n }\r\n\r\n executeCustomAction(row: any) {\r\n if (this.iCustomActionHandler === undefined) return;\r\n this.iCustomActionHandler.call(null, row);\r\n }\r\n\r\n getColumnByField(fieldName: string) {\r\n return this.iColumns.find(x => x.field === fieldName);\r\n }\r\n\r\n getRowLink(row: any) {\r\n if (this.iRowLinkHandler === undefined) return { routerLink: null, queryParams: null };\r\n const link = this.iRowLinkHandler.call(null, row);\r\n const linkParts = link.split('?');\r\n const linkObject: any = { routerLink: linkParts[0], queryParams: {} }\r\n if (linkParts.length > 1) {\r\n const queryParams = linkParts[1].split('&');\r\n for (var i = 0; i < queryParams.length; i++) {\r\n linkObject.queryParams[queryParams[i].split('=')[0]] = queryParams[i].split('=')[1];\r\n }\r\n }\r\n return linkObject;\r\n }\r\n\r\n isString = (x: any) => Object.prototype.toString.call(x) === \"[object String]\";\r\n}","<div class=\"row\">\n <div class=\"col-12\">\n <div class=\"card card-custom\">\n <form [formGroup]=\"dtForm\" *ngIf=\"iShowHeader\">\n <div class=\"card-header\">\n <div class=\"d-flex flex-md-row flex-lg-row flex-sm-row justify-content-between align-items-center\">\n <div class=\"flex-row\">\n <div\n *ngIf=\"(iShowActions && !iHideHeaderActions) && (isAdmin || iCanDelete || iShowExport) && activePage !== PAGE_NAMES.Users\">\n <div *ngIf=\"isAdmin || iCanDelete || iShowMerge\" ngbDropdown\n class=\"d-inline-block dropdown-custom\">\n <button style=\"margin-right: 20px;\" class=\"btn btn-dd\" id=\"dropdownBasic1\"\n ngbDropdownToggle>Actions</button>\n <div ngbDropdownMenu aria-labelledby=\"dropdownBasic1\">\n <button *ngIf=\"(isAdmin || iCanDelete) && iShowDropDownDelete\"\n (click)=\"deleteRows()\" ngbDropdownItem>Delete</button>\n\n <button *ngIf=\"iShowMerge && checkedItemsCount >= 2\" type=\"button\"\n ngbDropdownItem (click)=\"mergeRecords()\"\n title=\"Please select two or more records to merge!\">Merge\n </button>\n </div>\n </div>\n <div class=\"d-inline-block\">\n <div *ngIf=\"iShowSearch\" id=\"tickets-table_filter\" class=\"dataTables_filter text-md-end\">\n <input id=\"txtSearchQuery\" type=\"text\" formControlName=\"searchQuery\" placeholder=\"Search\"\n class=\"form-control form-control-sm ms-2\" aria-controls=\"tickets-table\" style=\"border-radius: 16px;\"\n (keydown.enter)=\"doServerSearch($event)\">\n </div>\n </div>\n </div>\n </div>\n <div *ngIf=\"iShowDateRange\" class=\"d-flex flex-row align-items-center\">\n <label class=\"d-inline-flex align-items-center\">From: </label> \n <input id=\"dtStartDate\"\n mwlFlatpickr [altInputClass]=\"'datetime'\" [altInput]=\"true\"\n [convertModelValue]=\"true\" formControlName=\"startDate\" class=\"form-control\" />\n \n <label class=\"d-inline-flex align-items-center\">To: </label> \n <input id=\"dtEndDate\"\n mwlFlatpickr [altInputClass]=\"'datetime'\" [altInput]=\"true\"\n [convertModelValue]=\"true\" formControlName=\"endDate\" class=\"form-control\" /><a (click)=\"clearDates()\"><i-feather name=\"x-circle\" style=\"margin: 5px 0px 0px 5px; cursor: pointer;\"></i-feather></a>\n </div>\n <div class=\"d-flex flex-row align-items-center\">\n <div class=\"d-flex justify-content-between align-items-center\">\n <select name=\"tickets-table_length\" aria-controls=\"tickets-table\" formControlName=\"pageSize\" (change)=\"onPageSizeChange($event)\" class=\"form-control form-select select-custom\">\n <option [value]=\"10\">10 Per Page</option>\n <option [value]=\"25\">25 Per Page</option>\n <option [value]=\"50\">50 Per Page</option>\n <option [value]=\"100\">100 Per Page</option>\n <option [value]=\"250\">250 Per Page</option>\n <option [value]=\"500\">500 Per Page</option>\n </select>\n <div class=\"text-md-right float-md-end pagination-rounded\">\n <ngb-pagination [maxSize]=\"1\" [rotate]=\"true\" [ellipses]=\"true\"\n [collectionSize]=\"collectionSize\" [page]=\"pageNumber\" [boundaryLinks]=\"true\"\n (pageChange)=\"onPageChange($event)\" [pageSize]=\"f.pageSize.value\">\n </ngb-pagination>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"card-body\">\n <div style=\"display: flex; flex-direction: row; justify-content: flex-end;\">\n <button *ngIf=\"iShowExport\" type=\"button\" class=\"blue-button\"\n style=\"padding-top: 3px;padding-bottom: 3px;\"\n (click)=\"exportToCsv()\">EXPORT</button>\n </div>\n <table cellspacing=\"0\" cellpadding=\"0\" id=\"datatable\" class=\"table dt-responsive nowrap w-100\">\n <thead>\n <tr>\n <th *ngIf=\"iShowSelect && (isAdmin || iCanDelete || iCanWrite)\">\n <div class=\"form-check\">\n <input (change)=\"onCbHeadChange($event)\" class=\"form-check-input\" type=\"checkbox\">\n </div>\n </th>\n <ng-container *ngFor=\"let col of iColumns; let i=index\">\n <th *ngIf=\"col.visible === undefined || col.visible\" dtSortable\n [attr.sortable]=\"(col.sortable && col.sortable)? col.field : null\"\n [sortable]=\"(col.sortable && col.sortable)? col.field : null\"\n (sort)=\"onSort($event, col)\">\n {{col.title}}\n <ng-container *ngIf=\"col.title === '' && col.field === 'media'\">\n <i class=\"far fa-image fa-2x\"></i>\n </ng-container>\n <ng-container *ngIf=\"col.title === '' && col.field === 'html'\">\n <i class=\"fas fa-code fa-2x\"></i>\n </ng-container>\n </th>\n </ng-container>\n <th *ngIf=\"(iShowActions || iShowViewAction) && (iCanWrite || iCanDelete)\">\n Actions\n </th>\n <th *ngIf=\"!((iShowActions || iShowViewAction) && (iCanWrite || iCanDelete))\"></th>\n </tr>\n </thead>\n <tbody>\n <tr *ngIf=\"viewData.length==0\">\n <td style=\"text-align: center;\"\n [attr.colspan]=\"(iColumns.length + 1) + ( iShowActions ? 1 :0)\">\n No data found\n </td>\n </tr>\n <tr [style.color]=\"row.isDeleted ? 'red' : null\" [ngClass]=\"row.statusColor ? row.statusColor : ''\" *ngFor=\"let row of viewData; let i=index\">\n <td *ngIf=\"iShowSelect && (isAdmin || iCanDelete || iCanWrite)\">\n <div class=\"form-check\">\n <input [(ngModel)]=\"row.isSelected\" (change)=\"onCbChange($event,row)\"\n (click)=\"$event.stopPropagation();\" class=\"form-check-input\" type=\"checkbox\">\n </div>\n </td>\n <td *ngFor=\"let col of iColumns; let j=index\" style=\"padding: 0px;height: 30px;\">\n <a *ngIf=\"(col.visible === undefined || col.visible )\"\n style=\"color: inherit ;display: block;padding: 10px;line-height: 30px;\"\n (click)=\"oRowClick.emit(row)\" [routerLink]=\"getRowLink(row).routerLink\"\n [queryParams]=\"getRowLink(row).queryParams\" role=\"link\">\n <div *ngIf=\"col.anchorLink && col.anchorLink; else html\">\n <a [routerLink]=\"getAnchorLink(col.anchorType, row[col.anchorParamsField] )\">\n {{row[col.field]}}\n </a>\n </div>\n <ng-template #html>\n <div *ngIf=\"col.type === 'html'; else image\"\n [innerHTML]=\"SafeHtml(row[col.field])\">\n </div>\n </ng-template>\n <ng-template #image>\n <div *ngIf=\"col.type === 'image'; else normal\">\n <img [src]=\"SafeUrl(extractFieldValue(row, col.field,col.pipe, col?.pipeArgs))\"\n style=\"height: 25px;\" />\n </div>\n </ng-template>\n <ng-template #normal>\n <ngb-highlight\n [result]=\"extractFieldValue(row, col.field, col.pipe, col?.pipeArgs)\">\n </ngb-highlight>\n </ng-template>\n </a>\n </td>\n <td\n *ngIf=\"( iShowActions || iShowViewAction ) && (iCanWrite || iCanDelete || iCanRead || true)\">\n <a *ngIf=\"iShowEditAction && (isAdmin || (iCanWrite && (row.canBeEdit == null || row.canBeEdit == true)) )\" class=\"a-btn\"\n style=\"margin-right: 10px;\" (click)=\"editRow(row);$event.stopPropagation();\">\n <i-feather name=\"edit\"></i-feather>\n </a>\n <a *ngIf=\"iShowViewAction && (isAdmin || iCanRead)\" class=\"a-btn\"\n style=\"margin-right: 10px;\" (click)=\"viewRow(row);$event.stopPropagation();\"\n title=\"View\">\n <i-feather name=\"eye\"></i-feather>\n </a>\n <a *ngIf=\"iShowExternalAction && (isAdmin || iCanRead)\" class=\"a-btn\"\n style=\"margin-right: 10px;\" (click)=\"showExternal(row);$event.stopPropagation();\"\n title=\"Opens on new page\">\n <i-feather name=\"external-link\"></i-feather>\n </a>\n <a *ngIf=\"showDeleteAction(row) && iShowDeleteAction && (isAdmin || iCanDelete) && ( activePage === PAGE_NAMES.Users ? iActiveUserId !== row?.id && row?.archived == true : true)\"\n class=\"a-btn\" style=\"margin-right: 10px;\"\n (click)=\"onDeleteRow($event,row);$event.stopPropagation();\">\n <i-feather name=\"trash\"></i-feather>\n </a>\n <a *ngIf=\"(isAdmin || iCanDelete) && ( activePage === PAGE_NAMES.Users ? iActiveUserId !== row?.id && row?.archived == true : false)\"\n class=\"a-btn\" style=\"margin-right: 10px;\"\n (click)=\"onUnArchiveRow($event,row);$event.stopPropagation();\">\n <mat-icon title=\"UnArchive\">unarchive</mat-icon>\n </a>\n <a *ngIf=\"(isAdmin || iCanDelete) && ( activePage === PAGE_NAMES.Users ? iActiveUserId !== row?.id && row?.archived == false : false)\"\n class=\"a-btn\" style=\"margin-right: 10px;\"\n (click)=\"onArchiveRow($event,row);$event.stopPropagation();\">\n <mat-icon title=\"Archive\">archive</mat-icon>\n </a>\n <a *ngIf=\"iShowSendEmail\" title=\"Email\" class=\"a-btn\" style=\"margin-right: 10px;\"\n (click)=\"onSendEmail(row);$event.stopPropagation();\">\n <i-feather name=\"mail\"></i-feather>\n </a>\n <a *ngIf=\"iShowMakeCopyAction && iCanWrite\" title=\"Create copy of this product\" class=\"a-btn\"\n style=\"margin-right: 10px;\"\n (click)=\"oOnCopyClicked.emit(row);$event.stopPropagation();\">\n <i-feather name=\"copy\"></i-feather>\n </a>\n <button *ngIf=\"showCustomAction(row)\" type=\"button\" class=\"btn btn-outline-dark button\"\n style=\"padding-top: 3px;padding-bottom: 3px;\"\n (click)=\"executeCustomAction(row)\">{{iCustomActionLabel}}</button>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n <div class=\"d-flex flex-row align-items-center\" style=\"justify-content: flex-end !important;\">\n <div class=\"d-flex justify-content-between align-items-center\">\n <select name=\"tickets-table_length\" aria-controls=\"tickets-table\" formControlName=\"pageSize\" (change)=\"onPageSizeChange($event)\" class=\"form-control form-select select-custom\">\n <option [value]=\"10\">10 Per Page</option>\n <option [value]=\"25\">25 Per Page</option>\n <option [value]=\"50\">50 Per Page</option>\n <option [value]=\"100\">100 Per Page</option>\n <option [value]=\"250\">250 Per Page</option>\n <option [value]=\"500\">500 Per Page</option>\n </select>\n <div class=\"text-md-right float-md-end pagination-rounded\">\n <ngb-pagination [maxSize]=\"1\" [rotate]=\"true\" [ellipses]=\"true\"\n [collectionSize]=\"collectionSize\" [page]=\"pageNumber\" [boundaryLinks]=\"true\"\n (pageChange)=\"onPageChange($event)\" [pageSize]=\"f.pageSize.value\">\n </ngb-pagination>\n </div>\n </div>\n </div>\n </form>\n </div> <!-- end col -->\n </div> <!-- end row -->\n</div>","import { NgModule } from \"@angular/core\";\nimport { FeatherModule } from 'angular-feather';\nimport { allIcons } from 'angular-feather/icons';\nimport { NgbModule } from '@ng-bootstrap/ng-bootstrap';\nimport { RouterModule } from \"@angular/router\";\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\nimport { CommonModule } from \"@angular/common\";\nimport { FlatpickrModule } from 'angularx-flatpickr';\nimport { MatIconModule } from '@angular/material/icon';\nimport { SpecialDatatableComponent } from \"./special-datatable.component\";\nimport { SpecialDataTableSortableDirective } from \"./special-datatable-sortable.directive\";\n\n@NgModule({\n declarations: [\n SpecialDatatableComponent,\n SpecialDataTableSortableDirective,\n ],\n imports: [\n CommonModule,\n FeatherModule.pick(allIcons),\n RouterModule,\n NgbModule,\n FormsModule,\n MatIconModule,\n ReactiveFormsModule,\n FlatpickrModule.forRoot(),\n ],\n exports: [SpecialDatatableComponent]\n })\n export class SpecialDatatableModule { }","import { Component, Input, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { takeUntil } from 'rxjs/operators';\nimport { IPermission } from '../../../core/models/auth.models';\nimport { SubscriptionApiService } from '../../../pages/subscriptions/subscription.apiservice';\nimport { AppService } from '../../../store/app.service';\nimport { PAGE_NAMES } from '../../../core/helpers/constants';\nimport { getRolesForPage } from '../../../core/helpers/utility';\nimport { ReplaySubject } from 'rxjs';\n\n@Component({\n selector: 'app-subscription-shared',\n templateUrl: './subscription.component.html',\n styleUrls: ['./subscription.component.scss']\n})\n\nexport class SubscriptionSharedComponent implements OnInit {\n @Input() iCampaignId: string = undefined!;\n @Input() iClientId: any = undefined!;\n doWhat: IPermission = {} as IPermission;\n doWhatSub: IPermission = {} as IPermission;\n columns = [\n { title: 'ID', field: 'numericId', sortable: true, searchable: true },\n { title: 'Start Date', field: 'startDate', sortable: true, searchable: true },\n { title: 'Campaign', field: 'campaignName', sortable: true, searchable: true },\n { title: 'DMS', field: 'dms', sortable: true, searchable: true },\n { title: 'Sales Rep', field: 'salesrep', sortable: true, searchable: true },\n { title: 'Status', field: 'status', sortable: true, searchable: true },\n ]\n\n subscriptions: Array<any>;\n private destroyed$: ReplaySubject<boolean> = new ReplaySubject(1);\n constructor(\n public router: Router,\n private appService: AppService,\n private subscriptionService: SubscriptionApiService,\n ) {\n this.subscriptions = new Array<any>(); \n }\n\n ngOnInit(): void {\n this.loadSubscriptions();\n this.appService.getActiveUser$()\n .pipe(takeUntil(this.destroyed$))\n .subscribe(u => {\n this.doWhatSub = getRolesForPage(u.roles, PAGE_NAMES.Subscriptions);\n });\n }\n\n loadSubscriptions() {\n this.subscriptionService.getAllSubscriptions(this.iCampaignId, this.iClientId)\n .pipe(takeUntil(this.destroyed$))\n .subscribe((response: any) => {\n if (response.subscriptions) {\n this.subscriptions = response.subscriptions.map((x:any) => {\n x.dms = x.campaigns[0].dms;\n x.salesrep = x.campaigns[0].salesRep;\n x.campaignName = x.campaigns[0].campaignName.replace(/ FB| TT/g, '');\n if (x.status === 'Canceled') {\n x.statusColor = 'gray';\n } else if (x.status === 'Payment Error') {\n x.statusColor = 'red';\n }\n return x;\n });\n }\n });\n }\n\n onAddClicked() {\n this.router.navigate(['pages/shop/']);\n }\n\n onClick(event: any) {\n this.router.navigate(['/pages/subscriptions', event.id]);\n }\n\n}","<div style=\"background-color: white !important; padding: 8px 16px 8px 16px;\">\n <div style=\"display: flex; padding-bottom: 16px;\">\n <div style=\"flex: 1;\"></div>\n <button *ngIf=\"doWhatSub.isAdmin || doWhatSub.canCreate\" class=\"blue-button\" type=\"button\" (click)=\"onAddClicked()\">ADD SUBSCRIPTION</button>\n </div>\n <app-special-datatable [iColumns]=\"columns\" (oRowClick)=\"onClick($event)\" [iData$]=\"subscriptions\" [iShowSelect]=\"false\" [iShowExport]=\"false\" iSortDirection=\"desc\" iSortColumn=\"numericId\">\n </app-special-datatable>\n</div>","import { Component, Input, OnInit, SimpleChanges } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\nimport { ReplaySubject } from 'rxjs';\nimport { filter, takeUntil, map } from 'rxjs/operators';\nimport Swal from 'sweetalert2';\nimport { NOTES_TYPE, TAGS_TYPE } from '../../../core/helpers/constants';\nimport { INotes } from '../../../core/models/campaigns.model';\nimport { DataFeedService } from '../../api/datafeed.service';\nimport { AddNoteModal } from '../../modals/add-note/add-note.component';\nimport { AppService } from '../../../store/app.service';\nimport { CampaignsApiService } from '../../../pages/campaigns/campaigns.apiservice';\nimport { ITag } from '../../../core/models/tags.models';\nimport { AssignTagModal } from '../../modals/assign-tag/assign-tag.component';\nimport { TagsApiService } from '../../../pages/tags/tags.apiservice';\n@Component({\n selector: 'app-tags-tab',\n templateUrl: './tags-tab.component.html',\n styleUrls: ['./tags-tab.component.scss']\n})\nexport class TagsTabComponent implements OnInit {\n //new\n pageNumber = 1;\n pageSize = 10;\n\n private destroyed$: ReplaySubject<boolean> = new ReplaySubject(1);\n\n tagsData: Array<ITag>;\n tempTagsData: Array<ITag>;\n @Input() iParentId: string = undefined!;\n @Input() iType: number = undefined!;\n @Input() iCanWrite: boolean = false;\n @Input() iCanDelete: boolean = false;\n\n constructor(\n private appService: AppService,\n private router: Router,\n private tagService: TagsApiService,\n private modalService: NgbModal,\n private campaignService: CampaignsApiService,\n private dataFeedService: DataFeedService\n ) {\n this.tagsData = new Array<ITag>();\n this.tempTagsData = new Array<ITag>();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if ((changes.iParentId || changes.iType) && (this.iParentId && this.iType)) {\n this.appService.fetchAssociatedTags(this.iParentId, this.iType);\n }\n }\n\n ngOnInit(): void {\n this.appService.getAllTags$()\n .pipe(\n takeUntil(this.destroyed$),\n //filter((d: any) => !!d && d.type === this.iType)\n )\n .subscribe((response: Array<ITag>) => {\n this.tagsData = response;\n this.tempTagsData = this.tagsData.slice(0, this.pageSize);\n });\n }\n\n onOpenTag(\n id?: string) {\n const dialogRef = this.modalService.open(AssignTagModal);\n if (this.iType == TAGS_TYPE.Campaigns)\n dialogRef.componentInstance.iCampaignId = this.iParentId;\n else if (this.iType == TAGS_TYPE.Clients)\n dialogRef.componentInstance.iClientId = this.iParentId;\n else if (this.iType == TAGS_TYPE.Products)\n dialogRef.componentInstance.iProductId = this.iParentId;\n dialogRef.componentInstance.iType = this.iType\n dialogRef.componentInstance.iAssignedTags = this.tagsData.map(x => x.tagId)\n\n const dialogSubmitSubscription = dialogRef.componentInstance.oSaveClicked.subscribe((r: any) => {\n\n this.tagService.saveAssociatedTags(r)\n .pipe(takeUntil(this.destroyed$))\n .subscribe((response: any) => {\n dialogRef.dismiss();\n this.appService.fetchAssociatedTags(this.iParentId, this.iType);\n })\n dialogSubmitSubscription.unsubscribe();\n })\n }\n onDeleteTag(id: string) {\n Swal.fire({\n title: 'Are you sure?',\n text: \"You won't be able to revert this!\",\n icon: 'warning',\n showCancelButton: true,\n confirmButtonColor: '#3085d6',\n cancelButtonColor: '#d33',\n confirmButtonText: 'Yes, delete it!'\n }).then((result) => {\n if (result.isConfirmed) {\n\n this.tagService.deleteAssociatedTag(id)\n .pipe(takeUntil(this.destroyed$))\n .subscribe((response: any) => {\n this.appService.fetchAssociatedTags(this.iParentId, this.iType);\n })\n }\n })\n\n\n }\n\n\n onClientRowClick(evt: any) {\n this.router.navigate(['/pages/client-details', evt.id]);\n }\n\n\n ngAfterViewInit() {\n\n }\n\n //new\n onPageChange(pageNumber: number) {\n this.pageNumber = pageNumber;\n this.tempTagsData = this.tagsData.slice((this.pageNumber - 1) * this.pageSize, this.pageNumber * this.pageSize);\n // console.log(this.pageNumber);\n }\n}","<div class=\"row\" style=\"margin-right: 0px !important; margin-left: 0px !important;\">\n <div class=\"col-md-12\" style=\"background-color: white; padding: 8px 16px;\">\n <div fxLayout=\"row\" fxLayoutAlign=\"end center\" style=\"padding-bottom: 16px;\">\n <button class=\"blue-button\" style=\"float: right;\" type=\"button\" (click)=\"onOpenTag()\">\n ADD TAG\n </button>\n <div class=\"text-md-right float-md-end pagination-rounded\">\n <ngb-pagination [maxSize]=\"1\" [rotate]=\"true\" [ellipses]=\"true\"\n [collectionSize]=\"tagsData.length\" [page]=\"pageNumber\" [boundaryLinks]=\"true\"\n (pageChange)=\"onPageChange($event)\" [pageSize]=\"pageSize\">\n </ngb-pagination>\n </div>\n </div>\n <!-- <h1 style=\"letter-spacing: 0.2rem;\n font-family: 'Gotham-Book'; margin: 20px 0px 10px 10px;\">TAGS</h1> -->\n <table class=\"table\">\n <thead style=\"border-bottom: 2px solid #e9e9ef;\">\n <th style=\"width: 15%;\">Name</th>\n <th>Description</th>\n <th>Categories</th>\n <th>Actions</th>\n </thead>\n <tbody>\n <tr *ngIf=\"tagsData.length==0\">\n <td style=\"text-align: center;\" colspan=\"4\">\n No data found\n </td>\n </tr>\n <tr *ngFor=\"let tag of tempTagsData; let i=index\">\n <td class=\"color-anchor\">\n {{tag.name}}\n </td>\n <td>\n {{tag.description}}\n </td>\n <td>\n {{tag.categories}}\n </td>\n <td>\n <a *ngIf=\"iCanWrite\" class=\"a-btn\" style=\"margin-right: 8px;\" [routerLink]=\"\"\n (click)=\"onDeleteTag(tag.id);$event.stopPropagation();\">\n <i-feather name=\"x\"></i-feather>\n </a>\n </td>\n </tr>\n </tbody>\n </table>\n <div fxLayout=\"row\" fxLayoutAlign=\"end center\">\n <div class=\"text-md-right float-md-end pagination-rounded\">\n <ngb-pagination [maxSize]=\"1\" [rotate]=\"true\" [ellipses]=\"true\"\n [collectionSize]=\"tagsData.length\" [page]=\"pageNumber\" [boundaryLinks]=\"true\"\n (pageChange)=\"onPageChange($event)\" [pageSize]=\"pageSize\">\n </ngb-pagination>\n </div>\n </div>\n </div>\n</div>","import { Component, OnInit, Input, Output, EventEmitter, ViewChildren, QueryList, OnDestroy } from '@angular/core';\nimport { takeUntil } from 'rxjs/operators';\nimport { DecimalPipe } from '@angular/common';\nimport * as _ from 'underscore'\nimport { P_CampaignStageTitle } from '../../shared.pipe';\nimport { ReplaySubject } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\nimport { AppService } from '../../../store/app.service';\nimport { PAGE_NAMES, ROLES, ROLES_TYPE } from '../../../core/helpers/constants';\nimport { TasksService } from '../../../pages/tasks/tasks.service';\nimport { ITask } from '../../../core/models/tasks.models';\nimport { IPermission, IUser } from '../../../core/models/auth.models';\nimport { NgbModal, NgbModalRef } from '@ng-bootstrap/ng-bootstrap';\nimport { TasksApiService } from '../../../pages/tasks/tasks.apiservice';\n\n@Component({\n selector: 'app-tasks-dashboard',\n templateUrl: './tasks-dashboard.component.html',\n styleUrls: ['./tasks-dashboard.component.scss'],\n providers: [DecimalPipe, P_CampaignStageTitle]\n})\n\nexport class TasksDashboardComponent implements OnInit, OnDestroy {\n\n doWhat: IPermission = {} as IPermission;\n // activeUser: IUser = {} as IUser;\n ROLES = ROLES;\n\n searchString = '';\n // filterBy = '';\n // dataTotalCount: number = 0;\n myTasks: boolean = true;\n\n tasksData: Array<ITask>;\n thisWeekTasksData: Array<ITask>;\n overdueTasksData: Array<ITask>;\n futureTasksData: Array<ITask>;\n\n private destroyed$: ReplaySubject<boolean> = new ReplaySubject(1);\n \n constructor(\n private appService: AppService,\n private tasksService: TasksService,\n private tasksApi: TasksApiService\n ) {\n this.tasksData = new Array<ITask>();\n this.thisWeekTasksData = new Array<ITask>();\n this.overdueTasksData = new Array<ITask>();\n this.futureTasksData = new Array<ITask>();\n }\n\n ngOnInit(): void {\n /*\n this.appService.getActiveUser$()\n .subscribe(u => {\n this.activeUser = u;\n });\n */\n this.doWhat = this.appService.getUserRolesForPage(PAGE_NAMES.Tasks);\n this.loadTaskData();\n }\n ngOnDestroy(): void {\n this.destroyed$.next(true);\n this.destroyed$.complete();\n }\n\n isTaskDueOnDay(dueDate: string, day: string): boolean {\n const date = new Date(dueDate);\n const dayOfWeek = date.toLocaleDateString('en-US', { weekday: 'long' });\n return dayOfWeek === day;\n }\n\n getTaskCountForDay(day: string): number {\n return this.thisWeekTasksData.filter(task => this.isTaskDueOnDay(task.dueDate, day)).length;\n }\n\n isOverdue(dueDate: string): boolean {\n const today = new Date();\n const taskDueDate = new Date(dueDate);\n\n // Reset time to 00:00:00 for accurate comparison\n today.setHours(0, 0, 0, 0);\n taskDueDate.setHours(0, 0, 0, 0);\n\n return taskDueDate < today;\n }\n\n loadTaskData(): void {\n this.tasksData = [];\n\n this.tasksApi.getAllTasks({ search: this.searchString, showOnlyMyTasks: this.myTasks, completion: 1 })\n .pipe(takeUntil(this.destroyed$))\n .subscribe((response: any) => {\n // console.log('tasks data: ', response);\n this.tasksData = response.data;\n // this.dataTotalCount = response.totalCount;\n this.groupTasksData();\n // console.log('this week: ', this.thisWeekTasksData);\n // console.log('overdue: ', this.overdueTasksData);\n // console.log('future: ', this.futureTasksData);\n });\n }\n\n groupTasksData() {\n const today = new Date();\n const dayOfWeek = today.getDay();\n const monday = new Date(today);\n monday.setDate(today.getDate() - dayOfWeek + (dayOfWeek === 0 ? -6 : 1));\n const friday = new Date(monday);\n friday.setDate(monday.getDate() + 4);\n\n // Reset time to 00:00:00 for accurate comparison\n monday.setHours(0, 0, 0, 0);\n friday.setHours(0, 0, 0, 0);\n today.setHours(0, 0, 0, 0);\n\n this.thisWeekTasksData = [];\n this.overdueTasksData = [];\n this.futureTasksData = [];\n \n this.tasksData.forEach(task => {\n const dueDate = new Date(task.dueDate);\n dueDate.setHours(0, 0, 0, 0); // Reset time to 00:00:00 for accurate comparison\n \n if (dueDate < monday) {\n this.overdueTasksData.push(task);\n } else if (dueDate >= monday && dueDate <= friday) {\n this.thisWeekTasksData.push(task);\n } else if (dueDate > friday) {\n this.futureTasksData.push(task);\n }\n });\n }\n\n onAddTaskClick(action: any) {\n const modalRef: NgbModalRef = this.tasksService.openEditTaskModal({ id: action === 'add' ? null : -1 }, true, true);\n modalRef.componentInstance.oSaveClicked.pipe(\n takeUntil(this.destroyed$),\n debounceTime(500)\n ).subscribe(() => {\n this.loadTaskData();\n });\n }\n\n viewTask(evt: any) {\n const modalRef: NgbModalRef = this.tasksService.openEditTaskModal(evt);\n modalRef.componentInstance.oSaveClicked.pipe(\n takeUntil(this.destroyed$),\n debounceTime(500)\n ).subscribe(() => {\n this.loadTaskData();\n });\n modalRef.componentInstance.oDeleteClicked.pipe(\n takeUntil(this.destroyed$),\n debounceTime(500)\n ).subscribe(() => {\n this.loadTaskData();\n });\n modalRef.componentInstance.oMarkAsCompleteClicked.pipe(\n takeUntil(this.destroyed$),\n debounceTime(500)\n ).subscribe(() => {\n this.loadTaskData();\n });\n }\n\n doSearch(event: any) {\n this.searchString = event.target.value;\n this.loadTaskData();\n }\n\n onMyTasksChange() {\n this.loadTaskData();\n }\n \n}","<div class=\"row\">\n <div class=\"col-12\">\n <div class=\"card card-custom\">\n <div fxLayout=\"row wrap\" fxLayoutAlign=\"space-between center\" style=\"margin-bottom: 1em;\">\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\">\n <div class=\"searchbox\">\n <i-feather name=\"search\"></i-feather>\n <input id=\"txtSearchQuery\" type=\"text\" [placeholder]=\"'Search'\" class=\"form-control form-control-sm ms-2\" aria-controls=\"tickets-table\" \n (keydown.enter)=\"doSearch($event)\">\n </div>\n </div>\n <div fxLayout=\"row\" fxLayoutAlign=\"end center\">\n <button type=\"button\" class=\"blue-button\" style=\"margin-right: 16px;\" (click)=\"onAddTaskClick('add')\">ADD TASK</button>\n <button type=\"button\" class=\"gray-button\" style=\"margin-right: 16px;\">\n <label for=\"myTasksCheckbox\">\n <input type=\"checkbox\" id=\"myTasksCheckbox\" [(ngModel)]=\"myTasks\" (change)=\"onMyTasksChange()\" value=\"My Tasks\">\n Show Only My Tasks\n </label>\n </button>\n </div>\n </div>\n \n <div class=\"row taskrow\">\n <div class=\"col taskcol\">\n <div class=\"taskHeader\">Overdue ({{ overdueTasksData.length }})</div>\n <ul>\n <li *ngFor=\"let task of overdueTasksData\" (click)=\"viewTask(task)\">\n <div class=\"title\">{{ task.title }}</div>\n <div *ngIf=\"task.clientName && task.clientName > ''\" class=\"client\">{{ task.clientName }} <a target=\"_blank\" href=\"/pages/client-details/{{ task.clientId}}\"><i class=\"fas fa-external-link-alt\"></i></a></div>\n <div *ngIf=\"task.campaignName && task.campaignName > ''\" class=\"campaign\">{{ task.campaignName }} <a target=\"_blank\" href=\"/pages/campaign-details/{{ task.campaignId}}\"><i class=\"fas fa-external-link-alt\"></i></a></div>\n <div class=\"small user\" *ngIf=\"!myTasks\">{{ task.assignedUserName }}</div>\n <div class=\"small date\" [ngClass]=\"{'overdue': isOverdue(task.dueDate)}\">{{ task.dueDate | date: 'mediumDate' }}</div>\n </li>\n </ul>\n </div>\n <div class=\"col taskcol\" *ngFor=\"let day of ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']\">\n <div class=\"taskHeader\">{{ day }} ({{ getTaskCountForDay(day) }})</div>\n <ul>\n <li *ngFor=\"let task of thisWeekTasksData\" [ngClass]=\"{'d-none': !isTaskDueOnDay(task.dueDate, day)}\" (click)=\"viewTask(task)\">\n <div class=\"title\">{{ task.title }}</div>\n <div *ngIf=\"task.clientName && task.clientName > ''\" class=\"client\">{{ task.clientName }} <a target=\"_blank\" href=\"/pages/client-details/{{ task.clientId}}\"><i class=\"fas fa-external-link-alt\"></i></a></div>\n <div *ngIf=\"task.campaignName && task.campaignName > ''\" class=\"campaign\">{{ task.campaignName }} <a target=\"_blank\" href=\"/pages/campaign-details/{{ task.campaignId}}\"><i class=\"fas fa-external-link-alt\"></i></a></div>\n <div class=\"small user\" *ngIf=\"!myTasks\">{{ task.assignedUserName }}</div>\n <div class=\"small date\" [ngClass]=\"{'overdue': isOverdue(task.dueDate)}\">{{ task.dueDate | date: 'mediumDate' }}</div>\n </li>\n </ul>\n </div>\n <div class=\"col taskcol\">\n <div class=\"taskHeader\">Future ({{ futureTasksData.length }})</div>\n <ul>\n <li *ngFor=\"let task of futureTasksData\" (click)=\"viewTask(task)\">\n <div class=\"title\">{{ task.title }}</div>\n <div *ngIf=\"task.clientName && task.clientName > ''\" class=\"client\">{{ task.clientName }} <a target=\"_blank\" href=\"/pages/client-details/{{ task.clientId}}\"><i class=\"fas fa-external-link-alt\"></i></a></div>\n <div *ngIf=\"task.campaignName && task.campaignName > ''\" class=\"campaign\">{{ task.campaignName }} <a target=\"_blank\" href=\"/pages/campaign-details/{{ task.campaignId}}\"><i class=\"fas fa-external-link-alt\"></i></a></div>\n <div class=\"small user\" *ngIf=\"!myTasks\">{{ task.assignedUserName }}</div>\n <div class=\"small date\" [ngClass]=\"{'overdue': isOverdue(task.dueDate)}\">{{ task.dueDate | date: 'mediumDate' }}</div>\n </li>\n </ul>\n </div>\n </div>\n </div> <!-- end col -->\n </div> <!-- end row -->\n</div>","import { Directive, EventEmitter, Input, Output } from '@angular/core';\nimport { Table } from '../datatable/datatable.model';\n\nexport type SortColumn = keyof Table | '';\nexport type SortDirection = 'asc' | 'desc' | '';\nconst rotate: { [key: string]: SortDirection } = { 'asc': 'desc', 'desc': 'asc', '': 'asc' };\n\nexport interface SortEvent {\n column: SortColumn;\n direction: SortDirection;\n}\n\n@Directive({\n // tslint:disable-next-line: directive-selector\n selector: '[dtSortable]',\n // tslint:disable-next-line: no-host-metadata-property\n host: {\n '[class.asc]': 'direction === \"asc\"',\n '[class.desc]': 'direction === \"desc\"',\n '(click)': 'rotate()'\n }\n})\n\nexport class tasksDataTableSortableDirective {\n\n constructor() { }\n\n @Input() sortable: SortColumn = '';\n @Input() direction: SortDirection = '';\n @Output() sort = new EventEmitter<SortEvent>();\n\n rotate() {\n this.direction = rotate[this.direction];\n this.sort.emit({ column: this.sortable, direction: this.direction });\n }\n}\n","import { Component, OnInit, Input, Output, EventEmitter, ViewChildren, QueryList, OnDestroy } from '@angular/core';\r\nimport { DecimalPipe } from '@angular/common';\r\nimport { FormBuilder, FormGroup } from '@angular/forms';\r\nimport * as _ from 'underscore'\r\nimport Swal from 'sweetalert2';\r\nimport { tasksDataTableSortableDirective, SortEvent } from './tasks-datatable-sortable.directive';\r\nimport { P_CampaignStageTitle } from '../../shared.pipe';\r\nimport { ReplaySubject } from 'rxjs';\r\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\r\nimport { AppService } from '../../../store/app.service';\r\nimport { ExportToCsv } from 'export-to-csv';\r\nimport * as lodash from 'lodash'\r\nimport { PAGE_NAMES } from '../../../core/helpers/constants';\r\nimport { LoadDataFromServer, sortDirection } from '../datatable/datatable.model';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { TasksService } from '../../../pages/tasks/tasks.service';\r\n\r\n@Component({\r\n selector: 'app-tasks-datatable',\r\n templateUrl: './tasks-datatable.component.html',\r\n styleUrls: ['./tasks-datatable.component.scss'],\r\n providers: [DecimalPipe, P_CampaignStageTitle]\r\n})\r\n\r\n/**\r\n * Datatable Component\r\n */\r\n\r\nexport class TasksDatatableComponent implements OnInit, OnDestroy {\r\n\r\n private destroyed$: ReplaySubject<boolean> = new ReplaySubject(1);\r\n PAGE_NAMES = PAGE_NAMES;\r\n @ViewChildren(tasksDataTableSortableDirective)\r\n headers!: QueryList<tasksDataTableSortableDirective>;\r\n\r\n dtForm: FormGroup;\r\n collectionSize: number = 0;\r\n\r\n activePage = '';\r\n //activeUser = {} as IUser;\r\n @Input() isAdmin: boolean = false;\r\n @Input() iCanRead: boolean = false;\r\n @Input() iCanWrite: boolean = false;\r\n @Input() iCanDelete: boolean = false;\r\n @Input() iShowDropdownAdd: boolean = true;\r\n pageNumber = 1;\r\n @Input() iActiveUserId: string | undefined = '';\r\n\r\n @Input() iHideHeaderActions: boolean = false;\r\n @Input() iShowExport: boolean = true;\r\n @Input() iShowHeader: boolean = true;\r\n @Input() iShowSelect: boolean = true;\r\n @Input() iShowMerge: boolean = false;\r\n @Input() iShowExternalAction: boolean = false;\r\n @Input() iShowDropDownDelete: boolean = true;\r\n\r\n @Input() iShowActions: boolean = true;\r\n @Input() iShowViewAction: boolean = false;\r\n @Input() iShowEditAction: boolean = true;\r\n @Input() iShowDeleteAction: boolean = true;\r\n @Input() iShowDeleteActionFn?: Function = undefined;\r\n @Input() iShowSendEmail: boolean = false;\r\n @Input() iShowMakeCopyAction: boolean = false;\r\n @Input() iShowDateRange: boolean = false;\r\n @Input() iShowRedStyling: boolean = true;\r\n\r\n @Input() iShowSearch: boolean = true;\r\n @Input() iPageSize = 50;\r\n\r\n @Input() iUserRoles: Array<number> = [];\r\n @Input() iSortDirection = 'asc';\r\n @Input() iSortColumn = 'name';\r\n @Input() iSortColumnProps = {} as any;\r\n @Input() iIsServerLoading = false;\r\n @Input() iIsCustomDataExport = false;\r\n @Input() iIsExportFilter = false;\r\n @Input() iDateField = '';\r\n \r\n @Input() iColumns: Array<any> = [];\r\n @Input() set iData$(data: Array<any>) {\r\n this.rawData = data;\r\n this.prepareData();\r\n }\r\n @Input() set iTotalCount(totalCount: number) {\r\n this.totalCount = totalCount;\r\n this.prepareData();\r\n }\r\n @Input() iRowLinkHandler?: Function = undefined;\r\n\r\n @Input() iShowCustomAction?: Function = undefined;\r\n @Input() iCustomActionLabel: string = '';\r\n @Input() iCustomActionHandler?: Function = undefined;\r\n\r\n @Input() isCompleted: boolean = false;\r\n\r\n @Output() oEditRow = new EventEmitter<any>();\r\n @Output() oViewRow = new EventEmitter<any>();\r\n @Output() oShowExternal = new EventEmitter<any>();\r\n @Output() oAddNew = new EventEmitter<any>();\r\n @Output() oDeleteRows = new EventEmitter<any>();\r\n @Output() oArchiveRows = new EventEmitter<any>();\r\n @Output() oUnArchiveRows = new EventEmitter<any>();\r\n @Output() oRowClick = new EventEmitter<any>();\r\n @Output() oCBClick = new EventEmitter<any>();\r\n @Output() oMergeRecords = new EventEmitter<any>();\r\n @Output() oLoadDataFromServer = new EventEmitter<any>();\r\n @Output() oSendEmail = new EventEmitter<any>();\r\n @Output() oOnCopyClicked = new EventEmitter<any>();\r\n @Output() oCustomDataExport = new EventEmitter<any>();\r\n \r\n rawData: Array<any> = new Array<any>();\r\n viewData: Array<any> = new Array<any>();\r\n totalCount: number = 0;\r\n constructor(\r\n private formBuilder: FormBuilder,\r\n private appService: AppService,\r\n private sanitizer: DomSanitizer,\r\n private tasksService: TasksService\r\n ) {\r\n\r\n this.dtForm = this.formBuilder.group({\r\n pageSize: this.iPageSize,\r\n activePage: this.pageNumber,\r\n searchQuery: '',\r\n startDate: [null],\r\n endDate: [null],\r\n });\r\n\r\n this.dtForm.get(\"searchQuery\")\r\n ?.valueChanges\r\n .pipe(\r\n debounceTime(400),\r\n distinctUntilChanged()\r\n )\r\n .subscribe(text => {\r\n if (!this.iIsServerLoading) {\r\n this.prepareData();\r\n }\r\n });\r\n\r\n this.dtForm.get(\"startDate\")\r\n ?.valueChanges\r\n .pipe(\r\n debounceTime(400),\r\n distinctUntilChanged()\r\n )\r\n .subscribe(text => {\r\n if (!this.iIsServerLoading) {\r\n this.prepareData();\r\n }\r\n else{\r\n this.loadData();\r\n }\r\n });\r\n\r\n this.dtForm.get(\"endDate\")\r\n ?.valueChanges\r\n .pipe(\r\n debounceTime(400),\r\n distinctUntilChanged()\r\n )\r\n .subscribe(text => {\r\n if(this.f?.endDate?.value){\r\n this.f?.endDate?.value.setDate(this.f?.endDate?.value.getDate() + 1);\r\n }\r\n if (!this.iIsServerLoading) {\r\n this.prepareData();\r\n }\r\n else{\r\n this.loadData();\r\n }\r\n });\r\n\r\n this.appService.getActivePage$().subscribe(p => {\r\n this.activePage = p;\r\n });\r\n }\r\n\r\n clearDates(){\r\n this.dtForm.get(\"startDate\")?.setValue(null);\r\n this.dtForm.get(\"endDate\")?.setValue(null);\r\n }\r\n\r\n get f() { return this.dtForm.controls; }\r\n ngOnInit(): void {\r\n this.loadData();\r\n }\r\n\r\n onPageSizeChange(evt: any) {\r\n this.loadData();\r\n this.prepareData();\r\n }\r\n\r\n onPageChange(pageNumber: number) {\r\n this.pageNumber = pageNumber;\r\n this.loadData();\r\n this.prepareData();\r\n }\r\n\r\n /**\r\n * Creates an array of data to CSV. It will automatically generate a title row based on object keys.\r\n *\r\n * @param rows array of data to be converted to CSV.\r\n * @param fileName filename to save as.\r\n * @param columns array of object properties to convert to CSV. If skipped, then all object properties will be used for CSV.\r\n **/\r\n exportToCsv() {\r\n if (this.iIsCustomDataExport === true) {\r\n if(this.iIsExportFilter == false){\r\n this.oCustomDataExport.emit();\r\n }\r\n else{\r\n const event: LoadDataFromServer = {\r\n pageSize: this.f.pageSize.value,\r\n pageNumber: this.pageNumber,\r\n sortColumn: this.iSortColumn,\r\n sortDirection: this.iSortDirection === 'asc' ? sortDirection.asc : sortDirection.desc,\r\n search: this.f?.searchQuery?.value,\r\n startDate: this.f?.startDate?.value,\r\n endDate: this.f?.endDate?.value\r\n }\r\n this.oCustomDataExport.emit(event);\r\n }\r\n return;\r\n }\r\n let title = this.appService.getPageTitle$().getValue();\r\n\r\n var filtered: Array<any> = [];\r\n if (this.checkedItemsCount >= 1) {\r\n /* select checked data */\r\n for (var i = 0; i < this.viewData.length; i++) {\r\n if (this.viewData[i].isSelected)\r\n filtered.push(this.viewData[i]);\r\n }\r\n /* end select checked data */\r\n }\r\n else {\r\n /* filter data */\r\n var query = this.f?.searchQuery?.value;\r\n if (query != null) {\r\n if (query === '') {\r\n filtered = this.rawData\r\n }\r\n else {\r\n filtered = this.search(query, null, null);\r\n }\r\n }\r\n /* end filter data */\r\n }\r\n\r\n /* prepare data, remove null amd undefined values */\r\n var exportData: Array<any> = [];\r\n filtered\r\n .forEach((row: any) => {\r\n let obj: any = {};\r\n this.iColumns\r\n .forEach((col: any) => {\r\n let value = this.extractFieldValue(row, col.field, col.pipe);\r\n if (value && value !== null && value !== undefined) {\r\n obj[col.title] = value;\r\n }\r\n else {\r\n obj[col.title] = '';\r\n }\r\n });\r\n exportData.push(obj);\r\n });\r\n /* end prepare data, remove null amd undefined values */\r\n\r\n /* export prepared data to csv */\r\n const options = {\r\n filename: title,\r\n fieldSeparator: ',',\r\n quoteStrings: '\"',\r\n decimalSeparator: '.',\r\n showLabels: true,\r\n showTitle: false,\r\n title: title,\r\n useTextFile: false,\r\n useBom: true,\r\n useKeysAsHeaders: true,\r\n };\r\n const csvExporter = new ExportToCsv(options);\r\n\r\n csvExporter.generateCsv(exportData);\r\n /* end export prepared data to csv */\r\n }\r\n\r\n filterData(array: Array<any>) {\r\n var query = this.f?.searchQuery?.value;\r\n var fromDate = this.f?.startDate?.value;\r\n var toDate = this.f?.endDate?.value;\r\n var dataset = array;\r\n if ((query != null && query !== '') || fromDate != null || toDate !=null) {\r\n dataset = this.search(query, fromDate, toDate);\r\n }\r\n else {\r\n dataset = this.rawData\r\n }\r\n return dataset;\r\n }\r\n\r\n paginate(array: Array<any>, pageSize: number, pageNumber: number) {\r\n return array.slice((pageNumber - 1) * pageSize, pageNumber * pageSize);\r\n }\r\n\r\n onCbHeadChange(evt: any) {\r\n for (var i = 0; i < this.viewData.length; i++) {\r\n this.viewData[i].isSelected = evt.target.checked;\r\n }\r\n }\r\n\r\n editRow(evt: any) {\r\n this.oEditRow.emit(evt);\r\n }\r\n\r\n onSendEmail(evt: any) {\r\n this.oSendEmail.emit(evt);\r\n }\r\n\r\n viewRow(evt: any) {\r\n this.oViewRow.emit(evt);\r\n }\r\n\r\n showExternal(evt: any) {\r\n this.oShowExternal.emit(evt);\r\n }\r\n\r\n addNew() {\r\n this.oAddNew.emit();\r\n }\r\n\r\n get checkedItemsCount() { return this.getCheckedItemsIds().length; }\r\n mergeRecords() {\r\n const itemsIds = this.getCheckedItemsIds();\r\n\r\n if (itemsIds.length <= 1)\r\n return\r\n\r\n this.oMergeRecords.emit(itemsIds);\r\n\r\n // Swal.fire({\r\n // title: 'Are you sure you want to merge these records?',\r\n // text: \"You won't be able to revert this!\",\r\n // icon: 'warning',\r\n // showCancelButton: true,\r\n // confirmButtonColor: '#3085d6',\r\n // cancelButtonColor: '#d33',\r\n // confirmButtonText: 'Yes, merge them!'\r\n // }).then((result) => {\r\n // if (result.isConfirmed) {\r\n // this.oMergeRecords.emit(itemsIds);\r\n // }\r\n // });\r\n }\r\n\r\n deleteRows() {\r\n const itemsIds = this.getCheckedItemsIds();\r\n if (itemsIds.length === 0)\r\n return\r\n\r\n Swal.fire({\r\n title: 'Are you sure?',\r\n text: \"You won't be able to revert this!\",\r\n icon: 'warning',\r\n showCancelButton: true,\r\n confirmButtonColor: '#3085d6',\r\n cancelButtonColor: '#d33',\r\n confirmButtonText: 'Yes, delete it!'\r\n }).then((result) => {\r\n if (result.isConfirmed) {\r\n this.oDeleteRows.emit(itemsIds);\r\n }\r\n })\r\n }\r\n onDeleteRow(evt: any, data: any) {\r\n Swal.fire({\r\n title: 'Are you sure?',\r\n text: \"You won't be able to revert this!\",\r\n icon: 'warning',\r\n showCancelButton: true,\r\n confirmButtonColor: '#3085d6',\r\n cancelButtonColor: '#d33',\r\n confirmButtonText: 'Yes, delete it!'\r\n }).then((result) => {\r\n if (result.isConfirmed) {\r\n this.oDeleteRows.emit([data.id]);\r\n evt.stopPropagation();\r\n }\r\n })\r\n\r\n }\r\n\r\n onArchiveRow(evt: any, data: any){\r\n Swal.fire({\r\n title: 'Are you sure?',\r\n text: \"User will be Archived and not able to use the system!\",\r\n icon: 'warning',\r\n showCancelButton: true,\r\n confirmButtonColor: '#3085d6',\r\n cancelButtonColor: '#d33',\r\n confirmButtonText: 'Yes, archive it!'\r\n }).then((result) => {\r\n if (result.isConfirmed) {\r\n this.oArchiveRows.emit([data.id]);\r\n evt.stopPropagation();\r\n }\r\n })\r\n }\r\n\r\n onUnArchiveRow(evt: any, data: any){\r\n Swal.fire({\r\n title: 'Are you sure?',\r\n text: \"User will be UnArchived and able to use the system again!\",\r\n icon: 'warning',\r\n showCancelButton: true,\r\n confirmButtonColor: '#3085d6',\r\n cancelButtonColor: '#d33',\r\n confirmButtonText: 'Yes, unarchive it!'\r\n }).then((result) => {\r\n if (result.isConfirmed) {\r\n this.oUnArchiveRows.emit([data.id]);\r\n evt.stopPropagation();\r\n }\r\n })\r\n }\r\n\r\n getCheckedItemsIds() {\r\n const checkedList = new Array<string>();\r\n for (var i = 0; i < this.viewData.length; i++) {\r\n if (this.viewData[i].isSelected)\r\n checkedList.push(this.viewData[i].id);\r\n }\r\n return checkedList;\r\n }\r\n\r\n onSort({ column, direction }: SortEvent, colProps: any) {\r\n // resetting other headers\r\n this.headers.forEach(header => {\r\n if (header.sortable !== column) {\r\n header.direction = '';\r\n }\r\n });\r\n this.iSortColumn = column;\r\n this.iSortColumnProps = colProps;\r\n this.iSortDirection = direction;\r\n this.loadData();\r\n this.prepareData();\r\n }\r\n\r\n loadData() {\r\n if (this.iIsServerLoading) {\r\n const event: LoadDataFromServer = {\r\n pageSize: this.f.pageSize.value,\r\n pageNumber: this.pageNumber,\r\n sortColumn: this.iSortColumn,\r\n sortDirection: this.iSortDirection === 'asc' ? sortDirection.asc : sortDirection.desc,\r\n search: this.f?.searchQuery?.value,\r\n startDate: this.f?.startDate?.value,\r\n endDate: this.f?.endDate?.value\r\n }\r\n this.oLoadDataFromServer.emit(event);\r\n }\r\n }\r\n\r\n prepareData() {\r\n if (this.iIsServerLoading) {\r\n this.viewData = this.rawData;\r\n this.collectionSize = this.totalCount;\r\n }\r\n else {\r\n var viewData = this.rawData;\r\n viewData = this.filterData(viewData);\r\n viewData = [...this.sort(viewData)];\r\n this.collectionSize = viewData.length;\r\n viewData = [...this.paginate(viewData, this.f.pageSize.value, this.pageNumber)]\r\n this.viewData = viewData;\r\n }\r\n }\r\n\r\n sort(tables: any[],): any[] {\r\n const sortColumns = this.iSortColumn.split(',');\r\n const direction = this.iSortDirection;\r\n if (direction === '' || sortColumns.length === 0 || tables.length === 0) return tables;\r\n const pipes: any[] = [];\r\n\r\n const pipeArgs: any[] = [];\r\n for (let index = 0; index < sortColumns.length; index++) {\r\n const sortColumn = sortColumns[index];\r\n const column = this.getColumnByField(sortColumn);\r\n if (column === undefined) {\r\n return tables;\r\n }\r\n if (column.pipe !== undefined) {\r\n const pipe = this.appService?.getPipeByName(column.pipe);\r\n pipes.push(pipe);\r\n pipeArgs.push(column.pipeArgs);\r\n }\r\n else {\r\n pipes.push(null);\r\n pipeArgs.push(null);\r\n }\r\n }\r\n return [...tables].sort((a, b) => {\r\n let valueA: string[] = [];\r\n let valueB: any[] = [];\r\n for (var i = 0; i < sortColumns.length; i++) {\r\n if (pipes[i] !== null) {\r\n valueA.push(pipes[i].transform(a[sortColumns[i]], ...pipeArgs[i]));\r\n valueB.push(pipes[i].transform(b[sortColumns[i]], ...pipeArgs[i]));\r\n }\r\n else {\r\n valueA.push(a[sortColumns[i]]);\r\n valueB.push(b[sortColumns[i]]);\r\n }\r\n }\r\n const res = this.compare(valueA, valueB);\r\n return direction === 'asc' ? res : -res;\r\n });\r\n\r\n }\r\n\r\n compare = (a: any[], b: any[]) => {\r\n // if (this.iSortColumn)\r\n if (a.length !== b.length) return 0;\r\n for (var i = 0; i < a.length; i++) {\r\n let valueA = a[i];\r\n let valueB = b[i];\r\n if (this.isString(valueA)) valueA = valueA.toLowerCase();\r\n if (this.isString(valueB)) valueB = valueB.toLowerCase();\r\n if (valueA !== valueB) {\r\n return valueA < valueB ? -1 : valueA > valueB ? 1 : 0;\r\n }\r\n }\r\n return 0;\r\n }\r\n\r\n\r\n\r\n search(query: string, fromDate: any, toDate: any) {\r\n \r\n let r = new Array<any>();\r\n for (var ele of this.rawData) {\r\n for (let col of this.iColumns.filter(x => (x.searchable && x.searchable === true))) {\r\n let value = ele[col.field];\r\n\r\n if (value == null || value == undefined)\r\n continue;\r\n\r\n if (col.pipe !== undefined) {\r\n let pipe = this.appService?.getPipeByName(col.pipe);\r\n value = pipe?.transform(ele[col.field], col.pipeArgs);\r\n\r\n if (value == null || value == undefined)\r\n continue;\r\n }\r\n\r\n if (value.toString().toLowerCase().indexOf(query.toLowerCase()) > -1) {\r\n if(fromDate != null || toDate != null){\r\n var fdate;\r\n if(typeof new Date(value).getMonth === 'function'){\r\n fdate = new Date(value);\r\n }\r\n else{\r\n const [month, day, year] = ele[this.iDateField].split('/');\r\n fdate = new Date(+year, +month - 1, +day);\r\n }\r\n \r\n if(fromDate != null && toDate != null){\r\n if(fdate >= fromDate && fdate <= toDate){\r\n r.push(ele);\r\n break;\r\n }\r\n }\r\n else if(fromDate != null){\r\n if(fdate >= fromDate){\r\n r.push(ele);\r\n break;\r\n }\r\n }\r\n else{\r\n if(fdate <= toDate){\r\n r.push(ele);\r\n break;\r\n }\r\n }\r\n }\r\n else{\r\n r.push(ele);\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n return r;\r\n }\r\n\r\n extractFieldValue(row: any, colName: string, pipe: string, pipeArgs: any[] = []) {\r\n let value = lodash.get(row, colName);\r\n if (pipe) {\r\n //TODO:// use injector or something else to properly handle dynamic pipes\r\n let p = this.appService?.getPipeByName(pipe);\r\n value = p?.transform(value, ...pipeArgs);\r\n }\r\n return value;\r\n }\r\n\r\n getAnchorLink(type: string, param: any) {\r\n switch (type) {\r\n case 'client':\r\n return '/pages/client-details/' + param;\r\n case 'campaign':\r\n return '/pages/campaign-details/' + param;\r\n case 'subscription':\r\n return '/pages/subscriptions/' + param;\r\n default:\r\n return '';\r\n\r\n }\r\n }\r\n\r\n onCbChange(evt: any, data: any) {\r\n this.oCBClick.emit({ evt, data })\r\n }\r\n ngOnDestroy(): void {\r\n this.destroyed$.next(true);\r\n this.destroyed$.complete();\r\n }\r\n\r\n doServerSearch(event: any) {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n if (!this.iIsServerLoading) return;\r\n this.loadData();\r\n }\r\n\r\n SafeHtml(str: string) {\r\n return this.sanitizer.bypassSecurityTrustHtml(str);\r\n }\r\n SafeUrl(str: string) {\r\n return this.sanitizer.bypassSecurityTrustUrl('data:image/png;base64,' + str);\r\n }\r\n\r\n showCustomAction(row: any) {\r\n if (this.iShowCustomAction === undefined) return false;\r\n return this.iShowCustomAction.call(null, row);\r\n }\r\n\r\n showDeleteAction(row: any) {\r\n if (this.iShowDeleteActionFn === undefined) return true;\r\n return this.iShowDeleteActionFn.call(null, row);\r\n }\r\n\r\n executeCustomAction(row: any) {\r\n if (this.iCustomActionHandler === undefined) return;\r\n this.iCustomActionHandler.call(null, row);\r\n }\r\n\r\n getColumnByField(fieldName: string) {\r\n return this.iColumns.find(x => x.field === fieldName);\r\n }\r\n\r\n getRowLink(row: any) {\r\n if (this.iRowLinkHandler === undefined) return { routerLink: null, queryParams: null };\r\n const link = this.iRowLinkHandler.call(null, row);\r\n const linkParts = link.split('?');\r\n const linkObject: any = { routerLink: linkParts[0], queryParams: {} }\r\n if (linkParts.length > 1) {\r\n const queryParams = linkParts[1].split('&');\r\n for (var i = 0; i < queryParams.length; i++) {\r\n linkObject.queryParams[queryParams[i].split('=')[0]] = queryParams[i].split('=')[1];\r\n }\r\n }\r\n return linkObject;\r\n }\r\n\r\n isString = (x: any) => Object.prototype.toString.call(x) === \"[object String]\";\r\n\r\n //new\r\n onAddTaskClick(action: any) {\r\n this.tasksService.openEditTaskModal({ id: action === 'add' ? null : -1 }, true, true);\r\n }\r\n\r\n checkDueDate(date: any) {\r\n if (date.dueDate != null) {\r\n const dueDate = new Date(date.dueDate);\r\n dueDate.setHours(0, 0, 0, 0);\r\n const today = new Date();\r\n today.setHours(0, 0, 0, 0);\r\n if (dueDate >= today) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n}","<div class=\"row\">\n <div class=\"col-12\">\n <div class=\"card card-custom\" style=\"border: none !important; border-radius: 0px !important; padding: 16px; margin-bottom: 16px !important;\">\n <form [formGroup]=\"dtForm\" *ngIf=\"iShowHeader\">\n <div class=\"card-header\">\n <div class=\"d-flex flex-md-row flex-lg-row flex-sm-row justify-content-between align-items-center\">\n <div class=\"flex-row\" style=\"display: flex; align-items: center;\">\n <div *ngIf=\"iShowSearch\" style=\"display: flex; flex-direction: row; align-items: center; padding: 8px 4px 8px 8px; border: 1px solid grey; border-radius: 16px; min-width: 265px; background-color: white; max-height: 34px !important;\">\n <i-feather name=\"search\" style=\"width: 16px; height: 16px; color: grey;\"></i-feather>\n <input id=\"txtSearchQuery\" type=\"text\" formControlName=\"searchQuery\" [placeholder]=\"(isCompleted) ? 'Search Completed' : 'Search TO-DO'\" class=\"form-control form-control-sm ms-2\"\n aria-controls=\"tickets-table\" style=\"border: none !important; background-color: white !important; max-height: 15px; max-width: 220px;\"\n (keydown.enter)=\"doServerSearch($event)\">\n </div>\n <button *ngIf=\"activePage===PAGE_NAMES.Tasks\" type=\"button\" class=\"blue-button\" style=\"margin-left: 20px;\" (click)=\"onAddTaskClick('add')\">ADD TASK</button>\n <div\n *ngIf=\"(iShowActions && !iHideHeaderActions) && (isAdmin || iCanDelete || iShowExport) && activePage !== PAGE_NAMES.Users\">\n <div *ngIf=\"isAdmin || iCanDelete || iShowMerge\" ngbDropdown\n class=\"d-inline-block dropdown-custom\">\n <button style=\"margin-right: 20px;\" class=\"btn btn-dd\" id=\"dropdownBasic1\"\n ngbDropdownToggle>Actions</button>\n <div ngbDropdownMenu aria-labelledby=\"dropdownBasic1\">\n <button *ngIf=\"(isAdmin || iCanDelete) && iShowDropDownDelete\"\n (click)=\"deleteRows()\" ngbDropdownItem>Delete</button>\n\n <button *ngIf=\"iShowMerge && checkedItemsCount >= 2\" type=\"button\"\n ngbDropdownItem (click)=\"mergeRecords()\"\n title=\"Please select two or more records to merge!\">Merge\n </button>\n </div>\n </div>\n <div class=\"d-inline-block\">\n <button *ngIf=\"iShowExport\" type=\"button\" class=\"btn btn-outline-dark button\"\n style=\"padding-top: 3px;padding-bottom: 3px;\"\n (click)=\"exportToCsv()\">Export</button>\n </div>\n </div>\n </div>\n <div *ngIf=\"iShowDateRange\" class=\"d-flex flex-row align-items-center\">\n <label class=\"d-inline-flex align-items-center\">From: </label> \n <input id=\"dtStartDate\"\n mwlFlatpickr [altInputClass]=\"'datetime'\" [altInput]=\"true\"\n [convertModelValue]=\"true\" formControlName=\"startDate\" class=\"form-control\" />\n \n <label class=\"d-inline-flex align-items-center\">To: </label> \n <input id=\"dtEndDate\"\n mwlFlatpickr [altInputClass]=\"'datetime'\" [altInput]=\"true\"\n [convertModelValue]=\"true\" formControlName=\"endDate\" class=\"form-control\" /><a (click)=\"clearDates()\"><i-feather name=\"x-circle\" style=\"margin: 5px 0px 0px 5px; cursor: pointer;\"></i-feather></a>\n </div>\n <div class=\"d-flex justify-content-between align-items-center true-flex hide-from-small\" style=\"justify-content: flex-end !important;\">\n <select style=\"border-radius: 16px; margin-right: 32px; max-width: 200px;\" name=\"tickets-table_length\" aria-controls=\"tickets-table\" name=\"pageSize\"\n formControlName=\"pageSize\" (change)=\"onPageSizeChange($event)\"\n class=\"form-control form-select select-custom\">\n <option [value]=\"10\">10 Per Page</option>\n <option [value]=\"25\">25 Per Page</option>\n <option [value]=\"50\">50 Per Page</option>\n <option [value]=\"100\">100 Per Page</option>\n <option [value]=\"250\">250 Per Page</option>\n <option [value]=\"500\">500 Per Page</option>\n </select>\n <div class=\"text-md-right float-md-end pagination-rounded\">\n <ngb-pagination [maxSize]=\"1\" [rotate]=\"true\" [ellipses]=\"true\"\n [collectionSize]=\"collectionSize\" [page]=\"pageNumber\" [boundaryLinks]=\"true\"\n (pageChange)=\"onPageChange($event)\" [pageSize]=\"f.pageSize.value\">\n </ngb-pagination>\n </div>\n </div>\n </div>\n </div>\n </form>\n <div class=\"card-body\">\n <table cellspacing=\"0\" cellpadding=\"0\" id=\"datatable\" class=\"table dt-responsive nowrap w-100\">\n <thead>\n <tr>\n <th *ngIf=\"iShowSelect && (isAdmin || iCanDelete || iCanWrite)\">\n <div class=\"form-check\">\n <input (change)=\"onCbHeadChange($event)\" class=\"form-check-input\" type=\"checkbox\">\n </div>\n </th>\n <ng-container *ngFor=\"let col of iColumns; let i=index\">\n <th *ngIf=\"col.visible === undefined || col.visible\" dtSortable\n [attr.sortable]=\"(col.sortable && col.sortable)? col.field : null\"\n [sortable]=\"(col.sortable && col.sortable)? col.field : null\"\n (sort)=\"onSort($event, col)\">\n {{col.title}}\n <ng-container *ngIf=\"col.title === '' && col.field === 'media'\">\n <i class=\"far fa-image fa-2x\"></i>\n </ng-container>\n <ng-container *ngIf=\"col.title === '' && col.field === 'html'\">\n <i class=\"fas fa-code fa-2x\"></i>\n </ng-container>\n </th>\n </ng-container>\n <th *ngIf=\"(iShowActions || iShowViewAction) && (iCanWrite || iCanDelete)\">\n Actions\n </th>\n <th *ngIf=\"!((iShowActions || iShowViewAction) && (iCanWrite || iCanDelete))\"></th>\n </tr>\n </thead>\n <tbody>\n <tr *ngIf=\"viewData.length==0\">\n <td style=\"text-align: center;\"\n [attr.colspan]=\"(iColumns.length + 2)\">\n No data found\n </td>\n </tr>\n <tr [style.color]=\"row.isDeleted ? 'red' : null\" *ngFor=\"let row of viewData; let i=index\">\n <td *ngIf=\"iShowSelect && (isAdmin || iCanDelete || iCanWrite)\" class=\"show-check\">\n <div class=\"form-check\">\n <input [(ngModel)]=\"row.isSelected\" (change)=\"onCbChange($event,row)\"\n (click)=\"$event.stopPropagation();\" class=\"form-check-input\" type=\"checkbox\">\n </div>\n </td>\n <td *ngFor=\"let col of iColumns; let j=index\" style=\"padding: 0px;height: 30px;\">\n <p class=\"task-label\" style=\"margin-bottom: 0px !important;\">{{col.title}}: </p>\n <a *ngIf=\"(col.visible === undefined || col.visible )\"\n style=\"color: inherit ;display: block;padding: 10px;line-height: 30px;\"\n [ngStyle]=\"{'color' : (col.field === 'dueDate' && iShowRedStyling) ? ((checkDueDate(row)) ? '#f39437' : 'white') : 'black', 'background-color' : (col.field === 'dueDate' && iShowRedStyling) ? ((checkDueDate(row)) ? '#fdf2be' : 'red') : 'transparent', 'border-radius' : (col.field === 'dueDate') ? '50px' : '0px', 'text-align' : (col.field === 'dueDate') ? 'center' : '', 'padding' : (col.field === 'dueDate') ? '1px' : '10px', 'max-width' : (col.field === 'dueDate') ? '100px' : 'none'}\"\n (click)=\"oRowClick.emit(row)\" [routerLink]=\"getRowLink(row).routerLink\"\n [queryParams]=\"getRowLink(row).queryParams\" role=\"link\">\n <div *ngIf=\"col.anchorLink && col.anchorLink; else html\">\n <a style=\"color: #2563eb;\" [routerLink]=\"getAnchorLink(col.anchorType, row[col.anchorParamsField] )\">\n {{row[col.field]}}\n </a>\n </div>\n <ng-template #html>\n <div *ngIf=\"col.type === 'html'; else image\"\n [innerHTML]=\"SafeHtml(row[col.field])\">\n </div>\n </ng-template>\n <ng-template #image>\n <div *ngIf=\"col.type === 'image'; else normal\">\n <img [src]=\"SafeUrl(extractFieldValue(row, col.field,col.pipe, col?.pipeArgs))\"\n style=\"height: 25px;\" />\n </div>\n </ng-template>\n <ng-template #normal>\n <ngb-highlight\n [result]=\"extractFieldValue(row, col.field, col.pipe, col?.pipeArgs)\">\n </ngb-highlight>\n </ng-template>\n </a>\n </td>\n <td\n *ngIf=\"( iShowActions || iShowViewAction ) && (iCanWrite || iCanDelete || iCanRead || true)\" class=\"hide-from-small\">\n <a *ngIf=\"iShowEditAction && (isAdmin || (iCanWrite && (row.canBeEdit == null || row.canBeEdit == true)) )\" class=\"a-btn\"\n style=\"margin-right: 10px;\" (click)=\"editRow(row);$event.stopPropagation();\">\n <i-feather name=\"edit\"></i-feather>\n </a>\n <a *ngIf=\"iShowViewAction && (isAdmin || iCanRead)\" class=\"a-btn\"\n style=\"margin-right: 10px;\" (click)=\"viewRow(row);$event.stopPropagation();\"\n title=\"View\">\n <i-feather name=\"eye\"></i-feather>\n </a>\n <a *ngIf=\"iShowExternalAction && (isAdmin || iCanRead)\" class=\"a-btn\"\n style=\"margin-right: 10px;\" (click)=\"showExternal(row);$event.stopPropagation();\"\n title=\"Opens on new page\">\n <i-feather name=\"external-link\"></i-feather>\n </a>\n <a *ngIf=\"showDeleteAction(row) && iShowDeleteAction && (isAdmin || iCanDelete) && ( activePage === PAGE_NAMES.Users ? iActiveUserId !== row?.id && row?.archived == true : true)\"\n class=\"a-btn\" style=\"margin-right: 10px;\"\n (click)=\"onDeleteRow($event,row);$event.stopPropagation();\">\n <i-feather name=\"trash\"></i-feather>\n </a>\n <a *ngIf=\"(isAdmin || iCanDelete) && ( activePage === PAGE_NAMES.Users ? iActiveUserId !== row?.id && row?.archived == true : false)\"\n class=\"a-btn\" style=\"margin-right: 10px;\"\n (click)=\"onUnArchiveRow($event,row);$event.stopPropagation();\">\n <mat-icon title=\"UnArchive\">unarchive</mat-icon>\n </a>\n <a *ngIf=\"(isAdmin || iCanDelete) && ( activePage === PAGE_NAMES.Users ? iActiveUserId !== row?.id && row?.archived == false : false)\"\n class=\"a-btn\" style=\"margin-right: 10px;\"\n (click)=\"onArchiveRow($event,row);$event.stopPropagation();\">\n <mat-icon title=\"Archive\">archive</mat-icon>\n </a>\n <a *ngIf=\"iShowSendEmail\" title=\"Email\" class=\"a-btn\" style=\"margin-right: 10px;\"\n (click)=\"onSendEmail(row);$event.stopPropagation();\">\n <i-feather name=\"mail\"></i-feather>\n </a>\n <a *ngIf=\"iShowMakeCopyAction && iCanWrite\" title=\"Create copy of this product\" class=\"a-btn\"\n style=\"margin-right: 10px;\"\n (click)=\"oOnCopyClicked.emit(row);$event.stopPropagation();\">\n <i-feather name=\"copy\"></i-feather>\n </a>\n <button *ngIf=\"showCustomAction(row)\" type=\"button\" class=\"btn btn-outline-dark button\"\n style=\"padding-top: 3px;padding-bottom: 3px;\"\n (click)=\"executeCustomAction(row)\">{{iCustomActionLabel}}</button>\n </td>\n <td *ngIf=\"!(( iShowActions || iShowViewAction ) && (iCanWrite || iCanDelete || iCanRead || true))\" class=\"hide-from-small\"></td>\n </tr>\n </tbody>\n </table>\n <form [formGroup]=\"dtForm\" *ngIf=\"iShowHeader\">\n <div class=\"d-flex justify-content-between align-items-center\" style=\"justify-content: flex-end !important;\">\n <select style=\"border-radius: 16px; margin-right: 32px; max-width: 109px;\" name=\"tickets-table_length\" aria-controls=\"tickets-table\" name=\"pageSize\"\n formControlName=\"pageSize\" (change)=\"onPageSizeChange($event)\"\n class=\"form-control form-select select-custom\">\n <option [value]=\"10\">10 Per Page</option>\n <option [value]=\"25\">25 Per Page</option>\n <option [value]=\"50\">50 Per Page</option>\n <option [value]=\"100\">100 Per Page</option>\n <option [value]=\"250\">250 Per Page</option>\n <option [value]=\"500\">500 Per Page</option>\n </select>\n <div class=\"text-md-right float-md-end pagination-rounded\">\n <ngb-pagination [maxSize]=\"1\" [rotate]=\"true\" [ellipses]=\"true\"\n [collectionSize]=\"collectionSize\" [page]=\"pageNumber\" [boundaryLinks]=\"true\"\n (pageChange)=\"onPageChange($event)\" [pageSize]=\"f.pageSize.value\">\n </ngb-pagination>\n </div>\n </div>\n </form>\n </div>\n </div> <!-- end col -->\n </div> <!-- end row -->\n</div>","import { NgModule } from \"@angular/core\";\nimport { TasksDatatableComponent } from \"./tasks-datatable.component\";\nimport { FeatherModule } from 'angular-feather';\nimport { allIcons } from 'angular-feather/icons';\nimport { NgbModule } from '@ng-bootstrap/ng-bootstrap';\nimport { RouterModule } from \"@angular/router\";\nimport { tasksDataTableSortableDirective } from \"./tasks-datatable-sortable.directive\";\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\nimport { CommonModule } from \"@angular/common\";\nimport { FlatpickrModule } from 'angularx-flatpickr';\nimport { MatIconModule } from '@angular/material/icon';\n\n@NgModule({\n declarations: [\n TasksDatatableComponent,\n tasksDataTableSortableDirective,\n ],\n imports: [\n CommonModule,\n FeatherModule.pick(allIcons),\n RouterModule,\n NgbModule,\n FormsModule,\n MatIconModule,\n ReactiveFormsModule,\n FlatpickrModule.forRoot(),\n ],\n exports: [TasksDatatableComponent]\n })\n export class TasksDatatableModule { }","import { map } from 'rxjs/operators';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\nimport * as _ from 'underscore';\nimport { environment } from '../../../environments/environment';\n@Injectable({\n providedIn: 'root',\n})\nexport class HttpService {\n private host = environment.apiBaseUrl;\n constructor(\n private httpClient: HttpClient,\n public router: Router\n ) { }\n get<T>(endpoint: string, header = {}) {\n let requestBody = null;\n if (!_.isEmpty(header)) {\n requestBody = this.httpClient.get<T>(`${this.host}${endpoint}`, { ...header });\n } else {\n requestBody = this.httpClient.get<T>(`${this.host}${endpoint}`);\n }\n return requestBody;\n }\n\n post<T>(endpoint: string, payload: any, header = {}) {\n return this.httpClient.post<T>(`${this.host}${endpoint}`, payload, {\n headers: header,\n });\n }\n put(endpoint: string, payload: any, header = {}) {\n return this.httpClient.put(`${this.host}${endpoint}`, payload, {\n headers: new HttpHeaders(header),\n });\n }\n delete(endpoint: string, header = {}) {\n return this.httpClient.delete(`${this.host}${endpoint}`, {\n headers: new HttpHeaders(header),\n });\n }\n\n \n async getAsBlob(endpoint: string): Promise<Blob> { \n return await this.httpClient.get(`${this.host}${endpoint}`, {\n responseType: \"blob\",\n }).pipe(map((file: Blob) => {\n return file;\n })).toPromise();\n }\n async getDownload(endpoint: string): Promise<ArrayBuffer> { \n return await this.httpClient.get(`${this.host}${endpoint}`, {\n responseType: \"arraybuffer\",\n }).pipe(map((file: ArrayBuffer) => {\n return file;\n })).toPromise();\n }\n async postDownload(endpoint: string, body: any): Promise<ArrayBuffer> {\n return await this.httpClient.post(`${this.host}${endpoint}`, body, {\n responseType: \"arraybuffer\",\n }).pipe(map((file: ArrayBuffer) => {\n return file;\n })).toPromise();\n }\n async postDownloadWithSearch(endpoint: string, body: any): Promise<ArrayBuffer> {\n return await this.httpClient.post(`${this.host}${endpoint}`, body, {\n responseType: \"arraybuffer\",\n }).pipe(map((file: ArrayBuffer) => {\n return file;\n })).toPromise();\n }\n\n // put<T>(endpoint: string, payload: any, header = {}) {\n // return this.httpClient.put<T>(`${this.host}${endpoint}`, payload, {\n // headers: new HttpHeaders(header),\n // });\n // }\n\n // delete<T>(endpoint: string, header = {}) {\n // return this.httpClient.delete<T>(`${this.host}${endpoint}`, {\n // headers: new HttpHeaders(header),\n // });\n // } \n}\n","import { Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { NgbActiveModal } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { ReplaySubject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { createGuid } from '../../../core/helpers/utility';\r\nimport { INotes } from '../../../core/models/campaigns.model';\r\nimport { ISalesRep } from '../../../core/models/datafeed.models';\r\nimport { ITask } from '../../../core/models/tasks.models';\r\nimport { DataFeedService } from '../../api/datafeed.service';\r\nimport { TasksApiService } from '../../../pages/tasks/tasks.apiservice';\r\nimport { ROLES_TYPE } from '../../../core/helpers/constants';\r\nimport { Utility } from '../../utility';\r\n\r\n@Component({\r\n selector: 'modal-add-note',\r\n templateUrl: './add-campaigncheck.component.html',\r\n styleUrls: ['./add-campaigncheck.component.scss']\r\n})\r\nexport class AddCampaignCheckModal implements OnInit, OnDestroy {\r\n\r\n private destroyed$: ReplaySubject<boolean> = new ReplaySubject(1);\r\n @Output() oSaveClicked = new EventEmitter<any>();\r\n\r\n allAssignees: Array<ISalesRep> = new Array<ISalesRep>();\r\n tasksDataNotCompleted: Array<ITask> = new Array<ITask>();\r\n\r\n addCampaignCheckForm!: FormGroup;\r\n \r\n submitted = false;\r\n\r\n @Input() iClientId: string = '';\r\n @Input() iCampaignId: string = '';\r\n @Input() iLeadId: string = '';\r\n @Input() iType: number = 1;\r\n @Input() iActiveUserExternal: number = ROLES_TYPE.External;\r\n @Input() iIsAdmin: boolean = true;\r\n @Input() isGooglePlatform: boolean = true;\r\n @Input() set iNote(note: INotes) {\r\n if (note) {\r\n this.addCampaignCheckForm.patchValue(note);\r\n if (note.noteFiles)\r\n this.files = note.noteFiles;\r\n }\r\n }\r\n\r\n constructor(\r\n private dataFeedService: DataFeedService,\r\n private taskApiService: TasksApiService,\r\n public activeModal: NgbActiveModal,\r\n private formBuilder: FormBuilder) {\r\n this.addCampaignCheckForm = this.formBuilder.group({\r\n id: [null],\r\n type: [null],\r\n campaignId: [null],\r\n clientId: [null],\r\n leadId: [null],\r\n impression: [null, [Validators.required]],\r\n leads: [null, [Validators.required]],\r\n cpl: [null, [Validators.required]],\r\n ctr: [null, [Validators.required]],\r\n cPMOrCPC: [null, [Validators.required]],\r\n lFSROrLPCR: [null, [Validators.required]],\r\n taskIdToCompleted: [''],\r\n insightText: [null],\r\n changesText: [null],\r\n isQCCheck: [null],\r\n isRedAlert: [null],\r\n addTaskDate:[null, [Validators.required]]\r\n });\r\n\r\n // this.activeUserId = util.getActiveUser().id;\r\n // if (this.activeUserId) {\r\n // this.addCampaignCheckForm.patchValue({\r\n // assignedUserId: this.activeUserId\r\n // });\r\n // }\r\n this.loadDetails();\r\n }\r\n get f() { return this.addCampaignCheckForm.controls; }\r\n\r\n activeUserId = '';\r\n assignedUserFullname = '';\r\n\r\n ngOnInit() {\r\n this.taskApiService.getTasksByCampaign(this.iCampaignId)\r\n .pipe(takeUntil(this.destroyed$))\r\n .subscribe((response: any) => {\r\n this.tasksDataNotCompleted = [...response.data.filter((x: ITask) => x.isCompleted === null || x.isCompleted === false)];\r\n });\r\n }\r\n loadDetails() {\r\n \r\n }\r\n\r\n onSubmit() {\r\n this.submitted = true;\r\n if (this.addCampaignCheckForm.invalid)\r\n return;\r\n if (this.f.id.value === null)\r\n this.f.id.setValue(createGuid());\r\n var request = this.addCampaignCheckForm.value;\r\n\r\n request = this.trimObjectStrings(request);\r\n\r\n request.campaignId = this.iCampaignId;\r\n request.clientId = this.iClientId;\r\n request.leadId = this.iLeadId;\r\n request.isGooglePlatform = this.isGooglePlatform;\r\n request.type = this.iType;\r\n request.addFiles = this.files.filter(x => x.link === undefined).map(x => { return { name: x.name, content: x.content } });\r\n request.removeFiles = this.removedFiles;\r\n request.addTaskDate = Utility.getDateFromDateTime(request.addTaskDate);\r\n this.oSaveClicked.emit(request);\r\n }\r\n\r\n // This function will recursively iterate through the object\r\n trimObjectStrings(obj: any): any {\r\n // Iterate over each property of the object\r\n for (const key in obj) {\r\n if (obj.hasOwnProperty(key)) {\r\n const value = obj[key];\r\n \r\n if (typeof value === 'string') {\r\n // Trim the string if the value is a string\r\n obj[key] = value.trim();\r\n } else if (typeof value === 'object' && value !== null) {\r\n // Recursively call the function if the value is an object (or array)\r\n this.trimObjectStrings(value);\r\n }\r\n }\r\n }\r\n return obj;\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroyed$.next(true);\r\n this.destroyed$.complete();\r\n }\r\n\r\n files: any[] = [];\r\n removedFiles: any[] = [];\r\n onSelect(event: any) {\r\n for (var i = 0; i < event.addedFiles.length; i++) {\r\n var file = event.addedFiles[i];\r\n var that = this.files;\r\n this.readFile(file).then((fileContents: any) => {\r\n file.content = fileContents;\r\n that.push(file);\r\n })\r\n }\r\n }\r\n\r\n onRemove(event: any) {\r\n this.files.splice(this.files.indexOf(event), 1);\r\n if (event.id) {\r\n this.removedFiles.push(event.id);\r\n }\r\n }\r\n\r\n readFile(file: File): any {\r\n return new Promise<string | ArrayBuffer>((resolve, reject) => {\r\n const reader = new FileReader();\r\n reader.onload = e => {\r\n var result: any = (e.target as FileReader).result;\r\n return resolve(result);\r\n };\r\n reader.onerror = e => {\r\n console.error(`FileReader failed on file ${file.name}.`);\r\n return reject(null);\r\n };\r\n if (!file) {\r\n console.error('No file to read.');\r\n return reject(null);\r\n }\r\n reader.readAsDataURL(file);\r\n });\r\n }\r\n}","<div class=\"modal-box\" cdkDrag>\r\n <form [formGroup]=\"addCampaignCheckForm\" (ngSubmit)=\"onSubmit()\">\r\n <div class=\"modal-header\" style=\"cursor: move; display: flex; flex-direction: row; justify-content: space-between;\" cdkDragHandle>\r\n <h4 class=\"modal-title\">Campaign Check</h4>\r\n <button type=\"button\" class=\"close\" aria-label=\"Close\" (click)=\"activeModal.dismiss('Cross click')\">\r\n <span aria-hidden=\"true\">×</span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body\">\r\n <div class=\"row mb-3\">\r\n <label class=\"col-sm-3\" for=\"title\">Metrics<br>(Last 7 Days)</label>\r\n <div class=\"col-sm-9\">\r\n <table style=\"font-size: 11px;\">\r\n <tr>\r\n <td><label for=\"impression\">Impressions</label></td>\r\n <td><input type=\"text\" class=\"form-control\" formControlName=\"impression\"\r\n [ngClass]=\"{ 'is-invalid': submitted && f.impression.errors }\"></td>\r\n <td><label for=\"leads\">Leads</label></td>\r\n <td><input type=\"text\" class=\"form-control\" formControlName=\"leads\"\r\n [ngClass]=\"{ 'is-invalid': submitted && f.leads.errors }\"></td>\r\n <td><label for=\"cpl\">CPL</label></td>\r\n <td><input type=\"text\" prefix=\"$\" mask=\"separator.4\" thousandSeparator=\"\" class=\"form-control\" formControlName=\"cpl\"\r\n [ngClass]=\"{ 'is-invalid': submitted && f.cpl.errors }\"></td>\r\n </tr>\r\n <tr>\r\n <td><label for=\"ctr\">CTR</label></td>\r\n <td><input type=\"text\" suffix=\"%\" mask=\"separator.4\" thousandSeparator=\"\" class=\"form-control\" formControlName=\"ctr\"\r\n [ngClass]=\"{ 'is-invalid': submitted && f.ctr.errors }\"></td>\r\n <td><label *ngIf=\"isGooglePlatform\" for=\"cPMOrCPC\">CPC</label><label *ngIf=\"!isGooglePlatform\" for=\"cPMOrCPC\">CPM</label></td>\r\n <td><input type=\"text\" prefix=\"$\" mask=\"separator.4\" thousandSeparator=\"\" class=\"form-control\" formControlName=\"cPMOrCPC\"\r\n [ngClass]=\"{ 'is-invalid': submitted && f.cPMOrCPC.errors }\"></td>\r\n <td><label *ngIf=\"isGooglePlatform\" for=\"lFSROrLPCR\">LPCR</label><label *ngIf=\"!isGooglePlatform\" for=\"lFSROrLPCR\">LFSR</label></td>\r\n <td><input type=\"text\" suffix=\"%\" mask=\"separator.4\" thousandSeparator=\"\" class=\"form-control\" formControlName=\"lFSROrLPCR\"\r\n [ngClass]=\"{ 'is-invalid': submitted && f.lFSROrLPCR.errors }\"></td>\r\n </tr>\r\n </table>\r\n </div>\r\n </div>\r\n <div class=\"row mb-3\">\r\n <label class=\"col-sm-3\" for=\"insightText\">Insight</label>\r\n <div class=\"col-sm-9\">\r\n <textarea type=\"text\" rows=\"3\" class=\"form-control\" formControlName=\"insightText\"\r\n [ngClass]=\"{ 'is-invalid': submitted && f.insightText.errors }\"\r\n placeholder=\"Enter Insight\"> </textarea>\r\n <div *ngIf=\"submitted && f.insightText.errors\" class=\"invalid-feedback\">\r\n <div *ngIf=\"f.insightText.errors.required\">Insight is required</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-3\">\r\n <label class=\"col-sm-3\" for=\"changesText\">Changes</label>\r\n <div class=\"col-sm-9\">\r\n <textarea type=\"text\" rows=\"3\" class=\"form-control\" formControlName=\"changesText\"\r\n [ngClass]=\"{ 'is-invalid': submitted && f.changesText.errors }\"\r\n placeholder=\"Enter Changes\"> </textarea>\r\n <div *ngIf=\"submitted && f.changesText.errors\" class=\"invalid-feedback\">\r\n <div *ngIf=\"f.changesText.errors.required\">Changes is required</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-3\">\r\n <label class=\"col-sm-3\" for=\"taskIdToCompleted\">Complete Task</label>\r\n <div class=\"col-sm-9\">\r\n <ng-select [ngClass]=\"{ 'is-invalid': submitted && f.taskIdToCompleted.errors }\" placeholder=\"None\" [items]=\"tasksDataNotCompleted\" bindLabel=\"title\" bindValue=\"id\"\r\n formControlName=\"taskIdToCompleted\">\r\n </ng-select>\r\n <div *ngIf=\"submitted && f.taskIdToCompleted.errors\" class=\"invalid-feedback\">\r\n <div *ngIf=\"f.taskIdToCompleted.errors.required\">please select an Task to Complete</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-3\">\r\n <label class=\"col-sm-3\" for=\"addTaskDate\">Add Task</label>\r\n <div class=\"col-sm-9\">\r\n <input [ngClass]=\"{ 'is-invalid': submitted && f.addTaskDate.errors }\" mwlFlatpickr\r\n [altInputClass]=\"'datetime'\" [altInput]=\"true\" [convertModelValue]=\"true\" formControlName=\"addTaskDate\"\r\n class=\"form-control\" />\r\n <div *ngIf=\"submitted && f.addTaskDate.errors\" class=\"invalid-feedback\">\r\n <div *ngIf=\"f.addTaskDate.errors.required\">required</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-3\">\r\n <table>\r\n <tr>\r\n <td style=\"padding-left: 10px;\">\r\n <div class=\"row\">\r\n <label class=\"col-sm-3\" for=\"isQCCheck\">Add QC Check</label>\r\n <div class=\"col-sm-2\">\r\n <input type=\"checkbox\" formControlName=\"isQCCheck\" class=\"form-check-input\" />\r\n </div>\r\n </div>\r\n </td>\r\n <td style=\"text-align: right;\">\r\n <!-- <div class=\"row\">\r\n <label class=\"col-sm-6\" for=\"isRedAlert\">Add Red Alert</label>\r\n <div class=\"col-sm-3\">\r\n <input type=\"checkbox\" formControlName=\"isRedAlert\" class=\"form-check-input\" />\r\n </div>\r\n </div> -->\r\n </td>\r\n </tr>\r\n </table>\r\n </div>\r\n <div class=\"row mb-3\">\r\n <label class=\"col-sm-3\" for=\"assignedUserId\">Upload</label>\r\n <div class=\"col-sm-9\">\r\n <span>\r\n <ngx-dropzone style=\"height: 80px;\" [multiple]=\"false\" (change)=\"onSelect($event)\">\r\n <ngx-dropzone-label>Drop or click to upload!</ngx-dropzone-label>\r\n </ngx-dropzone>\r\n <div class=\"row mb-3\" style=\"margin: 10px;\" *ngFor=\"let file of files\">\r\n <div class=\"col-sm-9\">{{ file.name }}</div>\r\n <div class=\"col-sm-3\">\r\n <a role=\"button\" (click)=\"onRemove(file)\">\r\n <i class=\"fas fa-trash-can\"></i>\r\n </a>\r\n </div>\r\n </div>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"modal-footer\" style=\"cursor: move; display: flex; flex-direction: row; justify-content: space-between;\" cdkDragHandle>\r\n <button type=\"button\" style=\"border: 1px solid red; border-radius: 4px; padding: 8px; color: red;\" (click)=\"activeModal.close('Close click')\">Cancel</button>\r\n <button type=\"submit\" class=\"blue-button\">SAVE</button>\r\n </div>\r\n </form>\r\n</div>","import { Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { NgbActiveModal } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { ReplaySubject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { ROLES } from '../../../core/helpers/constants';\r\nimport { createGuid } from '../../../core/helpers/utility';\r\nimport { IClient } from '../../../core/models/clients.models';\r\nimport { ICompany, ISalesRep, IUser } from '../../../core/models/datafeed.models';\r\nimport { ClientsApiService } from '../../../pages/clients/clients.apiservice';\r\nimport { AppService } from '../../../store/app.service';\r\nimport { DataFeedService } from '../../api/datafeed.service';\r\n\r\n@Component({\r\n selector: 'modal-add-client',\r\n templateUrl: './add-client.component.html',\r\n styleUrls: ['./add-client.component.scss']\r\n})\r\nexport class AddClientModal implements OnInit, OnDestroy {\r\n\r\n private destroyed$: ReplaySubject<boolean> = new ReplaySubject(1);\r\n @Output() oSaveClicked = new EventEmitter<any>();\r\n\r\n allCompanies: Array<ICompany> = new Array<ICompany>();\r\n allSalesReps: Array<ISalesRep> = new Array<ISalesRep>();\r\n allDms: Array<ISalesRep> = new Array<ISalesRep>();\r\n allEmployees: Array<IUser> = new Array<IUser>();\r\n allSubEmployees: Array<IUser> = new Array<IUser>();\r\n allClientOwners: Array<IUser> = new Array<IUser>();\r\n client: any;\r\n addClientForm!: FormGroup;\r\n submitted = false;\r\n isProspect = false;\r\n\r\n @Input() set iId(value: number) {\r\n this.id = value;\r\n if (value !== null) {\r\n this.clientApiService.getClientDetails(value)\r\n .pipe(takeUntil(this.destroyed$))\r\n .subscribe((response: any) => {\r\n this.client = response.data;\r\n this.addClientForm.patchValue(response.data);\r\n this.addClientForm.patchValue({ employees: response.data.employees.map((x: any) => ({ id: x.id, fullName: `${x.firstName} ${x.lastName}` })) });\r\n });\r\n }\r\n }\r\n id: number = -1;\r\n\r\n constructor(\r\n private dataFeedService: DataFeedService,\r\n private clientApiService: ClientsApiService,\r\n private appService: AppService,\r\n public activeModal: NgbActiveModal,\r\n private formBuilder: FormBuilder) {\r\n this.addClientForm = this.formBuilder.group({\r\n id: [null],\r\n firstName: ['', [Validators.required]],\r\n lastName: ['', [Validators.required]],\r\n brandAddress: [''],\r\n brandId: [null],\r\n dmsId: [null],\r\n salesRepId: [null],\r\n clientOwnerId: [null],\r\n employees: [null],\r\n subEmployeeIds: [''],\r\n isProspect: [false],\r\n isSendInvoice: [true],\r\n emailForInvoice: [''],\r\n phone: [''],\r\n email: ['', [Validators.required, Validators.email]],\r\n });\r\n }\r\n get f() { return this.addClientForm.controls; }\r\n\r\n updateData(data: IClient) {\r\n this.addClientForm.patchValue(data);\r\n }\r\n\r\n ngOnInit() {\r\n this.appService.getActiveRoute$()\r\n .subscribe((route: any) => {\r\n if (route.url.indexOf('prospect') > -1 || route.url.indexOf('prospect-details') > -1)\r\n if (this.id === null)\r\n {\r\n this.addClientForm.patchValue({ isProspect: true });\r\n this.isProspect = true;\r\n }\r\n \r\n });\r\n }\r\n ngAfterViewInit() {\r\n this.dataFeedService.getAllCompanies()\r\n .pipe(takeUntil(this.destroyed$)\r\n )\r\n .subscribe((response: any) => {\r\n if (response.good) {\r\n this.allCompanies = [...response.data];\r\n }\r\n });\r\n\r\n this.dataFeedService.getAllUsersWithRole(ROLES.SalesRep.Code)\r\n .pipe(takeUntil(this.destroyed$)\r\n )\r\n .subscribe((response: any) => {\r\n if (response.good) {\r\n this.allSalesReps = [...response.data];\r\n }\r\n });\r\n\r\n this.dataFeedService.getAllUsersWithRole(ROLES.DMS.Code)\r\n .pipe(takeUntil(this.destroyed$)\r\n )\r\n .subscribe((response: any) => {\r\n if (response.good) {\r\n this.allDms = [...response.data];\r\n }\r\n });\r\n\r\n this.dataFeedService.getAllUsersWithRole(ROLES.ClientOwner.Code)\r\n .pipe(takeUntil(this.destroyed$)\r\n )\r\n .subscribe((response: any) => {\r\n if (response.good) {\r\n this.allClientOwners = [...response.data];\r\n }\r\n });\r\n\r\n }\r\n onSubmit() {\r\n this.submitted = true;\r\n if (this.addClientForm.invalid)\r\n return;\r\n if (this.f.id.value === null)\r\n this.f.id.setValue(createGuid())\r\n \r\n let request = this.addClientForm.value;\r\n request = this.trimObjectStrings(request); \r\n this.oSaveClicked.emit(request);\r\n }\r\n\r\n // This function will recursively iterate through the object\r\n trimObjectStrings(obj: any): any {\r\n // Iterate over each property of the object\r\n for (const key in obj) {\r\n if (obj.hasOwnProperty(key)) {\r\n const value = obj[key];\r\n \r\n if (typeof value === 'string') {\r\n // Trim the string if the value is a string\r\n obj[key] = value.trim();\r\n } else if (typeof value === 'object' && value !== null) {\r\n // Recursively call the function if the value is an object (or array)\r\n this.trimObjectStrings(value);\r\n }\r\n }\r\n }\r\n return obj;\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroyed$.next(true);\r\n this.destroyed$.complete();\r\n }\r\n\r\n}\r\n","<div class=\"modal-box\" cdkDrag>\r\n <form [formGroup]=\"addClientForm\" (ngSubmit)=\"onSubmit()\">\r\n <div class=\"modal-header\" style=\"cursor: move; display: flex; flex-direction: row; justify-content: space-between;\" cdkDragHandle>\r\n <h4 class=\"modal-title\">{{ id === null ? 'Add' :'Edit'}} {{isProspect ? 'Prospect' : 'Client'}}</h4>\r\n <button type=\"button\" class=\"close\" aria-label=\"Close\" (click)=\"activeModal.dismiss('Cross click')\">\r\n <span aria-hidden=\"true\">×</span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body\">\r\n <div class=\"row mb-3\">\r\n <label class=\"col-sm-3 center-label\">First Name</label>\r\n <div class=\"col-sm-9\">\r\n <input type=\"text\" class=\"form-control\" formControlName=\"firstName\"\r\n [ngClass]=\"{ 'is-invalid': submitted && f.firstName.errors }\" placeholder=\"Enter first name\">\r\n </div>\r\n </div>\r\n <div *ngIf=\"submitted && f.firstName.errors\" class=\"row mb-minus-3 row-validation\">\r\n <div class=\"col-sm-3\"> </div>\r\n <div class=\"col-sm-9\">\r\n <div *ngIf=\"f.firstName.errors.required\">\r\n First Name is required\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-3\">\r\n <label class=\"col-sm-3 center-label\" for=\"lastName\">Last Name</label>\r\n <div class=\"col-sm-9\">\r\n <input type=\"text\" class=\"form-control\" formControlName=\"lastName\"\r\n [ngClass]=\"{ 'is-invalid': submitted && f.lastName.errors }\" placeholder=\"Enter last name\">\r\n </div>\r\n </div>\r\n <div *ngIf=\"submitted && f.lastName.errors\" class=\"row mb-minus-3 row-validation\">\r\n <div class=\"col-sm-3\"> </div>\r\n <div class=\"col-sm-9\">\r\n <div *ngIf=\"f.lastName.errors.required\">\r\n Last Name is required\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-3\">\r\n <label class=\"col-sm-3\" for=\"brandAddress\">Address</label>\r\n <div class=\"col-sm-9\">\r\n <textarea type=\"text\" class=\"form-control\" rows=\"3\" formControlName=\"brandAddress\"\r\n [ngClass]=\"{ 'is-invalid': submitted && f.brandAddress.errors }\"\r\n placeholder=\"Enter address info\"> </textarea>\r\n <div *ngIf=\"submitted && f.brandAddress.errors\" class=\"invalid-feedback\">\r\n <div *ngIf=\"f.brandAddress.errors.required\">address is required</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-3\">\r\n <label class=\"col-sm-3 center-label\" for=\"brandId\">Company</label>\r\n <div class=\"col-sm-9\">\r\n <ng-select placeholder=\"Select a Company\" [ngClass]=\"{ 'is-invalid': submitted && f.brandId.errors }\"\r\n formControlName=\"brandId\">\r\n <ng-option *ngFor=\"let rep of allCompanies\" [value]=\"rep.id\">{{rep.name}}</ng-option>\r\n </ng-select>\r\n </div>\r\n </div>\r\n <div *ngIf=\"submitted && f.brandId.errors\" class=\"row mb-minus-3 row-validation\">\r\n <div class=\"col-sm-3\"> </div>\r\n <div class=\"col-sm-9\">\r\n <div *ngIf=\"f.brandId.errors.required\">\r\n Company is required\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-3\">\r\n <label class=\"col-sm-3 center-label\" for=\"dmsId\">DMS</label>\r\n <div class=\"col-sm-9\">\r\n <ng-select placeholder=\"Select a DMS\" [ngClass]=\"{ 'is-invalid': submitted && f.dmsId.errors }\"\r\n formControlName=\"dmsId\">\r\n <ng-option *ngFor=\"let rep of allDms\" [value]=\"rep.id\">{{rep.firstName}} {{rep.lastName}}\r\n </ng-option>\r\n </ng-select>\r\n </div>\r\n </div>\r\n <div *ngIf=\"submitted && f.dmsId.errors\" class=\"row mb-minus-3 row-validation\">\r\n <div class=\"col-sm-3\"> </div>\r\n <div class=\"col-sm-9\">\r\n <div *ngIf=\"f.dmsId.errors.required\">\r\n DMS is required\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-3\">\r\n <label class=\"col-sm-3 center-label\" for=\"salesRepId\">Sales Rep</label>\r\n <div class=\"col-sm-9\">\r\n <ng-select placeholder=\"Select a Sales Rep\"\r\n [ngClass]=\"{ 'is-invalid': submitted && f.salesRepId.errors }\" formControlName=\"salesRepId\">\r\n <ng-option *ngFor=\"let rep of allSalesReps\" [value]=\"rep.id\">{{rep.firstName}} {{rep.lastName}}\r\n </ng-option>\r\n </ng-select>\r\n </div>\r\n </div>\r\n <div *ngIf=\"submitted && f.salesRepId.errors\" class=\"row mb-minus-3 row-validation\">\r\n <div class=\"col-sm-3\"> </div>\r\n <div class=\"col-sm-9\">\r\n <div *ngIf=\"f.salesRepId.errors.required\">\r\n Sales Rep is required\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-3\">\r\n <label class=\"col-sm-3 center-label\" for=\"clientOwnerId\">Owner</label>\r\n <div class=\"col-sm-9\">\r\n <ng-select placeholder=\"Select a Client Owner\"\r\n [ngClass]=\"{ 'is-invalid': submitted && f.clientOwnerId.errors }\"\r\n [readonly]=\"client != undefined && !client.clientOwnerEditable\" formControlName=\"clientOwnerId\">\r\n <ng-option *ngFor=\"let user of allClientOwners\" [value]=\"user.id\">{{user.firstName}}\r\n {{user.lastName}}</ng-option>\r\n </ng-select>\r\n </div>\r\n </div>\r\n <div *ngIf=\"submitted && f.clientOwnerId.errors\" class=\"row mb-minus-3 row-validation\">\r\n <div class=\"col-sm-3\"> </div>\r\n <div class=\"col-sm-9\">\r\n <div *ngIf=\"f.clientOwnerId.errors.required\">\r\n Owner is required\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-3\">\r\n <label class=\"col-sm-3\">Employees</label>\r\n <div class=\"col-sm-9\">\r\n <ul class=\"list-group\">\r\n <li class=\"list-group-item\" *ngIf=\"f.employees.value?.length === 0\">No employee found</li>\r\n <li class=\"list-group-item\" *ngFor=\"let e of f.employees.value\">{{e.fullName }}</li>\r\n </ul>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row mb-3\">\r\n <label class=\"col-sm-3 center-label\" for=\"phone\">Phone #</label>\r\n <div class=\"col-sm-9\">\r\n <input type=\"tel\" class=\"form-control\" formControlName=\"phone\"\r\n [ngClass]=\"{ 'is-invalid': submitted && f.phone.errors }\" placeholder=\"Enter phone number\">\r\n </div>\r\n </div>\r\n <div *ngIf=\"submitted && f.phone.errors\" class=\"row mb-minus-3 row-validation\">\r\n <div class=\"col-sm-3\"> </div>\r\n <div class=\"col-sm-9\">\r\n <div *ngIf=\"f.phone.errors.required\">\r\n Phone Number is required\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-3\">\r\n <label class=\"col-sm-3 center-label\" for=\"email\">Email</label>\r\n <div class=\"col-sm-9\">\r\n <input type=\"text\" class=\"form-control\" formControlName=\"email\"\r\n [ngClass]=\"{ 'is-invalid': submitted && f.email.errors }\" placeholder=\"Enter email address\">\r\n </div>\r\n </div>\r\n <div *ngIf=\"submitted && f.email.errors\" class=\"row mb-minus-3 row-validation\">\r\n <div class=\"col-sm-3\"> </div>\r\n <div class=\"col-sm-9\">\r\n <div *ngIf=\"f.email.errors.required\">\r\n Email address is required\r\n </div>\r\n <div *ngIf=\"f.email.errors.email\">Email address is invalid</div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-3\">\r\n <label class=\"col-sm-3 center-label\" for=\"emailForInvoice\">Invoice Email</label>\r\n <div class=\"col-sm-9\">\r\n <input type=\"text\" class=\"form-control\" formControlName=\"emailForInvoice\"\r\n placeholder=\"If the client wants invoices to go to a different email than above\">\r\n </div>\r\n </div>\r\n <div class=\"row mb-3\">\r\n <!-- <label class=\"col-sm-3\" for=\"name\">Is Prospect</label>\r\n <div class=\"col-sm-9\">\r\n <input type=\"checkbox\" formControlName=\"isProspect\" class=\"form-check-input\" />\r\n </div> -->\r\n <label class=\"col-sm-3 center-label\">Prospect/Client</label>\r\n <div style=\"padding-left: 0px\" class=\"col-sm-9\">\r\n <ui-switch [checked]=\"f.isProspect.value\" size=\"small\" (change)=\"f.isProspect.setValue($event)\"\r\n defaultBoColor=\"#dfdfdf\" color=\"#4ba6ef\" checkedLabel=\"Prospect\" uncheckedLabel=\"Client\"\r\n class=\"ms-1\">\r\n </ui-switch>\r\n </div>\r\n </div>\r\n <!-- <div class=\"row mb-3\">\r\n <label class=\"col-sm-3 center-label\">Send Invoice Email?</label>\r\n <div style=\"padding-left: 0px\" class=\"col-sm-9\">\r\n <ui-switch [checked]=\"f.isSendInvoice.value\" size=\"small\" (change)=\"f.isSendInvoice.setValue($event)\"\r\n defaultBoColor=\"#dfdfdf\" color=\"#4ba6ef\" checkedLabel=\"Yes\" uncheckedLabel=\"No\"\r\n class=\"ms-1\">\r\n </ui-switch>\r\n </div>\r\n </div> -->\r\n \r\n <!-- <div class=\"row mb-3\">\r\n <label class=\"col-sm-3\" for=\"marketingManagers\">Employees</label>\r\n <div class=\"col-sm-9\">\r\n <ng-select placeholder=\"Select\" [multiple]=\"true\" [items]=\"allMarketingManagers\" bindLabel=\"fullName\" bindValue=\"id\"\r\n formControlName=\"marketingManagers\">\r\n </ng-select>\r\n </div>\r\n </div> -->\r\n\r\n </div>\r\n <div class=\"modal-footer\" style=\"cursor: move; display: flex; flex-direction: row; justify-content: space-between;\" cdkDragHandle>\r\n <button type=\"button\" style=\"border: 1px solid red; border-radius: 4px; padding: 8px; color: red;\" (click)=\"activeModal.close('Close click')\">Cancel</button>\r\n <button type=\"submit\" class=\"blue-button\">SAVE</button>\r\n </div>\r\n </form>\r\n</div>","import { Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';\nimport { FormArray, FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { NgbActiveModal } from \"@ng-bootstrap/ng-bootstrap\";\nimport { ReplaySubject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { ROLES, ROLES_TYPE, PAGE_NAMES } from '../../../core/helpers/constants';\nimport { createGuid, getRolesForPage, matchingPasswords } from '../../../core/helpers/utility';\nimport { IRole, IUser } from '../../../core/models/auth.models';\nimport { IClient } from '../../../core/models/clients.models';\nimport { ClientsApiService } from '../../../pages/clients/clients.apiservice';\nimport { CompanyApiService } from '../../../pages/companies/company.apiservice';\nimport { DataFeedService } from '../../api/datafeed.service';\nimport { AppService } from '../../../store/app.service';\n\n@Component({\n selector: 'modal-add-company',\n templateUrl: './add-company.component.html',\n styleUrls: ['./add-company.component.scss']\n})\nexport class AddCompanyModal implements OnInit, OnDestroy {\n\n private destroyed$: ReplaySubject<boolean> = new ReplaySubject(1);\n @Output() oSaveClicked = new EventEmitter<any>();\n\n allCompanyOwners: Array<IUser> = new Array<IUser>();\n allMarketingManagers: Array<IUser> = new Array<IUser>();\n\n addCompanyForm!: FormGroup;\n submitted = false;\n\n isAdmin: boolean = false;\n isExternal: boolean = false;\n canDelete: boolean = false;\n canRead: boolean = false;\n canWrite: boolean = false;\n canCreate: boolean = false;\n\n @Input() set iId(value: number) {\n this.id = value;\n if (value !== null) {\n this.companyApiService.getCompanyDetails(value)\n .pipe(takeUntil(this.destroyed$))\n .subscribe((response: any) => {\n this.addCompanyForm.patchValue(response.data);\n if (response.data.companyOwner) {\n this.addCompanyForm.patchValue(\n {\n companyOwnerId: response.data.companyOwner.id,\n contactFirstName: response.data.companyOwner.firstName,\n contactLastName: response.data.companyOwner.lastName,\n contactPhone: response.data.companyOwner.phone,\n contactEmail: response.data.companyOwner.email,\n });\n }\n this.addCompanyForm.patchValue(\n {\n marketingManagers: response.data.marketingManagers.map((x: any) => x.id)\n });\n });\n }\n }\n id: number = -1;\n\n constructor(\n private dataFeedService: DataFeedService,\n private companyApiService: CompanyApiService,\n public activeModal: NgbActiveModal,\n private formBuilder: FormBuilder,\n private appService: AppService) {\n this.addCompanyForm = this.formBuilder.group({\n id: [null],\n name: ['', [Validators.required]],\n contactFirstName: [''],\n contactLastName: [''],\n contactEmail: [''],\n contactPhone: [''],\n companyOwnerId: [null],\n marketingManagers: [null]\n });\n }\n get f() { return this.addCompanyForm.controls; }\n\n\n updateData(data: IClient) {\n this.addCompanyForm.patchValue(data);\n }\n\n ngOnInit() {\n this.appService.getActiveUser$()\n .pipe(takeUntil(this.destroyed$))\n .subscribe(u => {\n this.isExternal = u.type == ROLES_TYPE.External;\n var r = getRolesForPage(u.roles, PAGE_NAMES.Companies);\n this.isAdmin = r.isAdmin;\n this.canRead = r.canRead;\n this.canWrite = r.canWrite;\n this.canDelete = r.canDelete;\n this.canCreate = r.canCreate;\n })\n\n this.dataFeedService.getAllUsersWithRole(ROLES.CompanyOwner.Code)\n .pipe(takeUntil(this.destroyed$)\n )\n .subscribe((response: any) => {\n if (response.good) {\n this.allCompanyOwners = [...response.data].map(i => { i.fullName = i.firstName + ' ' + i.lastName; return i; });\n\n }\n });\n this.dataFeedService.getAllUsersWithRole(ROLES.MarketingManager.Code)\n .pipe(takeUntil(this.destroyed$)\n )\n .subscribe((response: any) => {\n if (response.good) {\n this.allMarketingManagers = [...response.data].map(i => { i.fullName = i.firstName + ' ' + i.lastName; return i; })\n // this.addClientForm.patchValue({ salesRep: response.data[0] });\n }\n });\n\n this.f.companyOwnerId.valueChanges\n .pipe(takeUntil(this.destroyed$))\n .subscribe(val => {\n if (val == null) {\n this.f.contactFirstName.setValidators([]);\n this.f.contactLastName.setValidators([]);\n this.f.contactPhone.setValidators([]);\n this.f.contactEmail.setValidators([]);\n this.addCompanyForm.patchValue(\n {\n contactFirstName: null,\n contactLastName: null,\n contactPhone: null,\n contactEmail: null,\n });\n }\n else {\n const sub = this.dataFeedService.getUserContactInfo(val)\n .subscribe(response => {\n this.addCompanyForm.patchValue(\n {\n contactFirstName: response.data.firstName,\n contactLastName: response.data.lastName,\n contactPhone: response.data.phone,\n contactEmail: response.data.email,\n });\n\n sub.unsubscribe();\n });\n }\n this.f.contactFirstName.setValidators([Validators.required]);\n this.f.contactLastName.setValidators([Validators.required]);\n this.f.contactPhone.setValidators([Validators.required]);\n this.f.contactEmail.setValidators([Validators.required, Validators.email]);\n });\n }\n ngAfterViewInit() {\n\n }\n\n onSubmit() {\n this.submitted = true;\n if (this.addCompanyForm.invalid)\n return;\n if (this.f.id.value === null)\n this.f.id.setValue(createGuid())\n\n let formValues = this.addCompanyForm.value;\n\n formValues = this.trimObjectStrings(formValues);\n\n if (formValues.marketingManagers)\n formValues.marketingManagers = formValues.marketingManagers.map((obj: string) => ({ id: obj }))\n else\n formValues.marketingManagers = [];\n if (this.f.companyOwnerId.value) {\n let owner = {\n id: this.f.companyOwnerId.value,\n firstName: this.f.contactFirstName.value,\n lastName: this.f.contactLastName.value,\n email: this.f.contactEmail.value,\n phone: this.f.contactPhone.value,\n };\n formValues.companyOwner = owner\n }\n this.oSaveClicked.emit(formValues);\n }\n\n // This function will recursively iterate through the object\n trimObjectStrings(obj: any): any {\n // Iterate over each property of the object\n for (const key in obj) {\n if (obj.hasOwnProperty(key)) {\n const value = obj[key];\n \n if (typeof value === 'string') {\n // Trim the string if the value is a string\n obj[key] = value.trim();\n } else if (typeof value === 'object' && value !== null) {\n // Recursively call the function if the value is an object (or array)\n this.trimObjectStrings(value);\n }\n }\n }\n return obj;\n }\n\n ngOnDestroy() {\n this.destroyed$.next(true);\n this.destroyed$.complete();\n }\n\n}\n","<div class=\"modal-box\" cdkDrag>\n <form [formGroup]=\"addCompanyForm\" (ngSubmit)=\"onSubmit()\">\n <div class=\"modal-header\" style=\"cursor: move; display: flex; flex-direction: row; justify-content: space-between;\" cdkDragHandle>\n <h4 class=\"modal-title\">{{ id === null ? 'Add' :'Edit'}} Company</h4>\n <button type=\"button\" class=\"close\" aria-label=\"Close\" (click)=\"activeModal.dismiss('Cross click')\">\n <span aria-hidden=\"true\">×</span>\n </button>\n </div>\n <div class=\"modal-body\">\n <div class=\"row mb-3\">\n <label class=\"col-sm-3\" for=\"name\">Name</label>\n <div class=\"col-sm-9\">\n <input type=\"text\" class=\"form-control\" formControlName=\"name\"\n [ngClass]=\"{ 'is-invalid': submitted && f.name.errors }\" placeholder=\"Enter Company Name\">\n <div *ngIf=\"submitted && f.name.errors\" class=\"invalid-feedback\">\n <div *ngIf=\"f.name.errors.required\">Required</div>\n </div>\n </div>\n </div>\n <div class=\"row mb-3\">\n <label class=\"col-sm-3\" for=\"companyOwnerId\">Company Owner</label>\n <div class=\"col-sm-9\">\n <ng-select [ngClass]=\"{ 'is-invalid': submitted && f.companyOwnerId.errors }\" placeholder=\"Select\"\n [items]=\"allCompanyOwners\" bindLabel=\"fullName\" bindValue=\"id\" formControlName=\"companyOwnerId\">\n </ng-select>\n <div *ngIf=\"submitted && f.companyOwnerId.errors\" class=\"invalid-feedback\">\n <div *ngIf=\"f.companyOwnerId.errors.required\">Required</div>\n </div>\n </div>\n </div>\n <div class=\"row mb-3\">\n <div class=\"col-sm-6\">\n <div class=\"row\">\n <label class=\"col-sm-6\" for=\"contactFirstName\">Contact First Name</label>\n <div class=\"col-sm-6\">\n <input type=\"text\" class=\"form-control\" formControlName=\"contactFirstName\"\n [ngClass]=\"{ 'is-invalid': submitted && f.contactFirstName.errors }\"\n placeholder=\"Enter Contact First Name\">\n <div *ngIf=\"submitted && f.contactFirstName.errors\" class=\"invalid-feedback\">\n <div *ngIf=\"f.contactFirstName.errors.required\">Required</div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"col-sm-6\">\n <div class=\"row\">\n <label class=\"col-sm-6\" for=\"contactLastName\">Contact Last Name</label>\n <div class=\"col-sm-6\">\n <input type=\"text\" class=\"form-control\" formControlName=\"contactLastName\"\n [ngClass]=\"{ 'is-invalid': submitted && f.contactLastName.errors }\"\n placeholder=\"Enter Contact Last Name\">\n <div *ngIf=\"submitted && f.contactLastName.errors\" class=\"invalid-feedback\">\n <div *ngIf=\"f.contactLastName.errors.required\">Required</div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"row mb-3\">\n <label class=\"col-sm-3\" for=\"contactEmail\">Contact Email</label>\n <div class=\"col-sm-9\">\n <input type=\"text\" class=\"form-control\" formControlName=\"contactEmail\"\n [ngClass]=\"{ 'is-invalid': submitted && f.contactEmail.errors }\" placeholder=\"Enter Contact Email\">\n <div *ngIf=\"submitted && f.contactEmail.errors\" class=\"invalid-feedback\">\n <div *ngIf=\"f.contactEmail.errors.required\">Required</div>\n <div *ngIf=\"f.contactEmail.errors.email\">Email is not valid</div>\n </div>\n </div>\n </div>\n <div class=\"row mb-3\">\n <label class=\"col-sm-3\" for=\"contactPhone\">Contact Phone</label>\n <div class=\"col-sm-9\">\n <input type=\"text\" class=\"form-control\" formControlName=\"contactPhone\"\n [ngClass]=\"{ 'is-invalid': submitted && f.contactPhone.errors }\" placeholder=\"Enter Contact Phone\">\n <div *ngIf=\"submitted && f.contactPhone.errors\" class=\"invalid-feedback\">\n <div *ngIf=\"f.contactPhone.errors.required\">Required</div>\n </div>\n </div>\n </div>\n <div class=\"row mb-3\">\n <label class=\"col-sm-3\" for=\"marketingManagers\">Marketing Managers</label>\n <div class=\"col-sm-9\">\n <ng-select placeholder=\"Select\" [multiple]=\"true\" [items]=\"allMarketingManagers\" bindLabel=\"fullName\"\n bindValue=\"id\" formControlName=\"marketingManagers\">\n </ng-select>\n </div>\n </div>\n\n </div>\n <div class=\"modal-footer\" style=\"cursor: move; display: flex; flex-direction: row; justify-content: space-between;\" cdkDragHandle>\n <button type=\"button\" style=\"border: 1px solid red; border-radius: 4px; padding: 8px; color: red;\" (click)=\"activeModal.close('Close click')\">Cancel</button>\n <button *ngIf=\"isAdmin || canWrite || canCreate\" type=\"submit\" class=\"blue-button\">SAVE</button>\n </div>\n </form>\n</div>","import { Component, EventEmitter, Input, OnDestroy, Output } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { NgbActiveModal } from \"@ng-bootstrap/ng-bootstrap\";\nimport { ReplaySubject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { ICampaign } from '../../../core/models/campaigns.model';\nimport { ILead } from '../../../core/models/lead.models';\nimport { CampaignsApiService } from '../../../pages/campaigns/campaigns.apiservice';\nimport { LeadsApiService } from '../../../pages/leads/leads.apiservice';\nimport { AppService } from '../../../store/app.service';\n\n\n@Component({\n selector: 'modal-add-lead',\n templateUrl: './add-lead.component.html',\n styleUrls: ['./add-lead.component.scss']\n})\nexport class AddLeadModal implements OnDestroy {\n\n private destroyed$: ReplaySubject<boolean> = new ReplaySubject(1);\n @Output() oSaveClicked = new EventEmitter<any>();\n\n allCampaigns: Array<ICampaign> = new Array<ICampaign>();\n\n addLeadForm!: FormGroup;\n submitted = false;\n id: string = '';\n savedSearchId!: string;\n\n @Input() set iId(value: string) {\n this.id = value;\n if (value !== null) {\n this.loadDetails();\n }\n }\n\n constructor(\n private campaignApiService: CampaignsApiService,\n private leadsApiService: LeadsApiService,\n private appService: AppService,\n public activeModal: NgbActiveModal,\n private formBuilder: FormBuilder) {\n this.addLeadForm = this.formBuilder.group({\n id: [null],\n firstName: [''],\n lastName: [''],\n email: ['', [Validators.email]],\n phone: [null],\n campaignId: ['', [Validators.required]],\n referralId: [null],\n referralSource: [''],\n });\n }\n get f() { return this.addLeadForm.controls; }\n\n loadDetails() {\n this.leadsApiService.getLead(this.id)\n .pipe(takeUntil(this.destroyed$))\n .subscribe((response: any) => {\n this.addLeadForm.patchValue(response.lead);\n });\n }\n\n updateData(data: ILead) {\n this.addLeadForm.patchValue(data);\n }\n\n ngAfterViewInit() {\n this.campaignApiService.getAllCampaigns({ })\n .pipe(takeUntil(this.destroyed$)\n )\n .subscribe((response: any) => {\n if (response.good) {\n this.allCampaigns = [...response.data];\n // this.addClientForm.patchValue({ salesRep: response.data[0] });\n }\n });\n //this.savedSearchId = this.route.snapshot.queryParams['savedsearchid'];\n }\n\n onSubmit() {\n this.submitted = true;\n if (this.addLeadForm.invalid)\n return;\n // if (this.form.id.value === null)\n\n let request = {\n id: this.id,\n ...this.addLeadForm.getRawValue()\n };\n\n request = this.trimObjectStrings(request);\n\n this.leadsApiService.addEdit(request).subscribe((response: any) => {\n if (response.good) {\n this.activeModal.close();\n this.oSaveClicked.emit();\n }\n });\n }\n\n // This function will recursively iterate through the object\n trimObjectStrings(obj: any): any {\n // Iterate over each property of the object\n for (const key in obj) {\n if (obj.hasOwnProperty(key)) {\n const value = obj[key];\n \n if (typeof value === 'string') {\n // Trim the string if the value is a string\n obj[key] = value.trim();\n } else if (typeof value === 'object' && value !== null) {\n // Recursively call the function if the value is an object (or array)\n this.trimObjectStrings(value);\n }\n }\n }\n return obj;\n }\n\n ngOnDestroy() {\n this.destroyed$.next(true);\n this.destroyed$.complete();\n }\n\n}\n","<div class=\"modal-box\" cdkDrag>\n <form [formGroup]=\"addLeadForm\" (ngSubmit)=\"onSubmit()\">\n <div class=\"modal-header\" style=\"cursor: move; display: flex; flex-direction: row; justify-content: space-between;\" cdkDragHandle>\n <h4 class=\"modal-title\">{{ id === '' ? 'Add' :'Edit'}} Lead</h4>\n <button type=\"button\" class=\"close\" aria-label=\"Close\" (click)=\"activeModal.dismiss('Cross click')\">\n <span aria-hidden=\"true\">×</span>\n </button>\n </div>\n <div class=\"modal-body\">\n <div class=\"row mb-3\">\n <label class=\"col-sm-3\" for=\"firstName\">First Name</label>\n <div class=\"col-sm-9\">\n <input type=\"text\" class=\"form-control\" formControlName=\"firstName\"\n [ngClass]=\"{ 'is-invalid': submitted && f.firstName.errors }\" placeholder=\"Enter first name\">\n <div *ngIf=\"submitted && f.firstName.errors\" class=\"invalid-feedback\">\n <div *ngIf=\"f.firstName.errors.required\">first name is required</div>\n </div>\n </div>\n </div>\n <div class=\"row mb-3\">\n <label class=\"col-sm-3\" for=\"lastName\">Last Name</label>\n <div class=\"col-sm-9\">\n <input type=\"text\" class=\"form-control\" formControlName=\"lastName\"\n [ngClass]=\"{ 'is-invalid': submitted && f.lastName.errors }\" placeholder=\"Enter last name\">\n <div *ngIf=\"submitted && f.lastName.errors\" class=\"invalid-feedback\">\n <div *ngIf=\"f.lastName.errors.required\">last name is required</div>\n </div>\n </div>\n </div>\n <div class=\"row mb-3\">\n <label class=\"col-sm-3\" for=\"email\">Email</label>\n <div class=\"col-sm-9\">\n <input type=\"text\" class=\"form-control\" formControlName=\"email\"\n [ngClass]=\"{ 'is-invalid': submitted && f.email.errors }\" placeholder=\"Enter email address\">\n <div *ngIf=\"submitted && f.email.errors\" class=\"invalid-feedback\">\n <div *ngIf=\"f.email.errors.required\">email is required</div>\n <div *ngIf=\"f.email.errors.email\">email is invalid</div>\n </div>\n </div>\n </div>\n <div class=\"row mb-3\">\n <label class=\"col-sm-3\" for=\"campaignId\">Campaign</label>\n <div class=\"col-sm-9\">\n <ng-select [ngClass]=\"{ 'is-invalid': submitted && f.campaignId.errors }\" formControlName=\"campaignId\">\n <ng-option *ngFor=\"let x of allCampaigns\" [value]=\"x.id\">{{x.name}}</ng-option>\n </ng-select>\n <div *ngIf=\"submitted && f.campaignId.errors\" class=\"invalid-feedback\">\n <div *ngIf=\"f.campaignId.errors.required\">Campaign is required</div>\n </div>\n </div>\n </div>\n <div class=\"row mb-3\">\n <label class=\"col-sm-3\" for=\"phone\">Phone</label>\n <div class=\"col-sm-9\">\n <input type=\"tel\" class=\"form-control\" formControlName=\"phone\"\n [ngClass]=\"{ 'is-invalid': submitted && f.phone.errors }\" placeholder=\"Enter phone number\">\n <div *ngIf=\"submitted && f.phone.errors\" class=\"invalid-feedback\">\n <div *ngIf=\"f.phone.errors.required\">phone number is required</div>\n </div>\n </div>\n </div>\n <div class=\"row mb-3\">\n <label class=\"col-sm-3\" for=\"referralId\">Referral Id</label>\n <div class=\"col-sm-9\">\n <textarea type=\"text\" class=\"form-control\" rows=\"3\" formControlName=\"referralId\"\n [ngClass]=\"{ 'is-invalid': submitted && f.referralId.errors }\" placeholder=\"enter referral id\"> </textarea>\n <div *ngIf=\"submitted && f.referralId.errors\" class=\"invalid-feedback\">\n <div *ngIf=\"f.referralId.errors.required\">referral id is required</div>\n </div>\n </div>\n </div>\n <div class=\"row mb-3\">\n <label class=\"col-sm-3\" for=\"referralSource\">Referral Source</label>\n <div class=\"col-sm-9\">\n <textarea type=\"text\" class=\"form-control\" rows=\"3\" formControlName=\"referralSource\"\n [ngClass]=\"{ 'is-invalid': submitted && f.referralSource.errors }\" placeholder=\"enter referral source\"> </textarea>\n <div *ngIf=\"submitted && f.referralSource.errors\" class=\"invalid-feedback\">\n <div *ngIf=\"f.referralSource.errors.required\">referral source is required</div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"modal-footer\" style=\"cursor: move; display: flex; flex-direction: row; flex-wrap: nowrap; justify-content: space-between; align-items: center;\" cdkDragHandle>\n <button type=\"button\" style=\"border: 1px solid red; border-radius: 4px; padding: 8px; color: red;\" (click)=\"activeModal.close('Close click')\">Cancel</button>\n <button type=\"submit\" class=\"blue-button\">SAVE</button>\n </div>\n </form>\n</div>","import { Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { NgbActiveModal } from \"@ng-bootstrap/ng-bootstrap\";\nimport { ReplaySubject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { createGuid } from '../../../core/helpers/utility';\nimport { INotes } from '../../../core/models/campaigns.model';\nimport { ISalesRep } from '../../../core/models/datafeed.models';\nimport { DataFeedService } from '../../api/datafeed.service';\nimport * as util from '../../../core/helpers/utility'\nimport { ROLES_TYPE } from '../../../core/helpers/constants';\n\n@Component({\n selector: 'modal-add-note',\n templateUrl: './add-note.component.html',\n styleUrls: ['./add-note.component.scss']\n})\nexport class AddNoteModal implements OnInit, OnDestroy {\n\n private destroyed$: ReplaySubject<boolean> = new ReplaySubject(1);\n @Output() oSaveClicked = new EventEmitter<any>();\n\n allAssignees: Array<ISalesRep> = new Array<ISalesRep>();\n\n addNoteForm!: FormGroup;\n submitted = false;\n\n @Input() iClientId: string = '';\n @Input() iCampaignId: string = '';\n @Input() iLeadId: string = '';\n @Input() iType: number = 1;\n @Input() iActiveUserExternal: number = ROLES_TYPE.External;\n @Input() iIsAdmin: boolean = true;\n @Input() set iNote(note: INotes) {\n if (note) {\n this.addNoteForm.patchValue(note);\n if (note.noteFiles)\n this.files = note.noteFiles;\n }\n }\n\n constructor(\n private dataFeedService: DataFeedService,\n public activeModal: NgbActiveModal,\n private formBuilder: FormBuilder) {\n this.addNoteForm = this.formBuilder.group({\n id: [null],\n type: [null],\n campaignId: [null],\n clientId: [null],\n leadId: [null],\n assignedUserId: ['', [Validators.required]],\n title: ['', [Validators.required]],\n description: [null, [Validators.required]],\n isInternal: [null],\n });\n\n this.activeUserId = util.getActiveUser().id;\n if (this.activeUserId) {\n this.addNoteForm.patchValue({\n assignedUserId: this.activeUserId\n });\n }\n this.loadDetails();\n }\n get f() { return this.addNoteForm.controls; }\n\n activeUserId = '';\n assignedUserFullname = '';\n\n ngOnInit() { }\n loadDetails() {\n this.dataFeedService.getAllNotesAssignees()\n .pipe(takeUntil(this.destroyed$)\n )\n .subscribe((response: any) => {\n if (response.good) {\n this.allAssignees = [...response.data];\n let assignedUserId = this.f.assignedUserId.value ?? this.activeUserId;\n if (assignedUserId) {\n let user = this.allAssignees.find(f => f.id == assignedUserId);\n if (user)\n this.assignedUserFullname = user.firstName + ' ' + user.lastName;\n }\n }\n });\n }\n\n onSubmit() {\n this.submitted = true;\n if (this.addNoteForm.invalid)\n return;\n if (this.f.id.value === null)\n this.f.id.setValue(createGuid());\n var request = this.addNoteForm.value;\n\n request = this.trimObjectStrings(request);\n\n request.campaignId = this.iCampaignId;\n request.clientId = this.iClientId;\n request.leadId = this.iLeadId;\n request.type = this.iType;\n request.addFiles = this.files.filter(x => x.link === undefined).map(x => { return { name: x.name, content: x.content } });\n request.removeFiles = this.removedFiles;\n this.oSaveClicked.emit(request);\n }\n\n // This function will recursively iterate through the object\n trimObjectStrings(obj: any): any {\n // Iterate over each property of the object\n for (const key in obj) {\n if (obj.hasOwnProperty(key)) {\n const value = obj[key];\n \n if (typeof value === 'string') {\n // Trim the string if the value is a string\n obj[key] = value.trim();\n } else if (typeof value === 'object' && value !== null) {\n // Recursively call the function if the value is an object (or array)\n this.trimObjectStrings(value);\n }\n }\n }\n return obj;\n }\n\n ngOnDestroy() {\n this.destroyed$.next(true);\n this.destroyed$.complete();\n }\n\n files: any[] = [];\n removedFiles: any[] = [];\n onSelect(event: any) {\n for (var i = 0; i < event.addedFiles.length; i++) {\n var file = event.addedFiles[i];\n var that = this.files;\n this.readFile(file).then((fileContents: any) => {\n file.content = fileContents;\n that.push(file);\n })\n }\n }\n\n onRemove(event: any) {\n this.files.splice(this.files.indexOf(event), 1);\n if (event.id) {\n this.removedFiles.push(event.id);\n }\n }\n\n readFile(file: File): any {\n return new Promise<string | ArrayBuffer>((resolve, reject) => {\n const reader = new FileReader();\n reader.onload = e => {\n var result: any = (e.target as FileReader).result;\n return resolve(result);\n };\n reader.onerror = e => {\n console.error(`FileReader failed on file ${file.name}.`);\n return reject(null);\n };\n if (!file) {\n console.error('No file to read.');\n return reject(null);\n }\n reader.readAsDataURL(file);\n });\n }\n}","<div class=\"modal-box\" cdkDrag>\r\n <form [formGroup]=\"addNoteForm\" (ngSubmit)=\"onSubmit()\">\r\n <div class=\"modal-header\" style=\"cursor: move; display: flex; flex-direction: row; justify-content: space-between;\" cdkDragHandle>\r\n <h4 class=\"modal-title\">Add Note</h4>\r\n <button type=\"button\" class=\"close\" aria-label=\"Close\" (click)=\"activeModal.dismiss('Cross click')\">\r\n <span aria-hidden=\"true\">×</span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body\">\r\n <div class=\"row mb-3\">\r\n <label class=\"col-sm-3\" for=\"title\">Title</label>\r\n <div class=\"col-sm-9\">\r\n <input type=\"text\" class=\"form-control\" formControlName=\"title\"\r\n [ngClass]=\"{ 'is-invalid': submitted && f.title.errors }\" placeholder=\"Enter title\">\r\n <div *ngIf=\"submitted && f.title.errors\" class=\"invalid-feedback\">\r\n <div *ngIf=\"f.title.errors.required\">title is required</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-3\">\r\n <label class=\"col-sm-3\" for=\"description\">Note</label>\r\n <div class=\"col-sm-9\">\r\n <textarea type=\"text\" rows=\"3\" class=\"form-control\" formControlName=\"description\"\r\n [ngClass]=\"{ 'is-invalid': submitted && f.description.errors }\"\r\n placeholder=\"Enter note\"> </textarea>\r\n <div *ngIf=\"submitted && f.description.errors\" class=\"invalid-feedback\">\r\n <div *ngIf=\"f.description.errors.required\">note is required</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!iActiveUserExternal || iIsAdmin\" class=\"row mb-3\">\r\n <label class=\"col-sm-3\" for=\"description\">Internal Only</label>\r\n <div class=\"col-sm-9\">\r\n <input type=\"checkbox\" formControlName=\"isInternal\" class=\"form-check-input\" />\r\n </div>\r\n </div>\r\n\r\n <div class=\"row mb-3\">\r\n <label class=\"col-sm-3\" for=\"assignedUserId\">Author</label>\r\n <div class=\"col-sm-9\">\r\n <span *ngIf=\"f.assignedUserId.value\">\r\n {{ assignedUserFullname }}\r\n </span>\r\n\r\n <select *ngIf=\"!(f.assignedUserId.value)\"\r\n [ngClass]=\"{ 'is-invalid': submitted && f.assignedUserId.errors }\" formControlName=\"assignedUserId\"\r\n class=\"form-control form-select select-custom\">\r\n <option *ngFor=\"let rep of allAssignees\" [ngValue]=\"rep.id\">{{rep.firstName}} {{rep.lastName}}\r\n </option>\r\n </select>\r\n <div *ngIf=\"submitted && f.assignedUserId.errors\" class=\"invalid-feedback\">\r\n <div *ngIf=\"f.assignedUserId.errors.required\">please select an author</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-3\">\r\n <label class=\"col-sm-3\" for=\"assignedUserId\">Attach File</label>\r\n <div class=\"col-sm-9\">\r\n <span>\r\n <ngx-dropzone style=\"height: 80px;\" [multiple]=\"false\" (change)=\"onSelect($event)\">\r\n <ngx-dropzone-label>Drop or click to upload!</ngx-dropzone-label>\r\n </ngx-dropzone>\r\n <div class=\"row mb-3\" style=\"margin: 10px;\" *ngFor=\"let file of files\">\r\n <div class=\"col-sm-9\">{{ file.name }}</div>\r\n <div class=\"col-sm-3\">\r\n <a role=\"button\" (click)=\"onRemove(file)\">\r\n <i class=\"fas fa-trash-can\"></i>\r\n </a>\r\n </div>\r\n </div>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"modal-footer\" style=\"cursor: move; display: flex; flex-direction: row; justify-content: space-between;\" cdkDragHandle>\r\n <button type=\"button\" style=\"border: 1px solid red; border-radius: 4px; padding: 8px; color: red;\" (click)=\"activeModal.close('Close click')\">Cancel</button>\r\n <button type=\"submit\" class=\"blue-button\">Save</button>\r\n </div>\r\n </form>\r\n</div>","import { CurrencyPipe, formatCurrency } from '@angular/common';\nimport { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\nimport { ReplaySubject } from 'rxjs';\nimport { AppService } from '../../../store/app.service';\nimport { takeUntil } from 'rxjs/operators';\nimport Swal from 'sweetalert2';\nimport { OrdersApiService } from '../../../pages/orders/orders.apiservice';\n\n@Component({\n selector: 'app-add-order-subscription',\n templateUrl: './add-order-subscription.component.html',\n styleUrls: ['./add-order-subscription.component.scss']\n})\n\nexport class AddOrderToSubscriptionModal implements OnInit {\n private destroyed$: ReplaySubject<boolean> = new ReplaySubject(1);\n @Input() subscriptionId!: string;\n @Output() oSaveClicked = new EventEmitter<any>();\n @Input() products!: any[];\n selectedProducts: string[] = [];\n addForm!: FormGroup;\n submitted = false;\n allSubscriptions: Array<any>;\n totalOrderAmount: number = 0;\n\n constructor(private appService: AppService,\n private ordersService: OrdersApiService,\n public activeModal: NgbActiveModal,\n private formBuilder: FormBuilder,\n private currencyPipe: CurrencyPipe) {\n\n this.allSubscriptions = new Array<any>();\n \n // this.appService.getAllUserSubscription()\n // .pipe(takeUntil(this.destroyed$))\n // .subscribe((response: any) => {\n // if (response) {\n // this.allSubscriptions = response.map((x: any) => {\n // x.value = x.numericId + \" - \" + x.campaigns[0].campaignName + \" - \" + x.campaigns[0].clientName + \" - \" + x.startDate\n // return x;\n // });\n // }\n // });\n // this.appService.fetchAllUserSubscriptions();\n }\n ngOnInit(): void {\n this.addForm = this.formBuilder.group({\n id: [null],\n subscriptionId: [this.subscriptionId, [Validators.required]],\n period: [null, [Validators.required]],\n amount: [null, [Validators.required]],\n isPaid: [null]\n });\n for (var i = 0; i < this.products.length; i++) {\n this.products[i].amount = 0; // Add \"total\": 2 to all objects in array\n }\n this.totalOrderAmount = 0;\n }\n\n get f() { return this.addForm.controls; }\n\n onSubmit() {\n this.submitted = true;\n var reqProducts = [];\n for (var i = 0; i < this.products.length; i++) {\n var amt = isNaN(this.products[i].amount) ? 0 : this.products[i].amount;\n reqProducts.push({productId : this.products[i].id, Amount : amt});\n }\n\n if(this.totalOrderAmount == 0){\n return;\n }\n\n var yourDate = new Date();\n const offset = yourDate.getTimezoneOffset();\n yourDate = new Date(yourDate.getTime() - (offset*60*1000))\n let todayAtUserComputer = yourDate.toISOString().split('T')[0];\n\n const request = {\n SubscriptionId: this.addForm.value.subscriptionId,\n TodayAtUserComputer: todayAtUserComputer,\n Products: reqProducts\n };\n this.ordersService.addOrderToSubscription(request).subscribe((response: any) => {\n if (response.good) {\n this.activeModal.close();\n if(response.error == ''){\n Swal.fire({\n title: 'Order Created',\n text: \"Order has been successfully added to the subscription\",\n icon: 'success',\n showCancelButton: false,\n confirmButtonText: 'Ok',\n }).then((result) => {\n this.oSaveClicked.emit();\n })\n }\n else{\n Swal.fire({\n title: 'Order Created',\n text: \"Order has been successfully added to the subscription. But There was an error processing payments\",\n icon: 'warning',\n showCancelButton: false,\n confirmButtonText: 'Ok',\n }).then((result) => {\n this.oSaveClicked.emit();\n })\n }\n \n }\n });\n }\n\n transformAmount(control : any) {\n let amount = control.target.value;\n //amount = amount.replace('$', '').replace(',', '');\n if (isNaN(+amount)){\n amount = 0;\n }\n control.target.value = Number(amount);\n this.totalOrderAmount = 0;\n for (var i = 0; i < this.products.length; i++) {\n var amt:number = +this.products[i].amount;\n if(!isNaN(amt))\n this.totalOrderAmount = this.totalOrderAmount + amt;\n }\n }\n\n formatPrice(price: any) {\n return formatCurrency(price, 'en-US', '$')\n }\n}","<div class=\"modal-box\" cdkDrag>\n <form id=\"frmAddForm\" (ngSubmit)=\"onSubmit()\">\n <div class=\"parent\">\n <div class=\"modal-header\" style=\"cursor: move; display: flex; flex-direction: row; justify-content: space-between;\" cdkDragHandle>\n <h4 class=\"modal-title\">Add order to subscription</h4>\n <button type=\"button\" class=\"close\" aria-label=\"Close\" (click)=\"activeModal.dismiss('Cross click')\">\n <span aria-hidden=\"true\">×</span>\n </button>\n </div>\n <div class=\"modal-body\">\n <div class=\"products\">\n <table style=\"width: 100%;\">\n <tr>\n <th>Items</th>\n <th>Cost</th>\n <th>Amount</th>\n <th></th>\n </tr>\n <ng-container *ngFor=\"let product of products\">\n <tr>\n <td><img [src]=\"product.mediaSrc\">{{product.name}}</td>\n <td>{{formatPrice(product.price)}}</td>\n <td>\n <div class=\"input-group input-group-sm mb-1\">\n <span class=\"input-group-text border-0 bg-none\">$ </span>\n <input type=\"text\" name=\"{{product.id}}\" class=\"form-control\" (blur)=\"transformAmount($event)\"\n [(ngModel)]=\"product.amount\"\n placeholder=\"enter amount\">\n </div>\n </td>\n <td>\n </td>\n </tr>\n </ng-container>\n <tr>\n <td></td>\n <td></td>\n <td colspan=\"2\">\n <p style=\"line-height: normal; margin-top: 1rem;\">Order Total: {{formatPrice(totalOrderAmount)}}</p>\n </td>\n </tr>\n </table>\n </div>\n </div>\n </div>\n <div class=\"modal-footer\" style=\"cursor: move; display: flex; flex-direction: row; justify-content: space-between;\" cdkDragHandle>\n <button type=\"button\" class=\"btn btn-orange\" (click)=\"activeModal.close('Close click')\">Cancel</button>\n <button type=\"submit\" class=\"blue-button\" [disabled]=\"totalOrderAmount == 0\">Save</button>\n </div>\n </form>\n</div>","import { CurrencyPipe } from '@angular/common';\nimport { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\nimport { ReplaySubject } from 'rxjs';\nimport { AppService } from '../../../store/app.service';\nimport { takeUntil } from 'rxjs/operators';\nimport { OrdersApiService } from '../../../pages/orders/orders.apiservice';\n\n@Component({\n selector: 'app-add-order',\n templateUrl: './add-order.component.html',\n styleUrls: ['./add-order.component.scss']\n})\n\nexport class AddOrderModal implements OnInit {\n private destroyed$: ReplaySubject<boolean> = new ReplaySubject(1);\n @Input() subscriptionId!: string;\n @Output() oSaveClicked = new EventEmitter<any>();\n products!: any[];\n selectedProducts: string[] = [];\n addForm!: FormGroup;\n submitted = false;\n allSubscriptions: Array<any>;\n\n constructor(private appService: AppService,\n private ordersService: OrdersApiService,\n public activeModal: NgbActiveModal,\n private formBuilder: FormBuilder,\n private currencyPipe: CurrencyPipe) {\n\n this.allSubscriptions = new Array<any>();\n this.appService.getAllUserSubscription()\n .pipe(takeUntil(this.destroyed$))\n .subscribe((response: any) => {\n if (response) {\n this.allSubscriptions = response.map((x: any) => {\n x.value = x.numericId + \" - \" + x.campaigns[0].campaignName + \" - \" + x.campaigns[0].clientName + \" - \" + x.startDate\n return x;\n });\n }\n });\n this.appService.fetchAllUserSubscriptions();\n }\n ngOnInit(): void {\n this.addForm = this.formBuilder.group({\n id: [null],\n subscriptionId: [this.subscriptionId, [Validators.required]],\n period: [null, [Validators.required]],\n amount: [null, [Validators.required]],\n isPaid: [null]\n });\n }\n\n get f() { return this.addForm.controls; }\n\n onSubmit() {\n this.submitted = true;\n if (this.addForm.invalid)\n return;\n var period = this.addForm.value.period.split(' to ');\n if (period.length < 2) {\n this.addForm.controls['period'].patchValue('');\n return;\n }\n const request = {\n SubscriptionId: this.addForm.value.subscriptionId,\n Amount: this.addForm.value.amount.replace('$', '').replace(',', ''),\n From: period[0],\n To: period[1],\n IsPaid: this.addForm.value.isPaid ?? false\n };\n this.ordersService.addOrder(request).subscribe((response: any) => {\n if (response.good) {\n this.activeModal.close();\n this.oSaveClicked.emit();\n }\n });\n }\n\n transformAmount() {\n const control = this.addForm.controls['amount'];\n let amount = control.value;\n amount = amount.replace('$', '').replace(',', '');\n if (isNaN(+amount))\n amount = '';\n else\n amount = this.currencyPipe.transform(amount, '$');\n control.patchValue(amount);\n }\n}","<div class=\"modal-box\" cdkDrag>\n <form [formGroup]=\"addForm\" (ngSubmit)=\"onSubmit()\">\n <div class=\"parent\">\n <div class=\"modal-header\" style=\"cursor: move; display: flex; flex-direction: row; justify-content: space-between;\" cdkDragHandle>\n <h4 class=\"modal-title\">Add order to subscription</h4>\n <button type=\"button\" class=\"close\" aria-label=\"Close\" (click)=\"activeModal.dismiss('Cross click')\">\n <span aria-hidden=\"true\">×</span>\n </button>\n </div>\n <div class=\"modal-body\">\n <div class=\"row mb-3\">\n <label class=\"col-sm-3\" for=\"subscriptionId\">Subscription</label>\n <div class=\"col-sm-9\">\n <ng-select formControlName=\"subscriptionId\"\n [ngClass]=\"{ 'is-invalid': submitted && f.subscriptionId.errors }\" bindLabel=\"value\" bindValue=\"id\"\n [items]=\"allSubscriptions\">\n </ng-select>\n <div *ngIf=\"submitted && f.subscriptionId.errors\" class=\"invalid-feedback\">\n <div *ngIf=\"f.subscriptionId.errors.required\">subscription is required\n </div>\n </div>\n </div>\n </div>\n <div class=\"row mb-3\">\n <label class=\"col-sm-3\">Period</label>\n <div class=\"col-sm-9\">\n <input mwlFlatpickr [altInputClass]=\"'datetime'\" mode=\"range\" [altInput]=\"true\"\n [convertModelValue]=\"false\" formControlName=\"period\" class=\"form-control\"\n [ngClass]=\"{ 'is-invalid': submitted && f.period.errors }\" placeholder=\"select period\">\n <div *ngIf=\"submitted && f.period.errors\" class=\"invalid-feedback\">\n <div *ngIf=\"f.period.errors.required\">period is required</div>\n </div>\n </div>\n </div>\n <div class=\"row mb-3\">\n <label class=\"col-sm-3\">Amount</label>\n <div class=\"col-sm-9\">\n <div class=\"input-group input-group-sm mb-1\">\n <span class=\"input-group-text border-0 bg-none\">$ </span>\n <input type=\"text\" class=\"form-control\" (blur)=\"transformAmount()\"\n formControlName=\"amount\" [ngClass]=\"{ 'is-invalid': submitted && f.amount.errors }\"\n placeholder=\"enter amount\">\n <div *ngIf=\"submitted && f.amount.errors\" class=\"invalid-feedback\">\n <div *ngIf=\"f.amount.errors.required\">amount is required</div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"row mb-3\">\n <label class=\"col-sm-3\">Paid</label>\n <div class=\"col-sm-9\">\n <input tabindex=\"-1\" class=\"form-check-input\" type=\"checkbox\" formControlName=\"isPaid\" id=\"paid\"\n style=\"margin-right: 10px;\">\n <label class=\"form-check-label\" for=\"paid\">\n Mark as paid\n </label>\n </div>\n </div>\n </div>\n </div>\n <div class=\"modal-footer\" style=\"cursor: move; display: flex; flex-direction: row; justify-content: space-between;\" cdkDragHandle>\n <button type=\"button\" class=\"btn btn-orange\" (click)=\"activeModal.close('Close click')\">Cancel</button>\n <button type=\"submit\" class=\"blue-button\">Save</button>\n </div>\n </form>\n</div>","import { Component, EventEmitter, Input, OnDestroy, Output } from '@angular/core';\nimport { FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';\nimport { NgbActiveModal } from \"@ng-bootstrap/ng-bootstrap\";\nimport { ReplaySubject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { IPermission } from '../../../core/models/auth.models';\nimport { ICampaign } from '../../../core/models/campaigns.model';\nimport { ILead } from '../../../core/models/lead.models';\nimport { PaymentMethodApiService } from '../../../pages/my-account/payment-method/payment-method.apiservice';\nimport { AppService } from '../../../store/app.service';\nimport { PAGE_NAMES } from '../../../core/helpers/constants';\nimport { SubscriptionApiService } from '../../../pages/subscriptions/subscription.apiservice';\n\n@Component({\n selector: 'modal-add-payment-method',\n templateUrl: './add-payment-method.component.html',\n styleUrls: ['./add-payment-method.component.scss']\n})\nexport class AddPaymentMethodModal implements OnDestroy {\n\n private destroyed$: ReplaySubject<boolean> = new ReplaySubject(1);\n @Output() oSaveClicked = new EventEmitter<any>();\n doWhat: IPermission = {} as IPermission;\n allCampaigns: Array<ICampaign> = new Array<ICampaign>();\n allSubscriptions: Array<any> = new Array<any>();\n\n addForm!: FormGroup;\n submitted = false;\n id: string = '';\n allClients: Array<any> = new Array<any>();\n @Input() subscriptionId = '';\n @Input() clientId = '';\n @Input() isShopOrder = false;\n @Input() iSubscriptions: any[] = [];\n\n @Input() set iId(value: string) {\n this.id = value;\n if (value) {\n this.loadDetails();\n }\n }\n expiryControl = new FormControl();\n\n constructor(\n private appService: AppService,\n private paymentMethodApiService: PaymentMethodApiService,\n public activeModal: NgbActiveModal,\n private formBuilder: FormBuilder,\n private subscriptionApiService: SubscriptionApiService) {\n\n this.addForm = this.formBuilder.group({\n id: [null],\n paymentType: ['Card', [Validators.required]],\n businessName: [null],\n nickname: [null, [Validators.required]],\n clientId: [null, [Validators.required]],\n cardNumber: [null, [Validators.required]],\n cvv: [null, [Validators.required]],\n expiry: [null, [Validators.required]],\n achAccountName: [null],\n bankRoutingNumber: [null],\n bankAccountNumber: [null],\n firstName: [null, [Validators.required]],\n lastName: [null, [Validators.required]],\n address: [null, []],\n city: [null],\n state: [''],\n zip: [''],\n subscriptionId: [null]\n });\n\n this.appService.getAllClientsFeed$()\n .pipe(takeUntil(this.destroyed$))\n .subscribe((response: any) => {\n this.allClients = [...response].map(i => { i.fullName = i.firstName + ' ' + i.lastName; return i; });\n if (this.allClients.length === 0)\n this.appService.fetchAllClientsFeed();\n });\n\n this.addForm.get('clientId')?.valueChanges\n .pipe(takeUntil(this.destroyed$))\n .subscribe(clientId => {\n if (clientId) {\n this.loadSubscriptionsByClientId();\n }\n });\n }\n\n setFormValidation(type:string){\n if(type == 'Card'){\n this.addForm.controls[\"cardNumber\"].setValidators([Validators.required]);\n this.addForm.controls[\"cardNumber\"].updateValueAndValidity();\n // this.addForm.controls[\"cvv\"].setValidators([Validators.required]);\n // this.addForm.controls[\"cvv\"].updateValueAndValidity();\n this.addForm.controls[\"expiry\"].setValidators([Validators.required]);\n this.addForm.controls[\"expiry\"].updateValueAndValidity();\n this.addForm.controls[\"firstName\"].setValidators([Validators.required]);\n this.addForm.controls[\"firstName\"].updateValueAndValidity();\n this.addForm.controls[\"lastName\"].setValidators([Validators.required]);\n this.addForm.controls[\"lastName\"].updateValueAndValidity();\n this.addForm.controls[\"achAccountName\"].clearValidators();\n this.addForm.controls[\"achAccountName\"].updateValueAndValidity();\n this.addForm.controls[\"bankRoutingNumber\"].clearValidators();\n this.addForm.controls[\"bankRoutingNumber\"].updateValueAndValidity();\n this.addForm.controls[\"bankAccountNumber\"].clearValidators();\n this.addForm.controls[\"bankAccountNumber\"].updateValueAndValidity();\n }\n else{\n this.addForm.controls[\"cardNumber\"].clearValidators();\n this.addForm.controls[\"cardNumber\"].updateValueAndValidity();\n this.addForm.controls[\"cvv\"].clearValidators();\n this.addForm.controls[\"cvv\"].updateValueAndValidity();\n this.addForm.controls[\"expiry\"].clearValidators();\n this.addForm.controls[\"expiry\"].updateValueAndValidity();\n this.addForm.controls[\"firstName\"].clearValidators();\n this.addForm.controls[\"firstName\"].updateValueAndValidity();\n this.addForm.controls[\"lastName\"].clearValidators();\n this.addForm.controls[\"lastName\"].updateValueAndValidity();\n this.addForm.controls[\"achAccountName\"].setValidators([Validators.required]);\n this.addForm.controls[\"achAccountName\"].updateValueAndValidity();\n this.addForm.controls[\"bankRoutingNumber\"].setValidators([Validators.required]);\n this.addForm.controls[\"bankRoutingNumber\"].updateValueAndValidity();\n this.addForm.controls[\"bankAccountNumber\"].setValidators([Validators.required]);\n this.addForm.controls[\"bankAccountNumber\"].updateValueAndValidity();\n }\n }\n\n ngOnInit(): void {\n // this.appService.setPageTitle$('Payment Methods');\n this.doWhat = this.appService.getUserRolesForPage(PAGE_NAMES.PaymentMethods);\n\n // Patch the form values here\n if (this.clientId) {\n this.addForm.patchValue({ clientId: this.clientId });\n }\n if (this.subscriptionId) {\n this.addForm.patchValue({ subscriptionId: this.subscriptionId });\n }\n }\n\n get f() { return this.addForm.controls; }\n\n loadDetails() {\n this.addForm.patchValue({ 'id': this.id });\n this.paymentMethodApiService.getPaymentMethod(this.id)\n .pipe(takeUntil(this.destroyed$))\n .subscribe((response: any) => {\n this.addForm.patchValue(response.paymentMethod);\n this.setFormValidation(response.paymentMethod.paymentType);\n });\n this.addForm.controls[\"cvv\"].clearValidators();\n this.addForm.controls[\"cvv\"].updateValueAndValidity();\n }\n\n loadSubscriptionsByClientId() {\n this.appService.getAllUserSubscription()\n .pipe(takeUntil(this.destroyed$))\n .subscribe((response: any) => {\n if (response.length) {\n if (this.subscriptionId) {\n this.allSubscriptions = response\n .filter((x: any) => x.id === this.subscriptionId)\n .map((x: any) => {\n let campaignName = x.campaigns[0]?.campaignName;\n if (campaignName) {\n campaignName = campaignName.replace(/ (FB|TT)$/, '');\n }\n x.displayName = `${x.numericId}: ${campaignName} (${x.status})`;\n return x;\n });\n } else {\n this.allSubscriptions = response\n .filter((x: any) => (x.status === 'Active' || x.status === 'Payment Error') && x.campaigns[0]?.clientId === this.addForm.get('clientId')?.value)\n .map((x: any) => {\n let campaignName = x.campaigns[0]?.campaignName;\n if (campaignName) {\n campaignName = campaignName.replace(/ (FB|TT)$/, '');\n }\n x.displayName = `${x.numericId}: ${campaignName} (${x.status})`;\n return x;\n });\n }\n }\n });\n if (this.subscriptionId) {\n this.appService.fetchAllUserSubscriptions();\n }\n }\n\n updateData(data: ILead) {\n this.addForm.patchValue(data);\n }\n\n ngAfterViewInit() {\n\n }\n\n onSubmit() {\n this.submitted = true;\n if (this.addForm.invalid) {\n // console.log('Form is invalid');\n return;\n }\n var request = {\n ...this.addForm.getRawValue()\n };\n\n request = this.trimObjectStrings(request);\n\n request.id = this.id;\n // console.log('Submitting payment method:', request);\n this.paymentMethodApiService.addEdit(request).subscribe((response: any) => {\n // console.log('Payment method response:', response);\n if (response.good) {\n if (request.subscriptionId) {\n // console.log('Updating subscription with new payment method');\n this.updateSubscriptionPaymentMethod(request.subscriptionId, response.paymentMethod.id);\n } else {\n this.activeModal.close();\n this.oSaveClicked.emit(response);\n }\n }\n });\n }\n\n updateSubscriptionPaymentMethod(subscriptionId: string, paymentMethodId: string) {\n // console.log('Fetching subscription:', subscriptionId);\n this.subscriptionApiService.getSubscription(subscriptionId)\n .pipe(takeUntil(this.destroyed$))\n .subscribe((response: any) => {\n // console.log('Subscription response:', response);\n if (response.good) {\n const subscription = response.subscription;\n subscription.paymentMethodId = paymentMethodId;\n const request = {\n id: subscription.id,\n adSpend: subscription.products.map((x: any) => { return { productId: x.id, adSpend: x.adSpend } }),\n paymentMethodId: paymentMethodId\n };\n // console.log('Updating subscription:', request);\n this.subscriptionApiService.edit(request).subscribe((editResponse: any) => {\n // console.log('Edit subscription response:', editResponse);\n if (editResponse.good) {\n this.activeModal.close();\n this.oSaveClicked.emit(editResponse);\n }\n });\n }\n });\n }\n\n // This function will recursively iterate through the object\n trimObjectStrings(obj: any): any {\n // Iterate over each property of the object\n for (const key in obj) {\n if (obj.hasOwnProperty(key)) {\n const value = obj[key];\n \n if (typeof value === 'string') {\n // Trim the string if the value is a string\n obj[key] = value.trim();\n } else if (typeof value === 'object' && value !== null) {\n // Recursively call the function if the value is an object (or array)\n this.trimObjectStrings(value);\n }\n }\n }\n return obj;\n }\n\n ngOnDestroy() {\n this.destroyed$.next(true);\n this.destroyed$.complete();\n }\n}\n","<div class=\"modal-box\" cdkDrag>\n <form [formGroup]=\"addForm\" (ngSubmit)=\"onSubmit()\">\n <div class=\"modal-header\" style=\"cursor: move; background-color: #EBE9EB; justify-content: space-between;\" cdkDragHandle>\n <h4 class=\"modal-title\">{{ id ? 'Edit' : 'Add' }} a Payment Method</h4>\n <button type=\"button\" style=\"background-color: transparent !important;\" class=\"close\" aria-label=\"Close\" (click)=\"activeModal.dismiss('Cross click')\">\n <span aria-hidden=\"true\">×</span>\n </button>\n </div>\n <div class=\"modal-body\">\n <div fxLayout=\"row\" fxLayoutAlign=\"space-between\" fxLayoutGap=\"20px\">\n <div fxLayout=\"column\" style=\"min-width: 70%;\">\n <div fxLayout=\"row\" style=\"margin-bottom: 10px;\" fxLayoutAlign=\"start center\">\n <label style=\"margin-right: 20px; min-width: 105px;\" class=\"\" for=\"name\">Payment Type</label>\n <div class=\"radio-inline\">\n <label class=\"radio-label\">\n <input type=\"radio\" value=\"Card\" formControlName=\"paymentType\" (click)=\"setFormValidation('Card')\"\n [attr.disabled]=\"id != '' ? true : null\"\n [ngClass]=\"{ 'is-invalid': submitted && f.paymentType.errors}\">\n <span> Card</span>\n </label>\n \n <label class=\"radio-label\">\n <input type=\"radio\" value=\"ACH\" formControlName=\"paymentType\" (click)=\"setFormValidation('ACH')\"\n [attr.disabled]=\"id != '' ? true : null\"\n [ngClass]=\"{ 'is-invalid': submitted && f.paymentType.errors }\">\n <span> ACH (Bank Account)</span>\n </label>\n </div>\n <div *ngIf=\"submitted && f.paymentType?.errors\" style=\"font-size: 80%; color: #fd625e;\">\n <div *ngIf=\"f.paymentType?.errors?.required\">Payment type is required.</div>\n </div>\n </div>\n <div fxLayout=\"row\" style=\"margin-bottom: 10px;\" fxLayoutAlign=\"start center\">\n <label for=\"clientId\" style=\"margin-right: 20px; min-width: 105px;\">Client</label>\n <ng-select [readonly]=\"id != '' ? true : false\" style=\"width: 100%;\" formControlName=\"clientId\" placeholder=\"Select client\"\n [ngClass]=\"{ 'is-invalid': submitted && f.clientId.errors }\" bindLabel=\"fullName\" bindValue=\"id\"\n [items]=\"allClients\">\n </ng-select>\n <div *ngIf=\"submitted && f.clientId.errors\" style=\"margin-left: 20px;\" class=\"invalid-feedback\">\n <div *ngIf=\"f.clientId.errors.required\">client is required\n </div>\n </div>\n </div>\n <div *ngIf=\"!isShopOrder\" fxLayout=\"row\" style=\"margin-bottom: 10px;\" fxLayoutAlign=\"start center\">\n <label for=\"subscriptionId\" style=\"margin-right: 20px; min-width: 105px;\">Subscription</label>\n <ng-select style=\"width: 100%;\" formControlName=\"subscriptionId\" placeholder=\"(Optional) Assign to Selected Subscription\"\n [ngClass]=\"{ 'is-invalid': submitted && f.subscriptionId.errors }\" bindLabel=\"displayName\" bindValue=\"id\"\n [items]=\"allSubscriptions\">\n </ng-select>\n </div>\n <div fxLayout=\"row\" style=\"margin-bottom: 10px;\" fxLayoutAlign=\"start center\">\n <label for=\"address\" style=\"margin-right: 20px; min-width: 105px;\">Business Name</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"businessName\"\n [ngClass]=\"{ 'is-invalid': submitted && f.businessName.errors }\" placeholder=\"(Optional) Business Name\">\n <div *ngIf=\"submitted && f.businessName.errors\" class=\"invalid-feedback\">\n <div *ngIf=\"f.businessName.errors.required\">Business name is required</div>\n </div>\n </div>\n <div [hidden]=\"f.paymentType.value !== 'Card'\" fxLayout=\"row\" style=\"margin-bottom: 10px;\" fxLayoutAlign=\"start center\">\n <label for=\"firstName\" style=\"margin-right: 20px; min-width: 105px;\">First Name</label>\n <input style=\"margin-right: 10px;\" type=\"text\" class=\"form-control\" formControlName=\"firstName\"\n [ngClass]=\"{ 'is-invalid': submitted && f.firstName.errors }\" placeholder=\"Enter first name\">\n <div *ngIf=\"submitted && f.firstName.errors\" style=\"margin-right: 20px;\" class=\"invalid-feedback\">\n <div *ngIf=\"f.firstName.errors.required\">first name is required</div>\n </div>\n <label for=\"lastName\" style=\"margin-right: 10px; min-width: 70px;\">Last Name</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"lastName\"\n [ngClass]=\"{ 'is-invalid': submitted && f.lastName.errors }\" placeholder=\"Enter last name\">\n <div *ngIf=\"submitted && f.lastName.errors\" style=\"margin-left: 20px;\" class=\"invalid-feedback\">\n <div *ngIf=\"f.lastName.errors.required\">last name is required</div>\n </div>\n </div>\n <div [hidden]=\"f.paymentType.value != 'ACH'\">\n <div fxLayout=\"row\" style=\"margin-bottom: 10px;\" fxLayoutAlign=\"start center\">\n <label for=\"address\" style=\"margin-right: 20px; min-width: 105px;\">ACH Account Name</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"achAccountName\"\n [ngClass]=\"{ 'is-invalid': submitted && f.achAccountName.errors }\" placeholder=\"Name on the customer's ACH account\">\n <div *ngIf=\"submitted && f.achAccountName.errors\" class=\"invalid-feedback\">\n <div *ngIf=\"f.achAccountName.errors.required\">ACH account name is required</div>\n </div>\n </div>\n <div fxLayout=\"row\" style=\"margin-bottom: 10px;\" fxLayoutAlign=\"start center\">\n <label for=\"address\" style=\"margin-right: 20px; min-width: 105px;\">Bank Account Number</label>\n <input type=\"text\" [attr.disabled]=\"id != '' ? true : null\" class=\"form-control\" formControlName=\"bankAccountNumber\"\n [ngClass]=\"{ 'is-invalid': submitted && f.bankAccountNumber.errors }\" ng-pattern=\"/^[0-9]*$/\"\n placeholder=\"Customer's bank account number\">\n <div *ngIf=\"submitted && f.bankAccountNumber.errors\" class=\"invalid-feedback\">\n <div *ngIf=\"f.bankAccountNumber.errors.required\">Bank account number is required</div>\n </div>\n </div>\n <div fxLayout=\"row\" style=\"margin-bottom: 10px;\" fxLayoutAlign=\"start center\">\n <label for=\"address\" style=\"margin-right: 20px; min-width: 105px;\">Bank Routing Number</label>\n <input type=\"text\" [attr.disabled]=\"id != '' ? true : null\" class=\"form-control\" formControlName=\"bankRoutingNumber\"\n [ngClass]=\"{ 'is-invalid': submitted && f.bankRoutingNumber.errors }\" ng-pattern=\"/^[0-9]*$/\"\n placeholder=\"Customer's bank routing number\">\n <div *ngIf=\"submitted && f.bankRoutingNumber.errors\" class=\"invalid-feedback\">\n <div *ngIf=\"f.bankRoutingNumber.errors.required\">Bank routing number is required</div>\n </div>\n </div>\n </div>\n <div [hidden]=\"f.paymentType.value !== 'Card'\" fxLayout=\"row\" style=\"margin-bottom: 10px;\" fxLayoutAlign=\"start center\">\n <label for=\"cardNumber\" style=\"min-width: 105px; margin-right: 20px;\">Card Number</label>\n <input type=\"text\" [attr.disabled]=\"id != '' ? true : null\" class=\"form-control\" formControlName=\"cardNumber\" mask=\"0000-0000-0000-0000\"\n [ngClass]=\"{ 'is-invalid': submitted && f.cardNumber.errors }\" placeholder=\"xxxx xxxx xxxx xxxx\">\n <div *ngIf=\"submitted && f.cardNumber.errors\" style=\"margin-left: 20px;\" class=\"invalid-feedback\">\n <div *ngIf=\"f.cardNumber.errors.required\">card number is required</div>\n </div>\n </div>\n <div [hidden]=\"f.paymentType.value !== 'Card'\" fxLayout=\"row\" style=\"margin-bottom: 10px;\" fxLayoutAlign=\"start center\">\n <label for=\"expiry\" style=\"margin-right: 20px; min-width: 105px;\">Expiry</label>\n <input type=\"tel\" style=\"max-width: 100px; margin-right: 10px;\" class=\"form-control\" formControlName=\"expiry\" mask=\"00/00\" placeholder=\"MM/YY\"\n [ngClass]=\"{ 'is-invalid': submitted && f.expiry.errors }\">\n <div *ngIf=\"submitted && f.expiry.errors\" style=\"margin-right: 10px;\" class=\"invalid-feedback\">\n <div *ngIf=\"f.expiry.errors.required\">expiry date is required</div>\n </div>\n <label for=\"cvv\" style=\"margin-right: 10px;\">CVV</label>\n <input type=\"tel\" class=\"form-control\" formControlName=\"cvv\"\n [ngClass]=\"{ 'is-invalid': submitted && f.cvv.errors }\" placeholder=\"Enter credit card cvv number\">\n <div *ngIf=\"submitted && f.cvv.errors\" style=\"margin-left: 10px;\" class=\"invalid-feedback\">\n <div *ngIf=\"f.cvv.errors.required\">cvv number is required</div>\n </div>\n </div>\n <div fxLayout=\"row\" style=\"margin-bottom: 10px;\" fxLayoutAlign=\"start center\">\n <label for=\"address\" style=\"margin-right: 20px; min-width: 105px;\">Address</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"address\"\n [ngClass]=\"{ 'is-invalid': submitted && f.address.errors }\" placeholder=\"Enter address\">\n <div *ngIf=\"submitted && f.address.errors\" class=\"invalid-feedback\">\n <div *ngIf=\"f.address.errors.required\">address is required</div>\n </div>\n </div>\n <div fxLayout=\"row\" style=\"margin-bottom: 10px;\" fxLayoutAlign=\"start center\">\n <label for=\"city\" style=\"margin-right: 20px; min-width: 105px;\">City</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"city\"\n [ngClass]=\"{ 'is-invalid': submitted && f.city.errors }\" placeholder=\"Enter city\">\n <div *ngIf=\"submitted && f.city.errors\" class=\"invalid-feedback\">\n <div *ngIf=\"f.city.errors.required\">city is required</div>\n </div>\n </div>\n <div fxLayout=\"row\" style=\"margin-bottom: 10px;\" fxLayoutAlign=\"start center\">\n <label for=\"state\" style=\"margin-right: 20px; min-width: 105px;\">State</label>\n <input type=\"text\" style=\"margin-right: 10px;\" class=\"form-control\" formControlName=\"state\"\n [ngClass]=\"{ 'is-invalid': submitted && f.state.errors }\" placeholder=\"Enter state\">\n <div *ngIf=\"submitted && f.state.errors\" class=\"invalid-feedback\">\n <div *ngIf=\"f.state.errors.required\">state is required</div>\n </div>\n <label for=\"zip\" style=\"margin-right: 10px;\">Zip</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"zip\"\n [ngClass]=\"{ 'is-invalid': submitted && f.zip.errors }\" placeholder=\"Enter zip\">\n <div *ngIf=\"submitted && f.zip.errors\" class=\"invalid-feedback\">\n <div *ngIf=\"f.zip.errors.required\">required</div>\n </div>\n </div>\n <div fxLayout=\"row\" style=\"margin-bottom: 10px;\" fxLayoutAlign=\"start center\">\n <label for=\"nickname\" style=\"margin-right: 20px; min-width: 105px;\">Nickname</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"nickname\"\n [ngClass]=\"{ 'is-invalid': submitted && f.nickname.errors }\" placeholder=\"Enter nickname\">\n <div *ngIf=\"submitted && f.nickname.errors\" style=\"margin-left:20px;\" class=\"invalid-feedback\">\n <div *ngIf=\"f.nickname.errors.required\">nickname is required</div>\n </div>\n </div>\n </div>\n <div>\n <div *ngIf=\"iSubscriptions.length > 0\" fxLayout=\"column\" fxLayoutAlign=\"start top\" style=\"margin-bottom: 10px;\">\n <div style=\"font-weight: bold; line-height: 1; margin-bottom: 10px;\">Associated Subscriptions:</div>\n <div *ngFor=\"let subscription of iSubscriptions\" class=\"subscription-name\">\n {{subscription}}\n </div>\n </div>\n <div *ngIf=\"iSubscriptions.length === 0\">\n <div [hidden]=\"f.paymentType.value != 'Card'\" fxLayout=\"column\" fxLayoutAlign=\"start center\">\n <p>Franchise Focused Marketing accepts all major credit cards including:</p>\n <img style=\"max-width: 125px;\" src=\"../../../../assets/images/MasterCard_Logo.svg.png\" alt=\"Image Alt Text\">\n <img style=\"max-width: 125px;\" src=\"../../../../assets/images/VISA-logo.png\" alt=\"Image Alt Text\">\n <img style=\"max-width: 125px;\" src=\"../../../../assets/images/Discover-logo.png\" alt=\"Image Alt Text\">\n <img style=\"max-width: 125px;\" src=\"../../../../assets/images/American-Express-logo.png\" alt=\"Image Alt Text\">\n </div>\n <div [hidden]=\"f.paymentType.value != 'ACH'\" fxLayout=\"column\" fxLayoutAlign=\"start center\">\n <p>To pay directly from your bank account, fill out the information on this page.</p>\n <img style=\"max-width: 125px;padding-top:50px\" src=\"../../../../assets/images/achprocess.png\" alt=\"Image Alt Text\">\n </div>\n </div>\n </div>\n </div>\n </div>\n <div fxLayout=\"row\" fxLayoutAlign=\"space-between center\" style=\"cursor: move; border-top: 1px solid #e9e9ef; padding: 16px; background-color: #EBE9EB;\" cdkDragHandle>\n <button type=\"button\" class=\"btn btn-orange\" (click)=\"activeModal.close('Close click')\">Cancel</button>\n <button *ngIf=\"doWhat.canCreate || doWhat.canWrite\" type=\"submit\" class=\"orange-button\">SAVE</button>\n </div>\n </form>\n</div>","import { Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { NgbActiveModal } from \"@ng-bootstrap/ng-bootstrap\";\nimport { ReplaySubject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { TASK_PRIORITY } from '../../../core/helpers/constants';\nimport { createGuid } from '../../../core/helpers/utility';\nimport { IClient } from '../../../core/models/clients.models';\nimport { DataFeedService } from '../../api/datafeed.service';\nimport * as util from '../../../core/helpers/utility'\nimport { ICampaign } from '../../../core/models/campaigns.model';\nimport { IUser } from '../../../core/models/auth.models';\nimport { ITask } from '../../../core/models/tasks.models';\nimport * as moment from 'moment'\nimport { TasksApiService } from '../../../pages/tasks/tasks.apiservice';\nimport { CampaignsApiService } from '../../../pages/campaigns/campaigns.apiservice';\nimport * as _ from 'underscore'\nimport { Utility } from '../../utility';\nimport Swal from 'sweetalert2';\n\n@Component({\n selector: 'modal-add-task',\n templateUrl: './add-task.component.html',\n styleUrls: ['./add-task.component.scss']\n})\n\nexport class AddTaskModal implements OnInit, OnDestroy {\n\n calendarRoot: string = 'https://calendar.google.com/calendar/render?action=TEMPLATE&text=';\n calendarDetailsLabel: string = '&details=';\n calendarDatesLabel: string = '&dates=';\n\n private destroyed$: ReplaySubject<boolean> = new ReplaySubject(1);\n @Output() oSaveClicked = new EventEmitter<any>();\n @Output() oDeleteClicked = new EventEmitter<any>();\n @Output() oMarkAsCompleteClicked = new EventEmitter<any>();\n\n public TASK_PRIORITY = TASK_PRIORITY;\n\n allClients: Array<IClient> = new Array<IClient>();\n fiteredCampaigns: Array<ICampaign> = new Array<ICampaign>();\n allUsers: Array<IUser> = new Array<IUser>();\n\n addTaskForm!: FormGroup;\n submitted = false;\n @Input() iCanEdit = true;\n @Input() iCanDelete = true;\n @Input() set iClientId(value: any) {\n if (value !== null)\n this.addTaskForm.controls['clientId'].patchValue(value);\n }\n @Input() set iCampaignId(value: any) {\n if (value !== null)\n this.addTaskForm.controls['campaignId'].patchValue(value);\n }\n @Input() set iId(value: any) {\n this.id = value;\n if (value !== null) {\n this.taskService.getTaskDetails(value)\n .pipe(takeUntil(this.destroyed$))\n .subscribe((response: any) => {\n response.data.clientId = response.data.clientId ?? -1;\n response.data.campaignId = response.data.campaignId ?? -1;\n this.addTaskForm.patchValue(response.data);\n this.addTaskForm.patchValue({ dueDate: new Date(response.data.dueDate) })\n this.iCanEdit = this.iCanEdit;\n this.iCanDelete = response.data?.canTaskDelete;\n });\n }\n }\n id: number = -1;\n\n constructor(\n private dataFeedService: DataFeedService,\n private taskService: TasksApiService,\n public activeModal: NgbActiveModal,\n private campaignService: CampaignsApiService,\n private formBuilder: FormBuilder) {\n this.addTaskForm = this.formBuilder.group({\n id: [null],\n test: [null],\n title: ['', [Validators.required]],\n priority: [2, [Validators.required]],\n campaignId: [null],\n clientId: [null],\n dueDate: [null, Validators.required],\n description: ['', [Validators.required]],\n assignedUserId: ['', [Validators.required]],\n isCompleted: [null]\n });\n\n this.dataFeedService.getAllClients()\n .pipe(takeUntil(this.destroyed$)\n )\n .subscribe((response: any) => {\n if (response.good) {\n this.allClients = _.sortBy([...response.data], 'firstName').map(i => { i.fullName = i.firstName + ' ' + i.lastName; return i; });\n // console.log(this.allClients);\n this.addTaskForm.controls['clientId'].patchValue(this.addTaskForm.controls['clientId'].value);\n }\n });\n\n this.dataFeedService.getAllTaskAssignees()\n .pipe(takeUntil(this.destroyed$))\n .subscribe((response: any) => {\n if (response.good) {\n this.allUsers = [...response.data].map((i) => { i.fullName = i.firstName + ' ' + i.lastName; return i; });\n // console.log(this.allUsers);\n if (this.f.id.value === null) {\n let dueDate = moment().add(23, 'h').add(59, 'm').add(59, 's');\n this.addTaskForm.patchValue({\n assignedUserId: util.getActiveUser().id,\n dueDate: dueDate.toDate(),\n });\n }\n }\n });\n \n }\n\n getCalendarUrl() {\n var client = this.allClients.find(x => x.id === this.addTaskForm.value.clientId)\n if ((client!.fullName != undefined) || (client!.fullName != null)) {\n var clientName = client!.fullName.replace(/\\s+/g, '+');\n } else {\n var clientName = '';\n }\n var campaign = this.fiteredCampaigns.find(x => x.id === this.addTaskForm.value.campaignId);\n if ((campaign!.name != undefined) || (campaign!.name != null)) {\n var campaignName = campaign!.name.replace(/\\s+/g, '+');\n } else {\n var campaignName = '';\n }\n var calendarDates = `${this.addTaskForm.value.dueDate.getFullYear()}${('0' + (this.addTaskForm.value.dueDate.getMonth() + 1)).slice(-2)}${('0' + this.addTaskForm.value.dueDate.getDate()).slice(-2)}T120000`;\n var calendarUrl = this.calendarRoot + this.addTaskForm.value.title.replace(/\\s+/g, '+') + '+with+' + clientName + '+for+' + campaignName + this.calendarDetailsLabel + this.addTaskForm.value.description.replace(/\\s+/g, '+') + this.calendarDatesLabel + calendarDates + '/' + calendarDates;\n window.open(calendarUrl, '_blank');\n }\n\n get f() { return this.addTaskForm.controls; }\n\n updateData(data: IClient) {\n this.addTaskForm.patchValue(data);\n }\n\n ngOnInit() {\n this.f.clientId.valueChanges.subscribe(value => {\n if (value == null || value === -1) {\n this.fiteredCampaigns = [];\n } else {\n this.dataFeedService.getAllClientCampaigns([value])\n .pipe(takeUntil(this.destroyed$))\n .subscribe((response: any) => {\n if (response.good) {\n this.fiteredCampaigns = _.sortBy([...response.data], 'name');\n if (!this.fiteredCampaigns.find(x => x.id === this.addTaskForm.controls[\"campaignId\"].value)) {\n this.addTaskForm.patchValue({ campaignId: null });\n }\n }\n });\n }\n });\n\n this.f.clientId.valueChanges\n .subscribe(val => {\n if (!!val && val === -1) {\n this.fiteredCampaigns = [];\n }\n });\n }\n\n deleteTask() {\n Swal.fire({\n title: 'Are you sure you want to delete this task?',\n text: \"You won't be able to revert this action!\",\n icon: 'warning',\n showCancelButton: true,\n confirmButtonColor: '#3085d6',\n cancelButtonColor: '#d33',\n confirmButtonText: 'Yes, delete it!'\n }).then((result) => {\n if (result.isConfirmed) { \n this.oDeleteClicked.emit(this.f.id.value);\n }\n });\n }\n\n markAsComplete() {\n this.oMarkAsCompleteClicked.emit({ id: this.f.id.value, isCompleted: true, completedOn: moment().utc().toDate() });\n }\n\n onSubmit() {\n this.submitted = true;\n if (this.addTaskForm.invalid)\n return;\n if (this.f.id.value === null || this.f.id.value === -1)\n this.f.id.setValue(createGuid())\n\n if (this.f.campaignId.value === -1)\n this.f.campaignId.setValue(null);\n if (this.f.clientId.value === -1)\n this.f.clientId.setValue(null);\n\n let formValues: ITask = this.addTaskForm.value;\n\n formValues = this.trimObjectStrings(formValues);\n\n formValues.dueDate = Utility.getDateFromDateTime(formValues.dueDate);\n this.oSaveClicked.emit(formValues);\n }\n\n // This function will recursively iterate through the object\n trimObjectStrings(obj: any): any {\n // Iterate over each property of the object\n for (const key in obj) {\n if (obj.hasOwnProperty(key)) {\n const value = obj[key];\n \n if (typeof value === 'string') {\n // Trim the string if the value is a string\n obj[key] = value.trim();\n } else if (typeof value === 'object' && value !== null) {\n // Recursively call the function if the value is an object (or array)\n this.trimObjectStrings(value);\n }\n }\n }\n return obj;\n }\n\n ngOnDestroy() {\n this.destroyed$.next(true);\n this.destroyed$.complete();\n }\n\n}","<div class=\"modal-box\" cdkDrag>\n <form [formGroup]=\"addTaskForm\" (ngSubmit)=\"onSubmit()\">\n <div class=\"modal-header\" fxLayout=\"row\" fxLayoutAlign=\"space-between center\" style=\"cursor: move;\" cdkDragHandle>\n <h4 class=\"modal-title\">{{ id === null ? 'Add' :'Edit'}} Task</h4>\n <div>\n <button type=\"button\" class=\"close\" aria-label=\"Close\" (click)=\"activeModal.dismiss('Cross click')\">\n <span aria-hidden=\"true\">×</span>\n </button>\n </div>\n </div>\n <div class=\"modal-body\">\n <div class=\"row mb-3\">\n <div fxLayout=\"column\" fxLayoutAlign=\"center center\" style=\"width: 10%\">\n <label for=\"title\">Title</label>\n </div>\n <div style=\"width: 45%\">\n <input type=\"text\" class=\"form-control\" formControlName=\"title\"\n [ngClass]=\"{ 'is-invalid': submitted && f.title.errors }\" placeholder=\"Enter task title\">\n <div *ngIf=\"submitted && f.title.errors\" class=\"invalid-feedback\">\n <div *ngIf=\"f.title.errors.required\">title is required</div>\n </div>\n </div>\n <a target=\"_blank\" (click)=\"getCalendarUrl()\" style=\"display: flex; width: 10%; flex-direction: row; align-items: center;\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n fill=\"currentColor\"\n class=\"bi bi-calendar\"\n viewBox=\"0 0 16 16\"\n >\n <path\n d=\"M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5zM1 4v10a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V4H1zm1-1V3h12v1H2z\"\n />\n </svg>\n </a>\n <div fxLayout=\"column\" fxLayoutAlign=\"center center\" style=\"width: 35%\">\n <select formControlName=\"priority\" style=\"color: #f39437 !important; background-color: #fdf2be; border-radius: 50px; padding: 1px 1px 1px 20px; border: 0px; min-width: 145px !important; text-align: start;\">\n <option *ngFor=\"let p of TASK_PRIORITY\" [ngValue]=\"p.value\">{{p.title}}</option>\n </select>\n </div>\n </div>\n <div class=\"row mb-3\">\n <div class=\"col-sm-12\">\n <textarea type=\"text\" class=\"form-control\" rows=\"3\" formControlName=\"description\"\n [ngClass]=\"{ 'is-invalid': submitted && f.description.errors }\"\n placeholder=\"enter task details\"> </textarea>\n <div *ngIf=\"submitted && f.description.errors\" class=\"invalid-feedback\">\n <div *ngIf=\"f.description.errors.required\">text is required</div>\n </div>\n </div>\n </div>\n <div class=\"row mb-3\">\n <label class=\"col-sm-3\" for=\"clientId\">Client\n <a *ngIf=\"addTaskForm.get('clientId')?.value\" target=\"_blank\" href=\"/pages/client-details/{{addTaskForm.get('clientId')?.value}}\">\n <i class=\"fas fa-external-link-alt\"></i>\n </a>\n </label>\n <div class=\"col-sm-9\">\n <ng-select placeholder=\"None\" [items]=\"allClients\" bindLabel=\"fullName\" bindValue=\"id\"\n formControlName=\"clientId\">\n </ng-select>\n </div>\n </div>\n <div class=\"row mb-3\">\n <label class=\"col-sm-3\" for=\"campaignId\">Campaign\n <a *ngIf=\"addTaskForm.get('campaignId')?.value\" target=\"_blank\" href=\"/pages/campaign-details/{{addTaskForm.get('campaignId')?.value}}\">\n <i class=\"fas fa-external-link-alt\"></i>\n </a>\n </label>\n <div class=\"col-sm-9\">\n <ng-select placeholder=\"None\" [items]=\"fiteredCampaigns\" bindLabel=\"name\" bindValue=\"id\"\n formControlName=\"campaignId\">\n </ng-select>\n </div>\n </div>\n <div class=\"row mb-3\">\n <label class=\"col-sm-3\" for=\"dueDate\">Due Date</label>\n <div class=\"col-sm-9\">\n <input [ngClass]=\"{ 'is-invalid': submitted && f.dueDate.errors }\" mwlFlatpickr\n [altInputClass]=\"'datetime'\" [altInput]=\"true\" [convertModelValue]=\"true\" formControlName=\"dueDate\"\n class=\"form-control\" />\n <div *ngIf=\"submitted && f.dueDate.errors\" class=\"invalid-feedback\">\n <div *ngIf=\"f.dueDate.errors.required\">required</div>\n </div>\n </div>\n </div>\n <div class=\"row mb-3\">\n <label class=\"col-sm-3\" for=\"assignedUserId\">Assigned User</label>\n <div class=\"col-sm-9\">\n <ng-select placeholder=\"None\" [items]=\"allUsers\" bindLabel=\"fullName\" bindValue=\"id\"\n formControlName=\"assignedUserId\">\n </ng-select>\n </div>\n </div>\n </div>\n <div *ngIf=\"iCanEdit\" class=\"modal-footer\" style=\"cursor: move; justify-content: space-between;\" cdkDragHandle>\n <div class=\"d-flex justify-content-between align-items-center\" style=\"width: 100%;\">\n <div *ngIf=\"iCanEdit\">\n <button class=\"btn btn-warning\" style=\"box-shadow: none !important;\" type=\"submit\">Save</button> \n </div>\n <button *ngIf=\"id!==null && iCanDelete\" type=\"button\" class=\"btn btn-orange\" (click)=\"deleteTask()\">Delete</button>\n <button *ngIf=\"id!==null && (f.isCompleted.value === null || f.isCompleted.value === false)\" type=\"button\"\n class=\"blue-button\" (click)=\"markAsComplete()\">MARK AS COMPLETE</button>\n </div>\n </div>\n </form>\n</div>","import { Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';\r\nimport { FormArray, FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { NgbActiveModal } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { BehaviorSubject, combineLatest, ReplaySubject } from 'rxjs';\r\nimport { filter, take, takeUntil } from 'rxjs/operators';\r\nimport { PAGE_NAMES, ROLES, ROLES_TYPE } from '../../../core/helpers/constants';\r\nimport { createEmptyGuid, createGuid, getRolesForPage, hasAdminRole, matchingPasswords } from '../../../core/helpers/utility';\r\nimport { IRole, IUser } from '../../../core/models/auth.models';\r\nimport { IClient } from '../../../core/models/clients.models';\r\nimport { UsersApiService } from '../../../pages/users/users.apiservice';\r\nimport { DataFeedService } from '../../api/datafeed.service';\r\nimport * as _ from 'underscore'\r\nimport { AppService } from '../../../store/app.service';\r\nimport { ICompany } from '../../../core/models/datafeed.models';\r\nimport Swal from 'sweetalert2';\r\nimport { ICampaign } from '../../../core/models/campaigns.model';\r\nimport { CampaignsApiService } from '../../../pages/campaigns/campaigns.apiservice';\r\nimport { AccountService } from '../../../account/account.service';\r\nimport { ToastService } from '../../../core/helpers/toast.service';\r\n\r\n@Component({\r\n selector: 'modal-add-user',\r\n templateUrl: './add-user.component.html',\r\n styleUrls: ['./add-user.component.scss']\r\n})\r\nexport class AddUserModal implements OnInit, OnDestroy {\r\n\r\n private destroyed$: ReplaySubject<boolean> = new ReplaySubject(1);\r\n ROLES_TYPE = ROLES_TYPE;\r\n ROLES = ROLES;\r\n showTooltip = new Array<boolean>();\r\n @Output() oSaveClicked = new EventEmitter<any>();\r\n\r\n rawRoles: Array<IRole> = new Array<IRole>();\r\n rolesFiltered: Array<BehaviorSubject<Array<IRole>>> = new Array<BehaviorSubject<Array<IRole>>>();\r\n allCompanies: Array<ICompany> = new Array<ICompany>();\r\n allClients: Array<IClient> = new Array<IClient>();\r\n clientsData: Array<IClient> = new Array<IClient>();\r\n allCampaigns: Array<ICampaign> = new Array<ICampaign>();\r\n clientsFiltered: Array<Array<IClient>> = new Array<Array<IClient>>();\r\n campaignsFiltered: Array<Array<ICampaign>> = new Array<Array<ICampaign>>();\r\n\r\n addUserForm!: FormGroup;\r\n submitted = false;\r\n\r\n rolesOptions: Array<any> = [];\r\n\r\n myRoles: Array<number> = new Array<number>();\r\n isAdmin: boolean = false;\r\n isInternalUser: boolean = false;\r\n activeUser: IUser = {} as IUser;\r\n assignedRoleCodes: Array<number> = [];\r\n iCanCreate: Array<number> = [];\r\n subs = new Map<string | undefined, any>();\r\n canChangeRoles = false;\r\n @Input() set iId(value: string) {\r\n this.id = value;\r\n if (value !== null) {\r\n this.f.operation.setValue('edit');\r\n this.f.password.setValidators([]);\r\n this.f.confirmPassword.setValidators([]);\r\n this.userApiService.getUserDetails(value)\r\n .pipe(takeUntil(this.destroyed$))\r\n .subscribe((response: any) => {\r\n this.addUserForm.patchValue(response.data);\r\n for (var role of response.data.roles) {\r\n this.addRole(role.id, role.roleId, role.companyId, role.clientId, role.campaignId, role.code)\r\n }\r\n this.syncRolesUI();\r\n });\r\n } else {\r\n this.f.password.setValidators([Validators.required]);\r\n this.f.confirmPassword.setValidators([Validators.required]);\r\n this.f.operation.setValue('create');\r\n }\r\n }\r\n id: string = \"\";\r\n\r\n constructor(\r\n private toastService: ToastService,\r\n private dataFeedService: DataFeedService,\r\n private userApiService: UsersApiService,\r\n public activeModal: NgbActiveModal,\r\n private campaignApiService: CampaignsApiService,\r\n private appService: AppService,\r\n private accountService: AccountService,\r\n private formBuilder: FormBuilder) {\r\n this.addUserForm = this.formBuilder.group({\r\n id: [null],\r\n firstName: ['', [Validators.required]],\r\n lastName: ['', [Validators.required]],\r\n password: ['', [Validators.required]],\r\n confirmPassword: [''],\r\n type: [null],\r\n companyId: [''],\r\n email: ['', [Validators.required, Validators.email]],\r\n sendEmail: [false],\r\n operation: 'edit',\r\n roles: this.formBuilder.array([])\r\n }, { validator: matchingPasswords('password', 'confirmPassword') });\r\n\r\n this.appService.getActiveUser$()\r\n .pipe(takeUntil(this.destroyed$))\r\n .subscribe(u => {\r\n this.activeUser = u;\r\n this.myRoles = u.roles.map(x => x.code);\r\n this.isAdmin = hasAdminRole(u.roles);\r\n this.addUserForm.patchValue({ type: u.type });\r\n var r = getRolesForPage(u.roles, PAGE_NAMES.Users);\r\n this.canChangeRoles = this.isAdmin || u.iCanCreate.length > 0;\r\n });\r\n }\r\n get f() { return this.addUserForm.controls; }\r\n\r\n public get roles(): FormArray {\r\n return this.addUserForm.get('roles') as FormArray\r\n }\r\n addRole(id?: string, roleId?: string, companyId?: string, clientId?: string, campaignId?: string, code?: number) {\r\n id = id == undefined ? createGuid() : id;\r\n this.rolesFiltered.push(new BehaviorSubject<Array<IRole>>([]));\r\n let index = this.rolesFiltered.length - 1;\r\n const sub = combineLatest([\r\n this.appService.getAllClientsFeed$(),\r\n this.appService.getRoleRestrictions$(),\r\n this.appService.getAllRoles$(),\r\n this.campaignApiService.getCampaignsNamesByClient(clientId ?? createEmptyGuid()),\r\n this.appService.getAllClients$()\r\n ]).pipe(\r\n takeUntil(this.destroyed$),\r\n filter(x => x[0].length > 0 && x[1].length > 0 && x[2].length > 0),\r\n ).subscribe((r: any) => {\r\n let roleRestrictions: any = r[1];\r\n let allRoles = this.rawRoles = [...r[2]];\r\n\r\n this.assignedRoleCodes = allRoles.filter(y => this.roles.value.map((x: any) => x.roleId).includes(y.id)).map(x => x.code);\r\n\r\n let response: any;\r\n if (!this.isInternalUser) {\r\n if (r[4].data.length > 0) {\r\n response = r[0].filter((item: any) => \r\n r[4].data.some((dataItem: any) => dataItem.id === item.id)\r\n );\r\n } else {\r\n response = null;\r\n }\r\n } else {\r\n response = r[0];\r\n }\r\n this.allClients = [...response].map(i => { i.fullName = i.firstName + ' ' + i.lastName; return i; });\r\n\r\n if (companyId)\r\n this.clientsFiltered.push([...this.allClients.filter(x => x.brandId === companyId).map((i: any) => { i.fullName = i.firstName + ' ' + i.lastName; return i; })]);\r\n else\r\n this.clientsFiltered.push([...this.allClients.map((i: any) => { i.fullName = i.firstName + ' ' + i.lastName; return i; })]);\r\n\r\n // if (campaignId) {\r\n this.campaignsFiltered.push(r[3].data as Array<ICampaign>)\r\n // }\r\n\r\n this.roles.push(this.newRole(id, roleId, companyId, clientId, campaignId, code));\r\n if (this.assignedRoleCodes.length === 0 || this.assignedRoleCodes.every(x => x === ROLES.Admin.Code))\r\n this.rolesFiltered[index].next(allRoles!)\r\n else {\r\n let fr: Array<IRole> = [];\r\n for (let role of allRoles) {\r\n for (let aes of this.assignedRoleCodes) {\r\n let ress = roleRestrictions.find((x: any) => x.userRoleCode == aes);\r\n if (ress && ress.iCanBe !== null)\r\n if (ress.iCanBe.includes(role.code)) {\r\n fr.push(role);\r\n }\r\n if (role.code == aes && role.code !== ROLES.Admin.Code && !fr.some(x => x.code === role.code)) {\r\n fr.push(role);\r\n }\r\n }\r\n }\r\n this.rolesFiltered[index].next(fr)\r\n }\r\n this.subs.get(id).unsubscribe();\r\n this.syncRolesUI();\r\n });\r\n this.subs.set(id, sub);\r\n\r\n }\r\n newRole(id?: string, roleId?: string, companyId?: string, clientId?: string, campaignId?: string, code?: number): FormGroup {\r\n this.rolesOptions.push({});\r\n return this.formBuilder.group({\r\n code: code,\r\n id: [id || createGuid()],\r\n roleId: [roleId || null, Validators.required],\r\n companyId: companyId || null,\r\n clientId: clientId || null,\r\n campaignId: campaignId || null\r\n })\r\n }\r\n deleteRole(i: number) {\r\n this.rolesOptions.splice(i, 1);\r\n this.roles.removeAt(i);\r\n this.clientsFiltered.splice(i, 1);\r\n this.rolesFiltered.splice(i, 1)\r\n }\r\n onRoleChange(evt: any, index: number) {\r\n if (index == 0)\r\n for (let i = 0; i < this.roles.value.length; i++) {\r\n if (i !== 0)\r\n this.deleteRole(i);\r\n }\r\n\r\n this.appService.getAllRoles$()\r\n .pipe(take(1))\r\n .subscribe((allRoles: Array<IRole>) => {\r\n this.rawRoles = allRoles;\r\n var selectedRoleId = this.roles.at(index)?.get('roleId')?.value;\r\n this.showTooltip[index] = [ROLES.Employee.Code, ROLES.SubscriptionEmployee.Code].includes(this.getRoleCodeByRoleId(selectedRoleId))\r\n\r\n var roleCode: any = allRoles.find(x => x.id == evt)?.code;\r\n let roleAttr: any = _.find(ROLES, function (item) {\r\n return item.Code == roleCode\r\n })\r\n if (roleAttr?.Company) {\r\n this.rolesOptions[index] = { ...this.rolesOptions[index], Company: roleAttr.Company.Required };\r\n //if (this.myRoles.some(r => [ROLES.MarketingManager.Code, ROLES.CompanyOwner.Code].includes(r)))\r\n if(roleAttr.Company.Required){\r\n this.roles.at(index)?.get('companyId')?.setValidators([Validators.required]);\r\n }\r\n else{\r\n this.roles.at(index)?.get('companyId')?.clearValidators();\r\n this.roles.at(index)?.get('companyId')?.updateValueAndValidity();\r\n }\r\n }\r\n else {\r\n delete this.rolesOptions[index].Company;\r\n this.roles.at(index)?.get('companyId')?.clearValidators();\r\n this.roles.at(index)?.get('companyId')?.updateValueAndValidity();\r\n }\r\n\r\n if (roleAttr?.Client) {\r\n this.rolesOptions[index] = { ...this.rolesOptions[index], Client: roleAttr.Client.Required };\r\n if(roleAttr.Client.Required){\r\n this.roles.at(index)?.get('clientId')?.setValidators([Validators.required]);\r\n }\r\n else{\r\n this.roles.at(index)?.get('clientId')?.clearValidators();\r\n this.roles.at(index)?.get('clientId')?.updateValueAndValidity();\r\n }\r\n }\r\n else {\r\n delete this.rolesOptions[index].Client;\r\n this.roles.at(index)?.get('clientId')?.clearValidators();\r\n this.roles.at(index)?.get('clientId')?.updateValueAndValidity();\r\n }\r\n\r\n if (roleAttr?.Campaign) {\r\n this.rolesOptions[index] = { ...this.rolesOptions[index], Campaign: roleAttr.Campaign.Required };\r\n if(roleAttr.Campaign.Required){\r\n this.roles.at(index)?.get('campaignId')?.setValidators([Validators.required]);\r\n }\r\n else{\r\n this.roles.at(index)?.get('campaignId')?.clearValidators();\r\n this.roles.at(index)?.get('campaignId')?.updateValueAndValidity();\r\n }\r\n }\r\n else {\r\n delete this.rolesOptions[index].Campaign;\r\n this.roles.at(index)?.get('campaignId')?.clearValidators();\r\n this.roles.at(index)?.get('campaignId')?.updateValueAndValidity();\r\n }\r\n });\r\n }\r\n onRoleCompanyChange(evt: any, index: number) {\r\n if (typeof this.clientsFiltered[index] !== 'undefined' && evt.id !== null) {\r\n this.clientsFiltered[index] = [...this.allClients.filter(x => x.brandId === evt.id).map((i: any) => { i.fullName = i.firstName + ' ' + i.lastName; return i; })]\r\n }\r\n }\r\n onRoleClientChange(evt: any, index: number) {\r\n this.campaignApiService.getCampaignsNamesByClient(evt.id)\r\n .pipe(take(1))\r\n .subscribe((response: any) => {\r\n if (response.good) {\r\n this.campaignsFiltered[index] = response.data;\r\n }\r\n });\r\n }\r\n syncRolesUI() {\r\n let index = 0;\r\n for (var role of this.f.roles.value) {\r\n let roleAttr: any = _.find(ROLES, (item) => {\r\n let code = this.getRoleCodeByRoleId(role.roleId);\r\n return item.Code == code\r\n })\r\n if (roleAttr?.Company) {\r\n this.rolesOptions[index] = { ...this.rolesOptions[index], Company: roleAttr.Company.Required };\r\n //if (this.myRoles.some(r => [ROLES.MarketingManager.Code, ROLES.CompanyOwner.Code].includes(r)))\r\n this.roles.at(index)?.get('companyId')?.setValidators([Validators.required]);\r\n }\r\n else {\r\n delete this.rolesOptions[index].Company;\r\n this.roles.at(index)?.get('companyId')?.clearValidators();\r\n }\r\n\r\n if (roleAttr?.Client) {\r\n this.rolesOptions[index] = { ...this.rolesOptions[index], Client: roleAttr.Client.Required };\r\n // this.roles.at(index)?.get('clientId')?.setValidators([Validators.required]);\r\n }\r\n else {\r\n delete this.rolesOptions[index].Client;\r\n // this.roles.at(index)?.get('clientId')?.clearValidators();\r\n }\r\n\r\n if (roleAttr?.Campaign) {\r\n this.rolesOptions[index] = { ...this.rolesOptions[index], Campaign: roleAttr.Campaign.Required };\r\n // this.roles.at(index)?.get('campaignId')?.setValidators([Validators.required]);\r\n }\r\n else {\r\n delete this.rolesOptions[index].Campaign;\r\n // this.roles.at(index)?.get('campaignId')?.clearValidators();\r\n }\r\n index++;\r\n }\r\n }\r\n\r\n updateData(data: IClient) {\r\n this.addUserForm.patchValue(data);\r\n }\r\n getRoleCodeByRoleId(roleId: string) {\r\n return this.rawRoles.find(x => x.id === roleId)?.code!\r\n }\r\n\r\n ngOnInit() {\r\n const user = this.appService.getActiveUser$().value;\r\n this.isInternalUser = user.type == 1;\r\n this.appService.fetchRoleRestrictions();\r\n this.appService.fetchAllClientsFeed();\r\n this.appService.fetchAllClients(\r\n { SavedSearchId: '', endDate: null, pageNumber: 1, pageSize: null, search: \"\", sortColumn: \"lastName,firstName\", sortDirection: \"asc\", startDate: null }\r\n );\r\n this.appService.fetchAllRoles();\r\n this.dataFeedService.getAllCompanies()\r\n .pipe(takeUntil(this.destroyed$)\r\n )\r\n .subscribe((response: any) => {\r\n if (response.good) {\r\n this.allCompanies = [...response.data];\r\n }\r\n });\r\n }\r\n ngAfterViewInit() {\r\n this.assignedRoleCodes = this.roles.value.map((x: any) => x.code);\r\n }\r\n\r\n loadUser() {\r\n if (this.id !== '') {\r\n this.userApiService.getUserDetails(this.id)\r\n .pipe(takeUntil(this.destroyed$))\r\n .subscribe((response: any) => {\r\n this.addUserForm.patchValue(response.data);\r\n for (var role of response.data.roles) {\r\n this.addRole(role.id, role.roleId, role.companyId, role.clientId, role.campaignId, role.code)\r\n }\r\n this.syncRolesUI();\r\n });\r\n }\r\n }\r\n\r\n onSubmit() {\r\n this.submitted = true;\r\n if (this.f.operation.value === 'create' && this.f.roles.value.length === 0) {\r\n this.f.roles.setErrors({ 'required': true });\r\n }\r\n if (this.addUserForm.invalid)\r\n return;\r\n if (this.f.id.value === null)\r\n this.f.id.setValue(createGuid());\r\n\r\n if (this.f.operation.value === 'edit' && this.f.roles.value.length === 0 && this.canChangeRoles) {\r\n Swal.fire({\r\n title: 'Are you sure?',\r\n text: 'This user has no roles, it will be deleted',\r\n icon: 'warning',\r\n showCancelButton: true,\r\n confirmButtonColor: '#3085d6',\r\n cancelButtonColor: '#d33',\r\n confirmButtonText: 'Yes, Delete it!'\r\n }).then((result) => {\r\n if (result.isConfirmed) {\r\n this.oSaveClicked.emit(this.addUserForm.value);\r\n }\r\n })\r\n }\r\n else {\r\n var request = this.addUserForm.value;\r\n request = this.trimObjectStrings(request);\r\n this.oSaveClicked.emit(request);\r\n }\r\n }\r\n\r\n // This function will recursively iterate through the object\r\n trimObjectStrings(obj: any): any {\r\n // Iterate over each property of the object\r\n for (const key in obj) {\r\n if (obj.hasOwnProperty(key)) {\r\n const value = obj[key];\r\n \r\n if (typeof value === 'string') {\r\n // Trim the string if the value is a string\r\n obj[key] = value.trim();\r\n } else if (typeof value === 'object' && value !== null) {\r\n // Recursively call the function if the value is an object (or array)\r\n this.trimObjectStrings(value);\r\n }\r\n }\r\n }\r\n return obj;\r\n }\r\n\r\n onAddUserTooltipShown(index: number) {\r\n var sub = this.rolesFiltered[index]\r\n .subscribe(roles => {\r\n // this.showTooltip = \r\n })\r\n sub.unsubscribe();\r\n }\r\n sendPasswordResetEmail() {\r\n let email = this.f.email.value;\r\n this.addUserForm.markAllAsTouched();\r\n if (this.f.email.valid) {\r\n this.toastService.showStandard('Sending Email, Please wait');\r\n this.accountService.requestResetPassword(email)\r\n .pipe(takeUntil(this.destroyed$)\r\n )\r\n .subscribe(response => {\r\n if (response.good) {\r\n this.toastService.showSuccess('Email Sent');\r\n }\r\n });\r\n }\r\n else {\r\n this.toastService.showDanger('Invalid email address');\r\n }\r\n\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroyed$.next(true);\r\n this.destroyed$.complete();\r\n }\r\n\r\n}\r\n","<div class=\"modal-box\" cdkDrag>\r\n <form [formGroup]=\"addUserForm\" (ngSubmit)=\"onSubmit()\">\r\n <div class=\"modal-header\" style=\"cursor: move; display: flex; flex-direction: row; justify-content: space-between;\" cdkDragHandle>\r\n <h4 class=\"modal-title\">{{ id === null ? 'Add' :'Edit'}} User</h4>\r\n <button type=\"button\" class=\"close\" aria-label=\"Close\" (click)=\"activeModal.dismiss('Cross click')\">\r\n <span aria-hidden=\"true\">×</span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body\">\r\n <div class=\"row mb-3\">\r\n <label class=\"col-sm-3\" for=\"firstName\">First Name</label>\r\n <div class=\"col-sm-9\">\r\n <input autocomplete=\"new-password\" type=\"text\" class=\"form-control\" formControlName=\"firstName\"\r\n [ngClass]=\"{ 'is-invalid': submitted && f.firstName.errors }\" placeholder=\"Enter first name\">\r\n <div *ngIf=\"submitted && f.firstName.errors\" class=\"invalid-feedback\">\r\n <div *ngIf=\"f.firstName.errors.required\">Required</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-3\">\r\n <label class=\"col-sm-3\" for=\"lastName\">Last Name</label>\r\n <div class=\"col-sm-9\">\r\n <input autocomplete=\"new-password\" type=\"text\" class=\"form-control\" formControlName=\"lastName\"\r\n [ngClass]=\"{ 'is-invalid': submitted && f.lastName.errors }\" placeholder=\"Enter last name\">\r\n <div *ngIf=\"submitted && f.lastName.errors\" class=\"invalid-feedback\">\r\n <div *ngIf=\"f.lastName.errors.required\">Required</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-3\">\r\n <label class=\"col-sm-3\" for=\"password\">Password</label>\r\n <div class=\"col-sm-9\">\r\n <input autocomplete=\"new-password\" type=\"password\" class=\"form-control\" formControlName=\"password\"\r\n [ngClass]=\"{ 'is-invalid': submitted && f.password.errors }\" placeholder=\"please enter password\">\r\n <div *ngIf=\"submitted && f.password.errors\" class=\"invalid-feedback\">\r\n <div *ngIf=\"f.password.errors.required\">Required</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-3\">\r\n <label class=\"col-sm-3\" for=\"confirmPassword\">Confirm Password</label>\r\n <div class=\"col-sm-9\">\r\n <input type=\"password\" class=\"form-control\" formControlName=\"confirmPassword\"\r\n [ngClass]=\"{ 'is-invalid': submitted && f.confirmPassword.errors }\"\r\n placeholder=\"please confirm your password\">\r\n <div *ngIf=\"submitted && f.confirmPassword.errors\" class=\"invalid-feedback\">\r\n <div *ngIf=\"f.confirmPassword.errors.required\">please confirm your password</div>\r\n <div *ngIf=\"f.confirmPassword.hasError('mismatchedPasswords')\">passwords does not match</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"isAdmin || activeUser.type === ROLES_TYPE.Internal\" class=\"row mb-3\"\r\n [ngClass]=\"{'radio-disabled':id!==null && f.type.value!== null }\">\r\n <label class=\"col-sm-3\" for=\"confirmPassword\">User Type</label>\r\n <div class=\"col-sm-9\">\r\n <div class=\"row\">\r\n <div class=\"col-sm-6\">\r\n <div class=\"form-check form-check-right mb-3\">\r\n <input class=\"form-check-input\" [value]=\"1\" id=\"formRadiosRight1\" type=\"radio\"\r\n formControlName=\"type\">\r\n <label class=\"form-check-label\" for=\"formRadiosRight1\">\r\n Internal\r\n </label>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-6\">\r\n <div class=\"form-check form-check-right mb-3\">\r\n <input class=\"form-check-input\" [value]=\"2\" id=\"formRadiosRight2\" type=\"radio\"\r\n formControlName=\"type\">\r\n <label class=\"form-check-label\" for=\"formRadiosRight2\">\r\n External\r\n </label>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n \r\n </div>\r\n </div>\r\n <div class=\"row mb-3\">\r\n <label class=\"col-sm-3\" for=\"email\">Email</label>\r\n <div class=\"col-sm-9\">\r\n <input type=\"email\" class=\"form-control\" formControlName=\"email\"\r\n [ngClass]=\"{ 'is-invalid': submitted && f.email.errors }\" placeholder=\"Enter email address\">\r\n <div *ngIf=\"submitted && f.email.errors\" class=\"invalid-feedback\">\r\n <div *ngIf=\"f.email.errors.required\">Required</div>\r\n <div *ngIf=\"f.email.errors.email\">email is invalid</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"isAdmin || (canChangeRoles && (activeUser.id !== f.id.value))\" class=\"row mb-3\">\r\n <label class=\"col-sm-3\">Add Role</label>\r\n <div class=\"col-sm-9\">\r\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\">\r\n <i-feather (click)=\"addRole()\" name=\"plus\"></i-feather>\r\n <label style=\"margin-bottom: 0; padding-left:5px\">Assign one or more roles for this user</label>\r\n </div>\r\n <div *ngIf=\"submitted && f.roles.errors\" class=\"invalid-feedback\" style=\"display: block ;\">\r\n <div *ngIf=\"f.roles.errors.required\">One or more roles are required!</div>\r\n </div>\r\n </div>\r\n </div>\r\n <ng-template #tipContent>\r\n <div *ngIf=\"showTooltip\" fxLayout=\"column\">\r\n <p>If you select only a Client record, this user will be able to see all Campaigns under this Client</p>\r\n <p>If you also select a Campaign, the user will only see that one Campaign</p>\r\n <p>You can add multiple Campaigns by adding additional Roles</p>\r\n </div>\r\n </ng-template>\r\n <div *ngIf=\"isAdmin || (canChangeRoles && (activeUser.id !== f.id.value))\" class=\"row mb-3\">\r\n\r\n <div formArrayName=\"roles\">\r\n <div class=\"mb-3\" *ngFor=\"let c of roles.controls; let i=index\">\r\n <div [formGroupName]=\"i\">\r\n <div class=\"row\">\r\n <label class=\"col-sm-3 col-form-label\">Role</label>\r\n <input type=\"hidden\" formControlName=\"id\" />\r\n <div (shown)=\"onAddUserTooltipShown(i)\" [ngbTooltip]=\"showTooltip[i] ? tipContent:''\"\r\n tooltipClass=\"tooltip-roles-ddl\" container=\"body\"\r\n [ngClass]=\"{ 'col-sm-8' : (rolesOptions[i].Company === undefined && rolesOptions[i].Client === undefined), 'col-sm-4': (rolesOptions[i].Company !==undefined || rolesOptions[i].Client !==undefined) }\">\r\n <ng-select tooltip=\"voila\" (change)=\"onRoleChange($event,i)\"\r\n [ngClass]=\"{ 'is-invalid': submitted && roles.at(i).get('roleId')?.errors }\"\r\n formControlName=\"roleId\">\r\n <ng-option [attr.roleCode]=\"r.code\"\r\n *ngFor=\"let r of ( (rolesFiltered[i] | async) || [] | P_RolesType_Filter: f.type.value)\"\r\n [value]=\"r.id\">{{r.title}} </ng-option>\r\n </ng-select>\r\n <div *ngIf=\"submitted && roles.at(i).get('roleId')?.errors\" class=\"invalid-feedback\">\r\n <div *ngIf=\"roles.at(i).get('roleId')?.errors?.required\">Required</div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"rolesOptions[i].Company !==undefined\" class=\"col-sm-4\">\r\n <ng-select\r\n [ngClass]=\"{ 'is-invalid': submitted && roles.at(i).get('companyId')?.errors}\"\r\n placeholder=\"Select Company\" (change)=\"onRoleCompanyChange($event,i)\"\r\n [items]=\"allCompanies\" bindLabel=\"name\" bindValue=\"id\" formControlName=\"companyId\">\r\n </ng-select>\r\n <div *ngIf=\"submitted && roles.at(i).get('companyId')?.errors\" class=\"invalid-feedback\">\r\n <div *ngIf=\"roles.at(i).get('companyId')?.errors?.required\">Required\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"rolesOptions[i].Client !==undefined && rolesOptions[i].Company !==undefined\"\r\n class=\"col-sm-7\"></div>\r\n <div *ngIf=\"rolesOptions[i].Client !==undefined\" class=\"col-sm-4\">\r\n <ng-select (change)=\"onRoleClientChange($event,i)\"\r\n [ngClass]=\"{ 'is-invalid': submitted && roles.at(i).get('clientId')?.errors}\"\r\n [placeholder]=\"rolesOptions[i].Company !== undefined ? 'Select Client (Optional)' : 'Select Client'\"\r\n [items]=\"clientsFiltered[i]\" bindLabel=\"fullName\"\r\n bindValue=\"id\" formControlName=\"clientId\">\r\n </ng-select>\r\n <div *ngIf=\"submitted && roles.at(i).get('clientId')?.errors\" class=\"invalid-feedback\">\r\n <div *ngIf=\"roles.at(i).get('clientId')?.errors?.required\">Required\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"rolesOptions[i].Campaign !==undefined && rolesOptions[i].Campaign !==undefined\"\r\n class=\"col-sm-7\"></div>\r\n <div *ngIf=\"rolesOptions[i].Campaign !==undefined\" class=\"col-sm-4\">\r\n <ng-select\r\n [ngClass]=\"{ 'is-invalid': submitted && roles.at(i).get('campaignId')?.errors}\"\r\n placeholder=\"Select Campaign (Optional)\" [items]=\"campaignsFiltered[i]\" bindLabel=\"name\"\r\n bindValue=\"id\" formControlName=\"campaignId\">\r\n </ng-select>\r\n <div *ngIf=\"submitted && roles.at(i).get('campaignId')?.errors\"\r\n class=\"invalid-feedback\">\r\n <div *ngIf=\"roles.at(i).get('campaignId')?.errors?.required\">Required\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-1\">\r\n <button type=\"button\" class=\"btn btn-outline-danger btn-sm\" (click)=\"deleteRole(i)\">\r\n X\r\n </button>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"id === null &&(isAdmin || myRoles.indexOf(ROLES.SalesRep.Code) > -1)\" class=\"row mb-3\">\r\n <label class=\"col-sm-3\" for=\"sendEmail\">Email crendentials after save</label>\r\n <div class=\"col-sm-9\">\r\n <input type=\"checkbox\" formControlName=\"sendEmail\" class=\"form-check-input\" />\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"modal-footer\" style=\"cursor: move; display: flex; flex-direction: row; justify-content: space-between;\" cdkDragHandle>\r\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\">\r\n <button type=\"button\" style=\"border: 1px solid red; border-radius: 4px; padding: 8px; color: red;\" (click)=\"activeModal.close('Close click')\">Cancel</button>\r\n </div>\r\n <button style=\"float: left; margin-right: 12px; border: #add2ef solid 1px; color: #add2ef; padding: 8px 12px 8px 12px; font-size: 14px; min-height: 35px; min-width: 100px; border-radius: 4px;\" *ngIf=\"id !== null\" type=\"button\" (click)=\"sendPasswordResetEmail()\">Send Password Reset Email</button>\r\n <div>\r\n <button type=\"submit\" class=\"blue-button\">Save</button>\r\n </div>\r\n </div>\r\n </form>\r\n</div>","import { Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { NgbActiveModal } from \"@ng-bootstrap/ng-bootstrap\";\nimport { ReplaySubject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { createGuid } from '../../../core/helpers/utility';\nimport { INotes } from '../../../core/models/campaigns.model';\nimport { ISalesRep } from '../../../core/models/datafeed.models';\nimport { ITag } from '../../../core/models/tags.models';\nimport { TagsApiService } from '../../../pages/tags/tags.apiservice';\nimport { DataFeedService } from '../../api/datafeed.service';\n\n@Component({\n selector: 'modal-assign-tag',\n templateUrl: './assign-tag.component.html',\n styleUrls: ['./assign-tag.component.scss']\n})\nexport class AssignTagModal implements OnInit, OnDestroy {\n\n private destroyed$: ReplaySubject<boolean> = new ReplaySubject(1);\n @Output() oSaveClicked = new EventEmitter<any>();\n\n allTags: Array<ITag> = new Array<ITag>();\n\n assignTagForm!: FormGroup;\n submitted = false;\n\n @Input() iClientId: string = '';\n @Input() iCampaignId: string = '';\n @Input() iProductId: string = '';\n @Input() iType: number = 1;\n @Input() iAssignedTags: Array<string> = new Array<string>();\n\n\n constructor(\n private dataFeedService: DataFeedService,\n private tagService: TagsApiService,\n public activeModal: NgbActiveModal,\n private formBuilder: FormBuilder) {\n this.assignTagForm = this.formBuilder.group({\n id: [null],\n type: [null],\n campaignId: [null],\n clientId: [null],\n productId: [null],\n tagIds: ['', [Validators.required]],\n });\n }\n get f() { return this.assignTagForm.controls; }\n\n ngOnInit() {\n }\n ngAfterViewInit() {\n this.tagService.getAllTags(null)\n .pipe(takeUntil(this.destroyed$)\n )\n .subscribe((response: any) => {\n if (response.good) {\n this.allTags = [...response.data.filter((x: any) => this.iAssignedTags.indexOf(x.id) == -1)];\n }\n });\n }\n onSubmit() {\n this.submitted = true;\n if (this.assignTagForm.invalid)\n return;\n if (this.f.id.value === null)\n this.f.id.setValue(createGuid())\n this.assignTagForm.patchValue({ campaignId: this.iCampaignId, clientId: this.iClientId, productId: this.iProductId, type: this.iType })\n\n this.oSaveClicked.emit(this.assignTagForm.value);\n }\n\n ngOnDestroy() {\n this.destroyed$.next(true);\n this.destroyed$.complete();\n }\n\n}","<div class=\"modal-box\" cdkDrag>\n <form [formGroup]=\"assignTagForm\" (ngSubmit)=\"onSubmit()\">\n <div class=\"modal-header\" style=\"cursor: move; display: flex; flex-direction: row; justify-content: space-between;\" cdkDragHandle>\n <h4 class=\"modal-title\">Assign Tag(s)</h4>\n <button type=\"button\" class=\"close\" aria-label=\"Close\" (click)=\"activeModal.dismiss('Cross click')\">\n <span aria-hidden=\"true\">×</span>\n </button>\n </div>\n <div class=\"modal-body\">\n <div class=\"row mb-3\">\n <label class=\"col-sm-3\" for=\"title\">Select Tags</label>\n <div class=\"col-sm-9\">\n <ng-select [ngClass]=\"{ 'is-invalid': submitted && f.tagIds.errors }\" [multiple]=\"true\" formControlName=\"tagIds\">\n <ng-option *ngFor=\"let tag of allTags\" [value]=\"tag.id\">{{tag.name}}</ng-option>\n </ng-select>\n <div *ngIf=\"submitted && f.tagIds.errors\" class=\"invalid-feedback\">\n <div *ngIf=\"f.tagIds.errors.required\">please select tag(s)</div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"modal-footer\" style=\"cursor: move; display: flex; flex-direction: row; justify-content: space-between;\" cdkDragHandle>\n <button type=\"button\" style=\"border: 1px solid red; border-radius: 4px; padding: 8px; color: red;\" (click)=\"activeModal.close('Close click')\">Close</button>\n <button type=\"submit\" class=\"blue-button\">Save</button>\n </div>\n </form>\n</div>","import { AfterViewInit, Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\nimport { ReplaySubject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport Swal from 'sweetalert2';\nimport { ICampaign } from '../../../core/models/campaigns.model';\nimport { ICompany, ISalesRep } from '../../../core/models/datafeed.models';\nimport { DataFeedService } from '../../api/datafeed.service';\nimport { CAMPAIGN_STAGES, PAGE_NAMES, ROLES, ROLES_TYPE } from '../../../core/helpers/constants';\nimport { IClient } from '../../../core/models/clients.models';\nimport { AppService } from '../../../store/app.service';\nimport { getRolesForPage } from '../../../core/helpers/utility';\nimport { ClientsApiService } from '../../../pages/clients/clients.apiservice';\nimport { CampaignsApiService } from '../../../pages/campaigns/campaigns.apiservice';\n\n@Component({\n selector: 'app-merge-campaign',\n templateUrl: './merge-campaign.component.html',\n styleUrls: ['./merge-campaign.component.scss']\n})\nexport class MergeCampaignsModal implements OnInit, AfterViewInit, OnDestroy {\n step = 1;\n public CAMPAIGN_STAGES = CAMPAIGN_STAGES;\n public allPlatforms = ['Campaign Consulting', 'Facebook', 'Google', 'TikTok', 'National Add On', 'Other', 'Website', 'YouTube'];\n public defaultCRMNames = [\n { title: 'ClubReady', value: 'clubready' },\n { title: 'MindBody', value: 'mindbody' },\n { title: 'Loyalsnap', value: 'loyalsnap' },\n { title: 'Glofox', value: 'glofox' },\n { title: 'Other', value: 'Other' },\n ];\n private destroyed$: ReplaySubject<boolean> = new ReplaySubject(1);\n @Output() oMergeComplete = new EventEmitter<any>();\n @Input() set campaignsToMerge(value: Array<ICampaign>) {\n this.campaigns = value;\n }\n campaigns: Array<ICampaign> = [];\n\n allDms: Array<ISalesRep> = new Array<ISalesRep>();\n allClients: Array<IClient> = new Array<IClient>();\n\n isAdmin: boolean = false;\n isExternal: boolean = false;\n canDelete: boolean = false;\n canRead: boolean = false;\n canWrite: boolean = false;\n options: any = null;\n\n isCustomCrmName = false;\n addCampaignForm!: FormGroup;\n submitted = false;\n constructor(\n private dataFeedService: DataFeedService,\n public activeModal: NgbActiveModal,\n private appService: AppService,\n private campaignsService: CampaignsApiService,\n private clientService: ClientsApiService,\n private formBuilder: FormBuilder) {\n this.addCampaignForm = this.formBuilder.group({\n id: [null],\n name: ['', [Validators.required]],\n platform: [''],\n dmsId: ['', [Validators.required]],\n stageId: [null, [Validators.required]],\n clientId: ['', [Validators.required]],\n opportunityNotes: [''],\n crmId: [''],\n crmName: [''],\n street: ['', [Validators.maxLength(200)]],\n city: ['', [Validators.maxLength(200)]],\n state: ['', [Validators.maxLength(200)]],\n zipcode: ['', [Validators.maxLength(10)]],\n locationPhone: ['', [Validators.maxLength(20)]],\n locationEmail: ['', [Validators.email, Validators.maxLength(50)]],\n //nextActionNotes: [''], https://atlastechdev.atlassian.net/browse/REAC-59\n //nextActionDate: [new Date()], https://atlastechdev.atlassian.net/browse/REAC-59\n //nextActionTime: ['00:00'], https://atlastechdev.atlassian.net/browse/REAC-59\n platformCampaignId: [''],\n platformAccountId: [''],\n });\n\n // this.addClientForm = this.formBuilder.group({\n // id: [null],\n // firstName: ['', [Validators.required]],\n // lastName: ['', [Validators.required]],\n // brandAddress: [''],\n // brandId: [null],\n // dmsId: [''],\n // salesRepId: [null],\n // phone: [''],\n // email: ['', [Validators.required, Validators.email]],\n // });\n }\n get f() { return this.addCampaignForm.controls; }\n\n ngOnInit(): void {\n \n }\n\n ngAfterViewInit() {\n\n this.f.crmName.valueChanges\n .pipe(takeUntil(this.destroyed$)\n ).subscribe(value => {\n if (value === \"Other\") {\n this.f.crmName.setValue('');\n this.isCustomCrmName = true;\n }\n })\n\n this.appService.getActiveUser$()\n .pipe(takeUntil(this.destroyed$))\n .subscribe(u => {\n this.isExternal = u.type == ROLES_TYPE.External;\n var r = getRolesForPage(u.roles, PAGE_NAMES.Campaigns);\n this.isAdmin = r.isAdmin;\n this.canRead = r.canRead;\n this.canWrite = r.canWrite;\n this.canDelete = r.canDelete;\n if (r.options)\n this.options = JSON.parse(r.options!)\n })\n\n this.dataFeedService.getAllUsersWithRole(ROLES.DMS.Code)\n .pipe(takeUntil(this.destroyed$)\n )\n .subscribe((response: any) => {\n if (response.good) {\n this.allDms = [...response.data];\n // this.addClientForm.patchValue({ brandId: response.data[0] });\n }\n });\n\n this.dataFeedService.getAllClients()\n .pipe(takeUntil(this.destroyed$)\n )\n .subscribe((response: any) => {\n if (response.good) {\n this.allClients = [...response.data];\n // this.addClientForm.patchValue({ brandId: response.data[0] });\n }\n });\n }\n\n getStageTitle(id: number){\n return CAMPAIGN_STAGES.find(x => x.value === id)?.title\n }\n\n setPrimaryRecord(id: string) {\n let selectedCampaign = this.campaigns.filter(f => f.id === id)[0];\n this.addCampaignForm.patchValue(selectedCampaign);\n this.isCustomCrmName = !(this.defaultCRMNames.find(x => x.value === selectedCampaign.crmName));\n }\n\n refreshValues() {\n // this.addClientForm.get(\"firstname\").setValue(\"Saurav\")\n }\n\n updateProspectClientDetails() {\n let clientId = this.f.clientId.value;\n this.f.dmsId.setValue('');\n if (clientId) {\n this.clientService.getClientDetails(clientId)\n .pipe(takeUntil(this.destroyed$))\n .subscribe((response: any) => {\n if (response.data.dmsId)\n this.f.dmsId.setValue(response.data.dmsId);\n });\n }\n }\n\n onShowDropdown() {\n this.isCustomCrmName = false;\n this.addCampaignForm.patchValue({ crmName: this.defaultCRMNames[0].value })\n }\n\n onSubmit() {\n Swal.fire({\n title: 'Are you sure you want to merge these records?',\n text: \"You won't be able to revert this action!\",\n icon: 'warning',\n showCancelButton: true,\n confirmButtonColor: '#3085d6',\n cancelButtonColor: '#d33',\n confirmButtonText: 'Yes, merge them!'\n }).then((result) => {\n if (result.isConfirmed) { \n\n var primaryCampaign = this.addCampaignForm?.get(\"id\")?.value;\n var payload = this.addCampaignForm.value;\n var campaignsIdsToMerge = this.campaigns.map(m => m.id);\n\n this.campaignsService.mergeCampaigns(payload, primaryCampaign, campaignsIdsToMerge)\n .pipe(takeUntil(this.destroyed$))\n .subscribe((response: any) => {\n if (response.good) {\n Swal.fire(\n 'Merge successful!',\n 'Campaign details have been successfully merged!',\n 'success'\n )\n \n this.activeModal.dismiss(response)\n this.oMergeComplete.next(response);\n }\n else{\n Swal.fire(\n 'Cannot merge!',\n response.error,\n 'error'\n )\n }\n }); \n }\n });\n }\n\n ngOnDestroy() {\n this.destroyed$.next(true);\n this.destroyed$.complete();\n }\n nextStep() { this.step += 1; }\n previousStep() { this.step -= 1; }\n}\n","<div class=\"modal-box\" cdkDrag>\n <div class=\"modal-header\" style=\"cursor: move; display: flex; flex-direction: row; justify-content: space-between;\" cdkDragHandle>\n <h4 class=\"modal-title\">Merge Campaigns</h4>\n <h5 class=\"modal-title\" *ngIf=\"step==1\">Step 1 - Select Values.</h5>\n <h5 class=\"modal-title\" *ngIf=\"step==2\">Step 2 - Confirm and Merge.</h5>\n <button type=\"button\" class=\"close\" aria-label=\"Close\" (click)=\"activeModal.dismiss('Cross click')\">\n <span aria-hidden=\"true\">×</span>\n </button>\n </div>\n <form [formGroup]=\"addCampaignForm\" (ngSubmit)=\"onSubmit()\">\n <div class=\"modal-body\" *ngIf=\"step==1\">\n <table class=\"table tbl-client\">\n <thead>\n <tr>\n <th class=\"label\"><label>Primary Record?</label></th>\n <th *ngFor=\"let campaign of campaigns\">\n <label class=\"radio-label\">\n <input type=\"radio\" value=\"{{ campaign.id }}\" formControlName=\"id\"\n (click)=\"setPrimaryRecord(campaign.id)\" style=\"height: 16px; width: 16px;\">\n </label>\n <button type=\"button\" (click)=\"setPrimaryRecord(campaign.id)\" class=\"btn btn-link\">\n Select All\n </button>\n </th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th class=\"label\"><label>Campaign Name</label></th>\n <td *ngFor=\"let campaign of campaigns\">\n <label class=\"radio-label\">\n <input type=\"radio\" [value]=\"campaign.name\" formControlName=\"name\"\n style=\"height: 12px; width: 12px;\">\n <span> {{ campaign.name }}</span>\n </label>\n </td>\n </tr>\n <tr>\n <td class=\"label\"><label>Street</label></td>\n <td *ngFor=\"let campaign of campaigns\">\n <label class=\"radio-label\">\n <input type=\"radio\" [value]=\"campaign.street\" formControlName=\"street\"\n style=\"height: 12px; width: 12px;\">\n <span> {{ campaign.street }}</span>\n </label>\n </td>\n </tr>\n <tr>\n <td class=\"label\"><label>City</label></td>\n <td *ngFor=\"let campaign of campaigns\">\n <label class=\"radio-label\">\n <input type=\"radio\" [value]=\"campaign.city\" formControlName=\"city\"\n style=\"height: 12px; width: 12px;\">\n <span> {{ campaign.city }}</span>\n </label>\n </td>\n </tr>\n <tr>\n <td class=\"label\"><label>State</label></td>\n <td *ngFor=\"let campaign of campaigns\">\n <label class=\"radio-label\">\n <input type=\"radio\" [value]=\"campaign.state\" formControlName=\"state\"\n style=\"height: 12px; width: 12px;\">\n <span> {{ campaign.state }}</span>\n </label>\n </td>\n </tr>\n <tr>\n <td class=\"label\"><label>Zipcode</label></td>\n <td *ngFor=\"let campaign of campaigns\">\n <label class=\"radio-label\">\n <input type=\"radio\" [value]=\"campaign.zipcode\" formControlName=\"zipcode\"\n style=\"height: 12px; width: 12px;\">\n <span> {{ campaign.zipcode }}</span> </label>\n </td>\n </tr>\n <tr>\n <td class=\"label\"><label>Phone #</label></td>\n <td *ngFor=\"let campaign of campaigns\">\n <label class=\"radio-label\">\n <input type=\"radio\" [value]=\"campaign.locationPhone\" formControlName=\"locationPhone\"\n style=\"height: 12px; width: 12px;\">\n <span> {{ campaign.locationPhone }}</span>\n </label>\n </td>\n </tr>\n <tr>\n <td class=\"label\"><label>Email</label></td>\n <td *ngFor=\"let campaign of campaigns\">\n <label class=\"radio-label\">\n <input type=\"radio\" [value]=\"campaign.locationEmail\" formControlName=\"locationEmail\"\n style=\"height: 12px; width: 12px;\">\n <span> {{ campaign.locationEmail }}</span>\n </label>\n </td>\n </tr>\n <tr>\n <td class=\"label\"><label>Platform</label></td>\n <td *ngFor=\"let campaign of campaigns\">\n <label class=\"radio-label\">\n <input type=\"radio\" [value]=\"campaign.platform\" formControlName=\"platform\"\n style=\"height: 12px; width: 12px;\">\n <span> {{ campaign.platform }}</span>\n </label>\n </td>\n </tr>\n <tr>\n <td class=\"label\"><label>Stage</label></td>\n <td *ngFor=\"let campaign of campaigns\">\n <label class=\"radio-label\">\n <input type=\"radio\" [value]=\"campaign.stageId\" formControlName=\"stageId\"\n style=\"height: 12px; width: 12px;\">\n <span> {{ getStageTitle(campaign.stageId) }}</span>\n </label>\n </td>\n </tr>\n <tr>\n <td class=\"label\"><label>CRM ID</label></td>\n <td *ngFor=\"let campaign of campaigns\">\n <label class=\"radio-label\">\n <input type=\"radio\" [value]=\"campaign.crmId\" formControlName=\"crmId\"\n style=\"height: 12px; width: 12px;\">\n <span> {{ campaign.crmId }}</span>\n </label>\n </td>\n </tr>\n <tr>\n <td class=\"label\"><label>CRM Name</label></td>\n <td *ngFor=\"let campaign of campaigns\">\n <label class=\"radio-label\">\n <input type=\"radio\" [value]=\"campaign.crmName\" formControlName=\"crmName\"\n style=\"height: 12px; width: 12px;\">\n <span> {{ campaign.crmName }}</span>\n </label>\n </td>\n </tr>\n <tr>\n <td class=\"label\"><label>Client</label></td>\n <td *ngFor=\"let campaign of campaigns\">\n <label class=\"radio-label\">\n <input type=\"radio\" [value]=\"campaign.clientId\" formControlName=\"clientId\"\n style=\"height: 12px; width: 12px;\">\n <span> {{ campaign.clientName }}</span>\n </label>\n </td>\n </tr>\n <tr>\n <td class=\"label\"><label>DMS</label></td>\n <td *ngFor=\"let campaign of campaigns\">\n <label class=\"radio-label\">\n <input type=\"radio\" [value]=\"campaign.dmsId\" formControlName=\"dmsId\"\n style=\"height: 12px; width: 12px;\">\n <span> {{ campaign.dmsName }}</span>\n </label>\n </td>\n </tr>\n <tr>\n <td class=\"label\"><label>Additional Info</label></td>\n <td *ngFor=\"let campaign of campaigns\">\n <label class=\"radio-label\">\n <input type=\"radio\" [value]=\"campaign.opportunityNotes\" formControlName=\"opportunityNotes\"\n style=\"height: 12px; width: 12px;\">\n <span> {{ campaign.opportunityNotes }}</span>\n </label>\n </td>\n </tr>\n <!-- <tr>\n <td class=\"label\"><label>Platform Campaign ID</label></td>\n <td *ngFor=\"let campaign of campaigns\">\n <label class=\"radio-label\">\n <input type=\"radio\" [value]=\"campaign.platformCampaignId \" formControlName=\"platformCampaignId\"\n style=\"height: 12px; width: 12px;\">\n <span> {{ campaign.platformCampaignId }}</span>\n </label>\n </td>\n </tr>\n <tr>\n <td class=\"label\"><label>Platform Account ID</label></td>\n <td *ngFor=\"let campaign of campaigns\">\n <label class=\"radio-label\">\n <input type=\"radio\" [value]=\"campaign.platformAccountId\" formControlName=\"platformAccountId\"\n style=\"height: 12px; width: 12px;\">\n <span> {{ campaign.platformAccountId }}</span>\n </label>\n </td>\n </tr> -->\n </tbody>\n </table> \n </div>\n <div class=\"modal-footer\" *ngIf=\"step==1\" style=\"cursor: move; display: flex; flex-direction: row; justify-content: space-between;\" cdkDragHandle>\n <button type=\"button\" class=\"btn btn-secondry\" style=\"border: 1px solid red; border-radius: 4px; padding: 8px; color: red;\" (click)=\"activeModal.close('Close click')\">Cancel</button>\n <button [disabled]=\"!(addCampaignForm.value.id)\" type=\"button\" class=\"blue-button\" (click)=\"nextStep()\" title=\"Please select primary record to proceed!\">NEXT</button>\n </div>\n <div class=\"modal-body\" *ngIf=\"step == 2\">\n <div class=\"row mb-3\">\n <label class=\"col-sm-3 center-label\" for=\"name\">Campaign Name</label>\n <div class=\"col-sm-4\">\n <input type=\"text\" class=\"form-control\" formControlName=\"name\"\n [ngClass]=\"{ 'is-invalid': submitted && f.name.errors }\"\n placeholder=\"Enter campaign name\">\n </div>\n </div>\n <div *ngIf=\"submitted && f.name.errors\" class=\"row mb-minus-3 row-validation\">\n <div class=\"col-sm-3\"> </div>\n <div class=\"col-sm-9\">\n <div *ngIf=\"f.name.errors.required\">\n Name is required\n </div>\n </div>\n </div>\n <div class=\"row mb-3\">\n <label class=\"col-sm-3\" for=\"street\">Street</label>\n <div class=\"col-sm-4\">\n <textarea rows=\"3\" class=\"form-control\" formControlName=\"street\"\n [ngClass]=\"{ 'is-invalid': submitted && f.street.errors }\"\n placeholder=\"Enter location street\"></textarea>\n </div>\n </div>\n <div *ngIf=\"submitted && f.street.errors\" class=\"row mb-minus-3 row-validation\">\n <div class=\"col-sm-3\"> </div>\n <div class=\"col-sm-9\">\n <div *ngIf=\"f.street.errors.max\">Stret Cannot be greater than 200 characters</div>\n </div>\n </div>\n <div class=\"row mb-3\">\n <label class=\"col-sm-3\" for=\"city\">City</label>\n <div class=\"col-sm-4\">\n <textarea rows=\"3\" class=\"form-control\" formControlName=\"city\"\n [ngClass]=\"{ 'is-invalid': submitted && f.city.errors }\"\n placeholder=\"Enter location city\"></textarea>\n </div>\n </div>\n <div *ngIf=\"submitted && f.city.errors\" class=\"row mb-minus-3 row-validation\">\n <div class=\"col-sm-3\"> </div>\n <div class=\"col-sm-9\">\n <div *ngIf=\"f.city.errors.max\">City Cannot be greater than 200 characters</div>\n </div>\n </div>\n <div class=\"row mb-3\">\n <label class=\"col-sm-3\" for=\"state\">State</label>\n <div class=\"col-sm-4\">\n <textarea rows=\"3\" class=\"form-control\" formControlName=\"state\"\n [ngClass]=\"{ 'is-invalid': submitted && f.state.errors }\"\n placeholder=\"Enter location state\"></textarea>\n </div>\n </div>\n <div *ngIf=\"submitted && f.state.errors\" class=\"row mb-minus-3 row-validation\">\n <div class=\"col-sm-3\"> </div>\n <div class=\"col-sm-9\">\n <div *ngIf=\"f.state.errors.max\">State Cannot be greater than 200 characters</div>\n </div>\n </div>\n <div class=\"row mb-3\">\n <label class=\"col-sm-3\" for=\"zipcode\">Zipcode</label>\n <div class=\"col-sm-4\">\n <textarea rows=\"3\" class=\"form-control\" formControlName=\"zipcode\"\n [ngClass]=\"{ 'is-invalid': submitted && f.zipcode.errors }\"\n placeholder=\"Enter location zipcode\"></textarea>\n </div>\n </div>\n <div *ngIf=\"submitted && f.zipcode.errors\" class=\"row mb-minus-3 row-validation\">\n <div class=\"col-sm-3\"> </div>\n <div class=\"col-sm-9\">\n <div *ngIf=\"f.zipcode.errors.max\">Zipcode Cannot be greater than 10 characters</div>\n </div>\n <!-- <div class=\"row mb-3\">\n <label class=\"col-sm-3\" for=\"locationAddress\">Address</label>\n <div class=\"col-sm-4\">\n <textarea rows=\"3\" class=\"form-control\" formControlName=\"locationAddress\"\n [ngClass]=\"{ 'is-invalid': submitted && f.locationAddress.errors }\"\n placeholder=\"Enter location address\"></textarea>\n </div>\n </div>\n <div *ngIf=\"submitted && f.locationAddress.errors\" class=\"row mb-minus-3 row-validation\">\n <div class=\"col-sm-3\"> </div>\n <div class=\"col-sm-9\">\n <div *ngIf=\"f.locationAddress.errors.required\">Address is required </div>\n <div *ngIf=\"f.locationAddress.errors.max\">Cannot be greater than 200 characters</div>\n </div> -->\n </div>\n <div class=\"row mb-3\">\n <label class=\"col-sm-3 center-label\" for=\"locationPhone\">Phone#</label>\n <div class=\"col-sm-4\">\n <input type=\"text\" class=\"form-control\" formControlName=\"locationPhone\"\n [ngClass]=\"{ 'is-invalid': submitted && f.locationPhone.errors }\"\n placeholder=\"Enter contact phone number\">\n </div>\n </div>\n <div *ngIf=\"submitted && f.locationPhone.errors\" class=\"row mb-minus-3 row-validation\">\n <div class=\"col-sm-3\"> </div>\n <div class=\"col-sm-9\">\n <div *ngIf=\"f.locationPhone.errors.required\">Phone number is required</div>\n <div *ngIf=\"f.locationPhone.errors.max\">Cannot be greater than 20 characters</div>\n </div>\n </div>\n <div class=\"row mb-3\">\n <label class=\"col-sm-3 center-label\" for=\"locationEmail\">Email</label>\n <div class=\"col-sm-4\">\n <input type=\"text\" class=\"form-control\" formControlName=\"locationEmail\"\n [ngClass]=\"{ 'is-invalid': submitted && f.locationEmail.errors }\"\n placeholder=\"Enter contact email\">\n </div>\n </div>\n <div *ngIf=\"submitted && f.locationEmail.errors\" class=\"row mb-minus-3 row-validation\">\n <div class=\"col-sm-3\"> </div>\n <div class=\"col-sm-9\">\n <div *ngIf=\"f.locationEmail.errors.required\">Location Email is required</div>\n <div *ngIf=\"f.locationEmail.errors.max\">Cannot be greater than 50 characters</div>\n <div *ngIf=\"f.locationEmail.errors.email\">Invalid email address</div>\n </div>\n </div>\n <div class=\"row mb-3\">\n <label class=\"col-sm-3 center-label\" for=\"platform\">Platform</label>\n <div class=\"col-sm-4\">\n <ng-select [ngClass]=\"{ 'is-invalid': submitted && f.platform.errors }\"\n formControlName=\"platform\">\n <ng-option *ngFor=\"let p of allPlatforms\" [value]=\"p\">{{p}}</ng-option>\n </ng-select>\n </div>\n </div>\n <div *ngIf=\"submitted && f.platform.errors\" class=\"row mb-minus-3 row-validation\">\n <div class=\"col-sm-3\"> </div>\n <div class=\"col-sm-9\">\n <div *ngIf=\"f.platform.errors.required\">platform is required</div>\n </div>\n </div>\n <div class=\"row mb-3\">\n <label class=\"col-sm-3 center-label\" for=\"stageId\">Stage Id</label>\n <div class=\"col-sm-3\">\n <ng-select [ngClass]=\"{ 'is-invalid': submitted && f.stageId.errors }\"\n formControlName=\"stageId\">\n <ng-option *ngFor=\"let stage of CAMPAIGN_STAGES\" [value]=\"stage.value\">{{stage.title}}\n </ng-option>\n </ng-select>\n </div>\n </div>\n <div *ngIf=\"submitted && f.stageId.errors\" class=\"row mb-minus-3 row-validation\">\n <div class=\"col-sm-3\"> </div>\n <div class=\"col-sm-9\">\n <div *ngIf=\"f.stageId.errors.required\">Stage is required</div>\n </div>\n </div>\n <div class=\"row mb-3\">\n <label class=\"col-sm-3 center-label\" for=\"crmId\">CRM ID</label>\n <div class=\"col-sm-4\">\n <input type=\"text\" class=\"form-control\" formControlName=\"crmId\"\n [ngClass]=\"{ 'is-invalid': submitted && f.crmId.errors }\" placeholder=\"Enter CRM ID\">\n </div>\n </div>\n <div *ngIf=\"submitted && f.crmId.errors\" class=\"row mb-minus-3 row-validation\">\n <div class=\"col-sm-3\"> </div>\n <div class=\"col-sm-9\">\n <div *ngIf=\"f.crmId.errors.required\">CRM ID is required</div>\n </div>\n </div>\n <div class=\"row mb-3\">\n <label class=\"col-sm-3 center-label\" for=\"crmName\">CRM Name</label>\n <div class=\"col-sm-4\">\n <ng-select *ngIf=\"!isCustomCrmName\" formControlName=\"crmName\">\n <ng-option *ngFor=\"let c of defaultCRMNames\" [value]=\"c.value\">{{c.title}}\n </ng-option>\n </ng-select>\n <input *ngIf=\"isCustomCrmName\" type=\"text\" class=\"form-control\" formControlName=\"crmName\"\n [ngClass]=\"{ 'is-invalid': submitted && f.crmName.errors }\"\n placeholder=\"Enter CRM Name\">\n </div>\n <div *ngIf=\"isCustomCrmName\" class=\"col-md-1\">\n <i-feather name=\"corner-right-up\" (click)=\"onShowDropdown()\" title=\"Show Dropdown\"\n class=\"icon-sm icon\"></i-feather>\n </div>\n </div>\n <div *ngIf=\"submitted && f.crmName.errors\" class=\"row mb-minus-3 row-validation\">\n <div class=\"col-sm-3\"> </div>\n <div class=\"col-sm-9\">\n <div *ngIf=\"f.crmName.errors.required\">CRM name is required</div>\n </div>\n </div>\n <div class=\"row mb-3\">\n <label class=\"col-sm-3 center-label\" for=\"clientId\">Client</label>\n <div class=\"col-sm-3\">\n <ng-select [ngClass]=\"{ 'is-invalid': submitted && f.clientId.errors }\"\n (change)=\"updateProspectClientDetails()\" formControlName=\"clientId\">\n <ng-option *ngFor=\"let c of allClients\" [value]=\"c.id\">{{c.firstName}} {{c.lastName}}\n </ng-option>\n </ng-select>\n </div>\n </div>\n <div *ngIf=\"submitted && f.clientId.errors\" class=\"row mb-minus-3 row-validation\">\n <div class=\"col-sm-3\"> </div>\n <div class=\"col-sm-9\">\n <div *ngIf=\"f.clientId.errors.required\">Client is required</div>\n </div>\n </div>\n <div class=\"row mb-3\" [ngClass]=\"{'disabled' : options !==null && !options.canAssign}\">\n <label class=\"col-sm-3 center-label\" for=\"dmsId\">Dms</label>\n <div class=\"col-sm-3\">\n <ng-select [ngClass]=\"{ 'is-invalid': submitted && f.dmsId.errors }\"\n formControlName=\"dmsId\">\n <ng-option *ngFor=\"let rep of allDms\" [value]=\"rep.id\">{{rep.firstName}}\n {{rep.lastName}}</ng-option>\n </ng-select>\n </div>\n </div>\n <div *ngIf=\"submitted && f.dmsId.errors\" class=\"row mb-minus-3 row-validation\">\n <div class=\"col-sm-3\"> </div>\n <div class=\"col-sm-9\">\n <div *ngIf=\"f.dmsId.errors.required\">DMS is required</div>\n </div>\n </div>\n <div class=\"row mb-3\">\n <label class=\"col-sm-3\" for=\"opportunityNotes\">Additional Info</label>\n <div class=\"col-sm-4\">\n <textarea rows=\"3\" class=\"form-control\" formControlName=\"opportunityNotes\"\n [ngClass]=\"{ 'is-invalid': submitted && f.opportunityNotes.errors }\"\n placeholder=\"Enter Additional Info\"></textarea>\n </div>\n </div>\n <div *ngIf=\"submitted && f.opportunityNotes.errors\" class=\"row mb-minus-3 row-validation\">\n <div class=\"col-sm-3\"> </div>\n <div class=\"col-sm-9\">\n <div *ngIf=\"f.opportunityNotes.errors.required\">Additional Info is required\n </div>\n </div>\n </div>\n <!-- <div *ngIf=\"!isExternal || isAdmin\" class=\"row mb-3\">\n <label class=\"col-sm-3 center-label\" for=\"platformCampaignId\">Platform Campaign ID</label>\n <div class=\"col-sm-4\">\n <input type=\"text\" class=\"form-control\" formControlName=\"platformCampaignId\"\n [ngClass]=\"{ 'is-invalid': submitted && f.platformCampaignId.errors }\"\n placeholder=\"Enter Platform Campaign ID\">\n </div>\n </div>\n <div *ngIf=\"submitted && f.platformCampaignId.errors\" class=\"row mb-minus-3 row-validation\">\n <div class=\"col-sm-3\"> </div>\n <div class=\"col-sm-9\">\n <div *ngIf=\"f.platformCampaignId.errors.required\">Platform Campaign ID is required</div>\n </div>\n </div> -->\n <!-- <div *ngIf=\"!isExternal || isAdmin\" class=\"row mb-3\">\n <label class=\"col-sm-3 center-label\" for=\"platformAccountId\">Platform Account ID</label>\n <div class=\"col-sm-4\">\n <input type=\"text\" class=\"form-control\" formControlName=\"platformAccountId\"\n [ngClass]=\"{ 'is-invalid': submitted && f.platformAccountId.errors }\"\n placeholder=\"Enter Platform Account ID\">\n </div>\n </div>\n <div *ngIf=\"submitted && f.platformAccountId.errors\" class=\"row mb-minus-3 row-validation\">\n <div *ngIf=\"f.platformAccountId.errors.required\">Platform Account ID is required</div>\n </div> -->\n </div>\n <div class=\"modal-footer\" *ngIf=\"step==2\" style=\"cursor: move; display: flex; flex-direction: row; justify-content: space-between;\" cdkDragHandle>\n <button type=\"button\" class=\"btn btn-secondry\" style=\"border: 1px solid red; border-radius: 4px; padding: 8px; color: red;\" (click)=\"activeModal.close('Cross click')\">Cancel</button>\n <div style=\"display: flex; flex-direction: row; justify-content: end;\">\n <button type=\"button\" class=\"blue-button\" style=\"max-width: 55.97px !important; min-width: 0px !important;\" (click)=\"previousStep()\">Back</button>\n <button type=\"submit\" class=\"btn btn-warning\" style=\"margin-left: 8px; box-shadow: none !important;\">Save</button>\n </div>\n </div>\n </form>\n</div>","import { AfterViewInit, Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\nimport { ReplaySubject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport Swal from 'sweetalert2';\nimport { ROLES } from '../../../core/helpers/constants';\nimport { IClient } from '../../../core/models/clients.models';\nimport { ICompany, ISalesRep } from '../../../core/models/datafeed.models';\nimport { DataFeedService } from '../../api/datafeed.service';\nimport { ClientsApiService } from '../../../pages/clients/clients.apiservice';\n\n@Component({\n selector: 'app-merge-clients',\n templateUrl: './merge-clients.component.html',\n styleUrls: ['./merge-clients.component.scss']\n})\nexport class MergeClientsModal implements OnInit, AfterViewInit, OnDestroy {\n step = 1;\n\n private destroyed$: ReplaySubject<boolean> = new ReplaySubject(1);\n @Output() oMergeComplete = new EventEmitter<any>();\n @Input() set clientsToMerge(value: Array<IClient>) {\n this.clients = value;\n }\n clients: Array<IClient> = [];\n\n allCompanies: Array<ICompany> = new Array<ICompany>();\n allSalesReps: Array<ISalesRep> = new Array<ISalesRep>();\n allDms: Array<ISalesRep> = new Array<ISalesRep>();\n\n addClientForm!: FormGroup;\n submitted = false;\n constructor(\n private dataFeedService: DataFeedService,\n private clientApiService: ClientsApiService,\n public activeModal: NgbActiveModal,\n private formBuilder: FormBuilder) {\n this.addClientForm = this.formBuilder.group({\n id: [null, [Validators.required]],\n firstName: [null, [Validators.required]],\n lastName: [null, [Validators.required]],\n brandAddress: [null, [Validators.required]],\n brandId: [null],\n dmsId: [null],\n salesRepId: [null],\n phone: [null],\n email: [null],\n });\n\n }\n get f() { return this.addClientForm.controls; }\n\n ngOnInit(): void {\n }\n\n ngAfterViewInit() {\n this.dataFeedService.getAllCompanies()\n .pipe(takeUntil(this.destroyed$))\n .subscribe((response: any) => {\n if (response.good) {\n this.allCompanies = [...response.data];\n this.allCompanies.sort((s1, s2) => s1.name.localeCompare(s2.name));\n }\n });\n\n this.dataFeedService.getAllUsersWithRole(ROLES.SalesRep.Code)\n .pipe(takeUntil(this.destroyed$))\n .subscribe((response: any) => {\n if (response.good) {\n this.allSalesReps = [...response.data];\n // this.addClientForm.patchValue({ brandId: response.data[0] });\n }\n });\n\n this.dataFeedService.getAllUsersWithRole(ROLES.DMS.Code)\n .pipe(takeUntil(this.destroyed$)\n )\n .subscribe((response: any) => {\n if (response.good) {\n this.allDms = [...response.data];\n // this.addClientForm.patchValue({ brandId: response.data[0] });\n }\n });\n }\n\n /*\n setPrimaryRecord(id: string) {\n let selectedClient = this.clients.filter(f => f.id === id)[0];\n this.addClientForm.patchValue(selectedClient);\n }\n */\n setPrimaryRecord(id: string) {\n const selectedClient = this.clients.find(client => client.id === id);\n if (selectedClient) {\n this.addClientForm.patchValue({\n ...selectedClient,\n isProspect: selectedClient.isProspect // Retain the isProspect value\n });\n }\n }\n\n refreshValues() {\n // this.addClientForm.get(\"firstname\").setValue(\"Saurav\")\n }\n\n /*\n onSubmit() {\n Swal.fire({\n title: 'Are you sure you want to merge these records?',\n text: \"You won't be able to revert this action!\",\n icon: 'warning',\n showCancelButton: true,\n confirmButtonColor: '#3085d6',\n cancelButtonColor: '#d33',\n confirmButtonText: 'Yes, merge them!'\n }).then((result) => {\n if (result.isConfirmed) { \n\n var primaryClient = this.addClientForm?.get(\"id\")?.value;\n var payload = this.addClientForm.value;\n var clientIdsToMerge = this.clients.map(m => m.id);\n\n this.clientApiService.mergeClients(payload, primaryClient, clientIdsToMerge)\n .pipe(takeUntil(this.destroyed$))\n .subscribe((response: any) => {\n if (response.good) {\n Swal.fire(\n 'Merge successful!',\n 'Client details have been successfully merged!',\n 'success'\n )\n \n this.activeModal.dismiss(response)\n this.oMergeComplete.next(response);\n }\n }); \n }\n });\n }\n */\n onSubmit() {\n Swal.fire({\n title: 'Are you sure you want to merge these records?',\n text: \"You won't be able to revert this action!\",\n icon: 'warning',\n showCancelButton: true,\n confirmButtonColor: '#3085d6',\n cancelButtonColor: '#d33',\n confirmButtonText: 'Yes, merge them!'\n }).then((result) => {\n if (result.isConfirmed) { \n const primaryClient = this.addClientForm?.get(\"id\")?.value;\n const isProspect = this.clients.some(client => client.isProspect); // Retain if any client is a prospect\n const payload = {\n ...this.addClientForm.value,\n isProspect // Add isProspect explicitly\n };\n const clientIdsToMerge = this.clients.map(client => client.id);\n \n this.clientApiService.mergeClients(payload, primaryClient, clientIdsToMerge)\n .pipe(takeUntil(this.destroyed$))\n .subscribe((response: any) => {\n if (response.good) {\n Swal.fire(\n 'Merge successful!',\n 'Client details have been successfully merged!',\n 'success'\n );\n this.activeModal.dismiss(response);\n this.oMergeComplete.next(response);\n }\n }); \n }\n });\n }\n\n ngOnDestroy() {\n this.destroyed$.next(true);\n this.destroyed$.complete();\n }\n nextStep() { this.step += 1; }\n previousStep() { this.step -= 1; }\n}\n","<div class=\"modal-box\" cdkDrag>\n <div class=\"modal-header\" style=\"cursor: move; display: flex; flex-direction: row; justify-content: space-between;\" cdkDragHandle>\n <h4 class=\"modal-title\">Merge Clients</h4>\n <h5 class=\"modal-title\" *ngIf=\"step==1\">Step 1 - Select Values.</h5>\n <h5 class=\"modal-title\" *ngIf=\"step==2\">Step 2 - Confirm and Merge.</h5>\n <button type=\"button\" class=\"close\" aria-label=\"Close\" (click)=\"activeModal.dismiss('Cross click')\">\n <span aria-hidden=\"true\">×</span>\n </button>\n </div>\n <form [formGroup]=\"addClientForm\" (ngSubmit)=\"onSubmit()\">\n <div class=\"modal-body\" *ngIf=\"step==1\">\n <table class=\"table tbl-client\">\n <thead>\n <tr>\n <th class=\"label\"><label>Primary Record?</label></th>\n <th *ngFor=\"let client of clients\">\n <label class=\"radio-label\">\n <input type=\"radio\" value=\"{{ client.id }}\" formControlName=\"id\"\n (click)=\"setPrimaryRecord(client.id)\" style=\"height: 16px; width: 16px;\">\n </label>\n <button type=\"button\" (click)=\"setPrimaryRecord(client.id)\" class=\"btn btn-link\">\n Select All\n </button>\n </th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th class=\"label\"><label>First Name</label></th>\n <td *ngFor=\"let client of clients\">\n <label class=\"radio-label\">\n <input type=\"radio\" value=\"{{ client.firstName }}\" formControlName=\"firstName\"\n style=\"height: 12px; width: 12px;\">\n <span> {{ client.firstName }}</span>\n </label>\n </td>\n </tr>\n <tr>\n <td class=\"label\"><label>Last Name</label></td>\n <td *ngFor=\"let client of clients\">\n <label class=\"radio-label\">\n <input type=\"radio\" value=\"{{ client.lastName }}\" formControlName=\"lastName\"\n style=\"height: 12px; width: 12px;\">\n <span> {{ client.lastName }}</span>\n </label>\n </td>\n </tr>\n <tr>\n <td class=\"label\"><label>Address</label></td>\n <td *ngFor=\"let client of clients\">\n <label class=\"radio-label\">\n <input type=\"radio\" value=\"{{ client.brandAddress }}\" formControlName=\"brandAddress\"\n style=\"height: 12px; width: 12px;\">\n <span> {{ client.brandAddress }}</span>\n </label>\n </td>\n </tr>\n <tr>\n <td class=\"label\"><label>Company</label></td>\n <td *ngFor=\"let client of clients\">\n <label class=\"radio-label\">\n <input type=\"radio\" value=\"{{ client.brandId }}\" formControlName=\"brandId\"\n style=\"height: 12px; width: 12px;\">\n <span> {{ client.brand }}</span>\n </label>\n </td>\n </tr>\n <tr>\n <td class=\"label\"><label>DMS</label></td>\n <td *ngFor=\"let client of clients\">\n <label class=\"radio-label\">\n <input type=\"radio\" value=\"{{ client.dmsId }}\" formControlName=\"dmsId\"\n style=\"height: 12px; width: 12px;\">\n <span> {{ client.dmsName }}</span>\n </label>\n </td>\n </tr>\n <tr>\n <td class=\"label\"><label>Sales Rep</label></td>\n <td *ngFor=\"let client of clients\">\n <label class=\"radio-label\">\n <input type=\"radio\" value=\"{{ client.salesRepId }}\" formControlName=\"salesRepId\"\n style=\"height: 12px; width: 12px;\">\n <span> {{ client.salesRep }}</span>\n </label>\n </td>\n </tr>\n <tr>\n <td class=\"label\"><label>Phone #</label></td>\n <td *ngFor=\"let client of clients\">\n <label class=\"radio-label\">\n <input type=\"radio\" value=\"{{ client.phone }}\" formControlName=\"phone\"\n style=\"height: 12px; width: 12px;\">\n <span> {{ client.phone }}</span>\n </label>\n </td>\n </tr>\n <tr>\n <td class=\"label\"><label>Email</label></td>\n <td *ngFor=\"let client of clients\">\n <label class=\"radio-label\">\n <input type=\"radio\" value=\"{{ client.email }}\" formControlName=\"email\"\n style=\"height: 12px; width: 12px;\">\n <span> {{ client.email }}</span>\n </label>\n </td>\n </tr>\n </tbody>\n </table> \n </div>\n <div class=\"modal-footer\" *ngIf=\"step==1\" style=\"cursor: move; display: flex; flex-direction: row; justify-content: space-between;\" cdkDragHandle>\n <button type=\"button\" class=\"btn btn-secondry\" style=\"border: 1px solid red; border-radius: 4px; padding: 8px; color: red;\" (click)=\"activeModal.close('Close click')\">Cancel</button>\n <button [disabled]=\"!(addClientForm.value.id)\" type=\"button\" class=\"blue-button\" (click)=\"nextStep()\" title=\"Please select primary record to proceed!\">Next</button>\n </div>\n <div class=\"modal-body\" *ngIf=\"step == 2\">\n <div class=\"row mb-3\">\n <label class=\"col-sm-3\" for=\"firstName\">First Name</label>\n <div class=\"col-sm-9\">\n <input type=\"text\" class=\"form-control\" formControlName=\"firstName\"\n [value]=\"addClientForm.value.firstName\"\n [ngClass]=\"{ 'is-invalid': submitted && f.firstName.errors }\" placeholder=\"Enter first name\">\n <div *ngIf=\"submitted && f.firstName.errors\" class=\"invalid-feedback\">\n <div *ngIf=\"f.firstName.errors.required\">first name is required</div>\n </div>\n </div>\n </div>\n <div class=\"row mb-3\">\n <label class=\"col-sm-3\" for=\"lastName\">Last Name</label>\n <div class=\"col-sm-9\">\n <input type=\"text\" class=\"form-control\" formControlName=\"lastName\"\n [value]=\"addClientForm.value.lastName\" [ngClass]=\"{ 'is-invalid': submitted && f.lastName.errors }\"\n placeholder=\"Enter last name\">\n <div *ngIf=\"submitted && f.lastName.errors\" class=\"invalid-feedback\">\n <div *ngIf=\"f.lastName.errors.required\">last name is required</div>\n </div>\n </div>\n </div>\n <div class=\"row mb-3\">\n <label class=\"col-sm-3\" for=\"brandAddress\">Address</label>\n <div class=\"col-sm-9\">\n <textarea type=\"text\" class=\"form-control\" rows=\"3\" formControlName=\"brandAddress\"\n [value]=\"addClientForm.value.brandAddress\"\n [ngClass]=\"{ 'is-invalid': submitted && f.brandAddress.errors }\"\n placeholder=\"enter address info\"> </textarea>\n <div *ngIf=\"submitted && f.brandAddress.errors\" class=\"invalid-feedback\">\n <div *ngIf=\"f.brandAddress.errors.required\">address is required</div>\n </div>\n </div>\n </div>\n <div class=\"row mb-3\">\n <label class=\"col-sm-3\" for=\"brandId\">Company</label>\n <div class=\"col-sm-9\">\n <select [ngClass]=\"{ 'is-invalid': submitted && f.brandId.errors }\" formControlName=\"brandId\"\n class=\"form-control form-select select-custom\">\n <option *ngFor=\"let comp of allCompanies\" [ngValue]=\"comp.id\"\n [selected]=\"addClientForm.value.brandId == comp.id\">{{comp.name}}</option>\n </select>\n <div *ngIf=\"submitted && f.brandId.errors\" class=\"invalid-feedback\">\n <div *ngIf=\"f.brandId.errors.required\">company is required</div>\n </div>\n </div>\n </div>\n <div class=\"row mb-3\">\n <label class=\"col-sm-3\" for=\"dmsId\">DMS</label>\n <div class=\"col-sm-9\">\n <select [ngClass]=\"{ 'is-invalid': submitted && f.dmsId.errors }\" formControlName=\"dmsId\"\n class=\"form-control form-select select-custom\">\n <option *ngFor=\"let dms of allDms\" [ngValue]=\"dms.id\"\n [selected]=\"addClientForm.value.dmsId == dms.id\">{{dms.firstName}} {{dms.lastName}}</option>\n </select>\n <div *ngIf=\"submitted && f.dmsId.errors\" class=\"invalid-feedback\">\n <div *ngIf=\"f.dmsId.errors.required\">dms is required</div>\n </div>\n </div>\n </div>\n <div class=\"row mb-3\">\n <label class=\"col-sm-3\" for=\"salesRepId\">Sales Rep</label>\n <div class=\"col-sm-9\">\n <select [ngClass]=\"{ 'is-invalid': submitted && f.salesRepId.errors }\" formControlName=\"salesRepId\"\n class=\"form-control form-select select-custom\">\n <option *ngFor=\"let rep of allSalesReps\" [ngValue]=\"rep.id\"\n [selected]=\"addClientForm.value.salesRepId == rep.id\">{{rep.firstName}} {{rep.lastName}}\n </option>\n </select>\n <div *ngIf=\"submitted && f.salesRepId.errors\" class=\"invalid-feedback\">\n <div *ngIf=\"f.salesRepId.errors.required\">sales rep is required</div>\n </div>\n </div>\n </div>\n <div class=\"row mb-3\">\n <label class=\"col-sm-3\" for=\"phone\">Phone #</label>\n <div class=\"col-sm-9\">\n <input type=\"tel\" class=\"form-control\" formControlName=\"phone\" [value]=\"addClientForm.value.phone\"\n [ngClass]=\"{ 'is-invalid': submitted && f.phone.errors }\" placeholder=\"Enter phone number\">\n <div *ngIf=\"submitted && f.phone.errors\" class=\"invalid-feedback\">\n <div *ngIf=\"f.phone.errors.required\">phone number is required</div>\n </div>\n </div>\n </div>\n <div class=\"row mb-3\">\n <label class=\"col-sm-3\" for=\"email\">Email</label>\n <div class=\"col-sm-9\">\n <input type=\"text\" class=\"form-control\" formControlName=\"email\" [value]=\"addClientForm.value.email\"\n [ngClass]=\"{ 'is-invalid': submitted && f.email.errors }\" placeholder=\"Enter email address\">\n <div *ngIf=\"submitted && f.email.errors\" class=\"invalid-feedback\">\n <div *ngIf=\"f.email.errors.required\">email is required</div>\n <div *ngIf=\"f.email.errors.email\">email is invalid</div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"modal-footer\" *ngIf=\"step==2\" style=\"cursor: move; display: flex; flex-direction: row; justify-content: space-between;\" cdkDragHandle>\n <button type=\"button\" class=\"btn btn-secondry\" style=\"border: 1px solid red; border-radius: 4px; padding: 8px; color: red;\" (click)=\"activeModal.close('Close click')\">Cancel</button>\n <div style=\"display: flex; flex-direction: row; justify-content: end;\">\n <button type=\"button\" class=\"blue-button\" style=\"max-width: 55.97px !important; min-width: 0px !important;\" (click)=\"previousStep()\">Back</button>\n <button type=\"submit\" class=\"btn btn-warning\" style=\"margin-left: 8px; box-shadow: none !important;\">Save</button>\n </div>\n </div>\n </form>\n</div>","import { Component, EventEmitter, Input, OnDestroy, OnInit, Output, ViewChild } from '@angular/core';\r\nimport { NgbActiveModal } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { ReplaySubject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { IClient } from '../../../core/models/clients.models';\r\nimport { OrdersApiService } from '../../../pages/orders/orders.apiservice';\r\nimport { ProductCheckoutComponent } from '../../../pages/shop/product-checkout/product-checkout.component';\r\n@Component({\r\n selector: 'modal-process-order-payment',\r\n templateUrl: './process-order-payment.component.html',\r\n styleUrls: ['./process-order-payment.component.scss']\r\n})\r\nexport class ProcessOrderPaymentModal implements OnInit, OnDestroy {\r\n\r\n private destroyed$: ReplaySubject<boolean> = new ReplaySubject(1);\r\n @ViewChild(ProductCheckoutComponent) public checkoutComponent!: ProductCheckoutComponent;\r\n @Output() oSaveClicked = new EventEmitter<any>();\r\n\r\n @Input() iOrderId: string = \"\";\r\n @Input() iAllMyClients: Array<IClient> = [];\r\n\r\n constructor(\r\n public activeModal: NgbActiveModal,\r\n public orderApiService: OrdersApiService,\r\n ) {\r\n }\r\n\r\n\r\n ngOnInit() {\r\n }\r\n ngAfterViewInit() {\r\n }\r\n onSubmit() {\r\n }\r\n\r\n oSaveClick() {\r\n if (this.checkoutComponent.doSubmitPaymentForm()) {\r\n let values = this.checkoutComponent.getPaymentFormValues();\r\n values.orderId = this.iOrderId;\r\n this.oSaveClicked.emit(values);\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroyed$.next(true);\r\n this.destroyed$.complete();\r\n }\r\n\r\n}\r\n","<div class=\"example-box\" cdkDrag>\r\n <div class=\"modal-header\">\r\n <h4 class=\"modal-title\">Card Info</h4>\r\n <button type=\"button\" class=\"close\" aria-label=\"Close\" (click)=\"activeModal.dismiss('Cross click')\">\r\n <span aria-hidden=\"true\">×</span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body\" style=\"margin-top: -40px\">\r\n <app-product-checkout [iAllMyClients]=\"iAllMyClients\"></app-product-checkout>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" (click)=\"oSaveClick()\" class=\"btn btn-black\">Pay</button>\r\n <button type=\"button\" class=\"btn btn-secondry\" (click)=\"activeModal.close('Close click')\">Close</button>\r\n </div>\r\n</div>","import { CdkDragDrop } from '@angular/cdk/drag-drop';\nimport { Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';\nimport { FormGroup, FormBuilder, FormArray, Validators } from '@angular/forms';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\nimport { ReplaySubject } from 'rxjs';\nimport { first, takeUntil } from 'rxjs/operators';\nimport { PRODUCT_FAMILY, PRODUCT_TYPES } from '../../../core/helpers/constants';\nimport { atleasOneTrue, createEmptyGuid, ordinalSuffixOf } from '../../../core/helpers/utility';\nimport { ICompany } from '../../../core/models/datafeed.models';\nimport { IProductFamily, IProductMain, IProductCompanies } from '../../../core/models/products.models';\nimport { DataFeedService } from '../../../shared/api/datafeed.service';\nimport { AppService } from '../../../store/app.service';\nimport { ProductsApiService } from '../../../pages/products/products-api.service';\nimport * as _ from 'underscore';\n\n@Component({\n selector: 'app-products-modal',\n templateUrl: './products-modal.component.html',\n styleUrls: ['./products-modal.component.scss']\n})\nexport class ProductsModalComponent implements OnInit, OnDestroy {\n\n PRODUCT_FAMILY = PRODUCT_FAMILY;\n PRODUCT_TYPES = PRODUCT_TYPES;\n\n private destroyed$: ReplaySubject<boolean> = new ReplaySubject(1);\n\n\n @Input() set iId(value: string) {\n if (value !== null) {\n this.id = value;\n this.loadDetails();\n }\n }\n allProducts = new Array<IProductMain>();\n allProductsFiltered: Array<Array<IProductMain>> = new Array<Array<IProductMain>>();\n allCompaniesFeed = new Array<ICompany>();\n\n\n\n\n @Output() oEditComplete = new EventEmitter<any>();\n @Output() oSaveClicked = new EventEmitter<any>();\n\n\n existingTypeValue: number = 1;\n companyOptions = [] as Array<ICompany>;\n\n frequencyOptions: Array<any> = [];\n durationOptions = [\n { title: 'day(s)', value: 'day' },\n { title: 'week(s)', value: 'week' },\n { title: 'month(s)', value: 'month' },\n { title: 'year(s)', value: 'year' }];\n expiresAfterOptions: Array<string> = new Array<string>();\n synchronizeRenewalsOptions: Array<any> = new Array<any>();\n\n\n\n bundleChoice?= true;\n productsForm: FormGroup;\n submitted = false;\n id: string = '';\n allProductFamilies: Array<IProductFamily> = new Array<IProductFamily>();\n\n constructor(\n public activeModal: NgbActiveModal,\n private appService: AppService,\n private datafeedService: DataFeedService,\n private productApiService: ProductsApiService,\n private formBuilder: FormBuilder,\n private sanitizer: DomSanitizer\n ) {\n this.productsForm = this.formBuilder.group({\n id: [null],\n type: [1],\n name: [null, [Validators.required]],\n display: [null, [Validators.required]],\n description: null,\n isBundleOnly: false,\n isDefault: false,\n familyCode: [1, Validators.required],\n isGoogle: [null],\n isFacebook: [null],\n isTikTok: [null],\n canCustomerChoose: [null],\n selectedCompanyIds: [[]],\n data: this.formBuilder.group({\n id: null,\n productId: null,\n price: null,\n type: null,\n frequency: null,\n duration: null,\n expiresAfterCycles: '1',\n signupFee: null,\n synchronizeRenewls: null,\n }),\n media: this.formBuilder.group({\n id: null,\n productId: null,\n fileName: [null, Validators.required],\n file: null,\n blob: null,\n }),\n variableSubscription: this.formBuilder.array([]),\n bundleProducts: this.formBuilder.array([])\n });\n\n this.expiresAfterOptions.push('Until Canceled');\n for (let i = 1; i < 31; i++)\n this.expiresAfterOptions.push(i.toString());\n\n this.synchronizeRenewalsOptions.push({ title: \"No synchronization\" });\n this.getAllProductFamilies();\n this.getAllCompaniesFeed();\n this.appService.fetchAllProductsFeed();\n }\n\n updateRenewelOptions(dur: string) {\n this.synchronizeRenewalsOptions = [];\n for (let i = 1; i < (dur === \"week\" ? 8 : dur == \"month\" ? 29 : 0); i++)\n this.synchronizeRenewalsOptions.push({ title: `${ordinalSuffixOf(i)} day of ${dur}`, value: i });\n this.synchronizeRenewalsOptions.push({ title: \"No synchronization\" });\n this.fProductData[\"synchronizeRenewls\"].setValue(null);\n }\n updateFrequencyOptions() {\n this.frequencyOptions = [];\n for (let i = 1; i < 51; i++)\n this.frequencyOptions.push({ title: i, value: i });\n }\n\n ngOnInit(): void {\n this.updateFrequencyOptions();\n\n this.fProductData.duration.valueChanges\n .subscribe((data: any) => {\n this.updateRenewelOptions(data);\n });\n }\n getAllProductFamilies() {\n this.datafeedService.getAllProductFamilies()\n .pipe(takeUntil(this.destroyed$))\n .subscribe(r => {\n this.allProductFamilies = [...r.data];\n })\n }\n getAllCompaniesFeed() {\n this.datafeedService.getAllCompanies()\n .pipe(takeUntil(this.destroyed$))\n .subscribe((r: any) => {\n this.allCompaniesFeed = [...r.data];\n if (!this.id) {\n var masterCompanyId = this.allCompaniesFeed.find(x => x.name.toLowerCase().indexOf('reach') > -1)?.id;\n this.f.selectedCompanyIds.setValue([masterCompanyId]);\n }\n });\n }\n\n onFamilyChange(evt: any) {\n if (evt.code === PRODUCT_FAMILY.DigitalMarketing || evt.code === PRODUCT_FAMILY.AdSpend || evt.code === PRODUCT_FAMILY.AddPlatform) {\n this.productsForm.setValidators([atleasOneTrue]);\n }\n else\n this.productsForm.setValidators([]);\n\n if (evt.code === PRODUCT_FAMILY.Bundle) {\n this.existingTypeValue = this.f.type.value;\n this.f.type.setValue(-1);\n }\n else\n this.f.type.setValue(this.existingTypeValue);\n }\n onCustomerChoosePlatformChange() {\n if (this.productsForm.value.canCustomerChoose) {\n this.productsForm.get('isGoogle')?.setValue(true);\n this.productsForm.get('isFacebook')?.setValue(true);\n this.productsForm.get('isTikTok')?.setValue(true);\n }\n }\n\n onPlatformChange() {\n if (this.productsForm.value.familyCode !== PRODUCT_FAMILY.AddPlatform &&\n (this.productsForm.value.isGoogle === false || this.productsForm.value.isFacebook === false || this.productsForm.value.isTikTok === false)) {\n this.productsForm.get('canCustomerChoose')?.setValue(false);\n }\n }\n\n onTypeChange(evt: any) {\n if (evt !== PRODUCT_TYPES.VariableSubscription.code)\n this.fProductData.price.setValidators([Validators.required]);\n else\n this.fProductData.price.setValidators([]);\n\n if (evt === PRODUCT_TYPES.SimpleSubscription.code || evt === PRODUCT_TYPES.VariableSubscription.code) {\n this.fProductData.frequency.setValidators([Validators.required]);\n this.fProductData.duration.setValidators([Validators.required]);\n }\n else {\n this.fProductData.frequency.setValidators([]);\n this.fProductData.duration.setValidators([]);\n }\n\n\n }\n\n\n\n get f() { return this.productsForm.controls; }\n get fProductData() { return (this.productsForm.get('data') as FormGroup).controls; }\n get fProductMedia() { return (this.productsForm.get('media') as FormGroup).controls; }\n get fProductVariableSubscription() { return this.productsForm.get('variableSubscription') as FormArray; }\n get fProductBundle() { return this.productsForm.get('bundleProducts') as FormArray }\n\n loadDetails() {\n if (this.id) {\n this.productApiService.getProductDetails(this.id)\n .pipe(takeUntil(this.destroyed$))\n .subscribe(response => {\n if (response.good) {\n if (response.data.data.expiresAfterCycles === -1)\n response.data.data.expiresAfterCycles = 'Until Canceled';\n\n\n response.data.media.file = this.sanitizer.bypassSecurityTrustUrl('data:image/png;base64,' + response.data.media.blob);\n this.productsForm.patchValue(response.data);\n if (this.f.selectedCompanyIds.value.length == 0) {\n this.f.selectedCompanyIds.setValue([this.allCompaniesFeed.find(x => x.name.toLowerCase().indexOf('reach') > -1)?.id]);\n }\n if (response.data.type === PRODUCT_TYPES.VariableSubscription.code)\n for (var vs of response.data.variableSubscription)\n this.addVariableSubscription(vs.id, vs.productId, vs.amount, vs.sortOrder);\n if (response.data.familyCode === PRODUCT_FAMILY.Bundle)\n for (var vs of response.data.bundleProducts)\n this.addBundleProduct(vs.id, vs.assignedProductId, vs.productId, vs.isRequired, vs.sortOrder);\n\n if (response.data.familyCode === PRODUCT_FAMILY.DigitalMarketing || response.data.familyCode === PRODUCT_FAMILY.AdSpend) {\n this.productsForm.setValidators([atleasOneTrue]);\n }\n else\n this.productsForm.setValidators([]);\n\n this.onTypeChange(response.data.type);\n }\n });\n }\n }\n\n updateData(data: IProductMain) {\n this.productsForm.patchValue(data);\n }\n\n\n \n // This function will recursively iterate through the object\n trimObjectStrings(obj: any): any {\n // Iterate over each property of the object\n for (const key in obj) {\n if (obj.hasOwnProperty(key)) {\n const value = obj[key];\n \n if (typeof value === 'string') {\n // Trim the string if the value is a string\n obj[key] = value.trim();\n } else if (typeof value === 'object' && value !== null) {\n // Recursively call the function if the value is an object (or array)\n this.trimObjectStrings(value);\n }\n }\n }\n return obj;\n }\n\n onSubmit() {\n this.submitted = true;\n if (this.productsForm.invalid)\n return;\n\n let frmValues = this.productsForm.value;\n\n this.trimObjectStrings(frmValues)\n\n if (frmValues.data.expiresAfterCycles) {\n if (frmValues.data.expiresAfterCycles === 'Until Canceled')\n frmValues.data.expiresAfterCycles = -1;\n else\n frmValues.data.expiresAfterCycles = parseInt(frmValues.data.expiresAfterCycles);\n }\n\n\n this.oSaveClicked.emit(this.productsForm.value);\n }\n\n resetBundleProduct() {\n // this.fProductBundle.clear();\n // this.allProductsFiltered = new Array<Array<IProductMain>>();\n\n let selectedProducts = _.flatten(this.fProductBundle.controls.map(x => x.value.assignedProductId));\n const sub = this.appService.getAllProductsFeed$()\n .pipe(first(val => val.length > 0))\n .subscribe((prods: Array<IProductMain>) => {\n \n if(this.f.selectedCompanyIds.value.length > 0){\n var allProducts = prods.filter(x => x.familyCode != PRODUCT_FAMILY.Bundle && (x.isDefault == true || x.productCompanies.filter(y => this.f.selectedCompanyIds.value.includes(y.companyId)).length > 0));\n var ind = 0;\n selectedProducts.forEach(prdId => {\n if(allProducts.filter(x => x.id == prdId).length == 0){ \n this.fProductBundle.removeAt(ind);\n this.allProductsFiltered.splice(ind, 1);\n }\n ind = ind + 1;\n });\n }\n setTimeout(() => { sub.unsubscribe(); }, 1);\n })\n\n }\n\n onRemoveCompany(event: any){\n // console.log('on remove');\n if (this.f.selectedCompanyIds.value.length == 0){\n this.f.selectedCompanyIds.setValue([event.value.id]);\n }\n }\n\n addBundleProduct(id?: string, assignedProductId?: string, productId?: string, required?: boolean, sortOrder?: number) {\n if (sortOrder !== null && sortOrder !== undefined)\n sortOrder = this.fProductBundle.length + 1\n let selectedProducts = _.flatten(this.fProductBundle.controls.map(x => x.value.assignedProductId));\n const sub = this.appService.getAllProductsFeed$()\n .pipe(first(val => val.length > 0))\n .subscribe((prods: Array<IProductMain>) => {\n \n if(this.productsForm.value.isDefault == true){\n this.allProductsFiltered.push(prods.filter(x => !selectedProducts.includes(x.id) && x.familyCode != PRODUCT_FAMILY.Bundle && x.isDefault == true));\n }\n else if(this.f.selectedCompanyIds.value.length > 0){\n this.allProductsFiltered.push(prods.filter(x => !selectedProducts.includes(x.id) && x.familyCode != PRODUCT_FAMILY.Bundle && (x.isDefault == true || x.productCompanies.filter(y => this.f.selectedCompanyIds.value.includes(y.companyId)).length > 0)));\n }\n else{\n this.allProductsFiltered.push(prods.filter(x => !selectedProducts.includes(x.id) && x.familyCode != PRODUCT_FAMILY.Bundle));\n }\n \n this.fProductBundle.push(this.newBundleProduct(id, assignedProductId, productId, required, sortOrder ?? 1));\n setTimeout(() => { sub.unsubscribe(); }, 1);\n })\n\n\n }\n newBundleProduct(id?: string, assignedProductId?: string, productId?: string, required?: boolean, sortOrder?: number) {\n return this.formBuilder.group({\n id: id || createEmptyGuid(),\n assignedProductId: assignedProductId,\n productId: productId,\n isRequired: required || false,\n sortORder: sortOrder\n });\n }\n deleteBundleProduct(i: number) {\n this.fProductBundle.removeAt(i);\n this.allProductsFiltered.splice(i, 1);\n }\n\n\n\n\n addVariableSubscription(id?: string, productId?: string, amount?: number, sortOrder?: number) {\n this.fProductVariableSubscription.push(this.newVariableSubscriptions(id, productId, amount, sortOrder));\n }\n newVariableSubscriptions(id?: string, productId?: string, amount?: number, sortOrder?: number): FormGroup {\n return this.formBuilder.group({\n id: id || createEmptyGuid(),\n productId: productId,\n amount: [amount || null, Validators.required],\n sortOrder: sortOrder || 1,\n })\n }\n deleteVariableSubscription(i: number) {\n this.fProductVariableSubscription.removeAt(i);\n }\n\n ngOnDestroy() {\n this.destroyed$.next(true);\n this.destroyed$.complete();\n }\n\n\n makeImageById(id: string) {\n this.productApiService.getProductMedia(id)\n .subscribe((x: any) => {\n const reader = new FileReader();\n reader.readAsDataURL(x); //FileStream response from .NET core backend\n reader.onload = _event => {\n this.fProductMedia.file.setValue(reader.result);\n };\n });\n }\n\n getFile(e: any) {\n let file = e.target.files[0];\n\n if (file.size / 1024 / 1024 > 20) {\n alert(\"File size should be less than 20MB\")\n return;\n }\n let extensionAllowed = [\"png\", \"svg\", \"jpg\", \"jpeg\", \"ico\"];\n if (extensionAllowed) {\n var nam = file.name.split('.').pop();\n if (!extensionAllowed.find(f => f == nam)) {\n alert(\"Please upload \" + Object.keys(extensionAllowed) + \" file.\")\n return;\n }\n }\n this.fProductMedia.fileName.setValue(file.name);\n //\n var reader = new FileReader();\n reader.readAsDataURL(e.target.files[0]);\n reader.onload = (_event) => {\n this.fProductMedia.file.setValue(reader.result);\n }\n\n //\n\n\n\n\n let fData = new FormData();\n fData.append(\"Files\", file, file.name);\n let mediaId = this.fProductMedia.id.value;\n if (mediaId)\n fData.append(\"mediaId\", this.fProductMedia.id.value);\n if (this.f.id.value)\n fData.append(\"productId\", this.f.id.value);\n const sub = this.productApiService.saveProductMedia(fData)\n .subscribe((res: any) => {\n if (res.good) {\n this.fProductMedia.id.setValue(res.data)\n sub.unsubscribe();\n }\n });\n\n }\n // createImageFromBlob(image: Blob) {\n // let reader = new FileReader();\n // reader.addEventListener(\"load\",\n // () => {\n // this.imageToShow.photo = reader.result;\n // },\n // false);\n\n // if (image) {\n // if (image.type !== \"application/pdf\")\n // reader.readAsDataURL(image);\n // }\n // }\n getImageFromData(data: any) {\n const reader = new FileReader();\n reader.readAsDataURL(data); //FileStream response from .NET core backend\n reader.onload = _event => {\n this.fProductMedia.file.setValue(reader.result); //url declared earlier\n };\n }\n\n rmProductsVariableSubscriptionsDragNDrop(event: any) {\n this.productsForm.markAsDirty();\n\n let formArray = this.fProductVariableSubscription;\n let subs = formArray.value;\n\n let evt = event as CdkDragDrop<string[]>;\n let from = evt.previousIndex;\n let to = evt.currentIndex;\n\n subs[from].sortOrder = subs[to].sortOrder;\n if (from < to) {\n for (var i = from + 1; i <= to; i++) {\n subs[i].sortOrder -= 1;\n }\n for (var i = from + 1; i <= to; i++) {\n this.swapFormArrayRows(formArray, i - 1, i);\n }\n }\n else if (from > to) {\n for (var i = from - 1; i >= to; i--) {\n subs[i].sortOrder += 1;\n }\n for (var i = from - 1; i >= to; i--) {\n this.swapFormArrayRows(formArray, i + 1, i);\n }\n }\n\n // moveItemInArray(subs, evt.previousIndex, evt.currentIndex);\n }\n\n\n swapFormArrayRows(formArray: FormArray, index1: number, index2: number) {\n const extras = [...formArray.value];\n if (index1 >= 0 && index2 >= 0 && index1 != index2) {\n [extras[index1], extras[index2]] = [extras[index2], extras[index1]];\n formArray.setValue(extras);\n }\n }\n\n}","<div class=\"modal-box\" cdkDrag>\n <form [formGroup]=\"productsForm\" (ngSubmit)=\"onSubmit()\">\n <div class=\"modal-header\" style=\"cursor: move; display: flex; flex-direction: row; justify-content: space-between;\" cdkDragHandle>\n <h4 class=\"modal-title\">{{ id === '' ? 'Add' :'Edit'}} Product</h4>\n <button type=\"button\" class=\"close\" aria-label=\"Close\" (click)=\"activeModal.dismiss('Cross click')\">\n <span aria-hidden=\"true\">×</span>\n </button>\n </div>\n <div class=\"modal-body\">\n <div class=\"row mb-3\">\n <div class=\"col-12 col-lg-6 form-group mb-4\">\n <label for=\"name\">Product Name</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"name\"\n [ngClass]=\"{ 'is-invalid': submitted && f.name.errors }\" placeholder=\"Enter product name\">\n <div *ngIf=\"submitted && f.name.errors\" class=\"invalid-feedback\">\n <div *ngIf=\"f.name.errors.required\">product name is required</div>\n </div>\n </div>\n <div class=\"col-12 col-lg-6 form-group mb-4\">\n <label for=\"familyCode\">Product Family</label>\n <!-- <div class=\"col-sm-4\"> -->\n\n <ng-select (change)=\"onFamilyChange($event)\"\n [ngClass]=\"{ 'is-invalid': submitted && f.familyCode.errors}\" placeholder=\"Select family\"\n [items]=\"allProductFamilies\" bindLabel=\"displayName\" bindValue=\"code\" formControlName=\"familyCode\">\n </ng-select>\n <!-- </div> -->\n </div>\n <div *ngIf=\"f.familyCode.value === PRODUCT_FAMILY.AdSpend || f.familyCode.value === PRODUCT_FAMILY.DigitalMarketing || f.familyCode.value === PRODUCT_FAMILY.AddPlatform\"\n class=\"col-12 col-lg-9 form-group mb-4\">\n <div class=\"row\">\n <label><strong>\n Select Marketing Platforms <span\n [ngClass]=\"{ 'custom-error':submitted && !(productsForm.errors?.atleastOneTrue)}\">(you\n must\n select atleast one)</span>\n </strong></label>\n <div class=\"col-md-6\">\n <div class=\"row\">\n <div class=\"col-sm-2\">\n <input type=\"checkbox\" id=\"isGoogle\" (change)=\"onPlatformChange()\"\n formControlName=\"isGoogle\" class=\"form-check-input\" />\n </div>\n <label class=\"col-sm-10\" for=\"isGoogle\">Google</label>\n </div>\n </div>\n <div class=\"col-md-6\">\n <div class=\"row\">\n <div class=\"col-sm-2\">\n <input type=\"checkbox\" id=\"isFacebook\" (change)=\"onPlatformChange()\"\n formControlName=\"isFacebook\" class=\"form-check-input\" />\n </div>\n <label class=\"col-sm-10\" for=\"isFacebook\">Meta (Facebook/Instagram)</label>\n </div>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-md-6\">\n <div class=\"row\">\n <div class=\"col-sm-2\">\n <input type=\"checkbox\" id=\"isTikTok\" (change)=\"onPlatformChange()\"\n formControlName=\"isTikTok\" class=\"form-check-input\" />\n </div>\n <label class=\"col-sm-10\" for=\"isTikTok\">TikTok</label>\n </div>\n </div>\n <div *ngIf=\"f.familyCode.value !== PRODUCT_FAMILY.AddPlatform\" class=\"col-md-6\">\n <div class=\"row\">\n <div class=\"col-sm-2\">\n <input type=\"checkbox\" (change)=\"onCustomerChoosePlatformChange()\" id=\"canCustomerChoose\"\n formControlName=\"canCustomerChoose\" class=\"form-check-input\" />\n </div>\n <label class=\"col-sm-10\" for=\"canCustomerChoose\">Customer can choose platforms</label>\n </div>\n </div>\n </div>\n </div>\n <div class=\"col-12 col-lg-6 form-group mb-4\">\n <label for=\"display\">Display Name</label>\n <input type=\"text\" class=\"form-control \" formControlName=\"display\"\n [ngClass]=\"{ 'is-invalid': submitted && f.name.errors }\" placeholder=\"Enter display name\">\n <div *ngIf=\"submitted && f.display.errors\" class=\"invalid-feedback\">\n <div *ngIf=\"f.display.errors.required\">display name is required</div>\n </div>\n </div>\n <div class=\"col-12 col-lg-9 form-group mb-4\">\n <label for=\"description\">Product Description</label>\n <textarea type=\"text\" rows=\"3\" class=\"form-control \" formControlName=\"description\"\n [ngClass]=\"{ 'is-invalid': submitted && f.description.errors }\"\n placeholder=\"Enter description\"> </textarea>\n <div *ngIf=\"submitted && f.description.errors\" class=\"invalid-feedback\">\n <div *ngIf=\"f.description.errors.required\">description is required</div>\n </div>\n </div>\n <div class=\"col-12 col-lg-9 form-group mb-4\">\n <div class=\"row\">\n <div class=\"col-sm-1\">\n <input type=\"checkbox\" id=\"isDefault\" (change)=\"resetBundleProduct()\" formControlName=\"isDefault\" class=\"form-check-input\" />\n </div>\n <label class=\"col-sm-5\" for=\"isDefault\">Default Product</label>\n\n <div *ngIf=\"f.familyCode.value !== PRODUCT_FAMILY.Bundle\" class=\"col-sm-6\">\n <div class=\"row\">\n <div class=\"col-sm-2\">\n <!-- <input [attr.disabled]=\"f.familyCode.value === PRODUCT_FAMILY.AdSpend ? true :null\" -->\n <input type=\"checkbox\" id=\"isBundleOnly\" formControlName=\"isBundleOnly\"\n class=\"form-check-input\" />\n </div>\n <label class=\"col-sm-7\" for=\"isBundleOnly\">Bundle Only</label>\n </div>\n </div>\n </div>\n </div>\n <div class=\"col-12 col-lg-9 form-group mb-4\">\n <div class=\"row\">\n <label for=\"isDefault\">Upload Media</label>\n <div class=\"col-sm-12\" fxLayout=\"row\" fxLayoutAlign=\"start center\">\n <div class=\"card\" style=\"padding: 15px; margin:0\" fxLayout=\"row\" fxLayoutAlign=\"start start\">\n <input style=\"display: none;\" (change)=\"getFile($event)\" type=\"file\" id=\"selectedMedia\"\n #file>\n <button type=\"button\" style=\"width: 120px; margin-top:5px\"\n class=\"btn btn-page btn-add-media\"\n onclick=\"document.getElementById('selectedMedia').click();\">Choose file\n </button>\n <div style=\"margin:0px 5px 5px 20px\">\n <div *ngIf=\"fProductMedia.fileName.value !==null\">\n <img [src]=\"fProductMedia.file.value\"\n [alt]=\"fProductMedia.fileName.value ?? 'No media found'\" class=\"ms-lg-auto\"\n style=\"height: 150px; object-fit: fill; border:1px solid #f1f0f0; padding: 5px 5px 5px 5px;\" />\n </div>\n <div *ngIf=\"submitted && fProductMedia.fileName.errors\" class=\"invalid-feedback\">\n <div *ngIf=\"fProductMedia.fileName.errors.required\">Please select an image for\n product\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <!-- <div class=\"col-12 col-lg-3 mb-4\" formGroupName=\"media\">\n <div class=\"row\">\n <div class=\"col-6 col-sm-3 col-lg-12 mb-3 text-lg-end\">\n <input style=\"display: none;\" (change)=\"getFile($event)\" type=\"file\" id=\"selectedMedia\" #file>\n <button type=\"button\" class=\"btn btn-sm btn-add-media\"\n onclick=\"document.getElementById('selectedMedia').click();\">Upload Media \n <i class=\"far fa-image fw-bold\"></i>\n </button>\n </div>\n <div class=\"col-6 col-lg-12 mb-3\">\n\n </div>\n </div>\n </div> -->\n <div *ngIf=\"f.isDefault.value == false\" class=\"col-12 form-group mb-4\">\n <label for=\"companyId\">Company (Product Owner)</label>\n\n <ng-select [multiple]=\"true\" formControlName=\"selectedCompanyIds\" [items]=\"allCompaniesFeed\" [clearable]=\"false\" \n (change)=\"resetBundleProduct()\" (remove)=\"onRemoveCompany($event)\" bindValue=\"id\" bindLabel=\"name\">\n <!-- <ng-option *ngFor=\"let r of companyIncludeSource\" [value]=\"r.id\">\n {{r.name}}</ng-option> -->\n </ng-select>\n </div>\n <div *ngIf=\"f.familyCode.value !== PRODUCT_FAMILY.Bundle\" class=\"col-12 mb-3 mee-0\">\n <div class=\"row\">\n <label style=\"margin-top:6px\" class=\"col-sm-3\" for=\"productdata\">Select Variation</label>\n <div class=\"col-sm-9\">\n <div class=\"row\">\n <div class=\"col-12 mb-2 ps-0\">\n <ng-select (change)=\"onTypeChange($event)\" [ngClass]=\"{ 'is-invalid': submitted && f.type.errors }\"\n placeholder=\"Select Subscription\" formControlName=\"type\">\n <ng-option *ngFor=\"let item of PRODUCT_TYPES | keyvalue\" [value]=\"item.value.code\">\n {{item.value.title}}</ng-option>\n </ng-select>\n </div>\n\n <ng-container formGroupName=\"data\">\n <div class=\"col-sm-12 mb-3 border pt-2 pb-2\"\n *ngIf=\"f.type.value === PRODUCT_TYPES.SimpleProduct.code\">\n <div class=\"row\">\n <label for=\"price\" class=\"col-sm-2 col-form-label\">\n Price ($)</label>\n <div class=\"col-sm-10\">\n <input [ngClass]=\"{ 'is-invalid': submitted && fProductData.price.errors}\"\n type=\"number\" class=\"form-control\" formControlName=\"price\" />\n <div *ngIf=\"submitted && fProductData.price.errors\"\n class=\"invalid-feedback\">\n <div *ngIf=\"fProductData.price.errors.required\">Price is required</div>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"col-sm-12 mb-3 border pt-2 pb-2\"\n *ngIf=\"f.type.value === PRODUCT_TYPES.SimpleSubscription.code || f.type.value === PRODUCT_TYPES.VariableSubscription.code\">\n\n <div class=\"row mb-1\"\n *ngIf=\"f.type.value === PRODUCT_TYPES.SimpleSubscription.code\">\n <label for=\"price\" class=\"col-sm-4 col-form-label\">\n Price ($)</label>\n <div class=\"col-sm-7\">\n <div class=\"input-group input-group\">\n <span class=\"input-group-text border-0 bg-none\">$ </span>\n <input\n [ngClass]=\"{ 'is-invalid': submitted && fProductData.price.errors}\"\n type=\"text\" class=\"form-control\" aria-label=\"price\"\n formControlName=\"price\">\n <div *ngIf=\"submitted && fProductData.price.errors\"\n class=\"invalid-feedback\">\n <div *ngIf=\"fProductData.price.errors.required\">Price is required\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"row mb-1\">\n <label for=\"frequency\" class=\"col-sm-4 center-label\">\n Frequency</label>\n <!-- <div class=\"col-sm-2\">Every</div> -->\n <div class=\"col-sm-4\" style=\"display: flex;align-items: center;\">Every\n <ng-select [clearable]=\"false\" formControlName=\"frequency\"\n style=\"width: 100%; padding-left: 4px;\"\n [ngClass]=\"{ 'is-invalid': submitted && fProductData.frequency.errors }\"\n bindLabel=\"title\" bindValue=\"value\" [items]=\"frequencyOptions\"\n [multiple]=\"false\">\n </ng-select>\n <div *ngIf=\"submitted && fProductData.frequency.errors\"\n class=\"invalid-feedback\">\n <div *ngIf=\"fProductData.frequency.errors.required\">Frequency is\n required\n </div>\n </div>\n </div>\n <div class=\"col-sm-4\">\n <ng-select formControlName=\"duration\" [items]=\"durationOptions\"\n bindLabel=\"title\" bindValue=\"value\"\n [ngClass]=\"{ 'is-invalid': submitted && fProductData.duration.errors }\"\n [multiple]=\"false\">\n </ng-select>\n <div *ngIf=\"submitted && fProductData.duration.errors\"\n class=\"invalid-feedback\">\n <div *ngIf=\"fProductData.duration.errors.required\">Duration is\n required\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"row mb-1\">\n <label for=\"expiresAfterCycles\" class=\"col-sm-4 center-label\">\n Expires After\n </label>\n <div class=\"col-sm-4\">\n <ng-select [clearable]=\"false\" formControlName=\"expiresAfterCycles\"\n [items]=\"expiresAfterOptions\" [multiple]=\"false\">\n </ng-select>\n </div>\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\" class=\"col-sm-2\">\n <p style=\"padding-left:0; margin: 0;\" fxLayout=\"row\"\n fxLayoutAlign=\"start center\">\n Cycle(s)\n </p>\n </div>\n\n </div>\n\n <div class=\"row mb-1\">\n <label for=\"signupFee\" class=\"col-sm-4 center-label\">\n Sign-Up Fee\n </label>\n <div class=\"col-sm-8\">\n <div class=\"input-group input-group\">\n <span class=\"input-group-text border-0 bg-none\">$ </span>\n <input type=\"text\" aria-label=\"signupFee\" class=\"form-control\"\n formControlName=\"signupFee\">\n </div>\n </div>\n </div>\n\n <!-- <div *ngIf=\"fProductData.duration.value !== 'day'\" class=\"row\">\n <label for=\"synchronizeRenewls\" class=\"col-sm-4 center-label\">Synchronize\n Renewals</label>\n <div class=\"col-sm-8\">\n <ng-select formControlName=\"synchronizeRenewls\"\n [items]=\"synchronizeRenewalsOptions\" bindLabel=\"title\" bindValue=\"value\"\n [multiple]=\"false\">\n </ng-select>\n </div>\n </div> -->\n </div>\n </ng-container>\n\n <ng-container formArrayName=\"variableSubscription\">\n\n <div class=\"col-12 mb-3 border pt-2 pb-2\"\n *ngIf=\"f.type.value === PRODUCT_TYPES.VariableSubscription.code\">\n\n <div class=\"row\">\n <label for=\"addAmount\" class=\"col-3 col-form-label center-label\">Amount\n ($)</label>\n <div class=\"col-sm-9\">\n <div class=\"row\">\n <div class=\"col-12 col-sm-4 col-md-2 mb-3\">\n <button style=\"margin-left:-10px\" type=\"button\"\n (click)=\"addVariableSubscription()\"\n class=\"btn btn-sm btn-dark px-4 px-lg-5\">Add</button>\n </div>\n <div class=\"col-12 border py-2 variable-subscriptions-list mb-2 variable-subscriptions-boundary\"\n cdkDropList\n (cdkDropListDropped)=\"rmProductsVariableSubscriptionsDragNDrop($event)\">\n <div class=\"row\"\n *ngFor=\"let vs of fProductVariableSubscription.controls; let i=index\">\n <div class=\"col-auto variable-subscriptions-box\" cdkDrag\n cdkDragBoundary=\".variable-subscriptions-boundary\"\n cdkDragLockAxis=\"y\" [formGroupName]=\"i\">\n <div class=\"input-group input-group mb-1\">\n <span class=\"input-group-text\">$ </span>\n <input type=\"text\" class=\"form-control\"\n aria-label=\"Amount\" formControlName=\"amount\">\n <span class=\"input-group-text\"\n title=\"Drag up or down to change order.\">\n <i class=\"fas fa-arrows-alt\"></i>\n </span>\n <span class=\"input-group-text bg-white\"\n title=\"Drag up or down to change order.\">\n <i class=\"fas fa-sort\">\n <small>\n {{\n fProductVariableSubscription.controls[i].value.sortOrder\n }}\n </small>\n </i>\n </span>\n <span class=\"input-group-text\" style=\"cursor: pointer;\"\n title=\"Click to remove amount from list.\"\n (click)=\"deleteVariableSubscription(i)\">\n <i class=\"fas fa-times\"></i>\n </span>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </ng-container>\n </div>\n\n </div>\n </div>\n </div>\n\n\n <ng-container *ngIf=\"f.familyCode.value === PRODUCT_FAMILY.Bundle\" formArrayName=\"bundleProducts\">\n <div class=\"row pt-2 pb-2\">\n <div class=\"col-4\">\n <button type=\"button\" class=\"btn btn-sm btn-dark mt-2\" (click)=\"addBundleProduct()\">\n Add Product</button>\n </div>\n </div>\n\n <div class=\"row mb-3 pt-2 pb-2\">\n <div class=\"col-12\" *ngFor=\"let pb of fProductBundle.controls; let i=index\">\n <div [formGroupName]=\"i\" class=\"row\">\n <input type=\"hidden\" formControlName=\"sortOrder\" />\n <div class=\"col-sm-5\">\n <ng-select\n [ngClass]=\"{ 'is-invalid': submitted && fProductBundle.at(i).get('assignedProductId')?.errors}\"\n placeholder=\"\" [items]=\"allProductsFiltered[i]\" bindLabel=\"name\" bindValue=\"id\"\n formControlName=\"assignedProductId\">\n </ng-select>\n </div>\n <div class=\"col-sm-2\">\n <input class=\"form-check-input mt-0 me-2\" type=\"checkbox\" formControlName=\"isRequired\"\n aria-label=\"Checkbox for following text input\">\n required?\n </div>\n <div class=\"col-sm-1\">\n <span class=\"input-group-text\" style=\"cursor: pointer;\"\n title=\"Click to remove from list.\" (click)=\"deleteBundleProduct(i)\">\n <i class=\"fas fa-times\"></i>\n </span>\n </div>\n </div>\n </div>\n </div>\n\n </ng-container>\n </div>\n </div>\n <div class=\"modal-footer\" style=\"cursor: move; display: flex; flex-direction: row; justify-content: space-between; align-items: center; align-content: center; flex-wrap: wrap;\" cdkDragHandle>\n <button type=\"button\" style=\"border: 1px solid red; border-radius: 4px; padding: 8px; color: red;\" (click)=\"activeModal.close('Close click')\">Cancel</button>\n <button type=\"submit\" class=\"blue-button\">Save</button>\n </div>\n </form>\n</div>","<!-- breadcrumb item -->\n<div class=\"row\">\n <div class=\"col-12\">\n <div class=\"page-title-box d-sm-flex align-items-center justify-content-between\">\n <h4 class=\"mb-sm-0 font-size-18\">{{ title }}</h4>\n <div class=\"page-title-right\">\n <ol class=\"breadcrumb m-0\">\n <ng-container *ngFor=\"let item of breadcrumbItems\">\n <li class=\"breadcrumb-item\" [ngClass]=\"{'active': item.active == true}\">{{ item.label }}\n </li>\n </ng-container>\n </ol>\n </div>\n </div>\n </div>\n</div>","import { Component, OnInit, Input } from '@angular/core';\n\n@Component({\n selector: 'app-pagetitle',\n templateUrl: './pagetitle.component.html',\n styleUrls: ['./pagetitle.component.scss']\n})\n\n/**\n * Page Title Component\n */\nexport class PagetitleComponent implements OnInit {\n\n @Input()\n breadcrumbItems!: Array<{\n active?: boolean;\n label?: string;\n }>;\n\n @Input() title: string | undefined;\n\n constructor() { }\n\n ngOnInit(): void {\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { NgSelectModule } from '@ng-select/ng-select';\nimport { WidgetModule } from './widget/widget.module';\nimport { PagetitleComponent } from './pagetitle/pagetitle.component';\nimport { NgbDropdownModule, NgbModule, NgbNavModule, NgbPopoverModule, NgbTooltipModule } from '@ng-bootstrap/ng-bootstrap';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { AddClientModal } from './modals/add-client/add-client.component';\nimport { DataFeedService } from './api/datafeed.service';\nimport { FlatpickrModule } from 'angularx-flatpickr';\nimport { AddNoteModal } from './modals/add-note/add-note.component';\nimport { AddCampaignCheckModal } from './modals/add-campaign-check/add-campaigncheck.component';\nimport { P_AppDateFormat, P_Boolean, P_CampaignStageTitle, P_FreqFromDuration, P_OrderStatus, P_ProducFamily, P_ProducType, P_RolesType_Filter, P_Ordinal, P_RolesName_Filter } from './shared.pipe';\nimport { IConfig, NgxMaskModule } from 'ngx-mask'\nimport { FeatherModule } from 'angular-feather';\nimport { allIcons } from 'angular-feather/icons';\nimport { AssignTagModal } from './modals/assign-tag/assign-tag.component';\nimport { DatatableModule } from './components/datatable/datatable.module';\nimport { SpecialDatatableModule } from './components/special-datatable/special-datatable.module';\nimport { CampaignDatatableModule } from './components/campaign-datatable/campaign-datatable.module';\nimport { ReportDatatableModule } from './components/report-datatable/report-datatable.module';\nimport { TasksDatatableModule } from './components/tasks-datatable/tasks-datatable.module';\nimport { AddTaskModal } from './modals/add-task/add-task.component';\nimport { AddUserModal } from './modals/add-user/add-user.component';\nimport { AddLeadModal } from './modals/add-lead/add-lead.component';\nimport { AddCompanyModal } from './modals/add-company/add-company.component';\nimport { ProductsModalComponent } from './modals/products-modal/products-modal.component';\nimport { TagsTabComponent } from './components/tags-tab/tags-tab.component';\nimport { RouterModule } from '@angular/router';\nimport { AddPaymentMethodModal } from './modals/add-payment-method/add-payment-method.component';\nimport { FlexLayoutModule } from \"@angular/flex-layout\";\nimport { ArchwizardModule } from 'angular-archwizard';\nimport { UiSwitchModule } from 'ngx-ui-switch';\nimport { AddOrderModal } from './modals/add-order/add-order.component';\nimport { AddOrderToSubscriptionModal } from './modals/add-order/add-order-subscription.component';\nimport { NgxDropzoneModule } from 'ngx-dropzone';\nimport { ProcessOrderPaymentModal } from './modals/process-order-payment/process-order-payment.component';\nimport { ProductCheckoutComponent } from '../pages/shop/product-checkout/product-checkout.component';\nimport { MatIconModule } from '@angular/material/icon';\nimport { DragDrop, DragDropModule } from '@angular/cdk/drag-drop';\nimport { TasksDashboardComponent } from './components/tasks-dashboard/tasks-dashboard.component';\n\nconst maskConfig: Partial<IConfig> = {\n validation: false,\n};\n@NgModule({\n declarations: [\n PagetitleComponent,\n AddClientModal,\n AddNoteModal,\n AddCampaignCheckModal,\n AssignTagModal,\n AddTaskModal,\n AddUserModal,\n AddLeadModal,\n AddCompanyModal,\n ProductsModalComponent,\n P_AppDateFormat,\n P_CampaignStageTitle,\n P_Boolean,\n P_RolesType_Filter, \n P_ProducType,\n P_Ordinal,\n P_ProducFamily,\n P_OrderStatus,\n P_AppDateFormat,\n P_FreqFromDuration,\n P_RolesName_Filter,\n TagsTabComponent,\n AddPaymentMethodModal,\n AddOrderModal,\n AddOrderToSubscriptionModal,\n ProductCheckoutComponent,\n ProcessOrderPaymentModal,\n TasksDashboardComponent,\n ],\n imports: [\n CommonModule,\n RouterModule,\n WidgetModule,\n NgbModule,\n NgbTooltipModule,\n NgbPopoverModule,\n DatatableModule,\n SpecialDatatableModule,\n CampaignDatatableModule,\n ReportDatatableModule,\n TasksDatatableModule,\n UiSwitchModule, \n NgbNavModule,\n NgSelectModule,\n FormsModule,\n ReactiveFormsModule,\n NgbDropdownModule,\n FlatpickrModule.forRoot(),\n NgxMaskModule.forRoot(maskConfig),\n FeatherModule.pick(allIcons),\n FlexLayoutModule,\n ArchwizardModule,\n NgxDropzoneModule,\n MatIconModule,\n DragDropModule\n ],\n exports: [\n PagetitleComponent,\n TagsTabComponent,\n NgbModule,\n NgbTooltipModule,\n NgbPopoverModule,\n NgbNavModule,\n NgSelectModule,\n FormsModule,\n ReactiveFormsModule,\n NgbDropdownModule,\n UiSwitchModule, \n FlatpickrModule,\n NgxMaskModule,\n P_AppDateFormat,\n P_FreqFromDuration,\n P_CampaignStageTitle,\n P_Boolean,\n P_RolesType_Filter,\n P_RolesName_Filter,\n P_ProducType,\n P_Ordinal,\n P_ProducFamily,\n P_OrderStatus,\n FeatherModule,\n FlexLayoutModule,\n ArchwizardModule,\n ProductCheckoutComponent,\n ProcessOrderPaymentModal,\n TasksDashboardComponent\n ],\n providers: [DataFeedService]\n})\nexport class SharedModule { }\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { NgbPaginationNumber } from '@ng-bootstrap/ng-bootstrap';\nimport * as moment from 'moment';\nimport * as _ from 'underscore';\nimport { CAMPAIGN_STAGES, COUPON_TYPES, ORDER_STATUS, PRODUCT_FAMILY, PRODUCT_TYPES } from '../core/helpers/constants';\nimport { IRole, IRoleCreation } from '../core/models/auth.models';\n\n@Pipe({ name: 'P_StringSplit' })\nexport class P_StringSplit implements PipeTransform {\n transform(stringToSplit: string, splitChar: string, indexToReturn = 0): string {\n return stringToSplit.split(splitChar)[indexToReturn];\n }\n}\n\n@Pipe({ name: 'P_AppDateFormat', pure: false })\nexport class P_AppDateFormat implements PipeTransform {\n transform(dateToFormat: Date, format = '', toLocal = false): string {\n let r: any = '';\n if (dateToFormat == null)\n return r;\n r = moment(dateToFormat);\n if (toLocal) {\n r = moment.utc(dateToFormat);\n r = r.local();\n }\n if (format) {\n r = r.format(format);\n }\n else\n r = r.format(\"MM/DD/YYYY\");\n return r;\n }\n}\n\n@Pipe({ name: 'P_CampaignStageTitle', pure: false })\nexport class P_CampaignStageTitle implements PipeTransform {\n transform(id: any): string | undefined {\n if (id == null)\n return '';\n return CAMPAIGN_STAGES.find(x => x.value === id)?.title\n }\n}\n\n@Pipe({ name: 'P_CouponTypesTitle', pure: false })\nexport class P_CouponTypesTitle implements PipeTransform {\n transform(id: any): string | undefined {\n if (id == null)\n return '';\n return COUPON_TYPES.find(x => x.value === id)?.title\n }\n}\n\n@Pipe({ name: 'P_CouponExpiry', pure: false })\nexport class P_CouponExpiry implements PipeTransform {\n transform(dateToFormat: Date, format = '', toLocal = false): string {\n let r: any = '';\n if (dateToFormat == null)\n return \"No Expiry\";\n r = moment(dateToFormat);\n if (toLocal) {\n r = moment.utc(dateToFormat);\n r = r.local();\n }\n if (format) {\n r = r.format(format);\n }\n else\n r = r.format(\"MM/DD/YYYY\");\n return r;\n }\n}\n\n@Pipe({ name: 'P_Boolean', pure: false })\nexport class P_Boolean implements PipeTransform {\n transform(value: any): string | undefined {\n if (value == null)\n return '';\n return value === true ? 'Yes' : 'No'\n }\n}\n\n@Pipe({ name: 'P_RolesType_Filter', pure: false })\nexport class P_RolesType_Filter implements PipeTransform {\n transform(value: Array<IRole>, type: number): Array<IRole> | undefined {\n let r: Array<IRole> = [];\n if (value == null || value.length == 0)\n return r;\n return value.filter(x => x.type === type);\n }\n}\n\n@Pipe({ name: 'P_ProducType', pure: false })\nexport class P_ProducType implements PipeTransform {\n transform(type: number): string | undefined {\n switch (type) {\n case PRODUCT_TYPES.SimpleProduct.code:\n return PRODUCT_TYPES.SimpleProduct.title;\n case PRODUCT_TYPES.SimpleSubscription.code:\n return PRODUCT_TYPES.SimpleSubscription.title;\n case PRODUCT_TYPES.VariableSubscription.code:\n return PRODUCT_TYPES.VariableSubscription.title;\n default:\n return 'Bundle'\n }\n }\n}\n\n@Pipe({ name: 'P_ProducFamily', pure: false })\nexport class P_ProducFamily implements PipeTransform {\n transform(type: number): string {\n switch (type) {\n case PRODUCT_FAMILY.Bundle:\n return \"Bundle\";\n case PRODUCT_FAMILY.AdSpend:\n return \"Ad Spend\";\n case PRODUCT_FAMILY.DigitalMarketing:\n return \"Digital Marketing\";\n case PRODUCT_FAMILY.CampaignConsulting:\n return \"Campaign Consulting\";\n case PRODUCT_FAMILY.HostedWebsite:\n return \"Hosted Website\";\n case PRODUCT_FAMILY.SEOProgram:\n return \"SEO Program\";\n case PRODUCT_FAMILY.SocialMedia:\n return \"Social Media\";\n case PRODUCT_FAMILY.AddPlatform:\n return \"Add Platform\";\n default:\n return \"\";\n }\n\n }\n}\n\n@Pipe({ name: 'P_CallbackPipe', pure: false })\nexport class P_CallbackPipe implements PipeTransform {\n transform(items: any[], callback: (item: any) => boolean): any {\n if (!items || !callback) {\n return items;\n }\n return items.filter(item => callback(item));\n }\n}\n\n@Pipe({ name: 'P_OrderStatus', pure: false })\nexport class P_OrderStatus implements PipeTransform {\n transform(id: any): string | undefined {\n if (id == null)\n return '';\n return ORDER_STATUS.find(x => x.value === id)?.title\n }\n}\n\n@Pipe({ name: 'P_FreqFromDuration', pure: false })\nexport class P_FreqFromDuration implements PipeTransform {\n transform(dur: string | undefined): string | undefined {\n switch (dur) {\n case 'day':\n return '';\n case 'week':\n return 'day';\n case 'month':\n return 'week';\n case 'year':\n return 'month';\n default:\n return ''\n }\n }\n}\n\n@Pipe({ name: 'P_Ordinal', pure: false })\nexport class P_Ordinal implements PipeTransform {\n transform(value: number): string {\n if (value === 1) {\n return value + 'st';\n } else if (value === 2) {\n return value + 'nd';\n } else if (value === 3) {\n return value + 'rd';\n } else {\n return value + 'th';\n }\n }\n}\n\n@Pipe({ name: 'P_RolesName_Filter', pure: false })\nexport class P_RolesName_Filter implements PipeTransform {\n transform(code: number): string {\n switch (code) {\n case 1:\n return 'Admin';\n case 2:\n return \"Tech Services\";\n case 3:\n return \"DMS\";\n case 4:\n return \"Shop Manager\";\n case 5:\n return \"Company Owner\";\n case 6:\n return \"Marketing Manager\";\n case 7:\n return \"Client Owner\";\n case 8:\n return \"Employee\";\n case 9:\n return \"Subscription Employee\";\n case 10:\n return \"Sales Rep\";\n case 12:\n return \"Staff\";\n default:\n return '';\n }\n\n }\n}\n\n@Pipe({ name: 'cleanupCampaign' })\nexport class CleanupCampaignPipe implements PipeTransform {\n transform(value: string): string {\n if (!value) return value;\n return value.replace(' FB', '').replace(' TT', '');\n }\n}\n\n@Pipe({ name: 'NumberPipe', pure: false })\nexport class NumberPipe implements PipeTransform {\n transform(value: number, digits: number[] = [0]): string {\n let fractionDigits = Number(digits[0]);\n if (fractionDigits > 0) {\n return value.toLocaleString('en-US', { style:'decimal', minimumFractionDigits: fractionDigits, maximumFractionDigits: fractionDigits });\n }\n return value.toLocaleString('en-US');\n }\n}\n\n@Pipe({\n name: 'PercentPipe', pure: false\n})\nexport class PercentPipe implements PipeTransform {\n transform(value: number, digits: number[] = [2]): string {\n return (value * 100).toFixed(digits[0]) + '%';\n }\n}","import * as moment from 'moment'\n\nexport class Utility {\n static getDateFromDateTime(date: Date) {\n let d = moment(date);\n let hoursDiff = - new Date().getTimezoneOffset() / 60;\n let minutesDiff = - new Date().getTimezoneOffset() % 60;\n d.set({\n hour: hoursDiff,\n minute: minutesDiff,\n second: 0,\n millisecond: 0\n });\n var v1 = d.toDate();\n return v1.toJSON();\n }\n}\n\n","<ul class=\"list-unstyled activity-wid mb-0\">\n <li class=\"activity-list activity-border\" *ngFor=\"let data of recentActivity\">\n <div class=\"activity-icon avatar-md\">\n <span class=\"avatar-title bg-soft-primary text-primary rounded-circle\"\n [ngClass]=\" { 'bg-soft-warning text-warning': data.coine === '+0.5 BTC' }\">\n <i class=\"{{data.icon}}\"></i>\n </span>\n </div>\n <div class=\"timeline-list-item\">\n <div class=\"d-flex\">\n <div class=\"flex-grow-1 overflow-hidden me-4\">\n <h5 class=\"font-size-14 mb-1\">{{data.date}}</h5>\n <p class=\"text-truncate text-muted font-size-13\">{{data.content}}</p>\n </div>\n <div class=\"flex-shrink-0 text-end me-3\">\n <h6 class=\"mb-1\">{{data.coine}}</h6>\n <div class=\"font-size-13\">{{data.price}}</div>\n </div>\n\n <div class=\"flex-shrink-0 text-end\">\n <div class=\"dropdown\" ngbDropdown>\n <a class=\"text-muted dropdown-toggle font-size-24\" role=\"button\" data-bs-toggle=\"dropdown\"\n aria-haspopup=\"true\" ngbDropdownToggle>\n <i class=\"mdi mdi-dots-vertical\"></i>\n </a>\n\n <div class=\"dropdown-menu dropdown-menu-end\" ngbDropdownMenu>\n <a class=\"dropdown-item\" href=\"javascript:void(0)\">Action</a>\n <a class=\"dropdown-item\" href=\"javascript:void(0)\">Another action</a>\n <a class=\"dropdown-item\" href=\"javascript:void(0)\">Something else here</a>\n <div class=\"dropdown-divider\"></div>\n <a class=\"dropdown-item\" href=\"javascript:void(0)\">Separated link</a>\n </div>\n </div>\n </div>\n </div>\n </div>\n </li>\n</ul>","import { Component, OnInit, Input } from '@angular/core';\n\n@Component({\n selector: 'app-recent-activity',\n templateUrl: './recent-activity.component.html',\n styleUrls: ['./recent-activity.component.scss']\n})\n\n/**\n * Recent Activity Component\n */\nexport class RecentActivityComponent implements OnInit {\n\n @Input() recentActivity: Array<{\n icon?: string;\n date?: number;\n content?: string;\n coine?: string;\n price?: string;\n }> | undefined;\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap';\nimport { RecentActivityComponent } from './recent-activity/recent-activity.component';\n\n@NgModule({\n declarations: [\n RecentActivityComponent\n ],\n imports: [\n CommonModule,\n NgbDropdownModule\n ],\n exports: [RecentActivityComponent]\n})\nexport class WidgetModule { }\n","import { Injectable } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\nimport { INotes } from '../core/models/campaigns.model';\r\nimport { IClient } from '../core/models/clients.models';\r\nimport { ISearch } from '../core/models/search.model';\r\nimport { ITag } from '../core/models/tags.models';\r\nimport { IWidget } from '../core/models/widget.model';\r\nimport { CampaignsApiService } from '../pages/campaigns/campaigns.apiservice';\r\nimport { ClientsApiService } from '../pages/clients/clients.apiservice';\r\nimport { DashboardApiService } from '../pages/dashboard/dashboard.apiservice';\r\nimport { TagsApiService } from '../pages/tags/tags.apiservice';\r\nimport { TasksApiService } from '../pages/tasks/tasks.apiservice';\r\nimport { DataFeedService } from '../shared/api/datafeed.service';\r\nimport { SearchesApiService } from '../pages/searches/searches.apiservice';\r\nimport { P_AppDateFormat, P_Boolean, P_CampaignStageTitle, P_CouponExpiry, P_CouponTypesTitle, P_OrderStatus, P_ProducType, P_RolesName_Filter, NumberPipe, PercentPipe } from '../shared/shared.pipe';\r\nimport { IPermission, IRole, IRoleCreation, IUser } from '../core/models/auth.models';\r\nimport { UsersApiService } from '../pages/users/users.apiservice';\r\nimport { ICompany, ISubscription } from '../core/models/datafeed.models';\r\nimport { CompanyApiService } from '../pages/companies/company.apiservice';\r\nimport { LeadsApiService } from '../pages/leads/leads.apiservice';\r\nimport { RefreshSignals } from '../layouts/sidebar/menu.model';\r\nimport { getRolesForPage } from '../core/helpers/utility';\r\nimport { CouponsApiService } from '../pages/coupons/coupon.apiservice';\r\nimport { IProductMain } from '../core/models/products.models';\r\nimport { SubscriptionApiService } from '../pages/subscriptions/subscription.apiservice';\r\nimport { CurrencyPipe } from '@angular/common';\r\nimport { OrdersApiService } from '../pages/orders/orders.apiservice';\r\nimport { PaymentMethodApiService } from '../pages/my-account/payment-method/payment-method.apiservice';\r\nimport { ProductsApiService } from '../pages/products/products-api.service';\r\nimport { ShopApiService } from '../pages/shop/shop.apiservice';\r\nimport { IShopOrder } from '../core/models/shop.models';\r\nimport { ICoupon } from '../core/models/coupon.models';\r\nimport { tap as rxjsTap } from 'rxjs/operators';\r\n@Injectable({ providedIn: 'root' })\r\nexport class AppService {\r\n\r\n private _pageTitleRelay = new BehaviorSubject<string>('');\r\n private _activePage: BehaviorSubject<string> = new BehaviorSubject<string>('');\r\n private _refreshSignals: { [key: string]: BehaviorSubject<RefreshSignals> } = {};\r\n //Store // TODO: we will move these to index db for caching in future\r\n private _activeUserInfo: BehaviorSubject<IUser> = new BehaviorSubject<IUser>({} as IUser);\r\n private _activeUserRoles: BehaviorSubject<Array<any>> = new BehaviorSubject(new Array<any>());\r\n private _allClientsData: BehaviorSubject<any> = new BehaviorSubject({ data: [], totalCount: 0 });\r\n private _allProspectClientsData: BehaviorSubject<any> = new BehaviorSubject({ data: [], totalCount: 0 });\r\n\r\n private _widgetsData: BehaviorSubject<Array<IWidget>> = new BehaviorSubject(new Array<IWidget>());\r\n private _changeLayout: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\r\n private _allCampaignsData: BehaviorSubject<any> = new BehaviorSubject({ data: [], totalCount: 0 });\r\n private _allNotes: BehaviorSubject<Array<INotes>> = new BehaviorSubject(new Array<INotes>());\r\n private _allTagsData: BehaviorSubject<Array<ITag>> = new BehaviorSubject(new Array<ITag>());\r\n private _allTasks: BehaviorSubject<any> = new BehaviorSubject({ data: [], totalCount: 0 });\r\n private _forceLoadingTasks: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\r\n private _allSearches: BehaviorSubject<Array<ISearch>> = new BehaviorSubject(new Array<ISearch>());\r\n private _allUsers: BehaviorSubject<Array<IUser>> = new BehaviorSubject(new Array<IUser>());\r\n private _allCompanies: BehaviorSubject<Array<ICompany>> = new BehaviorSubject(new Array<ICompany>());\r\n private _allLeads: BehaviorSubject<any> = new BehaviorSubject({});\r\n private _allOrders: BehaviorSubject<any> = new BehaviorSubject({});\r\n private _allShopOrders: BehaviorSubject<Array<IShopOrder>> = new BehaviorSubject(new Array<IShopOrder>());\r\n private _allShopOrdersFiltered: BehaviorSubject<any> = new BehaviorSubject({ data: [], totalCount: 0 });\r\n private _allCouponsData: BehaviorSubject<Array<ICoupon>> = new BehaviorSubject(new Array<ICoupon>());\r\n private _allProductsMain: BehaviorSubject<Array<IProductMain>> = new BehaviorSubject(new Array<IProductMain>());\r\n private _allUserSubscriptions: BehaviorSubject<any> = new BehaviorSubject([]);\r\n private _allUserPaymentmethods: BehaviorSubject<any> = new BehaviorSubject([]);\r\n private _cartProductDetails: BehaviorSubject<IProductMain> = new BehaviorSubject({} as IProductMain);\r\n\r\n //datafeed\r\n private _roleRestrictions: BehaviorSubject<Array<IRoleCreation>> = new BehaviorSubject(new Array<IRoleCreation>());\r\n private _allClients: BehaviorSubject<Array<IClient>> = new BehaviorSubject(new Array<IClient>());\r\n private _allProducts: BehaviorSubject<Array<IProductMain>> = new BehaviorSubject(new Array<IProductMain>());\r\n private _allSubscriptions: BehaviorSubject<Array<ISubscription>> = new BehaviorSubject(new Array<ISubscription>());\r\n private _allRoles: BehaviorSubject<Array<IRole>> = new BehaviorSubject(new Array<IRole>());\r\n //Store\r\n\r\n\r\n private _activeRoute: BehaviorSubject<any> = new BehaviorSubject('');\r\n\r\n constructor(\r\n private router: Router,\r\n private clientsApiService: ClientsApiService,\r\n private taskService: TasksApiService,\r\n private campaignApiService: CampaignsApiService,\r\n private couponApiService: CouponsApiService,\r\n private productApiService: ProductsApiService,\r\n private datafeedService: DataFeedService,\r\n private tagApiService: TagsApiService,\r\n private dashboardApiService: DashboardApiService,\r\n private searchesApiService: SearchesApiService,\r\n private usersApiService: UsersApiService,\r\n private companyApiService: CompanyApiService,\r\n private leadsApiService: LeadsApiService,\r\n private subscriptionApiService: SubscriptionApiService,\r\n private ordersApiService: OrdersApiService,\r\n private shopApiService: ShopApiService,\r\n private paymentMethodsApiService: PaymentMethodApiService\r\n ) { }\r\n\r\n getRoleRestrictions$() {\r\n return this._roleRestrictions;\r\n }\r\n setRoleRestrictions$(r: any) {\r\n this._roleRestrictions.next(r)\r\n }\r\n fetchRoleRestrictions() {\r\n this.datafeedService.getRoleRestrictions()\r\n .subscribe((response: any) => {\r\n if (response.good) {\r\n this.setRoleRestrictions$(response.data);\r\n }\r\n });\r\n }\r\n\r\n getAllClientsFeed$() {\r\n return this._allClients;\r\n }\r\n setAllClientsFeed$(r: any) {\r\n this._allClients.next(r)\r\n }\r\n fetchAllClientsFeed() {\r\n this.datafeedService.getAllClients()\r\n .subscribe((response: any) => {\r\n if (response.good) {\r\n this.setAllClientsFeed$(response.data);\r\n }\r\n });\r\n }\r\n\r\n getAllProductsFeed$() {\r\n return this._allProducts;\r\n }\r\n setAllProductsFeed$(r: any) {\r\n this._allProducts.next(r)\r\n }\r\n fetchAllProductsFeed() {\r\n this.datafeedService.getAllProducts()\r\n .subscribe((response: any) => {\r\n if (response.good) {\r\n this.setAllProductsFeed$(response.data);\r\n }\r\n });\r\n }\r\n\r\n getAllSubscriptionsFeed$() {\r\n return this._allSubscriptions;\r\n }\r\n setAllSubscriptionsFeed$(r: any) {\r\n this._allSubscriptions.next(r)\r\n }\r\n fetchAllSubscriptionsFeed() {\r\n this.datafeedService.getAllSubscriptions()\r\n .subscribe((response: any) => {\r\n if (response.good) {\r\n this.setAllSubscriptionsFeed$(response.data);\r\n }\r\n });\r\n }\r\n\r\n getAllRoles$() {\r\n return this._allRoles;\r\n }\r\n setAllRoles$(r: any) {\r\n this._allRoles.next(r)\r\n }\r\n fetchAllRoles() {\r\n this.datafeedService.getAllRoles()\r\n .subscribe((response: any) => {\r\n if (response.good) {\r\n this.setAllRoles$(response.data);\r\n }\r\n });\r\n }\r\n\r\n\r\n\r\n getActivePage$() {\r\n return this._activePage;\r\n }\r\n setActivePage$(r: any) {\r\n this._activePage.next(r)\r\n }\r\n\r\n getRefreshSignal$(key: string) {\r\n if (key in this._refreshSignals)\r\n return this._refreshSignals[key];\r\n return null;\r\n }\r\n setRefreshSignal$(key: string, id: string) {\r\n if (!(this._refreshSignals[key]))\r\n this._refreshSignals[key] = new BehaviorSubject<RefreshSignals>({} as RefreshSignals);\r\n this._refreshSignals[key].next({ id: id } as RefreshSignals);\r\n }\r\n\r\n\r\n getActiveUser$() {\r\n return this._activeUserInfo;\r\n }\r\n setActiveUser$(r: any) {\r\n this._activeUserInfo.next(r)\r\n }\r\n\r\n getActiveUserRoles$() {\r\n return this._activeUserRoles;\r\n }\r\n setActiveUserRoles$(r: any) {\r\n this._activeUserRoles.next(r)\r\n }\r\n\r\n getUserRolesForPage(pageName: string): IPermission {\r\n var doWhat: IPermission = {} as IPermission;\r\n this.getActiveUser$()\r\n .subscribe(u => {\r\n var r = getRolesForPage(u.roles, pageName);\r\n doWhat.isAdmin = r.isAdmin;\r\n doWhat.canRead = r.canRead || r.isAdmin;\r\n doWhat.canWrite = r.canWrite || r.isAdmin;\r\n doWhat.canDelete = r.canDelete || r.isAdmin;\r\n if (r.options)\r\n doWhat.roleOptions = JSON.parse(r.options!);\r\n });\r\n return doWhat;\r\n }\r\n\r\n\r\n getActiveRoute$() {\r\n return this._activeRoute;\r\n }\r\n setActiveRoute$(route: any) {\r\n this._activeRoute.next(route)\r\n }\r\n\r\n getAllClients$() {\r\n return this._allClientsData;\r\n }\r\n getAllProspectClients$() {\r\n return this._allProspectClientsData;\r\n }\r\n setAllClients$(data: any) {\r\n this._allClientsData.next(data)\r\n }\r\n setAllProspectClients$(data: any) {\r\n this._allProspectClientsData.next(data)\r\n }\r\n\r\n\r\n fetchAllClients(request: any) {\r\n this.clientsApiService.getAllClients(request)\r\n .subscribe((response: any) => {\r\n if (response.good) {\r\n this.setAllClients$(response);\r\n }\r\n });\r\n }\r\n\r\n fetchAllProspectClients(request: any) {\r\n this.clientsApiService.getAllProspectClients(request)\r\n .subscribe((response: any) => {\r\n if (response.good) {\r\n this.setAllProspectClients$(response);\r\n }\r\n });\r\n }\r\n\r\n getAllTasks$() {\r\n return this._allTasks;\r\n }\r\n setAllTasks$(data: any) {\r\n this._allTasks.next(data)\r\n }\r\n\r\n getForceLoadingTasks = () => this._forceLoadingTasks;\r\n\r\n setForceLoadingTasks = (force: boolean) => this._forceLoadingTasks.next(force);\r\n\r\n fetchAllTasks(request: any) {\r\n this.taskService.getAllTasks(request)\r\n .subscribe((response: any) => {\r\n if (response.good) {\r\n this.setAllTasks$(response);\r\n }\r\n });\r\n }\r\n\r\n\r\n getWidgets$() {\r\n return this._widgetsData;\r\n }\r\n setWidgets$(data: any) {\r\n this._widgetsData.next(data)\r\n }\r\n updateWidget$(data: any) {\r\n const currentValue = this._widgetsData.value;\r\n const updatedValue = currentValue.map((item) => {\r\n if (item.id === data.id) {\r\n return { ...data };\r\n }\r\n return item;\r\n })\r\n this._widgetsData.next(updatedValue)\r\n }\r\n\r\n fetchWidgets() {\r\n this.dashboardApiService.getUserWidgets()\r\n .subscribe((response: any) => {\r\n if (response.good) {\r\n this.setWidgets$(response.data);\r\n }\r\n });\r\n }\r\n\r\n fetchWidgetValues(widgetId: string) {\r\n this.dashboardApiService.getWidgetValues(widgetId)\r\n .subscribe((response: any) => {\r\n if (response.good) {\r\n this.updateWidget$(response.data);\r\n }\r\n });\r\n }\r\n\r\n removeWidget$(widgetId: string) {\r\n this.dashboardApiService.deleteWidget(widgetId)\r\n .subscribe((response: any) => {\r\n if (response.good) {\r\n const currentValue = this._widgetsData.value;\r\n const updatedValue = currentValue.filter((item) => item.id !== widgetId);\r\n this._widgetsData.next(updatedValue);\r\n }\r\n });\r\n }\r\n\r\n renameWidget$(widgetId: string, newName: string) {\r\n this.dashboardApiService.renameWidget(widgetId, newName)\r\n .subscribe((response: any) => {\r\n if (response.good) {\r\n this.updateWidget$(response.data);\r\n }\r\n });\r\n }\r\n\r\n editWidgetItems$(data: any) {\r\n this.dashboardApiService.editWidgetItems(data)\r\n .subscribe((response: any) => {\r\n if (response.good) {\r\n this.updateWidget$(response.data);\r\n }\r\n });\r\n }\r\n\r\n addWidget$() {\r\n this.dashboardApiService.addWidget()\r\n .subscribe((response: any) => {\r\n if (response.good) {\r\n this.fetchWidgets();\r\n }\r\n });\r\n }\r\n\r\n reorderWidget(widgetId: string, newOrder: number) {\r\n this.dashboardApiService.reorderWidget(widgetId, newOrder)\r\n .subscribe((response: any) => {\r\n if (response.good) {\r\n const currentValue = this._widgetsData.value;\r\n const updatedValue = currentValue.map((item) => {\r\n var newOrder = response.widgetsOrder.find((x: any) => x.key === item.id).value;\r\n return { ...item, order: newOrder };\r\n })\r\n this._widgetsData.next(updatedValue);\r\n }\r\n });\r\n }\r\n\r\n reorderWidgetItem(itemId: string, newOrder: number) {\r\n this.dashboardApiService.reorderWidgetItem(itemId, newOrder)\r\n .subscribe((response: any) => {\r\n if (response.good) {\r\n const currentValue = this._widgetsData.value;\r\n const widgetIndex = currentValue.findIndex(x => x.items.find(y => y.id === itemId));\r\n const updatedWidget = currentValue[widgetIndex].items.map((item) => {\r\n var newOrder = response.widgetsOrder.find((x: any) => x.key === item.id).value;\r\n return { ...item, order: newOrder };\r\n })\r\n const updatedValue = currentValue.map(w => {\r\n if (w.id === currentValue[widgetIndex].id)\r\n return { ...w, items: updatedWidget };\r\n else\r\n return { ...w };\r\n })\r\n this._widgetsData.next(updatedValue);\r\n }\r\n });\r\n }\r\n\r\n changeLayout(value: boolean) {\r\n this._changeLayout.next(value);\r\n }\r\n\r\n getChangeLayoutValue() {\r\n return this._changeLayout;\r\n }\r\n\r\n getAllCampaigns$() {\r\n return this._allCampaignsData;\r\n }\r\n setAllCampaigns$(data: any) {\r\n this._allCampaignsData.next(data)\r\n }\r\n\r\n fetchAllCampaigns(request: any) {\r\n this.campaignApiService.getAllCampaigns(request)\r\n .subscribe((response: any) => {\r\n if (response.good) {\r\n this.setAllCampaigns$(response);\r\n }\r\n });\r\n }\r\n\r\n getAllCoupons$() {\r\n return this._allCouponsData;\r\n }\r\n setAllCoupons$(data: any) {\r\n this._allCouponsData.next(data)\r\n }\r\n\r\n fetchAllCoupons(savedSearchId: any) {\r\n this.couponApiService.getAllCoupons(savedSearchId)\r\n .subscribe((response: any) => {\r\n if (response.good) {\r\n this.setAllCoupons$(response.data);\r\n }\r\n });\r\n }\r\n\r\n getAllProductsMain$() {\r\n return this._allProductsMain;\r\n }\r\n setAllProductsMain$(data: any) {\r\n this._allProductsMain.next(data)\r\n }\r\n\r\n fetchAllProductsMain(savedSearchId: any) {\r\n this.productApiService.getAllProducts(savedSearchId)\r\n .subscribe((response: any) => {\r\n if (response.good) {\r\n this.setAllProductsMain$(response.data);\r\n }\r\n });\r\n }\r\n\r\n\r\n getAllNotes$() {\r\n return this._allNotes;\r\n }\r\n setAllNotes$(data: any) {\r\n this._allNotes.next(data)\r\n }\r\n\r\n fetchAllNotes(id: string, type: number) {\r\n this.datafeedService.getNotes(id, type)\r\n .subscribe((response: any) => {\r\n if (response.good) {\r\n this.setAllNotes$(response.data);\r\n }\r\n });\r\n }\r\n\r\n getAllTags$() {\r\n return this._allTagsData;\r\n }\r\n setAllTags$(data: any) {\r\n this._allTagsData.next(data)\r\n }\r\n\r\n fetchAllTags(savedSearchId: any) {\r\n this.tagApiService.getAllTags(savedSearchId)\r\n .subscribe((response: any) => {\r\n if (response.good) {\r\n this.setAllTags$(response.data);\r\n }\r\n });\r\n }\r\n fetchAssociatedTags(id: string, type: number) {\r\n this.tagApiService.getAssociatedTags(id, type)\r\n .subscribe((response: any) => {\r\n if (response.good) {\r\n this.setAllTags$(response.data);\r\n }\r\n });\r\n }\r\n\r\n getPipeByName(pipeName: string) {\r\n\r\n switch (pipeName) {\r\n case 'P_AppDateFormat':\r\n return new P_AppDateFormat();\r\n case 'P_CampaignStageTitle':\r\n return new P_CampaignStageTitle();\r\n case 'P_RolesName_Filter':\r\n return new P_RolesName_Filter();\r\n case 'P_Boolean':\r\n return new P_Boolean();\r\n case 'P_CouponTypesTitle':\r\n return new P_CouponTypesTitle();\r\n case 'P_AppDateFormat':\r\n return new P_AppDateFormat();\r\n case 'P_CouponExpiry':\r\n return new P_CouponExpiry();\r\n case 'CurrencyPipe':\r\n return new CurrencyPipe('en-us');\r\n case 'P_ProductType':\r\n return new P_ProducType();\r\n case 'P_OrderStatus':\r\n return new P_OrderStatus();\r\n case 'Currency':\r\n return new CurrencyPipe('en-US');\r\n case 'NumberPipe':\r\n return new NumberPipe();\r\n case 'PercentPipe':\r\n return new PercentPipe();\r\n\r\n default:\r\n return;\r\n }\r\n }\r\n\r\n getPageTitle$() {\r\n return this._pageTitleRelay;\r\n }\r\n setPageTitle$(title: string) {\r\n this._pageTitleRelay.next(title)\r\n }\r\n\r\n fetchSearches() {\r\n this.searchesApiService.getUserSearches()\r\n .subscribe((response: any) => {\r\n if (response.good) {\r\n this.setSearches$(response.savedSearch);\r\n }\r\n });\r\n }\r\n\r\n setSearches$(data: any) {\r\n this._allSearches.next(data)\r\n }\r\n\r\n getAllSearches$() {\r\n return this._allSearches;\r\n }\r\n\r\n addSearch$(search: any) {\r\n this.searchesApiService.addEditSearch(search)\r\n .subscribe((response: any) => {\r\n if (response.good) {\r\n this.fetchSearches();\r\n }\r\n });\r\n }\r\n\r\n getAllUsers$() {\r\n return this._allUsers;\r\n }\r\n setAllUsers$(data: any) {\r\n this._allUsers.next(data)\r\n }\r\n\r\n fetchAllUsers(savedSearchId: any) {\r\n this.usersApiService.getAllUsers(savedSearchId)\r\n .subscribe((response: any) => {\r\n if (response.good) {\r\n this.setAllUsers$(response.data);\r\n }\r\n });\r\n }\r\n\r\n getAllCompanies$() {\r\n return this._allCompanies;\r\n }\r\n setAllCompanies$(data: any) {\r\n this._allCompanies.next(data)\r\n }\r\n\r\n fetchAllCompanies(savedSearchId: any) {\r\n this.companyApiService.getAllCompanies(savedSearchId)\r\n .subscribe((response: any) => {\r\n if (response.good) {\r\n this.setAllCompanies$(response.data);\r\n }\r\n });\r\n }\r\n\r\n getAllLeads$() {\r\n return this._allLeads;\r\n }\r\n\r\n fetchAllLeads(request: any) {\r\n this.leadsApiService.getAllLeads(request)\r\n .subscribe((response: any) => {\r\n if (response.good) {\r\n this._allLeads.next(response);\r\n }\r\n });\r\n }\r\n\r\n getAllUserSubscription() {\r\n return this._allUserSubscriptions;\r\n }\r\n\r\n fetchAllUserSubscriptions() {\r\n this.subscriptionApiService.getAllSubscriptions(null, null)\r\n .subscribe((response: any) => {\r\n if (response.good) {\r\n this._allUserSubscriptions.next(response.subscriptions)\r\n }\r\n });\r\n }\r\n\r\n getAllUserOrders() {\r\n return this._allOrders;\r\n }\r\n\r\n fetchAllUserOrders() {\r\n this.ordersApiService.getAllOrders()\r\n .subscribe((response: any) => {\r\n if (response.good) {\r\n this._allOrders.next(response.orders)\r\n }\r\n });\r\n }\r\n\r\n getAllShopOrders() {\r\n return this._allShopOrders;\r\n }\r\n\r\n getAllShopOrdersFiltered(){\r\n return this._allShopOrdersFiltered;\r\n }\r\n\r\n fetchAllShopOrders() {\r\n this.ordersApiService.getAllShopOrders()\r\n .subscribe((response: any) => {\r\n if (response.good) {\r\n this._allShopOrders.next(response.data)\r\n }\r\n });\r\n }\r\n\r\n fetchAllShopOrdersByFilter(request: any) {\r\n this.ordersApiService.getAllShopOrdersByFilter(request)\r\n .subscribe((response: any) => {\r\n if (response.good) {\r\n this._allShopOrdersFiltered.next(response)\r\n }\r\n });\r\n }\r\n\r\n getCartProductDetails$() {\r\n return this._cartProductDetails;\r\n }\r\n clearCartProductDetails$() {\r\n this._cartProductDetails.next({} as IProductMain);\r\n }\r\n\r\n fetchCartProductDetails(id: string) {\r\n this.shopApiService.getProductDetails(id)\r\n .subscribe((response: any) => {\r\n if (response.good) {\r\n this._cartProductDetails.next(response.data)\r\n }\r\n });\r\n }\r\n\r\n fetchAllUserPaymentMethods() {\r\n this.paymentMethodsApiService.getAllPaymentMethods()\r\n .subscribe((response: any) => {\r\n if (response.good) {\r\n this._allUserPaymentmethods.next(response.paymentMethods)\r\n }\r\n });\r\n }\r\n\r\n getAllUserPaymentMethods() {\r\n return this._allUserPaymentmethods;\r\n }\r\n\r\n clearData() {\r\n this._pageTitleRelay = new BehaviorSubject<string>('');\r\n this._activePage = new BehaviorSubject<string>('');\r\n this._refreshSignals = {};\r\n //Store // TODO: we will move these to index db for caching in future\r\n this._activeUserInfo = new BehaviorSubject<IUser>({} as IUser);\r\n this._activeUserRoles = new BehaviorSubject(new Array<any>());\r\n this._allClientsData = new BehaviorSubject({ data: [], totalCount: 0 });\r\n this._widgetsData = new BehaviorSubject(new Array<IWidget>());\r\n this._changeLayout = new BehaviorSubject<boolean>(false);\r\n this._allCampaignsData = new BehaviorSubject({ data: [], totalCount: 0 });\r\n this._allShopOrdersFiltered = new BehaviorSubject({ data: [], totalCount: 0 });\r\n this._allNotes = new BehaviorSubject(new Array<INotes>());\r\n this._allTagsData = new BehaviorSubject(new Array<ITag>());\r\n this._allTasks = new BehaviorSubject({ data: [], totalCount: 0 });\r\n this._forceLoadingTasks = new BehaviorSubject<boolean>(false);\r\n this._allSearches = new BehaviorSubject(new Array<ISearch>());\r\n this._allUsers = new BehaviorSubject(new Array<IUser>());\r\n this._allCompanies = new BehaviorSubject(new Array<ICompany>());\r\n this._allLeads = new BehaviorSubject({});\r\n //datafeed\r\n this._roleRestrictions = new BehaviorSubject(new Array<IRoleCreation>());\r\n this._allClients = new BehaviorSubject(new Array<IClient>());\r\n this._allRoles = new BehaviorSubject(new Array<IRole>());\r\n }\r\n}\r\n\r\n\r\n","// This file can be replaced during build by using the `fileReplacements` array.\n// `ng build --prod` replaces `environment.ts` with `environment.prod.ts`.\n// The list of file replacements can be found in `angular.json`.\n\nexport const environment = {\n production: true,\n environmentName: 'production',\n baseUrl: 'https://reachmeapiprod.azurewebsites.net',\n apiBaseUrl: 'https://reachmeapiprod.azurewebsites.net',\n automationsApiBaseUrl: 'https://reachmeapiprod.azurewebsites.net',\n googleAnalyticsId: 'G-0S3Z1MFX5P',\n};\n\n/*\n* For easier debugging in development mode, you can import the following file\n* to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`.\n*\n* This import should be commented out in production mode because it will have a negative impact\n* on performance if an error is thrown.\n*/\n// import 'zone.js/plugins/zone-error'; // Included with Angular CLI.\n\n","import { enableProdMode } from '@angular/core';\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n\nimport { AppModule } from './app/app.module';\nimport { environment } from './environments/environment';\n\nif (environment.production) {\n enableProdMode();\n}\n\nplatformBrowserDynamic().bootstrapModule(AppModule)\n .catch(err => console.error(err));\n","var map = {\n\t\"./af\": 26431,\n\t\"./af.js\": 26431,\n\t\"./ar\": 81286,\n\t\"./ar-dz\": 1616,\n\t\"./ar-dz.js\": 1616,\n\t\"./ar-kw\": 9759,\n\t\"./ar-kw.js\": 9759,\n\t\"./ar-ly\": 43160,\n\t\"./ar-ly.js\": 43160,\n\t\"./ar-ma\": 62551,\n\t\"./ar-ma.js\": 62551,\n\t\"./ar-sa\": 79989,\n\t\"./ar-sa.js\": 79989,\n\t\"./ar-tn\": 6962,\n\t\"./ar-tn.js\": 6962,\n\t\"./ar.js\": 81286,\n\t\"./az\": 15887,\n\t\"./az.js\": 15887,\n\t\"./be\": 14572,\n\t\"./be.js\": 14572,\n\t\"./bg\": 3276,\n\t\"./bg.js\": 3276,\n\t\"./bm\": 93344,\n\t\"./bm.js\": 93344,\n\t\"./bn\": 58985,\n\t\"./bn-bd\": 83990,\n\t\"./bn-bd.js\": 83990,\n\t\"./bn.js\": 58985,\n\t\"./bo\": 94391,\n\t\"./bo.js\": 94391,\n\t\"./br\": 46728,\n\t\"./br.js\": 46728,\n\t\"./bs\": 5536,\n\t\"./bs.js\": 5536,\n\t\"./ca\": 41043,\n\t\"./ca.js\": 41043,\n\t\"./cs\": 70420,\n\t\"./cs.js\": 70420,\n\t\"./cv\": 33513,\n\t\"./cv.js\": 33513,\n\t\"./cy\": 6771,\n\t\"./cy.js\": 6771,\n\t\"./da\": 47978,\n\t\"./da.js\": 47978,\n\t\"./de\": 46061,\n\t\"./de-at\": 25204,\n\t\"./de-at.js\": 25204,\n\t\"./de-ch\": 2653,\n\t\"./de-ch.js\": 2653,\n\t\"./de.js\": 46061,\n\t\"./dv\": 85,\n\t\"./dv.js\": 85,\n\t\"./el\": 8579,\n\t\"./el.js\": 8579,\n\t\"./en-au\": 25724,\n\t\"./en-au.js\": 25724,\n\t\"./en-ca\": 10525,\n\t\"./en-ca.js\": 10525,\n\t\"./en-gb\": 52847,\n\t\"./en-gb.js\": 52847,\n\t\"./en-ie\": 67216,\n\t\"./en-ie.js\": 67216,\n\t\"./en-il\": 39305,\n\t\"./en-il.js\": 39305,\n\t\"./en-in\": 73364,\n\t\"./en-in.js\": 73364,\n\t\"./en-nz\": 79130,\n\t\"./en-nz.js\": 79130,\n\t\"./en-sg\": 11161,\n\t\"./en-sg.js\": 11161,\n\t\"./eo\": 50802,\n\t\"./eo.js\": 50802,\n\t\"./es\": 40328,\n\t\"./es-do\": 45551,\n\t\"./es-do.js\": 45551,\n\t\"./es-mx\": 75615,\n\t\"./es-mx.js\": 75615,\n\t\"./es-us\": 64790,\n\t\"./es-us.js\": 64790,\n\t\"./es.js\": 40328,\n\t\"./et\": 96389,\n\t\"./et.js\": 96389,\n\t\"./eu\": 52961,\n\t\"./eu.js\": 52961,\n\t\"./fa\": 26151,\n\t\"./fa.js\": 26151,\n\t\"./fi\": 7997,\n\t\"./fi.js\": 7997,\n\t\"./fil\": 58898,\n\t\"./fil.js\": 58898,\n\t\"./fo\": 37779,\n\t\"./fo.js\": 37779,\n\t\"./fr\": 28174,\n\t\"./fr-ca\": 3287,\n\t\"./fr-ca.js\": 3287,\n\t\"./fr-ch\": 38867,\n\t\"./fr-ch.js\": 38867,\n\t\"./fr.js\": 28174,\n\t\"./fy\": 50452,\n\t\"./fy.js\": 50452,\n\t\"./ga\": 45014,\n\t\"./ga.js\": 45014,\n\t\"./gd\": 74127,\n\t\"./gd.js\": 74127,\n\t\"./gl\": 72124,\n\t\"./gl.js\": 72124,\n\t\"./gom-deva\": 6444,\n\t\"./gom-deva.js\": 6444,\n\t\"./gom-latn\": 37953,\n\t\"./gom-latn.js\": 37953,\n\t\"./gu\": 76604,\n\t\"./gu.js\": 76604,\n\t\"./he\": 1222,\n\t\"./he.js\": 1222,\n\t\"./hi\": 74235,\n\t\"./hi.js\": 74235,\n\t\"./hr\": 622,\n\t\"./hr.js\": 622,\n\t\"./hu\": 37735,\n\t\"./hu.js\": 37735,\n\t\"./hy-am\": 90402,\n\t\"./hy-am.js\": 90402,\n\t\"./id\": 59187,\n\t\"./id.js\": 59187,\n\t\"./is\": 30536,\n\t\"./is.js\": 30536,\n\t\"./it\": 35007,\n\t\"./it-ch\": 94667,\n\t\"./it-ch.js\": 94667,\n\t\"./it.js\": 35007,\n\t\"./ja\": 62093,\n\t\"./ja.js\": 62093,\n\t\"./jv\": 80059,\n\t\"./jv.js\": 80059,\n\t\"./ka\": 66870,\n\t\"./ka.js\": 66870,\n\t\"./kk\": 80880,\n\t\"./kk.js\": 80880,\n\t\"./km\": 1083,\n\t\"./km.js\": 1083,\n\t\"./kn\": 68785,\n\t\"./kn.js\": 68785,\n\t\"./ko\": 21721,\n\t\"./ko.js\": 21721,\n\t\"./ku\": 37851,\n\t\"./ku.js\": 37851,\n\t\"./ky\": 1727,\n\t\"./ky.js\": 1727,\n\t\"./lb\": 40346,\n\t\"./lb.js\": 40346,\n\t\"./lo\": 93002,\n\t\"./lo.js\": 93002,\n\t\"./lt\": 64035,\n\t\"./lt.js\": 64035,\n\t\"./lv\": 56927,\n\t\"./lv.js\": 56927,\n\t\"./me\": 5634,\n\t\"./me.js\": 5634,\n\t\"./mi\": 94173,\n\t\"./mi.js\": 94173,\n\t\"./mk\": 86320,\n\t\"./mk.js\": 86320,\n\t\"./ml\": 11705,\n\t\"./ml.js\": 11705,\n\t\"./mn\": 31062,\n\t\"./mn.js\": 31062,\n\t\"./mr\": 92805,\n\t\"./mr.js\": 92805,\n\t\"./ms\": 11341,\n\t\"./ms-my\": 59900,\n\t\"./ms-my.js\": 59900,\n\t\"./ms.js\": 11341,\n\t\"./mt\": 37734,\n\t\"./mt.js\": 37734,\n\t\"./my\": 19034,\n\t\"./my.js\": 19034,\n\t\"./nb\": 9324,\n\t\"./nb.js\": 9324,\n\t\"./ne\": 46495,\n\t\"./ne.js\": 46495,\n\t\"./nl\": 70673,\n\t\"./nl-be\": 76272,\n\t\"./nl-be.js\": 76272,\n\t\"./nl.js\": 70673,\n\t\"./nn\": 72486,\n\t\"./nn.js\": 72486,\n\t\"./oc-lnc\": 46219,\n\t\"./oc-lnc.js\": 46219,\n\t\"./pa-in\": 2829,\n\t\"./pa-in.js\": 2829,\n\t\"./pl\": 78444,\n\t\"./pl.js\": 78444,\n\t\"./pt\": 53170,\n\t\"./pt-br\": 66117,\n\t\"./pt-br.js\": 66117,\n\t\"./pt.js\": 53170,\n\t\"./ro\": 96587,\n\t\"./ro.js\": 96587,\n\t\"./ru\": 39264,\n\t\"./ru.js\": 39264,\n\t\"./sd\": 42135,\n\t\"./sd.js\": 42135,\n\t\"./se\": 95366,\n\t\"./se.js\": 95366,\n\t\"./si\": 93379,\n\t\"./si.js\": 93379,\n\t\"./sk\": 46143,\n\t\"./sk.js\": 46143,\n\t\"./sl\": 196,\n\t\"./sl.js\": 196,\n\t\"./sq\": 21082,\n\t\"./sq.js\": 21082,\n\t\"./sr\": 91621,\n\t\"./sr-cyrl\": 98963,\n\t\"./sr-cyrl.js\": 98963,\n\t\"./sr.js\": 91621,\n\t\"./ss\": 41404,\n\t\"./ss.js\": 41404,\n\t\"./sv\": 55685,\n\t\"./sv.js\": 55685,\n\t\"./sw\": 3872,\n\t\"./sw.js\": 3872,\n\t\"./ta\": 54106,\n\t\"./ta.js\": 54106,\n\t\"./te\": 39204,\n\t\"./te.js\": 39204,\n\t\"./tet\": 83692,\n\t\"./tet.js\": 83692,\n\t\"./tg\": 86361,\n\t\"./tg.js\": 86361,\n\t\"./th\": 31735,\n\t\"./th.js\": 31735,\n\t\"./tk\": 1568,\n\t\"./tk.js\": 1568,\n\t\"./tl-ph\": 96129,\n\t\"./tl-ph.js\": 96129,\n\t\"./tlh\": 13759,\n\t\"./tlh.js\": 13759,\n\t\"./tr\": 81644,\n\t\"./tr.js\": 81644,\n\t\"./tzl\": 90875,\n\t\"./tzl.js\": 90875,\n\t\"./tzm\": 16878,\n\t\"./tzm-latn\": 11041,\n\t\"./tzm-latn.js\": 11041,\n\t\"./tzm.js\": 16878,\n\t\"./ug-cn\": 74357,\n\t\"./ug-cn.js\": 74357,\n\t\"./uk\": 74810,\n\t\"./uk.js\": 74810,\n\t\"./ur\": 86794,\n\t\"./ur.js\": 86794,\n\t\"./uz\": 28966,\n\t\"./uz-latn\": 77959,\n\t\"./uz-latn.js\": 77959,\n\t\"./uz.js\": 28966,\n\t\"./vi\": 35386,\n\t\"./vi.js\": 35386,\n\t\"./x-pseudo\": 23156,\n\t\"./x-pseudo.js\": 23156,\n\t\"./yo\": 68028,\n\t\"./yo.js\": 68028,\n\t\"./zh-cn\": 9330,\n\t\"./zh-cn.js\": 9330,\n\t\"./zh-hk\": 89380,\n\t\"./zh-hk.js\": 89380,\n\t\"./zh-mo\": 60874,\n\t\"./zh-mo.js\": 60874,\n\t\"./zh-tw\": 96508,\n\t\"./zh-tw.js\": 96508\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 46700;"],"sourceRoot":"webpack:///"}