{"version":3,"file":"4601.7adcad84762c852d.js","mappings":"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","names":["CardsType","customers","resellers","subscriptions","seats","sites","departments","products","office365","office365Reports","azurePortal","users","PortletTargetActions","revenueVsCostByCategory","topFiveProductsBySeatsPurchased","topFiveProductsByRevenue","countsBySKU","purchaseOfSeats","valuedCustomers","revenueVsCost","seatsCount","pastDues","accountsReceivable","invoiceAmount","profitability","resellerCount","customerCount","subscriptionsCount","sitesCount","departmentsCount","customerSeatsCount","productsCount","usersCount","office365UsageReports","purchaseOfSeatsByCustomer","countsBySkuPurchasedByCustomer","topFiveProductsByRenewalDate","termsAndConditionsAcceptedList","DurationUnits","all","threeMonths","sixMonths","tweleveMonths","lastBillingPeriod","threeBillingPeriod","sixBillingPeriod","twelveBillingPeriod","Partners","microsoft","partner","microsoftNonCSP","i0","_r2","ctx_r2","partnerAgreement","ezidebitAgreement","microsoftCloudAgreement","cancel","partnerAgreementClickedFlag","ezidebitAgreementClickedFlag","microsoftCloudAgreementClickedFlag","TermsAndConditions","ContentWhenCustomHyperlink","_c1","CompanyName","CustomHyperlinkText","_r5","PartnerAgreementClicked","TermsAndConditionsComponent","_clientSettingsService","TermsAndConditionsService","commonService","_translateService","_ngbModalService","toasterService","cdRef","el","renderer","sanitized","router","notifierService","pageInfo","billingProfile","pathToEzidebitAgreement","pathToPartnerAgreement","isUserAcceptedTermsAndConditions","isFormSubmitted","pathToCustomerConsent","modalInstance","modalsomething","complicateHtml1","complicatedHtml2","partnerEventBound","eziDebitEventBound","constructor","this","updateTitle","instant","ngOnInit","getData","subscribe","Data","BillingProvider","PathToEzidebitAgreement","IsAcceptedTermsAndConditions","GetTermsAndConditions","SaveTermsAndConditions","form","valid","SubmitTermsAndConditions","CheckAllAgreementsClicked","_","acceptTermsAndConditions","ID","IsAccepted","PathToPartnerAgreement","EntityName","entityName","RecordId","recordId","success","title","then","result","isConfirmed","navigate","open","leading","EzidebitAgreementClicked","window","MicrosoftCloudAgreementClicked","dismissAll","getTermsAndConditions","IsCustomTermsandConditionsHyperlinkActive","detectChanges","CustomerConsentURL","error","ExceptionMessage","Message","SafeHtmlOne","translateString","obj","bypassSecurityTrustHtml","i1","i2","i3","i4","i5","i6","i7","i8","i9","i10","selectors","viewQuery","rf","ctx","TermsAndConditionsComponent_ng_template_0_Template","_r1","frmAcceptTermsAndConditions_r4","TermsAndConditionsComponent_div_11_Template","TermsAndConditionsComponent_div_12_Template","TermsAndConditionsComponent_div_13_Template","TermsAndConditionsComponent_div_16_Template","$event","TermsAndConditionsComponent_span_24_Template","TermsAndConditionsComponent_div_25_Template","IsAccepted_r6","invalid","routes","path","redirectTo","pathMatch","canActivate","AuthGuard","loadChildren","Promise","__webpack_require__","e","bind","m","DashboardModule","loadComponent","NotificationsComponent","UserManagementComponent","AddUserComponent","UserManagementTagComponent","AddUserManagementTagComponent","ProfileModule","InvoicesComponent","InvoiceComponent","children","InvoiceLineItemsComponent","InvoiceCommentsComponent","AddAdjustmentComponent","canDeactivate","TermsAndConditionsDeactivateGuard","termsAndConditionsService","component","currentRoute","currentState","nextState","factory","ɵfac","providedIn","HomeRoutingModule","RouterModule","forChild","HomeModule","CommonModule","StatCardComponent","TranslateModule","StatWithGraphCardComponent","ProfabilityCardComponent","PurchaseOfSeatsCardComponent","NgbDatepickerModule","NgbModule","FormsModule","ctx_r0","billingPeriodsData","BillingStartDate","BillingEndDate","BillGenerationDate","ProfabilityCardComponent_Conditional_11_Conditional_50_Template","ProfabilityCardComponent_Conditional_11_Conditional_51_Template","ProfabilityCardComponent_Conditional_11_Conditional_70_Template","ProfabilityCardComponent_Conditional_11_Conditional_71_Template","_c0","TotalProviderBilledAmount","CurrencySymbol","CurrencyDecimalPlaces","CurrencyThousandSeperator","CurrencyDecimalSeperator","TotalC3BillAmount","TotalNetProfit","ProfitPercentage","dashboardWidgetsService","_appService","cdref","data","startBillingDate","endBillingDate","billGenerationDate","isLoading","subscription","globalDateFormat","routerLink","isProfitabilityDetailsLoading","$rootScope","dateFormat","getBillingPeriods","pipe","switchMap","billingPeriods","billingPeriodId","length","BillingPeriodId","moment","format","toUpperCase","forkJoin","getProfability","profabilityData","TotalCostOnPartner","TotalBilledAmount","TotalProfitAmount","TotalProfitPercentage","formatNumber","value","toLocaleString","undefined","minimumFractionDigits","maximumFractionDigits","navigateToRevenue","standalone","features","decls","vars","consts","template","ProfabilityCardComponent_Conditional_8_Template","ProfabilityCardComponent_Conditional_10_Template","ProfabilityCardComponent_Conditional_11_Template","LoaderComponent","TranslationModule","MegaNumberPipe","C3DatePipe","styles","duration_r3","$implicit","ctx_r3","selectedDuration","PurchaseOfSeatsCardComponent_Conditional_8_For_6_Template","dropdown_r5","generatePNG","generateSVG","selectedTimePeriod","durationUnits","PurchaseOfSeatsCardComponent_Conditional_11_Conditional_16_Template","PurchaseOfSeatsCardComponent_Conditional_11_Conditional_17_Template","chartOptions","series","chart","xaxis","tooltip","yaxis","stroke","markers","dataLabels","grid","PreviousMonthSeats","CurrentMonthSeats","netPercentage","dashboardService","cdr","loaderService","translateService","translationService","recordID","purchaseOfseatsData","downloadIconStatus","chartUtilities","ChartUtilities","map","item","translateVariables","startLoading","getPurchaseofSeats","duration","getPurchaseOfSeats","response","toFixed","purchasedMonths","PurchasedMonth","totalQuantities","TotalQuantity","stopLoading","drawGraph","name","fill","colors","type","opacity","height","zoom","enabled","toolbar","show","curve","strokeDashArray","categories","axisBorder","lines","dashArray","labels","style","fontSize","cssClass","text","y","formatter","val","size","dropdown","close","isloadingstart","setTimeout","element","document","getElementById","toggleButton","ngOnDestroy","unsubscribe","PurchaseOfSeatsCardComponent_Conditional_1_Template","PurchaseOfSeatsCardComponent_Conditional_8_Template","PurchaseOfSeatsCardComponent_Conditional_10_Template","PurchaseOfSeatsCardComponent_Conditional_11_Template","PurchaseOfSeatsCardComponent_Conditional_12_Template","CommonNoRecordComponent","NgApexchartsModule","NgClass","NgbDropdownModule","SharedModule","customersCount","CustomerCount","resellersCount","ResellerCount","DeletedCustomerCountInCurrentMonth","DeletedResellerCountInCurrentMonth","NewCustomerCountInCurrentMonth","NewResellerCountInCurrentMonth","widgetKey","bgColor","customerCardBgColor","resellerCardBgColor","cardType","customerCardLink","resellersCardLink","portletTargetAction","cardsTypes","getCustomersCount","getResellersCount","openCustomersList","inputs","StatCardComponent_Conditional_4_Template","StatCardComponent_Conditional_5_Template","StatCardComponent_Conditional_7_Template","StatCardComponent_Conditional_8_Template","StatCardComponent_Conditional_10_Template","StatCardComponent_Conditional_11_Template","StatCardComponent_Conditional_17_Template","StatCardComponent_Conditional_18_Template","StatCardComponent_Conditional_23_Template","StatCardComponent_Conditional_24_Template","SeatsCount","TotalPurchasedProductCount","seatsCardBgColor","subscriptionsCardBgColor","productsCountOnDate","seatsCountOnDate","getProductsCountOnDate","getSubscriptionsCount","productCounts","ProductsCount","onDate","OnDate","getSeatsCountOnDate","getSeatsCount","initialValue","Math","min","count","index","x","sparkline","barColor","barSpacing","barWidth","fillColor","plotOptions","bar","horizontal","columnWidth","endingShape","ranges","from","to","Number","MAX_SAFE_INTEGER","color","distributed","shared","intersect","date","Date","month","getDate","getFullYear","StatWithGraphCardComponent_Conditional_4_Template","StatWithGraphCardComponent_Conditional_5_Template","StatWithGraphCardComponent_Conditional_7_Template","StatWithGraphCardComponent_Conditional_8_Template","StatWithGraphCardComponent_Conditional_10_Template","StatWithGraphCardComponent_Conditional_11_Template","fileName","html2canvas","canvas","dataURL","toDataURL","downloadImage","svgElement","querySelector","svgString","XMLSerializer","serializeToString","svgBlob","Blob","URL","createObjectURL","filename","a","createElement","href","download","body","appendChild","click","removeChild","generateCSV","csvData","convertToCSV","blob","url","Object","keys","join","values"],"ignoreList":[],"sourceRoot":"webpack:///","sources":["./src/app/modules/home/dashboard-widgets/models/dashboard.model.ts","./src/app/modules/home/dashboard-widgets/models/widgets.model.ts","./src/app/modules/home/terms-and-conditions/terms-and-conditions.component.html","./src/app/modules/home/terms-and-conditions/terms-and-conditions.component.ts","./src/app/modules/home/home-routing.module.ts","./src/app/modules/auth/services/terms-and-conditions-deactivate.guard.ts","./src/app/modules/home/home.module.ts","./src/app/modules/standalones/cards/profability-card/profability-card.component.html","./src/app/modules/standalones/cards/profability-card/profability-card.component.ts","./src/app/modules/standalones/cards/purchase-of-seats-card/purchase-of-seats-card.component.html","./src/app/modules/standalones/cards/purchase-of-seats-card/purchase-of-seats-card.component.ts","./src/app/modules/standalones/cards/stat-card/stat-card.component.html","./src/app/modules/standalones/cards/stat-card/stat-card.component.ts","./src/app/modules/standalones/cards/stat-with-graph-card/stat-with-graph-card.component.html","./src/app/modules/standalones/cards/stat-with-graph-card/stat-with-graph-card.component.ts","./src/app/modules/standalones/loader/loader.component.ts","./src/app/modules/standalones/loader/loader.component.html","./src/app/shared/utilities/chart-utilities.ts"],"sourcesContent":["import { SafeHtml } from \"@angular/platform-browser\";\r\n\r\nexport enum CardsType {\r\n customers = 'Customers',\r\n resellers = 'Resellers',\r\n subscriptions = 'Subscriptions',\r\n seats = 'Seats',\r\n sites = 'Sites',\r\n departments = 'Departments',\r\n products = 'Products',\r\n office365 = 'Office 365',\r\n office365Reports = 'Office 365 Reports',\r\n azurePortal = 'Azure Portal',\r\n users = 'Users'\r\n}\r\n\r\n\r\nexport enum PortletTargetActions {\r\n revenueVsCostByCategory = \"CARD_REVENUE_VERSUS_COST_BY_CATEGORY\",\r\n topFiveProductsBySeatsPurchased = \"CARD_TOP_FIVE_PRODUCTS_BY_SEATS_PURCHASED\",\r\n topFiveProductsByRevenue = \"CARD_TOP_FIVE_PRODUCTS_BY_REVENUE\",\r\n countsBySKU = \"CARD_COUNTS_BY_SKU\",\r\n purchaseOfSeats = \"CARD_PURCHASE_OF_SEATS\",\r\n valuedCustomers = \"CARD_VALUED_CUSTOMERS\",\r\n revenueVsCost = \"CARD_REVENUE_VS_COST\",\r\n seatsCount = \"CARD_SEATS_COUNT\",\r\n pastDues = \"CARD_PAST_DUES\",\r\n accountsReceivable = \"CARD_ACCOUNTS_RECEIVABLE\",\r\n invoiceAmount = \"CARD_INVOICE_AMOUNT\",\r\n profitability = \"CARD_PROFITABILITY\",\r\n resellerCount = \"CARD_RESELLER_COUNT\",\r\n customerCount = \"CARD_CUSTOMER_COUNT\",\r\n subscriptionsCount = \"CARD_SUBSCRIPTIONS_COUNT\",\r\n // New values:\r\n sitesCount = \"CARD_SITES_COUNT\",\r\n departmentsCount = \"CARD_DEPARTMENTS_COUNT\",\r\n customerSeatsCount = \"CARD_CUSTOMER_SEATS_COUNT\",\r\n productsCount = \"CARD_PRODUCTS_COUNT\",\r\n usersCount = \"CARD_USERS_COUNT\",\r\n office365 = \"CARD_OFFICE_365\",\r\n office365UsageReports = \"CARD_OFFICE365_USAGE_REPORTS\",\r\n azurePortal = \"CARD_AZURE_PORTAL\",\r\n purchaseOfSeatsByCustomer = \"CARD_PURCHASE_OF_SEATS_BY_CUSTOMER\",\r\n countsBySkuPurchasedByCustomer = \"CARD_COUNTS_BY_SKU_PURCHASED_BY_CUSTOMER\",\r\n topFiveProductsByRenewalDate = \"CARD_TOP_FIVE_PRODUCTS_BY_RENEWAL_DATE\",\r\n termsAndConditionsAcceptedList = \"CARD_TERMS_AND_CONDITIONS_ACCEPTED_LIST\"\r\n}\r\n\r\n\r\nexport interface BillingPeriodData {\r\n BillGenerationDate: string;\r\n BillingEndDate: string;\r\n BillingId: string;\r\n BillingPeriodId: number;\r\n BillingStartDate: string;\r\n}\r\n\r\nexport interface CustomerCardData {\r\n OperationType: null | any;\r\n Status: string;\r\n RequestCorrelationID: string;\r\n ErrorMessage: null | any;\r\n ErrorDetail: null | any;\r\n Data: {\r\n CustomerCount: number;\r\n NewCustomerCountInCurrentMonth: number;\r\n DeletedCustomerCountInCurrentMonth: number;\r\n }\r\n}\r\n\r\nexport interface ResellerCardData {\r\n OperationType: null | any;\r\n Status: string;\r\n RequestCorrelationID: string;\r\n ErrorMessage: null | any;\r\n ErrorDetail: null | any;\r\n Data: {\r\n ResellerCount: number;\r\n NewResellerCountInCurrentMonth: number;\r\n DeletedResellerCountInCurrentMonth: number;\r\n }\r\n}\r\n\r\nexport interface SubscriptionCardData {\r\n OperationType: null | any;\r\n Status: string;\r\n RequestCorrelationID: string;\r\n ErrorMessage: null | any;\r\n ErrorDetail: null | any;\r\n Data: {\r\n TotalPurchasedProductCount: number;\r\n }\r\n}\r\n\r\n\r\n\r\n\r\nexport interface seatsCardData {\r\n OperationType: null | any;\r\n Status: string;\r\n RequestCorrelationID: string;\r\n ErrorMessage: null | any;\r\n ErrorDetail: null | any;\r\n Data: {\r\n SeatsCount: number;\r\n }\r\n}\r\n\r\nexport interface ProfabilityData {\r\n TotalRows: number;\r\n RowNum: null | any;\r\n ID: null | any;\r\n Name: string;\r\n C3Id: string;\r\n CostOnPartner: number;\r\n BilledAmount: number;\r\n ProfitAmount: number;\r\n ProfitPercentage?: null | any;\r\n TotalCostOnPartner?: number;\r\n TotalBilledAmount?: number;\r\n TotalProfitAmount?: number | any;\r\n TotalProfitPercentage?: null | any;\r\n CurrencyCode: string;\r\n CurrencySymbol: string;\r\n CurrencyDecimalPlaces: number;\r\n CurrencyDecimalSeperator: string;\r\n CurrencyThousandSeperator: string;\r\n Entity: string;\r\n InternalBillingID: string;\r\n InvoiceNumber: null | any;\r\n SaleType: string;\r\n Category: string;\r\n Provider: string;\r\n Level: number;\r\n IsGroupRow: boolean;\r\n GroupId: string;\r\n ParentGroupId: number;\r\n isShowInvoice: boolean;\r\n IsLineItemLoaded: boolean;\r\n LineItemCount: number;\r\n}\r\n\r\nexport interface ProfabilityCardData {\r\n OperationType: null | any;\r\n Status: string;\r\n RequestCorrelationID: string;\r\n ErrorMessage: null | any;\r\n ErrorDetail: null | any;\r\n Data: ProfabilityData[];\r\n}\r\n\r\n\r\n\r\ninterface ChildMenu {\r\n Id: number;\r\n Menu: string;\r\n Heading: boolean;\r\n Text: string;\r\n Sref: string;\r\n Icon: string;\r\n IsSideMenu: boolean;\r\n OrderSequence: number;\r\n ParentMenu: number | null;\r\n svg:SafeHtml;\r\n}\r\n\r\ninterface ParentMenu {\r\n Id: number;\r\n Menu: string;\r\n Heading: boolean;\r\n Text: string;\r\n Sref: string;\r\n Icon: string;\r\n IsSideMenu: boolean;\r\n OrderSequence: number;\r\n ParentMenu: null;\r\n svg:SafeHtml;\r\n}\r\n\r\nexport interface SideMenuData {\r\n parent: ParentMenu;\r\n children: ChildMenu[];\r\n}\r\n\r\n\r\ninterface BillingData {\r\n BillingMonth: string;\r\n BillingYear: number;\r\n CostOnPartner: number;\r\n BilledAmount: number;\r\n CurrencySymbol: string;\r\n CurrencyDecimalPlaces: string;\r\n CurrencyDecimalSeperator: string;\r\n CurrencyThousandSeperator: string;\r\n CurrencyCode: string;\r\n}\r\n\r\nexport interface RevenueVsCostData {\r\n OperationType: string | null;\r\n Status: string;\r\n RequestCorrelationID: string;\r\n ErrorMessage: string | null;\r\n ErrorDetail: string | null;\r\n Data: BillingData[];\r\n}\r\n\r\n\r\nexport interface TopSkusDataResponse {\r\n OperationType: null,\r\n Status: string,\r\n RequestCorrelationID: string,\r\n ErrorMessage: null,\r\n ErrorDetail: null,\r\n Data: SkusData[]\r\n}\r\n\r\ninterface SkusData {\r\n ProductName: string,\r\n Seats: number\r\n}\r\n\r\n\r\nexport interface SeatsPurchasedTopProductsResponse {\r\n OperationType: null,\r\n Status: string,\r\n RequestCorrelationID: string,\r\n ErrorMessage: null,\r\n ErrorDetail: null,\r\n Data: SeatsPurchasedTopProductData[]\r\n}\r\n\r\nexport interface SeatsPurchasedTopProductData {\r\n ProductName: string,\r\n TotalQuantity: number\r\n}\r\n\r\n\r\nexport interface RevenueTopProductsResponse {\r\n OperationType: string | null;\r\n Status: string;\r\n RequestCorrelationID: string;\r\n ErrorMessage: string | null;\r\n ErrorDetail: string | null;\r\n Data: RevenueTopProductData[];\r\n}\r\n\r\nexport interface RevenueTopProductData {\r\n ProductName: string;\r\n Revenue: number;\r\n CurrencySymbol: string;\r\n CurrencyDecimalPlaces: any;\r\n CurrencyDecimalSeperator: string;\r\n CurrencyThousandSeperator: string;\r\n CurrencyCode: string;\r\n}\r\n\r\n\r\nexport interface TopCustomresResponseData {\r\n OperationType: string | null;\r\n Status: string;\r\n RequestCorrelationID: string;\r\n ErrorMessage: string | null;\r\n ErrorDetail: string | null;\r\n Data: CustomerData[];\r\n}\r\n\r\nexport interface CustomerData {\r\n CustomerName: string;\r\n BilledAmount: number;\r\n CurrencySymbol: string;\r\n CurrencyDecimalPlaces: any;\r\n CurrencyDecimalSeperator: string;\r\n CurrencyThousandSeperator: string;\r\n CurrencyCode: string;\r\n StartDateForLabel: string;\r\n EndDateForLabel: string;\r\n}\r\nexport interface CustomerPendingPaymentData {\r\n CustomerId: number;\r\n CustomerName: string;\r\n BillingEmail: string;\r\n PendingAmount: number;\r\n IsInvoiceBased: boolean | null;\r\n PaymentMethod: string;\r\n CurrencyCode: string;\r\n CurrencySymbol: string;\r\n CurrencyDecimalPlaces: any;\r\n CurrencyDecimalSeperator: string;\r\n CurrencyThousandSeperator: string;\r\n}\r\n\r\nexport interface PendingPaymentDataResponse {\r\n OperationType: any;\r\n Status: string;\r\n RequestCorrelationID: string;\r\n ErrorMessage: any;\r\n ErrorDetail: any;\r\n Data: CustomerPendingPaymentData[];\r\n}\r\n\r\nexport interface CustomersAndRessellersResponse {\r\n OperationType: any;\r\n Status: string;\r\n RequestCorrelationID: string;\r\n ErrorMessage: any;\r\n ErrorDetail: any;\r\n Data: CustomerAndResellerData[];\r\n}\r\n\r\nexport interface CustomerAndResellerData {\r\n\r\n C3Id: string;\r\n EntityName: string;\r\n Name: string;\r\n value: string,\r\n label: string\r\n}\r\n\r\n\r\nexport interface CategoryForRevenueCostResponse {\r\n OperationType: any;\r\n Status: string;\r\n RequestCorrelationID: string;\r\n ErrorMessage: any;\r\n ErrorDetail: any;\r\n Data: CategoryRevenueCostData[];\r\n}\r\n\r\nexport interface CategoryRevenueCostData {\r\n CategoryName: string;\r\n Description: string;\r\n}\r\n\r\n\r\n\r\nexport interface CategoryRevenueVsCostResponse {\r\n OperationType: string | null;\r\n Status: string;\r\n RequestCorrelationID: string;\r\n ErrorMessage: string | null;\r\n ErrorDetail: string | null;\r\n Data: CategoryRevenueVsCostData[];\r\n}\r\n\r\nexport interface CategoryRevenueVsCostData {\r\n BilledAmount: number;\r\n BillingMonth: string;\r\n BillingYear: number;\r\n Category: null;\r\n CostOnPartner: number;\r\n CurrencyCode: string;\r\n CurrencyDecimalPlaces: string;\r\n CurrencyDecimalSeperator: string;\r\n CurrencySymbol: string;\r\n CurrencyThousandSeperator: string;\r\n ProfitAmount: number;\r\n ProfitPercentage: number;\r\n}\r\n\r\n\r\nexport interface PaymentData {\r\n PaymentType: string;\r\n TotalAmount: number;\r\n CurrencyCode: string;\r\n CurrencySymbol: string;\r\n CurrencyDecimalPlaces: string;\r\n CurrencyDecimalSeperator: string;\r\n CurrencyThousandSeperator: string;\r\n}\r\n\r\nexport interface InvoicePaymentsResponse {\r\n OperationType: null | string;\r\n Status: string;\r\n RequestCorrelationID: string;\r\n ErrorMessage: null | string;\r\n ErrorDetail: null | string;\r\n Data: PaymentData[];\r\n}\r\n\r\n\r\nexport interface ProductsCountOnDateDataItem {\r\n ProductsCount: number;\r\n OnDate: string;\r\n}\r\n\r\nexport interface ProductsCountOnDateResponse {\r\n OperationType: null | string;\r\n Status: string;\r\n RequestCorrelationID: string;\r\n ErrorMessage: string | null;\r\n ErrorDetail: string | null;\r\n Data: ProductsCountOnDateDataItem[];\r\n}\r\n\r\nexport interface SeatsCountOnDateResponse {\r\n OperationType: null;\r\n Status: string;\r\n RequestCorrelationID: string;\r\n ErrorMessage: null;\r\n ErrorDetail: null;\r\n Data: SeatsCountOnDateDataItem[];\r\n}\r\n\r\ninterface SeatsCountOnDateDataItem {\r\n SeatsCount: number;\r\n OnDate: string;\r\n}\r\n\r\n\r\n\r\nexport interface Section {\r\n ID: number;\r\n Name: string;\r\n AllowDragDrop: boolean;\r\n PortletColumns: PortletColumn[];\r\n}\r\n\r\nexport interface PortletColumn {\r\n ID: number;\r\n ColumnSizeClass: string;\r\n PortletSectionID: number;\r\n DisplayOrder: number;\r\n Show: boolean;\r\n}\r\n\r\ninterface Portlet {\r\n PortletID: number;\r\n ActionableElementsID: number;\r\n ActionableElementName: string;\r\n TargetAction: string;\r\n TargetController: string;\r\n ColumnPosition: number;\r\n RowPosition: number;\r\n Name: string;\r\n Description: string;\r\n IsShownOnSetting: boolean;\r\n PortletSectionID: number;\r\n}\r\n\r\nexport interface DashboardCardsData {\r\n Sections: Section[];\r\n Portlets: Portlet[];\r\n AlertText: null | string;\r\n}\r\n\r\nexport interface UserSettingData {\r\n CompanyUrl: string,\r\n ContactCompanyName: string,\r\n PoweredByCompanyURL: string,\r\n PoweredByCompanyName: string,\r\n WelcomeLogoPath: string\r\n WelcomePageButtonStyle:string\r\n\r\n}\r\n\r\nexport interface GetUserTermsAndConditionLogsByCustomerC3IdAndEmail {\r\n RowNum?: number;\r\n EmailAddress: string;\r\n CreateDate?: Date;\r\n UserIPAddress: string;\r\n AgreementURL: string;\r\n AgreementType: string;\r\n Time: string;\r\n ShowTermsAndConditionsAcceptanceLog: boolean;\r\n}\r\n\r\nexport interface GetCustomerInvoiceForDashboardResponse {\r\n OperationType: null | string;\r\n Status: string;\r\n RequestCorrelationID: string;\r\n ErrorMessage: null | string;\r\n ErrorDetail: null | string;\r\n Data: GetCustomerInvoiceForDashboard[];\r\n}\r\nexport interface GetCustomerInvoiceForDashboard{\r\n InvoiceGeneratedDate?: Date;\r\n BillingStartDate?: Date;\r\n BillingEndDate?: Date;\r\n InvoiceAmount?: number;\r\n CurrencySymbol: string;\r\n CurrencyDecimalPlaces: string;\r\n CurrencyThousandSeparator: string;\r\n CurrencyDecimalSeparator: string;\r\n}\r\n\r\nexport interface RenewalDateTopFiveProducts {\r\n ProductName: string;\r\n ProviderEffectiveEndDate? : Date\r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n","export enum DurationUnits {\r\n all='All',\r\n threeMonths='3 Months',\r\n sixMonths='6 Months',\r\n tweleveMonths='12 Months',\r\n lastBillingPeriod='Last Billing Period',\r\n threeBillingPeriod='3 Billing Periods',\r\n sixBillingPeriod='6 Billing Periods',\r\n twelveBillingPeriod='12 Billing Periods'\r\n}\r\n\r\nexport enum Partners {\r\n microsoft='Microsoft',\r\n partner= 'Partner',\r\n microsoftNonCSP='MicrosoftNonCSP',\r\n}","<ng-template #modalsomething>\r\n <div class=\"modal-header\">\r\n <h3 class=\"modal-title text-primary\" id=\"modal-title\">\r\n <span translate=\"TRANSLATE.CUSTOMER_AGREEMENT_HYPERLINK_POPUP_HEADER_TEXT\"></span>\r\n </h3>\r\n </div>\r\n <div class=\"modal-body\">\r\n <div class=\"pt-4 pb-4\" [hidden]=\"partnerAgreementClickedFlag\">\r\n\r\n <h5 class=\"align-inline\"> <span translate=\"TRANSLATE.CUSTOMER_AGREEMENT_PLEASE_READ_TEXT\"></span> \r\n <a id=\"linkPartner\" (click)=\"partnerAgreement()\" class=\"text-primary cursor-pointer\">\r\n <span translate=\"TRANSLATE.CUSTOMER_AGREEMENT_HYPERLINK_POPUP_TEXT_FOR_PARTNER\"></span>\r\n </a>\r\n </h5>\r\n\r\n </div>\r\n <div style=\"padding-left:20px\" [hidden]=\"ezidebitAgreementClickedFlag\">\r\n\r\n <h5> <span translate=\"TRANSLATE.CUSTOMER_AGREEMENT_PLEASE_READ_TEXT\"></span> <a id=\"linkEzidebit\"\r\n (click)=\"ezidebitAgreement()\" class=\"text-primary\"> <span\r\n translate=\"TRANSLATE.CUSTOMER_AGREEMENT_HYPERLINK_POPUP_TEXT\"></span></a>.</h5>\r\n </div>\r\n <div style=\"padding-left:20px\" [hidden]=\"microsoftCloudAgreementClickedFlag\">\r\n <h5> <span translate=\"TRANSLATE.CUSTOMER_AGREEMENT_PLEASE_READ_TEXT\"></span> <a\r\n id=\"customerConsentLink\" (click)=\"microsoftCloudAgreement()\" class=\"text-primary\"> <span\r\n translate=\"TRANSLATE.CUSTOMER_AGREEMENT_HYPERLINK_POPUP_TEXT_FOR_MICROSOFT_CLOUD_AGREEMENT\"></span></a>\r\n </h5>\r\n </div>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <a class=\"btn btn-primary btn-sm\" (click)=\"cancel()\"><span translate=\"TRANSLATE.BUTTON_TEXT_OK\"></span></a>\r\n </div>\r\n</ng-template>\r\n\r\n\r\n\r\n\r\n\r\n<div class=\"container-fluid\" id=\"some1\">\r\n <div class=\"row\" id=\"ezi\">\r\n <div class=\"col-12\">\r\n <div class=\"card\">\r\n <div class=\"card-body\">\r\n\r\n <form name=\"vm.frmAcceptTermsAndConditions\" #frmAcceptTermsAndConditions=\"ngForm\"\r\n (ngSubmit)=\"SaveTermsAndConditions(frmAcceptTermsAndConditions)\" role=\"form\" class=\"form\"\r\n novalidate>\r\n <div class=\"m-heading-1 border-green m-bordered mb-5\">\r\n <div class=\"notice bg-light-primary rounded border-primary border border-dashed min-w-lg-600px flex-shrink-0 p-6\">\r\n <!-- {{isUserAcceptedTermsAndConditions }}\r\n {{TermsAndConditions | json}} -->\r\n <div *ngIf=\"!isUserAcceptedTermsAndConditions && TermsAndConditions.IsCustomTermsandConditionsHyperlinkActive\"\r\n [innerHTML]=\"'TRANSLATE.'+TermsAndConditions.ContentWhenCustomHyperlink| translate :{ partnerName: TermsAndConditions.CompanyName, hyperlinkContent: TermsAndConditions.CustomHyperlinkText} \"\r\n #partner1></div>\r\n <!-- [innerHTML]=\"'TRANSLATE.'+ TermsAndConditions.Content | translate: { partnerName: TermsAndConditions.CompanyName}\" -->\r\n <div *ngIf=\"!isUserAcceptedTermsAndConditions && !TermsAndConditions.IsCustomTermsandConditionsHyperlinkActive\"\r\n id=\"someone\" #partner2>\r\n <span translate=\"TRANSLATE.TERM_AND_CONDITIONS_READ_TEXT\">\r\n </span>\r\n <ul class=\"mt-3\">\r\n <li>\r\n <a (click)='PartnerAgreementClicked()'\r\n class=\"text-primary cursor-pointer\"\r\n translate=\"TRANSLATE.TERM_AND_CONDITIONS_LINK_TEXT\">\r\n </a>\r\n </li>\r\n </ul>\r\n <br>\r\n <span translate=\"TRANSLATE.TERM_AND_CONDITIONS_ACCEPTS_TEXT\"></span>\r\n </div>\r\n <div *ngIf=\"isUserAcceptedTermsAndConditions\"\r\n [innerHTML]=\"('TRANSLATE.TERMS_AND_CONDITIONS_CONTENT_TEXT_WITH_ONLY_MCA') | translate\">\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"form-group row ml-0\">\r\n <div class=\"col-md-12\">\r\n <div *ngIf=\"billingProfile==='EziDebit' && !isUserAcceptedTermsAndConditions\">\r\n <p><strong><span\r\n translate=\"TRANSLATE.TERMS_AND_CONDITIONS_EZIDEBIT_AGREEMENT_TITLE\"></span></strong>\r\n </p>\r\n <p>\r\n <span\r\n translate=\"{{'TRANSLATE.TERMS_AND_CONDITIONS_EZIDEBIT_AGREEMENT_BTN_WITH_TEXT'}}\"></span>\r\n </p>\r\n </div>\r\n <div class=\"form-group row\"\r\n ng-class=\"{'has-error':vm.frmAcceptTermsAndConditions.$submitted && vm.frmAcceptTermsAndConditions.TermsAndConditions_IsAccepted.$error.required}\">\r\n <label class=\"form-check form-check-inline ms-3 me-5\">\r\n <input type=\"checkbox\" class=\"form-check-input \"\r\n [(ngModel)]=\"TermsAndConditions.IsAccepted\" #IsAccepted=\"ngModel\"\r\n name=\"TermsAndConditions_IsAccepted\" required>\r\n <span></span>\r\n {{\"TRANSLATE.TERMS_AND_CONDITIONS_READ\" | translate}}\r\n </label>\r\n <!-- {{IsAccepted.invalid}} -->\r\n <!-- {{IsAccepted | json}} -->\r\n <span *ngIf=\"IsAccepted.invalid && this.isFormSubmitted\" class=\"text-danger\">\r\n <span\r\n translate=\"{{'TRANSLATE.VALIDATION_MESSAGE_REQUIRED' | translate}}\"></span>\r\n </span>\r\n </div>\r\n\r\n <!--For Ezidebit-->\r\n <div class=\"form-group\"\r\n ng-class=\"{'has-error':vm.frmAcceptTermsAndConditions.$submitted && vm.frmAcceptTermsAndConditions.TermsAndConditions_IsAccepted.$error.required}\"\r\n *ngIf=\"billingProfile==='EziDebit'\">\r\n <div translate=\"TRANSLATE.CUSTOMER_AGREEMENT_EZIDEBIT_ALLOW_TEXT\"></div>\r\n <br>\r\n </div>\r\n <div class=\"form-actions\">\r\n <div class=\"col-md-12 text-end control-label\">\r\n <button type=\"submit\" class=\"btn btn-primary btn-sm\">\r\n <!-- <busy-message><i class=\"fa fa-spinner fa-spin\"></i><span translate=\"BUSY_MESSAGE_TEXT_PLEASE_WAIT\"></span></busy-message> -->\r\n <span translate=\"TRANSLATE.BUTTON_TEXT_ACCEPT\"></span>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>","import { AfterViewChecked, AfterViewInit, ChangeDetectorRef, Component, ElementRef, OnInit, QueryList, Renderer2, TemplateRef, ViewChild, viewChild, ViewChildren } from '@angular/core';\r\nimport { ClientSettingsService } from 'src/app/services/client-settings.service';\r\nimport { TermsAndConditionsService } from 'src/app/services/terms-and-conditions.service';\r\nimport _ from 'lodash'\r\nimport { CommonService } from 'src/app/services/common.service';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { error } from 'console';\r\nimport { CloudHubConstants } from 'src/app/shared/models/constants/cloudHubConstants';\r\nimport { ToastService } from 'src/app/services/toast.service';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { Router } from '@angular/router';\r\nimport { NotifierService } from 'src/app/services/notifier.service';\r\nimport { PageInfoService } from 'src/app/_c3-lib/layout';\r\n@Component({\r\n selector: 'app-terms-and-conditions',\r\n templateUrl: './terms-and-conditions.component.html',\r\n styleUrl: './terms-and-conditions.component.scss'\r\n})\r\nexport class TermsAndConditionsComponent implements OnInit{\r\n TermsAndConditions:any = {};\r\n billingProfile:any;\r\n pathToEzidebitAgreement:any;\r\n pathToPartnerAgreement = \"\";\r\n partnerAgreementClickedFlag = false;\r\n ezidebitAgreementClickedFlag = false;\r\n microsoftCloudAgreementClickedFlag = false;\r\n isUserAcceptedTermsAndConditions:any;\r\n isFormSubmitted:boolean = false;\r\n pathToCustomerConsent:any;\r\n modalInstance:any;\r\n // @viewChild(\"modalsomething\") modalsomething:TemplateRef<any>;\r\n @ViewChild('modalsomething') modalsomething: TemplateRef<any>;\r\n complicateHtml1:any;\r\n complicatedHtml2:any;\r\n partnerEventBound:boolean = false;\r\n eziDebitEventBound:boolean = false;\r\n // @ViewChildren(\"partner1\") partner1!: QueryList<any>;\r\n // @ViewChildren(\"partner2\") partner2!: QueryList<any>;\r\n\r\n\r\n // vm.SaveTermsAndConditions = SaveTermsAndConditions;\r\n // vm.CheckAllAgreementsClicked = CheckAllAgreementsClicked;\r\n // vm.GetTermsAndConditions = GetTermsAndConditions;\r\n // vm.EzidebitAgreementClicked = EzidebitAgreementClicked;\r\n // vm.PartnerAgreementClicked = PartnerAgreementClicked;\r\n // vm.MicrosoftCloudAgreementClicked = MicrosoftCloudAgreementClicked;\r\n\r\n constructor(private _clientSettingsService: ClientSettingsService,\r\n private TermsAndConditionsService:TermsAndConditionsService,\r\n private commonService:CommonService,\r\n private _translateService: TranslateService,\r\n private _ngbModalService:NgbModal,\r\n private toasterService:ToastService,\r\n private cdRef:ChangeDetectorRef,\r\n private el:ElementRef,\r\n private renderer:Renderer2,\r\n private sanitized: DomSanitizer,\r\n private router:Router,\r\n private notifierService:NotifierService,\r\n private pageInfo:PageInfoService\r\n ){\r\n this.pageInfo.updateTitle(this._translateService.instant(\"TERMS_AND_CONDITIONS\"),true);\r\n }\r\n\r\n\r\n\r\n\r\n\r\n\r\n \r\n ngOnInit(): void {\r\n \r\n // get the billing provider and agreement path\r\n this._clientSettingsService.getData().subscribe(({Data}:any)=>{\r\n this.billingProfile = Data?.BillingProvider || '';\r\n this.pathToEzidebitAgreement = Data?.PathToEzidebitAgreement || '';\r\n }); \r\n // service data\r\n this.isUserAcceptedTermsAndConditions = this.TermsAndConditionsService.IsAcceptedTermsAndConditions;\r\n\r\n // init call\r\n this.GetTermsAndConditions();\r\n }\r\n\r\n SaveTermsAndConditions(form:any){\r\n this.isFormSubmitted = true;\r\n if(this.isFormSubmitted && form.valid){\r\n this.SubmitTermsAndConditions();\r\n }\r\n }\r\n\r\n CheckAllAgreementsClicked() {\r\n if (this.billingProfile === \"EziDebit\") {\r\n if (this.ezidebitAgreementClickedFlag) {\r\n this.ezidebitAgreementClickedFlag = true;\r\n }\r\n else {\r\n this.ezidebitAgreementClickedFlag = false;\r\n }\r\n }\r\n else {\r\n this.ezidebitAgreementClickedFlag = true;\r\n }\r\n\r\n if (this.isUserAcceptedTermsAndConditions) {\r\n this.ezidebitAgreementClickedFlag = true;\r\n this.partnerAgreementClickedFlag = true;\r\n }\r\n else if (!this.TermsAndConditions.isUserAcceptedTermsAndConditions) {\r\n this.microsoftCloudAgreementClickedFlag = true;\r\n }\r\n\r\n if (this.ezidebitAgreementClickedFlag && this.partnerAgreementClickedFlag && this.microsoftCloudAgreementClickedFlag) {\r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n }\r\n\r\n\r\n\r\n\r\n SubmitTermsAndConditions = _.debounce(()=>{\r\n \r\n\r\n if (this.CheckAllAgreementsClicked()) {\r\n \r\n var reqBody = {\r\n ID: this.TermsAndConditions.ID,\r\n IsAccepted: this.TermsAndConditions.IsAccepted,\r\n PathToEzidebitAgreement: this.TermsAndConditions.PathToEzidebitAgreement,\r\n PathToPartnerAgreement: this.TermsAndConditions.PathToPartnerAgreement,\r\n EntityName: this.commonService.entityName,\r\n RecordId: this.commonService.recordId\r\n };\r\n\r\n this.TermsAndConditionsService.acceptTermsAndConditions(reqBody).subscribe(({Data}:any)=>{\r\n\r\n if(this.TermsAndConditions.IsAccepted){\r\n this.TermsAndConditionsService.IsAcceptedTermsAndConditions = this.TermsAndConditions.IsAccepted;\r\n this.notifierService.success({ title:this._translateService.instant(\"TRANSLATE.TERMS_AND_CONDITIONS_ACCEPT_SUCCESSFULLY\")}).then((result: { isConfirmed: any; isDenied: any })=>{\r\n if(result.isConfirmed){\r\n this.router.navigate(['/home/dashboard']); \r\n }\r\n });\r\n }\r\n \r\n })\r\n }\r\n else{\r\n this.modalInstance = this._ngbModalService.open(this.modalsomething)\r\n }\r\n },500, { leading: true });\r\n\r\n EzidebitAgreementClicked() {\r\n this.ezidebitAgreementClickedFlag = true;\r\n window.open(this.pathToEzidebitAgreement, \"_blank\");\r\n }\r\n\r\n PartnerAgreementClicked() {\r\n this.partnerAgreementClickedFlag = true;\r\n window.open(this.pathToPartnerAgreement, \"_blank\");\r\n }\r\n\r\n MicrosoftCloudAgreementClicked() {\r\n this.microsoftCloudAgreementClickedFlag = true;\r\n }\r\n\r\n ezidebitAgreement() {\r\n this.ezidebitAgreementClickedFlag = true;\r\n if (this.partnerAgreementClickedFlag && this.microsoftCloudAgreementClickedFlag) {\r\n this._ngbModalService.dismissAll();\r\n }\r\n window.open(this.pathToEzidebitAgreement, \"_blank\");\r\n };\r\n\r\n partnerAgreement() {\r\n this.partnerAgreementClickedFlag = true;\r\n if (this.ezidebitAgreementClickedFlag && this.microsoftCloudAgreementClickedFlag) {\r\n this._ngbModalService.dismissAll();\r\n }\r\n window.open(this.pathToPartnerAgreement, \"_blank\");\r\n };\r\n\r\n microsoftCloudAgreement() {\r\n this.microsoftCloudAgreementClickedFlag = true;\r\n if (this.ezidebitAgreementClickedFlag && this.partnerAgreementClickedFlag && this.partnerAgreementClickedFlag) {\r\n this._ngbModalService.dismissAll();\r\n }\r\n window.open(this.pathToCustomerConsent, \"_blank\");\r\n };\r\n\r\n cancel() {\r\n this._ngbModalService.dismissAll();\r\n};\r\n\r\n\r\n GetTermsAndConditions() {\r\n this.TermsAndConditionsService.getTermsAndConditions().subscribe(({Data}:any)=>{\r\n\r\n if (Data !== null || Data !== '' || Data !== \"\") {\r\n this.TermsAndConditions = Data;\r\n if (this.billingProfile !== \"EziDebit\") {\r\n this.TermsAndConditions.PathToEzidebitAgreement = \"\";\r\n }\r\n this.TermsAndConditions.IsCustomTermsandConditionsHyperlinkActive = false;\r\n this.cdRef.detectChanges();\r\n //CloudHubConstants.CUSTOM_PARTNER_TERMS_AND_CONDITIONS_HYPERLINK\r\n if (false) {\r\n this.TermsAndConditions.ContentWhenCustomHyperlink = \"TERMS_AND_CONDITIONS_CONTENT_WHEN_HYPERLINK_IS_CUSTOM\";\r\n this.TermsAndConditions.CustomHyperlinkText = CloudHubConstants.CUSTOM_PARTNER_TERMS_AND_CONDITIONS_HYPERLINK;\r\n this.TermsAndConditions.IsCustomTermsandConditionsHyperlinkActive = true;\r\n }\r\n this.pathToPartnerAgreement = Data.PathToPartnerAgreement;\r\n\r\n if (this.isUserAcceptedTermsAndConditions) {\r\n this.TermsAndConditions.PathToEzidebitAgreement = \"\";\r\n this.TermsAndConditions.PathToPartnerAgreement = \"\";\r\n }\r\n else if (!this.isUserAcceptedTermsAndConditions) {\r\n this.TermsAndConditions.CustomerConsentURL = \"\";\r\n }\r\n }\r\n },({Data}:any)=>{\r\n this.toasterService.error(Data !== null ? (Data.ExceptionMessage !== null ? Data.ExceptionMessage : Data.Message) : this._translateService.instant(\"TRANSLATE.TERMS_AND_CONDITIONS_UNABLE_TO_PROCESS\"));\r\n })\r\n}\r\n\r\n SafeHtmlOne(translateString:any, obj:any){\r\n return this.sanitized.bypassSecurityTrustHtml(this._translateService.instant(translateString, obj))\r\n }\r\n\r\n \r\n \r\n \r\n\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\nimport { AuthGuard } from '../auth/services/auth.guard';\r\nimport { UserManagementComponent } from '../standalones/user-management/user-management.component';\r\nimport { TermsAndConditionsComponent } from './terms-and-conditions/terms-and-conditions.component';\r\nimport { TermsAndConditionsDeactivateGuard } from '../auth/services/terms-and-conditions-deactivate.guard';\r\nconst routes: Routes = [\r\n {\r\n path: '',\r\n redirectTo: 'dashboard',\r\n pathMatch: 'full'\r\n },\r\n {\r\n path: 'home',\r\n redirectTo: 'dashboard',\r\n pathMatch: 'full'\r\n },\r\n {\r\n path: 'dashboard',\r\n canActivate: [AuthGuard],\r\n loadChildren: () => import('./dashboard/dashboard.module').then((m) => m.DashboardModule),\r\n },\r\n {\r\n path: 'notifications',\r\n canActivate: [AuthGuard],\r\n loadComponent: () => import('../standalones/notifications/notifications.component').then((m) => m.NotificationsComponent),\r\n },\r\n {\r\n path: 'users',\r\n canActivate: [AuthGuard],\r\n loadComponent: () =>\r\n import('../standalones/user-management/user-management.component').then((m) => m.UserManagementComponent),\r\n \r\n },\r\n {\r\n path: 'addUser',\r\n canActivate: [AuthGuard],\r\n loadComponent: () =>\r\n import('../standalones/user-management/add-user/add-user.component').then((m) => m.AddUserComponent),\r\n \r\n },\r\n {\r\n path: 'userTags',\r\n canActivate: [AuthGuard],\r\n loadComponent: () =>\r\n import('../standalones/user-management/user-management-tag/user-management-tag.component').then((m) => m.UserManagementTagComponent),\r\n \r\n },\r\n {\r\n path: 'addusermanagemettag',\r\n canActivate: [AuthGuard],\r\n loadComponent: () =>\r\n import('../standalones/user-management/user-management-tag/add-user-management-tag/add-user-management-tag.component').then((m) => m.AddUserManagementTagComponent),\r\n \r\n },\r\n {\r\n path: 'profile',\r\n canActivate: [AuthGuard],\r\n loadChildren: () => import('./profile/profile.module').then((m) => m.ProfileModule),\r\n },\r\n {\r\n path:'invoices',\r\n canActivate:[AuthGuard],\r\n loadComponent: ()=> import('../standalones/invoices/invoices/invoices.component').then(m=>m.InvoicesComponent)\r\n },\r\n {\r\n path:'invoice',\r\n canActivate:[AuthGuard],\r\n loadComponent: ()=> import('../standalones/invoices/invoice/invoice.component').then(m=>m.InvoiceComponent),\r\n children:[\r\n {\r\n path:'invoicelineitems',\r\n canActivate:[AuthGuard],\r\n loadComponent:()=> import('../standalones/invoices/invoice-line-items/invoice-line-items.component').then(m=>m.InvoiceLineItemsComponent)\r\n },\r\n {\r\n path:'contactlogs',\r\n canActivate:[AuthGuard],\r\n loadComponent:()=> import('../standalones/notifications/notifications.component').then(m=>m.NotificationsComponent),\r\n },\r\n {\r\n path:'comments',\r\n canActivate:[AuthGuard],\r\n loadComponent:()=> import('../standalones/invoices/invoice-comments/invoice-comments.component').then(m=>m.InvoiceCommentsComponent),\r\n }\r\n\r\n ]\r\n },\r\n {\r\n path:'invoice/addadjustment-home',\r\n canActivate:[AuthGuard],\r\n loadComponent:()=> import('../standalones/invoices/add-adjustment/add-adjustment.component').then(m=>m.AddAdjustmentComponent)\r\n },\r\n {\r\n path:\"termsandconditions\",\r\n canActivate:[AuthGuard],\r\n canDeactivate:[TermsAndConditionsDeactivateGuard],\r\n component:TermsAndConditionsComponent\r\n // loadComponent:() => import('./terms-and-conditions/terms-and-conditions.component').then(m=>m.TermsAndConditionsComponent)\r\n }\r\n]\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class HomeRoutingModule { }\r\n","import { ActivatedRouteSnapshot, CanDeactivate, CanDeactivateFn, GuardResult, MaybeAsync, RouterStateSnapshot } from '@angular/router';\r\nimport { TermsAndConditionsComponent } from '../../home/terms-and-conditions/terms-and-conditions.component';\r\nimport { Injectable } from '@angular/core';\r\nimport { TermsAndConditionsService } from 'src/app/services/terms-and-conditions.service';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class TermsAndConditionsDeactivateGuard implements CanDeactivate<TermsAndConditionsComponent>{\r\n\r\n constructor(private termsAndConditionsService:TermsAndConditionsService){\r\n\r\n\r\n }\r\n\r\n canDeactivate(component:TermsAndConditionsComponent, \r\n currentRoute: ActivatedRouteSnapshot, \r\n currentState: RouterStateSnapshot, \r\n nextState: RouterStateSnapshot): MaybeAsync<GuardResult> {\r\n return this.termsAndConditionsService.IsAcceptedTermsAndConditions;\r\n }\r\n\r\n\r\n\r\n\r\n \r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { HomeRoutingModule } from './home-routing.module';\r\nimport { StatCardComponent } from '../standalones/cards/stat-card/stat-card.component';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { StatWithGraphCardComponent } from '../standalones/cards/stat-with-graph-card/stat-with-graph-card.component';\r\nimport { ProfabilityCardComponent } from '../standalones/cards/profability-card/profability-card.component';\r\nimport { PurchaseOfSeatsCardComponent } from '../standalones/cards/purchase-of-seats-card/purchase-of-seats-card.component';\r\nimport { NgbDatepickerModule, NgbModule } from '@ng-bootstrap/ng-bootstrap';\r\nimport { TermsAndConditionsComponent } from './terms-and-conditions/terms-and-conditions.component';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n TermsAndConditionsComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n HomeRoutingModule,\r\n StatCardComponent,\r\n TranslateModule,\r\n StatWithGraphCardComponent,\r\n ProfabilityCardComponent,\r\n PurchaseOfSeatsCardComponent,\r\n NgbDatepickerModule,\r\n NgbModule,\r\n FormsModule\r\n ]\r\n})\r\nexport class HomeModule { }\r\n","\r\n<div class=\"profability-container\" style=\"cursor: pointer;\">\r\n <div class=\"card card-custom gutter-b card-stretch\" (click)=\"navigateToRevenue()\">\r\n <div class=\"card-header pt-5\">\r\n <div class=\"card-title\">\r\n <div class=\"card-label\">\r\n <div class=\"fw-semibold\"\r\n [routerLink]=\"['/partner/business/revenue']\">\r\n <span translate=\"TRANSLATE.PARTNER_DASHBOARD_CAPTION_PROFITABILITY\"></span>\r\n </div>\r\n <div class=\"text-gray-500 mt-1 fw-semibold fs-6\">\r\n @if(billGenerationDate){\r\n {{billingPeriodsData?.BillingStartDate | c3Date}} - {{billingPeriodsData?.BillingEndDate | c3Date}} <span class=\"tooltips ng-binding\"\r\n data-original-title=\"Invoice generated on\">({{billingPeriodsData?.BillGenerationDate | c3Date }})</span>\r\n }\r\n \r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"card-body d-flex flex-column\">\r\n @if (!!isLoading){\r\n <app-loader></app-loader>\r\n }\r\n @if (!isProfitabilityDetailsLoading){\r\n <div class=\"flex-grow-1\" style=\"position: relative;\">\r\n <!-- ngIf: vm.IsProfitabilityDetailsLoading -->\r\n </div>\r\n <div>\r\n <div class=\"row row-paddingless mb-5\">\r\n <div class=\"col-6 pt-1 pb-1 col-md-3\">\r\n <div\r\n class=\"d-flex justify-content-lg-center justify-content-md-center justify-content-sm-center mr-2 gap-2\">\r\n <div class=\"symbol symbol-50 symbol-light-info mr-4 flex-shrink-0\"\r\n [routerLink]=\"['/partner/business/revenue']\">\r\n <div class=\"symbol-label\">\r\n <span class=\"svg-icon svg-icon-info\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\"\r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\" style=\"height: 24px; width: 24px;\"\r\n viewBox=\"0 0 24 24\" version=\"1.1\">\r\n <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\r\n <rect x=\"0\" y=\"0\" width=\"24\" height=\"24\"></rect>\r\n <path\r\n d=\"M2,6 L21,6 C21.5522847,6 22,6.44771525 22,7 L22,17 C22,17.5522847 21.5522847,18 21,18 L2,18 C1.44771525,18 1,17.5522847 1,17 L1,7 C1,6.44771525 1.44771525,6 2,6 Z M11.5,16 C13.709139,16 15.5,14.209139 15.5,12 C15.5,9.790861 13.709139,8 11.5,8 C9.290861,8 7.5,9.790861 7.5,12 C7.5,14.209139 9.290861,16 11.5,16 Z\"\r\n fill=\"#000000\" opacity=\"0.3\"\r\n transform=\"translate(11.500000, 12.000000) rotate(-345.000000) translate(-11.500000, -12.000000) \">\r\n </path>\r\n <path\r\n d=\"M2,6 L21,6 C21.5522847,6 22,6.44771525 22,7 L22,17 C22,17.5522847 21.5522847,18 21,18 L2,18 C1.44771525,18 1,17.5522847 1,17 L1,7 C1,6.44771525 1.44771525,6 2,6 Z M11.5,16 C13.709139,16 15.5,14.209139 15.5,12 C15.5,9.790861 13.709139,8 11.5,8 C9.290861,8 7.5,9.790861 7.5,12 C7.5,14.209139 9.290861,16 11.5,16 Z M11.5,14 C12.6045695,14 13.5,13.1045695 13.5,12 C13.5,10.8954305 12.6045695,10 11.5,10 C10.3954305,10 9.5,10.8954305 9.5,12 C9.5,13.1045695 10.3954305,14 11.5,14 Z\"\r\n fill=\"#000000\"></path>\r\n </g>\r\n </svg>\r\n </span>\r\n </div>\r\n </div>\r\n <div>\r\n <div class=\"fw-semibold fs-3\">\r\n {{TotalProviderBilledAmount| megaNumber : CurrencySymbol : CurrencyDecimalPlaces : CurrencyThousandSeperator : CurrencyDecimalSeperator}}\r\n </div>\r\n <div class=\"text-muted fw-semibold text-muted d-block fs-6\" translate=\"TRANSLATE.REVENUE_AND_COST_SUMMARY_COST_ON_PARTNER\">\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-6 pt-1 pb-1 col-md-3\">\r\n <div\r\n class=\"d-flex justify-content-lg-center justify-content-md-center justify-content-sm-center mr-2 gap-2\">\r\n <div class=\"symbol symbol-50 symbol-light-primary mr-4 flex-shrink-0\"\r\n [routerLink]=\"['/partner/business/revenue']\">\r\n <div class=\"symbol-label\">\r\n <span class=\"svg-icon svg-icon-primary\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\"\r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\" style=\"height: 24px; width: 24px;\"\r\n viewBox=\"0 0 24 24\" version=\"1.1\">\r\n <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\r\n <rect x=\"0\" y=\"0\" width=\"24\" height=\"24\"></rect>\r\n <path\r\n d=\"M5,3 L6,3 C6.55228475,3 7,3.44771525 7,4 L7,20 C7,20.5522847 6.55228475,21 6,21 L5,21 C4.44771525,21 4,20.5522847 4,20 L4,4 C4,3.44771525 4.44771525,3 5,3 Z M10,3 L11,3 C11.5522847,3 12,3.44771525 12,4 L12,20 C12,20.5522847 11.5522847,21 11,21 L10,21 C9.44771525,21 9,20.5522847 9,20 L9,4 C9,3.44771525 9.44771525,3 10,3 Z\"\r\n fill=\"#000000\"></path>\r\n <rect fill=\"#000000\" opacity=\"0.3\"\r\n transform=\"translate(17.825568, 11.945519) rotate(-19.000000) translate(-17.825568, -11.945519)\"\r\n x=\"16.3255682\" y=\"2.94551858\" width=\"3\" height=\"18\" rx=\"1\"></rect>\r\n </g>\r\n </svg>\r\n </span>\r\n </div>\r\n </div>\r\n <div>\r\n <div class=\"fw-semibold fs-3\">\r\n {{TotalC3BillAmount| megaNumber : CurrencySymbol : CurrencyDecimalPlaces : CurrencyThousandSeperator : CurrencyDecimalSeperator}} \r\n </div>\r\n <div class=\"text-muted fw-semibold text-muted d-block fs-6\">\r\n <span translate=\"TRANSLATE.PARTNER_DASHBOARD_LABLE_TOTAL_BILL_AMOUNT\" class=\"ng-scope\"></span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-6 pt-1 pb-1 col-md-3\">\r\n <div\r\n class=\"d-flex justify-content-lg-center justify-content-md-center justify-content-sm-center mr-2 gap-2\">\r\n <div class=\"symbol symbol-50 mr-4 flex-shrink-0 symbol-light-success\"\r\n [routerLink]=\"['/partner/business/revenue']\">\r\n <div class=\"symbol-label\">\r\n <span class=\"svg-icon svg-icon-success\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\"\r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\" style=\"height: 24px; width: 24px;\"\r\n viewBox=\"0 0 24 24\" version=\"1.1\">\r\n <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\r\n <rect x=\"0\" y=\"0\" width=\"24\" height=\"24\"></rect>\r\n <path\r\n d=\"M16.0322024,5.68722152 L5.75790403,15.945742 C5.12139076,16.5812778 5.12059836,17.6124773 5.75613416,18.2489906 C5.75642891,18.2492858 5.75672377,18.2495809 5.75701875,18.2498759 L5.75701875,18.2498759 C6.39304347,18.8859006 7.42424328,18.8859006 8.060268,18.2498759 C8.06056298,18.2495809 8.06085784,18.2492858 8.0611526,18.2489906 L18.3196731,7.9746922 C18.9505124,7.34288268 18.9501191,6.31942463 18.3187946,5.68810005 L18.3187946,5.68810005 C17.68747,5.05677547 16.6640119,5.05638225 16.0322024,5.68722152 Z\"\r\n fill=\"#000000\" fill-rule=\"nonzero\"></path>\r\n <path\r\n d=\"M9.85714286,6.92857143 C9.85714286,8.54730513 8.5469533,9.85714286 6.93006028,9.85714286 C5.31316726,9.85714286 4,8.54730513 4,6.92857143 C4,5.30983773 5.31316726,4 6.93006028,4 C8.5469533,4 9.85714286,5.30983773 9.85714286,6.92857143 Z M20,17.0714286 C20,18.6901623 18.6898104,20 17.0729174,20 C15.4560244,20 14.1428571,18.6901623 14.1428571,17.0714286 C14.1428571,15.4497247 15.4560244,14.1428571 17.0729174,14.1428571 C18.6898104,14.1428571 20,15.4497247 20,17.0714286 Z\"\r\n fill=\"#000000\" opacity=\"0.3\"></path>\r\n </g>\r\n </svg>\r\n </span>\r\n </div>\r\n </div>\r\n <div>\r\n <div class=\"fw-semibold fs-3 d-flex justify-content-center\">\r\n <span>\r\n {{TotalNetProfit| megaNumber : CurrencySymbol : CurrencyDecimalPlaces : CurrencyThousandSeperator : CurrencyDecimalSeperator}}\r\n </span>\r\n <span>\r\n @if(TotalNetProfit < 0){\r\n <i class=\"ki-duotone ki-arrow-down text-danger fs-2\">\r\n <span class=\"path1\"></span>\r\n <span class=\"path2\"></span>\r\n </i>\r\n }@else{\r\n <i class=\"ki-duotone ki-arrow-up text-success fs-2\">\r\n <span class=\"path1\"></span>\r\n <span class=\"path2\"></span>\r\n </i>\r\n }\r\n </span>\r\n </div>\r\n <div class=\"text-muted fw-semibold text-muted d-block fs-6 \">\r\n <span translate=\"TRANSLATE.PARTNER_DASHBOARD_LABLE_NET_PROFIT\" ></span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-6 pt-1 pb-1 col-md-3\">\r\n <div\r\n class=\"d-flex justify-content-lg-center justify-content-md-center justify-content-sm-center mr-2 gap-2\">\r\n <div class=\"symbol symbol-50 mr-4 flex-shrink-0 symbol-light-success\"\r\n [routerLink]=\"['/partner/business/revenue']\">\r\n <div class=\"symbol-label\">\r\n <span class=\"svg-icon svg-icon-success\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\"\r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\" style=\"height: 24px; width: 24px;\"s\r\n viewBox=\"0 0 24 24\" version=\"1.1\">\r\n <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\r\n <rect x=\"0\" y=\"0\" width=\"24\" height=\"24\"></rect>\r\n <path\r\n d=\"M16.0322024,5.68722152 L5.75790403,15.945742 C5.12139076,16.5812778 5.12059836,17.6124773 5.75613416,18.2489906 C5.75642891,18.2492858 5.75672377,18.2495809 5.75701875,18.2498759 L5.75701875,18.2498759 C6.39304347,18.8859006 7.42424328,18.8859006 8.060268,18.2498759 C8.06056298,18.2495809 8.06085784,18.2492858 8.0611526,18.2489906 L18.3196731,7.9746922 C18.9505124,7.34288268 18.9501191,6.31942463 18.3187946,5.68810005 L18.3187946,5.68810005 C17.68747,5.05677547 16.6640119,5.05638225 16.0322024,5.68722152 Z\"\r\n fill=\"#000000\" fill-rule=\"nonzero\"></path>\r\n <path\r\n d=\"M9.85714286,6.92857143 C9.85714286,8.54730513 8.5469533,9.85714286 6.93006028,9.85714286 C5.31316726,9.85714286 4,8.54730513 4,6.92857143 C4,5.30983773 5.31316726,4 6.93006028,4 C8.5469533,4 9.85714286,5.30983773 9.85714286,6.92857143 Z M20,17.0714286 C20,18.6901623 18.6898104,20 17.0729174,20 C15.4560244,20 14.1428571,18.6901623 14.1428571,17.0714286 C14.1428571,15.4497247 15.4560244,14.1428571 17.0729174,14.1428571 C18.6898104,14.1428571 20,15.4497247 20,17.0714286 Z\"\r\n fill=\"#000000\" opacity=\"0.3\"></path>\r\n </g>\r\n </svg>\r\n </span>\r\n </div>\r\n </div>\r\n <div>\r\n <div class=\"fw-semibold fs-3 d-flex justify-content-center\">\r\n <span>\r\n {{ProfitPercentage| megaNumber : CurrencySymbol : CurrencyDecimalPlaces : CurrencyThousandSeperator : CurrencyDecimalSeperator}}%\r\n </span>\r\n <span>\r\n @if(ProfitPercentage < 0){\r\n <i class=\"ki-duotone ki-arrow-down text-danger fs-2\">\r\n <span class=\"path1\"></span>\r\n <span class=\"path2\"></span>\r\n </i>\r\n }@else{\r\n <i class=\"ki-duotone ki-arrow-up text-success fs-2\">\r\n <span class=\"path1\"></span>\r\n <span class=\"path2\"></span>\r\n </i>\r\n }\r\n </span>\r\n </div>\r\n <div class=\"text-muted fw-semibold text-muted d-block fs-6\">\r\n <span translate=\"TRANSLATE.PARTNER_DASHBOARD_LABLE_PERCENTAGE_PROFIT\"></span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n</div>","import { ChangeDetectorRef, Component, Input, OnInit } from '@angular/core';\r\nimport moment from 'moment';\r\nimport { BillingPeriodData, ProfabilityCardData, ProfabilityData } from 'src/app/modules/home/dashboard-widgets/models/dashboard.model';\r\nimport { LoaderComponent } from '../../loader/loader.component';\r\nimport { DatePipe, NgClass, CommonModule } from '@angular/common';\r\nimport { TranslationModule } from 'src/app/modules/i18n';\r\nimport { Subscription, forkJoin, of, switchMap } from 'rxjs';\r\nimport { DashboardService } from 'src/app/modules/home/dashboard-widgets/services/dashboard.service';\r\nimport { MegaNumberPipe } from 'src/app/shared/pipes/meganumber.pipe';\r\nimport { CommonService } from 'src/app/services/common.service';\r\nimport { Router, RouterModule } from '@angular/router';\r\nimport { AppSettingsService } from 'src/app/services/app-settings.service'; \r\nimport { C3DatePipe } from 'src/app/shared/pipes/dateTimeFilter.pipe';\r\n\r\n@Component({\r\n selector: 'app-profability-card',\r\n standalone: true,\r\n imports: [\r\n LoaderComponent,\r\n NgClass,\r\n TranslationModule,\r\n MegaNumberPipe,\r\n RouterModule,\r\n CommonModule,\r\n DatePipe,\r\n C3DatePipe\r\n ],\r\n templateUrl: './profability-card.component.html',\r\n styleUrl: './profability-card.component.scss'\r\n})\r\nexport class ProfabilityCardComponent implements OnInit {\r\n data: Partial<ProfabilityData>;\r\n billingPeriodsData: BillingPeriodData;\r\n startBillingDate: string;\r\n endBillingDate: string;\r\n billGenerationDate: string | undefined;\r\n isLoading: boolean = false;\r\n subscription: Subscription;\r\n entityName: string | null;\r\n recordId: string | null;\r\n globalDateFormat: any;\r\n routerLink: string;\r\n TotalProviderBilledAmount = 0.00;\r\n TotalC3BillAmount = 0.00;\r\n TotalNetProfit = 0.00;\r\n ProfitPercentage = 0.00;\r\n isProfitabilityDetailsLoading: boolean = true;\r\n CurrencySymbol: string;\r\n CurrencyDecimalPlaces: number;\r\n CurrencyDecimalSeperator: string;\r\n CurrencyThousandSeperator: string;\r\n\r\n constructor(\r\n private dashboardWidgetsService: DashboardService,\r\n private commonService: CommonService,\r\n private _appService: AppSettingsService,\r\n private cdref: ChangeDetectorRef,\r\n private router: Router\r\n ) {\r\n this.entityName = this.commonService.entityName;\r\n this.recordId = this.commonService.recordId;\r\n }\r\n /**\r\n * Lifecycle hook that is called after data-bound properties of a directive are initialized.\r\n */\r\n ngOnInit(): void {\r\n this.globalDateFormat = this._appService.$rootScope.dateFormat;\r\n this.subscription = this.dashboardWidgetsService.getBillingPeriods().pipe(\r\n switchMap((billingPeriods: any) => {\r\n // Extracting the billingId from the last element of the billingPeriods array\r\n const billingPeriodId = billingPeriods.Data[billingPeriods.Data.length - 1].BillingPeriodId;\r\n this.billingPeriodsData = (billingPeriods.Data[billingPeriods.Data.length - 1]);\r\n this.startBillingDate = moment(this.billingPeriodsData?.BillingStartDate).format(this.globalDateFormat?.toUpperCase());\r\n this.endBillingDate = moment(this.billingPeriodsData?.BillingEndDate).format(this.globalDateFormat?.toUpperCase());\r\n this.billGenerationDate = moment(this.billingPeriodsData?.BillGenerationDate).format(this.globalDateFormat?.toUpperCase());\r\n this.cdref.detectChanges();\r\n\r\n return forkJoin([\r\n //this.commonService.entityName !=\"Reseller\" ?this.dashboardWidgetsService.getProfability( billingPeriodId,this.entityName,this.recordId): of(null)\r\n this.dashboardWidgetsService.getProfability(billingPeriodId, this.entityName, this.recordId)\r\n ]);\r\n })\r\n ).subscribe(([profabilityData]) => {\r\n this.data = profabilityData.Data[0];\r\n if (this.data !== undefined && this.data !== null) {\r\n this.TotalProviderBilledAmount = this.data?.TotalCostOnPartner;\r\n this.TotalC3BillAmount = this.data?.TotalBilledAmount;\r\n this.TotalNetProfit = this.data?.TotalProfitAmount;\r\n this.ProfitPercentage = this.data?.TotalProfitPercentage || 0;\r\n this.CurrencySymbol = this.data?.CurrencySymbol;\r\n this.CurrencyDecimalPlaces = this.data?.CurrencyDecimalPlaces;\r\n this.CurrencyDecimalSeperator = this.data?.CurrencyDecimalSeperator;\r\n this.CurrencyThousandSeperator = this.data?.CurrencyThousandSeperator;\r\n }\r\n this.isProfitabilityDetailsLoading = false;\r\n this.cdref.detectChanges();\r\n });\r\n }\r\n\r\n /**\r\n * Formats a number to a string with two decimal places.\r\n * \r\n * @param value The number to format.\r\n * @returns The formatted number as a string.\r\n */\r\n formatNumber(value: number): string {\r\n return value?.toLocaleString(undefined, { minimumFractionDigits: 2, maximumFractionDigits: 2 });\r\n }\r\n\r\n navigateToRevenue() {\r\n this.routerLink = 'partner/business/revenue';\r\n this.router?.navigate([this.routerLink])\r\n }\r\n}\r\n","<div class=\"col card card-custom d-flex\">\r\n @if(chartUtilities.isloadingstart){\r\n <ng-container #content>\r\n\r\n <div class=\"loader-indicater btn btn-sm btn-light-primary\">\r\n <span class=\"spinner-border spinner-border-sm\" role=\"status\" aria-hidden=\"true\"></span>\r\n \r\n <span> {{'TRANSLATE.MESSAGE_TEXT_PLEASE_WAIT' | translate}}</span>\r\n </div>\r\n </ng-container>\r\n }\r\n <div id=\"site_statistics_seats\">\r\n <div class=\"card-header pt-5\" [ngClass]=\"chartUtilities.isloadingstart ? 'opacity-8' : ''\">\r\n <div class=\"dashboard-filter-wrapper justify-content-between d-flex w-100\">\r\n <div class=\"card-title align-items-start flex-column dashboard-tile-title\">\r\n <span class=\"card-label fw-semibold\"><span class=\"w-250px d-flex gap-1\"\r\n translate=\"TRANSLATE.PARTNER_DASHBOARD_PURCHASE_OF_SEATS_TILE_HEADER\"></span>\r\n </span>\r\n </div>\r\n @if(!!purchaseOfseatsData)\r\n {\r\n <div class=\"card-toolbar-container d-flex align-items-center gap-3\" style=\"flex-wrap: wrap;\">\r\n <div ngbDropdown class=\"d-flex align-items-center\" placement=\"bottom-right\">\r\n <button class=\"btn btn-icon btn-light-primary btn-active-primary btn-dropdown btn-sm\"\r\n style=\"padding: 10px; width: auto;\" id=\"dropdownBasic1\" ngbDropdownToggle>\r\n {{selectedTimePeriod}}\r\n </button>\r\n <div ngbDropdownMenu aria-labelledby=\"dropdownBasic1\"\r\n class=\"dorpdown-menu menu menu-sub menu-sub-dropdown menu-column menu-rounded menu-title-gray-700 menu-icon-muted menu-active-bg menu-state-primary fw-semibold py-4 fs-base\">\r\n @for(duration of durationUnits; track $index)\r\n {\r\n <div class='menu-item my-0' ngbDropdownItem (click)=\"selectedDuration(duration)\">\r\n <a class=\"menu-link px-3 py-2 d-flex align-items-center gap-3\">\r\n {{duration}}\r\n </a>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n <div ngbDropdown #dropdown=\"ngbDropdown\" class=\"d-flex align-items-center\" placement=\"bottom-right\">\r\n <button class=\"btn btn-sm btn-icon btn-color-primary btn-active-light-primary remove-caret d-flex flex-column\"\r\n style=\"padding: 10px; width: auto;\" id=\"dropdownToggle\" ngbDropdownToggle>\r\n <app-keenicon name=\"category\" class=\"fs-2\" style=\"display: contents;\"><span\r\n class=\"fs-2 ki-category ki-duotone\"><span class=\"path1\"></span><span\r\n class=\"path2\"></span><span class=\"path3\"></span><span\r\n class=\"path4\"></span><!----></span><!----><!----></app-keenicon> </button>\r\n <div ngbDropdownMenu aria-labelledby=\"dropdownToggle\"\r\n class=\"dorpdown-menu menu menu-sub menu-sub-dropdown menu-column menu-rounded menu-title-gray-700 menu-icon-muted menu-active-bg menu-state-primary fw-semibold py-4 fs-base\">\r\n <div class='menu-item my-0' ngbDropdownItem>\r\n <div class=\"apexcharts-menu-item\" (click)=\"generatePNG(dropdown)\"><span\r\n translate=\"TRANSLATE.DASHBOARD_CARD_ACTIONS_OPTION_TEXT_DOWNLOAD_PNG\"></span></div>\r\n </div>\r\n <div class='menu-item my-0' ngbDropdownItem>\r\n <div class=\"apexcharts-menu-item\" (click)=\"generateSVG(dropdown)\"><span\r\n translate=\"TRANSLATE.DASHBOARD_CARD_ACTIONS_OPTION_TEXT_DOWNLOAD_SVG\"></span></div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n\r\n <div class=\"card-body p-0 pb-4\" style=\"height:auto\">\r\n @if(!!isLoading){\r\n <app-loader></app-loader>\r\n }\r\n @else if(!!purchaseOfseatsData && purchaseOfseatsData.length>0)\r\n {\r\n <div class=\"chart min-h-auto w-100 ps-4 pe-6\">\r\n <apx-chart [series]=\"chartOptions?.series\" [chart]=\"chartOptions?.chart\" [xaxis]=\"chartOptions?.xaxis\"\r\n [tooltip]=\"chartOptions?.tooltip\" [yaxis]=\"chartOptions?.yaxis\" [stroke]=\"chartOptions?.stroke\"\r\n [markers]=\"chartOptions?.markers\" [dataLabels]=\"chartOptions?.dataLabels\" [grid]=\"chartOptions?.grid\">\r\n </apx-chart>\r\n </div>\r\n <div>\r\n <div class=\"d-flex justify-content-evenly\">\r\n <div class=\"dashboard-prev-data\">\r\n <span>{{PreviousMonthSeats}}\r\n <span class=\"badge badge-success \"\r\n translate=\"TRANSLATE.DASHBOARD_LBL_TEXT_PREVIOUS_MONTH_SEATS\">\r\n </span>\r\n </span>\r\n </div>\r\n <div class=\"dashboard-prev-data\">\r\n <span>\r\n {{CurrentMonthSeats}} <span class=\"badge badge-info \"\r\n translate=\"TRANSLATE.DASHBOARD_LBL_TEXT_CURRENT_MONTH_SEATS\"></span>\r\n </span>\r\n </div>\r\n <div class=\"dashboard-prev-data\">\r\n <span class=\"d-flex gap-1\">\r\n {{netPercentage}}%\r\n <span>\r\n @if(+netPercentage < 0){\r\n <i class=\"ki-duotone ki-arrow-down text-danger fs-2\">\r\n <span class=\"path1\"></span>\r\n <span class=\"path2\"></span>\r\n </i>\r\n }@else {\r\n <i class=\"ki-duotone ki-arrow-up text-success fs-2\">\r\n <span class=\"path1\"></span>\r\n <span class=\"path2\"></span>\r\n </i>\r\n }\r\n </span><span class=\"badge badge-danger\"\r\n translate=\"TRANSLATE.DASHBOARD_LBL_TEXT_NET_SEATS\"></span>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n @else if(purchaseOfseatsData.length < 1 && !isLoading){ <div\r\n class=\"d-flex align-items-center justify-content-center\" style=\"height: 100%;\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <app-common-no-record></app-common-no-record>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n</div>","import { NgClass, NgFor } from '@angular/common';\r\nimport { ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { NgApexchartsModule } from 'ng-apexcharts';\r\nimport { Subscription } from 'rxjs';\r\nimport { DashboardService } from 'src/app/modules/home/dashboard-widgets/services/dashboard.service';\r\nimport { LoaderService } from 'src/app/services/loader.service';\r\nimport { LoaderComponent } from '../../loader/loader.component';\r\nimport { TranslationModule, TranslationService } from 'src/app/modules/i18n';\r\nimport { ChartUtilities } from 'src/app/shared/utilities/chart-utilities';\r\nimport { DurationUnits } from 'src/app/modules/home/dashboard-widgets/models/widgets.model';\r\nimport { NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap';\r\nimport { CommonService } from 'src/app/services/common.service';\r\nimport { SharedModule } from 'src/app/_c3-lib/shared/shared.module';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { CommonNoRecordComponent } from '../../common-no-record/common-no-record.component';\r\n\r\n@Component({\r\n selector: 'app-purchase-of-seats-card',\r\n standalone: true,\r\n imports: [\r\n NgFor,CommonNoRecordComponent,\r\n NgApexchartsModule,\r\n LoaderComponent,\r\n TranslationModule,\r\n NgClass,\r\n NgbDropdownModule,\r\n SharedModule\r\n ],\r\n templateUrl: './purchase-of-seats-card.component.html',\r\n styleUrl: './purchase-of-seats-card.component.scss'\r\n})\r\nexport class PurchaseOfSeatsCardComponent implements OnInit, OnDestroy {\r\n selectedTimePeriod: string = DurationUnits.tweleveMonths;\r\n entityName: string | null;\r\n recordID: string | null;\r\n private subscription: Subscription;\r\n purchaseOfseatsData: any[] = [];\r\n chartOptions: any;\r\n CurrentMonthSeats: number;\r\n PreviousMonthSeats: number;\r\n netPercentage: string;\r\n isLoading: boolean = false;\r\n downloadIconStatus: boolean = false;\r\n public chartUtilities: ChartUtilities;\r\n\r\n durationUnits:any = [\r\n DurationUnits.threeMonths,\r\n DurationUnits.sixMonths,\r\n DurationUnits.tweleveMonths\r\n ];\r\n\r\n constructor(\r\n private dashboardService: DashboardService,\r\n private cdr: ChangeDetectorRef,\r\n private loaderService: LoaderService,\r\n private commonService: CommonService,\r\n private translateService: TranslateService,\r\n private translationService: TranslationService\r\n ) { \r\n this.chartUtilities = new ChartUtilities();\r\n this.durationUnits = this.durationUnits?.map((item:any)=>{\r\n return this.translationService.translateVariables(item);\r\n })\r\n this.selectedTimePeriod = this.translationService.translateVariables(this.selectedTimePeriod);\r\n }\r\n\r\n /**\r\n * Lifecycle hook that is called after data-bound properties of a directive are initialized.\r\n */\r\n ngOnInit(): void {\r\n this.loaderService.startLoading();\r\n this.isLoading = true;\r\n this.entityName = this.commonService.entityName;\r\n this.recordID = this.commonService.recordId;\r\n this.getPurchaseofSeats();\r\n }\r\n\r\n /**\r\n * Sets the selected duration and fetches the purchase of seats data.\r\n * \r\n * @param duration The selected time period.\r\n */\r\n selectedDuration(duration: string): void {\r\n this.selectedTimePeriod = duration;\r\n this.getPurchaseofSeats();\r\n }\r\n\r\n /**\r\n * Fetches the purchase of seats data from the dashboard service.\r\n */\r\n getPurchaseofSeats(): void {\r\n \r\n this.subscription = this.dashboardService.getPurchaseOfSeats(this.entityName, this.recordID , this.selectedTimePeriod).subscribe((response: any) => {\r\n this.purchaseOfseatsData = response.Data || [];\r\n this.CurrentMonthSeats = this.purchaseOfseatsData[this.purchaseOfseatsData.length - 1]?.CurrentMonthSeats;\r\n this.PreviousMonthSeats = this.purchaseOfseatsData[this.purchaseOfseatsData.length - 1]?.PreviousMonthSeats;\r\n this.netPercentage = ((this.CurrentMonthSeats - this.PreviousMonthSeats) / this.PreviousMonthSeats * 100).toFixed(2);\r\n const purchasedMonths = this.purchaseOfseatsData.map((item: any) => item.PurchasedMonth);\r\n const totalQuantities = this.purchaseOfseatsData.map((item: any) => item.TotalQuantity);\r\n this.loaderService.stopLoading();\r\n this.isLoading = false;\r\n this.drawGraph(purchasedMonths, totalQuantities);\r\n this.cdr.detectChanges();\r\n });\r\n }\r\n\r\n /**\r\n * Draws the graph with the provided data.\r\n * \r\n * @param purchasedMonths The months during which seats were purchased.\r\n * @param totalQuantities The total quantities of seats purchased.\r\n */\r\n drawGraph(purchasedMonths: string[], totalQuantities: number[]): void {\r\n this.chartOptions = {\r\n series: [\r\n {\r\n name: 'Seats Purchased',\r\n data: totalQuantities,\r\n fill: {\r\n colors: ['#0000ff'],\r\n type: 'solid',\r\n opacity: 0.3\r\n }\r\n }\r\n ],\r\n chart: {\r\n type: 'area',\r\n height: 450,\r\n zoom: {\r\n enabled: false\r\n },\r\n toolbar:{\r\n show:false\r\n }\r\n },\r\n dataLabels: {\r\n enabled: false // Disabling data labels to remove the square boxes\r\n },\r\n stroke: {\r\n curve: 'straight'\r\n },\r\n grid: {\r\n stroke: \"#b6b6b6\",\r\n strokeDashArray: 3 // Dashed lines\r\n },\r\n xaxis: {\r\n categories: purchasedMonths,\r\n axisBorder: {\r\n show: false,\r\n },\r\n lines: {\r\n show: true,\r\n dashArray: 0 // Dashed lines\r\n },\r\n labels: {\r\n show: true,\r\n style: {\r\n colors: \"#99A1B7\",\r\n fontSize: \"12px\",\r\n cssClass: \"apexcharts-xaxis-label\"\r\n }\r\n }\r\n },\r\n yaxis: {\r\n title: {\r\n text: this.translateService.instant('TRANSLATE.CUSTOMER_DASHBOARD_PURCHASE_OF_SEATS_TILE_TOOLTIP_TEXT'),\r\n },\r\n labels: {\r\n show: true,\r\n style: {\r\n colors: \"#99A1B7\",\r\n fontSize: \"12px\",\r\n cssClass: \"apexcharts-yaxis-label\"\r\n }\r\n }\r\n },\r\n tooltip: {\r\n y: {\r\n formatter: function (val: any) {\r\n return val;\r\n }\r\n }\r\n },\r\n markers: {\r\n size: 2,\r\n }\r\n };\r\n }\r\n\r\n generatePNG(dropdown:any): void {\r\n dropdown.close();\r\n this.chartUtilities.isloadingstart = true;\r\n setTimeout(()=>{\r\n const element = document.getElementById('site_statistics_seats');\r\n this.chartUtilities.generatePNG(element, 'Purchase-of-seats');\r\n this.downloadIconStatus = false;\r\n },0)\r\n }\r\n\r\n generateSVG(dropdown:any): void {\r\n dropdown.close();\r\n const element = document.getElementById('site_statistics_seats');\r\n this.chartUtilities.generateSVG(element, 'Purchase-of-seats');\r\n this.downloadIconStatus = false;\r\n\r\n\r\n }\r\n toggleButton(): void {\r\n this.downloadIconStatus = !this.downloadIconStatus\r\n }\r\n\r\n /**\r\n * Lifecycle hook that is called when the directive is destroyed.\r\n */\r\n ngOnDestroy(): void {\r\n this.subscription?.unsubscribe();\r\n }\r\n}\r\n","<div class=\"card card-custom card-stretch bgi-no-repeat bgi-size-cover bgi-position-y-top bgi-position-x-center\" [ngClass]=\"bgColor\" (click)=\"openCustomersList()\"\r\n style=\"cursor: pointer;\">\r\n <div class=\"card-body p0\" style=\"height:150px;\">\r\n <div class=\"d-flex align-items-center justify-content-between flex-grow-1\">\r\n <span class=\"svg-icon svg-icon-4x svg-icon-white\">\r\n @if(cardType !== cardsTypes.customers){\r\n <i class=\"ki-outline ki-people fs-3x\">\r\n <!-- <span class=\"path1\"></span>\r\n <span class=\"path2\"></span>\r\n <span class=\"path3\"></span>\r\n <span class=\"path4\"></span> -->\r\n </i>\r\n }\r\n @else {\r\n <i class=\"ki-outline ki-profile-user fs-3x\"></i>\r\n }\r\n </span>\r\n <div class=\"d-flex flex-column text-right\">\r\n @if(cardType === cardsTypes.customers){\r\n <span class=\"fw-bolder text-white fs-2 text-end \">{{customersCount?.Data?.CustomerCount}}</span>\r\n }\r\n @else{\r\n <span class=\"fw-bolder text-white fs-2 text-end \">{{resellersCount?.Data?.ResellerCount}}</span>\r\n }\r\n <span class=\" text-white fs-4\">\r\n @if(cardType === cardsTypes.customers){\r\n <span translate=\"TRANSLATE.PARTNER_DASHBOARD_TILE_CUSTOMERS\"></span>\r\n }\r\n @else{\r\n <span translate=\"TRANSLATE.PARTNER_DASHBOARD_TILE_RESELLERS\"></span>\r\n }\r\n </span>\r\n </div>\r\n </div>\r\n <div class=\"d-flex flex-row mt-4 gap-2\">\r\n <span class=\"d-flex align-items-center\">\r\n <i class=\"ki-duotone ki-arrow-down\">\r\n <span class=\"path1\"></span>\r\n <span class=\"path2\"></span>\r\n </i>\r\n @if(cardType === cardsTypes.customers){\r\n <span\r\n class=\"fw-bolder text-white fs-3\">{{customersCount?.Data?.DeletedCustomerCountInCurrentMonth}}</span>\r\n\r\n }\r\n @else{\r\n <span\r\n class=\"fw-bolder text-white fs-3\">{{resellersCount?.Data?.DeletedResellerCountInCurrentMonth}}</span>\r\n\r\n }\r\n </span>\r\n <span class=\"d-flex align-items-center\">\r\n <i class=\"ki-duotone ki-arrow-up\">\r\n <span class=\"path1\"></span>\r\n <span class=\"path2\"></span>\r\n </i>\r\n @if(cardType === cardsTypes.customers){\r\n <span class=\"fw-bolder text-white fs-3\">{{customersCount?.Data?.NewCustomerCountInCurrentMonth}}</span>\r\n }\r\n @else{\r\n <span class=\"fw-bolder text-white fs-3\">{{resellersCount?.Data?.NewResellerCountInCurrentMonth}}</span>\r\n\r\n }\r\n </span>\r\n </div>\r\n </div>\r\n</div>","import { NgClass } from '@angular/common';\r\nimport { ChangeDetectorRef, Component, Input, OnDestroy, OnInit, input } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { Subscription, forkJoin } from 'rxjs';\r\nimport { TranslationModule } from 'src/app/modules/i18n';\r\nimport { DashboardService } from 'src/app/modules/home/dashboard-widgets/services/dashboard.service';\r\nimport { CardsType, CustomerCardData, PortletTargetActions, ResellerCardData } from 'src/app/modules/home/dashboard-widgets/models/dashboard.model';\r\nimport { CommonService } from 'src/app/services/common.service';\r\n\r\n@Component({\r\n selector: 'app-stat-card',\r\n standalone: true,\r\n imports: [\r\n NgClass,\r\n TranslationModule\r\n ],\r\n templateUrl: './stat-card.component.html',\r\n styleUrl: './stat-card.component.scss'\r\n})\r\nexport class StatCardComponent implements OnInit, OnDestroy {\r\n @Input() widgetKey?: string;\r\n bgColor: string;\r\n customerCardBgColor = 'bg-danger';\r\n resellerCardBgColor = 'bg-success';\r\n cardType: string;\r\n customerCardLink: string;\r\n resellersCardLink: string;\r\n customersCount: Partial<CustomerCardData>;\r\n resellersCount: Partial<ResellerCardData>;\r\n routerLink: string;\r\n private subscription: Subscription;\r\n entityName: string | null;\r\n portletTargetAction = PortletTargetActions;\r\n cardsTypes = CardsType;\r\n recordId: string | null;\r\n constructor(\r\n private router: Router,\r\n private dashboardWidgetsService: DashboardService,\r\n private commonService: CommonService\r\n\r\n ) {\r\n this.entityName = this.commonService.entityName;\r\n this.recordId= this.commonService.recordId;\r\n }\r\n\r\n ngOnInit(): void {\r\n \r\n if (this.widgetKey === this.portletTargetAction.customerCount) {\r\n this.bgColor = this.customerCardBgColor;\r\n this.cardType = this.cardsTypes.customers;\r\n this.subscription = forkJoin([\r\n this.dashboardWidgetsService.getCustomersCount(this.entityName,this.recordId),\r\n ]).subscribe(([customersCount]) => {\r\n this.customersCount = customersCount;\r\n });\r\n\r\n }\r\n else if (this.widgetKey === this.portletTargetAction.resellerCount) {\r\n this.bgColor = this.resellerCardBgColor;\r\n this.cardType = this.cardsTypes.resellers;\r\n this.subscription = forkJoin([\r\n this.dashboardWidgetsService.getResellersCount(),\r\n ]).subscribe(([resellerCount]) => {\r\n this.resellersCount = resellerCount;\r\n \r\n });\r\n\r\n\r\n }\r\n }\r\n\r\n openCustomersList() {\r\n if (this.cardType == this.cardsTypes.customers) {\r\n this.routerLink = 'partner/customers'\r\n }\r\n else {\r\n this.routerLink = 'partner/resellers'\r\n }\r\n this.router?.navigate([this.routerLink])\r\n\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscription?.unsubscribe();\r\n }\r\n}\r\n","<div class=\"card card-custom card-stretch bgi-no-repeat bgi-size-cover bgi-position-y-top bgi-position-x-center\" [ngClass]=\"bgColor\" style=\"cursor: pointer;\">\r\n <div class=\"card-body p0\" style=\"height:150px;\">\r\n <div class=\"d-flex align-items-center justify-content-between flex-grow-1\">\r\n <span class=\"svg-icon svg-icon-4x svg-icon-white\">\r\n @if(cardType === cardsTypes.seats){\r\n <i class=\"ki-outline ki-basket fs-3x\"></i>\r\n }\r\n @else{\r\n <i class=\"ki-outline ki-element-plus fs-3x\"></i>\r\n }\r\n </span>\r\n <div class=\"d-flex flex-column text-right\">\r\n @if(cardType === cardsTypes.seats){\r\n <span class=\"fw-bolder text-white fs-2 text-end\">{{seatsCount?.Data?.SeatsCount}} </span>\r\n }\r\n @else {\r\n <span\r\n class=\"fw-bolder text-white fs-2 text-end\">{{subscriptionsCount?.Data?.TotalPurchasedProductCount}}\r\n </span>\r\n\r\n }\r\n <span class=\"card-title text-white fs-4\">\r\n @if(cardType === cardsTypes.seats){\r\n <span translate=\"TRANSLATE.PARTNER_DASHBOARD_TILE_CUSTOMERS_SEATS\"></span>\r\n }\r\n @else{\r\n <span translate=\"TRANSLATE.PARTNER_DASHBOARD_TILE_CUSTOMERS_SUBSCRIPTIONS\"></span>\r\n }\r\n </span>\r\n </div>\r\n </div>\r\n <div class=\"d-flex flex-row gap-2\">\r\n <apx-chart [series]=\"chartOptions?.series\" [xaxis]=\"chartOptions?.xaxis\"\r\n [plotOptions]=\"chartOptions?.plotOptions\" [chart]=\"chartOptions?.chart\" [stroke]=\"chartOptions?.stroke\"\r\n [markers]=\"chartOptions?.markers\" [yaxis]=\"chartOptions?.yaxis\"\r\n [tooltip]=\" chartOptions?.tooltip\"></apx-chart>\r\n </div>\r\n </div>\r\n</div>","import { AfterViewInit, ChangeDetectorRef, Component, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { NgApexchartsModule } from 'ng-apexcharts';\r\nimport { NgClass } from '@angular/common';\r\nimport { Subscription, forkJoin } from 'rxjs';\r\nimport { DashboardService } from 'src/app/modules/home/dashboard-widgets/services/dashboard.service';\r\nimport {\r\n CardsType,\r\n PortletTargetActions,\r\n ProductsCountOnDateResponse,\r\n SeatsCountOnDateResponse,\r\n SubscriptionCardData,\r\n seatsCardData\r\n} from 'src/app/modules/home/dashboard-widgets/models/dashboard.model';\r\nimport { TranslationModule } from 'src/app/modules/i18n';\r\nimport { CommonService } from 'src/app/services/common.service';\r\n\r\n@Component({\r\n selector: 'app-stat-with-graph-card',\r\n standalone: true,\r\n imports: [\r\n NgApexchartsModule,\r\n NgClass,\r\n TranslationModule\r\n ],\r\n templateUrl: './stat-with-graph-card.component.html',\r\n styleUrls: ['./stat-with-graph-card.component.scss'],\r\n providers: [NgApexchartsModule, NgClass]\r\n})\r\nexport class StatWithGraphCardComponent implements OnInit, OnDestroy {\r\n @Input() widgetKey?: string;\r\n \r\n bgColor: string;\r\n seatsCardBgColor = 'bg-info';\r\n subscriptionsCardBgColor = 'bg-dark';\r\n cardType: string;\r\n productsCountOnDate: Partial<ProductsCountOnDateResponse>;\r\n seatsCountOnDate: Partial<SeatsCountOnDateResponse>;\r\n subscriptionsCount: Partial<SubscriptionCardData>;\r\n seatsCount: Partial<seatsCardData>;\r\n chartOptions: any;\r\n cardsTypes = CardsType;\r\n public series: any; \r\n public chart: any; \r\n private subscription: Subscription; \r\n entityName: string | null;\r\n portletTargetAction = PortletTargetActions\r\n recordId: string;\r\n constructor(\r\n private cdref: ChangeDetectorRef,\r\n private dashboardWidgetsService: DashboardService,\r\n private commonService: CommonService\r\n ) {\r\n this.entityName = this.commonService.entityName;\r\n this.recordId= this.commonService.recordId;\r\n }\r\n\r\n ngOnInit(): void {\r\n if (this.widgetKey === this.portletTargetAction.subscriptionsCount) {\r\n this.bgColor = this.subscriptionsCardBgColor;\r\n this.cardType = this.cardsTypes.subscriptions;\r\n \r\n this.subscription = forkJoin([\r\n this.dashboardWidgetsService.getProductsCountOnDate(this.entityName,this.recordId),\r\n this.dashboardWidgetsService.getSubscriptionsCount(this.entityName,this.recordId),\r\n ]).subscribe(([productsCountOnDate, subscriptionsCount]) => {\r\n this.productsCountOnDate = productsCountOnDate;\r\n this.subscriptionsCount = subscriptionsCount;\r\n if (!!this.productsCountOnDate && this.productsCountOnDate.Data && this.productsCountOnDate.Data.length > 0) {\r\n const productCounts = this.productsCountOnDate.Data.map((item: any) => item.ProductsCount);\r\n const onDate = this.productsCountOnDate.Data.map((item: any) => item.OnDate);\r\n const name = 'Products Count';\r\n this.drawGraph(productCounts, onDate, name);\r\n this.cdref.detectChanges();\r\n }\r\n });\r\n \r\n }\r\n else if (this.widgetKey === this.portletTargetAction.seatsCount) {\r\n this.bgColor = this.seatsCardBgColor;\r\n this.cardType = this.cardsTypes.seats;\r\n \r\n this.subscription = forkJoin([\r\n this.dashboardWidgetsService.getSeatsCountOnDate(this.entityName,this.recordId),\r\n this.dashboardWidgetsService.getSeatsCount(this.entityName,this.recordId),\r\n ]).subscribe(([seatsCountOnDate, seatsCount]) => {\r\n this.seatsCountOnDate = seatsCountOnDate;\r\n this.seatsCount = seatsCount;\r\n \r\n if (!!this.seatsCountOnDate && this.seatsCountOnDate.Data && this.seatsCountOnDate.Data.length > 0) {\r\n const seatsCount = this.seatsCountOnDate.Data.map((item: any) => item.SeatsCount);\r\n const onDate = this.seatsCountOnDate.Data.map((item: any) => item.OnDate);\r\n const name = 'Seats Purchased';\r\n this.drawGraph(seatsCount, onDate, name);\r\n this.cdref.detectChanges();\r\n }\r\n });\r\n \r\n\r\n }\r\n }\r\n\r\n drawGraph(Data:any, onDate:any, name:string){\r\n const initialValue = Math.min(...Data);\r\n this.chartOptions = {\r\n series: [\r\n {\r\n name: name,\r\n data: Data?.map((count: any, index: number) => ({\r\n x: onDate[index],\r\n y: count\r\n }))\r\n }\r\n ],\r\n\r\n chart: {\r\n type: 'bar',\r\n sparkline: {\r\n enabled: true\r\n },\r\n barColor: \"#FFFFFF\",\r\n barSpacing: '2',\r\n barWidth: '4',\r\n height: '30',\r\n fillColor: 'transparent',\r\n },\r\n plotOptions: {\r\n bar: {\r\n horizontal: false,\r\n columnWidth: \"2\", \r\n endingShape: \"dot\",\r\n colors: {\r\n ranges: [{\r\n from: 0,\r\n to: Number.MAX_SAFE_INTEGER,\r\n color: '#FFFFFF'\r\n }]\r\n },\r\n distributed: false \r\n }\r\n },\r\n xaxis: {\r\n type: 'datetime',\r\n categories: onDate,\r\n labels: {\r\n show: false // Hide x-axis labels\r\n },\r\n },\r\n yaxis: {\r\n show: false,\r\n min: initialValue-1,\r\n },\r\n \r\n tooltip: {\r\n shared: true, \r\n intersect: false,\r\n enabled: true, // Ensure tooltips are enabled\r\n x: {\r\n formatter: function(val: any) {\r\n const date = new Date(val);\r\n const month = date.toLocaleString('default', { month: 'short' });\r\n const day = date.getDate();\r\n const year = date.getFullYear();\r\n return `Date:${month} ${day}, ${year}`;\r\n }\r\n },\r\n y: {\r\n formatter: function (val: any) {\r\n return + val;\r\n }\r\n }\r\n },\r\n\r\n markers: {\r\n size: 2,\r\n }\r\n };\r\n\r\n}\r\n\r\nngOnDestroy(): void {\r\n this.subscription?.unsubscribe();\r\n}\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n\r\n@Component({\r\n selector: 'app-loader',\r\n standalone: true,\r\n imports: [TranslateModule],\r\n templateUrl: './loader.component.html',\r\n styleUrl: './loader.component.scss',\r\n})\r\nexport class LoaderComponent {\r\n\r\n}\r\n","\r\n<div class=\"loader\">\r\n <span class=\"spinner-border spinner-border-sm align-middle\"></span> {{'TRANSLATE.LOADING_MESSAGE' | translate}}\r\n</div>\r\n","import html2canvas from \"html2canvas\";\r\nimport { BehaviorSubject } from \"rxjs\";\r\n\r\nexport class ChartUtilities {\r\npublic isloadingstart:boolean=false;\r\n generatePNG(element: any, fileName: string) {\r\n if (element) {\r\n // this.isloadingstart=true;\r\n html2canvas(element).then(canvas => {\r\n this.isloadingstart=false;\r\n const dataURL = canvas.toDataURL('image/png');\r\n this.downloadImage(dataURL, fileName);\r\n });\r\n }\r\n }\r\n\r\n generateSVG(element: any, fileName: string) {\r\n const svgElement = element.querySelector('svg');\r\n if (svgElement) {\r\n const serializer = new XMLSerializer();\r\n const svgString = serializer.serializeToString(svgElement);\r\n const svgBlob = new Blob([svgString], { type: 'image/svg+xml;charset=utf-8' });\r\n const dataURL = URL.createObjectURL(svgBlob);\r\n this.downloadImage(dataURL, fileName);\r\n }\r\n }\r\n\r\n downloadImage(dataURL: string, filename: string) {\r\n const a = document.createElement('a');\r\n a.href = dataURL;\r\n a.download = filename;\r\n document.body.appendChild(a);\r\n a.click();\r\n document.body.removeChild(a);\r\n }\r\n\r\n generateCSV(data: any[], filename: string = 'data') {\r\n let csvData = this.convertToCSV(data);\r\n \r\n let blob = new Blob(['\\ufeff' + csvData], { type: 'text/csv;charset=utf-8;' });\r\n let url = URL.createObjectURL(blob);\r\n \r\n let a = document.createElement('a');\r\n a.href = url;\r\n a.download = filename + '.csv';\r\n document.body.appendChild(a);\r\n a.click();\r\n document.body.removeChild(a);\r\n }\r\n\r\n private convertToCSV(data: any[]): string {\r\n const header = Object.keys(data[0]).join(',');\r\n const rows = data.map(obj => Object.values(obj).join(','));\r\n return header + '\\n' + rows.join('\\n');\r\n }\r\n \r\n}\r\n\r\n"],"x_google_ignoreList":[]}