{"version":3,"sources":["webpack/bootstrap","./src/app/component/consumer-company-premises/statements/consumer-statement.component.scss?3e2c","./src/app/component/administration/notifications/generator-notifications/generator-increase-notification-details/generator-increase-notification-details.component.html","./src/app/component/application/generator-application/nda-agreement-template/nda-agreement-template.component.html","./src/app/component/administration/evaluation/prospect-evaluation/prospect-evaluation-details/prospect-evaluation-details.component.html","./src/app/component/consumer-company-premises/consumer-company-premises-activation/consumer-company-premises-activation.component.scss?1e00","./src/app/component/administration/prospects/premises-details/premises-details.component.html","./src/app/component/distributor/distributor-power-trading-limits/distributor-power-trading-limits.component.scss","./src/app/component/consumer-company-premises/statements/consumer-statement.component.scss","./src/app/component/application/generator-application/nda-agreement/nda-agreement.component.scss?74ed","./src/app/component/administration/evaluation/generator-evaluation/archived-generator-evaluation/archived-generator-evaluation.component.html","./src/app/component/allocation/allocation-run/recs/recs-consumer-list/recs-consumer-list.component.scss?4e48","./src/app/component/administration/evaluation/generator-evaluation/archived-generator-evaluation/archived-generator-evaluation.component.scss?a736","./src/app/component/application/generator-application/nda-agreement-template/nda-agreement-template.component.scss","./src/app/component/dashboard/warnings-and-notifications/generator-ppa-warning-card/generator-ppa-warning-card.component.scss","./src/app/component/report/forecast-reports/consumer-and-revenue-forecast-report/consumer-and-revenue-forecast-report.component.scss?e763","./src/app/component/infomation/downloadable-documents-component/downloadable-documents-component.scss?cf68","./src/app/component/general-maintenance/document-maintenance/document-maintenance.component.scss","./src/app/component/notes/notes.component.html","./src/app/component/report/consumer-sales-reports/consumer-sales-reports.component.scss","./src/app/component/allocation/allocation-run/allocation-run-detail/allocation-revenue-per-energy-bracket/allocation-revenue-per-energy-bracket.component.scss?d42b","./src/app/component/administration/evaluation/generator-evaluation/generator-ppa/generator-ppa.component.html","./src/app/component/allocation/allocation-run/allocation-run-detail/allocation-tariff-sale-rates/allocation-tariff-sale-rates.component.scss?e378","./src/app/component/allocation/allocation-run/allocation-run-detail/allocation-revenue-per-tariff/allocation-revenue-per-tariff.component.scss","./src/app/component/document/document-template-upload/document-template-upload.component.scss","./src/app/component/distributor/bulk-meter-list/bulk-meter-details/bulk-meter-details.component.scss","./src/app/component/document/document-upload/document-upload.component.html","./src/app/component/application/generator-application/application-user-email-verification/application-user-email-verification.component.html","./src/app/component/infomation/downloadable-documents-component/downloadable-documents-component.scss","./src/app/component/allocation/allocation-run/allocation-run-detail/allocation-power-per-technology/allocation-power-per-technology.component.scss?7a3e","./src/app/widget/information-card/information-card.component.scss","./src/app/component/forecast/parameters/forecast.component.html","./src/app/component/consumer-company-premises/meter-manual-upload/meter-manual-upload.component.html","./src/app/component/tariff/tariff-rate-list/tariff-rate-list.component.html","./src/app/component/administration/sales-rep/list/sales-rep-list.component.scss?8cc5","./src/app/component/address/address-form/address-form.component.scss","./src/app/component/allocation/allocation-run/allocation-summary-consumer/allocation-summary-consumer.component.scss?dc5f","./src/app/component/consumer-company/consumer-company-details/consumer-company-details.component.scss","./src/app/component/home/home.component.scss?fdb9","./src/app/component/administration/prospect-ppa/ppa-schedule/ppa-schedule.component.scss","./src/app/component/consumer-company-premises/statements/consumer-statement.component.html","./src/app/component/application/new-application.component.html","./src/app/component/allocation/allocation-run/recs/recs.component.scss","./src/app/component/home/home.component.html","./src/app/component/report/distributor-activation-report/distributor-activation-report.component.scss","./src/app/component/generator-project-facility/generator-project-facility-tariff-rates/generator-project-facility-tariff-rates.component.html","./src/app/component/allocation/allocation-run/allocation-summary-consumer/allocation-summary-consumer.component.html","./src/app/component/administration/prospects/prospect-details/prospect-details.component.html","./src/app/component/report/application-reports/application-reports.component.scss?9e1a","./src/app/component/allocation/allocation-run/parameters/parameters.component.scss","./src/app/component/navigation-bar/navigation-bar.component.scss?36d1","./src/app/component/administration/evaluation/generator-evaluation/generator-ppa-schedule/generator-ppa-schedule.component.html","./src/app/component/dashboard/warnings-and-notifications/facilities-evaluation-notifications-card/facilities-evaluation-notifications-card.component.scss","./src/app/component/consumer-company-premises/edit/edit-consumer-company-premises.component.html","./src/app/widget/information-card/information-card.component.scss?1494","./src/app/component/consumer-company-premises/list/consumer-company-premises-list.component.scss?0e59","./src/app/component/administration/notifications/generator-notifications/generator-increase-notification-details/generator-increase-notification-details.component.scss","./src/app/component/consumer-company-premises/meter-manual-upload/meter-manual-upload.component.scss","./src/app/component/administration/prospect-ppa/ppa-schedule/ppa-schedule.component.html","./src/app/component/authentication/ForgotPassword/forgot-password.component.html","./src/app/component/administration/integrator-providers/providers-list/providers-list.component.scss?5d98","./src/app/component/distributor/power-traded-per-technology/power-traded-per-technology.component.html","./src/app/component/distributor/wheeling-fees/wheeling-fees.component.scss?c99b","./src/app/component/consumer-company-premises/list/consumer-company-premises-list.component.html","./src/app/component/dashboard/generation-to-date/generation-to-date.component.html","./src/app/component/document/document-download-list/document-download-list.component.scss","./src/app/errors/403/403.html","./src/app/component/distributor/bulk-meter-list/bulk-meter-list.component.scss?1679","./src/app/component/administration/prospects/prospects.component.scss","./src/app/component/report/forecast-reports/consumer-and-revenue-forecast-report/revenue-forecast-warnings/revenue-forecast-warnings.component.scss?72ae","./src/app/component/allocation/allocation-run/allocation-run-detail/allocation-warning/allocation-warning.component.scss?426c","./src/app/component/distributor/distributor-dashboard/trading-limits-overall/trading-limits-overall.component.scss","./src/app/component/application/generator-application/facility-details/generation-data/generation-data.component.scss","./src/app/component/administration/prospects/premises-details/premises-details.component.scss","./src/app/component/distributor/distributor-dashboard/power-import-limit/power-import-limit.component.html","./src/app/component/generator-project/edit/edit-generator-project.component.scss","./src/app/component/distributor/distributor-power-trading-limits/distributor-power-trading-limits.component.scss?fbd3","./src/app/component/general-maintenance/document-maintenance/document-maintenance.component.scss?a36e","./src/app/component/application/generator-application/spv-details/spv-details.component.html","./src/app/component/form.styles.scss?b799","./src/app/component/sap-export/sap-export.component.scss?2166","./src/app/component/distributor/distributor-weps-less-losses/weps-less-lesses-period-daily-rate/weps-less-lesses-period-daily-rate.component.scss","./src/app/component/generator-project/generator-project-ppa-maintenance/generator-project-ppa-maintenance.component.scss?444c","./src/app/component/consumer-company-premises/list/consumer-company-premises-list.component.scss","./src/app/component/dashboard/warnings-and-notifications/premises-evaluation-notifications-card/premises-evaluation-notifications-card.component.scss","./src/app/component/administration/prospects/consumer-details/consumer-details.component.html","./src/app/component/allocation/allocation-run/allocation-run-detail/allocation-prepaid-revenue/allocation-prepaid-revenue.component.scss?d484","./src/app/component/distributor/distributor-dashboard/average-purchase-and-sales-rate/average-purchase-and-sales-rate.component.scss?26b9","./src/app/widget/loader/loader.component.html","./src/app/widget/consumption/consumption.component.scss?901a","./src/app/component/distributor/prepaid-vendor/prepaid-vendor-prepaid-removal-percentage-list/prepaid-vendor-prepaid-removal-percentage-list.component.html","./src/app/component/consumer-company-premises/edit/edit-consumer-company-premises.component.scss","./src/app/component/distributor/power-traded-per-technology/power-traded-per-technology.component.scss?b039","./src/app/component/application/generator-application/nda-agreement-template/nda-agreement-template.component.scss?c365","./src/app/component/document/document-template-upload/document-template-upload.component.scss?f0d6","./src/app/widget/validation-messages/validation-messages.component.scss","./src/app/component/distributor/distributor-dashboard/trading-limits-per-tariff/trading-limits-per-tariff.component.scss?f492","./src/app/component/allocation/allocation-run/allocation-run-detail/allocation-finalization/allocation-finalization.component.html","./src/app/component/administration/sales-rep/create/create-sales-rep.component.html","./src/app/component/allocation/allocation.component.scss?2e6a","./src/app/component/consumer-company/list/consumer-companies-list.component.html","./src/app/component/sap-export/sap-export.component.html","./src/app/component/distributor/create/create-distributor.component.scss","./src/app/component/allocation/allocation-run/recs/recs.component.html","./src/app/component/infomation/frequently-asked-questions/frequently-asked-questions.component.scss?eee3","./src/app/component/general-maintenance/cpi/cpi.component.html","./src/app/component/administration/integrator-providers/providers-detail/providers-detail.component.html","./src/app/component/report/consumer-sales-reports/consumer-sales-reports.component.scss?7239","./src/app/component/document/document-download-list/document-download-list.component.html","./src/app/component/administration/evaluation/prospect-evaluation/prospect-offer/prospect-offer.component.html","./src/app/component/consumer-company/list/consumer-companies-list.component.scss?8112","./src/app/component/application/generator-application/facility-details/facility-details.component.scss?c7b8","./src/app/component/generator-company/edit/edit-generator-company.component.scss?bf9c","./src/app/component/distributor/distributor-increase/distributor-increase.component.html","./src/app/component/administration/prospects/premises-list/premises-list.component.scss?c41b","./src/app/component/administration/evaluation/prospect-evaluation/prospect-offer/prospect-offer.component.scss","./src/app/component/report/generator-reports/generator-reports.component.scss?2d09","./src/app/component/allocation/allocation-run/allocation-run-detail/allocation-error/allocation-error.component.scss","./src/app/widget/dropdown/dropdown.component.html","./src/app/component/report/distributor-activation-report/distributor-activation-report.component.html","./src/app/component/administration/evaluation/prospect-evaluation/archived-prospect-evaluation/archived-prospect-evaluation.component.scss?9e55","./src/app/component/administration/prospects/consumer-details/consumer-details.component.scss","./src/app/component/administration/notifications/consumer-ppa-renewal-notifications/consumer-ppa-renewal-notifications.component.scss?f131","./src/app/component/distributor/prepaid-vendor/prepaid-vendor-accordion/prepaid-vendor-accordion.component.html","./src/app/component/generator-project-facility/generator-project-facility-activation/generator-project-facility-activation.component.scss?765d","./src/app/component/consumer-company/consumer-company-details/consumer-company-details.component.scss?01e3","./src/app/component/document/document-download/document-download.component.html","./src/app/component/allocation/allocation-run/allocation-run-detail/allocation-summary-blocks/allocation-run-summary-blocks.component.scss?98ad","./src/app/component/forecast/parameters/forecast.component.scss?4a87","./src/app/component/consumer-company/consumer-company-recs/consumer-company-recs.component.html","./src/app/component/application/generator-application/facility-details/generation-data/generation-data.component.scss?1e7a","./src/app/component/administration/notifications/consumer-ppa-renewal-notifications/consumer-ppa-renewal-notifications.component.html","./src/app/component/application/generator-application/facility-details/facility-details.component.html","./src/app/component/application/generator-application/generator-project/generator-project-edit/generator-application-project-edit.component.scss","./src/app/component/administration/user/verify/user-email-verification.component.html","./src/app/component/administration/prospects/prospects.component.scss?f9e6","./src/app/component/distributor/prepaid-vendor/prepaid-vendor.component.scss?722a","./src/app/widget/validation-spans/validation-spans.component.html","./src/app/component/application/generator-application/generator-project-facility/generator-project-facility-edit/generator-application-project-facility-edit.component.html","./src/app/component/administration/evaluation/generator-evaluation/generator-evaluation.component.scss","./src/app/component/tariff/tariff-rate-list/tariff-rate-list.component.scss?5709","./src/app/component/dashboard/generation-per-technology-to-date/generation-per-technology-to-date.component.scss","./src/app/component/generator-company/archived/archived-generator-companies-list.component.scss","./src/app/widget/crud-table/crud-table.component.html","./src/app/component/allocation/allocation-run/allocation-run-detail/allocation-finalization/allocation-finalization.component.scss","./src/app/component/application/generator-application/generator-project/generator-projects-list/generator-application-project-list.component.scss?325b","./src/app/component/invoices/invoice-details/invoice-details.component.html","./src/app/component/application/generator-application/generator-project-facility/generator-project-facility-edit/generator-application-project-facility-edit.component.scss","./src/app/component/application/generator-application/generator-project/generator-project-edit/generator-application-project-edit.component.html","./src/app/component/allocation/allocation-run/allocation-run-detail/allocation-prepaid-revenue/allocation-prepaid-revenue.component.scss","./src/app/component/tariff/tariff.component.html","./src/app/component/tariff/tariff-trading-limit/tariff-trading-limit.component.html","./src/app/component/dashboard/warnings-and-notifications/premises-evaluation-notifications-card/premises-evaluation-notifications-card.component.html","./src/app/component/administration/evaluation/generator-evaluation/generator-evaluation-details/generator-evaluation-details.component.html","./src/app/component/distributor/distributor-dashboard/trading-limits-overall/trading-limits-overall.component.html","./src/app/component/distributor/consumption/consumption-period/consumption-period.component.html","./src/app/component/administration/notifications/consumer-ppa-renewal-notifications/consumer-ppa-renewal-notifications.component.scss","./src/app/component/forecast/allocations/allocation-forecast-run.component.scss?bd66","./src/app/component/nersa-report/nersa-generator-report/nersa-generator-report.component.scss?cced","./src/app/component/consumer-company/consumer-company-details/consumer-company-details.component.html","./src/app/component/invoices/invoice-batch-details/invoice-batch-details.component.html","./src/app/component/distributor/distributor-weps-less-losses/weps-less-loses/weps-less-loses.component.scss","./src/app/component/generator-project-facility/generator-project-facility-distributor-nominations/generator-project-facility-distributor-nominations.component.scss?f301","./src/app/component/administration/evaluation/prospect-evaluation/prospect-evaluation-details/prospect-evaluation-details.component.scss","./src/app/component/invoices/invoice-details/invoice-details.component.scss","./src/app/component/distributor/prepaid-vendor/prepaid-vendor.component.html","./src/app/component/allocation/allocation.component.scss","./src/app/component/tariff/tariff-trading-limit/tariff-trading-limit.component.scss","./src/app/component/consumer-company/consumer-company-ppa-maintenance/consumer-company-ppa-maintenance.component.scss?9ff6","./src/app/component/administration/prospects/prospect-details/prospect-details.component.scss","./src/app/component/distributor/create/create-distributor.component.html","./src/app/component/distributor/distributor-dashboard/distributor-dashboard.component.scss?c950","./src/app/component/application/generator-application/facility-details/facility-details.component.scss","./src/app/component/document/documents/documents.component.scss?ef86","./src/app/component/invoices/invoice-details/invoice-details.component.scss?a5b0","./src/app/component/consumer-company-premises/consumer-company-premises-details/consumer-company-premises-details.component.scss","./src/app/component/vat-settings/vat-settings.component.html","./src/app/component/generator-company/list/generator-companies-list.component.scss?1110","./src/app/component/dashboard/dashboard.component.scss?1033","./src/app/component/contact/contact-component/contact.component.html","./src/app/component/tariff/tariff-list/tariff-list.component.scss?f802","./src/app/component/distributor/consumption/consumption-period/consumption-period.component.scss?7a73","./src/app/component/administration/notifications/generator-notifications/generator-notifications.component.scss","./src/app/component/allocation/allocation-run/allocation-run-detail/allocation-purchase-and-sales-rate/allocation-purchase-and-sales-rate.component.html","./src/app/component/administration/prospect-ppa/ppa-schedule/ppa-schedule.component.scss?de05","./src/app/component/tariff/tariff.component.scss?19eb","./src/app/component/consumer-company/consumer-company-ppa-maintenance/consumer-company-ppa-maintenance.component.scss","./src/app/component/allocation/allocation-run/allocation-run-detail/allocation-purchase-and-sales-rate/allocation-purchase-and-sales-rate.component.scss?1a22","./src/app/component/generator-company/list/generator-companies-list.component.html","./src/app/component/allocation/allocation-run/allocation-run-errors/allocation-run-errors.component.html","./src/app/component/application/generator-application/company-details/company-details.component.scss?f963","./src/app/component/report/sales-rep-report/sales-rep-report.component.html","./src/app/component/allocation/allocation-run/parameters/parameters.component.scss?ba8c","./src/app/component/invoices/invoice-batch-details/invoice-batch-details.component.scss","./src/app/component/report/forecast-reports/consumer-and-revenue-forecast-report/forecast-parameters/forecast-parameters.component.scss","./src/app/component/administration/evaluation/generator-evaluation/generator-termsheet/generator-termsheet.component.html","./src/app/component/administration/evaluation/generator-evaluation/generator-evaluation.component.scss?14a3","./src/app/widget/loader/loader.component.scss","./src/app/component/navigation-bar/navigation-bar-item/navigation-bar-item.component.scss","./src/app/component/report/management-report/management-report.component.scss","./src/app/component/generator-project-facility/generator-project-facility-details/generator-project-facility-details.component.scss","./src/app/component/administration/notifications/generator-notifications/generator-notifications.component.html","./src/app/component/infomation/useful-links/useful-links.component.html","./src/app/component/generator-company/list/generator-companies-list.component.scss","./src/app/component/public-holiday/public-holiday-time-period.component.scss?3efc","./src/app/component/consumer-company/consumer-company-recs/consumer-company-recs.component.scss?a7d7","./src/app/component/distributor/list/distributor-list.component.scss?53d0","./src/app/component/report/sales-rep-report/sales-rep-report.component.scss?7867","./src/app/component/power-profile-filter/power-profile-filter.component.html","./src/app/component/infomation/frequently-asked-questions/frequently-asked-questions.component.scss","./src/app/component/invoices/invoice-batch-summary/invoice-batch-summary.component.scss?2aff","./src/app/widget/validation-spans/validation-spans.component.scss?ed96","./src/app/component/tariff/tariff-list/tariff-list.component.scss","./src/app/component/public-holiday/public-holiday.component.html","./src/app/component/tariff/tariff.component.scss","./src/app/component/generator-company/edit/edit-generator-company.component.html","./src/app/component/allocation/allocation-run/allocation-run-detail/allocation-warning/allocation-warning.component.scss","./src/app/component/report/management-report/management-report.component.html","./src/app/errors/maintenance/maintenance.component.scss","./src/app/component/administration/user/create/create-user.component.html","./src/app/component/report/management-report/management-report.component.scss?c64d","./src/app/component/administration/evaluation/prospect-evaluation/archived-prospect-evaluation/archived-prospect-evaluation.component.html","./src/app/component/generator-project/list/generator-project-list.component.scss?50bf","./src/app/component/notes/notes.component.scss?1402","./src/app/component/allocation/allocation-run/allocation-run-detail/allocation-purchase-and-sales-rate/allocation-purchase-and-sales-rate.component.scss","./src/app/component/application/consumer-application/consumer-application.component.scss","./src/app/component/consumer-company-premises/consumer-company-premises-activation/consumer-company-premises-activation.component.html","./src/app/component/generator-project-facility/generator-project-facility-details/generator-project-facility-details.component.scss?d346","./src/app/component/invoices/invoice-batch-summary/invoice-batch-summary.component.scss","./src/app/component/report/sales-rep-report/sales-rep-report.component.scss","./src/app/component/allocation/allocation.component.html","./src/app/component/distributor/prepaid-vendor/prepaid-vendor-prepaid-removal-percentage-list/prepaid-vendor-prepaid-removal-percentage-list.component.scss","./src/app/widget/validation-spans/validation-spans.component.scss","./src/app/component/generator-company/edit/edit-generator-company.component.scss","./src/app/component/distributor/distributor-dashboard/power-import-limit/power-import-limit.component.scss","./src/app/component/distributor/list/distributor-list.component.html","./src/app/component/application/generator-application/nda-agreement/nda-agreement.component.scss","./src/app/component/distributor/distributor-dashboard/trading-limits-overall/trading-limits-overall.component.scss?caf8","./src/app/component/allocation/allocation-run/allocation-run-detail/allocation-power-per-technology/allocation-power-per-technology.component.html","./src/app/component/report/forecast-reports/consumer-and-revenue-forecast-report/revenue-forecast-warnings/revenue-forecast-warnings.component.scss","./src/app/widget/summary-card/summary-card.component.html","./src/app/component/public-holiday/public-holiday-time-period.component.scss","./src/app/component/consumer-company-premises/consumer-company-premises-tariff-list/consumer-company-premises-tariff-list.component.scss?ed58","./src/app/component/distributor/distributor-dashboard/average-purchase-and-sales-rate/average-purchase-and-sales-rate.component.scss","./src/app/component/allocation/allocation-run/allocation-run-errors/allocation-run-errors.component.scss?0131","./src/app/component/document/document-download/document-download.component.scss","./src/app/component/distributor/distributor-dashboard/average-purchase-and-sales-rate/average-purchase-and-sales-rate.component.html","./src/app/component/document/document.component.scss","./src/app/component/allocation/allocation-run/allocation-run-detail/allocation-export/allocation-export.component.scss?29d6","./src/app/component/consumer-company/consumer-company-ppa-maintenance/consumer-company-ppa-maintenance.component.html","./src/app/component/administration/evaluation/prospect-evaluation/prospect-offer/prospect-offer.component.scss?c467","./src/app/component/document/document-download-list/document-download-list.component.scss?d583","./src/app/component/administration/user/list/user-list.component.scss?573f","./src/app/component/allocation/allocation-run/allocation-run-detail/allocation-run-detail.component.scss","./src/app/component/report/forecast-reports/consumer-and-revenue-forecast-report/forecast-parameters/forecast-parameters.component.html","./src/app/component/administration/user/list/user-list.component.html","./src/app/component/allocation/allocation-run/allocation-summary-generator/allocation-summary-generator.component.html","./src/app/component/consumer-company/archived/archived-consumer-companies-list.component.scss","./src/app/component/generator-company/generator-company-details/generator-company-details.component.html","./src/app/component/address/address-form/address-form.component.scss?dd8d","./src/app/component/allocation/allocation-run/allocation-run-detail/allocation-prepaid-revenue/allocation-prepaid-revenue.component.html","./src/app/component/consumer-company/edit/edit-consumer-company.component.html","./src/app/component/generator-company/archived/archived-generator-companies-list.component.scss?f97b","./src/app/component/distributor/wheeling-fees/wheeling-fees.component.html","./src/app/component/allocation/allocation-run/allocation-run-detail/allocation-tariff-sale-rates/allocation-tariff-sale-rates.component.html","./src/app/component/report/forecast-reports/consumer-and-revenue-forecast-report/consumer-forecast-warnings/consumer-forecast-warnings.component.html","./src/app/component/infomation/useful-links/useful-links.component.scss","./src/app/component/allocation/allocation-run/allocation-send-warnings/allocation-send-warnings.component.scss?e1ed","./src/app/component/general-maintenance/document-maintenance/document-maintenance.component.html","./src/app/component/distributor/consumption/consumption-period/consumption-period.component.scss","./src/app/component/generator-project-facility/generator-project-facility-details/generator-project-facility-details.component.html","./src/app/component/allocation/allocation-run/recs/recs.component.scss?eb7d","./src/app/component/administration/evaluation/generator-evaluation/archived-generator-evaluation/archived-generator-evaluation.component.scss","./src/app/component/administration/prospects/premises-list/premises-list.component.scss","./src/app/component/allocation/allocation-run/allocation-run-detail/allocation-power-per-tariff/allocation-power-per-tariff.component.scss?c000","./src/app/component/generator-company/archived/archived-generator-companies-list.component.html","./src/app/component/allocation/allocation-run/allocation-run-warnings/allocation-run-warnings.component.html","./src/app/component/administration/notifications/generator-notifications/generator-notifications.component.scss?8e01","./src/app/component/infomation/useful-links/useful-links.component.scss?f599","./src/app/component/infomation/downloadable-documents-component/downloadable-documents-component.html","./src/app/component/application/generator-application/spv-details/spv-details.component.scss","./src/app/component/administration/integrator-providers/providers-detail/providers-detail.component.scss","./src/app/component/allocation/allocation-run/allocation-send-warnings/allocation-send-warnings.component.html","./src/app/component/document/document-download/document-download.component.scss?1307","./src/app/component/administration/integrator-providers/providers-list/providers-list.component.scss","./src/app/component/consumer-company-premises/consumer-company-premises-details/consumer-company-premises-details.component.scss?a6e9","./src/app/component/allocation/allocation-run/recs/recs-consumer-list/recs-consumer-list.component.scss","./src/app/component/report/distributor-activation-report/distributor-activation-report.component.scss?5510","./src/app/component/allocation/allocation-run/allocation-run-detail/allocation-run-detail.component.html","./src/app/component/allocation/allocation-run/allocation-run-detail/allocation-revenue-per-tariff/allocation-revenue-per-tariff.component.html","./src/app/component/generator-project-facility/generator-project-facility-distributor-nominations/generator-project-facility-distributor-nominations.component.scss","./src/app/component/report/generator-reports/generator-reports.component.scss","./src/app/errors/404/404.scss","./src/app/component/consumer-company-premises/meter-manual-upload/meter-manual-upload.component.scss?2642","./src/app/component/navigation-bar/navigation-bar.component.html","./src/app/component/distributor/prepaid-vendor/prepaid-vendor-prepaid-removal-percentage-list/prepaid-vendor-prepaid-removal-percentage-list.component.scss?765a","./src/app/widget/consumption/consumption.component.html","./src/app/component/document/documents/documents.component.scss","./src/app/component/administration/prospects/premises-details/premises-details.component.scss?88a6","./src/app/component/dashboard/generation-per-technology-to-date/generation-per-technology-to-date.component.html","./src/app/component/document/document-template-upload/document-template-upload.component.html","./src/app/component/allocation/allocation-run/allocation-run.component.scss?8cfd","./src/app/errors/403/403.scss","./src/app/component/generator-project/list/generator-project-list.component.scss","./src/app/component/public-holiday/public-holiday.component.scss?27cb","./src/app/component/notes/notes.component.scss","./src/app/component/administration/notifications/generator-ppa-renewal-notifications/generator-ppa-renewal-notifications.component.scss","./src/app/component/distributor/distributor-dashboard/distributor-dashboard.component.html","./src/app/component/administration/evaluation/prospect-evaluation/prospect-evaluation.component.html","./src/app/component/distributor/prepaid-vendor/prepaid-vendor.component.scss","./src/app/component/report/forecast-reports/generator-forecast-report/generator-forecast-report.component.scss?c85b","./src/app/component/report/forecast-reports/consumer-and-revenue-forecast-report/consumer-forecast-warnings/consumer-forecast-warnings.component.scss?9415","./src/app/component/distributor/prepaid-vendor/prepaid-tariff/tariff-block/tariff-block-accordion.component.html","./src/app/component/dashboard/warnings-and-notifications/generator-notifications-card/generator-notifications-card.component.scss","./src/app/component/authentication/login.component.scss","./src/app/component/navigation-bar/navigation-bar-item/navigation-bar-item.component.html","./src/app/component/forecast/parameters/forecast.component.scss","./src/app/component/navigation-bar/navigation-bar.component.scss","./src/app/component/dashboard/dashboard.component.scss","./src/app/component/allocation/allocation-run/recs/recs-consumer-list/recs-consumer-list.component.html","./src/app/component/authentication/login.component.html","./src/app/component/generator-project/generator-project-ppa-maintenance-commercial-agreement-change/generator-project-ppa-maintenance-commercial-agreement-change.component.html","./src/app/component/application/generator-application/company-details/company-details.component.html","./src/app/component/administration/user/reset-password/reset-password.component.html","./src/app/component/allocation/allocation-run/parameters/parameters.component.html","./src/app/component/public-holiday/public-holiday-time-period.component.html","./src/app/component/allocation/allocation-run/allocation-run-warnings/allocation-run-warnings.component.scss?a160","./src/app/component/application/generator-application/generator-project/generator-project-edit/generator-application-project-edit.component.scss?43cc","./src/app/component/allocation/allocation-run/allocation-run-errors/allocation-run-errors.component.scss","./src/app/component/generator-project/generator-project-ppa-maintenance/generator-project-ppa-maintenance.component.scss","./src/app/component/report/forecast-reports/generator-forecast-report/generator-forecast-report.component.html","./src/app/component/dashboard/warnings-and-notifications/warnings-and-notifications.component.scss?f86f","./src/app/component/distributor/distributor-increase/distributor-increase.component.scss","./src/app/component/distributor/prepaid-vendor/prepaid-tariff/prepaid-tariff-accordion.component.html","./src/app/component/distributor/meter-installation-charges/meter-installation-charges.component.scss","./src/app/component/distributor/distributor-dashboard/trading-limits-per-tariff/trading-limits-per-tariff.component.scss","./src/app/component/nersa-report/nersa-consumer-report/nersa-consumer-report.component.html","./src/app/component/administration/sales-rep/list/sales-rep-list.component.html","./src/app/component/administration/sales-rep/create/create-sales-rep.component.scss?b655","./src/app/component/demo-settings/demo-settings.component.html","./src/app/component/nersa-report/nersa-generator-report/nersa-generator-report.component.html","./src/app/component/document/document.component.scss?59c4","./src/app/component/administration/prospect-ppa/prospect-ppa.component.scss","./src/app/component/allocation/allocation-run/allocation-run-detail/allocation-power-per-tariff/allocation-power-per-tariff.component.scss","./src/app/component/administration/prospects/premises-list/premises-list.component.html","./src/app/component/allocation/allocation-run/allocation-summary-consumer/allocation-summary-consumer.component.scss","./src/app/component/allocation/allocation-run/allocation-summary-generator/allocation-summary-generator.component.scss","./src/app/component/power-profile-filter/power-profile-filter.component.scss","./src/app/component/report/application-reports/application-reports.component.scss","./src/app/component/allocation/allocation-run/allocation-run-warnings/allocation-run-warnings.component.scss","./src/app/component/report/generator-reports/generator-reports.component.html","./src/app/component/generator-project/generator-project-ppa-maintenance-commercial-agreement-change/generator-project-ppa-maintenance-commercial-agreement-change.component.scss?e5b3","./src/app/component/document/document-upload/document-upload.component.scss?6b43","./src/app/component/public-holiday/public-holiday.component.scss","./src/app/component/document/documents/documents.component.html","./src/app/component/administration/prospects/consumer-details/consumer-details.component.scss?1188","./src/app/component/dashboard/warnings-and-notifications/generator-ppa-warning-card/generator-ppa-warning-card.component.html","./src/app/widget/information-card/information-card.component.html","./src/app/component/allocation/allocation-run/allocation-run-detail/allocation-revenue-per-energy-bracket/allocation-revenue-per-energy-bracket.component.scss","./src/app/component/tariff/tariff-rate-list/tariff-rate-list.component.scss","./src/app/component/application/consumer-application/consumer-application.component.html","./src/app/component/distributor/bulk-meter-list/bulk-meter-details/bulk-meter-details.component.html","./src/app/component/forecast/runs/forecast-run.component.html","./src/app/component/forecast/runs/forecast-run.component.scss","./src/app/component/forecast/allocations/allocation-forecast-run.component.scss","./src/app/component/dashboard/warnings-and-notifications/generator-notifications-card/generator-notifications-card.component.html","./src/app/component/administration/user/create/create-user.component.scss","./src/app/component/dashboard/warnings-and-notifications/facilities-evaluation-notifications-card/facilities-evaluation-notifications-card.component.html","./src/app/component/settings/settings.component.html","./src/app/component/dashboard/warnings-and-notifications/generator-ppa-warning-card/generator-ppa-warning-card.component.scss?53c9","./src/app/component/dashboard/generation-to-date/generation-to-date.component.scss?cc03","./src/app/component/dashboard/warnings-and-notifications/premises-evaluation-notifications-card/premises-evaluation-notifications-card.component.scss?3c25","./src/app/errors/maintenance/maintenance.component.scss?aaf5","./src/app/errors/404/404.scss?a65f","./src/app/component/distributor/meter-installation-charges/meter-installation-charges.component.html","./src/app/component/form.styles.scss","./src/app/component/generator-project/list/generator-project-list.component.html","./src/app/component/power-profile-filter/power-profile-filter.component.scss?b10d","./src/app/component/authentication/ForgotPassword/forgot-password.component.scss?37e7","./src/app/component/dashboard/warnings-and-notifications/facilities-evaluation-notifications-card/facilities-evaluation-notifications-card.component.scss?6789","./src/app/component/report/forecast-reports/consumer-and-revenue-forecast-report/forecast-parameters/forecast-parameters.component.scss?64d4","./src/app/component/tariff/tariff-list/tariff-list.component.html","./src/app/component/invoices/invoice-batch-details/invoice-batch-details.component.ts","./src/app/component/dashboard/dashboard.service.ts","./src/app/authentication/service/authentication.service.ts","./src/app/common/common-service.ts","./src/app/component/dashboard/warnings-and-notifications/facilities-evaluation-notifications-card/facilities-evaluation-notifications-card.component.ts","./src/app/component/dashboard/warnings-and-notifications/premises-evaluation-notifications-card/premises-evaluation-notifications-card.component.ts","./src/app/component/distributor/bulk-meter-list/distributor-bulkmeter.service.ts","./src/app/component/distributor/period.service.ts","./src/app/component/administration/prospect-ppa/prospect-ppa.service.ts","./src/app/model/premises-average-consumption.model.ts","./src/app/component/administration/prospects/prospect.service.ts","./src/app/model/prospect.model.ts","./src/app/model/company-details.model.ts","./src/app/model/address.model.ts","./src/app/component/address/address-form/address-form.component.ts","./src/app/app.component.ts","./src/app/model/page.model.ts","./src/app/component/general-maintenance/document-maintenance/document-maintenance.service.ts","./src/app/component/general-maintenance/document-maintenance/document-maintenance.component.ts","./src/app/component/distributor/distributor.service.ts","./src/app/common/component-triggers.service.ts","./src/app/component/distributor/bulk-meter-list/bulk-meter-details/bulk-meter-details.component.ts","./src/app/component/generator-company/generator-company.service.ts","./src/app/component/general-maintenance/cpi.service.ts","./src/app/component/administration/notifications/generator-notifications/generator-increase-notification-details/generator-increase-notification-details.component.ts","./src/app/component/administration/notifications/generator-notifications/generator-notifications.component.ts","./src/app/model/tariff/tariff.model.ts","./src/app/model/company.model.ts","./src/app/model/contact.model.ts","./src/app/model/attribute.model.ts","./src/app/component/consumer-company/consumer-company.service.ts","./src/app/model/distributor.model.ts","./src/app/model/consumer-company-premises.model.ts","./src/app/model/qualification-parameters.model.ts","./src/app/model/consumer-company.model.ts","./src/app/component/administration/prospect-ppa/prospect-ppa.component.ts","./src/app/model/prospect-ppa-detail.model.ts","./src/app/component/administration/prospects/prospects.component.ts","./src/app/errors/404/page-not-found.component.ts","./src/app/model/application/generator-application/generator-application.model.ts","./src/app/model/generator-project.model.ts","./src/app/model/generator-project-facility.model.ts","./src/app/model/generator-company.model.ts","./src/app/component/application/generator-application/generator-application.service.ts","./src/app/model/application/generator-application/existing-facility.model.ts","./src/app/model/application/generator-application/new-facility.model.ts","./src/app/component/home/home.component.ts","./src/app/component/allocation/allocation.component.ts","./src/app/model/allocation/allocation-warning-accordion.model.ts","./src/app/model/allocation/allocation-send-warning.model.ts","./src/app/model/allocation/allocation-error-accordion.model.ts","./src/app/component/allocation/allocation-run/allocation-run.service.ts","./src/app/widget/date-converter/date-converter.service.ts","./src/app/authorisation-service/authorisation.service.ts","./src/app/component/allocation/allocation-run/allocation-run-state.service.ts","./src/app/component/allocation/allocation-run/allocation-run.component.ts","./src/app/component/authentication/login.component.ts","./src/app/authentication/guard/authentication.guard.ts","./src/app/component/authentication/logout/logout.component.ts","./src/app/component/consumer-company/list/consumer-companies-list.component.ts","./src/app/component/consumer-company/archived/archived-consumer-companies-list.component.ts","./src/app/component/allocation/allocation-run/allocation-run-warnings/allocation-run-warnings.component.ts","./src/app/component/allocation/allocation-run/allocation-summary-consumer/allocation-summary-consumer.component.ts","./src/app/component/allocation/allocation-run/parameters/parameters.service.ts","./src/app/component/allocation/allocation-run/parameters/parameters.component.ts","./src/app/component/allocation/allocation-run/allocation-summary-generator/allocation-summary-generator.component.ts","./src/app/component/infomation/information.service.ts","./src/app/component/infomation/frequently-asked-questions/frequently-asked-questions.component.ts","./src/app/component/infomation/useful-links/useful-links.component.ts","./src/app/authentication/guard/authorization.guard.ts","./src/app/errors/403/forbidden.component.ts","./src/app/component/administration/administration.service.ts","./src/app/component/administration/user/list/user-list.component.ts","./src/app/component/administration/user/create/create-user.component.ts","./src/app/component/administration/user/verify/user-email-verification.component.ts","./src/app/component/administration/user/edit/edit-user.component.ts","./src/app/component/administration/sales-rep/list/sales-rep-list.component.ts","./src/app/component/tariff/tariff.service.ts","./src/app/component/administration/sales-rep/create/create-sales-rep.component.ts","./src/app/model/administration/sales-target.model.ts","./src/app/component/administration/sales-rep/edit/edit-sales-rep.component.ts","./src/app/component/allocation/allocation-run/allocation-send-warnings/allocation-send-warnings.component.ts","./src/app/component/administration/prospects/consumer-details/consumer-details.component.ts","./src/app/component/sap-export/export.service.ts","./src/app/component/sap-export/sap-export.component.ts","./src/app/component/distributor/list/distributor-list.component.ts","./src/app/component/administration/integrator-providers/integrator-provider.service.ts","./src/app/component/distributor/create/create-distributor.component.ts","./src/app/component/distributor/edit/edit-distributor.component.ts","./src/app/component/administration/evaluation/generator-evaluation/generator-evaluation.service.ts","./src/app/component/administration/evaluation/generator-evaluation/generator-evaluation.component.ts","./src/app/component/administration/evaluation/generator-evaluation/archived-generator-evaluation/archived-generator-evaluation.component.ts","./src/app/component/administration/evaluation/generator-evaluation/generator-evaluation-details/generator-evaluation-details.component.ts","./src/app/model/generator/generator-evaluation-input.model.ts","./src/app/component/administration/evaluation/prospect-evaluation/prospect-evaluation.component.ts","./src/app/component/administration/evaluation/prospect-evaluation/archived-prospect-evaluation/archived-prospect-evaluation.component.ts","./src/app/component/administration/evaluation/prospect-evaluation/prospect-evaluation-details/prospect-evaluation-details.component.ts","./src/app/model/administration/projection.model.ts","./src/app/component/administration/evaluation/prospect-evaluation/prospect-offer/prospect-offer-calculation.service.ts","./src/app/component/administration/evaluation/prospect-evaluation/prospect-offer/prospect-offer.component.ts","./src/app/model/administration/offer-detail.model.ts","./src/app/component/administration/evaluation/generator-evaluation/generator-ppa/generator-ppa.service.ts","./src/app/component/generator-project-facility/generator-project-facility-tariff-rates/generator-project-facility-tariff-rates.service.ts","./src/app/component/administration/evaluation/generator-evaluation/generator-ppa/generator-ppa.component.ts","./src/app/component/generator-project-facility/generator-project-facility-activation/generator-project-facility-activation.service.ts","./src/app/component/administration/evaluation/generator-evaluation/generator-ppa-schedule/generator-ppa-schedule.service.ts","./src/app/component/generator-project-facility/generator-project-facility-activation/generator-project-facility-activation.component.ts","./src/app/component/authentication/ForgotPassword/forgot-password.component.ts","./src/app/component/administration/user/reset-password/reset-password.component.ts","./src/app/component/consumer-company-premises/consumer-company-premises-activation/consumer-company-premises-activation.service.ts","./src/app/component/consumer-company-premises/consumer-company-premises.service.ts","./src/app/component/consumer-company-premises/consumer-company-premises-activation/consumer-company-premises-activation.component.ts","./src/app/component/consumer-company/edit/edit-consumer-company.component.ts","./src/app/component/consumer-company-premises/list/consumer-company-premises-list.component.ts","./src/app/component/generator-company/list/generator-companies-list.component.ts","./src/app/component/generator-company/archived/archived-generator-companies-list.component.ts","./src/app/component/generator-company/edit/edit-generator-company.component.ts","./src/app/component/administration/prospect-ppa/ppa-schedule/ppa-schedule.component.ts","./src/app/component/report/management-report/management-report.service.ts","./src/app/component/allocation/allocation-run/recs/recs.component.ts","./src/app/component/generator-project/edit/edit-generator-project.component.ts","./src/app/component/consumer-company-premises/edit/edit-consumer-company-premises.component.ts","./src/app/component/allocation/allocation-run/recs/recs-consumer-list/recs-consumer-list.component.ts","./src/app/component/administration/evaluation/generator-evaluation/generator-ppa-schedule/generator-ppa-schedule.component.ts","./src/app/component/application/consumer-application/consumer-application.service.ts","./src/app/component/application/new-application.component.ts","./src/app/component/application/generator-application/application-user-email-verification/application-user-email-verification.component.ts","./src/app/model/application/application-user-email-verification.model.ts","./src/app/component/contact/contact.service.ts","./src/app/component/application/generator-application/company-details/company-details.component.ts","./src/app/component/application/generator-application/nda-agreement-template/nda-agreement-template.component.ts","./src/app/component/application/generator-application/spv-details/spv-details.component.ts","./src/app/component/document/document.service.ts","./src/app/component/application/generator-application/nda-agreement/nda-agreement.component.ts","./src/app/component/application/generator-application/facility-details/facility-details.component.ts","./src/app/component/nersa-report/nersa-report-history.service.ts","./src/app/component/nersa-report/nersa-consumer-report/nersa-consumer-report.component.ts","./src/app/component/nersa-report/nersa-generator-report/nersa-generator-report.component.ts","./src/app/component/administration/evaluation/generator-evaluation/generator-termsheet/generator-termsheet.service.ts","./src/app/component/administration/evaluation/generator-evaluation/generator-termsheet/generator-termsheet.component.ts","./src/app/component/allocation/allocation-run/allocation-run-detail/allocation-run-detail.component.ts","./src/app/component/general-maintenance/cpi/cpi.component.ts","./src/app/component/settings/settings.service.ts","./src/app/component/settings/settings.component.ts","./src/app/component/generator-project-facility/generator-project-facility-distributor-nominations/generator-project-facility-distributor-nominations.component.ts","./src/app/model/report/revenue-forecast-warning-accordion.model.ts","./src/app/model/report/consumer-forecast-warning-accordion.model.ts","./src/app/component/report/forecast-reports/forecast-reports.service.ts","./src/app/component/report/forecast-reports/generator-forecast-report/generator-forecast-report.component.ts","./src/app/component/report/forecast-reports/consumer-and-revenue-forecast-report/consumer-and-revenue-forecast-report.component.ts","./src/app/model/report/revenue-forecast.model.ts","./src/app/component/application/generator-application/generator-project/generator-projects-list/generator-application-project-list.component.ts","./src/app/component/application/generator-application/generator-project/generator-project-edit/generator-application-project-edit.component.ts","./src/app/component/application/generator-application/generator-project-facility/generator-project-facility-edit/generator-application-project-facility-edit.component.ts","./src/app/component/administration/integrator-providers/providers-list/providers-list.component.ts","./src/app/component/administration/integrator-providers/providers-detail/providers-detail.component.ts","./src/app/component/application/consumer-application/consumer-application.component.ts","./src/app/component/public-holiday/public-holiday.service.ts","./src/app/component/public-holiday/public-holiday.component.ts","./src/app/component/allocation/allocation-run/allocation-run-errors/allocation-run-errors.component.ts","./src/app/component/report/forecast-reports/consumer-and-revenue-forecast-report/consumer-forecast-warnings/consumer-forecast-warnings.component.ts","./src/app/component/report/forecast-reports/consumer-and-revenue-forecast-report/revenue-forecast-warnings/revenue-forecast-warnings.component.ts","./src/app/component/report/management-report/management-report.component.ts","./src/app/errors/maintenance/maintenance.component.ts","./src/app/component/report/sales-rep-report/sales-rep-report.service.ts","./src/app/component/report/sales-rep-report/sales-rep-report.component.ts","./src/app/component/report/forecast-reports/consumer-and-revenue-forecast-report/forecast-parameters/forecast-parameters.component.ts","./src/app/component/report/application-reports/application-report.service.ts","./src/app/component/report/application-reports/application-reports.component.ts","./src/app/component/administration/prospects/prospect-details/prospect-details.component.ts","./src/app/component/report/distributor-activation-report/distributor-activation-report.service.ts","./src/app/component/report/distributor-activation-report/distributor-activation-report.component.ts","./src/app/component/administration/notifications/generator-ppa-renewal-notifications/generator-ppa-renewal-notifications.component.ts","./src/app/component/administration/notifications/consumer-ppa-renewal-notifications/consumer-ppa-renewal-notifications.component.ts","./src/app/component/infomation/downloadable-documents-component/downloadable-documents-component.ts","./src/app/component/forecast/forecast.service.ts","./src/app/component/forecast/parameters/forecast.component.ts","./src/app/model/forecast-run/forecast.parameter.ts","./src/app/component/forecast/runs/forecast-run.component.ts","./src/app/component/forecast/allocations/allocation-forecast-run.component.ts","./src/app/component/report/consumer-sales-reports/consumer-sales-report.service.ts","./src/app/component/report/consumer-sales-reports/consumer-sales-reports.component.ts","./src/app/component/report/generator-reports/generator-report.service.ts","./src/app/component/report/generator-reports/generator-reports.component.ts","./src/app/component/invoices/invoice.service.ts","./src/app/component/invoices/invoice-batch-summary/invoice-batch-summary.component.ts","./src/app/component/invoices/invoice-batch-invoice-list/invoice-batch-state.service.ts","./src/app/component/invoices/invoice-batch-invoice-list/invoice-batch-invoice-list.component.ts","./src/app/model/crud-table/column-configuration.model.ts","./src/app/component/invoices/invoice-details/invoice-details.component.ts","./src/app/component/demo-settings/demo-settings.service.ts","./src/app/component/demo-settings/demo-settings.component.ts","./src/app/component/consumer-company-premises/statements/consumer-statement.service.ts","./src/app/component/consumer-company-premises/statements/consumer-statement.component.ts","./src/app/component/consumer-company-premises/meter-manual-upload/meter-manual-upload.service.ts","./src/app/component/consumer-company-premises/meter-manual-upload/meter-manual-upload.component.ts","./src/app/component/vat-settings/vat-settings.service.ts","./src/app/component/vat-settings/vat-settings.component.ts","./src/app/model/vat.model.ts","./src/app/app.routes.ts","./src/app/authentication/interceptor/token.interceptor.ts","./src/app/component/navigation-bar/navigation-bar.component.ts","./src/app/widget/loader/loader.component.ts","./src/app/pipe/numberdumper.pipe.ts","./src/app/component/document/document.component.ts","./src/app/model/document.model.ts","./src/app/component/document/document-upload/document-upload.component.ts","./src/app/component/document/document-download/document-download.component.ts","./src/app/component/document/document-download-list/document-download-list.component.ts","./src/app/component/navigation-bar/navigation-bar-item/navigation-bar-item.component.ts","./src/app/widget/validation-spans/validation-spans.component.ts","./src/app/widget/validation-messages/validation-messages.component.ts","./src/app/model/premises-consumption.model.ts","./src/app/component/administration/prospects/premises-details/premises-details.component.ts","./src/app/component/tariff/tariff.component.ts","./src/app/widget/crud-table/crud-table.component.ts","./src/app/widget/base-accordion/base-accordion.component.ts","./src/app/component/distributor/prepaid-vendor/prepaid-vendor-accordion/prepaid-vendor-accordion.component.ts","./src/app/component/notes/notes.service.ts","./src/app/model/note.model.ts","./src/app/component/notes/notes.component.ts","./src/app/component/document/documents/documents.component.ts","./src/app/component/distributor/prepaid-vendor/prepaid-tariff/prepaid-tariff-accordion.component.ts","./src/app/component/distributor/prepaid-vendor/prepaid-tariff/tariff-block/tariff-block-accordion.component.ts","./src/app/component/distributor/consumption/consumption-period/consumption-period.component.ts","./src/app/model/entity-lookup.model.ts","./src/app/component/public-holiday/public-holiday-time-period.component.ts","./src/app/model/period.model.ts","./src/app/pipe/distinct-start-with.pipe.ts","./src/app/pipe/substr-start-at-zero.pipe.ts","./src/app/pipe/all-start-with.pipe.ts","./src/app/pipe/profile-type.pipe.ts","./src/app/pipe/profile-has-data.pipe.ts","./src/app/pipe/inclusion-month.pipe.ts","./src/app/component/distributor/bulk-meter-list/bulk-meter-list.component.ts","./src/app/component/consumer-company/consumer-company-details/consumer-company-details.component.ts","./src/app/component/address/address-accordion.component.ts","./src/app/component/generator-company/generator-company-details/generator-company-details.component.ts","./src/app/component/generator-project/list/generator-project-list.component.ts","./src/app/component/generator-project/generator-project-details/generator-project-details.component.ts","./src/app/component/generator-project-facility/generator-project-facility-details/generator-project-facility-details.component.ts","./src/app/component/consumer-company-premises/consumer-company-premises-details/consumer-company-premises-details.component.ts","./src/app/widget/dropdown/dropdown.component.ts","./src/app/component/application/generator-application/facility-details/generation-data/generation-data.component.ts","./src/app/component/consumer-company-premises/consumer-company-premises-tariff-list/consumer-company-premises-tariff-list.component.ts","./src/app/component/allocation/allocation-run/allocation-run-detail/allocation-summary-blocks/allocation-run-summary-blocks.component.ts","./src/app/component/allocation/allocation-run/allocation-run-detail/allocation-export/allocation-export.component.ts","./src/app/component/allocation/allocation-run/allocation-run-detail/allocation-warning/allocation-warning.component.ts","./src/app/component/allocation/allocation-run/allocation-run-detail/allocation-finalization/allocation-finalization.component.ts","./src/app/component/allocation/allocation-run/allocation-run-detail/allocation-power-per-technology/allocation-power-per-technology.component.ts","./src/app/component/allocation/allocation-run/allocation-run-detail/allocation-revenue-per-energy-bracket/allocation-revenue-per-energy-bracket.component.ts","./src/app/component/generator-project-facility/generator-project-facility-tariff-rates/generator-project-facility-tariff-rates.component.ts","./src/app/component/generator-project-facility/generator-project-facility-tariff-rates-edit/generator-project-facility-tariff-rates-edit.service.ts","./src/app/component/generator-project-facility/generator-project-facility-tariff-rates-edit/generator-project-facility-tariff-rates-edit.component.ts","./src/app/widget/consumption/consumption.model.ts","./src/app/widget/consumption/consumption.component.ts","./src/app/component/distributor/distributor-increase/distributor-increase.component.ts","./src/app/widget/summary-card/summary-info-pair.model.ts","./src/app/widget/summary-card/summary-card.component.ts","./src/app/component/allocation/allocation-run/allocation-run-detail/allocation-prepaid-revenue/allocation-prepaid-revenue.component.ts","./src/app/component/distributor/prepaid-vendor/prepaid-vendor.service.ts","./src/app/component/distributor/prepaid-vendor/prepaid-vendor.component.ts","./src/app/component/distributor/prepaid-vendor/prepaid-vendor-details/prepaid-vendor-details.component.ts","./src/app/model/prepaid-vendor/prepaid-vendor-tariff-block.model.ts","./src/app/component/tariff/tariff-list/tariff-list.component.ts","./src/app/component/contact/contact-component/contact.component.ts","./src/app/component/dashboard/dashboard.component.ts","./src/app/component/dashboard/generation-to-date/generation-to-date.component.ts","./src/app/component/dashboard/generation-per-technology-to-date/generation-per-technology-to-date.component.ts","./src/app/component/power-profile-filter/power-profile.service.ts","./src/app/component/power-profile-filter/power-profile-filter.component.ts","./src/app/model/power-profiles/filtered-power-profile.model.ts","./src/app/component/dashboard/warnings-and-notifications/warnings-and-notifications.component.ts","./src/app/widget/information-card/information-card.component.ts","./src/app/component/dashboard/warnings-and-notifications/generator-notifications-card/generator-notifications-card.component.ts","./src/app/widget/stats-card/stats-card.component.ts","./src/app/component/generator-project/generator-project-ppa-maintenance/generator-project-ppa-maintenance.service.ts","./src/app/component/generator-project/generator-project-ppa-maintenance/generator-project-ppa-maintenance.component.ts","./src/app/component/distributor/wheeling-fees/wheeling-fees.component.ts","./src/app/component/distributor/meter-installation-charges/meter-installation-charges.component.ts","./src/app/component/allocation/allocation-run/allocation-run-detail/allocation-error/allocation-error.component.ts","./src/app/model/document-template.model.ts","./src/app/component/document/document-template-upload/document-template-upload.component.ts","./src/app/component/consumer-company/consumer-company-ppa-maintenance/consumer-company-ppa-maintenance.service.ts","./src/app/component/consumer-company/consumer-company-ppa-maintenance/consumer-company-ppa-maintenance.component.ts","./src/app/component/distributor/distributor-dashboard/trading-limits-overall/trading-limits-overall.component.ts","./src/app/component/distributor/distributor-dashboard/distributor-dashboard.component.ts","./src/app/component/distributor/distributor-dashboard/power-import-limit/power-import-limit.component.ts","./src/app/component/distributor/distributor-dashboard/trading-limits-per-tariff/trading-limits-per-tariff.component.ts","./src/app/component/generator-project/generator-project-ppa-maintenance-commercial-agreement-change/generator-project-ppa-maintenance-commercial-agreement-change.component.ts","./src/app/component/distributor/distributor-dashboard/average-purchase-and-sales-rate/average-purchase-and-sales-rate.component.ts","./src/app/component/distributor/distributor-weps-less-losses/distributor-weps-less-loss.service.ts","./src/app/component/distributor/distributor-weps-less-losses/weps-less-loses/weps-less-loses.component.ts","./src/app/component/dashboard/warnings-and-notifications/generator-ppa-warning-card/generator-ppa-warning-card.component.ts","./src/app/component/dashboard/warnings-and-notifications/consumer-ppa-warning-card/consumer-ppa-warning-card.component.ts","./src/app/component/distributor/prepaid-vendor/prepaid-vendor-prepaid-removal-percentage-list/prepaid-vendor-prepaid-removal-percentage-list.component.ts","./src/app/component/distributor/distributor-weps-less-losses/weps-less-lesses-period-daily-rate/weps-less-lesses-period-daily-rate.component.ts","./src/app/component/consumer-company/consumer-company-recs/consumer-company-recs.component.ts","./src/app/component/allocation/allocation-run/allocation-run-detail/allocation-purchase-and-sales-rate/allocation-purchase-and-sales-rate.component.ts","./src/app/component/tariff/tariff-rate-list/tariff-rate-list.component.ts","./src/app/component/tariff/tariff-trading-limit/tariff-trading-limit.component.ts","./src/app/model/tariff/tariff-trading.limit.model.ts","./src/app/component/distributor/distributor-power-trading-limits/distributor-power-trading-limits.component.ts","./src/app/component/distributor/power-traded-per-technology/power-traded-per-technology.component.ts","./src/app/component/allocation/allocation-run/allocation-run-detail/allocation-power-per-tariff/allocation-power-per-tariff.component.ts","./src/app/component/allocation/allocation-run/allocation-run-detail/allocation-revenue-per-tariff/allocation-revenue-per-tariff.component.ts","./src/app/component/allocation/allocation-run/allocation-run-detail/allocation-tariff-sale-rates/allocation-tariff-sale-rates.component.ts","./src/app/component/administration/prospects/premises-list/premises-list.component.ts","./src/app/app.module.ts","./src/app/environment.ts","./src/main.browser.ts","./src/app/component/generator-project/edit/edit-generator-project.component.scss?d951","./src/app/component/consumer-company/edit/edit-consumer-company.component.scss?7d3b","./src/app/component/general-maintenance/cpi/cpi.component.scss?d73e","./src/app/widget/stats-card/stats-card.component.scss?3f58","./src/app/widget/stats-card/stats-card.component.html","./src/app/widget/validation-messages/validation-messages.component.html","./src/app/component/consumer-company/edit/edit-consumer-company.component.scss","./src/app/component/generator-project-facility/generator-project-facility-activation/generator-project-facility-activation.component.scss","./src/app/component/application/new-application.component.scss?2e91","./src/app/component/nersa-report/nersa-consumer-report/nersa-consumer-report.component.scss?4eb9","./src/app/component/dashboard/warnings-and-notifications/warnings-and-notifications.component.html","./src/app/component/dashboard/warnings-and-notifications/consumer-ppa-warning-card/consumer-ppa-warning-card.component.html","./src/app/component/administration/prospect-ppa/prospect-ppa.component.html","./src/app/component/allocation/allocation-run/allocation-run-detail/allocation-summary-blocks/allocation-run-summary-blocks.component.html","./src/app/component/generator-project-facility/generator-project-facility-tariff-rates-edit/generator-project-facility-tariff-rates-edit.component.html","./src/app/component/distributor/distributor-increase/distributor-increase.component.scss?a3e4","./src/app/errors/maintenance/maintenance.component.html","./src/app/component/document/document-upload/document-upload.component.scss","./src/app/component/home/home.component.scss","./src/app/component/administration/evaluation/prospect-evaluation/archived-prospect-evaluation/archived-prospect-evaluation.component.scss","./src/app/component/administration/prospects/prospects.component.html","./src/app/component/invoices/invoice-batch-invoice-list/invoice-batch-invoice-list.component.html","./src/app/widget/loader/loader.component.scss?3540","./src/app/component/dashboard/generation-to-date/generation-to-date.component.scss","./src/app/component/allocation/allocation-run/allocation-run-detail/allocation-revenue-per-energy-bracket/allocation-revenue-per-energy-bracket.component.html","./src/app/component/address/address-accordion.component.html","./src/app/component/administration/evaluation/prospect-evaluation/prospect-evaluation-details/prospect-evaluation-details.component.scss?c4d5","./src/app/component/allocation/allocation-run/allocation-run-detail/allocation-error/allocation-error.component.html","./src/app/component/distributor/distributor-weps-less-losses/weps-less-lesses-period-daily-rate/weps-less-lesses-period-daily-rate.component.html","./src/app/component/dashboard/warnings-and-notifications/warnings-and-notifications.component.scss","./src/app/component/report/application-reports/application-reports.component.html","./src/app/component/general-maintenance/cpi/cpi.component.scss","./src/app/component/distributor/wheeling-fees/wheeling-fees.component.scss","./src/app/component/allocation/allocation-run/allocation-run-detail/allocation-warning/allocation-warning.component.html","./src/app/component/consumer-company/consumer-company-recs/consumer-company-recs.component.scss","./src/app/component/application/generator-application/nda-agreement/nda-agreement.component.html","./src/app/component/consumer-company-premises/consumer-company-premises-activation/consumer-company-premises-activation.component.scss","./src/app/component/distributor/distributor-dashboard/trading-limits-per-tariff/trading-limits-per-tariff.component.html","./src/app/component/authentication/ForgotPassword/forgot-password.component.scss","./src/app/widget/consumption/consumption.component.scss","./src/app/component/authentication/login.component.scss?461c","./src/app/component/application/generator-application/generator-project/generator-projects-list/generator-application-project-list.component.scss","./src/app/component/tariff/tariff-trading-limit/tariff-trading-limit.component.scss?0abb","./src/app/component/application/new-application.component.scss","./src/app/app.component.scss","./src/app/component/administration/sales-rep/list/sales-rep-list.component.scss","./src/app/component/distributor/prepaid-vendor/prepaid-vendor-details/prepaid-vendor-details.component.scss","./src/app/component/allocation/allocation-run/allocation-run-detail/allocation-finalization/allocation-finalization.component.scss?2c9b","./src/app/component/application/generator-application/generator-project/generator-projects-list/generator-application-project-list.component.html","./src/app/app.component.html","./src/app/component/allocation/allocation-run/allocation-run-detail/allocation-power-per-tariff/allocation-power-per-tariff.component.html","./src/app/component/generator-project-facility/generator-project-facility-activation/generator-project-facility-activation.component.html","./src/app/component/allocation/allocation-run/allocation-run-detail/allocation-tariff-sale-rates/allocation-tariff-sale-rates.component.scss","./src/app/component/allocation/allocation-run/allocation-run-detail/allocation-run-detail.component.scss?a978","./src/app/errors/404/404.html","./src/app/component/invoices/invoice-batch-invoice-list/invoice-batch-invoice-list.component.scss","./src/app/component/consumer-company-premises/consumer-company-premises-details/consumer-company-premises-details.component.html","./src/app/component/allocation/allocation-run/allocation-run.component.scss","./src/app/component/demo-settings/demo-settings.component.scss","./src/app/component/administration/evaluation/prospect-evaluation/prospect-evaluation.component.scss","./src/app/component/invoices/invoice-batch-summary/invoice-batch-summary.component.html","./src/app/component/invoices/invoice-batch-invoice-list/invoice-batch-invoice-list.component.scss?9c7b","./src/app/component/report/forecast-reports/generator-forecast-report/generator-forecast-report.component.scss","./src/app/component/generator-project/edit/edit-generator-project.component.html","./src/app/component/administration/notifications/generator-ppa-renewal-notifications/generator-ppa-renewal-notifications.component.scss?50c8","./src/app/component/administration/prospect-ppa/prospect-ppa.component.scss?9110","./src/app/component/allocation/allocation-run/allocation-run-detail/allocation-export/allocation-export.component.scss","./src/app/component/allocation/allocation-run/allocation-run-detail/allocation-summary-blocks/allocation-run-summary-blocks.component.scss","./src/app/widget/validation-messages/validation-messages.component.scss?1525","./src/app/component/administration/sales-rep/create/create-sales-rep.component.scss","./src/app/component/administration/evaluation/prospect-evaluation/prospect-evaluation.component.scss?04d0","./src/app/component/application/generator-application/facility-details/generation-data/generation-data.component.html","./src/app/widget/summary-card/summary-card.component.scss?f31e","./src/app/component/consumer-company-premises/consumer-company-premises-tariff-list/consumer-company-premises-tariff-list.component.scss","./src/app/component/administration/user/list/user-list.component.scss","./src/app/component/document/document.component.html","./src/app/component/report/forecast-reports/consumer-and-revenue-forecast-report/consumer-forecast-warnings/consumer-forecast-warnings.component.scss","./src/app/component/administration/notifications/generator-notifications/generator-increase-notification-details/generator-increase-notification-details.component.scss?201b","./src/app/component/distributor/bulk-meter-list/bulk-meter-list.component.html","./src/app/component/distributor/distributor-dashboard/distributor-dashboard.component.scss","./src/app/component/allocation/allocation-run/allocation-run-detail/allocation-export/allocation-export.component.html","./src/app/component/distributor/prepaid-vendor/prepaid-vendor-details/prepaid-vendor-details.component.html","./src/app/component/distributor/list/distributor-list.component.scss","./src/app/component/application/generator-application/spv-details/spv-details.component.scss?5d21","./src/app/component/consumer-company/archived/archived-consumer-companies-list.component.scss?0377","./src/app/component/allocation/allocation-run/allocation-run-detail/allocation-revenue-per-tariff/allocation-revenue-per-tariff.component.scss?2259","./src/app/component/report/consumer-sales-reports/consumer-sales-reports.component.html","./src/app/component/distributor/distributor-weps-less-losses/weps-less-loses/weps-less-loses.component.scss?c414","./src/app/component/generator-project-facility/generator-project-facility-distributor-nominations/generator-project-facility-distributor-nominations.component.html","./src/app/component/allocation/allocation-run/allocation-run.component.html","./src/app/component/allocation/allocation-run/allocation-run-detail/allocation-error/allocation-error.component.scss?862b","./src/app/component/generator-project/generator-project-ppa-maintenance/generator-project-ppa-maintenance.component.html","./src/app/component/distributor/bulk-meter-list/bulk-meter-list.component.scss","./src/app/component/sap-export/sap-export.component.scss","./src/app/component/distributor/create/create-distributor.component.scss?7f41","./src/app/component/allocation/allocation-run/allocation-run-detail/allocation-power-per-technology/allocation-power-per-technology.component.scss","./src/app/component/nersa-report/nersa-consumer-report/nersa-consumer-report.component.scss","./src/app/component/distributor/distributor-power-trading-limits/distributor-power-trading-limits.component.html","./src/app/component/administration/user/create/create-user.component.scss?330f","./src/app/component/nersa-report/nersa-generator-report/nersa-generator-report.component.scss","./src/app/component/administration/evaluation/generator-evaluation/generator-evaluation.component.html","./src/app/component/consumer-company-premises/edit/edit-consumer-company-premises.component.scss?918a","./src/app/widget/stats-card/stats-card.component.scss","./src/app/errors/403/403.scss?c51e","./src/app/component/infomation/frequently-asked-questions/frequently-asked-questions.component.html","./src/app/component/distributor/distributor-dashboard/power-import-limit/power-import-limit.component.scss?5a32","./src/app/component/demo-settings/demo-settings.component.scss?3d52","./src/app/component/report/forecast-reports/consumer-and-revenue-forecast-report/consumer-and-revenue-forecast-report.component.scss","./src/app/component/application/consumer-application/consumer-application.component.scss?13cb","./src/app/component/distributor/distributor-weps-less-losses/weps-less-lesses-period-daily-rate/weps-less-lesses-period-daily-rate.component.scss?828e","./src/app/component/distributor/prepaid-vendor/prepaid-vendor-details/prepaid-vendor-details.component.scss?ac15","./src/app/component/distributor/bulk-meter-list/bulk-meter-details/bulk-meter-details.component.scss?c0ff","./src/app/component/forecast/runs/forecast-run.component.scss?55b8","./src/app/component/administration/integrator-providers/providers-detail/providers-detail.component.scss?e1da","./src/app/component/consumer-company-premises/consumer-company-premises-tariff-list/consumer-company-premises-tariff-list.component.html","./src/app/component/administration/integrator-providers/providers-list/providers-list.component.html","./src/app/component/consumer-company/list/consumer-companies-list.component.scss","./src/app/component/dashboard/warnings-and-notifications/generator-notifications-card/generator-notifications-card.component.scss?74d0","./src/app/component/consumer-company/archived/archived-consumer-companies-list.component.html","./src/app/component/administration/prospects/prospect-details/prospect-details.component.scss?6792","./src/app/component/allocation/allocation-run/allocation-send-warnings/allocation-send-warnings.component.scss","./src/app/component/application/generator-application/generator-project-facility/generator-project-facility-edit/generator-application-project-facility-edit.component.scss?a030","./src/app/component/distributor/meter-installation-charges/meter-installation-charges.component.scss?5ec9","./src/app/component/dashboard/dashboard.component.html","./src/app/component/navigation-bar/navigation-bar-item/navigation-bar-item.component.scss?1728","./src/app/component/distributor/distributor-weps-less-losses/weps-less-loses/weps-less-loses.component.html","./src/app/component/dashboard/generation-per-technology-to-date/generation-per-technology-to-date.component.scss?87e1","./src/app/component/administration/notifications/generator-ppa-renewal-notifications/generator-ppa-renewal-notifications.component.html","./src/app/component/generator-project/generator-project-ppa-maintenance-commercial-agreement-change/generator-project-ppa-maintenance-commercial-agreement-change.component.scss","./src/app/component/address/address-form/address-form.component.html","./src/app/app.component.scss?c494","./src/app/component/report/forecast-reports/consumer-and-revenue-forecast-report/consumer-and-revenue-forecast-report.component.html","./src/app/component/allocation/allocation-run/allocation-summary-generator/allocation-summary-generator.component.scss?aeac","./src/app/component/forecast/allocations/allocation-forecast-run.component.html","./src/app/component/invoices/invoice-batch-details/invoice-batch-details.component.scss?f11a","./src/app/component/distributor/power-traded-per-technology/power-traded-per-technology.component.scss","./src/app/widget/summary-card/summary-card.component.scss","./src/app/component/application/generator-application/company-details/company-details.component.scss","./src/app/component/generator-project/generator-project-details/generator-project-details.component.html","./$_lazy_route_resource lazy namespace object","./src/app/component/report/forecast-reports/consumer-and-revenue-forecast-report/revenue-forecast-warnings/revenue-forecast-warnings.component.html"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","installedChunks","push","Object","prototype","hasOwnProperty","call","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","splice","__webpack_require__","s","installedModules","2","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","default","object","property","p","jsonpArray","window","webpackJsonp","oldJsonpFunction","slice","toString","+Xjj","e","+YTV","+Z6O","+oeu","+qN1","/4i0","/Nel","/XwF","/mgG","01Z5","024X","08e9","0Owl","0W1B","0mut","0rRI","0vGz","0y8R","1+Zg","19XT","1LoQ","1YZy","1jc0","1pHz","29My","2Nzf","2ODS","2TJK","2VP5","2ZGn","2cW5","2pNj","2r+k","2rXs","2uBn","3CDd","3TKc","42ws","471F","4CfF","4J7T","4Q9U","4VQw","4gtC","50lo","5IVy","5Xqn","5jHB","5xR7","65fw","6O+s","6eHA","6h0+","7+ay","7Oqw","7mYu","88Il","8rmV","9GZ7","9MpC","9ROG","9czu","9heR","9riX","A1Cf","ABQW","AiSg","Aryy","BIY9","BLUK","BmTp","Bnmz","CMdi","DD35","DLum","Dbhe","DcN1","DpGU","EQsf","Ec/n","EkMK","Evry","FbKm","FeJ+","FvIP","FwhH","GwD7","GyYH","GylG","H4ta","HEE/","HGDo","Hxs3","IEjH","IEzk","IOao","IW3E","IYjY","IqnT","JCeA","JGxw","JaAE","Jc33","Jryo","KWiw","KaCS","KfXA","Klo0","KlqS","Kx+A","Kxli","L27K","Le1A","Lk3d","LnlU","MMyN","MS60","MT32","MhxQ","MjRE","N/iQ","NPhv","NiSk","Nq2u","OCip","OGIr","OGtR","OZHy","Of26","OvpB","OxBi","Oyi/","P+LF","P+bz","PPVY","PWyf","PpF4","QF+W","QHdl","QQqb","QdaB","QgiV","QrVF","Qu/e","RMkv","RxSh","RzTO","S5Ct","STyI","SXqg","SYFd","Sfll","SgL8","SsQw","SxIS","TBLh","TDIX","TR35","TV2o","TXD+","TY3A","Tt3n","U2q+","U6SC","U9av","ULve","UY3O","UYCq","Ulu0","Up4T","UvAK","Ux/U","V8YK","VQo+","VcEj","VgQd","Vonu","VqU5","W0MO","W63c","WIvM","Wa6s","WeLU","Wq8r","Wycz","XFmi","XNdn","XO7i","XRRH","XUIW","Y8dV","YKwp","YN92","YU61","Yuhb","YyvA","Z1vr","Z93L","ZDha","ZTx1","ZUZ5","Zn7U","ZsMY","a/nu","a1/S","aGLK","aVEm","abRD","b2e1","b9vA","bAan","bDr3","bO4C","bc9S","bd09","bfKF","bi/y","byl2","c+kR","c/1M","cGD2","cLpn","cWQs","chti","cjAI","coUp","crc2","cuav","cyaJ","dBCj","dENn","dFOB","dHng","dUWq","dciI","dn8l","dsoW","e+bd","e2S/","e2lH","e9Yb","eSfg","expF","ezu+","f2vr","f7RS","fFOC","fbH9","fkpQ","g/Fr","g4jw","g6SK","g7FE","gK2w","gLP7","gR4/","gTlm","hj8O","huOx","i0Dr","iTwO","DownloadBtnTexts","dashboard_service_DashboardService","DashboardService","http","this","getGenerationToDate","getGenerationPerTechnologyToDate","getPowerProfilesToDate","getPremisesEvaluationNotifications","getFacilityEvaluationNotifications","getGeneratorPpaWarningNotifications","getConsumerCompanyPpaWarningNotifications","GetFilteredPowerProfiles","post","tslib_es6","core","Injectable","fesm5_http","b","u","g","h","f","v","authentication_service_AuthenticationService","AuthenticationService","router","loggedInSubject","Subject","loggedInObservable","asObservable","jwtHelperService","angular_jwt","a","getToken","obj","JSON","parse","localStorage","getItem","util","isNullOrUndefined","token","getCurrentUserFullName","decodedToken","decodeToken","given_name","family_name","getCurrentUserUserName","unique_name","getRefreshToken","refreshToken","isAuthenticated","accessTokenValid","isTokenExpired","refreshTokenValid","isMaintenanceModeActivated","isLoggedIn","isRole","allowedRoles","roles","currentRolesList","split","allowedRolesList_1","filter","currentRole","indexOf","isOnlySingleRole","allowedRole","login","username","password","_this","pipe","map","response","next","responseString","stringify","setItem","fakePass","subscribe","refreshResponse","userName","error","of","delay","revokeTokens","ResetPassword","emailAddress","logout","shouldNavigateToLogoutComponent","removeItem","navigate","getLoggedInObservable","fesm5_router","common_service_CommonService","CommonService","httpClient","authService","location","defaultMultiSelectSettings","checkedStyle","buttonClasses","dynamicTitleMaxItems","closeOnSelect","enableSearch","twoDecimalMasking","align","allowNegative","precision","prefix","thousands","decimal","threeDecimalMasking","fiveDecimalMasking","validateAllFormFields","formGroup","keys","controls","forEach","field","control","fesm5_forms","markAsTouched","onlySelf","getEntityLookups","entityLookupInputList","getAttributes","attributeInputList","enableControl","validators","updateValidity","enable","setValidators","updateValueAndValidity","disableControl","disable","clearValidators","back","companyRegistrationNumberValidator","RegExp","test","companyRegistrationNumberInvalid","handleErrorMessage","errorMessage","handleDocumentErrorMessage","documentName","clearOutTokens","isSalesRepUserLoggedIn","isConsumerApplicationUserLoggedIn","isGeneratorApplicationUserLoggedIn","getCurrentUserUsername","common","Location","facilities_evaluation_notifications_card_component_FacilitiesEvaluationNotificationsCardComponent","FacilitiesEvaluationNotificationsCardComponent","dashboardService","commonService","overdue","total","loading","ngOnInit","initialize","facilitiesEvaluationNotifications","totalGeneratorFacilityEvaluationItemsOverdue","totalPendingGeneratorFacilityEvaluationItems","Component","selector","template","styles","premises_evaluation_notifications_card_component_PremisesEvaluationNotificationsCardComponent","PremisesEvaluationNotificationsCardComponent","premisesEvaluationNotifications","totalConsumerPremisesEvaluationItemsOverdue","totalConsumerPremisesEvaluationItemsPending","distributor_bulkmeter_service_DistributorBulkMeterService","DistributorBulkMeterService","getDistributorBulkMeters","distributorId","getDistributorBulkMeter","distributorBulkMeterId","addDistributorBulkMeter","distributorBulkMeter","updateDistributorBulkMeter","addDistributorBulkMeterConsumptionPeriod","distributorBulkMeterConsumption","updateDistributorBulkMeterConsumptionPeriod","period_service_PeriodService","PeriodService","getAllPeriods","prospect_ppa_service_ProspectPpaService","ProspectPpaService","createOrUpdateProspectPpa","prospectPpaDetail","getProspectPpaDetails","consumerCompanyPremisesId","getPpaPreviewDocument","responseType","uploadProspectPpaDocument","fileName","saveSchedule","schedule","uploadPremisesPpaScheduleDocument","getPpaSchedulePreviewDocument","setPpaPremisesToPending","setOtherPendingPremisesToSchedule","getProspectPpaDates","consumerCompanyId","AddSignedPpaDocument","signedPpaDocument","AveragePremiseConsumption","consumption","peak","offPeak","standard","saved","prospect_service_ProspectService","ProspectService","initProspectEntityLookups","entityLookups","prospectEntityLookups","getEntityLookupList","lookup","entityLookupResultList","getProspect","consumerCompany","prospect","details","authorisedContact","companyPremises","qualificationParameters","companyContacts","prospectTotalAverageConsumption","initConsumerDetails","initAuthorizedContact","company","additionalContacts","consumerCompanyPremises","tariff","updateTariffTypes","calculateAverageConsumption","companyName","registrationNumber","telephoneNumber","companyType","companyStanding","averageMonthlyConsumption","dateOfFirstCapture","find","entityLookupId","companyTypeLookupId","consumerCompanyStandingLookupId","createdDateTime","contacts","cont","contact","attributes","attribute","attributeName","isTimeOfUse","tariffType","toLowerCase","premise","averagePeak_1","averageOffPeak_1","averageStandard_1","premisesConsumption","cons","premisesAverageConsumption","average_1","calculatePremiseAverageConsumption","companyAverage","premises","Address","addressLine1","addressLine2","addressLine3","provinceLookupId","city","postalCode","isRural","addressId","premisesId","address_form_component_AddressFormComponent","AddressFormComponent","onSameAsHoldingCompany","addressForm","required","sameAsHoldingCompany","provinces","province","address","setValue","setValues","disableControls","enableControls","Input","Function","app_component_AppComponent","encapsulation","ViewEncapsulation","None","changeDetection","ChangeDetectionStrategy","Default","menuOpen","k","R","O","Page","size","totalElements","totalPages","offset","T","document_maintenance_service_DocumentMaintenanceService","DocumentMaintenanceService","getDocuments","getDocumentTemplateById","documentTemplateId","getDocumentsPage","searchString","page","sortProp","direction","updateDocument","document","L","document_maintenance_component_DocumentMaintenanceComponent","DocumentMaintenanceComponent","modalService","toastr","documentMaintenanceService","isReadOnlyMode","loadingDocument","savingDocument","uploadOther","maxFileSize","searchForm","search","documentForm","templateName","description","path","existingDocument","valueChanges","debounceTime","changePage","documentTemplateUpload","event","modalRef","hide","changeDocumentsPage","pageInfo","responsePage","Math","ceil","totalItems","pageItems","items","sortColumn","sorts","dir","prop","onSelect","openDocumentModal","selected","onCancel","show","documentModal","loadDocument","documentUpload","output","initDocument","documentResponse","ViewChild","TemplateRef","ngx_bootstrap","ngx_toastr","distributor_service_DistributorService","DistributorService","getAllDistributors","getAllocationDistributors","getAllEligibleDistributors","getDistributor","getEskom","getDistributorTariffs","distributorInputList","getDistributorTariffsByDistributorId","getEskomTariffs","getPage","filterProp","agreementSigned","createDistributor","distributor","updateDistributor","patch","createDistributorNomination","distributorGenerator","updateDistributorNomination","deleteDistributorNomination","distributorGeneratorId","getDistributorGenerator","getDistributorGeneratorsPage","generatorProjectFacilityId","getDistributorNominations","addDistributorIncrease","distributorIncrease","getDistributorIncreaseHistory","getDistributorPrepaidVendors","addPowerTradingLimits","powerTradingLimits","addPowerTradedPerTechnology","powerTradedPerTechnology","getPowerTradingLimits","getPowerTradingLimitsPage","getPowerTradedPerTechnologyPage","getDistributorWheelingFees","addDistributorWheelingFee","wheelingFee","getDistributorMeterIntallationCharges","addDistributorMeterInstallationCharge","installationCharge","getTradingLimitsOverall","getTradingLimitsPerTariff","getPowerImportLimit","getAveragePurchaseAndSalesRate","getDistributorTariffsFromConsumer","consumerComapanyId","z","component_triggers_service_ComponentTriggersService","triggerValidationMessages","Rx","triggerDocumentsRefresh","triggerNotesRefresh","triggerPrepaidRevenueComponent","triggerGeneratorProjectFacilityTariffRatesComponent","triggerTariffComponent","triggerTariffListComponent","triggerDistributorBulkMeterComponent","triggerDistributorBulkMeterDetailsComponent","triggerDistributorPowerTechnologyAndLimitsComponent","triggerCommercialAgreementComponent","triggerPpaMaintenanceComponent","triggerEnableGeneratorPpaAndAddendums","triggerEnableConsumerPpaAndAddendums","triggerPrepaidVendorComponent","triggerPrepaidVendorDetailsComponent","triggerConsumerCompanyRecsComponent","triggerPremisesDetailsComponent","triggerPremisesListComponent","bulk_meter_details_component_BulkMeterDetailsComponent","BulkMeterDetailsComponent","distributorService","distributorBulkMeterService","route","componentTriggerService","showBulkMeterDetails","initBulkMeterForm","params","param","triggerDistributorBulkMeterDetailsComponentSubscription","ngOnDestroy","unsubscribe","tariffs","selectedBulkMeter","distributorBulkMeterConsumptionPeriods","onBack","onSubmitUpdatePrepaidVendor","newBulkMeterForm","valid","success","bulkMeter","bulkMeterConsumption","meterName","meterNumber","tariffId","isMainMeter","Boolean","Number","generator_company_service_GeneratorCompanyService","GeneratorCompanyService","getAllGeneratorHoldingCompanies","getArchivedGeneratorHoldingCompanies","getGeneratorCompany","companyId","getGeneratorProjectsByHoldingCompany","holdingCompanyId","getGeneratorProject","generatorProjectId","getGeneratorProjectFacilities","updateGeneratorCompany","archiveGeneratorCompany","unarchiveGeneratorCompany","updateGeneratorProjectFacility","facility","getGeneratorFacilityIncreaseNotifications","getGeneratorFacilityPPARenewalNotifications","getGeneratorFacilityIncreaseNotificationDetailsById","facilityId","updateGeneratorProject","generatorProject","getTradingGeneratorProjectFacilitiesByDistributorId","cpi_service_CpiService","CpiService","getConsumerPriceIndexHistory","createConsumerPriceIndex","consumerPriceIndex","generator_increase_notification_details_component_GeneratorIncreaseNotificationDetailsComponent","GeneratorIncreaseNotificationDetailsComponent","generatorCompanyService","cpiService","rateIncrease","netRateIncrease","calculated","tariffRatesForm","tariffRates","tariffRatesFormEdit","getFacilityDetails","calculate","factorIncrease","isNonTou","initFacility","loadLatestIncrease","isEmbedded","type","includes","escalationType","showCpi","getIncreaseFactor","getLatestCpi","getLatestDistributorIncrease","cpiHistory","latestCpi","pop","distributorIncreseHistory","latestDistributorIncrease","str","substr","charAt","generator_notifications_component_GeneratorNotificationsComponent","GeneratorNotificationsComponent","generatorService","generatorNotifications","loadNotifications","viewDetails","navigateByUrl","facilityNotifications","Tariff","tariffName","tariffCode","connectionVoltageSizeLookupId","peakDiscount","offPeakDiscount","standardDiscount","administrationCharge","tradingLimit","tradingInTariff","tariffTypeLookupId","wepsLessLosses","publicHolidaysTimePeriods","Company","parentCompanyId","vatNumber","parentCompany","addresses","Contact","firstName","lastName","identityNumber","position","cellNumber","landLineNumber","email","contactId","attributeIds","Attribute","attributeDisplayName","attributeId","consumer_company_service_ConsumerCompanyService","ConsumerCompanyService","getAllConsumerCompaniesPaged","salesrepLookupId","getArchivedConsumerCompaniesPaged","getConsumersForInvoicing","invoiceBatchId","getConsumerCompany","getConsumerCompanyAddress","getProspectDetails","createConsumerCompany","additionalContact","contactTypes","townName","distributorIdentifier","integratorProviderId","billingCycleDateLookupId","dateDUoSASigned","billingSystem","useDistributionAgreement","eligibleForGeneratorApplication","duoSaDocument","wheelingFees","meterInstallationCharges","prepaidVendors","distributorConsumption","distributorBulkMeters","wepsLessLossesPeriodDailyRates","poNumber","premisesName","sapNumber","referenceNumber","businessActivityLookupId","premisesProgressStatus","distributorAccountCreditProblem","accountNumber","evaluationStatusLookupId","evaluationInformation","evaluationDeclineReasonLookupId","premisesOfferDetail","identifier","minimumContractedCapacity","maximumCapacity","consumerStatusLookupId","monthlyKwh","excludeFromRun","excludeFromForecastRun","forecastConsumptionKwh","baseConsumerCompanyPremisesId","premisesName2","premisesName3","latestConsumerTariff","consumerPremisesStatusLookupId","distributorTariffsForm","latestAllocationRunInvolvedInDate","latestAllocationRunInvolvedInConsumption","reasonForExcludingFromRun","smartMeterInstalled","consumerCompanyPremisesActivations","businessActivity","salesRepId","salesRep","premisesQualificationParametersId","creditPermissionRequested","creditPermissionReceived","creditRatingLookupId","creditScore","billsRequested","billsReceived","creditPermissionDocument","billsDocument","consumerCompanyModel","consumerProspectProgressStatusLookupId","isRecsRegistered","taxYearBeginDate","createConsumerApplicationConsumerCompany","updateConsumerCompany","archiveConsumerCompany","unarchiveConsumerCompany","archiveConsumerCompanyPremise","consumerCompanyPremiseId","unarchiveConsumerCompanyPremise","GetSalesRepsDropDown","addConsumerCompanyPremisesConsumption","consumerPremisesConsumption","addConsumerCompanyPremisesAddress","advancePremisesProgressStatus","updatePremisesAccounts","accountsDocument","electricityAccountsDocument","hasRemoteMeter","addCreditRatings","updatePremisesEvaluation","premisesEvaluation","getOfferDetails","addOfferDetails","offerDetails","skipOffer","archiveOffer","getOfferPreviewDocument","uploadProspectOfferDocument","getAllProspects","getProspectsStats","getEvaluationProspectPremises","statusLookupId","getArchivedEvaluationProspectPremises","getConsumerPremisesDetails","getDistributorFilterItems","getStatusFilterItems","getConsumerCompanyPPARenewalNotifications","updateForecastParametersForPremises","estimatedConsumption","ConsumerCompanyPremisesId","ExcludeFromForecastRun","EstimatedConsumption","BaseConsumerCompanyPremisesId","Q","prospect_ppa_component_ProspectPpaComponent","ProspectPpaComponent","prospectPpaService","consumerCompanyService","prospectService","editView","showDownloadPreview","downloadingPreview","creatingAndSaving","existingPpa","signedPpaUploaded","hasGeneratedPpaDocument","currentlyLoggedInSalesRep","blank","ppaStatusForm","ppaSent","ppaSigned","ppaSignedDate","recsRecipient","isRecs","longstopDate","Date","toUTCString","initRequiredDetails","prepopulateForms","longstopdate","setMonth","getMonth","prospectPpaDetailId","isPty","isMunicipality","hasMinimumSupply","minimumSupplyValue","expiryDate","recsClause","carbonCreditsDefinition","kyotoProtocolDefinition","minimumSupplyClause","municipalityCondition","initMunicipalityCondition","updateMinimumRequirements","initPty","setRecs","updateRecsConditions","previewPpa","blob","FileSaver","saveAs","savePpa","setOtherPpaPremisesToPending","info","onSubmitSavePpaDetails","updatePpaDetails","active","ptyCondition","prospects_component_ProspectsComponent","ProspectsComponent","prospectTotals","prospectItems","prospectStats","sumOfAll","prospectItem","page_not_found_component_PageNotFoundComponent","GeneratorApplication","generatorApplicationId","applicationRefNumber","generatorApplicationStatus","generatorCompany","generatorCompanyId","generatorProjects","GeneratorProject","generatorProjectName","generationCapacityLookupId","isCoGeneration","technologyLookupId","facilities","isMicroScale","GeneratorProjectFacility","facilityName","latitudeCoordinate","longitudeCoordinate","installedCapacity","contractedCapacity","projectTypeLookupId","isEmbeddedGeneration","isExistingFacility","generatorFacilityStatusLookupId","eskomIdentifier","baseGeneratorProjectFacilityId","sapClientNumber","isArchived","newFacility","existingFacility","isRoofTopBased","structuralEngineerCertificate","isOwnedByIPP","isOfficialLeaseInPlace","leaseStatusComment","leaseTitleHolderName","isRezoningRequired","rezoningRequiredTypeId","rezoningApplied","rezoningApplicationDate","rezoningResultObtained","rezoningApplicationResult","rezoningApproved","numberOfOperationalMonths","durationOfPPA","maintenanceDowntimeInWeeks","plannedLifeExpectancy","minimumRequiredPriceWinter","minimumRequiredPriceKwSummer","plannedExpansion","expectedExtraCapacity","plannedCommissioningDate","projectProgressStatus","isWebMetersInstalled","meterDateInstallation","meterMakeAndModel","isCheckMetersInstalled","exportGenerationCapacity","hasExistingNERSALicence","noNERSAGenerationLicenceProvidedReason","existingOffTaker","expirationDateOfExistingPPA","connectionVoltageSize","projectType","historicGenerationData","futureGenerationData","generatorFacilityStatus","facilityApplicationStatus","evaluationValue","facilityDeclinedReasonLookupId","facilityMoreInformationMessage","generatorActivations","nersaGenerationLicence","isIRPRequestSubmitted","deviationApprovalObtained","deviationApproval","noDeviationApprovalObtainedReason","ppaDurationRequested","GeneratorCompany","generatorCompanyTypeLookupId","bbbeeCertificate","generatorExperienceProfile","taxClearanceCertificate","directorContact","generator_application_service_GeneratorApplicationService","GeneratorApplicationService","getGeneratorApplication","generatorApplicationFormName","getGeneratorApplicationPhase2","registerNewGeneratorApplicant","generatorApplicant","verifyNewApplicant","verificationToken","registerNewHoldingCompany","holdingCompany","isDirectorContactAttributeId","_i","_a","generatorApplication","saveProgressHoldingCompany","captureSPVProjects","SPVProjects","spvProjectsArray","spvProjects","spvProject","spvContactPersonDetails","spvCompanyDetails","facilitiesArray","_b","_c","facilityAddress","facilityDetails","connectionVoltage","spvDetails","generationCapacity","projectTechnologyType","spvDistributionArea","generatorApplicationModel","saveProgressSPV","submitNda","savePhase2Application","phase2ApplicationForm","saveProgressApplicationPhase2","navigateByStatus","status","setApplicationStatus","getGeneratorProjects","getGeneratorProjectWithFacilities","createOrUpdateGeneratorProject","generatorProjectInput","getGeneratorProjectFacilityPhase1","projectFacilityId","getGeneratorApplicationOnly","updateGeneratorProjectFacilityPhase1","generatorProjectFacilityPhase1Form","generatorProjectFacilityDto","getGeneratorProjectFacilityPhase2","saveGeneratorProjectFacilityPhase2","generatorProjectFacilityPhase2Form","generatorProjectFacilityDtoPhase2","isWebEnabledMetersInstalled","webMeterInstallationDate","webMeterMakeAndModel","meteringCertificate","generationHistory","connectionUseOfSystemsDocument","expiryDateOfExistingPPA","plannedGeneration","electricityAndMeterDeptsNotified","plannedStartDate","constructionStartDate","eiaCompletedLookupId","eiaDocumentProvided","eiaDocument","expectedDateOfEIA","rodIssued","rodDocument","noRODDocumentProvidedReason","acsaPermitRequiredLookupId","acsaDocumentProvided","acsaDocument","noACSADocumentProvidedReason","geotechnicalStudyRequiredLookupId","geotechnicalStudyApprovedLookupId","geotechnicalDocumentProvided","geotechnicalDocument","noGeotechnicalDocumentProvidedReason","gridConnectionApplicationMade","dateOfConnectionApplication","plannedDateOfConnectionApplication","expectedDateOfGridConnection","preferredDebtProvider","targetDebtEquityRatio","equityFundingInPlace","financialPlan","projectSubmittedIntoReippp","roundOfReippp","nearestSubstationName","loadCapacityOfSubstation","budgetConnectionCostReceived","budgetConnectionUpgradeCost","connectionAndUseOfSystemsAgreementInPlace","home_component_HomeComponent","HomeComponent","genAppService","showDashboard","genApp","allocation_component_AllocationComponent","le","AllocationWarningAccordion","allocationWarningType","warnings","AllocationSendWarning","allocationSendWarningType","AllocationErrorAccordion","allocationErrorType","errors","allocation_run_service_AllocationRunService","AllocationRunService","runAllocation","period","importData","prepaid","algoVersionId","note","weekdayPrepaidPercentage","weekendPrepaidPercentage","isdemo","getIncompleteRuns","getAllocationRunsStatuses","AllocationRunsIds","getAllocationHistory","activeTab","getGeneratorGenerationSummary","allocationRunId","sendAllocationDataToPTSi","getAllocationVersion","getAllocationWarnings","allocationWarnings","getAllocationSendWarnings","allocationSendWarnings","getAllocationErrors","allocationErrors","getAllocationSummary","getExcelExport","getExcelExportForecast","getExcelSnapshotExport","getExcelSummaryExport","getRecs","getRecsPage","runRecsAllocation","GetRecsStatus","getAllocationRunSummary","getAllocationRunPowerSummary","getAllocationRunPowerPerTechnologySummary","getAllocationRunPowerPerTariffSummary","getAllocationRunRevenuePerTariffSummary","getAllocationRunTariffSaleRatesSummary","getAllocationRunRevenuePerEnergyBracketSummary","getAllocationRunWarningSummary","getAllocationRunErrorSummary","getAllocationRun","getConsumerInvoice","previewInd","getConsumerProformaInvoice","getConsumerStatement","getAllocationPrepaidRevenue","updateAllocationPrepaidRevenue","allocationPrepaidRevenueList","sendConsumerInvoiceEmails","resendConsumerInvoiceEmails","getConsumerInvoiceEmailLogs","deleteAllocationRun","delete","markAllocationRunForDeletion","getPurchaseAndSalesRate","updateAllocationRunConsumer","allocationConsumerId","sendInvoice","paid","amountPaid","AllocationConsumerId","SetAllocationRunConsumerStatementsToPaidIfNotPaid","me","date_converter_service_DateConverterService","DateConverterService","toApiDateTime","date","day","getDate","month","getFullYear","getHours","getMinutes","getSeconds","authorisation_service_AuthorisationService","AuthorisationService","isGeneratorsAndConsumersReadOnly","isInvoiceBatchListsReadOnly","isAllocationsReadOnly","isDistributorsReadOnly","shouldHideRevenueReport","isConsumerCompanyAndPremisesSensitiveFieldsEditable","isIsRecsRegisteredEditable","isForecastParametersEditable","isAllocationsFinalizeReadOnly","fe","allocation_run_state_service_AllocationRunState","AllocationRunState","today","importPrepaidEnabled","pageoffset","allocationForm","distributorName","year","min","max","monthLookupId","setPrepaidValue","useOriginalAlgo","setState","newState","importPrepaidStatus","patchValue","getState","getImportPrepEnabled","getsearchString","getpageoffset","getactiveTab","providedIn","allocation_run_component_AllocationRunComponent","AllocationRunComponent","allocationRunService","sanitizer","dateConverterService","authorisationService","toaster","allocationState","distributors","runningAllocation","sendingAllocation","historyError","loadingRunCriteria","activeTabSubject","BehaviorSubject","intervalsource","interval","columnHeaders","historyPage","initSortMap","startIncompleteRunsSearch","fetchDistributors","queryParamsSubscription","queryParams","months","versions","setPrepaid","democlick","QueryincompleteRunsSub","goToParameters","getRawValue","enabled","selectedDistributor","$event","item","values","incompleteRuns","val","statuses","runStatus","orderPriority","allocationHistory","sortMap","viewNote","stopPropagation","allocationNote","onDeleteRun","confirm","setActiveTab","tab","preventDefault","Map","set","ElementRef","ngx_bootstrap_modal","platform_browser","DomSanitizer","login_component_LoginComponent","LoginComponent","authenticationService","authenticating","usernameControl","passwordControl","loginForm","redirectUrl","redirect","forgotPassword","successful","authentication_guard_AuthenticationGuard","AuthenticationGuard","canActivate","state","logout_component_LogoutComponent","LogoutComponent","consumer_companies_list_component_ConsumerCompaniesListComponent","ConsumerCompaniesListComponent","consumerCompanyPage","searchControl","searchGroup","salesReps","onSalesRepChange","consumerCompanies","archiveConsumer","console","log","archived_consumer_companies_list_component_ArchivedConsumerCompaniesListComponent","ArchivedConsumerCompaniesListComponent","unarchiveConsumer","allocation_run_warnings_component_AllocationRunWarningsComponent","AllocationRunWarningsComponent","service","startDate","runDate","routeParamsSubscription","allocation_summary_consumer_component_AllocationSummaryConsumerComponent","AllocationSummaryConsumerComponent","editInvoice","downloadingInvoice","downloadingProformaInvoice","downloadingStatement","allocationRunConsumerControl","poNumberControl","sendInvoiceControl","amountPaidControl","paidControl","editConsumerGroup","allocationRunConsumerId","consumerCompanyPremisesSummaryPage","summaryList","onDownloadInvoice","row","consumer","replace","body","onDownloadProformaInvoice","onDownloadStatement","onPopupSubmit","loadingText","successMessage","curConsumer","editSummary","initConsumerForm","setAllocationRunConsumerStatementsToPaidIfNotPaid","parameters_service_ParametersService","ParametersService","getConsumerCompanyPremisesForDistributor","getGeneratorsForDistributor","saveParameters","generators","Me","De","parameters_component_ParametersComponent","ParametersComponent","parametersService","savingParameters","validParameters","consumerCompanyPremisesColumnHeaders","generatorColumnHeaders","consumerCompanyPremisesArray","generatorArray","parameterErrors","errorMap","errorMessages","getConsumerCompanyPremises","getGenerators","consumerCompanyPremisesList","tempConsumerCompanyPremises","lodash","unionWith","isEqual","tempGenerators","updateConsumerCompanyPremisesParameter","consumerCompanyPremisesElement","element","consumerCompanyPremisesIndex","findIndex","excluded","target","checked","exclude","exclusionReason","reasonForExclusion","Array","from","x","updateGeneratorParameter","generatorProjectFacilityElement","generatorIndex","generator","updateGeneratorFilter","generatorTable","updateConsumerCompanyFilter","consumerTable","release","DatatableComponent","allocation_summary_generator_component_AllocationSummaryGeneratorComponent","AllocationSummaryGeneratorComponent","displayGeneratorSummaryError","generatorSummaryPage","generatorSummary","information_service_InformationService","InformationService","getFaq","frequently_asked_questions_component_FrequentlyAskedQuestionsComponent","FrequentlyAskedQuestionsComponent","informationService","questions","useful_links_component_UsefulLinksComponent","links","link","authorization_guard_AuthorizationGuard","AuthorizationGuard","forbidden_component_ForbiddenComponent","administration_service_AdministrationService","AdministrationService","getUsers","getUser","userId","getRoles","createUser","user","updateUser","createPassword","userVerification","resetPassword","getSalesRepsPage","getContacts","createSalesRep","salesTargets","getSalesRep","updateSalesRep","user_list_component_UserListComponent","UserListComponent","adminService","displayAlert","users","create_user_component_CreateUserComponent","CreateUserComponent","administrationService","createUserForm","maxLength","minLength","inactiveInd","header","buttonText","selectedRoles","role","onRoleChange","index","onSubmit","saving","userRoles","user_email_verification_component_UserEmailVerificationComponent","UserEmailVerificationComponent","passwordForm","confirmPassword","verification","routerState","root","Id","edit_user_component_EditUserComponent","_super","EditUserComponent","prePopulate","sales_rep_list_component_SalesRepListComponent","SalesRepListComponent","tariff_service_TariffService","TariffService","getTariff","getTariffsByProvinces","provinceIds","createTariff","updateTariff","getTariffRate","tariffRateId","createTariffRate","tariffRate","updateTariffRate","getTariffRatesPage","validateDuplicateTariffCodes","isValid","validationMessages","duplicateTariffCodes","tariffIndex","duplicateTariff","innerTariff","innerTariffIndex","trim","duplicateTariffCode_1","dupTariffCode","validationMessage","validateDuplicateTariffRates","duplicateCombinations","tariffRateIndex","duplicateTariffCharge","innerTariffRate","innerTariffRateIndex","periodId","seasonId","energyBracketLookupId","duplicateCombo_1","combo","energyBrackets","energyBracket","seasons","season","periods","validateMissingOrIncorrectTariffRates","tariffTypeId","tariffTypes","tarType","requiredEnergyBrackets","tariffPeriodIds","periodSeasonTariffRates","requiredEnergyBracket","periodTariffRate","periodSeasonTariffRate","TariffRate","tariffValidations","tariffForm","validationResult","getDistributorTariffsPage","getTariffTradingLimits","createOrUpdateTariffTradingLimits","tariffTradingLimits","Be","create_sales_rep_component_CreateSalesRepComponent","CreateSalesRepComponent","tariffService","selectedProvinces","tableLoading","years","quarters","provinceSettings","salesTargetEditMode","createSalesRepForm","national","provincesSelected","contactName","currentYear","salesTargetForm","salesTargetId","disabled","quarterLookupId","ng4_validators_es5","number","quarter","id","selectedOptions","getTariffsForSelectedProvinces","fetchContacts","provincesChanged","selectedContact","cleanProvinces","newSalesTargetClicked","reset","handleFormControlsDisabledEnabled","salesTargetSelected","salesTarget","selectedTariff","selectedQuarter","newTarget_1","newEntryWillBeDuplicate_1","targetToUpdate","indexToUpdate","deleteRow","edit_sales_rep_component_EditSalesRepComponent","EditSalesRepComponent","allocation_send_warnings_component_AllocationSendWarningsComponent","AllocationSendWarningsComponent","resendAllocationResults","consumer_details_component_ConsumerDetailsComponent","ConsumerDetailsComponent","formBuilder","cdRef","contactAttributes","displaySuccess","canChooseTariffCode","contactTypesSettings","showCheckAll","showUncheckAll","digits","consumerCompanyForm","array","initPremises","initContact","companyTypes","consumerCompanyStandings","consumerCompanyStanding","consumerBusinessActivities","consumerBusinessActivity","distributionAreas","attributeResultList","distributorIds","distributorTariffs","distributorTariffResultList","foundCurrentRep","ngAfterViewChecked","detectChanges","group","addContactDetails","removeContactDetails","removeAt","addPremises","removePremises","onTariffCodesProvidedChange","companyPremisesFormGroup","tariffCodeControl","tariffCodesProvided","onDistributorChange","selectedDistributorId","tariffCodesProvidedControl","validateContactTypes","authorisedContactTypeId","electricityBillingsContactTypeId","authorisedContactFound","electricityBillingsContactFound","contactType","contactTypeId","premisesContacts","ChangeDetectorRef","export_service_ExportService","ExportService","getSapConsumersExport","getSapGeneratorsExport","getDebtorsInvoiceExport","getRecsExport","sap_export_component_SapExportComponent","SapExportComponent","sapExportService","onDownloadSapConsumersExport","onDownloadSapGeneratorsExport","distributor_list_component_DistributorListComponent","DistributorListComponent","regex","list","onProvinceChange","onAgreementSignedChange","integrator_provider_service_IntegratorProviderService","IntegratorProviderService","getIntegratorProviders","getIntegratorProviderDetail","getIntegrationProviderGeneratorFeesTemplate","getIntegrationProviderConsumerFeesTemplate","getIntegrationProviderGeneratorFeesDownload","integratorProviderServiceFeeUploadId","getIntegrationProviderConsumerFeesDownload","AddIntegratorProvider","integratorProvider","deleteIntegratorProviderServiceFeeUpload","getIntegratorProviderServiceGeneratorFee","getIntegratorProviderServiceConsumerFee","create_distributor_component_CreateDistributorComponent","CreateDistributorComponent","integratorProviderService","initialLoadGeneralTab","initialLoadWepsLessLosesTab","initialLoadTariffsTab","initialLoadContactTab","initialLoadConsumptionAndLimitsTab","initialLoadPrepaidVendorsTab","initialLoadDistributorIncreaseTab","loadingEdit","distributorTariffsControl","distributorForm","billingCycleDates","billingCycleDate","eskomTariffs","eskomTariff","integrators","toggleFullForm","onTabChange","tabset","tabs","edit_distributor_component_EditDistributorComponent","EditDistributorComponent","isEskomRoute","url","isEskom","setupEskomForm","generator_evaluation_service_GeneratorEvaluationService","GeneratorEvaluationService","getPendingGeneratorProjectFacilities","getArchivedPendingGeneratorProjectFacilities","getGeneratorProjectFacility","updateGeneratorProjectFacilityEvaluation","evaluationInput","archiveGeneratorProjectFacility","unarchiveGeneratorProjectFacility","generator_evaluation_component_GeneratorEvaluationComponent","GeneratorEvaluationComponent","generatorEvaluationService","pageNumber","pageSize","totalFacilities","pageStartIndex","pageEndIndex","loadFacilities","loadFilterDropdowns","distributorFilterItems","statusFilterItems","evaluationListItems","getRouterLink","evaluationListItem","pageChanged","archiveGenerator","onFilterDistributorChange","onFilterStatusChange","archived_generator_evaluation_component_ArchivedGeneratorEvaluationComponent","ArchivedGeneratorEvaluationComponent","unarchiveGenerator","generator_evaluation_details_component_GeneratorEvaluationDetailsComponent","GeneratorEvaluationDetailsComponent","evaluationForm","evaluationValueField","declineReasonField","moreInfoMessageField","initYearlyDataForm","january","february","march","april","may","june","july","august","september","october","november","december","loadHistoricData","historicData","loadPlannedData","plannedData","onEvaluationActionSelect","dropdownSelection","declineReasons","facilityDeclinedReason","isExisting","isMicroFacility","prospect_evaluation_component_ProspectEvaluationComponent","ProspectEvaluationComponent","totalProspects","loadProspects","prospectEvaluationItems","premisesProgress","archiveProspect","archived_prospect_evaluation_component_ArchivedProspectEvaluationComponent","ArchivedProspectEvaluationComponent","unarchiveProspect","prospect_evaluation_details_component_ProspectEvaluationDetailsComponent","ProspectEvaluationDetailsComponent","premisesEvaluationStatus","retrievalFailed","isApproved","premisesQualificationsForm","evaluationStatus","evaluationDeclineReason","initEntityLookups","initForms","approveId","consumerCompanyTypes","distributorAccountCreditProblemList","prospectCreditRatings","prospectCreditRating","premisesDeclineReason","declineId","moreInfoId","onSubmitEvaluationResult","PremisesSavingsProjection","municipalIncrease","municipalPrice","powerXIncrease","powerXPrice","powerXKwh","savings","premisesOfferDetailId","prospect_offer_calculation_service_ProspectOfferCalculationService","ProspectOfferCalculationService","highDemandOffPeakRate","highDemandPeakRate","highDemandStandardRate","highDemandFlatRate","lowDemandOffPeakRate","lowDemandPeakRate","lowDemandStandardRate","lowDemandFlatRate","powerXHighDemandOffPeakRate","powerXHighDemandPeakRate","powerXHighDemandStandardRate","powerXHighDemandFlatRate","powerXLowDemandOffPeakRate","powerXLowDemandPeakRate","powerXLowDemandStandardRate","powerXLowDemandFlatRate","highDemandConsumption","lowDemandConsumption","coveredConsumption","isTariffOnePart","isTariffTwoPart","isTariffThreePart","threePartPeakConstant","threePartOffPeakConstant","threePartStandardConstant","twoPartPeakConstant","twoPartOffPeakConstant","onePartFlatConstant","updateCoveredConsumption","totalConsumption","summerIncluded","summerAllocation","winterAllocation","product","sum","getAvailablePeriods","firstPeriodId","initRates","selectedPeriod","tariffParts","resetTariffParts","initThreePartDemandRates","updateThreePartPowerXDemandRates","initTwoPartDemandRates","updateTwoPartPowerXDemandRates","initOnePartDemandRates","updateOnePartPowerXDemandRates","getSavingsSum","getMunicipalRatedSum","getPowerXRatedSum","getMunicipalPrice","getPowerXPrice","getCoveredConsumption","isTwoPart","getAverageRate","winterAverage","summerAverage","HDR","LDR","getPowerXAverageRate","applyIncrease","increase","getThreePartSum","getTwoPartSum","getOnePartSum","highA","highB","highC","lowA","lowB","lowC","getThreePartPowerXSum","getTwoPartPowerXSum","getOnePartPowerXSum","filterRates","demand","selectedRate","rate","seasonName","kwhRate","prospect_offer_component_ProspectOfferComponent","ProspectOfferComponent","offerCalculationService","inlineError","disableProjectionUpdate","shouldUpdateRatesAfterInit","canGeneratePpa","canSkipOffer","isE60","overrideCoveredConsumption","offerStatusForm","offerSent","offerAccepted","prospectOfferLookupId","documentType","availablePeriods","offer","discount","premisesSavingsProjections","totalSavings","updatePremisesProjections","substring","distributionArea","periodName","updateRatesAfterInit","projections","projection","addSavings","calculateCoveredPower","projectionsUpdated","nextYear","yearSave","calculateTotalSavings","removeProjection","projectionIndex","removed","saveDetails","hasAllocation","hasProjections","seasonSelected","previewOffer","onSubmitSaveDetails","saveOffer","generator_ppa_service_GeneratorPpaService","GeneratorPpaService","getGeneratorFacilityPpa","generatorFacilityPpa","facilityPpa","offerCompletePpa","getGeneratorFacilityPpaPreview","facilityPpaSchedule","un","generator_project_facility_tariff_rates_service_GeneratorProjectFacilityTariffRatesService","GeneratorProjectFacilityTariffRatesService","getGeneratorProjectFacilityTariffRates","isNonTOU","getNewGeneratorProjectFacilityTariffRates","createGeneratorProjectFacilityRates","generatorProjectFacilityTariffRateDtos","getGeneratorTariffRateTariffTypes","generator_ppa_component_GeneratorPpaComponent","GeneratorPpaComponent","generatorPpaService","componentTriggersService","generatorProjectFacilityTariffRatesService","isMicro","isPlanned","isDownloadingPreview","isArchiving","initDocumentFieldsForm","ppa","documentFieldsForm","utils","evaluationField","longStopDate","commercialOperatorsDate","sellerLicenseNumber","minimalAcceptanceInstalledCapacity","adminFeesAfterScheduleDate","adminFeesAfterEffectiveDate","expiryDateAfterEffectiveDate","cpFulfillmentDate","isDocumentSentPpa","signedPpa","isOfferAcceptedPpa","isDocumentGeneratedPpa","allocationCapacity","allocationPeriod","allocationCapacity2","allocationPeriod2","allocationCapacity3","allocationPeriod3","capitalExpenditure","operatingExpenditure","increasedDate","generatorFacilityEvaluationFieldId","documentTemplateName","highDemandRate","lowDemandRate","distributorHighDemandRate","distributorLowDemandRate","generatorEscalationTypeLookupId","escalationTypes","generatorEscalationType","types","nonTouTariffTypeId","ppaPage","facilityPpaDoc","DisableValidations","signedPpaDocumentUpload","listenerId","onGenerateDocumentSubmit","validateCommercialOperatorsDate","onOfferCompleteSubmit","ArchiveGenerator","UnarchiveGenerator","onPreviewDocumentSubmit","onGoToLanding","onTariffTypeChange","setErrors","incorrect","generator_project_facility_activation_service_GeneratorProjectFacilityActivationService","GeneratorProjectFacilityActivationService","updateGeneratorActivation","getGeneratorProjectFacilityActivation","activateGeneratorProjectFacility","getCpLetter","generator_ppa_schedule_service_GeneratorPpaScheduleService","GeneratorPpaScheduleService","getGeneratorFacilityPpaSchedule","generatorFacilityPpaSchedule","offerCompletePpaSchedule","getGeneratorFacilityPpaSchedulePreview","updateGeneratorPpaLongStopDate","generatorFacilityEvaluationField","generator_project_facility_activation_component_GeneratorProjectFacilityActivationComponent","GeneratorProjectFacilityActivationComponent","generatorActivationService","generatorPpaScheduleService","loadingFailed","savingFailed","allItemsChecked","generatorActivationForm","generatorActivationsFormArray","at","navigationURL","extendedLongStopDate","returnValue","message","longStopDateExtensionDocument","onNavigate","onChangeChecklistItem","generatorProjectFacilityActivationId","generatorActivationIndex","generatorActivationFormGroup","onGenerateCpLetter","generatorProjectFacilityResponse","generatorProjectFacility","selections","selection","yesSelection","notApplicableSelection","initGeneratorActivations","projectId","applicationId","setSections","populateGeneratorActivations","setControl","setAllItemsChecked","generatorActivationsFormGroups","generatorActivationChecklistItem","generatorActivationChecklistItemFormGroup","initGeneratorActivationChecklistItem","isPreviousSectionIsComplete","isPreviousSectionComplete","generatorActivationChecklistItemLookupId","generatorActivationChecklistItemLookupValue","generatorActivationChecklistItemLookupDescription","selectionLookupId","checklistItemIsDisabled","checklistItemPreviouslyChecked","updatedBy","updatedDateTime","sections","generatorActivation","self","checklistItemSection","previousSection_1","startsWith","every","String","forgot_password_component_ForgotPasswordComponent","ForgotPasswordComponent","resettingPassword","forgotPasswordForm","reset_password_component_ResetPasswordComponent","ResetPasswordComponent","consumer_company_premises_activation_service_ConsumerCompanyPremisesActivationService","ConsumerCompanyPremisesActivationService","updateConsumerCompanyPremisesActivation","updateToActivationStatus","activateConsumerCompanyPremises","consumer_company_premises_service_ConsumerCompanyPremisesService","ConsumerCompanyPremisesService","getGetConsumerCompanyPremisesPage","updateConsumerCompanyPremises","getConsumerCompanyPremisesTariffs","getConsumerCompanyPremisesTariff","consumerTariffId","addConsumerCompanyPremisesTariff","newTariffForm","updateConsumerTariffs","TariffForm","updatePremisesDistributorTariffs","premisesDistributorTariffsForm","archiveConsumerCompanyPremises","unarchiveConsumerCompanyPremises","addNewPremises","getConsumerCompanyPremisesByDistributorId","consumer_company_premises_activation_component_ConsumerCompanyPremisesActivationComponent","ConsumerCompanyPremisesActivationComponent","consumerCompanyPremisesActivationService","consumerCompanyPremisesService","consumerCompanyPremisesActivationForm","Identifier","consumerCompanyPremisesForecastParametersForm","ExcludeFromForecast","ForecastMonthlyConsumption","formControlValueChanged","formControlName","toUpperCase","forecastParameterValueChanged","infoToastId","toastId","remove","consumerCompanyPremisesActivationsFormArray","prospectPpaDetailResponse","ConsumerCompanyPremisesActivationId","consumerCompanyPremisesActivationIndex","ccPremisesActivationsFormGroups","consumerCompanyResponse","initForecastValuesForm","initConsumerCompanyPremisesActivations","populateConsumerCompanyPremisesActivations","ccPremisesActivationChecklistItem","ccPremisesActivationChecklistItemFormGroup","initCCPremisesActivationChecklistItem","consumerCompanyPremisesActivationChecklistItemLookup","consumerCompanyPremisesActivationId","ConsumerCompanyPremisesActivationChecklistItemLookupId","ConsumerCompanyPremisesActivationChecklistItemLookupValue","ConsumerCompanyPremisesActivationChecklistItemDescription","baseConsumerCompanyPremisesList","ccPremisesActivation","ccPremisesActivationChecklistItemLookupValue","edit_consumer_company_component_EditConsumerCompanyComponent","EditConsumerCompanyComponent","isInApplicationMode","minContactsLoaded","isPpaAddendumEnabled","selectTab","tabId","tabsComponent","routeParams","heading","enableConsumerPpaAndAddendumsEventSubscription","onAuthAndBillingContactLoaded","contactLoaded","consumer_company_premises_list_component_ConsumerCompanyPremisesListComponent","ConsumerCompanyPremisesListComponent","editableApplicationPremisesStatuses","editablePremisesStatuses","consumerCompanyPremisesPage","newPremisesForm","triggerConsumerCompanyPremisesListRefreshSubscription","distributorEligibleForApplication","warning","join","newPremisesModal","premisesTypes","generator_companies_list_component_GeneratorCompaniesListComponent","GeneratorCompaniesListComponent","GeneratorMaintenanceService","holdingCompanyPage","generatorCompanies","selectedCompanyId","that","archived_generator_companies_list_component_ArchivedGeneratorCompaniesListComponent","ArchivedGeneratorCompaniesListComponent","edit_generator_company_component_EditGeneratorCompanyComponent","EditGeneratorCompanyComponent","ppa_schedule_component_PpaScheduleComponent","PpaScheduleComponent","scheduleDates","cpFulfilment","consumerPremisesDetail","prepopulateScheduleDetails","saveDates","cpFulfilmentDate","previewPpaSchedule","savePpaSchedule","management_report_service_ManagementReportService","ManagementReportService","getManagementReport","getConsumerIncomeReport","getGeneratorExpenseReport","getMonthlyStatementReport","getMonthlyRecsReport","allocationid","recs_component_RecsComponent","RecsComponent","managementReportService","recsSummary","processingSapDebtorsInvoice","processingRecsReport","isEmailSendingComplete","isEmailSendingError","isEmailSending","allocationRunInvoiceSentStatus","downloadSapDebtorsInvoiceExport","onRecsConsumerList","SendConsumerInvoiceEmails","ResendConsumerInvoiceEmails","showEmaillogsModal","invoiceEmailLogs","getRecsReport","edit_generator_project_component_EditGeneratorProjectComponent","EditGeneratorProjectComponent","projectName","enableGeneratorPpaAndAddendumsEventSubscription","edit_consumer_company_premises_component_EditConsumerCompanyPremisesComponent","EditConsumerCompanyPremisesComponent","recs_consumer_list_component_RecsConsumerListComponent","RecsConsumerListComponent","generator_ppa_schedule_component_GeneratorPpaScheduleComponent","GeneratorPpaScheduleComponent","ppaSchedulePage","ppaSchedule","isOfferAcceptedPpaSchedule","signedPpaSchedule","isDocumentSentPpaSchedule","signedPpaScheduleDocumentUpload","consumer_application_service_ConsumerApplicationService","ConsumerApplicationService","createNewConsumerApplication","consumerApplicant","getConsumerApplication","linkConsumerCompanyToApplicationUser","new_application_component_NewApplicationComponent","NewApplicationComponent","generatorApplicationService","consumerApplicationService","creatingApplication","verificationEmailSent","applicationForm","emailConfirmation","passwordConfirmation","applicationUserType","emailMatch","passwordMatch","sendApplication","application_user_email_verification_component_ApplicationUserEmailVerificationComponent","ApplicationUserEmailVerificationComponent","contact_service_ContactService","ContactService","getAttribute","deleteContact","addContact","updateContact","getContactsByCompanyId","getContactsByDistributorId","company_details_component_CompanyDetailsComponent","CompanyDetailsComponent","contactService","directorContactForm","holdingCompanyForm","companyGeneratorExperience","navigateTo","certificateDocumentBasePath","generatorApplicationMetadata","MetadataTypeLookupName","MetadataValue","applicationReferenceNumber","initHoldingCompany","autoSaveInterval","setInterval","saveProgress","clearInterval","documentUploadForCompany","showSaveProgressButton","generatorHoldingCompany","generatorHoldingCompanyId","populateContacts","directorContactId","additionalContactsFormArray","contactFormGroup","nda_agreement_template_component_NdaAgreementDownloadComponent","NdaAgreementDownloadComponent","Un","qn","spv_details_component_SpvDetailsComponent","SpvDetailsComponent","eligibleProjectsFound","ndaDownloading","applicationSubmitted","successMessageAlertType","projectsWithFacilityGenerationExceed","projectsLargerThan1MWWithNoFacilities","projectTypes","spvProjectForm","initSpvProject","companyRegistrationNumber","contactNumber","generationCapacities","technologies","technology","connectionVoltageSizes","genCap","microScaleGenCapSingleLookupId","microScaleGenCapMultiLookupId","initSpvProjects","addSpvProject","removeSpvProject","validateProjectsFacilityInstalledCapacity","addFacility","spvProjectIndex","removeFacility","facilityIndex","project","validateInstalledCapacity","validateProjectsLargerThan1MW","eligibleProjects","generatorProjectEligibility","eligible","notEligibleProjects","notEligible","eligibleProjectsString","notEligibleProjectsString","bypassSecurityTrustHtml","spvProjectFormGroup","spvCompanyDetailsFormGroup","spvContactDetailsFormGroup","onChangeGenerationCapacity","projectIndex","facilityDetailsFormGroup","totalInstalledCapacity","spvDetailsFormGroup","validateContractedCapacity","totalContractedCapacity","validateFacilitiesOnProjectsLargerThan1MW","onDownloadNDAAgreementForm","getElementById","html2canvas","scale","then","canvas","pdf","jspdf_min","usableHeight","internal","height","imgWidth","width","scaleRatio","imgHeight","currentHeight","canvasSection","createElement","context","getContext","drawImage","imgData","toDataURL","addPage","addImage","save","catch","onSetApplicationStatus","installedCapacityValidators","contractedCapacityValidators","generatorProjectsFormArray","populateGeneratorProjects","generatorProjectFormGroup","generatorProjectFacilitiesFormArray","populateGeneratorProjectFacilities","generatorProjectFacilityFormGroup","document_service_DocumentService","DocumentService","getDocumentById","documentId","getDocumentByMetadataAll","documentMetadata","getDocumentByMetadataAny","deleteDocument","downloadDocument","downloadApplicationDocument","documentPath","nda_agreement_component_NdaAgreementComponent","NdaAgreementComponent","documentService","submittingForm","formSubmitted","isNdaAgreementUploaded","authorizedPersonal","ndaForm","requiredTrue","ndaAgreement","successfulUploadNDAAgreement","facility_details_component_FacilityDetailsComponent","FacilityDetailsComponent","generatorApplicationForm","selectionChoices","selectionChoicesYesId","initProjects","documentUploadForFacility","getFacilityControl","documentUploadForNewFacility","getNewGenertorControl","documentUploadForExistingFacility","getExistingGeneratorControl","changeRoofTopSelection","roofControl","roofTopCertificateControl","changePropertyOwnerShip","ippOwnedControl","officialLeaseControl","leaseTitleHolderNameControl","leaseStatusCommentControl","changeLeaseControl","changeRezoningControls","rezoningRequiredControl","rezoningAppliedControl","rezoningApplicationDateControl","rezoningResultObtainedControl","rezoningApplicationResultControl","changeRezoningApplicationControls","changeRezoningResultControl","changePlannedExpansionControls","plannedExpansionControl","plannedCommissioningDateControl","expectedExtraCapacityControl","changeWebEnabledControls","isWebEnabledMetersInstalledControl","webMeterInstallationDateControl","meteringCertificateControl","changeNersaLicenceControl","changeIRPControls","changeIRPObtainedControls","deviationApprovalObtainedControl","deviationApprovalControl","noDeviationApprovalObtainedReasonControl","changeREIPPPControls","projectSubmittedIntoReipppControl","roundOfReipppControl","changeBudgetConnectionControls","budgetConnectionCostReceivedControl","budgetConnectionUpgradeCostControl","changeEIAControls","eiaCompletedControl","eiaDocumentProvidedControl","eiaDocumentControl","expectedDateOfEiaControl","rodIssuedControl","rodDocumentControl","noRODDocumentProvidedReasonControl","changeEIADocumentControls","changeRODControls","changeACSAPermitRequiredControls","acsaPermitRequiredControl","acsaDocumentControl","noACSADocumentProvidedReasonControl","changeGeotechnicalStudyRequiredControls","geotechnicalStudyRequiredControl","geotechnicalStudyApprovedControl","geotechnicalDocumentProvidedControl","geotechnicalDocumentControl","noGeotechnicalDocumentProvidedReasonControl","changeGeotechnicalStudyDocumentControls","changeGridConnectionControls","gridConnectionApplicationMadeControl","dateOfConnectionApplicationControl","plannedDateOfConnectionApplicationControl","controlName","projects","initFacilityForm","initProjectForm","addControl","evaluateState","initExistingFacilityForm","initNewFacilityForm","generationData","nersa_report_history_service_NERSAReportHistoryService","NERSAReportHistoryService","getConsumerHistory","createConsumerHistoryEntry","fromDate","toDate","toISOString","getGeneratorHistory","createGeneratorHistoryEntry","nersa_consumer_report_component_NersaConsumerReportComponent","NersaConsumerReportComponent","nersaReportHistoryService","submitting","downloadingReport","newReportForm","fromDateControl","toDateControl","getConsumerNERSAReportHistory","nersaReportHistory","newClicked","onDownloadFile","nersa_generator_report_component_NersaGeneratorReportComponent","NersaGeneratorReportComponent","getGeneratorNERSAReportHistory","generator_termsheet_service_GeneratorTermsheetService","GeneratorTermsheetService","getGeneratorFacilityTermSheet","generatorFacilityTermSheet","facilityTermSheet","offerCompleteTermSheet","getGeneratorFacilityTermSheetPreview","generator_termsheet_component_GeneratorTermsheetComponent","GeneratorTermsheetComponent","generatorTermsheetService","signedOfferUploaded","termSheetPage","isOfferAcceptedTermsheet","signedOfferTermsheet","termsheet","isDocumentSentTermsheet","isDocumentGeneratedTermsheet","signedTermsheetDocumentUpload","allocation_run_detail_component_AllocationRunDetailComponent","AllocationRunDetailComponent","powerprofileloading","navigationSubscription","events","initializePowerProfile","allocationRun","initialStart","startDateTime","initialEnd","endDateTime","setDate","minDate","maxDate","initialGranularity","chartData","allocationRunPowerSummary","buildPowerProfileData","allocationRunPowerAllocationSummary","powerPerDayList","allocationRunPowerConsumptionSummary","allocationRunPowerGenerationSummary","powerProfileName","inputData","chartDataSeries","inputDataIndex","series","cpi_component_CpiComponent","CpiComponent","enableAddNew","newCpiForm","effectiveDate","getCpiHistory","history","alertType","newCpiModal","settings_service_SettingsService","SettingsService","getSettings","updateSetting","setting","put","settings_component_SettingsComponent","SettingsComponent","settingsService","settingsData","settingsPage","editSettingForm","selectedSetting","settingValue","generator_project_facility_distributor_nominations_component_GeneratorProjectFacilityDistributorNominationsComponent","GeneratorProjectFacilityDistributorNominationsComponent","loadingDistributorGenerator","distributorGenerators","distributorGeneratorPage","onDelete","newDistributorGenerator","initDistributorGeneratorForm","distributorGeneratorModal","newDistributorGeneratorForm","percentage","nominations","RevenueForecastWarningAccordion","revenueForecastWarningType","ConsumerForecastWarningAccordion","consumerForecastWarningType","forecast_reports_service_ForecastReportsService","ForecastReportsService","getGeneratorForecastReportHistory","createGeneratorForecastReportEntry","getGeneratorForecastReportByForecastStartDate","generatorForecastId","getConsumerForecastReport","consumerForecastId","getConsumerForecastByTariffReport","getConsumerAndRevenueForecastReportHistory","createConsumerAndRevenueForecastReportEntry","reRunRevenueAndConsumerForecast","revenueForecastId","getRevenueForecastReport","getConsumerForecastWarnings","consumerForecastWarnings","getRevenueForecastWarnings","revenueForecastWarnings","getConsumerCompanyPremisesForForecastParameters","getGeneratorsForForecastParameters","deleteRevenueAndConsumerForecastRun","markRevenueAndConsumerForecastRunForDeletion","deleteGeneratorForecast","generator_forecast_report_component_GeneratorForecastReportComponent","GeneratorForecastReportComponent","reportHistoryService","reportHistory","onGenerateConsumerForecastReport","consumer_and_revenue_forecast_report_component_ConsumerAndRevenueForecastReportComponent","ConsumerAndRevenueForecastReportComponent","forecastReportsService","monthsToForecastFor","averageNumberOfNewPostPaidConsumers","averageNumberOfNewNonTouConsumers","revenueForecasIdToDelete","newEntryParam","backgroundJobStatus","consumerForecastMonthProgress","canDelete","isDeleting","onGenerateConsumerForecastByTariffReport","onGenerateRevenueForecastReport","toConsumerForecastWarnings","toRevenueForecastWarnings","generator_application_project_list_component_GeneratorApplicationProjectListComponent","GeneratorApplicationProjectListComponent","projectTableDisabled","relativeTo","generator_application_project_edit_component_GeneratorApplicationProjectEditComponent","GeneratorApplicationProjectEditComponent","editableFacilityStatuses","existingProjectId","initForm","projectForm","checkFacilityStatusesForEditProject","newFacilityClicked","onSelectFacility","facilityStatus","firstLoad","generator_application_project_facility_edit_component_GeneratorApplicationProjectFacilityEditComponent","GeneratorApplicationProjectFacilityEditComponent","projectFacility","projectFacilityPhase2","initFormPhase1","initFormPhase2","projectFacilityPhase1Form","initProjectFacilityPhase1Form","projectFacilityPhase2Form","initFacilityFormPhase2","initCheckBoxes","onSubmitPhase1","onSubmitPhase2","savingPhase2","hasExistingNERSALicenceControl","nersaGenerationLicenceControl","noNERSAGenerationLicenceProvidedReasonControl","isIRPRequestSubmittedControl","facilityPhase2","providers_list_component_ProvidersListComponent","ProvidersListComponent","integratorProviderForm","selectedIntegrator","onAddNew","ClearFields","providers_detail_component_ProvidersDetailComponent","ProvidersDetailComponent","generatorTabSelected","isTemplateDownloading","rowDownloadingId","rowDeletingId","importFeesForm","fileFormControl","integrator","initintegratorProviderDetailForm","integratorProviderDetailForm","onFileChange","files","file","onImportFeesSubmit","formData","FormData","append","isGeneratorFeeImport","headers","enctype","req","reportProgress","request","onDownloadIntegratorGeneratorFeeTemplate","onDownloadIntegratorConsumerFeeTemplate","onShowUploadModal","onViewGeneratorFees","serviceGeneratorFee","onViewConsumerFees","serviceConsumerFee","onDownloadGeneratorFees","onDownloadConsumerFees","deleteUpload","consumer_application_component_ConsumerApplicationComponent","ConsumerApplicationComponent","consumerApplication","public_holiday_service_PublicHolidayService","PublicHolidayService","getPublicHolidays","getPublicHolidayTimePeriod","publicHolidayTimePeriodId","copyPublicHolidaysToTariffPublicHolidayTimePeriods","getTariffPublicHolidayTimePeriodsPage","createPublicHolidayTimePeriod","publicHolidayTimePeriod","updatePublicHolidayTimePeriod","getPublicHoliday","publicHolidayId","getPublicHolidaysPage","createPublicHoliday","publicHoliday","updatePublicHoliday","public_holiday_component_PublicHolidayComponent","PublicHolidayComponent","publicHolidaysService","loadingPublicHoliday","savingPublicHoliday","publicHolidayLookups","tariffDayOfWeekLookups","tariffDayOfWeek","tariffDayOfWeekLookup","changePublicHolidaysPage","openPublicHolidayModal","onAddPublicHoliday","publicHolidayForm","publicHolidaysId","publicHolidayModal","loadPublicHoliday","initPublicHoliday","publicHolidayResponse","publicHolidayLookupId","tariffDayOfWeekLookupId","allocation_run_errors_component_AllocationRunErrorsComponent","AllocationRunErrorsComponent","consumer_forecast_warnings_component_ConsumerForecastWarningsComponent","ConsumerForecastWarningsComponent","revenue_forecast_warnings_component_RevenueForecastWarningsComponent","RevenueForecastWarningsComponent","management_report_component_ManagementReportComponent","ManagementReportComponent","reportForm","loadMonths","onGenerateManagementReport","onGenerateConsumerIncomeReport","onGenerateGeneratorExpenseReport","onGenerateMonthlyStatementReport","onGenerateMonthlyRecsReport","maintenance_component_MaintenanceComponent","sales_rep_report_service_SalesRepReportService","SalesRepReportService","getSalesRepReport","startYear","endYear","sales_rep_report_component_SalesRepReportComponent","SalesRepReportComponent","salesRepReportService","validateYears","forecast_parameters_component_ForecastParametersComponent","ForecastParametersComponent","forecastReportService","generatorsList","application_report_service_ApplicationReportService","ApplicationReportService","getGeneratorApplicationsReport","getConsumerApplicationsReport","application_reports_component_ApplicationReportsComponent","ApplicationReportsComponent","applicationReportService","downloadingGeneratorReport","downloadingConsumerReport","onDownloadGeneratorApplicationReport","onDownloadConsumerApplicationReport","prospect_details_component_ProspectDetailsComponent","ProspectDetailsComponent","showPremisesDetails","initCreditPermissionAndRatingForm","initProspectDetails","prospectDetails","populateCreditPermissionAndRatingForm","consumerPremisesQualificationParametersId","onSubmitCreditRatings","setRequiredControls","distributor_activation_report_service_DistributorActivationReportService","DistributorActivationReportService","datePipe","getDistributorConsumerActivationReport","endDate","transform","DatePipe","distributor_activation_report_component_DistributorActivationReportComponent","DistributorActivationReportComponent","distributorActivationReportService","firstDay","lastDay","loadDistributors","validateDates","generator_ppa_renewal_notifications_component_GeneratorPpaRenewalNotificationsComponent","GeneratorPpaRenewalNotificationsComponent","generatorPPAExpirationNotifications","consumer_ppa_renewal_notifications_component_ConsumerPpaRenewalNotificationsComponent","ConsumerPpaRenewalNotificationsComponent","consumerService","consumerPPAExpirationNotifications","downloadable_documents_component_DownloadableDocumentsComponent","DownloadableDocumentsComponent","retrievingGeneratorCounterpartyBODResolutionFile","retrievingConsumerCounterpartyBODResolutionFile","retrievingConsumerLandlordResolutionFile","retrievingConsumerMeterAndTariffChangeFormNewNMBMFile","retrievingConsumerMeteringWebSiteAccessApplicationForm","onDownloadGeneratorCounterpartyBODResolutionFile","onDownloadConsumerCounterpartyBODResolutionFile","onDownloadConsumerLandlordResolutionFile","onDownloadConsumerMeterAndTariffChangeFormNewNMBMFile","onDownloadConsumerMeteringWebSiteAccessApplicationFormFile","forecast_service_ForecastService","ForecastService","createForecastParameters","forecastParameter","getGeneratorProfileList","getConsumerProfileList","updateParameters","forecastParameterId","getFoecastParameterList","getForecastReportByForecastRunParameterId","forecastRunParameterId","getForecastParameters","startForecasting","forecast_component_ForecastComponent","ForecastComponent","forecastService","loadingForecastCriteria","editingForecastCriteria","savingForecastCriteria","viewingAllocation","validToRunForecast","validToRunForecastErrors","validatingCriteria","hasForecastRuns","prepaidPowerHeaders","monthlyGenerationColumnHeaders","monthlyConsumptionColumnHeaders","generatorProjectFacilityArrayFilter","consumerCompanyPremisesArrayFilter","generatorProjectFacilityArray","prepaidPowerArray","forecastForm","startmonthLookupId","endmonthLookupId","getForecast","viewAllocations","latestForecastStatus","onCreateForecast","startdate","endate","yearToForecastFor","forecastStartDate","forecastEndDate","prepaidPower","generatorProfileList","consumerProfileList","validToSave","checkValidToRunForecast","validatePrepaid","consumers","validateConsumers","validateGenerators","validPrepaid","prepaidPowerRemovalWeekdayPercentage","prepaidPowerRemovalWeekendPercentage","validGenerators","excludefromForecast","powerGeneration","monthlyGen","powerGeneratedKWh","dateOfInclusion","this_1","validConsumers","powerConsumption","monthlyCon","powerConsumedKWh","this_2","setNullPrepaid","prepaidSetting","onSaveForecast","inclusionMonth","profile","consumerCompanyPremisesProfileId","updateGeneratorProjectFacilityParameter","generatorProjectFacilityIndex","generatorProjectFacilityProfileId","onSelectGenerator","monthlyGenerationModal","onCancelMonthlyGeneration","onSaveMonthlyGeneration","onSelectConsumer","monthlyConsumptionModal","onCancelMonthlyConsumption","onSaveMonthlyConsumption","runForecasting","runforecastModal","beginForecasting","forecast_run_component_ForecastRunComponent","ForecastRunComponent","pageError","forecastParameterListPage","onViewForecast","forecastParameterList","allocation_forecast_run_component_AllocationForecastRunComponent","AllocationForecastRunComponent","allocationRunForecastListPage","allocationRunForecastList","onGenerateForecastReport","reportName","exportFullAllocation","consumer_sales_report_service_ConsumerSalesReportService","ConsumerSalesReportService","getExcelConsumerSalesSummaryExport","consumer_sales_reports_component_ConsumerSalesReportsComponent","ConsumerSalesReportsComponent","consumerSalesReportService","downloadingConsumerSalesReport","onDownloadConsumerSalesReport","generator_report_service_GeneratorReportService","GeneratorReportService","getExcelGeneratorSummaryExport","generator_reports_component_GeneratorReportsComponent","GeneratorReportsComponent","generatorReportService","onDownloadGeneratorReport","invoice_service_InvoiceService","InvoiceService","refreshSubject","refresh$","triggerRefresh","createInvoiceBatch","invoiceTypeLookUpId","createInvoice","credit","updateInvoiceItem","invoiceItem","enableInvoiceEmailSending","invoiceId","include","deleteInvoice","postInvoiceBatch","getInvoiceLines","getInvoiceBatchHistory","getInvoiceList","getInvoiceTypes","getInvoiceBatch","getDetailInvoiceBatch","markInvoicePaid","addInvoicePayment","amount","markAllInvoicePaid","updateInvoiceLineInclusion","invoiceItemId","getSAPExport","batchId","getBatchSummary","invoice_batch_summary_component_InvoiceBatchSummaryComponent","InvoiceBatchSummaryComponent","invoiceService","creatingInvoiceBatch","invoiceForm","invoiceTypeId","invoiceBatchHistory","invoiceBatchNote","invoice_batch_state_service_InvoiceBatchState","InvoiceBatchState","invoice_batch_invoice_list_component_InvoiceBatchInvoiceListComponent","InvoiceBatchInvoiceListComponent","invoicebatchstate","isPosted","submittingInvoice","loadingInvoiceLines","invoiceError","invoicePage","refreshSubscription","invoicestate","consumerCompanyPremiseName","completeInvoice","batch","invoiceBatch","posted","fetchConsumers","markAsPaid","sendInvoiceEmail","selectedCustomer","downloadInvoice","consumerPremises","downloadStatement","rows","editInvoiceModal","class","lines","invoiceLines","invoice","DataType","invoice_batch_details_component_InvoiceBatchDetailsComponent","InvoiceBatchDetailsComponent","downloadBtnText","processingSAPDownload","processingSummarizedDownload","invoiceStatus","sent","markAllAsPaid","markAllAsUnpaid","updateDownloadBtn","text","invoice_details_component_InvoiceDetailsComponent","InvoiceDetailsComponent","submitChange","loadingTariff","showBackButton","title","initInvoiceLineForm","quantity","unitPrice","onTariffSelect","onItemSelect","multiplier","invoiceItemTotal","addPayment","fullypaid","toggleInvoiceItemInclusion","$row","editInvoiceItem","demo_settings_service_DemoSettingsService","DemoSettingsService","saveSettings","demo_settings_component_DemoSettingsComponent","DemoSettingsComponent","demoSettingsService","savingSettings","filtereddistributors","loadingdistrubutors","changedGenerators","changedCustomers","Errors","filterDistributor","searchstring","dist","changed","fill","updateConsumerDemoSettings","includeInDemo","Xt","consumer_statement_service_ConsumerService","ConsumerService","getConsumers","searchword","pagesize","getStatement","ConsumerpremisesID","stardate","enddate","Qt","consumer_statement_component_ConsumerStatementComponent","ConsumerStatementComponent","typeaheadOptionsLimit","consumerpremisesName","consumerpremisesId","dateRange","filteredConsumers","Observable","observer","mergeMap","selectedConsumer","generateStatement","formatedtitle","meter_manual_upload_service_MeterManualUploadService","MeterManualUploadService","uploadMeterReading","formdata","meter_manual_upload_component_MeterManualUploadComponent","MeterManualUploadComponent","ManualUploadService","meterReading","ConsumerSelected","processingFile","buttonsStatus","fileInputFormControl","nativeElement","ngOnChanges","changes","currentValue","consumerpremisesNameControl","consumerpremisesIdControl","fileSizeValidator","uploadForm","maxfilefizeexceeded","openModal","uploadreadings","uploadProgress","closeModal","vat_settings_service_VatService","VatService","GetAllVat","AddVat","newVat","vat_settings_component_VatSettingsComponent","VatSettingsComponent","vatService","allVAT","addVatForm","openTemplate","minStartDate","VATs","parseddate","setFullYear","ROUTES","redirectTo","pathMatch","component","children","runGuardsAndResolvers","token_interceptor_TokenInterceptor","TokenInterceptor","injector","isRefreshingToken","tokenSubject","intercept","addToken","clone","setHeaders","Content-Type","handle","catchError","throwError","handle400Error","handle401Error","defaultErrorHandling","Authorization","take","switchMap","newToken","logoutUser","finalize","Injector","navigation_bar_component_NavigationBarComponent","NavigationBarComponent","isCollapsed","loggedIn","loggedInSubscription","mr","loader_component_LoaderComponent","LoaderComponent","numberdumper_pipe_NumberFormatPipe","NumberFormatPipe","Pipe","fr","document_component_DocumentComponent","Document","documentTypeLookupId","createdBy","document_upload_component_DocumentUploadComponent","DocumentUploadComponent","successfulUpload","EventEmitter","existingFile","num","containerForm","uploadedDocumentId","reevaluate","ngAfterViewInit","uploadAnother","upload","processed","pathValues","UploadProgress","round","loaded","processSuccess","newlyUploadedDocument","undefined","toDateString","emit","onDeleteFile","retrievingFile","Output","document_download_component_DocumentDownloadComponent","DocumentDownloadComponent","document_download_list_component_DocumentDownloadListComponent","DocumentDownloadListComponent","onDownloadFiles","retrievingFiles","documentIds","navigation_bar_item_component_NavigationBarItemComponent","NavigationBarItemComponent","dropdown","userRole","validation_spans_component_ValidationSpansComponent","ValidationSpansComponent","checkForValidationErrors","ngDoCheck","getErrorMessage","errorType","requiredLength","validation_messages_component_ValidationMessagesComponent","ValidationMessagesComponent","validateTopLevelControls","treeifyMessages","triggerValidationMessagesSubscription","validate","generateValidationMessages","inputControl","touched","is","parent","form","constructValidationMessage","treeifyValidationMessages","validationMessagesSafeHTML","index_1","name_1","parentIsForm","fieldIndex","parentField","match","formatName","name_2","formatErrors","errorNumber","character","messageList","baseListInitiated","singleLevelNestedMessageList","messageCount","multiLevelNestedMessageList","messageIndex","nestedMessageSections","nestedMessageSectionName_1","searchNestedMessage","nestedMessageSections_1","sectionsCount_1","currentSection","sectionIndex","parentSection","childSection","nestedMessageSectionName","section","hasEnclosingList","nextMessageSections","recursicelyCloseLists","currentMessageSections","currentMessageSectionName","nextMessageSectionName","currentMessageParentSectionName","nextMessageParentSectionName","sameSectionNames","sameParentSectionNames","currentMessageSectionIsListSection","currentMessageParentSectionIsListSection","nextMessageSectionIsListSection","nextMessageParentSectionIsListSection","currentMessageSectionListNumber","nextMessageSectionListNumber","closeList","parentIsList","closeEnclosingList","PremisesConsumption","premises_details_component_ConsumerPremisesDetailsComponent","ConsumerPremisesDetailsComponent","theBoundCallback","onSameAsHoldingCompanyChecked","initSubscription","initMonthsAndYears","premisesDetailsEventSubscription","initializeForm","handleFormReadOnlyMode","onSelectedTariffChange","getHoldingCompanyAddress","businessActivities","updateConsumption","getEvaluationStatus","addressFormComponent","consumerCompanyPremisesForm","existingTariff","showConsumptionCapture","isOnePart","isThreePart","electricityAccountsDocumentUploaded","addConsumption","selectedIndex","removeConsumption","consumptionIndex","holdingCompanyAddress","ArchiveConsumerCompanyPremise","UnarchiveConsumerCompanyPremise","initializeAddressForm","distributorAccountCreditProblemLookupId","enableForm","responseId","declinedReasonId","evaluationResponse","declinedMessage","tariff_component_TariffComponent","TariffComponent","displayError","isEskomDistributor","tariffEventSubscription","errorMessageSafeHtml","showTariff","onSubmitTariff","onCreateTariff","onUpdateTariff","onChangeTariffOrTariffRate","distributorOrConsumer","addTariffRate","initTariffRate","onChangeTariffType","removeTariffRate","submitTariffRate","tariffRateForm","onCreateTariffRate","onUpdateTariffRate","voltages","initTariff","initTariffRates","tariffRateFormGroups","tariffRateFormGroup","kvaRate","ColumnConfiguration","displayName","isInitialized","isId","dataType","entityLookupList","addMasking","initalizeKey","initializeText","initializeNumber","symbol","initializeDropdown","initializeRatio","ratio","initializeDate","crud_table_component_CrudTableComponent","CrudTableComponent","addDisabled","hideActionColumn","tableColumns","formArray","columnConfiguration","childControlName","config","createForm","getEmptyObjectFromConfig","addRow","isEdit","getConfigurationByFormControlName","dateTransformed","updateValidation","effectiveDate_1","trimDate","getTime","updateEffectiveDate","getRatioColumnNames","emptyObject","dateString","setHours","setMinutes","setSeconds","setMilliseconds","base_accordion_component_BaseAccordionComponent","BaseAccordionComponent","minimum","maximum","existingChildren","child","addItem","alert","prepaid_vendor_accordion_component_PrepaidVendorAccordionComponent","PrepaidVendorAccordionComponent","prepaidVendor","isNewItem","prepaidVendorId","serviceFee","prepaidTariffs","notes_service_NotesService","NotesService","createNote","getNoteById","noteId","getNoteByMetadataAll","noteMetadata","getNoteByMetadataAny","formControlNoteToNoteModel","formControlNote","notes_component_NotesComponent","NotesComponent","notesService","totalNotes","pageNoteStartIndex","pageNoteEndIndex","addingNote","triggerNotesRefreshSubscription","cancelNote","notesForm","newNoteValue","previousPage","currentPageNoteEndIndex","nextPage","currentPageNoteStartIndex","addNote","saveNote","notesMustMeetAllMetadata","responseNotes","initNotesForm","notes","notesFormArray","initNotesArray","noteFormGroups","initNote","initNoteMetadataArray","noteMetadatas","noteMetadataFormGroups","initNoteMetadata","noteMetadataId","metadataTypeLookupId","metadataValue","documents_component_DocumentsComponent","DocumentsComponent","documentUploaded","totalDocuments","pageDocumentStartIndex","pageDocumentEndIndex","addingDocument","documents","downloadingDocumentIds","triggerDocumentsRefreshSubscription","documentMetaData","cancelDocument","documentsForm","newDocumentControl","newDocument","getDocumentType","documentTypes","docType","currentPageDocumentEndIndex","currentPageDocumentStartIndex","addDocument","documentUploadVerdict","documentFileName","doc","documentsMustMeetAllMetadata","sort","compare","IncludeDocumentsContaining","documentTypeShouldBeIncluded","includeDocumentsContaining","continueInit","first","second","responseDocuments","initDocumentsForm","documentsFormGroup","prepaid_tariff_accordion_component_PrepaidTariffAccordionComponent","PrepaidTariffAccordionComponent","prepaidTariff","tariffBlocks","tariff_block_accordion_component_TariffBlockAccordionComponent","TariffBlockAccordionComponent","tariffRatesConfig","tariffBlock","tariffBlockId","blockName","startKwh","endKwh","consumption_period_component_ConsumptionPeriodComponent","ConsumptionPeriodComponent","isUpdate","distributorConsumptionForm","consumptionColumnConfiguration","getDistributorBulkMeterConsumptionPeriod","selectedBulkMeterConsumptionPeriod","distributorBulkMeterConsumptionPeriodId","totalConsumptionPeak","totalConsumptionOffPeak","totalConsumptionStandard","tradeAllowedPeak","importsAllowedPeak","tradeAllowedOffPeak","importsAllowedOffPeak","tradeAllowedStandard","importsAllowedStandard","distributorBulkMeterConsumptions","initConsumption","prepopulateConsumption","latestLimit","removeChosenPeriods","selectedPeriods_1","bm","newDistributorConsumptionModal","editDistributorConsumptionModal","selectedDistributorBulkMeterConsumptionPeriod","consumptionList","consumptionItem","distributorBulkMeterConsumptionId","peakConsumption","offPeakConsumption","standardConsumption","flatConsumption","bulkMeterConsumptionPeriodId","public_holiday_time_period_component_PublicHolidayTimePeriodComponent","PublicHolidayTimePeriodComponent","componentContainer","publicHolidayErrorMessage","loadingPublicHolidays","loadingPublicHolidayTimePeriod","publicHolidayTimePeriodErrorMessage","savingPublicHolidayTimePeriod","periodModels","publicHolidaysResponse","publicHolidays","setPeriodPublicHolidays","changeTariffPublicHolidaysPage","onPublicHolidayTimePeriodSelect","openPublicHolidayTimePeriodModal","onAddPublicHolidayTimePeriod","onAddPublicHolidayCopyFromMaintenance","onPublicHolidayTimePeriodCancel","onPublicHolidayTimePeriodSubmit","publicHolidaysTimePeriodForm","publicHolidaysTimePeriodId","publicHolidayTimePeriodModal","loadPublicHolidayTimePeriod","onChangePeriod","onChangePublicHoliday","periodPublicHolidays","initPublicHolidaysTimePeriod","publicHolidayTimePeriodResponse","pubHol","publicHolidayDate","distinct_start_with_pipe_DistinctStartWithPipe","DistinctStartWithPipe","propertyName","terminator","selfByPropertyNameUptoTerminator","valueByPropertyNameUptoTerminator","substr_start_at_zero_pipe_SubstrStartAtZeroPipe","SubstrStartAtZeroPipe","all_start_with_pipe_AllStartWithPipe","AllStartWithPipe","compareString","profile_type_pipe_ProfileTypePipe","ProfileTypePipe","compareType","args","technologyOrBusinessType","profile_has_data_pipe_ProfileHasDataPipe","ProfileHasDataPipe","facilityOrPremisesId","inclusion_month_pipe_InclusionMonthPipe","InclusionMonthPipe","startmonth","endmonth_1","bulk_meter_list_component_BulkMeterListComponent","BulkMeterListComponent","showBulkMeterList","savingBulkMeter","triggerDistributorBulkMeterComponentSubscription","getNewBulkMeterForm","newBulkMeterModal","bulkMeters","meter","getTariffCode","consumer_company_details_component_ConsumerCompanyDetailsComponent","ConsumerCompanyDetailsComponent","isAddendumRequired","isAddendumUploaded","sensitiveFieldsEditable","consumerCompanyDetailsForm","formcontrolname","companyForm","successfulUploadAddendum","initConsumerCompanyDetailsForm","initAddresses","initCompanyForm","addendumDocument","exists","address_accordion_component_AddressComponent","AddressComponent","excludeFields","generator_company_details_component_GeneratorCompanyDetailsComponent","GeneratorCompanyDetailsComponent","generatorMaintenanceService","addendumUploaded","addendum","loadGeneratorCompanyDetails","onCompanyDetailsEdit","addendumUpload","generator_project_list_component_GeneratorProjectListComponent","GeneratorProjectListComponent","generator_project_details_component_GeneratorProjectDetailsComponent","GeneratorProjectDetailsComponent","detailsForm","capacities","generator_project_facility_details_component_GeneratorProjectFacilityDetailsComponent","GeneratorProjectFacilityDetailsComponent","selectFacilityForm","facilityForm","onExcludeFromRunChange","generatorFacilityStatuses","loadProjectFacility","disableValidations","selectedFacility","LoadBaseGeneratorProjectFacilityList","loadSpvField","documentMetadataId","metadataTypeLookupName","noteMetaData","enableAllValidations","onFacilityChange","onUpdateFacilitySubmit","onPowerDistributionNomincationClick","onChangeIsRecsRegistered","meterDateInstallationControl","baseGeneratorProjectFacilityList","consumer_company_premises_details_component_ConsumerCompanyPremisesDetailsComponent","ConsumerCompanyPremisesDetailsComponent","updatingProgressStatus","savedDetails","consumerPremisesStatuses","consumerPremisesStatus","sendPremisesForEvaluation","consumerCompanyName","shouldShowSendForEvalButton","dirty","pattern","electricityAccounts","dropdown_component_DropdownComponent","DropdownComponent","entityLookupName","eo","no","generation_data_component_GenerationDataComponent","GenerationDataComponent","showTotalGeneration","totalGeneration","formControlGroup","consumer_company_premises_tariff_list_component_ConsumerCompanyPremisesTariffListComponent","ConsumerCompanyPremisesTariffListComponent","initNewTariffForm","onNewTariffAdd","effectiveDateTime","getRowClass","isActive","initTariffForm","isOverriding","allocation_run_summary_blocks_component_AllocationRunSummaryBlocksComponent","AllocationRunSummaryBlocksComponent","toGeneratorSummary","allocationRunSummary","toConsumerSummary","onPrepaidRevenueClick","totalPrepaidPower","allocation_export_component_AllocationExportComponent","AllocationExportComponent","processingFullAllocation","processingContourAllocation","processingSummarizedAllocation","exportContourAllocation","exportSummarizedAllocation","allocation_warning_component_AllocationWarningComponent","AllocationWarningComponent","warningTypes","toAllocationWarnings","allocationRunWarningSummary","warningList","allocation_finalization_component_AllocationFinalizationComponent","AllocationFinalizationComponent","onClickRecs","recsStatus","onClickSendAllocation","sendStatus","sendAllocationResults","recsTooltipText","RecsRunsSub","recsButtonText","setSendAllocationVariables","sendAllocationButtonText","sendAllocationTooltipText","isDemo","sendAllocationTooltipEnabled","sendAllocationButtonEnabled","setRecsVariables","recsTooltipEnabled","recsButtonEnabled","allocationSentStatus","allocationRunRecsStatus","allocationRunStatus","allocation_power_per_technology_component_AllocationPowerPerTechnologyComponent","AllocationPowerPerTechnologyComponent","allocationRunPowerPerTechnologySummary","populateChartData","powerPerTechnologyList","co","allocation_revenue_per_energy_bracket_component_AllocationRevenuePerEnergyBracketComponent","AllocationRevenuePerEnergyBracketComponent","allocationRunRevenuePerEnergyBracketSummary","revenuePerEnergyBracketList","generator_project_facility_tariff_rates_component_GeneratorProjectFacilityTariffRatesComponent","GeneratorProjectFacilityTariffRatesComponent","enableEdit","generatorProjectFacilityTariffRates","triggerGeneratorProjectFacilityTariffRatesComponentSubscription","loadNewTariffRates","facilityData","loadTariffRates","saveNewRates","updatingRates","newRates","showSave","containerFormGroup","calculateIncrease","populateTariffs","now","tariffFormGroups","generatorProjectFacilityTariffRateId","generator_project_facility_tariff_rates_edit_service_GeneratorProjectFacilityTariffRatesEditService","GeneratorProjectFacilityTariffRatesEditService","generator_project_facility_tariff_rates_edit_component_GeneratorProjectFacilityTariffRatesEditComponent","GeneratorProjectFacilityTariffRatesEditComponent","facilityTariffRatesService","loadingTariffRate","tariffRatePage","newTariffRate","initTariffRateForm","tariffRateModal","newTariffRateForm","Consumption","tariffBlockConsumptionId","consumption_component_ConsumptionComponent","ConsumptionComponent","parentId","selectYears","customClass","initMonths","initYear","distributor_increase_component_DistributorIncreaseComponent","DistributorIncreaseComponent","periodService","increaseHistory","newIncreaseForm","getIncreaseHistory","newIncreaseModal","SummaryInfoPair","summary_card_component_SummaryCardComponent","SummaryCardComponent","leftInfo","rightInfo","setSummaryGridSize","colsPerRow","allocation_prepaid_revenue_component_AllocationPrepaidRevenueComponent","AllocationPrepaidRevenueComponent","triggerPrepaidRevenueComponentSubscription","allocationRunTotalPrepaidPower","onChangeBlockPropertyValue","allocationPrepaidRevenueIndex","allocationPrepaidRevenueFormArray","allocationPrepaidRevenueFormGroup","setTotalPrepaidAndRevenue","setBlockRevenue","allocationPrepaidRevenue","prepaidRevenueForm","prepaidRevenueValidation","onPrepaidRevenueCancel","prepaidRevenueModal","allocationPrepaidRevenueDtoList","initAllocationPrepaidRevenueForm","initAllocationPrepaidRevenueFormArray","allocationPrepaidRevenueFormGroups","initAllocationPrepaidRevenueFormGroup","allocationPrepaidRevenueId","blockKWh","tariffBlockRevenue","vendorName","activeBlockRate","activeTariffBlockRate","totalBlockKwh","reduce","blockKWhA","blockKWhB","blockRevenueA","blockRevenueB","allocationRunTotalPrepaidRevenue","prepaid_vendor_service_PrepaidVendorService","PrepaidVendorService","getAllPrepaidVendorsByDistributorId","getPrepaidVendorById","addPrepaidVendor","updatePrepaidVendor","addPrepaidVendorTariffBlock","updatePrepaidVendorTariffBlock","validateIdentifier","getPrepaidVendors","addPrepaidVendorPrepaidRemovalPercentage","prepaidVendorPrepaidRemovalPercentage","updatePrepaidVendorPrepaidRemovalPercentage","getPrepaidVendorPrepaidRemovalPercentagePage","prepaid_vendor_component_PrepaidVendorComponent","PrepaidVendorComponent","prepaidVendorService","showPrepaidVendorList","newPrepaidVendorForm","serviceFeePercentage","prepaidVendorSubscription","shouldShow","vendors","vendor","newPrepaidVendorModal","goToDetails","prepaid_vendor_details_component_PrepaidVendorDetailsComponent","PrepaidVendorDetailsComponent","showPrepaidVendorDetails","tariffRatesPerPeriod","savingTariffBlock","prepaidVendorDetailsSubscription","initPrepaidVendor","populatePrepaidVendorForm","newTariffBlockModal","popupUpdate","selectedTariffBlock","averageConsumption","loadTariffBlockDetails","newTariffBlockForm","updateTariffBlock","createTariffBlock","prepaidVendorForm","validIdentifier","pv","onClickTariffBlock","rates","initNewTariffBlockForm","tariff_list_component_TariffListComponent","TariffListComponent","tariffListSubscription","changeDistributorTariffPage","addTariff","showTariffList","contact_component_ContactComponent","ContactComponent","enableActionsColumn","disabledDesignations","isAuthAndBillingContactLoaded","authAndBillingContactLoaded","attr","authorisedContactAttributeId","electricityBillingsContactAttributeId","getAllContacts","checkForAuthAndBillingContactInConsumerApplicationMode","newContactModal","initContactForm","newContactForm","isInConsumerApplicationMode","contactRow","proposedNewContact","dashboard_component_DashboardComponent","DashboardComponent","dashbordservice","enableYear","enableMonth","PowertoDate","powerProfileToDateAllocation","powerPerMonthList","powerProfileToDateConsumption","powerProfileToDateGeneration","generation_to_date_component_GenerationToDateComponent","GenerationToDateComponent","yAxisTicks","generationToDate","generationToDateList","highestNumber","power","setYAxisTicks","elementCount","generation_per_technology_to_date_component_GenerationPerTechnologyToDateComponent","GenerationPerTechnologyToDateComponent","generationPerTechnologyToDate","generationPerTechnologyToDateList","power_profile_service_PowerProfileService","PowerProfileService","sortDirection","sortProperty","ko","power_profile_filter_component_PowerProfileFilterComponent","PowerProfileFilterComponent","powerprofileService","SelectionType","ColumnMode","ProfilePeriod","subscriptions","generatorSearch","Consumersearch","includedGenerators","selectedGenerators","selectedConsumers","filterStart","filterEnd","timeSpanRadio","timespan","allocationGraph","generationGraph","consumptionGraph","AccordionDic","subscription","granularity","timelines","graphs","updateConfig","getgeneratorPromise","toPromise","getconsumerPromise","Promise","all","results","allGenerators","allconsumers","onGeneratorSelect","onConsumerSelect","onHidden","reason","dateformat","bsConfig","assign","minMode","dateInputFormat","timespanchanged","accordionState","source","saveFilter","consumersid_1","generatorsid_1","elt","filterdata","Consumers","Generators","Granularity","Startdate","Enddate","AllocationRunId","AllocationGraph","ConsumptionGraph","GenerationGraph","powerProfileToDate","ngx_bootstrap_datepicker","warnings_and_notifications_component_WarningsAndNotificationsComponent","information_card_component_InformationCardComponent","InformationCardComponent","cardColor","faIcon","generator_notifications_card_component_GeneratorNotificationsCardComponent","GeneratorNotificationsCardComponent","stats_card_component_StatsCardComponent","StatsCardComponent","statsPair","generator_project_ppa_maintenance_service_GeneratorProjectPpaMaintenanceService","GeneratorProjectPpaMaintenanceService","getGeneratorProjectPpaMaintenanceDocuments","addAddendum","renewPPA","renewPpa","updatePpaCommercialAgreementAddendum","commercialAgreementChangeAdendum","updatePpaScheduleCommercialAgreementAddendum","generator_project_ppa_maintenance_component_GeneratorProjectPpaMaintenanceComponent","GeneratorProjectPpaMaintenanceComponent","generatorProjectPpaMaintenanceService","popupSubmitting","addAddendumForm","addendumDoc","addendumDocId","comment","renewPpaForm","generatorProjectFacilityEvaluationFieldId","renewPpaDocId","renewPpaDoc","ppaMaintenanceEventSubscription","showDocList","loadGeneratorProjectPpaMaintenanceDocuments","isFacilityComplete","evaluationFieldId","onDownloadDocument","busyDownloading","onShowNewAdendumModal","newAdendumModal","newAdendumDocumentUpload","addendumFile","onNewAdendumSubmit","onShowRenewPpaModal","renewPpaModal","newRenewPpaDocumentUpload","renewPpaFile","onRenewPpaSubmit","onShowCommercialAgreementChangeAdendum","wheeling_fees_component_WheelingFeesComponent","WheelingFeesComponent","updateWheelingFees","wheelingFeesForm","distributorWheelingFeeId","chargeForPrepaid","chargeForPostpaid","wheelingFeesModal","initWheelingFeesForm","meter_installation_charges_component_MeterInstallationChargesComponent","MeterInstallationChargesComponent","updateMeterInstallationCharges","meterInstallationChargeForm","meterInstallationChargeId","administrationFee","installationChargesModal","initInstallationChargesForm","installationCharges","allocation_error_component_AllocationErrorComponent","AllocationErrorComponent","errorTypes","toAllocationErrors","allocationRunErrorSummary","errorList","DocumentTemplate","container","document_template_upload_component_DocumentTemplateUploadComponent","DocumentTemplateUploadComponent","consumer_company_ppa_maintenance_service_ConsumerCompanyPpaMaintenanceService","ConsumerCompanyPpaMaintenanceService","GetConsumerCompanyPpaMaintenanceDocuments","AddNewAddendum","RenewConsumerPpa","consumerCompanyPpaDetailId","newPpaDoc","consumer_company_ppa_maintenance_component_ConsumerCompanyPpaMaintenanceComponent","ConsumerCompanyPpaMaintenanceComponent","consumerCompanyPPaMaintenanceService","loadDocuments","ppaGenerated","onShowNewAddendumModal","newAddendumModal","newAddendumDocumentUpload","renewPpaDocument","onNewAddendumSubmit","trading_limits_overall_component_TradingLimitsOverallComponent","TradingLimitsOverallComponent","tradingLimitsOverall","tradingLimitsOverallList","distributor_dashboard_component_DistributorDashboardComponent","DistributorDashboardComponent","power_import_limit_component_PowerImportLimitComponent","PowerImportLimitComponent","powerImportLimit","powerImportLimitList","trading_limits_per_tariff_component_TradingLimitsPerTariffComponent","TradingLimitsPerTariffComponent","tradingLimitsPerTariff","tradingLimitsPerTariffList","tradingLimitPerTariff","tariffChartData","generator_project_ppa_maintenance_commercial_agreement_change_component_GeneratorProjectPpaMaintenanceCommercialAgreementChangeComponent","GeneratorProjectPpaMaintenanceCommercialAgreementChangeComponent","isPpaSchedule","isDocumentUpload","commercialAgreementEventSubscription","showCommercialAgreement","initCommercialAgreementForm","commercialAgreementChangeAdendumForm","hideCommercialAgreement","selectedFacilityId","isDocumentGeneratedPpaSchedule","average_purchase_and_sales_rate_component_AveragePurchaseAndSalesRateComponent","AveragePurchaseAndSalesRateComponent","averagePurchaseAndSalesRate","distributor_weps_less_loss_service_DistributorWepsLessLossService","DistributorWepsLessLossService","getWepsLessLossesPage","getWepsLessLossesPeriodDailyRatePage","updateWepsLessLoss","wepsLessLoss","updateWepsLessLossesPeriodDailyRate","wepsLessLossesPeriodDailyRate","addWepsLessLosses","lowDemandSeasonId","highDemandSeasonId","distributorWepsLessLossId","peakTariff","lowDemandPeakTariff","offPeakTariff","lowDemandOffPeakTariff","standardTariff","lowDemandStandardTariff","highDemandPeakTariff","highDemandOffPeakTariff","highDemandStandardTariff","addWepsLessLossesPeriodDailyRate","weps_less_loses_component_WepsLessLosesComponent","WepsLessLosesComponent","distributorWepsLessLossService","wepsLessLossesFormUpdate","initUpdateForm","wepsLessLossesForm","initNewForm","changeWepsLessLossesPage","openWepsLessLossesModal","onSubmitUpdate","onSubmitNew","wepsLessLossesModalUpdate","loadWepsLessLosses","onAddWepsLessLosses","wepsLessLossesModal","generator_ppa_warning_card_component_GeneratorPpaWarningCardComponent","GeneratorPpaWarningCardComponent","generatorFacilityPpaOverdueItemsCount","consumer_ppa_warning_card_component_ConsumerPpaWarningCardComponent","ConsumerPpaWarningCardComponent","consumerCompanyPPAWarningNotification","consumerCompanyPpaOverdueItemsCount","prepaid_vendor_prepaid_removal_percentage_list_component_PrepaidVendorPrepaidRemovalPercentageListComponent","PrepaidVendorPrepaidRemovalPercentageListComponent","initPrepaidRemovalPercentageForm","prepaidRemovalPercentageModal","prepaidRemovalPercantageForm","prepaidVendorPrepaidRemovalPercentageId","weps_less_lesses_period_daily_rate_component_WepsLessLessesPeriodDailyRateComponent","WepsLessLessesPeriodDailyRateComponent","changeWepsLessLossesPeriodDailyRatePage","openWepsLessLossesPeriodDailyRateModal","wepsLessLossesPeriodDailyRateModal","loadWepsLessLossesPeriodDailyRate","onAddWepsLessLossesPeriodDailyRate","distributorWepsLessLossesPeriodDailyRateId","consumer_company_recs_component_ConsumerCompanyRecsComponent","ConsumerCompanyRecsComponent","exportService","processing","triggerConsumerCompanyRecsComponentSubscription","onDownloadExport","previousYear","taxYearPresent","allocation_purchase_and_sales_rate_component_AllocationPurchaseAndSalesRateComponent","AllocationPurchaseAndSalesRateComponent","purchaseAndSalesRate","tariff_rate_list_component_TariffRateListComponent","TariffRateListComponent","tariff_trading_limit_component_TariffTradingLimitComponent","TariffTradingLimitComponent","saveEnabled","addTariffTradingLimit","tariffTradingLimitsForm","tariffTradingLimit","tariffTradingLimitId","initTariffTradingLimit","removeTariffTradingLimit","originalMonths","saveTariffTradingLimits","initTariffTradingLimitsForm","tariffTradingLimitsFormArray","initTariffTradingLimitsArray","tariffTradingLimitsFormGroups","tariffTradingLimitForm","distributor_power_trading_limits_component_DistributorPowerTradingLimitsComponent","DistributorPowerTradingLimitsComponent","showPowerLimitsAndTechnology","tariffListEventSubscription","changePowerTradingLimitPage","openPowerTradingLimit","powerTradingLimitForm","powerTradingLimit","powerTradingLimitsModal","loadPowerTradingLimit","onAddPowerTradingLimit","distributorPowerTradingLimitId","percentageOfTradeAllowed","percentageOfPowerImportsAllowed","power_traded_per_technology_component_PowerTradedPerTechnologyComponent","PowerTradedPerTechnologyComponent","changePowerTradedPerTechnologyPage","openPowerTradedPerTechnology","powerTradedPerTechnologyForm","powerTradedPerTechnologyModal","loadPowerTradedPerTechnology","onAddPowerTradedPerTechnology","distributorPowertradedPerTechnologyId","technologyTypeLookupId","highDemandTariff","lowDemandTariff","allocation_power_per_tariff_component_AllocationPowerPerTariffComponent","AllocationPowerPerTariffComponent","allocationRunPowerPerTariffSummary","powerPerTariffList","allocation_revenue_per_tariff_component_AllocationRevenuePerTariffComponent","AllocationRevenuePerTariffComponent","allocationRunRevenuePerTariffSummary","revenuePerTariffList","allocation_tariff_sale_rates_component_AllocationTariffSaleRatesComponent","AllocationTariffSaleRatesComponent","allocationTariffSaleRatesSummary","populateData","tariffSaleRatesList","AvgRate","AvgRateMinusWheeling","premises_list_component_PremisesListComponent","PremisesListComponent","showPremisesList","premisesListEventSubscription","addNewPremisesModal","updateStatusToEvaluation","consumerPremisesProgress","ngx_bootstrap_chronos","app_module_AppModule","NgModule","bootstrap","declarations","imports","BrowserModule","animations","forRoot","useHash","pushState","preloadingStrategy","onSameUrlNavigation","NgxDatatableModule","positionClass","ngx_bootstrap_accordion","angular_2_dropdown_multiselect","ngx_mask","ngx_currency","ngx_charts_release","NgxChartsModule","providers","provide","useClass","multi","enableProdMode","decorateModuleRef","modRef","disableDebugTools","main","platform_browser_dynamic","bootstrapModule","err","__webpack_exports__","readyState","addEventListener","_domReadyHandler","removeEventListener","isOV","iv+l","iyGf","j+Uq","jIGw","jUOC","jb+W","je6F","jptq","jtKN","jzAe","k2ge","kXAg","kdgt","l62k","lBpD","lBrZ","lDQ+","lJJc","lP9c","lPDC","lQ18","lbrh","leRr","lsy2","ltgG","m8fT","mHND","mKGz","mXzk","ma+w","mjfu","mpQR","n/Ie","n2ch","n8er","nH/3","nJfM","nN3l","nPgI","narT","nhSI","nxx2","o0CI","o1GH","oKgP","oVWF","obs/","osyt","ouCW","pBiQ","pNp8","pgte","pshw","q6Y9","qEH7","qPk3","qbJg","qc6Z","quJO","r/js","rISU","rNkY","rlkN","sF+J","siFb","sohN","sqYi","styg","tWyv","tXZ2","tfsN","tn7U","ttGy","uCS3","uQF5","ucYC","w4J8","w5Bt","wftn","x+gv","xB7I","xzjo","yEjF","yU30","yZcb","ynWL","zAKN","zHMn","ze47","zhnz","zkhm","zn8P","webpackEmptyAsyncContext","resolve","Error","code","zus5"],"mappings":"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,MAAO,oDAKX4R,KAAM,wBACN4iF,UAAWta,GACX12C,aAAcwH,IACdljD,MAAQkY,MAAO,uBACf00F,sBAAuB,WAIvB9iF,KAAM,sBACN4iF,UAAWppE,EACXoY,aAAcwH,IACdljD,MACIkY,MACI,+GAKR4R,KAAM,kDACN4iF,UAAW5/B,GACXpxB,aAAcwH,IACdljD,MACIkY,MACI,qFAKR4R,KAAM,iCACN4iF,UAAW90C,GACXlc,aAAcwH,IACdljD,MACIkY,MACI,+GAKR4R,KACI,6EACJ4iF,UAAWp0C,GACX5c,aAAcwH,IACdljD,MACIkY,MACI,8FAKR4R,KAAM,0CACN4iF,UAAWv0C,GACXzc,aAAcwH,IACdljD,MACIkY,MACI,+GAKR4R,KACI,6DACJ4iF,UAAW3sE,EACX2b,aAAcwH,IACdljD,MACIkY,MACI,+GAKR4R,KACI,kEACJ4iF,UAAWvtC,GACXzjB,aAAcwH,IACdljD,MACIkY,MACI,+GAKR4R,KAAM,yDACN4iF,UAAWp7B,GACX51B,aAAcwH,IACdljD,MACIkY,MACI,+GAKR4R,KAAM,sCACN4iF,UAAW5T,GACXp9C,aAAcwH,IACdljD,MACIkY,MACI,qFAKR4R,KAAM,mCACN4iF,UAAWv/C,GACXzR,aAAcwH,IACdljD,MACIkY,MACI,+GAKR4R,KAAM,wBACN4iF,UAAW/nB,GACXjpC,aAAcwH,IACdljD,MACIkY,MACI,uEAKR4R,KAAM,0DACN4iF,UAAWvV,GACXz7C,aAAcwH,IACdljD,MACIkY,MACI,+GAIR4R,KAAM,aACN4iF,UAAWj9D,GACXk9D,WAEQ7iF,KAAM,MACN4iF,UAAWt1D,GACXsE,aAAcwH,IACdljD,MACIkY,MACI,+HAKR4R,KAAM,oCACN4iF,UAAWntD,GACX7D,aAAcwH,IACdljD,MACIkY,MACI,2FAKR4R,KAAM,4BACN4iF,UAAW9vD,GACXlB,aAAcwH,IACdljD,MACIkY,MACI,+HAKR4R,KAAM,iCACN4iF,UAAW1/C,GACXtR,aAAcwH,IACdljD,MACIkY,MACI,kEAKR4R,KAAM,0BACN4iF,UAAW/X,GACXj5C,aAAcwH,IACdljD,MACIkY,MACI,+HAKR4R,KAAM,oCACN4iF,UAAWxvD,GACXxB,aAAcwH,IACdljD,MACIkY,MACI,+HAKR4R,KAAM,qCACN4iF,UAAWvqD,GACXzG,aAAcwH,IACdljD,MACIkY,MACI,+HAKR4R,KAAM,2BACN4iF,UAAW9lB,GACXlrC,aAAcwH,IACdljD,MACIkY,MACI,6HAER00F,sBAAuB,aAM/B9iF,KAAM,yCACN4iF,UAAWp2B,GACX56B,aAAcwH,IACdljD,MAAQkY,MAAO,0BAIf4R,KAAM,qCACN4iF,UAAWv0B,GACXz8B,aAAcwH,IACdljD,MAAQkY,MAAO,0BAIf4R,KAAM,uCACN4iF,UAAWtuB,GACX1iC,aAAcwH,IACdljD,MAAQkY,MAAO,0BAIf4R,KAAM,gDACN4iF,UAAW30B,GACXr8B,aAAcwH,IACdljD,MAAQkY,MAAO,0BAIf4R,KAAM,0CACN4iF,UAAW3tB,GACXrjC,aAAcwH,IACdljD,MAAQkY,MAAO,0BAIf4R,KAAM,kCACN4iF,UAAWhf,GACXhyC,aAAcwH,IACdljD,MAAQkY,MAAO,0BAIf4R,KAAM,0DACN4iF,UAAW5e,GACXpyC,aAAcwH,IACdljD,MAAQkY,MAAO,0BAIf4R,KAAM,wCACN4iF,UAAW5e,GACXpyC,aAAcwH,IACdljD,MAAQkY,MAAO,0BAIf4R,KACI,iGACJ4iF,UAAWje,GACX/yC,aAAcwH,IACdljD,MAAQkY,MAAO,0BAIf4R,KACI,uEACJ4iF,UAAWje,GACX/yC,aAAcwH,IACdljD,MAAQkY,MAAO,0BAIf4R,KAAM,kBACN4iF,UAAW/pD,GACXjH,aAAcwH,IACdljD,MAAQkY,MAAO,0BAIf4R,KAAM,oBACN4iF,UAAW3pD,GACXrH,aAAcwH,IACdljD,MAAQkY,MAAO,0BAIf4R,KAAM,wBACN4iF,UAAWxT,GACXx9C,aAAcwH,IACdljD,MAAQkY,MAAO,8CAIf4R,KAAM,yDACN4iF,UAAWzmB,GACXvqC,aAAcwH,IACdljD,MACIkY,MACI,yFAKR4R,KAAM,mDACN4iF,UAAW3pC,GACXrnB,aAAcwH,IACdljD,MACIkY,MACI,yFAKR4R,KAAM,kDACN4iF,UAAWz4B,GACXv4B,aAAcwH,IACdljD,MACIkY,MACI,yFAKR4R,KAAM,oDACN4iF,UAAWhlC,GACXhsB,aAAcwH,IACdljD,MACIkY,MACI,uEAKR4R,KAAM,wBACN4iF,UAAWj4C,GACX/Y,aAAcwH,IACdljD,MACIkY,MACI,uGAKR4R,KAAM,iCACN4iF,UAAW92C,GACXla,aAAcwH,IACdljD,MACIkY,MACI,uGAKR4R,KAAM,mCACN4iF,UAAWv2E,EACXulB,aAAcwH,IACdljD,MACIkY,MACI,qFAKR4R,KAAM,sCACN4iF,UAAW/T,GACXj9C,aAAcwH,IACdljD,MACIkY,MACI,qFAKR4R,KAAM,uDACN4iF,UAAWv4E,EACXunB,aAAcwH,IACdljD,MACIkY,MACI,qFAKR4R,KAAM,4CACN4iF,UAAW32C,GACXra,aAAcwH,IACdljD,MACIkY,MACI,yFAKR4R,KAAM,sBACN4iF,UAAWnoD,GACX7I,aAAcwH,IACdljD,MAAQkY,MAAO,8CAIf4R,KAAM,6BACN4iF,UAAW9nD,GACXlJ,aAAcwH,IACdljD,MAAQkY,MAAO,8CAIf4R,KAAM,mCACN4iF,UAAWtmD,GACX1K,aAAcwH,IACdljD,MAAQkY,MAAO,8CAIf4R,KAAM,sCACN4iF,UAAW9c,GACXl0C,aAAcwH,IACdljD,MACIkY,MACI,qFAKR4R,KAAM,0DACN4iF,UAAWxc,GACXx0C,aAAcwH,IACdljD,MACIkY,MACI,qFAKR4R,KAAM,2BACN4iF,UAAWlmD,GACX9K,aAAcwH,IACdljD,MACIkY,MACI,4DAKR4R,KAAM,kCACN4iF,UAAWpiD,GACX5O,aAAcwH,IACdljD,MACIkY,MACI,4DAKR4R,KAAM,4CACN4iF,UAAW5/C,GACXpR,aAAcwH,IACdljD,MACIkY,MACI,4DAKR4R,KAAM,cACN4iF,UAAW17C,GACXtV,aAAcwH,IACdljD,MACIkY,MACI,iGAKR4R,KAAM,qBACN4iF,UAAWt6C,GACX1W,aAAcwH,IACdljD,MACIkY,MACI,2FAKR4R,KAAM,kCACN4iF,UAAWh5C,GACXhY,aAAcwH,IACdljD,MACIkY,MACI,iGAKR4R,KACI,gEACJ4iF,UAAWh8E,EACXgrB,aAAcwH,IACdljD,MACIkY,MACI,iGAKR4R,KAAM,oBACN4iF,UAAWh5C,GACXhY,aAAcwH,IACdljD,MACIkY,MACI,2FAKR4R,KAAM,YACN4iF,UAAW/7C,GACXjV,aAAcwH,IACdljD,MACIkY,MACI,2GAKR4R,KAAM,oBACN4iF,UAAW/7B,GACXj1B,aAAcwH,IACdljD,MACIkY,MACI,mIAKR4R,KAAM,6BACN4iF,UAAWx7B,GACXx1B,aAAcwH,IACdljD,MACIkY,MACI,mIAKR4R,KAAM,2CACN4iF,UAAWt7B,GACX11B,aAAcwH,IACdljD,MACIkY,MACI,mIAKR4R,KAAM,6CACN4iF,UAAWj5B,GACX/3B,aAAcwH,IACdljD,MACIkY,MACI,mIAKR4R,KAAM,yBACN4iF,UAAWnnB,GACX7pC,aAAcwH,IACdljD,MACIkY,MACI,uEAKR4R,KAAM,wBACN4iF,UAAWl6B,GACX92B,aAAcwH,IACdljD,MACIkY,MACI,2FAKR4R,KAAM,sCACN4iF,UAAW34B,GACXr4B,aAAcwH,IACdljD,MACIkY,MACI,2FAKR4R,KAAM,0BACN4iF,UAAWnkB,GACX7sC,aAAcwH,IACdljD,MACIkY,MACI,uEAKR4R,KAAM,2CACN4iF,UAAW3jF,EACX2yB,aAAcwH,IACdljD,MACIkY,MACI,6EAKR4R,KAAM,sCACN4iF,UAAWpjB,GACX5tC,aAAcwH,IACdljD,MACIkY,MACI,uEAIR4R,KAAM,mCACN4iF,UAAWb,GACXnwD,aAAcwH,IACdljD,MACIkY,MACI,uEAIR4R,KAAM,sCACN4iF,UAAWnZ,GACX73C,aAAcwH,IACdljD,MACIkY,MACI,uEAKR4R,KACI,sFACJ4iF,UAAW5iB,GACXpuC,aAAcwH,IACdljD,MACIkY,MACI,uEAKR4R,KAAM,mCACN4iF,UAAWrgB,GACX3wC,aAAcwH,IACdljD,MACIkY,MACI,6GAKR4R,KAAM,8CACN4iF,UAAWhgB,GACXhxC,aAAcwH,IACdljD,MACIkY,MACI,gFAKR4R,KAAM,uCACN4iF,UAA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B,GACAuB,GACA6B,GACAi5B,GACAhuD,GACAwyB,GACA5oB,GACA4oB,GACAmJ,GACAyyB,GACA6b,GACAlgE,GACA2oD,GACA5vF,EACAq+B,GACAK,GACAgB,GACAQ,GACAwvB,GACApvB,GACA8D,GACAwC,GACAxpB,EACAqtB,GACAytB,GACArG,GACAz0C,EACAyuE,GACA/gD,GACAoB,GACAwF,GACAO,GACAG,GACA2/C,GACAyC,GACAhnD,GACAe,GACAmB,GACAG,GACAoJ,GACA+6D,GACArd,GACAiB,GACAgC,GACAoC,GACAI,GACAQ,GACAmC,GACAliD,GACA2E,GACAoF,GACAi6C,GACAM,GACAE,GACAG,GACAK,GACAG,GACAnoF,EACAuoF,GACAvoF,EACAmvC,GACA85C,GACAj5C,GACA8D,GACAi2C,GACAn5C,GACAO,GACAE,GACA64C,GACAQ,GACA1qF,EACAyyC,GACAiB,GACAk3C,GACAI,GACAz5C,GACA86C,GACAr4C,GACAE,GACA+4C,GACAroC,GACAY,GACAmoC,GACAznC,GACAW,GACAunC,GACAO,GACAO,GACAM,GACAsB,GACAM,GACA5oC,GACAe,GACAioC,GACAoB,GACA7oC,GACAuC,GACAinC,GACAO,GACA19F,EACAk+F,GACAlgG,EACAwgG,GACAjoC,GACAgrC,GACAY,GACA1oC,GACAM,GACAxC,GACAI,GACAW,GACA/9D,EACAkpG,GACAuB,GACAU,GACAS,GACAS,GACA6D,GACAC,GACAI,GACAE,GACAliH,EACAhB,EACAm0E,GACAyxC,GACAS,GACA/wC,GACAoB,GACAowC,GACAh8G,EACAw8G,GACAS,GACAU,GACAI,GACAE,GACAI,GACArF,GACA2F,GACAW,GACAxzC,GACAE,GACA+0C,GACAe,GACAO,GACAJ,GACA/1C,GACAy2C,GACAh2C,GACAM,GACAI,GACA81C,GACAQ,GACAG,GACAE,GACAgB,GACAc,GACAY,GACAI,GACAI,GACAr5C,GACA45C,GACAr5C,GACAiB,GACAO,GACAG,GACAI,GACAyB,GACA0E,GACAM,GACAU,GACAQ,GACAmC,GACAuC,GACA7B,GACAwC,GACAqB,GACA2B,GACAiB,GACA0B,IAEJulC,SACIz2F,EAAA02F,cACAC,EAAA/6H,EACA0F,EAAArG,EACAqG,EAAAwL,EACAlS,EAAArT,EACA8pB,EAAA/pB,EAAWsvI,UACXl3H,EAAApW,EAAastI,QAAQhlC,IACjBilC,aAASn/G,QAAQw2D,QAAQ4oD,WACzBC,mBAAoBr3H,EAAAnY,EACpByvI,oBAAqB,WAEzB3lH,EAAAvoB,EAAgB8tI,UAChBvlH,EAAAxW,EAAY+7H,UACZtvF,GAAA2vF,mBACA3lH,EAAA1V,EAAag7H,SAAUM,cAAe,qBACtCC,GAAAv7H,EAAgBg7H,UAChBvlH,EAAA9pB,EAAmBqvI,UACnBvlH,EAAArW,EAAe47H,UACfvlH,EAAA/nB,EAAiBstI,UACjBvlH,EAAA1rB,EAAYixI,UACZvlH,EAAAhqB,EACAgqB,EAAA1pB,EAAcivI,UACdQ,GAAAx7H,EACAy7H,GAAAz7H,EAAcg7H,UACdU,GAAA17H,EACA27H,GAAAC,gBACAnmH,EAAAxqB,EAAiB+vI,WAErBa,WACIrzF,GACAjpC,GAEIu8H,QAAS98H,EAAAgB,EACT+7H,SAAUzlC,GACV0lC,UAEJt9F,GACA9E,GACAqL,GACA0H,GACAV,GACAx2B,EAAAzV,EACA2V,EACAF,EAAA7pB,EACAmyC,GACAtoB,EAAAvE,EACA+6B,GACAtZ,GACAld,EAAApW,EACAytC,GACA/oC,EACAw7D,GACAzlB,GACA33B,EACAs7B,GACAtN,GACA02D,GACA3/B,GACA17D,EACAsN,EACAyyC,GACAzyC,EACAkjE,GACAx0E,EAAAo6E,SACAvxB,GACAvmD,EACAmrD,GACAj5C,EACAs5C,GACAqY,GACAhd,GACAwe,GACA5xD,EACAk1D,GACAzmB,GACAkwD,GACA3nC,GACA5qE,EACA02G,GACA38D,GACA3I,GACAhyC,EACA/K,EACAkgE,GACAvsD,EACAu9G,GACAnE,GACAkH,GACAx2D,GACA2jB,GACAa,GACAsD,GACAoG,GACAQ,GACAO,GACAmG,GACAoB,GACAk0B,GA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","file":"main.023b20477c74c3721e7d.bundle.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t2: 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([\"iTwO\",0]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","\n var result = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/sass-loader/lib/loader.js!./consumer-statement.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","module.exports = \"
\\r\\n \\r\\n

Generator Facility Details

\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n {{errorMessage}}\\r\\n \\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

{{ facility.facilityName }}\\r\\n

\\r\\n
\\r\\n

Last Effective Date : {{ facility.effectiveDate | date }}

\\r\\n

Escalation Type : {{ facility.escalationType.value }}

\\r\\n
\\r\\n
\\r\\n
\\r\\n
Type: {{ facility.type }}
\\r\\n
Increase Date: {{ facility.increaseDate | date }}
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n

CPI Increase

\\r\\n
\\r\\n
\\r\\n
\\r\\n

Current CPI : {{ latestCpi.value }}%

\\r\\n
\\r\\n
\\r\\n
Effective Date: {{ latestCpi.effectiveDate | date }}
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n

Distributor Increase

\\r\\n
\\r\\n
\\r\\n
\\r\\n

Current Increase : {{ latestDistributorIncrease.increase }}%

\\r\\n

Period : {{ latestDistributorIncrease.periodName }}

\\r\\n
\\r\\n
\\r\\n
Created Date: {{ latestDistributorIncrease.createdDate | date }}
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n

Current Rates

\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n

Calculate Increases

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Increase \\r\\n %\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\"","module.exports = \"\\r\\n\\r\\n\\r\\n \\r\\n \\r\\n NDA Agreement\\r\\n\\r\\n\\r\\n
\\r\\n

Non-Disclosure and Confidentiality Agreement

\\r\\n\\r\\n
\\r\\n

Between:

\\r\\n

Party: POWERX Proprietary Limited

\\r\\n

Registration No: 2002/025037/07

\\r\\n

Address: 6th Floor, The Mall Offices, 11 Cradock Avenue, Rosebank, Johannesburg, 2196

\\r\\n

Email / Fax: thembani@powerx.energy

\\r\\n
\\r\\n\\r\\n
\\r\\n

And:

\\r\\n

Party: {{companyName}}

\\r\\n

Registration No: {{companyRegistrationNumber}}

\\r\\n

Address: {{address}}

\\r\\n

Email / Fax: {{contactNumber}}

\\r\\n
\\r\\n \\r\\n
\\r\\n

PARTIES

\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n

INTRODUCTION

\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n

1 DEFINITIONS AND INTERPRETATION

\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n

2 USE OF CONFIDENTIAL INFORMATION

\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n

3 COMMENCEMENT AND DURATION

\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n

4 LIMITATIONS

\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n

5 OWNERSHIP OF THE CONFIDENTIAL INFORMATION AND INTELLECTUAL PROPERTY

\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n

6 RETURN OF INFORMATION

\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n

7 THIRD PARTY BENEFIT

\\r\\n

To the extent a right or benefit under this Agreement is expressed to be a right or benefit\\r\\n for\\r\\n person\\r\\n not a party to this Agreement, the relevant Party/ies who is/are a party to this Agreement:\\r\\n

\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n

8 WARRANTIES

\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n

9 NOTICES

\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n

10 ENFORCEMENT, GOVERNING LAWS AND JURISDICTION

\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n

11 GENERAL

\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n

12 EXECUTION

\\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

Signed

\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n\\r\\n
\\r\\n\\r\\n\\r\\n\"","module.exports = \"\\r\\n\\r\\n
\\r\\n

Prospect Evaluation Details

\\r\\n \\r\\n {{errorMessage}}\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
Company Details
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
{{prospect.details.companyName}}\\r\\n   |   Registration Number : {{prospect.details.registrationNumber}}\\r\\n
\\r\\n
\\r\\n

Prospect Authorised : {{prospect.authorisedContact.firstName}} {{prospect.authorisedContact.lastName}}

\\r\\n

Cell Number : {{prospect.authorisedContact.cellNumber}}

\\r\\n

Telephone Number : {{prospect.authorisedContact.landLineNumber}}

\\r\\n

Email : {{prospect.authorisedContact.email}}

\\r\\n Company Contacts {{prospect.companyContacts.length}} \\r\\n
\\r\\n
\\r\\n
\\r\\n
Company Standing: {{prospect.details.companyStanding}}
\\r\\n
Company Type: {{prospect.details.companyType}}
\\r\\n
Number of Premises: {{prospect.companyPremises.length}}
\\r\\n
Total Monthly Ave: {{prospect.details.averageMonthlyConsumption}} kWh
\\r\\n
\\r\\n

First Capture : {{prospect.details.dateOfFirstCapture}}

\\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 Credit Permission Requested\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n Credit Permission Received\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Credit Rating\\r\\n \\r\\n
\\r\\n
\\r\\n Credit Score\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Credit Check Permission\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
Premises Details
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n

{{premises.premisesName}}\\r\\n - SAP Number: {{ premises.sapNumber }}\\r\\n

\\r\\n

Distribution Area: {{premises.distributor.name}}

\\r\\n

Tariff Code: {{premises.tariff.tariffCode}}

\\r\\n

Account Number: {{premises.accountNumber}}

\\r\\n

Route Number: {{premises.meterNumber}}

\\r\\n

Accounts Problem: {{premises.distributorAccountCreditProblem.value}}

\\r\\n Premise Address\\r\\n
\\r\\n
\\r\\n

First Capture : {{prospect.details.dateOfFirstCapture}}\\r\\n

\\r\\n

Total Monthly Ave: {{ premises.premisesAverageConsumption.consumption | number:'2.0-0' }} kWh

\\r\\n
\\r\\n
{{ premises.premisesProgressStatus.value }}
\\r\\n
{{ premises.premisesProgressStatus.value }}
\\r\\n
{{ premises.premisesProgressStatus.value }}
\\r\\n
{{ premises.premisesProgressStatus.value }}
\\r\\n
{{ premises.premisesProgressStatus.value }}
\\r\\n
{{ premises.premisesProgressStatus.value }}
\\r\\n
{{ premises.premisesProgressStatus.value }}
\\r\\n
{{ premises.premisesProgressStatus.value }}
\\r\\n
{{ premises.premisesProgressStatus.value }}
\\r\\n
{{ premises.premisesProgressStatus.value }}
\\r\\n
{{ premises.premisesProgressStatus.value }}
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
Premises Consumption\\r\\n TA {{ premises.premisesAverageConsumption.consumption}} kWh\\r\\n TA {{ premises.premisesAverageConsumption.consumption | number:'2.0-0'}} kWh - P {{premises.premisesAverageConsumption.peak | number:'2.0-0'}} ({{premises.premisesAverageConsumption.peak / premises.premisesAverageConsumption.consumption * 100 | number:'2.0-0'}} %) | OP {{premises.premisesAverageConsumption.offPeak | number:'2.0-0'}} ({{premises.premisesAverageConsumption.offPeak / premises.premisesAverageConsumption.consumption * 100 | number:'2.0-0'}} %) | STD {{premises.premisesAverageConsumption.standard | number:'2.0-0'}} ({{premises.premisesAverageConsumption.standard / premises.premisesAverageConsumption.consumption * 100 | number:'2.0-0'}} %) kWh\\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

Evaluation

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Evaluation Action\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n Decline Reason\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n Reason\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\"","\n var result = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/sass-loader/lib/loader.js!./consumer-company-premises-activation.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","module.exports = \"\\r\\n\\r\\n
\\r\\n

Premises Details

\\r\\n \\r\\n \\r\\n \\r\\n {{errorMessage}}\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n

Basic Information

\\r\\n
\\r\\n
\\r\\n
\\r\\n Premises Name\\r\\n Aa\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n VAT Number\\r\\n #\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Reference Number\\r\\n Aa\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Premises Type\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Route Number\\r\\n Aa\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Account Number\\r\\n Aa\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Credit Problem\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Tick if consumer has a remote meter?\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

Premises Address

\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n

Premises Consumption

\\r\\n
\\r\\n
\\r\\n
\\r\\n Distributor\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Tariff Applied For\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Month\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Year\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Peak\\r\\n #\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Off Peak\\r\\n #\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n {{ isOnePart ? 'Consumption' : 'Stardard' }}\\r\\n #\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n

Please add consumption for 12 months

\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n

Evaluation Feedback

\\r\\n
\\r\\n
\\r\\n

{{ consumerCompanyPremises.evaluationInformation }}

\\r\\n

{{ declinedMessage }}

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

Notes and Documents

\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\"","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"legend {\\n margin-bottom: unset !important; }\\n\", \"\"]);\n\n// exports\n","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"div.bs-calendar-container > div {\\n display: flex; }\\n\", \"\"]);\n\n// exports\n","\n var result = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/sass-loader/lib/loader.js!./nda-agreement.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","module.exports = \"
\\r\\n \\r\\n

Archived Generator Evaluation

\\r\\n
\\r\\n \\r\\n \\r\\n {{errorMessage}}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n

No items to display

\\r\\n
\\r\\n\\r\\n
\\r\\n
= pageStartIndex && facilityIndex <= pageEndIndex\\\" class=\\\"list-group col-sm-12 col-md-6\\\">\\r\\n\\r\\n
\\r\\n

{{listItem.facilityName}}\\r\\n \\r\\n \\r\\n First Capture : {{listItem.facilityCreatedDate | date}}\\r\\n \\r\\n

\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n Company Name: {{ listItem.companyName }}
\\r\\n
\\r\\n Generation Capacity: {{ listItem.generationCapacity }}
\\r\\n
\\r\\n Project Type: {{ listItem.projectType }}
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n Total Generation: {{ listItem.installedCapacity }} MW
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n Days Left: {{ listItem.daysLeftBeforeOverdue }}\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n {{ listItem.facilityApplicationStatus }}\\r\\n
\\r\\n
\\r\\n {{ listItem.facilityApplicationStatus }}\\r\\n
\\r\\n
\\r\\n {{ listItem.facilityApplicationStatus }}\\r\\n
\\r\\n
\\r\\n {{ listItem.facilityApplicationStatus }}\\r\\n
\\r\\n
\\r\\n {{ listItem.facilityApplicationStatus }}\\r\\n
\\r\\n
\\r\\n {{ listItem.facilityApplicationStatus }}\\r\\n
\\r\\n
\\r\\n {{listItem.facilityApplicationStatus }}\\r\\n
\\r\\n
\\r\\n {{ listItem.facilityApplicationStatus }}\\r\\n
\\r\\n
\\r\\n {{ listItem.facilityApplicationStatus }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
pageSize\\\">\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\"","\n var result = require(\"!!../../../../../../../node_modules/css-loader/index.js!../../../../../../../node_modules/sass-loader/lib/loader.js!./recs-consumer-list.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","\n var result = require(\"!!../../../../../../../node_modules/css-loader/index.js!../../../../../../../node_modules/sass-loader/lib/loader.js!./archived-generator-evaluation.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"body {\\n font-family: Arial, sans-serif;\\n line-height: 1.6;\\n margin: 20px;\\n padding: 20px;\\n border: 1px solid #ddd;\\n border-radius: 8px;\\n max-width: 800px;\\n margin: 40px auto; }\\n\\nh1 {\\n text-align: center;\\n color: #333;\\n font-size: 3em; }\\n\\nh2, h3 {\\n text-align: center;\\n color: #333;\\n font-size: 1.5em; }\\n\\n.section {\\n margin-bottom: 20px; }\\n\\n.placeholder {\\n font-style: italic;\\n color: gray; }\\n\\n.signature {\\n margin-top: 40px; }\\n .signature .signature-block {\\n margin-bottom: 20px;\\n display: flex;\\n align-items: center; }\\n .signature .signature-block label {\\n width: 50px;\\n /* Allow the label to take only the space it needs */\\n font-size: 0.9em;\\n margin-right: 30px;\\n /* Add a small gap between text and line */ }\\n .signature .signature-block .input-line {\\n flex-grow: 1;\\n /* Makes the line fill the remaining space */\\n max-width: 50%;\\n /* Set a maximum width for the line */\\n border-bottom: 2px solid #000;\\n height: 20px; }\\n\\nul {\\n list-style: none;\\n padding-left: 20px; }\\n\\nli {\\n margin-bottom: 10px;\\n text-indent: -20px;\\n padding-left: 20px;\\n font-weight: normal; }\\n\\np {\\n font-size: 1.1em;\\n margin-bottom: 10px; }\\n\\nstrong {\\n font-weight: bold; }\\n\", \"\"]);\n\n// exports\n","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\", \"\"]);\n\n// exports\n","\n var result = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/sass-loader/lib/loader.js!./consumer-and-revenue-forecast-report.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","\n var result = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/sass-loader/lib/loader.js!./downloadable-documents-component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\", \"\"]);\n\n// exports\n","module.exports = \"

Note{{!noteId ? 's' : ''}}

\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n {{errorMessage}}\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

None

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n New Note:\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
0\\\">\\r\\n
\\r\\n
\\r\\n
= pageNoteStartIndex && noteIndex <= pageNoteEndIndex\\\">\\r\\n
\\r\\n
\\r\\n

{{note.controls.value.value}}

\\r\\n

by {{note.controls.createdBy.value}} on\\r\\n {{note.controls.createdDateTime.value}}\\r\\n

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
0\\\">\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\"","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\", \"\"]);\n\n// exports\n","\n var result = require(\"!!../../../../../../../node_modules/css-loader/index.js!../../../../../../../node_modules/sass-loader/lib/loader.js!./allocation-revenue-per-energy-bracket.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","module.exports = \"\\r\\n
\\r\\n \\r\\n \\r\\n {{errorMessage}}\\r\\n
\\r\\n \\r\\n

Generator PPA Document

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Facility Name:\\r\\n
\\r\\n
\\r\\n
\\r\\n
{{facilityPpaDoc.facilityName}}
\\r\\n
\\r\\n
\\r\\n
\\r\\n Project Name:\\r\\n
\\r\\n
\\r\\n
\\r\\n
{{facilityPpaDoc.projectName}}
\\r\\n
\\r\\n
\\r\\n
\\r\\n Company Name:\\r\\n
\\r\\n
\\r\\n
\\r\\n
{{facilityPpaDoc.companyName}}
\\r\\n
\\r\\n
\\r\\n
\\r\\n Document Name:\\r\\n
\\r\\n
\\r\\n
\\r\\n
{{ facilityPpaDoc.evaluationField.documentTemplateName }}
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Long Stop Date\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n Escalation Type\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n Minimal Acceptance Install Capacity\\r\\n #\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n Administration fee after Effective date\\r\\n R\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n CP fulfillment date\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n 1st allocation period\\r\\n #\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n 2nd allocation period\\r\\n #\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n 3rd allocation period\\r\\n #\\r\\n \\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n Capital Expenditure by the Seller %\\r\\n %\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n Operating Expenditure by the Seller %\\r\\n %\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n Commercial operators date\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n

This must be on the 1st day of the month.

\\r\\n
\\r\\n\\r\\n
\\r\\n Seller License Number\\r\\n Aa\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n Administration fee after Schedule date\\r\\n R\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n Expiry duration after Effective date\\r\\n Yr\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n Increase Date\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n

This is the first increase date and annual increase date going forward.

\\r\\n
\\r\\n\\r\\n
\\r\\n Minimum installed capacity in period (MW)\\r\\n #\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n Minimum installed capacity in period (MW) 2\\r\\n #\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n Minimum installed capacity in period (MW) 3\\r\\n #\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n

Tariff Rates

\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n Distributor High Demand Rate\\r\\n R\\r\\n \\r\\n
\\r\\n
\\r\\n High Demand Rate\\r\\n R\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n Distributor Low Demand Rate\\r\\n R\\r\\n \\r\\n
\\r\\n
\\r\\n Low Demand Rate\\r\\n R\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n Tariff Type\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n Document Sent\\r\\n
\\r\\n \\r\\n
\\r\\n Document Signed\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n Signed 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 Back\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n\\r\\n \\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\"","\n var result = require(\"!!../../../../../../../node_modules/css-loader/index.js!../../../../../../../node_modules/sass-loader/lib/loader.js!./allocation-tariff-sale-rates.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","exports = module.exports = require(\"../../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\", \"\"]);\n\n// exports\n","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".span-div {\\n text-align: center; }\\n\\n.label-control {\\n text-align: left !important;\\n padding-left: 44px;\\n white-space: pre-wrap;\\n word-break: normal;\\n overflow-wrap: normal !important; }\\n\\n.error {\\n color: #EF483F; }\\n\\nspan.input-group-addon {\\n min-width: 200px;\\n background-color: white;\\n color: black;\\n border: none;\\n font-weight: bold;\\n text-align: right; }\\n\\n.input-group input {\\n border-top-left-radius: 5px !important;\\n border-bottom-left-radius: 5px !important;\\n border-top-right-radius: 0;\\n border-bottom-right-radius: 0; }\\n\\n.btn-default {\\n background-color: #EEEEEE; }\\n\\n.addon-buttons {\\n vertical-align: top; }\\n\\n.upload-container {\\n display: table;\\n padding-right: 60px;\\n padding-left: 15px; }\\n\\ninput.form-control {\\n border-top-right-radius: 0;\\n border-bottom-right-radius: 0; }\\n\\n.error-button {\\n border-radius: 0;\\n background-color: white;\\n opacity: 1; }\\n\\n.error-button:hover {\\n cursor: default;\\n background-color: white; }\\n\\n.validation {\\n border: none !important;\\n max-width: 40px;\\n min-width: 40px; }\\n\\n.btn {\\n min-width: 40px !important; }\\n\\n.document-control {\\n padding-right: 50px !important; }\\n\\n.informational-note {\\n margin-left: 200px; }\\n\", \"\"]);\n\n// exports\n","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\", \"\"]);\n\n// exports\n","module.exports = \"
\\r\\n
\\r\\n {{documentType}}\\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 {{documentType}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n

Please click the upload button once you have selected a file

\\r\\n
\\r\\n\\r\\n\"","module.exports = \"\\r\\n
\\r\\n {{errorMessage}}\\r\\n

Email Verification {{verification === '' ? 'Pending...' : verification}}

\\r\\n
\\r\\n \\r\\n
\"","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".left-margin {\\n margin-left: 15px; }\\n\", \"\"]);\n\n// exports\n","\n var result = require(\"!!../../../../../../../node_modules/css-loader/index.js!../../../../../../../node_modules/sass-loader/lib/loader.js!./allocation-power-per-technology.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","exports = module.exports = require(\"../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".pointable {\\n cursor: pointer;\\n height: 100%; }\\n\\ndiv.pointable:hover {\\n background-color: whitesmoke;\\n cursor: pointer; }\\n\\na {\\n text-decoration: none; }\\n\\nh6 {\\n margin-top: 2px;\\n margin-bottom: 2px; }\\n\\nhr {\\n margin: 3px; }\\n\\n.stats-number {\\n font-size: 16px;\\n font-weight: 700;\\n line-height: 1;\\n padding: 19px 15px 16px; }\\n\\n.stats-description {\\n text-transform: uppercase;\\n margin-bottom: 5px; }\\n\\n.padding-tb {\\n padding-bottom: 1px;\\n padding-top: 1px; }\\n\\n.badge {\\n font-weight: 100;\\n display: unset;\\n border-radius: 3px; }\\n\\n.badge.more-info {\\n color: #ff8800;\\n background-color: rgba(255, 255, 255, 0.99);\\n border: 1px solid #333; }\\n\\n.badge.declined {\\n background-color: rgba(255, 255, 255, 0.99);\\n color: red;\\n border: 1px solid #333; }\\n\\n.badge.prospect {\\n color: #333;\\n background-color: rgba(255, 255, 255, 0.99);\\n border: 1px solid; }\\n\\n.required-info {\\n color: #ff8800 !important; }\\n\\n.text-center {\\n text-align: center !important; }\\n\", \"\"]);\n\n// exports\n","module.exports = \"\\r\\n

Forecasting

\\r\\n
\\r\\n\\r\\n
\\r\\n The following parameters are invalid:\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n {{errorMessage}}\\r\\n \\r\\n \\r\\n {{latestForecastStatus}}\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
{{model.name}}
\\r\\n
\\r\\n
\\r\\n Aa\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n Yr\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Back\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Prepaid Power\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n Month\\r\\n \\r\\n \\r\\n {{value | date:'yyyy MMM'}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Weekend Percentage\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Weekday Percentage\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Variance Percentage\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Generators\\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 {{column.name}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{column.name}}\\r\\n \\r\\n \\r\\n {{value}} \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{column.name}}\\r\\n \\r\\n \\r\\n {{value}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Exclude\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Start Month\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{column.name}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Generation\\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 Consumers\\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 {{column.name}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{column.name}}\\r\\n \\r\\n \\r\\n {{value}} \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{column.name}}\\r\\n \\r\\n \\r\\n {{value}} \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{column.name}}\\r\\n \\r\\n \\r\\n {{value}} \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Exclude\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Start Month\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Profile\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Consumption\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n

Monthly Power Generation

\\r\\n
\\r\\n
\\r\\n \\r\\n {{errorMessage}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Month\\r\\n \\r\\n \\r\\n {{value | date:'MMMM yyyy'}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Power Generated KWh\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n

Monthly Power Consumption

\\r\\n
\\r\\n
\\r\\n \\r\\n {{errorMessage}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Month\\r\\n \\r\\n \\r\\n {{value | date:'MMMM yyyy'}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Power Consumption KWh\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n

Are you sure you want to Run a Forecast?

\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n\"","module.exports = \"\\r\\n\\r\\n
\\r\\n

Are you sure you want to upload meter readings for {{ConsumerSelected}}

\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n

Manual Meter Reading Upload

\\r\\n \\r\\n
\\r\\n \\r\\n
{{model.premisesName}}
\\r\\n
\\r\\n
\\r\\n Aa\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n
\\r\\n {{ConsumerSelected}}\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\"","module.exports = \"
\\r\\n \\r\\n {{errorMessage}}\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n Period\\r\\n \\r\\n \\r\\n {{ value }}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Season\\r\\n \\r\\n \\r\\n {{ value }}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Energy Bracket\\r\\n \\r\\n \\r\\n {{ value }}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n R/kWh\\r\\n \\r\\n \\r\\n {{ value | number: '1.2-5' }}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Wheeling Fee\\r\\n \\r\\n \\r\\n {{ value | number: '1.2-5' }}\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n

Add Tariff Rate


\\r\\n
\\r\\n \\r\\n {{errorMessage}}\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Period\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Season\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Energy Bracket\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n R/kWh\\r\\n R\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n Wheeling Fee\\r\\n R\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\"","\n var result = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/sass-loader/lib/loader.js!./sales-rep-list.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".horizontal-inputs {\\n width: 100%;\\n margin: 0; }\\n .horizontal-inputs div {\\n display: table; }\\n .horizontal-inputs div.first-input {\\n padding-left: 0; }\\n .horizontal-inputs div.second-input {\\n padding-right: 0; }\\n\\nspan.input-group-addon {\\n min-width: 200px;\\n background-color: white;\\n color: black;\\n border: none;\\n font-weight: bold;\\n text-align: right; }\\n\\n.input-group input {\\n border-radius: 5px; }\\n\\n.input-group,\\n.horizontal-inputs {\\n padding-right: 42px;\\n padding-left: 2px; }\\n\\n.additional-details-header {\\n display: inline-block; }\\n\\n.action-buttons {\\n width: 120px; }\\n\\n.form-actions {\\n height: 40px; }\\n\\n.checkbox {\\n margin: 5px 0 0;\\n padding: 0; }\\n .checkbox input {\\n margin: 0;\\n padding: 0;\\n height: 15px;\\n width: 15px; }\\n\\n.checkbox label input {\\n margin: 4px 0 0 -20px;\\n height: auto;\\n width: auto; }\\n\", \"\"]);\n\n// exports\n","\n var result = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/sass-loader/lib/loader.js!./allocation-summary-consumer.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"span.input-group-addon.input-addon {\\n width: 56px;\\n text-align: center !important; }\\n\", \"\"]);\n\n// exports\n","\n var result = require(\"!!../../../../node_modules/css-loader/index.js!../../../../node_modules/sass-loader/lib/loader.js!./home.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\", \"\"]);\n\n// exports\n","module.exports = \"\\r\\n
\\r\\n\\r\\n\\r\\n

Consumer Statement

\\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n
{{model.premisesName}}
\\r\\n
\\r\\n
\\r\\n Aa\\r\\n \\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n\"","module.exports = \"
\\r\\n
\\r\\n
\\r\\n

New Application

\\r\\n
\\r\\n \\r\\n {{errorMessage}}\\r\\n \\r\\n \\r\\n {{successMessage}}\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\"","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\", \"\"]);\n\n// exports\n","module.exports = \"
\\r\\n \\r\\n {{errorMessage}}\\r\\n \\r\\n

Home screen

\\r\\n
\\r\\n
\\r\\n \\r\\n {{errorMessage}}\\r\\n \\r\\n \\r\\n
\"","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\", \"\"]);\n\n// exports\n","module.exports = \"{{errorMessage}}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
SeasonEnergy BracketR/kWh chargeEffective Date
{{ tariffRate.controls.seasonName.value }}{{ tariffRate.controls.energyBracket.value.value }}\\r\\n
\\r\\n R/kWh\\r\\n \\r\\n \\r\\n
\\r\\n
{{ tariffRate.controls.effectiveDate.value | date: 'mediumDate' }}
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\"","module.exports = \"\\r\\n

Consumer Allocation Summary

\\r\\n
\\r\\n for {{startDate | date: 'MMMM yyyy' }}, run on {{\\r\\n runDate | date: 'dd MMMM yyyy\\r\\n hh:mm'\\r\\n }}\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n {{errorMessage}}\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n Edit\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Holding Company\\r\\n \\r\\n \\r\\n {{value}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Consumer Premises\\r\\n \\r\\n \\r\\n {{value}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Tariff Code\\r\\n \\r\\n \\r\\n {{value}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Allocation (Flat)\\r\\n \\r\\n \\r\\n {{ value | number : '1.2-2' | commadumper }} kWh\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Allocation (Peak)\\r\\n \\r\\n \\r\\n {{ value | number : '1.2-2' | commadumper }} kWh\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Allocation (Off-Peak)\\r\\n \\r\\n \\r\\n {{ value | number : '1.2-2' | commadumper }} kWh\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Allocation (Standard)\\r\\n \\r\\n \\r\\n {{ value | number : '1.2-2' | commadumper }} kWh\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Allocation (Total)\\r\\n \\r\\n \\r\\n {{ value | number : '1.2-2' | commadumper }} kWh\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Consumption\\r\\n \\r\\n \\r\\n {{ value | number : '1.2-2' | commadumper }} kWh\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Cost (kWh)\\r\\n \\r\\n \\r\\n R {{ value| number : '1.2-2' | commadumper }}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n PO No\\r\\n \\r\\n \\r\\n {{value}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Inv Sent\\r\\n \\r\\n \\r\\n {{value ? 'Yes' : 'No'}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Paid\\r\\n \\r\\n \\r\\n {{value ? 'Yes' : 'No'}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Pro-forma\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n Statement\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n Invoice\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n

{{curConsumer}}

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n PO Number\\r\\n \\r\\n
\\r\\n
\\r\\n Send Invoice\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n Paid\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n Amount Paid\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\"","module.exports = \"
\\r\\n \\r\\n

Prospect Details

\\r\\n
\\r\\n \\r\\n \\r\\n {{errorMessage}}\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Company Name:\\r\\n
\\r\\n
\\r\\n
\\r\\n
{{prospectDetails.companyName}}
\\r\\n
\\r\\n
\\r\\n
\\r\\n Registration Number:\\r\\n
\\r\\n
\\r\\n
\\r\\n
{{prospectDetails.registrationNumber}}
\\r\\n
\\r\\n
\\r\\n
\\r\\n Prospect Authorised:\\r\\n
\\r\\n
\\r\\n
\\r\\n
{{prospectDetails.prospectAuthorized}}
\\r\\n
\\r\\n
\\r\\n
\\r\\n Company Standing:\\r\\n
\\r\\n
\\r\\n
\\r\\n
{{prospectDetails.companyStanding}}
\\r\\n
\\r\\n
\\r\\n
\\r\\n Cell Number:\\r\\n
\\r\\n
\\r\\n
\\r\\n
{{prospectDetails.cellNumber}}
\\r\\n
\\r\\n
\\r\\n
\\r\\n Company Type:\\r\\n
\\r\\n
\\r\\n
\\r\\n
{{prospectDetails.companyType}}
\\r\\n
\\r\\n
\\r\\n
\\r\\n Telephone Number:\\r\\n
\\r\\n
\\r\\n
\\r\\n
{{prospectDetails.telephoneNumber}}
\\r\\n
\\r\\n
\\r\\n
\\r\\n Number of Premises:\\r\\n
\\r\\n
\\r\\n
\\r\\n
{{prospectDetails.numberOfPremises}}
\\r\\n
\\r\\n
\\r\\n
\\r\\n Email:\\r\\n
\\r\\n
\\r\\n
\\r\\n
{{prospectDetails.email}}
\\r\\n
\\r\\n
\\r\\n
\\r\\n First Capture:\\r\\n
\\r\\n
\\r\\n
\\r\\n
{{prospectDetails.dateOfFirstCapture}}
\\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 Credit Permission Requested\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n Credit Permission Received\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Credit Rating\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n Credit Score\\r\\n #\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\"","\n var result = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/sass-loader/lib/loader.js!./application-reports.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".actions {\\n padding-top: 8px; }\\n\\n.table-input {\\n width: 80% !important; }\\n\\ninput.exclude-checkbox {\\n margin-top: 10px !important; }\\n\\n.form-control {\\n border-radius: 5px !important; }\\n\", \"\"]);\n\n// exports\n","\n var result = require(\"!!../../../../node_modules/css-loader/index.js!../../../../node_modules/sass-loader/lib/loader.js!./navigation-bar.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","module.exports = \"\\r\\n
\\r\\n \\r\\n \\r\\n {{errorMessage}}\\r\\n
\\r\\n \\r\\n

Generator PPA Schedule

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Facility Name:\\r\\n
\\r\\n
\\r\\n
\\r\\n
{{ ppaSchedule.facilityName }}
\\r\\n
\\r\\n
\\r\\n
\\r\\n Project Name:\\r\\n
\\r\\n
\\r\\n
\\r\\n
{{ ppaSchedule.projectName}}
\\r\\n
\\r\\n
\\r\\n
\\r\\n Company Name:\\r\\n
\\r\\n
\\r\\n
\\r\\n
{{ ppaSchedule.companyName }}
\\r\\n
\\r\\n
\\r\\n
\\r\\n Document Name:\\r\\n
\\r\\n
\\r\\n
\\r\\n
{{ ppaSchedule.evaluationField.documentTemplateName }}
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Escalation Type\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n Increase Date\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n

This is the first increase date and annual increase date going forward.

\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n

Tariff Rates

\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n Distributor High Demand Rate\\r\\n R\\r\\n \\r\\n
\\r\\n
\\r\\n High Demand Rate\\r\\n R\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n Distributor Low Demand Rate\\r\\n R\\r\\n \\r\\n
\\r\\n
\\r\\n Low Demand Rate\\r\\n R\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n Tariff Type\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n Document Sent\\r\\n
\\r\\n \\r\\n
\\r\\n Document Signed\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n Signed 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 Back\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\"","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\", \"\"]);\n\n// exports\n","module.exports = \"
\\r\\n
\\r\\n

Edit Consumer Company Premises

\\r\\n
Company Name: {{companyName}}\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\"","\n var result = require(\"!!../../../../node_modules/css-loader/index.js!../../../../node_modules/sass-loader/lib/loader.js!./information-card.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","\n var result = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/sass-loader/lib/loader.js!./consumer-company-premises-list.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","exports = module.exports = require(\"../../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".component-container {\\n box-shadow: none; }\\n\", \"\"]);\n\n// exports\n","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".consumer-search {\\n padding-right: 60px;\\n padding-left: 15px; }\\n\\n.upload-container {\\n padding-right: 60px;\\n padding-left: 15px; }\\n\\ninput.form-control {\\n border-top-right-radius: 0;\\n border-bottom-right-radius: 0; }\\n\\n.error-button {\\n border-radius: 0;\\n background-color: white;\\n opacity: 1; }\\n\\n.error-button:hover {\\n cursor: default;\\n background-color: white; }\\n\\n.validation {\\n border: none !important;\\n max-width: 40px;\\n min-width: 40px; }\\n\\n.btn {\\n min-width: 40px !important; }\\n\", \"\"]);\n\n// exports\n","module.exports = \"\\r\\n\\r\\n
\\r\\n

PPA Schedule GenerationView Details

\\r\\n \\r\\n \\r\\n {{errorMessage}}\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n

Premises PPA Schedule Details

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

\\\"Consumer\\\"\\r\\n {{ consumerPremisesDetail.companyName }} (\\r\\n {{ consumerPremisesDetail.companyType }} ) Registration number\\r\\n {{ consumerPremisesDetail.registrationNumber }}\\r\\n

\\r\\n
\\r\\n

\\\"Premises\\\" means\\r\\n {{ consumerPremisesDetail.premisesAddress.addressLine1 }},\\r\\n {{ consumerPremisesDetail.premisesAddress.addressLine2 }},\\r\\n {{ consumerPremisesDetail.premisesAddress.addressLine3 }},\\r\\n {{ consumerPremisesDetail.premisesAddress.city }},\\r\\n {{ consumerPremisesDetail.premisesAddress.postalCode }}.\\r\\n \\r\\n

\\r\\n

Meter no\\r\\n {{ consumerPremisesDetail.premisesMeterNumber }}\\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

Consumer Address

\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n

{{ consumerPremisesDetail.companyAddress.addressLine2 }}

\\r\\n

{{ consumerPremisesDetail.companyAddress.addressLine3 }}

\\r\\n

{{ consumerPremisesDetail.companyAddress.city }}, {{ consumerPremisesDetail.companyAddress.postalCode }}

\\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

Authorized Contact

\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n

CAPACITY: {{ consumerPremisesDetail.authorizedPosition }}

\\r\\n

(who warrants that he is duly authorised thereto)

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

CP Fulfilment Date and Expiry Term

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n CP Fulfillment Date\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Expiry Term in Years\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\"","module.exports = \"\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n {{errorMessage}}\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\"","\n var result = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/sass-loader/lib/loader.js!./providers-list.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","module.exports = \"
\\r\\n
\\r\\n \\r\\n

Distributor Power Traded Per Technology

\\r\\n
\\r\\n \\r\\n {{errorMessage}}\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n Technology Type\\r\\n \\r\\n \\r\\n {{value}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Percentage\\r\\n \\r\\n \\r\\n {{value | number: '1.2-2'}} %\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n High Demand Tariff\\r\\n \\r\\n \\r\\n R {{ value | number: '1.5-5'}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Low Demand Tariff\\r\\n \\r\\n \\r\\n R {{ value | number: '1.5-5'}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Effective Date\\r\\n \\r\\n \\r\\n {{ value | date: 'yyyy/MM/dd' }}\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n

Distributor Power Traded Per Technology

\\r\\n
\\r\\n
\\r\\n {{errorMessage}}\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Technology\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Percentage\\r\\n %\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n High Demand Tariff\\r\\n R\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Low Demand Tariff\\r\\n R\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Effective 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
\"","\n var result = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/sass-loader/lib/loader.js!./wheeling-fees.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","module.exports = \"
\\r\\n

Company Premises

\\r\\n \\r\\n \\r\\n {{errorMessage}}\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n Premises Name\\r\\n \\r\\n \\r\\n {{value}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Distributor\\r\\n \\r\\n \\r\\n {{value}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Progress Status\\r\\n \\r\\n \\r\\n
{{ value }}
\\r\\n
{{ value }}
\\r\\n
{{ value }}
\\r\\n
{{ value }}
\\r\\n
{{ value }}
\\r\\n
{{ value }}
\\r\\n
{{ value }}
\\r\\n
{{ value }}
\\r\\n
{{ value }}
\\r\\n
{{ value }}
\\r\\n
{{ value }}
\\r\\n
{{ value }}
\\r\\n
{{ value }}
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n Status\\r\\n \\r\\n \\r\\n {{value}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Sap Number\\r\\n \\r\\n \\r\\n {{value}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Reference Number\\r\\n \\r\\n \\r\\n {{value}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n RECs\\r\\n \\r\\n \\r\\n {{value}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Tariff Code\\r\\n \\r\\n \\r\\n {{value}}\\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

Add Premises

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Premises Name\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Premises Type\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Distributor\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Account Number\\r\\n Aa\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Smart Meter Installed\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\"","module.exports = \"\\r\\n
\\r\\n \\r\\n

Generation To Date (Current Month)

\\r\\n
\\r\\n {{errorMessage}}\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\"","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\", \"\"]);\n\n// exports\n","module.exports = \"
\\r\\n

Error 403

\\r\\n

Forbidden!

\\r\\n
\\r\\n\"","\n var result = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/sass-loader/lib/loader.js!./bulk-meter-list.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".pointable {\\n cursor: pointer;\\n height: 100%; }\\n\\ndiv.pointable:hover {\\n background-color: whitesmoke;\\n cursor: pointer; }\\n\\na {\\n text-decoration: none; }\\n\\nh6 {\\n margin-top: 2px;\\n margin-bottom: 2px; }\\n\\nhr {\\n margin: 3px; }\\n\\n.stats-number {\\n font-size: 16px;\\n font-weight: 700;\\n line-height: 1;\\n padding: 19px 15px 16px; }\\n\\n.stats-description {\\n text-transform: uppercase;\\n margin-bottom: 5px; }\\n\\n.padding-tb {\\n padding-bottom: 1px;\\n padding-top: 1px; }\\n\\n.badge.more-info {\\n color: #ff8800;\\n background-color: rgba(255, 255, 255, 0.99);\\n border: 1px solid #333; }\\n\\n.badge.declined {\\n background-color: rgba(255, 255, 255, 0.99);\\n color: red;\\n border: 1px solid #333; }\\n\\n.badge.prospect {\\n color: #333;\\n background-color: rgba(255, 255, 255, 0.99);\\n border: 1px solid; }\\n\\n.required-info {\\n color: #ff8800 !important; }\\n\", \"\"]);\n\n// exports\n","\n var result = require(\"!!../../../../../../../node_modules/css-loader/index.js!../../../../../../../node_modules/sass-loader/lib/loader.js!./revenue-forecast-warnings.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","\n var result = require(\"!!../../../../../../../node_modules/css-loader/index.js!../../../../../../../node_modules/sass-loader/lib/loader.js!./allocation-warning.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\", \"\"]);\n\n// exports\n","exports = module.exports = require(\"../../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"span.input-group-addon {\\n min-width: 100px; }\\n\", \"\"]);\n\n// exports\n","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".horizontal-inputs {\\n width: 100%;\\n margin: 0; }\\n .horizontal-inputs div {\\n display: table; }\\n .horizontal-inputs div.first-input {\\n padding-left: 0;\\n padding-bottom: 12px; }\\n .horizontal-inputs div.second-input {\\n padding-right: 0; }\\n\\nspan.input-group-addon {\\n min-width: 200px;\\n background-color: white;\\n color: black;\\n border: none;\\n font-weight: bold;\\n text-align: right; }\\n\\n.input-group input {\\n border-radius: 5px; }\\n\\n.input-group,\\n.horizontal-inputs {\\n padding-right: 40px; }\\n\\n.additional-details-header {\\n display: inline-block; }\\n\\n.action-buttons {\\n width: 120px; }\\n\\n.form-actions {\\n height: 40px; }\\n\\n.checkbox {\\n margin: 5px 0 0;\\n padding: 0; }\\n .checkbox input {\\n margin: 0;\\n padding: 0;\\n height: 15px;\\n width: 15px; }\\n\\n.checkbox label input {\\n margin: 4px 0 0 -20px;\\n height: auto;\\n width: auto; }\\n\\n.list-group-item.active {\\n color: black;\\n background-color: lightgray;\\n border-color: darkgray; }\\n\\n.list-group-item.active .list-group-item-text {\\n color: gray; }\\n\\n.left-pull {\\n padding-right: 186px;\\n text-align: right; }\\n\\n.input-group-addon.date {\\n padding-right: 35px; }\\n\\n.input-group-addon.consumption {\\n padding-right: 70px; }\\n\\n.badge {\\n font-weight: 100;\\n display: unset;\\n border-radius: 3px; }\\n\\n.evaluation {\\n color: #0aa8d8;\\n background-color: rgba(255, 255, 255, 0.99);\\n border: 1px solid; }\\n\\n.offer {\\n color: #5cb85c;\\n background-color: rgba(255, 255, 255, 0.99);\\n border: 1px solid; }\\n\\n.more-info {\\n color: #ff8800;\\n background-color: rgba(255, 255, 255, 0.99);\\n border: 1px solid; }\\n\\n.prospect {\\n color: #333;\\n background-color: rgba(255, 255, 255, 0.99);\\n border: 1px solid; }\\n\\n.declined {\\n background-color: rgba(255, 255, 255, 0.99);\\n color: red;\\n border: 1px solid; }\\n\\n.prospect-ppa {\\n background-color: rgba(255, 255, 255, 0.99);\\n color: #0037ff;\\n border: 1px solid; }\\n\\n.activation {\\n background-color: rgba(255, 255, 255, 0.99);\\n color: #3136ff;\\n border: 1px solid; }\\n\\n.activated {\\n background-color: rgba(255, 255, 255, 0.99);\\n color: #2dcb16;\\n border: 1px solid; }\\n\\n.pointable {\\n cursor: pointer; }\\n\\n.input-group {\\n padding-right: 40px;\\n padding-left: 2px; }\\n\", \"\"]);\n\n// exports\n","module.exports = \"\\r\\n
\\r\\n \\r\\n

Monthly Power Import Limit ({{tradingLimit}} kWh)

\\r\\n
\\r\\n {{errorMessage}}\\r\\n \\r\\n
\\r\\n
\\r\\n No data to display\\r\\n
\\r\\n
0\\\" class=\\\"row\\\">\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n {{message}}\\r\\n
\\r\\n
\"","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".company-name {\\n text-align: right; }\\n\", \"\"]);\n\n// exports\n","\n var result = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/sass-loader/lib/loader.js!./distributor-power-trading-limits.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","\n var result = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/sass-loader/lib/loader.js!./document-maintenance.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","module.exports = \"
\\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
Application Reference Number: {{applicationReferenceNumber}}
\\r\\n

Generator Phase 1 Application

\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
Please note that there is an autosave every 5 minutes, to avoid loss of entries within 5 minute interval kindly save before closing application
\\r\\n
Please note that the NDA can be downloaded here for review and sign off
\\r\\n
Application Reference Number: {{applicationReferenceNumber}}
\\r\\n

SPV Project Capture

\\r\\n \\r\\n \\r\\n {{errorMessage}}\\r\\n \\r\\n 0\\\">\\r\\n
\\r\\n

SPV project {{projectIndex + 1}}'s micro facilities combined generation in MW exceeds the maximum of\\r\\n 2MW\\r\\n

\\r\\n
\\r\\n
\\r\\n 0\\\">\\r\\n
\\r\\n

SPV project {{projectIndex + 1}} must have a facility\\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
Project Company Detail
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Company Name\\r\\n Aa\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n Company Type\\r\\n Aa\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n Registration Number\\r\\n #\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n VAT Number\\r\\n #\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n Switchboard Phone Number\\r\\n #\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Contact Person Detail
\\r\\n
\\r\\n
\\r\\n
\\r\\n First Name\\r\\n Aa\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n Last Name\\r\\n Aa\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Cellphone Number\\r\\n #\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n Work Number\\r\\n #\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n ID Number\\r\\n #\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n Job Title\\r\\n Aa\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Email Address\\r\\n @\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Project Detail
\\r\\n
\\r\\n
\\r\\n
\\r\\n Project Name\\r\\n Aa\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Generation Capacity\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n Technology Type\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Co Generation\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n

Co generation is electricity generation as a by-product of the main function of business,\\r\\n meaning power generation is not your core business function

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Distribution Area
\\r\\n
\\r\\n
\\r\\n
\\r\\n Distribution Area\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n

Note: Please select ESKOM should your project not fall under a municipal distribution area

\\r\\n
\\r\\n
\\r\\n
\\r\\n

Facilities

\\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
Project Facility Detail
\\r\\n\\r\\n
\\r\\n
\\r\\n Facility Name\\r\\n Aa\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Connection Voltage\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n Project Type\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Installed Capacity\\r\\n MW\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n Contracted Capacity\\r\\n MW\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n Is Embedded\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n

Connection is on the consumers side of the meter. And power could also\\r\\n be used by the generator

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Facility GPS Co-ordinates
\\r\\n
\\r\\n
\\r\\n Latitude\\r\\n #\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n Longitude\\r\\n #\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Facility Address
\\r\\n
\\r\\n
\\r\\n
\\r\\n Address Line 1\\r\\n Aa\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Address Line 2\\r\\n Aa\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Address Line 3\\r\\n Aa\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Province\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n City\\r\\n Aa\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Postal Code\\r\\n #\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n Is Rural Address\\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 Back\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\"","\n var result = require(\"!!../../../node_modules/css-loader/index.js!../../../node_modules/sass-loader/lib/loader.js!./form.styles.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","\n var result = require(\"!!../../../../node_modules/css-loader/index.js!../../../../node_modules/sass-loader/lib/loader.js!./sap-export.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"legend {\\n margin-bottom: unset !important; }\\n\", \"\"]);\n\n// exports\n","\n var result = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/sass-loader/lib/loader.js!./generator-project-ppa-maintenance.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".badge {\\n font-weight: 100;\\n display: unset;\\n border-radius: 3px; }\\n\\n.evaluation {\\n color: #0aa8d8;\\n background-color: rgba(255, 255, 255, 0.99);\\n border: 1px solid; }\\n\\n.offer {\\n color: #5cb85c;\\n background-color: rgba(255, 255, 255, 0.99);\\n border: 1px solid; }\\n\\n.more-info {\\n color: #ff8800;\\n background-color: rgba(255, 255, 255, 0.99);\\n border: 1px solid; }\\n\\n.prospect {\\n color: #333;\\n background-color: rgba(255, 255, 255, 0.99);\\n border: 1px solid; }\\n\\n.declined {\\n background-color: rgba(255, 255, 255, 0.99);\\n color: red;\\n border: 1px solid; }\\n\\n.prospect-ppa {\\n background-color: rgba(255, 255, 255, 0.99);\\n color: #0037ff;\\n border: 1px solid; }\\n\\n.activation {\\n background-color: rgba(255, 255, 255, 0.99);\\n color: #3136ff;\\n border: 1px solid; }\\n\\n.activated {\\n background-color: rgba(255, 255, 255, 0.99);\\n color: #2dcb16;\\n border: 1px solid; }\\n\\n.pointable {\\n cursor: pointer; }\\n\", \"\"]);\n\n// exports\n","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\", \"\"]);\n\n// exports\n","module.exports = \"\\r\\n\\r\\n
\\r\\n \\r\\n

New Prospect

\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n {{errorMessage}}\\r\\n \\r\\n \\r\\n {{ successMessage }}\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n

Sales Rep

\\r\\n
\\r\\n
\\r\\n Assigned to prospect\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n

Company Details

\\r\\n
\\r\\n
\\r\\n Company Name\\r\\n Aa\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Registration Number\\r\\n #\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n Telephone Number\\r\\n #\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Company Type\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n Company Standing\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n VAT Number\\r\\n #\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n Tax Year Begin Date\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n

Company Address

\\r\\n
\\r\\n
\\r\\n
\\r\\n Address Line 1\\r\\n Aa\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Address Line 2\\r\\n Aa\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Address Line 3\\r\\n Aa\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Province\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n City\\r\\n Aa\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Postal Code\\r\\n #\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n

Company Contacts

\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n
\\r\\n\\r\\n
Contact Details {{i + 1}}
\\r\\n
\\r\\n
\\r\\n First Name\\r\\n Aa\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n Last Name\\r\\n Aa\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Cellphone Number\\r\\n #\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n Work Number\\r\\n #\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n ID Number\\r\\n #\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n Job Title\\r\\n Aa\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Email Address\\r\\n @\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n Contact Type(s)\\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

Company Premises

\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
Company Premises
\\r\\n
\\r\\n
\\r\\n
\\r\\n Premises Name\\r\\n Aa\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Premises Type\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n Account Number\\r\\n Aa\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Smart Meter Installed\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Distribution Area\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Tariff Codes Provided\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Provided Tariff Code
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Tariff Code\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\"","\n var result = require(\"!!../../../../../../../node_modules/css-loader/index.js!../../../../../../../node_modules/sass-loader/lib/loader.js!./allocation-prepaid-revenue.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","\n var result = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/sass-loader/lib/loader.js!./average-purchase-and-sales-rate.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","module.exports = \"
\\r\\n
\\r\\n \\r\\n
{{loadingText}}
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n {{loadingText}}\\r\\n
\\r\\n
\"","\n var result = require(\"!!../../../../node_modules/css-loader/index.js!../../../../node_modules/sass-loader/lib/loader.js!./consumption.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","module.exports = \"
\\r\\n \\r\\n {{errorMessage}}\\r\\n \\r\\n \\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n Effective Date\\r\\n \\r\\n \\r\\n {{value | date:'dd/MM/yyyy'}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Weekend Percentage\\r\\n \\r\\n \\r\\n {{value | number:'1.2-2'}}%\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Weekday Percentage\\r\\n \\r\\n \\r\\n {{value | number:'1.2-2'}}%\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n

Prepaid Removal Percentages

\\r\\n
\\r\\n
\\r\\n \\r\\n {{errorMessage}}\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Effective Date\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Weekday Percentage\\r\\n %\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Weekend Percentage\\r\\n %\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\"","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".company-name {\\n text-align: right; }\\n\", \"\"]);\n\n// exports\n","\n var result = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/sass-loader/lib/loader.js!./power-traded-per-technology.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","\n var result = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/sass-loader/lib/loader.js!./nda-agreement-template.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","\n var result = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/sass-loader/lib/loader.js!./document-template-upload.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","exports = module.exports = require(\"../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\", \"\"]);\n\n// exports\n","\n var result = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/sass-loader/lib/loader.js!./trading-limits-per-tariff.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","module.exports = \"\\r\\n
\\r\\n \\r\\n

Finalization

\\r\\n
\\r\\n {{errorMessage}}\\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
\"","module.exports = \"\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n {{errorMessage}}\\r\\n
\\r\\n \\r\\n

{{ header }}

\\r\\n
\\r\\n \\r\\n {{ validationMessage}}\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n Contact\\r\\n \\r\\n
{{model.name}}
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n

Territory

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n National\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Provinces\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n

Sales Targets

\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n Tariff\\r\\n \\r\\n \\r\\n {{value.tariffCode}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Year\\r\\n \\r\\n \\r\\n {{value}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Quarter\\r\\n \\r\\n \\r\\n {{value.value}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Peak\\r\\n \\r\\n \\r\\n {{value | number: '1.5-5'}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Off Peak\\r\\n \\r\\n \\r\\n {{value | number: '1.5-5'}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Standard\\r\\n \\r\\n \\r\\n {{value | number: '1.5-5'}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Action\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n

Sales Target

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Tariff\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Year\\r\\n Yr\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Quarter\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Peak\\r\\n kWh\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Off Peak\\r\\n kWh\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Standard\\r\\n kWh\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\"","\n var result = require(\"!!../../../../node_modules/css-loader/index.js!../../../../node_modules/sass-loader/lib/loader.js!./allocation.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","module.exports = \"\\r\\n\\r\\n\\r\\n
\\r\\n \\r\\n

Consumer Companies

\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n {{errorMessage}}\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n

\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n Name\\r\\n \\r\\n \\r\\n {{value}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Registration Number\\r\\n \\r\\n \\r\\n {{value}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Type\\r\\n \\r\\n \\r\\n {{value}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Standing\\r\\n \\r\\n \\r\\n {{value}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Sales Rep\\r\\n \\r\\n \\r\\n {{value}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Agreement Term\\r\\n \\r\\n \\r\\n {{value}} years\\r\\n \\r\\n Distributors\\r\\n \\r\\n \\r\\n \\r\\n Avg Allocation\\r\\n \\r\\n \\r\\n {{value | number}} kWh\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Avg Consumption\\r\\n \\r\\n \\r\\n {{value | number}} kWh\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Options\\r\\n \\r\\n \\r\\n\\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\"","module.exports = \"
\\r\\n \\r\\n \\r\\n\\r\\n
\\r\\n \\r\\n

SAP Export

\\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
\"","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".checkbox {\\n padding-bottom: 20px;\\n padding-left: 50px; }\\n\\n.remove-tariff {\\n margin-top: -45px; }\\n\", \"\"]);\n\n// exports\n","module.exports = \"\\r\\n
\\r\\n \\r\\n

RECs & Debtors Invoice

\\r\\n
for {{startDate | date: 'MMMM yyyy' }}, run on {{ runDate | date: 'dd MMMM yyyy HH:mm'}}
\\r\\n
\\r\\n \\r\\n {{errorMessage}}\\r\\n
\\r\\n
\\r\\n \\r\\n\\r\\n \\r\\n\\r\\n \\r\\n\\r\\n\\r\\n \\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

{{ recsSummary.totalRecs | number | commadumper }}

\\r\\n
\\r\\n
\\r\\n
Certificates
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

Total RECs

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

{{ recsSummary.totalPowerGeneration | number: '1.2-2' | commadumper }}

\\r\\n
\\r\\n
\\r\\n
kWh
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

Total Power

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

{{ recsSummary.totalEligiblePower | number: '1.2-2' | commadumper }}

\\r\\n
\\r\\n
\\r\\n
kWh
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

Total Eligible Power

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

{{ recsSummary.powerCarriedOver | number: '1.2-2' | commadumper }}

\\r\\n
\\r\\n
\\r\\n
kWh
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

Power Carried Over

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n

RECs Breakdown

\\r\\n
\\r\\n Allocated RECs: {{ recsSummary.allocatedRecs | number | commadumper }} Certificates\\r\\n
\\r\\n Unallocated RECs: {{ recsSummary.unallocatedRecs | number | commadumper }} Certificates\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n \\r\\n
\\r\\n

Sent Invoice Emails

\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n Consumer Premise\\r\\n \\r\\n \\r\\n {{ value }}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Email Address\\r\\n \\r\\n \\r\\n {{ value }}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Email Sent\\r\\n \\r\\n \\r\\n {{ value }}\\r\\n \\r\\n \\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\"","\n var result = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/sass-loader/lib/loader.js!./frequently-asked-questions.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","module.exports = \"
\\r\\n \\r\\n

CPI History

\\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 CPI %\\r\\n \\r\\n \\r\\n {{ value }}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Effective Date\\r\\n \\r\\n \\r\\n {{ value | date: 'yyyy/MM/dd'}}\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n

CPI Parameters

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Consumer Price Index %\\r\\n %\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Effective 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
\"","module.exports = \"
\\r\\n \\r\\n

Integrator Provider Detail

\\r\\n
\\r\\n \\r\\n {{errorMessage}}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Provider Name\\r\\n Aa\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n {{column.name}}\\r\\n \\r\\n \\r\\n {{value | date:'yyyy-MM-dd HH:mm'}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{column.name}}\\r\\n \\r\\n \\r\\n {{value | date:'yyyy-MM-dd'}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{column.name}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{column.name}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n Delete\\r\\n \\r\\n \\r\\n \\r\\n\\r\\n\\r\\n\\r\\n \\r\\n \\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n {{column.name}}\\r\\n \\r\\n \\r\\n {{value | date:'yyyy-MM-dd HH:mm'}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{column.name}}\\r\\n \\r\\n \\r\\n {{value | date:'yyyy-MM-dd'}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{column.name}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{column.name}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n Delete\\r\\n \\r\\n \\r\\n \\r\\n\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n

Import Integrator Provider Service Fees

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n Effective Date\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n Upload Fees\\r\\n \\r\\n \\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n {{errorMessage}}\\r\\n \\r\\n \\r\\n \\r\\n kWh\\r\\n \\r\\n \\r\\n {{value}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Price per kWh\\r\\n \\r\\n \\r\\n {{value}}\\r\\n \\r\\n \\r\\n\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n {{errorMessage}}\\r\\n \\r\\n \\r\\n \\r\\n Max Consumer Count\\r\\n \\r\\n \\r\\n {{value}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Cost Per Consumer\\r\\n \\r\\n \\r\\n {{value}}\\r\\n \\r\\n \\r\\n\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\"","\n var result = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/sass-loader/lib/loader.js!./consumer-sales-reports.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","module.exports = \"
\\r\\n \\r\\n Download All\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\"","module.exports = \"\\r\\n\\r\\n
\\r\\n

Offer Generation\\r\\n \\r\\n \\r\\n View Details\\r\\n \\r\\n \\r\\n \\r\\n

\\r\\n \\r\\n {{errorMessage}}\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n

Electricity Consumption

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

This proposal is based on\\r\\n {{ prospect.details.companyName }} with registration number\\r\\n {{ prospect.details.registrationNumber }} for the following approved premises.\\r\\n

\\r\\n
\\r\\n
\\r\\n
\\r\\n
    \\r\\n
  • \\r\\n {{k+1}}.\\r\\n {{ premises.premisesName }} meter no\\r\\n {{ premises.meterNumber }} on account no\\r\\n {{ premises.accountNumber }}\\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

Transaction Structure

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

We are offering\\r\\n {{ prospect.details.companyName }} a discount of\\r\\n {{ offer.discount }}% below the current\\r\\n {{ distributionArea }} municipality tariff\\r\\n {{ tariffCode }} as approved by NERSA\\r\\n {{ offer.season }} .\\r\\n {{ prospect.details.companyName }} has an estimated annual consumption of\\r\\n {{ premisesConsumption }} kWh. POWERX will supply up to\\r\\n {{ offer.summerAllocation }}% of the Summer consumption &\\r\\n {{ offer.winterAllocation }}% of the winter consumption.\\r\\n

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n {{errorMessage}}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n %\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n %\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n

{{ offer.discount }}% in peak periods only

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n

Tariff Comparison

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n

The financial projections and potential saving shown below:

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Override Covered Consumption\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n %\\r\\n 0) || disableProjectionUpdate\\\">\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n R\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n kWh\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
YearNMBM IncreaseNMBM PricePOWERX IncreasePOWERX PricePOWERX kWhSavingsAction
{{savings.year}}{{savings.municipalIncrease}} %R {{savings.municipalPrice | number:'0.4-4'}}{{savings.powerXIncrease}} %R {{savings.powerXPrice | number:'0.4-4'}}{{savings.powerXKwh | number:'0.0-0'}} kWhR {{savings.savings | number:'0.0-2'}}\\r\\n \\r\\n
\\r\\n {{ offer.premisesSavingsProjections.length }} Year Savings\\r\\n \\r\\n \\r\\n R {{ offer.totalSavings | number: '0.0-2' }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n

Offer Progress

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Offer Document Sent\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n Offer Accepted\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n

Are you sure you want to Archive Offer?

\\r\\n \\r\\n \\r\\n
\\r\\n
\"","\n var result = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/sass-loader/lib/loader.js!./consumer-companies-list.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","\n var result = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/sass-loader/lib/loader.js!./facility-details.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","\n var result = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/sass-loader/lib/loader.js!./edit-generator-company.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","module.exports = \"
\\r\\n
\\r\\n \\r\\n {{errorMessage}}\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n\\r\\n \\r\\n \\r\\n Period\\r\\n \\r\\n \\r\\n {{ value }}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Increase %\\r\\n \\r\\n \\r\\n {{ value }}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Date Created\\r\\n \\r\\n \\r\\n {{ value | date: 'yyyy/MM/dd'}}\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n

Distributor Increase

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Period\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Increase\\r\\n %\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\"","\n var result = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/sass-loader/lib/loader.js!./premises-list.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","exports = module.exports = require(\"../../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".pointable {\\n cursor: pointer; }\\n\\na {\\n text-decoration: none; }\\n\\n.mark,\\nmark {\\n background-color: #fcf8e3;\\n font-weight: 700; }\\n\\n.checks {\\n margin-top: 15px;\\n padding: 16px; }\\n\\n.must-fill {\\n text-decoration-color: crimson;\\n color: crimson; }\\n\\n.push-down {\\n margin-top: 14px; }\\n\\n.sub-article-no-outline {\\n border: transparent !important; }\\n\\nspan.informational-note {\\n margin-left: 15px; }\\n\\nspan.input-group-addon {\\n min-width: unset !important; }\\n\\n.far {\\n font-size: 1.8rem; }\\n\", \"\"]);\n\n// exports\n","\n var result = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/sass-loader/lib/loader.js!./generator-reports.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","exports = module.exports = require(\"../../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".fa {\\n font-size: xx-large;\\n border: 2px solid;\\n padding: 10px;\\n border-radius: 3px;\\n color: red; }\\n\\nh5 {\\n margin-top: 0; }\\n\", \"\"]);\n\n// exports\n","module.exports = \"\\r\\n
\\r\\n {{ displayName }}\\r\\n \\r\\n \\r\\n
\\r\\n
\"","module.exports = \"
\\r\\n \\r\\n
\\r\\n \\r\\n

Distributor Activation Report

\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n Distributor\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n Start Date\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n End 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
\"","\n var result = require(\"!!../../../../../../../node_modules/css-loader/index.js!../../../../../../../node_modules/sass-loader/lib/loader.js!./archived-prospect-evaluation.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\", \"\"]);\n\n// exports\n","\n var result = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/sass-loader/lib/loader.js!./consumer-ppa-renewal-notifications.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","module.exports = \"
\\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 Name\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Service Fee\\r\\n R\\r\\n \\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\"","\n var result = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/sass-loader/lib/loader.js!./generator-project-facility-activation.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","\n var result = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/sass-loader/lib/loader.js!./consumer-company-details.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","module.exports = \"
\\r\\n \\r\\n \\r\\n
\"","\n var result = require(\"!!../../../../../../../node_modules/css-loader/index.js!../../../../../../../node_modules/sass-loader/lib/loader.js!./allocation-run-summary-blocks.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","\n var result = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/sass-loader/lib/loader.js!./forecast.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","module.exports = \"
\\r\\n \\r\\n \\r\\n {{errorMessage}}\\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
\"","\n var result = require(\"!!../../../../../../../node_modules/css-loader/index.js!../../../../../../../node_modules/sass-loader/lib/loader.js!./generation-data.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","module.exports = \"
\\r\\n \\r\\n

Consumer PPA Renewal Notifications

\\r\\n
\\r\\n \\r\\n \\r\\n {{errorMessage}}\\r\\n \\r\\n
\\r\\n

None

\\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 Back\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\"","module.exports = \"
\\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
Please note that there is an autosave every 5 minutes, to avoid loss of entries within 5 minute interval kindly save before closing application
\\r\\n
Please note that the NDA can be downloaded here for review and sign off
\\r\\n
Application Reference Number: {{generatorApplication.applicationRefNumber}}\\r\\n
\\r\\n

Phase 2 Application Capture

\\r\\n \\r\\n {{errorMessage}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n {{generatorApplication.generatorProjects[generatorProjectIndex].facilities[facilityIndex].isExistingFacility ? 'Existing' : 'New '}} {{generatorApplication.generatorProjects[generatorProjectIndex].isMicroScale ? 'Micro ' : ''}} Facility\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
Generation Structure
\\r\\n
\\r\\n
\\r\\n
\\r\\n Is Roof Top Based\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Property Ownership
\\r\\n
\\r\\n
\\r\\n
\\r\\n Is Owned by IPP\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Is Official Lease In Place\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Lease Status Comment\\r\\n \\r\\n \\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Lease Title Holder Name\\r\\n Aa\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Rezoning
\\r\\n
\\r\\n
\\r\\n
\\r\\n Is Rezoning Required\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Applied for Rezoning\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Rezoning Application Date\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Rezoning Result Obtained\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Was Rezoning Approved\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Maintenance
\\r\\n
\\r\\n
\\r\\n
\\r\\n Number of operational Months\\r\\n Mo\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Duration of PPA Requested (Years)\\r\\n Yr\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
Rates
\\r\\n
\\r\\n
\\r\\n
\\r\\n Minimum Required Price Per kWh Winter\\r\\n R\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Minimum Required Price Per kWh Summer\\r\\n R\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Expansion
\\r\\n
\\r\\n
\\r\\n
\\r\\n Planned Expansion\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Planned Commissioning Date\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Expected Extra Capacity (MW)\\r\\n MW\\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

Existing Generator

\\r\\n
\\r\\n
Metering
\\r\\n
\\r\\n
\\r\\n
\\r\\n Is Web Enabled Meters Installed\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Planned Installation Date\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Web Meter Make and Model\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Is Check Meters Installed\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
Historical Meter Data
\\r\\n \\r\\n
\\r\\n
Capacity
\\r\\n
\\r\\n
\\r\\n
\\r\\n Export Generation Capacity\\r\\n MW\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Connection Use of Systems
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
Existing Offtaker
\\r\\n
\\r\\n
\\r\\n
\\r\\n Existing Offtaker\\r\\n Aa\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Expiry Date of Existing PPA\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n

New Generator

\\r\\n
\\r\\n
\\r\\n
Planned Generation For A Year
\\r\\n \\r\\n
\\r\\n
REIPPP Submission
\\r\\n
\\r\\n
\\r\\n
\\r\\n Project Previously Submitted into REIPPP\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Round of REIPPP Reached\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Grid Connection
\\r\\n
\\r\\n
\\r\\n
\\r\\n Name of Nearest Substation\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Load Capacity of Substation\\r\\n MW\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Budget Connection Cost Received By Distributor\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Budget Connection Upgrade Cost\\r\\n R\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Connection Use of Systems Agreement in place\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n

Municipal/Distributor approval for connection

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Project Details
\\r\\n
\\r\\n
\\r\\n
\\r\\n Planned Commercial Operation Date\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Project Progress Status\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Construction Start Date\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Electricity Connections and Metering Departments Notified\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Planned Generation For A Year
\\r\\n \\r\\n
\\r\\n
ROD (Record of Decision on EIA)
\\r\\n
\\r\\n
\\r\\n
\\r\\n EIA Completed\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n EIA Document Provided\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n Expected Date of Obtaining EIA Document\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n ROD Issued by Department of Environment Affairs\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n Reason for no ROD Document Provided\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
ACSA/CAA
\\r\\n
\\r\\n
\\r\\n
\\r\\n ACSA/CAA Permit Required\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n Reason for no ACSA/CAA Document Provided\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Geotechnical Study
\\r\\n
\\r\\n
\\r\\n
\\r\\n Geotechnical Study Required\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Geotechnical Study Approved\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Geotechnical Document Provided\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n Reason for no Geotechnical Document Provided\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Grid Connection
\\r\\n
\\r\\n
\\r\\n
\\r\\n Grid Connection Application Made\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Date of Connection Application\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Planned Date of Connection Application\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Expected Date of Grid Connection\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Financial
\\r\\n
\\r\\n
\\r\\n
\\r\\n Preferred Debt Provider\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Equity Ratio\\r\\n %\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Equity Funding in Place\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\"","exports = module.exports = require(\"../../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"span.informational-note {\\n margin-left: 50px; }\\n\\nspan.input-group-addon {\\n min-width: 150px !important; }\\n\", \"\"]);\n\n// exports\n","module.exports = \"
\\r\\n
\\r\\n
\\r\\n
\\r\\n

Create Password

\\r\\n
\\r\\n \\r\\n {{ errorMessage }}\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\"","\n var result = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/sass-loader/lib/loader.js!./prospects.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","\n var result = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/sass-loader/lib/loader.js!./prepaid-vendor.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","module.exports = \" 0 && !active\\\"\\r\\n [tooltip]=\\\"message\\\">\\r\\n \\r\\n\\r\\n 0 && active\\\" class=\\\"active-validation-span\\\">\\r\\n {{ message }}\\r\\n\"","module.exports = \"
\\r\\n \\r\\n

Project Facility

\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n {{errorMessage}}\\r\\n \\r\\n
\\r\\n
\\r\\n Facility Name:\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n {{projectFacility ? projectFacility.facilityName : 'New Facility'}}\\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
Project Facility Detail
\\r\\n
\\r\\n
\\r\\n Facility Name\\r\\n Aa\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Connection Voltage\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n Project Type\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Installed Capacity\\r\\n MW\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n Contracted Capacity\\r\\n MW\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n Is Embedded\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n

\\r\\n Connection is on the consumers side of the meter. And power could also\\r\\n be used by the generator\\r\\n

\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
Facility GPS Co-ordinates
\\r\\n
\\r\\n
\\r\\n Latitude\\r\\n #\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n Longitude\\r\\n #\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Facility Address
\\r\\n
\\r\\n
\\r\\n
\\r\\n Address Line 1\\r\\n Aa\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Address Line 2\\r\\n Aa\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Address Line 3\\r\\n Aa\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Province\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n City\\r\\n Aa\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Postal Code\\r\\n #\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n Is Rural Address\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Generation Structure
\\r\\n
\\r\\n
\\r\\n
\\r\\n Is Roof Top Based\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Property Ownership
\\r\\n
\\r\\n
\\r\\n
\\r\\n Is Owned by IPP\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Is Official Lease In Place\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Lease Status Comment\\r\\n \\r\\n \\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Lease Title Holder Name\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Rezoning
\\r\\n
\\r\\n
\\r\\n
\\r\\n Is Rezoning Required\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Applied for Rezoning\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Rezoning Application Date\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Rezoning Result Obtained\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Was Rezoning Approved\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Maintenance
\\r\\n
\\r\\n
\\r\\n
\\r\\n Number of operational Months\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Duration of PPA Requested (Years)\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
General Enquiries
\\r\\n
\\r\\n
\\r\\n
\\r\\n Maintenance Downtime (Weeks)\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Planned Life Expectancy (Years)\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Rates
\\r\\n
\\r\\n
\\r\\n
\\r\\n Minimum Required Price Per kWh Winter\\r\\n R\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Minimum Required Price Per kWh Summer\\r\\n R\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Forecasting Generator Rates
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
Expansion
\\r\\n
\\r\\n
\\r\\n
\\r\\n Planned Expansion\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Planned Commissioning Date\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Expected Extra Capacity (MW)\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
Licensing
\\r\\n
\\r\\n
\\r\\n
\\r\\n IRP Deviation Request Submitted\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n IRP Deviation Approval Obtained\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n No IRP Deviation Approval Obtained Reason\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Existing NERSA Generation License\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n No NERSA License Reason\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n

Existing Generator

\\r\\n
\\r\\n
Metering
\\r\\n
\\r\\n
\\r\\n
\\r\\n Is Web Enabled Meters Installed\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Planned Installation Date\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Web Meter Make and Model\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Is Check Meters Installed\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
Historical Meter Data
\\r\\n \\r\\n
\\r\\n
Capacity
\\r\\n
\\r\\n
\\r\\n
\\r\\n Export Generation Capacity\\r\\n MW\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Connection Use of Systems
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
Existing Offtaker
\\r\\n
\\r\\n
\\r\\n
\\r\\n Existing Offtaker\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Expiry Date of Existing PPA\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n

New Generator

\\r\\n
\\r\\n
\\r\\n
Planned Generation For A Year
\\r\\n \\r\\n
\\r\\n
REIPPP Submission
\\r\\n
\\r\\n
\\r\\n
\\r\\n Project Previously Submitted into REIPPP\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Round of REIPPP Reached\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Grid Connection
\\r\\n
\\r\\n
\\r\\n
\\r\\n Name of Nearest Substation\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Load Capacity of Substation\\r\\n MW\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Budget Connection Cost Received By Distributor\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Budget Connection Upgrade Cost\\r\\n R\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Connection Use of Systems Agreement in place\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n

Municipal/Distributor approval for connection

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Project Details
\\r\\n
\\r\\n
\\r\\n
\\r\\n Planned Commercial Operation Date\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Project Progress Status\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Construction Start Date\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Electricity Connections and Metering Departments Notified\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Planned Generation For A Year
\\r\\n \\r\\n
\\r\\n
ROD (Record of Decision on EIA)
\\r\\n
\\r\\n
\\r\\n
\\r\\n EIA Completed\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n EIA Document Provided\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n Expected Date of Obtaining EIA Document\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n ROD Issued by Department of Environment Affairs\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n Reason for no ROD Document Provided\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
ACSA/CAA
\\r\\n
\\r\\n
\\r\\n
\\r\\n ACSA/CAA Permit Required\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n Reason for no ACSA/CAA Document Provided\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Geotechnical Study
\\r\\n
\\r\\n
\\r\\n
\\r\\n Geotechnical Study Required\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Geotechnical Study Approved\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Geotechnical Document Provided\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n Reason for no Geotechnical Document Provided\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Grid Connection
\\r\\n
\\r\\n
\\r\\n
\\r\\n Grid Connection Application Made\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Date of Connection Application\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Planned Date of Connection Application\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Expected Date of Grid Connection\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Financial
\\r\\n
\\r\\n
\\r\\n
\\r\\n Preferred Debt Provider\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Equity Ratio\\r\\n %\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Equity Funding in Place\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\"","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".badge {\\n font-weight: 100;\\n display: unset;\\n border-radius: 3px; }\\n\\n.evaluation {\\n color: #5cb85c;\\n background-color: rgba(255, 255, 255, 0.99);\\n border: 1px solid; }\\n\\n.tradeco {\\n color: #0aa8d8;\\n background-color: rgba(255, 255, 255, 0.99);\\n border: 1px solid; }\\n\\n.termsheet {\\n color: #37849e;\\n background-color: rgba(255, 255, 255, 0.99);\\n border: 1px solid; }\\n\\n.ppa {\\n color: #333;\\n background-color: rgba(255, 255, 255, 0.99);\\n border: 1px solid; }\\n\\n.ppaPending {\\n color: #a80000;\\n background-color: rgba(255, 255, 255, 0.99);\\n border: 1px solid; }\\n\\n.ppaSchedule {\\n color: #0a1fd8;\\n background-color: rgba(255, 255, 255, 0.99);\\n border: 1px solid; }\\n\\n.activation {\\n color: #3136ff;\\n background-color: rgba(255, 255, 255, 0.99);\\n border: 1px solid; }\\n\\n.more-info {\\n color: #ff8800;\\n background-color: rgba(255, 255, 255, 0.99);\\n border: 1px solid; }\\n\\n.declined {\\n background-color: rgba(255, 255, 255, 0.99);\\n color: red;\\n border: 1px solid; }\\n\\n.pointable {\\n cursor: pointer; }\\n\\n.notPointable {\\n cursor: not-allowed; }\\n\\n.dueDateWarning {\\n background-color: #FFDDDD; }\\n\\n.act-btn,\\n.act-btn h5 {\\n display: inline-block;\\n margin-left: 10px; }\\n\", \"\"]);\n\n// exports\n","\n var result = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/sass-loader/lib/loader.js!./tariff-rate-list.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\", \"\"]);\n\n// exports\n","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".options {\\n margin: 10px;\\n font-size: 20px; }\\n\", \"\"]);\n\n// exports\n","module.exports = \"
\\r\\n
\\r\\n \\r\\n

{{tableName}}

\\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
{{ column.displayName }}Action
\\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 {{ column.symbol }}\\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 {{ column.symbol }}\\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
\"","exports = module.exports = require(\"../../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".centered-80 {\\n width: 80%;\\n min-width: 80%;\\n margin-left: 10%; }\\n\\n.centered-100 {\\n width: 100%;\\n min-width: 100%; }\\n\", \"\"]);\n\n// exports\n","\n var result = require(\"!!../../../../../../../node_modules/css-loader/index.js!../../../../../../../node_modules/sass-loader/lib/loader.js!./generator-application-project-list.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","module.exports = \"
\\r\\n
\\r\\n
\\r\\n

{{title}}

\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n {{errorMessage}}\\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n #\\r\\n \\r\\n \\r\\n INVIT{{value}}\\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n Description\\r\\n \\r\\n \\r\\n {{value}}\\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n Quantity\\r\\n \\r\\n \\r\\n {{value}}\\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n Unit Price\\r\\n \\r\\n \\r\\n R {{value}}\\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n Discount %\\r\\n \\r\\n \\r\\n {{value}}%\\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n Amount (ZAR)\\r\\n \\r\\n \\r\\n R {{value}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Edit\\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

Amount Paid

\\r\\n
\\r\\n\\r\\n \\r\\n R\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n Back\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n

Invoice Item


\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Tariff\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Tariff Rate\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n Description\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Discount\\r\\n %\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Unit\\r\\n Price\\r\\n R\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n Quantity\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Total\\r\\n R\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\"","exports = module.exports = require(\"../../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".reference-number {\\n text-align: right; }\\n\\n.additional-details-header {\\n display: inline-block; }\\n\\ntextarea {\\n resize: none; }\\n\\n.subheading {\\n color: #EF483F; }\\n\", \"\"]);\n\n// exports\n","module.exports = \"
\\r\\n \\r\\n

Project

\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n {{errorMessage}}\\r\\n \\r\\n
\\r\\n
\\r\\n Project Name:\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n {{project ? project.generatorProjectName : 'New Project'}}\\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
Project Company Detail
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Company Name\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Company Type\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n Registration Number\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n VAT Number\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n Switchboard Phone Number\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Contact Person Detail
\\r\\n
\\r\\n
\\r\\n
\\r\\n First Name\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n Last Name\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Cellphone Number\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n Work Number\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n ID Number\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n Job Title\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Email Address\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Project Detail
\\r\\n
\\r\\n
\\r\\n
\\r\\n Project Name\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Generation Capacity\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n Technology Type\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n Co Generation\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n

Co generation is electricity generation as a by-product of the main function of business,\\r\\n meaning power generation is not your core business function

\\r\\n
\\r\\n
\\r\\n
\\r\\n
Distribution Area
\\r\\n
\\r\\n
\\r\\n Distribution Area\\r\\n \\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Facility Name\\r\\n \\r\\n \\r\\n {{value}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Application Status\\r\\n \\r\\n \\r\\n {{value.value}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Connection Voltage\\r\\n \\r\\n \\r\\n {{value.value}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Facility Status\\r\\n \\r\\n \\r\\n {{value.value}}\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\"","exports = module.exports = require(\"../../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\", \"\"]);\n\n// exports\n","module.exports = \"
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Tariff Detail
\\r\\n
\\r\\n
\\r\\n
\\r\\n Tariff Code\\r\\n Aa\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Tariff Description\\r\\n Aa\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Voltage\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Administration Charge\\r\\n R\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n POWERX trading in tariff\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n

Note: For a flat tariff set all discounts to the same value

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Peak Discount\\r\\n %\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Off-Peak Discount\\r\\n %\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Standard Discount\\r\\n %\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Tariff Type\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n

Please ensure the correct tariff rates are entered below

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Tariff Trading Limits
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
Tariff Energy Charges
\\r\\n
\\r\\n \\r\\n
\\r\\n
Tariff Public Holidays
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n Back\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\"","module.exports = \"
\\r\\n {{errorMessage}}\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Month\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Trading Limit\\r\\n #.\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\"","module.exports = \"
\\r\\n \\r\\n {{errorMessage}}\\r\\n
\\r\\n\"","module.exports = \"\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n {{errorMessage}}\\r\\n \\r\\n
\\r\\n \\r\\n

Generator Evaluation Detail

\\r\\n
\\r\\n
Holding Company Information
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Holding Company Name\\r\\n Aa\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Company Type\\r\\n Aa\\r\\n \\r\\n
\\r\\n
\\r\\n Registration Number\\r\\n #\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n VAT Number\\r\\n #\\r\\n \\r\\n
\\r\\n
\\r\\n Switchboard Phone Number\\r\\n #\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
0\\\">Contact Details
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n First Name\\r\\n Aa\\r\\n \\r\\n
\\r\\n
\\r\\n Cellphone Number\\r\\n #\\r\\n \\r\\n
\\r\\n
\\r\\n ID Number\\r\\n #\\r\\n \\r\\n
\\r\\n
\\r\\n Email Address\\r\\n @\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Last Name\\r\\n Aa\\r\\n \\r\\n
\\r\\n
\\r\\n Work Number\\r\\n #\\r\\n \\r\\n
\\r\\n
\\r\\n Job Title\\r\\n Aa\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
Project Company Detail
\\r\\n
\\r\\n
\\r\\n
\\r\\n Project Company Name\\r\\n \\r\\n
\\r\\n
\\r\\n Switchboard Phone Number\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Registration Number\\r\\n \\r\\n
\\r\\n
\\r\\n VAT Number\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Project Company Detail
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n First Name\\r\\n \\r\\n
\\r\\n
\\r\\n Cellphone Number\\r\\n \\r\\n
\\r\\n
\\r\\n ID Number\\r\\n \\r\\n
\\r\\n
\\r\\n Email Address\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Last Name\\r\\n \\r\\n
\\r\\n
\\r\\n Work Number\\r\\n \\r\\n
\\r\\n
\\r\\n Job Title\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Project Facility Detail
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Facility Name\\r\\n Aa\\r\\n \\r\\n
\\r\\n
\\r\\n Connection Voltage\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n Generation in MW\\r\\n MW\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Project Type\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n is Embedded\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Facility GPS Co-ordinates
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Latitude\\r\\n #\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Longitude\\r\\n #\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Facility Address
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Address Line 1\\r\\n Aa\\r\\n \\r\\n
\\r\\n
\\r\\n Address Line 2\\r\\n Aa\\r\\n \\r\\n
\\r\\n
\\r\\n Address Line 3\\r\\n Aa\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Province\\r\\n Aa\\r\\n \\r\\n
\\r\\n
\\r\\n Postal Code\\r\\n #\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n City\\r\\n Aa\\r\\n \\r\\n
\\r\\n
\\r\\n Is Rural Address\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Generation Structure
\\r\\n
\\r\\n
\\r\\n
\\r\\n Is Roof Top Based\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Property Ownership
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Is Owned by IPP\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n Is Official Lease In Place\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n Lease Status Comment\\r\\n Aa\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Lease Title Holder Name\\r\\n Aa\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Rezoning
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Is Rezoning Required\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Applied for Rezoning\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Rezoning Application Date\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Rezoning Result Obtained\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Was Rezoning Approved\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Maintenance
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Number of operational Months\\r\\n Mo\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Duration of PPA Requested (Years)\\r\\n Yr\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
General Enquiries
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Maintenance Downtime (Weeks)\\r\\n Wk\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Planned Life Expectancy\\r\\n Yr\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Rates
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Minimum Required Price Per kWh Winter\\r\\n R\\r\\n \\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Minimum Required Price Per kWh Summer\\r\\n R\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Expansion
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Planned Expansion\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Planned Commissioning Date\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Expected Extra Capacity (MW)\\r\\n MW\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Licensing
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n IRP Deviation Request Submitted\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n IRP Deviation Approval Obtained\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n No IRP Deviation Approval Obtained Reason\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Existing NERSA Generation License\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n No NERSA License Reason\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Metering
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Is Web Enabled Meters Installed\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Planned Installation Date\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Web Meter Make and Model\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Is Check Meters Installed\\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
Historical Meter Data
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
Planned Generation For A Year
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
Project Details
\\r\\n
\\r\\n
\\r\\n
\\r\\n Planned Commercial Operation Date\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Project Progress Status\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Construction Start Date\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Electricity Connections and Metering Departments Notified\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
ROD (Record of Decision on EIA)
\\r\\n
\\r\\n
\\r\\n
\\r\\n EIA Completed\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n EIA Document Provided\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Expected Date of Obtaining EIA Document\\r\\n \\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n ROD Issued by Department of Environment Affairs\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Reason for no ROD Document Provided\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
ACSA/CAA
\\r\\n
\\r\\n
\\r\\n
\\r\\n ACSA/CAA Permit Required\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Reason for no ACSA/CAA Document Provided\\r\\n \\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Geotechnical Study
\\r\\n
\\r\\n
\\r\\n
\\r\\n Geotechnical Study Required\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Geotechnical Study Approved\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Geotechnical Document Provided\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Reason for no Geotechnical Document Provided\\r\\n \\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
REIPPP Submission
\\r\\n
\\r\\n
\\r\\n
\\r\\n Project Previously Submitted into REIPPP\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Round of REIPPP Reached\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Grid Connection
\\r\\n
\\r\\n
\\r\\n
\\r\\n Name of Nearest Substation\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Load Capacity of Substation\\r\\n MW\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Budget Connection Cost Received By Distributor\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Budget Connection Upgrade Cost\\r\\n R\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Connection and Use of Systems Agreement in place\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Capacity
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Generation Capacity\\r\\n MW\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Connection Use of Systems
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Connection Use of Systems\\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
Grid Connection
\\r\\n
\\r\\n
\\r\\n
\\r\\n Grid Connection Application Made\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Date of Connection Application\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Planned Date of Connection Application\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Expected Date of Grid Connection\\r\\n \\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
Financial
\\r\\n
\\r\\n
\\r\\n
\\r\\n Preferred Debt Provider\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Equity Ratio\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Equity Funding in Place\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Existing Offtaker
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Existing Offtaker\\r\\n Aa\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Expiry Date of Existing PPA\\r\\n \\r\\n \\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Evaluation Input
\\r\\n
\\r\\n
\\r\\n
\\r\\n Evaluation Action\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n Decline Reason\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n Reason\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Back\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\"","module.exports = \"\\r\\n
\\r\\n \\r\\n

Overall Trading Limit ({{tradingLimit}} kWh)

\\r\\n
\\r\\n {{errorMessage}}\\r\\n \\r\\n
\\r\\n
\\r\\n No data to display\\r\\n
\\r\\n
0\\\" class=\\\"row\\\">\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n {{message}}\\r\\n
\\r\\n
\"","module.exports = \"

Distributor Consumption

\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
None
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n

{{ isUpdate ? 'Update Distributor Consumption' : 'Add Distributor Consumption'}}\\r\\n


\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Period\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\"","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\", \"\"]);\n\n// exports\n","\n var result = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/sass-loader/lib/loader.js!./allocation-forecast-run.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","\n var result = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/sass-loader/lib/loader.js!./nersa-generator-report.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","module.exports = \"
\\r\\n

Company Details

\\r\\n \\r\\n \\r\\n \\r\\n {{errorMessage}}\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n

Sales Rep

\\r\\n
\\r\\n
\\r\\n
\\r\\n Sales Rep Assigned\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

Company Details

\\r\\n
\\r\\n
\\r\\n
\\r\\n Company Standing\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Company Type\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n

Changing the Company Type will require an Addendum to be uploaded

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Company Name\\r\\n Aa\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n

Changing the Company Name will require an Addendum to be uploaded

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Registration Number\\r\\n #\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n

Changing the Registration Number will require an Addendum to be uploaded

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Telephone Number\\r\\n #\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n VAT Number\\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 Is RECs Registered\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Tax Year Begin Date\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n

Used when RECs are redeemed

\\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
\"","module.exports = \"
\\r\\n
\\r\\n
\\r\\n

Invoice Batch Details

\\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

Revenue

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Net Total \\r\\n R {{\\r\\n this.invoiceBatch.totalInvoice +\\r\\n this.invoiceBatch.totalCredit |\\r\\n number | commadumper\\r\\n }}\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n Credit Total \\r\\n R\\r\\n {{\\r\\n this.invoiceBatch.totalCredit |\\r\\n number | commadumper\\r\\n }}\\r\\n \\r\\n
\\r\\n
\\r\\n Invoice Total \\r\\n R {{\\r\\n this.invoiceBatch.totalInvoice\\r\\n | number | commadumper\\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

Stats

\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n Number of Credit Notes \\r\\n {{\\r\\n this.invoiceBatch.creditCount |\\r\\n number | commadumper\\r\\n }}\\r\\n \\r\\n
\\r\\n
\\r\\n Number of Paid Credit Notes \\r\\n {{\\r\\n this.invoiceBatch.paidCredits |\\r\\n number | commadumper\\r\\n }}\\r\\n \\r\\n
\\r\\n
\\r\\n Number of Invoices\\r\\n {{\\r\\n this.invoiceBatch.invoiceCount |\\r\\n number | commadumper\\r\\n }}\\r\\n \\r\\n
\\r\\n
\\r\\n Number of Paid Invoices\\r\\n {{\\r\\n this.invoiceBatch.paidInvoices |\\r\\n number | commadumper\\r\\n }}\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n


\\r\\n
\\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n

Finalization

\\r\\n\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

Emails

\\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

\\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

Batch Information

\\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

Sent Invoice Emails

\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n Consumer Premise\\r\\n \\r\\n \\r\\n {{ value }}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Email Address\\r\\n \\r\\n \\r\\n {{ value }}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Email Sent\\r\\n \\r\\n \\r\\n {{ value }}\\r\\n \\r\\n \\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\"","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"span.width-120 {\\n min-width: 120px !important;\\n max-width: 120px !important; }\\n\\nlegend {\\n margin-bottom: unset !important; }\\n\", \"\"]);\n\n// exports\n","\n var result = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/sass-loader/lib/loader.js!./generator-project-facility-distributor-nominations.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","exports = module.exports = require(\"../../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"legend {\\n color: #555;\\n border-bottom: 1px solid #999; }\\n\\n.list-group-item.active {\\n color: black;\\n background-color: lightgray;\\n border-color: darkgray; }\\n\\n.list-group-item.active .list-group-item-text {\\n color: gray; }\\n\\na {\\n text-decoration: none; }\\n\\n.badge {\\n font-weight: 100;\\n display: unset;\\n border-radius: 3px; }\\n\\n.evaluation {\\n color: #0aa8d8;\\n background-color: rgba(255, 255, 255, 0.99);\\n border: 1px solid; }\\n\\n.offer {\\n color: #5cb85c;\\n background-color: rgba(255, 255, 255, 0.99);\\n border: 1px solid; }\\n\\n.more-info {\\n color: #ff8800;\\n background-color: rgba(255, 255, 255, 0.99);\\n border: 1px solid; }\\n\\n.prospect {\\n color: #333;\\n background-color: rgba(255, 255, 255, 0.99);\\n border: 1px solid; }\\n\\n.declined {\\n background-color: rgba(255, 255, 255, 0.99);\\n color: red;\\n border: 1px solid; }\\n\\n.prospect-ppa {\\n background-color: rgba(255, 255, 255, 0.99);\\n color: #0037ff;\\n border: 1px solid; }\\n\\n.activation {\\n background-color: rgba(255, 255, 255, 0.99);\\n color: #3136ff;\\n border: 1px solid; }\\n\\n.activated {\\n background-color: rgba(255, 255, 255, 0.99);\\n color: #2dcb16;\\n border: 1px solid; }\\n\\n.right-margin {\\n padding: 20px 43px 20px; }\\n\\n.pointable {\\n cursor: pointer; }\\n\\n.note {\\n border-radius: 0;\\n color: #8a6d3b;\\n background-color: moccasin;\\n border-color: darkgrey; }\\n\\n.note-footer {\\n color: black; }\\n\\n.note-warning {\\n background-color: #ef483f54; }\\n\\n.act-btn,\\n.act-btn h5 {\\n display: inline-block;\\n margin-left: 10px; }\\n\", \"\"]);\n\n// exports\n","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".company-name {\\n text-align: right; }\\n\\n.pl-2 {\\n padding-left: 15px !important; }\\n\\n.ml-2 {\\n margin-left: 15px !important; }\\n\", \"\"]);\n\n// exports\n","module.exports = \"
\\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 Vendor Name\\r\\n \\r\\n \\r\\n {{ value }}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Service Fee\\r\\n \\r\\n \\r\\n {{ value | number: '1.2-2' }} %\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Tariff Name\\r\\n \\r\\n \\r\\n {{ value }}\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n

Add Prepaid Vendor

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Vendor Name\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Service Fee\\r\\n %\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Tariff Name\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\"","exports = module.exports = require(\"../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"button.allocation-button {\\n width: 120px;\\n margin-left: 8px;\\n text-align: center !important; }\\n\\nbutton.allocation-button:last-child {\\n margin-left: 0; }\\n\", \"\"]);\n\n// exports\n","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".list-group-item.active {\\n color: black;\\n background-color: lightgray;\\n border-color: darkgray; }\\n\\n.list-group-item.active .list-group-item-text {\\n color: gray; }\\n\\n.pb-25 {\\n padding-bottom: 25px; }\\n\", \"\"]);\n\n// exports\n","\n var result = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/sass-loader/lib/loader.js!./consumer-company-ppa-maintenance.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".horizontal-inputs {\\n width: 100%;\\n margin: 0; }\\n .horizontal-inputs div {\\n display: table; }\\n .horizontal-inputs div.first-input {\\n padding-left: 0;\\n padding-bottom: 12px; }\\n .horizontal-inputs div.second-input {\\n padding-right: 0; }\\n\\nspan.input-group-addon {\\n min-width: 200px;\\n background-color: white;\\n color: black;\\n border: none;\\n font-weight: bold;\\n text-align: right; }\\n\\n.input-group input {\\n border-radius: 5px; }\\n\\n.input-group,\\n.horizontal-inputs {\\n padding-right: 40px; }\\n\\n.additional-details-header {\\n display: inline-block; }\\n\\n.action-buttons {\\n width: 120px; }\\n\\n.form-actions {\\n height: 40px; }\\n\\n.checkbox {\\n margin: 5px 0 0;\\n padding: 0; }\\n .checkbox input {\\n margin: 0;\\n padding: 0;\\n height: 15px;\\n width: 15px; }\\n\\n.checkbox label input {\\n margin: 4px 0 0 -20px;\\n height: auto;\\n width: auto; }\\n\\n.list-group-item.active {\\n color: black;\\n background-color: lightgray;\\n border-color: darkgray; }\\n\\n.list-group-item.active .list-group-item-text {\\n color: gray; }\\n\\n.left-pull {\\n padding-right: 186px;\\n text-align: right; }\\n\\n.input-group-addon.date {\\n padding-right: 35px; }\\n\\n.input-group-addon.consumption {\\n padding-right: 70px; }\\n\\n.badge {\\n font-weight: 100;\\n display: unset;\\n border-radius: 3px; }\\n\\n.evaluation {\\n color: #0aa8d8;\\n background-color: rgba(255, 255, 255, 0.99);\\n border: 1px solid; }\\n\\n.offer {\\n color: #5cb85c;\\n background-color: rgba(255, 255, 255, 0.99);\\n border: 1px solid; }\\n\\n.more-info {\\n color: #ff8800;\\n background-color: rgba(255, 255, 255, 0.99);\\n border: 1px solid; }\\n\\n.prospect {\\n color: #333;\\n background-color: rgba(255, 255, 255, 0.99);\\n border: 1px solid; }\\n\\n.declined {\\n background-color: rgba(255, 255, 255, 0.99);\\n color: red;\\n border: 1px solid; }\\n\\n.prospect-ppa {\\n background-color: rgba(255, 255, 255, 0.99);\\n color: #0037ff;\\n border: 1px solid; }\\n\\n.activation {\\n background-color: rgba(255, 255, 255, 0.99);\\n color: #3136ff;\\n border: 1px solid; }\\n\\n.activated {\\n background-color: rgba(255, 255, 255, 0.99);\\n color: #2dcb16;\\n border: 1px solid; }\\n\\n.pointable {\\n cursor: pointer; }\\n\\n.input-group {\\n padding-right: 40px;\\n padding-left: 2px; }\\n\", \"\"]);\n\n// exports\n","module.exports = \"
\\r\\n \\r\\n

{{ header }}

\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n {{errorMessage}}\\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

Basic Information

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Name\\r\\n Aa\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Distributor Identifier\\r\\n Aa\\r\\n \\r\\n
\\r\\n \\r\\n

Changing the Identifier will affect interaction with metering provider

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Province\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Town Name\\r\\n Aa\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n

Documents

\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Date DUoSA Signed\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Billing System\\r\\n Aa\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Integrator Provider\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n Billing Cycle 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 Back\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n Back\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\"","\n var result = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/sass-loader/lib/loader.js!./distributor-dashboard.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".reference-number {\\n text-align: right; }\\n\\n.additional-details-header {\\n display: inline-block; }\\n\\ntextarea {\\n resize: none; }\\n\\n.subheading {\\n color: #EF483F; }\\n\\n/* Custom CSS */\\n#stickyButton {\\n position: fixed;\\n top: 8px;\\n /* Adjust as needed */\\n z-index: 5000;\\n /* Ensure it's above other content */\\n right: 200px; }\\n\\n.nda-component {\\n position: fixed;\\n top: -9999px;\\n left: -9999px;\\n width: auto;\\n height: auto;\\n overflow: hidden;\\n opacity: 0;\\n pointer-events: none;\\n z-index: -1; }\\n\", \"\"]);\n\n// exports\n","\n var result = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/sass-loader/lib/loader.js!./documents.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","\n var result = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/sass-loader/lib/loader.js!./invoice-details.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\", \"\"]);\n\n// exports\n","module.exports = \"
\\r\\n \\r\\n

VAT Settings

\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n {{errorMessage}}\\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 Start Date\\r\\n \\r\\n \\r\\n {{ value | date: 'dd MMMM yyyy' }}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Value\\r\\n \\r\\n \\r\\n {{ value }}\\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

New VAT

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Start Date\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n Value\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\"","\n var result = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/sass-loader/lib/loader.js!./generator-companies-list.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","\n var result = require(\"!!../../../../node_modules/css-loader/index.js!../../../../node_modules/sass-loader/lib/loader.js!./dashboard.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","module.exports = \"
\\r\\n

{{heading}}

\\r\\n \\r\\n {{errorMessage}}\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n First Name\\r\\n \\r\\n \\r\\n {{ value }}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Last Name\\r\\n \\r\\n \\r\\n {{ value }}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Telephone\\r\\n \\r\\n \\r\\n {{ value }}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Email\\r\\n \\r\\n \\r\\n {{ value }}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Position\\r\\n \\r\\n \\r\\n {{ value }}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Action\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n

Please capture at least one contact

\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n

{{ addContact ? 'Add Contact' : 'Update Contact'}}

\\r\\n
\\r\\n
\\r\\n {{errorMessage}}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n First Name\\r\\n Aa\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Last Name\\r\\n Aa\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Cellphone Number\\r\\n #\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Telephone Number\\r\\n #\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Email Address\\r\\n @\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n ID Number\\r\\n #\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Position\\r\\n Aa\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
1\\\" class=\\\"col-md-12\\\">\\r\\n
\\r\\n Designation\\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
\"","\n var result = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/sass-loader/lib/loader.js!./tariff-list.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","\n var result = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/sass-loader/lib/loader.js!./consumption-period.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\", \"\"]);\n\n// exports\n","module.exports = \"\\r\\n
\\r\\n \\r\\n

Average Rates

\\r\\n
\\r\\n {{errorMessage}}\\r\\n \\r\\n
\\r\\n No data to display\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Average Purchase Rate R {{ purchaseAndSalesRate.averagePurchaseRate | number | commadumper}} \\r\\n
\\r\\n
Average Sales Rate R {{ purchaseAndSalesRate.averageSalesRate | number | commadumper}} \\r\\n
\\r\\n
Average Prepaid Rate R {{ purchaseAndSalesRate.averagePrepaidRate | number | commadumper}} \\r\\n
\\r\\n
Average Postpaid Rate R {{ purchaseAndSalesRate.averagePostpaidRate | number | commadumper}} \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\"","\n var result = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/sass-loader/lib/loader.js!./ppa-schedule.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","\n var result = require(\"!!../../../../node_modules/css-loader/index.js!../../../../node_modules/sass-loader/lib/loader.js!./tariff.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".left-margin {\\n margin-left: 5px !important; }\\n\", \"\"]);\n\n// exports\n","\n var result = require(\"!!../../../../../../../node_modules/css-loader/index.js!../../../../../../../node_modules/sass-loader/lib/loader.js!./allocation-purchase-and-sales-rate.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","module.exports = \"
\\r\\n \\r\\n

Generator Companies

\\r\\n
\\r\\n \\r\\n {{errorMessage}}\\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 Company Name\\r\\n \\r\\n \\r\\n {{value}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Registration Number\\r\\n \\r\\n \\r\\n {{value}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Projects\\r\\n \\r\\n \\r\\n {{value || 0}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Facilities\\r\\n \\r\\n \\r\\n {{value || 0}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Options\\r\\n \\r\\n \\r\\n\\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\"","module.exports = \"\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n

Allocation Errors

\\r\\n
for {{startDate | date: 'MMMM yyyy' }}, run on {{ runDate | date: 'dd MMMM yyyy hh:mm'}}
\\r\\n
\\r\\n {{errorMessage}}\\r\\n \\r\\n \\r\\n
\\r\\n

{{error}}

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\"","\n var result = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/sass-loader/lib/loader.js!./company-details.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","module.exports = \"
\\r\\n \\r\\n
\\r\\n \\r\\n

Sales Rep Report

\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n Start year\\r\\n #\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n End year\\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
\"","\n var result = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/sass-loader/lib/loader.js!./parameters.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".company-name {\\n text-align: right; }\\n\\n.btn-final {\\n width: 250px !important; }\\n\\n.panel-body {\\n height: 17vh; }\\n\", \"\"]);\n\n// exports\n","exports = module.exports = require(\"../../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".actions {\\n padding-top: 8px; }\\n\\n.table-input {\\n width: 80% !important; }\\n\\ninput.exclude-checkbox {\\n margin-top: 10px !important; }\\n\\n.form-control {\\n border-radius: 5px !important; }\\n\\nbutton.forecast-parameter-button {\\n width: 120px;\\n margin-left: 8px;\\n text-align: center !important; }\\n\\nbutton.forecast-parameter-button:last-child {\\n margin-left: 0; }\\n\", \"\"]);\n\n// exports\n","module.exports = \"\\r\\n\\r\\n
\\r\\n \\r\\n {{errorMessage}}\\r\\n
\\r\\n \\r\\n

Generator Termsheet

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Facility Name:\\r\\n
\\r\\n
\\r\\n
\\r\\n
{{ facilityTermSheet.facilityName }}
\\r\\n
\\r\\n
\\r\\n
\\r\\n Project Name:\\r\\n
\\r\\n
\\r\\n
\\r\\n
{{ facilityTermSheet.projectName }}
\\r\\n
\\r\\n
\\r\\n
\\r\\n Company Name:\\r\\n
\\r\\n
\\r\\n
\\r\\n
{{ facilityTermSheet.companyName}}
\\r\\n
\\r\\n
\\r\\n
\\r\\n Document Name:\\r\\n
\\r\\n
\\r\\n
\\r\\n
{{ facilityTermSheet.evaluationField.documentTemplateName }}
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Long Stop Date\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n Escalation Type\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n Increase Date\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n

This is the first increase date and annual increase date going forward.

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Commercial operators date\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n

This must be on the 1st day of the month.

\\r\\n
\\r\\n
\\r\\n
\\r\\n

Tariff Rates

\\r\\n
\\r\\n
\\r\\n
\\r\\n Distributor High Demand Rate\\r\\n R\\r\\n \\r\\n
\\r\\n
\\r\\n High Demand Rate\\r\\n R\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Distributor Low Demand Rate\\r\\n R\\r\\n \\r\\n
\\r\\n
\\r\\n Low Demand Rate\\r\\n R\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n Tariff Type\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Document Sent\\r\\n
\\r\\n \\r\\n
\\r\\n Document Signed\\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 Back\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\"","\n var result = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/sass-loader/lib/loader.js!./generator-evaluation.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","exports = module.exports = require(\"../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".loader-icon {\\n text-align: center; }\\n .loader-icon i {\\n font-size: 30px;\\n animation-name: rotate;\\n animation-duration: 2s;\\n animation-iteration-count: infinite;\\n animation-timing-function: linear; }\\n .loader-icon div {\\n padding-top: 8px; }\\n\\n.small-loader-icon {\\n text-align: center; }\\n .small-loader-icon i {\\n font-size: 14px;\\n animation-name: rotate;\\n animation-duration: 2s;\\n animation-iteration-count: infinite;\\n animation-timing-function: linear; }\\n .small-loader-icon span {\\n font-size: 14px; }\\n\", \"\"]);\n\n// exports\n","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\", \"\"]);\n\n// exports\n","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\", \"\"]);\n\n// exports\n","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"span.informational-note {\\n margin-left: 215px; }\\n\", \"\"]);\n\n// exports\n","module.exports = \"
\\r\\n \\r\\n

Generator Increase Notifications

\\r\\n
\\r\\n \\r\\n \\r\\n {{errorMessage}}\\r\\n \\r\\n
\\r\\n

None

\\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 Back\\r\\n
\\r\\n
\\r\\n
\\r\\n
\"","module.exports = \"
\\r\\n
\\r\\n

Useful Links

\\r\\n \\r\\n
\\r\\n
\"","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".options {\\n margin: 10px;\\n font-size: 20px; }\\n\", \"\"]);\n\n// exports\n","\n var result = require(\"!!../../../../node_modules/css-loader/index.js!../../../../node_modules/sass-loader/lib/loader.js!./public-holiday-time-period.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","\n var result = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/sass-loader/lib/loader.js!./consumer-company-recs.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","\n var result = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/sass-loader/lib/loader.js!./distributor-list.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","\n var result = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/sass-loader/lib/loader.js!./sales-rep-report.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","module.exports = \"\\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
half-hour
\\r\\n
day
\\r\\n
month
\\r\\n
year
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n Start\\r\\n \\r\\n\\r\\n
\\r\\n
\\r\\n End\\r\\n \\r\\n\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n
\\r\\n\\r\\n \\r\\n\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n\\r\\n \\r\\n \\r\\n\\r\\n \\r\\n\\r\\n \\r\\n {{value}}\\r\\n \\r\\n \\r\\n\\r\\n\\r\\n\\r\\n\\r\\n \\r\\n\\r\\n\\r\\n\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n\\r\\n \\r\\n\\r\\n \\r\\n\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n\\r\\n \\r\\n \\r\\n\\r\\n \\r\\n\\r\\n \\r\\n {{value}}\\r\\n \\r\\n \\r\\n\\r\\n\\r\\n\\r\\n\\r\\n \\r\\n\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n \\r\\n\\r\\n \\r\\n
\\r\\n \\r\\n
Allocation
\\r\\n
Generation
\\r\\n
Consumption
\\r\\n\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n\\r\\n\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n

Power Profiles {{ProfilePeriod}}\\r\\n
\\r\\n \\r\\n\\r\\n
\\r\\n

\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n\\r\\n
\\r\\n \\r\\n {{errorMessage}}\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\"","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".content {\\n background-color: white; }\\n\", \"\"]);\n\n// exports\n","\n var result = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/sass-loader/lib/loader.js!./invoice-batch-summary.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","\n var result = require(\"!!../../../../node_modules/css-loader/index.js!../../../../node_modules/sass-loader/lib/loader.js!./validation-spans.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\", \"\"]);\n\n// exports\n","module.exports = \"
\\r\\n \\r\\n

Public Holidays

\\r\\n
\\r\\n \\r\\n {{errorMessage}}\\r\\n \\r\\n \\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n Period\\r\\n \\r\\n \\r\\n {{value}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Public Holiday\\r\\n \\r\\n \\r\\n {{value}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Date\\r\\n \\r\\n \\r\\n {{value | date: 'dd/MM/yyyy'}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Actual Day Of Week\\r\\n \\r\\n \\r\\n {{value | date: 'EEEE'}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Treated As\\r\\n \\r\\n \\r\\n {{value.value}}\\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

Public Holiday

\\r\\n
\\r\\n
\\r\\n {{errorMessage}}\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Period\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Public Holiday\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Date\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Treat As\\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
\"","exports = module.exports = require(\"../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"span.description {\\n padding-top: 10px;\\n padding-left: 0; }\\n span.description i {\\n padding-right: 10px;\\n color: #EF483F; }\\n span.description p {\\n margin: 0;\\n font-size: 12px;\\n display: inline; }\\n\\n.accordion-top-button-row {\\n margin-bottom: 10px; }\\n\", \"\"]);\n\n// exports\n","module.exports = \"
\\r\\n \\r\\n

Edit Generator Company

\\r\\n
\\r\\n
\\r\\n
\\r\\n Company Name:\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n {{companyName}}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\"","exports = module.exports = require(\"../../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".fa {\\n font-size: xx-large;\\n border: 2px solid;\\n padding: 10px;\\n border-radius: 3px;\\n color: orange; }\\n\\nh5 {\\n margin-top: 0; }\\n\", \"\"]);\n\n// exports\n","module.exports = \"
\\r\\n \\r\\n
\\r\\n \\r\\n

Month End Reports

\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n Year\\r\\n #\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n Month\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\"","exports = module.exports = require(\"../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"/* Reset */\\nbody,\\ndiv,\\nul,\\nli,\\nh1,\\nh2,\\nh3,\\np {\\n margin: 0;\\n padding: 0; }\\n\\nli {\\n list-style: none; }\\n\\nh1,\\nh2,\\nh3,\\nh4,\\nh5,\\nh6 {\\n font-size: 100%;\\n font-weight: normal; }\\n\\n.content {\\n width: 940px;\\n height: 280px;\\n margin: 0 auto;\\n clear: both;\\n position: relative;\\n top: -140px;\\n /* IE4ever Hack: Hide from IE4 **/\\n position: static;\\n /** end hack */ }\\n\\n.logo-box {\\n width: 349px;\\n float: left;\\n border-right: 1px solid #303030;\\n height: 280px;\\n position: relative; }\\n\\nh1 {\\n padding: 12px 70px 12px 20px;\\n position: absolute;\\n right: 0;\\n text-align: left;\\n top: 25%;\\n float: left;\\n color: #EF483F;\\n letter-spacing: -1px;\\n font-size: 38px; }\\n\\nh1 cufon {\\n margin-bottom: -4px; }\\n\\nh3 {\\n font-size: 24px;\\n color: #333;\\n float: left;\\n margin-right: 15px;\\n padding-top: 5px; }\\n\\n.main-box {\\n float: left;\\n width: 500px;\\n height: 95px;\\n padding: 25px; }\\n\\nh2 {\\n font-family: Helvetica;\\n color: #ed3227;\\n font-size: 24px;\\n margin-bottom: 20px; }\\n\\nh2 span {\\n color: black;\\n font-size: 16px;\\n line-height: 26px;\\n font-style: italic; }\\n\\nul.info {\\n width: 500px;\\n padding: 0;\\n margin: 10px 0 0 0;\\n float: left; }\\n\\nul.info li {\\n margin-bottom: 20px;\\n clear: both;\\n float: left; }\\n\\nul.info li p {\\n font-size: 13px;\\n line-height: 20px;\\n color: black;\\n float: left;\\n margin: 0; }\\n\\nul.info li p.social a.tw {\\n width: 28px;\\n height: 28px;\\n margin-right: 8px;\\n float: left; }\\n\\nul.info li p.social a.fb {\\n width: 28px;\\n height: 28px;\\n float: left;\\n margin-right: 8px; }\\n\\nul.info li p.social a.li {\\n width: 28px;\\n height: 28px;\\n float: left; }\\n\\nul.info li p.social a.tw:hover {\\n width: 28px;\\n height: 28px;\\n float: left; }\\n\\nul.info li p.social a.fb:hover {\\n width: 28px;\\n height: 28px;\\n float: left; }\\n\\nul.info li p.social a.li:hover {\\n width: 28px;\\n height: 28px;\\n float: left; }\\n\", \"\"]);\n\n// exports\n","module.exports = \"
\\r\\n \\r\\n

{{ header }}

\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n {{ errorMessage}}\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n First Name\\r\\n Aa\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Last Name\\r\\n Aa\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Cellphone Number\\r\\n #\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Email Address\\r\\n @\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n ID Number\\r\\n #\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Job Title\\r\\n Aa\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Inactive\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Roles\\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
\"","\n var result = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/sass-loader/lib/loader.js!./management-report.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","module.exports = \"
\\r\\n \\r\\n

Archived Prospect Evaluation

\\r\\n
\\r\\n \\r\\n \\r\\n {{errorMessage}}\\r\\n \\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n

No items to display

\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
= pageStartIndex && prospectIndex <= pageEndIndex\\\" class=\\\"list-group col-sm-6\\\">\\r\\n \\r\\n

{{premise.premisesName}}\\r\\n \\r\\n \\r\\n Created Date : {{premise.premisesCreatedDate | date}}\\r\\n \\r\\n

\\r\\n
\\r\\n
\\r\\n
\\r\\n Distribution Area: {{premise.distributorName}}
\\r\\n
\\r\\n Tariff Code: {{premise.tariffCode}}
\\r\\n \\r\\n Holding Company: {{premise.companyName}}\\r\\n
\\r\\n
\\r\\n
\\r\\n Total Monthly Ave: {{premise.avgMonthlyConsumptionKwh | number:'2.0-0'}} kWh
\\r\\n
\\r\\n
\\r\\n \\r\\n Days Left: {{ premise.daysLeftBeforeOverdue }}\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n {{ premise.premisesProgressStatus }}\\r\\n
\\r\\n
\\r\\n {{ premise.premisesProgressStatus }}\\r\\n
\\r\\n
\\r\\n {{ premise.premisesProgressStatus }}\\r\\n
\\r\\n
\\r\\n {{ premise.premisesProgressStatus }}\\r\\n
\\r\\n
\\r\\n {{ premise.premisesProgressStatus }}\\r\\n
\\r\\n
\\r\\n {{ premise.premisesProgressStatus }}\\r\\n
\\r\\n
\\r\\n {{ premise.premisesProgressStatus }}\\r\\n
\\r\\n
\\r\\n {{ premise.premisesProgressStatus }}\\r\\n
\\r\\n
\\r\\n {{ premise.premisesProgressStatus }}\\r\\n
\\r\\n
\\r\\n {{ premise.premisesProgressStatus }}\\r\\n
\\r\\n
\\r\\n {{ premise.premisesProgressStatus }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
pageSize\\\">\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\"","\n var result = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/sass-loader/lib/loader.js!./generator-project-list.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","\n var result = require(\"!!../../../../node_modules/css-loader/index.js!../../../../node_modules/sass-loader/lib/loader.js!./notes.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","exports = module.exports = require(\"../../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".fa {\\n font-size: xx-large;\\n border: 2px solid;\\n padding: 10px;\\n border-radius: 3px;\\n color: green; }\\n\\nh5 {\\n margin-top: 0; }\\n\", \"\"]);\n\n// exports\n","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\", \"\"]);\n\n// exports\n","module.exports = \"\\r\\n\\r\\n
\\r\\n \\r\\n

\\r\\n Premises Activation Checklist\\r\\n \\r\\n \\r\\n View Details\\r\\n \\r\\n \\r\\n

\\r\\n
for {{consumerCompanyPremises.premisesName}}
\\r\\n
\\r\\n \\r\\n {{errorMessage}}\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n

\\r\\n Long Stop Date: {{prospectPpaDetail.longstopDate | date:'mediumDate'}}\\r\\n

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n Extended Long Stop 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

\\r\\n {{ccPremisesActivationSubSection.controls.ConsumerCompanyPremisesActivationChecklistItemDescription.value}}\\r\\n

\\r\\n
\\r\\n
\\r\\n

\\r\\n updated by {{ccPremisesActivationSubSection.controls.updatedBy.value}} on {{ccPremisesActivationSubSection.controls.updatedDateTime.value}}\\r\\n

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n

Changing the Identifier will affect interaction with metering provider

\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n

Forecast Parameters

\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\"","\n var result = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/sass-loader/lib/loader.js!./generator-project-facility-details.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"span.input-group-addon {\\n min-width: 90px; }\\n\\n.input-group {\\n padding-right: 0;\\n padding-left: 0; }\\n\\n.no-left-padding {\\n padding-left: 0 !important; }\\n\\nspan.input-group-addon.input-addon {\\n width: 56px;\\n text-align: center !important; }\\n\\n.extra-margin {\\n margin: 10px; }\\n\\n.note-details {\\n margin-top: 20px;\\n margin-bottom: 20px; }\\n\\n.badge-orange {\\n color: orange;\\n background-color: rgba(255, 255, 255, 0.99);\\n border: 1px solid; }\\n\", \"\"]);\n\n// exports\n","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\", \"\"]);\n\n// exports\n","module.exports = \"
\\r\\n \\r\\n
\"","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\", \"\"]);\n\n// exports\n","exports = module.exports = require(\"../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".active-validation-span {\\n color: firebrick;\\n border: unset !important; }\\n\", \"\"]);\n\n// exports\n","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".company-name {\\n text-align: right; }\\n\", \"\"]);\n\n// exports\n","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\", \"\"]);\n\n// exports\n","module.exports = \"
\\r\\n \\r\\n

Distributors

\\r\\n
\\r\\n
\\r\\n \\r\\n {{errorMessage}}\\r\\n \\r\\n

\\r\\n
\\r\\n \\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n

\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n Name\\r\\n \\r\\n \\r\\n {{row.name}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Province\\r\\n \\r\\n \\r\\n {{row.province}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Town Name\\r\\n \\r\\n \\r\\n {{row.townName}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Agreement Signed\\r\\n \\r\\n \\r\\n {{ row.agreementSigned }}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Total Consumption\\r\\n \\r\\n \\r\\n 0\\\">\\r\\n {{row.totalConsumption | number : '1.2-2' | commadumper }} kWh\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Allowed Power To Trade\\r\\n \\r\\n \\r\\n 0\\\">\\r\\n {{ row.allowedPowerToTrade | number : '1.2-2' | commadumper }} kWh\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Trading\\r\\n \\r\\n \\r\\n {{ row.trading }}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Trade For Current Month\\r\\n (kWh)\\r\\n \\r\\n \\r\\n 0\\\">\\r\\n {{ row.tradeForCurrentMonth | number : '1.2-2' | commadumper }} kWh\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\"","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"ul {\\n list-style-type: none; }\\n\\n.heading {\\n padding-left: 40px;\\n padding-right: 40px; }\\n\\n.agreement-actions {\\n padding-left: 40px;\\n padding-right: 40px;\\n height: 65px; }\\n .agreement-actions div.btn {\\n height: 100%;\\n padding-top: 14.5px;\\n padding-bottom: 14.5px; }\\n .agreement-actions div.btn button {\\n width: 100px; }\\n\\n.nda-component {\\n position: fixed;\\n top: -9999px;\\n left: -9999px;\\n width: auto;\\n height: auto;\\n overflow: hidden;\\n opacity: 0;\\n pointer-events: none;\\n z-index: -1; }\\n\", \"\"]);\n\n// exports\n","\n var result = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/sass-loader/lib/loader.js!./trading-limits-overall.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","module.exports = \"\\r\\n
\\r\\n \\r\\n

Power Per Technology

\\r\\n
\\r\\n {{errorMessage}}\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\"","exports = module.exports = require(\"../../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\", \"\"]);\n\n// exports\n","module.exports = \"\\r\\n

{{title}}\\r\\n {{rightFaint.key}} : {{rightFaint.value}}\\r\\n

\\r\\n
\\r\\n
\\r\\n
{{info.key}}: {{info.value}}
\\r\\n {{bottomFaint.key}}: {{bottomFaint.value}}\\r\\n
\\r\\n
\\r\\n
{{info.key}}: {{info.value}}
\\r\\n
\\r\\n
\\r\\n
\"","exports = module.exports = require(\"../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"span.width-120 {\\n min-width: 120px;\\n max-width: 120px; }\\n\", \"\"]);\n\n// exports\n","\n var result = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/sass-loader/lib/loader.js!./consumer-company-premises-tariff-list.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".fa {\\n font-size: xx-large;\\n border: 2px solid;\\n padding: 10px;\\n border-radius: 3px;\\n color: green; }\\n\\nh5 {\\n margin-top: 0; }\\n\", \"\"]);\n\n// exports\n","\n var result = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/sass-loader/lib/loader.js!./allocation-run-errors.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\", \"\"]);\n\n// exports\n","module.exports = \"\\r\\n
\\r\\n \\r\\n

Average Rates

\\r\\n
\\r\\n {{errorMessage}}\\r\\n \\r\\n
\\r\\n No data to display\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Summer Allocation Run {{ averagePurchaseAndSalesRate.summerMonthAndYear | date : 'MMM yyyy'}} \\r\\n
\\r\\n
Summer Average Purchase Rate R {{ averagePurchaseAndSalesRate.summerAveragePurchaseRate | number | commadumper}} \\r\\n
\\r\\n
Summer Average Sales Rate R {{ averagePurchaseAndSalesRate.summerAverageSalesRate | number | commadumper}} \\r\\n
\\r\\n
Winter Allocations Run {{ averagePurchaseAndSalesRate.winterMonthAndYear | date : 'MMM yyyy'}} \\r\\n
\\r\\n
Winter Average Purchase Rate R {{ averagePurchaseAndSalesRate.winterAveragePurchaseRate | number | commadumper}} \\r\\n
\\r\\n
Winter Average Sales Rate R {{ averagePurchaseAndSalesRate.winterAverageSalesRate | number | commadumper}} \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\"","exports = module.exports = require(\"../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\", \"\"]);\n\n// exports\n","\n var result = require(\"!!../../../../../../../node_modules/css-loader/index.js!../../../../../../../node_modules/sass-loader/lib/loader.js!./allocation-export.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","module.exports = \"
\\r\\n \\r\\n {{errorMessage}}\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n PPA Expiry Date: {{ expiryDate | date: 'dd MMMM yyyy' }}\\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 File Name\\r\\n \\r\\n \\r\\n {{value}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Document Type\\r\\n \\r\\n \\r\\n {{value.value}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Uploaded By\\r\\n \\r\\n \\r\\n {{value}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Uploaded Date\\r\\n \\r\\n \\r\\n {{value | date:'yyyy-MM-dd HH:mm'}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Download\\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

New Addendum

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n Addendum Document\\r\\n \\r\\n
\\r\\n
\\r\\n Comment\\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

Renew PPA

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n Start Date\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n Term in Years\\r\\n #\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n PPA Signed Date\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n PPA Document\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\"","\n var result = require(\"!!../../../../../../../node_modules/css-loader/index.js!../../../../../../../node_modules/sass-loader/lib/loader.js!./prospect-offer.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","\n var result = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/sass-loader/lib/loader.js!./document-download-list.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","\n var result = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/sass-loader/lib/loader.js!./user-list.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\", \"\"]);\n\n// exports\n","module.exports = \"\\r\\n
\\r\\n The following consumers have invalid parameters:\\r\\n
    \\r\\n
  • {{message}}
  • \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n

Forecast Parameters

\\r\\n \\r\\n {{errorMessage}}\\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 {{column.name}}\\r\\n \\r\\n \\r\\n {{value}} \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{column.name}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n {{column.name}}\\r\\n \\r\\n \\r\\n {{value}} \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{column.name}}\\r\\n \\r\\n \\r\\n {{value}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{column.name}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n Back\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\"","module.exports = \"\\r\\n
\\r\\n \\r\\n

Users

\\r\\n
\\r\\n \\r\\n {{errorMessage}}\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n First Name\\r\\n \\r\\n \\r\\n {{value}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Last Name\\r\\n \\r\\n \\r\\n {{value}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Email Address\\r\\n \\r\\n \\r\\n {{value}}\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\"","module.exports = \"\\r\\n

Generator Generation Summary

\\r\\n
for {{startDate | date: 'MMMM yyyy' }}, run on {{ runDate | date: 'dd MMMM yyyy\\r\\n hh:mm'}}
\\r\\n
\\r\\n\\r\\n\\r\\n {{errorMessage}}\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n {{column.name}}\\r\\n \\r\\n \\r\\n {{value}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Generation (Peak)\\r\\n \\r\\n \\r\\n {{value | number : '1.2-2' | commadumper }} {{value !== '' ? 'kWh' : ''}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Generation (Off-Peak)\\r\\n \\r\\n \\r\\n {{value | number : '1.2-2' | commadumper }} {{value !== '' ? 'kWh' : ''}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Generation (Standard)\\r\\n \\r\\n \\r\\n {{value | number : '1.2-2' | commadumper }} {{value !== '' ? 'kWh' : ''}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Generation (Flat)\\r\\n \\r\\n \\r\\n {{value | number : '1.2-2' | commadumper }} {{value !== '' ? 'kWh' : ''}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Total Power Generated\\r\\n \\r\\n \\r\\n {{value | number : '1.2-2' | commadumper }} {{value !== '' ? 'kWh' : ''}}\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\"","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\", \"\"]);\n\n// exports\n","module.exports = \"
\\r\\n

Holding Company

\\r\\n \\r\\n \\r\\n {{errorMessage}}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Holding Company Name\\r\\n Aa\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n Company Type\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n Registration Number\\r\\n #\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n Switchboard Number\\r\\n #\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n VAT Number\\r\\n #\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\"","\n var result = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/sass-loader/lib/loader.js!./address-form.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","module.exports = \"\\r\\n
\\r\\n

Prepaid Revenue

\\r\\n
\\r\\n
\\r\\n {{errorMessage}}\\r\\n \\r\\n
\\r\\n

Distributor has no prepaid vendors. Please add the necessary prepaid vendors (including tariffs and tariff blocks) to the distributor.

\\r\\n
\\r\\n
0)\\\" [formGroup]=\\\"prepaidRevenueForm\\\" (ngSubmit)=\\\"onSubmit()\\\">\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Vendor: {{prepaidVendorSection.controls.vendorName.value | substrStartAtZero:'*#*#'}}\\r\\n
\\r\\n
\\r\\n Tariff: {{prepaidVendorSection.controls.tariffName.value}}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Block Name\\r\\n
\\r\\n
\\r\\n Block kWh\\r\\n
\\r\\n
\\r\\n Revenue\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n {{prepaidVendorSubSection.controls.blockName.value}}\\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{{prepaidVendorSubSection.controls.blockKWh.value * prepaidVendorSubSection.controls.activeBlockRate.value | number:'1.2-2'}} (@ R{{prepaidVendorSubSection.controls.activeBlockRate.value}} per kWh)\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Total Allocated Prepaid Power: {{allocationRunTotalPrepaidPower}}kWh\\r\\n
\\r\\n
\\r\\n Total Prepaid Power: {{totalPrepaidPower}}kWh\\r\\n
\\r\\n
\\r\\n Total Prepaid Revenue: R{{allocationRunTotalPrepaidRevenue | number:'1.2-2'}}\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\"","module.exports = \"
\\r\\n \\r\\n

{{heading}}

\\r\\n
{{companyName}}
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\"","\n var result = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/sass-loader/lib/loader.js!./archived-generator-companies-list.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","module.exports = \"
\\r\\n
\\r\\n \\r\\n

Wheeling Fees

\\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 Charge For Prepaid (R)\\r\\n \\r\\n \\r\\n R {{ value | number: '1.2-2' }}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Charge For Postpaid (%)\\r\\n \\r\\n \\r\\n {{ value | number: '1.2-2' }} %\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Effective Date\\r\\n \\r\\n \\r\\n {{ value | date: 'yyyy/MM/dd' }}\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n

{{ updateWheelingFees ? 'Update Wheeling Fees' : 'Add Wheeling Fees' }}


\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Charge For Prepaid\\r\\n R\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Charge For Postpost\\r\\n %\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Effective 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
\"","module.exports = \"\\r\\n
\\r\\n \\r\\n

Tariff Sales Rates

\\r\\n
\\r\\n {{errorMessage}}\\r\\n \\r\\n
\\r\\n No data to display\\r\\n
\\r\\n
0\\\">\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
{{ dataItem.name }}
\\r\\n
\\r\\n
\\r\\n R {{ dataItem.AvgRateMinusWheeling | number | commadumper}}\\r\\n
\\r\\n
\\r\\n R {{ dataItem.AvgRate | number | commadumper}} ex\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\"","module.exports = \"\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n

Consumer Forecast Warnings

\\r\\n
for {{startDate | date: 'MMMM yyyy' }}, run on {{ runDate | date: 'dd MMMM yyyy hh:mm'}}
\\r\\n
\\r\\n {{errorMessage}}\\r\\n

\\r\\n None\\r\\n

\\r\\n \\r\\n \\r\\n
\\r\\n

{{warning}}

\\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\"","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".content {\\n background-color: white; }\\n\", \"\"]);\n\n// exports\n","\n var result = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/sass-loader/lib/loader.js!./allocation-send-warnings.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","module.exports = \"
\\r\\n \\r\\n

Document Maintenance

\\r\\n
\\r\\n \\r\\n {{errorMessage}}\\r\\n \\r\\n \\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n Template Name\\r\\n \\r\\n \\r\\n {{value}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Document Description\\r\\n \\r\\n \\r\\n {{value}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n File Name\\r\\n \\r\\n \\r\\n {{value}}\\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

Document Maintenance

\\r\\n
\\r\\n
\\r\\n {{errorMessage}}\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Template Name\\r\\n Aa\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Description\\r\\n Aa\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n File Name\\r\\n Aa\\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
\"","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\", \"\"]);\n\n// exports\n","module.exports = \"
\\r\\n \\r\\n {{ errorMessage }}\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n Facilities\\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 Facility Details\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
Project Facility Detail
\\r\\n
\\r\\n
\\r\\n Facility Name\\r\\n Aa\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Identifier\\r\\n Aa\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n

Changing the Identifier will affect interaction with metering provider

\\r\\n
\\r\\n
\\r\\n Eskom Identifier\\r\\n Aa\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n

Changing the Identifier will affect interaction with metering provider

\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n Connection Voltage\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n Project Type\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n Is RECs Registered\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Facility Status\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n Exclude From Run\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Reason For Excluding From Run\\r\\n Aa\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Installed Capacity\\r\\n MW\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n Is Embedded\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Contracted Capacity\\r\\n MW\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n SAP Client Number\\r\\n Aa\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
Forecasting Settings
\\r\\n\\r\\n
\\r\\n
\\r\\n Forecast Profile Generator\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n Exclude From Forecast Run\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
Facility GPS Co-ordinates
\\r\\n
\\r\\n
\\r\\n Latitude\\r\\n #\\r\\n \\r\\n \\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n Longitude\\r\\n #\\r\\n \\r\\n \\r\\n\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
Facility Address
\\r\\n
\\r\\n
\\r\\n
\\r\\n Address Line 1\\r\\n Aa\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Address Line 2\\r\\n Aa\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Address Line 3\\r\\n Aa\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Province\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n City\\r\\n Aa\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Postal Code\\r\\n #\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n Is Rural Address\\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 SPV Project Details\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n
Generation Structure
\\r\\n
\\r\\n
\\r\\n
\\r\\n Is Roof Top Based\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
Property Ownership
\\r\\n
\\r\\n
\\r\\n
\\r\\n Is Owned by IPP\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Is Official Lease In Place\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Lease Status Comment\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Lease Title Holder Name\\r\\n Aa\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
Rezoning
\\r\\n
\\r\\n
\\r\\n
\\r\\n Is Rezoning Required\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Rezoning Application Date\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Rezoning Result Obtained\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Was Rezoning Approved\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Maintenance
\\r\\n
\\r\\n
\\r\\n
\\r\\n Number of operational Months\\r\\n #\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Duration of PPA Requested (Years)\\r\\n Yr \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
General Enquiries
\\r\\n
\\r\\n
\\r\\n
\\r\\n Maintenance Downtime (Weeks)\\r\\n #\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Planned Life Expectancy (Years)\\r\\n Yr\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
Rates
\\r\\n
\\r\\n
\\r\\n
\\r\\n Minimum Required Price Per kWh Winter\\r\\n R\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Minimum Required Price Per kWh Summer\\r\\n R\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Expansion
\\r\\n
\\r\\n
\\r\\n
\\r\\n Planned Expansion\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Planned Commissioning Date\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Expected Extra Capacity (MW)\\r\\n MW\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
Licensing
\\r\\n
\\r\\n
\\r\\n
\\r\\n IRP Deviation Request Submitted\\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 No IRP Deviation Approval Obtained Reason\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Existing NERSA Generation License\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n No NERSA License Reason\\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

Existing Generator

\\r\\n
\\r\\n
Metering
\\r\\n
\\r\\n
\\r\\n
\\r\\n Is Web Enabled Meters Installed \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Planned Installation Date\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Web Meter Make and Model\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Is Check Meters Installed\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Historical Meter Data
\\r\\n \\r\\n
\\r\\n
Capacity
\\r\\n
\\r\\n
\\r\\n
\\r\\n Generation Capacity\\r\\n #\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
Existing Offtaker
\\r\\n
\\r\\n
\\r\\n
\\r\\n Existing Offtaker\\r\\n Aa\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Expiry Date of Existing PPA\\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

New Generator

\\r\\n
\\r\\n
\\r\\n
Planned Generation For A Year
\\r\\n \\r\\n
\\r\\n
REIPPP Submission
\\r\\n
\\r\\n
\\r\\n
\\r\\n Project Previously Submitted into REIPPP\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Round of REIPPP Reached\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Grid Connection
\\r\\n
\\r\\n
\\r\\n
\\r\\n Name of Nearest Substation\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Load Capacity of Substation\\r\\n MW\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Budget Connection Cost Received By Distributor\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Budget Connection Upgrade Cost\\r\\n R\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Connection and Use of Systems Agreement in place\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Project Details
\\r\\n
\\r\\n
\\r\\n
\\r\\n Planned Commercial Operation Date\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Project Progress Status\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Construction Start Date\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Electricity Connections and Metering Departments Notified\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Planned Generation For A Year
\\r\\n \\r\\n
\\r\\n
ROD (Record of Decision on EIA)
\\r\\n
\\r\\n
\\r\\n
\\r\\n EIA Completed\\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 Expected Date of Obtaining EIA Document\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n ROD Issued by Department of Environment Affairs\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n Reason for no ROD Document Provided\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
ACSA/CAA
\\r\\n
\\r\\n
\\r\\n
\\r\\n ACSA/CAA Permit Required\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n Reason for no ACSA/CAA Document Provided\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Geotechnical Study
\\r\\n
\\r\\n
\\r\\n
\\r\\n Geotechnical Study Required\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Geotechnical Study Approved\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n Reason for no Geotechnical Document Provided\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Grid Connection
`\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n Date of Connection Application\\r\\n \\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Planned Date of Connection Application\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Expected Date of Grid Connection\\r\\n \\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Financial
\\r\\n
\\r\\n
\\r\\n
\\r\\n Preferred Debt Provider\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Equity Ratio\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Equity Funding in Place\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n \\r\\n\\r\\n\\r\\n \\r\\n\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n\"","\n var result = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/sass-loader/lib/loader.js!./recs.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","exports = module.exports = require(\"../../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".badge {\\n font-weight: 100;\\n display: unset;\\n border-radius: 3px; }\\n\\n.evaluation {\\n color: #5cb85c;\\n background-color: rgba(255, 255, 255, 0.99);\\n border: 1px solid; }\\n\\n.tradeco {\\n color: #0aa8d8;\\n background-color: rgba(255, 255, 255, 0.99);\\n border: 1px solid; }\\n\\n.termsheet {\\n color: #37849e;\\n background-color: rgba(255, 255, 255, 0.99);\\n border: 1px solid; }\\n\\n.ppa {\\n color: #333;\\n background-color: rgba(255, 255, 255, 0.99);\\n border: 1px solid; }\\n\\n.ppaPending {\\n color: #a80000;\\n background-color: rgba(255, 255, 255, 0.99);\\n border: 1px solid; }\\n\\n.ppaSchedule {\\n color: #0a1fd8;\\n background-color: rgba(255, 255, 255, 0.99);\\n border: 1px solid; }\\n\\n.activation {\\n color: #3136ff;\\n background-color: rgba(255, 255, 255, 0.99);\\n border: 1px solid; }\\n\\n.more-info {\\n color: #ff8800;\\n background-color: rgba(255, 255, 255, 0.99);\\n border: 1px solid; }\\n\\n.declined {\\n background-color: rgba(255, 255, 255, 0.99);\\n color: red;\\n border: 1px solid; }\\n\\n.pointable {\\n cursor: pointer; }\\n\\n.notPointable {\\n cursor: not-allowed; }\\n\\n.dueDateWarning {\\n background-color: #FFDDDD; }\\n\\n.act-btn,\\n.act-btn h5 {\\n display: inline-block;\\n margin-left: 10px; }\\n\", \"\"]);\n\n// exports\n","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"legend {\\n margin-bottom: unset !important; }\\n\\n.badge {\\n font-weight: 100;\\n display: unset;\\n border-radius: 3px; }\\n\\n.evaluation {\\n color: #0aa8d8;\\n background-color: rgba(255, 255, 255, 0.99);\\n border: 1px solid; }\\n\\n.offer {\\n color: #5cb85c;\\n background-color: rgba(255, 255, 255, 0.99);\\n border: 1px solid; }\\n\\n.more-info {\\n color: #ff8800;\\n background-color: rgba(255, 255, 255, 0.99);\\n border: 1px solid; }\\n\\n.prospect {\\n color: #333;\\n background-color: rgba(255, 255, 255, 0.99);\\n border: 1px solid; }\\n\\n.declined {\\n background-color: rgba(255, 255, 255, 0.99);\\n color: red;\\n border: 1px solid; }\\n\\n.prospect-ppa {\\n background-color: rgba(255, 255, 255, 0.99);\\n color: #0037ff;\\n border: 1px solid; }\\n\\n.activation {\\n background-color: rgba(255, 255, 255, 0.99);\\n color: #3136ff;\\n border: 1px solid; }\\n\\n.activated {\\n background-color: rgba(255, 255, 255, 0.99);\\n color: #2dcb16;\\n border: 1px solid; }\\n\\n.pointable {\\n cursor: pointer; }\\n\", \"\"]);\n\n// exports\n","\n var result = require(\"!!../../../../../../../node_modules/css-loader/index.js!../../../../../../../node_modules/sass-loader/lib/loader.js!./allocation-power-per-tariff.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","module.exports = \"
\\r\\n \\r\\n

Archived Generator Companies

\\r\\n
\\r\\n \\r\\n {{errorMessage}}\\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 Company Name\\r\\n \\r\\n \\r\\n {{value}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Registration Number\\r\\n \\r\\n \\r\\n {{value}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Projects\\r\\n \\r\\n \\r\\n {{value || 0}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Facilities\\r\\n \\r\\n \\r\\n {{value || 0}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Options\\r\\n \\r\\n \\r\\n\\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\"","module.exports = \"\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n

Allocation Warnings

\\r\\n
for {{startDate | date: 'MMMM yyyy' }}, run on {{ runDate | date: 'dd MMMM yyyy hh:mm'}}
\\r\\n
\\r\\n {{errorMessage}}\\r\\n \\r\\n \\r\\n
\\r\\n

{{warning}}

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\"","\n var result = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/sass-loader/lib/loader.js!./generator-notifications.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","\n var result = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/sass-loader/lib/loader.js!./useful-links.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","module.exports = \"
\\r\\n \\r\\n {{errorMessage}}\\r\\n \\r\\n
\\r\\n Counterparty BOD resolution Generator PPA\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n Counterparty BOD resolution Customer PPA\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n Landlord Resolution\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n Meter and tariff change form for all new NMBM customers\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n Metering Web Site Access Application Form\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\"","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"/* Custom CSS */\\n#stickyButton {\\n position: fixed;\\n top: 8px;\\n /* Adjust as needed */\\n z-index: 5000;\\n /* Ensure it's above other content */\\n right: 200px; }\\n\\n.nda-component {\\n position: fixed;\\n top: -9999px;\\n left: -9999px;\\n width: auto;\\n height: auto;\\n overflow: hidden;\\n opacity: 0;\\n pointer-events: none;\\n z-index: -1; }\\n\", \"\"]);\n\n// exports\n","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".upload-container {\\n display: table;\\n padding-right: 60px;\\n padding-left: 15px; }\\n\", \"\"]);\n\n// exports\n","module.exports = \"\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n

Allocation Send Warnings

\\r\\n
for {{startDate | date: 'MMMM yyyy' }}, run on {{ runDate | date: 'dd MMMM yyyy hh:mm'}}
\\r\\n
\\r\\n {{errorMessage}}\\r\\n \\r\\n \\r\\n
\\r\\n

{{warning}}

\\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\"","\n var result = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/sass-loader/lib/loader.js!./document-download.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\", \"\"]);\n\n// exports\n","\n var result = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/sass-loader/lib/loader.js!./consumer-company-premises-details.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","exports = module.exports = require(\"../../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\", \"\"]);\n\n// exports\n","\n var result = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/sass-loader/lib/loader.js!./distributor-activation-report.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","module.exports = \"\\r\\n\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n

Allocation Run Details

\\r\\n
for {{allocationRun.startDateTime | date: 'MMMM yyyy' }}, run on {{ allocationRun.createdDateTime | date: 'dd MMMM yyyy HH:mm'}}
\\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 {{errorMessage}}\\r\\n\\r\\n
\\r\\n \\r\\n Note: {{allocationRun.note}}\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n\"","module.exports = \"\\r\\n
\\r\\n \\r\\n

Revenue Per Tariff

\\r\\n
\\r\\n {{errorMessage}}\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\"","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\", \"\"]);\n\n// exports\n","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\", \"\"]);\n\n// exports\n","exports = module.exports = require(\"../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"h1 {\\n color: red;\\n font-size: 72px; }\\n\\n.error-container {\\n text-align: center; }\\n\", \"\"]);\n\n// exports\n","\n var result = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/sass-loader/lib/loader.js!./meter-manual-upload.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","module.exports = \"\\r\\n\"","\n var result = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/sass-loader/lib/loader.js!./prepaid-vendor-prepaid-removal-percentage-list.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","module.exports = \"
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n Month\\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 = 12\\\">\\r\\n
\\r\\n
\\r\\n = 12\\\">\\r\\n
\\r\\n
\\r\\n = 12\\\">\\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 = 12\\\">\\r\\n
\\r\\n
\\r\\n = 12\\\">\\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 kWh\\r\\n = 12\\\">\\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
0\\\" class=\\\"row\\\">\\r\\n
\\r\\n \\r\\n
\"","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"p.document-creation-information {\\n text-align: right;\\n color: grey;\\n margin-bottom: 0;\\n font-size: 11px; }\\n\\np.document-content,\\nspan.document-content {\\n text-align: left;\\n font-size: 12px; }\\n\\nhr.document-separator {\\n margin: 3px 0; }\\n\\n.document-download {\\n padding: 0 0; }\\n\\ndiv.documents-action-links {\\n margin-bottom: 10px;\\n margin-top: 10px; }\\n\\na.documents-action-links:hover {\\n color: #EF483F !important;\\n font-weight: 600;\\n text-decoration: none !important;\\n cursor: pointer; }\\n\\n.input-group-addon.on-left {\\n min-width: 100px !important; }\\n\\n.input-group-no-table-display {\\n display: block; }\\n\\n.downloadButton {\\n min-width: 50px !important;\\n display: inline-block; }\\n\\n.deleteButton {\\n min-width: 50px !important;\\n display: inline-block; }\\n\", \"\"]);\n\n// exports\n","\n var result = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/sass-loader/lib/loader.js!./premises-details.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","module.exports = \"\\r\\n
\\r\\n \\r\\n

Generation Per Technology (12 Months)

\\r\\n
\\r\\n {{errorMessage}}\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\"","module.exports = \"
\\r\\n
\\r\\n Template\\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 Template\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n

Please click the upload button once you have selected a file

\\r\\n
\"","\n var result = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/sass-loader/lib/loader.js!./allocation-run.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","exports = module.exports = require(\"../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"h1 {\\n color: red;\\n font-size: 72px; }\\n\\n.error-container {\\n text-align: center; }\\n\", \"\"]);\n\n// exports\n","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\", \"\"]);\n\n// exports\n","\n var result = require(\"!!../../../../node_modules/css-loader/index.js!../../../../node_modules/sass-loader/lib/loader.js!./public-holiday.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","exports = module.exports = require(\"../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"p.note-creation-information {\\n text-align: right;\\n color: grey;\\n font-size: 11px; }\\n\\np.note-content {\\n text-align: left;\\n margin-top: 5px;\\n font-size: 12px; }\\n\\ndiv.notes-action-links {\\n margin-bottom: 10px;\\n margin-top: 10px; }\\n\\nbutton.right-margin {\\n margin-right: 10px; }\\n\\nhr.note-separator {\\n margin: 3px 0; }\\n\\na.notes-action-links:hover {\\n color: #EF483F !important;\\n font-weight: 600;\\n text-decoration: none !important;\\n cursor: pointer; }\\n\\ntextarea {\\n resize: none; }\\n\\n.input-group-addon.on-left {\\n min-width: 100px !important; }\\n\", \"\"]);\n\n// exports\n","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\", \"\"]);\n\n// exports\n","module.exports = \"
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\"","module.exports = \"
\\r\\n \\r\\n

Prospect Evaluation

\\r\\n
\\r\\n \\r\\n \\r\\n {{errorMessage}}\\r\\n \\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n

No items to display

\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
= pageStartIndex && prospectIndex <= pageEndIndex\\\" class=\\\"list-group col-sm-6\\\">\\r\\n \\r\\n

{{premise.premisesName}}\\r\\n \\r\\n \\r\\n Created Date : {{premise.premisesCreatedDate | date}}\\r\\n \\r\\n

\\r\\n
\\r\\n
\\r\\n
\\r\\n Distribution Area: {{premise.distributorName}}
\\r\\n
\\r\\n Tariff Code: {{premise.tariffCode}}
\\r\\n \\r\\n Holding Company: {{premise.companyName}}\\r\\n
\\r\\n
\\r\\n
\\r\\n Total Monthly Ave: {{premise.avgMonthlyConsumptionKwh | number:'2.0-0'}} kWh
\\r\\n
\\r\\n
\\r\\n \\r\\n Days Left: {{ premise.daysLeftBeforeOverdue }}\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n {{ premise.premisesProgressStatus }}\\r\\n
\\r\\n
\\r\\n {{ premise.premisesProgressStatus }}\\r\\n
\\r\\n
\\r\\n {{ premise.premisesProgressStatus }}\\r\\n
\\r\\n
\\r\\n {{ premise.premisesProgressStatus }}\\r\\n
\\r\\n
\\r\\n {{ premise.premisesProgressStatus }}\\r\\n
\\r\\n
\\r\\n {{ premise.premisesProgressStatus }}\\r\\n
\\r\\n
\\r\\n {{ premise.premisesProgressStatus }}\\r\\n
\\r\\n
\\r\\n {{ premise.premisesProgressStatus }}\\r\\n
\\r\\n
\\r\\n {{ premise.premisesProgressStatus }}\\r\\n
\\r\\n
\\r\\n {{ premise.premisesProgressStatus }}\\r\\n
\\r\\n
\\r\\n {{ premise.premisesProgressStatus }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
pageSize\\\">\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\"","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".component-container.remove-shadow {\\n box-shadow: none; }\\n\", \"\"]);\n\n// exports\n","\n var result = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/sass-loader/lib/loader.js!./generator-forecast-report.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","\n var result = require(\"!!../../../../../../../node_modules/css-loader/index.js!../../../../../../../node_modules/sass-loader/lib/loader.js!./consumer-forecast-warnings.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","module.exports = \"
\\r\\n Tariff Blocks\\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 Block Name\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Start kWh\\r\\n kWh\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n End kWh\\r\\n kWh\\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

Consumption

\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\"","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\", \"\"]);\n\n// exports\n","exports = module.exports = require(\"../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".form-signin {\\n max-width: 500px;\\n padding: 30px 38px 66px;\\n margin: 0 auto;\\n background-color: white; }\\n\\n.form-signin-heading {\\n text-align: center; }\\n .form-signin-heading img {\\n width: 100%;\\n height: 120px; }\\n\\n.form-control {\\n position: relative;\\n font-size: 16px;\\n height: auto;\\n padding: 10px; }\\n\\nbutton[type=\\\"submit\\\"] {\\n margin-top: 10px; }\\n\\nspan.input-group-addon {\\n min-width: 20px;\\n height: auto; }\\n\", \"\"]);\n\n// exports\n","module.exports = \"\\r\\n \\r\\n\"","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"span.input-group-addon {\\n min-width: 90px; }\\n\\n.input-group {\\n padding-right: 0;\\n padding-left: 0; }\\n\\n.no-left-padding {\\n padding-left: 0 !important; }\\n\\nspan.input-group-addon.input-addon {\\n width: 56px;\\n text-align: center !important; }\\n\\n.actions {\\n padding-top: 8px; }\\n\\n.table-input {\\n width: 80% !important; }\\n\\ninput.exclude-checkbox {\\n margin-top: 10px !important; }\\n\\n.form-control {\\n border-radius: 5px !important; }\\n\\n.icon-backgroundactive {\\n color: green; }\\n\\n.icon-backgroundincative {\\n color: red; }\\n\\n.allocation-button {\\n padding-left: 7px; }\\n\\n.run-button {\\n padding-left: 7px;\\n margin-right: 10px; }\\n\\nforecast-log {\\n margin-top: 10px; }\\n\", \"\"]);\n\n// exports\n","exports = module.exports = require(\"../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"nav.navbar-findcond {\\n background: #fff;\\n border-color: #ccc;\\n box-shadow: 0 0 2px 0 #ccc; }\\n\\nnav.navbar-findcond a {\\n color: #f14444; }\\n\\nnav.navbar-findcond ul.navbar-nav a {\\n color: #f14444;\\n border: 0 solid #fff;\\n border-bottom-width: 2px; }\\n\\nnav.navbar-findcond ul.navbar-nav a:hover,\\nnav.navbar-findcond ul.navbar-nav a:visited,\\nnav.navbar-findcond ul.navbar-nav a:focus,\\nnav.navbar-findcond ul.navbar-nav a:active {\\n background: #fff; }\\n\\nnav.navbar-findcond ul.navbar-nav a:hover {\\n border-color: #f14444; }\\n\\nnav.navbar-findcond li.divider {\\n background: #ccc; }\\n\\nnav.navbar-findcond button.navbar-toggle {\\n background: #f14444;\\n border-radius: 2px; }\\n\\nnav.navbar-findcond button.navbar-toggle:hover {\\n background: #999; }\\n\\nnav.navbar-findcond button.navbar-toggle > span.icon-bar {\\n background: #fff; }\\n\\nnav.navbar-findcond ul.dropdown-menu {\\n border: 0;\\n background: #fff;\\n border-radius: 4px;\\n margin: 4px 0;\\n box-shadow: 0 0 4px 0 #ccc; }\\n\\nnav.navbar-findcond ul.dropdown-menu > li > a {\\n color: #444; }\\n\\nnav.navbar-findcond ul.dropdown-menu > li > a:hover {\\n background: #f14444;\\n color: #fff; }\\n\\nnav.navbar-findcond span.badge {\\n background: #f14444;\\n font-weight: normal;\\n font-size: 11px;\\n margin: 0 4px; }\\n\\nnav.navbar-findcond span.badge.new {\\n background: rgba(255, 0, 0, 0.8);\\n color: #fff; }\\n\\n.navbar-logo {\\n height: 50px;\\n margin-top: -14px; }\\n\\n@media (min-width: 768px) and (max-width: 1024px) {\\n .navbar-collapse.collapse {\\n display: none !important; }\\n .navbar-collapse.collapse.in {\\n display: block !important; }\\n .navbar-header .collapse, .navbar-toggle {\\n display: block !important; }\\n .navbar-header {\\n float: none; } }\\n\\n@media (min-width: 768px) {\\n .last-dropdown-item {\\n left: -10px !important;\\n right: unset !important; } }\\n\", \"\"]);\n\n// exports\n","exports = module.exports = require(\"../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\", \"\"]);\n\n// exports\n","module.exports = \"\\r\\n
\\r\\n \\r\\n

Consumer RECs

\\r\\n
for {{startDate | date: 'MMMM yyyy' }}, run on {{ runDate | date: 'dd MMMM yyyy\\r\\n hh:mm'}}
\\r\\n
\\r\\n {{errorMessage}}\\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 Name\\r\\n \\r\\n \\r\\n {{row.premisesName}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n RECs\\r\\n \\r\\n \\r\\n {{row.recs}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Carry Over\\r\\n \\r\\n \\r\\n {{row.carryOver}}\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\"","module.exports = \"\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n {{errorMessage}}\\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 Forgot Password? click here\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\"","module.exports = \"
\\r\\n \\r\\n {{errorMessage}}\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n Facilities\\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 Escalation Type\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n Increase Date\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n

This is the first increase date and annual increase date going forward.

\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n Tariff Type\\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 Escalation Type\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n Minimal Acceptance Install Capacity\\r\\n #\\r\\n \\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n 1st allocation period\\r\\n #\\r\\n \\r\\n
\\r\\n
\\r\\n 2nd allocation period\\r\\n #\\r\\n \\r\\n
\\r\\n
\\r\\n 3rd allocation period\\r\\n #\\r\\n \\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n Tariff Type\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n Commercial operators date\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n

This must be on the 1st day of the month.

\\r\\n
\\r\\n\\r\\n
\\r\\n Increase Date\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n

This is the first increase date and annual increase date going forward.

\\r\\n
\\r\\n\\r\\n
\\r\\n Minimum installed capacity in period (MW)\\r\\n #\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n Minimum installed capacity in period (MW) 2\\r\\n #\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n Minimum installed capacity in period (MW) 3\\r\\n #\\r\\n \\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n New Effective 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 \\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
\"","module.exports = \"
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
Please note that there is an autosave every 5 minutes, to avoid loss of entries within 5 minute interval kindly save before closing application
\\r\\n
Application Reference Number: {{applicationReferenceNumber}}
\\r\\n

Holding Company Details

\\r\\n \\r\\n {{errorMessage}}\\r\\n \\r\\n \\r\\n
\\r\\n

Basic Information

\\r\\n
\\r\\n
\\r\\n Holding Company Name\\r\\n Aa\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Company Type\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n Registration Number\\r\\n #\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n VAT Number\\r\\n #\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n Switchboard Phone Number\\r\\n #\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n

Director Contact Details

\\r\\n
\\r\\n
\\r\\n
\\r\\n First Name\\r\\n Aa\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n Last Name\\r\\n Aa\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Cellphone Number\\r\\n #\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n Work Number\\r\\n #\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n ID Number\\r\\n #\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n Job Title\\r\\n Aa\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Email Address\\r\\n @\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

Company Address

\\r\\n
\\r\\n
\\r\\n
\\r\\n Address Line 1\\r\\n Aa\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Address Line 2\\r\\n Aa\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Address Line 3\\r\\n Aa\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Province\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n City\\r\\n Aa\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Postal Code\\r\\n #\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n Is Rural Address\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n

Additional Contacts

\\r\\n \\r\\n
0\\\">\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
Contact Details {{i + 1}}
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n First Name\\r\\n Aa\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n Last Name\\r\\n Aa\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Cellphone Number\\r\\n #\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n Work Number\\r\\n #\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n ID Number\\r\\n #\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n Job Title\\r\\n Aa\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Email Address\\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
\"","module.exports = \"
\\r\\n
\\r\\n
\\r\\n
\\r\\n

Reset Password

\\r\\n
\\r\\n \\r\\n {{ errorMessage }}\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\"","module.exports = \"\\r\\n
\\r\\n The following consumers have invalid parameters:\\r\\n
    \\r\\n
  • {{message}}
  • \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n

Allocation Parameters

\\r\\n \\r\\n {{errorMessage}}\\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 {{column.name}}\\r\\n \\r\\n \\r\\n {{value}} \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{column.name}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{column.name}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Reason For Exclusion\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n {{column.name}}\\r\\n \\r\\n \\r\\n {{value}} \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{column.name}}\\r\\n \\r\\n \\r\\n {{value}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{column.name}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{column.name}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Reason For Exclusion\\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 Back\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n\"","module.exports = \"
\\r\\n \\r\\n {{publicHolidayErrorMessage}}\\r\\n \\r\\n \\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n Period\\r\\n \\r\\n \\r\\n {{value}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Public Holiday\\r\\n \\r\\n \\r\\n {{value}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Date\\r\\n \\r\\n \\r\\n {{value | date: 'dd/MM/yyyy'}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Actual Day Of Week\\r\\n \\r\\n \\r\\n {{value | date: 'EEEE'}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Treated As\\r\\n \\r\\n \\r\\n {{value}}\\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

Public Holiday

\\r\\n
\\r\\n
\\r\\n {{publicHolidayTimePeriodErrorMessage}}\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Period\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Public Holiday\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Date {{publicHolidaysTimePeriodForm.controls.publicHolidayDate.value === '' ? 'Select a public holiday' : publicHolidaysTimePeriodForm.controls.publicHolidayDate.value | date:'fullDate'}}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Treat As\\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
\"","\n var result = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/sass-loader/lib/loader.js!./allocation-run-warnings.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","\n var result = require(\"!!../../../../../../../node_modules/css-loader/index.js!../../../../../../../node_modules/sass-loader/lib/loader.js!./generator-application-project-edit.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".container-header {\\n padding-bottom: 0 !important; }\\n\", \"\"]);\n\n// exports\n","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\", \"\"]);\n\n// exports\n","module.exports = \"
\\r\\n \\r\\n

Forecast Report: Generator

\\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 Forecast Start Date\\r\\n \\r\\n \\r\\n {{value | date: 'yyyy/MM/dd'}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Created Date\\r\\n \\r\\n \\r\\n {{value | date: 'yyyy/MM/dd HH:mm:ss'}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Delete\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Report\\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

Report Parameters

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n From Date\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\"","\n var result = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/sass-loader/lib/loader.js!./warnings-and-notifications.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".component-container {\\n box-shadow: none; }\\n\", \"\"]);\n\n// exports\n","module.exports = \"
\\r\\n Prepaid Tariffs\\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 Tariff Name\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\"","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\", \"\"]);\n\n// exports\n","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\", \"\"]);\n\n// exports\n","module.exports = \"
\\r\\n \\r\\n

NERSA Report History: Consumer

\\r\\n
\\r\\n
\\r\\n \\r\\n {{errorMessage}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Start Date\\r\\n \\r\\n \\r\\n {{value | date: 'yyyy/MM/dd'}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n End Date\\r\\n \\r\\n \\r\\n {{value | date: 'yyyy/MM/dd'}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Run Date\\r\\n \\r\\n \\r\\n {{value | date: 'yyyy/MM/dd HH:mm:ss'}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Report\\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

Report Parameters

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n From Date\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n End Date\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\"","module.exports = \"\\r\\n
\\r\\n \\r\\n

Sales Representatives

\\r\\n
\\r\\n {{errorMessage}}\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n First Name\\r\\n \\r\\n \\r\\n {{row.contact.firstName}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Last Name\\r\\n \\r\\n \\r\\n {{row.contact.lastName}}\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\"","\n var result = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/sass-loader/lib/loader.js!./create-sales-rep.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","module.exports = \"\\r\\n
\\r\\n\\r\\n\\r\\n

Demo Settings

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n
{{model.name}}
\\r\\n
\\r\\n
\\r\\n Aa\\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 {{errorMessage}}\\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 {{column.name}}\\r\\n \\r\\n \\r\\n {{value}} \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n {{column.name}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n {{column.name}}\\r\\n \\r\\n \\r\\n {{value}} \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n {{column.name}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n\"","module.exports = \"
\\r\\n \\r\\n

NERSA Report History: Generator

\\r\\n
\\r\\n
\\r\\n \\r\\n {{errorMessage}}\\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 Start Date\\r\\n \\r\\n \\r\\n {{value | date: 'yyyy/MM/dd'}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n End Date\\r\\n \\r\\n \\r\\n {{value | date: 'yyyy/MM/dd'}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Run Date\\r\\n \\r\\n \\r\\n {{value | date: 'yyyy/MM/dd HH:mm:ss'}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Report\\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

Report Parameters

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n From Date\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n End Date\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\"","\n var result = require(\"!!../../../../node_modules/css-loader/index.js!../../../../node_modules/sass-loader/lib/loader.js!./document.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".right-padding-10 {\\n padding-right: 10px; }\\n\\n.must-fill {\\n text-decoration-color: crimson;\\n color: crimson; }\\n\\n.pointable {\\n cursor: pointer; }\\n\\n.uppercase {\\n text-transform: uppercase; }\\n\", \"\"]);\n\n// exports\n","exports = module.exports = require(\"../../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\", \"\"]);\n\n// exports\n","module.exports = \"
\\r\\n
\\r\\n \\r\\n

Company Premises

\\r\\n
\\r\\n \\r\\n {{errorMessage}}\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n Premises Name\\r\\n \\r\\n \\r\\n {{value}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Reference Number\\r\\n \\r\\n \\r\\n {{value}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Distribution Area\\r\\n \\r\\n \\r\\n {{value}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Progress\\r\\n \\r\\n \\r\\n
{{ value }}
\\r\\n
{{ value }}
\\r\\n
{{ value }}
\\r\\n
{{ value }}
\\r\\n
{{ value }}
\\r\\n
{{ value }}
\\r\\n
{{ value }}
\\r\\n
{{ value }}
\\r\\n
{{ value }}
\\r\\n
{{ value }}
\\r\\n
{{ value }}
\\r\\n
{{ value }}
\\r\\n
{{ value }}
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n Sap Number\\r\\n \\r\\n \\r\\n {{value}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Tariff Code\\r\\n \\r\\n \\r\\n {{value}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Average Consumption\\r\\n \\r\\n \\r\\n {{ value | number:'2.0-0'}} kWh\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Action\\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

Add Premises

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Premises Name\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Premises Type\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Distributor\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Account Number\\r\\n Aa\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Smart Meter Installed\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\"","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"input[type=checkbox] {\\n transform: scale(2);\\n -ms-transform: scale(2);\\n -webkit-transform: scale(2);\\n padding-right: 15px;\\n margin-left: 7px !important;\\n border: 1px solid #767676 !important; }\\n\", \"\"]);\n\n// exports\n","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".number {\\n text-align: right !important; }\\n\\n.heading-no-top-margin {\\n margin-top: 0; }\\n\", \"\"]);\n\n// exports\n","exports = module.exports = require(\"../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\nexports.i(require(\"-!../../../../node_modules/css-loader/index.js!@swimlane/ngx-datatable/release/themes/material.css\"), \"\");\n\n// module\nexports.push([module.id, \"div.bs-calendar-container > div {\\n display: flex; }\\n\\n.server-scrolling {\\n height: calc(50vh - 110px); }\\n\\n::ng-deep .progress-linear {\\n position: fixed !important;\\n bottom: 0px; }\\n\", \"\"]);\n\n// exports\n","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\", \"\"]);\n\n// exports\n","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".container-header {\\n padding-bottom: 0 !important; }\\n\", \"\"]);\n\n// exports\n","module.exports = \"
\\r\\n
\\r\\n \\r\\n

Generator Report

\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n {{errorMessage}}\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\"","\n var result = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/sass-loader/lib/loader.js!./generator-project-ppa-maintenance-commercial-agreement-change.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","\n var result = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/sass-loader/lib/loader.js!./document-upload.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","exports = module.exports = require(\"../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"span.width-120 {\\n min-width: 120px;\\n max-width: 120px; }\\n\", \"\"]);\n\n// exports\n","module.exports = \"

Document{{!documentId ? 's' : ''}}

\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n {{errorMessage}}\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n

None

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Document Type\\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
= pageDocumentStartIndex && documentIndex <= pageDocumentEndIndex\\\">\\r\\n
\\r\\n
\\r\\n
\\r\\n {{document.documentType.value}}\\r\\n
\\r\\n
\\r\\n {{document.fileName}}\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n

uploaded by {{document.createdBy}} on\\r\\n {{document.createdDateTime}}

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
0\\\" >\\r\\n \\r\\n
\\r\\n
\"","\n var result = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/sass-loader/lib/loader.js!./consumer-details.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","module.exports = \"
\\r\\n \\r\\n {{errorMessage}}\\r\\n
\\r\\n\"","module.exports = \"\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n

{{ value }}

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
{{ title }}
\\r\\n
\\r\\n
\\r\\n
{{ heading }}
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\"","exports = module.exports = require(\"../../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\", \"\"]);\n\n// exports\n","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\", \"\"]);\n\n// exports\n","module.exports = \"
\\r\\n \\r\\n \\r\\n {{errorMessage}}\\r\\n \\r\\n
\\r\\n\\r\\n\"","module.exports = \"
\\r\\n \\r\\n

Bulk Meter Details

\\r\\n
\\r\\n \\r\\n {{errorMessage}}\\r\\n\\r\\n
\\r\\n
\\r\\n

Bulk Meter

\\r\\n
\\r\\n
\\r\\n
\\r\\n Route Name\\r\\n Aa\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Route Number\\r\\n #\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Is Main Bulk Meter\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n\\r\\n

Tariff

\\r\\n
\\r\\n
\\r\\n
\\r\\n Tariff\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\"","module.exports = \"
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n {{pageError}}\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n {{column.name}}\\r\\n \\r\\n \\r\\n {{value}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Start Date\\r\\n \\r\\n \\r\\n {{value | date:'yyyy MMM'}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n End Date\\r\\n \\r\\n \\r\\n {{value | date:'yyyy MMM'}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Created Date\\r\\n \\r\\n \\r\\n {{value | date:'yyyy-MM-dd HH:mm'}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Created By\\r\\n \\r\\n \\r\\n {{value}}\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\"","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"span.input-group-addon {\\n min-width: 90px; }\\n\\n.input-group {\\n padding-right: 0;\\n padding-left: 0; }\\n\\n.no-left-padding {\\n padding-left: 0 !important; }\\n\\nspan.input-group-addon.input-addon {\\n width: 56px;\\n text-align: center !important; }\\n\\n.allocation-button {\\n padding-left: 7px; }\\n\", \"\"]);\n\n// exports\n","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"span.input-group-addon {\\n min-width: 90px; }\\n\\n.input-group {\\n padding-right: 0;\\n padding-left: 0; }\\n\\n.no-left-padding {\\n padding-left: 0 !important; }\\n\\nspan.input-group-addon.input-addon {\\n width: 56px;\\n text-align: center !important; }\\n\\n.allocation-button {\\n padding-left: 7px; }\\n\", \"\"]);\n\n// exports\n","module.exports = \"
\\r\\n \\r\\n {{errorMessage}}\\r\\n
\\r\\n\"","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\", \"\"]);\n\n// exports\n","module.exports = \"
\\r\\n \\r\\n {{errorMessage}}\\r\\n
\\r\\n\"","module.exports = \"
\\r\\n \\r\\n

System Settings

\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n {{errorMessage}}\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n\\r\\n \\r\\n \\r\\n Setting\\r\\n \\r\\n \\r\\n {{ value }}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Value\\r\\n \\r\\n \\r\\n {{ value }}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Description\\r\\n \\r\\n \\r\\n {{ value }}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Updated By\\r\\n \\r\\n \\r\\n {{ value }}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Updated Date\\r\\n \\r\\n \\r\\n {{ value | date: 'yyyy/MM/dd HH:mm:ss'}}\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n

System Setting: \\\"{{selectedSetting.settingKey}}\\\"

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Value\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\"","\n var result = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/sass-loader/lib/loader.js!./generator-ppa-warning-card.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","\n var result = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/sass-loader/lib/loader.js!./generation-to-date.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","\n var result = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/sass-loader/lib/loader.js!./premises-evaluation-notifications-card.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","\n var result = require(\"!!../../../../node_modules/css-loader/index.js!../../../../node_modules/sass-loader/lib/loader.js!./maintenance.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","\n var result = require(\"!!../../../../node_modules/css-loader/index.js!../../../../node_modules/sass-loader/lib/loader.js!./404.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","module.exports = \"
\\r\\n
\\r\\n \\r\\n

Meter Installation Charges

\\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 Installation Charge\\r\\n \\r\\n \\r\\n R {{ value }}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Administration Fee\\r\\n \\r\\n \\r\\n R {{ value | number }}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Effective Date\\r\\n \\r\\n \\r\\n {{ value | date: 'yyyy/MM/dd' }}\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n

{{ updateMeterInstallationCharges ? 'Update Meter Installation Charges' : 'Add Meter Installation Charges' }}


\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Installation Charge\\r\\n R\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Administration Fee\\r\\n R\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Effective 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
\"","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".horizontal-inputs {\\n width: 100%;\\n margin: 0; }\\n .horizontal-inputs div {\\n display: table; }\\n\\nspan.input-group-addon {\\n min-width: 200px;\\n background-color: white;\\n color: black;\\n border: none;\\n font-weight: bold;\\n text-align: right;\\n padding: 0 12px; }\\n\\n.input-group input {\\n border-radius: 5px; }\\n\\n.input-group select {\\n border-radius: 5px; }\\n\\n.input-group textarea {\\n border-radius: 5px; }\\n\\n.input-group,\\n.horizontal-inputs {\\n padding-right: 40px;\\n padding-bottom: 20px; }\\n\\n.input-addon {\\n line-height: 1.25;\\n color: #464a4c !important;\\n text-align: center;\\n background-color: #eceeef !important;\\n border: 1px solid rgba(0, 0, 0, 0.15) !important;\\n border-top-left-radius: 5px !important;\\n border-bottom-left-radius: 5px !important;\\n min-width: 40px !important; }\\n\\n.left-addon-input,\\nss-multiselect-dropdown > div > button.btn {\\n border-top-left-radius: 0 !important;\\n border-bottom-left-radius: 0 !important; }\\n\\n.additional-details-header {\\n display: inline-block; }\\n\\n.action-buttons {\\n width: 120px; }\\n\\n.form-actions {\\n height: 40px; }\\n\\n.checkbox {\\n margin: 0 0 0;\\n padding: 0; }\\n .checkbox input {\\n margin: 0;\\n padding: 0;\\n height: 15px;\\n width: 15px; }\\n\\n.checkbox label input {\\n margin: 4px 3px 0 -20px;\\n height: auto;\\n width: auto; }\\n\\ninput[type='checkbox'] {\\n margin-top: 3px !important; }\\n\\n.bordered {\\n border: 1px solid silver;\\n border-radius: 5px;\\n padding: 20px 10px 0 10px; }\\n\", \"\"]);\n\n// exports\n","module.exports = \"
\\r\\n

Projects

\\r\\n \\r\\n \\r\\n {{errorMessage}}\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n Project Name\\r\\n \\r\\n \\r\\n {{value}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Distribution Area\\r\\n \\r\\n \\r\\n {{value}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Capacity\\r\\n \\r\\n \\r\\n {{value}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Technology\\r\\n \\r\\n \\r\\n {{value}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Facilities\\r\\n \\r\\n \\r\\n {{value || 0}}\\r\\n \\r\\n \\r\\n \\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\"","\n var result = require(\"!!../../../../node_modules/css-loader/index.js!../../../../node_modules/sass-loader/lib/loader.js!./power-profile-filter.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","\n var result = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/sass-loader/lib/loader.js!./forgot-password.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","\n var result = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/sass-loader/lib/loader.js!./facilities-evaluation-notifications-card.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","\n var result = require(\"!!../../../../../../../node_modules/css-loader/index.js!../../../../../../../node_modules/sass-loader/lib/loader.js!./forecast-parameters.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","module.exports = \"
\\r\\n \\r\\n {{errorMessage}}\\r\\n \\r\\n \\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n Tariff Code\\r\\n \\r\\n \\r\\n {{value}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Tariff Name\\r\\n \\r\\n \\r\\n {{value}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Tariff Type\\r\\n \\r\\n \\r\\n {{value}}\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\"","import { Component, OnInit, ViewChild, TemplateRef } from '@angular/core';\r\nimport { ActivatedRoute, Router, Params } from '@angular/router';\r\nimport { CommonService } from '../../../common/common-service';\r\nimport { AuthorisationService } from '../../../authorisation-service/authorisation.service';\r\nimport { InvoiceService } from '../invoice.service';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { InvoiceBatchInvoiceListComponent } from '../invoice-batch-invoice-list/invoice-batch-invoice-list.component';\r\nimport { BsModalRef, BsModalService } from 'ngx-bootstrap';\r\nimport { saveAs as importedSaveAs } from 'file-saver';\r\n\r\nenum DownloadBtnTexts {\r\n invoice = 'Download Invoice Export',\r\n credit = 'Download Credit Export',\r\n}\r\n@Component({\r\n selector: 'invoice-batch-details',\r\n templateUrl: './invoice-batch-details.component.html',\r\n styleUrls: ['./invoice-batch-details.component.scss'],\r\n})\r\nexport class InvoiceBatchDetailsComponent implements OnInit {\r\n @ViewChild(InvoiceBatchInvoiceListComponent)\r\n public subcomponentRef: InvoiceBatchInvoiceListComponent;\r\n\r\n public invoiceBatchId: number;\r\n public invoiceBatch: any;\r\n public loading = false;\r\n public activeTab: string = 'invoicing';\r\n public errorMessage = '';\r\n public isReadOnlyMode = true;\r\n public isEmailSending = false;\r\n public invoiceEmailLogs: any[];\r\n public downloadBtnText = DownloadBtnTexts.invoice;\r\n public credit = false;\r\n public processingSAPDownload = false;\r\n public processingSummarizedDownload = false;\r\n private modalRef: BsModalRef;\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n private authorisationService: AuthorisationService,\r\n public commonService: CommonService,\r\n private toastr: ToastrService,\r\n private invoiceService: InvoiceService,\r\n private modalService: BsModalService,\r\n private router: Router\r\n ) {}\r\n\r\n public ngOnInit() {\r\n this.loading = true;\r\n this.activeTab = 'invoicing';\r\n this.route.params.subscribe(\r\n (routeParams: Params) => {\r\n this.invoiceBatchId = routeParams.invoiceBatchId;\r\n if (routeParams.tab) {\r\n this.activeTab = routeParams.tab;\r\n if (routeParams.tab === 'crediting') {\r\n this.downloadBtnText = DownloadBtnTexts.credit;\r\n this.credit = true;\r\n }\r\n }\r\n\r\n this.route.queryParams.subscribe(\r\n (queryParams) => {\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n\r\n this.loading = true;\r\n this.invoiceService\r\n .getDetailInvoiceBatch(this.invoiceBatchId)\r\n .subscribe(\r\n (batch) => {\r\n this.loading = false;\r\n this.invoiceBatch = batch;\r\n this.isEmailSending =\r\n batch.invoiceStatus.value === 'Sending Invoices';\r\n },\r\n (error) => {\r\n this.loading = false;\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n\r\n this.isReadOnlyMode = this.authorisationService.isInvoiceBatchListsReadOnly();\r\n }\r\n\r\n public sendConsumerInvoiceEmails() {\r\n if (\r\n confirm(\r\n 'Are you sure you want to send invoices to all the consumers in the batch?'\r\n )\r\n ) {\r\n this.invoiceBatch.sent = true;\r\n this.isEmailSending = true;\r\n this.invoiceService\r\n .sendConsumerInvoiceEmails(this.invoiceBatchId)\r\n .subscribe(\r\n () => {\r\n this.toastr.success(\r\n 'Started to send consumer invoice emails.'\r\n );\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n }\r\n }\r\n\r\n public showEmaillogsModal(template: TemplateRef) {\r\n this.loading = true;\r\n this.invoiceService\r\n .getConsumerInvoiceEmailLogs(this.invoiceBatchId)\r\n .subscribe(\r\n (page) => {\r\n this.invoiceEmailLogs = page;\r\n this.loading = false;\r\n // Show Modal\r\n this.modalRef = this.modalService.show(template);\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n\r\n public postInvoiceBatch(): void {\r\n if (confirm('Are you sure you want post this batch?')) {\r\n this.toastr.info('Posting Invoice Batch');\r\n\r\n this.loading = true;\r\n this.invoiceService.postInvoiceBatch(this.invoiceBatchId).subscribe(\r\n () => {\r\n this.invoiceService.triggerRefresh();\r\n\r\n this.loading = false;\r\n this.toastr.success('Invoice batch posted');\r\n this.invoiceBatch.posted = true;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.toastr.error(this.errorMessage);\r\n }\r\n );\r\n }\r\n }\r\n\r\n public markAllAsPaid(): void {\r\n if (confirm('Are you sure you set all customers as paid?')) {\r\n this.toastr.info('Updating Payments');\r\n\r\n this.loading = true;\r\n this.invoiceService\r\n .markAllInvoicePaid(this.invoiceBatchId, true)\r\n .subscribe(\r\n () => {\r\n this.invoiceService.triggerRefresh();\r\n\r\n this.loading = false;\r\n this.toastr.success('Invoice batch updated');\r\n this.invoiceBatch.posted = true;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.toastr.error(this.errorMessage);\r\n }\r\n );\r\n }\r\n }\r\n\r\n public markAllAsUnpaid(): void {\r\n if (confirm('Are you sure you set all customers as unpaid?')) {\r\n this.toastr.info('Updating Payments');\r\n\r\n this.loading = true;\r\n this.invoiceService\r\n .markAllInvoicePaid(this.invoiceBatchId, false)\r\n .subscribe(\r\n () => {\r\n this.invoiceService.triggerRefresh();\r\n\r\n this.loading = false;\r\n this.toastr.success('Invoice batch updated');\r\n this.invoiceBatch.posted = true;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.toastr.error(this.errorMessage);\r\n }\r\n );\r\n }\r\n }\r\n\r\n public updateDownloadBtn(tabset: any) {\r\n if (\r\n tabset.tabs.filter((tab: { active: any }) => tab.active)[0].id ===\r\n 'invoice'\r\n ) {\r\n this.downloadBtnText = DownloadBtnTexts.invoice;\r\n this.credit = false;\r\n } else {\r\n this.downloadBtnText = DownloadBtnTexts.credit;\r\n this.credit = true;\r\n }\r\n }\r\n\r\n public getSAPExport() {\r\n let text: string;\r\n if (this.credit) {\r\n text = 'credit';\r\n } else {\r\n text = 'invoice';\r\n }\r\n this.processingSAPDownload = true;\r\n this.toastr.info('Processing SAP export');\r\n this.invoiceService\r\n .getSAPExport(this.invoiceBatchId, this.credit)\r\n .subscribe(\r\n (blob) => {\r\n this.toastr.success('SAP export downloading');\r\n importedSaveAs(blob, 'Sap' + text + 'Export.zip');\r\n this.toastr.success('Downloading SAP' + text + 'export');\r\n this.processingSAPDownload = false;\r\n },\r\n () => {\r\n this.errorMessage = this.commonService.handleDocumentErrorMessage(\r\n 'SAP' + text + 'download error'\r\n );\r\n this.toastr.error(this.errorMessage);\r\n this.processingSAPDownload = false;\r\n }\r\n );\r\n }\r\n\r\n public getBatchSummary() {\r\n this.processingSummarizedDownload = true;\r\n this.toastr.info('Processing Summarized batch export');\r\n this.invoiceService.getBatchSummary(this.invoiceBatchId).subscribe(\r\n (blob) => {\r\n this.toastr.success('Batch summary export downloading');\r\n importedSaveAs(blob, 'BatchSummaryExport.csv');\r\n this.toastr.success('Batch summary export complete');\r\n this.processingSummarizedDownload = false;\r\n },\r\n () => {\r\n this.errorMessage = this.commonService.handleDocumentErrorMessage(\r\n 'Batch summary export download error'\r\n );\r\n this.toastr.error(this.errorMessage);\r\n this.processingSummarizedDownload = false;\r\n }\r\n );\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable } from 'rxjs/Rx';\r\nimport { FilteredPowerProfile } from '../../model/power-profiles/filtered-power-profile.model';\r\n\r\n@Injectable()\r\nexport class DashboardService {\r\n constructor(private http: HttpClient) {}\r\n\r\n public getGenerationToDate(): Observable {\r\n return this.http.get(API_URL + 'Dashboard/GetGenerationToDate');\r\n }\r\n\r\n public getGenerationPerTechnologyToDate(): Observable {\r\n return this.http.get(\r\n API_URL + 'Dashboard/GetGenerationPerTechnologyToDate'\r\n );\r\n }\r\n\r\n public getPowerProfilesToDate(): Observable {\r\n return this.http.get(API_URL + 'Dashboard/GetPowerProfilesToDate');\r\n }\r\n\r\n public getPremisesEvaluationNotifications(): Observable {\r\n return this.http.get(\r\n API_URL + 'Dashboard/GetPremisesEvaluationNotifications'\r\n );\r\n }\r\n\r\n public getFacilityEvaluationNotifications(): Observable {\r\n return this.http.get(\r\n API_URL + 'Dashboard/GetFacilityEvaluationNotifications'\r\n );\r\n }\r\n\r\n public getGeneratorPpaWarningNotifications(): Observable {\r\n return this.http.get(\r\n API_URL + 'Dashboard/GetGeneratorPpaWarningNotifications'\r\n );\r\n }\r\n\r\n public getConsumerCompanyPpaWarningNotifications(): Observable {\r\n return this.http.get(\r\n API_URL + 'Dashboard/GetConsumerCompanyPpaWarningNotifications'\r\n );\r\n }\r\n\r\n public GetFilteredPowerProfiles(\r\n data: FilteredPowerProfile\r\n ): Observable {\r\n return this.http.post(\r\n API_URL + 'Dashboard/GetFilteredPowerProfiles',\r\n data\r\n );\r\n }\r\n}\r\n","import { JwtHelperService } from '@auth0/angular-jwt';\r\n\r\nimport { of as observableOf, Observable, Subject } from 'rxjs';\r\n\r\nimport { delay, map } from 'rxjs/operators';\r\nimport { Injectable } from '@angular/core';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { Router } from '@angular/router';\r\nimport { HttpClient, HttpResponse } from '@angular/common/http';\r\n\r\n@Injectable()\r\nexport class AuthenticationService {\r\n private readonly loggedInObservable: Observable;\r\n private loggedInSubject: Subject;\r\n private jwtHelperService: JwtHelperService;\r\n\r\n constructor(private http: HttpClient, private router: Router) {\r\n this.loggedInSubject = new Subject();\r\n this.loggedInObservable = this.loggedInSubject.asObservable();\r\n this.jwtHelperService = new JwtHelperService();\r\n }\r\n\r\n public getToken(): string {\r\n const obj = JSON.parse(localStorage.getItem('token'));\r\n if (isNullOrUndefined(obj)) {\r\n return null;\r\n }\r\n return obj.token;\r\n }\r\n\r\n public getCurrentUserFullName() {\r\n const decodedToken = this.decodeToken();\r\n const firstName = decodedToken['given_name'];\r\n const lastName = decodedToken['family_name'];\r\n\r\n return firstName + ' ' + lastName;\r\n }\r\n\r\n public getCurrentUserUserName() {\r\n return this.decodeToken()['unique_name'];\r\n }\r\n\r\n // noinspection JSMethodCanBeStatic\r\n public getRefreshToken(): string {\r\n const obj = JSON.parse(localStorage.getItem('refreshtoken'));\r\n if (isNullOrUndefined(obj)) {\r\n return null;\r\n }\r\n return obj.refreshToken;\r\n }\r\n\r\n public isAuthenticated(): boolean {\r\n const accessTokenValid =\r\n !isNullOrUndefined(this.getToken()) &&\r\n !this.jwtHelperService.isTokenExpired(this.getToken());\r\n const refreshTokenValid =\r\n !isNullOrUndefined(this.getRefreshToken()) &&\r\n !this.jwtHelperService.isTokenExpired(this.getRefreshToken());\r\n const maintenanceModeActivated = this.isMaintenanceModeActivated();\r\n\r\n return (\r\n !maintenanceModeActivated && (accessTokenValid || refreshTokenValid)\r\n );\r\n }\r\n\r\n public isMaintenanceModeActivated(): boolean {\r\n // console.log('maintenance mode: ' + MAINTENANCE_MODE, process.env.MAINTENANCE_MODE);\r\n if (process.env.MAINTENANCE_MODE) {\r\n this.router.navigate(['maintenance-mode']);\r\n }\r\n return false;\r\n }\r\n\r\n // noinspection JSMethodCanBeStatic\r\n public isLoggedIn(): boolean {\r\n return this.isAuthenticated();\r\n }\r\n\r\n public isRole(allowedRoles: string): boolean {\r\n if (allowedRoles === 'none') {\r\n return true;\r\n }\r\n\r\n if (this.getToken()) {\r\n const decodedToken = this.decodeToken();\r\n const roles =\r\n decodedToken[\r\n 'http://schemas.microsoft.com/ws/2008/06/identity/claims/role'\r\n ];\r\n if (roles) {\r\n const currentRolesList: string[] = roles.toString().split(',');\r\n const allowedRolesList: string[] = allowedRoles.split(',');\r\n let result: boolean;\r\n result =\r\n currentRolesList.filter(\r\n (currentRole) =>\r\n -1 !== allowedRolesList.indexOf(currentRole)\r\n ).length >= 1;\r\n return result;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n public isOnlySingleRole(allowedRole: string): boolean {\r\n if (allowedRole === 'none') {\r\n return true;\r\n }\r\n\r\n if (this.getToken()) {\r\n const decodedToken = this.decodeToken();\r\n const roles =\r\n decodedToken[\r\n 'http://schemas.microsoft.com/ws/2008/06/identity/claims/role'\r\n ];\r\n if (roles) {\r\n return roles.indexOf(allowedRole) > -1;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n public login(username: string, password: string): Observable {\r\n return this.http\r\n .post(API_URL + 'auth/token', { username, password })\r\n .pipe(\r\n map(\r\n (response: HttpResponse) => {\r\n this.loggedInSubject.next(true);\r\n const responseString = JSON.stringify(response);\r\n localStorage.setItem('token', responseString);\r\n localStorage.setItem('loggedin', 'true');\r\n const fakePass = '';\r\n this.http\r\n .post(API_URL + 'auth/createrefreshtoken', {\r\n username,\r\n fakePass,\r\n })\r\n .subscribe(\r\n (refreshResponse: HttpResponse) => {\r\n const refreshToken = JSON.stringify(\r\n refreshResponse\r\n );\r\n localStorage.setItem(\r\n 'refreshtoken',\r\n refreshToken\r\n );\r\n return true;\r\n },\r\n () => {\r\n return false;\r\n }\r\n );\r\n return true;\r\n },\r\n () => {\r\n return false;\r\n }\r\n )\r\n );\r\n }\r\n\r\n public refreshToken(): Observable {\r\n const refreshToken = this.getRefreshToken();\r\n const userName = this.jwtHelperService.decodeToken(refreshToken)[\r\n 'unique_name'\r\n ];\r\n this.http\r\n .post(\r\n API_URL +\r\n 'auth/refreshtoken?userName=' +\r\n userName +\r\n '&refreshToken=' +\r\n refreshToken,\r\n { userName, refreshToken }\r\n )\r\n .subscribe(\r\n (response: HttpResponse) => {\r\n const responseString = JSON.stringify(response);\r\n\r\n localStorage.setItem('token', responseString);\r\n localStorage.setItem('refreshtoken', responseString);\r\n },\r\n (error) => {\r\n return observableOf(error);\r\n }\r\n );\r\n\r\n return observableOf(this.getToken()).pipe(delay(200));\r\n }\r\n\r\n public revokeTokens(): Observable {\r\n const userName = this.decodeToken()['unique_name'];\r\n return this.http.post(\r\n API_URL + 'api/auth/revoketokens?userName=' + userName,\r\n { userName }\r\n );\r\n }\r\n\r\n public ResetPassword(emailAddress: string): Observable {\r\n return this.http.post(\r\n API_URL +\r\n 'auth/SendPasswordResetEmail?emailAddress=' +\r\n emailAddress,\r\n { emailAddress }\r\n );\r\n }\r\n\r\n public logout(shouldNavigateToLogoutComponent = true): void {\r\n localStorage.removeItem('token');\r\n localStorage.removeItem('refreshtoken');\r\n localStorage.removeItem('loggedin');\r\n this.loggedInSubject.next(false);\r\n // noinspection JSIgnoredPromiseFromCall\r\n if (shouldNavigateToLogoutComponent) {\r\n this.router.navigate(['logout']);\r\n }\r\n }\r\n\r\n public getLoggedInObservable(): Observable {\r\n return this.loggedInObservable;\r\n }\r\n\r\n private decodeToken() {\r\n return this.jwtHelperService.decodeToken(this.getToken());\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Location } from '@angular/common';\r\nimport {\r\n AbstractControl,\r\n FormArray,\r\n FormControl,\r\n FormGroup,\r\n ValidatorFn,\r\n} from '@angular/forms';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { IMultiSelectSettings } from 'angular-2-dropdown-multiselect';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { AuthenticationService } from '../authentication/service/authentication.service';\r\n\r\n@Injectable()\r\nexport class CommonService {\r\n public defaultMultiSelectSettings: IMultiSelectSettings = {\r\n checkedStyle: 'checkboxes',\r\n buttonClasses: 'btn btn-default',\r\n dynamicTitleMaxItems: 2,\r\n closeOnSelect: false,\r\n enableSearch: true,\r\n };\r\n\r\n public twoDecimalMasking = {\r\n align: 'left',\r\n allowNegative: false,\r\n precision: 2,\r\n prefix: '',\r\n thousands: ' ',\r\n decimal: ',',\r\n };\r\n\r\n public threeDecimalMasking = {\r\n align: 'left',\r\n allowNegative: false,\r\n precision: 3,\r\n thousands: ' ',\r\n decimal: ',',\r\n prefix: '',\r\n };\r\n\r\n public fiveDecimalMasking = {\r\n align: 'left',\r\n allowNegative: false,\r\n precision: 5,\r\n thousands: ' ',\r\n decimal: ',',\r\n prefix: '',\r\n };\r\n\r\n constructor(\r\n private httpClient: HttpClient,\r\n private authService: AuthenticationService,\r\n private location: Location\r\n ) {}\r\n\r\n public validateAllFormFields(formGroup: any): void {\r\n Object.keys(formGroup.controls).forEach((field) => {\r\n const control = formGroup.get(field);\r\n if (control instanceof FormControl) {\r\n control.markAsTouched({ onlySelf: true });\r\n } else {\r\n // noinspection SuspiciousInstanceOfGuard\r\n if (control instanceof FormGroup) {\r\n this.validateAllFormFields(control);\r\n } else {\r\n // noinspection SuspiciousInstanceOfGuard\r\n if (control instanceof FormArray) {\r\n this.validateAllFormFields(control);\r\n }\r\n }\r\n }\r\n });\r\n formGroup.markAsTouched();\r\n }\r\n\r\n public getEntityLookups(entityLookupInputList: string[]): Observable {\r\n return this.httpClient.post(API_URL + 'EntityLookup/GetEntityLookups', {\r\n entityLookupInputList,\r\n });\r\n }\r\n\r\n public getAttributes(attributeInputList: string[]): Observable {\r\n return this.httpClient.post(API_URL + 'Attribute/GetAttributes', {\r\n attributeInputList,\r\n });\r\n }\r\n\r\n // noinspection JSMethodCanBeStatic\r\n public enableControl(\r\n control: AbstractControl,\r\n validators: ValidatorFn[] = null,\r\n updateValidity: boolean = true\r\n ) {\r\n control.enable();\r\n if (validators) {\r\n control.setValidators(validators);\r\n }\r\n if (updateValidity) {\r\n control.markAsTouched();\r\n control.updateValueAndValidity();\r\n }\r\n }\r\n\r\n // noinspection JSMethodCanBeStatic\r\n public disableControl(\r\n control: AbstractControl,\r\n updateValidity: boolean = true\r\n ): void {\r\n control.disable();\r\n control.clearValidators();\r\n if (updateValidity) {\r\n control.markAsTouched();\r\n control.updateValueAndValidity();\r\n }\r\n }\r\n\r\n public back() {\r\n this.location.back();\r\n }\r\n\r\n // noinspection JSMethodCanBeStatic\r\n public companyRegistrationNumberValidator(\r\n control: FormControl\r\n ): { [s: string]: boolean } {\r\n if (!isNullOrUndefined(control.value)) {\r\n // Format for a company registration number is as follows:\r\n // YYYY/NNNNNN/NN\r\n // YYYY - for the Year in which incorporation was affected.\r\n // NNNNNN - unique consequential number containing six digits and allocated to the entity in a specific year of incorporation\r\n // NN - a numeric value indicating the type of enterprise which is presently in use\r\n // http://www.cipro.co.za/news_events/notices.asp\r\n // https://issuu.com/isikhovapublishing/docs/lead_sa_part_1/71\r\n // regex with restricted company types: '([0-9]){4}\\/([0-9]){6}\\/(06|07|08|09|10|21|22)'\r\n const regexMatcher = new RegExp('([0-9]){4}/([0-9]){6}/([0-9]){2}');\r\n const match = regexMatcher.test(control.value);\r\n if (!match) {\r\n return { companyRegistrationNumberInvalid: true };\r\n }\r\n return null;\r\n }\r\n return null;\r\n }\r\n\r\n public handleErrorMessage(error: any) {\r\n return !isNullOrUndefined(error.error) &&\r\n !isNullOrUndefined(error.error.errorMessage)\r\n ? error.error.errorMessage\r\n : 'An error has occurred, please inform the necessary parties.';\r\n }\r\n\r\n public handleDocumentErrorMessage(documentName: string) {\r\n return (\r\n 'An error has occurred while attempting to retrieve the ' +\r\n documentName +\r\n ' document'\r\n );\r\n }\r\n\r\n public clearOutTokens() {\r\n this.authService.logout(false);\r\n }\r\n\r\n public isSalesRepUserLoggedIn() {\r\n return this.authService.isRole('SalesRep');\r\n }\r\n\r\n public isConsumerApplicationUserLoggedIn() {\r\n return this.authService.isRole('ConsumerApplication');\r\n }\r\n\r\n public isGeneratorApplicationUserLoggedIn() {\r\n return this.authService.isRole('GeneratorApplication');\r\n }\r\n\r\n public getCurrentUserFullName() {\r\n return this.authService.getCurrentUserFullName();\r\n }\r\n\r\n public getCurrentUserUsername() {\r\n return this.authService.getCurrentUserUserName();\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { DashboardService } from '../../dashboard.service';\r\nimport { CommonService } from '../../../../common/common-service';\r\n\r\n@Component({\r\n selector: 'facilities-evaluation-notifications-card',\r\n templateUrl: './facilities-evaluation-notifications-card.component.html',\r\n styleUrls: ['./facilities-evaluation-notifications-card.component.scss'],\r\n})\r\nexport class FacilitiesEvaluationNotificationsCardComponent implements OnInit {\r\n public overdue: number = 0;\r\n public total: number = 0;\r\n public errorMessage = '';\r\n public loading = false;\r\n\r\n constructor(\r\n private dashboardService: DashboardService,\r\n public commonService: CommonService\r\n ) {}\r\n\r\n public ngOnInit() {\r\n this.initialize();\r\n }\r\n\r\n private initialize() {\r\n this.loading = true;\r\n this.dashboardService.getFacilityEvaluationNotifications().subscribe(\r\n (facilitiesEvaluationNotifications) => {\r\n this.overdue =\r\n facilitiesEvaluationNotifications.totalGeneratorFacilityEvaluationItemsOverdue;\r\n this.total =\r\n facilitiesEvaluationNotifications.totalPendingGeneratorFacilityEvaluationItems;\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { DashboardService } from '../../dashboard.service';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { CommonService } from '../../../../common/common-service';\r\n\r\n@Component({\r\n selector: 'premises-evaluation-notifications-card',\r\n templateUrl: './premises-evaluation-notifications-card.component.html',\r\n styleUrls: ['./premises-evaluation-notifications-card.component.scss'],\r\n})\r\nexport class PremisesEvaluationNotificationsCardComponent implements OnInit {\r\n public overdue: number = 0;\r\n public total: number = 0;\r\n public errorMessage = '';\r\n public loading = false;\r\n\r\n constructor(\r\n private dashboardService: DashboardService,\r\n public commonService: CommonService\r\n ) {}\r\n\r\n public ngOnInit() {\r\n this.initialize();\r\n }\r\n\r\n private initialize() {\r\n this.loading = true;\r\n this.dashboardService.getPremisesEvaluationNotifications().subscribe(\r\n (premisesEvaluationNotifications) => {\r\n this.overdue =\r\n premisesEvaluationNotifications.totalConsumerPremisesEvaluationItemsOverdue;\r\n this.total =\r\n premisesEvaluationNotifications.totalConsumerPremisesEvaluationItemsPending;\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Injectable()\r\nexport class DistributorBulkMeterService {\r\n constructor(private httpClient: HttpClient) {}\r\n\r\n public getDistributorBulkMeters(distributorId: number): Observable {\r\n return this.httpClient.get(\r\n API_URL +\r\n 'distributorBulkMeter/GetDistributorBulkMeters?distributorId=' +\r\n distributorId\r\n );\r\n }\r\n\r\n public getDistributorBulkMeter(\r\n distributorBulkMeterId: number\r\n ): Observable {\r\n return this.httpClient.get(\r\n API_URL +\r\n 'distributorBulkMeter/GetDistributorBulkMeter?distributorBulkMeterId=' +\r\n distributorBulkMeterId\r\n );\r\n }\r\n\r\n public addDistributorBulkMeter(distributorBulkMeter: any): Observable {\r\n return this.httpClient.post(\r\n API_URL + 'distributorBulkMeter/AddDistributorBulkMeter',\r\n distributorBulkMeter\r\n );\r\n }\r\n\r\n public updateDistributorBulkMeter(\r\n distributorBulkMeter: any\r\n ): Observable {\r\n return this.httpClient.post(\r\n API_URL + 'distributorBulkMeter/UpdateDistributorBulkMeter',\r\n distributorBulkMeter\r\n );\r\n }\r\n\r\n public addDistributorBulkMeterConsumptionPeriod(\r\n distributorBulkMeterConsumption: any\r\n ): Observable {\r\n return this.httpClient.post(\r\n API_URL + 'distributorBulkMeter/AddDistributorBulkMeterConsumption',\r\n distributorBulkMeterConsumption\r\n );\r\n }\r\n\r\n public updateDistributorBulkMeterConsumptionPeriod(\r\n distributorBulkMeterConsumption: any\r\n ): Observable {\r\n return this.httpClient.post(\r\n API_URL +\r\n 'distributorBulkMeter/UpdateDistributorBulkMeterConsumption',\r\n distributorBulkMeterConsumption\r\n );\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Injectable()\r\nexport class PeriodService {\r\n constructor(private httpClient: HttpClient) {}\r\n\r\n public getAllPeriods(): Observable {\r\n return this.httpClient.get(API_URL + 'period/GetAll');\r\n }\r\n}\r\n","import { map } from 'rxjs/operators';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { ProspectPpaDetail } from '../../../model/prospect-ppa-detail.model';\r\n\r\n@Injectable()\r\nexport class ProspectPpaService {\r\n constructor(private httpClient: HttpClient) {}\r\n\r\n public createOrUpdateProspectPpa(\r\n prospectPpaDetail: ProspectPpaDetail\r\n ): Observable {\r\n return this.httpClient.post(\r\n API_URL + 'ProspectPpa/CreateOrUpdateProspectPpa',\r\n prospectPpaDetail\r\n );\r\n }\r\n\r\n public getProspectPpaDetails(\r\n consumerCompanyPremisesId: number\r\n ): Observable {\r\n return this.httpClient.get(\r\n API_URL +\r\n 'prospectPpa/GetProspectPpaDetails?consumerCompanyPremisesId=' +\r\n consumerCompanyPremisesId\r\n );\r\n }\r\n\r\n public getPpaPreviewDocument(\r\n consumerCompanyPremisesId: number\r\n ): Observable {\r\n return this.httpClient\r\n .get(\r\n API_URL +\r\n 'prospectPpa/GetPpaDocument?consumerCompanyPremisesId=' +\r\n consumerCompanyPremisesId,\r\n { responseType: 'blob' }\r\n )\r\n .pipe(map((response) => response));\r\n }\r\n\r\n public uploadProspectPpaDocument(\r\n consumerCompanyPremisesId: number,\r\n fileName\r\n ): Observable {\r\n return this.httpClient.get(\r\n API_URL +\r\n 'prospectPpa/UploadProspectPpaDocument?consumerCompanyPremisesId=' +\r\n consumerCompanyPremisesId +\r\n '&fileName=' +\r\n fileName\r\n );\r\n }\r\n\r\n public saveSchedule(schedule: any): Observable {\r\n return this.httpClient.post(\r\n API_URL + 'ProspectPpa/SaveSchedule',\r\n schedule\r\n );\r\n }\r\n\r\n public uploadPremisesPpaScheduleDocument(\r\n consumerCompanyPremisesId: number,\r\n fileName\r\n ): Observable {\r\n return this.httpClient.get(\r\n API_URL +\r\n 'prospectPpa/UploadPremisesPpaScheduleDocument?consumerCompanyPremisesId=' +\r\n consumerCompanyPremisesId +\r\n '&fileName=' +\r\n fileName\r\n );\r\n }\r\n\r\n public getPpaSchedulePreviewDocument(\r\n consumerCompanyPremisesId: number\r\n ): Observable {\r\n return this.httpClient\r\n .get(\r\n API_URL +\r\n 'prospectPpa/GetPpaScheduleDocument?consumerCompanyPremisesId=' +\r\n consumerCompanyPremisesId,\r\n { responseType: 'blob' }\r\n )\r\n .pipe(map((response) => response));\r\n }\r\n\r\n public setPpaPremisesToPending(\r\n consumerCompanyPremisesId: number\r\n ): Observable {\r\n return this.httpClient.get(\r\n API_URL +\r\n 'prospectPpa/setPpaPremisesToPending?consumerCompanyPremisesId=' +\r\n consumerCompanyPremisesId\r\n );\r\n }\r\n\r\n public setOtherPendingPremisesToSchedule(\r\n consumerCompanyPremisesId: number\r\n ): Observable {\r\n return this.httpClient.get(\r\n API_URL +\r\n 'prospectPpa/SetOtherPendingPremisesToSchedule?consumerCompanyPremisesId=' +\r\n consumerCompanyPremisesId\r\n );\r\n }\r\n\r\n public getProspectPpaDates(consumerCompanyId: number): Observable {\r\n return this.httpClient.get(\r\n API_URL +\r\n 'prospectPpa/GetProspectPpaDates?consumerCompanyId=' +\r\n consumerCompanyId\r\n );\r\n }\r\n\r\n public AddSignedPpaDocument(\r\n signedPpaDocument: any,\r\n consumerCompanyId: number\r\n ): Observable {\r\n signedPpaDocument.consumerCompanyId = consumerCompanyId;\r\n return this.httpClient.post(\r\n API_URL + 'ProspectPpa/AddSignedPpaDocument',\r\n signedPpaDocument\r\n );\r\n }\r\n}\r\n","export class AveragePremiseConsumption {\r\n constructor(\r\n public consumption: number,\r\n public peak?: number,\r\n public offPeak?: number,\r\n public standard?: number,\r\n public saved?: boolean\r\n ) {}\r\n}\r\n","import { Attribute } from '../../../model/attribute.model';\r\nimport { Contact } from '../../../model/contact.model';\r\nimport { EntityLookup } from '../../../model/entity-lookup.model';\r\nimport { Injectable } from '@angular/core';\r\nimport { Prospect } from '../../../model/prospect.model';\r\nimport { ConsumerCompany } from '../../../model/consumer-company.model';\r\nimport { ConsumerCompanyPremises } from '../../../model/consumer-company-premises.model';\r\nimport { ConsumerDetails } from '../../../model/company-details.model';\r\nimport { PremisesConsumption } from '../../../model/premises-consumption.model';\r\nimport { AveragePremiseConsumption } from '../../../model/premises-average-consumption.model';\r\n\r\n@Injectable()\r\nexport class ProspectService {\r\n public prospectEntityLookups: any;\r\n public prospect: Prospect;\r\n\r\n public initProspectEntityLookups(entityLookups: any): void {\r\n this.prospectEntityLookups = entityLookups;\r\n }\r\n\r\n public getEntityLookupList(lookup: string): EntityLookup[] {\r\n return this.prospectEntityLookups['entityLookupResultList'][lookup];\r\n }\r\n\r\n public getProspect(consumerCompany: ConsumerCompany): Prospect {\r\n this.prospect = new Prospect(\r\n this.initConsumerDetails(consumerCompany),\r\n this.initAuthorizedContact(\r\n consumerCompany.company.additionalContacts\r\n ),\r\n consumerCompany.consumerCompanyPremises,\r\n consumerCompany.qualificationParameters,\r\n consumerCompany.company.additionalContacts,\r\n 0\r\n );\r\n\r\n this.prospect.companyPremises.forEach(\r\n (companyPremises: ConsumerCompanyPremises) => {\r\n if (companyPremises.tariff) {\r\n this.updateTariffTypes(companyPremises);\r\n this.calculateAverageConsumption(companyPremises);\r\n }\r\n }\r\n );\r\n return this.prospect;\r\n }\r\n\r\n private initConsumerDetails(\r\n consumerCompany: ConsumerCompany\r\n ): ConsumerDetails {\r\n return new ConsumerDetails(\r\n consumerCompany.consumerCompanyId,\r\n consumerCompany.company.companyName,\r\n consumerCompany.company.registrationNumber,\r\n consumerCompany.company.telephoneNumber,\r\n this.getEntityLookupList('companyType').find(\r\n (companyType: EntityLookup) => {\r\n return (\r\n companyType.entityLookupId ===\r\n consumerCompany.company.companyTypeLookupId\r\n );\r\n }\r\n ).value,\r\n this.getEntityLookupList('consumerCompanyStanding').find(\r\n (companyStanding: EntityLookup) => {\r\n return (\r\n companyStanding.entityLookupId ===\r\n consumerCompany.consumerCompanyStandingLookupId\r\n );\r\n }\r\n ).value,\r\n 0,\r\n consumerCompany.createdDateTime\r\n );\r\n }\r\n\r\n private initAuthorizedContact(contacts: Contact[]): Contact {\r\n let cont: Contact = null;\r\n contacts.forEach((contact: Contact) => {\r\n contact.attributes.forEach((attribute: Attribute) => {\r\n if (attribute.attributeName === 'IsAuthorisedContact') {\r\n cont = contact;\r\n }\r\n });\r\n });\r\n return cont;\r\n }\r\n\r\n private updateTariffTypes(companyPremises: ConsumerCompanyPremises): void {\r\n companyPremises.tariff.isTimeOfUse =\r\n companyPremises.tariff.tariffType.value\r\n .toLowerCase()\r\n .indexOf('non-tou') < 0;\r\n }\r\n\r\n private calculateAverageConsumption(premise: ConsumerCompanyPremises) {\r\n if (premise.tariff.isTimeOfUse) {\r\n let averagePeak: number = 0;\r\n let averageOffPeak: number = 0;\r\n let averageStandard: number = 0;\r\n premise.premisesConsumption.forEach((cons: PremisesConsumption) => {\r\n averagePeak += +cons.peak;\r\n averageOffPeak += +cons.offPeak;\r\n averageStandard += +cons.standard;\r\n });\r\n premise.premisesAverageConsumption = new AveragePremiseConsumption(\r\n (averagePeak + averageOffPeak + averageStandard) /\r\n premise.premisesConsumption.length,\r\n averagePeak / premise.premisesConsumption.length,\r\n averageOffPeak / premise.premisesConsumption.length,\r\n averageStandard / premise.premisesConsumption.length\r\n );\r\n }\r\n if (!premise.tariff.isTimeOfUse) {\r\n let average: number = 0;\r\n premise.premisesConsumption.forEach((cons: PremisesConsumption) => {\r\n average += +cons.consumption;\r\n });\r\n premise.premisesAverageConsumption = new AveragePremiseConsumption(\r\n average / premise.premisesConsumption.length\r\n );\r\n }\r\n this.calculatePremiseAverageConsumption();\r\n }\r\n\r\n private calculatePremiseAverageConsumption() {\r\n let companyAverage: number = 0;\r\n this.prospect.companyPremises.forEach(\r\n (premises: ConsumerCompanyPremises) => {\r\n if (\r\n premises.premisesAverageConsumption &&\r\n premises.premisesAverageConsumption.consumption\r\n ) {\r\n companyAverage += +premises.premisesAverageConsumption\r\n .consumption;\r\n } else {\r\n // TODO: Implement me\r\n }\r\n }\r\n );\r\n this.prospect.details.averageMonthlyConsumption = companyAverage;\r\n }\r\n}\r\n","import { ConsumerDetails } from './company-details.model';\r\nimport { Contact } from './contact.model';\r\nimport { ConsumerCompanyPremises } from './consumer-company-premises.model';\r\nimport { PremisesQualificationParameters } from './qualification-parameters.model';\r\n\r\nexport class Prospect {\r\n constructor(\r\n public details: ConsumerDetails,\r\n public authorisedContact: Contact,\r\n public companyPremises: ConsumerCompanyPremises[],\r\n public qualificationParameters: PremisesQualificationParameters,\r\n public companyContacts: Contact[],\r\n public prospectTotalAverageConsumption: number\r\n ) {}\r\n}\r\n","export class ConsumerDetails {\r\n constructor(\r\n public consumerCompanyId: number,\r\n public companyName: string,\r\n public registrationNumber: string,\r\n public telephoneNumber: string,\r\n public companyType: string,\r\n public companyStanding: string,\r\n // calculated from all premises' monthly consumption average\r\n public averageMonthlyConsumption: number,\r\n public dateOfFirstCapture: string\r\n ) {}\r\n}\r\n","export class Address {\r\n constructor(\r\n public addressLine1: string,\r\n public addressLine2: string,\r\n public addressLine3: string,\r\n public provinceLookupId: number,\r\n public city: string,\r\n public postalCode: string,\r\n public isRural: boolean,\r\n public addressId: number = 0,\r\n public premisesId?: number\r\n ) {}\r\n}\r\n","import { Address } from '../../../model/address.model';\r\nimport { FormGroup, FormControl, Validators } from '@angular/forms';\r\nimport { Component, Input } from '@angular/core';\r\nimport { CommonService } from '../../../common/common-service';\r\nimport { OnInit } from '@angular/core/src/metadata/lifecycle_hooks';\r\nimport { EntityLookup } from '../../../model/entity-lookup.model';\r\n\r\n@Component({\r\n selector: 'address-form',\r\n templateUrl: 'address-form.component.html',\r\n styleUrls: ['address-form.component.scss', './../../form.styles.scss'],\r\n})\r\nexport class AddressFormComponent implements OnInit {\r\n @Input('address')\r\n public address: Address;\r\n @Input('onSameAsHoldingCompany')\r\n public onSameAsHoldingCompany: () => void = undefined;\r\n public addressForm: FormGroup;\r\n public provinces: EntityLookup[];\r\n public errorMessage = '';\r\n public loading = false;\r\n\r\n constructor(private commonService: CommonService) {\r\n this.addressForm = new FormGroup({\r\n addressLine1: new FormControl('', [Validators.required]),\r\n addressLine2: new FormControl('', [Validators.required]),\r\n addressLine3: new FormControl('', []),\r\n sameAsHoldingCompany: new FormControl(false),\r\n provinceLookupId: new FormControl(null, []),\r\n city: new FormControl('', [Validators.required]),\r\n postalCode: new FormControl('', [Validators.required]),\r\n });\r\n\r\n commonService.getEntityLookups(['Province']).subscribe(\r\n (entityLookups) => {\r\n this.provinces =\r\n entityLookups['entityLookupResultList']['province'];\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n\r\n public ngOnInit(): void {\r\n if (this.address) {\r\n this.addressForm.controls.addressLine1.setValue(\r\n this.address.addressLine1\r\n );\r\n this.addressForm.controls.addressLine2.setValue(\r\n this.address.addressLine2\r\n );\r\n this.addressForm.controls.addressLine3.setValue(\r\n this.address.addressLine3\r\n );\r\n this.addressForm.controls.provinceLookupId.setValue(\r\n this.address.provinceLookupId\r\n );\r\n this.addressForm.controls.city.setValue(this.address.city);\r\n this.addressForm.controls.postalCode.setValue(\r\n this.address.postalCode\r\n );\r\n }\r\n }\r\n\r\n public setValues(address: Address) {\r\n if (address) {\r\n this.addressForm.controls.addressLine1.setValue(\r\n address.addressLine1\r\n );\r\n this.addressForm.controls.addressLine2.setValue(\r\n address.addressLine2\r\n );\r\n this.addressForm.controls.addressLine3.setValue(\r\n address.addressLine3\r\n );\r\n this.addressForm.controls.provinceLookupId.setValue(\r\n address.provinceLookupId\r\n );\r\n this.addressForm.controls.city.setValue(address.city);\r\n this.addressForm.controls.postalCode.setValue(address.postalCode);\r\n }\r\n }\r\n\r\n public disableControls() {\r\n this.addressForm.controls.addressLine1.disable();\r\n this.addressForm.controls.addressLine2.disable();\r\n this.addressForm.controls.addressLine3.disable();\r\n this.addressForm.controls.provinceLookupId.disable();\r\n this.addressForm.controls.city.disable();\r\n this.addressForm.controls.postalCode.disable();\r\n }\r\n\r\n public enableControls() {\r\n this.addressForm.controls.addressLine1.enable();\r\n this.addressForm.controls.addressLine2.enable();\r\n this.addressForm.controls.addressLine3.enable();\r\n this.addressForm.controls.provinceLookupId.enable();\r\n this.addressForm.controls.city.enable();\r\n this.addressForm.controls.postalCode.enable();\r\n }\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n ViewContainerRef,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { AppState } from './app.service';\r\n\r\nimport { ToastrService } from 'ngx-toastr';\r\n\r\n@Component({\r\n selector: 'app',\r\n styleUrls: ['./app.component.scss'],\r\n templateUrl: './app.component.html',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.Default,\r\n})\r\nexport class AppComponent {\r\n private menuOpen: boolean;\r\n\r\n constructor() {\r\n this.menuOpen = false;\r\n }\r\n}\r\n","export class Page {\r\n public totalElements: number = 0;\r\n\r\n public totalPages: number = 0;\r\n\r\n public offset: number = 0;\r\n\r\n constructor(public size: number = 15) {}\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { Page } from '../../../model/page.model';\r\n\r\n@Injectable()\r\nexport class DocumentMaintenanceService {\r\n constructor(private http: HttpClient) {}\r\n\r\n public getDocuments(): Observable {\r\n return this.http.get(API_URL + 'DocumentTemplate/GetDocuments');\r\n }\r\n\r\n public getDocumentTemplateById(\r\n documentTemplateId: number\r\n ): Observable {\r\n return this.http.get(\r\n API_URL +\r\n 'DocumentTemplate/GetDocumentTemplateById?documentTemplateId=' +\r\n documentTemplateId\r\n );\r\n }\r\n\r\n public getDocumentsPage(\r\n searchString: string,\r\n page: Page,\r\n sortProp: any\r\n ): Observable {\r\n if (isNullOrUndefined(sortProp.direction)) {\r\n sortProp.direction = '';\r\n }\r\n if (isNullOrUndefined(sortProp.property)) {\r\n sortProp.property = '';\r\n }\r\n\r\n return this.http.get(\r\n API_URL +\r\n 'DocumentTemplate/GetDocumentsPage?' +\r\n 'searchString=' +\r\n searchString +\r\n '&offset=' +\r\n page.offset +\r\n '&pageSize=' +\r\n page.size +\r\n '&sortDirection=' +\r\n sortProp.direction +\r\n '&sortProperty=' +\r\n sortProp.property\r\n );\r\n }\r\n\r\n public updateDocument(document: any): Observable {\r\n return this.http.post(\r\n API_URL + 'DocumentTemplate/UpdateDocument',\r\n document\r\n );\r\n }\r\n}\r\n","import { debounceTime } from 'rxjs/operators';\r\n\r\nimport {\r\n Component,\r\n OnInit,\r\n Input,\r\n ViewChild,\r\n TemplateRef,\r\n ElementRef,\r\n} from '@angular/core';\r\nimport {\r\n FormGroup,\r\n FormControl,\r\n Validators,\r\n} from '../../../../../node_modules/@angular/forms';\r\nimport { Page } from '../../../model/page.model';\r\nimport { CommonService } from '../../../common/common-service';\r\nimport {\r\n BsModalService,\r\n BsModalRef,\r\n} from '../../../../../node_modules/ngx-bootstrap';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { DocumentMaintenanceService } from './document-maintenance.service';\r\nimport { ToastrService } from 'ngx-toastr';\r\n\r\n@Component({\r\n selector: 'app-document-maintenance',\r\n templateUrl: './document-maintenance.component.html',\r\n styleUrls: [\r\n './document-maintenance.component.scss',\r\n '../../form.styles.scss',\r\n ],\r\n})\r\nexport class DocumentMaintenanceComponent implements OnInit {\r\n @ViewChild('documentModal')\r\n public documentModal: TemplateRef;\r\n @Input('isReadOnlyMode')\r\n public isReadOnlyMode = false;\r\n public errorMessage = '';\r\n public loading = false;\r\n public loadingDocument = false;\r\n public savingDocument = false;\r\n public documentForm: FormGroup;\r\n public page: Page;\r\n public pageItems: any[];\r\n\r\n public retrievingFile: boolean;\r\n public uploadOther = false;\r\n public uploadForm: FormGroup;\r\n public fileFormControl: FormControl;\r\n public fileInputFormControl: FormControl;\r\n public uploadProgress: number;\r\n public processingFile: boolean;\r\n public processed: boolean;\r\n public processSuccess: boolean;\r\n public maxFileSize = 5000000; // 5MB\r\n public uploadedDocumentTemplateId: number;\r\n private sortProp = {};\r\n private modalRef: BsModalRef;\r\n private searchForm: FormGroup;\r\n\r\n constructor(\r\n private commonService: CommonService,\r\n private modalService: BsModalService,\r\n private toastr: ToastrService,\r\n private documentMaintenanceService: DocumentMaintenanceService\r\n ) {\r\n this.page = new Page();\r\n this.searchForm = new FormGroup({\r\n search: new FormControl(''),\r\n });\r\n\r\n this.documentForm = new FormGroup({\r\n documentTemplateId: new FormControl(null, [Validators.required]),\r\n templateName: new FormControl(null, [Validators.required]),\r\n description: new FormControl(null, [Validators.required]),\r\n path: new FormControl(null, [Validators.required]),\r\n existingDocument: new FormControl(null, [Validators.required]),\r\n });\r\n }\r\n\r\n public ngOnInit() {\r\n this.searchForm\r\n .get('search')\r\n .valueChanges.pipe(debounceTime(300))\r\n .subscribe(\r\n () => {\r\n this.changePage({ offset: 0 });\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n this.changePage({ offset: 0 });\r\n }\r\n\r\n public documentTemplateUpload(event: any): void {\r\n this.modalRef.hide();\r\n this.changePage({ offset: 0 });\r\n }\r\n\r\n public changeDocumentsPage(pageInfo: any): void {\r\n this.loading = true;\r\n const searchString = this.searchForm.value.search;\r\n this.page.offset = pageInfo.offset * this.page.size;\r\n this.documentMaintenanceService\r\n .getDocumentsPage(searchString, this.page, this.sortProp)\r\n .subscribe(\r\n (responsePage) => {\r\n this.page.totalPages = Math.ceil(\r\n responsePage.totalItems / responsePage.size\r\n );\r\n this.page.totalElements = responsePage.totalItems;\r\n this.pageItems = responsePage.items;\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n\r\n public sortColumn(event: any): void {\r\n this.sortProp = {\r\n direction: event.sorts[0].dir,\r\n property: event.sorts[0].prop,\r\n };\r\n this.changePage({ offset: 0 });\r\n }\r\n\r\n public changePage(pageInfo: any) {\r\n this.errorMessage = '';\r\n this.changeDocumentsPage(pageInfo);\r\n }\r\n\r\n public onSelect(event: any) {\r\n if (this.isReadOnlyMode) {\r\n return;\r\n }\r\n this.openDocumentModal(event.selected[0].documentTemplateId);\r\n }\r\n\r\n public onCancel(): void {\r\n this.errorMessage = '';\r\n this.modalRef.hide();\r\n }\r\n\r\n public openDocumentModal(documentTemplateId: number) {\r\n this.modalRef = this.modalService.show(this.documentModal);\r\n this.loadDocument(documentTemplateId);\r\n }\r\n\r\n public documentUpload(output: any): void {\r\n if (output.value) {\r\n this.documentForm.controls.document.setValue(output.value);\r\n }\r\n }\r\n\r\n private loadDocument(documentTemplateId: number) {\r\n this.loadingDocument = true;\r\n this.errorMessage = '';\r\n if (documentTemplateId === 0) {\r\n this.initDocument(null);\r\n this.loadingDocument = false;\r\n } else {\r\n this.documentMaintenanceService\r\n .getDocumentTemplateById(documentTemplateId)\r\n .subscribe(\r\n (documentResponse) => {\r\n this.initDocument(documentResponse);\r\n this.loadingDocument = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loadingDocument = false;\r\n }\r\n );\r\n }\r\n }\r\n\r\n private initDocument(document: any) {\r\n this.documentForm = new FormGroup({\r\n documentTemplateId: new FormControl(\r\n isNullOrUndefined(document) ? 0 : document.documentTemplateId,\r\n [Validators.required]\r\n ),\r\n templateName: new FormControl(\r\n isNullOrUndefined(document) ? null : document.templateName,\r\n [Validators.required]\r\n ),\r\n description: new FormControl(\r\n isNullOrUndefined(document) ? null : document.description\r\n ),\r\n path: new FormControl(\r\n isNullOrUndefined(document) ? null : document.path,\r\n [Validators.required]\r\n ),\r\n existingDocument: new FormControl(\r\n isNullOrUndefined(document) ? null : document,\r\n [Validators.required]\r\n ),\r\n });\r\n\r\n this.documentForm.disable();\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { Page } from '../../model/page.model';\r\nimport { DistributorGenerator } from '../../model/distributor-generator.model';\r\n\r\n@Injectable()\r\nexport class DistributorService {\r\n constructor(private httpClient: HttpClient) {}\r\n\r\n public getAllDistributors(): Observable {\r\n return this.httpClient.get(API_URL + 'distributor/GetDistributors');\r\n }\r\n\r\n public getAllocationDistributors(\r\n searchString: string = ''\r\n ): Observable {\r\n return this.httpClient.get(\r\n API_URL +\r\n 'distributor/GetAllAllocationDistributors?searchString=' +\r\n searchString\r\n );\r\n }\r\n\r\n public getAllEligibleDistributors(): Observable {\r\n return this.httpClient.get(\r\n API_URL + 'distributor/GetAllEligibleDistributors'\r\n );\r\n }\r\n\r\n public getDistributor(\r\n distributorId: number,\r\n getEskom: boolean = false\r\n ): Observable {\r\n if (getEskom) {\r\n return this.httpClient.get(\r\n API_URL + 'distributor/GetEskomDistributor'\r\n );\r\n } else {\r\n return this.httpClient.get(\r\n API_URL +\r\n 'distributor/GetDistributor?distributorId=' +\r\n distributorId\r\n );\r\n }\r\n }\r\n\r\n public getDistributorTariffs(\r\n distributorInputList: number[]\r\n ): Observable {\r\n return this.httpClient.post(\r\n API_URL + 'distributor/GetDistributorTariffs',\r\n { distributorInputList }\r\n );\r\n }\r\n\r\n public getDistributorTariffsByDistributorId(\r\n distributorId: number\r\n ): Observable {\r\n return this.httpClient.get(\r\n API_URL +\r\n 'distributor/GetDistributorTariffsByDistributorId?distributorId=' +\r\n distributorId\r\n );\r\n }\r\n\r\n public getEskomTariffs(): Observable {\r\n return this.httpClient.get(API_URL + 'distributor/GetEskomTariffs');\r\n }\r\n\r\n public getPage(\r\n searchString: string,\r\n page: Page,\r\n sortProp: any,\r\n filterProp: any\r\n ): Observable {\r\n if (isNullOrUndefined(sortProp.direction)) {\r\n sortProp.direction = '';\r\n }\r\n if (isNullOrUndefined(sortProp.property)) {\r\n sortProp.property = '';\r\n }\r\n if (isNullOrUndefined(filterProp.provinceLookupId)) {\r\n filterProp.provinceLookupId = 0;\r\n }\r\n if (isNullOrUndefined(filterProp.agreementSigned)) {\r\n filterProp.agreementSigned = -1;\r\n }\r\n\r\n return this.httpClient.get(\r\n API_URL +\r\n 'distributor/GetPage?searchString=' +\r\n searchString +\r\n '&offset=' +\r\n page.offset +\r\n '&pageSize=' +\r\n page.size +\r\n '&sortDirection=' +\r\n sortProp.direction +\r\n '&sortProperty=' +\r\n sortProp.property +\r\n '&provinceLookupId=' +\r\n filterProp.provinceLookupId +\r\n '&agreementSigned=' +\r\n filterProp.agreementSigned\r\n );\r\n }\r\n\r\n public createDistributor(distributor: any): Observable {\r\n return this.httpClient.post(\r\n API_URL + 'distributor/CreateDistributor',\r\n distributor\r\n );\r\n }\r\n\r\n public updateDistributor(distributor: any): Observable {\r\n return this.httpClient.patch(\r\n API_URL + 'distributor/UpdateDistributor',\r\n distributor\r\n );\r\n }\r\n\r\n public createDistributorNomination(\r\n distributorGenerator: DistributorGenerator\r\n ): Observable {\r\n return this.httpClient.post(\r\n API_URL + 'distributor/CreateDistributorGenerator',\r\n distributorGenerator\r\n );\r\n }\r\n\r\n public updateDistributorNomination(\r\n distributorGenerator: DistributorGenerator\r\n ): Observable {\r\n return this.httpClient.post(\r\n API_URL + 'distributor/UpdateDistributorGenerator',\r\n distributorGenerator\r\n );\r\n }\r\n\r\n public deleteDistributorNomination(\r\n distributorGeneratorId: number\r\n ): Observable {\r\n return this.httpClient.get(\r\n API_URL +\r\n 'distributor/DeleteDistributorGenerator?distributorGeneratorId=' +\r\n distributorGeneratorId\r\n );\r\n }\r\n\r\n public getDistributorGenerator(\r\n distributorGeneratorId: number\r\n ): Observable {\r\n return this.httpClient.get(\r\n API_URL +\r\n 'distributor/GetDistributorGenerator?distributorGeneratorId=' +\r\n distributorGeneratorId\r\n );\r\n }\r\n\r\n public getDistributorGeneratorsPage(\r\n searchString: string,\r\n page: Page,\r\n sortProp: any,\r\n generatorProjectFacilityId: number\r\n ): Observable {\r\n if (isNullOrUndefined(sortProp.direction)) {\r\n sortProp.direction = '';\r\n }\r\n if (isNullOrUndefined(sortProp.property)) {\r\n sortProp.property = '';\r\n }\r\n return this.httpClient.get(\r\n API_URL +\r\n 'distributor/GetDistributorGeneratorsPage?searchString=' +\r\n searchString +\r\n '&offset=' +\r\n page.offset +\r\n '&pageSize=' +\r\n page.size +\r\n '&sortDirection=' +\r\n sortProp.direction +\r\n '&sortProperty=' +\r\n sortProp.property +\r\n '&generatorProjectFacilityId=' +\r\n generatorProjectFacilityId\r\n );\r\n }\r\n\r\n public getDistributorNominations(\r\n generatorProjectFacilityId: number\r\n ): Observable {\r\n return this.httpClient.get(\r\n API_URL +\r\n 'distributor/GetDistributorGenerators?generatorProjectFacilityId=' +\r\n generatorProjectFacilityId\r\n );\r\n }\r\n\r\n public addDistributorIncrease(distributorIncrease: any): Observable {\r\n return this.httpClient.post(\r\n API_URL + 'distributor/AddDistributorIncrease',\r\n distributorIncrease\r\n );\r\n }\r\n\r\n public getDistributorIncreaseHistory(\r\n distributorId: number\r\n ): Observable {\r\n return this.httpClient.get(\r\n API_URL +\r\n 'distributor/GetDistributorIncreaseHistory?distributorId=' +\r\n distributorId\r\n );\r\n }\r\n\r\n public getDistributorPrepaidVendors(\r\n distributorId: number\r\n ): Observable {\r\n return this.httpClient.get(\r\n API_URL +\r\n 'distributor/GetDistributorPrepaidVendors?distributorId=' +\r\n distributorId\r\n );\r\n }\r\n\r\n public addPowerTradingLimits(powerTradingLimits: any): Observable {\r\n return this.httpClient.post(\r\n API_URL + 'distributor/AddPowerTradingLimits',\r\n powerTradingLimits\r\n );\r\n }\r\n\r\n public addPowerTradedPerTechnology(\r\n powerTradedPerTechnology: any\r\n ): Observable {\r\n return this.httpClient.post(\r\n API_URL + 'distributor/AddPowerTradedPerTechnology',\r\n powerTradedPerTechnology\r\n );\r\n }\r\n\r\n public getPowerTradingLimits(distributorId: number): Observable {\r\n return this.httpClient.get(\r\n API_URL +\r\n 'distributor/GetPowerTradingLimits?distributorId=' +\r\n distributorId\r\n );\r\n }\r\n\r\n public getPowerTradingLimitsPage(\r\n page: Page,\r\n sortProp: any,\r\n distributorId\r\n ): Observable {\r\n if (isNullOrUndefined(sortProp.property)) {\r\n sortProp.direction = '';\r\n sortProp.property = '';\r\n }\r\n\r\n return this.httpClient.get(\r\n API_URL +\r\n 'distributor/GetPowerTradingLimitsPage?searchString=' +\r\n '&offset=' +\r\n page.offset +\r\n '&pageSize=' +\r\n page.size +\r\n '&sortDirection=' +\r\n sortProp.direction +\r\n '&sortProperty=' +\r\n sortProp.property +\r\n '&id=' +\r\n distributorId\r\n );\r\n }\r\n\r\n public getPowerTradedPerTechnologyPage(\r\n page: Page,\r\n sortProp: any,\r\n distributorId\r\n ): Observable {\r\n if (isNullOrUndefined(sortProp.property)) {\r\n sortProp.direction = '';\r\n sortProp.property = '';\r\n }\r\n\r\n return this.httpClient.get(\r\n API_URL +\r\n 'distributor/GetPowerTradedPerTechnologyPage?searchString=' +\r\n '&offset=' +\r\n page.offset +\r\n '&pageSize=' +\r\n page.size +\r\n '&sortDirection=' +\r\n sortProp.direction +\r\n '&sortProperty=' +\r\n sortProp.property +\r\n '&id=' +\r\n distributorId\r\n );\r\n }\r\n\r\n public getDistributorWheelingFees(distributorId: number): Observable {\r\n return this.httpClient.get(\r\n API_URL +\r\n 'distributor/GetDistributorWheelingFees?distributorId=' +\r\n distributorId\r\n );\r\n }\r\n\r\n public addDistributorWheelingFee(wheelingFee: any): Observable {\r\n return this.httpClient.post(\r\n API_URL + 'distributor/AddDistributorWheelingFee',\r\n wheelingFee\r\n );\r\n }\r\n\r\n public getDistributorMeterIntallationCharges(\r\n distributorId: number\r\n ): Observable {\r\n return this.httpClient.get(\r\n API_URL +\r\n 'distributor/GetDistributorMeterIntallationCharges?distributorId=' +\r\n distributorId\r\n );\r\n }\r\n\r\n public addDistributorMeterInstallationCharge(\r\n installationCharge: any\r\n ): Observable {\r\n return this.httpClient.post(\r\n API_URL + 'distributor/AddDistributorMeterInstallationCharge',\r\n installationCharge\r\n );\r\n }\r\n\r\n public getTradingLimitsOverall(distributorId: number): Observable {\r\n return this.httpClient.get(\r\n API_URL +\r\n 'distributor/GetTradingLimitsOverall?distributorId=' +\r\n distributorId\r\n );\r\n }\r\n\r\n public getTradingLimitsPerTariff(distributorId: number): Observable {\r\n return this.httpClient.get(\r\n API_URL +\r\n 'distributor/GetTradingLimitsPerTariff?distributorId=' +\r\n distributorId\r\n );\r\n }\r\n\r\n public getPowerImportLimit(distributorId: number): Observable {\r\n return this.httpClient.get(\r\n API_URL +\r\n 'distributor/GetPowerImportLimit?distributorId=' +\r\n distributorId\r\n );\r\n }\r\n\r\n public getAveragePurchaseAndSalesRate(\r\n distributorId: number\r\n ): Observable {\r\n return this.httpClient.get(\r\n API_URL +\r\n 'distributor/GetAveragePurchaseAndSalesRate?distributorId=' +\r\n distributorId\r\n );\r\n }\r\n\r\n public getDistributorTariffsFromConsumer(\r\n consumerComapanyId: number\r\n ): Observable {\r\n return this.httpClient.get(\r\n API_URL +\r\n 'distributor/GetDistributorTariffsFromConsumer?consumerComapanyId=' +\r\n consumerComapanyId\r\n );\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { DocumentMetadata } from '../model/document-metadata.model';\r\nimport { NoteMetadata } from '../model/note-metadata.model';\r\nimport { Subject } from 'rxjs/Rx';\r\n\r\n@Injectable()\r\nexport class ComponentTriggersService {\r\n public triggerValidationMessages: Subject = new Subject();\r\n public triggerDocumentsRefresh: Subject = new Subject();\r\n public triggerNotesRefresh: Subject = new Subject();\r\n public triggerPrepaidRevenueComponent: Subject = new Subject();\r\n public triggerGeneratorProjectFacilityTariffRatesComponent: Subject<\r\n boolean\r\n > = new Subject();\r\n public triggerTariffComponent: Subject = new Subject();\r\n public triggerTariffListComponent: Subject<{\r\n distributorOrConsumer: string;\r\n id: number;\r\n }> = new Subject();\r\n public triggerDistributorBulkMeterComponent: Subject<\r\n boolean\r\n > = new Subject();\r\n public triggerDistributorBulkMeterDetailsComponent: Subject<\r\n number\r\n > = new Subject();\r\n public triggerDistributorPowerTechnologyAndLimitsComponent: Subject<\r\n boolean\r\n > = new Subject();\r\n public triggerCommercialAgreementComponent: Subject = new Subject();\r\n public triggerPpaMaintenanceComponent: Subject = new Subject();\r\n public triggerEnableGeneratorPpaAndAddendums: Subject<\r\n boolean\r\n > = new Subject();\r\n public triggerEnableConsumerPpaAndAddendums: Subject<\r\n boolean\r\n > = new Subject();\r\n public triggerPrepaidVendorComponent: Subject = new Subject();\r\n public triggerPrepaidVendorDetailsComponent: Subject<\r\n number\r\n > = new Subject();\r\n public triggerConsumerCompanyRecsComponent: Subject = new Subject();\r\n public triggerPremisesDetailsComponent: Subject = new Subject();\r\n public triggerPremisesListComponent: Subject = new Subject();\r\n}\r\n","import {\r\n Component,\r\n OnInit,\r\n TemplateRef,\r\n Input,\r\n OnDestroy,\r\n} from '@angular/core';\r\nimport { FormGroup, FormControl, Validators } from '@angular/forms';\r\nimport { Tariff } from '../../../../model/tariff/tariff.model';\r\nimport { BsModalRef, BsModalService } from 'ngx-bootstrap';\r\nimport { CommonService } from '../../../../common/common-service';\r\nimport { DistributorService } from '../../distributor.service';\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\nimport { DistributorBulkMeterService } from '../distributor-bulkmeter.service';\r\n\r\nimport { Subscription } from 'rxjs';\r\nimport { ComponentTriggersService } from '../../../../common/component-triggers.service';\r\nimport { ToastrService } from 'ngx-toastr';\r\n\r\n@Component({\r\n selector: 'bulk-meter-details',\r\n templateUrl: './bulk-meter-details.component.html',\r\n styleUrls: [\r\n './bulk-meter-details.component.scss',\r\n './../../../form.styles.scss',\r\n ],\r\n})\r\nexport class BulkMeterDetailsComponent implements OnInit, OnDestroy {\r\n @Input('showBulkMeterDetails')\r\n public showBulkMeterDetails: boolean = true;\r\n @Input('distributorId')\r\n public distributorId: number;\r\n @Input('isReadOnlyMode')\r\n public isReadOnlyMode: boolean = false;\r\n\r\n public distributorBulkMeterId: number;\r\n public errorMessage = '';\r\n public modalRef: BsModalRef;\r\n public newBulkMeterForm: FormGroup;\r\n public distributorBulkMeterConsumptionPeriods: any;\r\n public loading: boolean = false;\r\n private tariffs: Tariff[];\r\n private triggerDistributorBulkMeterDetailsComponentSubscription: Subscription;\r\n\r\n constructor(\r\n private commonService: CommonService,\r\n private modalService: BsModalService,\r\n private router: Router,\r\n private distributorService: DistributorService,\r\n private distributorBulkMeterService: DistributorBulkMeterService,\r\n private route: ActivatedRoute,\r\n protected toastr: ToastrService,\r\n private componentTriggerService: ComponentTriggersService\r\n ) {\r\n this.initBulkMeterForm([]);\r\n }\r\n\r\n public ngOnInit() {\r\n this.route.params.subscribe(\r\n (param) => {\r\n this.distributorId = param.distributorId;\r\n this.triggerDistributorBulkMeterDetailsComponentSubscription = this.componentTriggerService.triggerDistributorBulkMeterDetailsComponent.subscribe(\r\n (response) => {\r\n this.showBulkMeterDetails = true;\r\n this.distributorBulkMeterId = response;\r\n this.initialize();\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n }\r\n\r\n public ngOnDestroy() {\r\n this.triggerDistributorBulkMeterDetailsComponentSubscription.unsubscribe();\r\n }\r\n\r\n public initialize(): void {\r\n this.loading = true;\r\n this.distributorBulkMeterService\r\n .getDistributorBulkMeter(this.distributorBulkMeterId)\r\n .subscribe(\r\n (distributorBulkMeter) => {\r\n this.distributorService.getEskomTariffs().subscribe(\r\n (tariffs) => {\r\n this.loading = false;\r\n this.tariffs = tariffs;\r\n const selectedBulkMeter = distributorBulkMeter;\r\n this.distributorBulkMeterConsumptionPeriods =\r\n distributorBulkMeter.distributorBulkMeterConsumptionPeriods;\r\n this.initBulkMeterForm(selectedBulkMeter);\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n\r\n public onBack() {\r\n this.showBulkMeterDetails = false;\r\n this.componentTriggerService.triggerDistributorPowerTechnologyAndLimitsComponent.next(\r\n true\r\n );\r\n this.componentTriggerService.triggerDistributorBulkMeterComponent.next(\r\n true\r\n );\r\n }\r\n\r\n public onSubmitUpdatePrepaidVendor(): void {\r\n this.errorMessage = '';\r\n this.commonService.validateAllFormFields(this.newBulkMeterForm);\r\n this.newBulkMeterForm.controls.distributorId.setValue(\r\n this.distributorId\r\n );\r\n\r\n if (this.newBulkMeterForm.valid) {\r\n this.distributorBulkMeterService\r\n .updateDistributorBulkMeter(this.newBulkMeterForm.value)\r\n .subscribe(\r\n (response) => {\r\n this.toastr.success('Successfully Updated Bulk Meter');\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.toastr.error(this.errorMessage);\r\n }\r\n );\r\n }\r\n }\r\n\r\n private initBulkMeterForm(bulkMeter: any): void {\r\n const consumption =\r\n bulkMeter && bulkMeter.bulkMeterConsumption\r\n ? bulkMeter.bulkMeterConsumption\r\n : [];\r\n this.newBulkMeterForm = new FormGroup({\r\n distributorId: new FormControl(bulkMeter.distributorId),\r\n distributorBulkMeterId: new FormControl(\r\n bulkMeter.distributorBulkMeterId\r\n ),\r\n meterName: new FormControl(bulkMeter.meterName, [\r\n Validators.required,\r\n ]),\r\n meterNumber: new FormControl(bulkMeter.meterNumber),\r\n tariffId: new FormControl(bulkMeter.tariffId, [\r\n Validators.required,\r\n ]),\r\n bulkMeterConsumption: new FormControl(consumption),\r\n isMainMeter: new FormControl(bulkMeter.isMainMeter),\r\n });\r\n if (this.isReadOnlyMode) {\r\n this.newBulkMeterForm.disable();\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { Page } from '../../model/page.model';\r\nimport { GeneratorCompany } from '../../model/generator-company.model';\r\n\r\n@Injectable()\r\nexport class GeneratorCompanyService {\r\n constructor(private httpClient: HttpClient) {}\r\n\r\n public getAllGeneratorHoldingCompanies(\r\n searchString: string,\r\n page: Page,\r\n sortProp: any\r\n ): Observable {\r\n if (isNullOrUndefined(sortProp.direction)) {\r\n sortProp.direction = '';\r\n }\r\n if (isNullOrUndefined(sortProp.property)) {\r\n sortProp.property = '';\r\n }\r\n\r\n return this.httpClient.get(\r\n API_URL +\r\n 'GeneratorCompany/GetAllGeneratorCompaniesPaged?searchString=' +\r\n searchString +\r\n '&offset=' +\r\n page.offset +\r\n '&pageSize=' +\r\n page.size +\r\n '&sortDirection=' +\r\n sortProp.direction +\r\n '&sortProperty=' +\r\n sortProp.property\r\n );\r\n }\r\n public getArchivedGeneratorHoldingCompanies(\r\n searchString: string,\r\n page: Page,\r\n sortProp: any\r\n ): Observable {\r\n if (isNullOrUndefined(sortProp.direction)) {\r\n sortProp.direction = '';\r\n }\r\n if (isNullOrUndefined(sortProp.property)) {\r\n sortProp.property = '';\r\n }\r\n\r\n return this.httpClient.get(\r\n API_URL +\r\n 'GeneratorCompany/GetArchviedGeneratorCompaniesPaged?searchString=' +\r\n searchString +\r\n '&offset=' +\r\n page.offset +\r\n '&pageSize=' +\r\n page.size +\r\n '&sortDirection=' +\r\n sortProp.direction +\r\n '&sortProperty=' +\r\n sortProp.property\r\n );\r\n }\r\n\r\n public getGeneratorCompany(\r\n companyId: number\r\n ): Observable {\r\n return this.httpClient.get(\r\n API_URL +\r\n 'GeneratorCompany/GetGeneratorCompany?generatorCompanyId=' +\r\n companyId\r\n ) as Observable;\r\n }\r\n\r\n public getGeneratorProjectsByHoldingCompany(\r\n holdingCompanyId: number\r\n ): Observable {\r\n return this.httpClient.get(\r\n API_URL +\r\n 'GeneratorCompany/GetGeneratorProjectsByHoldingCompany?holdingCompanyId=' +\r\n holdingCompanyId\r\n );\r\n }\r\n\r\n public getGeneratorProject(generatorProjectId: number): Observable {\r\n return this.httpClient.get(\r\n API_URL +\r\n 'GeneratorProject/GetGeneratorProject?generatorProjectId=' +\r\n generatorProjectId\r\n );\r\n }\r\n\r\n public getGeneratorProjectFacilities(\r\n generatorProjectId: number\r\n ): Observable {\r\n return this.httpClient.get(\r\n API_URL +\r\n 'GeneratorProjectFacility/GetGeneratorProjectFacilitiesByProjectId?generatorProjectId=' +\r\n generatorProjectId\r\n );\r\n }\r\n\r\n public updateGeneratorCompany(company: any): Observable {\r\n return this.httpClient.post(\r\n API_URL + 'GeneratorCompany/UpdateGeneratorCompany',\r\n company\r\n );\r\n }\r\n public archiveGeneratorCompany(holdingCompanyId: any): Observable {\r\n return this.httpClient.post(\r\n API_URL +\r\n 'GeneratorCompany/ArchiveGeneratorCompany?holdingCompanyId=' +\r\n holdingCompanyId,\r\n {}\r\n );\r\n }\r\n public unarchiveGeneratorCompany(holdingCompanyId: any): Observable {\r\n return this.httpClient.post(\r\n API_URL +\r\n 'GeneratorCompany/UnarchiveGeneratorCompany?holdingCompanyId=' +\r\n holdingCompanyId,\r\n {}\r\n );\r\n }\r\n\r\n public updateGeneratorProjectFacility(facility: any) {\r\n return this.httpClient.post(\r\n API_URL +\r\n 'GeneratorProjectFacility/UpdateGeneratorProjectFacilityDetails',\r\n facility\r\n );\r\n }\r\n\r\n public getGeneratorFacilityIncreaseNotifications(): Observable {\r\n return this.httpClient.get(\r\n API_URL +\r\n 'GeneratorProjectFacility/GetGeneratorFacilityIncreaseNotifications'\r\n );\r\n }\r\n\r\n public getGeneratorFacilityPPARenewalNotifications(): Observable {\r\n return this.httpClient.get(\r\n API_URL + 'GeneratorProjectFacility/GetGeneratorFacilityPpaOverdue'\r\n );\r\n }\r\n\r\n public getGeneratorFacilityIncreaseNotificationDetailsById(\r\n facilityId: number\r\n ): Observable {\r\n return this.httpClient.get(\r\n API_URL +\r\n 'GeneratorProjectFacility/GetGeneratorFacilityIncreaseNotificationDetailsById?facilityId=' +\r\n facilityId\r\n );\r\n }\r\n\r\n public updateGeneratorProject(generatorProject: any) {\r\n return this.httpClient.post(\r\n API_URL + 'GeneratorProject/UpdateGeneratorProject',\r\n generatorProject\r\n );\r\n }\r\n\r\n public getTradingGeneratorProjectFacilitiesByDistributorId(\r\n facilityId: number,\r\n distributorId: number\r\n ): Observable {\r\n return this.httpClient.get(\r\n API_URL +\r\n 'GeneratorProjectFacility/GetTradingGeneratorProjectFacilitiesByDistributorId?facilityId=' +\r\n facilityId +\r\n '&DistributorId=' +\r\n distributorId\r\n );\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Injectable()\r\nexport class CpiService {\r\n constructor(private httpClient: HttpClient) {}\r\n\r\n public getConsumerPriceIndexHistory(): Observable {\r\n return this.httpClient.get(\r\n API_URL + 'ConsumerPriceIndex/GetConsumerPriceIndexHistory'\r\n );\r\n }\r\n\r\n public createConsumerPriceIndex(consumerPriceIndex: any): Observable {\r\n return this.httpClient.post(\r\n API_URL + 'ConsumerPriceIndex/CreateConsumerPriceIndex',\r\n consumerPriceIndex\r\n );\r\n }\r\n}\r\n","import { Subscription } from 'rxjs/Rx';\r\nimport { GeneratorCompanyService } from '../../../../generator-company/generator-company.service';\r\nimport { CommonService } from '../../../../../common/common-service';\r\nimport { Component, OnInit, OnDestroy } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { FormGroup, FormControl } from '@angular/forms';\r\nimport { CpiService } from '../../../../general-maintenance/cpi.service';\r\nimport { DistributorService } from '../../../../distributor/distributor.service';\r\nimport { ComponentTriggersService } from '../../../../../common/component-triggers.service';\r\n\r\n@Component({\r\n selector: 'app-generator-increase-notification-details',\r\n templateUrl: './generator-increase-notification-details.component.html',\r\n styleUrls: [\r\n './generator-increase-notification-details.component.scss',\r\n '../../../../../component/form.styles.scss',\r\n ],\r\n})\r\nexport class GeneratorIncreaseNotificationDetailsComponent implements OnInit {\r\n public facilityId: number;\r\n public facility: any;\r\n public errorMessage: string;\r\n public latestCpi: any;\r\n public latestDistributorIncrease: any;\r\n\r\n public rateIncrease: number = 0;\r\n public factorIncrease: number;\r\n public netRateIncrease: number = 0;\r\n\r\n public showCpi: boolean;\r\n public isEmbedded: boolean;\r\n public isNonTou: boolean;\r\n public loading: boolean;\r\n public calculated: boolean = false;\r\n\r\n public tariffRatesForm: FormGroup;\r\n public tariffRatesFormEdit: FormGroup;\r\n\r\n constructor(\r\n public commonService: CommonService,\r\n protected route: ActivatedRoute,\r\n private generatorCompanyService: GeneratorCompanyService,\r\n private cpiService: CpiService,\r\n private distributorService: DistributorService\r\n ) {\r\n this.tariffRatesForm = new FormGroup({\r\n tariffRates: new FormControl(null),\r\n });\r\n this.tariffRatesFormEdit = new FormGroup({\r\n tariffRates: new FormControl(null),\r\n });\r\n }\r\n\r\n public ngOnInit() {\r\n this.route.params.subscribe((params) => {\r\n this.facilityId = params.facilityId;\r\n this.getFacilityDetails(this.facilityId);\r\n });\r\n }\r\n\r\n public calculate(): void {\r\n this.calculated = !this.calculated;\r\n this.netRateIncrease = +this.rateIncrease + +this.factorIncrease;\r\n this.rateIncrease = !this.calculated ? 0 : this.rateIncrease;\r\n }\r\n\r\n private getFacilityDetails(facilityId: number): void {\r\n this.loading = true;\r\n this.generatorCompanyService\r\n .getGeneratorFacilityIncreaseNotificationDetailsById(\r\n this.facilityId\r\n )\r\n .subscribe(\r\n (facility) => {\r\n this.isNonTou = facility.isNonTou;\r\n this.initFacility(facility);\r\n this.loadLatestIncrease();\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.loading = false;\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n }\r\n\r\n private initFacility(facility: any): void {\r\n this.facility = facility;\r\n this.isEmbedded = this.facility.type.includes('Embedded')\r\n ? true\r\n : false;\r\n if (this.facility.escalationType.value) {\r\n this.showCpi = this.facility.escalationType.value.includes('CPI')\r\n ? true\r\n : false;\r\n this.factorIncrease = this.getIncreaseFactor(\r\n this.facility.escalationType.value\r\n );\r\n }\r\n }\r\n\r\n private loadLatestIncrease(): void {\r\n if (this.showCpi) {\r\n this.getLatestCpi();\r\n } else {\r\n this.getLatestDistributorIncrease();\r\n }\r\n }\r\n\r\n private getLatestCpi(): void {\r\n this.loading = true;\r\n this.cpiService.getConsumerPriceIndexHistory().subscribe(\r\n (cpiHistory) => {\r\n this.loading = false;\r\n this.latestCpi = cpiHistory.pop();\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n\r\n private getLatestDistributorIncrease() {\r\n this.distributorService\r\n .getDistributorIncreaseHistory(this.facility.distributorId)\r\n .subscribe(\r\n (distributorIncreseHistory) => {\r\n this.loading = false;\r\n this.latestDistributorIncrease = distributorIncreseHistory.pop();\r\n },\r\n (error) => {\r\n this.loading = false;\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n }\r\n\r\n private getIncreaseFactor(escalationType: string): number {\r\n const str = escalationType.substr(escalationType.length - 2);\r\n if (str.charAt(0).includes('-') || str.charAt(0).includes('+')) {\r\n return +str;\r\n } else {\r\n return 0;\r\n }\r\n }\r\n}\r\n","import { Router } from '@angular/router';\r\nimport { GeneratorCompanyService } from '../../../generator-company/generator-company.service';\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { CommonService } from '../../../../common/common-service';\r\nimport { Subscription } from 'rxjs';\r\nimport { ComponentTriggersService } from '../../../../common/component-triggers.service';\r\n\r\n@Component({\r\n selector: 'app-generator-notifications',\r\n templateUrl: './generator-notifications.component.html',\r\n styleUrls: ['./generator-notifications.component.scss'],\r\n})\r\nexport class GeneratorNotificationsComponent implements OnInit {\r\n public generatorNotifications: any[] = [];\r\n\r\n public loading: boolean = false;\r\n public errorMessage: string;\r\n\r\n constructor(\r\n public commonService: CommonService,\r\n private generatorService: GeneratorCompanyService,\r\n private router: Router\r\n ) {}\r\n\r\n public ngOnInit() {\r\n this.loadNotifications();\r\n }\r\n\r\n public viewDetails(facilityId: number): void {\r\n this.router.navigateByUrl(\r\n '/generator/increase-notifications/' + facilityId + '/details'\r\n );\r\n }\r\n\r\n private loadNotifications(): void {\r\n this.loading = true;\r\n this.generatorService\r\n .getGeneratorFacilityIncreaseNotifications()\r\n .subscribe(\r\n (facilityNotifications) => {\r\n this.generatorNotifications = facilityNotifications;\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n}\r\n","import { EntityLookup } from '../entity-lookup.model';\r\nimport { TariffRate } from './tariff-rate.model';\r\nimport { PublicHoliday } from '../public-holiday.model';\r\n\r\nexport class Tariff {\r\n constructor(\r\n public tariffName: string,\r\n public tariffRates: TariffRate[],\r\n public tariffId: number,\r\n public tariffCode: string,\r\n public connectionVoltageSizeLookupId?: number,\r\n public peakDiscount?: number,\r\n public offPeakDiscount?: number,\r\n public standardDiscount?: number,\r\n public administrationCharge?: number,\r\n public tradingLimit?: number,\r\n public tradingInTariff?: boolean,\r\n public tariffTypeLookupId?: number,\r\n public tariffType?: EntityLookup,\r\n public isTimeOfUse?: boolean,\r\n public wepsLessLosses?: any,\r\n public publicHolidaysTimePeriods?: PublicHoliday[]\r\n ) {}\r\n}\r\n","import { Contact } from './contact.model';\r\nimport { Address } from './address.model';\r\nexport class Company {\r\n constructor(\r\n public companyName: string,\r\n public companyTypeLookupId: number,\r\n public registrationNumber: string,\r\n public telephoneNumber: string,\r\n public companyId: number,\r\n public parentCompanyId: number,\r\n public vatNumber: string,\r\n public additionalContacts: Contact[],\r\n public parentCompany: Company,\r\n public addresses?: Address[]\r\n ) {}\r\n}\r\n","import { Attribute } from './attribute.model';\r\n\r\nexport class Contact {\r\n constructor(\r\n public firstName?: string,\r\n public lastName?: string,\r\n public identityNumber?: string,\r\n public position?: string,\r\n public cellNumber?: string,\r\n public landLineNumber?: string,\r\n public email?: string,\r\n public contactId?: number,\r\n public distributorId?: number,\r\n public companyId?: number,\r\n public attributes?: Attribute[],\r\n public attributeIds?: number[]\r\n ) {}\r\n}\r\n","export class Attribute {\r\n constructor(\r\n public attributeName: string,\r\n public attributeDisplayName: string,\r\n public attributeId\r\n ) {}\r\n}\r\n","import { map } from 'rxjs/operators';\r\nimport { ConsumerCompanyPremises } from '../../model/consumer-company-premises.model';\r\nimport { PremisesOfferDetail } from '../../model/administration/offer-detail.model';\r\nimport { Prospect } from './../../administration/prospects/prospect.model';\r\nimport { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { Tariff } from '../../model/tariff/tariff.model';\r\nimport { Distributor } from '../../model/distributor.model';\r\nimport { Company } from '../../model/company.model';\r\nimport { Contact } from '../../model/contact.model';\r\nimport { Attribute } from '../../model/attribute.model';\r\nimport { ConsumerCompany } from '../../model/consumer-company.model';\r\nimport { PremisesQualificationParameters } from '../../model/qualification-parameters.model';\r\nimport { SalesRep } from '../../model/administration/sales-rep.model';\r\nimport { Page } from '../../model/page.model';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { Address } from '../../model/address.model';\r\nimport { Document } from '../../model/document.model';\r\n\r\n@Injectable()\r\nexport class ConsumerCompanyService {\r\n constructor(private httpClient: HttpClient) {}\r\n\r\n public getAllConsumerCompaniesPaged(\r\n searchString: string,\r\n page: Page,\r\n sortProp: any,\r\n filterProp: any\r\n ): Observable {\r\n if (isNullOrUndefined(sortProp.direction)) {\r\n sortProp.direction = '';\r\n }\r\n if (isNullOrUndefined(sortProp.property)) {\r\n sortProp.property = '';\r\n }\r\n if (isNullOrUndefined(filterProp.salesrepLookupId)) {\r\n filterProp.salesrepLookupId = 0;\r\n }\r\n\r\n return this.httpClient.get(\r\n API_URL +\r\n 'consumerCompany/GetAllConsumerCompaniesPaged?searchString=' +\r\n searchString +\r\n '&offset=' +\r\n page.offset +\r\n '&pageSize=' +\r\n page.size +\r\n '&sortDirection=' +\r\n sortProp.direction +\r\n '&sortProperty=' +\r\n sortProp.property +\r\n '&salesrepId=' +\r\n filterProp.salesrepLookupId\r\n );\r\n }\r\n\r\n public getArchivedConsumerCompaniesPaged(\r\n searchString: string,\r\n page: Page,\r\n sortProp: any,\r\n filterProp: any\r\n ): Observable {\r\n if (isNullOrUndefined(sortProp.direction)) {\r\n sortProp.direction = '';\r\n }\r\n if (isNullOrUndefined(sortProp.property)) {\r\n sortProp.property = '';\r\n }\r\n if (isNullOrUndefined(filterProp.salesrepLookupId)) {\r\n filterProp.salesrepLookupId = 0;\r\n }\r\n\r\n return this.httpClient.get(\r\n API_URL +\r\n 'consumerCompany/GetArchivedConsumerCompaniesPaged?searchString=' +\r\n searchString +\r\n '&offset=' +\r\n page.offset +\r\n '&pageSize=' +\r\n page.size +\r\n '&sortDirection=' +\r\n sortProp.direction +\r\n '&sortProperty=' +\r\n sortProp.property +\r\n '&salesrepId=' +\r\n filterProp.salesrepLookupId\r\n );\r\n }\r\n\r\n public getConsumersForInvoicing(\r\n invoiceBatchId: number,\r\n searchString: string\r\n ): Observable {\r\n return this.httpClient.get(\r\n API_URL +\r\n 'ConsumerCompanyPremises/GetConsumersForInvoicing?invoiceBatchId=' +\r\n invoiceBatchId +\r\n '&searchString=' +\r\n searchString\r\n );\r\n }\r\n\r\n public getConsumerCompany(consumerCompanyId: number): Observable {\r\n return this.httpClient.get(\r\n API_URL +\r\n 'consumerCompany/getConsumerCompany?consumerCompanyId=' +\r\n consumerCompanyId\r\n );\r\n }\r\n\r\n public getConsumerCompanyAddress(\r\n consumerCompanyId: number\r\n ): Observable {\r\n return this.httpClient.get(\r\n API_URL +\r\n 'consumerCompany/GetConsumerCompanyAddress?consumerCompanyId=' +\r\n consumerCompanyId\r\n );\r\n }\r\n\r\n public getProspectDetails(consumerCompanyId: number): Observable {\r\n return this.httpClient.get(\r\n API_URL +\r\n 'consumerCompany/GetProspectDetails?consumerCompanyId=' +\r\n consumerCompanyId\r\n );\r\n }\r\n\r\n public createConsumerCompany(consumerCompany: any): Observable {\r\n const additionalContacts: Contact[] = [];\r\n if (consumerCompany.additionalContacts) {\r\n consumerCompany.additionalContacts.forEach((additionalContact) => {\r\n const attributes: Attribute[] = [];\r\n additionalContact.contactTypes.forEach((attribute) => {\r\n attributes.push(new Attribute(null, null, attribute));\r\n });\r\n additionalContacts.push(\r\n new Contact(\r\n additionalContact.firstName,\r\n additionalContact.lastName,\r\n additionalContact.identityNumber,\r\n additionalContact.position,\r\n additionalContact.cellNumber,\r\n additionalContact.landLineNumber,\r\n additionalContact.email,\r\n null,\r\n null,\r\n null,\r\n attributes\r\n )\r\n );\r\n });\r\n }\r\n\r\n const addresses = [];\r\n addresses.push(\r\n new Address(\r\n consumerCompany.address.addressLine1,\r\n consumerCompany.address.addressLine2,\r\n consumerCompany.address.addressLine3,\r\n consumerCompany.address.province,\r\n consumerCompany.address.city,\r\n consumerCompany.address.postalCode,\r\n consumerCompany.address.isRural\r\n )\r\n );\r\n const company = new Company(\r\n consumerCompany.companyName,\r\n consumerCompany.companyTypeLookupId,\r\n consumerCompany.registrationNumber,\r\n consumerCompany.telephoneNumber,\r\n null,\r\n null,\r\n consumerCompany.vatNumber,\r\n additionalContacts,\r\n null,\r\n addresses\r\n );\r\n\r\n const consumerCompanyPremises: ConsumerCompanyPremises[] = [];\r\n if (consumerCompany.companyPremises) {\r\n consumerCompany.companyPremises.forEach((premises) => {\r\n const tariff =\r\n premises.tariffCode === null\r\n ? null\r\n : new Tariff(null, null, premises.tariffCode, null);\r\n const distributor = new Distributor(\r\n premises.distributor,\r\n null,\r\n null\r\n );\r\n consumerCompanyPremises.push(\r\n new ConsumerCompanyPremises(\r\n null,\r\n null,\r\n premises.companyName,\r\n null,\r\n null,\r\n premises.businessActivity,\r\n null,\r\n null,\r\n tariff,\r\n distributor,\r\n null,\r\n null,\r\n premises.accountNumber,\r\n null,\r\n null,\r\n null,\r\n null,\r\n null,\r\n null,\r\n null,\r\n null,\r\n null,\r\n null,\r\n null,\r\n null,\r\n null,\r\n null,\r\n null,\r\n null,\r\n null,\r\n null,\r\n null,\r\n null,\r\n null,\r\n null,\r\n null,\r\n null,\r\n null,\r\n null,\r\n null,\r\n null,\r\n premises.smartMeterInstalled\r\n )\r\n );\r\n });\r\n }\r\n const salesRepId = consumerCompany.salesRep;\r\n const qualificationParameters = new PremisesQualificationParameters(\r\n null,\r\n false,\r\n false,\r\n null,\r\n null,\r\n false,\r\n false,\r\n null,\r\n null\r\n );\r\n const consumerCompanyModel = new ConsumerCompany(\r\n null,\r\n consumerCompany.companyStanding,\r\n null,\r\n company,\r\n consumerCompanyPremises,\r\n null,\r\n qualificationParameters,\r\n null,\r\n null,\r\n salesRepId\r\n );\r\n return this.httpClient.post(\r\n API_URL + 'consumerCompany/createConsumerCompany',\r\n consumerCompanyModel\r\n );\r\n }\r\n\r\n public createConsumerApplicationConsumerCompany(\r\n consumerCompany: any\r\n ): Observable {\r\n return this.httpClient.post(\r\n API_URL + 'consumerCompany/CreateConsumerCompany',\r\n consumerCompany\r\n );\r\n }\r\n\r\n public updateConsumerCompany(consumerCompany: any): Observable {\r\n return this.httpClient.post(\r\n API_URL + 'consumerCompany/updateConsumerCompany',\r\n consumerCompany\r\n );\r\n }\r\n\r\n public archiveConsumerCompany(consumerCompanyId: any): Observable {\r\n return this.httpClient.post(\r\n API_URL +\r\n 'consumerCompany/ArchiveConsumerCompany?consumerCompanyId=' +\r\n consumerCompanyId,\r\n {}\r\n );\r\n }\r\n\r\n public unarchiveConsumerCompany(consumerCompanyId: any): Observable {\r\n return this.httpClient.post(\r\n API_URL +\r\n 'consumerCompany/UnarchiveConsumerCompany?consumerCompanyId=' +\r\n consumerCompanyId,\r\n {}\r\n );\r\n }\r\n public archiveConsumerCompanyPremise(\r\n consumerCompanyPremiseId: any\r\n ): Observable {\r\n return this.httpClient.get(\r\n API_URL +\r\n 'consumerCompanyPremises/ArchiveConsumerCompanyPremise?consumerCompanyPremiseId=' +\r\n consumerCompanyPremiseId,\r\n {}\r\n );\r\n }\r\n\r\n public unarchiveConsumerCompanyPremise(\r\n consumerCompanyPremiseId: any\r\n ): Observable {\r\n return this.httpClient.get(\r\n API_URL +\r\n 'consumerCompanyPremises/UnarchiveConsumerCompanyPremise?consumerCompanyPremiseId=' +\r\n consumerCompanyPremiseId,\r\n {}\r\n );\r\n }\r\n public GetSalesRepsDropDown() {\r\n return this.httpClient.get(API_URL + 'salesRep/GetSalesRepsDropDown');\r\n }\r\n\r\n public addConsumerCompanyPremisesConsumption(\r\n consumerPremisesConsumption\r\n ): Observable {\r\n return this.httpClient.post(\r\n API_URL + 'consumerCompany/AddPremisesConsumption',\r\n consumerPremisesConsumption\r\n );\r\n }\r\n\r\n public addConsumerCompanyPremisesAddress(\r\n address: Address\r\n ): Observable {\r\n return this.httpClient.post(\r\n API_URL + 'consumerCompany/AddPremisesAddress',\r\n address\r\n );\r\n }\r\n\r\n public advancePremisesProgressStatus(\r\n premisesProgressStatus: any,\r\n consumerCompanyPremisesId\r\n ): Observable {\r\n const premisesProgress = {\r\n premisesProgressStatus,\r\n consumerCompanyPremisesId,\r\n };\r\n return this.httpClient.post(\r\n API_URL + 'consumerCompany/AdvancePremisesProgress',\r\n premisesProgress\r\n );\r\n }\r\n\r\n public updatePremisesAccounts(\r\n consumerCompanyPremises: ConsumerCompanyPremises,\r\n accountsDocument: Document\r\n ): Observable {\r\n const premisesAccountDetails = {\r\n consumerCompanyPremisesId:\r\n consumerCompanyPremises.consumerCompanyPremisesId,\r\n accountNumber: consumerCompanyPremises.accountNumber,\r\n meterNumber: consumerCompanyPremises.meterNumber,\r\n distributorAccountCreditProblem:\r\n consumerCompanyPremises.distributorAccountCreditProblem,\r\n electricityAccountsDocument: accountsDocument,\r\n hasRemoteMeter: consumerCompanyPremises.hasRemoteMeter,\r\n };\r\n return this.httpClient.post(\r\n API_URL + 'consumerCompany/UpdatePremisesAccounts',\r\n premisesAccountDetails\r\n );\r\n }\r\n\r\n public addCreditRatings(qualificationParameters: any): Observable {\r\n return this.httpClient.post(\r\n API_URL + 'consumerCompany/addCreditRatings',\r\n qualificationParameters\r\n );\r\n }\r\n\r\n public updatePremisesEvaluation(premisesEvaluation: any): Observable {\r\n return this.httpClient.post(\r\n API_URL + 'consumerCompany/updatePremisesEvaluation',\r\n premisesEvaluation\r\n );\r\n }\r\n public getOfferDetails(consumerCompanyPremisesId: number): Observable {\r\n return this.httpClient.get(\r\n API_URL +\r\n 'consumerCompany/GetOfferDetails?consumerCompanyPremisesId=' +\r\n consumerCompanyPremisesId\r\n );\r\n }\r\n\r\n public addOfferDetails(offerDetails: PremisesOfferDetail): Observable {\r\n return this.httpClient.post(\r\n API_URL + 'consumerCompany/addOfferDetails',\r\n offerDetails\r\n );\r\n }\r\n\r\n public skipOffer(consumerCompanyPremisesId: number): Observable {\r\n return this.httpClient.get(\r\n API_URL +\r\n 'ConsumerCompany/SkipOffer?consumerCompanyPremisesId=' +\r\n consumerCompanyPremisesId\r\n );\r\n }\r\n\r\n public archiveOffer(consumerCompanyPremisesId: number): Observable {\r\n return this.httpClient.get(\r\n API_URL +\r\n 'ConsumerCompany/ArchiveOffer?consumerCompanyPremisesId=' +\r\n consumerCompanyPremisesId\r\n );\r\n }\r\n\r\n public getOfferPreviewDocument(\r\n consumerCompanyPremisesId: number\r\n ): Observable {\r\n return this.httpClient\r\n .get(\r\n API_URL +\r\n 'consumerCompany/GetOfferDocument?consumerCompanyPremisesId=' +\r\n consumerCompanyPremisesId,\r\n { responseType: 'blob' }\r\n )\r\n .pipe(map((response) => response));\r\n }\r\n\r\n public uploadProspectOfferDocument(\r\n consumerCompanyPremisesId: number,\r\n fileName\r\n ): Observable {\r\n return this.httpClient.get(\r\n API_URL +\r\n 'consumerCompany/UploadProspectOfferDocument?consumerCompanyPremisesId=' +\r\n consumerCompanyPremisesId +\r\n '&fileName=' +\r\n fileName\r\n );\r\n }\r\n\r\n public getAllProspects(): Observable {\r\n return this.httpClient.get(API_URL + 'ConsumerCompany/GetAllProspects');\r\n }\r\n\r\n public getProspectsStats(): Observable {\r\n return this.httpClient.get(\r\n API_URL + 'ConsumerCompany/GetProspectsStats'\r\n );\r\n }\r\n\r\n public getEvaluationProspectPremises(\r\n searchString: string,\r\n distributorId: number,\r\n statusLookupId: number\r\n ): Observable {\r\n return this.httpClient.get(\r\n API_URL +\r\n 'ConsumerCompany/GetEvaluationProspectPremises?searchString=' +\r\n searchString +\r\n '&distributorId=' +\r\n distributorId +\r\n '&statusLookupId=' +\r\n statusLookupId\r\n );\r\n }\r\n public getArchivedEvaluationProspectPremises(\r\n searchString: string,\r\n distributorId: number,\r\n statusLookupId: number\r\n ): Observable {\r\n return this.httpClient.get(\r\n API_URL +\r\n 'ConsumerCompany/GetEvaluationProspectPremises?searchString=' +\r\n searchString +\r\n '&distributorId=' +\r\n distributorId +\r\n '&statusLookupId=' +\r\n statusLookupId +\r\n '&archived=true'\r\n );\r\n }\r\n public getConsumerPremisesDetails(\r\n consumerCompanyPremisesId: number\r\n ): Observable {\r\n return this.httpClient.get(\r\n API_URL +\r\n 'ConsumerCompany/GetConsumerPremisesDetails?consumerCompanyPremisesId=' +\r\n consumerCompanyPremisesId\r\n );\r\n }\r\n\r\n public getDistributorFilterItems(): Observable {\r\n return this.httpClient.get(\r\n API_URL + 'Distributor/GetAllUseDistributionAgreementDistributors'\r\n );\r\n }\r\n\r\n public getStatusFilterItems(): Observable {\r\n return this.httpClient.get(\r\n API_URL + 'ConsumerCompany/GetStatusFilterItems'\r\n );\r\n }\r\n\r\n public getConsumerCompanyPPARenewalNotifications(): Observable {\r\n return this.httpClient.get(\r\n API_URL + 'ConsumerCompany/GetConsumerCompanyPpaOverdue'\r\n );\r\n }\r\n\r\n public updateForecastParametersForPremises(\r\n consumerCompanyPremisesId: number,\r\n excludeFromForecastRun: boolean,\r\n estimatedConsumption: number,\r\n baseConsumerCompanyPremisesId?: number\r\n ): Observable {\r\n const parameterValues = {\r\n ConsumerCompanyPremisesId: consumerCompanyPremisesId,\r\n ExcludeFromForecastRun: excludeFromForecastRun,\r\n EstimatedConsumption: estimatedConsumption,\r\n BaseConsumerCompanyPremisesId: baseConsumerCompanyPremisesId,\r\n };\r\n return this.httpClient.post(\r\n API_URL + 'ConsumerCompany/UpdateForecastParametersForPremises',\r\n parameterValues\r\n );\r\n }\r\n}\r\n","import { Tariff } from './tariff/tariff.model';\r\nimport { Contact } from './contact.model';\r\n\r\nexport class Distributor {\r\n constructor(\r\n public distributorId: number,\r\n public name: string,\r\n public townName: string,\r\n public description?: string,\r\n public distributorIdentifier?: string,\r\n public integratorProviderId?: number,\r\n public billingCycleDateLookupId?: number,\r\n public dateDUoSASigned?: Date,\r\n public billingSystem?: string,\r\n public useDistributionAgreement?: boolean,\r\n public eligibleForGeneratorApplication?: boolean,\r\n public duoSaDocument?: any,\r\n public provinceLookupId?: number,\r\n public wheelingFees?: any[],\r\n public meterInstallationCharges?: any[],\r\n public powerTradingLimits?: any[],\r\n public powerTradedPerTechnology?: any[],\r\n public contacts?: Contact[],\r\n public tariffs?: Tariff[],\r\n public prepaidVendors?: any[],\r\n public distributorConsumption?: any[],\r\n public distributorBulkMeters?: any[],\r\n public wepsLessLosses?: any[],\r\n public wepsLessLossesPeriodDailyRates?: any[]\r\n ) {}\r\n}\r\n","import { PremisesOfferDetail } from './administration/offer-detail.model';\r\nimport { EntityLookup } from './entity-lookup.model';\r\nimport { Tariff } from './tariff/tariff.model';\r\nimport { Distributor } from './distributor.model';\r\nimport { Address } from './address.model';\r\nimport { PremisesConsumption } from './premises-consumption.model';\r\nimport { AveragePremiseConsumption } from './premises-average-consumption.model';\r\nimport { ConsumerCompanyPremisesActivation } from './consumer-company-premises-activation.model';\r\nimport { ConsumerTariff } from './consumer-tariff.model';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { Document } from './document.model';\r\n\r\nexport class ConsumerCompanyPremises {\r\n public consumerCompanyPremisesActivations?: ConsumerCompanyPremisesActivation[] = null;\r\n public isInApplicationMode?: boolean;\r\n public hasRemoteMeter?: boolean;\r\n public electricityAccounts: Document;\r\n public isArchived?: boolean;\r\n\r\n constructor(\r\n public poNumber: number,\r\n public consumerCompanyPremisesId: number,\r\n public premisesName: string,\r\n public sapNumber: string,\r\n public referenceNumber: string,\r\n public businessActivityLookupId: number,\r\n public premisesProgressStatus: EntityLookup,\r\n public distributorAccountCreditProblem: EntityLookup,\r\n public tariff: Tariff,\r\n public distributor: Distributor,\r\n public address: Address,\r\n public meterNumber: string,\r\n public accountNumber: string,\r\n public premisesConsumption: PremisesConsumption[],\r\n public premisesAverageConsumption: AveragePremiseConsumption,\r\n public evaluationStatusLookupId: number,\r\n public evaluationInformation: string,\r\n public evaluationDeclineReasonLookupId: number,\r\n public consumerCompanyId?: number,\r\n public premisesOfferDetail?: PremisesOfferDetail,\r\n public tariffId?: number,\r\n public distributorId?: number,\r\n public addressId?: number,\r\n public identifier?: string,\r\n public minimumContractedCapacity?: number,\r\n public maximumCapacity?: number,\r\n public consumerStatusLookupId?: number,\r\n public monthlyKwh?: number,\r\n public vatNumber?: string,\r\n public excludeFromRun?: boolean,\r\n public excludeFromForecastRun?: boolean,\r\n public forecastConsumptionKwh?: number,\r\n public baseConsumerCompanyPremisesId?: number,\r\n public premisesName2?: string,\r\n public premisesName3?: string,\r\n public latestConsumerTariff?: ConsumerTariff,\r\n public consumerPremisesStatusLookupId?: number,\r\n public distributorTariffsForm?: FormGroup,\r\n public latestAllocationRunInvolvedInDate?: Date,\r\n public latestAllocationRunInvolvedInConsumption?: number,\r\n public reasonForExcludingFromRun?: string,\r\n public smartMeterInstalled?: boolean\r\n ) {}\r\n}\r\n","export class PremisesQualificationParameters {\r\n constructor(\r\n public premisesQualificationParametersId: number,\r\n public creditPermissionRequested: boolean,\r\n public creditPermissionReceived: boolean,\r\n public creditRatingLookupId: number,\r\n public creditScore: number,\r\n public billsRequested: boolean,\r\n public billsReceived: boolean,\r\n public consumerCompanyId?: number,\r\n public creditPermissionDocument?: any,\r\n public billsDocument?: any\r\n ) {}\r\n}\r\n","import { PremisesOfferDetail } from './administration/offer-detail.model';\r\nimport { PremisesQualificationParameters } from './qualification-parameters.model';\r\nimport { ConsumerCompanyPremises } from './consumer-company-premises.model';\r\nimport { Company } from './company.model';\r\nimport { SalesRep } from './administration/sales-rep.model';\r\n\r\nexport class ConsumerCompany {\r\n constructor(\r\n public consumerCompanyId: number,\r\n public consumerCompanyStandingLookupId: number,\r\n public consumerProspectProgressStatusLookupId: number,\r\n public company: Company,\r\n public consumerCompanyPremises: ConsumerCompanyPremises[],\r\n public salesRep: SalesRep,\r\n public qualificationParameters: PremisesQualificationParameters,\r\n public createdDateTime: string,\r\n public premisesOfferDetail?: PremisesOfferDetail,\r\n public salesRepId?: number,\r\n public isRecsRegistered?: boolean,\r\n public taxYearBeginDate?: Date\r\n ) {}\r\n}\r\n","import { FormGroup, FormControl, Validators } from '@angular/forms';\r\nimport { ProspectPpaDetail } from '../../../model/prospect-ppa-detail.model';\r\nimport { ConsumerCompanyPremises } from '../../../model/consumer-company-premises.model';\r\nimport { Prospect } from '../../../model/prospect.model';\r\nimport { ConsumerCompany } from '../../../model/consumer-company.model';\r\nimport { CommonService } from '../../../common/common-service';\r\n\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { ConsumerCompanyService } from '../../consumer-company/consumer-company.service';\r\nimport { ProspectPpaService } from './prospect-ppa.service';\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { ProspectService } from '../prospects/prospect.service';\r\nimport { saveAs as importedSaveAs } from 'file-saver';\r\nimport { ComponentTriggersService } from '../../../common/component-triggers.service';\r\nimport { ToastrService } from 'ngx-toastr';\r\n\r\n@Component({\r\n selector: 'app-prospect-ppa',\r\n templateUrl: './prospect-ppa.component.html',\r\n styleUrls: ['./prospect-ppa.component.scss', './../../form.styles.scss'],\r\n})\r\nexport class ProspectPpaComponent implements OnInit {\r\n public loading: boolean = false;\r\n public editView: boolean = false;\r\n public showDownloadPreview: boolean = false;\r\n public downloadingPreview: boolean = false;\r\n public creatingAndSaving: boolean = false;\r\n public existingPpa: boolean = false;\r\n public signedPpaUploaded: boolean = false;\r\n public hasGeneratedPpaDocument: boolean = false;\r\n public prospect: Prospect;\r\n public premise: ConsumerCompanyPremises;\r\n public prospectPpaDetail: ProspectPpaDetail;\r\n public ppaStatusForm: FormGroup;\r\n public blank: string;\r\n public ptyCondition: string;\r\n public recsRecipient: string;\r\n public errorMessage = '';\r\n public currentlyLoggedInSalesRep: boolean = false;\r\n\r\n constructor(\r\n private prospectPpaService: ProspectPpaService,\r\n private consumerCompanyService: ConsumerCompanyService,\r\n private route: ActivatedRoute,\r\n protected toastr: ToastrService,\r\n private prospectService: ProspectService,\r\n public commonService: CommonService,\r\n private componentTriggerService: ComponentTriggersService,\r\n private router: Router\r\n ) {\r\n this.blank = 'Intentionally left blank';\r\n this.ppaStatusForm = new FormGroup({\r\n ppaSent: new FormControl(null),\r\n ppaSigned: new FormControl(null),\r\n signedPpaDocument: new FormControl(null),\r\n ppaSignedDate: new FormControl(null),\r\n });\r\n }\r\n\r\n public ngOnInit() {\r\n this.loading = true;\r\n if (this.commonService.isSalesRepUserLoggedIn()) {\r\n this.currentlyLoggedInSalesRep = true;\r\n }\r\n this.route.params.subscribe(\r\n (params) => {\r\n this.consumerCompanyService\r\n .getOfferDetails(params.consumerCompanyPremisesId)\r\n .subscribe(\r\n (consumerCompany: ConsumerCompany) => {\r\n this.commonService\r\n .getEntityLookups([\r\n 'CompanyType',\r\n 'ConsumerCompanyStanding',\r\n 'ConsumerBusinessActivity',\r\n 'DistributorAccountCreditProblem',\r\n 'ProspectCreditRating',\r\n 'PremisesEvaluationStatus',\r\n 'PremisesDeclineReason',\r\n 'DocumentType',\r\n ])\r\n .subscribe(\r\n (entityLookups) => {\r\n this.prospectPpaService\r\n .getProspectPpaDetails(\r\n params.consumerCompanyPremisesId\r\n )\r\n .subscribe(\r\n (\r\n prospectPpaDetail: ProspectPpaDetail\r\n ) => {\r\n this.prospectService.initProspectEntityLookups(\r\n entityLookups\r\n );\r\n this.prospect = this.prospectService.getProspect(\r\n consumerCompany\r\n );\r\n // Take the first premise should be one in the list.\r\n this.premise = this.prospect.companyPremises[0];\r\n this.premise.consumerCompanyId =\r\n consumerCompany.consumerCompanyId;\r\n if (prospectPpaDetail) {\r\n this.prospectPpaDetail = prospectPpaDetail;\r\n this.prospectPpaDetail.consumerCompanyPremisesId = this.premise.consumerCompanyPremisesId;\r\n this.editView = true;\r\n this.showDownloadPreview = true;\r\n this.signedPpaUploaded = !!prospectPpaDetail.signedPpaDocument;\r\n this.hasGeneratedPpaDocument =\r\n prospectPpaDetail.hasGeneratedPpaDocument;\r\n this.existingPpa =\r\n prospectPpaDetail.ppaSigned;\r\n this.recsRecipient = prospectPpaDetail.isRecs\r\n ? (this.recsRecipient =\r\n this.prospect\r\n .details\r\n .companyName +\r\n ' ' +\r\n this.prospect\r\n .details\r\n .companyType)\r\n : 'POWERX PROPRIETARY LIMITED';\r\n this.prospectPpaDetail.longstopDate = new Date(\r\n new Date(\r\n prospectPpaDetail.longstopDate\r\n ).toUTCString()\r\n );\r\n } else {\r\n this.initRequiredDetails();\r\n }\r\n this.prepopulateForms();\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n }\r\n\r\n public initRequiredDetails(): void {\r\n const longstopdate = new Date();\r\n longstopdate.setMonth(longstopdate.getMonth() + 12);\r\n this.prospectPpaDetail = new ProspectPpaDetail(\r\n 0,\r\n this.premise.consumerCompanyPremisesId,\r\n false,\r\n false,\r\n false,\r\n false,\r\n 0,\r\n 20,\r\n longstopdate,\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n false,\r\n false,\r\n new Date(),\r\n this.premise.consumerCompanyId\r\n );\r\n this.initMunicipalityCondition();\r\n this.updateMinimumRequirements();\r\n this.initPty();\r\n this.setRecs(false);\r\n }\r\n\r\n public updateRecsConditions(): void {\r\n if (this.prospectPpaDetail.isRecs) {\r\n this.setRecs(true);\r\n } else {\r\n this.setRecs(false);\r\n }\r\n }\r\n\r\n public updateMinimumRequirements(): void {\r\n this.prospectPpaDetail.minimumSupplyClause = this.prospectPpaDetail\r\n .hasMinimumSupply\r\n ? 'The Renewable Energy Amount in respect of any Billing Period shall not be less than '\r\n : this.blank;\r\n this.editView = false;\r\n }\r\n\r\n public previewPpa(): void {\r\n this.downloadingPreview = true;\r\n this.prospectPpaService\r\n .getPpaPreviewDocument(\r\n this.prospectPpaDetail.consumerCompanyPremisesId\r\n )\r\n .subscribe(\r\n (blob) => {\r\n importedSaveAs(\r\n blob,\r\n 'Full Customer PPA - ' +\r\n this.premise.premisesName +\r\n '.docx'\r\n );\r\n this.downloadingPreview = false;\r\n },\r\n () => {\r\n this.errorMessage =\r\n 'An error occurred while attempting to retrieve the PPA document';\r\n this.toastr.error(this.errorMessage);\r\n this.downloadingPreview = false;\r\n }\r\n );\r\n }\r\n\r\n public savePpa() {\r\n this.creatingAndSaving = true;\r\n this.prospectPpaService\r\n .uploadProspectPpaDocument(\r\n this.prospectPpaDetail.consumerCompanyPremisesId,\r\n 'Full Customer PPA - ' + this.premise.premisesName + '.docx'\r\n )\r\n .subscribe(\r\n () => {\r\n this.componentTriggerService.triggerDocumentsRefresh.next();\r\n this.creatingAndSaving = false;\r\n this.hasGeneratedPpaDocument = true;\r\n this.setOtherPpaPremisesToPending(\r\n this.prospectPpaDetail.consumerCompanyPremisesId\r\n );\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.creatingAndSaving = false;\r\n this.toastr.error(this.errorMessage);\r\n }\r\n );\r\n }\r\n\r\n public setOtherPpaPremisesToPending(\r\n consumerCompanyPremisesId: number\r\n ): void {\r\n this.prospectPpaService\r\n .setPpaPremisesToPending(consumerCompanyPremisesId)\r\n .subscribe(\r\n () => {\r\n this.toastr.info(\r\n 'All Prospect PPA premises were successfully set to pending'\r\n );\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.toastr.error(this.errorMessage);\r\n }\r\n );\r\n }\r\n\r\n public setOtherPendingPremisesToSchedule(\r\n consumerCompanyPremisesId: number\r\n ): void {\r\n this.prospectPpaService\r\n .setOtherPendingPremisesToSchedule(consumerCompanyPremisesId)\r\n .subscribe(\r\n () => {\r\n this.toastr.info(\r\n 'All Prospect PPA premises were successfully set to Schedule'\r\n );\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.toastr.error(this.errorMessage);\r\n }\r\n );\r\n }\r\n\r\n public onSubmitSavePpaDetails(): void {\r\n if (this.ppaStatusForm.controls.ppaSigned.value) {\r\n this.ppaStatusForm.controls.signedPpaDocument.setValidators(\r\n Validators.required\r\n );\r\n this.commonService.validateAllFormFields(this.ppaStatusForm);\r\n this.setOtherPendingPremisesToSchedule(\r\n this.prospectPpaDetail.consumerCompanyPremisesId\r\n );\r\n } else {\r\n this.setOtherPpaPremisesToPending(\r\n this.prospectPpaDetail.consumerCompanyPremisesId\r\n );\r\n }\r\n this.prospectPpaDetail.ppaSigned = this.ppaStatusForm.controls.ppaSigned.value;\r\n this.prospectPpaDetail.ppaSignedDate = this.ppaStatusForm.controls.ppaSignedDate.value;\r\n this.prospectPpaDetail.ppaSent = this.prospectPpaDetail.ppaSigned\r\n ? true\r\n : this.ppaStatusForm.controls.ppaSent.value;\r\n this.updateMinimumRequirements();\r\n this.prospectPpaDetail.minimumSupplyClause += this.prospectPpaDetail\r\n .hasMinimumSupply\r\n ? this.prospectPpaDetail.minimumSupplyValue + ' kWh'\r\n : '';\r\n this.updatePpaDetails();\r\n }\r\n\r\n public documentUpload(output: any): void {\r\n if (output.value) {\r\n this.ppaStatusForm.controls.signedPpaDocument.setValue(\r\n output.value\r\n );\r\n this.prospectPpaService\r\n .AddSignedPpaDocument(\r\n this.ppaStatusForm.controls.signedPpaDocument.value,\r\n this.prospectPpaDetail.consumerCompanyId\r\n )\r\n .subscribe(\r\n () => {\r\n this.signedPpaUploaded = true;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.toastr.error(this.errorMessage);\r\n }\r\n );\r\n }\r\n }\r\n\r\n private updatePpaDetails(): void {\r\n this.prospectPpaService\r\n .createOrUpdateProspectPpa(this.prospectPpaDetail)\r\n .subscribe(\r\n (prospectPpaDetail: ProspectPpaDetail) => {\r\n this.toastr.success('PPA Details Successfully Updated');\r\n this.editView = true;\r\n this.showDownloadPreview = true;\r\n if (prospectPpaDetail.ppaSigned) {\r\n this.router.navigate([\r\n 'consumers',\r\n 'prospect-evaluations',\r\n ]);\r\n }\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.toastr.error(this.errorMessage);\r\n this.downloadingPreview = false;\r\n }\r\n );\r\n }\r\n\r\n private setRecs(active: boolean): void {\r\n if (active) {\r\n this.recsRecipient =\r\n this.prospect.details.companyName +\r\n ' ' +\r\n this.prospect.details.companyType;\r\n this.prospectPpaDetail.carbonCreditsDefinition =\r\n '“Carbon Credits ” means certified emissions reductions issued pursuant to the clean ' +\r\n 'development mechanism pursuant to article 12 of the Kyoto Protocol as well as all other relevant rules of the clean development mechanism;';\r\n this.prospectPpaDetail.kyotoProtocolDefinition =\r\n '“Kyoto Protocol ” means the protocol to the United Nations Framework Convention on ' +\r\n 'Climate Change (\"UNFCC\") adopted at the third conference of the parties to the UNFC, Japan adopted on 11 December 1997, as amended from time to time;';\r\n } else {\r\n this.recsRecipient = 'POWERX PROPRIETARY LIMITED';\r\n this.prospectPpaDetail.carbonCreditsDefinition = this.blank;\r\n this.prospectPpaDetail.kyotoProtocolDefinition = this.blank;\r\n }\r\n }\r\n\r\n private initMunicipalityCondition(): void {\r\n this.prospectPpaDetail.isMunicipality =\r\n this.premise.distributor.name.indexOf('Eskom') < 0;\r\n if (!this.prospectPpaDetail.isMunicipality) {\r\n this.prospectPpaDetail.municipalityCondition =\r\n 'POWERX entering into the Electricity Reticulation Agreement, and ' +\r\n 'such Electricity Reticulation Agreement becoming unconditional in accordance with its terms (save for any conditions ' +\r\n 'requiring this Agreement to be in force and unconditional); ';\r\n } else {\r\n this.prospectPpaDetail.municipalityCondition = this.blank;\r\n }\r\n }\r\n\r\n private initPty(): void {\r\n this.prospectPpaDetail.isPty =\r\n this.prospect.details.companyType.indexOf('Sole Proprietor') < 0;\r\n this.ptyCondition =\r\n 'it is a ' +\r\n this.prospect.details.companyType +\r\n ' incorporated under the Applicable Laws which has ' +\r\n 'been in continuous existence since incorporation; ';\r\n }\r\n\r\n private prepopulateForms(): void {\r\n this.ppaStatusForm.controls.ppaSent.setValue(\r\n this.prospectPpaDetail.ppaSent\r\n );\r\n this.ppaStatusForm.controls.ppaSigned.setValue(\r\n this.prospectPpaDetail.ppaSigned\r\n );\r\n this.ppaStatusForm.controls.signedPpaDocument.setValue(\r\n this.prospectPpaDetail.signedPpaDocument\r\n );\r\n this.ppaStatusForm.controls.ppaSignedDate.setValue(\r\n this.prospectPpaDetail.ppaSignedDate\r\n );\r\n }\r\n}\r\n","export class ProspectPpaDetail {\r\n constructor(\r\n public prospectPpaDetailId: number,\r\n public consumerCompanyPremisesId: number,\r\n public isRecs: boolean,\r\n public isPty: boolean,\r\n public isMunicipality: boolean,\r\n public hasMinimumSupply: boolean,\r\n public minimumSupplyValue: number,\r\n public expiryDate: number,\r\n public longstopDate: Date,\r\n public recsClause: string,\r\n public carbonCreditsDefinition: string,\r\n public kyotoProtocolDefinition: string,\r\n public minimumSupplyClause: string,\r\n public municipalityCondition: string,\r\n public ppaSent: boolean,\r\n public ppaSigned: boolean,\r\n public ppaSignedDate: Date,\r\n public consumerCompanyId: number,\r\n public signedPpaDocument?: any,\r\n public hasGeneratedPpaDocument?: boolean\r\n ) {}\r\n}\r\n","import { ProspectItem } from '../../../model/prospect-item.model';\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { ConsumerCompanyService } from '../../consumer-company/consumer-company.service';\r\nimport { ProspectStats } from '../../../model/prospect-stats.model';\r\nimport { CommonService } from '../../../common/common-service';\r\n\r\n@Component({\r\n selector: 'app-prospects',\r\n templateUrl: './prospects.component.html',\r\n styleUrls: ['./prospects.component.scss'],\r\n})\r\nexport class ProspectsComponent implements OnInit {\r\n public prospectItems: ProspectItem[];\r\n public prospectStats: ProspectStats;\r\n public prospectTotals: number = 0;\r\n public errorMessage: string = '';\r\n public loading: boolean = false;\r\n\r\n constructor(\r\n private consumerCompanyService: ConsumerCompanyService,\r\n public commonService: CommonService\r\n ) {}\r\n\r\n public ngOnInit() {\r\n this.loading = true;\r\n this.consumerCompanyService.getAllProspects().subscribe(\r\n (prospectItems: ProspectItem[]) => {\r\n this.consumerCompanyService.getProspectsStats().subscribe(\r\n (prospectStats: ProspectStats) => {\r\n this.prospectItems = prospectItems;\r\n this.prospectStats = prospectStats;\r\n this.loading = false;\r\n this.sumOfAll();\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n\r\n private sumOfAll(): void {\r\n this.prospectItems.forEach((prospectItem: ProspectItem) => {\r\n this.prospectTotals += prospectItem.averageMonthlyConsumption;\r\n });\r\n }\r\n}\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'not-found',\r\n templateUrl: './404.html',\r\n styleUrls: ['./404.scss'],\r\n})\r\nexport class PageNotFoundComponent {}\r\n","import { GeneratorProject } from '../../generator-project.model';\r\nimport { GeneratorCompany } from '../../generator-company.model';\r\nimport { EntityLookup } from '../../entity-lookup.model';\r\n\r\nexport class GeneratorApplication {\r\n constructor(\r\n public generatorApplicationId: number,\r\n public applicationRefNumber: string,\r\n public generatorApplicationStatus: EntityLookup,\r\n public generatorCompany: GeneratorCompany,\r\n public generatorCompanyId: number,\r\n public generatorProjects: GeneratorProject[]\r\n ) {}\r\n}\r\n","import { GeneratorProjectFacility } from './generator-project-facility.model';\r\nimport { GeneratorCompany } from './generator-company.model';\r\nimport { Distributor } from './distributor.model';\r\nimport { EntityLookup } from './entity-lookup.model';\r\n\r\nexport class GeneratorProject {\r\n public generationCapacity: EntityLookup;\r\n public technology: EntityLookup;\r\n\r\n constructor(\r\n public generatorProjectName: string,\r\n public generatorCompany: GeneratorCompany,\r\n public generationCapacityLookupId: number,\r\n public isCoGeneration: boolean,\r\n public technologyLookupId: number,\r\n public generatorProjectId,\r\n public sameAsHoldingCompany: boolean,\r\n public distributorId: number,\r\n public distributor: Distributor,\r\n public generatorApplicationId: number,\r\n public facilities: GeneratorProjectFacility[],\r\n public isMicroScale: boolean,\r\n public generatorCompanyId?: number\r\n ) {}\r\n}\r\n","import { Address } from './address.model';\r\nimport { Document } from './document.model';\r\nimport { GeneratorProject } from './generator-project.model';\r\nimport { GenerationData } from './application/generator-application/generation-data.model';\r\nimport { GeneratorActivation } from './generator-activation.model';\r\nimport { NewFacility } from './application/generator-application/new-facility.model';\r\nimport { ExistingFacility } from './application/generator-application/existing-facility.model';\r\nimport { GeneratorFacilityEvaluationField } from './generator/generator-facility-evaluation-field.model';\r\nimport { EntityLookup } from './entity-lookup.model';\r\n\r\nexport class GeneratorProjectFacility {\r\n public newFacility?: NewFacility = null;\r\n public existingFacility?: ExistingFacility = null;\r\n public isRoofTopBased?: boolean = null;\r\n public structuralEngineerCertificate?: Document = null;\r\n public isOwnedByIPP?: boolean = null;\r\n public isOfficialLeaseInPlace?: boolean = null;\r\n public leaseStatusComment?: string = null;\r\n public leaseTitleHolderName?: string = null;\r\n public isRezoningRequired?: boolean = null;\r\n public rezoningRequiredTypeId?: number = null;\r\n public rezoningApplied?: boolean = null;\r\n public rezoningApplicationDate?: Date = null;\r\n public rezoningResultObtained?: boolean = null;\r\n public rezoningApplicationResult?: boolean = null;\r\n public rezoningApproved?: boolean = null;\r\n public numberOfOperationalMonths?: number = null;\r\n public durationOfPPA?: number = null;\r\n public maintenanceDowntimeInWeeks?: number = null;\r\n public plannedLifeExpectancy?: number = null;\r\n public minimumRequiredPriceWinter?: number = null;\r\n public minimumRequiredPriceKwSummer?: number = null;\r\n public plannedExpansion?: boolean = null;\r\n public expectedExtraCapacity?: number = null;\r\n public plannedCommissioningDate?: Date = null;\r\n public generatorProject?: GeneratorProject = null;\r\n public projectProgressStatus?: string = null;\r\n\r\n public isWebMetersInstalled?: boolean = null;\r\n public meterDateInstallation?: Date = null;\r\n public meterMakeAndModel?: string = null;\r\n public isCheckMetersInstalled?: boolean = null;\r\n public exportGenerationCapacity?: number = null;\r\n public hasExistingNERSALicence?: boolean = null;\r\n public noNERSAGenerationLicenceProvidedReason?: string = null;\r\n public existingOffTaker?: string = null;\r\n public expirationDateOfExistingPPA?: Date = null;\r\n public connectionVoltageSize?: string = null;\r\n public projectType?: EntityLookup = null;\r\n public historicGenerationData?: GenerationData = null;\r\n public futureGenerationData?: GenerationData = null;\r\n\r\n public generatorFacilityStatus?: string = null;\r\n public facilityApplicationStatus?: any = null;\r\n\r\n public evaluationValue?: number = null;\r\n public facilityDeclinedReasonLookupId?: number = null;\r\n public facilityMoreInformationMessage?: string = null;\r\n\r\n public generatorFacilityEvaluationField?: GeneratorFacilityEvaluationField;\r\n public generatorActivations?: GeneratorActivation[] = null;\r\n\r\n public nersaGenerationLicence?: Document = null;\r\n\r\n public isIRPRequestSubmitted?: boolean = null;\r\n public deviationApprovalObtained?: boolean = null;\r\n public deviationApproval?: Document = null;\r\n public noDeviationApprovalObtainedReason?: string = null;\r\n\r\n public ppaDurationRequested?: number = null;\r\n\r\n constructor(\r\n public facilityName: string,\r\n public latitudeCoordinate: number,\r\n public longitudeCoordinate: number,\r\n public installedCapacity: number,\r\n public contractedCapacity: number,\r\n public projectTypeLookupId: number,\r\n public connectionVoltageSizeLookupId: number,\r\n public isEmbeddedGeneration: boolean,\r\n public generatorProjectFacilityId: number,\r\n public address: Address,\r\n public isExistingFacility: boolean,\r\n public generatorFacilityStatusLookupId?: number,\r\n public identifier?: string,\r\n public eskomIdentifier?: string,\r\n public technologyLookupId?: number,\r\n public excludeFromRun?: boolean,\r\n public reasonForExcludingFromRun?: string,\r\n public excludeFromForecastRun?: boolean,\r\n public baseGeneratorProjectFacilityId?: number,\r\n public generatorProjectId?: number,\r\n public isRecsRegistered?: boolean,\r\n public sapClientNumber?: string,\r\n public isArchived?: boolean\r\n ) {}\r\n}\r\n","import { Company } from './company.model';\r\nimport { Document } from './document.model';\r\nimport { Contact } from './contact.model';\r\nexport class GeneratorCompany {\r\n constructor(\r\n public generatorCompanyId: number,\r\n public generatorCompanyTypeLookupId: number,\r\n public company: Company,\r\n public bbbeeCertificate?: Document,\r\n public generatorExperienceProfile?: Document,\r\n public taxClearanceCertificate?: Document,\r\n public directorContact?: Contact\r\n ) {}\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { ApplicationUserEmailVerification } from '../../../model/application/application-user-email-verification.model';\r\nimport { ApplicationUser } from '../../../model/application/application-user.model';\r\nimport { Attribute } from '../../../model/attribute.model';\r\nimport { Address } from '../../../model/address.model';\r\nimport { GeneratorApplication } from '../../../model/application/generator-application/generator-application.model';\r\nimport { GeneratorProject } from '../../../model/generator-project.model';\r\nimport { GeneratorProjectFacility } from '../../../model/generator-project-facility.model';\r\nimport { GeneratorCompany } from '../../../model/generator-company.model';\r\nimport { Company } from '../../../model/company.model';\r\nimport { Contact } from '../../../model/contact.model';\r\nimport { ExistingFacility } from '../../../model/application/generator-application/existing-facility.model';\r\nimport { NewFacility } from '../../../model/application/generator-application/new-facility.model';\r\nimport { isNullOrUndefined } from 'util';\r\n\r\n@Injectable()\r\nexport class GeneratorApplicationService {\r\n constructor(private httpClient: HttpClient) {}\r\n\r\n public getGeneratorApplication(\r\n generatorApplicationFormName?: any\r\n ): Observable {\r\n return this.httpClient.get(\r\n API_URL +\r\n 'generatorApplication/getGeneratorApplication?generatorApplicationFormName=' +\r\n generatorApplicationFormName\r\n );\r\n }\r\n\r\n public getGeneratorApplicationPhase2(): Observable {\r\n return this.httpClient.get(\r\n API_URL + 'generatorApplication/GetGeneratorApplicationPhase2'\r\n );\r\n }\r\n\r\n public registerNewGeneratorApplicant(\r\n generatorApplicant: ApplicationUser\r\n ): Observable {\r\n return this.httpClient.post(\r\n API_URL + 'generatorApplication/create',\r\n generatorApplicant\r\n );\r\n }\r\n\r\n public verifyNewApplicant(\r\n verificationToken: ApplicationUserEmailVerification\r\n ): Observable {\r\n return this.httpClient.post(\r\n API_URL + 'generatorApplication/verifyEmail',\r\n verificationToken\r\n );\r\n }\r\n\r\n public registerNewHoldingCompany(\r\n holdingCompany: any,\r\n isDirectorContactAttributeId: number\r\n ): Observable {\r\n const additionalContacts: Contact[] = [];\r\n for (const additionalContact of holdingCompany.additionalContacts) {\r\n additionalContacts.push(\r\n new Contact(\r\n additionalContact.firstName,\r\n additionalContact.lastName,\r\n additionalContact.identityNumber,\r\n additionalContact.position,\r\n additionalContact.cellNumber,\r\n additionalContact.landLineNumber,\r\n additionalContact.email,\r\n additionalContact.contactId,\r\n null,\r\n holdingCompany.companyId\r\n )\r\n );\r\n }\r\n const attributes: Attribute[] = [];\r\n attributes.push(\r\n new Attribute(null, null, isDirectorContactAttributeId)\r\n );\r\n const directorContact = new Contact(\r\n holdingCompany.directorContact.firstName,\r\n holdingCompany.directorContact.lastName,\r\n holdingCompany.directorContact.identityNumber,\r\n holdingCompany.directorContact.position,\r\n holdingCompany.directorContact.cellNumber,\r\n holdingCompany.directorContact.landLineNumber,\r\n holdingCompany.directorContact.email,\r\n holdingCompany.directorContact.contactId,\r\n null,\r\n holdingCompany.companyId,\r\n attributes\r\n );\r\n additionalContacts.push(directorContact);\r\n const address = new Address(\r\n holdingCompany.address.addressLine1,\r\n holdingCompany.address.addressLine2,\r\n holdingCompany.address.addressLine3,\r\n holdingCompany.address.province,\r\n holdingCompany.address.city,\r\n holdingCompany.address.postalCode,\r\n holdingCompany.address.isRural,\r\n holdingCompany.address.addressId\r\n );\r\n const addresses: Address[] = [];\r\n addresses.push(address);\r\n const company = new Company(\r\n holdingCompany.companyName,\r\n holdingCompany.companyType,\r\n holdingCompany.registrationNumber,\r\n holdingCompany.telephoneNumber,\r\n holdingCompany.companyId,\r\n null,\r\n holdingCompany.vatNumber,\r\n additionalContacts,\r\n null,\r\n addresses\r\n );\r\n const generatorCompany = new GeneratorCompany(\r\n holdingCompany.companyId,\r\n null, // is set to the holding company lookupId on the backend\r\n company\r\n );\r\n const generatorApplication = new GeneratorApplication(\r\n null,\r\n null,\r\n null,\r\n generatorCompany,\r\n null,\r\n null\r\n );\r\n return this.httpClient.post(\r\n API_URL + 'generatorApplication/createHoldingCompany',\r\n generatorApplication\r\n );\r\n }\r\n\r\n public saveProgressHoldingCompany(\r\n holdingCompany: any,\r\n generatorApplicationId: number,\r\n isDirectorContactAttributeId: number\r\n ): Observable {\r\n const additionalContacts: Contact[] = [];\r\n for (const additionalContact of holdingCompany.additionalContacts) {\r\n additionalContacts.push(\r\n new Contact(\r\n additionalContact.firstName,\r\n additionalContact.lastName,\r\n additionalContact.identityNumber,\r\n additionalContact.position,\r\n additionalContact.cellNumber,\r\n additionalContact.landLineNumber,\r\n additionalContact.email,\r\n additionalContact.contactId,\r\n null,\r\n holdingCompany.companyId\r\n )\r\n );\r\n }\r\n const attributes: Attribute[] = [];\r\n attributes.push(\r\n new Attribute(\r\n 'IsDirectorContact',\r\n 'Director Contact',\r\n isDirectorContactAttributeId\r\n )\r\n );\r\n const directorContact = new Contact(\r\n holdingCompany.directorContact.firstName,\r\n holdingCompany.directorContact.lastName,\r\n holdingCompany.directorContact.identityNumber,\r\n holdingCompany.directorContact.position,\r\n holdingCompany.directorContact.cellNumber,\r\n holdingCompany.directorContact.landLineNumber,\r\n holdingCompany.directorContact.email,\r\n holdingCompany.directorContact.contactId,\r\n null,\r\n holdingCompany.companyId,\r\n attributes\r\n );\r\n additionalContacts.push(directorContact);\r\n const address = new Address(\r\n holdingCompany.address.addressLine1,\r\n holdingCompany.address.addressLine2,\r\n holdingCompany.address.addressLine3,\r\n holdingCompany.address.province,\r\n holdingCompany.address.city,\r\n holdingCompany.address.postalCode,\r\n holdingCompany.address.isRural,\r\n holdingCompany.address.addressId\r\n );\r\n const addresses: Address[] = [];\r\n addresses.push(address);\r\n const company = new Company(\r\n holdingCompany.companyName,\r\n holdingCompany.companyType,\r\n holdingCompany.registrationNumber,\r\n holdingCompany.telephoneNumber,\r\n holdingCompany.companyId,\r\n null,\r\n holdingCompany.vatNumber,\r\n additionalContacts,\r\n null,\r\n addresses\r\n );\r\n const generatorCompany = new GeneratorCompany(\r\n holdingCompany.companyId,\r\n null, // is set to the holding company lookupId on the backend\r\n company\r\n );\r\n const generatorApplication = new GeneratorApplication(\r\n generatorApplicationId,\r\n null,\r\n null,\r\n generatorCompany,\r\n null,\r\n null\r\n );\r\n return this.httpClient.post(\r\n API_URL +\r\n 'generatorApplication/saveGeneratorApplicationProgress?generatorApplicationFormName=' +\r\n 'Holding Company',\r\n generatorApplication\r\n );\r\n }\r\n\r\n public captureSPVProjects(\r\n generatorApplication: GeneratorApplication,\r\n SPVProjects: any\r\n ): Observable {\r\n const spvProjectsArray: GeneratorProject[] = [];\r\n\r\n for (const spvProject of SPVProjects.spvProjects) {\r\n const contact = new Contact(\r\n spvProject.spvContactPersonDetails.firstName,\r\n spvProject.spvContactPersonDetails.lastName,\r\n spvProject.spvContactPersonDetails.identityNumber,\r\n spvProject.spvContactPersonDetails.position,\r\n spvProject.spvContactPersonDetails.cellNumber,\r\n spvProject.spvContactPersonDetails.landLineNumber,\r\n spvProject.spvContactPersonDetails.email,\r\n spvProject.spvContactPersonDetails.contactId,\r\n null\r\n );\r\n const additionalContacts = [];\r\n additionalContacts.push(contact);\r\n const company = new Company(\r\n spvProject.spvCompanyDetails.companyName,\r\n spvProject.spvCompanyDetails.companyType,\r\n spvProject.spvCompanyDetails.registrationNumber,\r\n spvProject.spvCompanyDetails.telephoneNumber,\r\n spvProject.spvCompanyDetails.companyId,\r\n spvProject.parentCompanyId,\r\n spvProject.spvCompanyDetails.vatNumber,\r\n additionalContacts,\r\n null\r\n );\r\n const generatorCompany = new GeneratorCompany(\r\n spvProject.spvCompanyDetails.companyId,\r\n null, // set in the backend\r\n company\r\n );\r\n const facilitiesArray: GeneratorProjectFacility[] = [];\r\n for (const facility of spvProject.facilities) {\r\n const address = new Address(\r\n facility.facilityAddress.addressLine1,\r\n facility.facilityAddress.addressLine2,\r\n facility.facilityAddress.addressLine3,\r\n facility.facilityAddress.province,\r\n facility.facilityAddress.city,\r\n facility.facilityAddress.postalCode,\r\n facility.facilityAddress.isRural,\r\n facility.facilityAddress.addressId\r\n );\r\n facilitiesArray.push(\r\n new GeneratorProjectFacility(\r\n facility.facilityDetails.facilityName,\r\n facility.facilityDetails.latitudeCoordinate,\r\n facility.facilityDetails.longitudeCoordinate,\r\n facility.facilityDetails.installedCapacity,\r\n facility.facilityDetails.contractedCapacity,\r\n facility.facilityDetails.projectType,\r\n facility.facilityDetails.connectionVoltage,\r\n facility.facilityDetails.isEmbeddedGeneration,\r\n facility.generatorProjectFacilityId,\r\n address,\r\n facility.isExistingFacility,\r\n facility.facilityDetails.generatorFacilityStatusLookupId,\r\n null,\r\n null,\r\n null,\r\n null,\r\n null,\r\n null,\r\n null,\r\n null,\r\n null,\r\n null,\r\n false\r\n )\r\n );\r\n }\r\n spvProjectsArray.push(\r\n new GeneratorProject(\r\n spvProject.spvDetails.generatorProjectName,\r\n generatorCompany,\r\n spvProject.spvDetails.generationCapacity,\r\n spvProject.spvDetails.isCoGeneration,\r\n spvProject.spvDetails.projectTechnologyType,\r\n spvProject.generatorProjectId,\r\n spvProject.sameAsHoldingCompany,\r\n spvProject.spvDistributionArea,\r\n null,\r\n spvProject.generatorApplicationId,\r\n facilitiesArray,\r\n null\r\n )\r\n );\r\n }\r\n\r\n const generatorApplicationModel = new GeneratorApplication(\r\n generatorApplication.generatorApplicationId,\r\n null,\r\n null,\r\n null,\r\n generatorApplication.generatorCompanyId,\r\n spvProjectsArray\r\n );\r\n return this.httpClient.post(\r\n API_URL + 'generatorApplication/CreateGeneratorProject',\r\n generatorApplicationModel\r\n );\r\n }\r\n\r\n public saveProgressSPV(\r\n generatorApplication: GeneratorApplication,\r\n SPVProjects: any\r\n ): Observable {\r\n const spvProjectsArray: GeneratorProject[] = [];\r\n\r\n for (const spvProject of SPVProjects.spvProjects) {\r\n const contact = new Contact(\r\n spvProject.spvContactPersonDetails.firstName,\r\n spvProject.spvContactPersonDetails.lastName,\r\n spvProject.spvContactPersonDetails.identityNumber,\r\n spvProject.spvContactPersonDetails.position,\r\n spvProject.spvContactPersonDetails.cellNumber,\r\n spvProject.spvContactPersonDetails.landLineNumber,\r\n spvProject.spvContactPersonDetails.email,\r\n spvProject.spvContactPersonDetails.contactId,\r\n null\r\n );\r\n const additionalContacts = [];\r\n additionalContacts.push(contact);\r\n const company = new Company(\r\n spvProject.spvCompanyDetails.companyName,\r\n spvProject.spvCompanyDetails.companyType,\r\n spvProject.spvCompanyDetails.registrationNumber,\r\n spvProject.spvCompanyDetails.telephoneNumber,\r\n spvProject.spvCompanyDetails.companyId,\r\n spvProject.parentCompanyId,\r\n spvProject.spvCompanyDetails.vatNumber,\r\n additionalContacts,\r\n null\r\n );\r\n const generatorCompany = new GeneratorCompany(\r\n spvProject.spvCompanyDetails.companyId,\r\n null, // set in the backend\r\n company\r\n );\r\n const facilitiesArray: GeneratorProjectFacility[] = [];\r\n for (const facility of spvProject.facilities) {\r\n const address = new Address(\r\n facility.facilityAddress.addressLine1,\r\n facility.facilityAddress.addressLine2,\r\n facility.facilityAddress.addressLine3,\r\n facility.facilityAddress.province,\r\n facility.facilityAddress.city,\r\n facility.facilityAddress.postalCode,\r\n facility.facilityAddress.isRural,\r\n facility.facilityAddress.addressId\r\n );\r\n facilitiesArray.push(\r\n new GeneratorProjectFacility(\r\n facility.facilityDetails.facilityName,\r\n facility.facilityDetails.latitudeCoordinate,\r\n facility.facilityDetails.longitudeCoordinate,\r\n facility.facilityDetails.installedCapacity,\r\n facility.facilityDetails.contractedCapacity,\r\n facility.facilityDetails.projectType,\r\n facility.facilityDetails.connectionVoltage,\r\n facility.facilityDetails.isEmbeddedGeneration,\r\n facility.generatorProjectFacilityId,\r\n address,\r\n facility.isExistingFacility,\r\n facility.facilityDetails.generatorFacilityStatusLookupId,\r\n null,\r\n null,\r\n null,\r\n null,\r\n null,\r\n null,\r\n null,\r\n null,\r\n null,\r\n null,\r\n false\r\n )\r\n );\r\n }\r\n spvProjectsArray.push(\r\n new GeneratorProject(\r\n spvProject.spvDetails.generatorProjectName,\r\n generatorCompany,\r\n spvProject.spvDetails.generationCapacity,\r\n spvProject.spvDetails.isCoGeneration,\r\n spvProject.spvDetails.projectTechnologyType,\r\n spvProject.generatorProjectId,\r\n spvProject.sameAsHoldingCompany,\r\n spvProject.spvDistributionArea,\r\n null,\r\n spvProject.generatorApplicationId,\r\n facilitiesArray,\r\n null\r\n )\r\n );\r\n }\r\n\r\n const generatorApplicationModel = new GeneratorApplication(\r\n generatorApplication.generatorApplicationId,\r\n null,\r\n null,\r\n null,\r\n generatorApplication.generatorCompanyId,\r\n spvProjectsArray\r\n );\r\n return this.httpClient.post(\r\n API_URL +\r\n 'generatorApplication/SaveGeneratorApplicationProgress?generatorApplicationFormName=' +\r\n 'SPV',\r\n generatorApplicationModel\r\n );\r\n }\r\n\r\n public submitNda(data: any): Observable {\r\n return this.httpClient.post(\r\n API_URL + 'generatorApplication/AcceptNDA',\r\n data\r\n );\r\n }\r\n\r\n public savePhase2Application(phase2ApplicationForm: any): Observable {\r\n return this.httpClient.post(\r\n API_URL + 'generatorApplication/SaveGeneratorApplicationPhase2',\r\n phase2ApplicationForm\r\n );\r\n }\r\n\r\n public saveProgressApplicationPhase2(\r\n phase2ApplicationForm: any,\r\n generatorApplicationId: number\r\n ): Observable {\r\n const generatorApplication = new GeneratorApplication(\r\n generatorApplicationId,\r\n null,\r\n null,\r\n null,\r\n null,\r\n phase2ApplicationForm.generatorProjects\r\n );\r\n return this.httpClient.post(\r\n API_URL +\r\n 'generatorApplication/SaveGeneratorApplicationProgress?generatorApplicationFormName=' +\r\n 'Phase 2',\r\n generatorApplication\r\n );\r\n }\r\n\r\n public navigateByStatus(status: string): string {\r\n switch (status) {\r\n case 'New Application':\r\n return 'generators/application/holding-company';\r\n case 'Capture: Holding Company':\r\n return 'generators/application/spv-details';\r\n case 'Capture: Project Detail':\r\n return 'generators/application/facility-details';\r\n case 'Capture: Facility Detail':\r\n return 'generators/application/nda-agreement';\r\n case 'Accept NDA':\r\n return 'generators/application/nda-agreement';\r\n case 'Application Denied':\r\n return 'generators/application/facility-details';\r\n default:\r\n return 'generators/application/holding-company';\r\n }\r\n }\r\n\r\n public setApplicationStatus(\r\n generatorApplicationStatus: string\r\n ): Observable {\r\n return this.httpClient.get(\r\n API_URL +\r\n 'generatorApplication/SetApplicationStatus?generatorApplicationStatus=' +\r\n generatorApplicationStatus\r\n );\r\n }\r\n\r\n public getGeneratorProjects(): Observable {\r\n return this.httpClient.get(\r\n API_URL + 'generatorApplication/GetGeneratorProjects'\r\n );\r\n }\r\n\r\n public getGeneratorProjectWithFacilities(\r\n generatorProjectId: number\r\n ): Observable {\r\n return this.httpClient.get(\r\n API_URL +\r\n 'generatorApplication/GetGeneratorProjectWithFacilities?generatorProjectId=' +\r\n generatorProjectId\r\n );\r\n }\r\n\r\n public createOrUpdateGeneratorProject(generatorProjectInput: any) {\r\n const contact = new Contact(\r\n generatorProjectInput.spvContactPersonDetails.firstName,\r\n generatorProjectInput.spvContactPersonDetails.lastName,\r\n generatorProjectInput.spvContactPersonDetails.identityNumber,\r\n generatorProjectInput.spvContactPersonDetails.position,\r\n generatorProjectInput.spvContactPersonDetails.cellNumber,\r\n generatorProjectInput.spvContactPersonDetails.landLineNumber,\r\n generatorProjectInput.spvContactPersonDetails.email,\r\n generatorProjectInput.spvContactPersonDetails.contactId,\r\n null\r\n );\r\n const additionalContacts = [];\r\n additionalContacts.push(contact);\r\n\r\n const company = new Company(\r\n generatorProjectInput.spvCompanyDetails.companyName,\r\n generatorProjectInput.spvCompanyDetails.companyType,\r\n generatorProjectInput.spvCompanyDetails.registrationNumber,\r\n generatorProjectInput.spvCompanyDetails.telephoneNumber,\r\n generatorProjectInput.spvCompanyDetails.companyId,\r\n generatorProjectInput.parentCompanyId,\r\n generatorProjectInput.spvCompanyDetails.vatNumber,\r\n additionalContacts,\r\n null\r\n );\r\n const generatorCompany = new GeneratorCompany(\r\n generatorProjectInput.spvCompanyDetails.companyId,\r\n null, // set in the backend\r\n company\r\n );\r\n\r\n const generatorProject = new GeneratorProject(\r\n generatorProjectInput.spvDetails.generatorProjectName,\r\n generatorCompany,\r\n generatorProjectInput.spvDetails.generationCapacity,\r\n generatorProjectInput.spvDetails.isCoGeneration,\r\n generatorProjectInput.spvDetails.projectTechnologyType,\r\n generatorProjectInput.generatorProjectId,\r\n generatorProjectInput.sameAsHoldingCompany,\r\n generatorProjectInput.spvDistributionArea,\r\n null,\r\n generatorProjectInput.generatorApplicationId,\r\n null,\r\n null\r\n );\r\n generatorProject.generatorApplicationId =\r\n generatorProjectInput.generatorApplicationId;\r\n generatorProject.generatorCompanyId =\r\n generatorCompany.generatorCompanyId;\r\n return this.httpClient.post(\r\n API_URL + 'generatorApplication/CreateOrUpdateGeneratorProject',\r\n generatorProject\r\n );\r\n }\r\n\r\n public getGeneratorProjectFacilityPhase1(projectFacilityId: number) {\r\n return this.httpClient.get(\r\n API_URL +\r\n 'generatorApplication/GetGeneratorProjectFacilityPhase1?generatorProjectFacilityId=' +\r\n projectFacilityId\r\n );\r\n }\r\n\r\n public getGeneratorApplicationOnly(): Observable {\r\n return this.httpClient.get(\r\n API_URL + 'generatorApplication/getGeneratorApplicationOnly'\r\n );\r\n }\r\n\r\n public updateGeneratorProjectFacilityPhase1(\r\n generatorProjectFacilityPhase1Form: any\r\n ): Observable {\r\n const address = new Address(\r\n generatorProjectFacilityPhase1Form.facilityAddress.addressLine1,\r\n generatorProjectFacilityPhase1Form.facilityAddress.addressLine2,\r\n generatorProjectFacilityPhase1Form.facilityAddress.addressLine3,\r\n generatorProjectFacilityPhase1Form.facilityAddress.province,\r\n generatorProjectFacilityPhase1Form.facilityAddress.city,\r\n generatorProjectFacilityPhase1Form.facilityAddress.postalCode,\r\n generatorProjectFacilityPhase1Form.facilityAddress.isRural,\r\n generatorProjectFacilityPhase1Form.facilityAddress.addressId\r\n );\r\n\r\n const generatorProjectFacilityDto = new GeneratorProjectFacility(\r\n generatorProjectFacilityPhase1Form.facilityDetails.facilityName,\r\n generatorProjectFacilityPhase1Form.facilityDetails.latitudeCoordinate,\r\n generatorProjectFacilityPhase1Form.facilityDetails.longitudeCoordinate,\r\n generatorProjectFacilityPhase1Form.facilityDetails.installedCapacity,\r\n generatorProjectFacilityPhase1Form.facilityDetails.contractedCapacity,\r\n generatorProjectFacilityPhase1Form.facilityDetails.projectType,\r\n generatorProjectFacilityPhase1Form.facilityDetails.connectionVoltage,\r\n generatorProjectFacilityPhase1Form.facilityDetails.isEmbeddedGeneration,\r\n generatorProjectFacilityPhase1Form.generatorProjectFacilityId,\r\n address,\r\n generatorProjectFacilityPhase1Form.isExistingFacility,\r\n generatorProjectFacilityPhase1Form.facilityDetails.generatorFacilityStatusLookupId\r\n );\r\n generatorProjectFacilityDto.generatorProjectId =\r\n generatorProjectFacilityPhase1Form.generatorProjectId;\r\n generatorProjectFacilityDto.isArchived = false;\r\n\r\n return this.httpClient.post(\r\n API_URL +\r\n 'generatorApplication/CreateOrUpdateGeneratorProjectFacilityPhase1',\r\n generatorProjectFacilityDto\r\n );\r\n }\r\n\r\n public getGeneratorProjectFacilityPhase2(projectFacilityId: number) {\r\n return this.httpClient.get(\r\n API_URL +\r\n 'generatorApplication/GetGeneratorProjectFacilityPhase2?generatorProjectFacilityId=' +\r\n projectFacilityId\r\n );\r\n }\r\n\r\n public saveGeneratorProjectFacilityPhase2(\r\n generatorProjectFacilityPhase2Form: any,\r\n generatorProjectFacilityDtoPhase2: GeneratorProjectFacility\r\n ): Observable {\r\n // generatorProjectFacilityDtoPhase2.generatorProjectId = generatorProjectFacilityPhase2Form.generatorProjectId;\r\n // generatorProjectFacilityDtoPhase2.generatorProjectFacilityId = generatorProjectFacilityPhase2Form.generatorProjectFacilityId;\r\n // Phase 2 controls\r\n generatorProjectFacilityDtoPhase2.structuralEngineerCertificate =\r\n generatorProjectFacilityPhase2Form.structuralEngineerCertificate;\r\n generatorProjectFacilityDtoPhase2.isRoofTopBased =\r\n generatorProjectFacilityPhase2Form.isRoofTopBased;\r\n generatorProjectFacilityDtoPhase2.isOwnedByIPP =\r\n generatorProjectFacilityPhase2Form.isOwnedByIPP;\r\n generatorProjectFacilityDtoPhase2.isOfficialLeaseInPlace =\r\n generatorProjectFacilityPhase2Form.isOfficialLeaseInPlace;\r\n generatorProjectFacilityDtoPhase2.leaseStatusComment =\r\n generatorProjectFacilityPhase2Form.leaseStatusComment;\r\n generatorProjectFacilityDtoPhase2.leaseTitleHolderName =\r\n generatorProjectFacilityPhase2Form.leaseTitleHolderName;\r\n generatorProjectFacilityDtoPhase2.rezoningApplied =\r\n generatorProjectFacilityPhase2Form.rezoningApplied;\r\n generatorProjectFacilityDtoPhase2.rezoningApplicationDate =\r\n generatorProjectFacilityPhase2Form.rezoningApplicationDate;\r\n generatorProjectFacilityDtoPhase2.rezoningResultObtained =\r\n generatorProjectFacilityPhase2Form.rezoningResultObtained;\r\n generatorProjectFacilityDtoPhase2.rezoningApplicationResult =\r\n generatorProjectFacilityPhase2Form.rezoningApplicationResult;\r\n generatorProjectFacilityDtoPhase2.numberOfOperationalMonths =\r\n generatorProjectFacilityPhase2Form.numberOfOperationalMonths;\r\n generatorProjectFacilityDtoPhase2.ppaDurationRequested =\r\n generatorProjectFacilityPhase2Form.ppaDurationRequested;\r\n generatorProjectFacilityDtoPhase2.maintenanceDowntimeInWeeks =\r\n generatorProjectFacilityPhase2Form.maintenanceDowntimeInWeeks;\r\n generatorProjectFacilityDtoPhase2.plannedLifeExpectancy =\r\n generatorProjectFacilityPhase2Form.plannedLifeExpectancy;\r\n generatorProjectFacilityDtoPhase2.minimumRequiredPriceWinter =\r\n generatorProjectFacilityPhase2Form.minimumRequiredPriceWinter;\r\n generatorProjectFacilityDtoPhase2.minimumRequiredPriceKwSummer =\r\n generatorProjectFacilityPhase2Form.minimumRequiredPriceKwSummer;\r\n generatorProjectFacilityDtoPhase2.plannedExpansion =\r\n generatorProjectFacilityPhase2Form.plannedExpansion;\r\n generatorProjectFacilityDtoPhase2.plannedCommissioningDate =\r\n generatorProjectFacilityPhase2Form.plannedCommissioningDate;\r\n generatorProjectFacilityDtoPhase2.expectedExtraCapacity =\r\n generatorProjectFacilityPhase2Form.expectedExtraCapacity;\r\n generatorProjectFacilityDtoPhase2.hasExistingNERSALicence =\r\n generatorProjectFacilityPhase2Form.hasExistingNERSALicence;\r\n generatorProjectFacilityDtoPhase2.nersaGenerationLicence =\r\n generatorProjectFacilityPhase2Form.nersaGenerationLicence;\r\n generatorProjectFacilityDtoPhase2.noNERSAGenerationLicenceProvidedReason = isNullOrUndefined(\r\n generatorProjectFacilityPhase2Form.noNERSAGenerationLicenceProvidedReason\r\n )\r\n ? null\r\n : generatorProjectFacilityPhase2Form\r\n .noNERSAGenerationLicenceProvidedReason.value;\r\n generatorProjectFacilityDtoPhase2.isIRPRequestSubmitted =\r\n generatorProjectFacilityPhase2Form.isIRPRequestSubmitted;\r\n generatorProjectFacilityDtoPhase2.deviationApprovalObtained =\r\n generatorProjectFacilityPhase2Form.deviationApprovalObtained;\r\n generatorProjectFacilityDtoPhase2.deviationApproval =\r\n generatorProjectFacilityPhase2Form.deviationApproval;\r\n generatorProjectFacilityDtoPhase2.noDeviationApprovalObtainedReason =\r\n generatorProjectFacilityPhase2Form.noDeviationApprovalObtainedReason;\r\n // Phase 2 controls for existing\r\n if (\r\n !isNullOrUndefined(\r\n generatorProjectFacilityPhase2Form.existingFacility\r\n )\r\n ) {\r\n generatorProjectFacilityDtoPhase2.existingFacility = new ExistingFacility(\r\n generatorProjectFacilityPhase2Form.existingFacility.isWebEnabledMetersInstalled,\r\n generatorProjectFacilityPhase2Form.existingFacility.webMeterInstallationDate,\r\n generatorProjectFacilityPhase2Form.existingFacility.webMeterMakeAndModel,\r\n generatorProjectFacilityPhase2Form.existingFacility.meteringCertificate,\r\n generatorProjectFacilityPhase2Form.existingFacility.exportGenerationCapacity,\r\n generatorProjectFacilityPhase2Form.existingFacility.generationHistory,\r\n generatorProjectFacilityPhase2Form.existingFacility.connectionUseOfSystemsDocument,\r\n generatorProjectFacilityPhase2Form.existingFacility.existingOffTaker,\r\n generatorProjectFacilityPhase2Form.existingFacility.isCheckMetersInstalled,\r\n generatorProjectFacilityPhase2Form.existingFacility.expiryDateOfExistingPPA\r\n );\r\n }\r\n // Phase 2 controls for new\r\n if (\r\n !isNullOrUndefined(generatorProjectFacilityPhase2Form.newFacility)\r\n ) {\r\n generatorProjectFacilityDtoPhase2.newFacility = new NewFacility(\r\n generatorProjectFacilityPhase2Form.newFacility.plannedGeneration,\r\n generatorProjectFacilityPhase2Form.newFacility.electricityAndMeterDeptsNotified,\r\n generatorProjectFacilityPhase2Form.newFacility.plannedStartDate,\r\n generatorProjectFacilityPhase2Form.newFacility.projectProgressStatus,\r\n generatorProjectFacilityPhase2Form.newFacility.constructionStartDate,\r\n generatorProjectFacilityPhase2Form.newFacility.eiaCompletedLookupId,\r\n generatorProjectFacilityPhase2Form.newFacility.eiaDocumentProvided,\r\n generatorProjectFacilityPhase2Form.newFacility.eiaDocument,\r\n generatorProjectFacilityPhase2Form.newFacility.expectedDateOfEIA,\r\n generatorProjectFacilityPhase2Form.newFacility.rodIssued,\r\n generatorProjectFacilityPhase2Form.newFacility.rodDocument,\r\n generatorProjectFacilityPhase2Form.newFacility.noRODDocumentProvidedReason,\r\n generatorProjectFacilityPhase2Form.newFacility.acsaPermitRequiredLookupId,\r\n generatorProjectFacilityPhase2Form.newFacility.acsaDocumentProvided,\r\n generatorProjectFacilityPhase2Form.newFacility.acsaDocument,\r\n generatorProjectFacilityPhase2Form.newFacility.noACSADocumentProvidedReason,\r\n generatorProjectFacilityPhase2Form.newFacility.geotechnicalStudyRequiredLookupId,\r\n generatorProjectFacilityPhase2Form.newFacility.geotechnicalStudyApprovedLookupId,\r\n generatorProjectFacilityPhase2Form.newFacility.geotechnicalDocumentProvided,\r\n generatorProjectFacilityPhase2Form.newFacility.geotechnicalDocument,\r\n generatorProjectFacilityPhase2Form.newFacility.noGeotechnicalDocumentProvidedReason,\r\n generatorProjectFacilityPhase2Form.newFacility.gridConnectionApplicationMade,\r\n generatorProjectFacilityPhase2Form.newFacility.dateOfConnectionApplication,\r\n generatorProjectFacilityPhase2Form.newFacility.plannedDateOfConnectionApplication,\r\n generatorProjectFacilityPhase2Form.newFacility.expectedDateOfGridConnection,\r\n generatorProjectFacilityPhase2Form.newFacility.preferredDebtProvider,\r\n generatorProjectFacilityPhase2Form.newFacility.targetDebtEquityRatio,\r\n generatorProjectFacilityPhase2Form.newFacility.equityFundingInPlace,\r\n generatorProjectFacilityPhase2Form.newFacility.financialPlan,\r\n generatorProjectFacilityPhase2Form.newFacility.projectSubmittedIntoReippp,\r\n generatorProjectFacilityPhase2Form.newFacility.roundOfReippp,\r\n generatorProjectFacilityPhase2Form.newFacility.nearestSubstationName,\r\n generatorProjectFacilityPhase2Form.newFacility.loadCapacityOfSubstation,\r\n generatorProjectFacilityPhase2Form.newFacility.budgetConnectionCostReceived,\r\n generatorProjectFacilityPhase2Form.newFacility.budgetConnectionUpgradeCost,\r\n generatorProjectFacilityPhase2Form.newFacility.connectionAndUseOfSystemsAgreementInPlace\r\n );\r\n }\r\n return this.httpClient.post(\r\n API_URL + 'generatorApplication/SaveGeneratorProjectFacilityPhase2',\r\n generatorProjectFacilityDtoPhase2\r\n );\r\n }\r\n}\r\n","import { GenerationData } from './generation-data.model';\r\nimport { Document } from '../../document.model';\r\n\r\nexport class ExistingFacility {\r\n constructor(\r\n public isWebEnabledMetersInstalled: boolean,\r\n public webMeterInstallationDate: Date,\r\n public webMeterMakeAndModel: string,\r\n public meteringCertificate: Document,\r\n public exportGenerationCapacity: number,\r\n public generationHistory: GenerationData,\r\n public connectionUseOfSystemsDocument: Document,\r\n public existingOffTaker: string,\r\n public isCheckMetersInstalled: boolean,\r\n public expiryDateOfExistingPPA: Date\r\n ) {}\r\n}\r\n","import { GenerationData } from './generation-data.model';\r\nimport { Document } from '../../document.model';\r\n\r\nexport class NewFacility {\r\n constructor(\r\n public plannedGeneration: GenerationData,\r\n public electricityAndMeterDeptsNotified: boolean,\r\n public plannedStartDate: Date,\r\n public projectProgressStatus: string,\r\n public constructionStartDate: Date,\r\n public eiaCompletedLookupId: number,\r\n public eiaDocumentProvided: boolean,\r\n public eiaDocument: Document,\r\n public expectedDateOfEIA: Date,\r\n public rodIssued: boolean,\r\n public rodDocument: Document,\r\n public noRODDocumentProvidedReason: string,\r\n public acsaPermitRequiredLookupId: number,\r\n public acsaDocumentProvided: boolean,\r\n public acsaDocument: Document,\r\n public noACSADocumentProvidedReason: string,\r\n public geotechnicalStudyRequiredLookupId: number,\r\n public geotechnicalStudyApprovedLookupId: number,\r\n public geotechnicalDocumentProvided: boolean,\r\n public geotechnicalDocument: Document,\r\n public noGeotechnicalDocumentProvidedReason: string,\r\n public gridConnectionApplicationMade: boolean,\r\n public dateOfConnectionApplication: Date,\r\n public plannedDateOfConnectionApplication: Date,\r\n public expectedDateOfGridConnection: Date,\r\n public preferredDebtProvider: string,\r\n public targetDebtEquityRatio: number,\r\n public equityFundingInPlace: boolean,\r\n public financialPlan: Document,\r\n public projectSubmittedIntoReippp: boolean,\r\n public roundOfReippp: string,\r\n public nearestSubstationName: string,\r\n public loadCapacityOfSubstation: string,\r\n public budgetConnectionCostReceived: string,\r\n public budgetConnectionUpgradeCost: number,\r\n public connectionAndUseOfSystemsAgreementInPlace: string\r\n ) {}\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { AuthenticationService } from '../../authentication/service/authentication.service';\r\nimport { Router } from '@angular/router';\r\nimport { GeneratorApplicationService } from '../application/generator-application/generator-application.service';\r\nimport { GeneratorApplication } from '../../model/application/generator-application/generator-application.model';\r\nimport { CommonService } from '../../common/common-service';\r\n\r\n@Component({\r\n selector: 'home',\r\n templateUrl: './home.component.html',\r\n styleUrls: ['./home.component.scss'],\r\n})\r\nexport class HomeComponent implements OnInit {\r\n public errorMessage = '';\r\n public showDashboard = false;\r\n\r\n constructor(\r\n private authService: AuthenticationService,\r\n private genAppService: GeneratorApplicationService,\r\n private router: Router,\r\n public commonService: CommonService\r\n ) {}\r\n\r\n public ngOnInit(): void {\r\n if (\r\n this.authService.isRole(\r\n 'Administrator,Operations Manager,Manager,Operations Administrator,Financial Executive'\r\n )\r\n ) {\r\n this.showDashboard = true;\r\n } else if (this.authService.isOnlySingleRole('GeneratorApplication')) {\r\n this.showDashboard = false;\r\n this.genAppService.getGeneratorApplicationOnly().subscribe(\r\n (genApp: GeneratorApplication) => {\r\n if (\r\n !genApp ||\r\n !genApp.generatorCompany ||\r\n !genApp.generatorCompany ||\r\n !genApp.generatorCompany.generatorCompanyId\r\n ) {\r\n this.router.navigate([\r\n '/generators/application/holding-company',\r\n ]);\r\n }\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n } else if (this.authService.isOnlySingleRole('ConsumerApplication')) {\r\n this.showDashboard = false;\r\n this.router.navigate(['consumers/application']);\r\n } else if (\r\n this.authService.isRole(\r\n 'Legal,SalesRep,Sales Manager,Financial Admin'\r\n )\r\n ) {\r\n this.showDashboard = false;\r\n }\r\n }\r\n}\r\n","import { Component, ViewEncapsulation } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'allocation',\r\n templateUrl: './allocation.component.html',\r\n styleUrls: ['./allocation.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class AllocationComponent {}\r\n","export class AllocationWarningAccordion {\r\n public allocationWarningType: string;\r\n public warnings: string[];\r\n constructor(allocationWarningType: string, warnings: string[]) {\r\n this.allocationWarningType = allocationWarningType;\r\n this.warnings = warnings;\r\n }\r\n}\r\n","export class AllocationSendWarning {\r\n constructor(\r\n public allocationSendWarningType: string,\r\n public warnings: string[]\r\n ) {}\r\n}\r\n","export class AllocationErrorAccordion {\r\n public allocationErrorType: string;\r\n public errors: string[];\r\n constructor(allocationErrorType: string, errors: string[]) {\r\n this.allocationErrorType = allocationErrorType;\r\n this.errors = errors;\r\n }\r\n}\r\n","import { map } from 'rxjs/operators';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { HttpClient, HttpResponse } from '@angular/common/http';\r\nimport { Page } from '../../../model/page.model';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { AllocationWarningAccordion } from '../../../model/allocation/allocation-warning-accordion.model';\r\nimport { AllocationSendWarning } from '../../../model/allocation/allocation-send-warning.model';\r\nimport { AllocationErrorAccordion } from '../../../model/allocation/allocation-error-accordion.model';\r\nimport { AppModule } from 'app/app.module';\r\n\r\n@Injectable()\r\nexport class AllocationRunService {\r\n constructor(private http: HttpClient) {}\r\n\r\n public runAllocation(\r\n distributorId: number,\r\n period: string,\r\n importData: boolean,\r\n prepaid: string,\r\n algoVersionId: number,\r\n note: string,\r\n weekdayPrepaidPercentage: number,\r\n weekendPrepaidPercentage: number,\r\n isdemo: boolean\r\n ): Observable {\r\n return this.http.post(API_URL + 'allocation/StartAllocationRun', {\r\n distributorId,\r\n period,\r\n importData,\r\n prepaid,\r\n algoVersionId,\r\n note,\r\n weekdayPrepaidPercentage,\r\n weekendPrepaidPercentage,\r\n isdemo,\r\n });\r\n }\r\n\r\n public getIncompleteRuns(): Observable {\r\n return this.http.get(\r\n API_URL + 'AllocationRun/GetDemoIncompleteAllocationRuns'\r\n );\r\n }\r\n\r\n public getAllocationRunsStatuses(\r\n AllocationRunsIds: number[]\r\n ): Observable {\r\n return this.http.post(\r\n API_URL + 'AllocationRun/GetAllocationRunStatuses',\r\n AllocationRunsIds\r\n );\r\n }\r\n\r\n public getAllocationHistory(\r\n searchString: string,\r\n page: Page,\r\n sortProp: any,\r\n activeTab: string\r\n ): Observable {\r\n if (isNullOrUndefined(sortProp.direction)) {\r\n sortProp.direction = '';\r\n }\r\n if (isNullOrUndefined(sortProp.property)) {\r\n sortProp.property = '';\r\n }\r\n return this.http.get(\r\n API_URL +\r\n 'Allocation/GetAllocationHistory?searchString=' +\r\n searchString +\r\n '&offset=' +\r\n page.offset +\r\n '&pageSize=' +\r\n page.size +\r\n '&sortDirection=' +\r\n sortProp.direction +\r\n '&sortProperty=' +\r\n sortProp.property +\r\n '&activeTab=' +\r\n activeTab\r\n );\r\n }\r\n\r\n public getGeneratorGenerationSummary(\r\n allocationRunId: number,\r\n searchString: string,\r\n page: Page,\r\n sortProp: any\r\n ): Observable {\r\n if (isNullOrUndefined(sortProp.direction)) {\r\n sortProp.direction = '';\r\n }\r\n if (isNullOrUndefined(sortProp.property)) {\r\n sortProp.property = '';\r\n }\r\n return this.http.get(\r\n API_URL +\r\n 'Allocation/GetGenerationSummary?allocationRunId=' +\r\n allocationRunId +\r\n '&searchString=' +\r\n searchString +\r\n '&offset=' +\r\n page.offset +\r\n '&pageSize=' +\r\n page.size +\r\n '&sortDirection=' +\r\n sortProp.direction +\r\n '&sortProperty=' +\r\n sortProp.property\r\n );\r\n }\r\n\r\n public sendAllocationDataToPTSi(allocationRunId: number): Observable {\r\n return this.http.get(\r\n API_URL +\r\n 'allocation/SendAllocation?allocationRunId=' +\r\n allocationRunId\r\n );\r\n }\r\n\r\n public getAllocationVersion(): Observable {\r\n return this.http.get(API_URL + 'allocation/GetAlgoVersions');\r\n }\r\n\r\n public getAllocationWarnings(\r\n allocationRunId: number\r\n ): Observable {\r\n return this.http\r\n .get(\r\n API_URL +\r\n 'allocation/GetWarnings?allocationRunId=' +\r\n allocationRunId\r\n )\r\n .pipe(\r\n map((response: HttpResponse) => {\r\n const allocationWarnings = [];\r\n for (const prop in response) {\r\n if (response) {\r\n allocationWarnings.push(\r\n new AllocationWarningAccordion(\r\n prop,\r\n response[prop]\r\n )\r\n );\r\n }\r\n }\r\n return allocationWarnings;\r\n })\r\n );\r\n }\r\n\r\n public getAllocationSendWarnings(\r\n allocationRunId: number\r\n ): Observable {\r\n return this.http\r\n .get(\r\n API_URL +\r\n 'allocation/GetSendWarnings?allocationRunId=' +\r\n allocationRunId\r\n )\r\n .pipe(\r\n map((response: HttpResponse) => {\r\n const allocationSendWarnings = [];\r\n for (const prop in response) {\r\n if (response) {\r\n allocationSendWarnings.push(\r\n new AllocationSendWarning(prop, response[prop])\r\n );\r\n }\r\n }\r\n return allocationSendWarnings;\r\n })\r\n );\r\n }\r\n\r\n public getAllocationErrors(\r\n allocationRunId: number\r\n ): Observable {\r\n return this.http\r\n .get(\r\n API_URL +\r\n 'allocation/GetErrors?allocationRunId=' +\r\n allocationRunId\r\n )\r\n .pipe(\r\n map((response: HttpResponse) => {\r\n const allocationErrors = [];\r\n for (const prop in response) {\r\n if (response) {\r\n allocationErrors.push(\r\n new AllocationErrorAccordion(\r\n prop,\r\n response[prop]\r\n )\r\n );\r\n }\r\n }\r\n return allocationErrors;\r\n })\r\n );\r\n }\r\n\r\n public getAllocationSummary(\r\n allocationRunId: number,\r\n searchString: string,\r\n page: Page,\r\n sortProp: any\r\n ): Observable {\r\n if (!allocationRunId) {\r\n allocationRunId = 0;\r\n }\r\n if (isNullOrUndefined(sortProp.direction)) {\r\n sortProp.direction = '';\r\n }\r\n if (isNullOrUndefined(sortProp.property)) {\r\n sortProp.property = '';\r\n }\r\n return this.http.get(\r\n API_URL +\r\n 'allocation/GetSummary?allocationRunId=' +\r\n allocationRunId +\r\n '&searchString=' +\r\n searchString +\r\n '&offset=' +\r\n page.offset +\r\n '&pageSize=' +\r\n page.size +\r\n '&sortDirection=' +\r\n sortProp.direction +\r\n '&sortProperty=' +\r\n sortProp.property\r\n );\r\n }\r\n public getExcelExport(allocationRunId: number): Observable {\r\n return this.http\r\n .get(API_URL + 'export/Excel?allocationRunId=' + allocationRunId, {\r\n responseType: 'blob',\r\n })\r\n .pipe(\r\n map((response) => {\r\n return response;\r\n })\r\n );\r\n }\r\n public getExcelExportForecast(allocationRunId: number): Observable {\r\n return this.http\r\n .get(\r\n API_URL +\r\n 'export/ExcelForecasting?allocationRunId=' +\r\n allocationRunId,\r\n { responseType: 'blob' }\r\n )\r\n .pipe(\r\n map((response) => {\r\n return response;\r\n })\r\n );\r\n }\r\n public getExcelSnapshotExport(allocationRunId: number): Observable {\r\n return this.http\r\n .get(\r\n API_URL +\r\n 'export/SnapshotExcel?allocationRunId=' +\r\n allocationRunId,\r\n { responseType: 'blob' }\r\n )\r\n .pipe(\r\n map((response) => {\r\n return response;\r\n })\r\n );\r\n }\r\n public getExcelSummaryExport(allocationRunId: number): Observable {\r\n return this.http\r\n .get(\r\n API_URL +\r\n 'export/SummaryExport?allocationRunId=' +\r\n allocationRunId,\r\n { responseType: 'blob' }\r\n )\r\n .pipe(\r\n map((response) => {\r\n return response;\r\n })\r\n );\r\n }\r\n public getRecs(allocationRunId: number): Observable {\r\n return this.http.get(\r\n API_URL +\r\n 'recs/GetLatestRecsCounter?allocationRunId=' +\r\n allocationRunId\r\n );\r\n }\r\n\r\n public getRecsPage(\r\n allocationRunId: number,\r\n searchString: string,\r\n page: Page,\r\n sortProp: any\r\n ): Observable {\r\n if (isNullOrUndefined(sortProp.direction)) {\r\n sortProp.direction = '';\r\n }\r\n if (isNullOrUndefined(sortProp.property)) {\r\n sortProp.property = '';\r\n }\r\n return this.http.get(\r\n API_URL +\r\n 'Recs/GetPage?allocationRunId=' +\r\n allocationRunId +\r\n '&searchString=' +\r\n searchString +\r\n '&offset=' +\r\n page.offset +\r\n '&pageSize=' +\r\n page.size +\r\n '&sortDirection=' +\r\n sortProp.direction +\r\n '&sortProperty=' +\r\n sortProp.property\r\n );\r\n }\r\n\r\n public runRecsAllocation(allocationRunId: number): Observable {\r\n return this.http.get(\r\n API_URL +\r\n 'Recs/RunRecsAllocation?allocationRunId=' +\r\n allocationRunId\r\n );\r\n }\r\n\r\n public GetRecsStatus(allocationRunId: number): Observable {\r\n return this.http.get(\r\n API_URL +\r\n 'AllocationRun/GetAllocationRecStatus?allocationRunId=' +\r\n allocationRunId\r\n );\r\n }\r\n\r\n public getAllocationRunSummary(allocationRunId: number): Observable {\r\n return this.http.get(\r\n API_URL +\r\n 'AllocationRun/GetAllocationRunSummary?allocationRunId=' +\r\n allocationRunId\r\n );\r\n }\r\n\r\n public getAllocationRunPowerSummary(\r\n allocationRunId: number\r\n ): Observable {\r\n return this.http.get(\r\n API_URL +\r\n 'AllocationRun/GetAllocationRunPowerSummary?allocationRunId=' +\r\n allocationRunId\r\n );\r\n }\r\n\r\n public getAllocationRunPowerPerTechnologySummary(\r\n allocationRunId: number\r\n ): Observable {\r\n return this.http.get(\r\n API_URL +\r\n 'AllocationRun/GetAllocationRunPowerPerTechnologySummary?allocationRunId=' +\r\n allocationRunId\r\n );\r\n }\r\n\r\n public getAllocationRunPowerPerTariffSummary(\r\n allocationRunId: number\r\n ): Observable {\r\n return this.http.get(\r\n API_URL +\r\n 'AllocationRun/GetAllocationRunPowerPerTariffSummary?allocationRunId=' +\r\n allocationRunId\r\n );\r\n }\r\n\r\n public getAllocationRunRevenuePerTariffSummary(\r\n allocationRunId: number\r\n ): Observable {\r\n return this.http.get(\r\n API_URL +\r\n 'AllocationRun/GetAllocationRunRevenuePerTariffSummary?allocationRunId=' +\r\n allocationRunId\r\n );\r\n }\r\n\r\n public getAllocationRunTariffSaleRatesSummary(\r\n allocationRunId: number\r\n ): Observable {\r\n return this.http.get(\r\n API_URL +\r\n 'AllocationRun/GetAllocationRunTariffSaleRatesSummary?allocationRunId=' +\r\n allocationRunId\r\n );\r\n }\r\n\r\n public getAllocationRunRevenuePerEnergyBracketSummary(\r\n allocationRunId: number\r\n ): Observable {\r\n return this.http.get(\r\n API_URL +\r\n 'AllocationRun/GetAllocationRunRevenuePerEnergyBracketSummary?allocationRunId=' +\r\n allocationRunId\r\n );\r\n }\r\n\r\n public getAllocationRunWarningSummary(\r\n allocationRunId: number\r\n ): Observable {\r\n return this.http.get(\r\n API_URL +\r\n 'AllocationRun/GetAllocationRunWarningSummary?allocationRunId=' +\r\n allocationRunId\r\n );\r\n }\r\n\r\n public getAllocationRunErrorSummary(\r\n allocationRunId: number\r\n ): Observable {\r\n return this.http.get(\r\n API_URL +\r\n 'AllocationRun/GetAllocationRunErrorSummary?allocationRunId=' +\r\n allocationRunId\r\n );\r\n }\r\n\r\n public getAllocationRun(allocationRunId: number): Observable {\r\n return this.http.get(\r\n API_URL +\r\n 'AllocationRun/GetAllocationRun?allocationRunId=' +\r\n allocationRunId\r\n );\r\n }\r\n\r\n public getConsumerInvoice(\r\n allocationRunId: number,\r\n consumerCompanyPremisesId: number,\r\n previewInd: boolean\r\n ): Observable {\r\n return this.http\r\n .get(\r\n API_URL +\r\n 'AllocationRun/DownloadConsumerInvoice' +\r\n '?allocationRunId=' +\r\n allocationRunId +\r\n '&consumerCompanyPremisesId=' +\r\n consumerCompanyPremisesId +\r\n '&previewInd=' +\r\n previewInd,\r\n { responseType: 'blob' }\r\n )\r\n .pipe(map((response) => response));\r\n }\r\n\r\n public getConsumerProformaInvoice(\r\n allocationRunId: number,\r\n consumerCompanyPremisesId: number\r\n ): Observable {\r\n return this.http\r\n .get(\r\n API_URL +\r\n 'AllocationRun/DownloadConsumerProformaInvoice' +\r\n '?allocationRunId=' +\r\n allocationRunId +\r\n '&consumerCompanyPremisesId=' +\r\n consumerCompanyPremisesId,\r\n { responseType: 'blob' }\r\n )\r\n .pipe(map((response) => response));\r\n }\r\n\r\n public getConsumerStatement(\r\n allocationRunId: number,\r\n consumerCompanyPremisesId: number\r\n ): Observable {\r\n return this.http\r\n .get(\r\n API_URL +\r\n 'AllocationRun/DownloadConsumerStatement' +\r\n '?allocationRunId=' +\r\n allocationRunId +\r\n '&consumerCompanyPremisesId=' +\r\n consumerCompanyPremisesId,\r\n { responseType: 'blob' }\r\n )\r\n .pipe(map((response) => response));\r\n }\r\n\r\n public getAllocationPrepaidRevenue(\r\n allocationRunId: number\r\n ): Observable {\r\n return this.http.get(\r\n API_URL +\r\n 'AllocationRun/GetAllocationPrepaidRevenue?allocationRunId=' +\r\n allocationRunId\r\n );\r\n }\r\n\r\n public updateAllocationPrepaidRevenue(\r\n allocationPrepaidRevenueList: any\r\n ): Observable {\r\n return this.http.post(\r\n API_URL + 'AllocationRun/UpdateAllocationPrepaidRevenueList?',\r\n allocationPrepaidRevenueList\r\n );\r\n }\r\n\r\n public sendConsumerInvoiceEmails(allocationRunId: number): Observable {\r\n return this.http.get(\r\n API_URL +\r\n 'allocationRun/SendConsumerInvoiceEmails?allocationRunId=' +\r\n allocationRunId\r\n );\r\n }\r\n\r\n public resendConsumerInvoiceEmails(\r\n allocationRunId: number\r\n ): Observable {\r\n return this.http.get(\r\n API_URL +\r\n 'allocationRun/ResendConsumerInvoiceEmails?allocationRunId=' +\r\n allocationRunId\r\n );\r\n }\r\n\r\n public getConsumerInvoiceEmailLogs(\r\n allocationRunId: number\r\n ): Observable {\r\n return this.http.get(\r\n API_URL +\r\n 'allocationRun/GetConsumerInvoiceEmailLogs?allocationRunId=' +\r\n allocationRunId\r\n );\r\n }\r\n\r\n public deleteAllocationRun(allocationRunId: number): Observable {\r\n return this.http.delete(\r\n API_URL +\r\n 'allocationRun/DeleteAllocationRun?allocationRunId=' +\r\n allocationRunId\r\n );\r\n }\r\n\r\n public markAllocationRunForDeletion(\r\n allocationRunId: number\r\n ): Observable {\r\n return this.http.get(\r\n API_URL +\r\n 'allocationRun/MarkAllocationRunForDeletion?allocationRunId=' +\r\n allocationRunId\r\n );\r\n }\r\n\r\n public getPurchaseAndSalesRate(allocationRunId: number): Observable {\r\n return this.http.get(\r\n API_URL +\r\n 'allocationRun/GetPurchaseAndSalesRate?allocationRunId=' +\r\n allocationRunId\r\n );\r\n }\r\n\r\n public updateAllocationRunConsumer(\r\n allocationRunId: number,\r\n allocationConsumerId: number,\r\n poNumber: number,\r\n sendInvoice: boolean,\r\n paid: boolean,\r\n amountPaid: number\r\n ): Observable {\r\n return this.http.post(\r\n API_URL + 'allocationRun/UpdateAllocationRunConsumer',\r\n {\r\n allocationRunId,\r\n AllocationConsumerId: allocationConsumerId,\r\n poNumber,\r\n sendInvoice,\r\n paid,\r\n amountPaid,\r\n }\r\n );\r\n }\r\n\r\n public SetAllocationRunConsumerStatementsToPaidIfNotPaid(\r\n allocationRunId: number\r\n ): Observable {\r\n return this.http.post(\r\n API_URL +\r\n 'allocationRun/SetAllocationRunConsumerStatementsToPaidIfNotPaid',\r\n { allocationRunId }\r\n );\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable()\r\nexport class DateConverterService {\r\n public toApiDateTime(date: Date): string {\r\n const day = date.getDate();\r\n const month = date.getMonth() + 1;\r\n const year = date.getFullYear();\r\n const hour = date.getHours();\r\n const minute = date.getMinutes();\r\n const second = date.getSeconds();\r\n return (\r\n year +\r\n '-' +\r\n month +\r\n '-' +\r\n day +\r\n ' ' +\r\n hour +\r\n ':' +\r\n minute +\r\n ':' +\r\n second\r\n );\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { AuthenticationService } from '../authentication/service/authentication.service';\r\n\r\n@Injectable()\r\nexport class AuthorisationService {\r\n constructor(private authService: AuthenticationService) {}\r\n public isGeneratorsAndConsumersReadOnly() {\r\n return !this.authService.isRole(\r\n 'Administrator,Operations Manager,Manager,Operations Administrator,ConsumerApplication'\r\n );\r\n }\r\n public isInvoiceBatchListsReadOnly() {\r\n return !this.authService.isRole('Administrator,Financial Executive');\r\n }\r\n\r\n public isAllocationsReadOnly() {\r\n return !this.authService.isRole(\r\n 'Administrator,Operations Manager,Financial Executive'\r\n );\r\n }\r\n\r\n public isDistributorsReadOnly() {\r\n return !this.authService.isRole(\r\n 'Administrator,Operations Manager,Manager,Operations Administrator,Distributor Officer'\r\n );\r\n }\r\n\r\n public shouldHideRevenueReport() {\r\n return this.authService.isRole('Sales Manager');\r\n }\r\n\r\n public isConsumerCompanyAndPremisesSensitiveFieldsEditable() {\r\n return this.authService.isRole(\r\n 'Operations Manager,Manager,Administrator'\r\n );\r\n }\r\n\r\n public isIsRecsRegisteredEditable() {\r\n return this.authService.isRole('Operations Manager,Manager');\r\n }\r\n\r\n public isForecastParametersEditable() {\r\n return this.authService.isRole('Administrator,Operations Manager');\r\n }\r\n\r\n public isAllocationsFinalizeReadOnly() {\r\n return !this.authService.isRole('Administrator,Operations Manager');\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AllocationRunState {\r\n public activeTab: string = 'inter-run';\r\n private today = new Date();\r\n private importPrepaidEnabled = true;\r\n private pageoffset: number = 0;\r\n private searchString: string = '';\r\n\r\n private allocationForm = new FormGroup({\r\n distributorName: new FormControl('', [Validators.required]),\r\n distributorId: new FormControl(null),\r\n year: new FormControl(this.today.getFullYear(), [\r\n Validators.required,\r\n Validators.min(2000),\r\n Validators.max(this.today.getFullYear()),\r\n ]),\r\n monthLookupId: new FormControl(null, [Validators.required]),\r\n algoVersionId: new FormControl(null, [Validators.required]),\r\n weekdayPrepaidPercentage: new FormControl(100),\r\n weekendPrepaidPercentage: new FormControl(100),\r\n importData: new FormControl(false),\r\n isdemo: new FormControl(false),\r\n setPrepaidValue: new FormControl(false),\r\n prepaid: new FormControl(),\r\n note: new FormControl(),\r\n\r\n useOriginalAlgo: new FormControl(false),\r\n });\r\n\r\n public setState(\r\n newState: any,\r\n importPrepaidStatus: boolean,\r\n pageoffset: number,\r\n searchString: string,\r\n activeTab: string\r\n ) {\r\n this.importPrepaidEnabled = importPrepaidStatus;\r\n this.allocationForm.patchValue(newState);\r\n this.searchString = searchString;\r\n this.pageoffset = pageoffset;\r\n this.activeTab = activeTab;\r\n }\r\n\r\n public getState(): FormGroup {\r\n return this.allocationForm.value;\r\n }\r\n\r\n public getImportPrepEnabled(): boolean {\r\n return this.importPrepaidEnabled;\r\n }\r\n\r\n public getsearchString(): string {\r\n return this.searchString;\r\n }\r\n\r\n public getpageoffset(): number {\r\n return this.pageoffset;\r\n }\r\n\r\n public getactiveTab() {\r\n return this.activeTab;\r\n }\r\n}\r\n","import { debounceTime } from 'rxjs/operators';\r\nimport { interval } from 'rxjs';\r\nimport {\r\n Component,\r\n OnDestroy,\r\n OnInit,\r\n ElementRef,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { AllocationRunService } from './allocation-run.service';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { Subscription, BehaviorSubject } from 'rxjs';\r\nimport { Page } from '../../../model/page.model';\r\nimport { DistributorService } from '../../distributor/distributor.service';\r\nimport { DateConverterService } from '../../../widget/date-converter/date-converter.service';\r\nimport { EntityLookup } from '../../../model/entity-lookup.model';\r\nimport { CommonService } from '../../../common/common-service';\r\nimport { ComponentTriggersService } from '../../../common/component-triggers.service';\r\n\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { AuthorisationService } from '../../../authorisation-service/authorisation.service';\r\nimport { BsModalService } from 'ngx-bootstrap/modal';\r\nimport { BsModalRef } from 'ngx-bootstrap';\r\nimport { AllocationRunStatus } from '../../../model/allocation-run/allocation-run-status';\r\nimport { AllocationRunState } from './allocation-run-state.service';\r\n@Component({\r\n selector: 'allocation-run',\r\n templateUrl: './allocation-run.component.html',\r\n styleUrls: ['../../form.styles.scss', './allocation-run.component.scss'],\r\n})\r\nexport class AllocationRunComponent implements OnInit, OnDestroy {\r\n public modalRef: BsModalRef;\r\n @ViewChild('template')\r\n public template: ElementRef;\r\n\r\n public distributors = [];\r\n public months: EntityLookup[];\r\n public versions: any[];\r\n public allocationForm: FormGroup;\r\n public errorMessage = '';\r\n public runningAllocation = false;\r\n public sendingAllocation = false;\r\n public columnHeaders: any[];\r\n public allocationHistory: any[];\r\n public historyPage: Page;\r\n public historyError = '';\r\n public setPrepaidValue = false;\r\n public loadingRunCriteria = false;\r\n public isReadOnlyMode = true;\r\n public isAllocationsFinalizeReadOnly: boolean = true;\r\n public activeTab: string = 'inter-run';\r\n\r\n private queryParamsSubscription: Subscription;\r\n private sortProp = {};\r\n private searchForm: FormGroup;\r\n private allocationNote: any;\r\n private weekdayPrepaidPercentage: number;\r\n private weekendPrepaidPercentage: number;\r\n private activeTabSubject: BehaviorSubject = new BehaviorSubject<\r\n string\r\n >(null);\r\n private sortMap: Map;\r\n private incompleteRuns: number[];\r\n private QueryincompleteRunsSub: Subscription;\r\n private intervalsource = interval(7000);\r\n private pageoffset: number = 0;\r\n constructor(\r\n private router: Router,\r\n private modalService: BsModalService,\r\n private allocationRunService: AllocationRunService,\r\n private sanitizer: DomSanitizer,\r\n private route: ActivatedRoute,\r\n private distributorService: DistributorService,\r\n private dateConverterService: DateConverterService,\r\n private commonService: CommonService,\r\n private authorisationService: AuthorisationService,\r\n private componentTriggerService: ComponentTriggersService,\r\n private toaster: ToastrService,\r\n private allocationState: AllocationRunState\r\n ) {\r\n this.columnHeaders = [\r\n { name: 'Distributor' },\r\n { name: 'Period' },\r\n { name: 'CreatedDateTime' },\r\n { name: 'TotalGeneration' },\r\n { name: 'TotalPrepaid' },\r\n { name: 'TotalConsumption' },\r\n { name: 'TotalAllocation' },\r\n { name: 'TotalCost' },\r\n { name: 'Delete' },\r\n { name: 'SendingId' },\r\n { name: 'ImportStatus' },\r\n { name: 'RunStatus' },\r\n { name: 'Note' },\r\n { name: 'CalculateRecs' },\r\n ];\r\n this.historyPage = new Page();\r\n this.searchForm = new FormGroup({\r\n search: new FormControl(this.allocationState.getsearchString()),\r\n });\r\n this.initSortMap();\r\n }\r\n\r\n public ngOnInit(): void {\r\n this.loadingRunCriteria = true;\r\n const today = new Date();\r\n this.startIncompleteRunsSearch();\r\n this.allocationForm = new FormGroup({\r\n distributorName: new FormControl('', [Validators.required]),\r\n distributorId: new FormControl(null),\r\n year: new FormControl(today.getFullYear(), [\r\n Validators.required,\r\n Validators.min(2000),\r\n Validators.max(today.getFullYear()),\r\n ]),\r\n monthLookupId: new FormControl(null, [Validators.required]),\r\n algoVersionId: new FormControl(null, [Validators.required]),\r\n weekdayPrepaidPercentage: new FormControl(100),\r\n weekendPrepaidPercentage: new FormControl(100),\r\n importData: new FormControl(false),\r\n isdemo: new FormControl(false),\r\n setPrepaidValue: new FormControl(false),\r\n prepaid: new FormControl(),\r\n note: new FormControl(),\r\n\r\n useOriginalAlgo: new FormControl(false),\r\n });\r\n this.allocationForm.setValue(this.allocationState.getState());\r\n this.activeTab = this.allocationState.getactiveTab();\r\n\r\n if (!this.allocationState.getImportPrepEnabled()) {\r\n this.allocationForm.get('importData').disable();\r\n this.allocationForm.get('setPrepaidValue').disable();\r\n }\r\n\r\n this.isReadOnlyMode = this.authorisationService.isAllocationsReadOnly();\r\n this.isAllocationsFinalizeReadOnly = this.authorisationService.isAllocationsFinalizeReadOnly();\r\n if (this.isReadOnlyMode) {\r\n this.allocationForm.disable();\r\n }\r\n this.allocationForm\r\n .get('distributorName')\r\n .valueChanges.pipe(debounceTime(300))\r\n .subscribe(\r\n (searchString) => {\r\n this.fetchDistributors(searchString);\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loadingRunCriteria = false;\r\n }\r\n );\r\n this.queryParamsSubscription = this.route.queryParams.subscribe(\r\n (params) => {\r\n if (params['distributorId']) {\r\n this.allocationForm\r\n .get('distributorId')\r\n .patchValue(+params['distributorId']);\r\n const distributorId = +params['distributorId'];\r\n this.distributorService\r\n .getDistributor(distributorId)\r\n .subscribe(\r\n (distributor) => {\r\n this.allocationForm\r\n .get('distributorName')\r\n .patchValue(distributor.name);\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loadingRunCriteria = false;\r\n }\r\n );\r\n }\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loadingRunCriteria = false;\r\n }\r\n );\r\n this.searchForm\r\n .get('search')\r\n .valueChanges.pipe(debounceTime(300))\r\n .subscribe(\r\n () => {\r\n this.changePage({ offset: 0 });\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n this.commonService.getEntityLookups(['Month']).subscribe(\r\n (response) => {\r\n this.months = response.entityLookupResultList['month'];\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loadingRunCriteria = false;\r\n }\r\n );\r\n this.allocationRunService.getAllocationVersion().subscribe(\r\n (response) => {\r\n this.versions = response;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loadingRunCriteria = false;\r\n }\r\n );\r\n /* this.activeTabSubject.pipe(debounceTime(300)).subscribe(\r\n () => {\r\n this.changePage({ offset: 0 });\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );*/\r\n const adf = this.allocationState.getpageoffset();\r\n this.changePage({ offset: this.allocationState.getpageoffset() });\r\n this.loadingRunCriteria = false;\r\n }\r\n public setPrepaid(): void {\r\n this.setPrepaidValue = !this.setPrepaidValue;\r\n }\r\n public democlick(): void {\r\n if (this.allocationForm.get('isdemo').value === true) {\r\n this.allocationForm.patchValue({\r\n importData: false,\r\n });\r\n this.allocationForm.get('importData').disable();\r\n this.allocationForm.get('setPrepaidValue').disable();\r\n } else {\r\n this.allocationForm.get('importData').enable();\r\n this.allocationForm.get('setPrepaidValue').enable();\r\n }\r\n }\r\n public ngOnDestroy(): void {\r\n if (!isNullOrUndefined(this.queryParamsSubscription)) {\r\n this.queryParamsSubscription.unsubscribe();\r\n }\r\n\r\n if (!isNullOrUndefined(this.QueryincompleteRunsSub)) {\r\n this.QueryincompleteRunsSub.unsubscribe();\r\n }\r\n }\r\n\r\n public fetchDistributors(searchString: string): void {\r\n if (isNullOrUndefined(searchString)) {\r\n searchString = '';\r\n }\r\n this.distributorService\r\n .getAllocationDistributors(searchString)\r\n .subscribe(\r\n (distributors) => {\r\n this.distributors = distributors;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loadingRunCriteria = false;\r\n }\r\n );\r\n }\r\n\r\n public goToParameters(): void {\r\n if (isNullOrUndefined(this.allocationForm.get('distributorId').value)) {\r\n this.errorMessage =\r\n 'Please select a distributor before configuring the parameters';\r\n } else {\r\n this.allocationState.setState(\r\n this.allocationForm.getRawValue(),\r\n this.allocationForm.get('importData').enabled,\r\n this.pageoffset,\r\n this.searchForm.get('search').value,\r\n this.activeTab\r\n );\r\n this.router.navigate([\r\n 'allocation',\r\n this.allocationForm.get('distributorId').value,\r\n this.allocationForm.get('isdemo').value,\r\n 'parameters',\r\n ]);\r\n }\r\n }\r\n\r\n public selectedDistributor($event: any): void {\r\n this.allocationForm\r\n .get('distributorId')\r\n .patchValue($event.item.distributorId);\r\n }\r\n\r\n public startIncompleteRunsSearch() {\r\n this.allocationRunService\r\n .getIncompleteRuns()\r\n .subscribe((values: number[]) => {\r\n if (values.length !== 0) {\r\n this.incompleteRuns = values;\r\n if (!isNullOrUndefined(this.QueryincompleteRunsSub)) {\r\n this.QueryincompleteRunsSub.unsubscribe();\r\n }\r\n this.QueryincompleteRunsSub = this.intervalsource.subscribe(\r\n (val) =>\r\n this.allocationRunService\r\n .getAllocationRunsStatuses(this.incompleteRuns)\r\n .subscribe(\r\n (statuses: AllocationRunStatus[]) => {\r\n statuses.forEach((status) => {\r\n if (\r\n status.runStatus === 'Complete'\r\n ) {\r\n this.toaster.success(\r\n 'Allocation ' +\r\n status.allocationRunId +\r\n ' completed sucessfully'\r\n );\r\n this.incompleteRuns.splice(\r\n this.incompleteRuns.indexOf(\r\n status.allocationRunId\r\n )\r\n );\r\n }\r\n });\r\n if (this.incompleteRuns.length === 0) {\r\n this.QueryincompleteRunsSub.unsubscribe();\r\n }\r\n }\r\n )\r\n );\r\n }\r\n });\r\n }\r\n\r\n public runAllocation(): void {\r\n this.commonService.validateAllFormFields(this.allocationForm);\r\n this.componentTriggerService.triggerValidationMessages.next();\r\n if (this.allocationForm.valid) {\r\n this.runningAllocation = true;\r\n this.errorMessage = '';\r\n const period = new Date(\r\n this.allocationForm.get('year').value,\r\n this.months.find(\r\n (m) =>\r\n m.entityLookupId ===\r\n this.allocationForm.get('monthLookupId').value\r\n ).orderPriority - 1,\r\n 1\r\n );\r\n this.allocationRunService\r\n .runAllocation(\r\n this.allocationForm.get('distributorId').value,\r\n this.dateConverterService.toApiDateTime(period),\r\n this.allocationForm.get('importData').value,\r\n this.allocationForm.get('prepaid').value,\r\n this.allocationForm.get('algoVersionId').value,\r\n this.allocationForm.get('note').value,\r\n this.allocationForm.get('weekdayPrepaidPercentage').value,\r\n this.allocationForm.get('weekendPrepaidPercentage').value,\r\n this.allocationForm.get('isdemo').value\r\n )\r\n .subscribe(\r\n () => {\r\n this.runningAllocation = false;\r\n this.toaster.success(\r\n 'A new allocation run has been queued'\r\n );\r\n this.changePage({ offset: this.historyPage.offset });\r\n\r\n this.startIncompleteRunsSearch();\r\n },\r\n (error) => {\r\n this.runningAllocation = false;\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.toaster.error(this.errorMessage);\r\n }\r\n );\r\n }\r\n }\r\n\r\n public changePage(pageInfo: any): void {\r\n const searchString = this.searchForm.get('search').value;\r\n this.historyPage.offset = pageInfo.offset * this.historyPage.size;\r\n this.pageoffset = pageInfo.offset;\r\n this.allocationRunService\r\n .getAllocationHistory(\r\n searchString,\r\n this.historyPage,\r\n this.sortProp,\r\n this.activeTab\r\n )\r\n .subscribe(\r\n (page) => {\r\n this.historyPage.totalPages = Math.ceil(\r\n page.totalItems / page.size\r\n );\r\n this.historyPage.totalElements = page.totalItems;\r\n this.allocationHistory = page.items;\r\n },\r\n (error) => {\r\n this.historyError = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n }\r\n\r\n public sortColumn(event: any): void {\r\n this.sortProp = {\r\n direction: event.sorts[0].dir,\r\n property: this.sortMap.get(event.sorts[0].prop.toLowerCase()),\r\n };\r\n this.changePage({ offset: 0 });\r\n }\r\n public viewNote(response: any): void {\r\n event.stopPropagation();\r\n this.allocationNote = response;\r\n this.modalRef = this.modalService.show(this.template);\r\n }\r\n\r\n public onSelect(event: any) {\r\n this.allocationState.setState(\r\n this.allocationForm.getRawValue(),\r\n this.allocationForm.get('importData').enabled,\r\n this.pageoffset,\r\n this.searchForm.get('search').value,\r\n this.activeTab\r\n );\r\n this.router.navigate([\r\n 'allocation',\r\n event.selected[0].details,\r\n 'details',\r\n ]);\r\n }\r\n\r\n public onDeleteRun(allocationRunId: number) {\r\n // NOTE: This is for the onSelect method above to not be called as well,\r\n // since ngx-datatable sees the button click as the row being selected.\r\n event.stopPropagation();\r\n if (confirm('Are you sure you want to delete this allocation run')) {\r\n this.toaster.info('Deleting allocation run');\r\n this.allocationRunService\r\n .markAllocationRunForDeletion(allocationRunId)\r\n .subscribe(\r\n () => {\r\n this.changePage({ offset: 0 });\r\n this.allocationRunService\r\n .deleteAllocationRun(allocationRunId)\r\n .subscribe(\r\n () => {\r\n this.toaster.success(\r\n 'Successfully deleted allocation run'\r\n );\r\n this.changePage({ offset: 0 });\r\n },\r\n (error) => {\r\n this.toaster.error(\r\n this.commonService.handleErrorMessage(\r\n error\r\n )\r\n );\r\n }\r\n );\r\n },\r\n (error) => {\r\n this.toaster.error(\r\n this.commonService.handleErrorMessage(error)\r\n );\r\n }\r\n );\r\n }\r\n }\r\n\r\n public setActiveTab(tab: string, event: Event): void {\r\n event.preventDefault();\r\n this.activeTab = tab;\r\n this.changePage({ offset: 0 });\r\n // this.activeTabSubject.next(tab);\r\n }\r\n\r\n private initSortMap(): void {\r\n this.sortMap = new Map();\r\n this.sortMap.set('distributor', 'Distributor.Name');\r\n this.sortMap.set('startdate', 'startDateTime');\r\n this.sortMap.set('createddatetime', 'CreatedDateTime');\r\n this.sortMap.set('totalallocation', 'TotalPowerAllocatedKWh');\r\n this.sortMap.set('totalgeneration', 'TotalPowerGeneratedKWh');\r\n this.sortMap.set('totalconsumption', 'TotalPowerConsumedKWh');\r\n this.sortMap.set('totalcost', 'TotalCostKWh');\r\n this.sortMap.set(\r\n 'importstatus',\r\n 'TradingDataImport == null ? null : (TradingDataImport.BackgroundJobStatus == null ? null : TradingDataImport.BackgroundJobStatus.Value)'\r\n );\r\n this.sortMap.set('runstatus', 'AllocationRunStatus.Value');\r\n }\r\n}\r\n","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { AuthenticationService } from '../../authentication/service/authentication.service';\r\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { Subscription } from 'rxjs';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { CommonService } from '../../common/common-service';\r\n\r\n@Component({\r\n selector: 'login',\r\n templateUrl: './login.component.html',\r\n styleUrls: ['./login.component.scss'],\r\n})\r\nexport class LoginComponent implements OnInit, OnDestroy {\r\n public errorMessage;\r\n public loginForm: FormGroup;\r\n public authenticating = false;\r\n private usernameControl: FormControl;\r\n private passwordControl: FormControl;\r\n private queryParamsSubscription: Subscription;\r\n private redirectUrl: string;\r\n\r\n constructor(\r\n private authenticationService: AuthenticationService,\r\n private router: Router,\r\n private route: ActivatedRoute,\r\n private commonService: CommonService\r\n ) {\r\n this.usernameControl = new FormControl('', [Validators.required]);\r\n this.passwordControl = new FormControl('', [Validators.required]);\r\n\r\n this.loginForm = new FormGroup({\r\n username: this.usernameControl,\r\n password: this.passwordControl,\r\n });\r\n }\r\n\r\n public ngOnInit(): void {\r\n this.queryParamsSubscription = this.route.queryParams.subscribe(\r\n (queryParams) => {\r\n // TODO: Add redirect logic if redirect query param is present\r\n const redirectUrl = queryParams.redirect;\r\n if (!isNullOrUndefined(redirectUrl)) {\r\n this.redirectUrl = redirectUrl;\r\n }\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n\r\n if (this.authenticationService.isLoggedIn()) {\r\n this.router.navigate(['home']);\r\n }\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n if (!isNullOrUndefined(this.queryParamsSubscription)) {\r\n this.queryParamsSubscription.unsubscribe();\r\n }\r\n }\r\n\r\n public forgotPassword(): void {\r\n this.router.navigate(['forgot-password']);\r\n }\r\n\r\n public login(): void {\r\n this.errorMessage = '';\r\n if (this.loginForm.valid) {\r\n this.authenticating = true;\r\n this.authenticationService\r\n .login(\r\n this.loginForm.value.username,\r\n this.loginForm.value.password\r\n )\r\n .subscribe(\r\n (successful) => {\r\n if (successful) {\r\n this.authenticating = false;\r\n if (isNullOrUndefined(this.redirectUrl)) {\r\n this.router.navigate(['home']);\r\n } else {\r\n this.router.navigate([this.redirectUrl]);\r\n }\r\n } else {\r\n this.authenticating = false;\r\n\r\n this.errorMessage =\r\n 'Incorrect username or password';\r\n }\r\n },\r\n (error) => {\r\n this.authenticating = false;\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n } else {\r\n this.errorMessage = 'Please enter your username and password.';\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { AuthenticationService } from '../service/authentication.service';\r\nimport {\r\n ActivatedRouteSnapshot,\r\n CanActivate,\r\n RouterStateSnapshot,\r\n} from '@angular/router';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Injectable()\r\nexport class AuthenticationGuard implements CanActivate {\r\n constructor(private authenticationService: AuthenticationService) {}\r\n\r\n // noinspection JSUnusedLocalSymbols\r\n public canActivate(\r\n route: ActivatedRouteSnapshot,\r\n state: RouterStateSnapshot\r\n ): boolean | Observable | Promise {\r\n if (this.authenticationService.isAuthenticated()) {\r\n return true;\r\n }\r\n\r\n this.authenticationService.logout();\r\n return false;\r\n }\r\n}\r\n","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { AuthenticationService } from '../../../authentication/service/authentication.service';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { Subscription } from 'rxjs';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { CommonService } from '../../../common/common-service';\r\n\r\n@Component({\r\n selector: 'logout',\r\n template: '',\r\n})\r\nexport class LogoutComponent implements OnInit, OnDestroy {\r\n public errorMessage = '';\r\n private queryParamsSubscription: Subscription;\r\n\r\n constructor(\r\n private authenticationService: AuthenticationService,\r\n private router: Router,\r\n private route: ActivatedRoute,\r\n public commonService: CommonService\r\n ) {}\r\n\r\n public ngOnInit(): void {\r\n this.queryParamsSubscription = this.route.queryParams.subscribe(\r\n (queryParams) => {\r\n const redirect = queryParams.redirect;\r\n this.authenticationService.logout();\r\n this.router.navigate(['login'], { queryParams: { redirect } });\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n if (!isNullOrUndefined(this.queryParamsSubscription)) {\r\n this.queryParamsSubscription.unsubscribe();\r\n }\r\n }\r\n}\r\n","import { debounceTime } from 'rxjs/operators';\r\nimport { Router } from '@angular/router';\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { Page } from '../../../model/page.model';\r\nimport { FormControl, FormGroup } from '@angular/forms';\r\nimport { ConsumerCompanyService } from '../consumer-company.service';\r\nimport { CommonService } from '../../../common/common-service';\r\nimport { EntityLookup } from '../../../model/entity-lookup.model';\r\n\r\n@Component({\r\n selector: 'consumer-companies',\r\n templateUrl: './consumer-companies-list.component.html',\r\n styleUrls: [\r\n './consumer-companies-list.component.scss',\r\n '../../form.styles.scss',\r\n ],\r\n})\r\nexport class ConsumerCompaniesListComponent implements OnInit {\r\n public columnHeaders: any[];\r\n public columns: any[];\r\n public consumerCompanyPage: Page;\r\n public consumerCompanies: any[];\r\n public errorMessage = '';\r\n public loading: boolean;\r\n public salesReps: EntityLookup[];\r\n public searchGroup: FormGroup;\r\n\r\n private sortProp = {};\r\n private searchControl: FormControl;\r\n private filterProp = {\r\n salesrepLookupId: 0,\r\n };\r\n\r\n constructor(\r\n private consumerCompanyService: ConsumerCompanyService,\r\n private router: Router,\r\n public commonService: CommonService\r\n ) {\r\n this.consumerCompanyPage = new Page();\r\n\r\n this.searchControl = new FormControl('');\r\n this.searchGroup = new FormGroup({\r\n search: this.searchControl,\r\n salesrepLookupId: new FormControl(0),\r\n });\r\n }\r\n\r\n public ngOnInit(): void {\r\n this.loading = true;\r\n this.searchControl.valueChanges.pipe(debounceTime(300)).subscribe(\r\n () => {\r\n this.changePage({ offset: 0 });\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n this.commonService.getEntityLookups(['SalesRep']).subscribe(\r\n (entityLookups) => {\r\n this.salesReps =\r\n entityLookups.entityLookupResultList['salesRep'];\r\n this.changePage({ offset: this.consumerCompanyPage.offset });\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n\r\n public onSalesRepChange() {\r\n this.changePage({ offset: 0 });\r\n }\r\n\r\n public changePage(pageInfo: any): void {\r\n const searchString = this.searchGroup.value.search;\r\n this.filterProp.salesrepLookupId = +this.searchGroup.controls\r\n .salesrepLookupId.value;\r\n this.consumerCompanyPage.offset =\r\n pageInfo.offset * this.consumerCompanyPage.size;\r\n this.consumerCompanyService\r\n .getAllConsumerCompaniesPaged(\r\n searchString,\r\n this.consumerCompanyPage,\r\n this.sortProp,\r\n this.filterProp\r\n )\r\n .subscribe(\r\n (page) => {\r\n this.loading = false;\r\n this.consumerCompanyPage.totalPages = Math.ceil(\r\n page.totalItems / page.size\r\n );\r\n this.consumerCompanyPage.totalElements = page.totalItems;\r\n this.consumerCompanies = page.items;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n public archiveConsumer(item: any): void {\r\n this.loading = true;\r\n this.consumerCompanyService.archiveConsumerCompany(item).subscribe(\r\n (page: any) => {\r\n this.changePage({ offset: 0 });\r\n this.loading = true;\r\n\r\n console.log(page);\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n\r\n public sortColumn(event: any): void {\r\n this.sortProp = {\r\n direction: event.sorts[0].dir,\r\n property: event.sorts[0].prop,\r\n };\r\n this.changePage({ offset: 0 });\r\n }\r\n\r\n public onSelect(event: any): void {\r\n const consumerCompany = event.selected[0];\r\n this.router.navigate(\r\n ['consumer-company', consumerCompany.consumerCompanyId, 'edit'],\r\n {\r\n queryParams: {\r\n tab: 'companyDetails',\r\n companyName: consumerCompany.companyName,\r\n },\r\n }\r\n );\r\n }\r\n}\r\n","import { debounceTime } from 'rxjs/operators';\r\nimport { Router } from '@angular/router';\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { Page } from '../../../model/page.model';\r\nimport { FormControl, FormGroup } from '@angular/forms';\r\nimport { ConsumerCompanyService } from '../consumer-company.service';\r\nimport { CommonService } from '../../../common/common-service';\r\nimport { EntityLookup } from '../../../model/entity-lookup.model';\r\n\r\n@Component({\r\n selector: 'archived-consumer-companies',\r\n templateUrl: './archived-consumer-companies-list.component.html',\r\n styleUrls: [\r\n './archived-consumer-companies-list.component.scss',\r\n '../../form.styles.scss',\r\n ],\r\n})\r\nexport class ArchivedConsumerCompaniesListComponent implements OnInit {\r\n public columnHeaders: any[];\r\n public columns: any[];\r\n public consumerCompanyPage: Page;\r\n public consumerCompanies: any[];\r\n public errorMessage = '';\r\n public loading: boolean;\r\n public salesReps: EntityLookup[];\r\n public searchGroup: FormGroup;\r\n\r\n private sortProp = {};\r\n private searchControl: FormControl;\r\n private filterProp = {\r\n salesrepLookupId: 0,\r\n };\r\n\r\n constructor(\r\n private consumerCompanyService: ConsumerCompanyService,\r\n private router: Router,\r\n public commonService: CommonService\r\n ) {\r\n this.consumerCompanyPage = new Page();\r\n\r\n this.searchControl = new FormControl('');\r\n this.searchGroup = new FormGroup({\r\n search: this.searchControl,\r\n salesrepLookupId: new FormControl(0),\r\n });\r\n }\r\n\r\n public ngOnInit(): void {\r\n this.loading = true;\r\n this.searchControl.valueChanges.pipe(debounceTime(300)).subscribe(\r\n () => {\r\n this.changePage({ offset: 0 });\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n this.commonService.getEntityLookups(['SalesRep']).subscribe(\r\n (entityLookups) => {\r\n this.salesReps =\r\n entityLookups.entityLookupResultList['salesRep'];\r\n this.changePage({ offset: this.consumerCompanyPage.offset });\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n\r\n public onSalesRepChange() {\r\n this.changePage({ offset: 0 });\r\n }\r\n\r\n public changePage(pageInfo: any): void {\r\n const searchString = this.searchGroup.value.search;\r\n this.filterProp.salesrepLookupId = +this.searchGroup.controls\r\n .salesrepLookupId.value;\r\n this.consumerCompanyPage.offset =\r\n pageInfo.offset * this.consumerCompanyPage.size;\r\n this.consumerCompanyService\r\n .getArchivedConsumerCompaniesPaged(\r\n searchString,\r\n this.consumerCompanyPage,\r\n this.sortProp,\r\n this.filterProp\r\n )\r\n .subscribe(\r\n (page) => {\r\n this.loading = false;\r\n this.consumerCompanyPage.totalPages = Math.ceil(\r\n page.totalItems / page.size\r\n );\r\n this.consumerCompanyPage.totalElements = page.totalItems;\r\n this.consumerCompanies = page.items;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n public unarchiveConsumer(item: any): void {\r\n this.loading = true;\r\n this.consumerCompanyService.unarchiveConsumerCompany(item).subscribe(\r\n (page: any) => {\r\n this.changePage({ offset: 0 });\r\n this.loading = true;\r\n\r\n console.log(page);\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n\r\n public sortColumn(event: any): void {\r\n this.sortProp = {\r\n direction: event.sorts[0].dir,\r\n property: event.sorts[0].prop,\r\n };\r\n this.changePage({ offset: 0 });\r\n }\r\n\r\n public onSelect(event: any): void {\r\n const consumerCompany = event.selected[0];\r\n this.router.navigate(\r\n ['consumer-company', consumerCompany.consumerCompanyId, 'edit'],\r\n {\r\n queryParams: {\r\n tab: 'companyDetails',\r\n companyName: consumerCompany.companyName,\r\n },\r\n }\r\n );\r\n }\r\n}\r\n","import { Component, OnInit, OnDestroy } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { AllocationRunService } from '../allocation-run.service';\r\nimport { AllocationWarningAccordion } from '../../../../model/allocation/allocation-warning-accordion.model';\r\nimport { CommonService } from '../../../../common/common-service';\r\n\r\n@Component({\r\n templateUrl: './allocation-run-warnings.component.html',\r\n styleUrls: ['./allocation-run-warnings.component.scss'],\r\n})\r\nexport class AllocationRunWarningsComponent implements OnInit, OnDestroy {\r\n public loading: boolean = true;\r\n public warnings: AllocationWarningAccordion[];\r\n public errorMessage: string;\r\n public startDate: Date;\r\n public runDate: Date;\r\n\r\n private routeParamsSubscription: Subscription;\r\n private queryParamsSubscription: Subscription;\r\n private allocationRunId: number;\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n private service: AllocationRunService,\r\n public commonService: CommonService\r\n ) {}\r\n\r\n public ngOnInit(): void {\r\n this.warnings = [];\r\n this.queryParamsSubscription = this.route.queryParams.subscribe(\r\n (params) => {\r\n this.startDate = params.startDate;\r\n this.runDate = params.runDate;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n this.routeParamsSubscription = this.route.params.subscribe(\r\n (params) => {\r\n this.allocationRunId = params.allocationRunId;\r\n this.service\r\n .getAllocationWarnings(this.allocationRunId)\r\n .subscribe(\r\n (result) => {\r\n this.warnings = result;\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n if (!isNullOrUndefined(this.routeParamsSubscription)) {\r\n this.routeParamsSubscription.unsubscribe();\r\n }\r\n if (!isNullOrUndefined(this.queryParamsSubscription)) {\r\n this.queryParamsSubscription.unsubscribe();\r\n }\r\n }\r\n}\r\n","import { debounceTime } from 'rxjs/operators';\r\nimport {\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnInit,\r\n OnDestroy,\r\n Output,\r\n TemplateRef,\r\n} from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { AllocationRunService } from '../allocation-run.service';\r\nimport { Page } from '../../../../model/page.model';\r\nimport { FormGroup, FormControl } from '@angular/forms';\r\nimport { CommonService } from '../../../../common/common-service';\r\n\r\nimport { BsModalRef, BsModalService } from 'ngx-bootstrap';\r\n\r\nimport { saveAs as importedSaveAs } from 'file-saver';\r\nimport { ToastrService } from 'ngx-toastr';\r\n\r\n@Component({\r\n templateUrl: './allocation-summary-consumer.component.html',\r\n styleUrls: [\r\n '../../../form.styles.scss',\r\n './allocation-summary-consumer.component.scss',\r\n ],\r\n})\r\nexport class AllocationSummaryConsumerComponent implements OnInit, OnDestroy {\r\n public summaryList: any[];\r\n public errorMessage: string;\r\n public loadingText: string;\r\n public columnHeaders: any[];\r\n public consumerCompanyPremisesSummaryPage: Page;\r\n public loading = true;\r\n public startDate: Date;\r\n public runDate: Date;\r\n public editInvoice: boolean = false;\r\n public modalRef: BsModalRef;\r\n public downloadingInvoice: number[] = [];\r\n public downloadingProformaInvoice: number[] = [];\r\n public downloadingStatement: number[] = [];\r\n private searchGroup: FormGroup;\r\n private readonly searchControl: FormControl;\r\n private editConsumerGroup: FormGroup;\r\n private readonly allocationRunConsumerControl: FormControl;\r\n private readonly poNumberControl: FormControl;\r\n private readonly sendInvoiceControl: FormControl;\r\n private readonly amountPaidControl: FormControl;\r\n private readonly paidControl: FormControl;\r\n private curConsumer: string;\r\n private sortProp = {};\r\n private sortMap: Map;\r\n private routeParamsSubscription: Subscription;\r\n private queryParamsSubscription: Subscription;\r\n private allocationRunId: number;\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n private allocationRunService: AllocationRunService,\r\n public commonService: CommonService,\r\n private modalService: BsModalService,\r\n private toastr: ToastrService\r\n ) {\r\n this.searchControl = new FormControl('');\r\n this.searchGroup = new FormGroup({\r\n search: this.searchControl,\r\n });\r\n\r\n this.allocationRunConsumerControl = new FormControl('');\r\n this.poNumberControl = new FormControl(null);\r\n this.sendInvoiceControl = new FormControl(true);\r\n (this.amountPaidControl = new FormControl(0)),\r\n (this.paidControl = new FormControl(false)),\r\n (this.editConsumerGroup = new FormGroup({\r\n allocationRunConsumerId: this.allocationRunConsumerControl,\r\n poNumber: this.poNumberControl,\r\n sendInvoice: this.sendInvoiceControl,\r\n paid: this.paidControl,\r\n amountPaid: this.amountPaidControl,\r\n }));\r\n\r\n this.columnHeaders = [\r\n { name: 'consumerHoldingCompany' },\r\n { name: 'consumer' },\r\n { name: 'tariffCode' },\r\n { name: 'minimumContractedCapacity' },\r\n { name: 'powerAllocatedFlat' },\r\n { name: 'powerAllocatedOffPeak' },\r\n { name: 'powerAllocatedPeak' },\r\n { name: 'powerAllocatedStandard' },\r\n { name: 'powerAllocatedTotal' },\r\n { name: 'powerConsumedKva' },\r\n { name: 'powerConsumedKwh' },\r\n { name: 'consumerCompanyPremisesId' },\r\n { name: 'recsCalculated' },\r\n { name: 'poNumber' },\r\n { name: 'sendInvoice' },\r\n ];\r\n\r\n this.consumerCompanyPremisesSummaryPage = new Page();\r\n this.initSortMap();\r\n }\r\n\r\n public ngOnInit(): void {\r\n this.loading = true;\r\n\r\n this.queryParamsSubscription = this.route.queryParams.subscribe(\r\n (params) => {\r\n this.startDate = params.startDate;\r\n this.runDate = params.runDate;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n\r\n this.routeParamsSubscription = this.route.params.subscribe(\r\n (params) => {\r\n if (params['allocationRunId']) {\r\n this.allocationRunId = +params['allocationRunId'];\r\n }\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n this.searchControl.valueChanges.pipe(debounceTime(300)).subscribe(\r\n () => {\r\n this.changePage({\r\n offset: this.consumerCompanyPremisesSummaryPage.offset,\r\n });\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n this.changePage({ offset: 0 });\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n if (!isNullOrUndefined(this.routeParamsSubscription)) {\r\n this.routeParamsSubscription.unsubscribe();\r\n }\r\n if (!isNullOrUndefined(this.queryParamsSubscription)) {\r\n this.queryParamsSubscription.unsubscribe();\r\n }\r\n }\r\n\r\n public changePage(pageInfo: any): void {\r\n const searchString = this.searchGroup.value.search;\r\n this.consumerCompanyPremisesSummaryPage.offset =\r\n pageInfo.offset * this.consumerCompanyPremisesSummaryPage.size;\r\n this.allocationRunService\r\n .getAllocationSummary(\r\n this.allocationRunId,\r\n searchString,\r\n this.consumerCompanyPremisesSummaryPage,\r\n this.sortProp\r\n )\r\n .subscribe(\r\n (page) => {\r\n this.consumerCompanyPremisesSummaryPage.totalPages = Math.ceil(\r\n page.totalItems / page.size\r\n );\r\n this.consumerCompanyPremisesSummaryPage.totalElements =\r\n page.totalItems;\r\n this.summaryList = page.items;\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n\r\n public sortColumn(event: any): void {\r\n this.sortProp = {\r\n direction: event.sorts[0].dir,\r\n property: this.sortMap.get(event.sorts[0].prop.toLowerCase()),\r\n };\r\n this.changePage({ offset: 0 });\r\n }\r\n\r\n public onDownloadInvoice(row: any, previewInd: boolean) {\r\n this.downloadingInvoice.push(row.consumerCompanyPremisesId);\r\n this.toastr.info('Downloading consumer invoice for ' + row.consumer);\r\n this.allocationRunService\r\n .getConsumerInvoice(\r\n this.allocationRunId,\r\n row.consumerCompanyPremisesId,\r\n previewInd\r\n )\r\n .subscribe(\r\n (blob) => {\r\n this.toastr.success(\r\n 'Downloaded consumer invoice for ' + row.consumer\r\n );\r\n importedSaveAs(\r\n blob,\r\n 'Consumer_Invoice_' +\r\n row.consumer.replace(' ', '_') +\r\n '.pdf'\r\n );\r\n this.downloadingInvoice.splice(\r\n this.downloadingInvoice.indexOf(\r\n row.consumerCompanyPremisesId\r\n ),\r\n 1\r\n );\r\n },\r\n (error) => {\r\n this.toastr.error(\r\n isNullOrUndefined(error.body)\r\n ? 'An error occurred while downloading invoice for ' +\r\n row.consumer\r\n : error.body.errorMessage\r\n );\r\n this.downloadingInvoice.splice(\r\n this.downloadingInvoice.indexOf(\r\n row.consumerCompanyPremisesId\r\n ),\r\n 1\r\n );\r\n }\r\n );\r\n }\r\n\r\n public onDownloadProformaInvoice(row: any) {\r\n this.downloadingProformaInvoice.push(row.consumerCompanyPremisesId);\r\n this.toastr.info(\r\n 'Downloading consumer pro-forma invoice for ' + row.consumer\r\n );\r\n this.allocationRunService\r\n .getConsumerProformaInvoice(\r\n this.allocationRunId,\r\n row.consumerCompanyPremisesId\r\n )\r\n .subscribe(\r\n (blob) => {\r\n this.toastr.success(\r\n 'Downloaded consumer pro-forma invoice for ' +\r\n row.consumer\r\n );\r\n importedSaveAs(\r\n blob,\r\n 'Consumer_Pro-forma_Invoice_' +\r\n row.consumer.replace(' ', '_') +\r\n '.pdf'\r\n );\r\n this.downloadingProformaInvoice.splice(\r\n this.downloadingProformaInvoice.indexOf(\r\n row.consumerCompanyPremisesId\r\n ),\r\n 1\r\n );\r\n },\r\n (error) => {\r\n this.toastr.error(\r\n isNullOrUndefined(error.body)\r\n ? 'An error occurred while downloading pro-forma invoice for ' +\r\n row.consumer\r\n : error.body.errorMessage\r\n );\r\n this.downloadingProformaInvoice.splice(\r\n this.downloadingProformaInvoice.indexOf(\r\n row.consumerCompanyPremisesId\r\n ),\r\n 1\r\n );\r\n }\r\n );\r\n }\r\n\r\n public onDownloadStatement(row: any) {\r\n this.downloadingStatement.push(row.consumerCompanyPremisesId);\r\n this.toastr.info('Downloading consumer Statement for ' + row.consumer);\r\n this.allocationRunService\r\n .getConsumerStatement(\r\n this.allocationRunId,\r\n row.consumerCompanyPremisesId\r\n )\r\n .subscribe(\r\n (blob) => {\r\n this.toastr.success(\r\n 'Downloaded consumer Statement for ' + row.consumer\r\n );\r\n importedSaveAs(\r\n blob,\r\n 'Consumer_Statement_' +\r\n row.consumer.replace(' ', '_') +\r\n '.pdf'\r\n );\r\n this.downloadingStatement.splice(\r\n this.downloadingStatement.indexOf(\r\n row.consumerCompanyPremisesId\r\n ),\r\n 1\r\n );\r\n },\r\n (error) => {\r\n this.toastr.error(\r\n isNullOrUndefined(error.body)\r\n ? 'An error occurred while downloading Statement for ' +\r\n row.consumer\r\n : error.body.errorMessage\r\n );\r\n this.downloadingStatement.splice(\r\n this.downloadingStatement.indexOf(\r\n row.consumerCompanyPremisesId\r\n ),\r\n 1\r\n );\r\n }\r\n );\r\n }\r\n\r\n public onPopupSubmit(): void {\r\n this.errorMessage = undefined;\r\n this.commonService.validateAllFormFields(this.editConsumerGroup);\r\n if (this.editConsumerGroup.valid) {\r\n this.loadingText = 'Submitting Contact';\r\n this.loading = true;\r\n this.modalRef.hide();\r\n\r\n this.allocationRunService\r\n .updateAllocationRunConsumer(\r\n this.allocationRunId,\r\n this.editConsumerGroup.value.allocationRunConsumerId,\r\n this.editConsumerGroup.value.poNumber,\r\n this.editConsumerGroup.value.sendInvoice,\r\n this.editConsumerGroup.value.paid,\r\n this.editConsumerGroup.value.amountPaid\r\n )\r\n .subscribe(\r\n (response) => {\r\n this.toastr.success(\r\n !isNullOrUndefined(response)\r\n ? response.successMessage\r\n : 'Successfully Updated Consumer Run'\r\n );\r\n this.curConsumer = '';\r\n this.loading = false;\r\n this.ngOnInit();\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n }\r\n\r\n public editSummary(consumer: any, template: TemplateRef): void {\r\n this.errorMessage = '';\r\n this.editInvoice = true;\r\n this.initConsumerForm(consumer);\r\n this.modalRef = this.modalService.show(template); // , { class: 'modal-lg' });\r\n }\r\n\r\n private initConsumerForm(consumer: any): void {\r\n this.editConsumerGroup.controls['allocationRunConsumerId'].setValue(\r\n consumer.allocationRunConsumerId\r\n );\r\n this.editConsumerGroup.controls['poNumber'].setValue(consumer.poNumber);\r\n this.editConsumerGroup.controls['sendInvoice'].setValue(\r\n consumer.sendInvoice\r\n );\r\n this.editConsumerGroup.controls['amountPaid'].setValue(\r\n consumer.amountPaid\r\n );\r\n this.editConsumerGroup.controls['paid'].setValue(consumer.paid);\r\n\r\n this.curConsumer = consumer.consumer;\r\n }\r\n\r\n private initSortMap(): void {\r\n this.sortMap = new Map();\r\n this.sortMap.set('consumerHoldingCompany', 'ConsumerHoldingCompany');\r\n this.sortMap.set('consumer', 'ConsumerName');\r\n this.sortMap.set('tariffcode', 'TariffCode');\r\n this.sortMap.set('powerallocatedflat', 'PowerAllocatedFlat');\r\n this.sortMap.set('powerallocatedpeak', 'PowerAllocatedPeak');\r\n this.sortMap.set('powerallocatedoffpeak', 'PowerAllocatedOffPeak');\r\n this.sortMap.set('powerallocatedstandard', 'PowerAllocatedStandard');\r\n this.sortMap.set('powerallocatedtotal', 'PowerAllocatedTotal');\r\n this.sortMap.set('powerconsumedkwh', 'PowerConsumedKwh');\r\n this.sortMap.set('costkwh', 'CostKWh');\r\n this.sortMap.set('ponumber', 'PONumber');\r\n }\r\n\r\n private setAllocationRunConsumerStatementsToPaidIfNotPaid(): void {\r\n this.loading = true;\r\n this.allocationRunService\r\n .SetAllocationRunConsumerStatementsToPaidIfNotPaid(\r\n this.allocationRunId\r\n )\r\n .subscribe(\r\n (response) => {\r\n this.toastr.success(\r\n !isNullOrUndefined(response)\r\n ? response.successMessage\r\n : 'Successfully Updated Consumer Run'\r\n );\r\n this.changePage({ offset: 0 });\r\n this.loading = false;\r\n this.ngOnInit();\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n}\r\n","import { map } from 'rxjs/operators';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { Page } from '../../../../model/page.model';\r\nimport { HttpClient, HttpResponse } from '@angular/common/http';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { ConsumerCompanyPremisesParameter } from '../../../../model/allocation-run/consumer-company-premises.parameter';\r\nimport { GeneratorProjectFacilityParameter } from '../../../../model/allocation-run/generator-project-facility.parameter';\r\n\r\n@Injectable()\r\nexport class ParametersService {\r\n constructor(private http: HttpClient) {}\r\n\r\n public getConsumerCompanyPremisesForDistributor(\r\n distributorId: number,\r\n isdemo: boolean\r\n ): Observable {\r\n return this.http\r\n .get(\r\n API_URL +\r\n 'consumerCompanyPremises/GetConsumerCompanyPremisesParameters?distributorId=' +\r\n distributorId +\r\n '&isdemo=' +\r\n isdemo\r\n )\r\n .pipe(map((response: HttpResponse) => response));\r\n }\r\n\r\n public getGeneratorsForDistributor(\r\n distributorId: number,\r\n isdemo: boolean\r\n ): Observable {\r\n return this.http\r\n .get(\r\n API_URL +\r\n 'generatorProjectFacility/GetGeneratorProjectFacilityParameters?distributorId=' +\r\n distributorId +\r\n '&isdemo=' +\r\n isdemo\r\n )\r\n .pipe(map((response: HttpResponse) => response));\r\n }\r\n\r\n public saveParameters(\r\n consumerCompanyPremises: ConsumerCompanyPremisesParameter[],\r\n generators: GeneratorProjectFacilityParameter[],\r\n distributorId: number\r\n ): Observable {\r\n return this.http.post(API_URL + 'allocation/SaveParameters', {\r\n consumerCompanyPremises,\r\n generators,\r\n distributorId,\r\n });\r\n }\r\n}\r\n","import {\r\n Component,\r\n OnDestroy,\r\n OnInit,\r\n ViewChild,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { ParametersService } from './parameters.service';\r\nimport { Subscription } from 'rxjs';\r\nimport { isNullOrUndefined } from 'util';\r\n\r\nimport { ConsumerCompanyPremisesParameter } from '../../../../model/allocation-run/consumer-company-premises.parameter';\r\nimport { GeneratorProjectFacilityParameter } from '../../../../model/allocation-run/generator-project-facility.parameter';\r\nimport { isEqual, unionWith } from 'lodash';\r\nimport { CommonService } from '../../../../common/common-service';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { DatatableComponent } from '@swimlane/ngx-datatable';\r\n\r\n@Component({\r\n selector: 'parameters',\r\n templateUrl: './parameters.component.html',\r\n styleUrls: ['./parameters.component.scss', '../../../form.styles.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class ParametersComponent implements OnInit, OnDestroy {\r\n @ViewChild(DatatableComponent)\r\n public generatorTable: DatatableComponent;\r\n @ViewChild(DatatableComponent)\r\n public consumerTable: DatatableComponent;\r\n public savingParameters = false;\r\n public parameterErrors: any[];\r\n public validParameters = true;\r\n public errorMap: Map;\r\n public errorMessages: any[];\r\n public consumerCompanyPremisesColumnHeaders: any[];\r\n public generatorColumnHeaders: any[];\r\n public routeParamsSubscription: Subscription;\r\n public errorMessage: string;\r\n public consumerCompanyPremisesArray: ConsumerCompanyPremisesParameter[];\r\n public tempConsumerCompanyPremises: ConsumerCompanyPremisesParameter[];\r\n public generatorArray: GeneratorProjectFacilityParameter[];\r\n public tempGenerators: GeneratorProjectFacilityParameter[];\r\n private distributorId: number;\r\n private isdemo: boolean;\r\n private consumerCompanyPremisesList: ConsumerCompanyPremisesParameter[];\r\n private generators: GeneratorProjectFacilityParameter[];\r\n private sortMap: Map;\r\n\r\n constructor(\r\n private router: Router,\r\n private parametersService: ParametersService,\r\n private route: ActivatedRoute,\r\n private toaster: ToastrService,\r\n private commonService: CommonService\r\n ) {\r\n this.consumerCompanyPremisesColumnHeaders = [\r\n { name: 'Consumer' },\r\n { name: 'Include In Demo' },\r\n ];\r\n this.generatorColumnHeaders = [\r\n { name: 'Generator' },\r\n { name: 'Include In Demo' },\r\n ];\r\n\r\n this.consumerCompanyPremisesArray = [];\r\n this.generatorArray = [];\r\n\r\n this.parameterErrors = [];\r\n this.errorMap = new Map();\r\n this.errorMessages = [];\r\n this.initSortMap();\r\n }\r\n\r\n public ngOnInit(): void {\r\n this.routeParamsSubscription = this.route.params.subscribe(\r\n (params) => {\r\n this.distributorId = params.distributorId;\r\n this.isdemo = params.isdemo;\r\n this.getConsumerCompanyPremises();\r\n this.getGenerators();\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n if (!isNullOrUndefined(this.routeParamsSubscription)) {\r\n this.routeParamsSubscription.unsubscribe();\r\n }\r\n }\r\n\r\n public saveParameters(): void {\r\n if (this.validParameters) {\r\n this.savingParameters = true;\r\n this.parametersService\r\n .saveParameters(\r\n this.consumerCompanyPremisesList,\r\n this.generators,\r\n this.distributorId\r\n )\r\n .subscribe(\r\n () => {\r\n this.savingParameters = false;\r\n this.toaster.success(\r\n 'The parameters were successfully saved. '\r\n );\r\n this.router.navigate(['allocation', 'run'], {\r\n queryParams: { distributorId: this.distributorId },\r\n });\r\n },\r\n (error) => {\r\n this.savingParameters = false;\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n }\r\n }\r\n\r\n public getConsumerCompanyPremises(): void {\r\n this.parametersService\r\n .getConsumerCompanyPremisesForDistributor(\r\n this.distributorId,\r\n this.isdemo\r\n )\r\n .subscribe(\r\n (consumerCompanyPremises) => {\r\n this.consumerCompanyPremisesArray = consumerCompanyPremises;\r\n this.tempConsumerCompanyPremises = [\r\n ...consumerCompanyPremises,\r\n ];\r\n this.consumerCompanyPremisesList = unionWith(\r\n this.consumerCompanyPremisesList,\r\n consumerCompanyPremises,\r\n isEqual\r\n );\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n }\r\n\r\n public getGenerators(): void {\r\n this.parametersService\r\n .getGeneratorsForDistributor(this.distributorId, this.isdemo)\r\n .subscribe(\r\n (generators) => {\r\n this.generatorArray = generators;\r\n this.tempGenerators = [...generators];\r\n this.generators = unionWith(\r\n this.generators,\r\n generators,\r\n isEqual\r\n );\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n }\r\n\r\n public updateConsumerCompanyPremisesParameter(\r\n consumerCompanyPremisesElement: any,\r\n name: string,\r\n element: any\r\n ): void {\r\n const consumerCompanyPremisesIndex = this.consumerCompanyPremisesList.findIndex(\r\n (item) =>\r\n item.consumerCompanyPremisesId ===\r\n consumerCompanyPremisesElement.consumerCompanyPremisesId\r\n );\r\n const excluded: boolean =\r\n this.sortMap.get(name.toLowerCase().replace(' ', '')) === 'exclude'\r\n ? element.target.checked\r\n : this.consumerCompanyPremisesList[consumerCompanyPremisesIndex]\r\n .exclude;\r\n const exclusionReason: string =\r\n this.sortMap.get(name.toLowerCase().replace(' ', '')) ===\r\n 'reasonForExclusion'\r\n ? element.target.value === ''\r\n ? null\r\n : element.target.value\r\n : this.consumerCompanyPremisesList[consumerCompanyPremisesIndex]\r\n .reasonForExclusion;\r\n if (\r\n excluded &&\r\n (isNullOrUndefined(exclusionReason) || exclusionReason.length === 0)\r\n ) {\r\n this.parameterErrors[\r\n consumerCompanyPremisesElement.consumer\r\n ] = true;\r\n this.errorMap.set(\r\n consumerCompanyPremisesElement.consumer,\r\n `${\r\n consumerCompanyPremisesElement.consumer\r\n } has been excluded, but is missing a reason`\r\n );\r\n } else {\r\n this.parameterErrors[\r\n consumerCompanyPremisesElement.consumer\r\n ] = false;\r\n this.errorMap.delete(consumerCompanyPremisesElement.consumer);\r\n }\r\n this.errorMessages = Array.from(this.errorMap.values());\r\n\r\n if (\r\n (Object as any)\r\n .values(this.parameterErrors)\r\n .filter((x) => x === true).length > 0\r\n ) {\r\n this.validParameters = false;\r\n } else {\r\n this.validParameters = true;\r\n }\r\n this.consumerCompanyPremisesList[consumerCompanyPremisesIndex][\r\n this.sortMap.get(name.toLowerCase().replace(' ', ''))\r\n ] =\r\n element.target.type === 'checkbox'\r\n ? element.target.checked\r\n : element.target.value;\r\n }\r\n\r\n public updateGeneratorParameter(\r\n generatorProjectFacilityElement: any,\r\n name: string,\r\n element: any\r\n ): void {\r\n const generatorIndex = this.generators.findIndex(\r\n (item) =>\r\n item.generatorProjectFacilityId ===\r\n generatorProjectFacilityElement.generatorProjectFacilityId\r\n );\r\n\r\n const excluded: boolean =\r\n this.sortMap.get(name.toLowerCase().replace(' ', '')) === 'exclude'\r\n ? element.target.checked\r\n : this.generators[generatorIndex].exclude;\r\n const exclusionReason: string =\r\n this.sortMap.get(name.toLowerCase().replace(' ', '')) ===\r\n 'reasonForExclusion'\r\n ? element.target.value === ''\r\n ? null\r\n : element.target.value\r\n : this.generators[generatorIndex].reasonForExclusion;\r\n\r\n if (\r\n excluded &&\r\n (isNullOrUndefined(exclusionReason) || exclusionReason.length === 0)\r\n ) {\r\n this.parameterErrors[\r\n generatorProjectFacilityElement.generator\r\n ] = true;\r\n this.errorMap.set(\r\n generatorProjectFacilityElement.generator,\r\n `${\r\n generatorProjectFacilityElement.generator\r\n } has been excluded, but is missing a reason`\r\n );\r\n } else {\r\n this.parameterErrors[\r\n generatorProjectFacilityElement.generator\r\n ] = false;\r\n this.errorMap.delete(generatorProjectFacilityElement.generator);\r\n }\r\n this.errorMessages = Array.from(this.errorMap.values());\r\n\r\n if (\r\n (Object as any)\r\n .values(this.parameterErrors)\r\n .filter((x) => x === true).length > 0\r\n ) {\r\n this.validParameters = false;\r\n } else {\r\n this.validParameters = true;\r\n }\r\n this.generators[generatorIndex][\r\n this.sortMap.get(name.toLowerCase().replace(' ', ''))\r\n ] =\r\n element.target.type === 'checkbox'\r\n ? element.target.checked\r\n : element.target.value;\r\n }\r\n\r\n public updateGeneratorFilter(event) {\r\n const val = event.target.value.toLowerCase();\r\n\r\n // filter and update the rows\r\n this.generatorArray = this.tempGenerators.filter(function(d) {\r\n return d.generator.toLowerCase().indexOf(val) !== -1 || !val;\r\n });\r\n // Whenever the filter changes, always go back to the first page\r\n this.generatorTable.offset = 0;\r\n }\r\n\r\n public updateConsumerCompanyFilter(event) {\r\n const val = event.target.value.toLowerCase();\r\n\r\n // filter and update the rows\r\n this.consumerCompanyPremisesArray = this.tempConsumerCompanyPremises.filter(\r\n function(d) {\r\n return (\r\n d.consumer.toLowerCase().indexOf(val) !== -1 ||\r\n d.tariffCode.toLowerCase().indexOf(val) !== -1 ||\r\n !val\r\n );\r\n }\r\n );\r\n // Whenever the filter changes, always go back to the first page\r\n this.consumerTable.offset = 0;\r\n }\r\n\r\n private initSortMap(): void {\r\n this.sortMap = new Map();\r\n this.sortMap.set('consumer', 'consumer');\r\n this.sortMap.set('generator', 'generator');\r\n this.sortMap.set('tariffcode', 'tariffCode');\r\n this.sortMap.set('kwhminimum', 'kwhMinimum');\r\n this.sortMap.set('kwhmaximum', 'kwhMaximum');\r\n this.sortMap.set('exclude', 'exclude');\r\n this.sortMap.set('reasonforexclusion', 'reasonForExclusion');\r\n this.sortMap.set('percentage', 'percentage');\r\n }\r\n}\r\n","import { debounceTime } from 'rxjs/operators';\r\nimport { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { AllocationRunService } from '../allocation-run.service';\r\nimport { FormControl, FormGroup } from '@angular/forms';\r\nimport { Page } from '../../../../model/page.model';\r\nimport { Subscription } from 'rxjs';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { CommonService } from '../../../../common/common-service';\r\n\r\n@Component({\r\n selector: 'app-summary-generator',\r\n templateUrl: './allocation-summary-generator.component.html',\r\n styleUrls: [\r\n '../../../form.styles.scss',\r\n './allocation-summary-generator.component.scss',\r\n ],\r\n})\r\nexport class AllocationSummaryGeneratorComponent implements OnInit, OnDestroy {\r\n public allocationRunId: number;\r\n public columnHeaders: any[];\r\n public generatorSummary: any[];\r\n public generatorSummaryPage: Page;\r\n public loading = true;\r\n public displayGeneratorSummaryError = false;\r\n public errorMessage: string;\r\n public startDate: Date;\r\n public runDate: Date;\r\n\r\n private routeParamsSubscription: Subscription;\r\n private queryParamsSubscription: Subscription;\r\n private sortProp = {};\r\n private searchGroup: FormGroup;\r\n private readonly searchControl: FormControl;\r\n\r\n private sortMap: Map;\r\n\r\n constructor(\r\n private allocationRunService: AllocationRunService,\r\n private route: ActivatedRoute,\r\n public commonService: CommonService\r\n ) {\r\n this.columnHeaders = [\r\n { name: 'Generator' },\r\n { name: 'PowerGeneratedPeak' },\r\n { name: 'PowerGeneratedOffPeak' },\r\n { name: 'PowerGeneratedStandard' },\r\n { name: 'PowerGeneratedFlat' },\r\n { name: 'PowerGeneratedTotal' },\r\n ];\r\n\r\n this.generatorSummaryPage = new Page();\r\n\r\n this.searchControl = new FormControl('');\r\n this.searchGroup = new FormGroup({\r\n search: this.searchControl,\r\n });\r\n this.initSortMap();\r\n }\r\n\r\n public ngOnInit(): void {\r\n this.queryParamsSubscription = this.route.queryParams.subscribe(\r\n (params) => {\r\n this.startDate = params.startDate;\r\n this.runDate = params.runDate;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n\r\n this.routeParamsSubscription = this.route.params.subscribe(\r\n (params) => {\r\n if (params['allocationRunId']) {\r\n this.allocationRunId = +params['allocationRunId'];\r\n }\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n this.searchControl.valueChanges.pipe(debounceTime(300)).subscribe(\r\n () => {\r\n this.changePage({ offset: 0 });\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n this.changePage({ offset: this.generatorSummaryPage.offset });\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n if (!isNullOrUndefined(this.routeParamsSubscription)) {\r\n this.routeParamsSubscription.unsubscribe();\r\n }\r\n if (!isNullOrUndefined(this.queryParamsSubscription)) {\r\n this.queryParamsSubscription.unsubscribe();\r\n }\r\n }\r\n\r\n public changePage(pageInfo: any): void {\r\n const searchString = this.searchGroup.value.search;\r\n this.generatorSummaryPage.offset =\r\n pageInfo.offset * this.generatorSummaryPage.size;\r\n this.allocationRunService\r\n .getGeneratorGenerationSummary(\r\n this.allocationRunId,\r\n searchString,\r\n this.generatorSummaryPage,\r\n this.sortProp\r\n )\r\n .subscribe(\r\n (page) => {\r\n this.loading = false;\r\n this.displayGeneratorSummaryError = false;\r\n this.generatorSummaryPage.totalPages = Math.ceil(\r\n page.totalItems / page.size\r\n );\r\n this.generatorSummaryPage.totalElements = page.totalItems;\r\n this.generatorSummary = page.items;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n this.displayGeneratorSummaryError = true;\r\n }\r\n );\r\n }\r\n\r\n public sortColumn(event: any): void {\r\n this.sortProp = {\r\n direction: event.sorts[0].dir,\r\n property: this.sortMap.get(event.sorts[0].prop.toLowerCase()),\r\n };\r\n this.changePage({ offset: 0 });\r\n }\r\n\r\n private initSortMap(): void {\r\n this.sortMap = new Map();\r\n this.sortMap.set('generator', 'Generator');\r\n this.sortMap.set('powergeneratedpeak', 'PowerGeneratedPeak');\r\n this.sortMap.set('powergeneratedoffpeak', 'PowerGeneratedOffPeak');\r\n this.sortMap.set('powergeneratedstandard', 'PowerGeneratedStandard');\r\n this.sortMap.set('powergeneratedflat', 'PowerGeneratedFlat');\r\n this.sortMap.set('powergeneratedtotal', 'PowerGeneratedTotal');\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Injectable()\r\nexport class InformationService {\r\n constructor(private httpClient: HttpClient) {}\r\n\r\n public getFaq(): Observable {\r\n return this.httpClient.get(API_URL + 'information/GetFaq');\r\n }\r\n}\r\n","import { OnInit, Component } from '@angular/core';\r\nimport { InformationService } from '../information.service';\r\nimport { CommonService } from '../../../common/common-service';\r\n\r\n@Component({\r\n templateUrl: './frequently-asked-questions.component.html',\r\n styleUrls: ['./frequently-asked-questions.component.scss'],\r\n})\r\nexport class FrequentlyAskedQuestionsComponent implements OnInit {\r\n public questions: any[];\r\n public loading = false;\r\n public errorMessage = '';\r\n\r\n constructor(\r\n private informationService: InformationService,\r\n public commonService: CommonService\r\n ) {}\r\n\r\n public ngOnInit() {\r\n this.loading = true;\r\n this.informationService.getFaq().subscribe(\r\n (response) => {\r\n this.questions = response;\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n}\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n templateUrl: './useful-links.component.html',\r\n styleUrls: ['./useful-links.component.scss'],\r\n})\r\nexport class UsefulLinksComponent {\r\n public links: any[] = [\r\n {\r\n description: 'Nersa Regulation',\r\n link:\r\n 'http://www.nersa.org.za/ContentPage.aspx?PageId=254&PageName=Regulations',\r\n },\r\n {\r\n description: 'License application procedure:',\r\n link:\r\n 'http://www.nersa.org.za/ContentPage.aspx?PageId=259&PageName=License%20Application%20procedure',\r\n },\r\n {\r\n description:\r\n 'Application for an electricity generation license in terms of the electricity regulation',\r\n link:\r\n 'http://www.nersa.org.za/Admin/Document/Editor/' +\r\n 'file/Electricity/Application%20Form/Electricity%20generation%20licence%20application%20form.pdf',\r\n },\r\n {\r\n description: 'Application for a license to distribute electricity',\r\n link:\r\n 'http://www.nersa.org.za/Admin/Document/Editor/file/Electricity/' +\r\n 'Licences/Application%20form/Distribution%20Licence%20Application%20Form%20-%202007.pdf',\r\n },\r\n {\r\n description: 'Environmental Impact Assessment',\r\n link:\r\n 'https://cer.org.za/wp-content/uploads/1999/01/EIA-Regulations-2014.pdf',\r\n },\r\n {\r\n description: 'Environmental Impact Assessment 2017 amendments',\r\n link:\r\n 'https://www.bowmanslaw.com/wp-content/uploads/2017/08/2017-amendments' +\r\n '-to-the-Environmental-Impact-Assessment-Regulations_TTerblanche-and-MStrydom.pdf',\r\n },\r\n {\r\n description: 'ESKOM tariffFormArray 2017/18 ',\r\n link:\r\n 'http://www.eskom.co.za/CustomerCare/TariffsAndCharges/Documents/Tariff%20Book%202018-2018.pdf',\r\n },\r\n {\r\n description: 'South African Wind data',\r\n link:\r\n 'http://www.wasaproject.info/docs/Interim(5km)High-ResolutionWindResourceMapao.pdf',\r\n },\r\n {\r\n description: 'Solar map of South Africa',\r\n link:\r\n 'http://www.emveloenergy.com/solarmap/irradiationisolationlevels.aspx',\r\n },\r\n {\r\n description:\r\n 'The South African Photovoltaic Industry Association (SAPVIA)',\r\n link: 'http://www.sapvia.co.za/',\r\n },\r\n {\r\n description: 'South Africa Consumer Price Index',\r\n link:\r\n 'http://www.inflation.eu/inflation-rates/south-africa/current-cpi-inflation-south-africa.aspx',\r\n },\r\n {\r\n description: 'Integrated Resource Plan 2016',\r\n link: 'http://www.energy.gov.za/files/irp_frame.html',\r\n },\r\n ];\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { AuthenticationService } from '../service/authentication.service';\r\nimport { ActivatedRouteSnapshot, CanActivate, Router } from '@angular/router';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Injectable()\r\nexport class AuthorizationGuard implements CanActivate {\r\n constructor(\r\n private authenticationService: AuthenticationService,\r\n private router: Router\r\n ) {}\r\n\r\n public canActivate(\r\n route: ActivatedRouteSnapshot\r\n ): boolean | Observable | Promise {\r\n const roles = route.data['roles'];\r\n\r\n if (!this.authenticationService.isAuthenticated()) {\r\n this.authenticationService.logout();\r\n return false;\r\n }\r\n\r\n if (!roles || !this.authenticationService.isRole(roles)) {\r\n this.router.navigate(['forbidden']);\r\n return false;\r\n }\r\n return true;\r\n }\r\n}\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'forbidden',\r\n templateUrl: './403.html',\r\n styleUrls: ['./403.scss'],\r\n})\r\nexport class ForbiddenComponent {}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { Page } from '../../model/page.model';\r\nimport { Observable } from 'rxjs';\r\nimport { Injectable } from '@angular/core';\r\nimport { User } from '../../model/administration/user.model';\r\nimport { UserVerification } from '../../model/administration/user-verification.model';\r\nimport { SalesRep } from '../../model/administration/sales-rep.model';\r\nimport { SalesTarget } from '../../model/administration/sales-target.model';\r\n\r\n@Injectable()\r\nexport class AdministrationService {\r\n constructor(private httpClient: HttpClient) {}\r\n\r\n public getUsers(\r\n searchString: string,\r\n page: Page,\r\n sortProp: any\r\n ): Observable {\r\n if (isNullOrUndefined(sortProp.direction)) {\r\n sortProp.direction = '';\r\n }\r\n if (isNullOrUndefined(sortProp.property)) {\r\n sortProp.property = '';\r\n }\r\n\r\n return this.httpClient.get(\r\n API_URL +\r\n 'userManagement/GetUsers?searchString=' +\r\n searchString +\r\n '&offset=' +\r\n page.offset +\r\n '&pageSize=' +\r\n page.size +\r\n '&sortDirection=' +\r\n sortProp.direction +\r\n '&sortProperty=' +\r\n sortProp.property\r\n );\r\n }\r\n\r\n public getUser(userId: string): Observable {\r\n return this.httpClient.get(\r\n API_URL + 'userManagement/GetUser?userId=' + userId\r\n );\r\n }\r\n\r\n public getRoles(): Observable {\r\n return this.httpClient.get(API_URL + 'userManagement/GetRoles');\r\n }\r\n\r\n public createUser(user: User): Observable {\r\n return this.httpClient.post(\r\n API_URL + 'userManagement/createUser',\r\n user\r\n );\r\n }\r\n\r\n public updateUser(user: User): Observable {\r\n return this.httpClient.patch(API_URL + 'userManagement/editUser', user);\r\n }\r\n\r\n public createPassword(userVerification: UserVerification): Observable {\r\n return this.httpClient.post(\r\n API_URL + 'userManagement/createPassword',\r\n userVerification\r\n );\r\n }\r\n\r\n public resetPassword(userVerification: UserVerification): Observable {\r\n return this.httpClient.post(\r\n API_URL + 'userManagement/ResetPassword',\r\n userVerification\r\n );\r\n }\r\n\r\n public getSalesRepsPage(\r\n searchString: string,\r\n page: Page,\r\n sortProp: any\r\n ): Observable {\r\n if (isNullOrUndefined(sortProp.direction)) {\r\n sortProp.direction = '';\r\n }\r\n if (isNullOrUndefined(sortProp.property)) {\r\n sortProp.property = '';\r\n }\r\n\r\n return this.httpClient.get(\r\n API_URL +\r\n 'salesRep/GetSalesRepsPage?searchString=' +\r\n searchString +\r\n '&offset=' +\r\n page.offset +\r\n '&pageSize=' +\r\n page.size +\r\n '&sortDirection=' +\r\n sortProp.direction +\r\n '&sortProperty=' +\r\n sortProp.property\r\n );\r\n }\r\n\r\n public getContacts(searchString: string): Observable {\r\n if (!searchString) {\r\n searchString = '';\r\n }\r\n\r\n return this.httpClient.get(\r\n API_URL +\r\n 'salesRep/getTypeaheadContacts?searchString=' +\r\n searchString\r\n );\r\n }\r\n\r\n public createSalesRep(\r\n salesRep: SalesRep,\r\n provinces: number[],\r\n salesTargets: SalesTarget[]\r\n ): Observable {\r\n salesRep.provinces = provinces;\r\n salesRep.salesTargets = salesTargets;\r\n return this.httpClient.post(\r\n API_URL + 'salesRep/createSalesRep',\r\n salesRep\r\n );\r\n }\r\n\r\n public getSalesRep(salesRepId: number): Observable {\r\n return this.httpClient.get(\r\n API_URL + 'salesRep/GetSalesRep?salesRepId=' + salesRepId\r\n );\r\n }\r\n\r\n public updateSalesRep(\r\n salesRep: SalesRep,\r\n provinces: number[],\r\n salesTargets: SalesTarget[]\r\n ): Observable {\r\n salesRep.provinces = provinces;\r\n salesRep.salesTargets = salesTargets;\r\n return this.httpClient.patch(\r\n API_URL + 'salesRep/UpdateSalesRep',\r\n salesRep\r\n );\r\n }\r\n}\r\n","import { debounceTime } from 'rxjs/operators';\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { AdministrationService } from '../../administration.service';\r\nimport { Page } from '../../../../model/page.model';\r\nimport { FormControl, FormGroup } from '@angular/forms';\r\nimport { Router } from '@angular/router';\r\nimport { CommonService } from '../../../../common/common-service';\r\n\r\n@Component({\r\n templateUrl: './user-list.component.html',\r\n styleUrls: ['./user-list.component.scss', '../../../form.styles.scss'],\r\n})\r\nexport class UserListComponent implements OnInit {\r\n public columnHeaders: any[];\r\n public page: Page;\r\n public users: any[];\r\n public displayAlert = false;\r\n public errorMessage: string;\r\n public loading: boolean;\r\n private searchGroup: FormGroup;\r\n private readonly searchControl: FormControl;\r\n\r\n private sortProp = {};\r\n\r\n constructor(\r\n private adminService: AdministrationService,\r\n private router: Router,\r\n private commonService: CommonService\r\n ) {\r\n this.columnHeaders = [\r\n { name: 'userId' },\r\n { name: 'firstName' },\r\n { name: 'lastName' },\r\n { name: 'userName' },\r\n ];\r\n\r\n this.page = new Page();\r\n\r\n this.searchControl = new FormControl('');\r\n this.searchGroup = new FormGroup({\r\n search: this.searchControl,\r\n });\r\n }\r\n\r\n public ngOnInit(): void {\r\n this.loading = true;\r\n this.searchControl.valueChanges.pipe(debounceTime(300)).subscribe(\r\n () => {\r\n this.changePage({ offset: 0 });\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n\r\n this.changePage({ offset: this.page.offset });\r\n }\r\n\r\n public changePage(pageInfo: any): void {\r\n const searchString = this.searchGroup.value.search;\r\n this.page.offset = pageInfo.offset * this.page.size;\r\n\r\n this.adminService\r\n .getUsers(searchString, this.page, this.sortProp)\r\n .subscribe(\r\n (page) => {\r\n this.loading = false;\r\n this.displayAlert = false;\r\n this.page.totalPages = Math.ceil(\r\n page.totalItems / page.size\r\n );\r\n this.page.totalElements = page.totalItems;\r\n this.users = page.items;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n this.displayAlert = true;\r\n }\r\n );\r\n }\r\n\r\n public sortColumn(event: any): void {\r\n this.sortProp = {\r\n direction: event.sorts[0].dir,\r\n property: event.sorts[0].prop,\r\n };\r\n this.changePage({ offset: 0 });\r\n }\r\n\r\n public onSelect(event: any): void {\r\n const userId = event.selected[0].userId;\r\n // noinspection JSIgnoredPromiseFromCall\r\n this.router.navigate(['administration', 'user', userId, 'edit']);\r\n }\r\n}\r\n","import { AdministrationService } from '../../administration.service';\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { Router } from '@angular/router';\r\n\r\nimport { isNullOrUndefined } from 'util';\r\nimport { User } from '../../../../model/administration/user.model';\r\nimport { CommonService } from '../../../../common/common-service';\r\nimport { ToastrService } from 'ngx-toastr';\r\n\r\n@Component({\r\n templateUrl: './create-user.component.html',\r\n styleUrls: ['./create-user.component.scss', '../../../form.styles.scss'],\r\n})\r\nexport class CreateUserComponent implements OnInit {\r\n public saving: boolean;\r\n public loading: boolean;\r\n public roles: string[];\r\n public selectedRoles: string[];\r\n public header: string;\r\n protected errorMessage: string;\r\n protected successMessage: string;\r\n protected createUserForm: FormGroup;\r\n protected buttonText: string;\r\n\r\n public constructor(\r\n protected administrationService: AdministrationService,\r\n protected router: Router,\r\n protected toastr: ToastrService,\r\n public commonService: CommonService\r\n ) {\r\n this.createUserForm = new FormGroup({\r\n userId: new FormControl(''),\r\n firstName: new FormControl('', [\r\n Validators.required,\r\n Validators.maxLength(100),\r\n ]),\r\n lastName: new FormControl('', [\r\n Validators.required,\r\n Validators.maxLength(100),\r\n ]),\r\n cellNumber: new FormControl('', [\r\n Validators.minLength(10),\r\n Validators.maxLength(10),\r\n ]),\r\n landLineNumber: new FormControl('', [\r\n Validators.minLength(10),\r\n Validators.maxLength(10),\r\n ]),\r\n identityNumber: new FormControl('', [\r\n Validators.minLength(13),\r\n Validators.maxLength(13),\r\n ]),\r\n position: new FormControl(''),\r\n email: new FormControl('', [Validators.required, Validators.email]),\r\n inactiveInd: new FormControl(''),\r\n });\r\n\r\n this.header = 'Create User';\r\n this.buttonText = 'Save';\r\n this.selectedRoles = [];\r\n }\r\n\r\n public ngOnInit() {\r\n this.loading = true;\r\n this.administrationService.getRoles().subscribe(\r\n (result) => {\r\n result = result.filter((role) => {\r\n return role !== 'Administrator';\r\n });\r\n this.roles = result;\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n\r\n public onRoleChange(role) {\r\n const index = this.selectedRoles.indexOf(role);\r\n\r\n if (index === -1) {\r\n this.selectedRoles.push(role);\r\n } else {\r\n this.selectedRoles.splice(index, 1);\r\n }\r\n }\r\n\r\n public onSubmit(): void {\r\n this.successMessage = '';\r\n this.errorMessage = '';\r\n this.commonService.validateAllFormFields(this.createUserForm);\r\n if (!this.createUserForm.valid) {\r\n this.errorMessage =\r\n 'Please ensure all fields are filled in correctly';\r\n } else if (this.selectedRoles.length < 1) {\r\n this.errorMessage = 'You have to select at least one user role';\r\n } else {\r\n this.saving = true;\r\n\r\n const user: User = this.createUserForm.value;\r\n user.userRoles = this.selectedRoles;\r\n this.administrationService.createUser(user).subscribe(\r\n () => {\r\n this.toastr.success('User has been successfully created');\r\n this.router.navigate(['administration', 'user']);\r\n this.saving = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.saving = false;\r\n this.toastr.error(this.errorMessage);\r\n }\r\n );\r\n }\r\n }\r\n}\r\n","import { GeneratorVerificationToken } from './../model/generator-verification.model';\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { AdministrationService } from '../../administration.service';\r\nimport { UserVerification } from '../../../../model/administration/user-verification.model';\r\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\r\n\r\nimport { CommonService } from '../../../../common/common-service';\r\nimport { AuthenticationService } from '../../../../authentication/service/authentication.service';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { AuthorisationService } from '../../../../authorisation-service/authorisation.service';\r\n\r\n@Component({\r\n templateUrl: 'user-email-verification.component.html',\r\n})\r\nexport class UserEmailVerificationComponent implements OnInit {\r\n public errorMessage: string;\r\n public passwordForm: FormGroup;\r\n private userId: string;\r\n private token: string;\r\n\r\n constructor(\r\n private administrationService: AdministrationService,\r\n private router: Router,\r\n protected toaster: ToastrService,\r\n public commonService: CommonService,\r\n public authorisationService: AuthorisationService,\r\n public authService: AuthenticationService\r\n ) {\r\n this.passwordForm = new FormGroup({\r\n password: new FormControl('', [Validators.required]),\r\n confirmPassword: new FormControl('', [Validators.required]),\r\n });\r\n }\r\n\r\n public onSubmit() {\r\n if (!this.passwordForm.valid) {\r\n this.errorMessage = 'Please fill both text-boxes';\r\n } else if (\r\n this.passwordForm.value.password !==\r\n this.passwordForm.value.confirmPassword\r\n ) {\r\n this.errorMessage = 'Passwords have to match';\r\n } else if (this.passwordForm.value.password.length < 6) {\r\n this.errorMessage = 'Minimum length cannot be less than 6';\r\n } else {\r\n this.errorMessage = '';\r\n const verification: UserVerification = this.passwordForm.value;\r\n verification.userId = this.userId;\r\n verification.token = this.token;\r\n this.administrationService.createPassword(verification).subscribe(\r\n () => {\r\n this.toaster.success('Registration Complete');\r\n // noinspection JSIgnoredPromiseFromCall\r\n this.authService.logout();\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n }\r\n }\r\n\r\n public ngOnInit() {\r\n this.router.routerState.root.queryParams.subscribe(\r\n (params) => {\r\n this.commonService.clearOutTokens();\r\n this.userId = params['Id'];\r\n this.token = params['token'];\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n }\r\n}\r\n","import { CreateUserComponent } from '../create/create-user.component';\r\nimport { AdministrationService } from '../../administration.service';\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { User } from '../../../../model/administration/user.model';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { CommonService } from '../../../../common/common-service';\r\nimport { ToastrService } from 'ngx-toastr';\r\n\r\n@Component({\r\n templateUrl: '../create/create-user.component.html',\r\n styleUrls: ['../../../form.styles.scss'],\r\n})\r\nexport class EditUserComponent extends CreateUserComponent implements OnInit {\r\n public user: User;\r\n private queryParamsSubscription: Subscription;\r\n private userId: any;\r\n\r\n constructor(\r\n protected administrationService: AdministrationService,\r\n protected router: Router,\r\n protected toastr: ToastrService,\r\n protected route: ActivatedRoute,\r\n public commonService: CommonService\r\n ) {\r\n super(administrationService, router, toastr, commonService);\r\n this.header = 'Edit User';\r\n }\r\n\r\n public ngOnInit() {\r\n this.loading = true;\r\n super.ngOnInit();\r\n this.queryParamsSubscription = this.route.params.subscribe(\r\n (params) => {\r\n this.userId = params.userId;\r\n this.administrationService.getUser(this.userId).subscribe(\r\n (user) => {\r\n this.user = user;\r\n this.prePopulate();\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n }\r\n\r\n public onSubmit(): void {\r\n this.commonService.validateAllFormFields(this.createUserForm);\r\n this.successMessage = '';\r\n this.errorMessage = '';\r\n if (!this.createUserForm.valid) {\r\n this.errorMessage =\r\n 'Please ensure all fields are filled in correctly';\r\n return;\r\n } else if (this.selectedRoles.length < 1) {\r\n this.errorMessage = 'You have to select at least one user role';\r\n return;\r\n } else {\r\n this.saving = true;\r\n const user: User = this.createUserForm.value;\r\n user.userId = this.userId;\r\n user.userRoles = this.selectedRoles;\r\n this.administrationService.updateUser(user).subscribe(\r\n () => {\r\n this.toastr.success('User has been successfully updated');\r\n this.router.navigate(['administration', 'user']);\r\n this.saving = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.saving = false;\r\n this.toastr.error(this.errorMessage);\r\n }\r\n );\r\n }\r\n }\r\n\r\n private prePopulate(): void {\r\n this.createUserForm.patchValue({ userId: this.user.userId });\r\n this.createUserForm.patchValue({ userName: this.user.userName });\r\n this.createUserForm.patchValue({ firstName: this.user.firstName });\r\n this.createUserForm.patchValue({ lastName: this.user.lastName });\r\n this.createUserForm.patchValue({ email: this.user.email });\r\n this.createUserForm.patchValue({ cellNumber: this.user.cellNumber });\r\n this.createUserForm.patchValue({\r\n identityNumber: this.user.identityNumber,\r\n });\r\n this.createUserForm.patchValue({ position: this.user.position });\r\n this.createUserForm.patchValue({ inactiveInd: this.user.inactiveInd });\r\n\r\n this.selectedRoles = this.user.userRoles;\r\n }\r\n}\r\n","import { debounceTime } from 'rxjs/operators';\r\nimport { OnInit, Component } from '@angular/core';\r\nimport { FormGroup, FormControl } from '@angular/forms';\r\nimport { AdministrationService } from '../../administration.service';\r\nimport { Router } from '@angular/router';\r\nimport { Page } from '../../../../model/page.model';\r\nimport { CommonService } from '../../../../common/common-service';\r\n\r\n@Component({\r\n templateUrl: './sales-rep-list.component.html',\r\n styleUrls: ['./sales-rep-list.component.scss', '../../../form.styles.scss'],\r\n})\r\nexport class SalesRepListComponent implements OnInit {\r\n public searchGroup: FormGroup;\r\n public searchControl: FormControl;\r\n public columnHeaders: any;\r\n public page: Page;\r\n public loading: boolean;\r\n public salesReps: any;\r\n public errorMessage = '';\r\n private sortProp = {};\r\n\r\n constructor(\r\n private adminService: AdministrationService,\r\n private router: Router,\r\n public commonService: CommonService\r\n ) {\r\n this.columnHeaders = [\r\n { name: 'salesRepId' },\r\n { name: 'firstName' },\r\n { name: 'lastName' },\r\n ];\r\n\r\n this.page = new Page();\r\n\r\n this.searchControl = new FormControl('');\r\n this.searchGroup = new FormGroup({\r\n search: this.searchControl,\r\n });\r\n }\r\n\r\n public ngOnInit() {\r\n this.loading = true;\r\n this.searchControl.valueChanges.pipe(debounceTime(300)).subscribe(\r\n () => {\r\n this.changePage({ offset: 0 });\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n\r\n this.changePage({ offset: this.page.offset });\r\n }\r\n\r\n public changePage(pageInfo: any): void {\r\n const searchString = this.searchGroup.value.search;\r\n this.page.offset = pageInfo.offset * this.page.size;\r\n\r\n this.adminService\r\n .getSalesRepsPage(searchString, this.page, this.sortProp)\r\n .subscribe(\r\n (page) => {\r\n this.loading = false;\r\n this.page.totalPages = Math.ceil(\r\n page.totalItems / page.size\r\n );\r\n this.page.totalElements = page.totalItems;\r\n this.salesReps = page.items;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n\r\n public onSelect(event: any): void {\r\n const salesRepId = event.selected[0].salesRepId;\r\n this.router.navigate([\r\n 'administration',\r\n 'sales-rep',\r\n salesRepId,\r\n 'edit',\r\n ]);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { FormArray, FormGroup } from '@angular/forms';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { EntityLookup } from '../../model/entity-lookup.model';\r\nimport { Tariff } from '../../model/tariff/tariff.model';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable } from 'rxjs/Rx';\r\nimport { Page } from '../../model/page.model';\r\nimport { TariffTradingLimit } from '../../model/tariff/tariff-trading.limit.model';\r\n\r\n@Injectable()\r\nexport class TariffService {\r\n public periods: EntityLookup[];\r\n public seasons: EntityLookup[];\r\n public energyBrackets: EntityLookup[];\r\n public tariffTypes: EntityLookup[];\r\n\r\n constructor(private http: HttpClient) {}\r\n\r\n public getDistributorTariffs(distributorId: number): Observable {\r\n return this.http.get(\r\n API_URL + 'Tariff/GetDistributorTariffs?=' + distributorId\r\n );\r\n }\r\n\r\n public getTariff(tariffId: number): Observable {\r\n return this.http.get(API_URL + 'Tariff/GetTariff?=' + tariffId);\r\n }\r\n\r\n public getTariffsByProvinces(provinceIds: number[]): Observable {\r\n return this.http.post(\r\n API_URL + 'Tariff/GetTariffsByProvinces',\r\n provinceIds\r\n );\r\n }\r\n\r\n public createTariff(\r\n tariff: any,\r\n distributorId: number,\r\n consumerCompanyPremisesId\r\n ): Observable {\r\n tariff.distributorId = distributorId;\r\n tariff.consumerCompanyPremisesId = consumerCompanyPremisesId;\r\n return this.http.post(API_URL + 'Tariff/CreateTariff', tariff);\r\n }\r\n\r\n public updateTariff(tariff: any): Observable {\r\n return this.http.post(API_URL + 'Tariff/UpdateTariff', tariff);\r\n }\r\n\r\n public getTariffRate(tariffRateId: number): Observable {\r\n return this.http.get(\r\n API_URL + 'Tariff/GetTariffRate?tariffRateId=' + tariffRateId\r\n );\r\n }\r\n\r\n public createTariffRate(tariffRate: any): Observable {\r\n return this.http.post(API_URL + 'Tariff/CreateTariffRate', tariffRate);\r\n }\r\n\r\n public updateTariffRate(tariffRate: any): Observable {\r\n return this.http.post(API_URL + 'Tariff/UpdateTariffRate', tariffRate);\r\n }\r\n\r\n public getTariffRatesPage(\r\n searchString: string,\r\n page: Page,\r\n sortProp: any,\r\n tariffId: number\r\n ): Observable {\r\n if (isNullOrUndefined(sortProp.direction)) {\r\n sortProp.direction = '';\r\n }\r\n if (isNullOrUndefined(sortProp.property)) {\r\n sortProp.property = '';\r\n }\r\n return this.http.get(\r\n API_URL +\r\n 'Tariff/GetTariffRatesPage?searchString=' +\r\n searchString +\r\n '&offset=' +\r\n page.offset +\r\n '&pageSize=' +\r\n page.size +\r\n '&sortDirection=' +\r\n sortProp.direction +\r\n '&sortProperty=' +\r\n sortProp.property +\r\n '&tariffId=' +\r\n tariffId\r\n );\r\n }\r\n\r\n public validateDuplicateTariffCodes(\r\n tariffs: Tariff[]\r\n ): { isValid: boolean; validationMessage: string } {\r\n let isValid = true;\r\n let validationMessages = '';\r\n const duplicateTariffCodes: string[] = [];\r\n tariffs.forEach((tariff: Tariff, tariffIndex: number) => {\r\n if (\r\n !isNullOrUndefined(tariff.tariffCode) &&\r\n tariff.tariffCode !== ''\r\n ) {\r\n const duplicateTariff = tariffs.find(\r\n (innerTariff: Tariff, innerTariffIndex: number) => {\r\n return (\r\n innerTariffIndex !== tariffIndex &&\r\n !isNullOrUndefined(tariff.tariffCode) &&\r\n innerTariff.tariffCode.toLowerCase().trim() ===\r\n tariff.tariffCode.toLowerCase().trim()\r\n );\r\n }\r\n );\r\n if (!isNullOrUndefined(duplicateTariff)) {\r\n isValid = false;\r\n const duplicateTariffCode = tariff.tariffCode as string;\r\n if (\r\n !duplicateTariffCodes.find((dupTariffCode) => {\r\n return (\r\n dupTariffCode.toLowerCase().trim() ===\r\n duplicateTariffCode.toLowerCase().trim()\r\n );\r\n })\r\n ) {\r\n duplicateTariffCodes.push(\r\n duplicateTariffCode.toLowerCase().trim()\r\n );\r\n validationMessages +=\r\n '

Duplicate tariff code found: ' +\r\n duplicateTariffCode +\r\n '

';\r\n }\r\n }\r\n }\r\n });\r\n return { isValid, validationMessage: validationMessages };\r\n }\r\n\r\n public validateDuplicateTariffRates(\r\n tariffRates: FormArray\r\n ): { isValid: boolean; validationMessage: string } {\r\n let isValid = true;\r\n let validationMessages = '';\r\n const duplicateCombinations: string[] = [];\r\n tariffRates.controls.forEach(\r\n (tariffRate: FormGroup, tariffRateIndex: number) => {\r\n const duplicateTariffCharge = tariffRates.controls.find(\r\n (\r\n innerTariffRate: FormGroup,\r\n innerTariffRateIndex: number\r\n ) => {\r\n return (\r\n innerTariffRateIndex !== tariffRateIndex &&\r\n !isNullOrUndefined(\r\n tariffRate.controls.periodId.value\r\n ) &&\r\n innerTariffRate.controls.periodId.value ===\r\n tariffRate.controls.periodId.value &&\r\n !isNullOrUndefined(\r\n tariffRate.controls.seasonId.value\r\n ) &&\r\n innerTariffRate.controls.seasonId.value ===\r\n tariffRate.controls.seasonId.value &&\r\n !isNullOrUndefined(\r\n tariffRate.controls.energyBracketLookupId.value\r\n ) &&\r\n innerTariffRate.controls.energyBracketLookupId\r\n .value ===\r\n tariffRate.controls.energyBracketLookupId.value\r\n );\r\n }\r\n );\r\n if (!isNullOrUndefined(duplicateTariffCharge)) {\r\n isValid = false;\r\n const duplicateCombo = ((((tariffRate.controls.periodId\r\n .value as string) +\r\n tariffRate.controls.seasonId.value) as string) +\r\n tariffRate.controls.energyBracketLookupId\r\n .value) as string;\r\n if (\r\n !duplicateCombinations.find((combo) => {\r\n return combo === duplicateCombo;\r\n })\r\n ) {\r\n duplicateCombinations.push(duplicateCombo);\r\n validationMessages +=\r\n '

Tariff has a duplicate energy bracket \"' +\r\n this.energyBrackets.find(\r\n (energyBracket: EntityLookup) => {\r\n return (\r\n energyBracket.entityLookupId ===\r\n tariffRate.controls\r\n .energyBracketLookupId.value\r\n );\r\n }\r\n ).value +\r\n '\" for season \"' +\r\n this.seasons.find((season: EntityLookup) => {\r\n return (\r\n season.entityLookupId ===\r\n tariffRate.controls.seasonId.value\r\n );\r\n }).value +\r\n '\" in period \"' +\r\n this.periods.find((period: EntityLookup) => {\r\n return (\r\n period.entityLookupId ===\r\n tariffRate.controls.periodId.value\r\n );\r\n }).value +\r\n '\"

';\r\n }\r\n }\r\n }\r\n );\r\n return { isValid, validationMessage: validationMessages };\r\n }\r\n\r\n public validateMissingOrIncorrectTariffRates(\r\n tariffRates: FormArray,\r\n tariffTypeId: number\r\n ): { isValid: boolean; validationMessage: string } {\r\n let isValid = true;\r\n let validationMessages = '';\r\n const tariffType = this.tariffTypes.find((tarType: EntityLookup) => {\r\n return tarType.entityLookupId === tariffTypeId;\r\n });\r\n\r\n if (isNullOrUndefined(tariffType)) {\r\n return { isValid: true, validationMessage: '' };\r\n }\r\n\r\n const requiredEnergyBrackets: EntityLookup[] =\r\n tariffType.value === 'TOU 2 Part'\r\n ? this.energyBrackets.filter((energyBracket: EntityLookup) => {\r\n return (\r\n energyBracket.value === 'Peak' ||\r\n energyBracket.value === 'OffPeak'\r\n );\r\n })\r\n : tariffType.value === 'TOU 3 Part'\r\n ? this.energyBrackets.filter(\r\n (energyBracket: EntityLookup) => {\r\n return (\r\n energyBracket.value === 'Peak' ||\r\n energyBracket.value === 'OffPeak' ||\r\n energyBracket.value === 'Standard'\r\n );\r\n }\r\n )\r\n : this.energyBrackets.filter(\r\n (energyBracket: EntityLookup) => {\r\n return energyBracket.value === 'Flat';\r\n }\r\n ); // 'Non-TOU'\r\n\r\n if (isNullOrUndefined(requiredEnergyBrackets)) {\r\n return { isValid: true, validationMessage: '' };\r\n }\r\n\r\n const tariffPeriodIds: string[] = [];\r\n tariffRates.controls.forEach((tariffRate: FormGroup) => {\r\n if (\r\n tariffPeriodIds.indexOf(tariffRate.controls.periodId.value) < 0\r\n ) {\r\n tariffPeriodIds.push(tariffRate.controls.periodId.value);\r\n }\r\n });\r\n\r\n tariffPeriodIds.forEach((periodId: string) => {\r\n if (!isNullOrUndefined(periodId)) {\r\n this.seasons.forEach((season: EntityLookup) => {\r\n const periodSeasonTariffRates: FormGroup[] = tariffRates.controls.filter(\r\n (tariffRate: FormGroup) => {\r\n return (\r\n tariffRate.controls.periodId.value ===\r\n periodId &&\r\n tariffRate.controls.seasonId.value ===\r\n season.entityLookupId\r\n );\r\n }\r\n ) as FormGroup[];\r\n requiredEnergyBrackets.forEach(\r\n (requiredEnergyBracket: EntityLookup) => {\r\n const tariffRateFound = periodSeasonTariffRates.find(\r\n (periodTariffRate: FormGroup) => {\r\n return (\r\n periodTariffRate.controls\r\n .energyBracketLookupId.value ===\r\n requiredEnergyBracket.entityLookupId\r\n );\r\n }\r\n );\r\n if (!tariffRateFound) {\r\n isValid = false;\r\n validationMessages +=\r\n '

Tariff is missing energy bracket \"' +\r\n requiredEnergyBracket.value +\r\n '\" for season \"' +\r\n season.value +\r\n '\" in period \"' +\r\n this.periods.find(\r\n (period: EntityLookup) => {\r\n return (\r\n period.entityLookupId ===\r\n +periodId\r\n );\r\n }\r\n ).value +\r\n '\"

';\r\n }\r\n }\r\n );\r\n periodSeasonTariffRates.forEach(\r\n (periodSeasonTariffRate: FormGroup) => {\r\n if (\r\n !isNullOrUndefined(\r\n periodSeasonTariffRate.controls\r\n .energyBracketLookupId.value\r\n )\r\n ) {\r\n const TariffRate = requiredEnergyBrackets.find(\r\n (requiredEnergyBracket: EntityLookup) => {\r\n return (\r\n requiredEnergyBracket.entityLookupId ===\r\n periodSeasonTariffRate.controls\r\n .energyBracketLookupId.value\r\n );\r\n }\r\n );\r\n if (isNullOrUndefined(TariffRate)) {\r\n isValid = false;\r\n validationMessages +=\r\n '

Tariff has incorrect energy bracket \"' +\r\n this.energyBrackets.find(\r\n (energyBracket: EntityLookup) => {\r\n return (\r\n energyBracket.entityLookupId ===\r\n periodSeasonTariffRate\r\n .controls\r\n .energyBracketLookupId\r\n .value\r\n );\r\n }\r\n ).value +\r\n '\" for season \"' +\r\n season.value +\r\n '\" in period \"' +\r\n this.periods.find(\r\n (period: EntityLookup) => {\r\n return (\r\n period.entityLookupId ===\r\n +periodId\r\n );\r\n }\r\n ).value +\r\n '\"

';\r\n }\r\n }\r\n }\r\n );\r\n });\r\n }\r\n });\r\n\r\n return { isValid, validationMessage: validationMessages };\r\n }\r\n\r\n public tariffValidations(\r\n tariffs: Tariff[],\r\n tariffForm: FormGroup,\r\n periods: EntityLookup[],\r\n seasons: EntityLookup[],\r\n energyBrackets: EntityLookup[],\r\n tariffTypes: EntityLookup[]\r\n ): { isValid: boolean; validationMessage: string } {\r\n this.periods = periods;\r\n this.seasons = seasons;\r\n this.energyBrackets = energyBrackets;\r\n this.tariffTypes = tariffTypes;\r\n let isValid = true;\r\n let validationMessages = '';\r\n let validationResult: { isValid: boolean; validationMessage: string };\r\n\r\n validationResult = this.validateDuplicateTariffRates(tariffForm.controls\r\n .tariffRates as FormArray);\r\n if (!validationResult.isValid) {\r\n isValid = false;\r\n validationMessages += validationResult.validationMessage;\r\n }\r\n\r\n validationResult = this.validateMissingOrIncorrectTariffRates(\r\n tariffForm.controls.tariffRates as FormArray,\r\n tariffForm.controls.tariffTypeLookupId.value\r\n );\r\n if (!validationResult.isValid) {\r\n isValid = false;\r\n validationMessages += validationResult.validationMessage;\r\n }\r\n\r\n if (tariffForm.controls.tariffId.value === 0) {\r\n tariffs.push(\r\n new Tariff(\r\n tariffForm.value.tariffName,\r\n [],\r\n 0,\r\n tariffForm.value.tariffCode\r\n )\r\n );\r\n } else {\r\n if (\r\n isNullOrUndefined(\r\n tariffs.find(\r\n (t) => t.tariffId === tariffForm.controls.tariffId.value\r\n )\r\n )\r\n ) {\r\n tariffs.push(tariffForm.value as Tariff);\r\n }\r\n const tariff = tariffs.find(\r\n (t) => t.tariffId === tariffForm.controls.tariffId.value\r\n );\r\n tariff.tariffCode = tariffForm.controls.tariffCode.value;\r\n }\r\n\r\n validationResult = this.validateDuplicateTariffCodes(tariffs);\r\n if (!validationResult.isValid) {\r\n isValid = false;\r\n validationMessages += validationResult.validationMessage;\r\n }\r\n\r\n if (tariffForm.controls.tariffId.value === 0) {\r\n tariffs.pop();\r\n }\r\n return { isValid, validationMessage: validationMessages };\r\n }\r\n\r\n public getDistributorTariffsPage(\r\n distributorId: number,\r\n searchString: string,\r\n page: Page,\r\n sortProp: any\r\n ): Observable {\r\n if (isNullOrUndefined(sortProp.direction)) {\r\n sortProp.direction = '';\r\n }\r\n if (isNullOrUndefined(sortProp.property)) {\r\n sortProp.property = '';\r\n }\r\n\r\n return this.http.get(\r\n API_URL +\r\n 'Tariff/GetDistributorTariffsPage?distributorId=' +\r\n distributorId +\r\n '&searchString=' +\r\n searchString +\r\n '&offset=' +\r\n page.offset +\r\n '&pageSize=' +\r\n page.size +\r\n '&sortDirection=' +\r\n sortProp.direction +\r\n '&sortProperty=' +\r\n sortProp.property\r\n );\r\n }\r\n\r\n public getTariffTradingLimits(tariffId: number) {\r\n return this.http.get(\r\n API_URL + 'Tariff/GetTariffTradingLimits?tariffId=' + tariffId\r\n );\r\n }\r\n\r\n public createOrUpdateTariffTradingLimits(\r\n tariffTradingLimits: TariffTradingLimit[]\r\n ) {\r\n return this.http.post(\r\n API_URL + 'Tariff/CreateOrUpdateTariffTradingLimits',\r\n tariffTradingLimits\r\n );\r\n }\r\n}\r\n","import { Component, OnInit, TemplateRef } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\n\r\nimport { AdministrationService } from '../../administration.service';\r\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { IMultiSelectSettings } from 'angular-2-dropdown-multiselect';\r\nimport { CommonService } from '../../../../common/common-service';\r\nimport { SalesTarget } from '../../../../model/administration/sales-target.model';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { Tariff } from '../../../../model/tariff/tariff.model';\r\nimport { BsModalRef, BsModalService } from 'ngx-bootstrap';\r\nimport { TariffService } from '../../../tariff/tariff.service';\r\nimport { EntityLookup } from '../../../../model/entity-lookup.model';\r\nimport { CustomValidators } from 'ng4-validators';\r\n\r\n@Component({\r\n templateUrl: './create-sales-rep.component.html',\r\n styleUrls: [\r\n './create-sales-rep.component.scss',\r\n '../../../form.styles.scss',\r\n ],\r\n})\r\nexport class CreateSalesRepComponent implements OnInit {\r\n public contacts = [];\r\n public selectedProvinces: number[] = [];\r\n public createSalesRepForm: FormGroup;\r\n public salesTargetForm: FormGroup;\r\n public salesTargets: SalesTarget[] = [];\r\n public saving: boolean;\r\n public loading: boolean = true;\r\n public tableLoading: boolean = false;\r\n public header: string;\r\n public provinces: any;\r\n public validationMessage: string;\r\n public years = [];\r\n public quarters: EntityLookup[] = [];\r\n public tariffs: Tariff[] = [];\r\n public provinceSettings: IMultiSelectSettings = {\r\n checkedStyle: 'fontawesome',\r\n buttonClasses: 'btn btn-default',\r\n dynamicTitleMaxItems: 9,\r\n closeOnSelect: false,\r\n enableSearch: true,\r\n };\r\n public errorMessage = '';\r\n private modalRef: BsModalRef;\r\n private salesTargetEditMode: boolean = false;\r\n\r\n constructor(\r\n protected router: Router,\r\n protected toaster: ToastrService,\r\n protected administrationService: AdministrationService,\r\n public commonService: CommonService,\r\n private modalService: BsModalService,\r\n private tariffService: TariffService\r\n ) {\r\n this.createSalesRepForm = new FormGroup({\r\n national: new FormControl(null),\r\n provincesSelected: new FormControl([]),\r\n contactName: new FormControl('', Validators.required),\r\n salesRepId: new FormControl(0),\r\n contactId: new FormControl('', Validators.required),\r\n });\r\n this.header = 'Activate Sales Rep';\r\n }\r\n\r\n public ngOnInit() {\r\n const currentYear = new Date().getFullYear();\r\n this.salesTargetForm = new FormGroup({\r\n salesTargetId: new FormControl(0),\r\n tariffId: new FormControl(\r\n {\r\n value: null,\r\n disabled:\r\n this.createSalesRepForm.controls.salesRepId.value !== 0,\r\n },\r\n Validators.required\r\n ),\r\n year: new FormControl(\r\n {\r\n value: currentYear,\r\n disabled:\r\n this.createSalesRepForm.controls.salesRepId.value !== 0,\r\n },\r\n [Validators.required, Validators.min(2000)]\r\n ),\r\n quarterLookupId: new FormControl(null, Validators.required),\r\n peak: new FormControl(null, [\r\n Validators.required,\r\n CustomValidators.number,\r\n Validators.min(0),\r\n Validators.max(9999999999.99999),\r\n ]),\r\n offPeak: new FormControl(null, [\r\n Validators.required,\r\n CustomValidators.number,\r\n Validators.min(0),\r\n Validators.max(9999999999.99999),\r\n ]),\r\n standard: new FormControl(null, [\r\n Validators.required,\r\n CustomValidators.number,\r\n Validators.min(0),\r\n Validators.max(9999999999.99999),\r\n ]),\r\n });\r\n this.commonService.getEntityLookups(['Quarter', 'Province']).subscribe(\r\n (entityLookups) => {\r\n this.provinces = [];\r\n this.quarters = entityLookups.entityLookupResultList['quarter'];\r\n entityLookups.entityLookupResultList['province'].forEach(\r\n (element) => {\r\n this.provinces.push({\r\n id: element.entityLookupId,\r\n name: element.value,\r\n });\r\n }\r\n );\r\n this.createSalesRepForm.controls[\r\n 'provincesSelected'\r\n ].valueChanges.subscribe(\r\n (selectedOptions) => {\r\n this.selectedProvinces = selectedOptions;\r\n this.getTariffsForSelectedProvinces();\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n\r\n public fetchContacts(searchString: string): void {\r\n this.administrationService.getContacts(searchString).subscribe(\r\n (contacts) => {\r\n this.contacts = contacts;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n\r\n public provincesChanged() {\r\n this.getTariffsForSelectedProvinces();\r\n }\r\n\r\n public selectedContact($event: any): void {\r\n const contact = $event.item;\r\n this.createSalesRepForm.patchValue({ contactName: contact.name });\r\n this.createSalesRepForm.patchValue({ contactId: contact.contactId });\r\n }\r\n\r\n public onSubmit(): void {\r\n this.commonService.validateAllFormFields(this.createSalesRepForm);\r\n\r\n if (\r\n !this.createSalesRepForm.controls.national.value &&\r\n this.selectedProvinces.length === 0\r\n ) {\r\n this.validationMessage =\r\n 'Please Select a province or set the sales rep as national';\r\n } else if (this.salesTargets.length === 0) {\r\n this.validationMessage =\r\n 'Please capture at least one sales target for the sales rep';\r\n } else if (this.createSalesRepForm.valid) {\r\n this.saving = true;\r\n this.cleanProvinces();\r\n this.administrationService\r\n .createSalesRep(\r\n this.createSalesRepForm.value,\r\n this.selectedProvinces,\r\n this.salesTargets\r\n )\r\n .subscribe(\r\n () => {\r\n this.saving = false;\r\n this.toaster.success(\r\n 'Sales Rep successfully activated'\r\n );\r\n this.router.navigate(['administration', 'sales-rep']);\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.saving = false;\r\n this.toaster.error(this.errorMessage);\r\n }\r\n );\r\n } else {\r\n this.toaster.show('Kindly ensure all form fields are filled in');\r\n }\r\n }\r\n\r\n public newSalesTargetClicked(template: TemplateRef) {\r\n // Show Modal\r\n this.salesTargetForm.reset();\r\n this.salesTargetEditMode = false;\r\n this.handleFormControlsDisabledEnabled();\r\n this.modalRef = this.modalService.show(template);\r\n }\r\n\r\n public salesTargetSelected(event: any, template: TemplateRef): void {\r\n this.salesTargetForm.reset();\r\n this.salesTargetEditMode = true;\r\n const salesTarget: SalesTarget = event.selected[0];\r\n this.salesTargetForm.patchValue({\r\n salesTargetId: salesTarget.salesTargetId,\r\n });\r\n this.salesTargetForm.patchValue({ tariffId: salesTarget.tariffId });\r\n this.salesTargetForm.patchValue({ year: salesTarget.year });\r\n this.salesTargetForm.patchValue({\r\n quarterLookupId: salesTarget.quarterLookupId,\r\n });\r\n this.salesTargetForm.patchValue({ peak: salesTarget.peak });\r\n this.salesTargetForm.patchValue({ offPeak: salesTarget.offPeak });\r\n this.salesTargetForm.patchValue({ standard: salesTarget.standard });\r\n this.handleFormControlsDisabledEnabled();\r\n this.modalRef = this.modalService.show(template);\r\n }\r\n\r\n public onPopupSubmit() {\r\n this.commonService.validateAllFormFields(this.salesTargetForm);\r\n if (this.salesTargetForm.valid) {\r\n const selectedTariff = this.tariffs.find(\r\n (tariff) =>\r\n tariff.tariffId ===\r\n this.salesTargetForm.get('tariffId').value\r\n );\r\n const selectedQuarter = this.quarters.find(\r\n (quarter) =>\r\n quarter.entityLookupId ===\r\n this.salesTargetForm.get('quarterLookupId').value\r\n );\r\n const newTarget = new SalesTarget(\r\n this.salesTargetForm.get('salesTargetId').value,\r\n selectedTariff,\r\n selectedTariff.tariffId,\r\n selectedQuarter,\r\n selectedQuarter.entityLookupId,\r\n this.salesTargetForm.get('year').value,\r\n this.salesTargetForm.get('offPeak').value,\r\n this.salesTargetForm.get('peak').value,\r\n this.salesTargetForm.get('standard').value\r\n );\r\n let newEntryWillBeDuplicate = false;\r\n this.salesTargets.forEach((salesTarget) => {\r\n if (\r\n !this.salesTargetEditMode &&\r\n salesTarget.year === newTarget.year &&\r\n salesTarget.tariffId === newTarget.tariffId &&\r\n salesTarget.quarterLookupId === newTarget.quarterLookupId\r\n ) {\r\n newEntryWillBeDuplicate = true;\r\n return;\r\n }\r\n });\r\n if (newEntryWillBeDuplicate) {\r\n this.toaster.show(\r\n 'Can not load duplicate sales target for the same year, tariff as well as quarter'\r\n );\r\n return;\r\n }\r\n if (this.salesTargetEditMode) {\r\n const targetToUpdate = this.salesTargets.find(\r\n (x) =>\r\n x.year === newTarget.year &&\r\n x.tariffId === newTarget.tariffId &&\r\n x.quarterLookupId === newTarget.quarterLookupId\r\n );\r\n const indexToUpdate = this.salesTargets.indexOf(targetToUpdate);\r\n\r\n targetToUpdate.peak = newTarget.peak;\r\n targetToUpdate.offPeak = newTarget.offPeak;\r\n targetToUpdate.standard = newTarget.standard;\r\n\r\n this.salesTargets[indexToUpdate] = targetToUpdate;\r\n } else {\r\n this.salesTargets.push(newTarget);\r\n }\r\n this.salesTargets = [...this.salesTargets];\r\n this.modalRef.hide();\r\n }\r\n }\r\n\r\n public deleteRow(row: SalesTarget) {\r\n // NOTE: This is for the onSelect method above to not be called as well,\r\n // since ngx-datatable sees the button click as the row being selected.\r\n event.stopPropagation();\r\n\r\n const index = this.salesTargets.indexOf(row);\r\n this.salesTargets.splice(index, 1);\r\n this.salesTargets = [...this.salesTargets];\r\n }\r\n\r\n protected cleanProvinces(): void {\r\n if (this.createSalesRepForm.controls.national.value) {\r\n this.selectedProvinces = [];\r\n }\r\n }\r\n\r\n protected getTariffsForSelectedProvinces() {\r\n this.tariffService\r\n .getTariffsByProvinces(this.selectedProvinces)\r\n .subscribe(\r\n (result) => {\r\n this.tariffs = result;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n }\r\n\r\n private handleFormControlsDisabledEnabled() {\r\n if (this.salesTargetEditMode) {\r\n this.commonService.disableControl(\r\n this.salesTargetForm.get('tariffId')\r\n );\r\n this.commonService.disableControl(this.salesTargetForm.get('year'));\r\n this.commonService.disableControl(\r\n this.salesTargetForm.get('quarterLookupId')\r\n );\r\n } else {\r\n this.commonService.enableControl(\r\n this.salesTargetForm.get('tariffId')\r\n );\r\n this.commonService.enableControl(this.salesTargetForm.get('year'));\r\n this.commonService.enableControl(\r\n this.salesTargetForm.get('quarterLookupId')\r\n );\r\n }\r\n }\r\n}\r\n","import { Tariff } from '../tariff/tariff.model';\r\nimport { EntityLookup } from '../entity-lookup.model';\r\n\r\nexport class SalesTarget {\r\n constructor(\r\n public salesTargetId: number = 0,\r\n public tariff: Tariff,\r\n public tariffId: number = 0,\r\n public quarter: EntityLookup,\r\n public quarterLookupId: number = 0,\r\n public year: number = null,\r\n public offPeak: number = 0,\r\n public peak: number = 0,\r\n public standard: number = 0\r\n ) {}\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\n\r\nimport { AdministrationService } from '../../administration.service';\r\nimport { CreateSalesRepComponent } from '../create/create-sales-rep.component';\r\nimport { SalesRep } from '../../../../model/administration/sales-rep.model';\r\nimport { Subscription } from 'rxjs';\r\nimport { CommonService } from '../../../../common/common-service';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { BsModalService } from 'ngx-bootstrap';\r\nimport { TariffService } from '../../../tariff/tariff.service';\r\n\r\n@Component({\r\n templateUrl: '../create/create-sales-rep.component.html',\r\n styleUrls: [\r\n '../create/create-sales-rep.component.scss',\r\n '../../../form.styles.scss',\r\n ],\r\n})\r\n// @ts-ignore\r\nexport class EditSalesRepComponent extends CreateSalesRepComponent\r\n implements OnInit {\r\n public salesRep: SalesRep;\r\n\r\n private queryParamsSubscription: Subscription;\r\n private salesRepId: number;\r\n\r\n constructor(\r\n protected router: Router,\r\n protected toaster: ToastrService,\r\n protected administrationService: AdministrationService,\r\n public commonService: CommonService,\r\n protected route: ActivatedRoute,\r\n private modalService: BsModalService,\r\n private tariffService: TariffService\r\n ) {\r\n super(\r\n router,\r\n toaster,\r\n administrationService,\r\n commonService,\r\n modalService,\r\n tariffService\r\n );\r\n this.header = 'Edit Sales Rep';\r\n }\r\n\r\n public ngOnInit() {\r\n super.ngOnInit();\r\n this.queryParamsSubscription = this.route.params.subscribe(\r\n (params) => {\r\n this.administrationService\r\n .getSalesRep(params.salesRepId)\r\n .subscribe(\r\n (salesRep) => {\r\n this.salesRep = salesRep;\r\n this.salesTargets = salesRep.salesTargets;\r\n this.createSalesRepForm.patchValue({\r\n contactName: salesRep.contact.name,\r\n });\r\n this.createSalesRepForm.patchValue({\r\n contactId: salesRep.contact.contactId,\r\n });\r\n this.createSalesRepForm.patchValue({\r\n salesRepId: salesRep.salesRepId,\r\n });\r\n this.createSalesRepForm.patchValue({\r\n national: salesRep.national,\r\n });\r\n this.createSalesRepForm.patchValue({\r\n provincesSelected: salesRep.provinces,\r\n });\r\n this.commonService.disableControl(\r\n this.createSalesRepForm.controls.contactName\r\n );\r\n this.getTariffsForSelectedProvinces();\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n }\r\n\r\n public onSubmit(): void {\r\n this.commonService.validateAllFormFields(this.createSalesRepForm);\r\n\r\n if (\r\n !this.createSalesRepForm.controls.national.value &&\r\n this.selectedProvinces.length === 0\r\n ) {\r\n this.validationMessage =\r\n 'Please Select a province or set the sales rep as national';\r\n } else if (this.salesTargets.length === 0) {\r\n this.validationMessage =\r\n 'Please capture at least one sales target for the sales rep';\r\n } else if (this.createSalesRepForm.valid) {\r\n this.saving = true;\r\n this.cleanProvinces();\r\n this.administrationService\r\n .updateSalesRep(\r\n this.createSalesRepForm.value,\r\n this.selectedProvinces,\r\n this.salesTargets\r\n )\r\n .subscribe(\r\n () => {\r\n this.saving = false;\r\n this.toaster.success('Sales Rep successfully updated');\r\n this.router.navigate(['administration', 'sales-rep']);\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.saving = false;\r\n this.toaster.error(this.errorMessage);\r\n }\r\n );\r\n } else {\r\n this.toaster.show('Kindly ensure all form fields are filled in');\r\n }\r\n }\r\n}\r\n","import { Component, OnInit, OnDestroy } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\nimport { AllocationRunService } from '../allocation-run.service';\r\nimport { AllocationSendWarning } from '../../../../model/allocation/allocation-send-warning.model';\r\nimport { CommonService } from '../../../../common/common-service';\r\n\r\nimport { ToastrService } from 'ngx-toastr';\r\n\r\n@Component({\r\n templateUrl: './allocation-send-warnings.component.html',\r\n styleUrls: ['./allocation-send-warnings.component.scss'],\r\n})\r\nexport class AllocationSendWarningsComponent implements OnInit, OnDestroy {\r\n public loading: boolean = true;\r\n public warnings: AllocationSendWarning[];\r\n public errorMessage: string;\r\n public startDate: Date;\r\n public runDate: Date;\r\n\r\n private routeParamsSubscription: Subscription;\r\n private queryParamsSubscription: Subscription;\r\n private allocationRunId: number;\r\n\r\n constructor(\r\n private router: Router,\r\n private route: ActivatedRoute,\r\n private service: AllocationRunService,\r\n public commonService: CommonService,\r\n private allocationRunService: AllocationRunService,\r\n private toastr: ToastrService\r\n ) {}\r\n\r\n public ngOnInit(): void {\r\n this.warnings = [];\r\n this.queryParamsSubscription = this.route.queryParams.subscribe(\r\n (params) => {\r\n this.startDate = params.startDate;\r\n this.runDate = params.runDate;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n this.routeParamsSubscription = this.route.params.subscribe(\r\n (params) => {\r\n this.allocationRunId = params.allocationRunId;\r\n this.service\r\n .getAllocationSendWarnings(this.allocationRunId)\r\n .subscribe(\r\n (result) => {\r\n this.warnings = result;\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n if (!isNullOrUndefined(this.routeParamsSubscription)) {\r\n this.routeParamsSubscription.unsubscribe();\r\n }\r\n }\r\n\r\n public resendAllocationResults(): void {\r\n this.allocationRunService\r\n .sendAllocationDataToPTSi(this.allocationRunId)\r\n .subscribe(\r\n () => {\r\n this.router.navigate([\r\n 'allocation',\r\n this.allocationRunId,\r\n 'details',\r\n ]);\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.toastr.error(this.errorMessage);\r\n this.router.navigate([\r\n 'allocation',\r\n this.allocationRunId,\r\n 'details',\r\n ]);\r\n }\r\n );\r\n }\r\n}\r\n","import { ConsumerCompanyService } from '../../../consumer-company/consumer-company.service';\r\nimport { Router } from '@angular/router';\r\nimport { CommonService } from '../../../../common/common-service';\r\nimport {\r\n AfterViewChecked,\r\n ChangeDetectorRef,\r\n Component,\r\n OnInit,\r\n} from '@angular/core';\r\nimport {\r\n FormArray,\r\n FormBuilder,\r\n FormControl,\r\n FormGroup,\r\n Validators,\r\n} from '@angular/forms';\r\nimport { CustomValidators } from 'ng4-validators';\r\nimport { DistributorService } from '../../../distributor/distributor.service';\r\nimport { EntityLookup } from '../../../../model/entity-lookup.model';\r\nimport { Attribute } from '../../../../model/attribute.model';\r\nimport {\r\n IMultiSelectOption,\r\n IMultiSelectSettings,\r\n} from 'angular-2-dropdown-multiselect';\r\nimport { ComponentTriggersService } from '../../../../common/component-triggers.service';\r\nimport { SalesRep } from '../../../../model/administration/sales-rep.model';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { AuthorisationService } from '../../../../authorisation-service/authorisation.service';\r\n\r\n@Component({\r\n selector: 'consumer-details',\r\n templateUrl: 'consumer-details.component.html',\r\n styleUrls: [\r\n './consumer-details.component.scss',\r\n './../../../form.styles.scss',\r\n ],\r\n})\r\nexport class ConsumerDetailsComponent implements OnInit, AfterViewChecked {\r\n public consumerCompanyForm: FormGroup;\r\n public addressForm: FormGroup;\r\n public companyTypes: EntityLookup[];\r\n public consumerCompanyStandings: EntityLookup[];\r\n public distributionAreas: any[];\r\n public salesReps: SalesRep[];\r\n public distributorTariffs: any[];\r\n public consumerBusinessActivities: EntityLookup[];\r\n public contactAttributes: IMultiSelectOption[] = [];\r\n public errorMessage = '';\r\n public saving = false;\r\n public loading = false;\r\n public currentlyLoggedInSalesRep: string = '';\r\n\r\n public successMessage = '';\r\n public displaySuccess = false;\r\n public provinces: EntityLookup[];\r\n\r\n public canChooseTariffCode: boolean = false;\r\n\r\n public contactTypesSettings: IMultiSelectSettings = {\r\n checkedStyle: 'checkboxes',\r\n buttonClasses: 'btn btn-default',\r\n dynamicTitleMaxItems: 1,\r\n closeOnSelect: false,\r\n showCheckAll: true,\r\n showUncheckAll: true,\r\n };\r\n\r\n constructor(\r\n private formBuilder: FormBuilder,\r\n private cdRef: ChangeDetectorRef,\r\n public commonService: CommonService,\r\n public authorisationService: AuthorisationService,\r\n private consumerCompanyService: ConsumerCompanyService,\r\n private distributorService: DistributorService,\r\n private router: Router,\r\n protected toastr: ToastrService,\r\n private componentTriggerService: ComponentTriggersService\r\n ) {\r\n this.addressForm = new FormGroup({\r\n addressId: new FormControl(null),\r\n addressLine1: new FormControl('', [\r\n Validators.required,\r\n Validators.maxLength(100),\r\n ]),\r\n addressLine2: new FormControl('', [\r\n Validators.required,\r\n Validators.maxLength(100),\r\n ]),\r\n addressLine3: new FormControl('', [Validators.maxLength(100)]),\r\n province: new FormControl(null, [Validators.required]),\r\n city: new FormControl('', [\r\n Validators.required,\r\n Validators.maxLength(50),\r\n ]),\r\n postalCode: new FormControl('', [\r\n Validators.required,\r\n Validators.maxLength(10),\r\n CustomValidators.digits,\r\n ]),\r\n isRural: new FormControl(false),\r\n });\r\n this.consumerCompanyForm = new FormGroup({\r\n companyName: new FormControl(null, [\r\n Validators.required,\r\n Validators.maxLength(50),\r\n ]),\r\n registrationNumber: new FormControl(null, [\r\n Validators.required,\r\n Validators.maxLength(14),\r\n ]),\r\n telephoneNumber: new FormControl(null, [\r\n Validators.required,\r\n Validators.maxLength(20),\r\n CustomValidators.digits,\r\n ]),\r\n companyTypeLookupId: new FormControl(null, [Validators.required]),\r\n companyStanding: new FormControl(null, [Validators.required]),\r\n vatNumber: new FormControl(null, [Validators.minLength(10)]),\r\n taxYearBeginDate: new FormControl('', [Validators.required]),\r\n salesRep: new FormControl(null, [Validators.required]),\r\n companyPremises: this.formBuilder.array([this.initPremises()]),\r\n additionalContacts: this.formBuilder.array([this.initContact()]),\r\n address: this.addressForm,\r\n });\r\n }\r\n\r\n public ngOnInit() {\r\n this.loading = true;\r\n if (this.commonService.isSalesRepUserLoggedIn()) {\r\n this.currentlyLoggedInSalesRep = this.commonService.getCurrentUserFullName();\r\n }\r\n // Entity Lookups\r\n this.commonService\r\n .getEntityLookups([\r\n 'CompanyType',\r\n 'ConsumerCompanyStanding',\r\n 'ConsumerBusinessActivity',\r\n 'Province',\r\n ])\r\n .subscribe(\r\n (response) => {\r\n this.companyTypes =\r\n response.entityLookupResultList['companyType'];\r\n this.consumerCompanyStandings =\r\n response.entityLookupResultList[\r\n 'consumerCompanyStanding'\r\n ];\r\n this.consumerBusinessActivities =\r\n response.entityLookupResultList[\r\n 'consumerBusinessActivity'\r\n ];\r\n this.provinces =\r\n response['entityLookupResultList']['province'];\r\n\r\n // Distributors\r\n this.distributorService.getAllDistributors().subscribe(\r\n (distributionAreas) => {\r\n this.distributionAreas = distributionAreas;\r\n // Contact Attributes\r\n this.commonService\r\n .getAttributes([\r\n 'IsElectricityBillingsContact',\r\n 'IsAuthorisedContact',\r\n ])\r\n .subscribe(\r\n (attributes) => {\r\n const attributesArray: Attribute[] =\r\n attributes['attributeResultList'];\r\n attributesArray.forEach(\r\n (element: Attribute) => {\r\n this.contactAttributes.push({\r\n id: element.attributeId,\r\n name:\r\n element.attributeDisplayName,\r\n });\r\n }\r\n );\r\n\r\n const distributorIds = [];\r\n this.distributionAreas.forEach(\r\n (distributor) => {\r\n distributorIds.push(\r\n distributor.distributorId\r\n );\r\n }\r\n );\r\n this.distributorService\r\n .getDistributorTariffs(\r\n distributorIds\r\n )\r\n .subscribe(\r\n (distributorTariffs) => {\r\n this.distributorTariffs =\r\n distributorTariffs[\r\n 'distributorTariffResultList'\r\n ];\r\n this.consumerCompanyService\r\n .GetSalesRepsDropDown()\r\n .subscribe(\r\n (\r\n salesReps: SalesRep[]\r\n ) => {\r\n this.salesReps = salesReps;\r\n if (\r\n this\r\n .currentlyLoggedInSalesRep\r\n ) {\r\n const foundCurrentRep = salesReps.find(\r\n (\r\n salesRep\r\n ) => {\r\n return (\r\n salesRep\r\n .contact\r\n .firstName +\r\n ' ' +\r\n salesRep\r\n .contact\r\n .lastName ===\r\n this\r\n .currentlyLoggedInSalesRep\r\n );\r\n }\r\n );\r\n if (\r\n foundCurrentRep\r\n ) {\r\n this.consumerCompanyForm\r\n .get(\r\n 'salesRep'\r\n )\r\n .setValue(\r\n foundCurrentRep.salesRepId\r\n );\r\n }\r\n }\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n\r\n public ngAfterViewChecked() {\r\n this.cdRef.detectChanges();\r\n }\r\n\r\n public initContact(): FormGroup {\r\n return this.formBuilder.group({\r\n firstName: ['', [Validators.required, Validators.maxLength(50)]],\r\n lastName: ['', [Validators.required, Validators.maxLength(50)]],\r\n identityNumber: [\r\n '',\r\n [\r\n Validators.required,\r\n Validators.minLength(13),\r\n Validators.maxLength(13),\r\n CustomValidators.digits,\r\n ],\r\n ],\r\n position: ['', [Validators.required, Validators.maxLength(30)]],\r\n cellNumber: [\r\n '',\r\n [\r\n Validators.required,\r\n Validators.maxLength(20),\r\n CustomValidators.digits,\r\n ],\r\n ],\r\n landLineNumber: [\r\n '',\r\n [\r\n Validators.required,\r\n Validators.maxLength(20),\r\n CustomValidators.digits,\r\n ],\r\n ],\r\n email: [\r\n '',\r\n [\r\n Validators.required,\r\n Validators.email,\r\n Validators.maxLength(100),\r\n ],\r\n ],\r\n contactTypes: [[], [Validators.required]],\r\n });\r\n }\r\n\r\n public addContactDetails(): void {\r\n const control = this.consumerCompanyForm.controls\r\n .additionalContacts as FormArray;\r\n control.push(this.initContact());\r\n }\r\n\r\n public removeContactDetails(index: number): void {\r\n if (confirm('Are you sure to delete this contact?')) {\r\n const control = this.consumerCompanyForm.controls\r\n .additionalContacts as FormArray;\r\n control.removeAt(index);\r\n }\r\n }\r\n\r\n public addPremises(): void {\r\n (this.consumerCompanyForm.controls.companyPremises as FormArray).push(\r\n this.initPremises()\r\n );\r\n }\r\n\r\n public removePremises(index: number): void {\r\n if (confirm('Are you sure to delete this premises?')) {\r\n (this.consumerCompanyForm.controls\r\n .companyPremises as FormArray).removeAt(index);\r\n }\r\n }\r\n\r\n public onTariffCodesProvidedChange(companyPremises) {\r\n const companyPremisesFormGroup = (companyPremises as FormGroup)\r\n .controls;\r\n const checked = companyPremisesFormGroup.tariffCodesProvided.value;\r\n const tariffCodeControl = companyPremisesFormGroup.tariffCode;\r\n\r\n if (checked) {\r\n tariffCodeControl.setValidators([Validators.required]);\r\n } else {\r\n tariffCodeControl.setValidators([]);\r\n }\r\n tariffCodeControl.updateValueAndValidity();\r\n }\r\n\r\n public onDistributorChange(companyPremises) {\r\n const selectedDistributorId =\r\n companyPremises.controls.distributor.value;\r\n\r\n const companyPremisesFormGroup = (companyPremises as FormGroup)\r\n .controls;\r\n\r\n const tariffCodesProvidedControl =\r\n companyPremisesFormGroup.tariffCodesProvided;\r\n const tariffCodeControl = companyPremisesFormGroup.tariffCode;\r\n\r\n if (selectedDistributorId != null) {\r\n this.distributorService\r\n .getDistributorTariffsByDistributorId(selectedDistributorId)\r\n .subscribe(\r\n (tariffs) => {\r\n this.distributorTariffs = tariffs;\r\n tariffCodeControl.setValue(null);\r\n tariffCodesProvidedControl.setValue(null);\r\n this.distributorTariffs.length > 0\r\n ? tariffCodesProvidedControl.enable()\r\n : tariffCodesProvidedControl.disable();\r\n tariffCodeControl.updateValueAndValidity();\r\n this.canChooseTariffCode =\r\n this.distributorTariffs.length > 0;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.toastr.error(this.errorMessage);\r\n }\r\n );\r\n } else {\r\n tariffCodesProvidedControl.disable();\r\n tariffCodeControl.setValidators([]);\r\n tariffCodesProvidedControl.setValue(false);\r\n this.canChooseTariffCode = false;\r\n }\r\n }\r\n\r\n public onSubmit(): void {\r\n this.commonService.validateAllFormFields(this.consumerCompanyForm);\r\n this.componentTriggerService.triggerValidationMessages.next();\r\n if (this.validateContactTypes() && this.consumerCompanyForm.valid) {\r\n this.saving = true;\r\n this.consumerCompanyService\r\n .createConsumerCompany(this.consumerCompanyForm.value)\r\n .subscribe(\r\n () => {\r\n this.saving = false;\r\n this.toastr.success('Premises Created Successfully');\r\n this.router.navigate(['consumers', 'prospects']);\r\n this.displaySuccess = true;\r\n this.successMessage =\r\n 'The premises was created successfully.';\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n\r\n this.saving = false;\r\n this.toastr.error(this.errorMessage);\r\n }\r\n );\r\n }\r\n }\r\n private validateContactTypes(): boolean {\r\n let isValid = true;\r\n let authorisedContactFound = false;\r\n let electricityBillingsContactFound = false;\r\n let authorisedContactTypeId: number;\r\n let electricityBillingsContactTypeId: number;\r\n\r\n this.contactAttributes.forEach((contactType) => {\r\n if (contactType.name === 'Authorised Contact') {\r\n authorisedContactTypeId = contactType.id;\r\n }\r\n if (contactType.name === 'Electricity Billings Contact') {\r\n electricityBillingsContactTypeId = contactType.id;\r\n }\r\n });\r\n\r\n const additionalContacts = (this.consumerCompanyForm.controls\r\n .additionalContacts as FormArray).controls;\r\n additionalContacts.forEach((contact) => {\r\n const contactFormGroup = (contact as FormGroup).controls;\r\n (contactFormGroup.contactTypes.value as number[]).forEach(\r\n (contactTypeId) => {\r\n if (contactTypeId === authorisedContactTypeId) {\r\n if (authorisedContactFound) {\r\n this.errorMessage =\r\n 'Multiple authorised contacts found';\r\n\r\n isValid = false;\r\n } else {\r\n authorisedContactFound = true;\r\n }\r\n }\r\n if (contactTypeId === electricityBillingsContactTypeId) {\r\n if (electricityBillingsContactFound) {\r\n this.errorMessage =\r\n 'Multiple electricity billings contacts found';\r\n\r\n isValid = false;\r\n } else {\r\n electricityBillingsContactFound = true;\r\n }\r\n }\r\n }\r\n );\r\n });\r\n\r\n if (!authorisedContactFound) {\r\n this.errorMessage = 'No authorised contact found';\r\n\r\n isValid = false;\r\n }\r\n if (!electricityBillingsContactFound) {\r\n this.errorMessage = 'No electricity billings contact found';\r\n\r\n isValid = false;\r\n }\r\n\r\n return isValid;\r\n }\r\n\r\n private initPremises(): FormGroup {\r\n return this.formBuilder.group({\r\n companyName: new FormControl('', [\r\n Validators.required,\r\n Validators.maxLength(50),\r\n ]),\r\n businessActivity: new FormControl(null, [Validators.required]),\r\n accountNumber: new FormControl(null, [\r\n Validators.required,\r\n CustomValidators.number,\r\n Validators.maxLength(50),\r\n ]),\r\n smartMeterInstalled: new FormControl(null),\r\n tariffCodesProvided: new FormControl({\r\n value: false,\r\n disabled: true,\r\n }),\r\n distributor: new FormControl(null, [Validators.required]),\r\n premisesContacts: this.formBuilder.array([]),\r\n tariffCode: new FormControl(null),\r\n });\r\n }\r\n}\r\n","import { map } from 'rxjs/operators';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Page } from '../../../model/page.model';\r\n\r\n@Injectable()\r\nexport class ExportService {\r\n constructor(private http: HttpClient) {}\r\n\r\n public getSapConsumersExport(): Observable {\r\n return this.http\r\n .get(API_URL + 'export/SapConsumersExport', {\r\n responseType: 'blob',\r\n })\r\n .pipe(map((response) => response));\r\n }\r\n\r\n public getSapGeneratorsExport(): Observable {\r\n return this.http\r\n .get(API_URL + 'export/SapGeneratorsExport', {\r\n responseType: 'blob',\r\n })\r\n .pipe(map((response) => response));\r\n }\r\n\r\n public getDebtorsInvoiceExport(allocationRunId: number): Observable {\r\n return this.http\r\n .get(\r\n API_URL +\r\n 'export/SapDebtorsExport?allocationRunId=' +\r\n allocationRunId,\r\n { responseType: 'blob' }\r\n )\r\n .pipe(map((response) => response));\r\n }\r\n\r\n public getRecsExport(consumerCompanyId: number): Observable {\r\n return this.http\r\n .get(\r\n API_URL +\r\n 'export/ExportRecs?consumerCompanyId=' +\r\n consumerCompanyId,\r\n { responseType: 'blob' }\r\n )\r\n .pipe(map((response) => response));\r\n }\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { ExportService } from './export.service';\r\nimport { saveAs as importedSaveAs } from 'file-saver';\r\nimport { CommonService } from '../../common/common-service';\r\n\r\nimport { ToastrService } from 'ngx-toastr';\r\n\r\n@Component({\r\n selector: 'app-sap-export',\r\n templateUrl: './sap-export.component.html',\r\n styleUrls: ['./sap-export.component.scss'],\r\n})\r\nexport class SapExportComponent {\r\n public loading: boolean;\r\n\r\n constructor(\r\n private sapExportService: ExportService,\r\n private commonService: CommonService,\r\n private toastr: ToastrService\r\n ) {}\r\n\r\n public onDownloadSapConsumersExport() {\r\n this.loading = true;\r\n this.toastr.info('Processing SAP consumer export');\r\n this.sapExportService.getSapConsumersExport().subscribe(\r\n (blob) => {\r\n importedSaveAs(blob, 'SapConsumersExport.txt');\r\n this.loading = false;\r\n this.toastr.success('Downloading SAP consumer export');\r\n },\r\n () => {\r\n this.loading = false;\r\n this.toastr.error(\r\n 'An error occurred while attempting to retrieve the SAP consumer export'\r\n );\r\n }\r\n );\r\n }\r\n\r\n public onDownloadSapGeneratorsExport() {\r\n this.loading = true;\r\n this.toastr.info('Processing SAP generator export');\r\n this.sapExportService.getSapGeneratorsExport().subscribe(\r\n (blob) => {\r\n importedSaveAs(blob, 'SapGeneratorsExport.txt');\r\n this.loading = false;\r\n this.toastr.success('Downloading SAP generator export');\r\n },\r\n () => {\r\n this.loading = false;\r\n this.toastr.error(\r\n 'An error occurred while attempting to retrieve the SAP generator export'\r\n );\r\n }\r\n );\r\n }\r\n}\r\n","import { debounceTime } from 'rxjs/operators';\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { FormGroup, FormControl } from '@angular/forms';\r\nimport { Page } from '../../../model/page.model';\r\nimport { DistributorService } from '../distributor.service';\r\nimport { Router } from '@angular/router';\r\nimport { EntityLookup } from '../../../model/entity-lookup.model';\r\nimport { CommonService } from '../../../common/common-service';\r\nimport { isNullOrUndefined } from 'util';\r\n\r\n@Component({\r\n selector: 'app-distributor-list',\r\n templateUrl: './distributor-list.component.html',\r\n styleUrls: ['./distributor-list.component.scss', '../../form.styles.scss'],\r\n})\r\nexport class DistributorListComponent implements OnInit {\r\n public searchGroup: FormGroup;\r\n public searchControl: FormControl;\r\n public columnHeaders: any;\r\n public page: Page;\r\n public loading: boolean;\r\n public list: any;\r\n public regex = /[0-9]+: /g;\r\n public provinces: EntityLookup[];\r\n public errorMessage = '';\r\n private sortProp = {};\r\n private filterProp = {\r\n provinceLookupId: 0,\r\n agreementSigned: -1,\r\n };\r\n\r\n constructor(\r\n private commonService: CommonService,\r\n private distributorService: DistributorService,\r\n private router: Router\r\n ) {\r\n this.columnHeaders = [\r\n { name: 'distributorId' },\r\n { name: 'name' },\r\n { name: 'province' },\r\n { name: 'townName' },\r\n { name: 'agreementSigned' },\r\n { name: 'totalConsumption' },\r\n { name: 'allowedPowerToTrade' },\r\n { name: 'trading' },\r\n { name: 'tradeForCurrentMonth' },\r\n ];\r\n\r\n this.page = new Page();\r\n\r\n this.searchControl = new FormControl('');\r\n this.searchGroup = new FormGroup({\r\n search: this.searchControl,\r\n agreementSigned: new FormControl(-1),\r\n provinceLookupId: new FormControl(0),\r\n });\r\n }\r\n\r\n public ngOnInit() {\r\n this.loading = true;\r\n this.searchControl.valueChanges.pipe(debounceTime(300)).subscribe(\r\n () => {\r\n this.changePage({ offset: 0 });\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n this.commonService.getEntityLookups(['Province']).subscribe(\r\n (entityLookups) => {\r\n this.provinces =\r\n entityLookups.entityLookupResultList['province'];\r\n this.changePage({ offset: this.page.offset });\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n\r\n public changePage(pageInfo: any): void {\r\n this.errorMessage = '';\r\n const searchString = this.searchGroup.value.search;\r\n this.page.offset = pageInfo.offset * this.page.size;\r\n\r\n this.distributorService\r\n .getPage(searchString, this.page, this.sortProp, this.filterProp)\r\n .subscribe(\r\n (page) => {\r\n this.loading = false;\r\n this.page.totalPages = Math.ceil(\r\n page.totalItems / page.size\r\n );\r\n this.page.totalElements = page.totalItems;\r\n this.list = page.items;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n\r\n public onSelect(event: any): void {\r\n const distributorId = event.selected[0].distributorId;\r\n this.router.navigate(['distributor', distributorId, 'edit']);\r\n }\r\n\r\n public sortColumn(event: any): void {\r\n this.sortProp = {\r\n direction: event.sorts[0].dir,\r\n property: event.sorts[0].prop,\r\n };\r\n this.changePage({ offset: 0 });\r\n }\r\n\r\n public onProvinceChange(entityLookupId: number) {\r\n this.filterProp.provinceLookupId = entityLookupId;\r\n this.changePage({ offset: 0 });\r\n }\r\n\r\n public onAgreementSignedChange(agreementSigned: number) {\r\n this.filterProp.agreementSigned = agreementSigned;\r\n this.changePage({ offset: 0 });\r\n }\r\n}\r\n","import { map } from 'rxjs/operators';\r\nimport { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { IntegratorProvider } from '../../../model/administration/integrator-provider.model';\r\n\r\n@Injectable()\r\nexport class IntegratorProviderService {\r\n constructor(private httpClient: HttpClient) {}\r\n\r\n public getIntegratorProviders(): Observable {\r\n return this.httpClient.get(\r\n API_URL + 'IntegratorProvider/GetAllIntergatorProviders'\r\n );\r\n }\r\n\r\n public getIntegratorProviderDetail(\r\n integratorProviderId: number\r\n ): Observable {\r\n return this.httpClient.get(\r\n API_URL +\r\n 'IntegratorProvider/GetIntergatorProviderDetail?integratorProviderId=' +\r\n integratorProviderId\r\n );\r\n }\r\n\r\n public getIntegrationProviderGeneratorFeesTemplate(): Observable {\r\n return this.httpClient\r\n .get(\r\n API_URL +\r\n 'IntegratorProvider/GetIntegrationProviderGeneratorFeesTemplate',\r\n { responseType: 'blob' }\r\n )\r\n .pipe(map((response) => response));\r\n }\r\n\r\n public getIntegrationProviderConsumerFeesTemplate(): Observable {\r\n return this.httpClient\r\n .get(\r\n API_URL +\r\n 'IntegratorProvider/GetIntegrationProviderConsumerFeesTemplate',\r\n { responseType: 'blob' }\r\n )\r\n .pipe(map((response) => response));\r\n }\r\n\r\n public getIntegrationProviderGeneratorFeesDownload(\r\n integratorProviderServiceFeeUploadId: number\r\n ): Observable {\r\n return this.httpClient\r\n .get(\r\n API_URL +\r\n 'IntegratorProvider/GetIntegrationProviderGeneratorFeesDownload?integratorProviderServiceFeeUploadId=' +\r\n integratorProviderServiceFeeUploadId,\r\n { responseType: 'blob' }\r\n )\r\n .pipe(map((response) => response));\r\n }\r\n\r\n public getIntegrationProviderConsumerFeesDownload(\r\n integratorProviderServiceFeeUploadId: number\r\n ): Observable {\r\n return this.httpClient\r\n .get(\r\n API_URL +\r\n 'IntegratorProvider/GetIntegrationProviderConsumerFeesDownload?integratorProviderServiceFeeUploadId=' +\r\n integratorProviderServiceFeeUploadId,\r\n { responseType: 'blob' }\r\n )\r\n .pipe(map((response) => response));\r\n }\r\n\r\n public AddIntegratorProvider(\r\n integratorProvider: IntegratorProvider\r\n ): Observable {\r\n return this.httpClient.post(\r\n API_URL + 'IntegratorProvider/AddIntegratorProvider',\r\n integratorProvider\r\n );\r\n }\r\n\r\n public deleteIntegratorProviderServiceFeeUpload(\r\n integratorProviderServiceFeeUploadId: number\r\n ): Observable {\r\n return this.httpClient.get(\r\n API_URL +\r\n 'IntegratorProvider/DeleteIntegratorProviderServiceFeeUpload?integratorProviderServiceFeeUploadId=' +\r\n integratorProviderServiceFeeUploadId\r\n );\r\n }\r\n\r\n public getIntegratorProviderServiceGeneratorFee(\r\n integratorProviderServiceFeeUploadId: number\r\n ): Observable {\r\n return this.httpClient.get(\r\n API_URL +\r\n 'IntegratorProvider/GetIntegratorProviderServiceGeneratorFee?integratorProviderServiceFeeUploadId=' +\r\n integratorProviderServiceFeeUploadId\r\n );\r\n }\r\n\r\n public getIntegratorProviderServiceConsumerFee(\r\n integratorProviderServiceFeeUploadId: number\r\n ): Observable {\r\n return this.httpClient.get(\r\n API_URL +\r\n 'IntegratorProvider/GetIntegratorProviderServiceConsumerFee?integratorProviderServiceFeeUploadId=' +\r\n integratorProviderServiceFeeUploadId\r\n );\r\n }\r\n}\r\n","import {\r\n AfterViewChecked,\r\n ChangeDetectorRef,\r\n Component,\r\n OnInit,\r\n} from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\n\r\nimport { DistributorService } from '../distributor.service';\r\nimport { FormArray, FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { EntityLookupService } from 'app/component/entity-lookup/entity-lookup.service';\r\nimport { CommonService } from '../../../common/common-service';\r\nimport { ColumnConfiguration } from '../../../model/crud-table/column-configuration.model';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { EntityLookup } from '../../../model/entity-lookup.model';\r\nimport { Season } from '../../../model/season.model';\r\nimport { Period } from '../../../model/period.model';\r\nimport { ComponentTriggersService } from '../../../common/component-triggers.service';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { IntegratorProviderService } from '../../administration/integrator-providers/integrator-provider.service';\r\nimport { IntegratorProvider } from '../../../model/administration/integrator-provider.model';\r\nimport { AuthorisationService } from '../../../authorisation-service/authorisation.service';\r\n\r\n@Component({\r\n selector: 'app-create-distributor',\r\n templateUrl: './create-distributor.component.html',\r\n styleUrls: [\r\n '../../form.styles.scss',\r\n './create-distributor.component.scss',\r\n ],\r\n})\r\nexport class CreateDistributorComponent implements OnInit, AfterViewChecked {\r\n public loading: boolean = true;\r\n public initialLoadGeneralTab: boolean = undefined;\r\n public initialLoadWepsLessLosesTab: boolean = undefined;\r\n public initialLoadTariffsTab: boolean = undefined;\r\n public initialLoadContactTab: boolean = undefined;\r\n public initialLoadConsumptionAndLimitsTab: boolean = undefined;\r\n public initialLoadPrepaidVendorsTab: boolean = undefined;\r\n public initialLoadDistributorIncreaseTab: boolean = undefined;\r\n public activeTab: string;\r\n public loadingEdit = false;\r\n public saving: boolean;\r\n public header: string;\r\n public isReadOnlyMode: boolean = true;\r\n public errorMessage = '';\r\n public provinces: EntityLookup[];\r\n public seasons: EntityLookup[];\r\n public periods: EntityLookup[];\r\n public eskomTariffs: EntityLookup[];\r\n public billingCycleDates: EntityLookup[];\r\n public integrators: IntegratorProvider[];\r\n public distributorForm: FormGroup;\r\n public distributorTariffsControl: FormArray;\r\n\r\n public constructor(\r\n protected router: Router,\r\n protected toastr: ToastrService,\r\n protected distributorService: DistributorService,\r\n protected commonService: CommonService,\r\n private authorisationService: AuthorisationService,\r\n protected cdRef: ChangeDetectorRef,\r\n protected sanitizer: DomSanitizer,\r\n protected componentTriggerService: ComponentTriggersService,\r\n protected integratorProviderService: IntegratorProviderService,\r\n public route: ActivatedRoute\r\n ) {\r\n this.distributorTariffsControl = new FormArray([]);\r\n this.distributorForm = new FormGroup({\r\n distributorId: new FormControl(0),\r\n name: new FormControl('', [Validators.required]),\r\n townName: new FormControl(''),\r\n distributorIdentifier: new FormControl(''),\r\n provinceLookupId: new FormControl(null, [Validators.required]),\r\n dateDUoSASigned: new FormControl(null, [Validators.required]),\r\n useDistributionAgreement: new FormControl(false),\r\n eligibleForGeneratorApplication: new FormControl(false),\r\n tariffs: this.distributorTariffsControl,\r\n duoSaDocument: new FormControl(null, [Validators.required]),\r\n billingSystem: new FormControl(''),\r\n billingCycleDateLookupId: new FormControl(null, [\r\n Validators.required,\r\n ]),\r\n integratorProviderId: new FormControl(null, [Validators.required]),\r\n });\r\n\r\n this.header = 'Create Distributor';\r\n this.loading = false;\r\n }\r\n\r\n public ngAfterViewChecked() {\r\n this.cdRef.detectChanges();\r\n }\r\n\r\n public ngOnInit() {\r\n this.loading = true;\r\n this.initialLoadGeneralTab = true;\r\n this.activeTab = 'general';\r\n this.commonService\r\n .getEntityLookups([\r\n 'BillingCycleDate',\r\n 'Technology',\r\n 'EnergyBracket',\r\n 'TariffType',\r\n 'EskomTariff',\r\n 'Season',\r\n 'Period',\r\n 'Province',\r\n ])\r\n .subscribe(\r\n (data) => {\r\n this.billingCycleDates =\r\n data.entityLookupResultList['billingCycleDate'];\r\n this.eskomTariffs =\r\n data.entityLookupResultList['eskomTariff'];\r\n this.periods = data.entityLookupResultList['period'];\r\n this.seasons = data.entityLookupResultList['season'];\r\n this.provinces = data.entityLookupResultList['province'];\r\n\r\n // Load integrators\r\n this.integratorProviderService\r\n .getIntegratorProviders()\r\n .subscribe(\r\n (page: any) => {\r\n this.integrators = page;\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n this.isReadOnlyMode = this.authorisationService.isDistributorsReadOnly();\r\n if (this.isReadOnlyMode) {\r\n this.distributorForm.disable();\r\n }\r\n }\r\n\r\n public onSubmit(): void {\r\n this.toggleFullForm();\r\n this.errorMessage = '';\r\n this.commonService.validateAllFormFields(this.distributorForm);\r\n this.componentTriggerService.triggerValidationMessages.next();\r\n if (this.distributorForm.valid) {\r\n this.saving = true;\r\n this.distributorService\r\n .createDistributor(this.distributorForm.value)\r\n .subscribe(\r\n () => {\r\n this.toastr.success(\r\n 'Distributor has been successfully created'\r\n );\r\n this.router.navigate(['distributor']);\r\n this.saving = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.saving = false;\r\n }\r\n );\r\n } else {\r\n this.errorMessage =\r\n 'Please ensure all fields are filled in correctly';\r\n this.saving = false;\r\n }\r\n }\r\n\r\n public toggleFullForm() {\r\n if (!this.distributorForm.controls.useDistributionAgreement.value) {\r\n this.commonService.disableControl(\r\n this.distributorForm.controls.dateDUoSASigned\r\n );\r\n this.commonService.disableControl(\r\n this.distributorForm.controls.duoSaDocument\r\n );\r\n this.commonService.disableControl(\r\n this.distributorForm.controls.billingCycleDateLookupId\r\n );\r\n this.commonService.disableControl(\r\n this.distributorForm.controls.integratorProviderId\r\n );\r\n } else {\r\n this.commonService.enableControl(\r\n this.distributorForm.controls.dateDUoSASigned,\r\n [Validators.required],\r\n false\r\n );\r\n this.commonService.enableControl(\r\n this.distributorForm.controls.duoSaDocument,\r\n [Validators.required],\r\n false\r\n );\r\n this.commonService.enableControl(\r\n this.distributorForm.controls.billingCycleDateLookupId,\r\n [Validators.required],\r\n false\r\n );\r\n this.commonService.enableControl(\r\n this.distributorForm.controls.integratorProviderId,\r\n [Validators.required],\r\n false\r\n );\r\n }\r\n }\r\n\r\n public documentUpload(output: any) {\r\n this.distributorForm.controls.duoSaDocument.patchValue(output.value);\r\n }\r\n\r\n public onTabChange(tabset: any): void {\r\n this.activeTab = tabset.tabs.filter((tab) => tab.active)[0].id;\r\n }\r\n}\r\n","import {\r\n AfterViewChecked,\r\n ChangeDetectorRef,\r\n Component,\r\n OnDestroy,\r\n OnInit,\r\n} from '@angular/core';\r\nimport { ActivatedRoute, Router, UrlSegment } from '@angular/router';\r\nimport { Subscription, BehaviorSubject } from 'rxjs';\r\nimport { isNullOrUndefined } from 'util';\r\n\r\nimport { DistributorService } from '../distributor.service';\r\nimport { CreateDistributorComponent } from '../create/create-distributor.component';\r\nimport { EntityLookupService } from 'app/component/entity-lookup/entity-lookup.service';\r\nimport { CommonService } from '../../../common/common-service';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { Distributor } from '../../../model/distributor.model';\r\nimport { ComponentTriggersService } from '../../../common/component-triggers.service';\r\nimport { Validators } from '@angular/forms';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { IntegratorProviderService } from '../../administration/integrator-providers/integrator-provider.service';\r\nimport { AuthorisationService } from '../../../authorisation-service/authorisation.service';\r\n\r\n@Component({\r\n selector: 'app-edit-distributor',\r\n templateUrl: '../create/create-distributor.component.html',\r\n styleUrls: [\r\n '../../form.styles.scss',\r\n '../create/create-distributor.component.scss',\r\n ],\r\n})\r\n// @ts-ignore\r\nexport class EditDistributorComponent extends CreateDistributorComponent\r\n implements OnInit, OnDestroy, AfterViewChecked {\r\n public wheelingFees: any;\r\n public meterInstallationCharges: any;\r\n public wepsLessLosses: any;\r\n public wepsLessLossesPeriodDailyRates: any;\r\n public isEskom: boolean;\r\n private distributorId: number;\r\n private queryParamsSubscription: Subscription;\r\n\r\n public constructor(\r\n public router: Router,\r\n public route: ActivatedRoute,\r\n public toastr: ToastrService,\r\n public distributorService: DistributorService,\r\n public commonService: CommonService,\r\n private authorisationService: AuthorisationService,\r\n public cdRef: ChangeDetectorRef,\r\n public sanitizer: DomSanitizer,\r\n public componentTriggerService: ComponentTriggersService,\r\n public integratorProviderService: IntegratorProviderService\r\n ) {\r\n super(\r\n router,\r\n toastr,\r\n distributorService,\r\n commonService,\r\n authorisationService,\r\n cdRef,\r\n sanitizer,\r\n componentTriggerService,\r\n integratorProviderService,\r\n route\r\n );\r\n this.header = 'Edit Distributor';\r\n }\r\n\r\n public ngAfterViewChecked() {\r\n this.cdRef.detectChanges();\r\n }\r\n\r\n public ngOnInit(): void {\r\n super.ngOnInit();\r\n this.loading = true;\r\n this.loadingEdit = true;\r\n const isEskomRoute: boolean =\r\n (this.route.url as BehaviorSubject).value[1].path ===\r\n 'eskom';\r\n this.queryParamsSubscription = this.route.params.subscribe(\r\n (params) => {\r\n this.activeTab = isNullOrUndefined(params.activeTab)\r\n ? isEskomRoute\r\n ? 'weps-less-losses'\r\n : 'general'\r\n : params.activeTab;\r\n this.distributorId = params.distributorId;\r\n this.distributorService\r\n .getDistributor(this.distributorId, isEskomRoute)\r\n .subscribe(\r\n (distributor) => {\r\n if (distributor.name === 'ESKOM') {\r\n this.isEskom = true;\r\n this.setupEskomForm();\r\n } else {\r\n this.initialLoadGeneralTab = true;\r\n }\r\n this.prePopulate(distributor);\r\n\r\n this.activeTab =\r\n !isNullOrUndefined(\r\n distributor.useDistributionAgreement\r\n ) &&\r\n !isNullOrUndefined(distributor.duoSaDocument)\r\n ? 'dashboard'\r\n : this.activeTab;\r\n this.loading = false;\r\n this.loadingEdit = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n this.loadingEdit = false;\r\n }\r\n );\r\n },\r\n (error) => {\r\n this.loadingEdit = false;\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n\r\n public onSubmit(): void {\r\n this.toggleFullForm();\r\n this.errorMessage = '';\r\n this.commonService.validateAllFormFields(this.distributorForm);\r\n this.componentTriggerService.triggerValidationMessages.next();\r\n if (this.distributorForm.valid) {\r\n this.saving = true;\r\n this.commonService.enableControl(\r\n this.distributorForm.controls.name,\r\n [Validators.required]\r\n );\r\n this.distributorService\r\n .updateDistributor(this.distributorForm.value)\r\n .subscribe(\r\n () => {\r\n this.toastr.success(\r\n 'Distributor has been successfully updated'\r\n );\r\n this.ngOnInit();\r\n this.saving = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.saving = false;\r\n }\r\n );\r\n } else {\r\n this.errorMessage =\r\n 'Please ensure all fields are filled in correctly';\r\n }\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n if (!isNullOrUndefined(this.queryParamsSubscription)) {\r\n this.queryParamsSubscription.unsubscribe();\r\n }\r\n }\r\n\r\n private prePopulate(distributor: Distributor): void {\r\n this.distributorForm.patchValue({\r\n distributorId: distributor.distributorId,\r\n });\r\n this.distributorForm.patchValue({ name: distributor.name });\r\n this.distributorForm.patchValue({ townName: distributor.townName });\r\n this.distributorForm.patchValue({\r\n distributorIdentifier: distributor.distributorIdentifier,\r\n });\r\n this.distributorForm.patchValue({\r\n dateDUoSASigned: distributor.dateDUoSASigned,\r\n });\r\n this.distributorForm.patchValue({\r\n duoSaDocument: distributor.duoSaDocument,\r\n });\r\n this.distributorForm.patchValue({\r\n billingSystem: distributor.billingSystem,\r\n });\r\n this.distributorForm.patchValue({\r\n provinceLookupId: distributor.provinceLookupId,\r\n });\r\n this.distributorForm.patchValue({\r\n eligibleForGeneratorApplication:\r\n distributor.eligibleForGeneratorApplication,\r\n });\r\n this.distributorForm.patchValue({\r\n useDistributionAgreement: distributor.useDistributionAgreement,\r\n });\r\n this.distributorForm.patchValue({\r\n integratorProviderId: distributor.integratorProviderId,\r\n });\r\n this.distributorForm.patchValue({\r\n billingCycleDateLookupId: distributor.billingCycleDateLookupId,\r\n });\r\n this.wheelingFees = distributor.wheelingFees;\r\n this.meterInstallationCharges = distributor.meterInstallationCharges;\r\n this.wepsLessLosses = distributor.wepsLessLosses;\r\n this.wepsLessLossesPeriodDailyRates =\r\n distributor.wepsLessLossesPeriodDailyRates;\r\n }\r\n\r\n private setupEskomForm() {\r\n this.header = 'Eskom Maintenance';\r\n this.activeTab = 'wepsLessLoses';\r\n this.initialLoadWepsLessLosesTab = true;\r\n this.commonService.disableControl(\r\n this.distributorForm.controls.provinceLookupId,\r\n false\r\n );\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { GeneratorEvaluationInput } from '../../../../model/generator/generator-evaluation-input.model';\r\n\r\n@Injectable()\r\nexport class GeneratorEvaluationService {\r\n constructor(private httpClient: HttpClient) {}\r\n\r\n public getPendingGeneratorProjectFacilities(\r\n searchString: string,\r\n distributorId: number,\r\n statusLookupId: number\r\n ): Observable {\r\n return this.httpClient.get(\r\n API_URL +\r\n 'GeneratorProjectFacility/GetPendingGeneratorProjectFacilities?searchString=' +\r\n searchString +\r\n '&distributorId=' +\r\n distributorId +\r\n '&statusLookupId=' +\r\n statusLookupId\r\n );\r\n }\r\n\r\n public getArchivedPendingGeneratorProjectFacilities(\r\n searchString: string,\r\n distributorId: number,\r\n statusLookupId: number\r\n ): Observable {\r\n return this.httpClient.get(\r\n API_URL +\r\n 'GeneratorProjectFacility/GetPendingGeneratorProjectFacilities?searchString=' +\r\n searchString +\r\n '&distributorId=' +\r\n distributorId +\r\n '&statusLookupId=' +\r\n statusLookupId +\r\n '&isArchived=true'\r\n );\r\n }\r\n\r\n public getGeneratorProjectFacility(id: number): Observable {\r\n return this.httpClient.get(\r\n API_URL +\r\n 'GeneratorProjectFacility/GetGeneratorProjectFacility?generatorProjectFacilityId=' +\r\n id\r\n );\r\n }\r\n\r\n public updateGeneratorProjectFacilityEvaluation(\r\n evaluationInput: GeneratorEvaluationInput\r\n ): Observable {\r\n return this.httpClient.post(\r\n API_URL + 'GeneratorProjectFacility/UpdateEvaluation',\r\n evaluationInput\r\n );\r\n }\r\n public archiveGeneratorProjectFacility(\r\n facilityId: number\r\n ): Observable {\r\n return this.httpClient.get(\r\n API_URL +\r\n 'GeneratorProjectFacility/ArchiveGeneratorProjectFacility?generatorProjectFacilityId=' +\r\n facilityId\r\n );\r\n }\r\n public unarchiveGeneratorProjectFacility(\r\n facilityId: number\r\n ): Observable {\r\n return this.httpClient.get(\r\n API_URL +\r\n 'GeneratorProjectFacility/UnarchiveGeneratorProjectFacility?generatorProjectFacilityId=' +\r\n facilityId\r\n );\r\n }\r\n public getDistributorFilterItems(): Observable {\r\n return this.httpClient.get(\r\n API_URL +\r\n 'Distributor/GetAllEligibleForGeneratorApplicationDistributors'\r\n );\r\n }\r\n\r\n public getStatusFilterItems(): Observable {\r\n return this.httpClient.get(\r\n API_URL + 'GeneratorProjectFacility/GetStatusFilterItems'\r\n );\r\n }\r\n}\r\n","import { debounceTime } from 'rxjs/operators';\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { GeneratorEvaluationService } from './generator-evaluation.service';\r\nimport { FormGroup, FormControl } from '@angular/forms';\r\nimport { GeneratorFacilityEvaluationItem } from '../../../../model/generator-facility-evaluation-item.model';\r\nimport { CommonService } from '../../../../common/common-service';\r\n\r\n@Component({\r\n selector: 'generator-evaluation',\r\n templateUrl: './generator-evaluation.component.html',\r\n styleUrls: [\r\n '../../../form.styles.scss',\r\n './generator-evaluation.component.scss',\r\n ],\r\n})\r\nexport class GeneratorEvaluationComponent implements OnInit {\r\n public loading = false;\r\n public evaluationListItems: GeneratorFacilityEvaluationItem[];\r\n public errorMessage = '';\r\n\r\n public pageNumber = 1;\r\n public pageSize = 10;\r\n public totalFacilities = 0;\r\n public totalPages = 1;\r\n public pageStartIndex = 0;\r\n public pageEndIndex = 0;\r\n public searchControl: FormControl;\r\n public searchGroup: FormGroup;\r\n public distributorFilterItems: any;\r\n public statusFilterItems: any;\r\n\r\n constructor(\r\n private generatorEvaluationService: GeneratorEvaluationService,\r\n private commonService: CommonService\r\n ) {\r\n this.searchControl = new FormControl('');\r\n this.searchGroup = new FormGroup({\r\n search: this.searchControl,\r\n distributorId: new FormControl(),\r\n statusLookupId: new FormControl(),\r\n });\r\n }\r\n\r\n public ngOnInit() {\r\n this.loading = true;\r\n\r\n this.searchControl.valueChanges.pipe(debounceTime(300)).subscribe(\r\n () => {\r\n this.loadFacilities();\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n this.loadFilterDropdowns();\r\n this.loadFacilities();\r\n }\r\n\r\n public loadFilterDropdowns() {\r\n this.generatorEvaluationService.getDistributorFilterItems().subscribe(\r\n (page: any) => {\r\n this.distributorFilterItems = page;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n\r\n this.generatorEvaluationService.getStatusFilterItems().subscribe(\r\n (page: any) => {\r\n this.statusFilterItems = page;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n\r\n public loadFacilities() {\r\n const filterText = this.searchGroup.controls.search.value;\r\n const filterDistributor = this.searchGroup.controls.distributorId.value;\r\n const filterStatus = this.searchGroup.controls.statusLookupId.value;\r\n this.generatorEvaluationService\r\n .getPendingGeneratorProjectFacilities(\r\n filterText,\r\n filterDistributor,\r\n filterStatus\r\n )\r\n .subscribe(\r\n (page: GeneratorFacilityEvaluationItem[]) => {\r\n this.evaluationListItems = page;\r\n this.loading = false;\r\n\r\n this.totalFacilities = this.evaluationListItems.length;\r\n this.pageNumber = 1;\r\n this.totalPages = Math.ceil(\r\n this.totalFacilities / this.pageSize\r\n );\r\n this.pageStartIndex = 0;\r\n this.pageEndIndex =\r\n this.totalFacilities < this.pageSize\r\n ? this.totalFacilities - 1\r\n : this.pageSize - 1;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n\r\n public getRouterLink(evaluationListItem: any) {\r\n if (\r\n evaluationListItem.facilityApplicationStatus ===\r\n 'Generator Termsheet' ||\r\n evaluationListItem.facilityApplicationStatus ===\r\n 'Generator Termsheet Sent'\r\n ) {\r\n return (\r\n '/generators/application/' +\r\n evaluationListItem.generatorProjectFacilityId +\r\n '/generator-termsheet'\r\n );\r\n }\r\n if (evaluationListItem.facilityApplicationStatus === 'Pending PPA') {\r\n // Must be disabled and not navigate\r\n return '/generators/evaluation';\r\n }\r\n if (\r\n evaluationListItem.facilityApplicationStatus === 'PPA Schedule' ||\r\n evaluationListItem.facilityApplicationStatus === 'PPA Schedule Sent'\r\n ) {\r\n return (\r\n '/generators/application/' +\r\n evaluationListItem.generatorProjectFacilityId +\r\n '/ppa-schedule'\r\n );\r\n }\r\n if (\r\n evaluationListItem.facilityApplicationStatus === 'Generator PPA' ||\r\n evaluationListItem.facilityApplicationStatus ===\r\n 'Generator PPA Sent'\r\n ) {\r\n return (\r\n '/generators/application/' +\r\n evaluationListItem.generatorProjectFacilityId +\r\n '/generator-ppa'\r\n );\r\n }\r\n if (evaluationListItem.facilityApplicationStatus === 'Activation') {\r\n return (\r\n '/generators/activation/' +\r\n evaluationListItem.generatorProjectFacilityId\r\n );\r\n }\r\n\r\n return (\r\n '/generators/evaluation/' +\r\n evaluationListItem.generatorProjectFacilityId +\r\n '/details'\r\n );\r\n }\r\n\r\n public pageChanged(event: any): void {\r\n this.pageNumber = event.page;\r\n this.pageEndIndex = this.pageNumber * this.pageSize - 1;\r\n this.pageStartIndex =\r\n this.pageEndIndex - this.pageSize + 1 >= 0\r\n ? this.pageEndIndex - this.pageSize + 1\r\n : 0;\r\n }\r\n public archiveGenerator(item: any): void {\r\n this.loading = true;\r\n\r\n this.generatorEvaluationService\r\n .archiveGeneratorProjectFacility(item.generatorProjectFacilityId)\r\n .subscribe(\r\n (page: any) => {\r\n console.log(page);\r\n this.loadFacilities();\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n\r\n public onFilterDistributorChange() {\r\n this.loadFacilities();\r\n }\r\n\r\n public onFilterStatusChange() {\r\n this.loadFacilities();\r\n }\r\n}\r\n","import { debounceTime } from 'rxjs/operators';\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { GeneratorEvaluationService } from '../generator-evaluation.service';\r\nimport { FormGroup, FormControl } from '@angular/forms';\r\nimport { GeneratorFacilityEvaluationItem } from '../../../../../model/generator-facility-evaluation-item.model';\r\nimport { CommonService } from '../../../../../common/common-service';\r\n\r\n@Component({\r\n selector: 'archived-generator-evaluation',\r\n templateUrl: './archived-generator-evaluation.component.html',\r\n styleUrls: [\r\n '../../../../form.styles.scss',\r\n './archived-generator-evaluation.component.scss',\r\n ],\r\n})\r\nexport class ArchivedGeneratorEvaluationComponent implements OnInit {\r\n public loading = false;\r\n public evaluationListItems: GeneratorFacilityEvaluationItem[];\r\n public errorMessage = '';\r\n\r\n public pageNumber = 1;\r\n public pageSize = 10;\r\n public totalFacilities = 0;\r\n public totalPages = 1;\r\n public pageStartIndex = 0;\r\n public pageEndIndex = 0;\r\n public searchControl: FormControl;\r\n public searchGroup: FormGroup;\r\n public distributorFilterItems: any;\r\n public statusFilterItems: any;\r\n\r\n constructor(\r\n private generatorEvaluationService: GeneratorEvaluationService,\r\n private commonService: CommonService\r\n ) {\r\n this.searchControl = new FormControl('');\r\n this.searchGroup = new FormGroup({\r\n search: this.searchControl,\r\n distributorId: new FormControl(),\r\n statusLookupId: new FormControl(),\r\n });\r\n }\r\n\r\n public ngOnInit() {\r\n this.loading = true;\r\n\r\n this.searchControl.valueChanges.pipe(debounceTime(300)).subscribe(\r\n () => {\r\n this.loadFacilities();\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n this.loadFilterDropdowns();\r\n this.loadFacilities();\r\n }\r\n\r\n public loadFilterDropdowns() {\r\n this.generatorEvaluationService.getDistributorFilterItems().subscribe(\r\n (page: any) => {\r\n this.distributorFilterItems = page;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n\r\n this.generatorEvaluationService.getStatusFilterItems().subscribe(\r\n (page: any) => {\r\n this.statusFilterItems = page;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n\r\n public loadFacilities() {\r\n const filterText = this.searchGroup.controls.search.value;\r\n const filterDistributor = this.searchGroup.controls.distributorId.value;\r\n const filterStatus = this.searchGroup.controls.statusLookupId.value;\r\n this.generatorEvaluationService\r\n .getArchivedPendingGeneratorProjectFacilities(\r\n filterText,\r\n filterDistributor,\r\n filterStatus\r\n )\r\n .subscribe(\r\n (page: GeneratorFacilityEvaluationItem[]) => {\r\n this.evaluationListItems = page;\r\n this.loading = false;\r\n\r\n this.totalFacilities = this.evaluationListItems.length;\r\n this.pageNumber = 1;\r\n this.totalPages = Math.ceil(\r\n this.totalFacilities / this.pageSize\r\n );\r\n this.pageStartIndex = 0;\r\n this.pageEndIndex =\r\n this.totalFacilities < this.pageSize\r\n ? this.totalFacilities - 1\r\n : this.pageSize - 1;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n\r\n public getRouterLink(evaluationListItem: any) {\r\n if (\r\n evaluationListItem.facilityApplicationStatus ===\r\n 'Generator Termsheet' ||\r\n evaluationListItem.facilityApplicationStatus ===\r\n 'Generator Termsheet Sent'\r\n ) {\r\n return (\r\n '/generators/application/' +\r\n evaluationListItem.generatorProjectFacilityId +\r\n '/generator-termsheet'\r\n );\r\n }\r\n if (evaluationListItem.facilityApplicationStatus === 'Pending PPA') {\r\n // Must be disabled and not navigate\r\n return '/generators/evaluation';\r\n }\r\n if (\r\n evaluationListItem.facilityApplicationStatus === 'PPA Schedule' ||\r\n evaluationListItem.facilityApplicationStatus === 'PPA Schedule Sent'\r\n ) {\r\n return (\r\n '/generators/application/' +\r\n evaluationListItem.generatorProjectFacilityId +\r\n '/ppa-schedule'\r\n );\r\n }\r\n if (\r\n evaluationListItem.facilityApplicationStatus === 'Generator PPA' ||\r\n evaluationListItem.facilityApplicationStatus ===\r\n 'Generator PPA Sent'\r\n ) {\r\n return (\r\n '/generators/application/' +\r\n evaluationListItem.generatorProjectFacilityId +\r\n '/generator-ppa'\r\n );\r\n }\r\n if (evaluationListItem.facilityApplicationStatus === 'Activation') {\r\n return (\r\n '/generators/activation/' +\r\n evaluationListItem.generatorProjectFacilityId\r\n );\r\n }\r\n\r\n return (\r\n '/generators/evaluation/' +\r\n evaluationListItem.generatorProjectFacilityId +\r\n '/details'\r\n );\r\n }\r\n\r\n public pageChanged(event: any): void {\r\n this.pageNumber = event.page;\r\n this.pageEndIndex = this.pageNumber * this.pageSize - 1;\r\n this.pageStartIndex =\r\n this.pageEndIndex - this.pageSize + 1 >= 0\r\n ? this.pageEndIndex - this.pageSize + 1\r\n : 0;\r\n }\r\n public unarchiveGenerator(item: any): void {\r\n this.loading = true;\r\n this.generatorEvaluationService\r\n .unarchiveGeneratorProjectFacility(item.generatorProjectFacilityId)\r\n .subscribe(\r\n (page: any) => {\r\n this.loadFacilities();\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n\r\n public onFilterDistributorChange() {\r\n this.loadFacilities();\r\n }\r\n\r\n public onFilterStatusChange() {\r\n this.loadFacilities();\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\nimport { GeneratorEvaluationService } from '../generator-evaluation.service';\r\nimport { FormGroup, FormControl, Validators } from '@angular/forms';\r\nimport { CommonService } from '../../../../../common/common-service';\r\nimport { GeneratorEvaluationDetail } from '../../../../../model/generator/generator-evaluation-detail.model';\r\nimport { GeneratorEvaluationInput } from '../../../../../model/generator/generator-evaluation-input.model';\r\nimport { GenerationData } from '../../../../../model/application/generator-application/generation-data.model';\r\n\r\nimport { ToastrService } from 'ngx-toastr';\r\n\r\n@Component({\r\n selector: 'generator-evaluation-details',\r\n templateUrl: './generator-evaluation-details.component.html',\r\n styleUrls: ['../../../../form.styles.scss'],\r\n})\r\nexport class GeneratorEvaluationDetailsComponent implements OnInit {\r\n public evaluationForm: FormGroup;\r\n public loading = false;\r\n public dropdownSelection: string;\r\n public declineReasons: any;\r\n public errorMessage = '';\r\n private facilityId: number;\r\n private facility: GeneratorEvaluationDetail;\r\n\r\n private isExisting: boolean;\r\n private isMicroFacility: boolean;\r\n\r\n constructor(\r\n private commonService: CommonService,\r\n private router: Router,\r\n private route: ActivatedRoute,\r\n private generatorEvaluationService: GeneratorEvaluationService,\r\n private toastr: ToastrService\r\n ) {\r\n this.evaluationForm = new FormGroup({\r\n evaluationValueField: new FormControl(null, Validators.required),\r\n declineReasonField: new FormControl(null, Validators.required),\r\n moreInfoMessageField: new FormControl(null, [\r\n Validators.required,\r\n Validators.minLength(10),\r\n Validators.maxLength(1000),\r\n ]),\r\n\r\n generationHistory: this.initYearlyDataForm(),\r\n plannedGeneration: this.initYearlyDataForm(),\r\n });\r\n }\r\n\r\n public ngOnInit() {\r\n this.initialize();\r\n }\r\n\r\n public initYearlyDataForm(): FormGroup {\r\n return new FormGroup({\r\n january: new FormControl({ value: '', disabled: true }),\r\n february: new FormControl({ value: '', disabled: true }),\r\n march: new FormControl({ value: '', disabled: true }),\r\n april: new FormControl({ value: '', disabled: true }),\r\n may: new FormControl({ value: '', disabled: true }),\r\n june: new FormControl({ value: '', disabled: true }),\r\n july: new FormControl({ value: '', disabled: true }),\r\n august: new FormControl({ value: '', disabled: true }),\r\n september: new FormControl({ value: '', disabled: true }),\r\n october: new FormControl({ value: '', disabled: true }),\r\n november: new FormControl({ value: '', disabled: true }),\r\n december: new FormControl({ value: '', disabled: true }),\r\n });\r\n }\r\n\r\n public loadHistoricData(historicData: GenerationData) {\r\n if (historicData == null) {\r\n return;\r\n }\r\n\r\n const group = this.evaluationForm.controls\r\n .generationHistory as FormGroup;\r\n group.controls.january.setValue(historicData.january);\r\n group.controls.february.setValue(historicData.february);\r\n group.controls.march.setValue(historicData.march);\r\n group.controls.april.setValue(historicData.april);\r\n group.controls.may.setValue(historicData.may);\r\n group.controls.june.setValue(historicData.june);\r\n group.controls.july.setValue(historicData.july);\r\n group.controls.august.setValue(historicData.august);\r\n group.controls.september.setValue(historicData.september);\r\n group.controls.october.setValue(historicData.october);\r\n group.controls.november.setValue(historicData.november);\r\n group.controls.december.setValue(historicData.december);\r\n }\r\n\r\n public loadPlannedData(plannedData: any) {\r\n if (plannedData == null) {\r\n return;\r\n }\r\n\r\n const group = this.evaluationForm.controls\r\n .plannedGeneration as FormGroup;\r\n group.controls.january.setValue(plannedData.january);\r\n group.controls.february.setValue(plannedData.february);\r\n group.controls.march.setValue(plannedData.march);\r\n group.controls.april.setValue(plannedData.april);\r\n group.controls.may.setValue(plannedData.may);\r\n group.controls.june.setValue(plannedData.june);\r\n group.controls.july.setValue(plannedData.july);\r\n group.controls.august.setValue(plannedData.august);\r\n group.controls.september.setValue(plannedData.september);\r\n group.controls.october.setValue(plannedData.october);\r\n group.controls.november.setValue(plannedData.november);\r\n group.controls.december.setValue(plannedData.december);\r\n }\r\n\r\n public onEvaluationActionSelect() {\r\n this.commonService.disableControl(\r\n this.evaluationForm.controls.declineReasonField\r\n );\r\n this.commonService.disableControl(\r\n this.evaluationForm.controls.moreInfoMessageField\r\n );\r\n\r\n if (this.evaluationForm.controls.evaluationValueField.value === 1) {\r\n this.commonService.enableControl(\r\n this.evaluationForm.controls.declineReasonField,\r\n [Validators.required]\r\n );\r\n }\r\n\r\n if (this.evaluationForm.controls.evaluationValueField.value === 2) {\r\n this.commonService.enableControl(\r\n this.evaluationForm.controls.moreInfoMessageField,\r\n [\r\n Validators.required,\r\n Validators.minLength(10),\r\n Validators.maxLength(1000),\r\n ]\r\n );\r\n }\r\n }\r\n\r\n public onSubmit() {\r\n this.errorMessage = '';\r\n this.commonService.validateAllFormFields(this.evaluationForm);\r\n if (this.evaluationForm.valid) {\r\n const evaluationInput = new GeneratorEvaluationInput();\r\n evaluationInput.evaluationValue = this.evaluationForm.controls.evaluationValueField.value;\r\n evaluationInput.facilityDeclinedReasonLookupId = this.evaluationForm.controls.declineReasonField.value;\r\n evaluationInput.facilityMoreInformationMessage = this.evaluationForm.controls.moreInfoMessageField.value;\r\n evaluationInput.generatorProjectFacilityId = this.facility.generatorProjectFacilityId;\r\n\r\n this.generatorEvaluationService\r\n .updateGeneratorProjectFacilityEvaluation(evaluationInput)\r\n .subscribe(\r\n (page: any) => {\r\n if (page.successMessage === 'Complete') {\r\n this.router.navigate([\r\n 'generators',\r\n 'application',\r\n this.facilityId,\r\n 'generator-termsheet',\r\n ]);\r\n } else {\r\n this.router.navigate(['generators', 'evaluation']);\r\n }\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n this.toastr.error(this.errorMessage);\r\n }\r\n );\r\n }\r\n }\r\n\r\n private initialize() {\r\n this.dropdownSelection = 'sds';\r\n this.loading = true;\r\n this.route.params.subscribe(\r\n (params) => {\r\n if (params['facilityId']) {\r\n this.facilityId = params['facilityId'];\r\n }\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n\r\n this.commonService\r\n .getEntityLookups(['FacilityDeclinedReason'])\r\n .subscribe(\r\n (entityLookups) => {\r\n this.declineReasons =\r\n entityLookups['entityLookupResultList'][\r\n 'facilityDeclinedReason'\r\n ];\r\n this.generatorEvaluationService\r\n .getGeneratorProjectFacility(this.facilityId)\r\n .subscribe(\r\n (page: GeneratorEvaluationDetail) => {\r\n this.facility = page;\r\n this.isExisting =\r\n this.facility.projectType ===\r\n 'Existing facility';\r\n this.isMicroFacility = this.facility.isMicroFacility;\r\n this.loadHistoricData(\r\n this.facility.historicGenerationData\r\n );\r\n this.loadPlannedData(\r\n this.facility.futureGenerationData\r\n );\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n\r\n this.commonService.disableControl(\r\n this.evaluationForm.controls.declineReasonField\r\n );\r\n this.commonService.disableControl(\r\n this.evaluationForm.controls.moreInfoMessageField\r\n );\r\n }\r\n}\r\n","export class GeneratorEvaluationInput {\r\n public generatorProjectFacilityId?: number;\r\n public evaluationValue?: number;\r\n public facilityDeclinedReasonLookupId?: number;\r\n public facilityMoreInformationMessage?: string;\r\n}\r\n","import { debounceTime } from 'rxjs/operators';\r\nimport { ConsumerCompanyService } from '../../../consumer-company/consumer-company.service';\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { FormControl, FormGroup } from '@angular/forms';\r\nimport { ConsumerPremisesEvaluationItem } from '../../../../model/consumer-premises-evaluation-item.model';\r\nimport { CommonService } from '../../../../common/common-service';\r\n\r\n@Component({\r\n selector: 'app-prospect-evaluation',\r\n templateUrl: './prospect-evaluation.component.html',\r\n styleUrls: [\r\n '../../../form.styles.scss',\r\n './prospect-evaluation.component.scss',\r\n ],\r\n})\r\nexport class ProspectEvaluationComponent implements OnInit {\r\n public prospectEvaluationItems: ConsumerPremisesEvaluationItem[];\r\n public pageNumber = 1;\r\n public pageSize = 10;\r\n public totalProspects = 0;\r\n public totalPages = 1;\r\n public pageStartIndex = 0;\r\n public pageEndIndex = 0;\r\n public errorMessage = '';\r\n public loading = false;\r\n public searchControl: FormControl;\r\n public searchGroup: FormGroup;\r\n public distributorFilterItems: any;\r\n public statusFilterItems: any;\r\n\r\n public constructor(\r\n private consumerCompanyService: ConsumerCompanyService,\r\n private router: Router,\r\n private commonService: CommonService\r\n ) {\r\n this.searchControl = new FormControl('');\r\n this.searchGroup = new FormGroup({\r\n search: this.searchControl,\r\n distributorId: new FormControl(),\r\n statusLookupId: new FormControl(),\r\n });\r\n }\r\n\r\n public ngOnInit() {\r\n this.loading = true;\r\n\r\n this.searchControl.valueChanges.pipe(debounceTime(300)).subscribe(\r\n () => {\r\n this.loadProspects();\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n this.loadProspects();\r\n this.loadFilterDropdowns();\r\n }\r\n\r\n public loadFilterDropdowns() {\r\n this.consumerCompanyService.getDistributorFilterItems().subscribe(\r\n (page: any) => {\r\n this.distributorFilterItems = page;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n\r\n this.consumerCompanyService.getStatusFilterItems().subscribe(\r\n (page: any) => {\r\n this.statusFilterItems = page;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n\r\n public loadProspects() {\r\n const filterText = this.searchGroup.controls.search.value;\r\n const filterDistributor = this.searchGroup.controls.distributorId.value;\r\n const filterStatus = this.searchGroup.controls.statusLookupId.value;\r\n this.consumerCompanyService\r\n .getEvaluationProspectPremises(\r\n filterText,\r\n filterDistributor,\r\n filterStatus\r\n )\r\n .subscribe(\r\n (prospectEvaluationItems: ConsumerPremisesEvaluationItem[]) => {\r\n this.prospectEvaluationItems = prospectEvaluationItems;\r\n\r\n this.totalProspects = this.prospectEvaluationItems.length;\r\n this.pageNumber = 1;\r\n this.totalPages = Math.ceil(\r\n this.totalProspects / this.pageSize\r\n );\r\n this.pageStartIndex = 0;\r\n this.pageEndIndex =\r\n this.totalProspects < this.pageSize\r\n ? this.totalProspects - 1\r\n : this.pageSize - 1;\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n\r\n public selected(premisesId: number, premisesProgress: string): void {\r\n switch (premisesProgress) {\r\n case 'Offer':\r\n this.router.navigate([\r\n 'consumers',\r\n 'prospect-evaluations',\r\n 'offer',\r\n premisesId,\r\n ]);\r\n break;\r\n\r\n case 'Prospect PPA':\r\n case 'PPA Sent':\r\n this.router.navigate([\r\n 'consumers',\r\n 'prospect-ppa',\r\n 'generate',\r\n premisesId,\r\n ]);\r\n break;\r\n\r\n case 'Schedule':\r\n this.router.navigate([\r\n 'consumers',\r\n 'premises-schedule',\r\n premisesId,\r\n ]);\r\n break;\r\n\r\n case 'Activation':\r\n this.router.navigate(['consumers', 'activation', premisesId]);\r\n break;\r\n\r\n case 'Activated':\r\n this.router.navigate(['consumers', 'activation', premisesId]);\r\n break;\r\n\r\n case 'Pending PPA':\r\n this.router.navigate(['consumers', 'prospect-evaluations']);\r\n break;\r\n\r\n default:\r\n this.router.navigate([\r\n 'consumers',\r\n 'prospect-evaluations',\r\n 'premises-details',\r\n premisesId,\r\n ]);\r\n }\r\n }\r\n\r\n public pageChanged(event: any): void {\r\n this.pageNumber = event.page;\r\n this.pageEndIndex = this.pageNumber * this.pageSize - 1;\r\n this.pageStartIndex =\r\n this.pageEndIndex - this.pageSize + 1 >= 0\r\n ? this.pageEndIndex - this.pageSize + 1\r\n : 0;\r\n }\r\n\r\n public onFilterDistributorChange() {\r\n this.loadProspects();\r\n }\r\n public archiveProspect(prospect: any) {\r\n this.loading = true;\r\n\r\n this.consumerCompanyService\r\n .archiveConsumerCompanyPremise(prospect.consumerCompanyPremisesId)\r\n .subscribe(\r\n (page: any) => {\r\n console.log(page);\r\n this.loadProspects();\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n\r\n public onFilterStatusChange() {\r\n this.loadProspects();\r\n }\r\n}\r\n","import { debounceTime } from 'rxjs/operators';\r\nimport { ConsumerCompanyService } from '../../../../consumer-company/consumer-company.service';\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { FormControl, FormGroup } from '@angular/forms';\r\nimport { ConsumerPremisesEvaluationItem } from '../../../../../model/consumer-premises-evaluation-item.model';\r\nimport { CommonService } from '../../../../../common/common-service';\r\n\r\n@Component({\r\n selector: 'app-archived-prospect-evaluation',\r\n templateUrl: './archived-prospect-evaluation.component.html',\r\n styleUrls: [\r\n '../../../../form.styles.scss',\r\n './archived-prospect-evaluation.component.scss',\r\n ],\r\n})\r\nexport class ArchivedProspectEvaluationComponent implements OnInit {\r\n public prospectEvaluationItems: ConsumerPremisesEvaluationItem[];\r\n public pageNumber = 1;\r\n public pageSize = 10;\r\n public totalProspects = 0;\r\n public totalPages = 1;\r\n public pageStartIndex = 0;\r\n public pageEndIndex = 0;\r\n public errorMessage = '';\r\n public loading = false;\r\n public searchControl: FormControl;\r\n public searchGroup: FormGroup;\r\n public distributorFilterItems: any;\r\n public statusFilterItems: any;\r\n\r\n public constructor(\r\n private consumerCompanyService: ConsumerCompanyService,\r\n private router: Router,\r\n private commonService: CommonService\r\n ) {\r\n this.searchControl = new FormControl('');\r\n this.searchGroup = new FormGroup({\r\n search: this.searchControl,\r\n distributorId: new FormControl(),\r\n statusLookupId: new FormControl(),\r\n });\r\n }\r\n\r\n public ngOnInit() {\r\n this.loading = true;\r\n\r\n this.searchControl.valueChanges.pipe(debounceTime(300)).subscribe(\r\n () => {\r\n this.loadProspects();\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n this.loadProspects();\r\n this.loadFilterDropdowns();\r\n }\r\n\r\n public loadFilterDropdowns() {\r\n this.consumerCompanyService.getDistributorFilterItems().subscribe(\r\n (page: any) => {\r\n this.distributorFilterItems = page;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n\r\n this.consumerCompanyService.getStatusFilterItems().subscribe(\r\n (page: any) => {\r\n this.statusFilterItems = page;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n\r\n public loadProspects() {\r\n const filterText = this.searchGroup.controls.search.value;\r\n const filterDistributor = this.searchGroup.controls.distributorId.value;\r\n const filterStatus = this.searchGroup.controls.statusLookupId.value;\r\n this.consumerCompanyService\r\n .getArchivedEvaluationProspectPremises(\r\n filterText,\r\n filterDistributor,\r\n filterStatus\r\n )\r\n .subscribe(\r\n (prospectEvaluationItems: ConsumerPremisesEvaluationItem[]) => {\r\n this.prospectEvaluationItems = prospectEvaluationItems;\r\n\r\n this.totalProspects = this.prospectEvaluationItems.length;\r\n this.pageNumber = 1;\r\n this.totalPages = Math.ceil(\r\n this.totalProspects / this.pageSize\r\n );\r\n this.pageStartIndex = 0;\r\n this.pageEndIndex =\r\n this.totalProspects < this.pageSize\r\n ? this.totalProspects - 1\r\n : this.pageSize - 1;\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n\r\n public selected(premisesId: number, premisesProgress: string): void {\r\n switch (premisesProgress) {\r\n case 'Offer':\r\n this.router.navigate([\r\n 'consumers',\r\n 'prospect-evaluations',\r\n 'offer',\r\n premisesId,\r\n ]);\r\n break;\r\n\r\n case 'Prospect PPA':\r\n case 'PPA Sent':\r\n this.router.navigate([\r\n 'consumers',\r\n 'prospect-ppa',\r\n 'generate',\r\n premisesId,\r\n ]);\r\n break;\r\n\r\n case 'Schedule':\r\n this.router.navigate([\r\n 'consumers',\r\n 'premises-schedule',\r\n premisesId,\r\n ]);\r\n break;\r\n\r\n case 'Activation':\r\n this.router.navigate(['consumers', 'activation', premisesId]);\r\n break;\r\n\r\n case 'Activated':\r\n this.router.navigate(['consumers', 'activation', premisesId]);\r\n break;\r\n\r\n case 'Pending PPA':\r\n this.router.navigate(['consumers', 'prospect-evaluations']);\r\n break;\r\n\r\n default:\r\n this.router.navigate([\r\n 'consumers',\r\n 'prospect-evaluations',\r\n 'premises-details',\r\n premisesId,\r\n ]);\r\n }\r\n }\r\n\r\n public pageChanged(event: any): void {\r\n this.pageNumber = event.page;\r\n this.pageEndIndex = this.pageNumber * this.pageSize - 1;\r\n this.pageStartIndex =\r\n this.pageEndIndex - this.pageSize + 1 >= 0\r\n ? this.pageEndIndex - this.pageSize + 1\r\n : 0;\r\n }\r\n\r\n public onFilterDistributorChange() {\r\n this.loadProspects();\r\n }\r\n public unarchiveProspect(prospect: any) {\r\n this.loading = true;\r\n\r\n this.consumerCompanyService\r\n .unarchiveConsumerCompanyPremise(prospect.consumerCompanyPremisesId)\r\n .subscribe(\r\n (page: any) => {\r\n console.log(page);\r\n this.loadProspects();\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n\r\n public onFilterStatusChange() {\r\n this.loadProspects();\r\n }\r\n}\r\n","import { EntityLookup } from '../../../../../model/entity-lookup.model';\r\nimport { ConsumerCompanyService } from '../../../../consumer-company/consumer-company.service';\r\n\r\nimport { CommonService } from '../../../../../common/common-service';\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { FormGroup, FormControl, Validators } from '@angular/forms';\r\nimport { Prospect } from '../../../../../model/prospect.model';\r\nimport { ConsumerCompanyPremises } from '../../../../../model/consumer-company-premises.model';\r\nimport { ProspectService } from '../../../prospects/prospect.service';\r\nimport { ToastrService } from 'ngx-toastr';\r\n\r\n@Component({\r\n selector: 'app-prospect-evaluation-details',\r\n templateUrl: './prospect-evaluation-details.component.html',\r\n styleUrls: [\r\n './prospect-evaluation-details.component.scss',\r\n './../../../../form.styles.scss',\r\n ],\r\n})\r\nexport class ProspectEvaluationDetailsComponent implements OnInit {\r\n public prospect: Prospect;\r\n public premises: ConsumerCompanyPremises;\r\n public companyContacts: any[];\r\n public distributorAccountCreditProblemList: EntityLookup[];\r\n public prospectCreditRatings: EntityLookup[];\r\n public consumerCompanyTypes: EntityLookup[];\r\n public consumerCompanyStandings: EntityLookup[];\r\n public consumerBusinessActivities: EntityLookup[];\r\n public premisesDeclineReason: EntityLookup[];\r\n public premisesProgressStatus: EntityLookup[];\r\n public premisesEvaluationStatus: EntityLookup[] = [];\r\n public premisesQualificationsForm: FormGroup;\r\n public evaluationForm: FormGroup;\r\n public retrievalFailed = true;\r\n public errorMessage: string;\r\n public loading = false;\r\n public declineId: number;\r\n public moreInfoId: number;\r\n public approveId: number;\r\n public isApproved: boolean = false;\r\n\r\n constructor(\r\n private consumerCompanyService: ConsumerCompanyService,\r\n protected router: Router,\r\n protected toastr: ToastrService,\r\n public commonService: CommonService,\r\n protected route: ActivatedRoute,\r\n private prospectService: ProspectService\r\n ) {\r\n this.premisesQualificationsForm = new FormGroup({\r\n creditPermissionDocument: new FormControl(''),\r\n creditRatingLookupId: new FormControl(null),\r\n creditScore: new FormControl(''),\r\n creditPermissionRequested: new FormControl(''),\r\n billsRequested: new FormControl(''),\r\n creditPermissionReceived: new FormControl(''),\r\n billsReceived: new FormControl(''),\r\n });\r\n\r\n this.evaluationForm = new FormGroup({\r\n evaluationStatus: new FormControl(null, Validators.required),\r\n evaluationDeclineReason: new FormControl(null),\r\n evaluationInformation: new FormControl(null),\r\n consumerCompanyPremisesId: new FormControl(null),\r\n });\r\n }\r\n\r\n public ngOnInit() {\r\n this.loading = true;\r\n this.route.params.subscribe(\r\n (params) => {\r\n this.consumerCompanyService\r\n .getOfferDetails(params.consumerCompanyPremisesId)\r\n .subscribe(\r\n (consumerCompany: any) => {\r\n this.commonService\r\n .getEntityLookups([\r\n 'CompanyType',\r\n 'ConsumerCompanyStanding',\r\n 'ConsumerBusinessActivity',\r\n 'DistributorAccountCreditProblem',\r\n 'ProspectCreditRating',\r\n 'PremisesDeclineReason',\r\n 'PremisesProgressStatus',\r\n ])\r\n .subscribe(\r\n (entityLookups) => {\r\n this.prospectService.initProspectEntityLookups(\r\n entityLookups\r\n );\r\n this.prospect = this.prospectService.getProspect(\r\n consumerCompany\r\n );\r\n this.initEntityLookups(entityLookups);\r\n // Take the first premise should be one in the list.\r\n this.premises = this.prospect.companyPremises[0];\r\n this.initForms();\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n },\r\n (error) => {\r\n this.retrievalFailed = true;\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n }\r\n\r\n public initForms(): void {\r\n this.premisesQualificationsForm.controls.creditRatingLookupId.setValue(\r\n this.prospect.qualificationParameters.creditRatingLookupId\r\n );\r\n this.premisesQualificationsForm.controls.creditScore.setValue(\r\n this.prospect.qualificationParameters.creditScore\r\n );\r\n this.premisesQualificationsForm.controls.creditPermissionDocument.setValue(\r\n this.prospect.qualificationParameters.creditPermissionDocument\r\n );\r\n this.premisesQualificationsForm.controls.creditPermissionRequested.setValue(\r\n this.prospect.qualificationParameters.creditPermissionRequested\r\n );\r\n this.premisesQualificationsForm.controls.billsRequested.setValue(\r\n this.prospect.qualificationParameters.billsRequested\r\n );\r\n this.premisesQualificationsForm.controls.creditPermissionReceived.setValue(\r\n this.prospect.qualificationParameters.creditPermissionReceived\r\n );\r\n this.premisesQualificationsForm.controls.billsReceived.setValue(\r\n this.prospect.qualificationParameters.billsReceived\r\n );\r\n this.premisesQualificationsForm.disable();\r\n this.evaluationForm.controls.evaluationStatus.setValue(\r\n this.premises.evaluationStatusLookupId\r\n );\r\n this.evaluationForm.controls.evaluationDeclineReason.setValue(\r\n this.premises.evaluationDeclineReasonLookupId\r\n );\r\n this.evaluationForm.controls.evaluationInformation.setValue(\r\n this.premises.evaluationInformation\r\n );\r\n this.isApproved =\r\n this.approveId === this.premises.evaluationStatusLookupId;\r\n }\r\n\r\n public initEntityLookups(entityLookups: any): void {\r\n this.consumerCompanyTypes =\r\n entityLookups['entityLookupResultList']['companyType'];\r\n this.consumerCompanyStandings =\r\n entityLookups['entityLookupResultList']['consumerCompanyStanding'];\r\n this.consumerBusinessActivities =\r\n entityLookups['entityLookupResultList']['consumerBusinessActivity'];\r\n this.distributorAccountCreditProblemList = [];\r\n this.prospectCreditRatings = [];\r\n this.distributorAccountCreditProblemList =\r\n entityLookups['entityLookupResultList'][\r\n 'distributorAccountCreditProblem'\r\n ];\r\n this.prospectCreditRatings =\r\n entityLookups['entityLookupResultList']['prospectCreditRating'];\r\n this.premisesDeclineReason = [];\r\n this.premisesDeclineReason =\r\n entityLookups['entityLookupResultList']['premisesDeclineReason'];\r\n this.premisesProgressStatus = [];\r\n this.premisesProgressStatus =\r\n entityLookups['entityLookupResultList']['premisesProgressStatus'];\r\n this.premisesEvaluationStatus.push(\r\n this.premisesProgressStatus.find((id) => id.value === 'Approved')\r\n );\r\n this.premisesEvaluationStatus.push(\r\n this.premisesProgressStatus.find((id) => id.value === 'Declined')\r\n );\r\n this.premisesEvaluationStatus.push(\r\n this.premisesProgressStatus.find((id) => id.value === 'More Info')\r\n );\r\n this.approveId = this.premisesEvaluationStatus[0].entityLookupId;\r\n this.declineId = this.premisesEvaluationStatus[1].entityLookupId;\r\n this.moreInfoId = this.premisesEvaluationStatus[2].entityLookupId;\r\n }\r\n\r\n public onSubmitEvaluationResult() {\r\n this.commonService.validateAllFormFields(this.evaluationForm);\r\n\r\n if (this.evaluationForm.valid) {\r\n this.evaluationForm.controls.consumerCompanyPremisesId.setValue(\r\n this.premises.consumerCompanyPremisesId\r\n );\r\n this.consumerCompanyService\r\n .updatePremisesEvaluation(this.evaluationForm.value)\r\n .subscribe(\r\n (premisesProgressStatus: EntityLookup) => {\r\n this.premises.premisesProgressStatus = premisesProgressStatus;\r\n this.isApproved =\r\n this.premises.premisesProgressStatus.value ===\r\n 'Offer';\r\n this.toastr.success(\r\n 'Evaluation Status Successfully Updated'\r\n );\r\n this.router.navigate([\r\n 'consumers',\r\n 'prospect-evaluations',\r\n ]);\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.toastr.error(this.errorMessage);\r\n }\r\n );\r\n }\r\n }\r\n}\r\n","export class PremisesSavingsProjection {\r\n constructor(\r\n public year: string,\r\n public municipalIncrease: number,\r\n public municipalPrice: number,\r\n public powerXIncrease: number,\r\n public powerXPrice: number,\r\n public powerXKwh: number,\r\n public savings: number,\r\n public premisesOfferDetailId?: number\r\n ) {}\r\n}\r\n","import { TariffRate } from '../../../../../model/tariff/tariff-rate.model';\r\nimport { Tariff } from '../../../../../model/tariff/tariff.model';\r\nimport { Injectable } from '@angular/core';\r\nimport { Period } from '../../../../../model/period.model';\r\n\r\n@Injectable()\r\nexport class ProspectOfferCalculationService {\r\n // High Demand Rates Municipal\r\n public highDemandOffPeakRate: number = 0;\r\n public highDemandPeakRate: number = 0;\r\n public highDemandStandardRate: number = 0;\r\n public highDemandFlatRate: number = 0;\r\n\r\n // Low Demand Rates\r\n public lowDemandOffPeakRate: number = 0;\r\n public lowDemandPeakRate: number = 0;\r\n public lowDemandStandardRate: number = 0;\r\n public lowDemandFlatRate: number = 0;\r\n\r\n // High Demand Rates PowerX\r\n public powerXHighDemandOffPeakRate: number = 0;\r\n public powerXHighDemandPeakRate: number = 0;\r\n public powerXHighDemandStandardRate: number = 0;\r\n public powerXHighDemandFlatRate: number = 0;\r\n\r\n // Low Demand Rates PowerX\r\n public powerXLowDemandOffPeakRate: number = 0;\r\n public powerXLowDemandPeakRate: number = 0;\r\n public powerXLowDemandStandardRate: number = 0;\r\n public powerXLowDemandFlatRate: number = 0;\r\n\r\n // Useful variables\r\n public tariff: Tariff;\r\n private highDemandConsumption: number = 0;\r\n private lowDemandConsumption: number = 0;\r\n private coveredConsumption: number = 0;\r\n private isTariffOnePart: boolean = false;\r\n private isTariffTwoPart: boolean = false;\r\n private isTariffThreePart: boolean = false;\r\n private summerIncluded: boolean;\r\n private selectedPeriod: Period;\r\n\r\n // 3 Part Constants\r\n private threePartPeakConstant: number = 0.17;\r\n private threePartOffPeakConstant: number = 0.46;\r\n private threePartStandardConstant: number = 0.37;\r\n\r\n // 2 Part Constants\r\n private twoPartPeakConstant: number = 0.4;\r\n private twoPartOffPeakConstant: number = 0.6;\r\n\r\n // 1 Part Constants\r\n private onePartFlatConstant: number = 1;\r\n\r\n // Determine how much of the consumption will be covered\r\n public updateCoveredConsumption(\r\n totalConsumption: number,\r\n summerIncluded: boolean,\r\n summerAllocation: number,\r\n winterAllocation: number\r\n ): void {\r\n this.lowDemandConsumption = this.product(\r\n totalConsumption,\r\n 0.75,\r\n summerAllocation / 100\r\n );\r\n this.highDemandConsumption = this.product(\r\n totalConsumption,\r\n 0.25,\r\n winterAllocation / 100\r\n );\r\n this.lowDemandConsumption = summerIncluded\r\n ? this.lowDemandConsumption\r\n : 0;\r\n this.coveredConsumption = this.sum(\r\n this.lowDemandConsumption,\r\n this.highDemandConsumption\r\n );\r\n this.summerIncluded = summerIncluded;\r\n }\r\n\r\n public getAvailablePeriods(tariffRates: TariffRate[]): Period[] {\r\n const periods: Period[] = [];\r\n periods.push(tariffRates[0].period);\r\n let firstPeriodId = periods[0].periodId;\r\n tariffRates.forEach((tariffRate: TariffRate) => {\r\n if (tariffRate.period.periodId !== firstPeriodId) {\r\n periods.push(tariffRate.period);\r\n firstPeriodId = tariffRate.period.periodId;\r\n }\r\n });\r\n return periods;\r\n }\r\n\r\n // Prepare Rates\r\n public initRates(tariff: Tariff, selectedPeriod: Period): void {\r\n this.tariff = tariff;\r\n this.selectedPeriod = selectedPeriod\r\n ? selectedPeriod\r\n : this.getAvailablePeriods(tariff.tariffRates)[0];\r\n const tariffParts = this.tariff.tariffType.value;\r\n this.resetTariffParts();\r\n switch (tariffParts) {\r\n case 'TOU 3 Part':\r\n this.initThreePartDemandRates();\r\n this.updateThreePartPowerXDemandRates();\r\n this.isTariffThreePart = true;\r\n break;\r\n\r\n case 'TOU 2 Part':\r\n this.initTwoPartDemandRates();\r\n this.updateTwoPartPowerXDemandRates();\r\n this.isTariffTwoPart = true;\r\n break;\r\n case 'Non-TOU':\r\n this.initOnePartDemandRates();\r\n this.updateOnePartPowerXDemandRates();\r\n this.isTariffOnePart = true;\r\n break;\r\n }\r\n }\r\n\r\n public getSavingsSum(): number {\r\n const savings = this.sum(\r\n this.getMunicipalRatedSum(),\r\n -1 * this.getPowerXRatedSum()\r\n );\r\n return savings;\r\n }\r\n\r\n // Temp?\r\n public getMunicipalPrice(): number {\r\n return this.isTariffOnePart\r\n ? this.highDemandFlatRate\r\n : this.highDemandPeakRate;\r\n }\r\n\r\n public getPowerXPrice(): number {\r\n return this.isTariffOnePart\r\n ? this.powerXHighDemandFlatRate\r\n : this.powerXHighDemandPeakRate;\r\n }\r\n\r\n public getCoveredConsumption(): number {\r\n return this.coveredConsumption;\r\n }\r\n\r\n public isTwoPart(): boolean {\r\n return this.isTariffTwoPart;\r\n }\r\n\r\n public getAverageRate(): number {\r\n if (this.isTariffOnePart) {\r\n console.log('one part average:');\r\n console.log(\r\n 'hd_flat: ' +\r\n this.highDemandFlatRate +\r\n ', ld_flat: ' +\r\n this.lowDemandFlatRate\r\n );\r\n const winterAverage = this.summerIncluded\r\n ? this.product(this.highDemandFlatRate, 0.25)\r\n : this.highDemandFlatRate;\r\n const summerAverage = this.summerIncluded\r\n ? this.product(this.lowDemandFlatRate, 0.75)\r\n : 0;\r\n return this.sum(winterAverage, summerAverage);\r\n } else if (this.isTariffTwoPart) {\r\n console.log('two part average:');\r\n console.log(\r\n 'h: ' +\r\n this.highDemandPeakRate +\r\n ', l: ' +\r\n this.lowDemandPeakRate\r\n );\r\n return (\r\n this.sum(this.highDemandPeakRate, this.lowDemandPeakRate) / 2\r\n );\r\n } else if (this.isTariffThreePart) {\r\n console.log('three part average:');\r\n console.log(\r\n 'p: ' +\r\n this.highDemandPeakRate +\r\n ', op: ' +\r\n this.highDemandOffPeakRate +\r\n ', s: ' +\r\n this.highDemandStandardRate\r\n );\r\n const HDR = this.sum(\r\n this.product(this.highDemandPeakRate, 0.17),\r\n this.product(this.highDemandOffPeakRate, 0.46),\r\n this.product(this.highDemandStandardRate, 0.37)\r\n );\r\n console.log('HDR: ', HDR);\r\n console.log('low...');\r\n console.log(\r\n 'p: ' +\r\n this.lowDemandPeakRate +\r\n ', op: ' +\r\n this.lowDemandOffPeakRate +\r\n ', s: ' +\r\n this.lowDemandStandardRate\r\n );\r\n const LDR = this.sum(\r\n this.product(this.lowDemandPeakRate, 0.17),\r\n this.product(this.lowDemandOffPeakRate, 0.46),\r\n this.product(this.lowDemandStandardRate, 0.37)\r\n );\r\n console.log('LDR: ', LDR);\r\n const winterAverage = this.summerIncluded\r\n ? this.product(HDR, 0.25)\r\n : HDR;\r\n const summerAverage = this.summerIncluded\r\n ? this.product(LDR, 0.75)\r\n : 0;\r\n return this.sum(winterAverage, summerAverage);\r\n }\r\n }\r\n\r\n public getPowerXAverageRate(): number {\r\n if (this.isTariffOnePart) {\r\n const winterAverage = this.summerIncluded\r\n ? this.product(this.powerXHighDemandFlatRate, 0.25)\r\n : this.powerXHighDemandFlatRate;\r\n const summerAverage = this.summerIncluded\r\n ? this.product(this.powerXLowDemandFlatRate, 0.75)\r\n : 0;\r\n return this.sum(winterAverage, summerAverage);\r\n } else if (this.isTariffTwoPart) {\r\n return (\r\n this.sum(\r\n this.powerXHighDemandPeakRate,\r\n this.powerXLowDemandPeakRate\r\n ) / 2\r\n );\r\n } else if (this.isTariffThreePart) {\r\n const HDR = this.sum(\r\n this.product(this.powerXHighDemandPeakRate, 0.17),\r\n this.product(this.powerXHighDemandOffPeakRate, 0.46),\r\n this.product(this.powerXHighDemandStandardRate, 0.37)\r\n );\r\n const LDR = this.sum(\r\n this.product(this.powerXLowDemandPeakRate, 0.17),\r\n this.product(this.powerXLowDemandOffPeakRate, 0.46),\r\n this.product(this.powerXLowDemandStandardRate, 0.37)\r\n );\r\n const winterAverage = this.summerIncluded\r\n ? this.product(HDR, 0.25)\r\n : HDR;\r\n const summerAverage = this.summerIncluded\r\n ? this.product(LDR, 0.75)\r\n : 0;\r\n return this.sum(winterAverage, summerAverage);\r\n }\r\n }\r\n\r\n public applyIncrease(increase: number): void {\r\n // High Demand Rate\r\n this.highDemandFlatRate = this.sum(\r\n this.highDemandFlatRate,\r\n this.product(this.highDemandFlatRate, increase / 100)\r\n );\r\n this.highDemandPeakRate = this.sum(\r\n this.highDemandPeakRate,\r\n this.product(this.highDemandPeakRate, increase / 100)\r\n );\r\n this.highDemandOffPeakRate = this.sum(\r\n this.highDemandOffPeakRate,\r\n this.product(this.highDemandOffPeakRate, increase / 100)\r\n );\r\n this.highDemandStandardRate = this.sum(\r\n this.highDemandStandardRate,\r\n this.product(this.highDemandStandardRate, increase / 100)\r\n );\r\n\r\n // Low Demand Rate\r\n this.lowDemandFlatRate = this.sum(\r\n this.lowDemandFlatRate,\r\n this.product(this.lowDemandFlatRate, increase / 100)\r\n );\r\n this.lowDemandPeakRate = this.sum(\r\n this.lowDemandPeakRate,\r\n this.product(this.lowDemandPeakRate, increase / 100)\r\n );\r\n this.lowDemandOffPeakRate = this.sum(\r\n this.lowDemandOffPeakRate,\r\n this.product(this.lowDemandOffPeakRate, increase / 100)\r\n );\r\n this.lowDemandStandardRate = this.sum(\r\n this.lowDemandStandardRate,\r\n this.product(this.lowDemandStandardRate, increase / 100)\r\n );\r\n\r\n // update increase to powerX rates\r\n if (this.isTariffThreePart) {\r\n this.updateThreePartPowerXDemandRates();\r\n }\r\n if (this.isTariffTwoPart) {\r\n this.updateTwoPartPowerXDemandRates();\r\n }\r\n if (this.isTariffOnePart) {\r\n this.updateOnePartPowerXDemandRates();\r\n }\r\n }\r\n\r\n private getMunicipalRatedSum(): number {\r\n // Return Three Part Sum\r\n if (this.isTariffThreePart) {\r\n return this.getThreePartSum();\r\n }\r\n\r\n // Return Two Part Sum\r\n if (this.isTariffTwoPart) {\r\n return this.getTwoPartSum();\r\n }\r\n\r\n // Return One Part Sum\r\n if (this.isTariffOnePart) {\r\n return this.getOnePartSum();\r\n }\r\n }\r\n\r\n private getThreePartSum(): number {\r\n const highA = this.product(\r\n this.highDemandPeakRate,\r\n this.highDemandConsumption,\r\n this.threePartPeakConstant\r\n );\r\n const highB = this.product(\r\n this.highDemandOffPeakRate,\r\n this.highDemandConsumption,\r\n this.threePartOffPeakConstant\r\n );\r\n const highC = this.product(\r\n this.highDemandStandardRate,\r\n this.highDemandConsumption,\r\n this.threePartStandardConstant\r\n );\r\n\r\n const lowA = this.product(\r\n this.lowDemandPeakRate,\r\n this.lowDemandConsumption,\r\n this.threePartPeakConstant\r\n );\r\n const lowB = this.product(\r\n this.lowDemandOffPeakRate,\r\n this.lowDemandConsumption,\r\n this.threePartOffPeakConstant\r\n );\r\n const lowC = this.product(\r\n this.lowDemandStandardRate,\r\n this.lowDemandConsumption,\r\n this.threePartStandardConstant\r\n );\r\n return this.sum(highA + highB + highC, lowA + lowB + lowC);\r\n }\r\n\r\n private getThreePartPowerXSum(): number {\r\n const highA = this.product(\r\n this.powerXHighDemandPeakRate,\r\n this.highDemandConsumption,\r\n this.threePartPeakConstant\r\n );\r\n const highB = this.product(\r\n this.powerXHighDemandOffPeakRate,\r\n this.highDemandConsumption,\r\n this.threePartOffPeakConstant\r\n );\r\n const highC = this.product(\r\n this.powerXHighDemandStandardRate,\r\n this.highDemandConsumption,\r\n this.threePartStandardConstant\r\n );\r\n\r\n const lowA = this.product(\r\n this.powerXLowDemandPeakRate,\r\n this.lowDemandConsumption,\r\n this.threePartPeakConstant\r\n );\r\n const lowB = this.product(\r\n this.powerXLowDemandOffPeakRate,\r\n this.lowDemandConsumption,\r\n this.threePartOffPeakConstant\r\n );\r\n const lowC = this.product(\r\n this.powerXLowDemandStandardRate,\r\n this.lowDemandConsumption,\r\n this.threePartStandardConstant\r\n );\r\n return this.sum(highA + highB + highC, lowA + lowB + lowC);\r\n }\r\n\r\n private getTwoPartSum(): number {\r\n const highA = this.product(\r\n this.highDemandPeakRate,\r\n this.highDemandConsumption,\r\n this.twoPartPeakConstant\r\n );\r\n const highB = this.product(\r\n this.highDemandOffPeakRate,\r\n this.highDemandConsumption,\r\n this.twoPartOffPeakConstant\r\n );\r\n\r\n const lowA = this.product(\r\n this.lowDemandPeakRate,\r\n this.lowDemandConsumption,\r\n this.twoPartPeakConstant\r\n );\r\n const lowB = this.product(\r\n this.lowDemandOffPeakRate,\r\n this.lowDemandConsumption,\r\n this.twoPartOffPeakConstant\r\n );\r\n return this.sum(highA, highB, lowA, lowB);\r\n }\r\n\r\n private getTwoPartPowerXSum(): number {\r\n const highA = this.product(\r\n this.powerXHighDemandPeakRate,\r\n this.highDemandConsumption,\r\n this.twoPartPeakConstant\r\n );\r\n const highB = this.product(\r\n this.powerXHighDemandOffPeakRate,\r\n this.highDemandConsumption,\r\n this.twoPartOffPeakConstant\r\n );\r\n\r\n const lowA = this.product(\r\n this.powerXLowDemandPeakRate,\r\n this.lowDemandConsumption,\r\n this.twoPartPeakConstant\r\n );\r\n const lowB = this.product(\r\n this.powerXLowDemandOffPeakRate,\r\n this.lowDemandConsumption,\r\n this.twoPartOffPeakConstant\r\n );\r\n return this.sum(highA, highB, lowA, lowB);\r\n }\r\n\r\n private getOnePartSum(): number {\r\n const highA = this.product(\r\n this.highDemandFlatRate,\r\n this.highDemandConsumption,\r\n this.onePartFlatConstant\r\n );\r\n\r\n const lowB = this.product(\r\n this.lowDemandFlatRate,\r\n this.lowDemandConsumption,\r\n this.onePartFlatConstant\r\n );\r\n return this.sum(highA, lowB);\r\n }\r\n\r\n private getOnePartPowerXSum(): number {\r\n const highA = this.product(\r\n this.powerXHighDemandFlatRate,\r\n this.highDemandConsumption,\r\n this.onePartFlatConstant\r\n );\r\n\r\n const lowB = this.product(\r\n this.powerXLowDemandFlatRate,\r\n this.lowDemandConsumption,\r\n this.onePartFlatConstant\r\n );\r\n return this.sum(highA, lowB);\r\n }\r\n\r\n private getPowerXRatedSum(): number {\r\n // Return Three Part Sum\r\n if (this.isTariffThreePart) {\r\n return this.getThreePartPowerXSum();\r\n }\r\n\r\n // Return Two Part Sum\r\n if (this.isTariffTwoPart) {\r\n return this.getTwoPartPowerXSum();\r\n }\r\n\r\n // Return One Part Sum\r\n if (this.isTariffOnePart) {\r\n return this.getOnePartPowerXSum();\r\n }\r\n }\r\n\r\n private filterRates(\r\n tariffType: string,\r\n season: string,\r\n demand: string\r\n ): number {\r\n let selectedRate = 0;\r\n if (this.tariff.tariffType.value === tariffType) {\r\n selectedRate = this.tariff.tariffRates.find((rate: any) => {\r\n return (\r\n rate.season.seasonName === season &&\r\n rate.energyBracket.value === demand &&\r\n rate.periodId === this.selectedPeriod.periodId\r\n );\r\n }).kwhRate;\r\n }\r\n return selectedRate;\r\n }\r\n\r\n private initThreePartDemandRates(): void {\r\n // High demand rates Municipality\r\n this.highDemandPeakRate = this.filterRates(\r\n 'TOU 3 Part',\r\n 'High Demand Season',\r\n 'Peak'\r\n );\r\n this.highDemandOffPeakRate = this.filterRates(\r\n 'TOU 3 Part',\r\n 'High Demand Season',\r\n 'OffPeak'\r\n );\r\n this.highDemandStandardRate = this.filterRates(\r\n 'TOU 3 Part',\r\n 'High Demand Season',\r\n 'Standard'\r\n );\r\n\r\n // Low demand rates Municipality\r\n this.lowDemandPeakRate = this.filterRates(\r\n 'TOU 3 Part',\r\n 'Low Demand Season',\r\n 'Peak'\r\n );\r\n this.lowDemandOffPeakRate = this.filterRates(\r\n 'TOU 3 Part',\r\n 'Low Demand Season',\r\n 'OffPeak'\r\n );\r\n this.lowDemandStandardRate = this.filterRates(\r\n 'TOU 3 Part',\r\n 'Low Demand Season',\r\n 'Standard'\r\n );\r\n }\r\n\r\n private updateThreePartPowerXDemandRates(): void {\r\n // High demand rates PowerX\r\n this.powerXHighDemandPeakRate =\r\n this.highDemandPeakRate -\r\n this.product(\r\n this.highDemandPeakRate,\r\n this.tariff.peakDiscount / 100\r\n );\r\n this.powerXHighDemandOffPeakRate =\r\n this.highDemandOffPeakRate -\r\n this.product(\r\n this.highDemandOffPeakRate,\r\n this.tariff.offPeakDiscount / 100\r\n );\r\n this.powerXHighDemandStandardRate =\r\n this.highDemandStandardRate -\r\n this.product(\r\n this.highDemandStandardRate,\r\n this.tariff.standardDiscount / 100\r\n );\r\n\r\n // Low demand rates PowerX\r\n this.powerXLowDemandPeakRate =\r\n this.lowDemandPeakRate -\r\n this.product(\r\n this.lowDemandPeakRate,\r\n this.tariff.peakDiscount / 100\r\n );\r\n this.powerXLowDemandOffPeakRate =\r\n this.lowDemandOffPeakRate -\r\n this.product(\r\n this.lowDemandOffPeakRate,\r\n this.tariff.offPeakDiscount / 100\r\n );\r\n this.powerXLowDemandStandardRate =\r\n this.lowDemandStandardRate -\r\n this.product(\r\n this.lowDemandStandardRate,\r\n this.tariff.standardDiscount / 100\r\n );\r\n }\r\n\r\n private initTwoPartDemandRates(): void {\r\n // High demand rates\r\n this.highDemandPeakRate = this.filterRates(\r\n 'TOU 2 Part',\r\n 'High Demand Season',\r\n 'Peak'\r\n );\r\n this.highDemandOffPeakRate = this.filterRates(\r\n 'TOU 2 Part',\r\n 'High Demand Season',\r\n 'OffPeak'\r\n );\r\n\r\n // Low demand rates\r\n this.lowDemandPeakRate = this.filterRates(\r\n 'TOU 2 Part',\r\n 'Low Demand Season',\r\n 'Peak'\r\n );\r\n this.lowDemandOffPeakRate = this.filterRates(\r\n 'TOU 2 Part',\r\n 'Low Demand Season',\r\n 'OffPeak'\r\n );\r\n }\r\n\r\n private updateTwoPartPowerXDemandRates(): void {\r\n // High demand rates\r\n this.powerXHighDemandPeakRate =\r\n this.highDemandPeakRate -\r\n this.product(\r\n this.highDemandPeakRate,\r\n this.tariff.peakDiscount / 100\r\n );\r\n this.powerXHighDemandOffPeakRate =\r\n this.highDemandOffPeakRate -\r\n this.product(\r\n this.highDemandOffPeakRate,\r\n this.tariff.offPeakDiscount / 100\r\n );\r\n\r\n // Low demand rates\r\n this.powerXLowDemandPeakRate =\r\n this.lowDemandPeakRate -\r\n this.product(\r\n this.lowDemandPeakRate,\r\n this.tariff.peakDiscount / 100\r\n );\r\n this.powerXLowDemandOffPeakRate =\r\n this.lowDemandOffPeakRate -\r\n this.product(\r\n this.lowDemandOffPeakRate,\r\n this.tariff.offPeakDiscount / 100\r\n );\r\n }\r\n\r\n private initOnePartDemandRates(): void {\r\n // High demand rates\r\n this.highDemandFlatRate = this.filterRates(\r\n 'Non-TOU',\r\n 'High Demand Season',\r\n 'Flat'\r\n );\r\n\r\n // Low demand rates\r\n this.lowDemandFlatRate = this.filterRates(\r\n 'Non-TOU',\r\n 'Low Demand Season',\r\n 'Flat'\r\n );\r\n }\r\n\r\n private updateOnePartPowerXDemandRates(): void {\r\n // High demand rates\r\n this.powerXHighDemandFlatRate =\r\n this.highDemandFlatRate -\r\n this.product(\r\n this.highDemandFlatRate,\r\n this.tariff.standardDiscount / 100\r\n );\r\n\r\n // Low demand rates\r\n this.powerXLowDemandFlatRate =\r\n this.lowDemandFlatRate -\r\n this.product(\r\n this.lowDemandFlatRate,\r\n this.tariff.standardDiscount / 100\r\n );\r\n }\r\n\r\n private resetTariffParts(): void {\r\n this.isTariffOnePart = false;\r\n this.isTariffTwoPart = false;\r\n this.isTariffThreePart = false;\r\n }\r\n\r\n private product(a: number, b: number, c: number = 1): number {\r\n return a * b * c;\r\n }\r\n\r\n private sum(a: number, b: number, c: number = 0, d: number = 0): number {\r\n return a + b + c + d;\r\n }\r\n}\r\n","import { BsModalService } from 'ngx-bootstrap/modal';\r\nimport { BsModalRef } from 'ngx-bootstrap';\r\nimport { ComponentTriggersService } from '../../../../../common/component-triggers.service';\r\nimport { FormControl, FormGroup } from '@angular/forms';\r\nimport { CommonService } from '../../../../../common/common-service';\r\nimport { ProspectService } from '../../../prospects/prospect.service';\r\nimport { Component, OnInit, ElementRef, ViewChild } from '@angular/core';\r\nimport { PremisesSavingsProjection } from '../../../../../model/administration/projection.model';\r\nimport { ConsumerCompanyService } from '../../../../consumer-company/consumer-company.service';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { saveAs as importedSaveAs } from 'file-saver';\r\n\r\nimport { Prospect } from '../../../../../model/prospect.model';\r\nimport { ConsumerCompanyPremises } from '../../../../../model/consumer-company-premises.model';\r\nimport { PremisesOfferDetail } from '../../../../../model/administration/offer-detail.model';\r\nimport { ConsumerCompany } from '../../../../../model/consumer-company.model';\r\nimport { EntityLookup } from '../../../../../model/entity-lookup.model';\r\nimport { ProspectPpaService } from '../../../prospect-ppa/prospect-ppa.service';\r\nimport { ProspectPpaDetail } from '../../../../../model/prospect-ppa-detail.model';\r\nimport { ProspectOfferCalculationService } from './prospect-offer-calculation.service';\r\nimport { Period } from '../../../../../model/period.model';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { config } from '../../../../../../../config/protractor.conf';\r\n\r\n@Component({\r\n selector: 'app-prospect-offer',\r\n templateUrl: './prospect-offer.component.html',\r\n styleUrls: [\r\n './prospect-offer.component.scss',\r\n './../../../../form.styles.scss',\r\n ],\r\n})\r\nexport class ProspectOfferComponent implements OnInit {\r\n public prospect: Prospect;\r\n public errorMessage = '';\r\n public offerStatusForm: FormGroup;\r\n public premise: ConsumerCompanyPremises;\r\n public prospectPpaDetail: ProspectPpaDetail;\r\n public loading: boolean = false;\r\n public inlineError = false;\r\n public showDownloadPreview: boolean = false;\r\n public downloadingPreview: boolean = false;\r\n public creatingAndSaving: boolean = false;\r\n public disableProjectionUpdate: boolean = false;\r\n public shouldUpdateRatesAfterInit: boolean = false;\r\n public canGeneratePpa: boolean = false;\r\n public canSkipOffer: boolean = false;\r\n public isE60: boolean = false;\r\n public overrideCoveredConsumption: boolean = false;\r\n public tariffCode: string;\r\n public distributionArea: string;\r\n public premisesConsumption: number;\r\n public offer: PremisesOfferDetail;\r\n public savings: PremisesSavingsProjection;\r\n public selectedPeriod: Period = null;\r\n public availablePeriods: Period[];\r\n public municipalIncrease: number;\r\n public year: number;\r\n public municipalPrice: number;\r\n public powerXIncrease: number;\r\n public powerXPrice: number;\r\n public modalRef: BsModalRef;\r\n @ViewChild('template')\r\n public template: ElementRef;\r\n\r\n public prospectOfferLookupId: number;\r\n\r\n constructor(\r\n private prospectPpaService: ProspectPpaService,\r\n private consumerCompanyService: ConsumerCompanyService,\r\n private route: ActivatedRoute,\r\n protected toastr: ToastrService,\r\n private prospectService: ProspectService,\r\n public commonService: CommonService,\r\n private componentTriggerService: ComponentTriggersService,\r\n private router: Router,\r\n private modalService: BsModalService,\r\n private offerCalculationService: ProspectOfferCalculationService\r\n ) {\r\n this.offerStatusForm = new FormGroup({\r\n offerSent: new FormControl(null),\r\n offerAccepted: new FormControl(null),\r\n });\r\n }\r\n\r\n public ngOnInit() {\r\n this.loading = true;\r\n this.route.params.subscribe(\r\n (params) => {\r\n this.consumerCompanyService\r\n .getOfferDetails(params.consumerCompanyPremisesId)\r\n .subscribe(\r\n (consumerCompany: ConsumerCompany) => {\r\n this.commonService\r\n .getEntityLookups([\r\n 'CompanyType',\r\n 'ConsumerCompanyStanding',\r\n 'ConsumerBusinessActivity',\r\n 'DistributorAccountCreditProblem',\r\n 'ProspectCreditRating',\r\n 'PremisesEvaluationStatus',\r\n 'PremisesDeclineReason',\r\n 'DocumentType',\r\n ])\r\n .subscribe(\r\n (entityLookups) => {\r\n this.prospectPpaService\r\n .getProspectPpaDetails(\r\n params.consumerCompanyPremisesId\r\n )\r\n .subscribe(\r\n (\r\n prospectPpaDetail: ProspectPpaDetail\r\n ) => {\r\n this.prospectService.initProspectEntityLookups(\r\n entityLookups\r\n );\r\n this.prospect = this.prospectService.getProspect(\r\n consumerCompany\r\n );\r\n this.prospectOfferLookupId = this.prospectService\r\n .getEntityLookupList(\r\n 'documentType'\r\n )\r\n .find(\r\n (\r\n documentType: EntityLookup\r\n ) => {\r\n return (\r\n documentType.value ===\r\n 'Consumer Prospect Offer'\r\n );\r\n }\r\n ).entityLookupId;\r\n // Take the first premise should be one in the list.\r\n this.premise = this.prospect.companyPremises[0];\r\n if (prospectPpaDetail) {\r\n this.prospectPpaDetail = prospectPpaDetail;\r\n this.canSkipOffer = !!(\r\n prospectPpaDetail &&\r\n this.premise\r\n .premisesOfferDetail\r\n );\r\n }\r\n this.initRequiredDetails();\r\n this.availablePeriods = this.offerCalculationService.getAvailablePeriods(\r\n this.premise.tariff\r\n .tariffRates\r\n );\r\n this.initRates();\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n }\r\n\r\n public initRequiredDetails(): void {\r\n this.offer = new PremisesOfferDetail(\r\n this.premise.tariff.peakDiscount,\r\n 'PLEASE SELECT OPTION BELOW',\r\n 0,\r\n 0,\r\n [],\r\n 0,\r\n this.premise.consumerCompanyPremisesId,\r\n 0\r\n );\r\n this.savings = new PremisesSavingsProjection(\r\n null,\r\n null,\r\n null,\r\n null,\r\n null,\r\n null,\r\n null,\r\n 0\r\n );\r\n this.municipalIncrease = 0;\r\n\r\n if (\r\n this.premise.premisesOfferDetail != null ||\r\n this.premise.premisesOfferDetail\r\n ) {\r\n this.offer = this.premise.premisesOfferDetail;\r\n this.offerStatusForm.controls.offerAccepted.setValue(\r\n this.offer.offerAccepted\r\n );\r\n this.offerStatusForm.controls.offerSent.setValue(\r\n this.offer.offerSent\r\n );\r\n this.canGeneratePpa = this.premise.premisesOfferDetail.offerAccepted;\r\n }\r\n\r\n if (\r\n this.premise.premisesOfferDetail &&\r\n this.premise.premisesOfferDetail.premisesSavingsProjections !=\r\n null &&\r\n this.premise.premisesOfferDetail.premisesSavingsProjections.length >\r\n 0\r\n ) {\r\n this.savings = this.premise.premisesOfferDetail.premisesSavingsProjections[\r\n this.premise.premisesOfferDetail.premisesSavingsProjections\r\n .length - 1\r\n ];\r\n this.year = +this.savings.year.substring(0, 4) + 1;\r\n this.disableProjectionUpdate = this.premise.premisesOfferDetail\r\n .offerAccepted\r\n ? true\r\n : false;\r\n this.showDownloadPreview = true;\r\n this.shouldUpdateRatesAfterInit = this.premise.premisesOfferDetail\r\n .offerAccepted\r\n ? false\r\n : true;\r\n }\r\n\r\n this.savings.premisesOfferDetailId = this.offer.premisesOfferDetailId;\r\n this.municipalIncrease = this.savings.municipalIncrease;\r\n this.municipalPrice = this.savings.municipalPrice;\r\n this.powerXIncrease = this.savings.powerXIncrease;\r\n this.powerXPrice = this.savings.powerXPrice;\r\n\r\n this.distributionArea = this.premise.distributor.name;\r\n this.tariffCode = this.premise.tariff.tariffCode;\r\n this.premisesConsumption = this.premise.premisesAverageConsumption.consumption;\r\n }\r\n\r\n public initRates(): void {\r\n this.offerCalculationService.initRates(\r\n this.premise.tariff,\r\n this.selectedPeriod\r\n );\r\n this.isE60 = this.offerCalculationService.isTwoPart();\r\n this.year = this.selectedPeriod\r\n ? +this.selectedPeriod.periodName.substring(0, 4)\r\n : null;\r\n if (this.shouldUpdateRatesAfterInit) {\r\n this.updateRatesAfterInit();\r\n }\r\n }\r\n\r\n public updateRatesAfterInit(): void {\r\n const summerIncluded = !(this.offer.season.search('winter') >= 0);\r\n const projections = this.offer.premisesSavingsProjections;\r\n this.offer.updatePremisesProjections = false;\r\n this.year =\r\n projections[projections.length - 1].year != null\r\n ? +projections[projections.length - 1].year.substring(0, 4)\r\n : null;\r\n this.offerCalculationService.updateCoveredConsumption(\r\n this.premisesConsumption,\r\n summerIncluded,\r\n this.premise.premisesOfferDetail.summerAllocation,\r\n this.premise.premisesOfferDetail.winterAllocation\r\n );\r\n this.premise.premisesOfferDetail.premisesSavingsProjections.forEach(\r\n (projection: PremisesSavingsProjection) => {\r\n this.offerCalculationService.applyIncrease(\r\n projection.municipalIncrease\r\n );\r\n }\r\n );\r\n projections.pop();\r\n this.addSavings(false);\r\n }\r\n\r\n public calculateCoveredPower(): void {\r\n const summerIncluded = !(this.offer.season.search('winter') >= 0);\r\n const coveredConsumption = !this.overrideCoveredConsumption\r\n ? this.premisesConsumption\r\n : this.savings.powerXKwh;\r\n this.offerCalculationService.updateCoveredConsumption(\r\n coveredConsumption,\r\n summerIncluded,\r\n this.offer.summerAllocation,\r\n this.offer.winterAllocation\r\n );\r\n this.savings.powerXKwh = this.offerCalculationService.getCoveredConsumption();\r\n }\r\n\r\n public addSavings(projectionsUpdated = true): void {\r\n this.offer.updatePremisesProjections = projectionsUpdated;\r\n this.municipalIncrease =\r\n this.municipalIncrease != null ? this.municipalIncrease : 0;\r\n this.powerXIncrease = this.municipalIncrease;\r\n const nextYear = +this.year + 1;\r\n const yearSave = this.year + '/' + nextYear.toString().substring(2, 4);\r\n\r\n // Apply increase and get updated prices\r\n this.offerCalculationService.applyIncrease(this.municipalIncrease);\r\n this.savings.savings = this.offerCalculationService.getSavingsSum();\r\n this.municipalPrice = this.offerCalculationService.getAverageRate();\r\n this.powerXPrice = this.offerCalculationService.getPowerXAverageRate();\r\n console.log('a: ', this.municipalPrice);\r\n // Push calculated values\r\n this.offer.premisesSavingsProjections.push(\r\n new PremisesSavingsProjection(\r\n yearSave,\r\n this.municipalIncrease,\r\n this.municipalPrice,\r\n this.powerXIncrease,\r\n this.powerXPrice,\r\n this.savings.powerXKwh,\r\n this.savings.savings,\r\n this.offer.premisesOfferDetailId\r\n )\r\n );\r\n\r\n this.year = nextYear;\r\n\r\n this.calculateTotalSavings();\r\n }\r\n\r\n public removeProjection(projectionIndex: number): void {\r\n this.offer.updatePremisesProjections = true;\r\n const removed = this.offer.premisesSavingsProjections.pop();\r\n const nextProjection = this.offer.premisesSavingsProjections[\r\n projectionIndex - 1\r\n ];\r\n if (nextProjection) {\r\n const removePercentage =\r\n removed.municipalIncrease / (100 + removed.municipalIncrease);\r\n this.offerCalculationService.applyIncrease(-removePercentage * 100);\r\n this.year = +removed.year.toString().substring(0, 4);\r\n } else {\r\n this.year = null;\r\n this.shouldUpdateRatesAfterInit = false;\r\n this.initRates();\r\n }\r\n this.calculateTotalSavings();\r\n }\r\n\r\n public saveDetails(): void {\r\n this.loading = true;\r\n const hasAllocation =\r\n this.offer.summerAllocation + this.offer.winterAllocation > 0;\r\n const hasProjections = this.offer.premisesSavingsProjections.length > 0;\r\n const seasonSelected = !this.offer.season.includes('SELECT');\r\n\r\n if (hasAllocation && seasonSelected && hasProjections) {\r\n this.errorMessage = '';\r\n this.consumerCompanyService.addOfferDetails(this.offer).subscribe(\r\n (offer: PremisesOfferDetail) => {\r\n this.toastr.success('Offer Progress Successfully Updated');\r\n this.showDownloadPreview =\r\n offer.premisesSavingsProjections != null &&\r\n offer.premisesSavingsProjections.length > 0;\r\n this.disableProjectionUpdate = offer.offerAccepted\r\n ? true\r\n : false;\r\n this.canGeneratePpa = offer.offerAccepted;\r\n this.canSkipOffer = !!(this.prospectPpaDetail && offer);\r\n if (this.canSkipOffer) {\r\n this.toastr.info('You can now skip this offer');\r\n }\r\n if (offer.offerAccepted) {\r\n this.router.navigate([\r\n 'consumers',\r\n 'prospect-evaluations',\r\n ]);\r\n }\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n this.toastr.error(this.errorMessage);\r\n }\r\n );\r\n } else {\r\n this.errorMessage = hasProjections\r\n ? ''\r\n : 'Please add at least one year savings projection.';\r\n this.errorMessage = hasAllocation\r\n ? this.errorMessage\r\n : 'Summer and/or Winter consumption should be greater than 0. ';\r\n this.errorMessage = !seasonSelected\r\n ? this.errorMessage +\r\n 'Please select season: either throughout the year or in winter months only.'\r\n : this.errorMessage;\r\n this.toastr.error(this.errorMessage);\r\n this.inlineError = true;\r\n this.loading = false;\r\n }\r\n }\r\n\r\n public skipOffer(): void {\r\n this.consumerCompanyService\r\n .skipOffer(this.premise.consumerCompanyPremisesId)\r\n .subscribe(\r\n () => {\r\n this.toastr.success('Offer Successfully Skipped');\r\n this.toastr.info(\r\n 'Premises Updated to Schedule or Pending PPA'\r\n );\r\n this.router.navigate(['consumers', 'prospect-evaluations']);\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n\r\n public previewOffer(): void {\r\n this.downloadingPreview = true;\r\n this.consumerCompanyService\r\n .getOfferPreviewDocument(this.offer.consumerCompanyPremisesId)\r\n .subscribe(\r\n (blob) => {\r\n importedSaveAs(\r\n blob,\r\n 'Standard Offer - ' +\r\n this.premise.premisesName +\r\n '.docx'\r\n );\r\n this.downloadingPreview = false;\r\n },\r\n () => {\r\n this.errorMessage =\r\n 'An error occurred while retrieving the document for download';\r\n this.toastr.error(this.errorMessage);\r\n this.downloadingPreview = false;\r\n }\r\n );\r\n }\r\n\r\n public archiveOffer(response: boolean = null): void {\r\n if (response === null) {\r\n this.modalRef = this.modalService.show(this.template);\r\n } else if (response === true) {\r\n this.consumerCompanyService\r\n .archiveOffer(this.premise.consumerCompanyPremisesId)\r\n .subscribe(\r\n () => {\r\n this.toastr.success('Offer Successfully Archived');\r\n this.router.navigate([\r\n 'consumers',\r\n 'prospect-evaluations',\r\n ]);\r\n this.modalRef.hide();\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n } else {\r\n this.modalRef.hide();\r\n }\r\n }\r\n\r\n public onSubmitSaveDetails(): void {\r\n this.commonService.validateAllFormFields(this.offerStatusForm);\r\n if (this.offerStatusForm.valid) {\r\n this.offer.offerAccepted = this.offerStatusForm.controls.offerAccepted.value;\r\n this.offer.offerSent = this.offer.offerAccepted\r\n ? true\r\n : this.offerStatusForm.controls.offerSent.value;\r\n this.saveDetails();\r\n }\r\n }\r\n\r\n public saveOffer() {\r\n this.creatingAndSaving = true;\r\n this.consumerCompanyService\r\n .uploadProspectOfferDocument(\r\n this.offer.consumerCompanyPremisesId,\r\n 'Standard Offer - ' + this.premise.premisesName + '.docx'\r\n )\r\n .subscribe(\r\n () => {\r\n this.componentTriggerService.triggerDocumentsRefresh.next();\r\n this.creatingAndSaving = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.toastr.error(this.errorMessage);\r\n this.creatingAndSaving = false;\r\n }\r\n );\r\n }\r\n\r\n private calculateTotalSavings(): void {\r\n this.offer.totalSavings = 0;\r\n this.offer.premisesSavingsProjections.forEach(\r\n (savings: PremisesSavingsProjection) => {\r\n this.offer.totalSavings += +savings.savings;\r\n }\r\n );\r\n }\r\n}\r\n","import { PremisesSavingsProjection } from './projection.model';\r\n\r\nexport class PremisesOfferDetail {\r\n constructor(\r\n public discount: number,\r\n public season: string,\r\n public summerAllocation: number,\r\n public winterAllocation: number,\r\n public premisesSavingsProjections?: PremisesSavingsProjection[],\r\n public totalSavings?: number,\r\n public consumerCompanyPremisesId?: number,\r\n public premisesOfferDetailId?: number,\r\n public offerSent?: boolean,\r\n public offerAccepted?: boolean,\r\n public updatePremisesProjections?: boolean\r\n ) {}\r\n}\r\n","import { map } from 'rxjs/operators';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { HttpClient } from '@angular/common/http';\r\n\r\n@Injectable()\r\nexport class GeneratorPpaService {\r\n constructor(private httpClient: HttpClient) {}\r\n\r\n public getGeneratorFacilityPpa(facilityId: number): Observable {\r\n return this.httpClient.get(\r\n API_URL +\r\n 'GeneratorDocumentGeneration/GetGeneratorFacilityPPA?generatorProjectFacilityId=' +\r\n facilityId\r\n );\r\n }\r\n public archiveGeneratorProjectFacility(\r\n facilityId: number\r\n ): Observable {\r\n return this.httpClient.get(\r\n API_URL +\r\n 'GeneratorProjectFacility/ArchiveGeneratorProjectFacility?generatorProjectFacilityId=' +\r\n facilityId\r\n );\r\n }\r\n public unarchiveGeneratorProjectFacility(\r\n facilityId: number\r\n ): Observable {\r\n return this.httpClient.get(\r\n API_URL +\r\n 'GeneratorProjectFacility/UnarchiveGeneratorProjectFacility?generatorProjectFacilityId=' +\r\n facilityId\r\n );\r\n }\r\n\r\n public generatorFacilityPpa(facilityPpa: any): Observable {\r\n return this.httpClient.post(\r\n API_URL + 'GeneratorDocumentGeneration/GeneratorFacilityPpa',\r\n facilityPpa\r\n );\r\n }\r\n\r\n public offerCompletePpa(facilityPpa: any): Observable {\r\n return this.httpClient.post(\r\n API_URL +\r\n 'GeneratorDocumentGeneration/GeneratorFacilityPpaOfferComplete',\r\n facilityPpa\r\n );\r\n }\r\n\r\n public getGeneratorFacilityPpaPreview(\r\n facilityPpaSchedule: any\r\n ): Observable {\r\n return this.httpClient\r\n .post(\r\n API_URL +\r\n 'GeneratorDocumentGeneration/GeneratorFacilityPpaPreview',\r\n facilityPpaSchedule,\r\n { responseType: 'blob' }\r\n )\r\n .pipe(map((response) => response));\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable } from 'rxjs/internal/Observable';\r\n\r\n@Injectable()\r\nexport class GeneratorProjectFacilityTariffRatesService {\r\n constructor(private httpClient: HttpClient) {}\r\n\r\n public getGeneratorProjectFacilityTariffRates(\r\n facilityId: number,\r\n isNonTOU: boolean\r\n ): Observable {\r\n return this.httpClient.get(\r\n API_URL +\r\n 'GeneratorProjectFacilityTariffRate/GetGeneratorProjectFacilityTariffRates?facilityId=' +\r\n facilityId +\r\n '&isTou=' +\r\n !isNonTOU\r\n );\r\n }\r\n\r\n public getNewGeneratorProjectFacilityTariffRates(\r\n facilityId: number,\r\n isNonTOU: boolean\r\n ): Observable {\r\n return this.httpClient.get(\r\n API_URL +\r\n 'GeneratorProjectFacilityTariffRate/GetNewGeneratorProjectFacilityTariffRates?facilityId=' +\r\n facilityId +\r\n '&isTou=' +\r\n !isNonTOU\r\n );\r\n }\r\n\r\n public createGeneratorProjectFacilityRates(\r\n generatorProjectFacilityTariffRateDtos: any\r\n ): Observable {\r\n return this.httpClient.post(\r\n API_URL +\r\n 'GeneratorProjectFacilityTariffRate/CreateGeneratorProjectFacilityRates',\r\n generatorProjectFacilityTariffRateDtos\r\n );\r\n }\r\n\r\n public getGeneratorTariffRateTariffTypes(): Observable {\r\n return this.httpClient.get(\r\n API_URL +\r\n 'GeneratorProjectFacilityTariffRate/GetGeneratorTariffRateTariffTypes'\r\n );\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { GeneratorPpaService } from './generator-ppa.service';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { FormGroup, Validators, FormControl } from '@angular/forms';\r\nimport { CommonService } from '../../../../../common/common-service';\r\nimport { isNullOrUndefined } from '@swimlane/ngx-datatable/release/utils';\r\nimport { saveAs as importedSaveAs } from 'file-saver';\r\nimport { GeneratorDocumentGeneration } from '../../../../../model/generator/generator-document-generation.model';\r\nimport { EntityLookup } from '../../../../../model/entity-lookup.model';\r\nimport { ComponentTriggersService } from '../../../../../common/component-triggers.service';\r\nimport { GeneratorProjectFacilityTariffRatesService } from '../../../../generator-project-facility/generator-project-facility-tariff-rates/generator-project-facility-tariff-rates.service';\r\n\r\nimport { ToastrService } from 'ngx-toastr';\r\n\r\n@Component({\r\n selector: 'app-generator-ppa',\r\n templateUrl: './generator-ppa.component.html',\r\n styleUrls: ['../../../../form.styles.scss'],\r\n})\r\nexport class GeneratorPpaComponent implements OnInit {\r\n public signedPpaUploaded: boolean = false;\r\n public loading = false;\r\n public documentFieldsForm: FormGroup;\r\n public errorMessage = '';\r\n private facilityId: number;\r\n private facilityPpaDoc: GeneratorDocumentGeneration;\r\n private isMicro = false;\r\n private isPlanned = false;\r\n private isExisting = false;\r\n private isDownloadingPreview: boolean = false;\r\n private isArchiving: boolean = false;\r\n private escalationTypes: EntityLookup;\r\n private tariffTypes: any[];\r\n private nonTouTariffTypeId: number;\r\n\r\n constructor(\r\n private generatorPpaService: GeneratorPpaService,\r\n private componentTriggersService: ComponentTriggersService,\r\n private generatorProjectFacilityTariffRatesService: GeneratorProjectFacilityTariffRatesService,\r\n private commonService: CommonService,\r\n private route: ActivatedRoute,\r\n private router: Router,\r\n private toastr: ToastrService\r\n ) {}\r\n\r\n public initDocumentFieldsForm(ppa: GeneratorDocumentGeneration) {\r\n this.documentFieldsForm = new FormGroup({\r\n longstopDate: new FormControl(\r\n isNullOrUndefined(ppa)\r\n ? null\r\n : ppa.evaluationField.longStopDate,\r\n Validators.required\r\n ),\r\n commercialOperatorsDate: new FormControl(\r\n isNullOrUndefined(ppa)\r\n ? null\r\n : ppa.evaluationField.commercialOperatorsDate,\r\n Validators.required\r\n ),\r\n sellerLicenseNumber: new FormControl(\r\n isNullOrUndefined(ppa)\r\n ? null\r\n : ppa.evaluationField.sellerLicenseNumber\r\n ),\r\n minimalAcceptanceInstalledCapacity: new FormControl(\r\n isNullOrUndefined(ppa)\r\n ? null\r\n : ppa.evaluationField.minimalAcceptanceInstalledCapacity,\r\n Validators.required\r\n ),\r\n adminFeesAfterScheduleDate: new FormControl(\r\n isNullOrUndefined(ppa)\r\n ? null\r\n : ppa.evaluationField.adminFeesAfterScheduleDate,\r\n Validators.required\r\n ),\r\n adminFeesAfterEffectiveDate: new FormControl(\r\n isNullOrUndefined(ppa)\r\n ? null\r\n : ppa.evaluationField.adminFeesAfterEffectiveDate,\r\n Validators.required\r\n ),\r\n expiryDateAfterEffectiveDate: new FormControl(\r\n isNullOrUndefined(ppa)\r\n ? null\r\n : ppa.evaluationField.expiryDateAfterEffectiveDate,\r\n Validators.required\r\n ),\r\n cpFulfillmentDate: new FormControl(\r\n isNullOrUndefined(ppa)\r\n ? null\r\n : ppa.evaluationField.cpFulfillmentDate,\r\n Validators.required\r\n ),\r\n isDocumentSentPpa: new FormControl(\r\n isNullOrUndefined(ppa)\r\n ? null\r\n : ppa.evaluationField.isDocumentSentPpa\r\n ),\r\n signedPpa: new FormControl(\r\n isNullOrUndefined(ppa) ? null : ppa.evaluationField.signedPpa\r\n ),\r\n isOfferAcceptedPpa: new FormControl(\r\n isNullOrUndefined(ppa)\r\n ? null\r\n : ppa.evaluationField.isOfferAcceptedPpa\r\n ),\r\n isDocumentGeneratedPpa: new FormControl(\r\n isNullOrUndefined(ppa)\r\n ? null\r\n : ppa.evaluationField.isDocumentGeneratedPpa\r\n ),\r\n allocationCapacity: new FormControl(\r\n isNullOrUndefined(ppa)\r\n ? null\r\n : ppa.evaluationField.allocationCapacity\r\n ),\r\n allocationPeriod: new FormControl(\r\n isNullOrUndefined(ppa)\r\n ? null\r\n : ppa.evaluationField.allocationPeriod\r\n ),\r\n allocationCapacity2: new FormControl(\r\n isNullOrUndefined(ppa)\r\n ? null\r\n : ppa.evaluationField.allocationCapacity2\r\n ),\r\n allocationPeriod2: new FormControl(\r\n isNullOrUndefined(ppa)\r\n ? null\r\n : ppa.evaluationField.allocationPeriod2\r\n ),\r\n allocationCapacity3: new FormControl(\r\n isNullOrUndefined(ppa)\r\n ? null\r\n : ppa.evaluationField.allocationCapacity3\r\n ),\r\n allocationPeriod3: new FormControl(\r\n isNullOrUndefined(ppa)\r\n ? null\r\n : ppa.evaluationField.allocationPeriod3\r\n ),\r\n capitalExpenditure: new FormControl(\r\n isNullOrUndefined(ppa)\r\n ? null\r\n : ppa.evaluationField.capitalExpenditure,\r\n Validators.required\r\n ),\r\n operatingExpenditure: new FormControl(\r\n isNullOrUndefined(ppa)\r\n ? null\r\n : ppa.evaluationField.operatingExpenditure,\r\n Validators.required\r\n ),\r\n increasedDate: new FormControl(\r\n isNullOrUndefined(ppa)\r\n ? null\r\n : ppa.evaluationField.increasedDate,\r\n Validators.required\r\n ),\r\n ppaSignedDate: new FormControl(\r\n isNullOrUndefined(ppa)\r\n ? null\r\n : ppa.evaluationField.ppaSignedDate\r\n ),\r\n\r\n generatorFacilityEvaluationFieldId: new FormControl(\r\n isNullOrUndefined(ppa)\r\n ? null\r\n : ppa.evaluationField.generatorFacilityEvaluationFieldId,\r\n Validators.required\r\n ),\r\n generatorProjectFacilityId: new FormControl(\r\n isNullOrUndefined(ppa)\r\n ? null\r\n : ppa.evaluationField.generatorProjectFacilityId,\r\n Validators.required\r\n ),\r\n documentTemplateId: new FormControl(\r\n isNullOrUndefined(ppa)\r\n ? null\r\n : ppa.evaluationField.documentTemplateId\r\n ),\r\n documentTemplateName: new FormControl(\r\n isNullOrUndefined(ppa)\r\n ? null\r\n : ppa.evaluationField.documentTemplateName\r\n ),\r\n highDemandRate: new FormControl({\r\n value: isNullOrUndefined(ppa) ? null : ppa.highDemandRate,\r\n disabled: true,\r\n }),\r\n lowDemandRate: new FormControl({\r\n value: isNullOrUndefined(ppa) ? null : ppa.lowDemandRate,\r\n disabled: true,\r\n }),\r\n distributorHighDemandRate: new FormControl({\r\n value: isNullOrUndefined(ppa)\r\n ? null\r\n : ppa.distributorHighDemandRate,\r\n disabled: true,\r\n }),\r\n distributorLowDemandRate: new FormControl({\r\n value: isNullOrUndefined(ppa)\r\n ? null\r\n : ppa.distributorLowDemandRate,\r\n disabled: true,\r\n }),\r\n generatorEscalationTypeLookupId: new FormControl(\r\n isNullOrUndefined(ppa)\r\n ? null\r\n : ppa.evaluationField.generatorEscalationTypeLookupId,\r\n Validators.required\r\n ),\r\n tariffTypeLookupId: new FormControl(\r\n isNullOrUndefined(ppa)\r\n ? null\r\n : ppa.evaluationField.tariffTypeLookupId,\r\n Validators.required\r\n ),\r\n });\r\n }\r\n\r\n public ngOnInit() {\r\n this.loading = true;\r\n this.route.params.subscribe(\r\n (params) => {\r\n if (params['facilityId']) {\r\n this.facilityId = params['facilityId'];\r\n }\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n\r\n // Get Escalation Type Entity Lookups\r\n this.commonService\r\n .getEntityLookups(['GeneratorEscalationType'])\r\n .subscribe(\r\n (entityLookups) => {\r\n this.escalationTypes =\r\n entityLookups.entityLookupResultList[\r\n 'generatorEscalationType'\r\n ];\r\n\r\n this.generatorProjectFacilityTariffRatesService\r\n .getGeneratorTariffRateTariffTypes()\r\n .subscribe(\r\n (types: any[]) => {\r\n this.tariffTypes = types;\r\n\r\n // Get non Tariff Type Lookup Id\r\n this.tariffTypes.forEach(\r\n (t: any) => {\r\n if (t.value.indexOf('Non') >= 0) {\r\n this.nonTouTariffTypeId =\r\n t.entityLookupId;\r\n }\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n\r\n this.generatorPpaService\r\n .getGeneratorFacilityPpa(this.facilityId)\r\n .subscribe(\r\n (\r\n ppaPage: GeneratorDocumentGeneration\r\n ) => {\r\n this.facilityPpaDoc = ppaPage;\r\n this.facilityPpaDoc.evaluationField.isOfferAcceptedPpa = !!this\r\n .facilityPpaDoc.evaluationField\r\n .signedPpa;\r\n this.signedPpaUploaded = this.facilityPpaDoc.evaluationField.isOfferAcceptedPpa;\r\n this.initDocumentFieldsForm(\r\n this.facilityPpaDoc\r\n );\r\n\r\n this.isExisting =\r\n this.facilityPpaDoc\r\n .evaluationField\r\n .documentTemplateName ===\r\n 'Existing Generator PPA';\r\n this.isPlanned =\r\n this.facilityPpaDoc\r\n .evaluationField\r\n .documentTemplateName ===\r\n 'Planned Generator PPA';\r\n this.isMicro =\r\n this.facilityPpaDoc\r\n .evaluationField\r\n .documentTemplateName ===\r\n 'Micro Scale Generator PPA';\r\n\r\n this.DisableValidations();\r\n\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n\r\n public signedPpaDocumentUpload(output: any): void {\r\n if (output.value && output.listenerId === 'isOfferAcceptedPpa') {\r\n this.documentFieldsForm.controls.signedPpa.setValue(output.value);\r\n this.signedPpaUploaded = true;\r\n }\r\n }\r\n\r\n public onGenerateDocumentSubmit() {\r\n this.errorMessage = '';\r\n this.commonService.validateAllFormFields(this.documentFieldsForm);\r\n this.validateCommercialOperatorsDate();\r\n if (this.documentFieldsForm.valid) {\r\n this.loading = true;\r\n this.generatorPpaService\r\n .generatorFacilityPpa(this.documentFieldsForm.value)\r\n .subscribe(\r\n (page: GeneratorDocumentGeneration) => {\r\n this.facilityPpaDoc = page;\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n }\r\n\r\n public onOfferCompleteSubmit() {\r\n this.errorMessage = '';\r\n this.commonService.validateAllFormFields(this.documentFieldsForm);\r\n this.validateCommercialOperatorsDate();\r\n if (this.documentFieldsForm.valid) {\r\n this.loading = true;\r\n this.generatorPpaService\r\n .offerCompletePpa(this.documentFieldsForm.value)\r\n .subscribe(\r\n (page: GeneratorDocumentGeneration) => {\r\n this.facilityPpaDoc = page;\r\n this.loading = false;\r\n\r\n this.router.navigate(['generators', 'evaluation']);\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n }\r\n public ArchiveGenerator() {\r\n this.isArchiving = true;\r\n this.generatorPpaService\r\n .archiveGeneratorProjectFacility(this.facilityId)\r\n .subscribe(\r\n (result) => {\r\n this.isArchiving = false;\r\n\r\n if (result != null) {\r\n this.toastr.success(\r\n 'Generator facility successfully archived'\r\n );\r\n } else {\r\n this.toastr.error(\r\n 'Unable to archive generator facility'\r\n );\r\n }\r\n },\r\n () => {\r\n this.toastr.error('Unable to archive generator facility');\r\n this.isArchiving = false;\r\n }\r\n );\r\n }\r\n\r\n public UnarchiveGenerator() {\r\n this.isArchiving = true;\r\n\r\n this.generatorPpaService\r\n .unarchiveGeneratorProjectFacility(this.facilityId)\r\n .subscribe(\r\n (result) => {\r\n this.isArchiving = false;\r\n\r\n if (result != null) {\r\n this.toastr.success(\r\n 'Generator facility successfully unarchived'\r\n );\r\n } else {\r\n this.toastr.error(\r\n 'Unable to unarchive generator facility'\r\n );\r\n }\r\n },\r\n () => {\r\n this.toastr.error('Unable to unarchive generator facility');\r\n this.isArchiving = false;\r\n }\r\n );\r\n }\r\n public onPreviewDocumentSubmit() {\r\n this.errorMessage = '';\r\n this.commonService.validateAllFormFields(this.documentFieldsForm);\r\n this.validateCommercialOperatorsDate();\r\n if (this.documentFieldsForm.valid) {\r\n this.isDownloadingPreview = true;\r\n this.generatorPpaService\r\n .getGeneratorFacilityPpaPreview(this.documentFieldsForm.value)\r\n .subscribe(\r\n (blob) => {\r\n importedSaveAs(\r\n blob,\r\n this.facilityPpaDoc.evaluationField\r\n .documentTemplateName + '.docx'\r\n );\r\n this.isDownloadingPreview = false;\r\n },\r\n () => {\r\n this.errorMessage = this.commonService.handleDocumentErrorMessage(\r\n 'generator PPA'\r\n );\r\n this.isDownloadingPreview = false;\r\n this.toastr.error(this.errorMessage);\r\n }\r\n );\r\n }\r\n }\r\n\r\n public DisableValidations() {\r\n if (this.isMicro) {\r\n this.commonService.disableControl(\r\n this.documentFieldsForm.controls.adminFeesAfterScheduleDate\r\n );\r\n this.commonService.disableControl(\r\n this.documentFieldsForm.controls.adminFeesAfterEffectiveDate\r\n );\r\n this.commonService.disableControl(\r\n this.documentFieldsForm.controls.capitalExpenditure\r\n );\r\n this.commonService.disableControl(\r\n this.documentFieldsForm.controls.operatingExpenditure\r\n );\r\n }\r\n\r\n if (this.isPlanned) {\r\n this.commonService.disableControl(\r\n this.documentFieldsForm.controls.cpFulfillmentDate\r\n );\r\n }\r\n\r\n if (this.isExisting) {\r\n this.commonService.disableControl(\r\n this.documentFieldsForm.controls\r\n .minimalAcceptanceInstalledCapacity\r\n );\r\n this.commonService.disableControl(\r\n this.documentFieldsForm.controls.cpFulfillmentDate\r\n );\r\n }\r\n }\r\n\r\n public onGoToLanding() {\r\n this.router.navigate(['generators', 'evaluation']);\r\n }\r\n\r\n public onTariffTypeChange() {\r\n const isNonTou =\r\n this.documentFieldsForm.controls.tariffTypeLookupId.value ===\r\n this.nonTouTariffTypeId;\r\n this.componentTriggersService.triggerGeneratorProjectFacilityTariffRatesComponent.next(\r\n isNonTou\r\n );\r\n }\r\n\r\n public validateCommercialOperatorsDate() {\r\n // Validate if commercialOperatorsDate is null\r\n if (\r\n this.documentFieldsForm.controls.commercialOperatorsDate.value ==\r\n null\r\n ) {\r\n this.documentFieldsForm.controls.commercialOperatorsDate.setErrors({\r\n incorrect: true,\r\n });\r\n return;\r\n }\r\n // Validate if date is on the 1st\r\n const operationDate = new Date(\r\n this.documentFieldsForm.controls.commercialOperatorsDate.value\r\n );\r\n if ((operationDate as Date).getDate() !== 1) {\r\n this.documentFieldsForm.controls.commercialOperatorsDate.setErrors({\r\n incorrect: true,\r\n });\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\n\r\n@Injectable()\r\nexport class GeneratorProjectFacilityActivationService {\r\n constructor(private httpClient: HttpClient) {}\r\n\r\n public updateGeneratorActivation(\r\n generatorActivations: any\r\n ): Observable {\r\n return this.httpClient.patch(\r\n API_URL + 'GeneratorProjectFacility/UpdateGeneratorActivation',\r\n generatorActivations\r\n );\r\n }\r\n\r\n public getGeneratorProjectFacilityActivation(id: number): Observable {\r\n return this.httpClient.get(\r\n API_URL +\r\n 'GeneratorProjectFacility/GetGeneratorProjectFacilityActivation?generatorProjectFacilityId=' +\r\n id\r\n );\r\n }\r\n\r\n public activateGeneratorProjectFacility(\r\n generatorProjectFacilityId: number,\r\n identifier: string,\r\n distributorId: number,\r\n isRecsRegistered: boolean\r\n ): Observable {\r\n return this.httpClient.post(\r\n API_URL +\r\n 'GeneratorProjectFacility/ActivateGeneratorProjectFacility',\r\n {\r\n generatorProjectFacilityId,\r\n identifier,\r\n distributorId,\r\n isRecsRegistered,\r\n }\r\n );\r\n }\r\n\r\n public getCpLetter(facilityId: number): Observable {\r\n return this.httpClient\r\n .get(\r\n API_URL +\r\n 'GeneratorDocumentGeneration/GetGeneratorCpLetter?facilityId=' +\r\n facilityId,\r\n { responseType: 'blob' }\r\n )\r\n .pipe(map((response) => response));\r\n }\r\n}\r\n","import { map } from 'rxjs/operators';\r\nimport { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { GeneratorFacilityEvaluationField } from '../../../../../model/generator/generator-facility-evaluation-field.model';\r\n\r\n@Injectable()\r\nexport class GeneratorPpaScheduleService {\r\n constructor(private httpClient: HttpClient) {}\r\n\r\n public getGeneratorFacilityPpaSchedule(\r\n facilityId: number\r\n ): Observable {\r\n return this.httpClient.get(\r\n API_URL +\r\n 'GeneratorDocumentGeneration/GetGeneratorFacilityPpaSchedule?generatorProjectFacilityId=' +\r\n facilityId\r\n );\r\n }\r\n\r\n public generatorFacilityPpaSchedule(\r\n facilityPpaSchedule: any\r\n ): Observable {\r\n return this.httpClient.post(\r\n API_URL +\r\n 'GeneratorDocumentGeneration/GeneratorFacilityPpaSchedule',\r\n facilityPpaSchedule\r\n );\r\n }\r\n\r\n public offerCompletePpaSchedule(facilityPpaSchedule: any): Observable {\r\n return this.httpClient.post(\r\n API_URL +\r\n 'GeneratorDocumentGeneration/GeneratorFacilityPpaScheduleComplete',\r\n facilityPpaSchedule\r\n );\r\n }\r\n\r\n public getGeneratorFacilityPpaSchedulePreview(\r\n facilityPpaSchedule: any\r\n ): Observable {\r\n return this.httpClient\r\n .post(\r\n API_URL +\r\n 'GeneratorDocumentGeneration/GeneratorFacilityPpaSchedulePreview',\r\n facilityPpaSchedule,\r\n { responseType: 'blob' }\r\n )\r\n .pipe(map((response) => response));\r\n }\r\n\r\n public updateGeneratorPpaLongStopDate(\r\n generatorFacilityEvaluationField: GeneratorFacilityEvaluationField\r\n ): Observable {\r\n return this.httpClient.patch(\r\n API_URL +\r\n 'GeneratorDocumentGeneration/UpdateGeneratorPpaLongStopDate',\r\n generatorFacilityEvaluationField\r\n );\r\n }\r\n}\r\n","import {\r\n AfterViewChecked,\r\n ChangeDetectorRef,\r\n Component,\r\n Input,\r\n OnInit,\r\n} from '@angular/core';\r\nimport { GeneratorProjectFacilityActivationService } from './generator-project-facility-activation.service';\r\nimport { GeneratorActivation } from '../../../model/generator-activation.model';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { FormArray, FormControl, FormGroup, Validators } from '@angular/forms';\r\n\r\nimport { Router } from '@angular/router';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { GeneratorActivationList } from '../../../model/generator/generator-activation-list.model';\r\nimport { CommonService } from '../../../common/common-service';\r\nimport { DistributorService } from '../../distributor/distributor.service';\r\nimport { Distributor } from '../../../model/distributor.model';\r\nimport { GeneratorFacilityEvaluationField } from '../../../model/generator/generator-facility-evaluation-field.model';\r\nimport { GeneratorDocumentGeneration } from '../../../model/generator/generator-document-generation.model';\r\nimport { GeneratorPpaScheduleService } from '../../administration/evaluation/generator-evaluation/generator-ppa-schedule/generator-ppa-schedule.service';\r\nimport { EntityLookup } from '../../../model/entity-lookup.model';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { saveAs as importedSaveAs } from 'file-saver';\r\n\r\n@Component({\r\n selector: 'generator-project-facility-activation',\r\n templateUrl: './generator-project-facility-activation.component.html',\r\n styleUrls: [\r\n '../../form.styles.scss',\r\n './generator-project-facility-activation.component.scss',\r\n ],\r\n})\r\nexport class GeneratorProjectFacilityActivationComponent\r\n implements OnInit, AfterViewChecked {\r\n @Input('generatorProjectFacilityId')\r\n public generatorProjectFacilityId: number;\r\n @Input('navigationURL')\r\n public navigationURL: string;\r\n public generatorProjectId: number;\r\n public generatorApplicationId: number;\r\n public errorMessage = '';\r\n public loadingFailed = false;\r\n public loading = false;\r\n public saving = false;\r\n public savingFailed = false;\r\n public generatorActivationForm: FormGroup;\r\n public generatorActivationsFormArray: FormArray;\r\n public generatorProjectFacility: GeneratorActivationList;\r\n public sections: string[];\r\n public allItemsChecked = false;\r\n public distributors: Distributor[] = [];\r\n public selections: EntityLookup[];\r\n public yesSelection: number;\r\n public notApplicableSelection: number;\r\n private generatorFacilityEvaluationField: GeneratorFacilityEvaluationField;\r\n\r\n constructor(\r\n private generatorActivationService: GeneratorProjectFacilityActivationService,\r\n private toastr: ToastrService,\r\n private cdRef: ChangeDetectorRef,\r\n private route: ActivatedRoute,\r\n private router: Router,\r\n private commonService: CommonService,\r\n private distributorService: DistributorService,\r\n private generatorPpaScheduleService: GeneratorPpaScheduleService\r\n ) {}\r\n\r\n public ngAfterViewChecked() {\r\n this.cdRef.detectChanges();\r\n }\r\n\r\n public ngOnInit() {\r\n this.initialize();\r\n }\r\n\r\n public onSubmit() {\r\n this.errorMessage = '';\r\n if (this.allItemsChecked) {\r\n this.commonService.validateAllFormFields(\r\n this.generatorActivationForm\r\n );\r\n if (this.generatorActivationForm.valid) {\r\n this.saving = true;\r\n this.generatorActivationService\r\n .activateGeneratorProjectFacility(\r\n this.generatorActivationsFormArray\r\n .at(0)\r\n .get('generatorProjectFacilityId').value,\r\n this.generatorActivationForm.get('identifier').value,\r\n this.generatorActivationForm.get('distributorId').value,\r\n this.generatorActivationForm.get('isRecsRegistered')\r\n .value\r\n )\r\n .subscribe(\r\n (response) => {\r\n this.toastr.success(\r\n isNullOrUndefined(response.successMessage)\r\n ? response.successMessage\r\n : 'Generator project facility successfully activated'\r\n );\r\n this.saving = false;\r\n this.router.navigate([this.navigationURL]);\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.saving = false;\r\n this.savingFailed = true;\r\n this.toastr.error(this.errorMessage);\r\n }\r\n );\r\n }\r\n } else {\r\n this.saving = true;\r\n if (\r\n this.generatorActivationForm.controls.extendedLongStopDate.value\r\n ) {\r\n this.generatorFacilityEvaluationField.longStopDate = this.generatorActivationForm.controls.extendedLongStopDate.value;\r\n }\r\n this.generatorActivationService\r\n .updateGeneratorActivation(\r\n this.generatorActivationForm.get(\r\n 'generatorActivationsFormArray'\r\n ).value\r\n )\r\n .subscribe(\r\n (response) => {\r\n if (\r\n this.generatorActivationForm.controls\r\n .extendedLongStopDate.value\r\n ) {\r\n this.generatorPpaScheduleService\r\n .updateGeneratorPpaLongStopDate(\r\n this.generatorFacilityEvaluationField\r\n )\r\n .subscribe(\r\n (returnValue: any) => {\r\n this.generatorFacilityEvaluationField = returnValue;\r\n this.saving = false;\r\n this.savingFailed = false;\r\n this.errorMessage = '';\r\n const message = !isNullOrUndefined(\r\n response.successMessage\r\n )\r\n ? response.successMessage\r\n : 'Successfully updated generator activation check list';\r\n this.toastr.success(message);\r\n this.initialize();\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.saving = false;\r\n this.savingFailed = true;\r\n this.toastr.error(this.errorMessage);\r\n }\r\n );\r\n } else {\r\n this.saving = false;\r\n this.savingFailed = false;\r\n this.errorMessage = '';\r\n const message = !isNullOrUndefined(\r\n response.successMessage\r\n )\r\n ? response.successMessage\r\n : 'Successfully updated generator activation check list';\r\n this.toastr.success(message);\r\n this.initialize();\r\n }\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.saving = false;\r\n this.savingFailed = true;\r\n this.toastr.error(this.errorMessage);\r\n }\r\n );\r\n }\r\n }\r\n\r\n public documentUpload(output: any): void {\r\n if (output.value) {\r\n this.generatorActivationForm.controls.longStopDateExtensionDocument.setValue(\r\n output.value\r\n );\r\n }\r\n }\r\n\r\n public onNavigate() {\r\n this.router.navigate([this.navigationURL]);\r\n }\r\n\r\n public onChangeChecklistItem(\r\n event,\r\n generatorProjectFacilityActivationId: number\r\n ) {\r\n const generatorActivationIndex = this.generatorActivationsFormArray.controls.findIndex(\r\n (generatorActivationFormGroup: FormGroup) => {\r\n return (\r\n generatorActivationFormGroup.controls\r\n .generatorProjectFacilityActivationId.value ===\r\n generatorProjectFacilityActivationId\r\n );\r\n }\r\n );\r\n this.generatorActivationsFormArray\r\n .at(generatorActivationIndex)\r\n .get('selectionLookupId')\r\n .setValue(event.target.value);\r\n }\r\n\r\n public selectedDistributor($event: any): void {\r\n this.generatorActivationForm\r\n .get('distributorId')\r\n .patchValue($event.item.distributorId);\r\n }\r\n\r\n public fetchDistributors(searchString: string): void {\r\n this.errorMessage = '';\r\n if (isNullOrUndefined(searchString)) {\r\n searchString = '';\r\n }\r\n this.distributorService\r\n .getAllocationDistributors(searchString)\r\n .subscribe(\r\n (distributors) => {\r\n this.distributors = distributors;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.toastr.error(this.errorMessage);\r\n }\r\n );\r\n }\r\n\r\n public onGenerateCpLetter() {\r\n this.loading = true;\r\n this.generatorActivationService\r\n .getCpLetter(this.generatorProjectFacilityId)\r\n .subscribe(\r\n (blob) => {\r\n importedSaveAs(blob, 'GeneratorCPLetter.docx');\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.toastr.error(this.errorMessage);\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n\r\n private initialize() {\r\n this.loading = true;\r\n this.errorMessage = '';\r\n if (isNullOrUndefined(this.generatorProjectFacilityId)) {\r\n this.route.params.subscribe(\r\n (params) => {\r\n if (params['generatorProjectFacilityId']) {\r\n this.generatorProjectFacilityId =\r\n params['generatorProjectFacilityId'];\r\n }\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n }\r\n\r\n this.generatorActivationService\r\n .getGeneratorProjectFacilityActivation(\r\n this.generatorProjectFacilityId\r\n )\r\n .subscribe(\r\n (generatorProjectFacilityResponse: GeneratorActivationList) => {\r\n this.generatorProjectFacility = generatorProjectFacilityResponse;\r\n\r\n if (isNullOrUndefined(this.navigationURL)) {\r\n this.navigationURL = '/generators/evaluation';\r\n }\r\n\r\n this.commonService\r\n .getEntityLookups(['Selection'])\r\n .subscribe(\r\n (entityLookups) => {\r\n this.selections =\r\n entityLookups.entityLookupResultList[\r\n 'selection'\r\n ];\r\n this.yesSelection = this.selections.find(\r\n (selection: EntityLookup) =>\r\n selection.value === 'Yes'\r\n ).entityLookupId;\r\n this.notApplicableSelection = this.selections.find(\r\n (selection: EntityLookup) =>\r\n selection.value === 'Not Applicable'\r\n ).entityLookupId;\r\n this.initGeneratorActivations();\r\n this.generatorPpaScheduleService\r\n .getGeneratorFacilityPpaSchedule(\r\n this.generatorProjectFacilityId\r\n )\r\n .subscribe(\r\n (page: GeneratorDocumentGeneration) => {\r\n this.generatorFacilityEvaluationField =\r\n page.evaluationField;\r\n this.generatorProjectId =\r\n page.projectId;\r\n this.generatorApplicationId =\r\n page.applicationId;\r\n this.loading = false;\r\n this.loadingFailed = false;\r\n this.errorMessage = '';\r\n },\r\n (error) => {\r\n this.loading = false;\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loadingFailed = true;\r\n }\r\n );\r\n },\r\n (error) => {\r\n this.loading = false;\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loadingFailed = true;\r\n this.toastr.error(this.errorMessage);\r\n }\r\n );\r\n },\r\n (error) => {\r\n this.loading = false;\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loadingFailed = true;\r\n this.toastr.error(this.errorMessage);\r\n }\r\n );\r\n }\r\n\r\n private initGeneratorActivations() {\r\n this.setSections();\r\n this.generatorActivationForm = new FormGroup({\r\n identifier: new FormControl('', [Validators.required]),\r\n distributorId: new FormControl(null, [Validators.required]),\r\n distributorName: new FormControl('', [Validators.required]),\r\n isRecsRegistered: new FormControl(false),\r\n longStopDateExtensionDocument: new FormControl(''),\r\n extendedLongStopDate: new FormControl(),\r\n });\r\n this.generatorActivationsFormArray = new FormArray(\r\n this.populateGeneratorActivations()\r\n );\r\n this.generatorActivationForm.setControl(\r\n 'generatorActivationsFormArray',\r\n this.generatorActivationsFormArray\r\n );\r\n this.setAllItemsChecked();\r\n }\r\n\r\n private populateGeneratorActivations(): FormGroup[] {\r\n const generatorActivationsFormGroups: FormGroup[] = [];\r\n this.generatorProjectFacility.generatorActivations.forEach(\r\n (generatorActivationChecklistItem: GeneratorActivation) => {\r\n const generatorActivationChecklistItemFormGroup = this.initGeneratorActivationChecklistItem(\r\n generatorActivationChecklistItem\r\n );\r\n generatorActivationsFormGroups.push(\r\n generatorActivationChecklistItemFormGroup\r\n );\r\n }\r\n );\r\n return generatorActivationsFormGroups;\r\n }\r\n\r\n private initGeneratorActivationChecklistItem(\r\n generatorActivationChecklistItem: GeneratorActivation\r\n ): FormGroup {\r\n const isPreviousSectionIsComplete: boolean = this.isPreviousSectionComplete(\r\n generatorActivationChecklistItem.generatorActivationChecklistItem\r\n .value\r\n );\r\n return new FormGroup({\r\n generatorProjectFacilityActivationId: new FormControl(\r\n generatorActivationChecklistItem.generatorProjectFacilityActivationId\r\n ),\r\n generatorProjectFacilityId: new FormControl(\r\n generatorActivationChecklistItem.generatorProjectFacilityId\r\n ),\r\n generatorActivationChecklistItemLookupId: new FormControl(\r\n generatorActivationChecklistItem.generatorActivationChecklistItemLookupId\r\n ),\r\n generatorActivationChecklistItemLookupValue: new FormControl(\r\n generatorActivationChecklistItem.generatorActivationChecklistItem.value\r\n ),\r\n generatorActivationChecklistItemLookupDescription: new FormControl(\r\n generatorActivationChecklistItem.generatorActivationChecklistItem.description\r\n ),\r\n selectionLookupId: new FormControl(\r\n generatorActivationChecklistItem.selectionLookupId\r\n ),\r\n checklistItemIsDisabled: new FormControl(\r\n !isPreviousSectionIsComplete\r\n ),\r\n checklistItemPreviouslyChecked: new FormControl(\r\n generatorActivationChecklistItem.selectionLookupId ===\r\n this.yesSelection ||\r\n generatorActivationChecklistItem.selectionLookupId ===\r\n this.notApplicableSelection\r\n ),\r\n updatedBy: new FormControl(\r\n generatorActivationChecklistItem.updatedBy\r\n ),\r\n updatedDateTime: new FormControl(\r\n generatorActivationChecklistItem.updatedDateTime\r\n ),\r\n });\r\n }\r\n\r\n private setSections() {\r\n this.sections = this.generatorProjectFacility.generatorActivations\r\n .map((generatorActivation: GeneratorActivation) => {\r\n return generatorActivation.generatorActivationChecklistItem.value.substr(\r\n 0,\r\n generatorActivation.generatorActivationChecklistItem.value.indexOf(\r\n ' - '\r\n )\r\n );\r\n })\r\n .filter(function(value, index, self) {\r\n return self.indexOf(value) === index;\r\n });\r\n }\r\n\r\n private isPreviousSectionComplete(\r\n generatorActivationChecklistItemLookupValue: string\r\n ): boolean {\r\n const checklistItemSection = generatorActivationChecklistItemLookupValue.substr(\r\n 0,\r\n generatorActivationChecklistItemLookupValue.indexOf(' - ')\r\n );\r\n if (this.sections.indexOf(checklistItemSection) === 0) {\r\n return true;\r\n } else {\r\n const previousSection = this.sections[\r\n this.sections.indexOf(checklistItemSection) - 1\r\n ];\r\n return this.generatorProjectFacility.generatorActivations\r\n .filter((generatorActivation: GeneratorActivation) => {\r\n return generatorActivation.generatorActivationChecklistItem.value.startsWith(\r\n previousSection\r\n );\r\n })\r\n .map((generatorActivation: GeneratorActivation) => {\r\n return generatorActivation.selectionLookupId;\r\n })\r\n .every((selectionLookupId: number) => {\r\n return (\r\n selectionLookupId === this.yesSelection ||\r\n selectionLookupId === this.notApplicableSelection\r\n );\r\n });\r\n }\r\n }\r\n\r\n private setAllItemsChecked() {\r\n this.allItemsChecked = this.generatorProjectFacility.generatorActivations\r\n .map((generatorActivation: GeneratorActivation) => {\r\n return generatorActivation.selectionLookupId;\r\n })\r\n .every((selectionLookupId: number) => {\r\n return (\r\n selectionLookupId === this.yesSelection ||\r\n selectionLookupId === this.notApplicableSelection\r\n );\r\n });\r\n }\r\n}\r\n","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { AuthenticationService } from '../../../authentication/service/authentication.service';\r\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { Subscription } from 'rxjs';\r\nimport { isNullOrUndefined } from 'util';\r\n\r\nimport { CommonService } from '../../../common/common-service';\r\nimport { ToastrService } from 'ngx-toastr';\r\n\r\n@Component({\r\n selector: 'forgot-password',\r\n templateUrl: './forgot-password.component.html',\r\n styleUrls: ['./forgot-password.component.scss'],\r\n})\r\nexport class ForgotPasswordComponent implements OnInit, OnDestroy {\r\n public errorMessage = '';\r\n public forgotPasswordForm: FormGroup;\r\n public resettingPassword = false;\r\n private usernameControl: FormControl;\r\n private queryParamsSubscription: Subscription;\r\n private redirectUrl: string;\r\n\r\n constructor(\r\n private authenticationService: AuthenticationService,\r\n private router: Router,\r\n private route: ActivatedRoute,\r\n protected toastr: ToastrService,\r\n public commonService: CommonService\r\n ) {\r\n this.usernameControl = new FormControl('', [\r\n Validators.required,\r\n Validators.email,\r\n ]);\r\n\r\n this.forgotPasswordForm = new FormGroup({\r\n username: this.usernameControl,\r\n });\r\n }\r\n\r\n public ngOnInit(): void {\r\n this.queryParamsSubscription = this.route.queryParams.subscribe(\r\n (queryParams) => {\r\n // TODO: Add redirect logic if redirect query param is present\r\n const redirectUrl = queryParams.redirect;\r\n if (!isNullOrUndefined(redirectUrl)) {\r\n this.redirectUrl = redirectUrl;\r\n }\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n\r\n if (this.authenticationService.isLoggedIn()) {\r\n this.router.navigate(['home']);\r\n }\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n if (!isNullOrUndefined(this.queryParamsSubscription)) {\r\n this.queryParamsSubscription.unsubscribe();\r\n }\r\n }\r\n\r\n public resetPassword(): void {\r\n if (this.forgotPasswordForm.valid) {\r\n this.resettingPassword = true;\r\n this.authenticationService\r\n .ResetPassword(this.forgotPasswordForm.value.username)\r\n .subscribe(\r\n () => {\r\n this.toastr.success(\r\n 'If there is a user associated with the email address, they will receive an email shortly.'\r\n );\r\n this.resettingPassword = false;\r\n if (isNullOrUndefined(this.redirectUrl)) {\r\n this.router.navigate(['login']);\r\n } else {\r\n this.router.navigate([this.redirectUrl]);\r\n }\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.resettingPassword = false;\r\n }\r\n );\r\n } else {\r\n this.errorMessage =\r\n 'Please enter the email address of the user you wish to send a password reset email to.';\r\n }\r\n }\r\n}\r\n","import { GeneratorVerificationToken } from './../model/generator-verification.model';\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { AdministrationService } from '../../administration.service';\r\nimport { UserVerification } from '../../../../model/administration/user-verification.model';\r\nimport { FormGroup, FormControl, Validators } from '@angular/forms';\r\n\r\nimport { HttpErrorResponse } from '@angular/common/http/src/response';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { CommonService } from '../../../../common/common-service';\r\nimport { ToastrService } from 'ngx-toastr';\r\n\r\n@Component({\r\n templateUrl: 'reset-password.component.html',\r\n})\r\nexport class ResetPasswordComponent implements OnInit {\r\n public errorMessage: string;\r\n public passwordForm: FormGroup;\r\n private userId: string;\r\n private token: string;\r\n\r\n constructor(\r\n private administrationService: AdministrationService,\r\n private router: Router,\r\n protected toastr: ToastrService,\r\n public commonService: CommonService\r\n ) {\r\n this.passwordForm = new FormGroup({\r\n password: new FormControl('', [Validators.required]),\r\n confirmPassword: new FormControl('', [Validators.required]),\r\n });\r\n }\r\n\r\n public onSubmit() {\r\n if (!this.passwordForm.valid) {\r\n this.errorMessage = 'Please fill both text-boxes';\r\n } else if (\r\n this.passwordForm.value.password !==\r\n this.passwordForm.value.confirmPassword\r\n ) {\r\n this.errorMessage = 'Passwords have to match';\r\n } else if (this.passwordForm.value.password.length < 6) {\r\n this.errorMessage = 'Minimum length cannot be less than 6';\r\n } else {\r\n this.errorMessage = '';\r\n const verification: UserVerification = this.passwordForm.value;\r\n verification.userId = this.userId;\r\n verification.token = this.token;\r\n this.administrationService.resetPassword(verification).subscribe(\r\n () => {\r\n this.toastr.success('Password Reset Complete');\r\n this.router.navigate(['login']);\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n }\r\n }\r\n\r\n public ngOnInit() {\r\n this.router.routerState.root.queryParams.subscribe(\r\n (params) => {\r\n this.userId = params['Id'];\r\n this.token = params['token'];\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\n\r\n@Injectable()\r\nexport class ConsumerCompanyPremisesActivationService {\r\n constructor(private httpClient: HttpClient) {}\r\n\r\n public updateConsumerCompanyPremisesActivation(\r\n consumerCompanyPremisesActivations: any\r\n ): Observable {\r\n return this.httpClient.patch(\r\n API_URL + 'ConsumerCompany/UpdateConsumerCompanyPremisesActivation',\r\n consumerCompanyPremisesActivations\r\n );\r\n }\r\n\r\n public updateToActivationStatus(\r\n consumerCompanyPremisesId: number\r\n ): Observable {\r\n return this.httpClient.get(\r\n API_URL +\r\n 'ConsumerCompany/updateToActivationStatus?consumerCompanyPremisesId=' +\r\n consumerCompanyPremisesId\r\n );\r\n }\r\n\r\n public activateConsumerCompanyPremises(\r\n consumerCompanyPremisesId: number,\r\n identifier: string\r\n ): Observable {\r\n return this.httpClient.post(\r\n API_URL + 'ConsumerCompanyPremises/ActivateConsumerCompanyPremises',\r\n { consumerCompanyPremisesId, identifier }\r\n );\r\n }\r\n\r\n public getCpLetter(facilityId: number): Observable {\r\n return this.httpClient\r\n .get(\r\n API_URL +\r\n 'GeneratorDocumentGeneration/GetConsumerCpLetter?consumerCompanyPremisesId=' +\r\n facilityId,\r\n { responseType: 'blob' }\r\n )\r\n .pipe(map((response) => response));\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Page } from '../../model/page.model';\r\nimport { Observable } from 'rxjs';\r\nimport { ConsumerCompanyPremises } from '../../model/consumer-company-premises.model';\r\n\r\n@Injectable()\r\nexport class ConsumerCompanyPremisesService {\r\n constructor(private httpClient: HttpClient) {}\r\n\r\n public getGetConsumerCompanyPremisesPage(\r\n consumerCompanyId: number,\r\n searchString: string,\r\n page: Page,\r\n sortProp: any\r\n ): Observable {\r\n if (isNullOrUndefined(sortProp.direction)) {\r\n sortProp.direction = '';\r\n }\r\n if (isNullOrUndefined(sortProp.property)) {\r\n sortProp.property = '';\r\n }\r\n\r\n return this.httpClient.get(\r\n API_URL +\r\n 'ConsumerCompanyPremises/GetConsumerCompanyPremisesPaged?consumerCompanyId=' +\r\n consumerCompanyId +\r\n '&searchString=' +\r\n searchString +\r\n '&offset=' +\r\n page.offset +\r\n '&pageSize=' +\r\n page.size +\r\n '&sortDirection=' +\r\n sortProp.direction +\r\n '&sortProperty=' +\r\n sortProp.property\r\n );\r\n }\r\n\r\n public getConsumerCompanyPremises(\r\n consumerCompanyPremisesId: number\r\n ): Observable {\r\n return this.httpClient.get(\r\n API_URL +\r\n 'ConsumerCompanyPremises/GetConsumerCompanyPremises?ConsumerCompanyPremisesId=' +\r\n consumerCompanyPremisesId\r\n );\r\n }\r\n\r\n public updateConsumerCompanyPremises(\r\n consumerCompanyPremises: ConsumerCompanyPremises\r\n ): Observable {\r\n return this.httpClient.post(\r\n API_URL + 'ConsumerCompanyPremises/UpdateConsumerCompanyPremises',\r\n consumerCompanyPremises\r\n );\r\n }\r\n\r\n public getConsumerCompanyPremisesTariffs(\r\n consumerCompanyPremisesId: number\r\n ): Observable {\r\n return this.httpClient.get(\r\n API_URL +\r\n 'ConsumerCompanyPremises/GetConsumerCompanyPremisesTariffs?ConsumerCompanyPremisesId=' +\r\n consumerCompanyPremisesId\r\n );\r\n }\r\n\r\n public getConsumerCompanyPremisesTariff(\r\n consumerTariffId: number\r\n ): Observable {\r\n return this.httpClient.get(\r\n API_URL +\r\n 'ConsumerCompanyPremises/GetConsumerCompanyPremisesTariff?ConsumerTariffId=' +\r\n consumerTariffId\r\n );\r\n }\r\n\r\n public addConsumerCompanyPremisesTariff(\r\n newTariffForm: any\r\n ): Observable {\r\n return this.httpClient.post(\r\n API_URL +\r\n 'ConsumerCompanyPremises/AddConsumerCompanyPremisesTariff',\r\n newTariffForm\r\n );\r\n }\r\n public updateConsumerTariffs(TariffForm: any): Observable {\r\n return this.httpClient.post(\r\n API_URL + 'ConsumerCompanyPremises/UpdateConsumerTariffs',\r\n TariffForm\r\n );\r\n }\r\n public updatePremisesDistributorTariffs(\r\n premisesDistributorTariffsForm: any\r\n ): Observable {\r\n return this.httpClient.post(\r\n API_URL +\r\n 'ConsumerCompanyPremises/UpdateConsumerPremisesDistributorTariffs',\r\n premisesDistributorTariffsForm\r\n );\r\n }\r\n public archiveConsumerCompanyPremises(\r\n consumerCompanyPremisesId: number\r\n ): Observable {\r\n return this.httpClient.get(\r\n API_URL +\r\n 'ConsumerCompanyPremises/ArchiveConsumerCompanyPremises?consumerCompanyPremisesId=' +\r\n consumerCompanyPremisesId\r\n );\r\n }\r\n public unarchiveConsumerCompanyPremises(\r\n consumerCompanyPremisesId: number\r\n ): Observable {\r\n return this.httpClient.get(\r\n API_URL +\r\n 'ConsumerCompanyPremises/UnarchiveConsumerCompanyPremises?consumerCompanyPremisesId=' +\r\n consumerCompanyPremisesId\r\n );\r\n }\r\n\r\n public addNewPremises(\r\n consumerCompanyPremises: ConsumerCompanyPremises\r\n ): Observable {\r\n return this.httpClient.post(\r\n API_URL + 'ConsumerCompanyPremises/addNewPremises',\r\n consumerCompanyPremises\r\n );\r\n }\r\n\r\n public getConsumerCompanyPremisesByDistributorId(\r\n distributorId: number\r\n ): Observable {\r\n return this.httpClient.get(\r\n API_URL +\r\n 'ConsumerCompanyPremises/GetActiveConsumerCompanyPremisesByDistributorId?DistributorId=' +\r\n distributorId\r\n );\r\n }\r\n}\r\n","import {\r\n AfterViewChecked,\r\n ChangeDetectorRef,\r\n Component,\r\n Input,\r\n OnInit,\r\n} from '@angular/core';\r\nimport { ConsumerCompanyPremisesActivationService } from './consumer-company-premises-activation.service';\r\nimport { ConsumerCompanyService } from '../../consumer-company/consumer-company.service';\r\nimport { ConsumerCompanyPremisesService } from '../consumer-company-premises.service';\r\nimport { ConsumerCompanyPremisesActivation } from '../../../model/consumer-company-premises-activation.model';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { FormArray, FormControl, FormGroup, Validators } from '@angular/forms';\r\n\r\nimport { ConsumerCompanyPremises } from '../../../model/consumer-company-premises.model';\r\nimport { ConsumerCompany } from '../../../model/consumer-company.model';\r\nimport { Router } from '@angular/router';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { ProspectPpaDetail } from '../../../model/prospect-ppa-detail.model';\r\nimport { ProspectPpaService } from '../../administration/prospect-ppa/prospect-ppa.service';\r\nimport { CommonService } from '../../../common/common-service';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { EntityLookup } from '../../../model/entity-lookup.model';\r\nimport { saveAs as importedSaveAs } from 'file-saver';\r\n\r\n@Component({\r\n selector: 'consumer-company-premises-activation',\r\n templateUrl: './consumer-company-premises-activation.component.html',\r\n styleUrls: [\r\n '../../form.styles.scss',\r\n './consumer-company-premises-activation.component.scss',\r\n ],\r\n})\r\nexport class ConsumerCompanyPremisesActivationComponent\r\n implements OnInit, AfterViewChecked {\r\n @Input('consumerCompanyPremisesId')\r\n public consumerCompanyPremisesId: number;\r\n @Input('navigationURL')\r\n public navigationURL: string;\r\n public errorMessage = '';\r\n public loadingFailed = false;\r\n public loading = false;\r\n public saving = false;\r\n public savingFailed = false;\r\n public consumerCompanyPremisesActivationForm: FormGroup;\r\n public consumerCompanyPremisesActivationsFormArray: FormArray;\r\n public consumerCompanyPremisesForecastParametersForm: FormGroup;\r\n public consumerCompanyPremises: ConsumerCompanyPremises;\r\n public sections: string[];\r\n public allItemsChecked = false;\r\n public prospectPpaDetail: ProspectPpaDetail;\r\n public selections: EntityLookup[];\r\n public yesSelection: number;\r\n public notApplicableSelection: number;\r\n public baseConsumerCompanyPremisesList: ConsumerCompanyPremises[];\r\n\r\n constructor(\r\n private consumerCompanyPremisesActivationService: ConsumerCompanyPremisesActivationService,\r\n private consumerCompanyService: ConsumerCompanyService,\r\n private consumerCompanyPremisesService: ConsumerCompanyPremisesService,\r\n private toastr: ToastrService,\r\n private cdRef: ChangeDetectorRef,\r\n private route: ActivatedRoute,\r\n private router: Router,\r\n private prospectPpaService: ProspectPpaService,\r\n public commonService: CommonService\r\n ) {\r\n this.consumerCompanyPremisesActivationForm = new FormGroup({\r\n Identifier: new FormControl('', [Validators.required]),\r\n longStopDateExtensionDocument: new FormControl(''),\r\n extendedLongStopDate: new FormControl(),\r\n });\r\n\r\n this.consumerCompanyPremisesForecastParametersForm = new FormGroup({\r\n ExcludeFromForecast: new FormControl('', [Validators.required]),\r\n ForecastMonthlyConsumption: new FormControl('', [\r\n Validators.required,\r\n ]),\r\n BaseConsumerCompanyPremisesId: new FormControl('', [\r\n Validators.required,\r\n ]),\r\n });\r\n }\r\n\r\n public ngAfterViewChecked() {\r\n this.cdRef.detectChanges();\r\n }\r\n\r\n public ngOnInit() {\r\n this.initialize();\r\n }\r\n\r\n public formControlValueChanged(event: any) {\r\n if (\r\n event.target.attributes.formControlName.value === 'Identifier' &&\r\n !this.consumerCompanyPremisesActivationForm\r\n .get('Identifier')\r\n .value.toString()\r\n .toUpperCase()\r\n .startsWith('CP_')\r\n ) {\r\n const identifier = this.consumerCompanyPremisesActivationForm.get(\r\n 'Identifier'\r\n ).value;\r\n this.consumerCompanyPremisesActivationForm\r\n .get('Identifier')\r\n .patchValue('CP_' + identifier);\r\n }\r\n }\r\n public forecastParameterValueChanged(event: any) {\r\n const values = {\r\n ExcludeFromForecast: this.consumerCompanyPremisesForecastParametersForm.get(\r\n 'ExcludeFromForecast'\r\n ).value,\r\n ForecastMonthlyConsumption: this.consumerCompanyPremisesForecastParametersForm.get(\r\n 'ForecastMonthlyConsumption'\r\n ).value,\r\n BaseConsumerCompanyPremisesId: this.consumerCompanyPremisesForecastParametersForm.get(\r\n 'BaseConsumerCompanyPremisesId'\r\n ).value,\r\n };\r\n\r\n const infoToastId = this.toastr.info('Saving forecast values').toastId;\r\n\r\n this.consumerCompanyService\r\n .updateForecastParametersForPremises(\r\n this.consumerCompanyPremisesId,\r\n values.ExcludeFromForecast,\r\n values.ForecastMonthlyConsumption,\r\n values.BaseConsumerCompanyPremisesId\r\n )\r\n .subscribe(\r\n (response) => {\r\n this.toastr.remove(infoToastId);\r\n if (response.success === true) {\r\n this.toastr.success('Saved forecast values');\r\n }\r\n },\r\n (error) => {\r\n this.toastr.remove(infoToastId);\r\n\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.toastr.error(this.errorMessage);\r\n }\r\n );\r\n }\r\n\r\n public onSubmit() {\r\n this.errorMessage = '';\r\n if (this.allItemsChecked) {\r\n this.commonService.validateAllFormFields(\r\n this.consumerCompanyPremisesActivationForm\r\n );\r\n if (this.consumerCompanyPremisesActivationForm.valid) {\r\n this.saving = true;\r\n this.consumerCompanyPremisesActivationService\r\n .updateToActivationStatus(\r\n this.consumerCompanyPremises.consumerCompanyPremisesId\r\n )\r\n .subscribe(\r\n () => {\r\n this.toastr.success(\r\n 'All Checklist Items Complete: Ready for Activation'\r\n );\r\n this.consumerCompanyPremisesActivationService\r\n .activateConsumerCompanyPremises(\r\n this.consumerCompanyPremisesActivationsFormArray\r\n .at(0)\r\n .get('ConsumerCompanyPremisesId').value,\r\n this.consumerCompanyPremisesActivationForm.get(\r\n 'Identifier'\r\n ).value\r\n )\r\n .subscribe(\r\n (response) => {\r\n this.toastr.success(\r\n isNullOrUndefined(\r\n response.successMessage\r\n )\r\n ? response.successMessage\r\n : 'Consumer company premises successfully activated'\r\n );\r\n this.saving = false;\r\n this.router.navigate([\r\n this.navigationURL,\r\n ]);\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.saving = false;\r\n this.savingFailed = true;\r\n this.toastr.error(this.errorMessage);\r\n }\r\n );\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.saving = false;\r\n this.savingFailed = true;\r\n this.toastr.error(this.errorMessage);\r\n }\r\n );\r\n }\r\n } else {\r\n this.saving = true;\r\n if (\r\n this.consumerCompanyPremisesActivationForm.controls\r\n .extendedLongStopDate.value\r\n ) {\r\n this.prospectPpaDetail.longstopDate = this.consumerCompanyPremisesActivationForm.controls.extendedLongStopDate.value;\r\n }\r\n this.consumerCompanyPremisesActivationService\r\n .updateConsumerCompanyPremisesActivation(\r\n this.consumerCompanyPremisesActivationForm.get(\r\n 'consumerCompanyPremisesActivationsFormArray'\r\n ).value\r\n )\r\n .subscribe(\r\n (response) => {\r\n this.prospectPpaService\r\n .createOrUpdateProspectPpa(this.prospectPpaDetail)\r\n .subscribe(\r\n (\r\n prospectPpaDetailResponse: ProspectPpaDetail\r\n ) => {\r\n this.prospectPpaDetail = prospectPpaDetailResponse;\r\n this.consumerCompanyPremisesActivationForm.controls.longStopDateExtensionDocument.patchValue(\r\n null\r\n );\r\n this.saving = false;\r\n this.savingFailed = false;\r\n this.errorMessage = '';\r\n const message = !isNullOrUndefined(\r\n response.successMessage\r\n )\r\n ? response.successMessage\r\n : 'Successfully updated consumer company premises activation check list';\r\n this.toastr.success(message);\r\n this.initialize();\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.saving = false;\r\n this.savingFailed = true;\r\n this.toastr.error(this.errorMessage);\r\n }\r\n );\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.saving = false;\r\n this.savingFailed = true;\r\n this.toastr.error(this.errorMessage);\r\n }\r\n );\r\n }\r\n }\r\n\r\n public onChangeChecklistItem(\r\n event,\r\n ConsumerCompanyPremisesActivationId: number\r\n ) {\r\n const consumerCompanyPremisesActivationIndex = this.consumerCompanyPremisesActivationsFormArray.controls.findIndex(\r\n (ccPremisesActivationsFormGroups: FormGroup) => {\r\n return (\r\n ccPremisesActivationsFormGroups.controls\r\n .ConsumerCompanyPremisesActivationId.value ===\r\n ConsumerCompanyPremisesActivationId\r\n );\r\n }\r\n );\r\n this.consumerCompanyPremisesActivationsFormArray\r\n .at(consumerCompanyPremisesActivationIndex)\r\n .get('selectionLookupId')\r\n .setValue(event.target.value);\r\n }\r\n\r\n public documentUpload(output: any): void {\r\n if (output.value) {\r\n this.consumerCompanyPremisesActivationForm.controls.longStopDateExtensionDocument.setValue(\r\n output.value\r\n );\r\n }\r\n }\r\n\r\n public onGenerateCpLetter() {\r\n this.loading = true;\r\n this.consumerCompanyPremisesActivationService\r\n .getCpLetter(this.consumerCompanyPremisesId)\r\n .subscribe(\r\n (blob) => {\r\n importedSaveAs(blob, 'ConsumerCPLetter.docx');\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.toastr.error(this.errorMessage);\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n\r\n private initialize() {\r\n this.errorMessage = '';\r\n this.loading = true;\r\n if (isNullOrUndefined(this.consumerCompanyPremisesId)) {\r\n this.route.params.subscribe(\r\n (params) => {\r\n if (params['consumerCompanyPremisesId']) {\r\n this.consumerCompanyPremisesId =\r\n params['consumerCompanyPremisesId'];\r\n }\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n }\r\n\r\n this.consumerCompanyService\r\n .getOfferDetails(this.consumerCompanyPremisesId)\r\n .subscribe(\r\n (consumerCompanyResponse: ConsumerCompany) => {\r\n this.consumerCompanyPremises =\r\n consumerCompanyResponse.consumerCompanyPremises[0];\r\n this.initForecastValuesForm();\r\n if (isNullOrUndefined(this.navigationURL)) {\r\n this.navigationURL = '/consumers/prospect-evaluations';\r\n }\r\n this.commonService\r\n .getEntityLookups(['Selection'])\r\n .subscribe(\r\n (entityLookups) => {\r\n this.selections =\r\n entityLookups.entityLookupResultList[\r\n 'selection'\r\n ];\r\n this.yesSelection = this.selections.find(\r\n (selection: EntityLookup) =>\r\n selection.value === 'Yes'\r\n ).entityLookupId;\r\n this.notApplicableSelection = this.selections.find(\r\n (selection: EntityLookup) =>\r\n selection.value === 'Not Applicable'\r\n ).entityLookupId;\r\n this.prospectPpaService\r\n .getProspectPpaDetails(\r\n this.consumerCompanyPremises\r\n .consumerCompanyPremisesId\r\n )\r\n .subscribe(\r\n (\r\n prospectPpaDetailResponse: ProspectPpaDetail\r\n ) => {\r\n if (prospectPpaDetailResponse) {\r\n this.prospectPpaDetail = prospectPpaDetailResponse;\r\n }\r\n this.initConsumerCompanyPremisesActivations();\r\n this.prospectPpaDetail.consumerCompanyPremisesId = this.consumerCompanyPremises.consumerCompanyPremisesId;\r\n this.loading = false;\r\n this.loadingFailed = false;\r\n this.errorMessage = '';\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n this.loadingFailed = true;\r\n this.toastr.error(\r\n this.errorMessage\r\n );\r\n }\r\n );\r\n },\r\n (error) => {\r\n this.errorMessage =\r\n !isNullOrUndefined(error.error) &&\r\n !isNullOrUndefined(error.error.errorMessage)\r\n ? error.error.errorMessage\r\n : 'An error occurred while loading the page';\r\n this.loading = false;\r\n this.loadingFailed = true;\r\n this.toastr.error(this.errorMessage);\r\n }\r\n );\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n this.loadingFailed = true;\r\n this.toastr.error(this.errorMessage);\r\n }\r\n );\r\n }\r\n\r\n private initConsumerCompanyPremisesActivations() {\r\n this.setSections();\r\n this.consumerCompanyPremisesActivationsFormArray = new FormArray(\r\n this.populateConsumerCompanyPremisesActivations()\r\n );\r\n this.consumerCompanyPremisesActivationForm.setControl(\r\n 'consumerCompanyPremisesActivationsFormArray',\r\n this.consumerCompanyPremisesActivationsFormArray\r\n );\r\n this.setAllItemsChecked();\r\n }\r\n\r\n private populateConsumerCompanyPremisesActivations(): FormGroup[] {\r\n const ccPremisesActivationsFormGroups: FormGroup[] = [];\r\n this.consumerCompanyPremises.consumerCompanyPremisesActivations.forEach(\r\n (\r\n ccPremisesActivationChecklistItem: ConsumerCompanyPremisesActivation\r\n ) => {\r\n const ccPremisesActivationChecklistItemFormGroup = this.initCCPremisesActivationChecklistItem(\r\n ccPremisesActivationChecklistItem\r\n );\r\n ccPremisesActivationsFormGroups.push(\r\n ccPremisesActivationChecklistItemFormGroup\r\n );\r\n }\r\n );\r\n return ccPremisesActivationsFormGroups;\r\n }\r\n\r\n private initCCPremisesActivationChecklistItem(\r\n ccPremisesActivationChecklistItem: ConsumerCompanyPremisesActivation\r\n ): FormGroup {\r\n const isPreviousSectionIsComplete: boolean = this.isPreviousSectionComplete(\r\n ccPremisesActivationChecklistItem\r\n .consumerCompanyPremisesActivationChecklistItemLookup.value\r\n );\r\n return new FormGroup({\r\n ConsumerCompanyPremisesActivationId: new FormControl(\r\n ccPremisesActivationChecklistItem.consumerCompanyPremisesActivationId\r\n ),\r\n ConsumerCompanyPremisesId: new FormControl(\r\n ccPremisesActivationChecklistItem.consumerCompanyPremisesId\r\n ),\r\n ConsumerCompanyPremisesActivationChecklistItemLookupId: new FormControl(\r\n ccPremisesActivationChecklistItem.consumerCompanyPremisesActivationChecklistItemLookup.entityLookupId\r\n ),\r\n ConsumerCompanyPremisesActivationChecklistItemLookupValue: new FormControl(\r\n ccPremisesActivationChecklistItem.consumerCompanyPremisesActivationChecklistItemLookup.value\r\n ),\r\n ConsumerCompanyPremisesActivationChecklistItemDescription: new FormControl(\r\n ccPremisesActivationChecklistItem.consumerCompanyPremisesActivationChecklistItemLookup.description\r\n ),\r\n selectionLookupId: new FormControl(\r\n ccPremisesActivationChecklistItem.selectionLookupId\r\n ),\r\n checklistItemIsDisabled: new FormControl(\r\n !isPreviousSectionIsComplete\r\n ),\r\n checklistItemPreviouslyChecked: new FormControl(\r\n ccPremisesActivationChecklistItem.selectionLookupId ===\r\n this.yesSelection ||\r\n ccPremisesActivationChecklistItem.selectionLookupId ===\r\n this.notApplicableSelection\r\n ),\r\n updatedBy: new FormControl(\r\n ccPremisesActivationChecklistItem.updatedBy\r\n ),\r\n updatedDateTime: new FormControl(\r\n ccPremisesActivationChecklistItem.updatedDateTime\r\n ),\r\n });\r\n }\r\n\r\n private initForecastValuesForm() {\r\n this.consumerCompanyPremisesService\r\n .getConsumerCompanyPremisesByDistributorId(\r\n this.consumerCompanyPremises.distributorId\r\n )\r\n .subscribe(\r\n (result) => {\r\n this.loading = false;\r\n this.baseConsumerCompanyPremisesList = result;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n this.toastr.error(this.errorMessage);\r\n }\r\n );\r\n\r\n this.consumerCompanyPremisesForecastParametersForm = new FormGroup({\r\n ExcludeFromForecast: new FormControl(\r\n this.consumerCompanyPremises.excludeFromForecastRun,\r\n [Validators.required]\r\n ),\r\n ForecastMonthlyConsumption: new FormControl(\r\n this.consumerCompanyPremises.forecastConsumptionKwh,\r\n [Validators.required]\r\n ),\r\n BaseConsumerCompanyPremisesId: new FormControl(\r\n this.consumerCompanyPremises.baseConsumerCompanyPremisesId,\r\n [Validators.required]\r\n ),\r\n });\r\n }\r\n\r\n private setSections() {\r\n this.sections = this.consumerCompanyPremises.consumerCompanyPremisesActivations\r\n .map((ccPremisesActivation: ConsumerCompanyPremisesActivation) => {\r\n return ccPremisesActivation.consumerCompanyPremisesActivationChecklistItemLookup.value.substr(\r\n 0,\r\n ccPremisesActivation.consumerCompanyPremisesActivationChecklistItemLookup.value.indexOf(\r\n ' - '\r\n )\r\n );\r\n })\r\n .filter(function(value, index, self) {\r\n return self.indexOf(value) === index;\r\n });\r\n }\r\n\r\n private isPreviousSectionComplete(\r\n ccPremisesActivationChecklistItemLookupValue: string\r\n ): boolean {\r\n const checklistItemSection = ccPremisesActivationChecklistItemLookupValue.substr(\r\n 0,\r\n ccPremisesActivationChecklistItemLookupValue.indexOf(' - ')\r\n );\r\n if (this.sections.indexOf(checklistItemSection) === 0) {\r\n return true;\r\n } else {\r\n const previousSection = this.sections[\r\n this.sections.indexOf(checklistItemSection) - 1\r\n ];\r\n return this.consumerCompanyPremises.consumerCompanyPremisesActivations\r\n .filter(\r\n (\r\n ccPremisesActivation: ConsumerCompanyPremisesActivation\r\n ) => {\r\n return ccPremisesActivation.consumerCompanyPremisesActivationChecklistItemLookup.value.startsWith(\r\n previousSection\r\n );\r\n }\r\n )\r\n .map(\r\n (\r\n ccPremisesActivation: ConsumerCompanyPremisesActivation\r\n ) => {\r\n return ccPremisesActivation.selectionLookupId;\r\n }\r\n )\r\n .every((selectionLookupId: number) => {\r\n return (\r\n selectionLookupId === this.yesSelection ||\r\n selectionLookupId === this.notApplicableSelection\r\n );\r\n });\r\n }\r\n }\r\n\r\n private setAllItemsChecked() {\r\n this.allItemsChecked = this.consumerCompanyPremises.consumerCompanyPremisesActivations\r\n .map((ccPremisesActivation: ConsumerCompanyPremisesActivation) => {\r\n return ccPremisesActivation.selectionLookupId;\r\n })\r\n .every((selectionLookupId: number) => {\r\n return (\r\n selectionLookupId === this.yesSelection ||\r\n selectionLookupId === this.notApplicableSelection\r\n );\r\n });\r\n }\r\n}\r\n","import {\r\n AfterViewChecked,\r\n ChangeDetectorRef,\r\n Component,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { ActivatedRoute, Params } from '@angular/router';\r\nimport { CommonService } from '../../../common/common-service';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { ComponentTriggersService } from '../../../common/component-triggers.service';\r\nimport { Subscription } from 'rxjs';\r\nimport { AuthorisationService } from '../../../authorisation-service/authorisation.service';\r\nimport { TabsetComponent } from 'ngx-bootstrap';\r\n\r\n@Component({\r\n selector: 'edit-consumer-company',\r\n templateUrl: './edit-consumer-company.component.html',\r\n styleUrls: ['./edit-consumer-company.component.scss'],\r\n})\r\nexport class EditConsumerCompanyComponent\r\n implements OnInit, OnDestroy, AfterViewChecked {\r\n @Input('isInApplicationMode')\r\n public isInApplicationMode: boolean = false;\r\n @Input('consumerCompanyId')\r\n public consumerCompanyId: number;\r\n @Input('companyName')\r\n public companyName: string;\r\n @ViewChild('companyTabs')\r\n public tabsComponent: TabsetComponent;\r\n public isReadOnlyMode = true;\r\n public loading = false;\r\n public activeTab: string = 'companyDetails';\r\n public heading: string;\r\n public errorMessage = '';\r\n public minContactsLoaded: boolean = false;\r\n\r\n private isPpaAddendumEnabled: boolean = false;\r\n private enableConsumerPpaAndAddendumsEventSubscription: Subscription;\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n private componentTriggersService: ComponentTriggersService,\r\n private cdRef: ChangeDetectorRef,\r\n private authorisationService: AuthorisationService,\r\n public commonService: CommonService\r\n ) {}\r\n\r\n public ngAfterViewChecked() {\r\n this.cdRef.detectChanges();\r\n }\r\n\r\n public selectTab(tabId: number) {\r\n this.tabsComponent.tabs[tabId].active = true;\r\n this.onTabChange(this.tabsComponent);\r\n }\r\n\r\n public ngOnInit() {\r\n this.loading = true;\r\n this.route.params.subscribe(\r\n (routeParams: Params) => {\r\n if (routeParams['consumerCompanyId']) {\r\n this.consumerCompanyId = routeParams['consumerCompanyId'];\r\n }\r\n if (\r\n !this.isInApplicationMode ||\r\n !isNullOrUndefined(this.consumerCompanyId)\r\n ) {\r\n this.heading = 'Edit Consumer Company';\r\n } else {\r\n this.heading = 'Create Consumer Company';\r\n }\r\n this.route.queryParams.subscribe(\r\n (queryParams) => {\r\n if (queryParams['tab']) {\r\n this.activeTab = queryParams['tab'];\r\n }\r\n if (queryParams['companyName']) {\r\n this.companyName = queryParams['companyName'];\r\n }\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n this.isReadOnlyMode = this.authorisationService.isGeneratorsAndConsumersReadOnly();\r\n\r\n this.enableConsumerPpaAndAddendumsEventSubscription = this.componentTriggersService.triggerEnableConsumerPpaAndAddendums.subscribe(\r\n () => {\r\n this.isPpaAddendumEnabled = true;\r\n }\r\n );\r\n }\r\n\r\n public ngOnDestroy() {\r\n this.enableConsumerPpaAndAddendumsEventSubscription.unsubscribe();\r\n }\r\n\r\n public onAuthAndBillingContactLoaded(contactLoaded: boolean) {\r\n this.minContactsLoaded = contactLoaded;\r\n }\r\n\r\n public onTabChange(tabset: any): void {\r\n this.activeTab = tabset.tabs.filter((tab) => tab.active)[0].id;\r\n }\r\n}\r\n","import { debounceTime } from 'rxjs/operators';\r\nimport { DistributorService } from '../../distributor/distributor.service';\r\nimport { CommonService } from '../../../common/common-service';\r\nimport {\r\n Component,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n TemplateRef,\r\n} from '@angular/core';\r\nimport { ActivatedRoute, Params, Router } from '@angular/router';\r\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { ConsumerCompanyPremisesService } from '../consumer-company-premises.service';\r\nimport { Page } from '../../../model/page.model';\r\nimport { ComponentTriggersService } from '../../../common/component-triggers.service';\r\nimport { Subscription } from 'rxjs';\r\nimport { BsModalRef, BsModalService } from 'ngx-bootstrap';\r\nimport { EntityLookup } from '../../../model/entity-lookup.model';\r\n\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { CustomValidators } from 'ng4-validators';\r\n\r\n@Component({\r\n selector: 'consumer-company-premises-list',\r\n templateUrl: './consumer-company-premises-list.component.html',\r\n styleUrls: [\r\n './consumer-company-premises-list.component.scss',\r\n './../../form.styles.scss',\r\n ],\r\n})\r\nexport class ConsumerCompanyPremisesListComponent implements OnInit, OnDestroy {\r\n @Input('companyName')\r\n public companyName: string;\r\n @Input('consumerCompanyId')\r\n public consumerCompanyId: number;\r\n @Input('isInApplicationMode')\r\n public isInApplicationMode: boolean = false;\r\n @Input('isReadOnlyMode')\r\n public isReadOnlyMode: boolean = false;\r\n public loading = false;\r\n public errorMessage: string;\r\n public consumerCompanyPremises: any[];\r\n public newPremisesForm: FormGroup;\r\n public premisesTypes: EntityLookup[];\r\n public distributors: any[];\r\n private consumerCompanyPremisesPage: Page;\r\n private searchGroup: FormGroup;\r\n private searchControl: FormControl;\r\n private sortProp = {};\r\n private triggerConsumerCompanyPremisesListRefreshSubscription: Subscription;\r\n private modalRef: BsModalRef;\r\n private editableApplicationPremisesStatuses: string[] = [\r\n 'New Application',\r\n 'More Info',\r\n 'Declined',\r\n ];\r\n private editablePremisesStatuses: string[] = ['Activated'];\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n private router: Router,\r\n private modalService: BsModalService,\r\n private commonService: CommonService,\r\n private toastr: ToastrService,\r\n private consumerCompanyPremisesService: ConsumerCompanyPremisesService,\r\n private distributorService: DistributorService,\r\n private componentTriggerService: ComponentTriggersService\r\n ) {\r\n this.consumerCompanyPremisesPage = new Page();\r\n\r\n this.searchControl = new FormControl('');\r\n this.searchGroup = new FormGroup({\r\n search: this.searchControl,\r\n });\r\n\r\n if (this.isReadOnlyMode) {\r\n this.newPremisesForm.disable();\r\n }\r\n }\r\n\r\n public ngOnInit() {\r\n this.newPremisesForm = new FormGroup({\r\n premisesName: new FormControl(null, [Validators.required]),\r\n businessActivityLookupId: new FormControl(null, [\r\n Validators.required,\r\n ]),\r\n consumerCompanyId: new FormControl(null),\r\n isInApplicationMode: new FormControl(this.isInApplicationMode),\r\n distributorId: new FormControl(null, [Validators.required]),\r\n accountNumber: new FormControl(null, [\r\n Validators.required,\r\n CustomValidators.number,\r\n Validators.maxLength(50),\r\n ]),\r\n smartMeterInstalled: new FormControl(null),\r\n });\r\n this.initialize();\r\n this.triggerConsumerCompanyPremisesListRefreshSubscription = this.componentTriggerService.triggerDocumentsRefresh.subscribe(\r\n () => {\r\n this.initialize();\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n }\r\n\r\n public ngOnDestroy() {\r\n this.triggerConsumerCompanyPremisesListRefreshSubscription.unsubscribe();\r\n }\r\n\r\n public changePage(pageInfo: any): void {\r\n const searchString = this.searchGroup.value.search;\r\n this.consumerCompanyPremisesPage.offset =\r\n pageInfo.offset * this.consumerCompanyPremisesPage.size;\r\n this.consumerCompanyPremisesService\r\n .getGetConsumerCompanyPremisesPage(\r\n this.consumerCompanyId,\r\n searchString,\r\n this.consumerCompanyPremisesPage,\r\n this.sortProp\r\n )\r\n .subscribe(\r\n (page) => {\r\n this.consumerCompanyPremisesPage.totalPages = Math.ceil(\r\n page.totalItems / page.size\r\n );\r\n this.consumerCompanyPremisesPage.totalElements =\r\n page.totalItems;\r\n this.consumerCompanyPremises = page.items;\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n\r\n public sortColumn(event: any): void {\r\n this.sortProp = {\r\n direction: event.sorts[0].dir,\r\n property: event.sorts[0].prop,\r\n };\r\n this.changePage({ offset: 0 });\r\n }\r\n\r\n public onSelect(event: any): void {\r\n const consumerCompanyPremises: any = event.selected[0];\r\n if (!consumerCompanyPremises.distributorEligibleForApplication) {\r\n this.toastr.warning(\r\n 'Selected premises is not in a covered distribution area.'\r\n );\r\n return;\r\n }\r\n\r\n if (\r\n this.isInApplicationMode &&\r\n (isNullOrUndefined(\r\n consumerCompanyPremises.premisesProgressStatus\r\n ) ||\r\n this.editableApplicationPremisesStatuses.indexOf(\r\n consumerCompanyPremises.premisesProgressStatus\r\n ) < 0)\r\n ) {\r\n this.toastr.warning(\r\n 'You can only edit a premises in the following progress statuses: ' +\r\n this.editableApplicationPremisesStatuses.join(', ')\r\n );\r\n return;\r\n }\r\n\r\n if (\r\n !this.isInApplicationMode &&\r\n (isNullOrUndefined(\r\n consumerCompanyPremises.premisesProgressStatus\r\n ) ||\r\n this.editablePremisesStatuses.indexOf(\r\n consumerCompanyPremises.premisesProgressStatus\r\n ) < 0)\r\n ) {\r\n this.toastr.warning(\r\n 'You can only edit a premises in the following progress statuses: ' +\r\n this.editablePremisesStatuses.join(', ')\r\n );\r\n return;\r\n }\r\n\r\n this.router.navigate(\r\n [\r\n 'consumer-company-premises',\r\n consumerCompanyPremises.consumerCompanyPremisesId,\r\n 'edit',\r\n ],\r\n {\r\n queryParams: {\r\n tab: 'premisesDetails',\r\n companyName: this.companyName,\r\n consumerCompanyId: this.consumerCompanyId,\r\n },\r\n }\r\n );\r\n }\r\n\r\n public onBack() {\r\n this.router.navigate(['consumer-companies']);\r\n }\r\n\r\n public newPremisesModal(template: TemplateRef): void {\r\n this.newPremisesForm.controls.premisesName.setValue(null);\r\n this.newPremisesForm.controls.businessActivityLookupId.setValue(null);\r\n this.newPremisesForm.controls.consumerCompanyId.setValue(null);\r\n this.newPremisesForm.controls.distributorId.setValue(null);\r\n this.newPremisesForm.controls.accountNumber.setValue(null);\r\n this.modalRef = this.modalService.show(template);\r\n }\r\n\r\n public onPopupSubmit(): void {\r\n this.commonService.validateAllFormFields(this.newPremisesForm);\r\n if (this.newPremisesForm.valid) {\r\n this.newPremisesForm.controls.consumerCompanyId.setValue(\r\n this.consumerCompanyId\r\n );\r\n this.consumerCompanyPremisesService\r\n .addNewPremises(this.newPremisesForm.value)\r\n .subscribe(\r\n () => {\r\n this.modalRef.hide();\r\n this.toastr.success(\r\n 'Consumer Premises Was Successfully Added'\r\n );\r\n this.changePage({ offset: 0 });\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n this.toastr.error(this.errorMessage);\r\n }\r\n );\r\n }\r\n }\r\n\r\n private initialize() {\r\n this.searchControl.valueChanges.pipe(debounceTime(300)).subscribe(\r\n () => {\r\n this.changePage({ offset: 0 });\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n\r\n this.loading = true;\r\n this.route.params.subscribe(\r\n (routeParams: Params) => {\r\n if (\r\n routeParams['consumerCompanyId'] &&\r\n !this.consumerCompanyId\r\n ) {\r\n this.consumerCompanyId = routeParams['consumerCompanyId'];\r\n }\r\n\r\n this.commonService\r\n .getEntityLookups(['ConsumerBusinessActivity'])\r\n .subscribe(\r\n (response) => {\r\n this.distributorService\r\n .getAllDistributors()\r\n .subscribe(\r\n (distributors) => {\r\n this.premisesTypes =\r\n response.entityLookupResultList[\r\n 'consumerBusinessActivity'\r\n ];\r\n this.distributors = distributors;\r\n this.changePage({\r\n offset: this\r\n .consumerCompanyPremisesPage\r\n .offset,\r\n });\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n }\r\n}\r\n","import { debounceTime } from 'rxjs/operators';\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { GeneratorMaintenanceListService } from './generator-maintenance-list.service';\r\nimport { Page } from '../../../model/page.model';\r\nimport { FormControl, FormGroup } from '@angular/forms';\r\nimport { GeneratorCompanyService } from '../generator-company.service';\r\nimport { Router } from '@angular/router';\r\nimport { CommonService } from '../../../common/common-service';\r\n\r\n@Component({\r\n selector: 'generator-companies-list',\r\n templateUrl: './generator-companies-list.component.html',\r\n styleUrls: [\r\n './generator-companies-list.component.scss',\r\n '../../form.styles.scss',\r\n ],\r\n})\r\nexport class GeneratorCompaniesListComponent implements OnInit {\r\n public loading: boolean;\r\n public generatorCompanies: any[];\r\n public errorMessage: string;\r\n private holdingCompanyPage: Page;\r\n private displayAlert = false;\r\n private searchGroup: FormGroup;\r\n private searchControl: FormControl;\r\n private sortProp = {};\r\n\r\n constructor(\r\n private GeneratorMaintenanceService: GeneratorCompanyService,\r\n private router: Router,\r\n private commonService: CommonService\r\n ) {\r\n this.holdingCompanyPage = new Page();\r\n\r\n this.searchControl = new FormControl('');\r\n this.searchGroup = new FormGroup({\r\n search: this.searchControl,\r\n });\r\n }\r\n\r\n public ngOnInit() {\r\n this.loading = true;\r\n this.searchControl.valueChanges.pipe(debounceTime(300)).subscribe(\r\n () => {\r\n this.changePage({ offset: 0 });\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n this.changePage({ offset: this.holdingCompanyPage.offset });\r\n }\r\n\r\n public changePage(pageInfo: any): void {\r\n this.loading = true;\r\n const searchString = this.searchGroup.value.search;\r\n this.holdingCompanyPage.offset =\r\n pageInfo.offset * this.holdingCompanyPage.size;\r\n this.GeneratorMaintenanceService.getAllGeneratorHoldingCompanies(\r\n searchString,\r\n this.holdingCompanyPage,\r\n this.sortProp\r\n ).subscribe(\r\n (page) => {\r\n this.loading = false;\r\n this.displayAlert = false;\r\n this.holdingCompanyPage.totalPages = Math.ceil(\r\n page.totalItems / page.size\r\n );\r\n this.holdingCompanyPage.totalElements = page.totalItems;\r\n this.generatorCompanies = page.items;\r\n },\r\n (error) => {\r\n this.loading = false;\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.displayAlert = true;\r\n }\r\n );\r\n }\r\n\r\n public sortColumn(event: any): void {\r\n this.sortProp = {\r\n direction: event.sorts[0].dir,\r\n property: event.sorts[0].prop,\r\n };\r\n this.changePage({ offset: 0 });\r\n }\r\n\r\n public archiveGeneratorCompany(selectedCompanyId: any) {\r\n this.errorMessage = '';\r\n const that = this;\r\n this.loading = true;\r\n this.GeneratorMaintenanceService.archiveGeneratorCompany(\r\n selectedCompanyId\r\n ).subscribe(\r\n (response) => {\r\n this.loading = false;\r\n that.changePage({ offset: 0 });\r\n },\r\n (error) => {\r\n this.loading = false;\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n }\r\n\r\n public onSelect(event: any): void {\r\n const selectedCompanyId = event.selected[0].companyId;\r\n const selectedCompanyName = event.selected[0].companyName;\r\n this.router.navigate(['generator-company', selectedCompanyId, 'edit'], {\r\n queryParams: {\r\n companyName: selectedCompanyName,\r\n activeTab: 'company',\r\n },\r\n });\r\n }\r\n}\r\n","import { debounceTime } from 'rxjs/operators';\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { GeneratorMaintenanceListService } from './generator-maintenance-list.service';\r\nimport { Page } from '../../../model/page.model';\r\nimport { FormControl, FormGroup } from '@angular/forms';\r\nimport { GeneratorCompanyService } from '../generator-company.service';\r\nimport { Router } from '@angular/router';\r\nimport { CommonService } from '../../../common/common-service';\r\n\r\n@Component({\r\n selector: 'archived-generator-companies-list',\r\n templateUrl: './archived-generator-companies-list.component.html',\r\n styleUrls: [\r\n './archived-generator-companies-list.component.scss',\r\n '../../form.styles.scss',\r\n ],\r\n})\r\nexport class ArchivedGeneratorCompaniesListComponent implements OnInit {\r\n public loading: boolean;\r\n public generatorCompanies: any[];\r\n public errorMessage: string;\r\n private holdingCompanyPage: Page;\r\n private displayAlert = false;\r\n private searchGroup: FormGroup;\r\n private searchControl: FormControl;\r\n private sortProp = {};\r\n\r\n constructor(\r\n private GeneratorMaintenanceService: GeneratorCompanyService,\r\n private router: Router,\r\n private commonService: CommonService\r\n ) {\r\n this.holdingCompanyPage = new Page();\r\n\r\n this.searchControl = new FormControl('');\r\n this.searchGroup = new FormGroup({\r\n search: this.searchControl,\r\n });\r\n }\r\n\r\n public ngOnInit() {\r\n this.loading = true;\r\n this.searchControl.valueChanges.pipe(debounceTime(300)).subscribe(\r\n () => {\r\n this.changePage({ offset: 0 });\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n this.changePage({ offset: this.holdingCompanyPage.offset });\r\n }\r\n\r\n public changePage(pageInfo: any): void {\r\n this.loading = true;\r\n const searchString = this.searchGroup.value.search;\r\n this.holdingCompanyPage.offset =\r\n pageInfo.offset * this.holdingCompanyPage.size;\r\n this.GeneratorMaintenanceService.getArchivedGeneratorHoldingCompanies(\r\n searchString,\r\n this.holdingCompanyPage,\r\n this.sortProp\r\n ).subscribe(\r\n (page) => {\r\n this.loading = false;\r\n this.displayAlert = false;\r\n this.holdingCompanyPage.totalPages = Math.ceil(\r\n page.totalItems / page.size\r\n );\r\n this.holdingCompanyPage.totalElements = page.totalItems;\r\n this.generatorCompanies = page.items;\r\n },\r\n (error) => {\r\n this.loading = false;\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.displayAlert = true;\r\n }\r\n );\r\n }\r\n\r\n public sortColumn(event: any): void {\r\n this.sortProp = {\r\n direction: event.sorts[0].dir,\r\n property: event.sorts[0].prop,\r\n };\r\n this.changePage({ offset: 0 });\r\n }\r\n\r\n public unarchiveGeneratorCompany(selectedCompanyId: any) {\r\n this.errorMessage = '';\r\n const that = this;\r\n this.loading = true;\r\n this.GeneratorMaintenanceService.unarchiveGeneratorCompany(\r\n selectedCompanyId\r\n ).subscribe(\r\n (response) => {\r\n this.loading = false;\r\n that.changePage({ offset: 0 });\r\n },\r\n (error) => {\r\n this.loading = false;\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n }\r\n\r\n public onSelect(event: any): void {\r\n const selectedCompanyId = event.selected[0].companyId;\r\n const selectedCompanyName = event.selected[0].companyName;\r\n this.router.navigate(['generator-company', selectedCompanyId, 'edit'], {\r\n queryParams: {\r\n companyName: selectedCompanyName,\r\n activeTab: 'company',\r\n },\r\n });\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { CommonService } from '../../../common/common-service';\r\nimport { AuthorisationService } from '../../../authorisation-service/authorisation.service';\r\n\r\n@Component({\r\n selector: 'edit-generator-company',\r\n templateUrl: './edit-generator-company.component.html',\r\n styleUrls: [\r\n '../../form.styles.scss',\r\n './edit-generator-company.component.scss',\r\n ],\r\n})\r\nexport class EditGeneratorCompanyComponent implements OnInit {\r\n public activeTab: string;\r\n public companyName: string;\r\n public holdingCompanyId: number;\r\n public isReadOnlyMode: boolean = true;\r\n public errorMessage = '';\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n public commonService: CommonService,\r\n private authorisationService: AuthorisationService\r\n ) {}\r\n\r\n public ngOnInit() {\r\n this.activeTab = 'company';\r\n this.route.params.subscribe(\r\n (params) => {\r\n this.holdingCompanyId = params['holdingCompanyId'];\r\n this.route.queryParams.subscribe(\r\n (queryParams) => {\r\n this.companyName = queryParams.companyName;\r\n this.activeTab = queryParams.activeTab;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n this.isReadOnlyMode = this.authorisationService.isGeneratorsAndConsumersReadOnly();\r\n }\r\n}\r\n","import { ConsumerPremisesDetail } from '../../../../model/consumer-premises-detail.model';\r\nimport { CommonService } from '../../../../common/common-service';\r\nimport { ConsumerCompanyService } from '../../../consumer-company/consumer-company.service';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { ProspectPpaService } from '../prospect-ppa.service';\r\nimport { FormGroup, FormControl, Validators } from '@angular/forms';\r\nimport { ComponentTriggersService } from '../../../../common/component-triggers.service';\r\nimport { saveAs as importedSaveAs } from 'file-saver';\r\n\r\nimport { ToastrService } from 'ngx-toastr';\r\n\r\n@Component({\r\n selector: 'app-ppa-schedule',\r\n templateUrl: './ppa-schedule.component.html',\r\n styleUrls: ['./ppa-schedule.component.scss', '../../../form.styles.scss'],\r\n})\r\nexport class PpaScheduleComponent implements OnInit {\r\n public loading: boolean = false;\r\n public creatingAndSaving: boolean = false;\r\n public downloadingPreview: boolean = false;\r\n public consumerPremisesDetail: ConsumerPremisesDetail;\r\n public scheduleDates: FormGroup;\r\n public errorMessage = '';\r\n\r\n constructor(\r\n private router: Router,\r\n private route: ActivatedRoute,\r\n private consumerCompanyService: ConsumerCompanyService,\r\n private prospectPpaService: ProspectPpaService,\r\n public commonService: CommonService,\r\n protected toastr: ToastrService,\r\n private componentTriggerService: ComponentTriggersService\r\n ) {\r\n this.scheduleDates = new FormGroup({\r\n cpFulfilment: new FormControl(null, [Validators.required]),\r\n expiryDate: new FormControl(20, [Validators.required]),\r\n consumerCompanyPremisesId: new FormControl(null),\r\n });\r\n }\r\n\r\n public ngOnInit() {\r\n this.loading = true;\r\n this.route.params.subscribe(\r\n (params) => {\r\n this.consumerCompanyService\r\n .getConsumerPremisesDetails(\r\n params.consumerCompanyPremisesId\r\n )\r\n .subscribe(\r\n (consumerPremisesDetail: any) => {\r\n this.prospectPpaService\r\n .getProspectPpaDates(\r\n consumerPremisesDetail.consumerCompanyId\r\n )\r\n .subscribe(\r\n (scheduleDates) => {\r\n this.consumerPremisesDetail = consumerPremisesDetail;\r\n this.loading = false;\r\n this.prepopulateScheduleDetails(\r\n scheduleDates\r\n );\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n }\r\n\r\n public saveDates(): void {\r\n this.commonService.validateAllFormFields(this.scheduleDates);\r\n if (this.scheduleDates.valid) {\r\n this.scheduleDates.controls.consumerCompanyPremisesId.setValue(\r\n this.consumerPremisesDetail.consumerCompanyPremisesId\r\n );\r\n this.prospectPpaService\r\n .saveSchedule(this.scheduleDates.value)\r\n .subscribe(\r\n () => {\r\n this.toastr.success(\r\n 'PPA Schedule Details Saved Successfully'\r\n );\r\n this.router.navigate([\r\n 'consumers',\r\n 'prospect-evaluations',\r\n ]);\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.toastr.error(this.errorMessage);\r\n }\r\n );\r\n }\r\n }\r\n\r\n public prepopulateScheduleDetails(scheduleDates: any): void {\r\n if (scheduleDates) {\r\n this.scheduleDates.controls.cpFulfilment.setValue(\r\n scheduleDates.cpFulfilmentDate\r\n );\r\n this.scheduleDates.controls.expiryDate.setValue(\r\n scheduleDates.expiryDate\r\n );\r\n this.scheduleDates.controls.cpFulfilment.disable();\r\n this.scheduleDates.controls.expiryDate.disable();\r\n // this.scheduleDatesSaved = true;\r\n }\r\n }\r\n\r\n public previewPpaSchedule(): void {\r\n this.downloadingPreview = true;\r\n this.prospectPpaService\r\n .getPpaSchedulePreviewDocument(\r\n this.consumerPremisesDetail.consumerCompanyPremisesId\r\n )\r\n .subscribe(\r\n (blob) => {\r\n importedSaveAs(\r\n blob,\r\n 'Premises PPA Schedule - ' +\r\n this.consumerPremisesDetail.premisesName +\r\n '.docx'\r\n );\r\n this.downloadingPreview = false;\r\n },\r\n () => {\r\n this.errorMessage = this.commonService.handleDocumentErrorMessage(\r\n 'PPA schedule'\r\n );\r\n this.toastr.error(this.errorMessage);\r\n this.downloadingPreview = false;\r\n }\r\n );\r\n }\r\n\r\n public savePpaSchedule(): void {\r\n this.creatingAndSaving = true;\r\n this.prospectPpaService\r\n .uploadPremisesPpaScheduleDocument(\r\n this.consumerPremisesDetail.consumerCompanyPremisesId,\r\n 'Premises PPA Schedule - ' +\r\n this.consumerPremisesDetail.premisesName +\r\n '.docx'\r\n )\r\n .subscribe(\r\n () => {\r\n this.componentTriggerService.triggerDocumentsRefresh.next();\r\n this.creatingAndSaving = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.creatingAndSaving = false;\r\n this.toastr.error(this.errorMessage);\r\n }\r\n );\r\n }\r\n}\r\n","import { map } from 'rxjs/operators';\r\nimport { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Injectable()\r\nexport class ManagementReportService {\r\n constructor(private httpClient: HttpClient) {}\r\n\r\n public getManagementReport(year: number, month: number): Observable {\r\n return this.httpClient\r\n .get(\r\n API_URL +\r\n 'Report/GetManagementReport?year=' +\r\n year +\r\n '&month=' +\r\n month,\r\n { responseType: 'blob' }\r\n )\r\n .pipe(map((response) => response));\r\n }\r\n\r\n public getConsumerIncomeReport(\r\n year: number,\r\n month: number\r\n ): Observable {\r\n return this.httpClient\r\n .get(\r\n API_URL +\r\n 'Report/GetConsumerIncomeReport?year=' +\r\n year +\r\n '&month=' +\r\n month,\r\n { responseType: 'blob' }\r\n )\r\n .pipe(map((response) => response));\r\n }\r\n\r\n public getGeneratorExpenseReport(\r\n year: number,\r\n month: number\r\n ): Observable {\r\n return this.httpClient\r\n .get(\r\n API_URL +\r\n 'Report/GetGeneratorExpenseReport?year=' +\r\n year +\r\n '&month=' +\r\n month,\r\n { responseType: 'blob' }\r\n )\r\n .pipe(map((response) => response));\r\n }\r\n\r\n public getMonthlyStatementReport(\r\n year: number,\r\n month: number\r\n ): Observable {\r\n return this.httpClient\r\n .get(\r\n API_URL +\r\n 'Report/GetMonthlyStatementReport?year=' +\r\n year +\r\n '&month=' +\r\n month,\r\n { responseType: 'blob' }\r\n )\r\n .pipe(map((response) => response));\r\n }\r\n\r\n public getMonthlyRecsReport(\r\n year: number,\r\n month: number,\r\n allocationid: number\r\n ): Observable {\r\n return this.httpClient\r\n .get(\r\n API_URL +\r\n 'Report/GetRECsReport?year=' +\r\n year +\r\n '&month=' +\r\n month +\r\n '&allocationid=' +\r\n allocationid,\r\n { responseType: 'blob' }\r\n )\r\n .pipe(map((response) => response));\r\n }\r\n}\r\n","import {\r\n Component,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n TemplateRef,\r\n} from '@angular/core';\r\nimport { AllocationRunService } from '../allocation-run.service';\r\nimport { Subscription } from 'rxjs';\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\nimport { ExportService } from '../../../sap-export/export.service';\r\nimport { saveAs as importedSaveAs } from 'file-saver';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { CommonService } from '../../../../common/common-service';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { BsModalRef, BsModalService } from 'ngx-bootstrap';\r\nimport { ManagementReportService } from '../../../../component/report/management-report/management-report.service';\r\n\r\n@Component({\r\n selector: 'app-recs',\r\n templateUrl: './recs.component.html',\r\n styleUrls: ['./recs.component.scss'],\r\n})\r\nexport class RecsComponent implements OnInit, OnDestroy {\r\n public allocationRunId: number;\r\n public recsSummary: any = {};\r\n public startDate: Date;\r\n public runDate: Date;\r\n public errorMessage = '';\r\n public loading = false;\r\n public processingSapDebtorsInvoice = false;\r\n public processingRecsReport = false;\r\n public isEmailSendingComplete = false;\r\n public isEmailSendingError = false;\r\n public isEmailSending = false;\r\n public invoiceEmailLogs: any[];\r\n private modalRef: BsModalRef;\r\n\r\n private queryParamsSubscription: Subscription;\r\n private routeParamsSubscription: Subscription;\r\n\r\n constructor(\r\n private router: Router,\r\n private route: ActivatedRoute,\r\n private service: AllocationRunService,\r\n private sapExportService: ExportService,\r\n private toastr: ToastrService,\r\n public commonService: CommonService,\r\n private managementReportService: ManagementReportService,\r\n private modalService: BsModalService\r\n ) {}\r\n\r\n public ngOnInit() {\r\n this.queryParamsSubscription = this.route.queryParams.subscribe(\r\n (params) => {\r\n this.startDate = params.startDate;\r\n this.runDate = params.runDate;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n\r\n this.routeParamsSubscription = this.route.params.subscribe(\r\n (params) => {\r\n this.allocationRunId = params.allocationRunId;\r\n this.loading = true;\r\n this.service.getRecs(this.allocationRunId).subscribe(\r\n (response) => {\r\n this.recsSummary = response;\r\n this.loading = false;\r\n\r\n if (\r\n this.recsSummary.allocationRunInvoiceSentStatus !=\r\n null\r\n ) {\r\n this.isEmailSendingError =\r\n this.recsSummary\r\n .allocationRunInvoiceSentStatus === 'Error';\r\n this.isEmailSendingComplete =\r\n this.recsSummary\r\n .allocationRunInvoiceSentStatus ===\r\n 'Completed';\r\n this.isEmailSending =\r\n this.recsSummary\r\n .allocationRunInvoiceSentStatus ===\r\n 'Sending...';\r\n }\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n if (!isNullOrUndefined(this.routeParamsSubscription)) {\r\n this.routeParamsSubscription.unsubscribe();\r\n }\r\n if (!isNullOrUndefined(this.queryParamsSubscription)) {\r\n this.queryParamsSubscription.unsubscribe();\r\n }\r\n }\r\n\r\n public downloadSapDebtorsInvoiceExport() {\r\n this.processingSapDebtorsInvoice = true;\r\n this.toastr.info('Processing SAP debtors invoice export');\r\n this.sapExportService\r\n .getDebtorsInvoiceExport(this.allocationRunId)\r\n .subscribe(\r\n (blob) => {\r\n this.toastr.success('SAP export downloading');\r\n importedSaveAs(blob, 'SapDebtorsInvoiceExport.zip');\r\n this.toastr.success(\r\n 'Downloading SAP debtors invoice export'\r\n );\r\n this.processingSapDebtorsInvoice = false;\r\n },\r\n () => {\r\n this.errorMessage = this.commonService.handleDocumentErrorMessage(\r\n 'SAP debtors invoice'\r\n );\r\n this.toastr.error(this.errorMessage);\r\n this.processingSapDebtorsInvoice = false;\r\n }\r\n );\r\n }\r\n\r\n public onRecsConsumerList() {\r\n this.router.navigate(['recs-consumer-list', this.allocationRunId], {\r\n queryParams: { startDate: this.startDate, runDate: this.runDate },\r\n });\r\n }\r\n\r\n public SendConsumerInvoiceEmails() {\r\n this.isEmailSending = true;\r\n this.service.sendConsumerInvoiceEmails(this.allocationRunId).subscribe(\r\n () => {\r\n this.toastr.success('Started to send consumer invoice emails.');\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n }\r\n\r\n public ResendConsumerInvoiceEmails() {\r\n this.isEmailSending = true;\r\n this.service\r\n .resendConsumerInvoiceEmails(this.allocationRunId)\r\n .subscribe(\r\n () => {\r\n this.toastr.success(\r\n 'Started to resend consumer invoice emails.'\r\n );\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n }\r\n\r\n public showEmaillogsModal(template: TemplateRef) {\r\n this.loading = true;\r\n this.service\r\n .getConsumerInvoiceEmailLogs(this.allocationRunId)\r\n .subscribe(\r\n (page) => {\r\n this.invoiceEmailLogs = page;\r\n this.loading = false;\r\n // Show Modal\r\n this.modalRef = this.modalService.show(template);\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n\r\n public getRecsReport() {\r\n this.processingRecsReport = true;\r\n this.toastr.info('Processing Recs report');\r\n this.managementReportService\r\n .getMonthlyRecsReport(\r\n new Date(this.startDate).getFullYear(),\r\n new Date(this.startDate).getMonth() + 1,\r\n this.allocationRunId\r\n )\r\n .subscribe(\r\n (response) => {\r\n importedSaveAs(\r\n response,\r\n new Date(this.startDate).getMonth() +\r\n 1 +\r\n '-' +\r\n new Date(this.startDate).getFullYear() +\r\n '-' +\r\n 'RecsReport.xls'\r\n );\r\n this.processingRecsReport = false;\r\n this.toastr.success('Downloading Recs report');\r\n },\r\n () => {\r\n this.processingRecsReport = false;\r\n this.toastr.error(\r\n 'An error occurred while attempting to retrieve the recs report'\r\n );\r\n }\r\n );\r\n }\r\n}\r\n","import { Component, OnInit, OnDestroy } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { CommonService } from '../../../common/common-service';\r\nimport { ComponentTriggersService } from '../../../common/component-triggers.service';\r\nimport { Subscription } from '../../../../../node_modules/rxjs';\r\nimport { AuthorisationService } from '../../../authorisation-service/authorisation.service';\r\nimport { isNullOrUndefined } from 'util';\r\n\r\n@Component({\r\n selector: 'edit-generator-project',\r\n templateUrl: './edit-generator-project.component.html',\r\n styleUrls: ['./edit-generator-project.component.scss'],\r\n})\r\nexport class EditGeneratorProjectComponent implements OnInit, OnDestroy {\r\n public errorMessage = '';\r\n public loading: boolean;\r\n public companyName: string;\r\n public projectName: string;\r\n public isReadOnlyMode: boolean = true;\r\n public isPpaAddendumEnabled: boolean = false;\r\n public enableGeneratorPpaAndAddendumsEventSubscription: Subscription;\r\n public activeTab: string;\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n private commonService: CommonService,\r\n private authorisationService: AuthorisationService,\r\n private componentTriggersService: ComponentTriggersService\r\n ) {}\r\n\r\n public ngOnInit() {\r\n this.route.params.subscribe(\r\n () => {\r\n this.route.queryParams.subscribe(\r\n (queryParams) => {\r\n this.companyName = queryParams.companyName;\r\n this.projectName = queryParams.projectName;\r\n this.activeTab = isNullOrUndefined(\r\n queryParams.activeTab\r\n )\r\n ? 'details'\r\n : queryParams.activeTab;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n this.isReadOnlyMode = this.authorisationService.isGeneratorsAndConsumersReadOnly();\r\n\r\n this.enableGeneratorPpaAndAddendumsEventSubscription = this.componentTriggersService.triggerEnableGeneratorPpaAndAddendums.subscribe(\r\n () => {\r\n this.isPpaAddendumEnabled = true;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n }\r\n\r\n public ngOnDestroy() {\r\n this.enableGeneratorPpaAndAddendumsEventSubscription.unsubscribe();\r\n }\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { ActivatedRoute, Params } from '@angular/router';\r\nimport { CommonService } from '../../../common/common-service';\r\nimport { AuthorisationService } from '../../../authorisation-service/authorisation.service';\r\n\r\n@Component({\r\n selector: 'edit-consumer-company-premises',\r\n templateUrl: './edit-consumer-company-premises.component.html',\r\n styleUrls: ['./edit-consumer-company-premises.component.scss'],\r\n})\r\nexport class EditConsumerCompanyPremisesComponent implements OnInit {\r\n public consumerCompanyPremisesId: number;\r\n public isInApplicationMode: boolean = false;\r\n public loading = false;\r\n public activeTab: string;\r\n public companyName: string;\r\n public consumerCompanyId: number;\r\n public errorMessage = '';\r\n public isReadOnlyMode = true;\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n private authorisationService: AuthorisationService,\r\n public commonService: CommonService\r\n ) {}\r\n\r\n public ngOnInit() {\r\n this.loading = true;\r\n this.isInApplicationMode = this.commonService.isConsumerApplicationUserLoggedIn();\r\n this.route.params.subscribe(\r\n (routeParams: Params) => {\r\n this.consumerCompanyPremisesId =\r\n routeParams.consumerCompanyPremisesId;\r\n this.route.queryParams.subscribe(\r\n (queryParams) => {\r\n this.activeTab = queryParams.tab;\r\n this.companyName = queryParams.companyName;\r\n this.consumerCompanyId = queryParams.consumerCompanyId;\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n this.isReadOnlyMode = this.authorisationService.isGeneratorsAndConsumersReadOnly();\r\n }\r\n}\r\n","import { debounceTime } from 'rxjs/operators';\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { AllocationRunService } from '../../allocation-run.service';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { Page } from '../../../../../model/page.model';\r\nimport { FormControl, FormGroup } from '@angular/forms';\r\nimport { Subscription } from 'rxjs';\r\nimport { CommonService } from '../../../../../common/common-service';\r\n\r\n@Component({\r\n selector: 'recs-consumer-list',\r\n templateUrl: './recs-consumer-list.component.html',\r\n styleUrls: [\r\n '../../../../form.styles.scss',\r\n './recs-consumer-list.component.scss',\r\n ],\r\n})\r\nexport class RecsConsumerListComponent implements OnInit {\r\n public allocationRunId: number;\r\n public searchGroup: FormGroup;\r\n public searchControl: FormControl;\r\n public columnHeaders: any;\r\n public page: Page;\r\n public loading = false;\r\n public list: any;\r\n public startDate: Date;\r\n public runDate: Date;\r\n public errorMessage = '';\r\n\r\n private sortProp = {};\r\n private routeParamsSubscription: Subscription;\r\n private queryParamsSubscription: Subscription;\r\n\r\n constructor(\r\n private allocationRunService: AllocationRunService,\r\n private route: ActivatedRoute,\r\n public commonService: CommonService\r\n ) {\r\n this.columnHeaders = [\r\n { name: 'premisesName' },\r\n { name: 'recs' },\r\n { name: 'carryOver' },\r\n ];\r\n\r\n this.page = new Page();\r\n\r\n this.searchControl = new FormControl('');\r\n this.searchGroup = new FormGroup({\r\n search: this.searchControl,\r\n });\r\n }\r\n\r\n public ngOnInit() {\r\n this.loading = true;\r\n\r\n this.queryParamsSubscription = this.route.queryParams.subscribe(\r\n (params) => {\r\n this.startDate = params.startDate;\r\n this.runDate = params.runDate;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n\r\n this.routeParamsSubscription = this.route.params.subscribe(\r\n (params) => {\r\n this.allocationRunId = params.allocationRunId;\r\n\r\n this.searchControl.valueChanges\r\n .pipe(debounceTime(300))\r\n .subscribe(\r\n () => {\r\n this.changePage({ offset: 0 });\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n\r\n this.changePage({ offset: this.page.offset });\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n\r\n public changePage(pageInfo: any): void {\r\n const searchString = this.searchGroup.value.search;\r\n this.page.offset = pageInfo.offset * this.page.size;\r\n\r\n this.allocationRunService\r\n .getRecsPage(\r\n this.allocationRunId,\r\n searchString,\r\n this.page,\r\n this.sortProp\r\n )\r\n .subscribe(\r\n (page) => {\r\n this.loading = false;\r\n this.page.totalPages = Math.ceil(\r\n page.totalItems / page.size\r\n );\r\n this.page.totalElements = page.totalItems;\r\n this.list = page.items;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n\r\n public sortColumn(event: any): void {\r\n this.sortProp = {\r\n direction: event.sorts[0].dir,\r\n property: event.sorts[0].prop,\r\n };\r\n this.changePage({ offset: 0 });\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { FormGroup, FormControl, Validators } from '@angular/forms';\r\nimport { GeneratorPpaScheduleService } from './generator-ppa-schedule.service';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { CommonService } from '../../../../../common/common-service';\r\nimport { saveAs as importedSaveAs } from 'file-saver';\r\nimport { GeneratorDocumentGeneration } from '../../../../../model/generator/generator-document-generation.model';\r\nimport { EntityLookup } from '../../../../../model/entity-lookup.model';\r\nimport { GeneratorProjectFacilityTariffRatesService } from '../../../../generator-project-facility/generator-project-facility-tariff-rates/generator-project-facility-tariff-rates.service';\r\nimport { ComponentTriggersService } from '../../../../../common/component-triggers.service';\r\n\r\n@Component({\r\n selector: 'app-generator-ppa-schedule',\r\n templateUrl: './generator-ppa-schedule.component.html',\r\n styleUrls: ['../../../../form.styles.scss'],\r\n})\r\nexport class GeneratorPpaScheduleComponent implements OnInit {\r\n public signedPpaUploaded: boolean = false;\r\n public loading: boolean;\r\n public errorMessage = '';\r\n private facilityId: number;\r\n private documentFieldsForm: FormGroup;\r\n private ppaSchedule: GeneratorDocumentGeneration;\r\n private isDownloadingPreview: boolean = false;\r\n private nonTouTariffTypeId: number;\r\n private escalationTypes: EntityLookup;\r\n private tariffTypes: any[];\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n private router: Router,\r\n private commonService: CommonService,\r\n private generatorProjectFacilityTariffRatesService: GeneratorProjectFacilityTariffRatesService,\r\n private generatorPpaScheduleService: GeneratorPpaScheduleService,\r\n private componentTriggersService: ComponentTriggersService\r\n ) {}\r\n\r\n public ngOnInit() {\r\n this.loading = true;\r\n this.route.params.subscribe(\r\n (params) => {\r\n if (params['facilityId']) {\r\n this.facilityId = params['facilityId'];\r\n }\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n\r\n // Get Escalation Type Enity Lookups\r\n this.commonService\r\n .getEntityLookups(['GeneratorEscalationType'])\r\n .subscribe((entityLookups) => {\r\n this.escalationTypes =\r\n entityLookups.entityLookupResultList[\r\n 'generatorEscalationType'\r\n ];\r\n this.generatorProjectFacilityTariffRatesService\r\n .getGeneratorTariffRateTariffTypes()\r\n .subscribe(\r\n (types: any[]) => {\r\n this.tariffTypes = types;\r\n\r\n // Get non Tariff Type Lookup Id\r\n this.tariffTypes.forEach((t: any) => {\r\n if (t.value.indexOf('Non') >= 0) {\r\n this.nonTouTariffTypeId = t.entityLookupId;\r\n }\r\n });\r\n\r\n this.generatorPpaScheduleService\r\n .getGeneratorFacilityPpaSchedule(\r\n this.facilityId\r\n )\r\n .subscribe(\r\n (\r\n ppaSchedulePage: GeneratorDocumentGeneration\r\n ) => {\r\n this.ppaSchedule = ppaSchedulePage;\r\n this.ppaSchedule.evaluationField.isOfferAcceptedPpaSchedule = !!this\r\n .ppaSchedule.evaluationField\r\n .signedPpaSchedule;\r\n this.signedPpaUploaded = this.ppaSchedule.evaluationField.isOfferAcceptedPpaSchedule;\r\n this.initDocumentFieldsForm(\r\n this.ppaSchedule\r\n );\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n });\r\n }\r\n\r\n public initDocumentFieldsForm(ppaSchedule: GeneratorDocumentGeneration) {\r\n this.documentFieldsForm = new FormGroup({\r\n isDocumentSentPpaSchedule: new FormControl(\r\n isNullOrUndefined(ppaSchedule)\r\n ? null\r\n : ppaSchedule.evaluationField.isDocumentSentPpaSchedule\r\n ),\r\n isOfferAcceptedPpaSchedule: new FormControl(\r\n isNullOrUndefined(ppaSchedule)\r\n ? null\r\n : ppaSchedule.evaluationField.isOfferAcceptedPpaSchedule\r\n ),\r\n signedPpaSchedule: new FormControl(\r\n isNullOrUndefined(ppaSchedule)\r\n ? null\r\n : ppaSchedule.evaluationField.signedPpaSchedule\r\n ),\r\n increasedDate: new FormControl(\r\n isNullOrUndefined(ppaSchedule)\r\n ? null\r\n : ppaSchedule.evaluationField.increasedDate,\r\n Validators.required\r\n ),\r\n generatorProjectFacilityId: new FormControl(\r\n isNullOrUndefined(ppaSchedule)\r\n ? null\r\n : ppaSchedule.evaluationField.generatorProjectFacilityId\r\n ),\r\n ppaSignedDate: new FormControl(\r\n isNullOrUndefined(ppaSchedule)\r\n ? null\r\n : ppaSchedule.evaluationField.ppaSignedDate\r\n ),\r\n\r\n generatorFacilityEvaluationFieldId: new FormControl(\r\n isNullOrUndefined(ppaSchedule)\r\n ? null\r\n : ppaSchedule.evaluationField\r\n .generatorFacilityEvaluationFieldId\r\n ),\r\n documentTemplateId: new FormControl(\r\n isNullOrUndefined(ppaSchedule)\r\n ? null\r\n : ppaSchedule.evaluationField.documentTemplateId\r\n ),\r\n documentTemplateName: new FormControl(\r\n isNullOrUndefined(ppaSchedule)\r\n ? null\r\n : ppaSchedule.evaluationField.documentTemplateName\r\n ),\r\n tariffTypeLookupId: new FormControl(\r\n isNullOrUndefined(ppaSchedule)\r\n ? null\r\n : ppaSchedule.evaluationField.tariffTypeLookupId,\r\n Validators.required\r\n ),\r\n\r\n highDemandRate: new FormControl({\r\n value: isNullOrUndefined(ppaSchedule)\r\n ? null\r\n : ppaSchedule.highDemandRate,\r\n disabled: true,\r\n }),\r\n lowDemandRate: new FormControl({\r\n value: isNullOrUndefined(ppaSchedule)\r\n ? null\r\n : ppaSchedule.lowDemandRate,\r\n disabled: true,\r\n }),\r\n distributorHighDemandRate: new FormControl({\r\n value: isNullOrUndefined(ppaSchedule)\r\n ? null\r\n : ppaSchedule.distributorHighDemandRate,\r\n disabled: true,\r\n }),\r\n distributorLowDemandRate: new FormControl({\r\n value: isNullOrUndefined(ppaSchedule)\r\n ? null\r\n : ppaSchedule.distributorLowDemandRate,\r\n disabled: true,\r\n }),\r\n\r\n generatorEscalationTypeLookupId: new FormControl(\r\n isNullOrUndefined(ppaSchedule)\r\n ? null\r\n : ppaSchedule.evaluationField\r\n .generatorEscalationTypeLookupId,\r\n Validators.required\r\n ),\r\n });\r\n }\r\n\r\n public signedPpaScheduleDocumentUpload(output: any): void {\r\n if (\r\n output.value &&\r\n output.listenerId === 'isOfferAcceptedPpaSchedule'\r\n ) {\r\n this.documentFieldsForm.controls.signedPpaSchedule.setValue(\r\n output.value\r\n );\r\n this.signedPpaUploaded = true;\r\n }\r\n }\r\n\r\n public onGenerateDocumentSubmit() {\r\n this.errorMessage = '';\r\n this.commonService.validateAllFormFields(this.documentFieldsForm);\r\n if (this.documentFieldsForm.valid) {\r\n this.loading = true;\r\n this.generatorPpaScheduleService\r\n .generatorFacilityPpaSchedule(this.documentFieldsForm.value)\r\n .subscribe(\r\n (page: GeneratorDocumentGeneration) => {\r\n this.ppaSchedule = page;\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n }\r\n\r\n public onOfferCompleteSubmit() {\r\n this.errorMessage = '';\r\n this.loading = true;\r\n this.generatorPpaScheduleService\r\n .offerCompletePpaSchedule(this.documentFieldsForm.value)\r\n .subscribe(\r\n (page: GeneratorDocumentGeneration) => {\r\n this.ppaSchedule = page;\r\n this.loading = false;\r\n this.router.navigate(['generators', 'evaluation']);\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n\r\n public onPreviewDocumentSubmit() {\r\n this.errorMessage = '';\r\n this.commonService.validateAllFormFields(this.documentFieldsForm);\r\n if (this.documentFieldsForm.valid) {\r\n this.isDownloadingPreview = true;\r\n this.generatorPpaScheduleService\r\n .getGeneratorFacilityPpaSchedulePreview(\r\n this.documentFieldsForm.value\r\n )\r\n .subscribe(\r\n (blob) => {\r\n importedSaveAs(\r\n blob,\r\n this.ppaSchedule.evaluationField\r\n .documentTemplateName + '.docx'\r\n );\r\n this.isDownloadingPreview = false;\r\n },\r\n () => {\r\n this.errorMessage = this.commonService.handleDocumentErrorMessage(\r\n 'PPA schedule'\r\n );\r\n this.isDownloadingPreview = false;\r\n }\r\n );\r\n }\r\n }\r\n\r\n public onGoToLanding() {\r\n this.router.navigate(['generators', 'evaluation']);\r\n }\r\n\r\n public onTariffTypeChange() {\r\n const isNonTou =\r\n this.documentFieldsForm.controls.tariffTypeLookupId.value ===\r\n this.nonTouTariffTypeId;\r\n this.componentTriggersService.triggerGeneratorProjectFacilityTariffRatesComponent.next(\r\n isNonTou\r\n );\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { ApplicationUser } from '../../../model/application/application-user.model';\r\n\r\n@Injectable()\r\nexport class ConsumerApplicationService {\r\n constructor(private httpClient: HttpClient) {}\r\n\r\n public createNewConsumerApplication(\r\n consumerApplicant: ApplicationUser\r\n ): Observable {\r\n return this.httpClient.post(\r\n API_URL + 'consumerApplication/createNewConsumerApplication',\r\n consumerApplicant\r\n );\r\n }\r\n\r\n public getConsumerApplication() {\r\n return this.httpClient.get(\r\n API_URL + 'consumerApplication/getConsumerApplicationForUser'\r\n );\r\n }\r\n\r\n public linkConsumerCompanyToApplicationUser(consumerCompanyId: number) {\r\n return this.httpClient.post(\r\n API_URL +\r\n 'consumerApplication/linkConsumerCompanyToApplicationUser?consumerCompanyId=' +\r\n consumerCompanyId,\r\n null\r\n );\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { isNullOrUndefined } from 'util';\r\n\r\nimport { AuthenticationService } from '../../authentication/service/authentication.service';\r\nimport { GeneratorApplicationService } from './generator-application/generator-application.service';\r\nimport { ConsumerApplicationService } from './consumer-application/consumer-application.service';\r\nimport { CommonService } from '../../common/common-service';\r\nimport { Router } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'new-application',\r\n templateUrl: './new-application.component.html',\r\n styleUrls: ['./new-application.component.scss'],\r\n})\r\nexport class NewApplicationComponent implements OnInit {\r\n public applicationForm: FormGroup;\r\n public creatingApplication = false;\r\n public verificationEmailSent = false;\r\n public errorMessage = '';\r\n public successMessage = '';\r\n\r\n constructor(\r\n private generatorApplicationService: GeneratorApplicationService,\r\n private authService: AuthenticationService,\r\n private consumerApplicationService: ConsumerApplicationService,\r\n public commonService: CommonService,\r\n public router: Router\r\n ) {\r\n this.applicationForm = new FormGroup({\r\n firstName: new FormControl('', [\r\n Validators.required,\r\n Validators.maxLength(50),\r\n ]),\r\n lastName: new FormControl('', [\r\n Validators.required,\r\n Validators.maxLength(50),\r\n ]),\r\n email: new FormControl('', [\r\n Validators.required,\r\n Validators.maxLength(100),\r\n Validators.email,\r\n ]),\r\n emailConfirmation: new FormControl('', [\r\n Validators.required,\r\n Validators.maxLength(100),\r\n Validators.email,\r\n ]),\r\n password: new FormControl('', [\r\n Validators.required,\r\n Validators.minLength(6),\r\n ]),\r\n passwordConfirmation: new FormControl('', [\r\n Validators.required,\r\n Validators.minLength(6),\r\n ]),\r\n applicationUserType: new FormControl('', Validators.required),\r\n });\r\n }\r\n\r\n public ngOnInit(): void {\r\n this.errorMessage = '';\r\n this.authService.logout(false);\r\n }\r\n\r\n public onSubmit(): void {\r\n this.errorMessage = '';\r\n if (this.applicationForm.valid) {\r\n if (!this.emailMatch()) {\r\n this.errorMessage = 'Emails do not match ';\r\n } else if (!this.passwordMatch()) {\r\n this.errorMessage = 'Passwords do not match';\r\n } else {\r\n this.sendApplication();\r\n }\r\n } else {\r\n this.errorMessage = 'Please complete form fields';\r\n }\r\n }\r\n\r\n public onCancel() {\r\n this.router.navigate(['/']);\r\n }\r\n\r\n private sendApplication(): void {\r\n if (\r\n this.applicationForm.get('applicationUserType').value ===\r\n 'generator'\r\n ) {\r\n this.creatingApplication = true;\r\n this.generatorApplicationService\r\n .registerNewGeneratorApplicant(this.applicationForm.value)\r\n .subscribe(\r\n () => {\r\n this.verificationEmailSent = true;\r\n this.successMessage =\r\n 'Verification Email was sent to ' +\r\n this.applicationForm.controls.email.value;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.creatingApplication = false;\r\n }\r\n );\r\n } else if (\r\n this.applicationForm.get('applicationUserType').value === 'consumer'\r\n ) {\r\n this.creatingApplication = true;\r\n this.consumerApplicationService\r\n .createNewConsumerApplication(this.applicationForm.value)\r\n .subscribe(\r\n () => {\r\n this.verificationEmailSent = true;\r\n this.successMessage =\r\n 'Verification Email was sent to ' +\r\n this.applicationForm.controls.email.value;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.creatingApplication = false;\r\n }\r\n );\r\n }\r\n }\r\n\r\n private emailMatch(): boolean {\r\n return (\r\n this.applicationForm.controls.email.value ===\r\n this.applicationForm.controls.emailConfirmation.value\r\n );\r\n }\r\n\r\n private passwordMatch(): boolean {\r\n return (\r\n this.applicationForm.controls.password.value ===\r\n this.applicationForm.controls.passwordConfirmation.value\r\n );\r\n }\r\n}\r\n","import { GeneratorApplicationService } from '../generator-application.service';\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { ApplicationUserEmailVerification } from '../../../../model/application/application-user-email-verification.model';\r\nimport { CommonService } from '../../../../common/common-service';\r\n\r\n@Component({\r\n selector: 'application-user-email-verification',\r\n templateUrl: './application-user-email-verification.component.html',\r\n})\r\nexport class ApplicationUserEmailVerificationComponent implements OnInit {\r\n public errorMessage = '';\r\n public verification = '';\r\n\r\n constructor(\r\n private generatorApplicationService: GeneratorApplicationService,\r\n private route: ActivatedRoute,\r\n public commonService: CommonService\r\n ) {}\r\n\r\n public ngOnInit() {\r\n this.commonService.clearOutTokens();\r\n this.route.queryParams.subscribe(\r\n (params) => {\r\n const verificationToken = new ApplicationUserEmailVerification(\r\n params['Id'],\r\n params['token']\r\n );\r\n this.generatorApplicationService\r\n .verifyNewApplicant(verificationToken)\r\n .subscribe(\r\n () => {\r\n this.verification = 'Succeeded';\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.verification = 'Failed';\r\n }\r\n );\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.verification = 'Failed';\r\n }\r\n );\r\n }\r\n}\r\n","export class ApplicationUserEmailVerification {\r\n public id: string;\r\n public token: string;\r\n\r\n constructor(id: string, token: string) {\r\n this.id = id;\r\n this.token = token;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpParams } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Injectable()\r\nexport class ContactService {\r\n constructor(public httpClient: HttpClient) {}\r\n\r\n public getAttribute(attributeName: string): Observable {\r\n return this.httpClient.get(\r\n API_URL + 'attribute/GetAttribute?attributeName=' + attributeName\r\n );\r\n }\r\n\r\n public deleteContact(contactId: number): Observable {\r\n return this.httpClient.delete(\r\n API_URL + 'Contact/DeleteContact?contactId=' + contactId\r\n );\r\n }\r\n\r\n public addContact(contact: any): Observable {\r\n return this.httpClient.post(API_URL + 'Contact/AddContact', contact);\r\n }\r\n\r\n public updateContact(contact: any): Observable {\r\n return this.httpClient.post(API_URL + 'Contact/UpdateContact', contact);\r\n }\r\n\r\n public getContactsByCompanyId(companyId: number): Observable {\r\n return this.httpClient.get(API_URL + 'Contact/GetContactsByCompanyId', {\r\n params: new HttpParams().set('companyId', String(companyId)),\r\n });\r\n }\r\n\r\n public getContactsByDistributorId(distributorId: number): Observable {\r\n return this.httpClient.get(\r\n API_URL + 'Contact/GetContactsByDistributorId',\r\n {\r\n params: new HttpParams().set(\r\n 'distributorId',\r\n String(distributorId)\r\n ),\r\n }\r\n );\r\n }\r\n}\r\n","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport {\r\n FormArray,\r\n FormBuilder,\r\n FormControl,\r\n FormGroup,\r\n Validators,\r\n} from '@angular/forms';\r\nimport { Router } from '@angular/router';\r\nimport { Subscription } from 'rxjs';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { CustomValidators } from 'ng4-validators';\r\nimport { GeneratorApplication } from '../../../../model/application/generator-application/generator-application.model';\r\nimport { EntityLookup } from '../../../../model/entity-lookup.model';\r\nimport { GeneratorApplicationService } from '../generator-application.service';\r\nimport { CommonService } from '../../../../common/common-service';\r\nimport { ContactService } from '../../../contact/contact.service';\r\nimport { ComponentTriggersService } from '../../../../common/component-triggers.service';\r\nimport { Attribute } from '../../../../model/attribute.model';\r\nimport { GeneratorCompany } from '../../../../model/generator-company.model';\r\nimport { Contact } from '../../../../model/contact.model';\r\nimport { ToastrService } from 'ngx-toastr';\r\n\r\n@Component({\r\n selector: 'holding-company-details',\r\n templateUrl: './company-details.component.html',\r\n styleUrls: [\r\n '../../../form.styles.scss',\r\n './company-details.component.scss',\r\n ],\r\n})\r\nexport class CompanyDetailsComponent implements OnInit, OnDestroy {\r\n public holdingCompanyForm: FormGroup;\r\n public directorContactForm: FormGroup;\r\n public addressForm: FormGroup;\r\n public generatorHoldingCompanyId: number;\r\n public isDirectorContactAttributeId: number;\r\n public errorMessage = '';\r\n public saving = false;\r\n public loading: boolean;\r\n public applicationReferenceNumber: string;\r\n public certificateDocumentBasePath: string;\r\n public generatorApplication: GeneratorApplication;\r\n public generatorApplicationMetadata: any;\r\n public provinces: EntityLookup[];\r\n public companyTypes: EntityLookup[];\r\n private queryParamsSubscription: Subscription;\r\n private autoSaveInterval: any;\r\n\r\n constructor(\r\n private generatorApplicationService: GeneratorApplicationService,\r\n private formBuilder: FormBuilder,\r\n private router: Router,\r\n public commonService: CommonService,\r\n private contactService: ContactService,\r\n private componentTriggerService: ComponentTriggersService,\r\n protected toastr: ToastrService\r\n ) {\r\n this.directorContactForm = new FormGroup({\r\n contactId: new FormControl(null),\r\n firstName: new FormControl('', [\r\n Validators.required,\r\n Validators.maxLength(50),\r\n ]),\r\n lastName: new FormControl('', [\r\n Validators.required,\r\n Validators.maxLength(50),\r\n ]),\r\n identityNumber: new FormControl('', [\r\n Validators.required,\r\n Validators.maxLength(13),\r\n Validators.minLength(13),\r\n CustomValidators.digits,\r\n ]),\r\n position: new FormControl('', [\r\n Validators.required,\r\n Validators.maxLength(30),\r\n ]),\r\n cellNumber: new FormControl('', [\r\n Validators.required,\r\n Validators.minLength(10),\r\n Validators.maxLength(20),\r\n CustomValidators.digits,\r\n ]),\r\n landLineNumber: new FormControl('', [\r\n Validators.required,\r\n Validators.minLength(10),\r\n Validators.maxLength(20),\r\n CustomValidators.digits,\r\n ]),\r\n email: new FormControl('', [\r\n Validators.required,\r\n Validators.email,\r\n Validators.maxLength(100),\r\n ]),\r\n });\r\n\r\n this.addressForm = new FormGroup({\r\n addressId: new FormControl(null),\r\n addressLine1: new FormControl('', [\r\n Validators.required,\r\n Validators.maxLength(100),\r\n ]),\r\n addressLine2: new FormControl('', [\r\n Validators.required,\r\n Validators.maxLength(100),\r\n ]),\r\n addressLine3: new FormControl('', [Validators.maxLength(100)]),\r\n province: new FormControl(null, [Validators.required]),\r\n city: new FormControl('', [\r\n Validators.required,\r\n Validators.maxLength(50),\r\n ]),\r\n postalCode: new FormControl('', [\r\n Validators.required,\r\n Validators.maxLength(10),\r\n CustomValidators.digits,\r\n ]),\r\n isRural: new FormControl(false),\r\n });\r\n\r\n this.holdingCompanyForm = new FormGroup({\r\n companyId: new FormControl(null),\r\n companyName: new FormControl('', [\r\n Validators.required,\r\n Validators.maxLength(50),\r\n ]),\r\n companyType: new FormControl(null, [Validators.required]),\r\n registrationNumber: new FormControl('', [\r\n Validators.required,\r\n Validators.maxLength(14),\r\n this.commonService.companyRegistrationNumberValidator.bind(\r\n this\r\n ),\r\n ]),\r\n telephoneNumber: new FormControl('', [\r\n Validators.required,\r\n Validators.minLength(10),\r\n Validators.maxLength(20),\r\n CustomValidators.digits,\r\n ]),\r\n vatNumber: new FormControl('', [Validators.minLength(10)]),\r\n directorContact: this.directorContactForm,\r\n companyGeneratorExperience: new FormControl(null),\r\n taxClearanceCertificate: new FormControl(null),\r\n bbbeeCertificate: new FormControl(null),\r\n additionalContacts: this.formBuilder.array([]),\r\n address: this.addressForm,\r\n });\r\n }\r\n\r\n public ngOnInit(): void {\r\n this.loading = true;\r\n this.generatorApplicationService\r\n .getGeneratorApplication('Holding Company')\r\n .subscribe(\r\n (generatorApplication: GeneratorApplication) => {\r\n if (\r\n generatorApplication.generatorApplicationStatus\r\n .value !== 'New Application'\r\n ) {\r\n const navigateTo = this.generatorApplicationService.navigateByStatus(\r\n generatorApplication.generatorApplicationStatus\r\n .value\r\n );\r\n this.router.navigate([navigateTo]);\r\n } else {\r\n this.generatorApplication = generatorApplication;\r\n this.certificateDocumentBasePath =\r\n 'GeneratorApplication/' +\r\n this.generatorApplication.generatorApplicationId;\r\n this.generatorApplicationMetadata = {\r\n MetadataTypeLookupName: 'GeneratorApplicationId',\r\n MetadataValue: this.generatorApplication\r\n .generatorApplicationId,\r\n };\r\n this.applicationReferenceNumber =\r\n generatorApplication.applicationRefNumber;\r\n this.contactService\r\n .getAttribute('IsDirectorContact')\r\n .subscribe(\r\n (attribute: Attribute) => {\r\n this.isDirectorContactAttributeId =\r\n attribute.attributeId;\r\n this.commonService\r\n .getEntityLookups([\r\n 'Province',\r\n 'CompanyType',\r\n ])\r\n .subscribe(\r\n (response) => {\r\n this.provinces =\r\n response.entityLookupResultList[\r\n 'province'\r\n ];\r\n this.companyTypes =\r\n response.entityLookupResultList[\r\n 'companyType'\r\n ];\r\n this.initHoldingCompany(\r\n generatorApplication.generatorCompany\r\n );\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n // Set up auto-save every 5 minutes (300000 ms)\r\n this.autoSaveInterval = setInterval(() => {\r\n this.saveProgress();\r\n }, 300000);\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n if (this.autoSaveInterval) {\r\n clearInterval(this.autoSaveInterval);\r\n }\r\n if (!isNullOrUndefined(this.queryParamsSubscription)) {\r\n this.queryParamsSubscription.unsubscribe();\r\n }\r\n }\r\n\r\n public initContact(): FormGroup {\r\n return this.formBuilder.group({\r\n contactId: new FormControl(null),\r\n firstName: ['', [Validators.required, Validators.maxLength(50)]],\r\n lastName: ['', [Validators.required, Validators.maxLength(50)]],\r\n identityNumber: [\r\n '',\r\n [\r\n Validators.minLength(13),\r\n Validators.maxLength(13),\r\n CustomValidators.digits,\r\n ],\r\n ],\r\n position: ['', [Validators.required, Validators.maxLength(30)]],\r\n cellNumber: [\r\n '',\r\n [\r\n Validators.required,\r\n Validators.minLength(10),\r\n Validators.maxLength(20),\r\n CustomValidators.digits,\r\n ],\r\n ],\r\n landLineNumber: [\r\n '',\r\n [\r\n Validators.required,\r\n Validators.minLength(10),\r\n Validators.maxLength(20),\r\n CustomValidators.digits,\r\n ],\r\n ],\r\n email: [\r\n '',\r\n [\r\n Validators.required,\r\n Validators.email,\r\n Validators.maxLength(100),\r\n ],\r\n ],\r\n });\r\n }\r\n\r\n public documentUploadForCompany(output: any) {\r\n const control = this.holdingCompanyForm.get(output.listenerId);\r\n control.patchValue(output.value);\r\n }\r\n\r\n public addContactDetails(): void {\r\n const control = this.holdingCompanyForm.controls\r\n .additionalContacts as FormArray;\r\n control.push(this.initContact());\r\n }\r\n\r\n public removeContactDetails(index: number): void {\r\n if (confirm('Are you sure you want to delete this contact?')) {\r\n const control = this.holdingCompanyForm.controls\r\n .additionalContacts as FormArray;\r\n control.removeAt(index);\r\n }\r\n }\r\n\r\n public onSubmit(): void {\r\n this.errorMessage = '';\r\n this.commonService.validateAllFormFields(this.holdingCompanyForm);\r\n this.componentTriggerService.triggerValidationMessages.next();\r\n if (this.holdingCompanyForm.valid) {\r\n this.saving = true;\r\n this.generatorApplicationService\r\n .registerNewHoldingCompany(\r\n this.holdingCompanyForm.value,\r\n this.isDirectorContactAttributeId\r\n )\r\n .subscribe(\r\n () => {\r\n this.saving = false;\r\n this.router.navigate([\r\n 'generators',\r\n 'application',\r\n 'spv-details',\r\n ]);\r\n },\r\n (error) => {\r\n this.saving = false;\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n }\r\n }\r\n\r\n public saveProgress(): void {\r\n this.errorMessage = '';\r\n this.saving = true;\r\n this.generatorApplicationService\r\n .saveProgressHoldingCompany(\r\n this.holdingCompanyForm.value,\r\n this.generatorApplication.generatorApplicationId,\r\n this.isDirectorContactAttributeId\r\n )\r\n .subscribe(\r\n () => {\r\n this.saving = false;\r\n this.toastr.success('Progress Saved!');\r\n },\r\n (error) => {\r\n this.saving = false;\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n }\r\n\r\n public showSaveProgressButton(): boolean {\r\n if (this.generatorApplication) {\r\n if (\r\n this.generatorApplication.generatorApplicationStatus.value !==\r\n 'New Application' ||\r\n this.saving\r\n ) {\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n }\r\n }\r\n\r\n private initHoldingCompany(generatorHoldingCompany: GeneratorCompany) {\r\n this.generatorHoldingCompanyId = generatorHoldingCompany\r\n ? generatorHoldingCompany.generatorCompanyId\r\n : null;\r\n if (generatorHoldingCompany) {\r\n this.holdingCompanyForm.controls.companyId.setValue(\r\n generatorHoldingCompany.generatorCompanyId\r\n );\r\n this.holdingCompanyForm.controls.companyName.setValue(\r\n generatorHoldingCompany.company.companyName\r\n );\r\n this.holdingCompanyForm.controls.companyType.setValue(\r\n generatorHoldingCompany.company.companyTypeLookupId\r\n );\r\n this.holdingCompanyForm.controls.registrationNumber.setValue(\r\n generatorHoldingCompany.company.registrationNumber\r\n );\r\n this.holdingCompanyForm.controls.vatNumber.setValue(\r\n generatorHoldingCompany.company.vatNumber\r\n );\r\n this.holdingCompanyForm.controls.telephoneNumber.setValue(\r\n generatorHoldingCompany.company.telephoneNumber\r\n );\r\n this.holdingCompanyForm.controls.companyGeneratorExperience.setValue(\r\n isNullOrUndefined(\r\n generatorHoldingCompany.generatorExperienceProfile\r\n )\r\n ? null\r\n : generatorHoldingCompany.generatorExperienceProfile\r\n );\r\n this.holdingCompanyForm.controls.taxClearanceCertificate.setValue(\r\n isNullOrUndefined(\r\n generatorHoldingCompany.taxClearanceCertificate\r\n )\r\n ? null\r\n : generatorHoldingCompany.taxClearanceCertificate\r\n );\r\n this.holdingCompanyForm.controls.bbbeeCertificate.setValue(\r\n isNullOrUndefined(generatorHoldingCompany.bbbeeCertificate)\r\n ? null\r\n : generatorHoldingCompany.bbbeeCertificate\r\n );\r\n\r\n const directorContact: Contact = generatorHoldingCompany.company.additionalContacts.find(\r\n (contact) =>\r\n !isNullOrUndefined(\r\n contact.attributes.find(\r\n (attribute) =>\r\n attribute.attributeName === 'IsDirectorContact'\r\n )\r\n )\r\n );\r\n this.directorContactForm.controls.contactId.setValue(\r\n directorContact.contactId\r\n );\r\n this.directorContactForm.controls.firstName.setValue(\r\n directorContact.firstName\r\n );\r\n this.directorContactForm.controls.lastName.setValue(\r\n directorContact.lastName\r\n );\r\n this.directorContactForm.controls.identityNumber.setValue(\r\n directorContact.identityNumber\r\n );\r\n this.directorContactForm.controls.position.setValue(\r\n directorContact.position\r\n );\r\n this.directorContactForm.controls.cellNumber.setValue(\r\n directorContact.cellNumber\r\n );\r\n this.directorContactForm.controls.landLineNumber.setValue(\r\n directorContact.landLineNumber\r\n );\r\n this.directorContactForm.controls.email.setValue(\r\n directorContact.email\r\n );\r\n\r\n if (\r\n !isNullOrUndefined(generatorHoldingCompany.company.addresses) &&\r\n generatorHoldingCompany.company.addresses.length > 0\r\n ) {\r\n const address = generatorHoldingCompany.company.addresses[0];\r\n this.addressForm.controls.addressId.setValue(address.addressId);\r\n this.addressForm.controls.addressLine1.setValue(\r\n address.addressLine1\r\n );\r\n this.addressForm.controls.addressLine2.setValue(\r\n address.addressLine2\r\n );\r\n this.addressForm.controls.addressLine3.setValue(\r\n address.addressLine3\r\n );\r\n this.addressForm.controls.city.setValue(address.city);\r\n this.addressForm.controls.postalCode.setValue(\r\n address.postalCode\r\n );\r\n this.addressForm.controls.province.setValue(\r\n address.provinceLookupId\r\n );\r\n this.addressForm.controls.isRural.setValue(address.isRural);\r\n }\r\n\r\n const additionalContacts = new FormArray(\r\n this.populateContacts(\r\n generatorHoldingCompany.company.additionalContacts,\r\n directorContact.contactId\r\n )\r\n );\r\n this.holdingCompanyForm.setControl(\r\n 'additionalContacts',\r\n additionalContacts\r\n );\r\n }\r\n }\r\n\r\n private populateContacts(\r\n additionalContacts: Contact[],\r\n directorContactId: number\r\n ): FormGroup[] {\r\n const additionalContactsFormArray: FormGroup[] = [];\r\n additionalContacts.forEach((contact: Contact) => {\r\n if (contact.contactId !== directorContactId) {\r\n const contactFormGroup = new FormGroup({\r\n contactId: new FormControl(contact.contactId),\r\n firstName: new FormControl(contact.firstName, [\r\n Validators.required,\r\n Validators.maxLength(50),\r\n ]),\r\n lastName: new FormControl(contact.lastName, [\r\n Validators.required,\r\n Validators.maxLength(50),\r\n ]),\r\n identityNumber: new FormControl(contact.identityNumber, [\r\n Validators.minLength(13),\r\n Validators.maxLength(13),\r\n CustomValidators.digits,\r\n ]),\r\n position: new FormControl(contact.position, [\r\n Validators.required,\r\n Validators.maxLength(30),\r\n ]),\r\n cellNumber: new FormControl(contact.cellNumber, [\r\n Validators.required,\r\n Validators.minLength(10),\r\n Validators.maxLength(20),\r\n CustomValidators.digits,\r\n ]),\r\n landLineNumber: new FormControl(contact.landLineNumber, [\r\n Validators.required,\r\n Validators.minLength(10),\r\n Validators.maxLength(20),\r\n CustomValidators.digits,\r\n ]),\r\n email: new FormControl(contact.email, [\r\n Validators.required,\r\n Validators.email,\r\n Validators.maxLength(100),\r\n ]),\r\n });\r\n additionalContactsFormArray.push(contactFormGroup);\r\n }\r\n });\r\n return additionalContactsFormArray;\r\n }\r\n}\r\n","import { Component, ElementRef, Input, ViewChild } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-nda-agreement-template',\r\n templateUrl: './nda-agreement-template.component.html',\r\n styleUrls: ['./nda-agreement-template.component.scss'],\r\n})\r\nexport class NdaAgreementDownloadComponent {\r\n @Input()\r\n public companyName!: string;\r\n @Input()\r\n public companyRegistrationNumber!: string;\r\n @Input()\r\n public address!: string;\r\n @Input()\r\n public contactNumber!: string;\r\n\r\n @ViewChild('el')\r\n public el: ElementRef;\r\n}\r\n","import {\r\n AfterViewChecked,\r\n ChangeDetectorRef,\r\n Component,\r\n OnDestroy,\r\n OnInit,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { GeneratorApplicationService } from '../generator-application.service';\r\nimport {\r\n FormArray,\r\n FormBuilder,\r\n FormControl,\r\n FormGroup,\r\n ValidatorFn,\r\n Validators,\r\n} from '@angular/forms';\r\nimport { Subscription } from 'rxjs';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { CustomValidators } from 'ng4-validators';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\nimport { GeneratorProject } from '../../../../model/generator-project.model';\r\nimport { GeneratorApplication } from '../../../../model/application/generator-application/generator-application.model';\r\nimport { EntityLookup } from '../../../../model/entity-lookup.model';\r\nimport { ComponentTriggersService } from '../../../../common/component-triggers.service';\r\nimport { CommonService } from '../../../../common/common-service';\r\nimport { Contact } from '../../../../model/contact.model';\r\nimport { GeneratorProjectFacility } from '../../../../model/generator-project-facility.model';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { NdaAgreementDownloadComponent } from '../nda-agreement-template/nda-agreement-template.component';\r\nimport * as jsPDF from 'jspdf';\r\nimport * as html2canvas from 'html2canvas';\r\n\r\n@Component({\r\n selector: 'spv-details',\r\n templateUrl: './spv-details.component.html',\r\n styleUrls: ['../../../form.styles.scss', './spv-details.component.scss'],\r\n})\r\nexport class SpvDetailsComponent\r\n implements OnInit, OnDestroy, AfterViewChecked {\r\n public imports: [NdaAgreementDownloadComponent];\r\n @ViewChild(NdaAgreementDownloadComponent)\r\n public ndaAgreementTemplate: NdaAgreementDownloadComponent;\r\n public generatorApplication: GeneratorApplication;\r\n public generatorProjects: GeneratorProject[];\r\n\r\n public eligibleProjectsFound = false;\r\n public errorMessage = '';\r\n public saving = false;\r\n public loading = false;\r\n public ndaDownloading = false;\r\n public applicationSubmitted = false;\r\n public successMessage: SafeHtml;\r\n public successMessageAlertType = 'success';\r\n public projectsWithFacilityGenerationExceed: number[] = [];\r\n public projectsLargerThan1MWWithNoFacilities: number[] = [];\r\n\r\n public projectTypes: EntityLookup[];\r\n public generationCapacities: EntityLookup[];\r\n public distributionAreas: EntityLookup[];\r\n public technologies: EntityLookup[];\r\n public connectionVoltageSizes: EntityLookup[];\r\n public provinces: EntityLookup[];\r\n public companyTypes: EntityLookup[];\r\n public spvProjectForm: FormGroup;\r\n public applicationReferenceNumber: string;\r\n public companyName: string;\r\n public companyRegistrationNumber: string;\r\n public address: string;\r\n public contactNumber?: string;\r\n private parentCompanyId: number;\r\n private microScaleGenCapSingleLookupId: number;\r\n private microScaleGenCapMultiLookupId: number;\r\n private queryParamsSubscription: Subscription;\r\n private autoSaveInterval: any;\r\n\r\n constructor(\r\n private generatorApplicationService: GeneratorApplicationService,\r\n private route: ActivatedRoute,\r\n private formBuilder: FormBuilder,\r\n private router: Router,\r\n private cdRef: ChangeDetectorRef,\r\n private commonService: CommonService,\r\n private sanitizer: DomSanitizer,\r\n private componentTriggerService: ComponentTriggersService,\r\n private toastr: ToastrService\r\n ) {\r\n this.projectTypes = [];\r\n\r\n this.spvProjectForm = new FormGroup({\r\n spvProjects: this.formBuilder.array(\r\n [this.initSpvProject(null)],\r\n Validators.required\r\n ),\r\n });\r\n }\r\n\r\n public ngOnInit(): void {\r\n this.queryParamsSubscription = this.route.params.subscribe(\r\n (params) => {\r\n this.parentCompanyId = params.parentCompanyId;\r\n this.loading = true;\r\n this.generatorApplicationService\r\n .getGeneratorApplication('SPV')\r\n .subscribe(\r\n (generatorApplication: GeneratorApplication) => {\r\n this.generatorApplication = generatorApplication;\r\n this.applicationReferenceNumber =\r\n generatorApplication.applicationRefNumber;\r\n if (\r\n generatorApplication.generatorApplicationStatus\r\n .value !== 'Capture: Holding Company' &&\r\n generatorApplication.generatorApplicationStatus\r\n .value !== 'Application Denied'\r\n ) {\r\n const navigateTo = this.generatorApplicationService.navigateByStatus(\r\n generatorApplication\r\n .generatorApplicationStatus.value\r\n );\r\n this.router.navigate([navigateTo]);\r\n } else {\r\n // Holding company details\r\n for (const spvProject of (this.spvProjectForm\r\n .controls.spvProjects as FormArray)\r\n .controls) {\r\n (spvProject as FormGroup).controls.parentCompanyId.setValue(\r\n this.generatorApplication\r\n .generatorCompany.generatorCompanyId\r\n );\r\n (spvProject as FormGroup).controls.generatorApplicationId.setValue(\r\n generatorApplication.generatorApplicationId\r\n );\r\n }\r\n // generatorApplication.applicationRefNumber;\r\n this.companyRegistrationNumber =\r\n generatorApplication.generatorCompany.company.registrationNumber;\r\n this.companyName =\r\n generatorApplication.generatorCompany.company.companyName;\r\n this.address =\r\n generatorApplication.generatorCompany\r\n .company.addresses === undefined\r\n ? ''\r\n : generatorApplication.generatorCompany\r\n .company.addresses[0]\r\n .addressLine1 +\r\n ', ' +\r\n generatorApplication.generatorCompany\r\n .company.addresses[0]\r\n .addressLine2 +\r\n ', ' +\r\n generatorApplication.generatorCompany\r\n .company.addresses[0]\r\n .addressLine3 +\r\n ', ' +\r\n generatorApplication.generatorCompany\r\n .company.addresses[0].city +\r\n ', ' +\r\n generatorApplication.generatorCompany\r\n .company.addresses[0].postalCode;\r\n this.contactNumber =\r\n generatorApplication.generatorCompany.company.additionalContacts[0].email;\r\n\r\n // Entity Lookups\r\n this.commonService\r\n .getEntityLookups([\r\n 'ProjectType',\r\n 'GenerationCapacity',\r\n 'Technology',\r\n 'ConnectionVoltageSize',\r\n 'Province',\r\n 'Distributor',\r\n 'CompanyType',\r\n ])\r\n .subscribe(\r\n (response) => {\r\n this.projectTypes =\r\n response.entityLookupResultList[\r\n 'projectType'\r\n ];\r\n this.generationCapacities =\r\n response.entityLookupResultList[\r\n 'generationCapacity'\r\n ];\r\n this.technologies =\r\n response.entityLookupResultList[\r\n 'technology'\r\n ];\r\n this.connectionVoltageSizes =\r\n response.entityLookupResultList[\r\n 'connectionVoltageSize'\r\n ];\r\n this.provinces =\r\n response.entityLookupResultList[\r\n 'province'\r\n ];\r\n this.companyTypes =\r\n response.entityLookupResultList[\r\n 'companyType'\r\n ];\r\n this.distributionAreas =\r\n response.entityLookupResultList[\r\n 'distributor'\r\n ];\r\n\r\n this.generationCapacities.forEach(\r\n (genCap) => {\r\n if (\r\n genCap.value ===\r\n 'Generation capacity 100 kW to 1 MW (Microscale - Single Facility)'\r\n ) {\r\n this.microScaleGenCapSingleLookupId =\r\n genCap.entityLookupId;\r\n }\r\n if (\r\n genCap.value ===\r\n 'Generation capacity 100 kW to 1 MW (Microscale - Multiple Facility)'\r\n ) {\r\n this.microScaleGenCapMultiLookupId =\r\n genCap.entityLookupId;\r\n }\r\n }\r\n );\r\n\r\n // Generator project details\r\n this.generatorProjects = isNullOrUndefined(\r\n generatorApplication.generatorProjects\r\n )\r\n ? null\r\n : generatorApplication.generatorProjects;\r\n this.initSpvProjects();\r\n\r\n this.loading = false;\r\n\r\n // Application Status is 'Application Denied' so move onto showing the alert via the onSubmit method\r\n if (\r\n generatorApplication\r\n .generatorApplicationStatus\r\n .value ===\r\n 'Application Denied'\r\n ) {\r\n this.onSubmit(); // 'Application Denied' status means the distribution areas were not covered thus the alert for this should be shown\r\n // i.e. call onSubmit, which will show this alert\r\n }\r\n },\r\n (error) => {\r\n this.loading = false;\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n }\r\n },\r\n (error) => {\r\n this.loading = false;\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n // Set up auto-save every 5 minutes (300000 ms)\r\n this.autoSaveInterval = setInterval(() => {\r\n this.saveProgress();\r\n }, 300000);\r\n }\r\n\r\n public ngAfterViewChecked() {\r\n this.cdRef.detectChanges();\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n if (this.autoSaveInterval) {\r\n clearInterval(this.autoSaveInterval);\r\n }\r\n if (!isNullOrUndefined(this.queryParamsSubscription)) {\r\n this.queryParamsSubscription.unsubscribe();\r\n }\r\n }\r\n\r\n public addSpvProject(): void {\r\n (this.spvProjectForm.controls.spvProjects as FormArray).push(\r\n this.initSpvProject(null)\r\n );\r\n }\r\n\r\n public removeSpvProject(index: number): void {\r\n if (confirm('Are you sure to delete this SPV project?')) {\r\n (this.spvProjectForm.controls.spvProjects as FormArray).removeAt(\r\n index\r\n );\r\n this.validateProjectsFacilityInstalledCapacity();\r\n }\r\n }\r\n\r\n public addFacility(spvProjectIndex: number): void {\r\n const control = (this.spvProjectForm.controls.spvProjects as FormArray)\r\n .at(spvProjectIndex)\r\n .get('facilities') as FormArray;\r\n control.push(this.initFacility(null));\r\n }\r\n\r\n public removeFacility(\r\n spvProjectIndex: number,\r\n facilityIndex: number\r\n ): void {\r\n if (confirm('Are you sure to delete this SPV project facility?')) {\r\n const control = (this.spvProjectForm.controls\r\n .spvProjects as FormArray)\r\n .at(spvProjectIndex)\r\n .get('facilities') as FormArray;\r\n control.removeAt(facilityIndex);\r\n const project = (this.spvProjectForm.controls\r\n .spvProjects as FormArray).at(spvProjectIndex) as FormGroup;\r\n this.validateInstalledCapacity(project, spvProjectIndex);\r\n }\r\n }\r\n\r\n public onSubmit(): void {\r\n this.commonService.validateAllFormFields(this.spvProjectForm);\r\n this.componentTriggerService.triggerValidationMessages.next();\r\n if (\r\n this.spvProjectForm.valid &&\r\n this.validateProjectsFacilityInstalledCapacity() &&\r\n this.validateProjectsLargerThan1MW()\r\n ) {\r\n this.saving = true;\r\n this.generatorApplicationService\r\n .captureSPVProjects(\r\n this.generatorApplication,\r\n this.spvProjectForm.getRawValue()\r\n )\r\n .subscribe(\r\n (response) => {\r\n this.applicationSubmitted = true;\r\n this.saving = false;\r\n\r\n const eligibleProjects =\r\n response['generatorProjectEligibility']['eligible'];\r\n const notEligibleProjects =\r\n response['generatorProjectEligibility'][\r\n 'notEligible'\r\n ];\r\n\r\n let eligibleProjectsString: string = '';\r\n eligibleProjects.forEach(\r\n (project: GeneratorProject) => {\r\n eligibleProjectsString += `
  • ${\r\n project.generatorCompany.company.companyName\r\n }
  • `;\r\n }\r\n );\r\n let notEligibleProjectsString: string = '';\r\n notEligibleProjects.forEach(\r\n (project: GeneratorProject) => {\r\n notEligibleProjectsString += `
  • ${\r\n project.generatorCompany.company.companyName\r\n }
  • `;\r\n }\r\n );\r\n\r\n this.eligibleProjectsFound =\r\n eligibleProjects.length > 0;\r\n this.successMessageAlertType =\r\n eligibleProjects.length > 0\r\n ? notEligibleProjects.length > 0\r\n ? 'warning'\r\n : 'default'\r\n : 'danger';\r\n const eligibleLineBreaks =\r\n eligibleProjects.length > 0 &&\r\n notEligibleProjects.length > 0\r\n ? `

    `\r\n : '';\r\n const eligibleHeading =\r\n eligibleProjects.length > 0\r\n ? 'The following projects are eligible for continuation with phase 2 of the generator application:'\r\n : '';\r\n const nonEligibleHeading =\r\n notEligibleProjects.length > 0\r\n ? 'The following projects are NOT eligible for continuation with phase 2 of the generator application:'\r\n : '';\r\n this.successMessage = this.sanitizer\r\n .bypassSecurityTrustHtml(`\r\n

    Generator application phase 1 complete.


    \r\n
    ${eligibleHeading}\r\n
      ${eligibleProjectsString}
    \r\n ${eligibleLineBreaks}\r\n ${nonEligibleHeading}\r\n
      ${notEligibleProjectsString}
    `);\r\n },\r\n (error) => {\r\n this.saving = false;\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n }\r\n }\r\n\r\n public saveProgress(): void {\r\n this.saving = true;\r\n this.generatorApplicationService\r\n .saveProgressSPV(\r\n this.generatorApplication,\r\n this.spvProjectForm.getRawValue()\r\n )\r\n .subscribe(\r\n () => {\r\n this.saving = false;\r\n this.toastr.success('Progress Saved!');\r\n },\r\n (error) => {\r\n this.saving = false;\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n }\r\n\r\n public showSaveProgressButton(): boolean {\r\n if (this.generatorApplication) {\r\n if (\r\n (this.generatorApplication.generatorApplicationStatus.value !==\r\n 'Capture: Holding Company' &&\r\n this.generatorApplication.generatorApplicationStatus\r\n .value !== 'Application Denied') ||\r\n this.saving ||\r\n this.ndaDownloading\r\n ) {\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n }\r\n }\r\n\r\n public onSameAsHoldingCompany(index: number) {\r\n const spvProjectFormGroup: FormGroup = (this.spvProjectForm.controls\r\n .spvProjects as FormArray).at(index) as FormGroup;\r\n const spvCompanyDetailsFormGroup: FormGroup = spvProjectFormGroup\r\n .controls.spvCompanyDetails as FormGroup;\r\n const spvContactDetailsFormGroup: FormGroup = spvProjectFormGroup\r\n .controls.spvContactPersonDetails as FormGroup;\r\n const checked = spvProjectFormGroup.controls.sameAsHoldingCompany.value;\r\n\r\n if (checked) {\r\n spvCompanyDetailsFormGroup.controls.companyName.setValue(\r\n this.generatorApplication.generatorCompany.company.companyName\r\n );\r\n spvCompanyDetailsFormGroup.controls.companyType.setValue(\r\n this.generatorApplication.generatorCompany.company\r\n .companyTypeLookupId\r\n );\r\n spvCompanyDetailsFormGroup.controls.telephoneNumber.setValue(\r\n this.generatorApplication.generatorCompany.company\r\n .telephoneNumber\r\n );\r\n spvCompanyDetailsFormGroup.controls.registrationNumber.setValue(\r\n this.generatorApplication.generatorCompany.company\r\n .registrationNumber\r\n );\r\n spvCompanyDetailsFormGroup.controls.vatNumber.setValue(\r\n this.generatorApplication.generatorCompany.company.vatNumber\r\n );\r\n spvProjectFormGroup.controls.parentCompanyId.setValue(null);\r\n spvCompanyDetailsFormGroup.disable();\r\n\r\n const directorContact: Contact = this.generatorApplication.generatorCompany.company.additionalContacts.find(\r\n function(contact) {\r\n return !isNullOrUndefined(\r\n contact.attributes.find(function(attribute) {\r\n return (\r\n attribute.attributeName === 'IsDirectorContact'\r\n );\r\n })\r\n );\r\n }\r\n );\r\n spvContactDetailsFormGroup.controls.firstName.setValue(\r\n directorContact.firstName\r\n );\r\n spvContactDetailsFormGroup.controls.lastName.setValue(\r\n directorContact.lastName\r\n );\r\n spvContactDetailsFormGroup.controls.position.setValue(\r\n directorContact.position\r\n );\r\n spvContactDetailsFormGroup.controls.identityNumber.setValue(\r\n directorContact.identityNumber\r\n );\r\n spvContactDetailsFormGroup.controls.cellNumber.setValue(\r\n directorContact.cellNumber\r\n );\r\n spvContactDetailsFormGroup.controls.landLineNumber.setValue(\r\n directorContact.landLineNumber\r\n );\r\n spvContactDetailsFormGroup.controls.email.setValue(\r\n directorContact.email\r\n );\r\n spvContactDetailsFormGroup.disable();\r\n } else {\r\n spvProjectFormGroup.controls.parentCompanyId.setValue(\r\n this.generatorApplication.generatorCompany.company.companyId\r\n );\r\n spvCompanyDetailsFormGroup.reset();\r\n spvCompanyDetailsFormGroup.enable();\r\n spvContactDetailsFormGroup.reset();\r\n spvContactDetailsFormGroup.enable();\r\n }\r\n }\r\n\r\n public onChangeGenerationCapacity(spvProject, projectIndex) {\r\n if (\r\n +spvProject.controls.spvDetails.controls.generationCapacity\r\n .value !== +this.microScaleGenCapMultiLookupId &&\r\n spvProject.controls.facilities.length > 1\r\n ) {\r\n if (\r\n confirm(\r\n 'Only one facility is allowed on projects with generation capacities higher than 1MW, ' +\r\n 'please remove the additional facilities before changing the generation capacity'\r\n )\r\n ) {\r\n spvProject.controls.spvDetails.controls.generationCapacity.setValue(\r\n this.microScaleGenCapMultiLookupId\r\n );\r\n } else {\r\n spvProject.controls.spvDetails.controls.generationCapacity.setValue(\r\n this.microScaleGenCapMultiLookupId\r\n );\r\n }\r\n return;\r\n }\r\n if (\r\n +spvProject.controls.spvDetails.controls.generationCapacity\r\n .value !== +this.microScaleGenCapSingleLookupId &&\r\n +spvProject.controls.spvDetails.controls.generationCapacity\r\n .value !== +this.microScaleGenCapMultiLookupId &&\r\n spvProject.controls.facilities.length < 2\r\n ) {\r\n (spvProject.controls.facilities as FormArray).controls.forEach(\r\n (facility) => {\r\n const facilityDetailsFormGroup = (facility as FormGroup)\r\n .controls.facilityDetails as FormGroup;\r\n facilityDetailsFormGroup.controls.installedCapacity.setValidators(\r\n [Validators.required, Validators.min(0.1)]\r\n );\r\n facilityDetailsFormGroup.controls.installedCapacity.updateValueAndValidity();\r\n }\r\n );\r\n }\r\n if (\r\n +spvProject.controls.spvDetails.controls.generationCapacity\r\n .value === +this.microScaleGenCapSingleLookupId ||\r\n +spvProject.controls.spvDetails.controls.generationCapacity\r\n .value === +this.microScaleGenCapMultiLookupId\r\n ) {\r\n (spvProject.controls.facilities as FormArray).controls.forEach(\r\n (facility) => {\r\n const facilityDetailsFormGroup = (facility as FormGroup)\r\n .controls.facilityDetails as FormGroup;\r\n facilityDetailsFormGroup.controls.installedCapacity.setValidators(\r\n [\r\n Validators.required,\r\n Validators.max(1.0),\r\n Validators.min(0.1),\r\n ]\r\n );\r\n facilityDetailsFormGroup.controls.installedCapacity.updateValueAndValidity();\r\n }\r\n );\r\n }\r\n this.validateInstalledCapacity(spvProject, projectIndex);\r\n }\r\n\r\n public validateInstalledCapacity(\r\n spvProject: any,\r\n projectIndex: number\r\n ): boolean {\r\n let totalInstalledCapacity = 0;\r\n for (const facility of (spvProject.controls.facilities as FormArray)\r\n .controls) {\r\n const facilityFormGroup: FormGroup = facility as FormGroup;\r\n const facilityDetailsFormGroup: FormGroup = facilityFormGroup\r\n .controls.facilityDetails as FormGroup;\r\n totalInstalledCapacity += +facilityDetailsFormGroup.controls\r\n .installedCapacity.value;\r\n }\r\n\r\n const spvDetailsFormGroup = spvProject.controls.spvDetails as FormGroup;\r\n if (\r\n totalInstalledCapacity > 2.0 &&\r\n (+spvDetailsFormGroup.controls.generationCapacity.value ===\r\n +this.microScaleGenCapSingleLookupId ||\r\n +spvDetailsFormGroup.controls.generationCapacity.value ===\r\n +this.microScaleGenCapMultiLookupId)\r\n ) {\r\n if (\r\n this.projectsWithFacilityGenerationExceed.indexOf(\r\n projectIndex\r\n ) < 0\r\n ) {\r\n this.projectsWithFacilityGenerationExceed.push(projectIndex);\r\n }\r\n return false;\r\n } else {\r\n const index = this.projectsWithFacilityGenerationExceed.indexOf(\r\n projectIndex\r\n );\r\n if (index > -1) {\r\n this.projectsWithFacilityGenerationExceed.splice(index, 1);\r\n }\r\n return true;\r\n }\r\n }\r\n\r\n public validateContractedCapacity(\r\n spvProject: any,\r\n projectIndex: number\r\n ): boolean {\r\n let totalContractedCapacity = 0;\r\n for (const facility of (spvProject.controls.facilities as FormArray)\r\n .controls) {\r\n const facilityFormGroup: FormGroup = facility as FormGroup;\r\n const facilityDetailsFormGroup: FormGroup = facilityFormGroup\r\n .controls.facilityDetails as FormGroup;\r\n totalContractedCapacity += +facilityDetailsFormGroup.controls\r\n .contractedCapacity.value;\r\n }\r\n\r\n const spvDetailsFormGroup = spvProject.controls.spvDetails as FormGroup;\r\n if (\r\n totalContractedCapacity > 2.0 &&\r\n (+spvDetailsFormGroup.controls.generationCapacity.value ===\r\n +this.microScaleGenCapSingleLookupId ||\r\n +spvDetailsFormGroup.controls.generationCapacity.value ===\r\n +this.microScaleGenCapMultiLookupId)\r\n ) {\r\n if (\r\n this.projectsWithFacilityGenerationExceed.indexOf(\r\n projectIndex\r\n ) < 0\r\n ) {\r\n this.projectsWithFacilityGenerationExceed.push(projectIndex);\r\n }\r\n return false;\r\n } else {\r\n const index = this.projectsWithFacilityGenerationExceed.indexOf(\r\n projectIndex\r\n );\r\n if (index > -1) {\r\n this.projectsWithFacilityGenerationExceed.splice(index, 1);\r\n }\r\n return true;\r\n }\r\n }\r\n\r\n public validateFacilitiesOnProjectsLargerThan1MW(\r\n projectIndex: number\r\n ): boolean {\r\n const spvProjectFormGroup: FormGroup = (this.spvProjectForm.controls\r\n .spvProjects as FormArray).at(projectIndex) as FormGroup;\r\n if (\r\n (spvProjectFormGroup.controls.facilities as FormArray).length === 0\r\n ) {\r\n if (\r\n this.projectsLargerThan1MWWithNoFacilities.indexOf(\r\n projectIndex\r\n ) < 0\r\n ) {\r\n this.projectsLargerThan1MWWithNoFacilities.push(projectIndex);\r\n }\r\n return false;\r\n } else {\r\n if (\r\n this.projectsLargerThan1MWWithNoFacilities.indexOf(\r\n projectIndex\r\n ) >= 0\r\n ) {\r\n this.projectsLargerThan1MWWithNoFacilities.splice(\r\n this.projectsLargerThan1MWWithNoFacilities.indexOf(\r\n projectIndex\r\n ),\r\n 1\r\n );\r\n }\r\n return true;\r\n }\r\n }\r\n public onDownloadNDAAgreementForm(): void {\r\n const element = document.getElementById('nda-template');\r\n this.ndaDownloading = true;\r\n if (!element) {\r\n console.error('Element not found for PDF generation');\r\n this.ndaDownloading = false;\r\n return;\r\n }\r\n html2canvas(element, { scale: 2 })\r\n .then((canvas) => {\r\n const pdf = new jsPDF('p', 'mm', 'a4');\r\n const pageWidth = pdf.internal.pageSize.width;\r\n const pageHeight = pdf.internal.pageSize.height;\r\n const margin = 20;\r\n const usableHeight = pageHeight - 2 * margin;\r\n const imgWidth = pageWidth - 2 * margin;\r\n const scaleRatio = imgWidth / canvas.width;\r\n const imgHeight = canvas.height * scaleRatio;\r\n\r\n let currentHeight = 0;\r\n\r\n while (currentHeight < imgHeight) {\r\n const canvasSection = document.createElement('canvas');\r\n canvasSection.width = canvas.width;\r\n canvasSection.height = Math.min(\r\n canvas.height - currentHeight,\r\n usableHeight / scaleRatio\r\n );\r\n\r\n const context = canvasSection.getContext('2d');\r\n if (context) {\r\n context.drawImage(\r\n canvas,\r\n 0,\r\n currentHeight / scaleRatio,\r\n canvas.width,\r\n canvasSection.height,\r\n 0,\r\n 0,\r\n canvasSection.width,\r\n canvasSection.height\r\n );\r\n\r\n const imgData = canvasSection.toDataURL('image/png');\r\n if (currentHeight > 0) {\r\n pdf.addPage();\r\n }\r\n\r\n pdf.addImage(\r\n imgData,\r\n 'PNG',\r\n margin,\r\n margin,\r\n imgWidth,\r\n canvasSection.height * scaleRatio,\r\n undefined,\r\n 'FAST'\r\n );\r\n\r\n currentHeight += canvasSection.height * scaleRatio;\r\n }\r\n }\r\n\r\n // Save the PDF\r\n pdf.save('NDA_Agreement.pdf');\r\n this.ndaDownloading = false;\r\n this.toastr.success('Document download complete');\r\n })\r\n .catch((error) => {\r\n console.error('Error generating PDF:', error);\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.ndaDownloading = false;\r\n });\r\n }\r\n public onSetApplicationStatus(status: string) {\r\n this.generatorApplicationService.setApplicationStatus(status).subscribe(\r\n () => {\r\n // Since the application status has been changed,\r\n // the component the router navigates to will handle the redirection based on the new status\r\n this.router.navigate([\r\n 'generators',\r\n 'application',\r\n 'nda-agreement',\r\n ]);\r\n },\r\n (error) => {\r\n this.saving = false;\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.toastr.error(this.errorMessage);\r\n }\r\n );\r\n }\r\n\r\n private initSpvProject(project: GeneratorProject): FormGroup {\r\n return this.formBuilder.group({\r\n spvDetails: this.formBuilder.group({\r\n isCoGeneration: new FormControl(\r\n project === null ? false : project.isCoGeneration\r\n ),\r\n generationCapacity: new FormControl(\r\n project === null\r\n ? null\r\n : project.generationCapacityLookupId,\r\n [Validators.required]\r\n ),\r\n generatorProjectName: new FormControl(\r\n project == null ? '' : project.generatorProjectName,\r\n [Validators.required, Validators.maxLength(250)]\r\n ),\r\n projectTechnologyType: new FormControl(\r\n project === null ? null : project.technologyLookupId,\r\n [Validators.required]\r\n ),\r\n }),\r\n spvCompanyDetails: this.formBuilder.group({\r\n companyId: new FormControl(\r\n project === null\r\n ? null\r\n : project.generatorCompany.generatorCompanyId\r\n ),\r\n companyType: new FormControl(\r\n project === null\r\n ? null\r\n : project.generatorCompany.company.companyTypeLookupId,\r\n [Validators.required]\r\n ),\r\n companyName: new FormControl(\r\n project === null\r\n ? ''\r\n : project.generatorCompany.company.companyName,\r\n [Validators.required, Validators.maxLength(50)]\r\n ),\r\n registrationNumber: new FormControl(\r\n project === null\r\n ? ''\r\n : project.generatorCompany.company.registrationNumber,\r\n [\r\n Validators.required,\r\n Validators.maxLength(14),\r\n this.commonService.companyRegistrationNumberValidator.bind(\r\n this\r\n ),\r\n ]\r\n ),\r\n vatNumber: new FormControl(\r\n project === null\r\n ? ''\r\n : project.generatorCompany.company.vatNumber,\r\n [Validators.minLength(10)]\r\n ),\r\n telephoneNumber: new FormControl(\r\n project === null\r\n ? ''\r\n : project.generatorCompany.company.telephoneNumber,\r\n [\r\n Validators.required,\r\n Validators.minLength(10),\r\n Validators.maxLength(20),\r\n CustomValidators.digits,\r\n ]\r\n ),\r\n }),\r\n spvContactPersonDetails: this.formBuilder.group({\r\n contactId: new FormControl(\r\n project === null\r\n ? null\r\n : project.generatorCompany.company.additionalContacts[0]\r\n .contactId\r\n ),\r\n firstName: new FormControl(\r\n project === null\r\n ? ''\r\n : project.generatorCompany.company.additionalContacts[0]\r\n .firstName,\r\n [Validators.required, Validators.maxLength(50)]\r\n ),\r\n lastName: new FormControl(\r\n project === null\r\n ? ''\r\n : project.generatorCompany.company.additionalContacts[0]\r\n .lastName,\r\n [Validators.required, Validators.maxLength(50)]\r\n ),\r\n identityNumber: new FormControl(\r\n project === null\r\n ? ''\r\n : project.generatorCompany.company.additionalContacts[0]\r\n .identityNumber,\r\n [\r\n Validators.maxLength(13),\r\n Validators.minLength(13),\r\n CustomValidators.digits,\r\n ]\r\n ),\r\n position: new FormControl(\r\n project === null\r\n ? ''\r\n : project.generatorCompany.company.additionalContacts[0]\r\n .position,\r\n [Validators.required, Validators.maxLength(30)]\r\n ),\r\n cellNumber: new FormControl(\r\n project === null\r\n ? ''\r\n : project.generatorCompany.company.additionalContacts[0]\r\n .cellNumber,\r\n [\r\n Validators.required,\r\n Validators.minLength(10),\r\n Validators.maxLength(20),\r\n CustomValidators.digits,\r\n ]\r\n ),\r\n landLineNumber: new FormControl(\r\n project === null\r\n ? ''\r\n : project.generatorCompany.company.additionalContacts[0]\r\n .landLineNumber,\r\n [\r\n Validators.required,\r\n Validators.minLength(10),\r\n Validators.maxLength(20),\r\n CustomValidators.digits,\r\n ]\r\n ),\r\n email: new FormControl(\r\n project === null\r\n ? ''\r\n : project.generatorCompany.company.additionalContacts[0]\r\n .email,\r\n [\r\n Validators.required,\r\n Validators.email,\r\n Validators.maxLength(100),\r\n ]\r\n ),\r\n }),\r\n generatorApplicationId: new FormControl(\r\n isNullOrUndefined(this.generatorApplication)\r\n ? null\r\n : this.generatorApplication.generatorApplicationId\r\n ),\r\n parentCompanyId: new FormControl(\r\n project === null\r\n ? isNullOrUndefined(this.generatorApplication)\r\n ? null\r\n : this.generatorApplication.generatorCompanyId\r\n : project.generatorCompany.company.parentCompanyId\r\n ),\r\n generatorProjectId: new FormControl(\r\n project === null ? null : project.generatorProjectId\r\n ),\r\n spvDistributionArea: new FormControl(\r\n project === null ? null : project.distributorId,\r\n [Validators.required]\r\n ),\r\n sameAsHoldingCompany: new FormControl(\r\n project === null ? false : project.sameAsHoldingCompany\r\n ),\r\n facilities: this.formBuilder.array([this.initFacility(null)]),\r\n });\r\n }\r\n\r\n private initFacility(\r\n facility: GeneratorProjectFacility,\r\n project: GeneratorProject = null\r\n ): FormGroup {\r\n const installedCapacityValidators: ValidatorFn[] = [\r\n Validators.required,\r\n Validators.min(0.02),\r\n ];\r\n const contractedCapacityValidators: ValidatorFn[] = [\r\n Validators.required,\r\n Validators.min(0.02),\r\n ];\r\n if (\r\n !isNullOrUndefined(project) &&\r\n (+project.generationCapacityLookupId ===\r\n +this.microScaleGenCapSingleLookupId ||\r\n +project.generationCapacityLookupId ===\r\n +this.microScaleGenCapMultiLookupId)\r\n ) {\r\n installedCapacityValidators.push(Validators.max(1.0));\r\n }\r\n return this.formBuilder.group({\r\n generatorProjectFacilityId: new FormControl(\r\n isNullOrUndefined(facility)\r\n ? null\r\n : facility.generatorProjectFacilityId\r\n ),\r\n facilityDetails: this.formBuilder.group({\r\n facilityName: new FormControl(\r\n isNullOrUndefined(facility) ? '' : facility.facilityName,\r\n [Validators.required, Validators.maxLength(50)]\r\n ),\r\n latitudeCoordinate: new FormControl(\r\n isNullOrUndefined(facility)\r\n ? ''\r\n : facility.latitudeCoordinate,\r\n [\r\n Validators.maxLength(8),\r\n Validators.max(90),\r\n Validators.min(-90),\r\n ]\r\n ),\r\n longitudeCoordinate: new FormControl(\r\n isNullOrUndefined(facility)\r\n ? ''\r\n : facility.longitudeCoordinate,\r\n [\r\n Validators.maxLength(8),\r\n Validators.max(180),\r\n Validators.min(-180),\r\n ]\r\n ),\r\n connectionVoltage: new FormControl(\r\n isNullOrUndefined(facility)\r\n ? null\r\n : facility.connectionVoltageSizeLookupId,\r\n [Validators.required]\r\n ),\r\n projectType: new FormControl(\r\n isNullOrUndefined(facility)\r\n ? null\r\n : facility.projectTypeLookupId,\r\n [Validators.required]\r\n ),\r\n installedCapacity: new FormControl(\r\n isNullOrUndefined(facility)\r\n ? null\r\n : facility.installedCapacity,\r\n installedCapacityValidators\r\n ),\r\n contractedCapacity: new FormControl(\r\n isNullOrUndefined(facility)\r\n ? null\r\n : facility.contractedCapacity,\r\n contractedCapacityValidators\r\n ),\r\n isEmbeddedGeneration: new FormControl(\r\n isNullOrUndefined(facility)\r\n ? false\r\n : facility.isEmbeddedGeneration\r\n ),\r\n generatorFacilityStatusLookupId: new FormControl(\r\n isNullOrUndefined(facility)\r\n ? null\r\n : facility.generatorFacilityStatusLookupId\r\n ),\r\n }),\r\n facilityAddress: this.formBuilder.group({\r\n addressId: new FormControl(\r\n isNullOrUndefined(facility) ||\r\n isNullOrUndefined(facility.address)\r\n ? null\r\n : facility.address.addressId\r\n ),\r\n addressLine1: new FormControl(\r\n isNullOrUndefined(facility) ||\r\n isNullOrUndefined(facility.address)\r\n ? ''\r\n : facility.address.addressLine1,\r\n [Validators.required, Validators.maxLength(100)]\r\n ),\r\n addressLine2: new FormControl(\r\n isNullOrUndefined(facility) ||\r\n isNullOrUndefined(facility.address)\r\n ? ''\r\n : facility.address.addressLine2,\r\n [Validators.required, Validators.maxLength(100)]\r\n ),\r\n addressLine3: new FormControl(\r\n isNullOrUndefined(facility) ||\r\n isNullOrUndefined(facility.address)\r\n ? ''\r\n : facility.address.addressLine3,\r\n [Validators.maxLength(100)]\r\n ),\r\n province: new FormControl(\r\n isNullOrUndefined(facility) ||\r\n isNullOrUndefined(facility.address)\r\n ? null\r\n : facility.address.provinceLookupId,\r\n [Validators.required]\r\n ),\r\n city: new FormControl(\r\n isNullOrUndefined(facility) ||\r\n isNullOrUndefined(facility.address)\r\n ? ''\r\n : facility.address.city,\r\n [Validators.required, Validators.maxLength(50)]\r\n ),\r\n postalCode: new FormControl(\r\n isNullOrUndefined(facility) ||\r\n isNullOrUndefined(facility.address)\r\n ? ''\r\n : facility.address.postalCode,\r\n [\r\n Validators.required,\r\n Validators.maxLength(10),\r\n CustomValidators.digits,\r\n ]\r\n ),\r\n isRural: new FormControl(\r\n isNullOrUndefined(facility) ||\r\n isNullOrUndefined(facility.address)\r\n ? false\r\n : facility.address.isRural\r\n ),\r\n }),\r\n });\r\n }\r\n\r\n private initSpvProjects() {\r\n if (this.generatorProjects && this.generatorProjects.length > 0) {\r\n const generatorProjectsFormArray = new FormArray(\r\n this.populateGeneratorProjects()\r\n );\r\n this.spvProjectForm.setControl(\r\n 'spvProjects',\r\n generatorProjectsFormArray\r\n );\r\n\r\n for (const spvProject of (this.spvProjectForm.controls\r\n .spvProjects as FormArray).controls) {\r\n const spvProjectFormGroup: FormGroup = spvProject as FormGroup;\r\n const spvCompanyDetailsFormGroup: FormGroup = spvProjectFormGroup\r\n .controls.spvCompanyDetails as FormGroup;\r\n const spvContactDetailsFormGroup: FormGroup = spvProjectFormGroup\r\n .controls.spvContactPersonDetails as FormGroup;\r\n if (spvProjectFormGroup.controls.sameAsHoldingCompany.value) {\r\n spvCompanyDetailsFormGroup.disable();\r\n spvContactDetailsFormGroup.disable();\r\n }\r\n }\r\n }\r\n }\r\n\r\n private populateGeneratorProjects(): FormGroup[] {\r\n const generatorProjectsFormArray: FormGroup[] = [];\r\n this.generatorProjects.forEach((generatorProject) => {\r\n const generatorProjectFormGroup = this.initSpvProject(\r\n generatorProject\r\n );\r\n const generatorProjectFacilitiesFormArray = new FormArray(\r\n this.populateGeneratorProjectFacilities(generatorProject)\r\n );\r\n generatorProjectFormGroup.setControl(\r\n 'facilities',\r\n generatorProjectFacilitiesFormArray\r\n );\r\n generatorProjectsFormArray.push(generatorProjectFormGroup);\r\n });\r\n return generatorProjectsFormArray;\r\n }\r\n\r\n private populateGeneratorProjectFacilities(\r\n generatorProject: GeneratorProject\r\n ) {\r\n const generatorProjectFacilitiesFormArray: FormGroup[] = [];\r\n generatorProject.facilities.forEach((facility) => {\r\n const generatorProjectFacilityFormGroup = this.initFacility(\r\n facility,\r\n generatorProject\r\n );\r\n generatorProjectFacilitiesFormArray.push(\r\n generatorProjectFacilityFormGroup\r\n );\r\n });\r\n return generatorProjectFacilitiesFormArray;\r\n }\r\n\r\n private validateProjectsFacilityInstalledCapacity(): boolean {\r\n let result = true;\r\n (this.spvProjectForm.controls\r\n .spvProjects as FormArray).controls.forEach((project, index) => {\r\n const projectFormGroup: FormGroup = project as FormGroup;\r\n if (!this.validateInstalledCapacity(projectFormGroup, index)) {\r\n result = false;\r\n }\r\n });\r\n return result;\r\n }\r\n\r\n private validateProjectsLargerThan1MW(): boolean {\r\n let result = true;\r\n (this.spvProjectForm.controls\r\n .spvProjects as FormArray).controls.forEach((project, index) => {\r\n if (!this.validateFacilitiesOnProjectsLargerThan1MW(index)) {\r\n result = false;\r\n }\r\n });\r\n return result;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { DocumentMetadata } from '../../model/document-metadata.model';\r\n\r\n@Injectable()\r\nexport class DocumentService {\r\n constructor(private httpClient: HttpClient) {}\r\n\r\n public getDocumentById(documentId: number): Observable {\r\n return this.httpClient.get(\r\n API_URL + 'Document/GetDocumentById?DocumentId=' + documentId\r\n );\r\n }\r\n\r\n public getDocumentByMetadataAll(\r\n documentMetadata: DocumentMetadata[]\r\n ): Observable {\r\n return this.httpClient.post(\r\n API_URL + 'Document/GetDocumentByMetadataAll',\r\n documentMetadata\r\n );\r\n }\r\n\r\n public getDocumentByMetadataAny(\r\n documentMetadata: DocumentMetadata[]\r\n ): Observable {\r\n return this.httpClient.post(\r\n API_URL + 'Document/GetDocumentByMetadataAny',\r\n documentMetadata\r\n );\r\n }\r\n\r\n public deleteDocument(documentId: number) {\r\n return this.httpClient.get(\r\n API_URL + 'document/Delete?documentId=' + documentId\r\n );\r\n }\r\n\r\n public downloadDocument(documentId: number): Observable {\r\n return this.httpClient.get(\r\n API_URL + 'document/DownloadAsync?documentId=' + documentId,\r\n { responseType: 'blob' }\r\n );\r\n }\r\n\r\n public downloadApplicationDocument(documentPath: string): Observable {\r\n return this.httpClient.get(\r\n API_URL +\r\n 'document/DownloadApplicationDocumentAsync?documentPath=' +\r\n documentPath,\r\n { responseType: 'blob' }\r\n );\r\n }\r\n}\r\n","import { Component, OnInit, ViewChild } from '@angular/core';\r\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\r\n\r\nimport { Router } from '@angular/router';\r\nimport { GeneratorApplicationService } from '../generator-application.service';\r\nimport { GeneratorApplication } from '../../../../model/application/generator-application/generator-application.model';\r\nimport { CommonService } from '../../../../common/common-service';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { DocumentService } from '../../../document/document.service';\r\nimport { NdaAgreementDownloadComponent } from '../nda-agreement-template/nda-agreement-template.component';\r\nimport * as jsPDF from 'jspdf';\r\nimport * as html2canvas from 'html2canvas';\r\n\r\n@Component({\r\n selector: 'app-nda-agreement',\r\n templateUrl: './nda-agreement.component.html',\r\n styleUrls: ['./nda-agreement.component.scss'],\r\n})\r\nexport class NdaAgreementComponent implements OnInit {\r\n public imports: [NdaAgreementDownloadComponent];\r\n @ViewChild(NdaAgreementDownloadComponent)\r\n public ndaAgreementTemplate: NdaAgreementDownloadComponent;\r\n public ndaForm: FormGroup;\r\n public companyName: string;\r\n public companyRegistrationNumber: string;\r\n public address: string;\r\n public contactNumber?: string;\r\n public loading = false;\r\n public ndaDownloading = false;\r\n public submittingForm = false;\r\n public applicationReferenceNumber: string;\r\n public errorMessage = '';\r\n public formSubmitted = false;\r\n public isNdaAgreementUploaded: boolean = false;\r\n public generatorCompanyId;\r\n public retrievalFailed = false;\r\n public authorizedPersonal = false;\r\n\r\n constructor(\r\n private toastr: ToastrService,\r\n private router: Router,\r\n private generatorApplicationService: GeneratorApplicationService,\r\n public commonService: CommonService,\r\n private documentService: DocumentService\r\n ) {\r\n this.ndaForm = new FormGroup({\r\n authorizedPersonal: new FormControl(false, [\r\n Validators.requiredTrue,\r\n ]),\r\n ndaAgreement: new FormControl(false, [Validators.requiredTrue]),\r\n });\r\n }\r\n\r\n public ngOnInit(): void {\r\n this.loading = true;\r\n this.generatorApplicationService.getGeneratorApplication().subscribe(\r\n (generatorApplication: GeneratorApplication) => {\r\n if (\r\n generatorApplication.generatorApplicationStatus.value !==\r\n 'Capture: Facility Detail'\r\n ) {\r\n if (\r\n generatorApplication.generatorApplicationStatus\r\n .value === 'Accept NDA'\r\n ) {\r\n this.formSubmitted = true;\r\n this.loading = false;\r\n } else {\r\n const navigateTo = this.generatorApplicationService.navigateByStatus(\r\n generatorApplication.generatorApplicationStatus\r\n .value\r\n );\r\n this.router.navigate([navigateTo]);\r\n }\r\n } else {\r\n this.applicationReferenceNumber =\r\n generatorApplication.applicationRefNumber;\r\n this.companyRegistrationNumber =\r\n generatorApplication.generatorCompany.company.registrationNumber;\r\n this.companyName =\r\n generatorApplication.generatorCompany.company.companyName;\r\n this.address =\r\n generatorApplication.generatorCompany.company\r\n .addresses === undefined\r\n ? ''\r\n : generatorApplication.generatorCompany.company\r\n .addresses[0].addressLine1 +\r\n ', ' +\r\n generatorApplication.generatorCompany.company\r\n .addresses[0].addressLine2 +\r\n ', ' +\r\n generatorApplication.generatorCompany.company\r\n .addresses[0].addressLine3 +\r\n ', ' +\r\n generatorApplication.generatorCompany.company\r\n .addresses[0].city +\r\n ', ' +\r\n generatorApplication.generatorCompany.company\r\n .addresses[0].postalCode;\r\n this.contactNumber =\r\n generatorApplication.generatorCompany.company.additionalContacts[0].email;\r\n this.generatorCompanyId =\r\n generatorApplication.generatorCompany.company.companyId;\r\n this.loading = false;\r\n }\r\n },\r\n (error) => {\r\n this.loading = false;\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.toastr.error(this.errorMessage);\r\n this.retrievalFailed = true;\r\n }\r\n );\r\n }\r\n\r\n public successfulUploadNDAAgreement(event: any) {\r\n if (event.value && event.listenerId === 'isNdaAgreementUploaded') {\r\n this.ndaForm.get('ndaAgreement').setValue(event.value);\r\n this.isNdaAgreementUploaded = true;\r\n this.ndaForm.controls.ndaAgreement.setValue(true);\r\n }\r\n }\r\n\r\n public onSubmit(): void {\r\n this.submittingForm = true;\r\n if (!this.ndaForm.valid) {\r\n this.toastr.error(\r\n 'You need to upload a signed copy of the NDA and be an Authorised Person.'\r\n );\r\n this.submittingForm = false;\r\n } else {\r\n this.generatorApplicationService\r\n .submitNda(this.ndaForm.value)\r\n .subscribe(\r\n () => {\r\n this.toastr.success(\r\n 'Successfully submitted NDA Agreement'\r\n );\r\n this.formSubmitted = true;\r\n this.submittingForm = false;\r\n },\r\n (error) => {\r\n this.submittingForm = false;\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.toastr.error(this.errorMessage);\r\n }\r\n );\r\n }\r\n }\r\n\r\n public onSetApplicationStatus(status: string) {\r\n this.generatorApplicationService.setApplicationStatus(status).subscribe(\r\n () => {\r\n // Since the application status has been changed,\r\n // the component the router navigates to will handle the redirection based on the new status\r\n this.router.navigate([\r\n 'generators',\r\n 'application',\r\n 'facility-details',\r\n ]);\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.toastr.error(this.errorMessage);\r\n }\r\n );\r\n }\r\n\r\n public onDownloadNDAAgreementForm(): void {\r\n const element = document.getElementById('nda-template');\r\n this.ndaDownloading = true;\r\n if (!element) {\r\n console.error('Element not found for PDF generation');\r\n this.ndaDownloading = false;\r\n return;\r\n }\r\n html2canvas(element, { scale: 2 })\r\n .then((canvas) => {\r\n const pdf = new jsPDF('p', 'mm', 'a4');\r\n const pageWidth = pdf.internal.pageSize.width;\r\n const pageHeight = pdf.internal.pageSize.height;\r\n const margin = 20;\r\n const usableHeight = pageHeight - 2 * margin;\r\n const imgWidth = pageWidth - 2 * margin;\r\n const scaleRatio = imgWidth / canvas.width;\r\n const imgHeight = canvas.height * scaleRatio;\r\n\r\n let currentHeight = 0;\r\n\r\n while (currentHeight < imgHeight) {\r\n const canvasSection = document.createElement('canvas');\r\n canvasSection.width = canvas.width;\r\n canvasSection.height = Math.min(\r\n canvas.height - currentHeight,\r\n usableHeight / scaleRatio\r\n );\r\n\r\n const context = canvasSection.getContext('2d');\r\n if (context) {\r\n context.drawImage(\r\n canvas,\r\n 0,\r\n currentHeight / scaleRatio,\r\n canvas.width,\r\n canvasSection.height,\r\n 0,\r\n 0,\r\n canvasSection.width,\r\n canvasSection.height\r\n );\r\n\r\n const imgData = canvasSection.toDataURL('image/png');\r\n if (currentHeight > 0) {\r\n pdf.addPage();\r\n }\r\n\r\n pdf.addImage(\r\n imgData,\r\n 'PNG',\r\n margin,\r\n margin,\r\n imgWidth,\r\n canvasSection.height * scaleRatio,\r\n undefined,\r\n 'FAST'\r\n );\r\n\r\n currentHeight += canvasSection.height * scaleRatio;\r\n }\r\n }\r\n\r\n // Save the PDF\r\n pdf.save('NDA_Agreement.pdf');\r\n this.ndaDownloading = false;\r\n this.toastr.success('Document download complete');\r\n })\r\n .catch((error) => {\r\n console.error('Error generating PDF:', error);\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.ndaDownloading = false;\r\n });\r\n }\r\n}\r\n","import {\r\n AfterViewChecked,\r\n ChangeDetectorRef,\r\n Component,\r\n OnDestroy,\r\n OnInit,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport {\r\n AbstractControl,\r\n FormArray,\r\n FormControl,\r\n FormGroup,\r\n ValidatorFn,\r\n Validators,\r\n} from '@angular/forms';\r\nimport { GeneratorApplicationService } from '../generator-application.service';\r\n\r\nimport { isNullOrUndefined } from 'util';\r\nimport { Router } from '@angular/router';\r\nimport { GeneratorApplication } from '../../../../model/application/generator-application/generator-application.model';\r\nimport { EntityLookup } from '../../../../model/entity-lookup.model';\r\nimport { CommonService } from '../../../../common/common-service';\r\nimport { ComponentTriggersService } from '../../../../common/component-triggers.service';\r\nimport { ExistingFacility } from '../../../../model/application/generator-application/existing-facility.model';\r\nimport { NewFacility } from '../../../../model/application/generator-application/new-facility.model';\r\nimport { GeneratorProjectFacility } from '../../../../model/generator-project-facility.model';\r\nimport { GenerationData } from '../../../../model/application/generator-application/generation-data.model';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { NdaAgreementDownloadComponent } from '../nda-agreement-template/nda-agreement-template.component';\r\nimport * as jsPDF from 'jspdf';\r\nimport * as html2canvas from 'html2canvas';\r\n\r\n@Component({\r\n selector: 'facility-details',\r\n templateUrl: './facility-details.component.html',\r\n styleUrls: [\r\n './facility-details.component.scss',\r\n '../../../form.styles.scss',\r\n ],\r\n})\r\nexport class FacilityDetailsComponent\r\n implements OnInit, OnDestroy, AfterViewChecked {\r\n public imports: [NdaAgreementDownloadComponent];\r\n @ViewChild(NdaAgreementDownloadComponent)\r\n public ndaAgreementTemplate: NdaAgreementDownloadComponent;\r\n public generatorApplication: GeneratorApplication;\r\n public generatorApplicationForm: FormGroup = new FormGroup({});\r\n public certificateDocumentBasePath: string;\r\n public generatorApplicationMetadata: any;\r\n public selectionChoices: EntityLookup[];\r\n public selectionChoicesYesId: number;\r\n public companyName: string;\r\n public companyRegistrationNumber: string;\r\n public address: string;\r\n public contactNumber?: string;\r\n\r\n public loading = false;\r\n public saving = false;\r\n public ndaDownloading = false;\r\n public errorMessage = '';\r\n public retrievalFailed = false;\r\n public formSubmitted = false;\r\n private autoSaveInterval: any;\r\n\r\n constructor(\r\n private generatorApplicationService: GeneratorApplicationService,\r\n private commonService: CommonService,\r\n private toastr: ToastrService,\r\n private router: Router,\r\n private componentTriggerService: ComponentTriggersService,\r\n private cdRef: ChangeDetectorRef\r\n ) {}\r\n\r\n public ngAfterViewChecked() {\r\n this.cdRef.detectChanges();\r\n }\r\n\r\n public ngOnInit(): void {\r\n this.loading = true;\r\n this.generatorApplicationService\r\n .getGeneratorApplicationPhase2()\r\n .subscribe(\r\n (generatorApplication: GeneratorApplication) => {\r\n this.generatorApplication = generatorApplication;\r\n if (\r\n generatorApplication.generatorApplicationStatus\r\n .value !== 'Capture: Project Detail'\r\n ) {\r\n if (\r\n generatorApplication.generatorApplicationStatus\r\n .value === 'Capture: Facility Detail'\r\n ) {\r\n this.formSubmitted = true;\r\n this.loading = false;\r\n } else {\r\n const navigateTo = this.generatorApplicationService.navigateByStatus(\r\n generatorApplication.generatorApplicationStatus\r\n .value\r\n );\r\n this.router.navigate([navigateTo]);\r\n this.loading = false;\r\n }\r\n } else {\r\n this.certificateDocumentBasePath =\r\n 'GeneratorApplication/' +\r\n generatorApplication.generatorApplicationId;\r\n this.generatorApplicationMetadata = {\r\n MetadataTypeLookupName: 'GeneratorApplicationId',\r\n MetadataValue:\r\n generatorApplication.generatorApplicationId,\r\n };\r\n // generatorApplication.applicationRefNumber;\r\n this.companyRegistrationNumber =\r\n generatorApplication.generatorCompany.company.registrationNumber;\r\n this.companyName =\r\n generatorApplication.generatorCompany.company.companyName;\r\n this.address =\r\n generatorApplication.generatorCompany.company\r\n .addresses === undefined\r\n ? ''\r\n : generatorApplication.generatorCompany.company\r\n .addresses[0].addressLine1 +\r\n ', ' +\r\n generatorApplication.generatorCompany.company\r\n .addresses[0].addressLine2 +\r\n ', ' +\r\n generatorApplication.generatorCompany.company\r\n .addresses[0].addressLine3 +\r\n ', ' +\r\n generatorApplication.generatorCompany.company\r\n .addresses[0].city +\r\n ', ' +\r\n generatorApplication.generatorCompany.company\r\n .addresses[0].postalCode;\r\n this.contactNumber =\r\n generatorApplication.generatorCompany.company.additionalContacts[0].email;\r\n\r\n this.commonService\r\n .getEntityLookups(['Selection'])\r\n .subscribe(\r\n (entityLookups) => {\r\n this.selectionChoices =\r\n entityLookups.entityLookupResultList[\r\n 'selection'\r\n ];\r\n this.selectionChoicesYesId = this.selectionChoices.find(\r\n (x) => x.value === 'Yes'\r\n ).entityLookupId;\r\n this.initProjects();\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n\r\n this.retrievalFailed = true;\r\n }\r\n );\r\n }\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n\r\n this.retrievalFailed = true;\r\n }\r\n );\r\n // Set up auto-save every 5 minutes (300000 ms)\r\n this.autoSaveInterval = setInterval(() => {\r\n this.saveProgress();\r\n }, 300000);\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n if (this.autoSaveInterval) {\r\n clearInterval(this.autoSaveInterval);\r\n }\r\n }\r\n\r\n public onSubmit(): void {\r\n this.commonService.validateAllFormFields(this.generatorApplicationForm);\r\n this.componentTriggerService.triggerValidationMessages.next();\r\n if (this.generatorApplicationForm.valid) {\r\n this.saving = true;\r\n this.generatorApplicationService\r\n .savePhase2Application(this.generatorApplicationForm.value)\r\n .subscribe(\r\n () => {\r\n this.router.navigate([\r\n 'generators',\r\n 'application',\r\n 'nda-agreement',\r\n ]);\r\n this.formSubmitted = true;\r\n this.saving = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.toastr.error(this.errorMessage);\r\n this.saving = false;\r\n }\r\n );\r\n }\r\n }\r\n\r\n public saveProgress(): void {\r\n this.errorMessage = '';\r\n this.saving = true;\r\n this.generatorApplicationService\r\n .saveProgressApplicationPhase2(\r\n this.generatorApplicationForm.value,\r\n this.generatorApplication.generatorApplicationId\r\n )\r\n .subscribe(\r\n () => {\r\n this.saving = false;\r\n this.toastr.success('Progress Saved!');\r\n },\r\n (error) => {\r\n this.saving = false;\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n }\r\n\r\n public showSaveProgressButton(): boolean {\r\n if (this.generatorApplication) {\r\n if (\r\n this.generatorApplication.generatorApplicationStatus.value !==\r\n 'Capture: Project Detail' ||\r\n this.saving ||\r\n this.ndaDownloading\r\n ) {\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n public onSetApplicationStatus(status: string) {\r\n this.generatorApplicationService.setApplicationStatus(status).subscribe(\r\n () => {\r\n // Since the application status has been changed,\r\n // the component the router navigates to will handle the redirection based on the new status\r\n this.router.navigate([\r\n 'generators',\r\n 'application',\r\n 'nda-agreement',\r\n ]);\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.toastr.error(this.errorMessage);\r\n }\r\n );\r\n }\r\n\r\n public documentUploadForFacility(\r\n output: any,\r\n projectIndex: number,\r\n facilityIndex: number\r\n ) {\r\n const control = this.getFacilityControl(\r\n projectIndex,\r\n facilityIndex,\r\n output.listenerId\r\n );\r\n\r\n control.patchValue(output.value);\r\n }\r\n\r\n public documentUploadForNewFacility(\r\n output: any,\r\n projectIndex: number,\r\n facilityIndex: number\r\n ) {\r\n const control = this.getNewGenertorControl(\r\n projectIndex,\r\n facilityIndex,\r\n output.listenerId\r\n );\r\n\r\n control.patchValue(output.value);\r\n }\r\n\r\n public documentUploadForExistingFacility(\r\n output: any,\r\n projectIndex: number,\r\n facilityIndex: number\r\n ) {\r\n const control = this.getExistingGeneratorControl(\r\n projectIndex,\r\n facilityIndex,\r\n output.listenerId\r\n );\r\n\r\n control.patchValue(output.value);\r\n }\r\n\r\n public changeRoofTopSelection(\r\n projectIndex: number,\r\n facilityIndex: number,\r\n updateValidity: boolean = true\r\n ): void {\r\n const roofControl = this.getFacilityControl(\r\n projectIndex,\r\n facilityIndex,\r\n 'isRoofTopBased'\r\n );\r\n\r\n const roofTopCertificateControl = this.getFacilityControl(\r\n projectIndex,\r\n facilityIndex,\r\n 'structuralEngineerCertificate'\r\n );\r\n\r\n if (roofControl.value) {\r\n this.enableControl(\r\n roofTopCertificateControl,\r\n [Validators.required],\r\n updateValidity\r\n );\r\n } else {\r\n this.disableControl(roofTopCertificateControl);\r\n }\r\n }\r\n\r\n public changePropertyOwnerShip(\r\n projectIndex: number,\r\n facilityIndex: number,\r\n updateValidity: boolean = true\r\n ): void {\r\n const ippOwnedControl = this.getFacilityControl(\r\n projectIndex,\r\n facilityIndex,\r\n 'isOwnedByIPP'\r\n );\r\n const officialLeaseControl = this.getFacilityControl(\r\n projectIndex,\r\n facilityIndex,\r\n 'isOfficialLeaseInPlace'\r\n );\r\n const leaseTitleHolderNameControl = this.getFacilityControl(\r\n projectIndex,\r\n facilityIndex,\r\n 'leaseTitleHolderName'\r\n );\r\n const leaseStatusCommentControl = this.getFacilityControl(\r\n projectIndex,\r\n facilityIndex,\r\n 'leaseStatusComment'\r\n );\r\n\r\n if (ippOwnedControl.value) {\r\n this.disableControl(officialLeaseControl);\r\n this.disableControl(leaseTitleHolderNameControl);\r\n this.disableControl(leaseStatusCommentControl);\r\n } else {\r\n if (officialLeaseControl.value) {\r\n this.disableControl(leaseStatusCommentControl);\r\n } else {\r\n this.enableControl(\r\n leaseStatusCommentControl,\r\n [Validators.required],\r\n updateValidity\r\n );\r\n }\r\n this.enableControl(\r\n officialLeaseControl,\r\n [Validators.required],\r\n updateValidity\r\n );\r\n }\r\n }\r\n\r\n public changeLeaseControl(\r\n projectIndex: number,\r\n facilityIndex: number,\r\n updateValidity: boolean = true\r\n ): void {\r\n const officialLeaseControl = this.getFacilityControl(\r\n projectIndex,\r\n facilityIndex,\r\n 'isOfficialLeaseInPlace'\r\n );\r\n const leaseStatusCommentControl = this.getFacilityControl(\r\n projectIndex,\r\n facilityIndex,\r\n 'leaseStatusComment'\r\n );\r\n const leaseTitleHolderNameControl = this.getFacilityControl(\r\n projectIndex,\r\n facilityIndex,\r\n 'leaseTitleHolderName'\r\n );\r\n\r\n if (officialLeaseControl.value) {\r\n this.enableControl(\r\n leaseTitleHolderNameControl,\r\n [Validators.required],\r\n updateValidity\r\n );\r\n this.disableControl(leaseStatusCommentControl);\r\n } else {\r\n this.enableControl(\r\n leaseStatusCommentControl,\r\n [Validators.required],\r\n updateValidity\r\n );\r\n this.disableControl(leaseTitleHolderNameControl);\r\n }\r\n }\r\n\r\n public changeRezoningControls(\r\n projectIndex: number,\r\n facilityIndex: number,\r\n updateValidity: boolean = true\r\n ): void {\r\n const rezoningRequiredControl = this.getFacilityControl(\r\n projectIndex,\r\n facilityIndex,\r\n 'isRezoningRequired'\r\n );\r\n const rezoningAppliedControl = this.getFacilityControl(\r\n projectIndex,\r\n facilityIndex,\r\n 'rezoningApplied'\r\n );\r\n const rezoningApplicationDateControl = this.getFacilityControl(\r\n projectIndex,\r\n facilityIndex,\r\n 'rezoningApplicationDate'\r\n );\r\n const rezoningResultObtainedControl = this.getFacilityControl(\r\n projectIndex,\r\n facilityIndex,\r\n 'rezoningResultObtained'\r\n );\r\n const rezoningApplicationResultControl = this.getFacilityControl(\r\n projectIndex,\r\n facilityIndex,\r\n 'rezoningApplicationResult'\r\n );\r\n\r\n if (rezoningRequiredControl.value) {\r\n this.enableControl(\r\n rezoningAppliedControl,\r\n [Validators.required],\r\n updateValidity\r\n );\r\n } else {\r\n this.disableControl(rezoningAppliedControl);\r\n this.disableControl(rezoningApplicationDateControl);\r\n this.disableControl(rezoningResultObtainedControl);\r\n this.disableControl(rezoningApplicationResultControl);\r\n }\r\n }\r\n\r\n public changeRezoningApplicationControls(\r\n projectIndex: number,\r\n facilityIndex: number,\r\n updateValidity: boolean = true\r\n ): void {\r\n const rezoningAppliedControl = this.getFacilityControl(\r\n projectIndex,\r\n facilityIndex,\r\n 'rezoningApplied'\r\n );\r\n const rezoningApplicationDateControl = this.getFacilityControl(\r\n projectIndex,\r\n facilityIndex,\r\n 'rezoningApplicationDate'\r\n );\r\n const rezoningResultObtainedControl = this.getFacilityControl(\r\n projectIndex,\r\n facilityIndex,\r\n 'rezoningResultObtained'\r\n );\r\n\r\n if (rezoningAppliedControl.value) {\r\n this.enableControl(\r\n rezoningApplicationDateControl,\r\n [Validators.required],\r\n updateValidity\r\n );\r\n this.enableControl(\r\n rezoningResultObtainedControl,\r\n [Validators.required],\r\n updateValidity\r\n );\r\n } else {\r\n this.disableControl(rezoningApplicationDateControl);\r\n this.disableControl(rezoningResultObtainedControl);\r\n }\r\n }\r\n\r\n public changeRezoningResultControl(\r\n projectIndex: number,\r\n facilityIndex: number,\r\n updateValidity: boolean = true\r\n ): void {\r\n const rezoningResultObtainedControl = this.getFacilityControl(\r\n projectIndex,\r\n facilityIndex,\r\n 'rezoningResultObtained'\r\n );\r\n const rezoningApplicationResultControl = this.getFacilityControl(\r\n projectIndex,\r\n facilityIndex,\r\n 'rezoningApplicationResult'\r\n );\r\n\r\n if (rezoningResultObtainedControl.value) {\r\n this.enableControl(\r\n rezoningApplicationResultControl,\r\n [Validators.required],\r\n updateValidity\r\n );\r\n } else {\r\n this.disableControl(rezoningApplicationResultControl);\r\n }\r\n }\r\n\r\n public changePlannedExpansionControls(\r\n projectIndex: number,\r\n facilityIndex: number,\r\n updateValidity: boolean = true\r\n ): void {\r\n const plannedExpansionControl = this.getFacilityControl(\r\n projectIndex,\r\n facilityIndex,\r\n 'plannedExpansion'\r\n );\r\n const plannedCommissioningDateControl = this.getFacilityControl(\r\n projectIndex,\r\n facilityIndex,\r\n 'plannedCommissioningDate'\r\n );\r\n const expectedExtraCapacityControl = this.getFacilityControl(\r\n projectIndex,\r\n facilityIndex,\r\n 'expectedExtraCapacity'\r\n );\r\n\r\n if (plannedExpansionControl.value) {\r\n this.enableControl(\r\n plannedCommissioningDateControl,\r\n [Validators.required],\r\n updateValidity\r\n );\r\n this.enableControl(\r\n expectedExtraCapacityControl,\r\n [Validators.required, Validators.min(0.0)],\r\n updateValidity\r\n );\r\n } else {\r\n this.disableControl(plannedCommissioningDateControl);\r\n this.disableControl(expectedExtraCapacityControl);\r\n }\r\n }\r\n\r\n public changeWebEnabledControls(\r\n projectIndex: number,\r\n facilityIndex: number,\r\n updateValidity: boolean = true\r\n ): void {\r\n const isWebEnabledMetersInstalledControl = this.getExistingGeneratorControl(\r\n projectIndex,\r\n facilityIndex,\r\n 'isWebEnabledMetersInstalled'\r\n );\r\n const webMeterInstallationDateControl = this.getExistingGeneratorControl(\r\n projectIndex,\r\n facilityIndex,\r\n 'webMeterInstallationDate'\r\n );\r\n const meteringCertificateControl = this.getExistingGeneratorControl(\r\n projectIndex,\r\n facilityIndex,\r\n 'meteringCertificate'\r\n );\r\n\r\n if (isWebEnabledMetersInstalledControl.value) {\r\n this.disableControl(webMeterInstallationDateControl);\r\n this.enableControl(\r\n meteringCertificateControl,\r\n [Validators.required],\r\n updateValidity\r\n );\r\n } else {\r\n this.disableControl(meteringCertificateControl);\r\n this.enableControl(\r\n webMeterInstallationDateControl,\r\n [Validators.required],\r\n updateValidity\r\n );\r\n }\r\n }\r\n\r\n public changeNersaLicenceControl(\r\n projectIndex: number,\r\n facilityIndex: number,\r\n updateValidity: boolean = true\r\n ): void {\r\n const hasExistingNERSALicenceControl = this.getFacilityControl(\r\n projectIndex,\r\n facilityIndex,\r\n 'hasExistingNERSALicence'\r\n );\r\n const nersaGenerationLicenceControl = this.getFacilityControl(\r\n projectIndex,\r\n facilityIndex,\r\n 'nersaGenerationLicence'\r\n );\r\n const noNERSAGenerationLicenceProvidedReasonControl = this.getFacilityControl(\r\n projectIndex,\r\n facilityIndex,\r\n 'noNERSAGenerationLicenceProvidedReason'\r\n );\r\n }\r\n\r\n public changeIRPControls(\r\n projectIndex: number,\r\n facilityIndex: number,\r\n updateValidity: boolean = true\r\n ): void {\r\n const isIRPRequestSubmittedControl = this.getFacilityControl(\r\n projectIndex,\r\n facilityIndex,\r\n 'isIRPRequestSubmitted'\r\n );\r\n const deviationApprovalObtainedControl = this.getFacilityControl(\r\n projectIndex,\r\n facilityIndex,\r\n 'deviationApprovalObtained'\r\n );\r\n const deviationApprovalControl = this.getFacilityControl(\r\n projectIndex,\r\n facilityIndex,\r\n 'deviationApproval'\r\n );\r\n const noDeviationApprovalObtainedReasonControl = this.getFacilityControl(\r\n projectIndex,\r\n facilityIndex,\r\n 'noDeviationApprovalObtainedReason'\r\n );\r\n }\r\n\r\n public changeIRPObtainedControls(\r\n projectIndex: number,\r\n facilityIndex: number,\r\n updateValidity: boolean = true\r\n ): void {\r\n const deviationApprovalObtainedControl = this.getFacilityControl(\r\n projectIndex,\r\n facilityIndex,\r\n 'deviationApprovalObtained'\r\n );\r\n const deviationApprovalControl = this.getFacilityControl(\r\n projectIndex,\r\n facilityIndex,\r\n 'deviationApproval'\r\n );\r\n const noDeviationApprovalObtainedReasonControl = this.getFacilityControl(\r\n projectIndex,\r\n facilityIndex,\r\n 'noDeviationApprovalObtainedReason'\r\n );\r\n\r\n if (deviationApprovalObtainedControl.value) {\r\n this.enableControl(deviationApprovalControl, [], updateValidity);\r\n this.disableControl(noDeviationApprovalObtainedReasonControl);\r\n } else {\r\n this.enableControl(\r\n noDeviationApprovalObtainedReasonControl,\r\n [],\r\n updateValidity\r\n );\r\n this.disableControl(deviationApprovalControl);\r\n }\r\n }\r\n\r\n public changeREIPPPControls(\r\n projectIndex: number,\r\n facilityIndex: number,\r\n updateValidity: boolean = true\r\n ): void {\r\n const projectSubmittedIntoReipppControl = this.getNewGenertorControl(\r\n projectIndex,\r\n facilityIndex,\r\n 'projectSubmittedIntoReippp'\r\n );\r\n const roundOfReipppControl = this.getNewGenertorControl(\r\n projectIndex,\r\n facilityIndex,\r\n 'roundOfReippp'\r\n );\r\n\r\n if (projectSubmittedIntoReipppControl.value) {\r\n this.enableControl(roundOfReipppControl, [], updateValidity);\r\n } else {\r\n this.disableControl(roundOfReipppControl);\r\n }\r\n }\r\n\r\n public changeBudgetConnectionControls(\r\n projectIndex: number,\r\n facilityIndex: number,\r\n updateValidity: boolean = true\r\n ): void {\r\n const budgetConnectionCostReceivedControl = this.getNewGenertorControl(\r\n projectIndex,\r\n facilityIndex,\r\n 'budgetConnectionCostReceived'\r\n );\r\n const budgetConnectionUpgradeCostControl = this.getNewGenertorControl(\r\n projectIndex,\r\n facilityIndex,\r\n 'budgetConnectionUpgradeCost'\r\n );\r\n\r\n if (budgetConnectionCostReceivedControl.value) {\r\n this.enableControl(\r\n budgetConnectionUpgradeCostControl,\r\n [Validators.required],\r\n updateValidity\r\n );\r\n } else {\r\n this.disableControl(budgetConnectionUpgradeCostControl);\r\n }\r\n }\r\n\r\n public changeEIAControls(\r\n projectIndex: number,\r\n facilityIndex: number,\r\n updateValidity: boolean = true\r\n ): void {\r\n const eiaCompletedControl = this.getNewGenertorControl(\r\n projectIndex,\r\n facilityIndex,\r\n 'eiaCompletedLookupId'\r\n );\r\n const eiaDocumentProvidedControl = this.getNewGenertorControl(\r\n projectIndex,\r\n facilityIndex,\r\n 'eiaDocumentProvided'\r\n );\r\n const eiaDocumentControl = this.getNewGenertorControl(\r\n projectIndex,\r\n facilityIndex,\r\n 'eiaDocument'\r\n );\r\n const expectedDateOfEiaControl = this.getNewGenertorControl(\r\n projectIndex,\r\n facilityIndex,\r\n 'expectedDateOfEIA'\r\n );\r\n const rodIssuedControl = this.getNewGenertorControl(\r\n projectIndex,\r\n facilityIndex,\r\n 'rodIssued'\r\n );\r\n const rodDocumentControl = this.getNewGenertorControl(\r\n projectIndex,\r\n facilityIndex,\r\n 'rodDocument'\r\n );\r\n const noRODDocumentProvidedReasonControl = this.getNewGenertorControl(\r\n projectIndex,\r\n facilityIndex,\r\n 'noRODDocumentProvidedReason'\r\n );\r\n\r\n // YES\r\n if (\r\n !isNullOrUndefined(\r\n this.selectionChoices.find(\r\n (x) => x.entityLookupId === eiaCompletedControl.value\r\n )\r\n ) &&\r\n this.selectionChoices.find(\r\n (x) => x.entityLookupId === eiaCompletedControl.value\r\n ).value === 'Yes'\r\n ) {\r\n this.enableControl(\r\n eiaDocumentProvidedControl,\r\n [Validators.required],\r\n updateValidity\r\n );\r\n this.enableControl(\r\n expectedDateOfEiaControl,\r\n [Validators.required],\r\n updateValidity\r\n );\r\n if (eiaDocumentProvidedControl.value) {\r\n this.enableControl(\r\n eiaDocumentControl,\r\n [Validators.required],\r\n updateValidity\r\n );\r\n } else {\r\n this.disableControl(eiaDocumentControl);\r\n }\r\n this.enableControl(\r\n rodIssuedControl,\r\n [Validators.required],\r\n updateValidity\r\n );\r\n if (rodIssuedControl.value) {\r\n this.enableControl(\r\n rodDocumentControl,\r\n [Validators.required],\r\n updateValidity\r\n );\r\n } else {\r\n this.disableControl(rodDocumentControl);\r\n }\r\n this.enableControl(\r\n noRODDocumentProvidedReasonControl,\r\n [Validators.required],\r\n updateValidity\r\n );\r\n // NO or NOT APPLICABLE\r\n } else {\r\n this.disableControl(eiaDocumentProvidedControl);\r\n if (eiaDocumentProvidedControl.value) {\r\n this.enableControl(\r\n eiaDocumentControl,\r\n [Validators.required],\r\n updateValidity\r\n );\r\n } else {\r\n this.disableControl(eiaDocumentControl);\r\n }\r\n this.disableControl(expectedDateOfEiaControl, updateValidity);\r\n\r\n if (eiaDocumentProvidedControl.value) {\r\n this.enableControl(\r\n eiaDocumentControl,\r\n [Validators.required],\r\n updateValidity\r\n );\r\n } else {\r\n this.disableControl(eiaDocumentControl);\r\n }\r\n this.disableControl(rodIssuedControl, updateValidity);\r\n if (rodIssuedControl.value) {\r\n this.enableControl(\r\n rodDocumentControl,\r\n [Validators.required],\r\n updateValidity\r\n );\r\n } else {\r\n this.disableControl(rodDocumentControl);\r\n }\r\n this.disableControl(\r\n noRODDocumentProvidedReasonControl,\r\n updateValidity\r\n );\r\n }\r\n }\r\n\r\n public changeEIADocumentControls(\r\n projectIndex: number,\r\n facilityIndex: number,\r\n updateValidity: boolean = true\r\n ): void {\r\n const eiaCompletedControl = this.getNewGenertorControl(\r\n projectIndex,\r\n facilityIndex,\r\n 'eiaCompletedLookupId'\r\n );\r\n const eiaDocumentProvidedControl = this.getNewGenertorControl(\r\n projectIndex,\r\n facilityIndex,\r\n 'eiaDocumentProvided'\r\n );\r\n const eiaDocumentControl = this.getNewGenertorControl(\r\n projectIndex,\r\n facilityIndex,\r\n 'eiaDocument'\r\n );\r\n const expectedDateOfEiaControl = this.getNewGenertorControl(\r\n projectIndex,\r\n facilityIndex,\r\n 'expectedDateOfEIA'\r\n );\r\n\r\n // YES\r\n if (\r\n !isNullOrUndefined(\r\n this.selectionChoices.find(\r\n (x) => x.entityLookupId === eiaCompletedControl.value\r\n )\r\n ) &&\r\n this.selectionChoices.find(\r\n (x) => x.entityLookupId === eiaCompletedControl.value\r\n ).value === 'Yes'\r\n ) {\r\n if (eiaDocumentProvidedControl.value) {\r\n this.enableControl(\r\n eiaDocumentControl,\r\n [Validators.required],\r\n updateValidity\r\n );\r\n this.disableControl(expectedDateOfEiaControl, updateValidity);\r\n } else {\r\n this.enableControl(\r\n expectedDateOfEiaControl,\r\n [Validators.required],\r\n updateValidity\r\n );\r\n this.disableControl(eiaDocumentControl);\r\n }\r\n } else {\r\n // NO or N/A\r\n this.disableControl(expectedDateOfEiaControl, updateValidity);\r\n this.disableControl(eiaDocumentProvidedControl, updateValidity);\r\n if (eiaDocumentProvidedControl.value) {\r\n this.enableControl(\r\n eiaDocumentControl,\r\n [Validators.required],\r\n updateValidity\r\n );\r\n } else {\r\n this.disableControl(eiaDocumentControl);\r\n }\r\n }\r\n }\r\n\r\n public changeRODControls(\r\n projectIndex: number,\r\n facilityIndex: number,\r\n updateValidity: boolean = true\r\n ): void {\r\n const eiaCompletedControl = this.getNewGenertorControl(\r\n projectIndex,\r\n facilityIndex,\r\n 'eiaCompletedLookupId'\r\n );\r\n const rodIssuedControl = this.getNewGenertorControl(\r\n projectIndex,\r\n facilityIndex,\r\n 'rodIssued'\r\n );\r\n const rodDocumentControl = this.getNewGenertorControl(\r\n projectIndex,\r\n facilityIndex,\r\n 'rodDocument'\r\n );\r\n const noRODDocumentProvidedReasonControl = this.getNewGenertorControl(\r\n projectIndex,\r\n facilityIndex,\r\n 'noRODDocumentProvidedReason'\r\n );\r\n\r\n // YES\r\n if (\r\n !isNullOrUndefined(\r\n this.selectionChoices.find(\r\n (x) => x.entityLookupId === eiaCompletedControl.value\r\n )\r\n ) &&\r\n this.selectionChoices.find(\r\n (x) => x.entityLookupId === eiaCompletedControl.value\r\n ).value === 'Yes'\r\n ) {\r\n if (rodIssuedControl.value) {\r\n this.enableControl(\r\n noRODDocumentProvidedReasonControl,\r\n [Validators.required],\r\n updateValidity\r\n );\r\n this.enableControl(\r\n rodDocumentControl,\r\n [Validators.required],\r\n updateValidity\r\n );\r\n this.disableControl(\r\n noRODDocumentProvidedReasonControl,\r\n updateValidity\r\n );\r\n } else {\r\n this.disableControl(\r\n noRODDocumentProvidedReasonControl,\r\n updateValidity\r\n );\r\n this.disableControl(rodDocumentControl);\r\n this.enableControl(\r\n noRODDocumentProvidedReasonControl,\r\n [Validators.required],\r\n updateValidity\r\n );\r\n }\r\n } else {\r\n // NO or N/A\r\n this.disableControl(\r\n noRODDocumentProvidedReasonControl,\r\n updateValidity\r\n );\r\n this.disableControl(rodDocumentControl);\r\n this.disableControl(rodIssuedControl);\r\n if (rodIssuedControl.value) {\r\n this.enableControl(\r\n rodDocumentControl,\r\n [Validators.required],\r\n updateValidity\r\n );\r\n } else {\r\n this.disableControl(rodDocumentControl);\r\n }\r\n }\r\n }\r\n\r\n public changeACSAPermitRequiredControls(\r\n projectIndex: number,\r\n facilityIndex: number,\r\n updateValidity: boolean = true\r\n ): void {\r\n const acsaPermitRequiredControl = this.getNewGenertorControl(\r\n projectIndex,\r\n facilityIndex,\r\n 'acsaPermitRequiredLookupId'\r\n );\r\n const acsaDocumentControl = this.getNewGenertorControl(\r\n projectIndex,\r\n facilityIndex,\r\n 'acsaDocument'\r\n );\r\n const noACSADocumentProvidedReasonControl = this.getNewGenertorControl(\r\n projectIndex,\r\n facilityIndex,\r\n 'noACSADocumentProvidedReason'\r\n );\r\n // YES\r\n if (\r\n !isNullOrUndefined(\r\n this.selectionChoices.find(\r\n (x) => x.entityLookupId === acsaPermitRequiredControl.value\r\n )\r\n ) &&\r\n this.selectionChoices.find(\r\n (x) => x.entityLookupId === acsaPermitRequiredControl.value\r\n ).value === 'Yes'\r\n ) {\r\n this.enableControl(\r\n acsaDocumentControl,\r\n [Validators.required],\r\n updateValidity\r\n );\r\n if (isNullOrUndefined(acsaDocumentControl.value)) {\r\n this.enableControl(\r\n noACSADocumentProvidedReasonControl,\r\n [Validators.required],\r\n updateValidity\r\n );\r\n } else {\r\n this.disableControl(\r\n noACSADocumentProvidedReasonControl,\r\n updateValidity\r\n );\r\n }\r\n // NO or NOT APPLICABLE\r\n } else {\r\n this.disableControl(acsaDocumentControl);\r\n this.disableControl(\r\n noACSADocumentProvidedReasonControl,\r\n updateValidity\r\n );\r\n }\r\n }\r\n\r\n public changeGeotechnicalStudyRequiredControls(\r\n projectIndex: number,\r\n facilityIndex: number,\r\n updateValidity: boolean = true\r\n ): void {\r\n const geotechnicalStudyRequiredControl = this.getNewGenertorControl(\r\n projectIndex,\r\n facilityIndex,\r\n 'geotechnicalStudyRequiredLookupId'\r\n );\r\n const geotechnicalStudyApprovedControl = this.getNewGenertorControl(\r\n projectIndex,\r\n facilityIndex,\r\n 'geotechnicalStudyApprovedLookupId'\r\n );\r\n const geotechnicalDocumentProvidedControl = this.getNewGenertorControl(\r\n projectIndex,\r\n facilityIndex,\r\n 'geotechnicalDocumentProvided'\r\n );\r\n const geotechnicalDocumentControl = this.getNewGenertorControl(\r\n projectIndex,\r\n facilityIndex,\r\n 'geotechnicalDocument'\r\n );\r\n const noGeotechnicalDocumentProvidedReasonControl = this.getNewGenertorControl(\r\n projectIndex,\r\n facilityIndex,\r\n 'noGeotechnicalDocumentProvidedReason'\r\n );\r\n\r\n // YES\r\n if (\r\n !isNullOrUndefined(\r\n this.selectionChoices.find(\r\n (x) =>\r\n x.entityLookupId ===\r\n geotechnicalStudyRequiredControl.value\r\n )\r\n ) &&\r\n this.selectionChoices.find(\r\n (x) =>\r\n x.entityLookupId === geotechnicalStudyRequiredControl.value\r\n ).value === 'Yes'\r\n ) {\r\n this.enableControl(\r\n geotechnicalStudyApprovedControl,\r\n [Validators.required],\r\n updateValidity\r\n );\r\n this.enableControl(\r\n geotechnicalDocumentProvidedControl,\r\n [Validators.required],\r\n updateValidity\r\n );\r\n this.disableControl(geotechnicalDocumentControl);\r\n this.enableControl(\r\n noGeotechnicalDocumentProvidedReasonControl,\r\n [Validators.required],\r\n updateValidity\r\n );\r\n // NO or NOT APPLICABLE\r\n } else {\r\n this.disableControl(geotechnicalStudyApprovedControl);\r\n this.disableControl(geotechnicalDocumentProvidedControl);\r\n this.disableControl(geotechnicalDocumentControl);\r\n this.disableControl(\r\n noGeotechnicalDocumentProvidedReasonControl,\r\n updateValidity\r\n );\r\n }\r\n }\r\n\r\n public changeGeotechnicalStudyDocumentControls(\r\n projectIndex: number,\r\n facilityIndex: number,\r\n updateValidity: boolean = true\r\n ): void {\r\n const geotechnicalDocumentProvidedControl = this.getNewGenertorControl(\r\n projectIndex,\r\n facilityIndex,\r\n 'geotechnicalDocumentProvided'\r\n );\r\n const geotechnicalDocumentControl = this.getNewGenertorControl(\r\n projectIndex,\r\n facilityIndex,\r\n 'geotechnicalDocument'\r\n );\r\n const noGeotechnicalDocumentProvidedReasonControl = this.getNewGenertorControl(\r\n projectIndex,\r\n facilityIndex,\r\n 'noGeotechnicalDocumentProvidedReason'\r\n );\r\n\r\n if (geotechnicalDocumentProvidedControl.value) {\r\n this.enableControl(\r\n geotechnicalDocumentControl,\r\n [Validators.required],\r\n updateValidity\r\n );\r\n this.disableControl(\r\n noGeotechnicalDocumentProvidedReasonControl,\r\n updateValidity\r\n );\r\n } else {\r\n this.enableControl(\r\n noGeotechnicalDocumentProvidedReasonControl,\r\n [Validators.required],\r\n updateValidity\r\n );\r\n this.disableControl(geotechnicalDocumentControl);\r\n }\r\n }\r\n public onDownloadNDAAgreementForm(): void {\r\n const element = document.getElementById('nda-template');\r\n this.ndaDownloading = true;\r\n if (!element) {\r\n console.error('Element not found for PDF generation');\r\n this.ndaDownloading = false;\r\n return;\r\n }\r\n html2canvas(element, { scale: 2 })\r\n .then((canvas) => {\r\n const pdf = new jsPDF('p', 'mm', 'a4');\r\n const pageWidth = pdf.internal.pageSize.width;\r\n const pageHeight = pdf.internal.pageSize.height;\r\n const margin = 20;\r\n const usableHeight = pageHeight - 2 * margin;\r\n const imgWidth = pageWidth - 2 * margin;\r\n const scaleRatio = imgWidth / canvas.width;\r\n const imgHeight = canvas.height * scaleRatio;\r\n\r\n let currentHeight = 0;\r\n\r\n while (currentHeight < imgHeight) {\r\n const canvasSection = document.createElement('canvas');\r\n canvasSection.width = canvas.width;\r\n canvasSection.height = Math.min(\r\n canvas.height - currentHeight,\r\n usableHeight / scaleRatio\r\n );\r\n\r\n const context = canvasSection.getContext('2d');\r\n if (context) {\r\n context.drawImage(\r\n canvas,\r\n 0,\r\n currentHeight / scaleRatio,\r\n canvas.width,\r\n canvasSection.height,\r\n 0,\r\n 0,\r\n canvasSection.width,\r\n canvasSection.height\r\n );\r\n\r\n const imgData = canvasSection.toDataURL('image/png');\r\n if (currentHeight > 0) {\r\n pdf.addPage();\r\n }\r\n\r\n pdf.addImage(\r\n imgData,\r\n 'PNG',\r\n margin,\r\n margin,\r\n imgWidth,\r\n canvasSection.height * scaleRatio,\r\n undefined,\r\n 'FAST'\r\n );\r\n\r\n currentHeight += canvasSection.height * scaleRatio;\r\n }\r\n }\r\n\r\n // Save the PDF\r\n pdf.save('NDA_Agreement.pdf');\r\n this.ndaDownloading = false;\r\n this.toastr.success('Document download complete');\r\n })\r\n .catch((error) => {\r\n console.error('Error generating PDF:', error);\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.ndaDownloading = false;\r\n });\r\n }\r\n public changeGridConnectionControls(\r\n projectIndex: number,\r\n facilityIndex: number,\r\n updateValidity: boolean = true\r\n ): void {\r\n const gridConnectionApplicationMadeControl = this.getNewGenertorControl(\r\n projectIndex,\r\n facilityIndex,\r\n 'gridConnectionApplicationMade'\r\n );\r\n const dateOfConnectionApplicationControl = this.getNewGenertorControl(\r\n projectIndex,\r\n facilityIndex,\r\n 'dateOfConnectionApplication'\r\n );\r\n const plannedDateOfConnectionApplicationControl = this.getNewGenertorControl(\r\n projectIndex,\r\n facilityIndex,\r\n 'plannedDateOfConnectionApplication'\r\n );\r\n\r\n if (gridConnectionApplicationMadeControl.value) {\r\n this.enableControl(\r\n dateOfConnectionApplicationControl,\r\n [],\r\n updateValidity\r\n );\r\n this.disableControl(plannedDateOfConnectionApplicationControl);\r\n } else {\r\n this.enableControl(\r\n plannedDateOfConnectionApplicationControl,\r\n [],\r\n updateValidity\r\n );\r\n this.disableControl(dateOfConnectionApplicationControl);\r\n }\r\n }\r\n\r\n private enableControl(\r\n control: AbstractControl,\r\n validators: ValidatorFn[],\r\n updateValidity: boolean = true\r\n ) {\r\n control.enable();\r\n control.setValidators(validators);\r\n if (updateValidity) {\r\n control.markAsTouched();\r\n control.updateValueAndValidity();\r\n }\r\n }\r\n\r\n private disableControl(\r\n control: AbstractControl,\r\n updateValidity: boolean = true\r\n ): void {\r\n control.disable();\r\n control.clearValidators();\r\n if (updateValidity) {\r\n control.markAsTouched();\r\n control.updateValueAndValidity();\r\n }\r\n }\r\n\r\n private getFacilityControl(\r\n projectIndex: number,\r\n facilityIndex: number,\r\n controlName: string\r\n ): AbstractControl {\r\n return ((this.generatorApplicationForm.controls\r\n .generatorProjects as FormArray)\r\n .at(projectIndex)\r\n .get('facilities') as FormArray)\r\n .at(facilityIndex)\r\n .get(controlName);\r\n }\r\n\r\n private getNewGenertorControl(\r\n projectIndex: number,\r\n facilityIndex: number,\r\n controlName: string\r\n ): AbstractControl {\r\n return this.getFacilityControl(\r\n projectIndex,\r\n facilityIndex,\r\n 'newFacility'\r\n ).get(controlName);\r\n }\r\n\r\n private getExistingGeneratorControl(\r\n projectIndex: number,\r\n facilityIndex: number,\r\n controlName: string\r\n ): AbstractControl {\r\n return this.getFacilityControl(\r\n projectIndex,\r\n facilityIndex,\r\n 'existingFacility'\r\n ).get(controlName);\r\n }\r\n\r\n private initProjects(): void {\r\n const projects = new FormArray([]);\r\n\r\n this.generatorApplication.generatorProjects.forEach((project) => {\r\n const facilities = new FormArray([]);\r\n project.facilities.forEach((facility) => {\r\n facilities.push(\r\n this.initFacilityForm(\r\n project.isMicroScale,\r\n facility.isExistingFacility,\r\n facility\r\n )\r\n );\r\n });\r\n const formGroup = this.initProjectForm();\r\n formGroup.addControl('facilities', facilities);\r\n formGroup.addControl(\r\n 'generatorProjectId',\r\n new FormControl(project.generatorProjectId)\r\n );\r\n projects.push(formGroup);\r\n });\r\n\r\n this.generatorApplicationForm = new FormGroup({\r\n generatorProjects: projects,\r\n });\r\n this.evaluateState();\r\n }\r\n\r\n private initProjectForm(): FormGroup {\r\n return new FormGroup({});\r\n }\r\n\r\n private initFacilityForm(\r\n isMicroScale: boolean,\r\n isExisting: boolean,\r\n facility: GeneratorProjectFacility\r\n ): FormGroup {\r\n const group = new FormGroup({\r\n structuralEngineerCertificate: new FormControl(null, [\r\n Validators.required,\r\n ]),\r\n isRoofTopBased: new FormControl(\r\n isNullOrUndefined(facility.isRoofTopBased)\r\n ? false\r\n : facility.isRoofTopBased\r\n ),\r\n isOwnedByIPP: new FormControl(\r\n isNullOrUndefined(facility.isOwnedByIPP)\r\n ? false\r\n : facility.isOwnedByIPP,\r\n [Validators.required]\r\n ),\r\n isOfficialLeaseInPlace: new FormControl(\r\n {\r\n value: isNullOrUndefined(facility.isOfficialLeaseInPlace)\r\n ? false\r\n : facility.isOfficialLeaseInPlace,\r\n disabled: false,\r\n },\r\n [Validators.required]\r\n ),\r\n leaseStatusComment: new FormControl(\r\n {\r\n value: isNullOrUndefined(facility.leaseStatusComment)\r\n ? null\r\n : facility.leaseStatusComment,\r\n disabled: false,\r\n },\r\n [Validators.required]\r\n ),\r\n leaseTitleHolderName: new FormControl({\r\n value: isNullOrUndefined(facility.leaseTitleHolderName)\r\n ? null\r\n : facility.leaseTitleHolderName,\r\n disabled: true,\r\n }),\r\n isRezoningRequired: new FormControl(\r\n isNullOrUndefined(facility.isRezoningRequired)\r\n ? false\r\n : facility.isRezoningRequired,\r\n [Validators.required]\r\n ),\r\n rezoningApplied: new FormControl({\r\n value: isNullOrUndefined(facility.rezoningApplied)\r\n ? false\r\n : facility.rezoningApplied,\r\n disabled: true,\r\n }),\r\n rezoningApplicationDate: new FormControl({\r\n value: isNullOrUndefined(facility.rezoningApplicationDate)\r\n ? null\r\n : facility.rezoningApplicationDate,\r\n disabled: true,\r\n }),\r\n rezoningResultObtained: new FormControl({\r\n value: isNullOrUndefined(facility.rezoningResultObtained)\r\n ? false\r\n : facility.rezoningResultObtained,\r\n disabled: true,\r\n }),\r\n rezoningApplicationResult: new FormControl({\r\n value: isNullOrUndefined(facility.rezoningApplicationResult)\r\n ? false\r\n : facility.rezoningApplicationResult,\r\n disabled: true,\r\n }),\r\n numberOfOperationalMonths: new FormControl(\r\n isNullOrUndefined(facility.numberOfOperationalMonths)\r\n ? null\r\n : facility.numberOfOperationalMonths,\r\n [Validators.required, Validators.min(0), Validators.max(12)]\r\n ),\r\n ppaDurationRequested: new FormControl(\r\n isNullOrUndefined(facility.ppaDurationRequested)\r\n ? null\r\n : facility.ppaDurationRequested,\r\n [Validators.required, Validators.min(5), Validators.max(20)]\r\n ),\r\n maintenanceDowntimeInWeeks: new FormControl(\r\n isNullOrUndefined(facility.maintenanceDowntimeInWeeks)\r\n ? null\r\n : facility.maintenanceDowntimeInWeeks\r\n ),\r\n plannedLifeExpectancy: new FormControl(\r\n isNullOrUndefined(facility.plannedLifeExpectancy)\r\n ? null\r\n : facility.plannedLifeExpectancy,\r\n [Validators.min(0)]\r\n ),\r\n minimumRequiredPriceWinter: new FormControl(\r\n isNullOrUndefined(facility.minimumRequiredPriceWinter)\r\n ? null\r\n : facility.minimumRequiredPriceWinter,\r\n [Validators.required, Validators.min(0.0)]\r\n ),\r\n minimumRequiredPriceKwSummer: new FormControl(\r\n isNullOrUndefined(facility.minimumRequiredPriceKwSummer)\r\n ? null\r\n : facility.minimumRequiredPriceKwSummer,\r\n [Validators.required, Validators.min(0.0)]\r\n ),\r\n plannedExpansion: new FormControl(\r\n isNullOrUndefined(facility.plannedExpansion)\r\n ? false\r\n : facility.plannedExpansion,\r\n [Validators.required]\r\n ),\r\n plannedCommissioningDate: new FormControl({\r\n value: isNullOrUndefined(facility.plannedCommissioningDate)\r\n ? null\r\n : facility.plannedCommissioningDate,\r\n disabled: true,\r\n }),\r\n expectedExtraCapacity: new FormControl(\r\n {\r\n value: isNullOrUndefined(facility.expectedExtraCapacity)\r\n ? null\r\n : facility.expectedExtraCapacity,\r\n disabled: true,\r\n },\r\n [Validators.required, Validators.min(0.0)]\r\n ),\r\n generatorProjectFacilityId: new FormControl(\r\n facility.generatorProjectFacilityId\r\n ),\r\n hasExistingNERSALicence: new FormControl(\r\n isNullOrUndefined(facility.hasExistingNERSALicence)\r\n ? false\r\n : facility.hasExistingNERSALicence,\r\n []\r\n ),\r\n nersaGenerationLicence: new FormControl({\r\n value: isNullOrUndefined(facility.nersaGenerationLicence)\r\n ? null\r\n : facility.nersaGenerationLicence,\r\n disabled: true,\r\n }),\r\n noNERSAGenerationLicenceProvidedReason: new FormControl({\r\n value: isNullOrUndefined(\r\n facility.noNERSAGenerationLicenceProvidedReason\r\n )\r\n ? null\r\n : facility.noNERSAGenerationLicenceProvidedReason,\r\n disabled: false,\r\n }),\r\n isIRPRequestSubmitted: new FormControl(\r\n isNullOrUndefined(facility.isIRPRequestSubmitted)\r\n ? false\r\n : facility.isIRPRequestSubmitted\r\n ),\r\n deviationApprovalObtained: new FormControl({\r\n value: isNullOrUndefined(facility.deviationApprovalObtained)\r\n ? false\r\n : facility.deviationApprovalObtained,\r\n disabled: true,\r\n }),\r\n deviationApproval: new FormControl({\r\n value: isNullOrUndefined(facility.deviationApproval)\r\n ? null\r\n : facility.deviationApproval,\r\n disabled: true,\r\n }),\r\n noDeviationApprovalObtainedReason: new FormControl({\r\n value: isNullOrUndefined(\r\n facility.noDeviationApprovalObtainedReason\r\n )\r\n ? null\r\n : facility.noDeviationApprovalObtainedReason,\r\n disabled: true,\r\n }),\r\n });\r\n\r\n if (isMicroScale) {\r\n group.setControl(\r\n 'isRoofTopBased',\r\n new FormControl(\r\n isNullOrUndefined(facility.isRoofTopBased)\r\n ? false\r\n : facility.isRoofTopBased,\r\n [Validators.required]\r\n )\r\n );\r\n group.setControl(\r\n 'structuralEngineerCertificate',\r\n new FormControl(\r\n isNullOrUndefined(facility.structuralEngineerCertificate)\r\n ? null\r\n : facility.structuralEngineerCertificate,\r\n [Validators.required]\r\n )\r\n );\r\n group.setControl(\r\n 'hasExistingNERSALicence',\r\n new FormControl(\r\n isNullOrUndefined(facility.hasExistingNERSALicence)\r\n ? false\r\n : facility.hasExistingNERSALicence\r\n )\r\n );\r\n group.setControl(\r\n 'noNERSAGenerationLicenceProvidedReason',\r\n new FormControl({\r\n value: isNullOrUndefined(\r\n facility.noNERSAGenerationLicenceProvidedReason\r\n )\r\n ? null\r\n : facility.noNERSAGenerationLicenceProvidedReason,\r\n disabled: false,\r\n })\r\n );\r\n group.setControl(\r\n 'isIRPRequestSubmitted',\r\n new FormControl(\r\n isNullOrUndefined(facility.isIRPRequestSubmitted)\r\n ? false\r\n : facility.isIRPRequestSubmitted\r\n )\r\n );\r\n }\r\n if (isExisting) {\r\n group.setControl(\r\n 'existingFacility',\r\n this.initExistingFacilityForm(\r\n isMicroScale,\r\n facility.existingFacility\r\n )\r\n );\r\n } else {\r\n group.setControl(\r\n 'newFacility',\r\n this.initNewFacilityForm(isMicroScale, facility.newFacility)\r\n );\r\n }\r\n return group;\r\n }\r\n\r\n private initExistingFacilityForm(\r\n isMicroScale: boolean,\r\n existingFacility: ExistingFacility\r\n ): FormGroup {\r\n const group = new FormGroup({\r\n isWebEnabledMetersInstalled: new FormControl(\r\n isNullOrUndefined(existingFacility.isWebEnabledMetersInstalled)\r\n ? false\r\n : existingFacility.isWebEnabledMetersInstalled,\r\n [Validators.required]\r\n ),\r\n webMeterInstallationDate: new FormControl(\r\n isNullOrUndefined(existingFacility.webMeterInstallationDate)\r\n ? null\r\n : existingFacility.webMeterInstallationDate,\r\n [Validators.required]\r\n ),\r\n webMeterMakeAndModel: new FormControl(\r\n isNullOrUndefined(existingFacility.webMeterMakeAndModel)\r\n ? null\r\n : existingFacility.webMeterMakeAndModel,\r\n [Validators.required]\r\n ),\r\n meteringCertificate: new FormControl(\r\n isNullOrUndefined(existingFacility.meteringCertificate)\r\n ? null\r\n : existingFacility.meteringCertificate,\r\n [Validators.required]\r\n ),\r\n exportGenerationCapacity: new FormControl(\r\n isNullOrUndefined(existingFacility.exportGenerationCapacity)\r\n ? null\r\n : existingFacility.exportGenerationCapacity,\r\n [\r\n Validators.required,\r\n Validators.min(0.0),\r\n Validators.max(999.99),\r\n ]\r\n ),\r\n generationHistory: this.initYearlyDataForm(\r\n existingFacility.generationHistory\r\n ),\r\n connectionUseOfSystemsDocument: new FormControl(\r\n isNullOrUndefined(\r\n existingFacility.connectionUseOfSystemsDocument\r\n )\r\n ? null\r\n : existingFacility.connectionUseOfSystemsDocument\r\n ),\r\n existingOffTaker: new FormControl(\r\n isNullOrUndefined(existingFacility.existingOffTaker)\r\n ? null\r\n : existingFacility.existingOffTaker\r\n ),\r\n expiryDateOfExistingPPA: new FormControl(\r\n isNullOrUndefined(existingFacility.expiryDateOfExistingPPA)\r\n ? null\r\n : existingFacility.expiryDateOfExistingPPA\r\n ),\r\n });\r\n\r\n if (!isMicroScale) {\r\n group.setControl(\r\n 'isCheckMetersInstalled',\r\n new FormControl(\r\n isNullOrUndefined(existingFacility.isCheckMetersInstalled)\r\n ? false\r\n : existingFacility.isCheckMetersInstalled,\r\n [Validators.required]\r\n )\r\n );\r\n }\r\n\r\n return group;\r\n }\r\n\r\n private initNewFacilityForm(\r\n isMicroScale: boolean,\r\n newFacility: NewFacility\r\n ): FormGroup {\r\n const group = new FormGroup({\r\n plannedGeneration: this.initYearlyDataForm(\r\n newFacility.plannedGeneration\r\n ),\r\n });\r\n\r\n if (isMicroScale) {\r\n group.addControl(\r\n 'electricityAndMeterDeptsNotified',\r\n new FormControl(\r\n isNullOrUndefined(\r\n newFacility.electricityAndMeterDeptsNotified\r\n )\r\n ? false\r\n : newFacility.electricityAndMeterDeptsNotified,\r\n [Validators.required]\r\n )\r\n );\r\n group.addControl(\r\n 'plannedStartDate',\r\n new FormControl(\r\n isNullOrUndefined(newFacility.plannedStartDate)\r\n ? null\r\n : newFacility.plannedStartDate,\r\n [Validators.required]\r\n )\r\n );\r\n group.addControl(\r\n 'projectProgressStatus',\r\n new FormControl(\r\n isNullOrUndefined(newFacility.projectProgressStatus)\r\n ? null\r\n : newFacility.projectProgressStatus,\r\n [Validators.required]\r\n )\r\n );\r\n group.addControl(\r\n 'constructionStartDate',\r\n new FormControl(\r\n isNullOrUndefined(newFacility.constructionStartDate)\r\n ? null\r\n : newFacility.constructionStartDate,\r\n [Validators.required]\r\n )\r\n );\r\n group.addControl(\r\n 'eiaCompletedLookupId',\r\n new FormControl(\r\n isNullOrUndefined(newFacility.eiaCompletedLookupId)\r\n ? null\r\n : newFacility.eiaCompletedLookupId,\r\n [Validators.required]\r\n )\r\n );\r\n group.addControl(\r\n 'eiaDocumentProvided',\r\n new FormControl({\r\n value: isNullOrUndefined(newFacility.eiaDocumentProvided)\r\n ? false\r\n : newFacility.eiaDocumentProvided,\r\n disabled: true,\r\n })\r\n );\r\n group.addControl(\r\n 'eiaDocument',\r\n new FormControl({\r\n value: isNullOrUndefined(newFacility.eiaDocument)\r\n ? null\r\n : newFacility.eiaDocument,\r\n disabled: true,\r\n })\r\n );\r\n group.addControl(\r\n 'expectedDateOfEIA',\r\n new FormControl({\r\n value: isNullOrUndefined(newFacility.expectedDateOfEIA)\r\n ? null\r\n : newFacility.expectedDateOfEIA,\r\n disabled: true,\r\n })\r\n );\r\n group.addControl(\r\n 'rodIssued',\r\n new FormControl(\r\n isNullOrUndefined(newFacility.rodIssued)\r\n ? false\r\n : newFacility.rodIssued,\r\n [Validators.required]\r\n )\r\n );\r\n group.addControl(\r\n 'rodDocument',\r\n new FormControl({\r\n value: isNullOrUndefined(newFacility.rodDocument)\r\n ? null\r\n : newFacility.rodDocument,\r\n disabled: true,\r\n })\r\n );\r\n group.addControl(\r\n 'noRODDocumentProvidedReason',\r\n new FormControl({\r\n value: isNullOrUndefined(\r\n newFacility.noRODDocumentProvidedReason\r\n )\r\n ? null\r\n : newFacility.noRODDocumentProvidedReason,\r\n disabled: true,\r\n })\r\n );\r\n group.addControl(\r\n 'acsaPermitRequiredLookupId',\r\n new FormControl(\r\n isNullOrUndefined(newFacility.acsaPermitRequiredLookupId)\r\n ? null\r\n : newFacility.acsaPermitRequiredLookupId,\r\n [Validators.required]\r\n )\r\n );\r\n group.addControl(\r\n 'acsaDocumentProvided',\r\n new FormControl({\r\n value: isNullOrUndefined(newFacility.acsaDocumentProvided)\r\n ? false\r\n : newFacility.acsaDocumentProvided,\r\n disabled: true,\r\n })\r\n );\r\n group.addControl(\r\n 'acsaDocument',\r\n new FormControl({\r\n value: isNullOrUndefined(newFacility.acsaDocument)\r\n ? null\r\n : newFacility.acsaDocument,\r\n disabled: true,\r\n })\r\n );\r\n group.addControl(\r\n 'noACSADocumentProvidedReason',\r\n new FormControl({\r\n value: isNullOrUndefined(\r\n newFacility.noACSADocumentProvidedReason\r\n )\r\n ? null\r\n : newFacility.noACSADocumentProvidedReason,\r\n disabled: true,\r\n })\r\n );\r\n group.addControl(\r\n 'geotechnicalStudyRequiredLookupId',\r\n new FormControl(\r\n isNullOrUndefined(\r\n newFacility.geotechnicalStudyRequiredLookupId\r\n )\r\n ? null\r\n : newFacility.geotechnicalStudyRequiredLookupId,\r\n [Validators.required]\r\n )\r\n );\r\n group.addControl(\r\n 'geotechnicalStudyApprovedLookupId',\r\n new FormControl({\r\n value: isNullOrUndefined(\r\n newFacility.geotechnicalStudyApprovedLookupId\r\n )\r\n ? null\r\n : newFacility.geotechnicalStudyApprovedLookupId,\r\n disabled: true,\r\n })\r\n );\r\n group.addControl(\r\n 'geotechnicalDocumentProvided',\r\n new FormControl({\r\n value: isNullOrUndefined(\r\n newFacility.geotechnicalDocumentProvided\r\n )\r\n ? false\r\n : newFacility.geotechnicalDocumentProvided,\r\n disabled: true,\r\n })\r\n );\r\n group.addControl(\r\n 'geotechnicalDocument',\r\n new FormControl({\r\n value: isNullOrUndefined(newFacility.geotechnicalDocument)\r\n ? null\r\n : newFacility.geotechnicalDocument,\r\n disabled: true,\r\n })\r\n );\r\n group.addControl(\r\n 'noGeotechnicalDocumentProvidedReason',\r\n new FormControl({\r\n value: isNullOrUndefined(\r\n newFacility.noGeotechnicalDocumentProvidedReason\r\n )\r\n ? null\r\n : newFacility.noGeotechnicalDocumentProvidedReason,\r\n disabled: true,\r\n })\r\n );\r\n group.addControl(\r\n 'gridConnectionApplicationMade',\r\n new FormControl(\r\n isNullOrUndefined(newFacility.gridConnectionApplicationMade)\r\n ? false\r\n : newFacility.gridConnectionApplicationMade,\r\n [Validators.required]\r\n )\r\n );\r\n group.addControl(\r\n 'dateOfConnectionApplication',\r\n new FormControl({\r\n value: isNullOrUndefined(\r\n newFacility.dateOfConnectionApplication\r\n )\r\n ? null\r\n : newFacility.dateOfConnectionApplication,\r\n disabled: true,\r\n })\r\n );\r\n group.addControl(\r\n 'plannedDateOfConnectionApplication',\r\n new FormControl(\r\n isNullOrUndefined(\r\n newFacility.plannedDateOfConnectionApplication\r\n )\r\n ? null\r\n : newFacility.plannedDateOfConnectionApplication,\r\n [Validators.required]\r\n )\r\n );\r\n group.addControl(\r\n 'expectedDateOfGridConnection',\r\n new FormControl(\r\n isNullOrUndefined(newFacility.expectedDateOfGridConnection)\r\n ? null\r\n : newFacility.expectedDateOfGridConnection,\r\n [Validators.required]\r\n )\r\n );\r\n group.addControl(\r\n 'preferredDebtProvider',\r\n new FormControl(\r\n isNullOrUndefined(newFacility.preferredDebtProvider)\r\n ? null\r\n : newFacility.preferredDebtProvider,\r\n [Validators.required]\r\n )\r\n );\r\n group.addControl(\r\n 'targetDebtEquityRatio',\r\n new FormControl(\r\n isNullOrUndefined(newFacility.targetDebtEquityRatio)\r\n ? null\r\n : newFacility.targetDebtEquityRatio,\r\n [\r\n Validators.required,\r\n Validators.min(0),\r\n Validators.max(100),\r\n ]\r\n )\r\n );\r\n group.addControl(\r\n 'equityFundingInPlace',\r\n new FormControl(\r\n isNullOrUndefined(newFacility.equityFundingInPlace)\r\n ? false\r\n : newFacility.equityFundingInPlace,\r\n [Validators.required]\r\n )\r\n );\r\n group.addControl(\r\n 'financialPlan',\r\n new FormControl(\r\n isNullOrUndefined(newFacility.financialPlan)\r\n ? null\r\n : newFacility.financialPlan,\r\n [Validators.required]\r\n )\r\n );\r\n } else {\r\n group.addControl(\r\n 'projectSubmittedIntoReippp',\r\n new FormControl(\r\n isNullOrUndefined(newFacility.projectSubmittedIntoReippp)\r\n ? false\r\n : newFacility.projectSubmittedIntoReippp\r\n )\r\n );\r\n group.addControl(\r\n 'roundOfReippp',\r\n new FormControl({\r\n value: isNullOrUndefined(newFacility.roundOfReippp)\r\n ? null\r\n : newFacility.roundOfReippp,\r\n disabled: true,\r\n })\r\n );\r\n group.addControl(\r\n 'nearestSubstationName',\r\n new FormControl(\r\n isNullOrUndefined(newFacility.nearestSubstationName)\r\n ? null\r\n : newFacility.nearestSubstationName\r\n )\r\n );\r\n group.addControl(\r\n 'loadCapacityOfSubstation',\r\n new FormControl(\r\n isNullOrUndefined(newFacility.loadCapacityOfSubstation)\r\n ? null\r\n : newFacility.loadCapacityOfSubstation,\r\n [Validators.min(0.0)]\r\n )\r\n );\r\n group.addControl(\r\n 'budgetConnectionCostReceived',\r\n new FormControl(\r\n isNullOrUndefined(newFacility.budgetConnectionCostReceived)\r\n ? false\r\n : newFacility.budgetConnectionCostReceived,\r\n [Validators.required]\r\n )\r\n );\r\n group.addControl(\r\n 'budgetConnectionUpgradeCost',\r\n new FormControl(\r\n isNullOrUndefined(newFacility.budgetConnectionUpgradeCost)\r\n ? null\r\n : newFacility.budgetConnectionUpgradeCost,\r\n [Validators.max(99999999.99)]\r\n )\r\n );\r\n group.addControl(\r\n 'connectionAndUseOfSystemsAgreementInPlace',\r\n new FormControl(\r\n isNullOrUndefined(\r\n newFacility.connectionAndUseOfSystemsAgreementInPlace\r\n )\r\n ? false\r\n : newFacility.connectionAndUseOfSystemsAgreementInPlace,\r\n [Validators.required]\r\n )\r\n );\r\n }\r\n\r\n return group;\r\n }\r\n\r\n private initYearlyDataForm(generationData: GenerationData): FormGroup {\r\n return new FormGroup({\r\n january: new FormControl(\r\n isNullOrUndefined(generationData.january)\r\n ? null\r\n : generationData.january,\r\n [Validators.required, Validators.min(0.0)]\r\n ),\r\n february: new FormControl(\r\n isNullOrUndefined(generationData.february)\r\n ? null\r\n : generationData.february,\r\n [Validators.required, Validators.min(0.0)]\r\n ),\r\n march: new FormControl(\r\n isNullOrUndefined(generationData.march)\r\n ? null\r\n : generationData.march,\r\n [Validators.required, Validators.min(0.0)]\r\n ),\r\n april: new FormControl(\r\n isNullOrUndefined(generationData.april)\r\n ? null\r\n : generationData.april,\r\n [Validators.required, Validators.min(0.0)]\r\n ),\r\n may: new FormControl(\r\n isNullOrUndefined(generationData.may)\r\n ? null\r\n : generationData.may,\r\n [Validators.required, Validators.min(0.0)]\r\n ),\r\n june: new FormControl(\r\n isNullOrUndefined(generationData.june)\r\n ? null\r\n : generationData.june,\r\n [Validators.required, Validators.min(0.0)]\r\n ),\r\n july: new FormControl(\r\n isNullOrUndefined(generationData.july)\r\n ? null\r\n : generationData.july,\r\n [Validators.required, Validators.min(0.0)]\r\n ),\r\n august: new FormControl(\r\n isNullOrUndefined(generationData.august)\r\n ? null\r\n : generationData.august,\r\n [Validators.required, Validators.min(0.0)]\r\n ),\r\n september: new FormControl(\r\n isNullOrUndefined(generationData.september)\r\n ? null\r\n : generationData.september,\r\n [Validators.required, Validators.min(0.0)]\r\n ),\r\n october: new FormControl(\r\n isNullOrUndefined(generationData.october)\r\n ? null\r\n : generationData.october,\r\n [Validators.required, Validators.min(0.0)]\r\n ),\r\n november: new FormControl(\r\n isNullOrUndefined(generationData.november)\r\n ? null\r\n : generationData.november,\r\n [Validators.required, Validators.min(0.0)]\r\n ),\r\n december: new FormControl(\r\n isNullOrUndefined(generationData.december)\r\n ? null\r\n : generationData.december,\r\n [Validators.required, Validators.min(0.0)]\r\n ),\r\n });\r\n }\r\n\r\n /**\r\n * Should only be run once at the start after prepopulation is complete\r\n */\r\n private evaluateState(): void {\r\n let projectIndex = 0;\r\n this.generatorApplication.generatorProjects.forEach((project) => {\r\n let facilityIndex = 0;\r\n project.facilities.forEach((facility) => {\r\n this.changeRoofTopSelection(projectIndex, facilityIndex, false);\r\n this.changeLeaseControl(projectIndex, facilityIndex, false);\r\n this.changePropertyOwnerShip(\r\n projectIndex,\r\n facilityIndex,\r\n false\r\n );\r\n this.changeRezoningControls(projectIndex, facilityIndex, false);\r\n this.changeRezoningApplicationControls(\r\n projectIndex,\r\n facilityIndex,\r\n false\r\n );\r\n this.changeRezoningResultControl(\r\n projectIndex,\r\n facilityIndex,\r\n false\r\n );\r\n this.changePlannedExpansionControls(\r\n projectIndex,\r\n facilityIndex,\r\n false\r\n );\r\n\r\n if (!project.isMicroScale) {\r\n this.changeIRPControls(projectIndex, facilityIndex, false);\r\n this.changeIRPObtainedControls(\r\n projectIndex,\r\n facilityIndex,\r\n false\r\n );\r\n }\r\n\r\n if (facility.isExistingFacility) {\r\n this.changeWebEnabledControls(\r\n projectIndex,\r\n facilityIndex,\r\n false\r\n );\r\n if (!project.isMicroScale) {\r\n this.changeNersaLicenceControl(\r\n projectIndex,\r\n facilityIndex,\r\n false\r\n );\r\n }\r\n } else {\r\n if (!project.isMicroScale) {\r\n this.changeREIPPPControls(\r\n projectIndex,\r\n facilityIndex,\r\n false\r\n );\r\n this.changeBudgetConnectionControls(\r\n projectIndex,\r\n facilityIndex,\r\n false\r\n );\r\n } else {\r\n this.changeEIAControls(\r\n projectIndex,\r\n facilityIndex,\r\n false\r\n );\r\n this.changeEIADocumentControls(\r\n projectIndex,\r\n facilityIndex,\r\n false\r\n );\r\n this.changeRODControls(\r\n projectIndex,\r\n facilityIndex,\r\n false\r\n );\r\n this.changeACSAPermitRequiredControls(\r\n projectIndex,\r\n facilityIndex,\r\n false\r\n );\r\n this.changeGeotechnicalStudyRequiredControls(\r\n projectIndex,\r\n facilityIndex,\r\n false\r\n );\r\n this.changeGeotechnicalStudyDocumentControls(\r\n projectIndex,\r\n facilityIndex,\r\n false\r\n );\r\n this.changeGridConnectionControls(\r\n projectIndex,\r\n facilityIndex,\r\n false\r\n );\r\n }\r\n }\r\n facilityIndex++;\r\n });\r\n projectIndex++;\r\n });\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Injectable()\r\nexport class NERSAReportHistoryService {\r\n constructor(private httpClient: HttpClient) {}\r\n\r\n public getConsumerHistory(): Observable {\r\n return this.httpClient.get(\r\n API_URL + 'NersaReportHistory/GetNERSAConsumerHistory'\r\n );\r\n }\r\n\r\n public createConsumerHistoryEntry(fromDate: Date, toDate: Date) {\r\n return this.httpClient.post(\r\n API_URL +\r\n 'NersaReportHistory/CreateNERSAReportHistory?fromDate=' +\r\n fromDate.toISOString() +\r\n '&toDate=' +\r\n toDate.toISOString(),\r\n {}\r\n );\r\n }\r\n\r\n public getGeneratorHistory(): Observable {\r\n return this.httpClient.get(\r\n API_URL + 'NersaReportHistory/GetNERSAGeneratorHistory'\r\n );\r\n }\r\n\r\n public createGeneratorHistoryEntry(fromDate: Date, toDate: Date) {\r\n return this.httpClient.post(\r\n API_URL +\r\n 'NersaReportHistory/CreateNERSAReportHistoryGenerator?fromDate=' +\r\n fromDate.toISOString() +\r\n '&toDate=' +\r\n toDate.toISOString(),\r\n {}\r\n );\r\n }\r\n}\r\n","import { Component, OnInit, TemplateRef } from '@angular/core';\r\nimport { NERSAReportHistoryService } from '../nersa-report-history.service';\r\n\r\nimport { DocumentService } from '../../document/document.service';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { saveAs } from 'file-saver/FileSaver';\r\nimport { FormGroup, FormControl, Validators } from '@angular/forms';\r\nimport { BsModalRef, BsModalService } from 'ngx-bootstrap';\r\nimport { CommonService } from '../../../common/common-service';\r\nimport { ToastrService } from 'ngx-toastr';\r\n\r\n@Component({\r\n selector: 'app-nersa-consumer-report',\r\n templateUrl: './nersa-consumer-report.component.html',\r\n styleUrls: [\r\n '../../form.styles.scss',\r\n './nersa-consumer-report.component.scss',\r\n ],\r\n})\r\nexport class NersaConsumerReportComponent implements OnInit {\r\n public submitting: boolean = false;\r\n public downloadingReport: boolean = false;\r\n public errorMessage: string;\r\n public loading: boolean;\r\n public nersaReportHistory: any[];\r\n\r\n public newReportForm: FormGroup;\r\n private modalRef: BsModalRef;\r\n\r\n constructor(\r\n private nersaReportHistoryService: NERSAReportHistoryService,\r\n private toastr: ToastrService,\r\n private documentService: DocumentService,\r\n private modalService: BsModalService,\r\n private commonService: CommonService\r\n ) {}\r\n\r\n public ngOnInit() {\r\n this.loading = true;\r\n this.submitting = false;\r\n\r\n this.newReportForm = new FormGroup({\r\n fromDateControl: new FormControl(null, [Validators.required]),\r\n toDateControl: new FormControl(null, [Validators.required]),\r\n });\r\n\r\n this.getConsumerNERSAReportHistory();\r\n }\r\n\r\n public getConsumerNERSAReportHistory() {\r\n this.nersaReportHistoryService.getConsumerHistory().subscribe(\r\n (result) => {\r\n this.loading = false;\r\n this.nersaReportHistory = result;\r\n },\r\n (error) => {\r\n this.loading = false;\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n }\r\n\r\n public newClicked(template: TemplateRef): void {\r\n // Clear form\r\n this.newReportForm.reset();\r\n // Show Modal\r\n this.modalRef = this.modalService.show(template);\r\n }\r\n\r\n public onPopupSubmit() {\r\n this.commonService.validateAllFormFields(this.newReportForm);\r\n\r\n if (this.newReportForm.valid) {\r\n this.modalRef.hide();\r\n this.submitting = true;\r\n\r\n this.nersaReportHistoryService\r\n .createConsumerHistoryEntry(\r\n this.newReportForm.controls['fromDateControl']\r\n .value as Date,\r\n this.newReportForm.controls['toDateControl'].value as Date\r\n )\r\n .subscribe(\r\n () => {\r\n this.newReportForm.reset();\r\n this.toastr.success('submitted');\r\n this.getConsumerNERSAReportHistory();\r\n this.submitting = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.toastr.error(this.errorMessage);\r\n this.submitting = false;\r\n }\r\n );\r\n }\r\n }\r\n\r\n public onDownloadFile(row: any) {\r\n this.downloadingReport = true;\r\n this.documentService.downloadDocument(row.documentId).subscribe(\r\n (response) => {\r\n this.toastr.success('Document download complete');\r\n saveAs(response, row.fileName);\r\n this.downloadingReport = false;\r\n },\r\n () => {\r\n this.errorMessage = this.commonService.handleDocumentErrorMessage(\r\n 'NERSA consumer report'\r\n );\r\n this.downloadingReport = false;\r\n }\r\n );\r\n }\r\n}\r\n","import { Component, OnInit, TemplateRef } from '@angular/core';\r\nimport { NERSAReportHistoryService } from '../nersa-report-history.service';\r\n\r\nimport { DocumentService } from '../../document/document.service';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { saveAs } from 'file-saver/FileSaver';\r\nimport { FormGroup, FormControl, Validators } from '@angular/forms';\r\nimport { BsModalRef, BsModalService } from 'ngx-bootstrap';\r\nimport { CommonService } from '../../../common/common-service';\r\nimport { ToastrService } from 'ngx-toastr';\r\n\r\n@Component({\r\n selector: 'app-nersa-generator-report',\r\n templateUrl: './nersa-generator-report.component.html',\r\n styleUrls: [\r\n '../../form.styles.scss',\r\n './nersa-generator-report.component.scss',\r\n ],\r\n})\r\nexport class NersaGeneratorReportComponent implements OnInit {\r\n public submitting: boolean = false;\r\n public downloadingReport: boolean = false;\r\n public errorMessage: string;\r\n public loading: boolean;\r\n public nersaReportHistory: any[];\r\n public newReportForm: FormGroup;\r\n private modalRef: BsModalRef;\r\n\r\n constructor(\r\n private nersaReportHistoryService: NERSAReportHistoryService,\r\n private toastr: ToastrService,\r\n private documentService: DocumentService,\r\n private modalService: BsModalService,\r\n private commonService: CommonService\r\n ) {}\r\n\r\n public ngOnInit() {\r\n this.loading = true;\r\n this.submitting = false;\r\n\r\n this.newReportForm = new FormGroup({\r\n fromDateControl: new FormControl(null, [Validators.required]),\r\n toDateControl: new FormControl(null, [Validators.required]),\r\n });\r\n\r\n this.getGeneratorNERSAReportHistory();\r\n }\r\n\r\n public getGeneratorNERSAReportHistory() {\r\n this.nersaReportHistoryService.getGeneratorHistory().subscribe(\r\n (result) => {\r\n this.loading = false;\r\n this.nersaReportHistory = result;\r\n },\r\n (error) => {\r\n this.loading = false;\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n }\r\n\r\n public newClicked(template: TemplateRef): void {\r\n // Clear form\r\n this.newReportForm.reset();\r\n // Show Modal\r\n this.modalRef = this.modalService.show(template);\r\n }\r\n\r\n public onPopupSubmit() {\r\n this.commonService.validateAllFormFields(this.newReportForm);\r\n\r\n if (this.newReportForm.valid) {\r\n this.modalRef.hide();\r\n this.submitting = true;\r\n\r\n this.nersaReportHistoryService\r\n .createGeneratorHistoryEntry(\r\n this.newReportForm.controls['fromDateControl']\r\n .value as Date,\r\n this.newReportForm.controls['toDateControl'].value as Date\r\n )\r\n .subscribe(\r\n () => {\r\n this.newReportForm.reset();\r\n this.toastr.success('submitted');\r\n this.getGeneratorNERSAReportHistory();\r\n this.submitting = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.toastr.error(this.errorMessage);\r\n this.submitting = false;\r\n }\r\n );\r\n }\r\n }\r\n\r\n public onDownloadFile(row: any) {\r\n this.downloadingReport = true;\r\n this.documentService.downloadDocument(row.documentId).subscribe(\r\n (response) => {\r\n this.toastr.success('Document download complete');\r\n saveAs(response, row.fileName);\r\n this.downloadingReport = false;\r\n },\r\n () => {\r\n this.errorMessage = this.commonService.handleDocumentErrorMessage(\r\n 'NERSA generator report'\r\n );\r\n this.downloadingReport = false;\r\n }\r\n );\r\n }\r\n}\r\n","import { map } from 'rxjs/operators';\r\nimport { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable } from 'rxjs/internal/Observable';\r\n\r\n@Injectable()\r\nexport class GeneratorTermsheetService {\r\n constructor(private httpClient: HttpClient) {}\r\n\r\n public getGeneratorFacilityTermSheet(facilityId: number): Observable {\r\n return this.httpClient.get(\r\n API_URL +\r\n 'GeneratorDocumentGeneration/GetGeneratorFacilityTermSheet?generatorProjectFacilityId=' +\r\n facilityId\r\n );\r\n }\r\n\r\n public generatorFacilityTermSheet(facilityTermSheet: any): Observable {\r\n return this.httpClient.post(\r\n API_URL + 'GeneratorDocumentGeneration/GeneratorFacilityTermSheet',\r\n facilityTermSheet\r\n );\r\n }\r\n\r\n public offerCompleteTermSheet(facilityTermSheet: any): Observable {\r\n return this.httpClient.post(\r\n API_URL +\r\n 'GeneratorDocumentGeneration/GeneratorFacilityTermSheetOfferComplete',\r\n facilityTermSheet\r\n );\r\n }\r\n\r\n public getGeneratorFacilityTermSheetPreview(\r\n facilityTermSheet: any\r\n ): Observable {\r\n return this.httpClient\r\n .post(\r\n API_URL +\r\n 'GeneratorDocumentGeneration/GeneratorFacilityTermSheetPreview',\r\n facilityTermSheet,\r\n { responseType: 'blob' }\r\n )\r\n .pipe(map((response) => response));\r\n }\r\n}\r\n","import { Component, OnInit, EventEmitter, Output } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { FormGroup, FormControl, Validators } from '@angular/forms';\r\nimport { saveAs as importedSaveAs } from 'file-saver';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { CommonService } from '../../../../../common/common-service';\r\nimport { GeneratorTermsheetService } from './generator-termsheet.service';\r\nimport { GeneratorDocumentGeneration } from '../../../../../model/generator/generator-document-generation.model';\r\nimport { EntityLookup } from '../../../../../model/entity-lookup.model';\r\nimport { GeneratorProjectFacilityTariffRatesService } from '../../../../generator-project-facility/generator-project-facility-tariff-rates/generator-project-facility-tariff-rates.service';\r\nimport { ComponentTriggersService } from '../../../../../common/component-triggers.service';\r\n\r\nimport { ToastrService } from 'ngx-toastr';\r\n\r\n@Component({\r\n selector: 'app-generator-termsheet',\r\n templateUrl: './generator-termsheet.component.html',\r\n styleUrls: ['../../../../form.styles.scss'],\r\n})\r\nexport class GeneratorTermsheetComponent implements OnInit {\r\n public signedOfferUploaded: boolean = false;\r\n public loading = false;\r\n public errorMessage = '';\r\n private documentFieldsForm: FormGroup;\r\n private facilityId: number;\r\n private facilityTermSheet: GeneratorDocumentGeneration;\r\n private isDownloadingPreview: boolean = false;\r\n private escalationTypes: EntityLookup;\r\n private tariffTypes: any[];\r\n private nonTouTariffTypeId: number;\r\n\r\n constructor(\r\n private commonService: CommonService,\r\n private route: ActivatedRoute,\r\n private generatorTermsheetService: GeneratorTermsheetService,\r\n private generatorProjectFacilityTariffRatesService: GeneratorProjectFacilityTariffRatesService,\r\n private componentTriggersService: ComponentTriggersService,\r\n private router: Router,\r\n private toastr: ToastrService\r\n ) {}\r\n\r\n public ngOnInit() {\r\n this.loading = true;\r\n this.route.params.subscribe(\r\n (params) => {\r\n if (params['facilityId']) {\r\n this.facilityId = params['facilityId'];\r\n }\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n\r\n // Get Escalation Type Enity Lookups\r\n this.commonService\r\n .getEntityLookups(['GeneratorEscalationType'])\r\n .subscribe(\r\n (entityLookups) => {\r\n this.escalationTypes =\r\n entityLookups.entityLookupResultList[\r\n 'generatorEscalationType'\r\n ];\r\n this.generatorProjectFacilityTariffRatesService\r\n .getGeneratorTariffRateTariffTypes()\r\n .subscribe(\r\n (types: any[]) => {\r\n this.tariffTypes = types;\r\n\r\n // Get non Tariff Type Lookup Id\r\n this.tariffTypes.forEach((t: any) => {\r\n if (t.value.indexOf('Non') >= 0) {\r\n this.nonTouTariffTypeId =\r\n t.entityLookupId;\r\n }\r\n });\r\n\r\n this.generatorTermsheetService\r\n .getGeneratorFacilityTermSheet(\r\n this.facilityId\r\n )\r\n .subscribe(\r\n (\r\n termSheetPage: GeneratorDocumentGeneration\r\n ) => {\r\n this.facilityTermSheet = termSheetPage;\r\n this.facilityTermSheet.evaluationField.isOfferAcceptedTermsheet = !!this\r\n .facilityTermSheet\r\n .evaluationField\r\n .signedOfferTermsheet;\r\n this.signedOfferUploaded = this.facilityTermSheet.evaluationField.isOfferAcceptedTermsheet;\r\n this.initDocumentFieldsForm(\r\n this.facilityTermSheet\r\n );\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n\r\n public initDocumentFieldsForm(termsheet: GeneratorDocumentGeneration) {\r\n this.documentFieldsForm = new FormGroup({\r\n generatorFacilityEvaluationFieldId: new FormControl(\r\n isNullOrUndefined(termsheet)\r\n ? null\r\n : termsheet.evaluationField\r\n .generatorFacilityEvaluationFieldId,\r\n Validators.required\r\n ),\r\n generatorProjectFacilityId: new FormControl(\r\n isNullOrUndefined(termsheet)\r\n ? null\r\n : termsheet.evaluationField.generatorProjectFacilityId,\r\n Validators.required\r\n ),\r\n increasedDate: new FormControl(\r\n isNullOrUndefined(termsheet)\r\n ? null\r\n : termsheet.evaluationField.increasedDate,\r\n Validators.required\r\n ),\r\n isDocumentSentTermsheet: new FormControl(\r\n isNullOrUndefined(termsheet)\r\n ? null\r\n : termsheet.evaluationField.isDocumentSentTermsheet\r\n ),\r\n isOfferAcceptedTermsheet: new FormControl(\r\n isNullOrUndefined(termsheet)\r\n ? null\r\n : termsheet.evaluationField.isOfferAcceptedTermsheet\r\n ),\r\n signedOfferTermsheet: new FormControl(\r\n isNullOrUndefined(termsheet)\r\n ? null\r\n : termsheet.evaluationField.signedOfferTermsheet\r\n ),\r\n longStopDate: new FormControl(\r\n isNullOrUndefined(termsheet)\r\n ? null\r\n : termsheet.evaluationField.longStopDate,\r\n Validators.required\r\n ),\r\n commercialOperatorsDate: new FormControl(\r\n isNullOrUndefined(termsheet)\r\n ? null\r\n : termsheet.evaluationField.commercialOperatorsDate,\r\n Validators.required\r\n ),\r\n documentTemplateId: new FormControl(\r\n isNullOrUndefined(termsheet)\r\n ? null\r\n : termsheet.evaluationField.documentTemplateId\r\n ),\r\n isDocumentGeneratedTermsheet: new FormControl(\r\n isNullOrUndefined(termsheet)\r\n ? null\r\n : termsheet.evaluationField.isDocumentGeneratedTermsheet\r\n ),\r\n documentTemplateName: new FormControl(\r\n isNullOrUndefined(termsheet)\r\n ? null\r\n : termsheet.evaluationField.documentTemplateName\r\n ),\r\n highDemandRate: new FormControl({\r\n value: isNullOrUndefined(termsheet)\r\n ? null\r\n : termsheet.highDemandRate,\r\n disabled: true,\r\n }),\r\n lowDemandRate: new FormControl({\r\n value: isNullOrUndefined(termsheet)\r\n ? null\r\n : termsheet.lowDemandRate,\r\n disabled: true,\r\n }),\r\n distributorHighDemandRate: new FormControl({\r\n value: isNullOrUndefined(termsheet)\r\n ? null\r\n : termsheet.distributorHighDemandRate,\r\n disabled: true,\r\n }),\r\n distributorLowDemandRate: new FormControl({\r\n value: isNullOrUndefined(termsheet)\r\n ? null\r\n : termsheet.distributorLowDemandRate,\r\n disabled: true,\r\n }),\r\n generatorEscalationTypeLookupId: new FormControl(\r\n isNullOrUndefined(termsheet)\r\n ? null\r\n : termsheet.evaluationField.generatorEscalationTypeLookupId,\r\n Validators.required\r\n ),\r\n tariffTypeLookupId: new FormControl(\r\n isNullOrUndefined(termsheet)\r\n ? null\r\n : termsheet.evaluationField.tariffTypeLookupId,\r\n Validators.required\r\n ),\r\n });\r\n }\r\n\r\n public signedTermsheetDocumentUpload(output: any): void {\r\n if (output.value && output.listenerId === 'isOfferAcceptedTermsheet') {\r\n this.documentFieldsForm.controls.signedOfferTermsheet.setValue(\r\n output.value\r\n );\r\n this.signedOfferUploaded = true;\r\n }\r\n }\r\n\r\n public onGenerateDocumentSubmit() {\r\n this.commonService.validateAllFormFields(this.documentFieldsForm);\r\n this.validateCommercialOperatorsDate();\r\n if (this.documentFieldsForm.valid) {\r\n this.loading = true;\r\n this.generatorTermsheetService\r\n .generatorFacilityTermSheet(this.documentFieldsForm.value)\r\n .subscribe(\r\n (page: GeneratorDocumentGeneration) => {\r\n this.facilityTermSheet = page;\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n }\r\n\r\n public onOfferCompleteSubmit() {\r\n this.errorMessage = '';\r\n this.commonService.validateAllFormFields(this.documentFieldsForm);\r\n this.validateCommercialOperatorsDate();\r\n if (this.documentFieldsForm.valid) {\r\n this.loading = true;\r\n this.generatorTermsheetService\r\n .offerCompleteTermSheet(this.documentFieldsForm.value)\r\n .subscribe(\r\n (page: GeneratorDocumentGeneration) => {\r\n this.facilityTermSheet = page;\r\n this.loading = false;\r\n this.router.navigate(['generators', 'evaluation']);\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n }\r\n\r\n public onPreviewDocumentSubmit() {\r\n this.errorMessage = '';\r\n this.commonService.validateAllFormFields(this.documentFieldsForm);\r\n this.validateCommercialOperatorsDate();\r\n if (this.documentFieldsForm.valid) {\r\n this.isDownloadingPreview = true;\r\n this.generatorTermsheetService\r\n .getGeneratorFacilityTermSheetPreview(\r\n this.documentFieldsForm.value\r\n )\r\n .subscribe(\r\n (blob) => {\r\n importedSaveAs(\r\n blob,\r\n this.facilityTermSheet.evaluationField\r\n .documentTemplateName + '.docx'\r\n );\r\n this.isDownloadingPreview = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleDocumentErrorMessage(\r\n 'generator termsheet preview'\r\n );\r\n this.isDownloadingPreview = false;\r\n this.toastr.error(this.errorMessage);\r\n }\r\n );\r\n }\r\n }\r\n\r\n public onGoToLanding() {\r\n this.router.navigate(['generators', 'evaluation']);\r\n }\r\n\r\n public onTariffTypeChange() {\r\n const isNonTou =\r\n this.documentFieldsForm.controls.tariffTypeLookupId.value ===\r\n this.nonTouTariffTypeId;\r\n this.componentTriggersService.triggerGeneratorProjectFacilityTariffRatesComponent.next(\r\n isNonTou\r\n );\r\n }\r\n\r\n public validateCommercialOperatorsDate() {\r\n // Validate if commercialOperatorsDate is null\r\n if (\r\n this.documentFieldsForm.controls.commercialOperatorsDate.value ==\r\n null\r\n ) {\r\n this.documentFieldsForm.controls.commercialOperatorsDate.setErrors({\r\n incorrect: true,\r\n });\r\n return;\r\n }\r\n // Validate if date is on the 1st\r\n const operationDate = new Date(\r\n this.documentFieldsForm.controls.commercialOperatorsDate.value\r\n );\r\n if ((operationDate as Date).getDate() !== 1) {\r\n this.documentFieldsForm.controls.commercialOperatorsDate.setErrors({\r\n incorrect: true,\r\n });\r\n }\r\n }\r\n}\r\n","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { ActivatedRoute, NavigationEnd, Router } from '@angular/router';\r\nimport { CommonService } from '../../../../common/common-service';\r\nimport { Subscription } from 'rxjs/Rx';\r\nimport { AllocationRun } from '../../../../model/allocation/allocation-run.model';\r\nimport { AllocationRunService } from '../allocation-run.service';\r\nimport { AuthorisationService } from '../../../../authorisation-service/authorisation.service';\r\nimport { interval } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'allocation-run-detail',\r\n templateUrl: './allocation-run-detail.component.html',\r\n styleUrls: [\r\n '../../../form.styles.scss',\r\n './allocation-run-detail.component.scss',\r\n ],\r\n})\r\nexport class AllocationRunDetailComponent implements OnInit, OnDestroy {\r\n public loading = false;\r\n public powerprofileloading = false;\r\n public allocationRunId: number;\r\n public allocationRun: AllocationRun;\r\n public errorMessage = '';\r\n public isReadOnlyMode: boolean = true;\r\n public isAllocationsFinalizeReadOnly: boolean = true;\r\n public initialStart: Date;\r\n public initialEnd: Date;\r\n public minDate: Date;\r\n public maxDate: Date;\r\n public chartData: Array<{\r\n name: string;\r\n series: Array<{ name: string; value: number }>;\r\n }>;\r\n public initialGranularity: string;\r\n private navigationSubscription: Subscription;\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n public commonService: CommonService,\r\n public authorisationService: AuthorisationService,\r\n private router: Router,\r\n private allocationRunService: AllocationRunService\r\n ) {}\r\n\r\n public ngOnInit() {\r\n // Reload this component if you navigate to it from the same URL\r\n // see https://medium.com/engineering-on-the-incline/reloading-current-route-on-click-angular-5-1a1bfc740ab2\r\n this.navigationSubscription = this.router.events.subscribe(\r\n (e: any) => {\r\n if (e instanceof NavigationEnd) {\r\n this.initialize();\r\n }\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n this.initialize();\r\n this.initializePowerProfile();\r\n }\r\n\r\n public ngOnDestroy() {\r\n if (this.navigationSubscription) {\r\n this.navigationSubscription.unsubscribe();\r\n }\r\n }\r\n\r\n private initialize() {\r\n this.loading = true;\r\n this.route.params.subscribe(\r\n (params) => {\r\n this.allocationRunId = params['allocationRunId'];\r\n this.allocationRunService\r\n .getAllocationRun(this.allocationRunId)\r\n .subscribe(\r\n (allocationRun: AllocationRun) => {\r\n this.allocationRun = allocationRun;\r\n this.loading = false;\r\n this.initialStart = new Date(\r\n allocationRun.startDateTime\r\n );\r\n\r\n this.initialEnd = new Date(\r\n allocationRun.endDateTime\r\n );\r\n this.initialEnd.setDate(\r\n this.initialEnd.getDate() - 1\r\n );\r\n this.minDate = this.initialStart;\r\n this.maxDate = this.initialEnd;\r\n this.initialGranularity = 'day';\r\n },\r\n (error) => {\r\n this.errorMessage = this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n },\r\n (error) => {\r\n this.errorMessage = this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n this.isReadOnlyMode = this.authorisationService.isAllocationsReadOnly();\r\n this.isAllocationsFinalizeReadOnly = this.authorisationService.isAllocationsFinalizeReadOnly();\r\n }\r\n\r\n private initializePowerProfile() {\r\n this.powerprofileloading = true;\r\n this.chartData = [];\r\n this.allocationRunService\r\n .getAllocationRunPowerSummary(this.allocationRunId)\r\n .subscribe(\r\n (allocationRunPowerSummary) => {\r\n this.buildPowerProfileData(\r\n 'Allocation',\r\n allocationRunPowerSummary\r\n .allocationRunPowerAllocationSummary.powerPerDayList\r\n );\r\n this.buildPowerProfileData(\r\n 'Consumption',\r\n allocationRunPowerSummary\r\n .allocationRunPowerConsumptionSummary\r\n .powerPerDayList\r\n );\r\n this.buildPowerProfileData(\r\n 'Generation',\r\n allocationRunPowerSummary\r\n .allocationRunPowerGenerationSummary.powerPerDayList\r\n );\r\n this.powerprofileloading = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.powerprofileloading = false;\r\n }\r\n );\r\n }\r\n\r\n private buildPowerProfileData(\r\n powerProfileName: string,\r\n inputData: { [name: string]: number }\r\n ) {\r\n const inputDataIndexes = Object.keys(inputData);\r\n const chartDataSeries: Array<{ name: string; value: number }> = [];\r\n inputDataIndexes.forEach((inputDataIndex) => {\r\n chartDataSeries.push({\r\n name: inputDataIndex,\r\n value:\r\n inputData[inputDataIndex] < 0\r\n ? 0\r\n : inputData[inputDataIndex],\r\n });\r\n });\r\n this.chartData.push({\r\n name: powerProfileName,\r\n series: chartDataSeries,\r\n });\r\n }\r\n}\r\n","import { Component, OnInit, TemplateRef, Input } from '@angular/core';\r\nimport { FormGroup, FormControl, Validators } from '@angular/forms';\r\nimport { BsModalRef, BsModalService } from 'ngx-bootstrap';\r\nimport { CommonService } from '../../../common/common-service';\r\nimport { CpiService } from '../cpi.service';\r\nimport { ToastrService } from 'ngx-toastr';\r\n\r\n@Component({\r\n selector: 'app-cpi',\r\n templateUrl: './cpi.component.html',\r\n styleUrls: ['./cpi.component.scss', '../../form.styles.scss'],\r\n})\r\nexport class CpiComponent implements OnInit {\r\n @Input('enableAddNew')\r\n public enableAddNew: boolean = true;\r\n public alertType: 'success' | 'info' | 'warning' | 'danger';\r\n public displayAlert: boolean = false;\r\n public submitting: boolean = false;\r\n public errorMessage: string;\r\n public loading: boolean = true;\r\n public cpiHistory: any[] = [];\r\n\r\n public newCpiForm: FormGroup;\r\n private modalRef: BsModalRef;\r\n\r\n constructor(\r\n private cpiService: CpiService,\r\n private toastr: ToastrService,\r\n private modalService: BsModalService,\r\n public commonService: CommonService\r\n ) {\r\n this.newCpiForm = new FormGroup({\r\n effectiveDate: new FormControl(null, [Validators.required]),\r\n value: new FormControl(null, [Validators.required]),\r\n });\r\n }\r\n\r\n public ngOnInit() {\r\n this.getCpiHistory();\r\n }\r\n\r\n public getCpiHistory() {\r\n this.cpiService.getConsumerPriceIndexHistory().subscribe(\r\n (history) => {\r\n this.loading = false;\r\n this.displayAlert = false;\r\n this.cpiHistory = history;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n this.displayAlert = true;\r\n this.alertType = 'danger';\r\n }\r\n );\r\n }\r\n\r\n public newCpiModal(template: TemplateRef): void {\r\n this.modalRef = this.modalService.show(template);\r\n }\r\n\r\n public onPopupSubmit() {\r\n this.commonService.validateAllFormFields(this.newCpiForm);\r\n\r\n if (this.newCpiForm.valid) {\r\n this.modalRef.hide();\r\n this.submitting = true;\r\n this.displayAlert = false;\r\n this.cpiService\r\n .createConsumerPriceIndex(this.newCpiForm.value)\r\n .subscribe(\r\n () => {\r\n this.newCpiForm.reset();\r\n this.toastr.success(\r\n 'Consumer Price Index Saved Successfully'\r\n );\r\n this.getCpiHistory();\r\n this.submitting = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.toastr.error(this.errorMessage);\r\n this.submitting = false;\r\n }\r\n );\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpParams } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { Page } from '../../model/page.model';\r\nimport { isNullOrUndefined } from 'util';\r\n\r\n@Injectable()\r\nexport class SettingsService {\r\n constructor(private httpClient: HttpClient) {}\r\n\r\n public getSettings(\r\n searchString: string,\r\n page: Page,\r\n sortProp: any\r\n ): Observable {\r\n if (isNullOrUndefined(sortProp.direction)) {\r\n sortProp.direction = '';\r\n }\r\n if (isNullOrUndefined(sortProp.property)) {\r\n sortProp.property = '';\r\n }\r\n\r\n return this.httpClient.get(API_URL + 'setting/GetSettings', {\r\n params: new HttpParams()\r\n .set('searchString', searchString)\r\n .set('offset', String(page.offset))\r\n .set('pageSize', String(page.size))\r\n .set('sortProperty', String(sortProp.property))\r\n .set('sortDirection', String(sortProp.direction)),\r\n });\r\n }\r\n\r\n public updateSetting(setting: any): Observable {\r\n return this.httpClient.put(API_URL + 'setting/UpdateSetting', setting);\r\n }\r\n}\r\n","import { debounceTime } from 'rxjs/operators';\r\nimport { Component, OnInit, TemplateRef } from '@angular/core';\r\n\r\nimport { FormGroup, FormControl, Validators } from '@angular/forms';\r\nimport { BsModalRef, BsModalService } from 'ngx-bootstrap';\r\nimport { CommonService } from '../../common/common-service';\r\nimport { SettingsService } from './settings.service';\r\nimport { Page } from '../../model/page.model';\r\nimport { ToastrService } from 'ngx-toastr';\r\n\r\n@Component({\r\n selector: 'app-settings',\r\n templateUrl: './settings.component.html',\r\n styleUrls: ['../form.styles.scss'],\r\n})\r\nexport class SettingsComponent implements OnInit {\r\n public submitting: boolean = false;\r\n public errorMessage: string;\r\n public loading: boolean = true;\r\n public settingsPage: Page;\r\n public settingsData: any[] = [];\r\n public editSettingForm: FormGroup;\r\n public searchGroup: FormGroup;\r\n public selectedSetting: any;\r\n private sortProp = {};\r\n private searchControl: FormControl;\r\n private modalRef: BsModalRef;\r\n\r\n constructor(\r\n private settingsService: SettingsService,\r\n private toaster: ToastrService,\r\n private modalService: BsModalService,\r\n public commonService: CommonService\r\n ) {\r\n this.settingsPage = new Page();\r\n this.settingsPage.size = 10;\r\n this.editSettingForm = new FormGroup({\r\n value: new FormControl(null, [\r\n Validators.required,\r\n Validators.maxLength(500),\r\n ]),\r\n });\r\n\r\n this.searchControl = new FormControl('');\r\n this.searchGroup = new FormGroup({\r\n search: this.searchControl,\r\n });\r\n }\r\n\r\n public ngOnInit() {\r\n this.loading = true;\r\n this.searchControl.valueChanges.pipe(debounceTime(300)).subscribe(\r\n () => {\r\n this.changePage({ offset: 0 });\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n this.changePage({ offset: this.settingsPage.offset });\r\n }\r\n\r\n public changePage(pageInfo: any): void {\r\n const searchString = this.searchGroup.value.search;\r\n this.settingsPage.offset = pageInfo.offset * this.settingsPage.size;\r\n this.settingsService\r\n .getSettings(searchString, this.settingsPage, this.sortProp)\r\n .subscribe(\r\n (page) => {\r\n this.loading = false;\r\n this.settingsPage.totalPages = Math.ceil(\r\n page.totalItems / page.size\r\n );\r\n this.settingsPage.totalElements = page.totalItems;\r\n this.settingsData = page.items;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n\r\n public sortColumn(event: any): void {\r\n this.sortProp = {\r\n direction: event.sorts[0].dir,\r\n property: event.sorts[0].prop,\r\n };\r\n this.changePage({ offset: 0 });\r\n }\r\n\r\n public onSelect(event: any, template: TemplateRef): void {\r\n this.selectedSetting = event.selected[0];\r\n\r\n this.editSettingForm.controls.value.setValue(\r\n this.selectedSetting.settingValue\r\n );\r\n\r\n // Show Modal\r\n this.modalRef = this.modalService.show(template);\r\n }\r\n\r\n public onPopupSubmit() {\r\n this.commonService.validateAllFormFields(this.editSettingForm);\r\n if (this.editSettingForm.valid) {\r\n this.modalRef.hide();\r\n this.submitting = true;\r\n this.selectedSetting.settingValue = this.editSettingForm.controls.value.value;\r\n this.settingsService.updateSetting(this.selectedSetting).subscribe(\r\n () => {\r\n this.editSettingForm.reset();\r\n this.toaster.success('System Setting Saved Successfully');\r\n this.changePage({ offset: this.settingsPage.offset });\r\n this.submitting = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.toaster.error(this.errorMessage);\r\n this.submitting = false;\r\n }\r\n );\r\n }\r\n }\r\n}\r\n","import {\r\n Component,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n TemplateRef,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { CommonService } from '../../../common/common-service';\r\nimport { Distributor } from '../../../model/distributor.model';\r\nimport { DistributorService } from '../../distributor/distributor.service';\r\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { ActivatedRoute, Params } from '@angular/router';\r\n\r\nimport { Subscription } from 'rxjs/Rx';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { BsModalRef, BsModalService } from 'ngx-bootstrap';\r\nimport { Page } from '../../../model/page.model';\r\nimport { DistributorGenerator } from '../../../model/distributor-generator.model';\r\nimport { debounceTime } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'generator-project-facility-distributor-nominations',\r\n templateUrl:\r\n './generator-project-facility-distributor-nominations.component.html',\r\n styleUrls: [\r\n '../../form.styles.scss',\r\n './generator-project-facility-distributor-nominations.component.scss',\r\n ],\r\n})\r\nexport class GeneratorProjectFacilityDistributorNominationsComponent\r\n implements OnInit, OnDestroy {\r\n @Input('generatorProjectFacilityId')\r\n public generatorProjectFacilityId: number;\r\n @Input('isReadOnlyMode')\r\n public isReadOnlyMode = false;\r\n @ViewChild('distributorGeneratorModal')\r\n public distributorGeneratorModal: TemplateRef;\r\n public distributors: Distributor[] = [];\r\n public errorMessage = '';\r\n public loading = false;\r\n public loadingDistributorGenerator = false;\r\n public newDistributorGeneratorForm: FormGroup;\r\n public facilityName: string;\r\n public projectName: string;\r\n public distributorGeneratorPage: Page;\r\n public saving = false;\r\n public distributorGenerators: DistributorGenerator[] = [];\r\n private routeParamsSubscription: Subscription;\r\n private queryParamsSubscription: Subscription;\r\n private modalRef: BsModalRef;\r\n private searchForm: FormGroup;\r\n private sortProp = {};\r\n\r\n constructor(\r\n private distributorService: DistributorService,\r\n private route: ActivatedRoute,\r\n public commonService: CommonService,\r\n private toastr: ToastrService,\r\n private modalService: BsModalService\r\n ) {\r\n this.distributorGeneratorPage = new Page();\r\n this.searchForm = new FormGroup({\r\n search: new FormControl(''),\r\n });\r\n }\r\n\r\n public ngOnInit() {\r\n this.loading = true;\r\n\r\n this.searchForm\r\n .get('search')\r\n .valueChanges.pipe(debounceTime(300))\r\n .subscribe(\r\n () => {\r\n this.changePage({ offset: 0 });\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n\r\n this.queryParamsSubscription = this.route.queryParams.subscribe(\r\n (queryParams) => {\r\n this.projectName = queryParams.projectName;\r\n this.facilityName = queryParams.facilityName;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n\r\n this.routeParamsSubscription = this.route.params.subscribe(\r\n (routeParams: Params) => {\r\n this.generatorProjectFacilityId = isNullOrUndefined(\r\n this.generatorProjectFacilityId\r\n )\r\n ? routeParams.generatorProjectFacilityId\r\n : this.generatorProjectFacilityId; // i.e. Was set as an input parameter on this component\r\n this.initialize();\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n }\r\n\r\n public ngOnDestroy() {\r\n this.queryParamsSubscription.unsubscribe();\r\n this.routeParamsSubscription.unsubscribe();\r\n }\r\n\r\n public onDelete(row: any) {\r\n // NOTE: This is for the onSelect method above to not be called as well,\r\n // since ngx-datatable sees the button click as the row being selected.\r\n event.stopPropagation();\r\n if (confirm('Are you sure you want to delete this nomination')) {\r\n this.distributorService\r\n .deleteDistributorNomination(row.distributorGeneratorId)\r\n .subscribe(\r\n (response) => {\r\n this.toastr.success(\r\n isNullOrUndefined(response.successMessage)\r\n ? response.successMessage\r\n : 'Deleted nomination successfully'\r\n );\r\n this.changePage({ offset: 0 });\r\n },\r\n (error) => {\r\n this.toastr.error(\r\n this.commonService.handleErrorMessage(error)\r\n );\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n }\r\n }\r\n\r\n public newDistributorGenerator(): void {\r\n this.errorMessage = '';\r\n this.initDistributorGeneratorForm();\r\n this.modalRef = this.modalService.show(this.distributorGeneratorModal);\r\n }\r\n\r\n public onPopupSubmit(): void {\r\n this.errorMessage = '';\r\n this.commonService.validateAllFormFields(\r\n this.newDistributorGeneratorForm\r\n );\r\n if (this.newDistributorGeneratorForm.valid) {\r\n this.saving = true;\r\n if (\r\n this.newDistributorGeneratorForm.controls.distributorGeneratorId\r\n .value === 0\r\n ) {\r\n this.distributorService\r\n .createDistributorNomination(\r\n this.newDistributorGeneratorForm.value\r\n )\r\n .subscribe(\r\n () => {\r\n this.changePage({ offset: 0 });\r\n this.modalRef.hide();\r\n this.saving = false;\r\n this.toastr.success(\r\n 'Distributor nomination successfully added'\r\n );\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.toastr.error(this.errorMessage);\r\n this.saving = false;\r\n }\r\n );\r\n } else {\r\n this.distributorService\r\n .updateDistributorNomination(\r\n this.newDistributorGeneratorForm.value\r\n )\r\n .subscribe(\r\n () => {\r\n this.changePage({ offset: 0 });\r\n this.modalRef.hide();\r\n this.toastr.success(\r\n 'Distributor nomination successfully updated'\r\n );\r\n this.saving = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.toastr.error(this.errorMessage);\r\n this.saving = false;\r\n }\r\n );\r\n }\r\n }\r\n }\r\n\r\n public onSelect(event: any): void {\r\n this.errorMessage = '';\r\n const distributorGeneratorId = event.selected[0].distributorGeneratorId;\r\n this.loadingDistributorGenerator = true;\r\n this.distributorService\r\n .getDistributorGenerator(distributorGeneratorId)\r\n .subscribe(\r\n (distributorGenerator: DistributorGenerator) => {\r\n this.modalRef = this.modalService.show(\r\n this.distributorGeneratorModal\r\n );\r\n this.initDistributorGeneratorForm(distributorGenerator);\r\n this.loadingDistributorGenerator = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.toastr.error(this.errorMessage);\r\n }\r\n );\r\n }\r\n\r\n public onCancel() {\r\n this.modalRef.hide();\r\n this.errorMessage = '';\r\n }\r\n\r\n public changePage(pageInfo: any): void {\r\n const searchString = this.searchForm.get('search').value;\r\n this.distributorGeneratorPage.offset =\r\n pageInfo.offset * this.distributorGeneratorPage.size;\r\n this.distributorService\r\n .getDistributorGeneratorsPage(\r\n searchString,\r\n this.distributorGeneratorPage,\r\n this.sortProp,\r\n this.generatorProjectFacilityId\r\n )\r\n .subscribe(\r\n (page) => {\r\n this.distributorGeneratorPage.totalPages = Math.ceil(\r\n page.totalItems / page.size\r\n );\r\n this.distributorGeneratorPage.totalElements =\r\n page.totalItems;\r\n this.distributorGenerators = page.items;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.toastr.error(this.errorMessage);\r\n }\r\n );\r\n }\r\n\r\n public sortColumn(event: any): void {\r\n this.sortProp = {\r\n direction: event.sorts[0].dir,\r\n property: event.sorts[0].prop,\r\n };\r\n this.changePage({ offset: 0 });\r\n }\r\n\r\n private initDistributorGeneratorForm(\r\n distributorGenerator: DistributorGenerator = null\r\n ) {\r\n this.newDistributorGeneratorForm = new FormGroup({\r\n generatorProjectFacilityId: new FormControl(\r\n this.generatorProjectFacilityId\r\n ),\r\n distributorGeneratorId: new FormControl(\r\n isNullOrUndefined(distributorGenerator)\r\n ? 0\r\n : distributorGenerator.distributorGeneratorId\r\n ),\r\n distributorId: new FormControl(\r\n isNullOrUndefined(distributorGenerator)\r\n ? null\r\n : distributorGenerator.distributorId,\r\n [Validators.required]\r\n ),\r\n percentage: new FormControl(\r\n isNullOrUndefined(distributorGenerator)\r\n ? null\r\n : distributorGenerator.percentage,\r\n [Validators.required, Validators.min(0), Validators.max(100)]\r\n ),\r\n });\r\n }\r\n\r\n private initialize() {\r\n this.distributorService\r\n .getDistributorNominations(this.generatorProjectFacilityId)\r\n .subscribe(\r\n (nominations) => {\r\n this.distributorService\r\n .getAllocationDistributors('')\r\n .subscribe(\r\n (distributors) => {\r\n this.distributors = distributors;\r\n this.loading = false;\r\n this.changePage({\r\n offset: this.distributorGeneratorPage\r\n .offset,\r\n });\r\n },\r\n (error) => {\r\n this.loading = false;\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n },\r\n (error) => {\r\n this.loading = false;\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n }\r\n}\r\n","export class RevenueForecastWarningAccordion {\r\n public revenueForecastWarningType: string;\r\n public warnings: string[];\r\n constructor(revenueForecastWarningType: string, warnings: string[]) {\r\n this.revenueForecastWarningType = revenueForecastWarningType;\r\n this.warnings = warnings;\r\n }\r\n}\r\n","export class ConsumerForecastWarningAccordion {\r\n public consumerForecastWarningType: string;\r\n public warnings: string[];\r\n constructor(consumerForecastWarningType: string, warnings: string[]) {\r\n this.consumerForecastWarningType = consumerForecastWarningType;\r\n this.warnings = warnings;\r\n }\r\n}\r\n","import { map } from 'rxjs/operators';\r\nimport { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { RevenueForecast } from '../../../model/report/revenue-forecast.model';\r\nimport { RevenueForecastWarningAccordion } from '../../../model/report/revenue-forecast-warning-accordion.model';\r\nimport { ConsumerForecastWarningAccordion } from '../../../model/report/consumer-forecast-warning-accordion.model';\r\nimport { Page } from '../../../model/page.model';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { ForecastConsumerCompanyPremisesParameterModel } from '../../../model/report/forecast-consumer-company-premises-parameter.model';\r\nimport { ForecastGeneratorProjectFacilityParameter } from '../../../model/report/forecast-generator-project-facility.parameter';\r\n\r\n@Injectable()\r\nexport class ForecastReportsService {\r\n constructor(private httpClient: HttpClient) {}\r\n\r\n public getGeneratorForecastReportHistory(): Observable {\r\n return this.httpClient.get(\r\n API_URL + 'GeneratorForecastReport/GetGeneratorForecastReports'\r\n );\r\n }\r\n\r\n public createGeneratorForecastReportEntry(fromDate: Date) {\r\n return this.httpClient.post(\r\n API_URL +\r\n 'GeneratorForecastReport/CreateGeneratorForecastReport?forecastStartDate=' +\r\n fromDate.toISOString(),\r\n {}\r\n );\r\n }\r\n\r\n public getGeneratorForecastReportByForecastStartDate(\r\n generatorForecastId: number\r\n ): Observable {\r\n return this.httpClient\r\n .get(\r\n API_URL +\r\n 'GeneratorForecastReport/GetGeneratorForecastReportExcel?generatorForecastId=' +\r\n generatorForecastId,\r\n { responseType: 'blob' }\r\n )\r\n .pipe(map((response) => response));\r\n }\r\n\r\n public getConsumerForecastReport(\r\n consumerForecastId: number\r\n ): Observable {\r\n return this.httpClient\r\n .get(\r\n API_URL +\r\n 'Forecast/GetConsumerForecastReport?consumerForecastId=' +\r\n consumerForecastId,\r\n { responseType: 'blob' }\r\n )\r\n .pipe(map((response) => response));\r\n }\r\n\r\n public getConsumerForecastByTariffReport(\r\n consumerForecastId: number\r\n ): Observable {\r\n return this.httpClient\r\n .get(\r\n API_URL +\r\n 'Forecast/GetConsumerForecastByTariffReport?consumerForecastId=' +\r\n consumerForecastId,\r\n { responseType: 'blob' }\r\n )\r\n .pipe(map((response) => response));\r\n }\r\n\r\n public getConsumerAndRevenueForecastReportHistory(): Observable {\r\n return this.httpClient.get(\r\n API_URL + 'Forecast/GetConsumerAndRevenueForecastReportHistory'\r\n );\r\n }\r\n\r\n public createConsumerAndRevenueForecastReportEntry(value: RevenueForecast) {\r\n return this.httpClient.post(\r\n API_URL + 'Forecast/CreateConsumerAndRevenueForecastReportEntry',\r\n value\r\n );\r\n }\r\n\r\n public reRunRevenueAndConsumerForecast(value: RevenueForecast) {\r\n return this.httpClient.post(\r\n API_URL + 'Forecast/ReRunRevenueAndConsumerForecast',\r\n value.revenueForecastId\r\n );\r\n }\r\n\r\n public getRevenueForecastReport(\r\n revenueForecastId: number\r\n ): Observable {\r\n return this.httpClient\r\n .get(\r\n API_URL +\r\n 'Forecast/GetRevenueForecastReport?revenueForecastId=' +\r\n revenueForecastId,\r\n { responseType: 'blob' }\r\n )\r\n .pipe(map((response) => response));\r\n }\r\n\r\n public getConsumerForecastWarnings(\r\n consumerForecastId: number\r\n ): Observable {\r\n return this.httpClient\r\n .get(\r\n API_URL +\r\n 'Forecast/GetConsumerForecastWarnings?consumerForecastId=' +\r\n consumerForecastId\r\n )\r\n .pipe(\r\n map((response: HttpResponse) => {\r\n const consumerForecastWarnings = [];\r\n for (const prop in response) {\r\n if (response) {\r\n consumerForecastWarnings.push(\r\n new ConsumerForecastWarningAccordion(\r\n prop,\r\n response[prop]\r\n )\r\n );\r\n }\r\n }\r\n return consumerForecastWarnings;\r\n })\r\n );\r\n }\r\n\r\n public getRevenueForecastWarnings(\r\n revenueForecastId: number\r\n ): Observable {\r\n return this.httpClient\r\n .get(\r\n API_URL +\r\n 'Forecast/GetRevenueForecastWarnings?revenueForecastId=' +\r\n revenueForecastId\r\n )\r\n .pipe(\r\n map((response: HttpResponse) => {\r\n const revenueForecastWarnings = [];\r\n for (const prop in response) {\r\n if (response) {\r\n revenueForecastWarnings.push(\r\n new RevenueForecastWarningAccordion(\r\n prop,\r\n response[prop]\r\n )\r\n );\r\n }\r\n }\r\n return revenueForecastWarnings;\r\n })\r\n );\r\n }\r\n\r\n public getConsumerCompanyPremisesForForecastParameters(): Observable {\r\n return this.httpClient\r\n .get(API_URL + 'Forecast/GetConsumerCompanyPremisesParameters')\r\n .pipe(map((response: HttpResponse) => response));\r\n }\r\n\r\n public getGeneratorsForForecastParameters(): Observable {\r\n return this.httpClient\r\n .get(\r\n API_URL +\r\n 'Forecast/GetForecastGeneratorProjectFacilityParameters'\r\n )\r\n .pipe(map((response: HttpResponse) => response));\r\n }\r\n\r\n public saveParameters(\r\n consumerCompanyPremises: ForecastConsumerCompanyPremisesParameterModel[],\r\n generators: ForecastGeneratorProjectFacilityParameter[]\r\n ): Observable {\r\n return this.httpClient.post(API_URL + 'Forecast/SaveParameters', {\r\n consumerCompanyPremises,\r\n generators,\r\n });\r\n }\r\n\r\n public deleteRevenueAndConsumerForecastRun(revenueForecastId: number) {\r\n return this.httpClient.delete(\r\n API_URL +\r\n 'Forecast/DeleteRevenueForecast?revenueForecastId=' +\r\n revenueForecastId\r\n );\r\n }\r\n\r\n public markRevenueAndConsumerForecastRunForDeletion(\r\n revenueForecastId: number\r\n ) {\r\n return this.httpClient.get(\r\n API_URL +\r\n 'Forecast/MarkRevenueForecastForDeletion?revenueForecastId=' +\r\n revenueForecastId\r\n );\r\n }\r\n\r\n public deleteGeneratorForecast(generatorForecastId: number) {\r\n return this.httpClient.delete(\r\n API_URL +\r\n 'Forecast/DeleteGeneratorForecast?generatorForecastId=' +\r\n generatorForecastId\r\n );\r\n }\r\n}\r\n","import { Component, OnInit, TemplateRef } from '@angular/core';\r\nimport { ForecastReportsService } from '../forecast-reports.service';\r\n\r\nimport { DocumentService } from '../../../document/document.service';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { saveAs } from 'file-saver/FileSaver';\r\nimport { FormGroup, FormControl, Validators } from '@angular/forms';\r\nimport { BsModalRef, BsModalService } from 'ngx-bootstrap';\r\nimport { CommonService } from '../../../../common/common-service';\r\nimport { saveAs as importedSaveAs } from 'file-saver';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { AuthorisationService } from '../../../../authorisation-service/authorisation.service';\r\n\r\n@Component({\r\n selector: 'app-generator-forecast-report',\r\n templateUrl: './generator-forecast-report.component.html',\r\n styleUrls: [\r\n '../../../form.styles.scss',\r\n './generator-forecast-report.component.scss',\r\n ],\r\n})\r\nexport class GeneratorForecastReportComponent implements OnInit {\r\n public submitting: boolean = false;\r\n public downloadingReport: boolean = false;\r\n public errorMessage: string;\r\n public loading: boolean;\r\n public reportHistory: any[];\r\n\r\n public newReportForm: FormGroup;\r\n private modalRef: BsModalRef;\r\n\r\n constructor(\r\n private reportHistoryService: ForecastReportsService,\r\n private toaster: ToastrService,\r\n private documentService: DocumentService,\r\n public authorisationService: AuthorisationService,\r\n private modalService: BsModalService,\r\n private commonService: CommonService\r\n ) {}\r\n\r\n public ngOnInit() {\r\n this.loading = true;\r\n this.submitting = false;\r\n\r\n this.newReportForm = new FormGroup({\r\n fromDateControl: new FormControl(null, [Validators.required]),\r\n });\r\n\r\n this.getGeneratorForecastReportHistory();\r\n }\r\n\r\n public getGeneratorForecastReportHistory() {\r\n this.reportHistoryService.getGeneratorForecastReportHistory().subscribe(\r\n (result) => {\r\n this.loading = false;\r\n this.reportHistory = result;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n\r\n public newClicked(template: TemplateRef): void {\r\n // Show Modal\r\n this.modalRef = this.modalService.show(template);\r\n }\r\n\r\n public onPopupSubmit() {\r\n this.commonService.validateAllFormFields(this.newReportForm);\r\n\r\n if (this.newReportForm.valid) {\r\n this.modalRef.hide();\r\n this.submitting = true;\r\n\r\n this.reportHistoryService\r\n .createGeneratorForecastReportEntry(this.newReportForm.controls[\r\n 'fromDateControl'\r\n ].value as Date)\r\n .subscribe(\r\n () => {\r\n this.newReportForm.reset();\r\n this.toaster.success('submitted report');\r\n this.getGeneratorForecastReportHistory();\r\n this.submitting = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.submitting = false;\r\n }\r\n );\r\n }\r\n }\r\n\r\n public onGenerateConsumerForecastReport(row: any) {\r\n this.downloadingReport = true;\r\n this.reportHistoryService\r\n .getGeneratorForecastReportByForecastStartDate(\r\n row.generatorForecastId\r\n )\r\n .subscribe(\r\n (response) => {\r\n importedSaveAs(response, 'GeneratorForecastReport.xls');\r\n this.downloadingReport = false;\r\n },\r\n () => {\r\n this.errorMessage = this.commonService.handleDocumentErrorMessage(\r\n 'generator forecast'\r\n );\r\n this.downloadingReport = false;\r\n }\r\n );\r\n }\r\n\r\n public onDeleteRun(row: any) {\r\n if (\r\n confirm(\r\n 'Are you sure you want to delete this generator forecast run'\r\n )\r\n ) {\r\n this.toaster.info('Deleting generator forecast run');\r\n this.reportHistoryService\r\n .deleteGeneratorForecast(row.generatorForecastId)\r\n .subscribe(\r\n () => {\r\n this.getGeneratorForecastReportHistory();\r\n },\r\n (error) => {\r\n this.toaster.error(\r\n this.commonService.handleErrorMessage(error)\r\n );\r\n }\r\n );\r\n }\r\n }\r\n}\r\n","import { Component, OnInit, TemplateRef } from '@angular/core';\r\nimport { ForecastReportsService } from '../forecast-reports.service';\r\n\r\nimport { FormGroup, FormControl, Validators } from '@angular/forms';\r\nimport { BsModalRef, BsModalService } from 'ngx-bootstrap';\r\nimport { CommonService } from '../../../../common/common-service';\r\nimport { EntityLookup } from '../../../../model/entity-lookup.model';\r\nimport { saveAs as importedSaveAs } from 'file-saver';\r\nimport { RevenueForecast } from '../../../../model/report/revenue-forecast.model';\r\nimport { Router } from '@angular/router';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { AuthorisationService } from '../../../../authorisation-service/authorisation.service';\r\nimport { isNullOrUndefined } from 'util';\r\n\r\n@Component({\r\n selector: 'consumer-and-revenue-forecast-report',\r\n templateUrl: './consumer-and-revenue-forecast-report.component.html',\r\n styleUrls: [\r\n '../../../form.styles.scss',\r\n './consumer-and-revenue-forecast-report.component.scss',\r\n ],\r\n})\r\nexport class ConsumerAndRevenueForecastReportComponent implements OnInit {\r\n public submitting: boolean = false;\r\n public downloadingReport: boolean = false;\r\n public errorMessage = '';\r\n public loading: boolean;\r\n public reportHistory: RevenueForecast[];\r\n public months: EntityLookup[];\r\n\r\n public newReportForm: FormGroup;\r\n private modalRef: BsModalRef;\r\n\r\n constructor(\r\n private forecastReportsService: ForecastReportsService,\r\n private toastr: ToastrService,\r\n private modalService: BsModalService,\r\n public commonService: CommonService,\r\n public authorisationService: AuthorisationService,\r\n public router: Router\r\n ) {}\r\n\r\n public ngOnInit() {\r\n this.loading = true;\r\n this.submitting = false;\r\n const today = new Date();\r\n this.commonService.getEntityLookups(['Month']).subscribe(\r\n (response) => {\r\n this.months = response.entityLookupResultList['month'];\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n\r\n this.newReportForm = new FormGroup({\r\n year: new FormControl(today.getFullYear(), [\r\n Validators.required,\r\n Validators.min(2000),\r\n Validators.max(today.getFullYear()),\r\n ]),\r\n monthLookupId: new FormControl(null, Validators.required),\r\n monthsToForecastFor: new FormControl(36, [\r\n Validators.required,\r\n Validators.min(1),\r\n Validators.max(36),\r\n ]),\r\n averageNumberOfNewPostPaidConsumers: new FormControl(\r\n null,\r\n Validators.required\r\n ),\r\n averageNumberOfNewNonTouConsumers: new FormControl(\r\n null,\r\n Validators.required\r\n ),\r\n });\r\n\r\n this.getConsumerAndRevenueForecastReportHistory();\r\n }\r\n\r\n public getConsumerAndRevenueForecastReportHistory(\r\n revenueForecasIdToDelete: number = null\r\n ) {\r\n this.forecastReportsService\r\n .getConsumerAndRevenueForecastReportHistory()\r\n .subscribe(\r\n (result) => {\r\n this.loading = false;\r\n this.reportHistory = result;\r\n if (!isNullOrUndefined(revenueForecasIdToDelete)) {\r\n this.forecastReportsService\r\n .deleteRevenueAndConsumerForecastRun(\r\n revenueForecasIdToDelete\r\n )\r\n .subscribe(\r\n () => {\r\n this.toastr.success(\r\n 'Successfully deleted forecast run'\r\n );\r\n this.getConsumerAndRevenueForecastReportHistory();\r\n },\r\n (error) => {\r\n this.toastr.error(\r\n this.commonService.handleErrorMessage(\r\n error\r\n )\r\n );\r\n }\r\n );\r\n }\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n\r\n public newClicked(template: TemplateRef): void {\r\n this.modalRef = this.modalService.show(template);\r\n }\r\n\r\n public onPopupSubmit() {\r\n this.errorMessage = '';\r\n this.commonService.validateAllFormFields(this.newReportForm);\r\n if (this.newReportForm.valid) {\r\n this.modalRef.hide();\r\n this.submitting = true;\r\n this.submitting = false;\r\n const fromDate = new Date(\r\n this.newReportForm.get('year').value,\r\n this.months.find(\r\n (m) =>\r\n m.entityLookupId ===\r\n this.newReportForm.get('monthLookupId').value\r\n ).orderPriority - 1,\r\n 1\r\n );\r\n\r\n const newEntryParam = new RevenueForecast(\r\n fromDate,\r\n this.newReportForm.get('monthsToForecastFor').value,\r\n null,\r\n this.newReportForm.get(\r\n 'averageNumberOfNewPostPaidConsumers'\r\n ).value,\r\n this.newReportForm.get(\r\n 'averageNumberOfNewNonTouConsumers'\r\n ).value\r\n );\r\n\r\n this.forecastReportsService\r\n .createConsumerAndRevenueForecastReportEntry(newEntryParam)\r\n .subscribe(\r\n () => {\r\n this.newReportForm.reset();\r\n this.toastr.success('submitted report');\r\n this.getConsumerAndRevenueForecastReportHistory();\r\n this.submitting = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.submitting = false;\r\n }\r\n );\r\n }\r\n }\r\n\r\n public reRunRevenueAndConsumerForecast(row: any) {\r\n this.forecastReportsService\r\n .reRunRevenueAndConsumerForecast(row)\r\n .subscribe(\r\n () => {\r\n this.toastr.info(\r\n 'Consumer & Revenue forecast successfully queued to be re-run'\r\n );\r\n this.getConsumerAndRevenueForecastReportHistory();\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.toastr.error(this.errorMessage);\r\n }\r\n );\r\n }\r\n\r\n public onGenerateConsumerForecastReport(row: any) {\r\n this.downloadingReport = true;\r\n this.toastr.info('Processing consumer forecast report');\r\n this.forecastReportsService\r\n .getConsumerForecastReport(row.consumerForecastId)\r\n .subscribe(\r\n (response) => {\r\n importedSaveAs(response, 'ConsumerForecastReport.xls');\r\n this.downloadingReport = false;\r\n this.toastr.success('Downloading consumer forecast report');\r\n },\r\n () => {\r\n this.downloadingReport = false;\r\n this.toastr.error(\r\n 'An error occurred while attempting to retrieve the consumer forecast report'\r\n );\r\n }\r\n );\r\n }\r\n\r\n public onGenerateConsumerForecastByTariffReport(row: any) {\r\n this.downloadingReport = true;\r\n this.toastr.info('Processing consumer forecast by tariff report');\r\n this.forecastReportsService\r\n .getConsumerForecastByTariffReport(row.consumerForecastId)\r\n .subscribe(\r\n (response) => {\r\n importedSaveAs(\r\n response,\r\n 'ConsumerForecastByTariffReport.xls'\r\n );\r\n this.downloadingReport = false;\r\n this.toastr.success(\r\n 'Downloading consumer forecast by tariff report'\r\n );\r\n },\r\n () => {\r\n this.downloadingReport = false;\r\n this.toastr.error(\r\n 'An error occurred while attempting to retrieve the consumer forecast by tariff report'\r\n );\r\n }\r\n );\r\n }\r\n\r\n public onDeleteRun(row: any) {\r\n if (confirm('Are you sure you want to delete this allocation run')) {\r\n this.toastr.info('Deleting allocation run');\r\n this.forecastReportsService\r\n .markRevenueAndConsumerForecastRunForDeletion(\r\n row.revenueForecastId\r\n )\r\n .subscribe(\r\n () => {\r\n this.getConsumerAndRevenueForecastReportHistory(\r\n row.revenueForecastId\r\n );\r\n },\r\n (error) => {\r\n this.toastr.error(\r\n this.commonService.handleErrorMessage(error)\r\n );\r\n }\r\n );\r\n }\r\n }\r\n\r\n public onGenerateRevenueForecastReport(row: any) {\r\n this.downloadingReport = true;\r\n this.toastr.info('Processing revenue forecast report');\r\n this.forecastReportsService\r\n .getRevenueForecastReport(row.revenueForecastId)\r\n .subscribe(\r\n (response) => {\r\n importedSaveAs(response, 'RevenueForecastReport.xls');\r\n this.downloadingReport = false;\r\n this.toastr.success('Downloading revenue forecast report');\r\n },\r\n () => {\r\n this.downloadingReport = false;\r\n this.toastr.error(\r\n 'An error occurred while attempting to retrieve the revenue forecast report'\r\n );\r\n }\r\n );\r\n }\r\n\r\n public toConsumerForecastWarnings(row: any) {\r\n this.router.navigate(\r\n [\r\n 'report',\r\n 'consumer-forecast-report',\r\n row.consumerForecastId,\r\n 'warnings',\r\n ],\r\n {\r\n queryParams: {\r\n startDate: row.startDateTime,\r\n runDate: row.createdDateTime,\r\n },\r\n }\r\n );\r\n }\r\n\r\n public toRevenueForecastWarnings(row: any) {\r\n this.router.navigate(\r\n [\r\n 'report',\r\n 'revenue-forecast-report',\r\n row.revenueForecastId,\r\n 'warnings',\r\n ],\r\n {\r\n queryParams: {\r\n startDate: row.startDateTime,\r\n runDate: row.createdDateTime,\r\n },\r\n }\r\n );\r\n }\r\n}\r\n","export class RevenueForecast {\r\n public revenueForecastId: number;\r\n constructor(\r\n public startDateTime: Date,\r\n public monthsToForecastFor: number,\r\n public backgroundJobStatus?: string,\r\n public averageNumberOfNewPostPaidConsumers?: number,\r\n public averageNumberOfNewNonTouConsumers?: number,\r\n public consumerForecastMonthProgress?: number,\r\n public consumerForecastId?: number,\r\n public canDelete?: boolean,\r\n public isDeleting?: boolean\r\n ) {}\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { GeneratorApplicationService } from '../../generator-application.service';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { CommonService } from '../../../../../common/common-service';\r\nimport { EntityLookup } from '../../../../../model/entity-lookup.model';\r\nimport { BsModalService } from 'ngx-bootstrap';\r\nimport { GeneratorProject } from '../../../../../model/generator-project.model';\r\n\r\nimport { ToastrService } from 'ngx-toastr';\r\n\r\n@Component({\r\n selector: 'generator-application-project-list',\r\n styleUrls: [\r\n './generator-application-project-list.component.scss',\r\n '../../../../form.styles.scss',\r\n ],\r\n templateUrl: './generator-application-project-list.component.html',\r\n})\r\nexport class GeneratorApplicationProjectListComponent implements OnInit {\r\n public loading: boolean;\r\n public submitting: boolean = false;\r\n public projects: GeneratorProject[];\r\n public errorMessage = '';\r\n public projectTableDisabled: boolean = false;\r\n\r\n private generationCapacities: EntityLookup[];\r\n private technologies: EntityLookup[];\r\n private distributionAreas: EntityLookup[];\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n private generatorApplicationService: GeneratorApplicationService,\r\n private router: Router,\r\n private modalService: BsModalService,\r\n private commonService: CommonService,\r\n protected sanitizer: DomSanitizer,\r\n private toastr: ToastrService\r\n ) {}\r\n\r\n public ngOnInit() {\r\n this.loading = true;\r\n this.submitting = false;\r\n\r\n // Entity Lookups\r\n this.commonService\r\n .getEntityLookups([\r\n 'GenerationCapacity',\r\n 'Technology',\r\n 'Distributor',\r\n ])\r\n .subscribe(\r\n (response) => {\r\n this.generationCapacities =\r\n response.entityLookupResultList['generationCapacity'];\r\n this.technologies =\r\n response.entityLookupResultList['technology'];\r\n this.distributionAreas =\r\n response.entityLookupResultList['distributor'];\r\n },\r\n (error) => {\r\n this.loading = false;\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n\r\n this.generatorApplicationService.getGeneratorProjects().subscribe(\r\n (page) => {\r\n this.projects = page;\r\n this.projectTableDisabled = false;\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.projectTableDisabled = true;\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n\r\n public newClicked() {\r\n this.router.navigate(['/generators/application/project/create']);\r\n }\r\n\r\n public onSelect(event: any): void {\r\n if (this.projectTableDisabled) {\r\n return;\r\n }\r\n\r\n if (event.selected[0].distributor.eligibleForGeneratorApplication) {\r\n const generatorProjectId = event.selected[0].generatorProjectId;\r\n this.router.navigate(\r\n [\r\n '/generators/application/project/',\r\n generatorProjectId,\r\n 'edit',\r\n ],\r\n { relativeTo: this.route }\r\n );\r\n } else {\r\n this.toastr.warning(\r\n 'The project is not in an eligible distribution area'\r\n );\r\n }\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { ActivatedRoute, Params, Router } from '@angular/router';\r\nimport { GeneratorApplicationService } from '../../generator-application.service';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { GeneratorProject } from '../../../../../model/generator-project.model';\r\nimport {\r\n FormBuilder,\r\n FormControl,\r\n FormGroup,\r\n Validators,\r\n} from '@angular/forms';\r\nimport { CommonService } from '../../../../../common/common-service';\r\nimport { EntityLookup } from '../../../../../model/entity-lookup.model';\r\nimport { CustomValidators } from 'ng4-validators';\r\nimport { Contact } from '../../../../../model/contact.model';\r\nimport { BsModalService } from 'ngx-bootstrap';\r\n\r\nimport { GeneratorApplication } from '../../../../../model/application/generator-application/generator-application.model';\r\nimport { ComponentTriggersService } from '../../../../../common/component-triggers.service';\r\nimport { GeneratorProjectFacility } from '../../../../../model/generator-project-facility.model';\r\nimport { ToastrService } from 'ngx-toastr';\r\n\r\n@Component({\r\n selector: 'generator-application-project-edit',\r\n styleUrls: [\r\n './generator-application-project-edit.component.scss',\r\n '../../../../form.styles.scss',\r\n ],\r\n templateUrl: './generator-application-project-edit.component.html',\r\n})\r\nexport class GeneratorApplicationProjectEditComponent implements OnInit {\r\n public loading: boolean;\r\n public saving: boolean;\r\n public submittingFacility: boolean;\r\n public project: GeneratorProject = null;\r\n public generatorApplication: GeneratorApplication;\r\n public errorMessage = '';\r\n public activeTab: string;\r\n public isReadOnlyMode: boolean = false;\r\n\r\n private projectForm: FormGroup;\r\n private existingProjectId: number;\r\n private microScaleGenCapMultiLookupId: number;\r\n\r\n private generationCapacities: EntityLookup[];\r\n private technologies: EntityLookup[];\r\n private companyTypes: EntityLookup[];\r\n private distributionAreas: EntityLookup[];\r\n private editableFacilityStatuses: string[] = [\r\n 'Phase 1 Capture',\r\n 'Phase 2 Capture',\r\n 'TradeCo Declined',\r\n 'Need More Information',\r\n 'TradeCo Need More Information',\r\n 'Evaluation Declined',\r\n ];\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n private generatorApplicationService: GeneratorApplicationService,\r\n private commonService: CommonService,\r\n private componentTriggerService: ComponentTriggersService,\r\n private router: Router,\r\n protected sanitizer: DomSanitizer,\r\n private formBuilder: FormBuilder,\r\n private modalService: BsModalService,\r\n private toastr: ToastrService\r\n ) {}\r\n\r\n public ngOnInit() {\r\n this.loading = true;\r\n this.activeTab = 'details';\r\n this.errorMessage = '';\r\n\r\n // Entity Lookups\r\n this.commonService\r\n .getEntityLookups([\r\n 'GenerationCapacity',\r\n 'Technology',\r\n 'Distributor',\r\n 'CompanyType',\r\n ])\r\n .subscribe(\r\n (response) => {\r\n this.generationCapacities =\r\n response.entityLookupResultList['generationCapacity'];\r\n this.technologies =\r\n response.entityLookupResultList['technology'];\r\n this.companyTypes =\r\n response.entityLookupResultList['companyType'];\r\n this.distributionAreas =\r\n response.entityLookupResultList['distributor'];\r\n\r\n this.generationCapacities.forEach((genCap) => {\r\n if (\r\n genCap.value ===\r\n 'Generation capacity 100 kW to 1 MW (Microscale - Multiple Facility)'\r\n ) {\r\n this.microScaleGenCapMultiLookupId =\r\n genCap.entityLookupId;\r\n }\r\n });\r\n },\r\n (error) => {\r\n this.loading = false;\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n return;\r\n }\r\n );\r\n\r\n this.route.queryParams.subscribe(\r\n (params: Params) => {\r\n if (params['activeTab']) {\r\n this.activeTab = params['activeTab'];\r\n }\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n\r\n this.route.params.subscribe(\r\n (params: Params) => {\r\n if (params['generatorProjectId']) {\r\n this.existingProjectId = params['generatorProjectId'];\r\n this.generatorApplicationService\r\n .getGeneratorApplicationOnly()\r\n .subscribe(\r\n (generatorApplication: GeneratorApplication) => {\r\n this.generatorApplication = generatorApplication;\r\n this.generatorApplicationService\r\n .getGeneratorProjectWithFacilities(\r\n this.existingProjectId\r\n )\r\n .subscribe(\r\n (page) => {\r\n this.project = page;\r\n this.initForm();\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.loading = false;\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n },\r\n (error) => {\r\n this.loading = false;\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n } else {\r\n this.generatorApplicationService\r\n .getGeneratorApplicationOnly()\r\n .subscribe(\r\n (generatorApplication: GeneratorApplication) => {\r\n this.generatorApplication = generatorApplication;\r\n this.initForm();\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.loading = false;\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n }\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n }\r\n\r\n public initForm() {\r\n this.projectForm = this.initProjectForm();\r\n this.onSameAsHoldingCompany(true);\r\n this.checkFacilityStatusesForEditProject();\r\n }\r\n\r\n public onSubmit(): void {\r\n this.commonService.validateAllFormFields(this.projectForm);\r\n this.componentTriggerService.triggerValidationMessages.next();\r\n if (this.projectForm.valid) {\r\n this.saving = true;\r\n this.errorMessage = '';\r\n this.generatorApplicationService\r\n .createOrUpdateGeneratorProject(this.projectForm.getRawValue())\r\n .subscribe(\r\n (result) => {\r\n this.project = result as GeneratorProject;\r\n this.toastr.success(\r\n 'Generator project successfully saved'\r\n );\r\n this.initForm();\r\n this.saving = false;\r\n this.activeTab = 'facilities';\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.saving = false;\r\n }\r\n );\r\n }\r\n }\r\n\r\n public newFacilityClicked() {\r\n if (!this.project.distributor.eligibleForGeneratorApplication) {\r\n this.toastr.warning(\r\n 'The project is not in an eligible distribution area'\r\n );\r\n } else {\r\n const generatorProjectId = this.project.generatorProjectId;\r\n this.router.navigate([\r\n '/generators/application/project/',\r\n generatorProjectId,\r\n 'facilities',\r\n 'create',\r\n ]);\r\n }\r\n }\r\n\r\n public onSelectFacility(event: any): void {\r\n const facilityStatus = event.selected[0].facilityApplicationStatus;\r\n\r\n if (\r\n isNullOrUndefined(facilityStatus) ||\r\n isNullOrUndefined(facilityStatus.value) ||\r\n this.editableFacilityStatuses.indexOf(facilityStatus.value) < 0\r\n ) {\r\n this.toastr.warning(\r\n 'You can only edit a facility in the following Application statuses: ' +\r\n this.editableFacilityStatuses.join(', ')\r\n );\r\n return;\r\n }\r\n\r\n const selectedProjectFacilityId =\r\n event.selected[0].generatorProjectFacilityId;\r\n const generatorProjectId = this.project.generatorProjectId;\r\n this.router.navigate([\r\n '/generators/application/project/',\r\n generatorProjectId,\r\n 'facilities',\r\n selectedProjectFacilityId,\r\n 'edit',\r\n ]);\r\n }\r\n\r\n public onSameAsHoldingCompany(firstLoad: boolean = false) {\r\n const spvCompanyDetailsFormGroup: FormGroup = this.projectForm.controls\r\n .spvCompanyDetails as FormGroup;\r\n const spvContactDetailsFormGroup: FormGroup = this.projectForm.controls\r\n .spvContactPersonDetails as FormGroup;\r\n const checked = this.projectForm.controls.sameAsHoldingCompany.value;\r\n\r\n if (checked) {\r\n spvCompanyDetailsFormGroup.controls.companyId.setValue(\r\n this.generatorApplication.generatorCompany.company.companyId\r\n );\r\n spvCompanyDetailsFormGroup.controls.companyName.setValue(\r\n this.generatorApplication.generatorCompany.company.companyName\r\n );\r\n spvCompanyDetailsFormGroup.controls.companyName.setValue(\r\n this.generatorApplication.generatorCompany.company.companyName\r\n );\r\n spvCompanyDetailsFormGroup.controls.companyType.setValue(\r\n this.generatorApplication.generatorCompany.company\r\n .companyTypeLookupId\r\n );\r\n spvCompanyDetailsFormGroup.controls.telephoneNumber.setValue(\r\n this.generatorApplication.generatorCompany.company\r\n .telephoneNumber\r\n );\r\n spvCompanyDetailsFormGroup.controls.registrationNumber.setValue(\r\n this.generatorApplication.generatorCompany.company\r\n .registrationNumber\r\n );\r\n spvCompanyDetailsFormGroup.controls.vatNumber.setValue(\r\n this.generatorApplication.generatorCompany.company.vatNumber\r\n );\r\n this.projectForm.controls.parentCompanyId.setValue(null);\r\n spvCompanyDetailsFormGroup.disable();\r\n\r\n let directorContact: Contact = this.generatorApplication.generatorCompany.company.additionalContacts.find(\r\n function(contact) {\r\n return !isNullOrUndefined(\r\n contact.attributes.find(function(attribute) {\r\n return (\r\n attribute.attributeName === 'IsDirectorContact'\r\n );\r\n })\r\n );\r\n }\r\n );\r\n if (!directorContact) {\r\n directorContact = this.generatorApplication.generatorCompany\r\n .company.additionalContacts[0];\r\n }\r\n\r\n spvContactDetailsFormGroup.controls.contactId.setValue(\r\n directorContact.contactId\r\n );\r\n spvContactDetailsFormGroup.controls.firstName.setValue(\r\n directorContact.firstName\r\n );\r\n spvContactDetailsFormGroup.controls.firstName.setValue(\r\n directorContact.firstName\r\n );\r\n spvContactDetailsFormGroup.controls.lastName.setValue(\r\n directorContact.lastName\r\n );\r\n spvContactDetailsFormGroup.controls.position.setValue(\r\n directorContact.position\r\n );\r\n spvContactDetailsFormGroup.controls.identityNumber.setValue(\r\n directorContact.identityNumber\r\n );\r\n spvContactDetailsFormGroup.controls.cellNumber.setValue(\r\n directorContact.cellNumber\r\n );\r\n spvContactDetailsFormGroup.controls.landLineNumber.setValue(\r\n directorContact.landLineNumber\r\n );\r\n spvContactDetailsFormGroup.controls.email.setValue(\r\n directorContact.email\r\n );\r\n spvContactDetailsFormGroup.disable();\r\n } else {\r\n this.projectForm.controls.parentCompanyId.setValue(\r\n this.generatorApplication.generatorCompany.company.companyId\r\n );\r\n if (!firstLoad) {\r\n this.projectForm.controls.spvCompanyDetails.reset();\r\n this.projectForm.controls.spvCompanyDetails\r\n .get('registrationNumber')\r\n .reset();\r\n this.projectForm.controls.spvCompanyDetails\r\n .get('vatNumber')\r\n .reset();\r\n this.projectForm.controls.spvCompanyDetails\r\n .get('telephoneNumber')\r\n .reset();\r\n this.projectForm.controls.spvContactPersonDetails.reset();\r\n }\r\n spvCompanyDetailsFormGroup.enable();\r\n spvContactDetailsFormGroup.enable();\r\n }\r\n }\r\n\r\n private initProjectForm(): FormGroup {\r\n return this.formBuilder.group({\r\n spvDetails: this.formBuilder.group({\r\n isCoGeneration: new FormControl(\r\n this.project === null ? false : this.project.isCoGeneration\r\n ),\r\n generationCapacity: new FormControl(\r\n this.project === null\r\n ? null\r\n : this.project.generationCapacityLookupId,\r\n [Validators.required]\r\n ),\r\n generatorProjectName: new FormControl(\r\n this.project == null\r\n ? ''\r\n : this.project.generatorProjectName,\r\n [Validators.required, Validators.maxLength(250)]\r\n ),\r\n projectTechnologyType: new FormControl(\r\n this.project === null\r\n ? null\r\n : this.project.technologyLookupId,\r\n [Validators.required]\r\n ),\r\n }),\r\n spvCompanyDetails: this.formBuilder.group({\r\n companyId: new FormControl(\r\n this.project === null\r\n ? null\r\n : this.project.generatorCompany.generatorCompanyId\r\n ),\r\n companyType: new FormControl(\r\n this.project === null\r\n ? null\r\n : this.project.generatorCompany.company\r\n .companyTypeLookupId,\r\n [Validators.required]\r\n ),\r\n companyName: new FormControl(\r\n this.project === null\r\n ? ''\r\n : this.project.generatorCompany.company.companyName,\r\n [Validators.required, Validators.maxLength(50)]\r\n ),\r\n registrationNumber: new FormControl(\r\n this.project === null\r\n ? ''\r\n : this.project.generatorCompany.company\r\n .registrationNumber,\r\n [\r\n Validators.required,\r\n Validators.maxLength(14),\r\n this.commonService.companyRegistrationNumberValidator.bind(\r\n this\r\n ),\r\n ]\r\n ),\r\n vatNumber: new FormControl(\r\n this.project === null\r\n ? ''\r\n : this.project.generatorCompany.company.vatNumber\r\n ),\r\n telephoneNumber: new FormControl(\r\n this.project === null\r\n ? ''\r\n : this.project.generatorCompany.company.telephoneNumber,\r\n [\r\n Validators.required,\r\n Validators.minLength(10),\r\n Validators.maxLength(20),\r\n CustomValidators.digits,\r\n ]\r\n ),\r\n }),\r\n spvContactPersonDetails: this.formBuilder.group({\r\n contactId: new FormControl(\r\n this.project === null\r\n ? null\r\n : this.project.generatorCompany.company\r\n .additionalContacts[0].contactId\r\n ),\r\n firstName: new FormControl(\r\n this.project === null\r\n ? ''\r\n : this.project.generatorCompany.company\r\n .additionalContacts[0].firstName,\r\n [Validators.required, Validators.maxLength(50)]\r\n ),\r\n lastName: new FormControl(\r\n this.project === null\r\n ? ''\r\n : this.project.generatorCompany.company\r\n .additionalContacts[0].lastName,\r\n [Validators.required, Validators.maxLength(50)]\r\n ),\r\n identityNumber: new FormControl(\r\n this.project === null\r\n ? ''\r\n : this.project.generatorCompany.company\r\n .additionalContacts[0].identityNumber,\r\n [\r\n Validators.maxLength(13),\r\n Validators.minLength(13),\r\n CustomValidators.digits,\r\n ]\r\n ),\r\n position: new FormControl(\r\n this.project === null\r\n ? ''\r\n : this.project.generatorCompany.company\r\n .additionalContacts[0].position,\r\n [Validators.required, Validators.maxLength(30)]\r\n ),\r\n cellNumber: new FormControl(\r\n this.project === null\r\n ? ''\r\n : this.project.generatorCompany.company\r\n .additionalContacts[0].cellNumber,\r\n [\r\n Validators.required,\r\n Validators.minLength(10),\r\n Validators.maxLength(20),\r\n CustomValidators.digits,\r\n ]\r\n ),\r\n landLineNumber: new FormControl(\r\n this.project === null\r\n ? ''\r\n : this.project.generatorCompany.company\r\n .additionalContacts[0].landLineNumber,\r\n [\r\n Validators.required,\r\n Validators.minLength(10),\r\n Validators.maxLength(20),\r\n CustomValidators.digits,\r\n ]\r\n ),\r\n email: new FormControl(\r\n this.project === null\r\n ? ''\r\n : this.project.generatorCompany.company\r\n .additionalContacts[0].email,\r\n [\r\n Validators.required,\r\n Validators.email,\r\n Validators.maxLength(100),\r\n ]\r\n ),\r\n }),\r\n parentCompanyId: new FormControl(\r\n this.project === null || this.project.generatorCompany == null\r\n ? null\r\n : this.project.generatorCompany.company.parentCompanyId\r\n ),\r\n generatorProjectId: new FormControl(\r\n this.project === null ? null : this.project.generatorProjectId\r\n ),\r\n spvDistributionArea: new FormControl(\r\n this.project === null ? null : this.project.distributorId,\r\n [Validators.required]\r\n ),\r\n sameAsHoldingCompany: new FormControl(\r\n this.project === null\r\n ? false\r\n : this.project.sameAsHoldingCompany\r\n ),\r\n generatorApplicationId: new FormControl(\r\n this.generatorApplication.generatorApplicationId\r\n ),\r\n });\r\n }\r\n\r\n private checkFacilityStatusesForEditProject() {\r\n this.isReadOnlyMode = false;\r\n\r\n if (isNullOrUndefined(this.project)) {\r\n return;\r\n }\r\n\r\n this.project.facilities.forEach(\r\n (facility: GeneratorProjectFacility) => {\r\n if (\r\n isNullOrUndefined(facility.facilityApplicationStatus) ||\r\n isNullOrUndefined(\r\n facility.facilityApplicationStatus.value\r\n ) ||\r\n this.editableFacilityStatuses.indexOf(\r\n facility.facilityApplicationStatus.value\r\n ) < 0\r\n ) {\r\n this.isReadOnlyMode = true;\r\n this.toastr.warning(\r\n 'You can not edit project because facility ' +\r\n facility.facilityName +\r\n ' is in the following Application status: ' +\r\n facility.facilityApplicationStatus.value\r\n );\r\n this.projectForm.disable();\r\n return;\r\n }\r\n }\r\n );\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { ActivatedRoute, Params, Router } from '@angular/router';\r\nimport { GeneratorApplicationService } from '../../generator-application.service';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { isNullOrUndefined } from 'util';\r\nimport {\r\n AbstractControl,\r\n FormBuilder,\r\n FormControl,\r\n FormGroup,\r\n ValidatorFn,\r\n Validators,\r\n} from '@angular/forms';\r\nimport { CommonService } from '../../../../../common/common-service';\r\nimport { EntityLookup } from '../../../../../model/entity-lookup.model';\r\nimport { GeneratorProjectFacility } from '../../../../../model/generator-project-facility.model';\r\n\r\nimport { CustomValidators } from 'ng4-validators';\r\nimport { ComponentTriggersService } from '../../../../../common/component-triggers.service';\r\nimport { NewFacility } from '../../../../../model/application/generator-application/new-facility.model';\r\nimport { ExistingFacility } from '../../../../../model/application/generator-application/existing-facility.model';\r\nimport { GenerationData } from '../../../../../model/application/generator-application/generation-data.model';\r\nimport { GeneratorProject } from '../../../../../model/generator-project.model';\r\nimport { ToastrService } from 'ngx-toastr';\r\n\r\n@Component({\r\n selector: 'generator-application-project-edit',\r\n styleUrls: [\r\n './generator-application-project-facility-edit.component.scss',\r\n '../../../../form.styles.scss',\r\n ],\r\n templateUrl: './generator-application-project-facility-edit.component.html',\r\n})\r\nexport class GeneratorApplicationProjectFacilityEditComponent\r\n implements OnInit {\r\n public loading: boolean;\r\n public saving: boolean;\r\n public savingPhase2: boolean;\r\n public projectFacility: GeneratorProjectFacility = null;\r\n public projectFacilityPhase2: GeneratorProjectFacility = null;\r\n public errorMessage = '';\r\n public activeTab: string = 'phase1';\r\n public generatorApplicationMetadata: any;\r\n\r\n private projectFacilityPhase1Form: FormGroup;\r\n private projectFacilityId: number;\r\n private projectId: number;\r\n private project: GeneratorProject;\r\n private microScaleGenCapSingleLookupId: number;\r\n private microScaleGenCapMultiLookupId: number;\r\n\r\n private generationCapacities: EntityLookup[];\r\n private provinces: EntityLookup[];\r\n private connectionVoltageSizes: EntityLookup[];\r\n private projectTypes: EntityLookup[];\r\n private selectionChoices: EntityLookup[];\r\n private installedCapacityValidators: ValidatorFn[];\r\n private contractedCapacityValidators: ValidatorFn[];\r\n private projectFacilityPhase2Form: FormGroup;\r\n private selectionChoicesYesId: number;\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n private generatorApplicationService: GeneratorApplicationService,\r\n private componentTriggerService: ComponentTriggersService,\r\n private commonService: CommonService,\r\n private router: Router,\r\n protected sanitizer: DomSanitizer,\r\n private formBuilder: FormBuilder,\r\n private toastr: ToastrService\r\n ) {}\r\n\r\n public ngOnInit() {\r\n this.loading = true;\r\n this.errorMessage = null;\r\n\r\n // Entity Lookups\r\n this.commonService\r\n .getEntityLookups([\r\n 'ConnectionVoltageSize',\r\n 'ProjectType',\r\n 'Province',\r\n 'GenerationCapacity',\r\n 'Selection',\r\n ])\r\n .subscribe(\r\n (response) => {\r\n this.provinces =\r\n response.entityLookupResultList['province'];\r\n this.connectionVoltageSizes =\r\n response.entityLookupResultList[\r\n 'connectionVoltageSize'\r\n ];\r\n this.generationCapacities =\r\n response.entityLookupResultList['generationCapacity'];\r\n this.projectTypes =\r\n response.entityLookupResultList['projectType'];\r\n this.selectionChoices =\r\n response.entityLookupResultList['selection'];\r\n this.selectionChoicesYesId = this.selectionChoices.find(\r\n (x) => x.value === 'Yes'\r\n ).entityLookupId;\r\n\r\n this.generationCapacities.forEach((genCap) => {\r\n if (\r\n genCap.value ===\r\n 'Generation capacity 100 kW to 1 MW (Microscale - Single Facility)'\r\n ) {\r\n this.microScaleGenCapSingleLookupId =\r\n genCap.entityLookupId;\r\n }\r\n if (\r\n genCap.value ===\r\n 'Generation capacity 100 kW to 1 MW (Microscale - Multiple Facility)'\r\n ) {\r\n this.microScaleGenCapMultiLookupId =\r\n genCap.entityLookupId;\r\n }\r\n });\r\n },\r\n (error) => {\r\n this.loading = false;\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n return;\r\n }\r\n );\r\n\r\n this.route.params.subscribe(\r\n (params: Params) => {\r\n this.projectId = params['generatorProjectId'];\r\n\r\n if (params['generatorProjectFacilityId']) {\r\n this.projectFacilityId =\r\n params['generatorProjectFacilityId'];\r\n this.generatorApplicationService\r\n .getGeneratorProjectFacilityPhase1(\r\n this.projectFacilityId\r\n )\r\n .subscribe(\r\n (projectFacility: GeneratorProjectFacility) => {\r\n this.projectFacility = projectFacility;\r\n this.project = projectFacility.generatorProject;\r\n this.initFormPhase1();\r\n\r\n this.generatorApplicationMetadata = {\r\n MetadataTypeLookupName:\r\n 'GeneratorApplicationId',\r\n MetadataValue: this.projectFacility\r\n .generatorProject\r\n .generatorApplicationId,\r\n };\r\n\r\n this.installedCapacityValidators = [\r\n Validators.required,\r\n Validators.min(0.02),\r\n ];\r\n this.contractedCapacityValidators = [\r\n Validators.required,\r\n Validators.min(0.02),\r\n ];\r\n // Init validator for installedCapacity\r\n if (\r\n !isNullOrUndefined(\r\n this.projectFacility.generatorProject\r\n ) &&\r\n (+this.projectFacility.generatorProject\r\n .generationCapacityLookupId ===\r\n +this.microScaleGenCapSingleLookupId ||\r\n +this.projectFacility.generatorProject\r\n .generationCapacityLookupId ===\r\n +this.microScaleGenCapMultiLookupId)\r\n ) {\r\n this.installedCapacityValidators.push(\r\n Validators.max(1.0)\r\n );\r\n }\r\n if (\r\n !isNullOrUndefined(\r\n this.projectFacility.generatorProject\r\n ) &&\r\n (+this.projectFacility.generatorProject\r\n .generationCapacityLookupId ===\r\n +this.microScaleGenCapSingleLookupId ||\r\n +this.projectFacility.generatorProject\r\n .generationCapacityLookupId ===\r\n +this.microScaleGenCapMultiLookupId)\r\n ) {\r\n this.contractedCapacityValidators.push(\r\n Validators.max(1.0)\r\n );\r\n }\r\n\r\n this.generatorApplicationService\r\n .getGeneratorProjectFacilityPhase2(\r\n this.projectFacilityId\r\n )\r\n .subscribe(\r\n (\r\n projectFacilityPhase2: GeneratorProjectFacility\r\n ) => {\r\n this.projectFacilityPhase2 = projectFacilityPhase2;\r\n this.initFormPhase2();\r\n\r\n if (\r\n projectFacilityPhase2\r\n .facilityApplicationStatus\r\n .value === 'Phase 2 Capture'\r\n ) {\r\n this.activeTab = 'phase2';\r\n }\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.loading = false;\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n },\r\n (error) => {\r\n this.loading = false;\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n } else if (params['generatorProjectId']) {\r\n this.generatorApplicationService\r\n .getGeneratorProjectWithFacilities(this.projectId)\r\n .subscribe(\r\n (project) => {\r\n this.project = project;\r\n this.initFormPhase1();\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.loading = false;\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n }\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n }\r\n\r\n public initFormPhase1() {\r\n this.projectFacilityPhase1Form = this.initProjectFacilityPhase1Form();\r\n }\r\n\r\n public initFormPhase2() {\r\n this.projectFacilityPhase2Form = this.initFacilityFormPhase2(\r\n this.project.isMicroScale,\r\n this.projectFacilityPhase2\r\n );\r\n\r\n this.initCheckBoxes();\r\n }\r\n\r\n public documentUploadForFacility(output: any) {\r\n const control = this.projectFacilityPhase2Form.get(output.listenerId);\r\n\r\n control.patchValue(output.value);\r\n }\r\n\r\n public documentUploadForExistingFacility(output: any) {\r\n const control = this.projectFacilityPhase2Form.controls.existingFacility.get(\r\n output.listenerId\r\n );\r\n\r\n control.patchValue(output.value);\r\n }\r\n\r\n public documentUploadForNewFacility(output: any) {\r\n const control = this.projectFacilityPhase2Form.controls.newFacility.get(\r\n output.listenerId\r\n );\r\n\r\n control.patchValue(output.value);\r\n }\r\n\r\n public validateInstalledCapacity(): boolean {\r\n let totalInstalledCapacity = 0;\r\n for (const facility of this.project.facilities) {\r\n totalInstalledCapacity += +facility.installedCapacity;\r\n }\r\n\r\n return !(\r\n totalInstalledCapacity > 2.0 &&\r\n (+this.project.generationCapacity.value ===\r\n +this.microScaleGenCapSingleLookupId ||\r\n +this.project.generationCapacity.value ===\r\n +this.microScaleGenCapMultiLookupId)\r\n );\r\n }\r\n\r\n public validateContractedCapacity(): boolean {\r\n let totalContractedCapacity = 0;\r\n for (const facility of this.project.facilities) {\r\n totalContractedCapacity += +facility.contractedCapacity;\r\n }\r\n\r\n return !(\r\n totalContractedCapacity > 2.0 &&\r\n (+this.project.generationCapacity.value ===\r\n +this.microScaleGenCapSingleLookupId ||\r\n +this.project.generationCapacity.value ===\r\n +this.microScaleGenCapMultiLookupId)\r\n );\r\n }\r\n\r\n public onSubmitPhase1(): void {\r\n this.commonService.validateAllFormFields(\r\n this.projectFacilityPhase1Form\r\n );\r\n this.componentTriggerService.triggerValidationMessages.next();\r\n if (this.projectFacilityPhase1Form.valid) {\r\n this.saving = true;\r\n this.errorMessage = null;\r\n this.generatorApplicationService\r\n .updateGeneratorProjectFacilityPhase1(\r\n this.projectFacilityPhase1Form.getRawValue()\r\n )\r\n .subscribe(\r\n (projectFacility: GeneratorProjectFacility) => {\r\n this.saving = false;\r\n\r\n const selectedProjectFacilityId =\r\n projectFacility.generatorProjectFacilityId;\r\n const generatorProjectId =\r\n projectFacility.generatorProjectId;\r\n this.router.navigate([\r\n '/generators/application/project/',\r\n generatorProjectId,\r\n 'facilities',\r\n selectedProjectFacilityId,\r\n 'edit',\r\n ]);\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.saving = false;\r\n }\r\n );\r\n }\r\n }\r\n\r\n public onSubmitPhase2(): void {\r\n this.commonService.validateAllFormFields(\r\n this.projectFacilityPhase2Form\r\n );\r\n this.componentTriggerService.triggerValidationMessages.next();\r\n if (this.projectFacilityPhase2Form.valid) {\r\n this.savingPhase2 = true;\r\n this.errorMessage = null;\r\n this.generatorApplicationService\r\n .saveGeneratorProjectFacilityPhase2(\r\n this.projectFacilityPhase2Form.getRawValue(),\r\n this.projectFacilityPhase2\r\n )\r\n .subscribe(\r\n () => {\r\n this.savingPhase2 = false;\r\n this.router.navigate(\r\n [\r\n '/generators/application/project/',\r\n this.projectId,\r\n 'edit',\r\n ],\r\n { queryParams: { activeTab: 'facilities' } }\r\n );\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.savingPhase2 = false;\r\n }\r\n );\r\n }\r\n }\r\n\r\n public changeRoofTopSelection(updateValidity: boolean = true): void {\r\n if (!this.project.isMicroScale) {\r\n return;\r\n }\r\n\r\n const roofControl = this.projectFacilityPhase2Form.get(\r\n 'isRoofTopBased'\r\n );\r\n\r\n const roofTopCertificateControl = this.projectFacilityPhase2Form.get(\r\n 'structuralEngineerCertificate'\r\n );\r\n\r\n if (!roofControl) {\r\n return;\r\n }\r\n\r\n if (roofControl.value) {\r\n this.enableControl(\r\n roofTopCertificateControl,\r\n [Validators.required],\r\n updateValidity\r\n );\r\n } else {\r\n this.disableControl(roofTopCertificateControl);\r\n }\r\n }\r\n\r\n public changePropertyOwnerShip(updateValidity: boolean = true): void {\r\n const ippOwnedControl = this.projectFacilityPhase2Form.get(\r\n 'isOwnedByIPP'\r\n );\r\n const officialLeaseControl = this.projectFacilityPhase2Form.get(\r\n 'isOfficialLeaseInPlace'\r\n );\r\n const leaseTitleHolderNameControl = this.projectFacilityPhase2Form.get(\r\n 'leaseTitleHolderName'\r\n );\r\n const leaseStatusCommentControl = this.projectFacilityPhase2Form.get(\r\n 'leaseStatusComment'\r\n );\r\n\r\n if (ippOwnedControl.value) {\r\n this.disableControl(officialLeaseControl, updateValidity);\r\n this.disableControl(leaseTitleHolderNameControl, updateValidity);\r\n this.disableControl(leaseStatusCommentControl, updateValidity);\r\n } else {\r\n if (officialLeaseControl.value) {\r\n this.disableControl(leaseStatusCommentControl, updateValidity);\r\n this.enableControl(\r\n leaseTitleHolderNameControl,\r\n [Validators.required],\r\n updateValidity\r\n );\r\n } else {\r\n this.enableControl(\r\n leaseStatusCommentControl,\r\n [Validators.required],\r\n updateValidity\r\n );\r\n }\r\n this.enableControl(\r\n officialLeaseControl,\r\n [Validators.required],\r\n updateValidity\r\n );\r\n }\r\n }\r\n\r\n public changeLeaseControl(updateValidity: boolean = true): void {\r\n const officialLeaseControl = this.projectFacilityPhase2Form.get(\r\n 'isOfficialLeaseInPlace'\r\n );\r\n const leaseStatusCommentControl = this.projectFacilityPhase2Form.get(\r\n 'leaseStatusComment'\r\n );\r\n const leaseTitleHolderNameControl = this.projectFacilityPhase2Form.get(\r\n 'leaseTitleHolderName'\r\n );\r\n const ippOwnedControl = this.projectFacilityPhase2Form.get(\r\n 'isOwnedByIPP'\r\n );\r\n\r\n if (officialLeaseControl.value) {\r\n this.enableControl(\r\n leaseTitleHolderNameControl,\r\n [Validators.required],\r\n updateValidity\r\n );\r\n this.disableControl(leaseStatusCommentControl);\r\n } else {\r\n if (ippOwnedControl.value) {\r\n this.disableControl(leaseStatusCommentControl);\r\n this.disableControl(leaseTitleHolderNameControl);\r\n } else {\r\n this.enableControl(\r\n leaseStatusCommentControl,\r\n [Validators.required],\r\n updateValidity\r\n );\r\n this.disableControl(leaseTitleHolderNameControl);\r\n }\r\n }\r\n }\r\n\r\n public changeRezoningControls(updateValidity: boolean = true): void {\r\n const rezoningRequiredControl = this.projectFacilityPhase2Form.get(\r\n 'isRezoningRequired'\r\n );\r\n const rezoningAppliedControl = this.projectFacilityPhase2Form.get(\r\n 'rezoningApplied'\r\n );\r\n const rezoningApplicationDateControl = this.projectFacilityPhase2Form.get(\r\n 'rezoningApplicationDate'\r\n );\r\n const rezoningResultObtainedControl = this.projectFacilityPhase2Form.get(\r\n 'rezoningResultObtained'\r\n );\r\n const rezoningApplicationResultControl = this.projectFacilityPhase2Form.get(\r\n 'rezoningApplicationResult'\r\n );\r\n\r\n if (rezoningRequiredControl.value) {\r\n this.enableControl(\r\n rezoningAppliedControl,\r\n [Validators.required],\r\n updateValidity\r\n );\r\n } else {\r\n this.disableControl(rezoningAppliedControl);\r\n this.disableControl(rezoningApplicationDateControl);\r\n this.disableControl(rezoningResultObtainedControl);\r\n this.disableControl(rezoningApplicationResultControl);\r\n }\r\n }\r\n\r\n public changeRezoningApplicationControls(\r\n updateValidity: boolean = true\r\n ): void {\r\n const rezoningAppliedControl = this.projectFacilityPhase2Form.get(\r\n 'rezoningApplied'\r\n );\r\n const rezoningApplicationDateControl = this.projectFacilityPhase2Form.get(\r\n 'rezoningApplicationDate'\r\n );\r\n const rezoningResultObtainedControl = this.projectFacilityPhase2Form.get(\r\n 'rezoningResultObtained'\r\n );\r\n\r\n if (rezoningAppliedControl.value) {\r\n this.enableControl(\r\n rezoningApplicationDateControl,\r\n [Validators.required],\r\n updateValidity\r\n );\r\n this.enableControl(\r\n rezoningResultObtainedControl,\r\n [Validators.required],\r\n updateValidity\r\n );\r\n } else {\r\n this.disableControl(rezoningApplicationDateControl);\r\n this.disableControl(rezoningResultObtainedControl);\r\n }\r\n }\r\n\r\n public changeRezoningResultControl(updateValidity: boolean = true): void {\r\n const rezoningResultObtainedControl = this.projectFacilityPhase2Form.get(\r\n 'rezoningResultObtained'\r\n );\r\n const rezoningApplicationResultControl = this.projectFacilityPhase2Form.get(\r\n 'rezoningApplicationResult'\r\n );\r\n\r\n if (rezoningResultObtainedControl.value) {\r\n this.enableControl(\r\n rezoningApplicationResultControl,\r\n [Validators.required],\r\n updateValidity\r\n );\r\n } else {\r\n this.disableControl(rezoningApplicationResultControl);\r\n }\r\n }\r\n\r\n public changePlannedExpansionControls(\r\n updateValidity: boolean = true\r\n ): void {\r\n const plannedExpansionControl = this.projectFacilityPhase2Form.get(\r\n 'plannedExpansion'\r\n );\r\n const plannedCommissioningDateControl = this.projectFacilityPhase2Form.get(\r\n 'plannedCommissioningDate'\r\n );\r\n const expectedExtraCapacityControl = this.projectFacilityPhase2Form.get(\r\n 'expectedExtraCapacity'\r\n );\r\n\r\n if (plannedExpansionControl.value) {\r\n this.enableControl(\r\n plannedCommissioningDateControl,\r\n [Validators.required],\r\n updateValidity\r\n );\r\n this.enableControl(\r\n expectedExtraCapacityControl,\r\n [Validators.required, Validators.min(0.0)],\r\n updateValidity\r\n );\r\n } else {\r\n this.disableControl(plannedCommissioningDateControl);\r\n this.disableControl(expectedExtraCapacityControl);\r\n }\r\n }\r\n\r\n public changeWebEnabledControls(updateValidity: boolean = true): void {\r\n if (!this.projectFacilityPhase2.isExistingFacility) {\r\n return;\r\n }\r\n const isWebEnabledMetersInstalledControl = this.projectFacilityPhase2Form.controls.existingFacility.get(\r\n 'isWebEnabledMetersInstalled'\r\n );\r\n const webMeterInstallationDateControl = this.projectFacilityPhase2Form.controls.existingFacility.get(\r\n 'webMeterInstallationDate'\r\n );\r\n const meteringCertificateControl = this.projectFacilityPhase2Form.controls.existingFacility.get(\r\n 'meteringCertificate'\r\n );\r\n\r\n if (isWebEnabledMetersInstalledControl.value) {\r\n this.disableControl(webMeterInstallationDateControl);\r\n this.enableControl(\r\n meteringCertificateControl,\r\n [Validators.required],\r\n updateValidity\r\n );\r\n } else {\r\n this.disableControl(meteringCertificateControl);\r\n this.enableControl(\r\n webMeterInstallationDateControl,\r\n [Validators.required],\r\n updateValidity\r\n );\r\n }\r\n }\r\n\r\n public changeNersaLicenceControl(updateValidity: boolean = true): void {\r\n if (!this.project.isMicroScale) {\r\n return;\r\n }\r\n\r\n const hasExistingNERSALicenceControl = this.projectFacilityPhase2Form.get(\r\n 'hasExistingNERSALicence'\r\n );\r\n const nersaGenerationLicenceControl = this.projectFacilityPhase2Form.get(\r\n 'nersaGenerationLicence'\r\n );\r\n const noNERSAGenerationLicenceProvidedReasonControl = this.projectFacilityPhase2Form.get(\r\n 'noNERSAGenerationLicenceProvidedReason'\r\n );\r\n\r\n if (hasExistingNERSALicenceControl.value) {\r\n this.enableControl(\r\n nersaGenerationLicenceControl,\r\n [Validators.required],\r\n updateValidity\r\n );\r\n this.disableControl(noNERSAGenerationLicenceProvidedReasonControl);\r\n } else {\r\n this.enableControl(\r\n noNERSAGenerationLicenceProvidedReasonControl,\r\n [Validators.required],\r\n updateValidity\r\n );\r\n this.disableControl(nersaGenerationLicenceControl);\r\n }\r\n }\r\n\r\n public changeIRPControls(updateValidity: boolean = true): void {\r\n if (this.project.isMicroScale) {\r\n return;\r\n }\r\n\r\n const isIRPRequestSubmittedControl = this.projectFacilityPhase2Form.get(\r\n 'isIRPRequestSubmitted'\r\n );\r\n const deviationApprovalObtainedControl = this.projectFacilityPhase2Form.get(\r\n 'deviationApprovalObtained'\r\n );\r\n const deviationApprovalControl = this.projectFacilityPhase2Form.get(\r\n 'deviationApproval'\r\n );\r\n const noDeviationApprovalObtainedReasonControl = this.projectFacilityPhase2Form.get(\r\n 'noDeviationApprovalObtainedReason'\r\n );\r\n\r\n if (isIRPRequestSubmittedControl.value) {\r\n this.enableControl(\r\n deviationApprovalObtainedControl,\r\n [Validators.required],\r\n updateValidity\r\n );\r\n this.disableControl(deviationApprovalControl);\r\n this.enableControl(\r\n noDeviationApprovalObtainedReasonControl,\r\n [Validators.required],\r\n updateValidity\r\n );\r\n } else {\r\n this.disableControl(deviationApprovalObtainedControl);\r\n this.disableControl(deviationApprovalControl);\r\n this.disableControl(noDeviationApprovalObtainedReasonControl);\r\n }\r\n }\r\n\r\n public changeIRPObtainedControls(updateValidity: boolean = true): void {\r\n if (this.project.isMicroScale) {\r\n return;\r\n }\r\n const deviationApprovalObtainedControl = this.projectFacilityPhase2Form.get(\r\n 'deviationApprovalObtained'\r\n );\r\n const deviationApprovalControl = this.projectFacilityPhase2Form.get(\r\n 'deviationApproval'\r\n );\r\n const noDeviationApprovalObtainedReasonControl = this.projectFacilityPhase2Form.get(\r\n 'noDeviationApprovalObtainedReason'\r\n );\r\n\r\n if (deviationApprovalObtainedControl.value) {\r\n this.enableControl(\r\n deviationApprovalControl,\r\n [Validators.required],\r\n updateValidity\r\n );\r\n this.disableControl(noDeviationApprovalObtainedReasonControl);\r\n } else {\r\n this.enableControl(\r\n noDeviationApprovalObtainedReasonControl,\r\n [Validators.required],\r\n updateValidity\r\n );\r\n this.disableControl(deviationApprovalControl);\r\n }\r\n }\r\n\r\n public changeREIPPPControls(updateValidity: boolean = true): void {\r\n if (\r\n this.project.isMicroScale ||\r\n this.projectFacilityPhase2.isExistingFacility\r\n ) {\r\n return;\r\n }\r\n\r\n const projectSubmittedIntoReipppControl = this.projectFacilityPhase2Form.controls.newFacility.get(\r\n 'projectSubmittedIntoReippp'\r\n );\r\n const roundOfReipppControl = this.projectFacilityPhase2Form.controls.newFacility.get(\r\n 'roundOfReippp'\r\n );\r\n\r\n if (projectSubmittedIntoReipppControl.value) {\r\n this.enableControl(\r\n roundOfReipppControl,\r\n [Validators.required],\r\n updateValidity\r\n );\r\n } else {\r\n this.disableControl(roundOfReipppControl);\r\n }\r\n }\r\n\r\n public changeEIAControls(updateValidity: boolean = true): void {\r\n if (\r\n !this.project.isMicroScale ||\r\n this.projectFacilityPhase2.isExistingFacility\r\n ) {\r\n return;\r\n }\r\n\r\n const eiaCompletedControl = this.projectFacilityPhase2Form.controls.newFacility.get(\r\n 'eiaCompletedLookupId'\r\n );\r\n const eiaDocumentProvidedControl = this.projectFacilityPhase2Form.controls.newFacility.get(\r\n 'eiaDocumentProvided'\r\n );\r\n const eiaDocumentControl = this.projectFacilityPhase2Form.controls.newFacility.get(\r\n 'eiaDocument'\r\n );\r\n const expectedDateOfEiaControl = this.projectFacilityPhase2Form.controls.newFacility.get(\r\n 'expectedDateOfEIA'\r\n );\r\n const rodIssuedControl = this.projectFacilityPhase2Form.controls.newFacility.get(\r\n 'rodIssued'\r\n );\r\n const rodDocumentControl = this.projectFacilityPhase2Form.controls.newFacility.get(\r\n 'rodDocument'\r\n );\r\n const noRODDocumentProvidedReasonControl = this.projectFacilityPhase2Form.controls.newFacility.get(\r\n 'noRODDocumentProvidedReason'\r\n );\r\n\r\n // YES\r\n if (\r\n !isNullOrUndefined(\r\n this.selectionChoices.find(\r\n (x) => x.entityLookupId === eiaCompletedControl.value\r\n )\r\n ) &&\r\n this.selectionChoices.find(\r\n (x) => x.entityLookupId === eiaCompletedControl.value\r\n ).value === 'Yes'\r\n ) {\r\n this.enableControl(\r\n eiaDocumentProvidedControl,\r\n [Validators.required],\r\n updateValidity\r\n );\r\n this.enableControl(\r\n expectedDateOfEiaControl,\r\n [Validators.required],\r\n updateValidity\r\n );\r\n if (eiaDocumentProvidedControl.value) {\r\n this.enableControl(\r\n eiaDocumentControl,\r\n [Validators.required],\r\n updateValidity\r\n );\r\n } else {\r\n this.disableControl(eiaDocumentControl);\r\n }\r\n this.enableControl(\r\n rodIssuedControl,\r\n [Validators.required],\r\n updateValidity\r\n );\r\n if (rodIssuedControl.value) {\r\n this.enableControl(\r\n rodDocumentControl,\r\n [Validators.required],\r\n updateValidity\r\n );\r\n } else {\r\n this.disableControl(rodDocumentControl);\r\n }\r\n this.enableControl(\r\n noRODDocumentProvidedReasonControl,\r\n [Validators.required],\r\n updateValidity\r\n );\r\n // NO or NOT APPLICABLE\r\n } else {\r\n this.disableControl(eiaDocumentProvidedControl);\r\n if (eiaDocumentProvidedControl.value) {\r\n this.enableControl(\r\n eiaDocumentControl,\r\n [Validators.required],\r\n updateValidity\r\n );\r\n } else {\r\n this.disableControl(eiaDocumentControl);\r\n }\r\n this.disableControl(expectedDateOfEiaControl, updateValidity);\r\n\r\n if (eiaDocumentProvidedControl.value) {\r\n this.enableControl(\r\n eiaDocumentControl,\r\n [Validators.required],\r\n updateValidity\r\n );\r\n } else {\r\n this.disableControl(eiaDocumentControl);\r\n }\r\n this.disableControl(rodIssuedControl, updateValidity);\r\n if (rodIssuedControl.value) {\r\n this.enableControl(\r\n rodDocumentControl,\r\n [Validators.required],\r\n updateValidity\r\n );\r\n } else {\r\n this.disableControl(rodDocumentControl);\r\n }\r\n this.disableControl(\r\n noRODDocumentProvidedReasonControl,\r\n updateValidity\r\n );\r\n }\r\n }\r\n\r\n public changeEIADocumentControls(updateValidity: boolean = true): void {\r\n if (\r\n !this.project.isMicroScale ||\r\n this.projectFacilityPhase2.isExistingFacility\r\n ) {\r\n return;\r\n }\r\n\r\n const eiaCompletedControl = this.projectFacilityPhase2Form.controls.newFacility.get(\r\n 'eiaCompletedLookupId'\r\n );\r\n const eiaDocumentProvidedControl = this.projectFacilityPhase2Form.controls.newFacility.get(\r\n 'eiaDocumentProvided'\r\n );\r\n const eiaDocumentControl = this.projectFacilityPhase2Form.controls.newFacility.get(\r\n 'eiaDocument'\r\n );\r\n const expectedDateOfEiaControl = this.projectFacilityPhase2Form.controls.newFacility.get(\r\n 'expectedDateOfEIA'\r\n );\r\n\r\n // YES\r\n if (\r\n !isNullOrUndefined(\r\n this.selectionChoices.find(\r\n (x) => x.entityLookupId === eiaCompletedControl.value\r\n )\r\n ) &&\r\n this.selectionChoices.find(\r\n (x) => x.entityLookupId === eiaCompletedControl.value\r\n ).value === 'Yes'\r\n ) {\r\n if (eiaDocumentProvidedControl.value) {\r\n this.enableControl(\r\n eiaDocumentControl,\r\n [Validators.required],\r\n updateValidity\r\n );\r\n this.disableControl(expectedDateOfEiaControl, updateValidity);\r\n } else {\r\n this.enableControl(\r\n expectedDateOfEiaControl,\r\n [Validators.required],\r\n updateValidity\r\n );\r\n this.disableControl(eiaDocumentControl);\r\n }\r\n } else {\r\n // NO or N/A\r\n this.disableControl(expectedDateOfEiaControl, updateValidity);\r\n this.disableControl(eiaDocumentProvidedControl, updateValidity);\r\n if (eiaDocumentProvidedControl.value) {\r\n this.enableControl(\r\n eiaDocumentControl,\r\n [Validators.required],\r\n updateValidity\r\n );\r\n } else {\r\n this.disableControl(eiaDocumentControl);\r\n }\r\n }\r\n }\r\n\r\n public changeRODControls(updateValidity: boolean = true): void {\r\n if (\r\n !this.project.isMicroScale ||\r\n this.projectFacilityPhase2.isExistingFacility\r\n ) {\r\n return;\r\n }\r\n\r\n const eiaCompletedControl = this.projectFacilityPhase2Form.controls.newFacility.get(\r\n 'eiaCompletedLookupId'\r\n );\r\n const rodIssuedControl = this.projectFacilityPhase2Form.controls.newFacility.get(\r\n 'rodIssued'\r\n );\r\n const rodDocumentControl = this.projectFacilityPhase2Form.controls.newFacility.get(\r\n 'rodDocument'\r\n );\r\n const noRODDocumentProvidedReasonControl = this.projectFacilityPhase2Form.controls.newFacility.get(\r\n 'noRODDocumentProvidedReason'\r\n );\r\n\r\n // YES\r\n if (\r\n !isNullOrUndefined(\r\n this.selectionChoices.find(\r\n (x) => x.entityLookupId === eiaCompletedControl.value\r\n )\r\n ) &&\r\n this.selectionChoices.find(\r\n (x) => x.entityLookupId === eiaCompletedControl.value\r\n ).value === 'Yes'\r\n ) {\r\n if (rodIssuedControl.value) {\r\n this.enableControl(\r\n noRODDocumentProvidedReasonControl,\r\n [Validators.required],\r\n updateValidity\r\n );\r\n this.enableControl(\r\n rodDocumentControl,\r\n [Validators.required],\r\n updateValidity\r\n );\r\n this.disableControl(\r\n noRODDocumentProvidedReasonControl,\r\n updateValidity\r\n );\r\n } else {\r\n this.disableControl(\r\n noRODDocumentProvidedReasonControl,\r\n updateValidity\r\n );\r\n this.disableControl(rodDocumentControl);\r\n this.enableControl(\r\n noRODDocumentProvidedReasonControl,\r\n [Validators.required],\r\n updateValidity\r\n );\r\n }\r\n } else {\r\n // NO or N/A\r\n this.disableControl(\r\n noRODDocumentProvidedReasonControl,\r\n updateValidity\r\n );\r\n this.disableControl(rodDocumentControl);\r\n this.disableControl(rodIssuedControl);\r\n if (rodIssuedControl.value) {\r\n this.enableControl(\r\n rodDocumentControl,\r\n [Validators.required],\r\n updateValidity\r\n );\r\n } else {\r\n this.disableControl(rodDocumentControl);\r\n }\r\n }\r\n }\r\n\r\n public changeACSAPermitRequiredControls(\r\n updateValidity: boolean = true\r\n ): void {\r\n if (\r\n !this.project.isMicroScale ||\r\n this.projectFacilityPhase2.isExistingFacility\r\n ) {\r\n return;\r\n }\r\n\r\n const acsaPermitRequiredControl = this.projectFacilityPhase2Form.controls.newFacility.get(\r\n 'acsaPermitRequiredLookupId'\r\n );\r\n const acsaDocumentControl = this.projectFacilityPhase2Form.controls.newFacility.get(\r\n 'acsaDocument'\r\n );\r\n const noACSADocumentProvidedReasonControl = this.projectFacilityPhase2Form.controls.newFacility.get(\r\n 'noACSADocumentProvidedReason'\r\n );\r\n\r\n // YES\r\n if (\r\n !isNullOrUndefined(\r\n this.selectionChoices.find(\r\n (x) => x.entityLookupId === acsaPermitRequiredControl.value\r\n )\r\n ) &&\r\n this.selectionChoices.find(\r\n (x) => x.entityLookupId === acsaPermitRequiredControl.value\r\n ).value === 'Yes'\r\n ) {\r\n this.enableControl(\r\n acsaDocumentControl,\r\n [Validators.required],\r\n updateValidity\r\n );\r\n if (isNullOrUndefined(acsaDocumentControl.value)) {\r\n this.enableControl(\r\n noACSADocumentProvidedReasonControl,\r\n [Validators.required],\r\n updateValidity\r\n );\r\n } else {\r\n this.disableControl(\r\n noACSADocumentProvidedReasonControl,\r\n updateValidity\r\n );\r\n }\r\n // NO or NOT APPLICABLE\r\n } else {\r\n this.disableControl(acsaDocumentControl);\r\n this.disableControl(\r\n noACSADocumentProvidedReasonControl,\r\n updateValidity\r\n );\r\n }\r\n }\r\n\r\n public changeGeotechnicalStudyRequiredControls(\r\n updateValidity: boolean = true\r\n ): void {\r\n if (\r\n !this.project.isMicroScale ||\r\n this.projectFacilityPhase2.isExistingFacility\r\n ) {\r\n return;\r\n }\r\n\r\n const geotechnicalStudyRequiredControl = this.projectFacilityPhase2Form.controls.newFacility.get(\r\n 'geotechnicalStudyRequiredLookupId'\r\n );\r\n const geotechnicalStudyApprovedControl = this.projectFacilityPhase2Form.controls.newFacility.get(\r\n 'geotechnicalStudyApprovedLookupId'\r\n );\r\n const geotechnicalDocumentProvidedControl = this.projectFacilityPhase2Form.controls.newFacility.get(\r\n 'geotechnicalDocumentProvided'\r\n );\r\n const geotechnicalDocumentControl = this.projectFacilityPhase2Form.controls.newFacility.get(\r\n 'geotechnicalDocument'\r\n );\r\n const noGeotechnicalDocumentProvidedReasonControl = this.projectFacilityPhase2Form.controls.newFacility.get(\r\n 'noGeotechnicalDocumentProvidedReason'\r\n );\r\n\r\n if (!geotechnicalStudyRequiredControl) {\r\n return;\r\n }\r\n\r\n // YES\r\n if (\r\n !isNullOrUndefined(\r\n this.selectionChoices.find(\r\n (x) =>\r\n x.entityLookupId ===\r\n geotechnicalStudyRequiredControl.value\r\n )\r\n ) &&\r\n this.selectionChoices.find(\r\n (x) =>\r\n x.entityLookupId === geotechnicalStudyRequiredControl.value\r\n ).value === 'Yes'\r\n ) {\r\n this.enableControl(\r\n geotechnicalStudyApprovedControl,\r\n [Validators.required],\r\n updateValidity\r\n );\r\n this.enableControl(\r\n geotechnicalDocumentProvidedControl,\r\n [Validators.required],\r\n updateValidity\r\n );\r\n this.disableControl(geotechnicalDocumentControl);\r\n this.enableControl(\r\n noGeotechnicalDocumentProvidedReasonControl,\r\n [Validators.required],\r\n updateValidity\r\n );\r\n // NO or NOT APPLICABLE\r\n } else {\r\n this.disableControl(geotechnicalStudyApprovedControl);\r\n this.disableControl(geotechnicalDocumentProvidedControl);\r\n this.disableControl(geotechnicalDocumentControl);\r\n this.disableControl(\r\n noGeotechnicalDocumentProvidedReasonControl,\r\n updateValidity\r\n );\r\n }\r\n }\r\n\r\n public changeGeotechnicalStudyDocumentControls(\r\n updateValidity: boolean = true\r\n ): void {\r\n if (\r\n !this.project.isMicroScale ||\r\n this.projectFacilityPhase2.isExistingFacility\r\n ) {\r\n return;\r\n }\r\n\r\n const geotechnicalDocumentProvidedControl = this.projectFacilityPhase2Form.controls.newFacility.get(\r\n 'geotechnicalDocumentProvided'\r\n );\r\n const geotechnicalDocumentControl = this.projectFacilityPhase2Form.controls.newFacility.get(\r\n 'geotechnicalDocument'\r\n );\r\n const noGeotechnicalDocumentProvidedReasonControl = this.projectFacilityPhase2Form.controls.newFacility.get(\r\n 'noGeotechnicalDocumentProvidedReason'\r\n );\r\n\r\n if (!geotechnicalDocumentProvidedControl) {\r\n return;\r\n }\r\n\r\n if (geotechnicalDocumentProvidedControl.value) {\r\n this.enableControl(\r\n geotechnicalDocumentControl,\r\n [Validators.required],\r\n updateValidity\r\n );\r\n this.disableControl(\r\n noGeotechnicalDocumentProvidedReasonControl,\r\n updateValidity\r\n );\r\n } else {\r\n this.enableControl(\r\n noGeotechnicalDocumentProvidedReasonControl,\r\n [Validators.required],\r\n updateValidity\r\n );\r\n this.disableControl(geotechnicalDocumentControl);\r\n }\r\n }\r\n\r\n public changeGridConnectionControls(updateValidity: boolean = true): void {\r\n if (\r\n !this.project.isMicroScale ||\r\n this.projectFacilityPhase2.isExistingFacility\r\n ) {\r\n return;\r\n }\r\n\r\n const gridConnectionApplicationMadeControl = this.projectFacilityPhase2Form.controls.newFacility.get(\r\n 'gridConnectionApplicationMade'\r\n );\r\n const dateOfConnectionApplicationControl = this.projectFacilityPhase2Form.controls.newFacility.get(\r\n 'dateOfConnectionApplication'\r\n );\r\n const plannedDateOfConnectionApplicationControl = this.projectFacilityPhase2Form.controls.newFacility.get(\r\n 'plannedDateOfConnectionApplication'\r\n );\r\n\r\n if (!gridConnectionApplicationMadeControl) {\r\n return;\r\n }\r\n\r\n if (gridConnectionApplicationMadeControl.value) {\r\n this.enableControl(\r\n dateOfConnectionApplicationControl,\r\n [Validators.required],\r\n updateValidity\r\n );\r\n this.disableControl(plannedDateOfConnectionApplicationControl);\r\n } else {\r\n this.enableControl(\r\n plannedDateOfConnectionApplicationControl,\r\n [Validators.required],\r\n updateValidity\r\n );\r\n this.disableControl(dateOfConnectionApplicationControl);\r\n }\r\n }\r\n\r\n private initCheckBoxes(): any {\r\n this.changeRoofTopSelection();\r\n this.changePropertyOwnerShip(false);\r\n this.changeNersaLicenceControl();\r\n this.changeLeaseControl();\r\n this.changeRezoningControls();\r\n this.changeRezoningApplicationControls();\r\n this.changeRezoningResultControl();\r\n this.changePlannedExpansionControls();\r\n this.changeWebEnabledControls();\r\n this.changeIRPControls();\r\n this.changeIRPObtainedControls();\r\n this.changeREIPPPControls();\r\n this.changeEIAControls();\r\n this.changeEIADocumentControls();\r\n this.changeRODControls();\r\n this.changeACSAPermitRequiredControls();\r\n this.changeGeotechnicalStudyRequiredControls();\r\n this.changeGeotechnicalStudyDocumentControls();\r\n this.changeGridConnectionControls();\r\n }\r\n\r\n private initProjectFacilityPhase1Form(): FormGroup {\r\n return this.formBuilder.group({\r\n generatorProjectId: new FormControl(this.projectId),\r\n generatorProjectFacilityId: new FormControl(\r\n isNullOrUndefined(this.projectFacility)\r\n ? null\r\n : this.projectFacility.generatorProjectFacilityId\r\n ),\r\n facilityDetails: this.formBuilder.group({\r\n facilityName: new FormControl(\r\n isNullOrUndefined(this.projectFacility)\r\n ? ''\r\n : this.projectFacility.facilityName,\r\n [Validators.required, Validators.maxLength(50)]\r\n ),\r\n latitudeCoordinate: new FormControl(\r\n isNullOrUndefined(this.projectFacility)\r\n ? ''\r\n : this.projectFacility.latitudeCoordinate,\r\n [\r\n Validators.required,\r\n Validators.maxLength(8),\r\n Validators.max(90),\r\n Validators.min(-90),\r\n ]\r\n ),\r\n longitudeCoordinate: new FormControl(\r\n isNullOrUndefined(this.projectFacility)\r\n ? ''\r\n : this.projectFacility.longitudeCoordinate,\r\n [\r\n Validators.required,\r\n Validators.maxLength(8),\r\n Validators.max(180),\r\n Validators.min(-180),\r\n ]\r\n ),\r\n connectionVoltage: new FormControl(\r\n isNullOrUndefined(this.projectFacility)\r\n ? null\r\n : this.projectFacility.connectionVoltageSizeLookupId,\r\n [Validators.required]\r\n ),\r\n projectType: new FormControl(\r\n isNullOrUndefined(this.projectFacility)\r\n ? null\r\n : this.projectFacility.projectTypeLookupId,\r\n [Validators.required]\r\n ),\r\n installedCapacity: new FormControl(\r\n isNullOrUndefined(this.projectFacility)\r\n ? null\r\n : this.projectFacility.installedCapacity,\r\n [Validators.required, Validators.min(0.02)]\r\n ),\r\n contractedCapacity: new FormControl(\r\n isNullOrUndefined(this.projectFacility)\r\n ? null\r\n : this.projectFacility.contractedCapacity,\r\n [Validators.required, Validators.min(0.02)]\r\n ),\r\n isEmbeddedGeneration: new FormControl(\r\n isNullOrUndefined(this.projectFacility)\r\n ? false\r\n : this.projectFacility.isEmbeddedGeneration\r\n ),\r\n generatorFacilityStatusLookupId: new FormControl(\r\n isNullOrUndefined(this.projectFacility)\r\n ? null\r\n : this.projectFacility.generatorFacilityStatusLookupId\r\n ),\r\n }),\r\n facilityAddress: this.formBuilder.group({\r\n addressId: new FormControl(\r\n isNullOrUndefined(this.projectFacility) ||\r\n isNullOrUndefined(this.projectFacility.address)\r\n ? null\r\n : this.projectFacility.address.addressId\r\n ),\r\n addressLine1: new FormControl(\r\n isNullOrUndefined(this.projectFacility) ||\r\n isNullOrUndefined(this.projectFacility.address)\r\n ? ''\r\n : this.projectFacility.address.addressLine1,\r\n [Validators.required, Validators.maxLength(100)]\r\n ),\r\n addressLine2: new FormControl(\r\n isNullOrUndefined(this.projectFacility) ||\r\n isNullOrUndefined(this.projectFacility.address)\r\n ? ''\r\n : this.projectFacility.address.addressLine2,\r\n [Validators.required, Validators.maxLength(100)]\r\n ),\r\n addressLine3: new FormControl(\r\n isNullOrUndefined(this.projectFacility) ||\r\n isNullOrUndefined(this.projectFacility.address)\r\n ? ''\r\n : this.projectFacility.address.addressLine3,\r\n [Validators.maxLength(100)]\r\n ),\r\n province: new FormControl(\r\n isNullOrUndefined(this.projectFacility) ||\r\n isNullOrUndefined(this.projectFacility.address)\r\n ? null\r\n : this.projectFacility.address.provinceLookupId,\r\n [Validators.required]\r\n ),\r\n city: new FormControl(\r\n isNullOrUndefined(this.projectFacility) ||\r\n isNullOrUndefined(this.projectFacility.address)\r\n ? ''\r\n : this.projectFacility.address.city,\r\n [Validators.required, Validators.maxLength(50)]\r\n ),\r\n postalCode: new FormControl(\r\n isNullOrUndefined(this.projectFacility) ||\r\n isNullOrUndefined(this.projectFacility.address)\r\n ? ''\r\n : this.projectFacility.address.postalCode,\r\n [\r\n Validators.required,\r\n Validators.maxLength(10),\r\n CustomValidators.digits,\r\n ]\r\n ),\r\n isRural: new FormControl(\r\n isNullOrUndefined(this.projectFacility) ||\r\n isNullOrUndefined(this.projectFacility.address)\r\n ? false\r\n : this.projectFacility.address.isRural\r\n ),\r\n }),\r\n });\r\n }\r\n\r\n private initFacilityFormPhase2(\r\n isMicroScale: boolean,\r\n facilityPhase2: GeneratorProjectFacility\r\n ): FormGroup {\r\n const group = new FormGroup({\r\n generatorProjectFacilityId: new FormControl(\r\n facilityPhase2.generatorProjectFacilityId\r\n ),\r\n structuralEngineerCertificate: new FormControl(\r\n isNullOrUndefined(facilityPhase2.isRoofTopBased)\r\n ? null\r\n : facilityPhase2.structuralEngineerCertificate\r\n ),\r\n isRoofTopBased: new FormControl(\r\n isNullOrUndefined(facilityPhase2.isRoofTopBased)\r\n ? false\r\n : facilityPhase2.isRoofTopBased\r\n ),\r\n isOwnedByIPP: new FormControl(\r\n isNullOrUndefined(facilityPhase2.isOwnedByIPP)\r\n ? false\r\n : facilityPhase2.isOwnedByIPP,\r\n [Validators.required]\r\n ),\r\n isOfficialLeaseInPlace: new FormControl(\r\n {\r\n value: isNullOrUndefined(\r\n facilityPhase2.isOfficialLeaseInPlace\r\n )\r\n ? false\r\n : facilityPhase2.isOfficialLeaseInPlace,\r\n disabled: false,\r\n },\r\n [Validators.required]\r\n ),\r\n leaseStatusComment: new FormControl({\r\n value: isNullOrUndefined(facilityPhase2.leaseStatusComment)\r\n ? null\r\n : facilityPhase2.leaseStatusComment,\r\n disabled: true,\r\n }),\r\n leaseTitleHolderName: new FormControl({\r\n value: isNullOrUndefined(facilityPhase2.leaseTitleHolderName)\r\n ? null\r\n : facilityPhase2.leaseTitleHolderName,\r\n disabled: true,\r\n }),\r\n isRezoningRequired: new FormControl(\r\n isNullOrUndefined(facilityPhase2.isRezoningRequired)\r\n ? false\r\n : facilityPhase2.isRezoningRequired,\r\n [Validators.required]\r\n ),\r\n rezoningApplied: new FormControl({\r\n value: isNullOrUndefined(facilityPhase2.rezoningApplied)\r\n ? false\r\n : facilityPhase2.rezoningApplied,\r\n disabled: true,\r\n }),\r\n rezoningApplicationDate: new FormControl({\r\n value: isNullOrUndefined(facilityPhase2.rezoningApplicationDate)\r\n ? null\r\n : facilityPhase2.rezoningApplicationDate,\r\n disabled: true,\r\n }),\r\n rezoningResultObtained: new FormControl({\r\n value: isNullOrUndefined(facilityPhase2.rezoningResultObtained)\r\n ? false\r\n : facilityPhase2.rezoningResultObtained,\r\n disabled: true,\r\n }),\r\n rezoningApplicationResult: new FormControl({\r\n value: isNullOrUndefined(\r\n facilityPhase2.rezoningApplicationResult\r\n )\r\n ? false\r\n : facilityPhase2.rezoningApplicationResult,\r\n disabled: true,\r\n }),\r\n numberOfOperationalMonths: new FormControl(\r\n isNullOrUndefined(facilityPhase2.numberOfOperationalMonths)\r\n ? null\r\n : facilityPhase2.numberOfOperationalMonths,\r\n [Validators.required, Validators.min(0), Validators.max(12)]\r\n ),\r\n ppaDurationRequested: new FormControl(\r\n isNullOrUndefined(facilityPhase2.ppaDurationRequested)\r\n ? null\r\n : facilityPhase2.ppaDurationRequested,\r\n [Validators.required, Validators.min(3), Validators.max(25)]\r\n ),\r\n maintenanceDowntimeInWeeks: new FormControl(\r\n isNullOrUndefined(facilityPhase2.maintenanceDowntimeInWeeks)\r\n ? null\r\n : facilityPhase2.maintenanceDowntimeInWeeks,\r\n [Validators.required]\r\n ),\r\n plannedLifeExpectancy: new FormControl(\r\n isNullOrUndefined(facilityPhase2.plannedLifeExpectancy)\r\n ? null\r\n : facilityPhase2.plannedLifeExpectancy,\r\n [Validators.required, Validators.min(0)]\r\n ),\r\n minimumRequiredPriceWinter: new FormControl(\r\n isNullOrUndefined(facilityPhase2.minimumRequiredPriceWinter)\r\n ? null\r\n : facilityPhase2.minimumRequiredPriceWinter,\r\n [Validators.required, Validators.min(0.0)]\r\n ),\r\n minimumRequiredPriceKwSummer: new FormControl(\r\n isNullOrUndefined(facilityPhase2.minimumRequiredPriceKwSummer)\r\n ? null\r\n : facilityPhase2.minimumRequiredPriceKwSummer,\r\n [Validators.required, Validators.min(0.0)]\r\n ),\r\n plannedExpansion: new FormControl(\r\n isNullOrUndefined(facilityPhase2.plannedExpansion)\r\n ? false\r\n : facilityPhase2.plannedExpansion,\r\n [Validators.required]\r\n ),\r\n plannedCommissioningDate: new FormControl({\r\n value: isNullOrUndefined(\r\n facilityPhase2.plannedCommissioningDate\r\n )\r\n ? null\r\n : facilityPhase2.plannedCommissioningDate,\r\n disabled: true,\r\n }),\r\n expectedExtraCapacity: new FormControl(\r\n {\r\n value: isNullOrUndefined(\r\n facilityPhase2.expectedExtraCapacity\r\n )\r\n ? null\r\n : facilityPhase2.expectedExtraCapacity,\r\n disabled: true,\r\n },\r\n [Validators.required, Validators.min(0.0)]\r\n ),\r\n hasExistingNERSALicence: new FormControl(\r\n isNullOrUndefined(facilityPhase2.hasExistingNERSALicence)\r\n ? false\r\n : facilityPhase2.hasExistingNERSALicence,\r\n [Validators.required]\r\n ),\r\n nersaGenerationLicence: new FormControl({\r\n value: isNullOrUndefined(facilityPhase2.nersaGenerationLicence)\r\n ? null\r\n : facilityPhase2.nersaGenerationLicence,\r\n disabled: true,\r\n }),\r\n noNERSAGenerationLicenceProvidedReason: new FormControl({\r\n value: isNullOrUndefined(\r\n facilityPhase2.noNERSAGenerationLicenceProvidedReason\r\n )\r\n ? null\r\n : facilityPhase2.noNERSAGenerationLicenceProvidedReason,\r\n disabled: true,\r\n }),\r\n isIRPRequestSubmitted: new FormControl(\r\n isNullOrUndefined(facilityPhase2.isIRPRequestSubmitted)\r\n ? false\r\n : facilityPhase2.isIRPRequestSubmitted,\r\n [Validators.required]\r\n ),\r\n deviationApprovalObtained: new FormControl({\r\n value: isNullOrUndefined(\r\n facilityPhase2.deviationApprovalObtained\r\n )\r\n ? false\r\n : facilityPhase2.deviationApprovalObtained,\r\n disabled: true,\r\n }),\r\n deviationApproval: new FormControl({\r\n value: isNullOrUndefined(facilityPhase2.deviationApproval)\r\n ? null\r\n : facilityPhase2.deviationApproval,\r\n disabled: true,\r\n }),\r\n noDeviationApprovalObtainedReason: new FormControl({\r\n value: isNullOrUndefined(\r\n facilityPhase2.noDeviationApprovalObtainedReason\r\n )\r\n ? null\r\n : facilityPhase2.noDeviationApprovalObtainedReason,\r\n disabled: true,\r\n }),\r\n });\r\n\r\n if (isMicroScale) {\r\n group.setControl(\r\n 'isRoofTopBased',\r\n new FormControl(\r\n isNullOrUndefined(facilityPhase2.isRoofTopBased)\r\n ? false\r\n : facilityPhase2.isRoofTopBased,\r\n [Validators.required]\r\n )\r\n );\r\n group.setControl(\r\n 'structuralEngineerCertificate',\r\n new FormControl(\r\n isNullOrUndefined(\r\n facilityPhase2.structuralEngineerCertificate\r\n )\r\n ? null\r\n : facilityPhase2.structuralEngineerCertificate,\r\n [Validators.required]\r\n )\r\n );\r\n group.setControl(\r\n 'hasExistingNERSALicence',\r\n new FormControl(\r\n isNullOrUndefined(facilityPhase2.hasExistingNERSALicence)\r\n ? false\r\n : facilityPhase2.hasExistingNERSALicence\r\n )\r\n );\r\n group.setControl(\r\n 'noNERSAGenerationLicenceProvidedReason',\r\n new FormControl({\r\n value: isNullOrUndefined(\r\n facilityPhase2.noNERSAGenerationLicenceProvidedReason\r\n )\r\n ? null\r\n : facilityPhase2.noNERSAGenerationLicenceProvidedReason,\r\n validators: [Validators.required],\r\n disabled: false,\r\n })\r\n );\r\n group.setControl(\r\n 'isIRPRequestSubmitted',\r\n new FormControl(\r\n isNullOrUndefined(facilityPhase2.isIRPRequestSubmitted)\r\n ? false\r\n : facilityPhase2.isIRPRequestSubmitted\r\n )\r\n );\r\n }\r\n if (facilityPhase2.isExistingFacility) {\r\n group.setControl(\r\n 'existingFacility',\r\n this.initExistingFacilityForm(\r\n isMicroScale,\r\n facilityPhase2.existingFacility\r\n )\r\n );\r\n } else {\r\n group.setControl(\r\n 'newFacility',\r\n this.initNewFacilityForm(\r\n isMicroScale,\r\n facilityPhase2.newFacility\r\n )\r\n );\r\n }\r\n return group;\r\n }\r\n\r\n private initExistingFacilityForm(\r\n isMicroScale: boolean,\r\n existingFacility: ExistingFacility\r\n ): FormGroup {\r\n const group = new FormGroup({\r\n isWebEnabledMetersInstalled: new FormControl(\r\n isNullOrUndefined(existingFacility.isWebEnabledMetersInstalled)\r\n ? false\r\n : existingFacility.isWebEnabledMetersInstalled,\r\n [Validators.required]\r\n ),\r\n webMeterInstallationDate: new FormControl(\r\n isNullOrUndefined(existingFacility.webMeterInstallationDate)\r\n ? null\r\n : existingFacility.webMeterInstallationDate,\r\n [Validators.required]\r\n ),\r\n webMeterMakeAndModel: new FormControl(\r\n isNullOrUndefined(existingFacility.webMeterMakeAndModel)\r\n ? null\r\n : existingFacility.webMeterMakeAndModel,\r\n [Validators.required]\r\n ),\r\n meteringCertificate: new FormControl(\r\n isNullOrUndefined(existingFacility.meteringCertificate)\r\n ? null\r\n : existingFacility.meteringCertificate,\r\n [Validators.required]\r\n ),\r\n exportGenerationCapacity: new FormControl(\r\n isNullOrUndefined(existingFacility.exportGenerationCapacity)\r\n ? null\r\n : existingFacility.exportGenerationCapacity,\r\n [\r\n Validators.required,\r\n Validators.min(0.0),\r\n Validators.max(999.99),\r\n ]\r\n ),\r\n generationHistory: this.initYearlyDataForm(\r\n existingFacility.generationHistory\r\n ),\r\n connectionUseOfSystemsDocument: new FormControl(\r\n isNullOrUndefined(\r\n existingFacility.connectionUseOfSystemsDocument\r\n )\r\n ? null\r\n : existingFacility.connectionUseOfSystemsDocument\r\n ),\r\n existingOffTaker: new FormControl(\r\n isNullOrUndefined(existingFacility.existingOffTaker)\r\n ? null\r\n : existingFacility.existingOffTaker\r\n ),\r\n expiryDateOfExistingPPA: new FormControl(\r\n isNullOrUndefined(existingFacility.expiryDateOfExistingPPA)\r\n ? null\r\n : existingFacility.expiryDateOfExistingPPA\r\n ),\r\n });\r\n\r\n if (!isMicroScale) {\r\n group.setControl(\r\n 'isCheckMetersInstalled',\r\n new FormControl(\r\n isNullOrUndefined(existingFacility.isCheckMetersInstalled)\r\n ? false\r\n : existingFacility.isCheckMetersInstalled,\r\n [Validators.required]\r\n )\r\n );\r\n }\r\n\r\n return group;\r\n }\r\n\r\n private initNewFacilityForm(\r\n isMicroScale: boolean,\r\n newFacility: NewFacility\r\n ): FormGroup {\r\n const group = new FormGroup({\r\n plannedGeneration: this.initYearlyDataForm(\r\n newFacility.plannedGeneration\r\n ),\r\n });\r\n\r\n if (isMicroScale) {\r\n group.addControl(\r\n 'electricityAndMeterDeptsNotified',\r\n new FormControl(\r\n isNullOrUndefined(\r\n newFacility.electricityAndMeterDeptsNotified\r\n )\r\n ? false\r\n : newFacility.electricityAndMeterDeptsNotified,\r\n [Validators.required]\r\n )\r\n );\r\n group.addControl(\r\n 'plannedStartDate',\r\n new FormControl(\r\n isNullOrUndefined(newFacility.plannedStartDate)\r\n ? null\r\n : newFacility.plannedStartDate,\r\n [Validators.required]\r\n )\r\n );\r\n group.addControl(\r\n 'projectProgressStatus',\r\n new FormControl(\r\n isNullOrUndefined(newFacility.projectProgressStatus)\r\n ? null\r\n : newFacility.projectProgressStatus,\r\n [Validators.required]\r\n )\r\n );\r\n group.addControl(\r\n 'constructionStartDate',\r\n new FormControl(\r\n isNullOrUndefined(newFacility.constructionStartDate)\r\n ? null\r\n : newFacility.constructionStartDate,\r\n [Validators.required]\r\n )\r\n );\r\n group.addControl(\r\n 'eiaCompletedLookupId',\r\n new FormControl(\r\n isNullOrUndefined(newFacility.eiaCompletedLookupId)\r\n ? null\r\n : newFacility.eiaCompletedLookupId,\r\n [Validators.required]\r\n )\r\n );\r\n group.addControl(\r\n 'eiaDocumentProvided',\r\n new FormControl({\r\n value: isNullOrUndefined(newFacility.eiaDocumentProvided)\r\n ? false\r\n : newFacility.eiaDocumentProvided,\r\n disabled: true,\r\n })\r\n );\r\n group.addControl(\r\n 'eiaDocument',\r\n new FormControl({\r\n value: isNullOrUndefined(newFacility.eiaDocument)\r\n ? null\r\n : newFacility.eiaDocument,\r\n disabled: true,\r\n })\r\n );\r\n group.addControl(\r\n 'expectedDateOfEIA',\r\n new FormControl({\r\n value: isNullOrUndefined(newFacility.expectedDateOfEIA)\r\n ? null\r\n : newFacility.expectedDateOfEIA,\r\n disabled: true,\r\n })\r\n );\r\n group.addControl(\r\n 'rodIssued',\r\n new FormControl(\r\n isNullOrUndefined(newFacility.rodIssued)\r\n ? false\r\n : newFacility.rodIssued,\r\n [Validators.required]\r\n )\r\n );\r\n group.addControl(\r\n 'rodDocument',\r\n new FormControl({\r\n value: isNullOrUndefined(newFacility.rodDocument)\r\n ? null\r\n : newFacility.rodDocument,\r\n disabled: true,\r\n })\r\n );\r\n group.addControl(\r\n 'noRODDocumentProvidedReason',\r\n new FormControl({\r\n value: isNullOrUndefined(\r\n newFacility.noRODDocumentProvidedReason\r\n )\r\n ? null\r\n : newFacility.noRODDocumentProvidedReason,\r\n disabled: true,\r\n })\r\n );\r\n group.addControl(\r\n 'acsaPermitRequiredLookupId',\r\n new FormControl(\r\n isNullOrUndefined(newFacility.acsaPermitRequiredLookupId)\r\n ? null\r\n : newFacility.acsaPermitRequiredLookupId,\r\n [Validators.required]\r\n )\r\n );\r\n group.addControl(\r\n 'acsaDocumentProvided',\r\n new FormControl({\r\n value: isNullOrUndefined(newFacility.acsaDocumentProvided)\r\n ? false\r\n : newFacility.acsaDocumentProvided,\r\n disabled: true,\r\n })\r\n );\r\n group.addControl(\r\n 'acsaDocument',\r\n new FormControl({\r\n value: isNullOrUndefined(newFacility.acsaDocument)\r\n ? null\r\n : newFacility.acsaDocument,\r\n disabled: true,\r\n })\r\n );\r\n group.addControl(\r\n 'noACSADocumentProvidedReason',\r\n new FormControl({\r\n value: isNullOrUndefined(\r\n newFacility.noACSADocumentProvidedReason\r\n )\r\n ? null\r\n : newFacility.noACSADocumentProvidedReason,\r\n disabled: true,\r\n })\r\n );\r\n group.addControl(\r\n 'geotechnicalStudyRequiredLookupId',\r\n new FormControl(\r\n isNullOrUndefined(\r\n newFacility.geotechnicalStudyRequiredLookupId\r\n )\r\n ? null\r\n : newFacility.geotechnicalStudyRequiredLookupId,\r\n [Validators.required]\r\n )\r\n );\r\n group.addControl(\r\n 'geotechnicalStudyApprovedLookupId',\r\n new FormControl({\r\n value: isNullOrUndefined(\r\n newFacility.geotechnicalStudyApprovedLookupId\r\n )\r\n ? null\r\n : newFacility.geotechnicalStudyApprovedLookupId,\r\n disabled: true,\r\n })\r\n );\r\n group.addControl(\r\n 'geotechnicalDocumentProvided',\r\n new FormControl({\r\n value: isNullOrUndefined(\r\n newFacility.geotechnicalDocumentProvided\r\n )\r\n ? false\r\n : newFacility.geotechnicalDocumentProvided,\r\n disabled: true,\r\n })\r\n );\r\n group.addControl(\r\n 'geotechnicalDocument',\r\n new FormControl({\r\n value: isNullOrUndefined(newFacility.geotechnicalDocument)\r\n ? null\r\n : newFacility.geotechnicalDocument,\r\n disabled: true,\r\n })\r\n );\r\n group.addControl(\r\n 'noGeotechnicalDocumentProvidedReason',\r\n new FormControl({\r\n value: isNullOrUndefined(\r\n newFacility.noGeotechnicalDocumentProvidedReason\r\n )\r\n ? null\r\n : newFacility.noGeotechnicalDocumentProvidedReason,\r\n disabled: true,\r\n })\r\n );\r\n group.addControl(\r\n 'gridConnectionApplicationMade',\r\n new FormControl(\r\n isNullOrUndefined(newFacility.gridConnectionApplicationMade)\r\n ? false\r\n : newFacility.gridConnectionApplicationMade,\r\n [Validators.required]\r\n )\r\n );\r\n group.addControl(\r\n 'dateOfConnectionApplication',\r\n new FormControl({\r\n value: isNullOrUndefined(\r\n newFacility.dateOfConnectionApplication\r\n )\r\n ? null\r\n : newFacility.dateOfConnectionApplication,\r\n disabled: true,\r\n })\r\n );\r\n group.addControl(\r\n 'plannedDateOfConnectionApplication',\r\n new FormControl(\r\n isNullOrUndefined(\r\n newFacility.plannedDateOfConnectionApplication\r\n )\r\n ? null\r\n : newFacility.plannedDateOfConnectionApplication,\r\n [Validators.required]\r\n )\r\n );\r\n group.addControl(\r\n 'expectedDateOfGridConnection',\r\n new FormControl(\r\n isNullOrUndefined(newFacility.expectedDateOfGridConnection)\r\n ? null\r\n : newFacility.expectedDateOfGridConnection,\r\n [Validators.required]\r\n )\r\n );\r\n group.addControl(\r\n 'preferredDebtProvider',\r\n new FormControl(\r\n isNullOrUndefined(newFacility.preferredDebtProvider)\r\n ? null\r\n : newFacility.preferredDebtProvider,\r\n [Validators.required]\r\n )\r\n );\r\n group.addControl(\r\n 'targetDebtEquityRatio',\r\n new FormControl(\r\n isNullOrUndefined(newFacility.targetDebtEquityRatio)\r\n ? null\r\n : newFacility.targetDebtEquityRatio,\r\n [\r\n Validators.required,\r\n Validators.min(0),\r\n Validators.max(100),\r\n ]\r\n )\r\n );\r\n group.addControl(\r\n 'equityFundingInPlace',\r\n new FormControl(\r\n isNullOrUndefined(newFacility.equityFundingInPlace)\r\n ? false\r\n : newFacility.equityFundingInPlace,\r\n [Validators.required]\r\n )\r\n );\r\n group.addControl(\r\n 'financialPlan',\r\n new FormControl(\r\n isNullOrUndefined(newFacility.financialPlan)\r\n ? null\r\n : newFacility.financialPlan,\r\n [Validators.required]\r\n )\r\n );\r\n } else {\r\n group.addControl(\r\n 'projectSubmittedIntoReippp',\r\n new FormControl(\r\n isNullOrUndefined(newFacility.projectSubmittedIntoReippp)\r\n ? false\r\n : newFacility.projectSubmittedIntoReippp,\r\n [Validators.required]\r\n )\r\n );\r\n group.addControl(\r\n 'roundOfReippp',\r\n new FormControl({\r\n value: isNullOrUndefined(newFacility.roundOfReippp)\r\n ? null\r\n : newFacility.roundOfReippp,\r\n disabled: true,\r\n })\r\n );\r\n group.addControl(\r\n 'nearestSubstationName',\r\n new FormControl(\r\n isNullOrUndefined(newFacility.nearestSubstationName)\r\n ? null\r\n : newFacility.nearestSubstationName,\r\n [Validators.required]\r\n )\r\n );\r\n group.addControl(\r\n 'loadCapacityOfSubstation',\r\n new FormControl(\r\n isNullOrUndefined(newFacility.loadCapacityOfSubstation)\r\n ? null\r\n : newFacility.loadCapacityOfSubstation,\r\n [Validators.required, Validators.min(0.0)]\r\n )\r\n );\r\n group.addControl(\r\n 'budgetConnectionCostReceived',\r\n new FormControl(\r\n isNullOrUndefined(newFacility.budgetConnectionCostReceived)\r\n ? false\r\n : newFacility.budgetConnectionCostReceived,\r\n [Validators.required]\r\n )\r\n );\r\n group.addControl(\r\n 'budgetConnectionUpgradeCost',\r\n new FormControl(\r\n isNullOrUndefined(newFacility.budgetConnectionUpgradeCost)\r\n ? null\r\n : newFacility.budgetConnectionUpgradeCost,\r\n [Validators.required, Validators.max(99999999.99)]\r\n )\r\n );\r\n group.addControl(\r\n 'connectionAndUseOfSystemsAgreementInPlace',\r\n new FormControl(\r\n isNullOrUndefined(\r\n newFacility.connectionAndUseOfSystemsAgreementInPlace\r\n )\r\n ? false\r\n : newFacility.connectionAndUseOfSystemsAgreementInPlace,\r\n [Validators.required]\r\n )\r\n );\r\n }\r\n\r\n return group;\r\n }\r\n\r\n private initYearlyDataForm(generationData: GenerationData): FormGroup {\r\n return new FormGroup({\r\n january: new FormControl(\r\n isNullOrUndefined(generationData.january)\r\n ? null\r\n : generationData.january,\r\n [Validators.required, Validators.min(0.0)]\r\n ),\r\n february: new FormControl(\r\n isNullOrUndefined(generationData.february)\r\n ? null\r\n : generationData.february,\r\n [Validators.required, Validators.min(0.0)]\r\n ),\r\n march: new FormControl(\r\n isNullOrUndefined(generationData.march)\r\n ? null\r\n : generationData.march,\r\n [Validators.required, Validators.min(0.0)]\r\n ),\r\n april: new FormControl(\r\n isNullOrUndefined(generationData.april)\r\n ? null\r\n : generationData.april,\r\n [Validators.required, Validators.min(0.0)]\r\n ),\r\n may: new FormControl(\r\n isNullOrUndefined(generationData.may)\r\n ? null\r\n : generationData.may,\r\n [Validators.required, Validators.min(0.0)]\r\n ),\r\n june: new FormControl(\r\n isNullOrUndefined(generationData.june)\r\n ? null\r\n : generationData.june,\r\n [Validators.required, Validators.min(0.0)]\r\n ),\r\n july: new FormControl(\r\n isNullOrUndefined(generationData.july)\r\n ? null\r\n : generationData.july,\r\n [Validators.required, Validators.min(0.0)]\r\n ),\r\n august: new FormControl(\r\n isNullOrUndefined(generationData.august)\r\n ? null\r\n : generationData.august,\r\n [Validators.required, Validators.min(0.0)]\r\n ),\r\n september: new FormControl(\r\n isNullOrUndefined(generationData.september)\r\n ? null\r\n : generationData.september,\r\n [Validators.required, Validators.min(0.0)]\r\n ),\r\n october: new FormControl(\r\n isNullOrUndefined(generationData.october)\r\n ? null\r\n : generationData.october,\r\n [Validators.required, Validators.min(0.0)]\r\n ),\r\n november: new FormControl(\r\n isNullOrUndefined(generationData.november)\r\n ? null\r\n : generationData.november,\r\n [Validators.required, Validators.min(0.0)]\r\n ),\r\n december: new FormControl(\r\n isNullOrUndefined(generationData.december)\r\n ? null\r\n : generationData.december,\r\n [Validators.required, Validators.min(0.0)]\r\n ),\r\n });\r\n }\r\n\r\n private enableControl(\r\n control: AbstractControl,\r\n validators: ValidatorFn[],\r\n updateValidity: boolean = true\r\n ) {\r\n control.enable();\r\n control.setValidators(validators);\r\n if (updateValidity) {\r\n control.markAsTouched();\r\n control.updateValueAndValidity();\r\n }\r\n }\r\n\r\n private disableControl(\r\n control: AbstractControl,\r\n updateValidity: boolean = true\r\n ): void {\r\n control.disable();\r\n control.clearValidators();\r\n if (updateValidity) {\r\n control.markAsTouched();\r\n control.updateValueAndValidity();\r\n }\r\n }\r\n}\r\n","import { Component, OnInit, TemplateRef } from '@angular/core';\r\nimport { IntegratorProvider } from '../../../../model/administration/integrator-provider.model';\r\nimport { IntegratorProviderService } from '../integrator-provider.service';\r\nimport { Router } from '@angular/router';\r\nimport { BsModalService, BsModalRef } from 'ngx-bootstrap';\r\nimport { FormGroup, FormControl, Validators } from '@angular/forms';\r\nimport { CommonService } from '../../../../common/common-service';\r\n\r\nimport { ToastrService } from 'ngx-toastr';\r\n\r\n@Component({\r\n selector: 'app-providers-list',\r\n templateUrl: './providers-list.component.html',\r\n styleUrls: [\r\n './providers-list.component.scss',\r\n './../../../form.styles.scss',\r\n ],\r\n})\r\nexport class ProvidersListComponent implements OnInit {\r\n public loading: boolean;\r\n public errorMessage = '';\r\n private integrators: IntegratorProvider[];\r\n private selectedIntegrator: IntegratorProvider;\r\n private modalRef: BsModalRef;\r\n private integratorProviderForm: FormGroup;\r\n\r\n public constructor(\r\n private integratorProviderService: IntegratorProviderService,\r\n private router: Router,\r\n private modalService: BsModalService,\r\n private commonService: CommonService,\r\n protected toastr: ToastrService\r\n ) {\r\n this.integratorProviderForm = new FormGroup({\r\n name: new FormControl('', Validators.required),\r\n });\r\n }\r\n\r\n public ngOnInit() {\r\n this.loading = true;\r\n this.integratorProviderService.getIntegratorProviders().subscribe(\r\n (page: any) => {\r\n this.integrators = page;\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n\r\n public onSelect(event: any, template: TemplateRef): void {\r\n this.selectedIntegrator = event.selected[0];\r\n this.router.navigate([\r\n 'administration',\r\n 'integrator',\r\n this.selectedIntegrator.integratorProviderId,\r\n 'details',\r\n ]);\r\n }\r\n\r\n public onAddNew(template: TemplateRef) {\r\n // Show Modal\r\n this.modalRef = this.modalService.show(template);\r\n }\r\n\r\n public onSubmit() {\r\n this.commonService.validateAllFormFields(this.integratorProviderForm);\r\n if (this.integratorProviderForm.valid) {\r\n this.integratorProviderService\r\n .AddIntegratorProvider(this.integratorProviderForm.value)\r\n .subscribe(\r\n (page: any) => {\r\n this.integrators = page;\r\n this.ClearFields();\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.ClearFields();\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n this.toastr.error(this.errorMessage);\r\n }\r\n );\r\n }\r\n }\r\n\r\n public ClearFields() {\r\n this.integratorProviderForm.controls.name.setValue('');\r\n\r\n // Hide Modal\r\n this.modalRef.hide();\r\n }\r\n}\r\n","import {\r\n Component,\r\n OnInit,\r\n ViewChild,\r\n ElementRef,\r\n TemplateRef,\r\n} from '@angular/core';\r\nimport { IntegratorProviderService } from '../integrator-provider.service';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { IntegratorProvider } from '../../../../model/administration/integrator-provider.model';\r\nimport { FormGroup, FormControl, Validators } from '@angular/forms';\r\nimport {\r\n HttpClient,\r\n HttpHeaders,\r\n HttpRequest,\r\n HttpResponse,\r\n} from '@angular/common/http';\r\nimport { saveAs as importedSaveAs } from 'file-saver';\r\nimport { BsModalRef, BsModalService } from 'ngx-bootstrap';\r\nimport { CommonService } from '../../../../common/common-service';\r\n\r\nimport { IntegratorProviderServiceGeneratorFee } from '../../../../model/administration/integrator-provider-service-generator-fee.model';\r\nimport { IntegratorProviderServiceConsumerFee } from '../../../../model/administration/integrator-provider-service-consumer-fee.model';\r\nimport { ToastrService } from 'ngx-toastr';\r\n\r\n@Component({\r\n selector: 'app-providers-detail',\r\n templateUrl: './providers-detail.component.html',\r\n styleUrls: [\r\n './providers-detail.component.scss',\r\n './../../../form.styles.scss',\r\n ],\r\n})\r\nexport class ProvidersDetailComponent implements OnInit {\r\n public loading: boolean;\r\n public errorMessage = '';\r\n private integratorProviderId: number;\r\n private integrator: IntegratorProvider;\r\n private importFeesForm: FormGroup;\r\n private integratorProviderDetailForm: FormGroup;\r\n private modalRef: BsModalRef;\r\n private file: any;\r\n private isGeneratorFeeImport: boolean;\r\n private serviceGeneratorFee: IntegratorProviderServiceGeneratorFee;\r\n private serviceConsumerFee: IntegratorProviderServiceConsumerFee;\r\n private generatorTabSelected: boolean = true;\r\n private isTemplateDownloading: boolean = false;\r\n private rowDownloadingId: number = 0;\r\n private rowDeletingId: number = 0;\r\n\r\n public constructor(\r\n private integratorProviderService: IntegratorProviderService,\r\n private route: ActivatedRoute,\r\n private http: HttpClient,\r\n private modalService: BsModalService,\r\n private commonService: CommonService,\r\n protected toastr: ToastrService\r\n ) {}\r\n\r\n public ngOnInit() {\r\n this.importFeesForm = new FormGroup({\r\n fileFormControl: new FormControl('', [Validators.required]),\r\n effectiveDate: new FormControl('', [Validators.required]),\r\n });\r\n\r\n this.loading = true;\r\n\r\n this.route.params.subscribe(\r\n (params) => {\r\n if (params['integratorProviderId']) {\r\n this.integratorProviderId = params['integratorProviderId'];\r\n }\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n\r\n this.integratorProviderService\r\n .getIntegratorProviderDetail(this.integratorProviderId)\r\n .subscribe(\r\n (page: any) => {\r\n this.integrator = page;\r\n this.initintegratorProviderDetailForm(this.integrator);\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n\r\n public initintegratorProviderDetailForm(integrator: IntegratorProvider) {\r\n this.integratorProviderDetailForm = new FormGroup({\r\n name: new FormControl(\r\n { value: integrator.name, disabled: true },\r\n Validators.required\r\n ),\r\n });\r\n }\r\n\r\n public onFileChange(event) {\r\n if (event.target.files.length > 0) {\r\n this.file = event.target.files[0];\r\n }\r\n }\r\n\r\n public onImportFeesSubmit() {\r\n this.commonService.validateAllFormFields(this.importFeesForm);\r\n if (this.importFeesForm.valid) {\r\n this.loading = true;\r\n\r\n const formData = new FormData();\r\n formData.append(\r\n 'integratorProvider',\r\n JSON.stringify(this.integrator)\r\n );\r\n formData.append(\r\n 'effectiveDate',\r\n JSON.stringify(this.importFeesForm.controls.effectiveDate.value)\r\n );\r\n formData.append(\r\n 'isGeneratorFeeImport',\r\n JSON.stringify(this.isGeneratorFeeImport)\r\n );\r\n formData.append(this.file.name, this.file);\r\n const headers = new HttpHeaders({\r\n enctype: 'multipart/form-data',\r\n });\r\n\r\n this.generatorTabSelected = this.isGeneratorFeeImport;\r\n\r\n const req = new HttpRequest(\r\n 'POST',\r\n API_URL + 'IntegratorProvider/UploadFeesDocument',\r\n formData,\r\n {\r\n headers,\r\n reportProgress: true,\r\n }\r\n );\r\n\r\n this.http.request(req).subscribe(\r\n (event) => {\r\n if (event instanceof HttpResponse) {\r\n this.integrator = event.body as IntegratorProvider;\r\n this.initintegratorProviderDetailForm(this.integrator);\r\n this.loading = false;\r\n this.toastr.success('Successfully uploaded');\r\n }\r\n },\r\n (error) => {\r\n this.toastr.error(error.error.errorMessage);\r\n this.loading = false;\r\n }\r\n );\r\n\r\n // Hide Modal\r\n this.modalRef.hide();\r\n this.importFeesForm.controls.effectiveDate.setValue('');\r\n this.importFeesForm.controls.fileFormControl.setValue('');\r\n }\r\n }\r\n\r\n public onDownloadIntegratorGeneratorFeeTemplate() {\r\n this.isTemplateDownloading = true;\r\n this.integratorProviderService\r\n .getIntegrationProviderGeneratorFeesTemplate()\r\n .subscribe(\r\n (blob) => {\r\n importedSaveAs(\r\n blob,\r\n 'IntegrationProviderGeneratorFeeTemplate.csv'\r\n );\r\n this.generatorTabSelected = true;\r\n this.isTemplateDownloading = false;\r\n },\r\n () => {\r\n this.errorMessage = this.commonService.handleDocumentErrorMessage(\r\n 'integrator generator fee template'\r\n );\r\n this.isTemplateDownloading = false;\r\n }\r\n );\r\n }\r\n\r\n public onDownloadIntegratorConsumerFeeTemplate() {\r\n this.isTemplateDownloading = true;\r\n this.integratorProviderService\r\n .getIntegrationProviderConsumerFeesTemplate()\r\n .subscribe(\r\n (blob) => {\r\n importedSaveAs(\r\n blob,\r\n 'IntegrationProviderConsumerFeeTemplate.csv'\r\n );\r\n this.generatorTabSelected = false;\r\n this.isTemplateDownloading = false;\r\n },\r\n () => {\r\n this.errorMessage = this.commonService.handleDocumentErrorMessage(\r\n 'integrator consumer fee template'\r\n );\r\n this.isTemplateDownloading = false;\r\n }\r\n );\r\n }\r\n\r\n public onShowUploadModal(\r\n isGeneratorFeeImport: boolean,\r\n template: TemplateRef\r\n ) {\r\n this.isGeneratorFeeImport = isGeneratorFeeImport;\r\n this.modalRef = this.modalService.show(template);\r\n }\r\n\r\n public onViewGeneratorFees(row: any, template: TemplateRef) {\r\n this.integratorProviderService\r\n .getIntegratorProviderServiceGeneratorFee(\r\n row.integratorProviderServiceFeeUploadId\r\n )\r\n .subscribe(\r\n (page: any) => {\r\n this.serviceGeneratorFee = page;\r\n this.generatorTabSelected = true;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n\r\n this.modalRef = this.modalService.show(template);\r\n }\r\n\r\n public onViewConsumerFees(row: any, template: TemplateRef) {\r\n this.integratorProviderService\r\n .getIntegratorProviderServiceConsumerFee(\r\n row.integratorProviderServiceFeeUploadId\r\n )\r\n .subscribe(\r\n (page: any) => {\r\n this.serviceConsumerFee = page;\r\n this.generatorTabSelected = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n\r\n this.modalRef = this.modalService.show(template);\r\n }\r\n\r\n public onDownloadGeneratorFees(row: any) {\r\n this.rowDownloadingId = row.integratorProviderServiceFeeUploadId;\r\n this.integratorProviderService\r\n .getIntegrationProviderGeneratorFeesDownload(\r\n row.integratorProviderServiceFeeUploadId\r\n )\r\n .subscribe(\r\n (blob) => {\r\n importedSaveAs(\r\n blob,\r\n 'IntegrationProviderGeneratorFeesTemplate.csv'\r\n );\r\n this.generatorTabSelected = true;\r\n this.rowDownloadingId = 0;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleDocumentErrorMessage(\r\n 'generator fee'\r\n );\r\n this.rowDownloadingId = 0;\r\n }\r\n );\r\n }\r\n\r\n public onDownloadConsumerFees(row: any) {\r\n this.rowDownloadingId = row.integratorProviderServiceFeeUploadId;\r\n this.integratorProviderService\r\n .getIntegrationProviderConsumerFeesDownload(\r\n row.integratorProviderServiceFeeUploadId\r\n )\r\n .subscribe(\r\n (blob) => {\r\n importedSaveAs(\r\n blob,\r\n 'IntegrationProviderConsumerFeesTemplate.csv'\r\n );\r\n this.rowDownloadingId = 0;\r\n this.generatorTabSelected = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleDocumentErrorMessage(\r\n 'consumer fee'\r\n );\r\n this.rowDownloadingId = 0;\r\n }\r\n );\r\n }\r\n\r\n public deleteUpload(row: any) {\r\n this.rowDeletingId = row.integratorProviderServiceFeeUploadId;\r\n this.integratorProviderService\r\n .deleteIntegratorProviderServiceFeeUpload(\r\n row.integratorProviderServiceFeeUploadId\r\n )\r\n .subscribe(\r\n (page: any) => {\r\n this.integrator = page;\r\n this.initintegratorProviderDetailForm(this.integrator);\r\n this.loading = false;\r\n this.rowDeletingId = 0;\r\n this.toastr.success('Successfully removed');\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n this.rowDeletingId = 0;\r\n this.toastr.error(this.errorMessage);\r\n }\r\n );\r\n }\r\n}\r\n","import { Component, OnDestroy, OnInit } from '@angular/core';\r\n\r\nimport { ConsumerApplicationService } from './consumer-application.service';\r\nimport { ConsumerApplication } from '../../../model/application/consumer-application/consumer-application.model';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { NavigationEnd, Router } from '@angular/router';\r\nimport { Subscription } from 'rxjs';\r\nimport { CommonService } from '../../../common/common-service';\r\n\r\n@Component({\r\n selector: 'app-consumer-application',\r\n templateUrl: './consumer-application.component.html',\r\n styleUrls: ['./consumer-application.component.scss'],\r\n})\r\nexport class ConsumerApplicationComponent implements OnInit, OnDestroy {\r\n public consumerApplication: ConsumerApplication = undefined;\r\n public errorMessage = '';\r\n public loading = false;\r\n private navigationSubscription: Subscription;\r\n\r\n constructor(\r\n private consumerApplicationService: ConsumerApplicationService,\r\n protected sanitizer: DomSanitizer,\r\n private router: Router,\r\n public commonService: CommonService\r\n ) {}\r\n\r\n public ngOnInit() {\r\n // Reload this component if you navigate to it from the same URL\r\n // see https://medium.com/engineering-on-the-incline/reloading-current-route-on-click-angular-5-1a1bfc740ab2\r\n this.navigationSubscription = this.router.events.subscribe((e: any) => {\r\n if (e instanceof NavigationEnd) {\r\n this.initialize();\r\n }\r\n });\r\n this.initialize();\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n if (this.navigationSubscription) {\r\n this.navigationSubscription.unsubscribe();\r\n }\r\n }\r\n\r\n private initialize() {\r\n this.loading = true;\r\n this.errorMessage = '';\r\n this.consumerApplication = undefined;\r\n this.consumerApplicationService.getConsumerApplication().subscribe(\r\n (consumerApplication: ConsumerApplication) => {\r\n this.consumerApplication = consumerApplication;\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { Period } from '../../model/period.model';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { Page } from '../../model/page.model';\r\n\r\n@Injectable()\r\nexport class PublicHolidayService {\r\n constructor(private http: HttpClient) {}\r\n\r\n public getPublicHolidays(periods: Period[]): Observable {\r\n return this.http.post(\r\n API_URL + 'PublicHoliday/GetPublicHolidays',\r\n periods\r\n );\r\n }\r\n\r\n public getPublicHolidayTimePeriod(\r\n publicHolidayTimePeriodId: number\r\n ): Observable {\r\n return this.http.get(\r\n API_URL +\r\n 'PublicHoliday/GetPublicHolidayTimePeriod?publicHolidayTimePeriodId=' +\r\n publicHolidayTimePeriodId\r\n );\r\n }\r\n\r\n public copyPublicHolidaysToTariffPublicHolidayTimePeriods(\r\n tariffId: number\r\n ): Observable {\r\n return this.http.post(\r\n API_URL +\r\n 'PublicHoliday/CopyPublicHolidaysToTariffPublicHolidayTimePeriods?tariffId=' +\r\n tariffId,\r\n {}\r\n );\r\n }\r\n\r\n public getTariffPublicHolidayTimePeriodsPage(\r\n tariffId: number,\r\n searchString: string,\r\n page: Page,\r\n sortProp: any\r\n ): Observable {\r\n if (isNullOrUndefined(sortProp.direction)) {\r\n sortProp.direction = '';\r\n }\r\n if (isNullOrUndefined(sortProp.property)) {\r\n sortProp.property = '';\r\n }\r\n\r\n return this.http.get(\r\n API_URL +\r\n 'PublicHoliday/GetTariffPublicHolidayTimePeriodsPage?tariffId=' +\r\n tariffId +\r\n '&searchString=' +\r\n searchString +\r\n '&offset=' +\r\n page.offset +\r\n '&pageSize=' +\r\n page.size +\r\n '&sortDirection=' +\r\n sortProp.direction +\r\n '&sortProperty=' +\r\n sortProp.property\r\n );\r\n }\r\n\r\n public createPublicHolidayTimePeriod(\r\n publicHolidayTimePeriod: any\r\n ): Observable {\r\n return this.http.post(\r\n API_URL + 'PublicHoliday/CreatePublicHolidayTimePeriod',\r\n publicHolidayTimePeriod\r\n );\r\n }\r\n\r\n public updatePublicHolidayTimePeriod(\r\n publicHolidayTimePeriod: any\r\n ): Observable {\r\n return this.http.post(\r\n API_URL + 'PublicHoliday/UpdatePublicHolidayTimePeriod',\r\n publicHolidayTimePeriod\r\n );\r\n }\r\n\r\n public getPublicHoliday(publicHolidayId: number): Observable {\r\n return this.http.get(\r\n API_URL +\r\n 'PublicHoliday/GetPublicHoliday?publicHolidayId=' +\r\n publicHolidayId\r\n );\r\n }\r\n\r\n public getPublicHolidaysPage(\r\n searchString: string,\r\n page: Page,\r\n sortProp: any\r\n ): Observable {\r\n if (isNullOrUndefined(sortProp.direction)) {\r\n sortProp.direction = '';\r\n }\r\n if (isNullOrUndefined(sortProp.property)) {\r\n sortProp.property = '';\r\n }\r\n\r\n return this.http.get(\r\n API_URL +\r\n 'PublicHoliday/GetPublicHolidaysPage?' +\r\n 'searchString=' +\r\n searchString +\r\n '&offset=' +\r\n page.offset +\r\n '&pageSize=' +\r\n page.size +\r\n '&sortDirection=' +\r\n sortProp.direction +\r\n '&sortProperty=' +\r\n sortProp.property\r\n );\r\n }\r\n\r\n public createPublicHoliday(publicHoliday: any): Observable {\r\n return this.http.post(\r\n API_URL + 'PublicHoliday/CreatePublicHoliday',\r\n publicHoliday\r\n );\r\n }\r\n\r\n public updatePublicHoliday(publicHoliday: any): Observable {\r\n return this.http.post(\r\n API_URL + 'PublicHoliday/UpdatePublicHoliday',\r\n publicHoliday\r\n );\r\n }\r\n}\r\n","import { debounceTime } from 'rxjs/operators';\r\nimport {\r\n Component,\r\n Input,\r\n OnInit,\r\n TemplateRef,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { BsModalRef } from 'ngx-bootstrap';\r\nimport { PublicHolidayService } from './public-holiday.service';\r\nimport { Page } from '../../model/page.model';\r\nimport { BsModalService } from 'ngx-bootstrap/modal';\r\nimport { CommonService } from '../../common/common-service';\r\nimport { PublicHoliday } from '../../model/public-holiday.model';\r\n\r\nimport { Period } from '../../model/period.model';\r\nimport { EntityLookup } from '../../model/entity-lookup.model';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { ToastrService } from 'ngx-toastr';\r\n\r\n@Component({\r\n selector: 'public-holiday',\r\n templateUrl: './public-holiday.component.html',\r\n styleUrls: ['../form.styles.scss', './public-holiday.component.scss'],\r\n})\r\nexport class PublicHolidayComponent implements OnInit {\r\n @ViewChild('publicHolidayModal')\r\n public publicHolidayModal: TemplateRef;\r\n @Input('isReadOnlyMode')\r\n public isReadOnlyMode = false;\r\n public errorMessage = '';\r\n public loading = false;\r\n public periods: EntityLookup[];\r\n public publicHolidayLookups: EntityLookup[];\r\n public tariffDayOfWeekLookups: EntityLookup[];\r\n public publicHolidayForm: FormGroup;\r\n public loadingPublicHoliday = false;\r\n public savingPublicHoliday = false;\r\n public page: Page;\r\n public pageItems: any[];\r\n private sortProp = {};\r\n private searchForm: FormGroup;\r\n private modalRef: BsModalRef;\r\n\r\n constructor(\r\n private commonService: CommonService,\r\n private publicHolidaysService: PublicHolidayService,\r\n private modalService: BsModalService,\r\n private toastr: ToastrService\r\n ) {\r\n this.page = new Page();\r\n this.searchForm = new FormGroup({\r\n search: new FormControl(''),\r\n });\r\n }\r\n\r\n public ngOnInit() {\r\n this.searchForm\r\n .get('search')\r\n .valueChanges.pipe(debounceTime(300))\r\n .subscribe(\r\n () => {\r\n this.changePage({ offset: 0 });\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n this.loading = true;\r\n this.commonService\r\n .getEntityLookups(['Period', 'TariffDayOfWeek', 'PublicHoliday'])\r\n .subscribe(\r\n (entityLookups) => {\r\n this.periods =\r\n entityLookups.entityLookupResultList['period'];\r\n this.publicHolidayLookups =\r\n entityLookups.entityLookupResultList['publicHoliday'];\r\n this.tariffDayOfWeekLookups =\r\n entityLookups.entityLookupResultList['tariffDayOfWeek'];\r\n this.tariffDayOfWeekLookups = this.tariffDayOfWeekLookups.filter(\r\n (tariffDayOfWeekLookup: EntityLookup) => {\r\n return tariffDayOfWeekLookup.value !== 'Weekday';\r\n }\r\n );\r\n this.changePage({ offset: 0 });\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n\r\n public changePage(pageInfo: any) {\r\n this.errorMessage = '';\r\n this.changePublicHolidaysPage(pageInfo);\r\n }\r\n\r\n public sortColumn(event: any): void {\r\n this.sortProp = {\r\n direction: event.sorts[0].dir,\r\n property: event.sorts[0].prop,\r\n };\r\n this.changePage({ offset: 0 });\r\n }\r\n\r\n public changePublicHolidaysPage(pageInfo: any): void {\r\n const searchString = this.searchForm.value.search;\r\n this.page.offset = pageInfo.offset * this.page.size;\r\n this.publicHolidaysService\r\n .getPublicHolidaysPage(searchString, this.page, this.sortProp)\r\n .subscribe(\r\n (responsePage) => {\r\n this.page.totalPages = Math.ceil(\r\n responsePage.totalItems / responsePage.size\r\n );\r\n this.page.totalElements = responsePage.totalItems;\r\n this.pageItems = responsePage.items;\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n\r\n public onSelect(event: any) {\r\n if (this.isReadOnlyMode) {\r\n return;\r\n }\r\n this.openPublicHolidayModal(event.selected[0].publicHolidayId);\r\n }\r\n\r\n public onAddPublicHoliday() {\r\n this.openPublicHolidayModal(0);\r\n }\r\n\r\n public onCancel(): void {\r\n this.errorMessage = '';\r\n this.modalRef.hide();\r\n }\r\n\r\n public onSubmit() {\r\n this.errorMessage = '';\r\n this.commonService.validateAllFormFields(this.publicHolidayForm);\r\n if (this.publicHolidayForm.valid) {\r\n this.savingPublicHoliday = true;\r\n if (this.publicHolidayForm.get('publicHolidayId').value === 0) {\r\n this.publicHolidaysService\r\n .createPublicHoliday(this.publicHolidayForm.value)\r\n .subscribe(\r\n (response) => {\r\n this.savingPublicHoliday = false;\r\n this.modalRef.hide();\r\n this.toastr.success(\r\n !isNullOrUndefined(response.successMessage)\r\n ? response.successMessage\r\n : 'Period public holiday successfully created'\r\n );\r\n this.changePage({ offset: 0 });\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.toastr.error(this.errorMessage);\r\n this.savingPublicHoliday = false;\r\n }\r\n );\r\n } else {\r\n this.publicHolidaysService\r\n .updatePublicHoliday(this.publicHolidayForm.value)\r\n .subscribe(\r\n (response) => {\r\n this.savingPublicHoliday = false;\r\n this.modalRef.hide();\r\n this.toastr.success(\r\n !isNullOrUndefined(response.successMessage)\r\n ? response.successMessage\r\n : 'Period public holiday successfully updated'\r\n );\r\n this.changePage({ offset: 0 });\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.toastr.error(this.errorMessage);\r\n this.savingPublicHoliday = false;\r\n }\r\n );\r\n }\r\n }\r\n }\r\n\r\n public openPublicHolidayModal(publicHolidaysId: number) {\r\n this.modalRef = this.modalService.show(this.publicHolidayModal);\r\n this.loadPublicHoliday(publicHolidaysId);\r\n }\r\n\r\n private loadPublicHoliday(publicHolidayId: number) {\r\n this.loadingPublicHoliday = true;\r\n this.errorMessage = '';\r\n if (publicHolidayId === 0) {\r\n this.initPublicHoliday(null);\r\n this.loadingPublicHoliday = false;\r\n } else {\r\n this.publicHolidaysService\r\n .getPublicHoliday(publicHolidayId)\r\n .subscribe(\r\n (publicHolidayResponse) => {\r\n this.initPublicHoliday(publicHolidayResponse);\r\n this.loadingPublicHoliday = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loadingPublicHoliday = false;\r\n }\r\n );\r\n }\r\n }\r\n\r\n private initPublicHoliday(publicHoliday: PublicHoliday) {\r\n this.publicHolidayForm = new FormGroup({\r\n publicHolidayId: new FormControl(\r\n isNullOrUndefined(publicHoliday)\r\n ? 0\r\n : publicHoliday.publicHolidayId,\r\n [Validators.required]\r\n ),\r\n publicHolidayLookupId: new FormControl(\r\n isNullOrUndefined(publicHoliday)\r\n ? null\r\n : publicHoliday.publicHolidayLookupId,\r\n [Validators.required]\r\n ),\r\n tariffDayOfWeekLookupId: new FormControl(\r\n isNullOrUndefined(publicHoliday)\r\n ? null\r\n : publicHoliday.tariffDayOfWeekLookupId,\r\n [Validators.required]\r\n ),\r\n periodId: new FormControl(\r\n isNullOrUndefined(publicHoliday)\r\n ? null\r\n : publicHoliday.periodId,\r\n [Validators.required]\r\n ),\r\n date: new FormControl(\r\n isNullOrUndefined(publicHoliday) ? null : publicHoliday.date\r\n ),\r\n });\r\n }\r\n}\r\n","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { AllocationRunService } from '../allocation-run.service';\r\nimport { CommonService } from '../../../../common/common-service';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { AllocationErrorAccordion } from '../../../../model/allocation/allocation-error-accordion.model';\r\n\r\n@Component({\r\n selector: 'app-allocation-run-errors',\r\n templateUrl: './allocation-run-errors.component.html',\r\n styleUrls: ['./allocation-run-errors.component.scss'],\r\n})\r\nexport class AllocationRunErrorsComponent implements OnInit, OnDestroy {\r\n public loading: boolean = true;\r\n public errors: AllocationErrorAccordion[];\r\n public errorMessage: string;\r\n public startDate: Date;\r\n public runDate: Date;\r\n\r\n private routeParamsSubscription: Subscription;\r\n private queryParamsSubscription: Subscription;\r\n private allocationRunId: number;\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n private service: AllocationRunService,\r\n public commonService: CommonService\r\n ) {}\r\n\r\n public ngOnInit(): void {\r\n this.errors = [];\r\n this.queryParamsSubscription = this.route.queryParams.subscribe(\r\n (params) => {\r\n this.startDate = params.startDate;\r\n this.runDate = params.runDate;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n this.routeParamsSubscription = this.route.params.subscribe(\r\n (params) => {\r\n this.allocationRunId = params.allocationRunId;\r\n this.service\r\n .getAllocationErrors(this.allocationRunId)\r\n .subscribe(\r\n (result) => {\r\n this.errors = result;\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n if (!isNullOrUndefined(this.routeParamsSubscription)) {\r\n this.routeParamsSubscription.unsubscribe();\r\n }\r\n if (!isNullOrUndefined(this.queryParamsSubscription)) {\r\n this.queryParamsSubscription.unsubscribe();\r\n }\r\n }\r\n}\r\n","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { CommonService } from '../../../../../common/common-service';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { ForecastReportsService } from '../../forecast-reports.service';\r\nimport { ConsumerForecastWarningAccordion } from '../../../../../model/report/consumer-forecast-warning-accordion.model';\r\n\r\n@Component({\r\n selector: 'consumer-forecast-warnings',\r\n templateUrl: './consumer-forecast-warnings.component.html',\r\n styleUrls: ['./consumer-forecast-warnings.component.scss'],\r\n})\r\nexport class ConsumerForecastWarningsComponent implements OnInit, OnDestroy {\r\n public loading: boolean = true;\r\n public warnings: ConsumerForecastWarningAccordion[];\r\n public errorMessage: string;\r\n public startDate: Date;\r\n public runDate: Date;\r\n\r\n private routeParamsSubscription: Subscription;\r\n private queryParamsSubscription: Subscription;\r\n private consumerForecastId: number;\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n private service: ForecastReportsService,\r\n public commonService: CommonService\r\n ) {}\r\n\r\n public ngOnInit(): void {\r\n this.warnings = [];\r\n this.queryParamsSubscription = this.route.queryParams.subscribe(\r\n (params) => {\r\n this.startDate = params.startDate;\r\n this.runDate = params.runDate;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n this.routeParamsSubscription = this.route.params.subscribe(\r\n (params) => {\r\n this.consumerForecastId = params.consumerForecastId;\r\n this.service\r\n .getConsumerForecastWarnings(this.consumerForecastId)\r\n .subscribe(\r\n (result) => {\r\n this.warnings = result;\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n if (!isNullOrUndefined(this.routeParamsSubscription)) {\r\n this.routeParamsSubscription.unsubscribe();\r\n }\r\n if (!isNullOrUndefined(this.queryParamsSubscription)) {\r\n this.queryParamsSubscription.unsubscribe();\r\n }\r\n }\r\n}\r\n","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { CommonService } from '../../../../../common/common-service';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { ForecastReportsService } from '../../forecast-reports.service';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { RevenueForecastWarningAccordion } from '../../../../../model/report/revenue-forecast-warning-accordion.model';\r\n\r\n@Component({\r\n selector: 'app-revenue-forecast-warnings',\r\n templateUrl: './revenue-forecast-warnings.component.html',\r\n styleUrls: ['./revenue-forecast-warnings.component.scss'],\r\n})\r\nexport class RevenueForecastWarningsComponent implements OnInit, OnDestroy {\r\n public loading: boolean = true;\r\n public warnings: RevenueForecastWarningAccordion[];\r\n public errorMessage: string;\r\n public startDate: Date;\r\n public runDate: Date;\r\n\r\n private routeParamsSubscription: Subscription;\r\n private queryParamsSubscription: Subscription;\r\n private revenueForecastId: number;\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n private service: ForecastReportsService,\r\n public commonService: CommonService\r\n ) {}\r\n\r\n public ngOnInit(): void {\r\n this.warnings = [];\r\n this.queryParamsSubscription = this.route.queryParams.subscribe(\r\n (params) => {\r\n this.startDate = params.startDate;\r\n this.runDate = params.runDate;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n this.routeParamsSubscription = this.route.params.subscribe(\r\n (params) => {\r\n this.revenueForecastId = params.revenueForecastId;\r\n this.service\r\n .getRevenueForecastWarnings(this.revenueForecastId)\r\n .subscribe(\r\n (result) => {\r\n this.warnings = result;\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n if (!isNullOrUndefined(this.routeParamsSubscription)) {\r\n this.routeParamsSubscription.unsubscribe();\r\n }\r\n if (!isNullOrUndefined(this.queryParamsSubscription)) {\r\n this.queryParamsSubscription.unsubscribe();\r\n }\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { ManagementReportService } from './management-report.service';\r\nimport { saveAs as importedSaveAs } from 'file-saver';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { CommonService } from '../../../common/common-service';\r\n\r\n@Component({\r\n selector: 'management-report',\r\n templateUrl: './management-report.component.html',\r\n styleUrls: ['../../form.styles.scss', './management-report.component.scss'],\r\n})\r\nexport class ManagementReportComponent implements OnInit {\r\n public loading: boolean;\r\n public years: number[];\r\n public months: any[];\r\n public reportForm: FormGroup;\r\n\r\n constructor(\r\n private managementReportService: ManagementReportService,\r\n private toastr: ToastrService,\r\n private commonService: CommonService\r\n ) {\r\n this.reportForm = new FormGroup({\r\n year: new FormControl(null, Validators.required),\r\n month: new FormControl(null, Validators.required),\r\n });\r\n }\r\n\r\n public ngOnInit() {\r\n this.loading = true;\r\n this.loadMonths();\r\n this.loading = false;\r\n }\r\n\r\n public loadMonths() {\r\n this.months = [\r\n { value: 1, name: 'January' },\r\n { value: 2, name: 'February' },\r\n { value: 3, name: 'March' },\r\n { value: 4, name: 'April' },\r\n { value: 5, name: 'May' },\r\n { value: 6, name: 'June' },\r\n { value: 7, name: 'July' },\r\n { value: 8, name: 'August' },\r\n { value: 9, name: 'September' },\r\n { value: 10, name: 'October' },\r\n { value: 11, name: 'November' },\r\n { value: 12, name: 'December' },\r\n ];\r\n }\r\n\r\n public onGenerateManagementReport() {\r\n this.commonService.validateAllFormFields(this.reportForm);\r\n if (this.reportForm.valid) {\r\n this.loading = true;\r\n this.toastr.info('Processing management report');\r\n this.managementReportService\r\n .getManagementReport(\r\n this.reportForm.controls.year.value,\r\n this.reportForm.controls.month.value\r\n )\r\n .subscribe(\r\n (response) => {\r\n importedSaveAs(response, 'MonthlyManagementReport.xls');\r\n this.loading = false;\r\n this.toastr.success('Downloading management report');\r\n },\r\n () => {\r\n this.loading = false;\r\n this.toastr.error(\r\n 'An error occurred while attempting to retrieve the management report'\r\n );\r\n }\r\n );\r\n }\r\n }\r\n\r\n public onGenerateConsumerIncomeReport() {\r\n this.commonService.validateAllFormFields(this.reportForm);\r\n if (this.reportForm.valid) {\r\n this.loading = true;\r\n this.toastr.info('Processing consumer income report');\r\n this.managementReportService\r\n .getConsumerIncomeReport(\r\n this.reportForm.controls.year.value,\r\n this.reportForm.controls.month.value\r\n )\r\n .subscribe(\r\n (response) => {\r\n importedSaveAs(response, 'ConsumerIncomeReport.xls');\r\n this.loading = false;\r\n this.toastr.success(\r\n 'Downloading consumer income report'\r\n );\r\n },\r\n () => {\r\n this.loading = false;\r\n this.toastr.error(\r\n 'An error occurred while attempting to retrieve the consumer income report'\r\n );\r\n }\r\n );\r\n }\r\n }\r\n\r\n public onGenerateGeneratorExpenseReport() {\r\n this.commonService.validateAllFormFields(this.reportForm);\r\n if (this.reportForm.valid) {\r\n this.loading = true;\r\n this.toastr.info('Processing generator expense report');\r\n this.managementReportService\r\n .getGeneratorExpenseReport(\r\n this.reportForm.controls.year.value,\r\n this.reportForm.controls.month.value\r\n )\r\n .subscribe(\r\n (response) => {\r\n importedSaveAs(response, 'GeneratorExpenseReport.xls');\r\n this.loading = false;\r\n this.toastr.success(\r\n 'Downloading generator expense report'\r\n );\r\n },\r\n () => {\r\n this.loading = false;\r\n this.toastr.error(\r\n 'An error occurred while attempting to retrieve the generator expense report'\r\n );\r\n }\r\n );\r\n }\r\n }\r\n\r\n public onGenerateMonthlyStatementReport() {\r\n this.commonService.validateAllFormFields(this.reportForm);\r\n if (this.reportForm.valid) {\r\n this.loading = true;\r\n this.toastr.info('Processing generator statement report');\r\n this.managementReportService\r\n .getMonthlyStatementReport(\r\n this.reportForm.controls.year.value,\r\n this.reportForm.controls.month.value\r\n )\r\n .subscribe(\r\n (response) => {\r\n importedSaveAs(response, 'StatementReport.xls');\r\n this.loading = false;\r\n this.toastr.success('Downloading statement report');\r\n },\r\n () => {\r\n this.loading = false;\r\n this.toastr.error(\r\n 'An error occurred while attempting to retrieve the statement report'\r\n );\r\n }\r\n );\r\n }\r\n }\r\n\r\n public onGenerateMonthlyRecsReport() {\r\n this.commonService.validateAllFormFields(this.reportForm);\r\n if (this.reportForm.valid) {\r\n this.loading = true;\r\n this.toastr.info('Processing Recs report');\r\n this.managementReportService\r\n .getMonthlyRecsReport(\r\n this.reportForm.controls.year.value,\r\n this.reportForm.controls.month.value,\r\n null\r\n )\r\n .subscribe(\r\n (response) => {\r\n importedSaveAs(\r\n response,\r\n this.reportForm.controls.month.value +\r\n '-' +\r\n this.reportForm.controls.year.value +\r\n '-' +\r\n 'RecsReport.xls'\r\n );\r\n this.loading = false;\r\n this.toastr.success('Downloading Recs report');\r\n },\r\n () => {\r\n this.loading = false;\r\n this.toastr.error(\r\n 'An error occurred while attempting to retrieve the recs report'\r\n );\r\n }\r\n );\r\n }\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-maintenance',\r\n templateUrl: './maintenance.component.html',\r\n styleUrls: ['./maintenance.component.scss'],\r\n})\r\nexport class MaintenanceComponent {}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\n\r\n@Injectable()\r\nexport class SalesRepReportService {\r\n constructor(private httpClient: HttpClient) {}\r\n\r\n public getSalesRepReport(\r\n startYear: number,\r\n endYear: number\r\n ): Observable {\r\n return this.httpClient\r\n .get(\r\n API_URL +\r\n 'Report/GetSalesRepReport?startYear=' +\r\n startYear +\r\n '&endYear=' +\r\n endYear,\r\n { responseType: 'blob' }\r\n )\r\n .pipe(map((response) => response));\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { FormGroup, FormControl, Validators } from '@angular/forms';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { CommonService } from '../../../common/common-service';\r\nimport { saveAs as importedSaveAs } from 'file-saver';\r\nimport { SalesRepReportService } from './sales-rep-report.service';\r\n\r\n@Component({\r\n selector: 'sales-rep-report',\r\n templateUrl: './sales-rep-report.component.html',\r\n styleUrls: ['../../form.styles.scss', './sales-rep-report.component.scss'],\r\n})\r\nexport class SalesRepReportComponent {\r\n public loading: boolean;\r\n public years: number[];\r\n public reportForm: FormGroup;\r\n\r\n constructor(\r\n private salesRepReportService: SalesRepReportService,\r\n private toastr: ToastrService,\r\n private commonService: CommonService\r\n ) {\r\n this.reportForm = new FormGroup({\r\n startYear: new FormControl(null, Validators.required),\r\n endYear: new FormControl(null, Validators.required),\r\n });\r\n }\r\n\r\n public onSubmit() {\r\n this.commonService.validateAllFormFields(this.reportForm);\r\n if (this.reportForm.valid && this.validateYears()) {\r\n this.loading = true;\r\n this.toastr.info('Processing sales rep report');\r\n this.salesRepReportService\r\n .getSalesRepReport(\r\n this.reportForm.controls.startYear.value,\r\n this.reportForm.controls.endYear.value\r\n )\r\n .subscribe(\r\n (response) => {\r\n importedSaveAs(response, 'SalesRepReport.xls');\r\n this.loading = false;\r\n this.toastr.success('Downloading sales rep report');\r\n },\r\n () => {\r\n this.loading = false;\r\n this.toastr.error(\r\n 'An error occurred while attempting to retrieve the sales rep report'\r\n );\r\n }\r\n );\r\n }\r\n }\r\n\r\n public validateYears() {\r\n const startYear = this.reportForm.controls.startYear.value;\r\n const endYear = this.reportForm.controls.endYear.value;\r\n\r\n if (startYear > endYear) {\r\n this.toastr.error('End year can not be after start year');\r\n return false;\r\n }\r\n return true;\r\n }\r\n}\r\n","import {\r\n Component,\r\n OnDestroy,\r\n OnInit,\r\n ViewChild,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { Subscription } from 'rxjs';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { isEqual, unionWith } from 'lodash';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { ForecastReportsService } from '../../forecast-reports.service';\r\nimport { CommonService } from '../../../../../common/common-service';\r\nimport { ForecastConsumerCompanyPremisesParameterModel } from '../../../../../model/report/forecast-consumer-company-premises-parameter.model';\r\nimport { ForecastGeneratorProjectFacilityParameter } from '../../../../../model/report/forecast-generator-project-facility.parameter';\r\nimport { DatatableComponent } from '@swimlane/ngx-datatable';\r\nimport { ConsumerCompanyPremisesParameter } from '../../../../../model/allocation-run/consumer-company-premises.parameter';\r\nimport { GeneratorProjectFacilityParameter } from '../../../../../model/allocation-run/generator-project-facility.parameter';\r\n\r\n@Component({\r\n selector: 'forecast-parameters',\r\n templateUrl: './forecast-parameters.component.html',\r\n styleUrls: [\r\n './forecast-parameters.component.scss',\r\n '../../../../form.styles.scss',\r\n ],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class ForecastParametersComponent implements OnInit, OnDestroy {\r\n @ViewChild(DatatableComponent)\r\n public generatorTable: DatatableComponent;\r\n @ViewChild(DatatableComponent)\r\n public consumerTable: DatatableComponent;\r\n public savingParameters = false;\r\n public parameterErrors: any[];\r\n public validParameters = true;\r\n public errorMap: Map;\r\n public errorMessages: any[];\r\n public consumerCompanyPremisesColumnHeaders: any[];\r\n public generatorColumnHeaders: any[];\r\n public routeParamsSubscription: Subscription;\r\n public errorMessage: string;\r\n public consumerCompanyPremisesArray: ForecastConsumerCompanyPremisesParameterModel[];\r\n public tempConsumerCompanyPremises: ConsumerCompanyPremisesParameter[];\r\n public generatorArray: ForecastGeneratorProjectFacilityParameter[];\r\n public tempGenerators: GeneratorProjectFacilityParameter[];\r\n private sortProp = {};\r\n private consumerCompanyPremisesList: ForecastConsumerCompanyPremisesParameterModel[];\r\n private generatorsList: ForecastGeneratorProjectFacilityParameter[];\r\n private sortMap: Map;\r\n\r\n constructor(\r\n private router: Router,\r\n private forecastReportService: ForecastReportsService,\r\n private route: ActivatedRoute,\r\n private toaster: ToastrService,\r\n private commonService: CommonService\r\n ) {\r\n this.consumerCompanyPremisesColumnHeaders = [\r\n { name: 'Consumer' },\r\n { name: 'Tariff Code' },\r\n { name: 'Exclude' },\r\n ];\r\n this.generatorColumnHeaders = [\r\n { name: 'Generator' },\r\n { name: 'Exclude' },\r\n ];\r\n\r\n this.consumerCompanyPremisesArray = [];\r\n this.generatorArray = [];\r\n\r\n this.parameterErrors = [];\r\n this.errorMap = new Map();\r\n this.errorMessages = [];\r\n this.initSortMap();\r\n }\r\n\r\n public ngOnInit(): void {\r\n this.routeParamsSubscription = this.route.params.subscribe(\r\n () => {\r\n this.getConsumerCompanyPremises();\r\n this.getGenerators();\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n if (!isNullOrUndefined(this.routeParamsSubscription)) {\r\n this.routeParamsSubscription.unsubscribe();\r\n }\r\n }\r\n\r\n public saveParameters(): void {\r\n if (this.validParameters) {\r\n this.savingParameters = true;\r\n this.forecastReportService\r\n .saveParameters(\r\n this.consumerCompanyPremisesList,\r\n this.generatorsList\r\n )\r\n .subscribe(\r\n () => {\r\n this.savingParameters = false;\r\n this.toaster.success(\r\n 'The forecast parameters were successfully saved. '\r\n );\r\n this.router.navigate([\r\n 'report',\r\n 'consumer-and-revenue-forecast-report',\r\n ]);\r\n },\r\n (error) => {\r\n this.savingParameters = false;\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n }\r\n }\r\n\r\n public getConsumerCompanyPremises(): void {\r\n this.forecastReportService\r\n .getConsumerCompanyPremisesForForecastParameters()\r\n .subscribe(\r\n (consumerCompanyPremises) => {\r\n this.consumerCompanyPremisesArray = consumerCompanyPremises;\r\n this.tempConsumerCompanyPremises = [\r\n ...consumerCompanyPremises,\r\n ];\r\n this.consumerCompanyPremisesList = unionWith(\r\n this.consumerCompanyPremisesList,\r\n consumerCompanyPremises,\r\n isEqual\r\n );\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n }\r\n\r\n public getGenerators(): void {\r\n this.forecastReportService\r\n .getGeneratorsForForecastParameters()\r\n .subscribe(\r\n (generators) => {\r\n this.generatorArray = generators;\r\n this.tempGenerators = [...generators];\r\n this.generatorsList = unionWith(\r\n this.generatorsList,\r\n generators,\r\n isEqual\r\n );\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n }\r\n\r\n public updateConsumerCompanyPremisesParameter(\r\n consumerCompanyPremisesElement: any,\r\n name: string,\r\n element: any\r\n ): void {\r\n const consumerCompanyPremisesIndex = this.consumerCompanyPremisesList.findIndex(\r\n (item) =>\r\n item.consumerCompanyPremisesId ===\r\n consumerCompanyPremisesElement.consumerCompanyPremisesId\r\n );\r\n\r\n this.errorMessages = Array.from(this.errorMap.values());\r\n\r\n if (this.parameterErrors.filter((x) => x).length > 0) {\r\n this.validParameters = false;\r\n } else {\r\n this.validParameters = true;\r\n this.consumerCompanyPremisesList[consumerCompanyPremisesIndex][\r\n this.sortMap.get(name.toLowerCase().replace(' ', ''))\r\n ] =\r\n element.target.type === 'checkbox'\r\n ? element.target.checked\r\n : element.target.value;\r\n }\r\n }\r\n\r\n public updateGeneratorParameter(\r\n generator: any,\r\n name: string,\r\n element: any\r\n ): void {\r\n const generatorIndex = this.generatorsList.findIndex(\r\n (item) =>\r\n item.generatorProjectFacilityId ===\r\n generator.generatorProjectFacilityId\r\n );\r\n this.generatorsList[generatorIndex][\r\n this.sortMap.get(name.toLowerCase().replace(' ', ''))\r\n ] =\r\n element.target.type === 'checkbox'\r\n ? element.target.checked\r\n : element.target.value;\r\n }\r\n\r\n private initSortMap(): void {\r\n this.sortMap = new Map();\r\n this.sortMap.set('consumer', 'consumer');\r\n this.sortMap.set('tariffcode', 'tariffCode');\r\n this.sortMap.set('generator', 'generator');\r\n this.sortMap.set('exclude', 'exclude');\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\n\r\n@Injectable()\r\nexport class ApplicationReportService {\r\n constructor(private httpClient: HttpClient) {}\r\n\r\n public getGeneratorApplicationsReport(): Observable {\r\n return this.httpClient\r\n .get(API_URL + 'Report/GetGeneratorApplicationsReport', {\r\n responseType: 'blob',\r\n })\r\n .pipe(map((response) => response));\r\n }\r\n\r\n public getConsumerApplicationsReport(): Observable {\r\n return this.httpClient\r\n .get(API_URL + 'Report/GetConsumerApplicationsReport', {\r\n responseType: 'blob',\r\n })\r\n .pipe(map((response) => response));\r\n }\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { CommonService } from '../../../common/common-service';\r\nimport { saveAs as importedSaveAs } from 'file-saver';\r\nimport { ApplicationReportService } from './application-report.service';\r\n\r\n@Component({\r\n selector: 'application-reports',\r\n templateUrl: './application-reports.component.html',\r\n styleUrls: [\r\n '../../form.styles.scss',\r\n './application-reports.component.scss',\r\n ],\r\n})\r\nexport class ApplicationReportsComponent {\r\n public errorMessage: string;\r\n public downloadingGeneratorReport: boolean = false;\r\n public downloadingConsumerReport: boolean = false;\r\n\r\n constructor(\r\n private applicationReportService: ApplicationReportService,\r\n private toaster: ToastrService,\r\n private commonService: CommonService\r\n ) {}\r\n\r\n public onDownloadGeneratorApplicationReport() {\r\n this.downloadingGeneratorReport = true;\r\n this.toaster.info('Processing generator application report');\r\n this.applicationReportService\r\n .getGeneratorApplicationsReport()\r\n .subscribe(\r\n (response) => {\r\n importedSaveAs(response, 'GeneratorApplicationReport.csv');\r\n this.toaster.success(\r\n 'Downloaded generator application report'\r\n );\r\n this.downloadingGeneratorReport = false;\r\n },\r\n () => {\r\n this.errorMessage = this.commonService.handleDocumentErrorMessage(\r\n 'Generator Application Report'\r\n );\r\n this.toaster.error(\r\n 'An error occurred while attempting to retrieve the generator application report'\r\n );\r\n this.downloadingGeneratorReport = false;\r\n }\r\n );\r\n }\r\n\r\n public onDownloadConsumerApplicationReport() {\r\n this.downloadingConsumerReport = true;\r\n this.toaster.info('Processing consumer application report');\r\n this.applicationReportService.getConsumerApplicationsReport().subscribe(\r\n (response) => {\r\n importedSaveAs(response, 'ConsumerApplicationReport.csv');\r\n this.toaster.success('Downloaded consumer application report');\r\n this.downloadingConsumerReport = false;\r\n },\r\n () => {\r\n this.errorMessage = this.commonService.handleDocumentErrorMessage(\r\n 'Consumer Application Report'\r\n );\r\n this.toaster.error(\r\n 'An error occurred while attempting to retrieve the consumer application report'\r\n );\r\n this.downloadingConsumerReport = false;\r\n }\r\n );\r\n }\r\n}\r\n","import { Subscription } from 'rxjs/Rx';\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { FormGroup, FormControl, Validators } from '@angular/forms';\r\nimport { EntityLookup } from '../../../../model/entity-lookup.model';\r\nimport { ConsumerCompanyService } from '../../../consumer-company/consumer-company.service';\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { CommonService } from '../../../../common/common-service';\r\nimport { PremisesQualificationParameters } from '../../../../model/qualification-parameters.model';\r\n\r\n@Component({\r\n selector: 'app-prospect-details',\r\n templateUrl: './prospect-details.component.html',\r\n styleUrls: [\r\n './prospect-details.component.scss',\r\n '../../../form.styles.scss',\r\n ],\r\n})\r\nexport class ProspectDetailsComponent implements OnInit {\r\n public detailsEventSubscription: Subscription;\r\n public premisesQualificationsForm: FormGroup;\r\n public prospectCreditRatings: EntityLookup[];\r\n public showPremisesDetails: boolean = false;\r\n public consumerCompanyPremisesId: number;\r\n public errorMessage: string;\r\n public prospectDetails: any;\r\n public loading: boolean;\r\n\r\n constructor(\r\n private consumerCompanyService: ConsumerCompanyService,\r\n private commonService: CommonService,\r\n protected toastr: ToastrService,\r\n protected route: ActivatedRoute,\r\n protected router: Router\r\n ) {\r\n this.initCreditPermissionAndRatingForm();\r\n }\r\n\r\n public ngOnInit() {\r\n this.initEntityLookups();\r\n this.initProspectDetails();\r\n }\r\n\r\n /// Load EnityLookups\r\n public initEntityLookups(): void {\r\n this.loading = true;\r\n this.commonService.getEntityLookups(['ProspectCreditRating']).subscribe(\r\n (entityLookups) => {\r\n this.prospectCreditRatings =\r\n entityLookups.entityLookupResultList[\r\n 'prospectCreditRating'\r\n ];\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n\r\n /// Load Prospect Details\r\n public initProspectDetails(): void {\r\n this.route.params.subscribe(\r\n (params) => {\r\n this.consumerCompanyService\r\n .getProspectDetails(params.consumerCompanyId)\r\n .subscribe(\r\n (prospectDetails: any) => {\r\n this.prospectDetails = prospectDetails;\r\n this.populateCreditPermissionAndRatingForm();\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n\r\n /// Credit Permission and Rating\r\n public populateCreditPermissionAndRatingForm(): void {\r\n this.premisesQualificationsForm.controls.creditRatingLookupId.setValue(\r\n this.prospectDetails.qualificationParameters.creditRatingLookupId\r\n );\r\n this.premisesQualificationsForm.controls.creditScore.setValue(\r\n this.prospectDetails.qualificationParameters.creditScore\r\n );\r\n this.premisesQualificationsForm.controls.creditPermissionDocument.setValue(\r\n this.prospectDetails.creditPermissionDocument\r\n );\r\n this.premisesQualificationsForm.controls.creditPermissionRequested.setValue(\r\n this.prospectDetails.qualificationParameters\r\n .creditPermissionRequested\r\n );\r\n this.premisesQualificationsForm.controls.creditPermissionReceived.setValue(\r\n this.prospectDetails.qualificationParameters\r\n .creditPermissionReceived\r\n );\r\n this.premisesQualificationsForm.controls.consumerCompanyId.setValue(\r\n this.prospectDetails.consumerCompanyId\r\n );\r\n this.premisesQualificationsForm.controls.premisesQualificationParametersId.setValue(\r\n this.prospectDetails.qualificationParameters\r\n .consumerPremisesQualificationParametersId\r\n );\r\n }\r\n\r\n public documentUpload(output: any): void {\r\n if (output.value) {\r\n this.premisesQualificationsForm.controls.creditPermissionDocument.setValue(\r\n output.value\r\n );\r\n this.onSubmitCreditRatings();\r\n }\r\n }\r\n\r\n public onSubmitCreditRatings(): void {\r\n this.commonService.validateAllFormFields(\r\n this.premisesQualificationsForm\r\n );\r\n\r\n if (this.premisesQualificationsForm.valid) {\r\n this.consumerCompanyService\r\n .addCreditRatings(this.premisesQualificationsForm.value)\r\n .subscribe(\r\n (\r\n qualificationParameters: PremisesQualificationParameters\r\n ) => {\r\n this.toastr.success(\r\n 'Credit Ratings Successfully Saved'\r\n );\r\n this.prospectDetails.qualificationParameters = qualificationParameters;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.toastr.error(this.errorMessage);\r\n }\r\n );\r\n }\r\n }\r\n\r\n public setRequiredControls(): void {\r\n if (\r\n this.premisesQualificationsForm.controls.creditPermissionReceived\r\n .value\r\n ) {\r\n this.premisesQualificationsForm.controls.creditPermissionRequested.setValue(\r\n true\r\n );\r\n this.premisesQualificationsForm.controls.creditScore.setValidators([\r\n Validators.required,\r\n ]);\r\n this.premisesQualificationsForm.controls.creditRatingLookupId.setValidators(\r\n [Validators.required]\r\n );\r\n this.premisesQualificationsForm.controls.creditRatingLookupId.enable();\r\n this.premisesQualificationsForm.controls.creditRatingLookupId.setValue(\r\n this.prospectDetails.qualificationParameters\r\n .creditRatingLookupId\r\n );\r\n this.premisesQualificationsForm.controls.creditScore.enable();\r\n this.premisesQualificationsForm.controls.creditScore.setValue(\r\n this.prospectDetails.qualificationParameters.creditScore\r\n );\r\n this.premisesQualificationsForm.controls.creditPermissionDocument.setValidators(\r\n [Validators.required]\r\n );\r\n this.premisesQualificationsForm.controls.creditPermissionDocument.setValue(\r\n this.prospectDetails.creditPermissionDocument\r\n );\r\n } else {\r\n this.premisesQualificationsForm = new FormGroup({\r\n creditPermissionDocument: new FormControl({\r\n value: null,\r\n disabled: true,\r\n }),\r\n creditRatingLookupId: new FormControl({\r\n value: null,\r\n disabled: true,\r\n }),\r\n creditScore: new FormControl({ value: null, disabled: true }),\r\n creditPermissionRequested: new FormControl({\r\n value: this.prospectDetails.qualificationParameters\r\n .creditPermissionRequested,\r\n disabled: false,\r\n }),\r\n creditPermissionReceived: new FormControl({\r\n value: false,\r\n disabled: false,\r\n }),\r\n });\r\n this.premisesQualificationsForm.updateValueAndValidity();\r\n }\r\n }\r\n\r\n //// Private Support Functions\r\n private initCreditPermissionAndRatingForm(): void {\r\n this.premisesQualificationsForm = new FormGroup({\r\n premisesQualificationParametersId: new FormControl(''),\r\n consumerCompanyId: new FormControl(''),\r\n creditPermissionDocument: new FormControl(''),\r\n creditRatingLookupId: new FormControl(null),\r\n creditScore: new FormControl(''),\r\n creditPermissionRequested: new FormControl(''),\r\n creditPermissionReceived: new FormControl(''),\r\n });\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { map } from 'rxjs/operators';\r\nimport { Observable } from 'rxjs';\r\nimport { DatePipe } from '@angular/common';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class DistributorActivationReportService {\r\n public constructor(\r\n private httpClient: HttpClient,\r\n private datePipe: DatePipe\r\n ) {}\r\n\r\n public getDistributorConsumerActivationReport(\r\n distributorId: number,\r\n startDate: Date,\r\n endDate: Date\r\n ): Observable {\r\n return this.httpClient\r\n .get(\r\n API_URL +\r\n 'Report/GetDistributorConsumerActivationReport?distributorId=' +\r\n distributorId +\r\n '&startDate=' +\r\n this.datePipe.transform(startDate, 'yyyy-MM-dd') +\r\n '&endDate=' +\r\n this.datePipe.transform(endDate, 'yyyy-MM-dd'),\r\n { responseType: 'blob' }\r\n )\r\n .pipe(map((response) => response));\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { FormGroup, FormControl, Validators } from '@angular/forms';\r\nimport { Distributor } from '../../../model/distributor.model';\r\nimport { DistributorService } from '../../distributor/distributor.service';\r\nimport { CommonService } from '../../../common/common-service';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { saveAs as importedSaveAs } from 'file-saver';\r\nimport { DistributorActivationReportService } from './distributor-activation-report.service';\r\n\r\n@Component({\r\n selector: 'distributor-activation-report',\r\n templateUrl: './distributor-activation-report.component.html',\r\n styleUrls: [\r\n '../../form.styles.scss',\r\n './distributor-activation-report.component.scss',\r\n ],\r\n})\r\nexport class DistributorActivationReportComponent implements OnInit {\r\n public loading: boolean;\r\n public reportForm: FormGroup;\r\n public distributors: Distributor[] = [];\r\n\r\n public constructor(\r\n private distributorService: DistributorService,\r\n private distributorActivationReportService: DistributorActivationReportService,\r\n private commonService: CommonService,\r\n private toastr: ToastrService\r\n ) {\r\n const firstDay = new Date(\r\n new Date().getFullYear(),\r\n new Date().getMonth(),\r\n 1\r\n );\r\n const lastDay = new Date(\r\n new Date().getFullYear(),\r\n new Date().getMonth(),\r\n 1\r\n );\r\n lastDay.setMonth(firstDay.getMonth() + 1);\r\n lastDay.setDate(firstDay.getDate() - 1);\r\n\r\n this.reportForm = new FormGroup({\r\n distributorId: new FormControl(null, Validators.required),\r\n startDate: new FormControl(firstDay, Validators.required),\r\n endDate: new FormControl(lastDay, Validators.required),\r\n });\r\n }\r\n\r\n public ngOnInit() {\r\n this.loadDistributors();\r\n }\r\n\r\n public loadDistributors() {\r\n this.loading = true;\r\n this.distributorService.getAllEligibleDistributors().subscribe(\r\n (distributors) => {\r\n this.distributors = distributors;\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.loading = false;\r\n this.toastr.error(this.commonService.handleErrorMessage(error));\r\n }\r\n );\r\n }\r\n\r\n public onSubmit() {\r\n this.commonService.validateAllFormFields(this.reportForm);\r\n if (this.reportForm.valid && this.validateDates()) {\r\n this.loading = true;\r\n this.toastr.info('Processing distributor activation report');\r\n this.distributorActivationReportService\r\n .getDistributorConsumerActivationReport(\r\n this.reportForm.controls.distributorId.value,\r\n this.reportForm.controls.startDate.value,\r\n this.reportForm.controls.endDate.value\r\n )\r\n .subscribe(\r\n (response) => {\r\n importedSaveAs(\r\n response,\r\n 'DstributorConsumerActivationReport.xls'\r\n );\r\n this.loading = false;\r\n this.toastr.success(\r\n 'Downloading distributor activation report'\r\n );\r\n },\r\n () => {\r\n this.loading = false;\r\n this.toastr.error(\r\n 'An error occurred while attempting to retrieve the distributor activation report'\r\n );\r\n }\r\n );\r\n }\r\n }\r\n\r\n public validateDates() {\r\n const startDate = this.reportForm.controls.startDate.value;\r\n const endDate = this.reportForm.controls.endDate.value;\r\n\r\n if (startDate > endDate) {\r\n this.toastr.error('End year can not be after start year');\r\n return false;\r\n }\r\n return true;\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { CommonService } from '../../../../common/common-service';\r\nimport { GeneratorCompanyService } from '../../../generator-company/generator-company.service';\r\nimport { Router } from '@angular/router';\r\nimport { GeneratorProject } from '../../../../model/generator-project.model';\r\n\r\n@Component({\r\n selector: 'app-generator-ppa-renewal-notifications',\r\n templateUrl: './generator-ppa-renewal-notifications.component.html',\r\n styleUrls: ['./generator-ppa-renewal-notifications.component.scss'],\r\n})\r\nexport class GeneratorPpaRenewalNotificationsComponent implements OnInit {\r\n public generatorPPAExpirationNotifications: any[] = [];\r\n public loading: boolean = false;\r\n public errorMessage: string;\r\n\r\n constructor(\r\n public commonService: CommonService,\r\n private generatorService: GeneratorCompanyService,\r\n private router: Router\r\n ) {}\r\n\r\n public ngOnInit() {\r\n this.loadNotifications();\r\n }\r\n\r\n public viewDetails(projectFacilityId: number): void {\r\n this.generatorService.getGeneratorProject(projectFacilityId).subscribe(\r\n (projectFacility: GeneratorProject) => {\r\n this.router.navigate(\r\n ['generator-project', projectFacilityId, 'edit'],\r\n {\r\n queryParams: {\r\n activeTab: 'ppaAndAddendums',\r\n companyName:\r\n projectFacility.generatorCompany.company\r\n .companyName,\r\n projectName: projectFacility.generatorProjectName,\r\n },\r\n }\r\n );\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n }\r\n\r\n private loadNotifications(): void {\r\n this.loading = true;\r\n this.generatorService\r\n .getGeneratorFacilityPPARenewalNotifications()\r\n .subscribe(\r\n (generatorPPAExpirationNotifications) => {\r\n this.generatorPPAExpirationNotifications = generatorPPAExpirationNotifications;\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { CommonService } from '../../../../common/common-service';\r\nimport { Router } from '@angular/router';\r\nimport { ConsumerCompanyService } from '../../../consumer-company/consumer-company.service';\r\nimport { ConsumerCompany } from '../../../../model/consumer-company.model';\r\n\r\n@Component({\r\n selector: 'app-consumer-ppa-renewal-notifications',\r\n templateUrl: './consumer-ppa-renewal-notifications.component.html',\r\n styleUrls: ['./consumer-ppa-renewal-notifications.component.scss'],\r\n})\r\nexport class ConsumerPpaRenewalNotificationsComponent implements OnInit {\r\n public consumerPPAExpirationNotifications: any[] = [];\r\n public loading: boolean = false;\r\n public errorMessage: string;\r\n\r\n constructor(\r\n public commonService: CommonService,\r\n private consumerService: ConsumerCompanyService,\r\n private router: Router\r\n ) {}\r\n\r\n public ngOnInit() {\r\n this.loadNotifications();\r\n }\r\n\r\n public viewDetails(consumerCompanyId: number): void {\r\n this.consumerService.getConsumerCompany(consumerCompanyId).subscribe(\r\n (consumerCompany: ConsumerCompany) => {\r\n this.router.navigate(\r\n ['consumer-company', consumerCompanyId, 'edit'],\r\n {\r\n queryParams: {\r\n tab: 'PPA',\r\n companyName: consumerCompany.company.companyName,\r\n },\r\n }\r\n );\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n }\r\n\r\n private loadNotifications(): void {\r\n this.loading = true;\r\n this.consumerService\r\n .getConsumerCompanyPPARenewalNotifications()\r\n .subscribe(\r\n (consumerPPAExpirationNotifications) => {\r\n this.consumerPPAExpirationNotifications = consumerPPAExpirationNotifications;\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { DocumentService } from '../../document/document.service';\r\nimport { CommonService } from '../../../common/common-service';\r\nimport { saveAs } from 'file-saver/FileSaver';\r\nimport { ToastrService } from 'ngx-toastr';\r\n\r\n@Component({\r\n selector: 'app-downloadable-documents-component',\r\n templateUrl: './downloadable-documents-component.html',\r\n styleUrls: ['./downloadable-documents-component.scss'],\r\n})\r\nexport class DownloadableDocumentsComponent implements OnInit {\r\n public errorMessage = '';\r\n public retrievingGeneratorCounterpartyBODResolutionFile: boolean = false;\r\n public retrievingConsumerCounterpartyBODResolutionFile: boolean = false;\r\n public retrievingConsumerLandlordResolutionFile: boolean = false;\r\n public retrievingConsumerMeterAndTariffChangeFormNewNMBMFile: boolean = false;\r\n public retrievingConsumerMeteringWebSiteAccessApplicationForm: boolean = false;\r\n\r\n public isConsumerApplicationUserLoggedIn: boolean = false;\r\n public isGeneratorApplicationUserLoggedIn: boolean = false;\r\n\r\n constructor(\r\n private documentService: DocumentService,\r\n private toaster: ToastrService,\r\n private commonService: CommonService\r\n ) {}\r\n\r\n public ngOnInit() {\r\n this.isConsumerApplicationUserLoggedIn = this.commonService.isConsumerApplicationUserLoggedIn();\r\n this.isGeneratorApplicationUserLoggedIn = this.commonService.isGeneratorApplicationUserLoggedIn();\r\n }\r\n\r\n public onDownloadGeneratorCounterpartyBODResolutionFile() {\r\n this.retrievingGeneratorCounterpartyBODResolutionFile = true;\r\n this.documentService\r\n .downloadApplicationDocument(\r\n 'Counterparty BOD resolution Generator PPA.doc'\r\n )\r\n .subscribe(\r\n (response) => {\r\n saveAs(\r\n response,\r\n 'Counterparty BOD resolution Generator PPA.doc'\r\n );\r\n this.toaster.success('Document download complete');\r\n this.retrievingGeneratorCounterpartyBODResolutionFile = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.retrievingGeneratorCounterpartyBODResolutionFile = false;\r\n }\r\n );\r\n }\r\n\r\n public onDownloadConsumerCounterpartyBODResolutionFile() {\r\n this.retrievingConsumerCounterpartyBODResolutionFile = true;\r\n this.documentService\r\n .downloadApplicationDocument(\r\n 'Counterparty BOD resolution Customer PPA.doc'\r\n )\r\n .subscribe(\r\n (response) => {\r\n saveAs(\r\n response,\r\n 'Counterparty BOD resolution Customer PPA.doc'\r\n );\r\n this.toaster.success('Document download complete');\r\n this.retrievingConsumerCounterpartyBODResolutionFile = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.retrievingConsumerCounterpartyBODResolutionFile = false;\r\n }\r\n );\r\n }\r\n\r\n public onDownloadConsumerLandlordResolutionFile() {\r\n this.retrievingConsumerLandlordResolutionFile = true;\r\n this.documentService\r\n .downloadApplicationDocument('Landlord Resolution 20170524.docx')\r\n .subscribe(\r\n (response) => {\r\n saveAs(response, 'Landlord Resolution 20170524.docx');\r\n this.toaster.success('Document download complete');\r\n this.retrievingConsumerLandlordResolutionFile = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.retrievingConsumerLandlordResolutionFile = false;\r\n }\r\n );\r\n }\r\n\r\n public onDownloadConsumerMeterAndTariffChangeFormNewNMBMFile() {\r\n this.retrievingConsumerMeterAndTariffChangeFormNewNMBMFile = true;\r\n this.documentService\r\n .downloadApplicationDocument(\r\n 'Meter and tariff change form for all new NMBM customers.pdf'\r\n )\r\n .subscribe(\r\n (response) => {\r\n saveAs(\r\n response,\r\n 'Meter and tariff change form for all new NMBM customers.pdf'\r\n );\r\n this.toaster.success('Document download complete');\r\n this.retrievingConsumerMeterAndTariffChangeFormNewNMBMFile = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.retrievingConsumerMeterAndTariffChangeFormNewNMBMFile = false;\r\n }\r\n );\r\n }\r\n\r\n public onDownloadConsumerMeteringWebSiteAccessApplicationFormFile() {\r\n this.retrievingConsumerMeteringWebSiteAccessApplicationForm = true;\r\n this.documentService\r\n .downloadApplicationDocument(\r\n 'Metering Web Site Access Application Form.doc'\r\n )\r\n .subscribe(\r\n (response) => {\r\n saveAs(\r\n response,\r\n 'Metering Web Site Access Application Form.doc'\r\n );\r\n this.toaster.success('Document download complete');\r\n this.retrievingConsumerMeteringWebSiteAccessApplicationForm = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.retrievingConsumerMeteringWebSiteAccessApplicationForm = false;\r\n }\r\n );\r\n }\r\n}\r\n","import { map } from 'rxjs/operators';\r\nimport { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { Page } from '../../model/page.model';\r\nimport { ForecastParameter } from '../../model/forecast-run/forecast.parameter';\r\nimport { ProfilingEntity } from '../../model/forecast-run/profiling-entity';\r\n\r\n@Injectable()\r\nexport class ForecastService {\r\n constructor(private httpClient: HttpClient) {}\r\n\r\n public createForecastParameters(\r\n forecastParameter: ForecastParameter\r\n ): Observable {\r\n return this.httpClient\r\n .post(\r\n API_URL + 'forecasting/CreateForecastParameter',\r\n JSON.stringify(forecastParameter)\r\n )\r\n .pipe(map((response: HttpResponse) => response));\r\n }\r\n\r\n public getGeneratorProfileList(\r\n forecastParameter: ForecastParameter\r\n ): Observable {\r\n return this.httpClient\r\n .post(\r\n API_URL + 'forecasting/GetGeneratorProfileList',\r\n JSON.stringify(forecastParameter)\r\n )\r\n .pipe(map((response: HttpResponse) => response));\r\n }\r\n\r\n public getConsumerProfileList(\r\n forecastParameter: ForecastParameter\r\n ): Observable {\r\n return this.httpClient\r\n .post(\r\n API_URL + 'forecasting/GetConsumerProfileList',\r\n JSON.stringify(forecastParameter)\r\n )\r\n .pipe(map((response: HttpResponse) => response));\r\n }\r\n\r\n public saveParameters(\r\n forecastParameter: ForecastParameter\r\n ): Observable {\r\n return this.httpClient\r\n .post(\r\n API_URL + 'forecasting/SaveForecastParameter',\r\n JSON.stringify(forecastParameter)\r\n )\r\n .pipe(map((response: HttpResponse) => response));\r\n }\r\n\r\n public updateParameters(\r\n forecastParameter: ForecastParameter\r\n ): Observable {\r\n return this.httpClient\r\n .post(\r\n API_URL + 'forecasting/UpdateForecastParameter',\r\n JSON.stringify(forecastParameter)\r\n )\r\n .pipe(map((response: HttpResponse) => response));\r\n }\r\n\r\n public getAllocationHistory(\r\n searchString: string,\r\n page: Page,\r\n sortProp: any,\r\n forecastParameterId?: number\r\n ): Observable {\r\n if (isNullOrUndefined(sortProp.direction)) {\r\n sortProp.direction = '';\r\n }\r\n if (isNullOrUndefined(sortProp.property)) {\r\n sortProp.property = '';\r\n }\r\n return this.httpClient.get(\r\n API_URL +\r\n 'forecasting/GetAllocationRunForecastList?forecastParameterId=' +\r\n forecastParameterId +\r\n '&searchString=' +\r\n searchString +\r\n '&offset=' +\r\n page.offset +\r\n '&pageSize=' +\r\n page.size +\r\n '&sortDirection=' +\r\n sortProp.direction +\r\n '&sortProperty=' +\r\n sortProp.property\r\n );\r\n }\r\n\r\n public getFoecastParameterList(\r\n searchString: string,\r\n page: Page,\r\n sortProp: any\r\n ): Observable {\r\n if (isNullOrUndefined(sortProp.direction)) {\r\n sortProp.direction = '';\r\n }\r\n if (isNullOrUndefined(sortProp.property)) {\r\n sortProp.property = '';\r\n }\r\n return this.httpClient.get(\r\n API_URL +\r\n 'forecasting/GetForecastParameterList?searchString=' +\r\n searchString +\r\n '&offset=' +\r\n page.offset +\r\n '&pageSize=' +\r\n page.size +\r\n '&sortDirection=' +\r\n sortProp.direction +\r\n '&sortProperty=' +\r\n sortProp.property\r\n );\r\n }\r\n\r\n public getForecastReportByForecastRunParameterId(\r\n forecastRunParameterId: number\r\n ): Observable {\r\n return this.httpClient\r\n .get(\r\n API_URL +\r\n 'forecasting/DownloadForecastReportExcel?forecastRunParameterId=' +\r\n forecastRunParameterId,\r\n { responseType: 'blob' }\r\n )\r\n .pipe(map((response) => response));\r\n }\r\n\r\n public getForecastParameters(forecastParameterId: number): Observable {\r\n return this.httpClient\r\n .get(\r\n API_URL +\r\n 'forecasting/GetForecastParameter?forecastParameterId=' +\r\n forecastParameterId\r\n )\r\n .pipe(map((response: HttpResponse) => response));\r\n }\r\n\r\n public startForecasting(forecastParameterId: number): Observable {\r\n return this.httpClient\r\n .get(\r\n API_URL +\r\n 'forecasting/StartForecasting?forecastParameterId=' +\r\n forecastParameterId\r\n )\r\n .pipe(map((response: HttpResponse) => response));\r\n }\r\n}\r\n","import {\r\n Component,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n TemplateRef,\r\n ViewChild,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { CommonService } from '../../../common/common-service';\r\nimport { EntityLookup } from '../../../model/entity-lookup.model';\r\nimport { DistributorService } from '../../distributor/distributor.service';\r\nimport { DateConverterService } from '../../../widget/date-converter/date-converter.service';\r\nimport { ForecastParameter } from '../../../model/forecast-run/forecast.parameter';\r\nimport { ForecastGeneratorProjectFacilityParameter } from '../../../model/forecast-run/forecast-generator-project-facility.parameter';\r\nimport { ForecastConsumerCompanyPremisesParameter } from '../../../model/forecast-run/forecast-consumer-company-premises.parameter';\r\nimport { ForecastMonthlyPrepaidParameter } from '../../../model/forecast-run/forecast-monthly-prepaid.parameter';\r\nimport { ForecastMonthlyGenerationParameter } from '../../../model/forecast-run/forecast-monthly-generation.parameter';\r\nimport { ForecastMonthlyConsumptionParameter } from '../../../model/forecast-run/forecast-monthly-consumption.parameter';\r\nimport { ProfilingEntity } from '../../../model/forecast-run/profiling-entity';\r\nimport { ForecastService } from '../forecast.service';\r\nimport { debounceTime } from 'rxjs/operators';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { DatatableComponent } from '@swimlane/ngx-datatable';\r\nimport { BsModalRef } from 'ngx-bootstrap';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { Subscription } from 'rxjs';\r\nimport { BsModalService } from 'ngx-bootstrap/modal';\r\n\r\n@Component({\r\n selector: 'forecast',\r\n templateUrl: './forecast.component.html',\r\n styleUrls: ['./forecast.component.scss', '../../form.styles.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class ForecastComponent implements OnInit {\r\n @ViewChild(DatatableComponent)\r\n public generatorTable: DatatableComponent;\r\n @ViewChild(DatatableComponent)\r\n public consumerTable: DatatableComponent;\r\n @ViewChild(DatatableComponent)\r\n public prepaidTable: DatatableComponent;\r\n @ViewChild(DatatableComponent)\r\n public monthlyGenerationTable: DatatableComponent;\r\n @ViewChild(DatatableComponent)\r\n public monthlyConsumptionTable: DatatableComponent;\r\n @ViewChild('monthlyGenerationModal')\r\n public monthlyGenerationModal: TemplateRef;\r\n @ViewChild('monthlyConsumptionModal')\r\n public monthlyConsumptionModal: TemplateRef;\r\n @ViewChild('runforecastModal')\r\n public runforecastModal: TemplateRef;\r\n\r\n public startDate: number;\r\n public endDate: number;\r\n\r\n public errorMessage = '';\r\n public errorMessages: any[];\r\n public distributors = [];\r\n public months: EntityLookup[];\r\n public forecastForm: FormGroup;\r\n public forecastParameterId: number;\r\n public distributorId: number;\r\n\r\n public consumerCompanyPremisesColumnHeaders: any[];\r\n public prepaidPowerHeaders: any[];\r\n public generatorColumnHeaders: any[];\r\n public loadingForecastCriteria = false;\r\n public editingForecastCriteria = false;\r\n public savingForecastCriteria = false;\r\n public viewingAllocation = false;\r\n public validToRunForecast = true;\r\n public validToRunForecastErrors = false;\r\n public validatingCriteria = false;\r\n public hasForecastRuns = false;\r\n public latestForecastStatus: string;\r\n\r\n public generatorProjectFacilityArrayFilter: ForecastGeneratorProjectFacilityParameter[];\r\n public consumerCompanyPremisesArrayFilter: ForecastConsumerCompanyPremisesParameter[];\r\n\r\n public generatorProjectFacilityArray: ForecastGeneratorProjectFacilityParameter[];\r\n public consumerCompanyPremisesArray: ForecastConsumerCompanyPremisesParameter[];\r\n public prepaidPowerArray: ForecastMonthlyPrepaidParameter[];\r\n\r\n public consumerProfileList: ProfilingEntity[];\r\n public generatorProfileList: ProfilingEntity[];\r\n\r\n public generatorProjectFacility: ForecastGeneratorProjectFacilityParameter;\r\n public consumerCompanyPremises: ForecastConsumerCompanyPremisesParameter;\r\n public powerGeneration: ForecastMonthlyGenerationParameter[];\r\n public powerConsumption: ForecastMonthlyConsumptionParameter[];\r\n public monthlyGenerationColumnHeaders: any[];\r\n public monthlyConsumptionColumnHeaders: any[];\r\n\r\n private forecastParameter: ForecastParameter;\r\n private modalRef: BsModalRef;\r\n private routeParamsSubscription: Subscription;\r\n\r\n constructor(\r\n private distributorService: DistributorService,\r\n private commonService: CommonService,\r\n private dateConverterService: DateConverterService,\r\n private forecastService: ForecastService,\r\n private toaster: ToastrService,\r\n private modalService: BsModalService,\r\n private route: ActivatedRoute,\r\n private router: Router\r\n ) {\r\n this.consumerCompanyPremisesColumnHeaders = [\r\n { name: 'Consumer' },\r\n { name: 'Active' },\r\n { name: 'Business Activity' },\r\n { name: 'Tariff Code' },\r\n { name: 'Exclude' },\r\n { name: 'Date Of Inclusion' },\r\n { name: 'Profile' },\r\n ];\r\n this.generatorColumnHeaders = [\r\n { name: 'Generator' },\r\n { name: 'Active' },\r\n { name: 'Technology Type' },\r\n { name: 'Average Purchase Price' },\r\n { name: 'Exclude' },\r\n { name: 'Date Of Inclusion' },\r\n { name: 'Profile' },\r\n ];\r\n\r\n this.prepaidPowerHeaders = [\r\n { name: 'Month' },\r\n { name: 'Power Allocated KWh' },\r\n { name: 'Weekend Percentage' },\r\n { name: 'Weekday Percentage' },\r\n ];\r\n\r\n this.monthlyGenerationColumnHeaders = [\r\n { name: 'Month' },\r\n { name: 'Power Generated KWh' },\r\n ];\r\n\r\n this.monthlyConsumptionColumnHeaders = [\r\n { name: 'Month' },\r\n { name: 'Power Consumed KWh' },\r\n ];\r\n\r\n this.generatorProjectFacilityArrayFilter = [];\r\n this.consumerCompanyPremisesArrayFilter = [];\r\n this.generatorProjectFacilityArray = [];\r\n this.consumerCompanyPremisesArray = [];\r\n this.prepaidPowerArray = [];\r\n this.startDate = -1;\r\n this.endDate = -1;\r\n this.errorMessage = '';\r\n this.errorMessages = [];\r\n }\r\n\r\n public ngOnInit(): void {\r\n this.forecastForm = new FormGroup({\r\n distributorName: new FormControl('', [Validators.required]),\r\n distributorId: new FormControl(null),\r\n year: new FormControl(null, [Validators.required]),\r\n startmonthLookupId: new FormControl(null, [Validators.required]),\r\n endmonthLookupId: new FormControl(null, [Validators.required]),\r\n });\r\n\r\n this.forecastForm\r\n .get('distributorName')\r\n .valueChanges.pipe(debounceTime(300))\r\n .subscribe(\r\n (searchString) => {\r\n this.fetchDistributors(searchString);\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loadingForecastCriteria = false;\r\n }\r\n );\r\n\r\n this.commonService.getEntityLookups(['Month']).subscribe(\r\n (response) => {\r\n this.months = response.entityLookupResultList['month'];\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loadingForecastCriteria = false;\r\n }\r\n );\r\n\r\n this.routeParamsSubscription = this.route.params.subscribe(\r\n (params) => {\r\n if (!isNullOrUndefined(params.forecastParameterId)) {\r\n this.forecastParameterId = +params.forecastParameterId;\r\n this.getForecast(this.forecastParameterId);\r\n }\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n }\r\n\r\n public viewAllocations() {\r\n this.router.navigate([\r\n 'report',\r\n 'allocation-forecast',\r\n this.forecastParameterId,\r\n ]);\r\n }\r\n\r\n public back() {\r\n this.generatorProjectFacilityArrayFilter = [];\r\n this.consumerCompanyPremisesArrayFilter = [];\r\n this.generatorProjectFacilityArray = [];\r\n this.consumerCompanyPremisesArray = [];\r\n this.prepaidPowerArray = [];\r\n this.startDate = -1;\r\n this.endDate = -1;\r\n this.errorMessage = '';\r\n this.errorMessages = [];\r\n this.viewingAllocation = false;\r\n this.loadingForecastCriteria = false;\r\n this.editingForecastCriteria = false;\r\n this.savingForecastCriteria = false;\r\n this.validToRunForecastErrors = false;\r\n this.validatingCriteria = false;\r\n this.hasForecastRuns = false;\r\n this.latestForecastStatus = '';\r\n this.forecastForm.enable();\r\n this.ngOnInit();\r\n this.router.navigate(['report', 'forecast']);\r\n }\r\n\r\n public fetchDistributors(searchString: string): void {\r\n if (isNullOrUndefined(searchString)) {\r\n searchString = '';\r\n }\r\n this.distributorService\r\n .getAllocationDistributors(searchString)\r\n .subscribe(\r\n (distributors) => {\r\n this.distributors = distributors;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loadingForecastCriteria = false;\r\n }\r\n );\r\n }\r\n\r\n public selectedDistributor($event: any): void {\r\n this.forecastForm\r\n .get('distributorId')\r\n .patchValue($event.item.distributorId);\r\n }\r\n\r\n public onCreateForecast() {\r\n this.loadingForecastCriteria = true;\r\n this.commonService.validateAllFormFields(this.forecastForm);\r\n if (this.forecastForm.valid) {\r\n this.errorMessage = '';\r\n const year = this.forecastForm.get('year').value;\r\n const startdate = new Date(\r\n year,\r\n this.months.find(\r\n (m) =>\r\n m.entityLookupId ===\r\n this.forecastForm.get('startmonthLookupId').value\r\n ).orderPriority - 1,\r\n 1\r\n );\r\n const endate = new Date(\r\n year,\r\n this.months.find(\r\n (m) =>\r\n m.entityLookupId ===\r\n this.forecastForm.get('endmonthLookupId').value\r\n ).orderPriority,\r\n 1\r\n );\r\n\r\n this.forecastParameter = new ForecastParameter(\r\n 0,\r\n this.forecastForm.get('distributorId').value,\r\n '',\r\n year,\r\n new Date(this.dateConverterService.toApiDateTime(startdate)),\r\n new Date(this.dateConverterService.toApiDateTime(endate)),\r\n false,\r\n '',\r\n null,\r\n null,\r\n null\r\n );\r\n this.forecastService\r\n .createForecastParameters(this.forecastParameter)\r\n .subscribe(\r\n (forecastParameter: ForecastParameter) => {\r\n this.forecastParameter = forecastParameter;\r\n this.generatorProjectFacilityArray = this.forecastParameter.generators;\r\n this.consumerCompanyPremisesArray = this.forecastParameter.consumerCompanyPremises;\r\n this.generatorProjectFacilityArrayFilter = this.forecastParameter.generators;\r\n this.consumerCompanyPremisesArrayFilter = this.forecastParameter.consumerCompanyPremises;\r\n this.prepaidPowerArray = this.forecastParameter.prepaidPower;\r\n this.distributorId = this.forecastParameter.distributorId;\r\n this.startDate =\r\n new Date(\r\n forecastParameter.forecastStartDate\r\n ).getMonth() + 1;\r\n this.endDate =\r\n new Date(\r\n forecastParameter.forecastEndDate\r\n ).getMonth() + 1;\r\n this.forecastForm.disable();\r\n this.forecastService\r\n .getGeneratorProfileList(this.forecastParameter)\r\n .subscribe(\r\n (generators: ProfilingEntity[]) => {\r\n this.generatorProfileList = generators;\r\n\r\n this.forecastService\r\n .getConsumerProfileList(\r\n this.forecastParameter\r\n )\r\n .subscribe(\r\n (\r\n consumerCompanyPremises: ProfilingEntity[]\r\n ) => {\r\n this.consumerProfileList = consumerCompanyPremises;\r\n this.editingForecastCriteria = true;\r\n this.loadingForecastCriteria = false;\r\n this.viewingAllocation = true;\r\n },\r\n (error) => {\r\n this.loadingForecastCriteria = false;\r\n this.toaster.error(\r\n this.commonService.handleErrorMessage(\r\n error\r\n )\r\n );\r\n }\r\n );\r\n },\r\n (error) => {\r\n this.loadingForecastCriteria = false;\r\n this.toaster.error(\r\n this.commonService.handleErrorMessage(\r\n error\r\n )\r\n );\r\n }\r\n );\r\n },\r\n (error) => {\r\n this.loadingForecastCriteria = false;\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n } else {\r\n this.loadingForecastCriteria = false;\r\n this.errorMessage = 'Please ensure all fields are valid';\r\n }\r\n }\r\n\r\n public getForecast(forecastParameterId: number) {\r\n this.loadingForecastCriteria = true;\r\n\r\n this.forecastService\r\n .getForecastParameters(forecastParameterId)\r\n .subscribe(\r\n (forecastParameter: ForecastParameter) => {\r\n this.forecastParameter = forecastParameter;\r\n this.generatorProjectFacilityArray = this.forecastParameter.generators;\r\n this.consumerCompanyPremisesArray = this.forecastParameter.consumerCompanyPremises;\r\n this.generatorProjectFacilityArrayFilter = [\r\n ...this.forecastParameter.generators,\r\n ];\r\n this.consumerCompanyPremisesArrayFilter = [\r\n ...this.forecastParameter.consumerCompanyPremises,\r\n ];\r\n this.prepaidPowerArray = this.forecastParameter.prepaidPower;\r\n this.distributorId = this.forecastParameter.distributorId;\r\n this.startDate =\r\n new Date(\r\n forecastParameter.forecastStartDate\r\n ).getMonth() + 1;\r\n this.endDate = new Date(\r\n forecastParameter.forecastEndDate\r\n ).getMonth();\r\n this.hasForecastRuns = this.forecastParameter.hasForecastRuns;\r\n this.latestForecastStatus = this.forecastParameter.latestForecastStatus;\r\n\r\n this.forecastForm.patchValue({\r\n distributorId: this.forecastParameter.distributorId,\r\n distributorName: this.forecastParameter.distributor,\r\n year: this.forecastParameter.yearToForecastFor,\r\n startmonthLookupId: this.months.find(\r\n (m) => m.orderPriority === this.startDate\r\n ).entityLookupId,\r\n endmonthLookupId: this.months.find(\r\n (m) => m.orderPriority === this.endDate\r\n ).entityLookupId,\r\n });\r\n\r\n this.fetchDistributors('');\r\n this.forecastForm.disable();\r\n this.forecastService\r\n .getGeneratorProfileList(this.forecastParameter)\r\n .subscribe(\r\n (generators: ProfilingEntity[]) => {\r\n this.generatorProfileList = generators;\r\n\r\n this.forecastService\r\n .getConsumerProfileList(\r\n this.forecastParameter\r\n )\r\n .subscribe(\r\n (\r\n consumerCompanyPremises: ProfilingEntity[]\r\n ) => {\r\n this.consumerProfileList = consumerCompanyPremises;\r\n this.editingForecastCriteria = true;\r\n this.loadingForecastCriteria = false;\r\n this.viewingAllocation = true;\r\n },\r\n (error) => {\r\n this.loadingForecastCriteria = false;\r\n this.toaster.error(\r\n this.commonService.handleErrorMessage(\r\n error\r\n )\r\n );\r\n }\r\n );\r\n },\r\n (error) => {\r\n this.loadingForecastCriteria = false;\r\n this.toaster.error(\r\n this.commonService.handleErrorMessage(error)\r\n );\r\n }\r\n );\r\n },\r\n (error) => {\r\n this.loadingForecastCriteria = false;\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n }\r\n\r\n public validToSave(): boolean {\r\n return (\r\n this.forecastParameter.consumerCompanyPremises.length > 0 &&\r\n this.forecastParameter.generators.length > 0 &&\r\n this.forecastParameter.prepaidPower.length > 0\r\n );\r\n }\r\n\r\n public checkValidToRunForecast(): boolean {\r\n this.errorMessages = [];\r\n const prepaid = this.validatePrepaid();\r\n const consumers = this.validateConsumers();\r\n const generators = this.validateGenerators();\r\n return prepaid && consumers && generators;\r\n }\r\n\r\n public validatePrepaid(): boolean {\r\n let validPrepaid = true;\r\n for (const prepaid of this.forecastParameter.prepaidPower) {\r\n if (\r\n prepaid.prepaidPowerRemovalWeekdayPercentage == null ||\r\n prepaid.prepaidPowerRemovalWeekendPercentage == null\r\n ) {\r\n this.errorMessages.push(\r\n 'Please ensure you enter bothe prepaid removal before running a forecast.'\r\n );\r\n validPrepaid = false;\r\n } else {\r\n continue;\r\n }\r\n }\r\n return validPrepaid;\r\n }\r\n\r\n public validateGenerators(): boolean {\r\n let validGenerators = true;\r\n for (const generator of this.forecastParameter.generators) {\r\n const exclude = generator.excludefromForecast;\r\n if (!exclude) {\r\n if (\r\n isNullOrUndefined(generator.powerGeneration) ||\r\n generator.powerGeneration.length === 0\r\n ) {\r\n this.errorMessages.push(\r\n 'Please ensure you have generation for this generator ' +\r\n generator.generator +\r\n ' before running a forecast.'\r\n );\r\n validGenerators = false;\r\n } else {\r\n for (const monthlyGen of generator.powerGeneration) {\r\n if (\r\n (monthlyGen.powerGeneratedKWh === 0 ||\r\n isNullOrUndefined(\r\n monthlyGen.powerGeneratedKWh\r\n )) &&\r\n monthlyGen.month >=\r\n new Date(generator.dateOfInclusion).getMonth() +\r\n 1\r\n ) {\r\n this.errorMessages.push(\r\n 'Please ensure you have generation for this generator ' +\r\n generator.generator +\r\n ' (' +\r\n this.months.find(\r\n (m) =>\r\n m.orderPriority === monthlyGen.month\r\n ).value +\r\n ') before running a forecast.'\r\n );\r\n validGenerators = false;\r\n }\r\n }\r\n }\r\n } else {\r\n continue;\r\n }\r\n }\r\n return validGenerators;\r\n }\r\n\r\n public validateConsumers(): boolean {\r\n let validConsumers = true;\r\n for (const consumer of this.forecastParameter.consumerCompanyPremises) {\r\n const exclude = consumer.excludefromForecast;\r\n if (!exclude) {\r\n if (\r\n isNullOrUndefined(consumer.powerConsumption) ||\r\n consumer.powerConsumption.length === 0\r\n ) {\r\n this.errorMessages.push(\r\n 'Please ensure you have consumption for this consumer ' +\r\n consumer.consumer +\r\n ' before running a forecast.'\r\n );\r\n validConsumers = false;\r\n } else {\r\n for (const monthlyCon of consumer.powerConsumption) {\r\n if (\r\n (monthlyCon.powerConsumedKWh === 0 ||\r\n isNullOrUndefined(\r\n monthlyCon.powerConsumedKWh === 0\r\n )) &&\r\n monthlyCon.month >=\r\n new Date(consumer.dateOfInclusion).getMonth() +\r\n 1\r\n ) {\r\n this.errorMessages.push(\r\n 'Please ensure you have consumption for this consumer ' +\r\n consumer.consumer +\r\n ' (' +\r\n this.months.find(\r\n (m) =>\r\n m.orderPriority === monthlyCon.month\r\n ).value +\r\n ') before running a forecast.'\r\n );\r\n validConsumers = false;\r\n }\r\n }\r\n }\r\n } else {\r\n continue;\r\n }\r\n }\r\n return validConsumers;\r\n }\r\n\r\n public setNullPrepaid() {\r\n this.forecastParameter.prepaidPower = this.prepaidPowerArray;\r\n for (const prepaidSetting of this.forecastParameter.prepaidPower) {\r\n if (\r\n prepaidSetting.prepaidPowerRemovalWeekdayPercentage === null ||\r\n prepaidSetting.prepaidPowerRemovalWeekendPercentage === null\r\n ) {\r\n prepaidSetting.prepaidPowerRemovalWeekdayPercentage = 0;\r\n prepaidSetting.prepaidPowerRemovalWeekendPercentage = 0;\r\n }\r\n }\r\n }\r\n\r\n public onSaveForecast() {\r\n this.forecastForm.enable();\r\n this.commonService.validateAllFormFields(this.forecastForm);\r\n if (this.forecastForm.valid) {\r\n this.setNullPrepaid();\r\n if (!this.validToSave()) {\r\n this.forecastForm.disable();\r\n this.errorMessage =\r\n 'Unable to save : This Forecast Parameter is missing monthly Prepaid Power, Generators or Consumers';\r\n } else {\r\n if (this.forecastParameter.forecastParameterId > 0) {\r\n this.updateParameters();\r\n } else {\r\n this.saveParameters();\r\n }\r\n }\r\n }\r\n }\r\n\r\n public saveParameters() {\r\n this.errorMessage = '';\r\n this.errorMessages = [];\r\n this.savingForecastCriteria = true;\r\n this.forecastService.saveParameters(this.forecastParameter).subscribe(\r\n (forecastParameterId: number) => {\r\n this.savingForecastCriteria = false;\r\n this.toaster.success(\r\n 'The parameters were successfully saved. '\r\n );\r\n this.router.navigate([\r\n 'report',\r\n 'forecast',\r\n forecastParameterId,\r\n ]);\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n }\r\n\r\n public updateParameters() {\r\n this.savingForecastCriteria = true;\r\n this.forecastService.updateParameters(this.forecastParameter).subscribe(\r\n (forecastParameterId: number) => {\r\n this.savingForecastCriteria = false;\r\n this.toaster.success(\r\n 'The parameters were successfully updated. '\r\n );\r\n this.router.navigate([\r\n 'report',\r\n 'forecast',\r\n forecastParameterId,\r\n ]);\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n }\r\n\r\n public updateGeneratorFilter(event) {\r\n const val = event.target.value.toLowerCase();\r\n\r\n // filter and update the rows\r\n this.generatorProjectFacilityArray = this.generatorProjectFacilityArrayFilter.filter(\r\n function(d) {\r\n return d.generator.toLowerCase().indexOf(val) !== -1 || !val;\r\n }\r\n );\r\n\r\n // Whenever the filter changes, always go back to the first page\r\n this.generatorTable.offset = 0;\r\n }\r\n\r\n public updateConsumerCompanyFilter(event) {\r\n const val = event.target.value.toLowerCase();\r\n\r\n // filter and update the rows\r\n this.consumerCompanyPremisesArray = this.consumerCompanyPremisesArrayFilter.filter(\r\n function(d) {\r\n return d.consumer.toLowerCase().indexOf(val) !== -1 || !val;\r\n }\r\n );\r\n // Whenever the filter changes, always go back to the first page\r\n this.consumerTable.offset = 0;\r\n }\r\n\r\n // Inline editing\r\n public updateConsumerCompanyPremisesParameter(\r\n event: any,\r\n consumerCompanyPremisesElement: any,\r\n name: string\r\n ): void {\r\n const consumerCompanyPremisesIndex = this.forecastParameter.consumerCompanyPremises.findIndex(\r\n (item) =>\r\n item.consumerCompanyPremisesId ===\r\n consumerCompanyPremisesElement.consumerCompanyPremisesId\r\n );\r\n\r\n if (name.toLowerCase().replace(' ', '') === 'exclude') {\r\n const excluded: boolean =\r\n name.toLowerCase().replace(' ', '') === 'exclude'\r\n ? event.target.checked\r\n : this.forecastParameter.consumerCompanyPremises[\r\n consumerCompanyPremisesIndex\r\n ].excludefromForecast;\r\n this.forecastParameter.consumerCompanyPremises[\r\n consumerCompanyPremisesIndex\r\n ].excludefromForecast = excluded;\r\n } else if (name.toLowerCase().replace(' ', '') === 'startmonth') {\r\n const inclusionMonth: Date =\r\n name.toLowerCase().replace(' ', '') === 'startmonth'\r\n ? event === 0\r\n ? null\r\n : new Date(\r\n this.forecastParameter.yearToForecastFor,\r\n this.months.find(\r\n (m) => m.entityLookupId === event\r\n ).orderPriority,\r\n 1\r\n )\r\n : this.forecastParameter.consumerCompanyPremises[\r\n consumerCompanyPremisesIndex\r\n ].dateOfInclusion;\r\n\r\n this.forecastParameter.consumerCompanyPremises[\r\n consumerCompanyPremisesIndex\r\n ].dateOfInclusion = new Date(\r\n this.dateConverterService.toApiDateTime(inclusionMonth)\r\n );\r\n } else if (name.toLowerCase().replace(' ', '') === 'profile') {\r\n const profile: number =\r\n name.toLowerCase().replace(' ', '') === 'profile'\r\n ? event === 0\r\n ? null\r\n : event\r\n : this.forecastParameter.consumerCompanyPremises[\r\n consumerCompanyPremisesIndex\r\n ].consumerCompanyPremisesProfileId;\r\n this.forecastParameter.consumerCompanyPremises[\r\n consumerCompanyPremisesIndex\r\n ].consumerCompanyPremisesProfileId = profile;\r\n }\r\n }\r\n\r\n public updateGeneratorProjectFacilityParameter(\r\n event: any,\r\n generatorProjectFacilityElement: any,\r\n name: string\r\n ): void {\r\n const generatorProjectFacilityIndex = this.forecastParameter.generators.findIndex(\r\n (item) =>\r\n item.generatorProjectFacilityId ===\r\n generatorProjectFacilityElement.generatorProjectFacilityId\r\n );\r\n\r\n if (name.toLowerCase().replace(' ', '') === 'exclude') {\r\n const excluded: boolean =\r\n name.toLowerCase().replace(' ', '') === 'exclude'\r\n ? event.target.checked\r\n : this.forecastParameter.generators[\r\n generatorProjectFacilityIndex\r\n ].excludefromForecast;\r\n this.forecastParameter.generators[\r\n generatorProjectFacilityIndex\r\n ].excludefromForecast = excluded;\r\n } else if (name.toLowerCase().replace(' ', '') === 'startmonth') {\r\n const inclusionMonth: Date =\r\n name.toLowerCase().replace(' ', '') === 'startmonth'\r\n ? event === 0\r\n ? null\r\n : new Date(\r\n this.forecastParameter.yearToForecastFor,\r\n this.months.find(\r\n (m) => m.entityLookupId === event\r\n ).orderPriority,\r\n 1\r\n )\r\n : this.forecastParameter.generators[\r\n generatorProjectFacilityIndex\r\n ].dateOfInclusion;\r\n\r\n this.forecastParameter.generators[\r\n generatorProjectFacilityIndex\r\n ].dateOfInclusion = new Date(\r\n this.dateConverterService.toApiDateTime(inclusionMonth)\r\n );\r\n } else if (name.toLowerCase().replace(' ', '') === 'profile') {\r\n const profile: number =\r\n name.toLowerCase().replace(' ', '') === 'profile'\r\n ? event === 0\r\n ? null\r\n : event\r\n : this.forecastParameter.generators[\r\n generatorProjectFacilityIndex\r\n ].generatorProjectFacilityProfileId;\r\n this.forecastParameter.generators[\r\n generatorProjectFacilityIndex\r\n ].generatorProjectFacilityProfileId = profile;\r\n }\r\n }\r\n\r\n // Editing Monthly entries\r\n public onSelectGenerator(generatorProjectFacility: any) {\r\n const generatorProjectFacilityIndex = this.forecastParameter.generators.findIndex(\r\n (item) =>\r\n item.generatorProjectFacilityId ===\r\n generatorProjectFacility.generatorProjectFacilityId\r\n );\r\n this.generatorProjectFacility = this.forecastParameter.generators[\r\n generatorProjectFacilityIndex\r\n ];\r\n this.powerGeneration = this.generatorProjectFacility.powerGeneration;\r\n this.modalRef = this.modalService.show(this.monthlyGenerationModal);\r\n }\r\n\r\n public onCancelMonthlyGeneration() {\r\n this.modalRef.hide();\r\n this.powerGeneration = [];\r\n }\r\n\r\n public onSaveMonthlyGeneration() {\r\n const generatorProjectFacilityIndex = this.forecastParameter.generators.findIndex(\r\n (item) =>\r\n item.generatorProjectFacilityId ===\r\n this.generatorProjectFacility.generatorProjectFacilityId\r\n );\r\n this.forecastParameter.generators[\r\n generatorProjectFacilityIndex\r\n ].powerGeneration = this.powerGeneration;\r\n this.onCancelMonthlyGeneration();\r\n }\r\n\r\n public onSelectConsumer(consumerCompanyPremises: any) {\r\n const consumerCompanyPremisesIndex = this.forecastParameter.consumerCompanyPremises.findIndex(\r\n (item) =>\r\n item.consumerCompanyPremisesId ===\r\n consumerCompanyPremises.consumerCompanyPremisesId\r\n );\r\n this.consumerCompanyPremises = this.forecastParameter.consumerCompanyPremises[\r\n consumerCompanyPremisesIndex\r\n ];\r\n this.powerConsumption = this.consumerCompanyPremises.powerConsumption;\r\n this.modalRef = this.modalService.show(this.monthlyConsumptionModal);\r\n }\r\n\r\n public onCancelMonthlyConsumption() {\r\n this.modalRef.hide();\r\n this.powerConsumption = [];\r\n }\r\n\r\n public onSaveMonthlyConsumption() {\r\n const consumerCompanyPremisesIndex = this.forecastParameter.consumerCompanyPremises.findIndex(\r\n (item) =>\r\n item.consumerCompanyPremisesId ===\r\n this.consumerCompanyPremises.consumerCompanyPremisesId\r\n );\r\n this.forecastParameter.consumerCompanyPremises[\r\n consumerCompanyPremisesIndex\r\n ].powerConsumption = this.powerConsumption;\r\n this.onCancelMonthlyConsumption();\r\n }\r\n\r\n public runForecasting() {\r\n this.validatingCriteria = true;\r\n if (this.checkValidToRunForecast()) {\r\n this.errorMessages = [];\r\n this.validToRunForecastErrors = false;\r\n this.modalRef = this.modalService.show(this.runforecastModal);\r\n } else {\r\n this.validatingCriteria = false;\r\n this.validToRunForecastErrors = true;\r\n }\r\n }\r\n\r\n public startForecasting(beginForecasting: boolean) {\r\n if (!beginForecasting) {\r\n this.validatingCriteria = false;\r\n this.modalRef.hide();\r\n } else {\r\n this.modalRef.hide();\r\n this.validatingCriteria = false;\r\n this.forecastService\r\n .startForecasting(this.forecastParameterId)\r\n .subscribe(\r\n (result) => {\r\n this.toaster.success(\r\n this.commonService.handleErrorMessage(result)\r\n );\r\n this.back();\r\n },\r\n (error) => {\r\n this.validatingCriteria = false;\r\n this.toaster.error(\r\n this.commonService.handleErrorMessage(error)\r\n );\r\n }\r\n );\r\n }\r\n }\r\n}\r\n","import { ForecastGeneratorProjectFacilityParameter } from '../../model/forecast-run/forecast-generator-project-facility.parameter';\r\nimport { ForecastConsumerCompanyPremisesParameter } from '../../model/forecast-run/forecast-consumer-company-premises.parameter';\r\nimport { ForecastMonthlyPrepaidParameter } from '../../model/forecast-run/forecast-monthly-prepaid.parameter';\r\nimport { Distributor } from '../../model/distributor.model';\r\n\r\nexport class ForecastParameter {\r\n constructor(\r\n public forecastParameterId: number,\r\n public distributorId: number,\r\n public distributor: string,\r\n public yearToForecastFor: number,\r\n public forecastStartDate: Date,\r\n public forecastEndDate: Date,\r\n public hasForecastRuns: boolean,\r\n public latestForecastStatus: string,\r\n public consumerCompanyPremises: ForecastConsumerCompanyPremisesParameter[],\r\n public generators: ForecastGeneratorProjectFacilityParameter[],\r\n public prepaidPower: ForecastMonthlyPrepaidParameter[]\r\n ) {}\r\n}\r\n","import { debounceTime } from 'rxjs/operators';\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { ForecastService } from '../forecast.service';\r\nimport { Page } from '../../../model/page.model';\r\nimport { DistributorService } from '../../distributor/distributor.service';\r\nimport { CommonService } from '../../../common/common-service';\r\nimport { saveAs as importedSaveAs } from 'file-saver';\r\n\r\n@Component({\r\n selector: 'forecast-run',\r\n templateUrl: './forecast-run.component.html',\r\n styleUrls: ['../../form.styles.scss', './forecast-run.component.scss'],\r\n})\r\nexport class ForecastRunComponent implements OnInit {\r\n public distributors = [];\r\n public errorMessage = '';\r\n public columnHeaders: any[];\r\n public forecastParameterList: any[];\r\n public forecastParameterListPage: Page;\r\n public pageError = '';\r\n public downloadingReport: boolean = false;\r\n private sortProp = {};\r\n private searchForm: FormGroup;\r\n private sortMap: Map;\r\n\r\n constructor(\r\n private router: Router,\r\n private route: ActivatedRoute,\r\n private forecastService: ForecastService,\r\n private distributorService: DistributorService,\r\n private commonService: CommonService\r\n ) {\r\n this.columnHeaders = [\r\n { name: 'Distributor' },\r\n { name: 'ForecastStartDate' },\r\n { name: 'ForecastEndDate' },\r\n { name: 'CreatedDateTime' },\r\n { name: 'CreatedBy' },\r\n ];\r\n this.forecastParameterListPage = new Page();\r\n this.searchForm = new FormGroup({\r\n search: new FormControl(''),\r\n });\r\n this.initSortMap();\r\n this.errorMessage = '';\r\n this.pageError = '';\r\n }\r\n\r\n public ngOnInit(): void {\r\n this.searchForm\r\n .get('search')\r\n .valueChanges.pipe(debounceTime(300))\r\n .subscribe(\r\n () => {\r\n this.changePage({ offset: 0 });\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n this.changePage({ offset: this.forecastParameterListPage.offset });\r\n }\r\n\r\n public fetchDistributors(searchString: string): void {\r\n if (isNullOrUndefined(searchString)) {\r\n searchString = '';\r\n }\r\n this.distributorService\r\n .getAllocationDistributors(searchString)\r\n .subscribe(\r\n (distributors) => {\r\n this.distributors = distributors;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n }\r\n\r\n public viewAllocations(event: any) {\r\n this.router.navigate(['report', 'allocation-forecast']);\r\n }\r\n\r\n public onViewForecast(event: any) {\r\n this.router.navigate([\r\n 'report',\r\n 'forecast',\r\n event.selected[0].forecastParameterId,\r\n ]);\r\n }\r\n\r\n public changePage(pageInfo: any): void {\r\n const searchString = '';\r\n this.forecastParameterListPage.offset =\r\n pageInfo.offset * this.forecastParameterListPage.size;\r\n this.forecastService\r\n .getFoecastParameterList(\r\n searchString,\r\n this.forecastParameterListPage,\r\n this.sortProp\r\n )\r\n .subscribe(\r\n (page) => {\r\n this.forecastParameterListPage.totalPages = Math.ceil(\r\n page.totalItems / page.size\r\n );\r\n this.forecastParameterListPage.totalElements =\r\n page.totalItems;\r\n this.forecastParameterList = page.items;\r\n },\r\n (error) => {\r\n this.pageError = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n }\r\n\r\n public sortColumn(event: any): void {\r\n this.sortProp = {\r\n direction: event.sorts[0].dir,\r\n property: this.sortMap.get(event.sorts[0].prop.toLowerCase()),\r\n };\r\n this.changePage({ offset: 0 });\r\n }\r\n\r\n private initSortMap(): void {\r\n this.sortMap = new Map();\r\n this.sortMap.set('distributor', 'distributor');\r\n this.sortMap.set('forecastStartDate', 'forecastStartDate');\r\n this.sortMap.set('forecastEndDate', 'forecastEndDate');\r\n this.sortMap.set('createdDateTime', 'createdDateTime');\r\n this.sortMap.set('createdBy', 'createdBy');\r\n }\r\n}\r\n","import { debounceTime } from 'rxjs/operators';\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { ForecastService } from '../forecast.service';\r\nimport { Page } from '../../../model/page.model';\r\nimport { DistributorService } from '../../distributor/distributor.service';\r\nimport { AllocationRunService } from '../../allocation/allocation-run/allocation-run.service';\r\nimport { CommonService } from '../../../common/common-service';\r\nimport { saveAs as importedSaveAs } from 'file-saver';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { Subscription } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'allocation-forecast-run',\r\n templateUrl: './allocation-forecast-run.component.html',\r\n styleUrls: [\r\n '../../form.styles.scss',\r\n './allocation-forecast-run.component.scss',\r\n ],\r\n})\r\nexport class AllocationForecastRunComponent implements OnInit {\r\n public distributors = [];\r\n public errorMessage = '';\r\n public columnHeaders: any[];\r\n public allocationRunForecastList: any[];\r\n public allocationRunForecastListPage: Page;\r\n public forecastParameterId: number;\r\n public pageError = '';\r\n public downloadingReport: boolean = false;\r\n private sortProp = {};\r\n private searchForm: FormGroup;\r\n private routeParamsSubscription: Subscription;\r\n private sortMap: Map;\r\n\r\n constructor(\r\n private forecastService: ForecastService,\r\n private distributorService: DistributorService,\r\n private allocationRunService: AllocationRunService,\r\n private commonService: CommonService,\r\n private route: ActivatedRoute,\r\n private router: Router\r\n ) {\r\n this.columnHeaders = [\r\n { name: 'Distributor' },\r\n { name: 'Period' },\r\n { name: 'CreatedDateTime' },\r\n { name: 'TotalGeneration' },\r\n { name: 'TotalPrepaid' },\r\n { name: 'TotalConsumption' },\r\n { name: 'TotalAllocation' },\r\n { name: 'TotalCost' },\r\n { name: 'Delete' },\r\n { name: 'RunStatus' },\r\n { name: 'Progress' },\r\n { name: 'DownloadReport' },\r\n ];\r\n this.allocationRunForecastListPage = new Page();\r\n this.searchForm = new FormGroup({\r\n search: new FormControl(''),\r\n });\r\n this.initSortMap();\r\n\r\n this.forecastParameterId = null;\r\n this.errorMessage = '';\r\n this.pageError = '';\r\n }\r\n\r\n public ngOnInit(): void {\r\n this.searchForm\r\n .get('search')\r\n .valueChanges.pipe(debounceTime(300))\r\n .subscribe(\r\n () => {\r\n this.changePage({ offset: 0 });\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n\r\n this.routeParamsSubscription = this.route.params.subscribe(\r\n (params) => {\r\n if (!isNullOrUndefined(params.forecastParameterId)) {\r\n this.forecastParameterId = +params.forecastParameterId;\r\n this.changePage({\r\n offset: this.allocationRunForecastListPage.offset,\r\n });\r\n }\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n }\r\n\r\n public fetchDistributors(searchString: string): void {\r\n if (isNullOrUndefined(searchString)) {\r\n searchString = '';\r\n }\r\n this.distributorService\r\n .getAllocationDistributors(searchString)\r\n .subscribe(\r\n (distributors) => {\r\n this.distributors = distributors;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n }\r\n\r\n public changePage(pageInfo: any): void {\r\n const searchString = '';\r\n this.allocationRunForecastListPage.offset =\r\n pageInfo.offset * this.allocationRunForecastListPage.size;\r\n this.forecastService\r\n .getAllocationHistory(\r\n searchString,\r\n this.allocationRunForecastListPage,\r\n this.sortProp,\r\n this.forecastParameterId\r\n )\r\n .subscribe(\r\n (page) => {\r\n this.allocationRunForecastListPage.totalPages = Math.ceil(\r\n page.totalItems / page.size\r\n );\r\n this.allocationRunForecastListPage.totalElements =\r\n page.totalItems;\r\n this.allocationRunForecastList = page.items;\r\n },\r\n (error) => {\r\n this.pageError = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n }\r\n\r\n public sortColumn(event: any): void {\r\n this.sortProp = {\r\n direction: event.sorts[0].dir,\r\n property: this.sortMap.get(event.sorts[0].prop.toLowerCase()),\r\n };\r\n this.changePage({ offset: 0 });\r\n }\r\n\r\n public onGenerateForecastReport(row: any) {\r\n const reportName = `Forecast report ${\r\n row.distributor\r\n } - ${row.startDate.substr(0, 7)}.xls`;\r\n this.downloadingReport = true;\r\n this.forecastService\r\n .getForecastReportByForecastRunParameterId(\r\n row.forecastRunParameterId\r\n )\r\n .subscribe(\r\n (response) => {\r\n importedSaveAs(response, reportName);\r\n this.downloadingReport = false;\r\n },\r\n () => {\r\n this.errorMessage = this.commonService.handleDocumentErrorMessage(\r\n 'full forecast report'\r\n );\r\n this.downloadingReport = false;\r\n }\r\n );\r\n }\r\n\r\n public exportFullAllocation(row: any): void {\r\n this.downloadingReport = true;\r\n this.allocationRunService\r\n .getExcelExportForecast(row.allocationRunId)\r\n .subscribe(\r\n (blob) => {\r\n importedSaveAs(blob, 'AllocationRunForecastExport.csv');\r\n this.downloadingReport = false;\r\n },\r\n () => {\r\n this.errorMessage = this.commonService.handleDocumentErrorMessage(\r\n 'allocation run forecast export'\r\n );\r\n this.downloadingReport = false;\r\n }\r\n );\r\n }\r\n\r\n private initSortMap(): void {\r\n this.sortMap = new Map();\r\n this.sortMap.set('distributor', 'Distributor.Name');\r\n this.sortMap.set('startdate', 'startDateTime');\r\n this.sortMap.set('createddatetime', 'CreatedDateTime');\r\n this.sortMap.set('totalallocation', 'TotalPowerAllocatedKWh');\r\n this.sortMap.set('totalgeneration', 'TotalPowerGeneratedKWh');\r\n this.sortMap.set('totalconsumption', 'TotalPowerConsumedKWh');\r\n this.sortMap.set('totalcost', 'TotalCostKWh');\r\n this.sortMap.set('runstatus', 'AllocationRunStatus.Value');\r\n this.sortMap.set('progress', 'progress');\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\n\r\n@Injectable()\r\nexport class ConsumerSalesReportService {\r\n constructor(private httpClient: HttpClient) {}\r\n\r\n public getExcelConsumerSalesSummaryExport(): Observable {\r\n return this.httpClient\r\n .get(API_URL + 'export/ConsumerSalesReportExport', {\r\n responseType: 'blob',\r\n })\r\n .pipe(\r\n map((response) => {\r\n return response;\r\n })\r\n );\r\n }\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { ConsumerSalesReportService } from './consumer-sales-report.service';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { CommonService } from '../../../common/common-service';\r\nimport { saveAs as importedSaveAs } from 'file-saver';\r\n\r\n@Component({\r\n selector: 'consumer-sales-reports',\r\n templateUrl: './consumer-sales-reports.component.html',\r\n styleUrls: [\r\n '../../form.styles.scss',\r\n './consumer-sales-reports.component.scss',\r\n ],\r\n})\r\nexport class ConsumerSalesReportsComponent {\r\n public errorMessage: string;\r\n public downloadingConsumerSalesReport: boolean = false;\r\n\r\n constructor(\r\n private consumerSalesReportService: ConsumerSalesReportService,\r\n private toaster: ToastrService,\r\n private commonService: CommonService\r\n ) {}\r\n\r\n public onDownloadConsumerSalesReport() {\r\n this.downloadingConsumerSalesReport = true;\r\n this.toaster.info('Processing consumer sales report');\r\n this.consumerSalesReportService\r\n .getExcelConsumerSalesSummaryExport()\r\n .subscribe(\r\n (response) => {\r\n importedSaveAs(response, 'ConsumerSalesReport.csv');\r\n this.toaster.success('Downloaded consumer sales report');\r\n this.downloadingConsumerSalesReport = false;\r\n },\r\n () => {\r\n this.errorMessage = this.commonService.handleDocumentErrorMessage(\r\n 'Consumer Sales Report'\r\n );\r\n this.toaster.error(\r\n 'An error occurred while attempting to retrieve the consumer sales report'\r\n );\r\n this.downloadingConsumerSalesReport = false;\r\n }\r\n );\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\n\r\n@Injectable()\r\nexport class GeneratorReportService {\r\n constructor(private httpClient: HttpClient) {}\r\n\r\n public getExcelGeneratorSummaryExport(): Observable {\r\n return this.httpClient\r\n .get(API_URL + 'export/GeneratorReportExport', {\r\n responseType: 'blob',\r\n })\r\n .pipe(\r\n map((response) => {\r\n return response;\r\n })\r\n );\r\n }\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { GeneratorReportService } from './generator-report.service';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { CommonService } from '../../../common/common-service';\r\nimport { saveAs as importedSaveAs } from 'file-saver';\r\n\r\n@Component({\r\n selector: 'generator-reports',\r\n templateUrl: './generator-reports.component.html',\r\n styleUrls: ['../../form.styles.scss', './generator-reports.component.scss'],\r\n})\r\nexport class GeneratorReportsComponent {\r\n public errorMessage: string;\r\n public downloadingGeneratorReport: boolean = false;\r\n\r\n constructor(\r\n private generatorReportService: GeneratorReportService,\r\n private toaster: ToastrService,\r\n private commonService: CommonService\r\n ) {}\r\n\r\n public onDownloadGeneratorReport() {\r\n this.downloadingGeneratorReport = true;\r\n this.toaster.info('Processing Generator report');\r\n this.generatorReportService.getExcelGeneratorSummaryExport().subscribe(\r\n (response) => {\r\n importedSaveAs(response, 'GeneratorReport.csv');\r\n this.toaster.success('Downloaded Generator report');\r\n this.downloadingGeneratorReport = false;\r\n },\r\n () => {\r\n this.errorMessage = this.commonService.handleDocumentErrorMessage(\r\n 'Generator Report'\r\n );\r\n this.toaster.error(\r\n 'An error occurred while attempting to retrieve the Generator report'\r\n );\r\n this.downloadingGeneratorReport = false;\r\n }\r\n );\r\n }\r\n}\r\n","import { map } from 'rxjs/operators';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { HttpClient, HttpResponse } from '@angular/common/http';\r\nimport { Page } from '../../model/page.model';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { AllocationWarningAccordion } from '../../model/allocation/allocation-warning-accordion.model';\r\nimport { AllocationSendWarning } from '../../model/allocation/allocation-send-warning.model';\r\nimport { AllocationErrorAccordion } from '../../model/allocation/allocation-error-accordion.model';\r\nimport { AppModule } from 'app/app.module';\r\nimport { Subject } from 'rxjs';\r\n\r\n@Injectable()\r\nexport class InvoiceService {\r\n public refreshSubject = new Subject();\r\n public refresh$ = this.refreshSubject.asObservable();\r\n\r\n constructor(private http: HttpClient) {}\r\n\r\n // Observable to notify subscribers when a refresh is needed\r\n\r\n public triggerRefresh() {\r\n this.refreshSubject.next();\r\n }\r\n\r\n public createInvoiceBatch(\r\n distributorId: number,\r\n year: number,\r\n month: number,\r\n invoiceTypeLookUpId: number,\r\n note: string\r\n ): Observable {\r\n return this.http.post(API_URL + 'Invoice/CreateInvoiceBatch', {\r\n distributorId,\r\n year,\r\n month,\r\n invoiceTypeLookUpId,\r\n note,\r\n });\r\n }\r\n\r\n public createInvoice(\r\n consumerCompanyPremiseId: number,\r\n invoiceBatchId: number,\r\n period: Date,\r\n credit: any\r\n ): Observable {\r\n return this.http.post(API_URL + 'Invoice/CreateInvoice', {\r\n consumerCompanyPremiseId,\r\n invoiceBatchId,\r\n credit,\r\n period,\r\n });\r\n }\r\n\r\n public updateInvoiceItem(invoiceItem: any): Observable {\r\n return this.http.post(\r\n API_URL + 'Invoice/UpdateInvoiceLine',\r\n invoiceItem\r\n );\r\n }\r\n\r\n public enableInvoiceEmailSending(\r\n invoiceId: number,\r\n include: any\r\n ): Observable {\r\n return this.http.get(\r\n API_URL +\r\n 'invoice/EnableInvoiceEmailSending?invoiceId=' +\r\n invoiceId +\r\n '&include=' +\r\n include\r\n );\r\n }\r\n\r\n public deleteInvoice(invoiceId: number): Observable {\r\n return this.http.get(\r\n API_URL + 'Invoice/DeleteInvoice?invoiceId=' + invoiceId\r\n );\r\n }\r\n public postInvoiceBatch(invoiceBatchId: number): Observable {\r\n return this.http.get(\r\n API_URL +\r\n 'Invoice/PostInvoiceBatch?invoiceBatchId=' +\r\n invoiceBatchId\r\n );\r\n }\r\n public getInvoiceLines(invoiceId: number): Observable {\r\n return this.http.get(\r\n API_URL + 'Invoice/GetInvoiceLines?invoiceId=' + invoiceId\r\n );\r\n }\r\n public getInvoiceBatchHistory(\r\n searchString: string,\r\n page: Page,\r\n sortProp: any\r\n ): Observable {\r\n if (isNullOrUndefined(sortProp.direction)) {\r\n sortProp.direction = '';\r\n }\r\n if (isNullOrUndefined(sortProp.property)) {\r\n sortProp.property = '';\r\n }\r\n return this.http.get(\r\n API_URL +\r\n 'Invoice/GetInvoiceBatchHistory?searchString=' +\r\n searchString +\r\n '&offset=' +\r\n page.offset +\r\n '&pageSize=' +\r\n page.size +\r\n '&sortDirection=' +\r\n sortProp.direction +\r\n '&sortProperty=' +\r\n sortProp.property\r\n );\r\n }\r\n\r\n public getInvoiceList(\r\n invoiceBatchId: number,\r\n searchString: string,\r\n page: Page,\r\n sortProp: any,\r\n credit: any\r\n ): Observable {\r\n if (isNullOrUndefined(sortProp.direction)) {\r\n sortProp.direction = '';\r\n }\r\n if (isNullOrUndefined(sortProp.property)) {\r\n sortProp.property = '';\r\n }\r\n return this.http.get(\r\n API_URL +\r\n 'Invoice/GetInvoiceList?invoiceBatchId=' +\r\n invoiceBatchId +\r\n '&searchString=' +\r\n searchString +\r\n '&offset=' +\r\n page.offset +\r\n '&pageSize=' +\r\n page.size +\r\n '&sortDirection=' +\r\n sortProp.direction +\r\n '&sortProperty=' +\r\n sortProp.property +\r\n '&credit=' +\r\n credit\r\n );\r\n }\r\n\r\n public sendAllocationDataToPTSi(allocationRunId: number): Observable {\r\n return this.http.get(\r\n API_URL +\r\n 'allocation/SendAllocation?allocationRunId=' +\r\n allocationRunId\r\n );\r\n }\r\n\r\n public getInvoiceTypes(): Observable {\r\n return this.http.get(API_URL + 'invoice/GetInvoiceTypes');\r\n }\r\n\r\n public getInvoiceBatch(invoiceBatchId: number): Observable {\r\n return this.http.get(\r\n API_URL + 'invoice/GetInvoiceBatch?invoiceBatchId=' + invoiceBatchId\r\n );\r\n }\r\n\r\n public getDetailInvoiceBatch(invoiceBatchId: number): Observable {\r\n return this.http.get(\r\n API_URL +\r\n 'invoice/GetDetailInvoiceBatch?invoiceBatchId=' +\r\n invoiceBatchId\r\n );\r\n }\r\n\r\n public markInvoicePaid(invoiceId: number, paid: any): Observable {\r\n return this.http.get(\r\n API_URL +\r\n 'invoice/MarkInvoicePaid?invoiceId=' +\r\n invoiceId +\r\n '&paid=' +\r\n paid\r\n );\r\n }\r\n\r\n public addInvoicePayment(\r\n invoiceId: number,\r\n amount: number,\r\n paid: any\r\n ): Observable {\r\n return this.http.get(\r\n API_URL +\r\n 'invoice/MarkInvoicePaid?invoiceId=' +\r\n invoiceId +\r\n '&paid=' +\r\n paid +\r\n '&amountPaid=' +\r\n amount\r\n );\r\n }\r\n\r\n public markAllInvoicePaid(\r\n invoiceBatchId: number,\r\n paid: any\r\n ): Observable {\r\n return this.http.get(\r\n API_URL +\r\n 'invoice/MarkAllBatchPaid?invoiceBatchId=' +\r\n invoiceBatchId +\r\n '&paid=' +\r\n paid\r\n );\r\n }\r\n\r\n public updateInvoiceLineInclusion(\r\n invoiceItemId: number,\r\n include: any\r\n ): Observable {\r\n return this.http.get(\r\n API_URL +\r\n 'invoice/UpdateInvoiceLineInclusion?invoiceItemId=' +\r\n invoiceItemId +\r\n '&include=' +\r\n include\r\n );\r\n }\r\n\r\n public getAllocationWarnings(\r\n allocationRunId: number\r\n ): Observable {\r\n return this.http\r\n .get(\r\n API_URL +\r\n 'allocation/GetWarnings?allocationRunI=' +\r\n allocationRunId\r\n )\r\n .pipe(\r\n map((response: HttpResponse) => {\r\n const allocationWarnings = [];\r\n for (const prop in response) {\r\n if (response) {\r\n allocationWarnings.push(\r\n new AllocationWarningAccordion(\r\n prop,\r\n response[prop]\r\n )\r\n );\r\n }\r\n }\r\n return allocationWarnings;\r\n })\r\n );\r\n }\r\n\r\n public sendConsumerInvoiceEmails(invoiceBatchId: number): Observable {\r\n return this.http.get(\r\n API_URL +\r\n 'invoice/SendConsumerInvoiceEmails?invoiceBatchId=' +\r\n invoiceBatchId\r\n );\r\n }\r\n\r\n public getConsumerInvoiceEmailLogs(\r\n invoiceBatchId: number\r\n ): Observable {\r\n return this.http.get(\r\n API_URL +\r\n 'invoice/GetConsumerInvoiceEmailLogs?invoiceBatchId=' +\r\n invoiceBatchId\r\n );\r\n }\r\n\r\n public getAllocationSendWarnings(\r\n allocationRunId: number\r\n ): Observable {\r\n return this.http\r\n .get(\r\n API_URL +\r\n 'allocation/GetSendWarnings?allocationRunId=' +\r\n allocationRunId\r\n )\r\n .pipe(\r\n map((response: HttpResponse) => {\r\n const allocationSendWarnings = [];\r\n for (const prop in response) {\r\n if (response) {\r\n allocationSendWarnings.push(\r\n new AllocationSendWarning(prop, response[prop])\r\n );\r\n }\r\n }\r\n return allocationSendWarnings;\r\n })\r\n );\r\n }\r\n\r\n public getAllocationErrors(\r\n allocationRunId: number\r\n ): Observable {\r\n return this.http\r\n .get(\r\n API_URL +\r\n 'allocation/GetErrors?allocationRunId=' +\r\n allocationRunId\r\n )\r\n .pipe(\r\n map((response: HttpResponse) => {\r\n const allocationErrors = [];\r\n for (const prop in response) {\r\n if (response) {\r\n allocationErrors.push(\r\n new AllocationErrorAccordion(\r\n prop,\r\n response[prop]\r\n )\r\n );\r\n }\r\n }\r\n return allocationErrors;\r\n })\r\n );\r\n }\r\n\r\n public getAllocationSummary(\r\n allocationRunId: number,\r\n searchString: string,\r\n page: Page,\r\n sortProp: any\r\n ): Observable {\r\n if (!allocationRunId) {\r\n allocationRunId = 0;\r\n }\r\n if (isNullOrUndefined(sortProp.direction)) {\r\n sortProp.direction = '';\r\n }\r\n if (isNullOrUndefined(sortProp.property)) {\r\n sortProp.property = '';\r\n }\r\n return this.http.get(\r\n API_URL +\r\n 'allocation/GetSummary?allocationRunId=' +\r\n allocationRunId +\r\n '&searchString=' +\r\n searchString +\r\n '&offset=' +\r\n page.offset +\r\n '&pageSize=' +\r\n page.size +\r\n '&sortDirection=' +\r\n sortProp.direction +\r\n '&sortProperty=' +\r\n sortProp.property\r\n );\r\n }\r\n public getExcelExport(allocationRunId: number): Observable {\r\n return this.http\r\n .get(API_URL + 'export/Excel?allocationRunId=' + allocationRunId, {\r\n responseType: 'blob',\r\n })\r\n .pipe(\r\n map((response) => {\r\n return response;\r\n })\r\n );\r\n }\r\n public getExcelExportForecast(allocationRunId: number): Observable {\r\n return this.http\r\n .get(\r\n API_URL +\r\n 'export/ExcelForecasting?allocationRunId=' +\r\n allocationRunId,\r\n { responseType: 'blob' }\r\n )\r\n .pipe(\r\n map((response) => {\r\n return response;\r\n })\r\n );\r\n }\r\n public getExcelSnapshotExport(allocationRunId: number): Observable {\r\n return this.http\r\n .get(\r\n API_URL +\r\n 'export/SnapshotExcel?allocationRunId=' +\r\n allocationRunId,\r\n { responseType: 'blob' }\r\n )\r\n .pipe(\r\n map((response) => {\r\n return response;\r\n })\r\n );\r\n }\r\n public getExcelSummaryExport(allocationRunId: number): Observable {\r\n return this.http\r\n .get(\r\n API_URL +\r\n 'export/SummaryExport?allocationRunId=' +\r\n allocationRunId,\r\n { responseType: 'blob' }\r\n )\r\n .pipe(\r\n map((response) => {\r\n return response;\r\n })\r\n );\r\n }\r\n public getRecs(allocationRunId: number): Observable {\r\n return this.http.get(\r\n API_URL +\r\n 'recs/GetLatestRecsCounter?allocationRunId=' +\r\n allocationRunId\r\n );\r\n }\r\n\r\n public getRecsPage(\r\n allocationRunId: number,\r\n searchString: string,\r\n page: Page,\r\n sortProp: any\r\n ): Observable {\r\n if (isNullOrUndefined(sortProp.direction)) {\r\n sortProp.direction = '';\r\n }\r\n if (isNullOrUndefined(sortProp.property)) {\r\n sortProp.property = '';\r\n }\r\n return this.http.get(\r\n API_URL +\r\n 'Recs/GetPage?allocationRunId=' +\r\n allocationRunId +\r\n '&searchString=' +\r\n searchString +\r\n '&offset=' +\r\n page.offset +\r\n '&pageSize=' +\r\n page.size +\r\n '&sortDirection=' +\r\n sortProp.direction +\r\n '&sortProperty=' +\r\n sortProp.property\r\n );\r\n }\r\n\r\n public runRecsAllocation(allocationRunId: number): Observable {\r\n return this.http.get(\r\n API_URL +\r\n 'Recs/RunRecsAllocation?allocationRunId=' +\r\n allocationRunId\r\n );\r\n }\r\n\r\n public getAllocationRunSummary(allocationRunId: number): Observable {\r\n return this.http.get(\r\n API_URL +\r\n 'AllocationRun/GetAllocationRunSummary?allocationRunId=' +\r\n allocationRunId\r\n );\r\n }\r\n\r\n public getAllocationRunPowerSummary(\r\n allocationRunId: number\r\n ): Observable {\r\n return this.http.get(\r\n API_URL +\r\n 'AllocationRun/GetAllocationRunPowerSummary?allocationRunId=' +\r\n allocationRunId\r\n );\r\n }\r\n\r\n public getAllocationRunPowerPerTechnologySummary(\r\n allocationRunId: number\r\n ): Observable {\r\n return this.http.get(\r\n API_URL +\r\n 'AllocationRun/GetAllocationRunPowerPerTechnologySummary?allocationRunId=' +\r\n allocationRunId\r\n );\r\n }\r\n\r\n public getAllocationRunPowerPerTariffSummary(\r\n allocationRunId: number\r\n ): Observable {\r\n return this.http.get(\r\n API_URL +\r\n 'AllocationRun/GetAllocationRunPowerPerTariffSummary?allocationRunId=' +\r\n allocationRunId\r\n );\r\n }\r\n\r\n public getAllocationRunRevenuePerTariffSummary(\r\n allocationRunId: number\r\n ): Observable {\r\n return this.http.get(\r\n API_URL +\r\n 'AllocationRun/GetAllocationRunRevenuePerTariffSummary?allocationRunId=' +\r\n allocationRunId\r\n );\r\n }\r\n\r\n public getAllocationRunTariffSaleRatesSummary(\r\n allocationRunId: number\r\n ): Observable {\r\n return this.http.get(\r\n API_URL +\r\n 'AllocationRun/GetAllocationRunTariffSaleRatesSummary?allocationRunId=' +\r\n allocationRunId\r\n );\r\n }\r\n\r\n public getAllocationRunRevenuePerEnergyBracketSummary(\r\n allocationRunId: number\r\n ): Observable {\r\n return this.http.get(\r\n API_URL +\r\n 'AllocationRun/GetAllocationRunRevenuePerEnergyBracketSummary?allocationRunId=' +\r\n allocationRunId\r\n );\r\n }\r\n\r\n public getAllocationRunWarningSummary(\r\n allocationRunId: number\r\n ): Observable {\r\n return this.http.get(\r\n API_URL +\r\n 'AllocationRun/GetAllocationRunWarningSummary?allocationRunId=' +\r\n allocationRunId\r\n );\r\n }\r\n\r\n public getAllocationRunErrorSummary(\r\n allocationRunId: number\r\n ): Observable {\r\n return this.http.get(\r\n API_URL +\r\n 'AllocationRun/GetAllocationRunErrorSummary?allocationRunId=' +\r\n allocationRunId\r\n );\r\n }\r\n\r\n public getAllocationRun(allocationRunId: number): Observable {\r\n return this.http.get(\r\n API_URL +\r\n 'AllocationRun/GetAllocationRun?allocationRunId=' +\r\n allocationRunId\r\n );\r\n }\r\n\r\n public getConsumerInvoice(invoiceId: number): Observable {\r\n return this.http\r\n .get(\r\n API_URL + 'Invoice/DownloadInvoice' + '?invoiceId=' + invoiceId,\r\n { responseType: 'blob' }\r\n )\r\n .pipe(map((response) => response));\r\n }\r\n\r\n public getConsumerProformaInvoice(\r\n allocationRunId: number,\r\n consumerCompanyPremisesId: number\r\n ): Observable {\r\n return this.http\r\n .get(\r\n API_URL +\r\n 'AllocationRun/DownloadConsumerProformaInvoice' +\r\n '?allocationRunId=' +\r\n allocationRunId +\r\n '&consumerCompanyPremisesId=' +\r\n consumerCompanyPremisesId,\r\n { responseType: 'blob' }\r\n )\r\n .pipe(map((response) => response));\r\n }\r\n\r\n public getConsumerStatement(\r\n consumerCompanyPremisesId: number\r\n ): Observable {\r\n return this.http\r\n .get(\r\n API_URL +\r\n 'Invoice/DownloadConsumerStatement' +\r\n '?consumerCompanyPremisesId=' +\r\n consumerCompanyPremisesId,\r\n { responseType: 'blob' }\r\n )\r\n .pipe(map((response) => response));\r\n }\r\n\r\n public getAllocationPrepaidRevenue(\r\n allocationRunId: number\r\n ): Observable {\r\n return this.http.get(\r\n API_URL +\r\n 'AllocationRun/GetAllocationPrepaidRevenue?allocationRunId=' +\r\n allocationRunId\r\n );\r\n }\r\n\r\n public updateAllocationPrepaidRevenue(\r\n allocationPrepaidRevenueList: any\r\n ): Observable {\r\n return this.http.post(\r\n API_URL + 'AllocationRun/UpdateAllocationPrepaidRevenueList?',\r\n allocationPrepaidRevenueList\r\n );\r\n }\r\n\r\n public resendConsumerInvoiceEmails(\r\n allocationRunId: number\r\n ): Observable {\r\n return this.http.get(\r\n API_URL +\r\n 'allocationRun/ResendConsumerInvoiceEmails?allocationRunId=' +\r\n allocationRunId\r\n );\r\n }\r\n\r\n public deleteAllocationRun(allocationRunId: number): Observable {\r\n return this.http.delete(\r\n API_URL +\r\n 'allocationRun/DeleteAllocationRun?allocationRunId=' +\r\n allocationRunId\r\n );\r\n }\r\n\r\n public markAllocationRunForDeletion(\r\n allocationRunId: number\r\n ): Observable {\r\n return this.http.get(\r\n API_URL +\r\n 'allocationRun/MarkAllocationRunForDeletion?allocationRunId=' +\r\n allocationRunId\r\n );\r\n }\r\n\r\n public getPurchaseAndSalesRate(allocationRunId: number): Observable {\r\n return this.http.get(\r\n API_URL +\r\n 'allocationRun/GetPurchaseAndSalesRate?allocationRunId=' +\r\n allocationRunId\r\n );\r\n }\r\n\r\n public updateAllocationRunConsumer(\r\n allocationRunId: number,\r\n allocationConsumerId: number,\r\n poNumber: number,\r\n sendInvoice: boolean,\r\n paid: boolean,\r\n amountPaid: number\r\n ): Observable {\r\n return this.http.post(\r\n API_URL + 'allocationRun/UpdateAllocationRunConsumer',\r\n {\r\n allocationRunId,\r\n AllocationConsumerId: allocationConsumerId,\r\n poNumber,\r\n sendInvoice,\r\n paid,\r\n amountPaid,\r\n }\r\n );\r\n }\r\n\r\n public SetAllocationRunConsumerStatementsToPaidIfNotPaid(\r\n allocationRunId: number\r\n ): Observable {\r\n return this.http.post(\r\n API_URL +\r\n 'allocationRun/SetAllocationRunConsumerStatementsToPaidIfNotPaid',\r\n { allocationRunId }\r\n );\r\n }\r\n\r\n public getSAPExport(batchId: number, credit: boolean): Observable {\r\n return this.http\r\n .get(\r\n API_URL +\r\n 'invoice/SapExport?batchId=' +\r\n batchId +\r\n '&credit=' +\r\n credit,\r\n { responseType: 'blob' }\r\n )\r\n .pipe(map((response) => response));\r\n }\r\n\r\n public getBatchSummary(batchId: number): Observable {\r\n return this.http\r\n .get(API_URL + 'invoice/getBatchSummary?batchId=' + batchId, {\r\n responseType: 'blob',\r\n })\r\n .pipe(map((response) => response));\r\n }\r\n}\r\n","import { debounceTime } from 'rxjs/operators';\r\nimport {\r\n Component,\r\n OnDestroy,\r\n OnInit,\r\n ElementRef,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { InvoiceService } from '../invoice.service';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { Subscription } from 'rxjs';\r\nimport { Page } from '../../../model/page.model';\r\nimport { DistributorService } from '../../distributor/distributor.service';\r\nimport { DateConverterService } from '../../../widget/date-converter/date-converter.service';\r\nimport { EntityLookup } from '../../../model/entity-lookup.model';\r\nimport { CommonService } from '../../../common/common-service';\r\nimport { ComponentTriggersService } from '../../../common/component-triggers.service';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { AuthorisationService } from '../../../authorisation-service/authorisation.service';\r\nimport { BsModalService } from 'ngx-bootstrap/modal';\r\nimport { BsModalRef } from 'ngx-bootstrap';\r\n@Component({\r\n selector: 'invoice-batch-summary',\r\n templateUrl: './invoice-batch-summary.component.html',\r\n styleUrls: [\r\n '../../form.styles.scss',\r\n './invoice-batch-summary.component.scss',\r\n ],\r\n})\r\nexport class InvoiceBatchSummaryComponent implements OnInit, OnDestroy {\r\n public modalRef: BsModalRef;\r\n @ViewChild('template')\r\n public template: ElementRef;\r\n\r\n public distributors = [];\r\n public months: EntityLookup[];\r\n public types: any[];\r\n public invoiceForm: FormGroup;\r\n public errorMessage = '';\r\n public creatingInvoiceBatch = false;\r\n public sendingAllocation = false;\r\n public columnHeaders: any[];\r\n public invoiceBatchHistory: any[];\r\n public historyPage: Page;\r\n public historyError = '';\r\n public setPrepaidValue = false;\r\n public loadingRunCriteria = false;\r\n public loading = false;\r\n public isReadOnlyMode = true;\r\n public isAllocationsFinalizeReadOnly: boolean = true;\r\n private queryParamsSubscription: Subscription;\r\n private sortProp = {};\r\n private searchForm: FormGroup;\r\n private invoiceBatchNote: any;\r\n\r\n private sortMap: Map;\r\n\r\n constructor(\r\n private router: Router,\r\n private modalService: BsModalService,\r\n private invoiceService: InvoiceService,\r\n private sanitizer: DomSanitizer,\r\n private route: ActivatedRoute,\r\n private distributorService: DistributorService,\r\n private dateConverterService: DateConverterService,\r\n private commonService: CommonService,\r\n private authorisationService: AuthorisationService,\r\n private componentTriggerService: ComponentTriggersService,\r\n private toaster: ToastrService\r\n ) {\r\n this.columnHeaders = [\r\n { name: 'Distributor' },\r\n { name: 'Period' },\r\n { name: 'CreatedDateTime' },\r\n { name: 'TotalGeneration' },\r\n { name: 'TotalPrepaid' },\r\n { name: 'TotalConsumption' },\r\n { name: 'TotalAllocation' },\r\n { name: 'TotalCost' },\r\n { name: 'Delete' },\r\n { name: 'SendingId' },\r\n { name: 'ImportStatus' },\r\n { name: 'RunStatus' },\r\n { name: 'Note' },\r\n { name: 'CalculateRecs' },\r\n ];\r\n this.historyPage = new Page();\r\n this.searchForm = new FormGroup({\r\n search: new FormControl(''),\r\n });\r\n this.initSortMap();\r\n }\r\n\r\n public ngOnInit(): void {\r\n this.loadingRunCriteria = true;\r\n const today = new Date();\r\n this.invoiceForm = new FormGroup({\r\n distributorName: new FormControl('', [Validators.required]),\r\n distributorId: new FormControl(null),\r\n year: new FormControl(today.getFullYear(), [\r\n Validators.required,\r\n Validators.min(2000),\r\n Validators.max(today.getFullYear()),\r\n ]),\r\n monthLookupId: new FormControl(null, [Validators.required]),\r\n invoiceTypeId: new FormControl(null, [Validators.required]),\r\n note: new FormControl(),\r\n });\r\n this.isReadOnlyMode = this.authorisationService.isAllocationsReadOnly();\r\n this.isAllocationsFinalizeReadOnly = this.authorisationService.isAllocationsFinalizeReadOnly();\r\n if (this.isReadOnlyMode) {\r\n this.invoiceForm.disable();\r\n }\r\n this.invoiceForm\r\n .get('distributorName')\r\n .valueChanges.pipe(debounceTime(300))\r\n .subscribe(\r\n (searchString) => {\r\n this.fetchDistributors(searchString);\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loadingRunCriteria = false;\r\n }\r\n );\r\n this.queryParamsSubscription = this.route.queryParams.subscribe(\r\n (params) => {\r\n if (params['distributorId']) {\r\n this.invoiceForm\r\n .get('distributorId')\r\n .patchValue(+params['distributorId']);\r\n const distributorId = +params['distributorId'];\r\n this.distributorService\r\n .getDistributor(distributorId)\r\n .subscribe(\r\n (distributor) => {\r\n this.invoiceForm\r\n .get('distributorName')\r\n .patchValue(distributor.name);\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loadingRunCriteria = false;\r\n }\r\n );\r\n }\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loadingRunCriteria = false;\r\n }\r\n );\r\n this.searchForm\r\n .get('search')\r\n .valueChanges.pipe(debounceTime(300))\r\n .subscribe(\r\n () => {\r\n this.changePage({ offset: 0 });\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n this.commonService.getEntityLookups(['Month']).subscribe(\r\n (response) => {\r\n this.months = response.entityLookupResultList['month'];\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loadingRunCriteria = false;\r\n }\r\n );\r\n this.invoiceService.getInvoiceTypes().subscribe(\r\n (response) => {\r\n this.types = response;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loadingRunCriteria = false;\r\n }\r\n );\r\n this.changePage({ offset: this.historyPage.offset });\r\n this.loadingRunCriteria = false;\r\n }\r\n public setPrepaid(): void {\r\n this.setPrepaidValue = !this.setPrepaidValue;\r\n }\r\n public ngOnDestroy(): void {\r\n if (!isNullOrUndefined(this.queryParamsSubscription)) {\r\n this.queryParamsSubscription.unsubscribe();\r\n }\r\n }\r\n\r\n public fetchDistributors(searchString: string): void {\r\n if (isNullOrUndefined(searchString)) {\r\n searchString = '';\r\n }\r\n this.distributorService\r\n .getAllocationDistributors(searchString)\r\n .subscribe(\r\n (distributors) => {\r\n this.distributors = distributors;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loadingRunCriteria = false;\r\n }\r\n );\r\n }\r\n\r\n public goToParameters(): void {\r\n if (isNullOrUndefined(this.invoiceForm.get('distributorId').value)) {\r\n this.errorMessage =\r\n 'Please select a distributor before configuring the parameters';\r\n } else {\r\n this.router.navigate([\r\n 'allocation',\r\n this.invoiceForm.get('distributorId').value,\r\n 'parameters',\r\n ]);\r\n }\r\n }\r\n\r\n public selectedDistributor($event: any): void {\r\n this.invoiceForm\r\n .get('distributorId')\r\n .patchValue($event.item.distributorId);\r\n }\r\n\r\n public createInvoiceBatch(): void {\r\n this.commonService.validateAllFormFields(this.invoiceForm);\r\n this.componentTriggerService.triggerValidationMessages.next();\r\n if (this.invoiceForm.valid) {\r\n this.creatingInvoiceBatch = true;\r\n this.errorMessage = '';\r\n const period = new Date(\r\n this.invoiceForm.get('year').value,\r\n this.months.find(\r\n (m) =>\r\n m.entityLookupId ===\r\n this.invoiceForm.get('monthLookupId').value\r\n ).orderPriority - 1,\r\n 1\r\n );\r\n this.invoiceService\r\n .createInvoiceBatch(\r\n this.invoiceForm.get('distributorId').value,\r\n this.invoiceForm.get('year').value,\r\n this.months.find(\r\n (m) =>\r\n m.entityLookupId ===\r\n this.invoiceForm.get('monthLookupId').value\r\n ).orderPriority,\r\n this.invoiceForm.get('invoiceTypeId').value,\r\n this.invoiceForm.get('note').value\r\n )\r\n .subscribe(\r\n () => {\r\n this.creatingInvoiceBatch = false;\r\n this.toaster.success(\r\n 'A new invoice batch has been created'\r\n );\r\n this.changePage({ offset: this.historyPage.offset });\r\n },\r\n (error) => {\r\n this.creatingInvoiceBatch = false;\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.toaster.error(this.errorMessage);\r\n }\r\n );\r\n }\r\n }\r\n\r\n public changePage(pageInfo: any): void {\r\n const searchString = this.searchForm.get('search').value;\r\n this.historyPage.offset = pageInfo.offset * this.historyPage.size;\r\n this.loading = true;\r\n this.invoiceService\r\n .getInvoiceBatchHistory(\r\n searchString,\r\n this.historyPage,\r\n this.sortProp\r\n )\r\n .subscribe(\r\n (page) => {\r\n this.historyPage.totalPages = Math.ceil(\r\n page.totalItems / page.size\r\n );\r\n this.historyPage.totalElements = page.totalItems;\r\n this.invoiceBatchHistory = page.items;\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.historyError = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n\r\n public sortColumn(event: any): void {\r\n this.sortProp = {\r\n direction: event.sorts[0].dir,\r\n property: this.sortMap.get(event.sorts[0].prop.toLowerCase()),\r\n };\r\n this.changePage({ offset: 0 });\r\n }\r\n public viewNote(response: any): void {\r\n event.stopPropagation();\r\n this.invoiceBatchNote = response;\r\n this.modalRef = this.modalService.show(this.template);\r\n }\r\n\r\n public onSelect(event: any) {\r\n this.router.navigate([\r\n 'invoices',\r\n 'batch',\r\n event.selected[0].invoiceBatchId,\r\n ]);\r\n }\r\n\r\n public onDeleteRun(allocationRunId: number) {\r\n // NOTE: This is for the onSelect method above to not be called as well,\r\n // since ngx-datatable sees the button click as the row being selected.\r\n event.stopPropagation();\r\n if (confirm('Are you sure you want to delete this invoice batch')) {\r\n this.toaster.info('Deleting invoice batch');\r\n this.invoiceService\r\n .markAllocationRunForDeletion(allocationRunId)\r\n .subscribe(\r\n () => {\r\n this.changePage({ offset: 0 });\r\n this.invoiceService\r\n .deleteAllocationRun(allocationRunId)\r\n .subscribe(\r\n () => {\r\n this.toaster.success(\r\n 'Successfully deleted invoice batch'\r\n );\r\n this.changePage({ offset: 0 });\r\n },\r\n (error) => {\r\n this.toaster.error(\r\n this.commonService.handleErrorMessage(\r\n error\r\n )\r\n );\r\n }\r\n );\r\n },\r\n (error) => {\r\n this.toaster.error(\r\n this.commonService.handleErrorMessage(error)\r\n );\r\n }\r\n );\r\n }\r\n }\r\n\r\n private initSortMap(): void {\r\n this.sortMap = new Map();\r\n this.sortMap.set('distributor', 'Distributor.Name');\r\n this.sortMap.set('startdate', 'startDateTime');\r\n this.sortMap.set('createddatetime', 'CreatedDateTime');\r\n this.sortMap.set('totalallocation', 'TotalPowerAllocatedKWh');\r\n this.sortMap.set('totalgeneration', 'TotalPowerGeneratedKWh');\r\n this.sortMap.set('totalconsumption', 'TotalPowerConsumedKWh');\r\n this.sortMap.set('totalcost', 'TotalCostKWh');\r\n this.sortMap.set('runstatus', 'AllocationRunStatus.Value');\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class InvoiceBatchState {\r\n private searchString: string = '';\r\n private offset: number = 0;\r\n\r\n public setState(searchString: string, offset: number) {\r\n this.offset = offset;\r\n this.searchString = searchString;\r\n }\r\n\r\n public getState() {\r\n return { searchString: this.searchString, offset: this.offset };\r\n }\r\n}\r\n","import {\r\n Component,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n TemplateRef,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { CommonService } from '../../../common/common-service';\r\nimport { EntityLookup } from '../../../model/entity-lookup.model';\r\nimport { BsModalRef } from 'ngx-bootstrap';\r\nimport { BsModalService } from 'ngx-bootstrap/modal';\r\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { InvoiceService } from '../invoice.service';\r\nimport { Page } from '../../../model/page.model';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { ConsumerCompanyService } from '../../consumer-company/consumer-company.service';\r\nimport { debounceTime } from 'rxjs/operators';\r\nimport { ComponentTriggersService } from '../../../common/component-triggers.service';\r\nimport { saveAs as importedSaveAs } from 'file-saver';\r\nimport { Subscription } from 'rxjs';\r\nimport { InvoiceBatchState } from './invoice-batch-state.service';\r\n\r\n@Component({\r\n selector: 'invoice-batch-invoice-list',\r\n templateUrl: './invoice-batch-invoice-list.component.html',\r\n styleUrls: [\r\n '../../form.styles.scss',\r\n './invoice-batch-invoice-list.component.scss',\r\n ],\r\n})\r\nexport class InvoiceBatchInvoiceListComponent implements OnInit, OnDestroy {\r\n @Input('invoiceBatchId')\r\n public invoiceBatchId: number;\r\n @Input('isReadOnlyMode')\r\n public isReadOnlyMode = false;\r\n @Input('credit')\r\n public credit = false;\r\n public isPosted = false;\r\n public submittingInvoice = false;\r\n public distributors = [];\r\n public months: EntityLookup[];\r\n @ViewChild('editInvoiceModal')\r\n public editInvoiceModal: TemplateRef;\r\n public downloadingInvoice: number[] = [];\r\n public loading = false;\r\n public tab = 'invoicing';\r\n public loadingInvoiceLines = false;\r\n public rows: any[];\r\n public invoiceLines: any[];\r\n public consumerCompanies = [];\r\n public errorMessage: string = '';\r\n public submitting: boolean;\r\n public newTariffForm: FormGroup;\r\n public invoiceError = '';\r\n public invoicePage: Page;\r\n public invoiceForm: FormGroup;\r\n public invoiceBatch: any;\r\n public searchForm: FormGroup;\r\n private sortProp = {};\r\n private modalRef: BsModalRef;\r\n private refreshSubscription: Subscription;\r\n\r\n constructor(\r\n private router: Router,\r\n private route: ActivatedRoute,\r\n private invoiceService: InvoiceService,\r\n private consumerCompanyService: ConsumerCompanyService,\r\n private modalService: BsModalService,\r\n private toastr: ToastrService,\r\n private componentTriggerService: ComponentTriggersService,\r\n public commonService: CommonService,\r\n private toaster: ToastrService,\r\n private invoicebatchstate: InvoiceBatchState\r\n ) {\r\n this.invoicePage = new Page();\r\n this.searchForm = new FormGroup({\r\n search: new FormControl(''),\r\n });\r\n }\r\n\r\n public ngOnInit() {\r\n // this.loading = true;\r\n this.refreshSubscription = this.invoiceService.refresh$.subscribe(\r\n () => {\r\n // Perform actions to refresh this sub-component\r\n this.ngOnInit();\r\n }\r\n );\r\n\r\n const invoicestate = this.invoicebatchstate.getState();\r\n this.searchForm.patchValue({ search: invoicestate.searchString });\r\n this.changePage({ offset: invoicestate.offset });\r\n const today = new Date();\r\n if (this.credit) {\r\n this.tab = 'crediting';\r\n }\r\n\r\n this.invoiceForm = new FormGroup({\r\n consumerCompanyPremiseName: new FormControl('', [\r\n Validators.required,\r\n ]),\r\n consumerCompanyPremiseId: new FormControl(null),\r\n year: new FormControl(today.getFullYear(), [\r\n Validators.required,\r\n Validators.min(2000),\r\n Validators.max(today.getFullYear()),\r\n ]),\r\n monthLookupId: new FormControl(null, [Validators.required]),\r\n completeInvoice: new FormControl(true),\r\n });\r\n\r\n this.loading = true;\r\n this.invoiceService.getInvoiceBatch(this.invoiceBatchId).subscribe(\r\n (batch) => {\r\n this.loading = false;\r\n this.invoiceBatch = batch;\r\n this.isPosted = this.invoiceBatch.posted;\r\n },\r\n (error) => {\r\n this.loading = false;\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n\r\n this.invoiceForm\r\n .get('consumerCompanyPremiseName')\r\n .valueChanges.pipe(debounceTime(100))\r\n .subscribe(\r\n (searchString) => {\r\n this.fetchConsumers(searchString);\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n\r\n this.commonService.getEntityLookups(['Month']).subscribe(\r\n (response) => {\r\n this.months = response.entityLookupResultList['month'];\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n\r\n this.searchForm\r\n .get('search')\r\n .valueChanges.pipe(debounceTime(300))\r\n .subscribe(\r\n () => {\r\n this.changePage({ offset: 0 });\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n }\r\n public ngOnDestroy() {\r\n this.refreshSubscription.unsubscribe();\r\n }\r\n public markAsPaid(row: any) {\r\n row.status = 'Processing';\r\n\r\n this.submittingInvoice = true;\r\n this.invoiceService.markInvoicePaid(row.invoiceId, row.paid).subscribe(\r\n (result) => {\r\n this.submittingInvoice = false;\r\n this.changePage({ offset: 0 }, false);\r\n },\r\n (error) => {\r\n this.submittingInvoice = false;\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n }\r\n\r\n public enableInvoiceEmailSending(row: any) {\r\n this.submittingInvoice = true;\r\n this.invoiceService\r\n .enableInvoiceEmailSending(row.invoiceId, row.sendInvoiceEmail)\r\n .subscribe(\r\n (result) => {\r\n this.submittingInvoice = false;\r\n this.changePage({ offset: 0 }, false);\r\n },\r\n (error) => {\r\n this.submittingInvoice = false;\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n }\r\n\r\n public fetchConsumers(searchString: string): void {\r\n if (isNullOrUndefined(searchString)) {\r\n searchString = '';\r\n }\r\n\r\n this.consumerCompanyService\r\n .getConsumersForInvoicing(this.invoiceBatchId, searchString)\r\n .subscribe(\r\n (consumerCompanies) => {\r\n this.consumerCompanies = consumerCompanies;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n }\r\n public selectedCustomer($event: any): void {\r\n this.invoiceForm\r\n .get('consumerCompanyPremiseId')\r\n .patchValue($event.item.consumerCompanyPremisesId);\r\n }\r\n\r\n public downloadInvoice(row: any) {\r\n this.downloadingInvoice.push(row.invoiceId);\r\n this.toastr.info(\r\n 'Downloading consumer invoice for ' + row.consumerPremises\r\n );\r\n this.invoiceService.getConsumerInvoice(row.invoiceId).subscribe(\r\n (blob) => {\r\n this.toastr.success(\r\n 'Downloaded consumer invoice for ' + row.consumerPremises\r\n );\r\n if (this.credit) {\r\n importedSaveAs(\r\n blob,\r\n 'CR_' + row.consumerPremises.replace(' ', '_') + '.pdf'\r\n );\r\n } else {\r\n importedSaveAs(\r\n blob,\r\n 'INV_' + row.consumerPremises.replace(' ', '_') + '.pdf'\r\n );\r\n }\r\n this.downloadingInvoice.splice(\r\n this.downloadingInvoice.indexOf(row.invoiceId),\r\n 1\r\n );\r\n },\r\n (error) => {\r\n this.toastr.error(\r\n isNullOrUndefined(error.body)\r\n ? 'An error occurred while downloading invoice for ' +\r\n row.consumerPremises\r\n : error.body.errorMessage\r\n );\r\n this.downloadingInvoice.splice(\r\n this.downloadingInvoice.indexOf(row.invoiceId),\r\n 1\r\n );\r\n }\r\n );\r\n }\r\n\r\n public downloadStatement(row: any) {\r\n this.downloadingInvoice.push(row.invoiceId);\r\n this.toastr.info(\r\n 'Downloading consumer invoice for ' + row.consumerPremises\r\n );\r\n this.invoiceService\r\n .getConsumerStatement(row.consumerCompanyPremiseId)\r\n .subscribe(\r\n (blob) => {\r\n this.toastr.success(\r\n 'Downloaded consumer invoice for ' +\r\n row.consumerPremises\r\n );\r\n importedSaveAs(\r\n blob,\r\n 'Consumer_Statement_' +\r\n row.consumerPremises.replace(' ', '_') +\r\n '.pdf'\r\n );\r\n this.downloadingInvoice.splice(\r\n this.downloadingInvoice.indexOf(row.invoiceId),\r\n 1\r\n );\r\n },\r\n (error) => {\r\n this.toastr.error(\r\n isNullOrUndefined(error.body)\r\n ? 'An error occurred while downloading invoice for ' +\r\n row.consumerPremises\r\n : error.body.errorMessage\r\n );\r\n this.downloadingInvoice.splice(\r\n this.downloadingInvoice.indexOf(row.invoiceId),\r\n 1\r\n );\r\n }\r\n );\r\n }\r\n\r\n public createInvoice(): void {\r\n this.commonService.validateAllFormFields(this.invoiceForm);\r\n this.componentTriggerService.triggerValidationMessages.next();\r\n if (this.invoiceForm.valid) {\r\n this.submitting = true;\r\n this.errorMessage = '';\r\n const period = new Date(\r\n this.invoiceForm.get('year').value,\r\n this.months.find(\r\n (m) =>\r\n m.entityLookupId ===\r\n this.invoiceForm.get('monthLookupId').value\r\n ).orderPriority - 1,\r\n 1\r\n );\r\n this.invoiceService\r\n .createInvoice(\r\n this.invoiceForm.get('consumerCompanyPremiseId').value,\r\n this.invoiceBatchId,\r\n period,\r\n this.credit\r\n )\r\n .subscribe(\r\n () => {\r\n this.submitting = false;\r\n this.toaster.success('A new invoice has been created');\r\n this.changePage({ offset: 0 });\r\n },\r\n (error) => {\r\n this.submitting = false;\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.toaster.error(this.errorMessage);\r\n }\r\n );\r\n }\r\n }\r\n public deleteInvoice(row: any): void {\r\n if (confirm('Are you sure you want to delete this invoice')) {\r\n this.toastr.info('Deleting allocation run');\r\n\r\n this.loading = true;\r\n this.invoiceService.deleteInvoice(row.invoiceId).subscribe(\r\n () => {\r\n this.loading = false;\r\n this.toaster.success('Invoice deleted');\r\n this.changePage({ offset: this.invoicePage.offset });\r\n },\r\n (error) => {\r\n this.submitting = false;\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.toaster.error(this.errorMessage);\r\n }\r\n );\r\n }\r\n }\r\n\r\n public changePage(pageInfo: any, loading: boolean = true): void {\r\n this.invoicebatchstate.setState(\r\n this.searchForm.get('search').value,\r\n pageInfo.offset\r\n );\r\n const searchString = this.searchForm.get('search').value;\r\n this.loading = loading;\r\n this.invoicePage.offset = pageInfo.offset * this.invoicePage.size;\r\n this.invoiceService\r\n .getInvoiceList(\r\n this.invoiceBatchId,\r\n searchString,\r\n this.invoicePage,\r\n this.sortProp,\r\n this.credit\r\n )\r\n .subscribe(\r\n (page) => {\r\n this.invoicePage.totalPages = Math.ceil(\r\n page.totalItems / page.size\r\n );\r\n this.invoicePage.totalElements = page.totalItems;\r\n this.rows = page.items;\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.invoiceError = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n\r\n public editInvoice(row: any): void {\r\n this.loadingInvoiceLines = true;\r\n this.modalRef = this.modalService.show(this.editInvoiceModal, {\r\n class: 'custom-modal',\r\n });\r\n\r\n this.invoiceService.getInvoiceLines(row.invoiceId).subscribe(\r\n (lines) => {\r\n this.invoiceLines = lines;\r\n this.loadingInvoiceLines = false;\r\n },\r\n (error) => {\r\n this.invoiceError = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loadingInvoiceLines = false;\r\n }\r\n );\r\n }\r\n}\r\n","import { EntityLookup } from '../entity-lookup.model';\r\n\r\nexport class ColumnConfiguration {\r\n public isInitialized = false;\r\n public isId: boolean = false;\r\n public dataType: DataType = DataType.text;\r\n public entityLookupList: EntityLookup[] = [];\r\n public max: number;\r\n public total: number;\r\n public symbol: string;\r\n public addMasking: boolean = true;\r\n\r\n public constructor(\r\n public formControlName: string,\r\n public displayName?: string,\r\n public validators = []\r\n ) {\r\n this.formControlName = formControlName;\r\n if (!this.displayName) {\r\n this.displayName = this.formControlName;\r\n }\r\n }\r\n\r\n // Key Column Constructor\r\n public initalizeKey(): ColumnConfiguration {\r\n this.isId = true;\r\n return this;\r\n }\r\n\r\n // Text Column Constructor\r\n public initializeText(): ColumnConfiguration {\r\n this.dataType = DataType.text;\r\n return this;\r\n }\r\n\r\n // Number Column Constructor\r\n public initializeNumber(\r\n symbol: string,\r\n addMasking = true\r\n ): ColumnConfiguration {\r\n this.dataType = DataType.number;\r\n this.symbol = symbol;\r\n this.addMasking = addMasking;\r\n return this;\r\n }\r\n\r\n // Dropdown Column Constructor\r\n public initializeDropdown(entityLookupList: any): ColumnConfiguration {\r\n this.dataType = DataType.dropdown;\r\n this.entityLookupList = entityLookupList;\r\n return this;\r\n }\r\n\r\n // Ratio Column Constructor\r\n public initializeRatio(\r\n max: number,\r\n symbol: string,\r\n addMasking = true\r\n ): ColumnConfiguration {\r\n this.dataType = DataType.ratio;\r\n this.max = max;\r\n this.symbol = symbol;\r\n this.addMasking = addMasking;\r\n return this;\r\n }\r\n\r\n // Date Column Constructor\r\n public initializeDate(): ColumnConfiguration {\r\n this.dataType = DataType.date;\r\n return this;\r\n }\r\n}\r\n\r\nexport enum DataType {\r\n text = 1,\r\n date = 2,\r\n number = 3,\r\n dropdown = 4,\r\n ratio = 5,\r\n}\r\n","import {\r\n Component,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n TemplateRef,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { ActivatedRoute, Params } from '@angular/router';\r\nimport { CommonService } from '../../../common/common-service';\r\nimport { EntityLookup } from '../../../model/entity-lookup.model';\r\nimport { BsModalRef } from 'ngx-bootstrap';\r\nimport { BsModalService } from 'ngx-bootstrap/modal';\r\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { Tariff } from '../../../model/tariff/tariff.model';\r\nimport { InvoiceService } from '../invoice.service';\r\nimport { ConsumerCompanyService } from '../../consumer-company/consumer-company.service';\r\nimport { ComponentTriggersService } from '../../../common/component-triggers.service';\r\nimport { TariffService } from '../../tariff/tariff.service';\r\n\r\n@Component({\r\n selector: 'invoice-details-list',\r\n templateUrl: './invoice-details.component.html',\r\n styleUrls: ['../../form.styles.scss', './invoice-details.component.scss'],\r\n})\r\nexport class InvoiceDetailsComponent implements OnInit {\r\n @Input('invoiceId')\r\n public invoiceId: number;\r\n public invoiceBatchId: number;\r\n public invoiceItemTotal: number;\r\n public invoiceError = '';\r\n public tab = '';\r\n public loadingInvoiceLines = false;\r\n public submitChange = false;\r\n public loadingTariff = false;\r\n public showBackButton = false;\r\n public invoiceLines: any[];\r\n public tariffRates: any[];\r\n\r\n public newTariffForm: FormGroup;\r\n public tariffs: EntityLookup[];\r\n public errorMessage: string = '';\r\n public tariff: Tariff;\r\n public invoiceBatch: any;\r\n public isPosted = false;\r\n public title: string = 'Invoice Details';\r\n private modalRef: BsModalRef;\r\n private invoiceForm: FormGroup;\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n private invoiceService: InvoiceService,\r\n private consumerCompanyService: ConsumerCompanyService,\r\n private modalService: BsModalService,\r\n private tariffService: TariffService,\r\n private toastr: ToastrService,\r\n private componentTriggerService: ComponentTriggersService,\r\n public commonService: CommonService,\r\n private toaster: ToastrService\r\n ) {\r\n this.invoiceForm = new FormGroup({\r\n amount: new FormControl(0),\r\n paid: new FormControl(false),\r\n });\r\n }\r\n\r\n public ngOnInit() {\r\n if (this.invoiceId == null) {\r\n this.route.params.subscribe(\r\n (routeParams: Params) => {\r\n this.invoiceId = routeParams.invoiceId;\r\n },\r\n (error) => {\r\n this.loadingInvoiceLines = false;\r\n }\r\n );\r\n }\r\n this.route.params.subscribe(\r\n (routeParams: Params) => {\r\n this.invoiceBatchId = routeParams.invoiceBatchId;\r\n this.showBackButton = true;\r\n },\r\n (error) => {\r\n this.showBackButton = false;\r\n }\r\n );\r\n this.route.params.subscribe(\r\n (routeParams: Params) => {\r\n this.tab = routeParams.tab;\r\n if (this.tab === 'crediting') {\r\n this.title = 'Credit Invoice Details';\r\n }\r\n this.showBackButton = true;\r\n },\r\n (error) => {\r\n this.showBackButton = false;\r\n }\r\n );\r\n this.editInvoice(this.invoiceId);\r\n this.commonService.getEntityLookups(['Tariff']).subscribe(\r\n (response) => {\r\n this.tariffs = response.entityLookupResultList['tariff'];\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n\r\n this.invoiceService.getInvoiceBatch(this.invoiceBatchId).subscribe(\r\n (batch) => {\r\n this.loadingInvoiceLines = false;\r\n this.invoiceBatch = batch;\r\n this.isPosted = this.invoiceBatch.posted;\r\n },\r\n (error) => {\r\n this.loadingInvoiceLines = false;\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n }\r\n\r\n public initInvoiceLineForm(invoiceItem: any) {\r\n this.newTariffForm = new FormGroup({\r\n invoiceId: new FormControl(this.invoiceId, [Validators.required]),\r\n invoiceItemId: new FormControl(invoiceItem.invoiceItemId, [\r\n Validators.required,\r\n ]),\r\n description: new FormControl(\r\n { value: invoiceItem.description, disabled: true },\r\n [Validators.required]\r\n ),\r\n tariffId: new FormControl(0, [Validators.required]),\r\n discount: new FormControl(invoiceItem.discount, [\r\n Validators.required,\r\n ]),\r\n quantity: new FormControl(\r\n { value: invoiceItem.quantity, disabled: true },\r\n [Validators.required]\r\n ),\r\n total: new FormControl(\r\n { value: invoiceItem.total, disabled: true },\r\n [Validators.required]\r\n ),\r\n unitPrice: new FormControl(\r\n { value: invoiceItem.unitPrice, disabled: true },\r\n [Validators.required]\r\n ),\r\n tariffRate: new FormControl(0, [Validators.required]),\r\n });\r\n }\r\n public onTariffSelect() {\r\n this.loadingTariff = true;\r\n this.tariffService\r\n .getTariff(this.newTariffForm.controls.tariffId.value)\r\n .subscribe(\r\n (tariff) => {\r\n this.tariff = tariff;\r\n this.loadingTariff = false;\r\n\r\n let description = '';\r\n this.tariffRates = this.tariff.tariffRates;\r\n\r\n if (\r\n this.newTariffForm.controls.description.value\r\n .toLowerCase()\r\n .includes('standard')\r\n ) {\r\n description = this.tariff.tariffCode + ' - Standard';\r\n this.newTariffForm.controls.discount.setValue(\r\n tariff.standardDiscount\r\n );\r\n this.tariffRates = this.tariff.tariffRates.filter(\r\n (rate) => rate.energyBracket.value === 'Standard'\r\n );\r\n } else if (\r\n this.newTariffForm.controls.description.value\r\n .toLowerCase()\r\n .includes('off-peak')\r\n ) {\r\n description = this.tariff.tariffCode + ' - Off-peak';\r\n this.newTariffForm.controls.discount.setValue(\r\n tariff.offPeakDiscount\r\n );\r\n this.tariffRates = this.tariff.tariffRates.filter(\r\n (rate) => rate.energyBracket.value === 'OffPeak'\r\n );\r\n } else if (\r\n this.newTariffForm.controls.description.value\r\n .toLowerCase()\r\n .includes('peak')\r\n ) {\r\n description = this.tariff.tariffCode + ' - Peak';\r\n this.newTariffForm.controls.discount.setValue(\r\n tariff.peakDiscount\r\n );\r\n this.tariffRates = this.tariff.tariffRates.filter(\r\n (rate) => rate.energyBracket.value === 'Peak'\r\n );\r\n }\r\n\r\n this.newTariffForm.controls.description.setValue(\r\n description\r\n );\r\n },\r\n (error) => {\r\n this.loadingTariff = false;\r\n this.toaster.error(error);\r\n }\r\n );\r\n }\r\n\r\n public onItemSelect() {\r\n const tariffRate = this.tariff.tariffRates.find(\r\n (rate) =>\r\n rate.tariffRateId ===\r\n this.newTariffForm.controls.tariffRate.value\r\n );\r\n let multiplier = 1;\r\n if (this.tab === 'crediting') {\r\n multiplier = -1;\r\n }\r\n this.newTariffForm.controls.unitPrice.setValue(\r\n tariffRate.kwhRate * multiplier\r\n );\r\n\r\n let discount = 1;\r\n if (this.newTariffForm.controls.discount.value > 0) {\r\n discount = this.newTariffForm.controls.discount.value / 100;\r\n }\r\n\r\n this.invoiceItemTotal =\r\n this.newTariffForm.controls.unitPrice.value *\r\n this.newTariffForm.controls.quantity.value *\r\n discount;\r\n this.newTariffForm.controls.total.setValue(this.invoiceItemTotal);\r\n }\r\n\r\n public addPayment() {\r\n this.submitChange = true;\r\n const amount =\r\n this.invoiceForm.get('amount').value === 'undefined'\r\n ? 0\r\n : this.invoiceForm.get('amount').value;\r\n const fullypaid =\r\n this.invoiceForm.get('paid').value === 'undefined'\r\n ? false\r\n : this.invoiceForm.get('paid').value;\r\n this.invoiceService\r\n .addInvoicePayment(this.invoiceId, amount, fullypaid)\r\n .subscribe(\r\n (result) => {\r\n this.submitChange = false;\r\n this.toaster.success('Payment added successfully');\r\n },\r\n (error) => {\r\n this.submitChange = false;\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n }\r\n\r\n public onSelect(row: any, template: TemplateRef): void {\r\n if (this.loadingInvoiceLines === false) {\r\n this.errorMessage = '';\r\n this.initInvoiceLineForm(row);\r\n this.modalRef = this.modalService.show(template);\r\n }\r\n }\r\n\r\n public toggleInvoiceItemInclusion($row: any): void {\r\n this.invoiceService\r\n .updateInvoiceLineInclusion($row.invoiceItemId, $row.include)\r\n .subscribe(\r\n (response) => {\r\n if (response) {\r\n if ($row.include) {\r\n this.toaster.success(\r\n 'Invoice line INVIT' +\r\n $row.invoiceItemId +\r\n ' added to invoice.'\r\n );\r\n } else {\r\n this.toaster.warning(\r\n 'Invoice line INVIT' +\r\n $row.invoiceItemId +\r\n ' removed from invoice.'\r\n );\r\n }\r\n }\r\n },\r\n (error) => {\r\n const errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.toaster.error(errorMessage);\r\n }\r\n );\r\n }\r\n\r\n public editInvoiceItem(): void {\r\n const tariffRate = this.tariff.tariffRates.find(\r\n (rate) =>\r\n rate.tariffRateId ===\r\n this.newTariffForm.controls.tariffRate.value\r\n );\r\n\r\n const description =\r\n this.newTariffForm.controls.description.value +\r\n ' (' +\r\n tariffRate.season.seasonName +\r\n ')';\r\n const unitPrice = this.newTariffForm.controls.unitPrice.value;\r\n const discount = this.newTariffForm.controls.discount.value;\r\n const invoiceItemId = this.newTariffForm.controls.invoiceItemId.value;\r\n const invoiceId = this.invoiceId;\r\n this.submitChange = true;\r\n this.invoiceService\r\n .updateInvoiceItem({\r\n invoiceId,\r\n description,\r\n unitPrice,\r\n discount,\r\n invoiceItemId,\r\n })\r\n .subscribe(\r\n () => {\r\n this.editInvoice(this.invoiceId);\r\n this.submitChange = false;\r\n },\r\n (error) => {\r\n this.invoiceError = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.submitChange = false;\r\n }\r\n );\r\n }\r\n\r\n public editInvoice(invoiceId: any): void {\r\n this.loadingInvoiceLines = true;\r\n this.invoiceService.getInvoiceLines(invoiceId).subscribe(\r\n (lines) => {\r\n this.invoiceLines = lines;\r\n this.loadingInvoiceLines = false;\r\n },\r\n (error) => {\r\n this.invoiceError = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loadingInvoiceLines = false;\r\n }\r\n );\r\n }\r\n}\r\n","import { map } from 'rxjs/operators';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { Page } from '../../../../model/page.model';\r\nimport { HttpClient, HttpResponse } from '@angular/common/http';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { ConsumerDemoSettings } from '../../model/demo-settings/ConsumerDemoSettings';\r\nimport { GeneratorDemoSettings } from '../../model/demo-settings/GeneratorDemoSettings';\r\n\r\n@Injectable()\r\nexport class DemoSettingsService {\r\n constructor(private http: HttpClient) {}\r\n\r\n public getConsumerCompanyPremisesForDistributor(\r\n distributorId: number,\r\n isdemo: boolean\r\n ): Observable {\r\n return this.http\r\n .get(\r\n API_URL +\r\n 'consumerCompanyPremises/GetConsumerDemoSettings?distributorId=' +\r\n distributorId\r\n )\r\n .pipe(map((response: HttpResponse) => response));\r\n }\r\n\r\n public getGeneratorsForDistributor(\r\n distributorId: number,\r\n isdemo: boolean\r\n ): Observable {\r\n return this.http\r\n .get(\r\n API_URL +\r\n 'generatorProjectFacility/GetGeneratorDemoSettings?distributorId=' +\r\n distributorId\r\n )\r\n .pipe(map((response: HttpResponse) => response));\r\n }\r\n\r\n public saveSettings(\r\n consumerCompanyPremises: ConsumerDemoSettings[],\r\n generators: GeneratorDemoSettings[],\r\n distributorId: number\r\n ): Observable {\r\n return this.http.post(API_URL + 'demo/SaveParameters', {\r\n consumerCompanyPremises,\r\n generators,\r\n distributorId,\r\n });\r\n }\r\n}\r\n","import {\r\n Component,\r\n OnDestroy,\r\n OnInit,\r\n ViewChild,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { DemoSettingsService } from './demo-settings.service';\r\nimport { Subscription } from 'rxjs';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { debounceTime } from 'rxjs/operators';\r\nimport { ConsumerDemoSettings } from '../../model/demo-settings/ConsumerDemoSettings';\r\nimport { GeneratorDemoSettings } from '../../model/demo-settings/GeneratorDemoSettings';\r\nimport { isEqual, unionWith } from 'lodash';\r\nimport { CommonService } from '../../common/common-service';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { DatatableComponent } from '@swimlane/ngx-datatable';\r\nimport { DistributorService } from '../distributor/distributor.service';\r\nimport { FormControl } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'demo-settings',\r\n templateUrl: './demo-settings.component.html',\r\n styleUrls: ['./demo-settings.component.scss', '../form.styles.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class DemoSettingsComponent implements OnInit, OnDestroy {\r\n @ViewChild(DatatableComponent)\r\n public generatorTable: DatatableComponent;\r\n @ViewChild(DatatableComponent)\r\n public consumerTable: DatatableComponent;\r\n public savingSettings = false;\r\n public Errors: any[];\r\n public validParameters = true;\r\n public errorMap: Map;\r\n public errorMessages: any[];\r\n public consumerCompanyPremisesColumnHeaders: any[];\r\n public generatorColumnHeaders: any[];\r\n public routeParamsSubscription: Subscription;\r\n public errorMessage: string;\r\n public consumerCompanyPremisesArray: ConsumerDemoSettings[];\r\n public tempConsumerCompanyPremises: ConsumerDemoSettings[];\r\n public generatorArray: GeneratorDemoSettings[];\r\n public tempGenerators: GeneratorDemoSettings[];\r\n private distributorId: number;\r\n private isdemo: boolean;\r\n private consumerCompanyPremisesList: ConsumerDemoSettings[];\r\n private generatorsList: GeneratorDemoSettings[];\r\n private sortMap: Map;\r\n private distributors = [];\r\n private filtereddistributors = [];\r\n private loadingdistrubutors = false;\r\n private distributorName;\r\n private changedGenerators = [];\r\n private changedCustomers = [];\r\n\r\n constructor(\r\n private router: Router,\r\n private demoSettingsService: DemoSettingsService,\r\n private route: ActivatedRoute,\r\n private toaster: ToastrService,\r\n private commonService: CommonService,\r\n private distributorService: DistributorService\r\n ) {\r\n this.distributorName = new FormControl();\r\n\r\n this.consumerCompanyPremisesColumnHeaders = [\r\n { name: 'Consumer' },\r\n { name: 'Include in Demo' },\r\n ];\r\n this.generatorColumnHeaders = [\r\n { name: 'Generator' },\r\n { name: 'Include in Demo' },\r\n ];\r\n\r\n this.consumerCompanyPremisesArray = [];\r\n this.generatorArray = [];\r\n\r\n this.Errors = [];\r\n this.errorMap = new Map();\r\n this.errorMessages = [];\r\n this.initSortMap();\r\n }\r\n\r\n public ngOnInit(): void {\r\n this.fetchDistributors();\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n if (!isNullOrUndefined(this.routeParamsSubscription)) {\r\n this.routeParamsSubscription.unsubscribe();\r\n }\r\n }\r\n public selectedDistributor($event: any): void {\r\n this.distributorId = $event.item.distributorId;\r\n this.getConsumerCompanyPremises();\r\n this.getGenerators();\r\n }\r\n\r\n public filterDistributor(searchstring: string) {\r\n if (isNullOrUndefined(searchstring)) {\r\n this.filtereddistributors = this.distributors;\r\n } else {\r\n this.filtereddistributors = this.distributors.filter((dist) => {\r\n return dist.name.includes(searchstring);\r\n });\r\n }\r\n }\r\n public fetchDistributors(): void {\r\n this.loadingdistrubutors = true;\r\n this.distributorService.getAllocationDistributors('').subscribe(\r\n (distributors) => {\r\n this.distributors = distributors;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loadingdistrubutors = false;\r\n }\r\n );\r\n }\r\n\r\n public saveSettings(): void {\r\n if (this.validParameters) {\r\n this.savingSettings = true;\r\n this.demoSettingsService\r\n .saveSettings(\r\n this.consumerCompanyPremisesList.filter(\r\n (item) =>\r\n isNullOrUndefined(item['changed'])\r\n ? 0\r\n : (item['changed'] = 1)\r\n ),\r\n this.generatorsList.filter(\r\n (item) =>\r\n isNullOrUndefined(item['changed'])\r\n ? 0\r\n : (item['changed'] = 1)\r\n ),\r\n this.distributorId\r\n )\r\n .subscribe(\r\n () => {\r\n this.savingSettings = false;\r\n this.toaster.success(\r\n 'The parameters were successfully saved. '\r\n );\r\n },\r\n (error) => {\r\n this.savingSettings = false;\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n }\r\n }\r\n\r\n public getConsumerCompanyPremises(): void {\r\n this.demoSettingsService\r\n .getConsumerCompanyPremisesForDistributor(\r\n this.distributorId,\r\n this.isdemo\r\n )\r\n .subscribe(\r\n (consumerCompanyPremises) => {\r\n this.consumerCompanyPremisesArray = consumerCompanyPremises;\r\n this.tempConsumerCompanyPremises = [\r\n ...consumerCompanyPremises,\r\n ];\r\n this.consumerCompanyPremisesList = unionWith(\r\n this.consumerCompanyPremisesList,\r\n consumerCompanyPremises,\r\n isEqual\r\n );\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n }\r\n\r\n public getGenerators(): void {\r\n this.demoSettingsService\r\n .getGeneratorsForDistributor(this.distributorId, this.isdemo)\r\n .subscribe(\r\n (generators) => {\r\n this.generatorArray = generators;\r\n this.tempGenerators = [...generators];\r\n this.generatorsList = unionWith(\r\n this.generatorsList,\r\n generators,\r\n isEqual\r\n );\r\n this.changedGenerators = new Array(\r\n this.generatorsList.length\r\n ).fill(0);\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n }\r\n\r\n public updateConsumerDemoSettings(\r\n consumerCompanyPremisesElement: any,\r\n name: string,\r\n element: any\r\n ): void {\r\n const consumerCompanyPremisesIndex = this.consumerCompanyPremisesList.findIndex(\r\n (item) =>\r\n item.consumerCompanyPremisesId ===\r\n consumerCompanyPremisesElement.consumerCompanyPremisesId\r\n );\r\n\r\n this.consumerCompanyPremisesList[consumerCompanyPremisesIndex].changed =\r\n (isNullOrUndefined(\r\n this.consumerCompanyPremisesList[consumerCompanyPremisesIndex]\r\n .changed\r\n )\r\n ? 0\r\n : this.consumerCompanyPremisesList[consumerCompanyPremisesIndex]\r\n .changed) +\r\n (1 % 2);\r\n this.consumerCompanyPremisesList[consumerCompanyPremisesIndex][\r\n 'includeInDemo'\r\n ] =\r\n element.target.type === 'checkbox'\r\n ? element.target.checked\r\n : element.target.value;\r\n }\r\n\r\n public updateGeneratorParameter(\r\n generatorProjectFacilityElement: any,\r\n name: string,\r\n element: any\r\n ): void {\r\n const generatorIndex = this.generatorsList.findIndex(\r\n (item) =>\r\n item.generatorProjectFacilityId ===\r\n generatorProjectFacilityElement.generatorProjectFacilityId\r\n );\r\n\r\n this.generatorsList[generatorIndex].changed =\r\n (isNullOrUndefined(this.generatorsList[generatorIndex].changed)\r\n ? 0\r\n : this.generatorsList[generatorIndex].changed) +\r\n (1 % 2);\r\n this.generatorsList[generatorIndex]['includeInDemo'] =\r\n element.target.type === 'checkbox'\r\n ? element.target.checked\r\n : element.target.value;\r\n }\r\n\r\n public updateGeneratorFilter(event) {\r\n const val = event.target.value.toLowerCase();\r\n\r\n // filter and update the rows\r\n this.generatorArray = this.tempGenerators.filter(function(d) {\r\n return d.generator.toLowerCase().indexOf(val) !== -1 || !val;\r\n });\r\n // Whenever the filter changes, always go back to the first page\r\n this.generatorTable.offset = 0;\r\n }\r\n\r\n public updateConsumerCompanyFilter(event) {\r\n const val = event.target.value.toLowerCase();\r\n\r\n // filter and update the rows\r\n this.consumerCompanyPremisesArray = this.tempConsumerCompanyPremises.filter(\r\n function(d) {\r\n return d.consumer.toLowerCase().indexOf(val) !== -1 || !val;\r\n }\r\n );\r\n // Whenever the filter changes, always go back to the first page\r\n this.consumerTable.offset = 0;\r\n }\r\n\r\n private initSortMap(): void {\r\n this.sortMap = new Map();\r\n this.sortMap.set('consumer', 'consumer');\r\n this.sortMap.set('generator', 'generator');\r\n this.sortMap.set('reasonforexclusion', 'reasonForExclusion');\r\n this.sortMap.set('percentage', 'percentage');\r\n }\r\n}\r\n","import { HttpClient, HttpResponse } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { ConsumerCompanyPremises } from '../../../model/consumer-company-premises.model';\r\n\r\n@Injectable()\r\nexport class ConsumerService {\r\n constructor(private http: HttpClient) {}\r\n\r\n public getConsumers(searchword: string, pagesize: number): Observable {\r\n if (isNullOrUndefined(searchword)) {\r\n searchword = '';\r\n }\r\n return this.http.get(\r\n API_URL +\r\n 'ConsumerCompanyPremises/SearchConsumers?searchword=' +\r\n searchword +\r\n '&pageSize=' +\r\n pagesize +\r\n '&sortDirection=&sortProperty='\r\n );\r\n }\r\n\r\n public getStatement(\r\n ConsumerpremisesID: number,\r\n stardate: string,\r\n enddate: string\r\n ) {\r\n return this.http\r\n .get(\r\n API_URL +\r\n 'ConsumerCompanyPremises/DownloadFullConsumerStatement?consumerCompanyPremisesId=' +\r\n ConsumerpremisesID +\r\n '&startdate=' +\r\n stardate +\r\n '&enddate=' +\r\n enddate,\r\n {\r\n responseType: 'blob',\r\n }\r\n )\r\n .pipe(map((response) => response));\r\n }\r\n}\r\n","import { Component, OnInit, ViewEncapsulation, inject } from '@angular/core';\r\n\r\nimport { FormControl, FormsModule, Validators } from '@angular/forms';\r\nimport { JsonPipe, DatePipe } from '@angular/common';\r\nimport { debounceTime, mergeMap } from 'rxjs/operators';\r\nimport { CommonService } from '../../../common/common-service';\r\nimport { ConsumerService } from './consumer-statement.service';\r\nimport { ConsumerCompanyPremises } from '../../../model/consumer-company-premises.model';\r\nimport { saveAs as importedSaveAs } from 'file-saver';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'consumer-statement',\r\n templateUrl: './consumer-statement.component.html',\r\n styleUrls: ['./consumer-statement.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class ConsumerStatementComponent implements OnInit {\r\n private filteredConsumers: Observable;\r\n private consumerpremisesName;\r\n private consumerpremisesId;\r\n private errorMessage = '';\r\n private maxDate: Date;\r\n private dateRange: any;\r\n private downloadingStatement: boolean = false;\r\n private pipe = new DatePipe('en-US');\r\n private typeaheadOptionsLimit: number = 20;\r\n constructor(\r\n private commonService: CommonService,\r\n private consumerService: ConsumerService,\r\n private toaster: ToastrService\r\n ) {\r\n this.consumerpremisesName = new FormControl();\r\n this.consumerpremisesId = new FormControl();\r\n this.dateRange = new FormControl();\r\n this.maxDate = new Date();\r\n this.maxDate.setDate(this.maxDate.getDate());\r\n }\r\n\r\n public ngOnInit() {\r\n this.filteredConsumers = Observable.create((observer: any) => {\r\n // Runs on every search\r\n observer.next(this.consumerpremisesName.value);\r\n }).pipe(\r\n mergeMap((token: string) =>\r\n this.consumerService.getConsumers(\r\n token,\r\n this.typeaheadOptionsLimit\r\n )\r\n )\r\n );\r\n }\r\n\r\n public selectedConsumer($event: any): void {\r\n this.consumerpremisesId.patchValue(\r\n $event.item.consumerCompanyPremisesId\r\n );\r\n }\r\n\r\n public generateStatement() {\r\n const startdate = this.pipe.transform(\r\n this.dateRange.value[0],\r\n 'ddMMMyy'\r\n );\r\n const enddate = this.pipe.transform(this.dateRange.value[1], 'ddMMMyy');\r\n\r\n const formatedtitle =\r\n this.consumerpremisesName.value +\r\n '-' +\r\n startdate +\r\n '-' +\r\n enddate +\r\n 'Statement.pdf';\r\n this.downloadingStatement = true;\r\n this.consumerService\r\n .getStatement(\r\n this.consumerpremisesId.value,\r\n this.pipe.transform(this.dateRange.value[0], 'yyyy-MMMM-dd'),\r\n this.pipe.transform(this.dateRange.value[1], 'yyyy-MMMM-dd')\r\n )\r\n .subscribe(\r\n (response) => {\r\n importedSaveAs(response, formatedtitle);\r\n this.toaster.success('Downloaded consumer statement');\r\n this.downloadingStatement = false;\r\n },\r\n () => {\r\n this.errorMessage = this.commonService.handleDocumentErrorMessage(\r\n 'Consumer Statement Download'\r\n );\r\n this.toaster.error(\r\n 'An error occurred while attempting to retrieve the consumer statement'\r\n );\r\n this.downloadingStatement = false;\r\n }\r\n );\r\n }\r\n}\r\n","import { HttpClient, HttpHeaders, HttpResponse } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { ConsumerCompanyPremises } from '../../../model/consumer-company-premises.model';\r\n\r\n@Injectable()\r\nexport class MeterManualUploadService {\r\n constructor(private http: HttpClient) {}\r\n\r\n public getConsumers(searchword: string, pagesize: number): Observable {\r\n if (isNullOrUndefined(searchword)) {\r\n searchword = '';\r\n }\r\n return this.http.get(\r\n API_URL +\r\n 'ConsumerCompanyPremises/SearchConsumers?searchword=' +\r\n searchword +\r\n '&pageSize=' +\r\n pagesize +\r\n '&sortDirection=&sortProperty='\r\n );\r\n }\r\n\r\n public uploadMeterReading(\r\n formdata: FormData,\r\n headers: HttpHeaders\r\n ): Observable {\r\n return this.http.post(\r\n API_URL + 'ConsumerCompanyPremises/uploadMeterReadings',\r\n formdata,\r\n {\r\n headers,\r\n reportProgress: true,\r\n }\r\n );\r\n }\r\n}\r\n","import {\r\n Component,\r\n ElementRef,\r\n OnChanges,\r\n OnInit,\r\n SimpleChanges,\r\n ViewChild,\r\n ViewEncapsulation,\r\n inject,\r\n} from '@angular/core';\r\n\r\nimport {\r\n FormControl,\r\n FormGroup,\r\n FormsModule,\r\n ValidatorFn,\r\n Validators,\r\n} from '@angular/forms';\r\nimport { JsonPipe, DatePipe } from '@angular/common';\r\nimport { debounceTime, mergeMap } from 'rxjs/operators';\r\nimport { CommonService } from '../../../common/common-service';\r\nimport { MeterManualUploadService } from './meter-manual-upload.service';\r\nimport { ConsumerCompanyPremises } from '../../../model/consumer-company-premises.model';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { Observable } from 'rxjs';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { BsModalRef, BsModalService } from 'ngx-bootstrap/modal';\r\nimport { HttpEventType, HttpHeaders, HttpResponse } from '@angular/common/http';\r\n\r\n@Component({\r\n selector: 'meter-manual-upload',\r\n templateUrl: './meter-manual-upload.component.html',\r\n styleUrls: ['./meter-manual-upload.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class MeterManualUploadComponent implements OnInit, OnChanges {\r\n public meterReading?: Document = null;\r\n public fileFormControl: FormControl;\r\n public fileInputFormControl: FormControl;\r\n public maxFileSize = 1000000000; // 1GB File limit\r\n @ViewChild('file')\r\n public file: ElementRef;\r\n public ConsumerSelected: string = '';\r\n public modalRef: BsModalRef;\r\n @ViewChild('template')\r\n public template: ElementRef;\r\n public uploadProgress: number;\r\n protected toastr: ToastrService;\r\n private processingFile: boolean = false;\r\n private buttonsStatus: boolean = false;\r\n private filteredConsumers: Observable;\r\n private consumerpremisesNameControl;\r\n private consumerpremisesIdControl;\r\n private errorMessage = '';\r\n private maxDate: Date;\r\n private dateRange: any;\r\n private downloadingStatement: boolean = false;\r\n private pipe = new DatePipe('en-US');\r\n private typeaheadOptionsLimit: number = 20;\r\n private uploadForm: FormGroup;\r\n constructor(\r\n private commonService: CommonService,\r\n private ManualUploadService: MeterManualUploadService,\r\n private toaster: ToastrService,\r\n private modalService: BsModalService\r\n ) {\r\n this.toastr = toaster;\r\n }\r\n public onFileChange(): void {\r\n this.fileInputFormControl.setValue(\r\n this.file.nativeElement.files[0]\r\n ? this.file.nativeElement.files[0].name\r\n : null\r\n );\r\n }\r\n public ngOnChanges(changes: SimpleChanges): void {\r\n if (\r\n changes['disable'] &&\r\n !isNullOrUndefined(this.fileFormControl) &&\r\n !isNullOrUndefined(this.fileInputFormControl)\r\n ) {\r\n const value = changes['disable'].currentValue;\r\n if (value) {\r\n this.fileFormControl.disable();\r\n this.fileFormControl.markAsTouched();\r\n this.fileFormControl.updateValueAndValidity();\r\n\r\n this.fileInputFormControl.disable();\r\n this.fileInputFormControl.markAsTouched();\r\n this.fileInputFormControl.updateValueAndValidity();\r\n } else {\r\n this.fileFormControl.enable();\r\n this.fileFormControl.markAsTouched();\r\n this.fileFormControl.updateValueAndValidity();\r\n\r\n this.fileInputFormControl.enable();\r\n this.fileInputFormControl.markAsTouched();\r\n this.fileInputFormControl.setValidators([Validators.required]);\r\n this.fileInputFormControl.updateValueAndValidity();\r\n }\r\n }\r\n }\r\n\r\n public ngOnInit() {\r\n this.consumerpremisesNameControl = new FormControl();\r\n this.consumerpremisesIdControl = new FormControl(\r\n {\r\n value: null,\r\n disabled: false,\r\n },\r\n Validators.required\r\n );\r\n this.dateRange = new FormControl();\r\n this.maxDate = new Date();\r\n\r\n this.maxDate.setDate(this.maxDate.getDate());\r\n\r\n this.filteredConsumers = Observable.create((observer: any) => {\r\n // Runs on every search\r\n observer.next(this.consumerpremisesNameControl.value);\r\n }).pipe(\r\n mergeMap((token: string) =>\r\n this.ManualUploadService.getConsumers(\r\n token,\r\n this.typeaheadOptionsLimit\r\n )\r\n )\r\n );\r\n const validators: ValidatorFn[] = [this.fileSizeValidator.bind(this)];\r\n validators.push(Validators.required);\r\n this.fileInputFormControl = new FormControl(\r\n {\r\n value: null,\r\n disabled: false,\r\n },\r\n validators\r\n );\r\n this.fileFormControl = new FormControl({\r\n value: null,\r\n disabled: false,\r\n });\r\n\r\n this.uploadForm = new FormGroup({\r\n fileFormControl: this.fileFormControl,\r\n fileInputFormControl: this.fileInputFormControl,\r\n consumerpremisesIdControl: this.consumerpremisesIdControl,\r\n });\r\n }\r\n\r\n public fileSizeValidator(): { [s: string]: boolean } {\r\n if (\r\n !isNullOrUndefined(this.file) &&\r\n !isNullOrUndefined(this.file.nativeElement.files[0]) &&\r\n this.maxFileSize < this.file.nativeElement.files[0].size\r\n ) {\r\n return { maxfilefizeexceeded: true };\r\n }\r\n return null;\r\n }\r\n\r\n public selectedConsumer($event: any): void {\r\n this.consumerpremisesIdControl.patchValue(\r\n $event.item.consumerCompanyPremisesId\r\n );\r\n this.ConsumerSelected = $event.item.premisesName;\r\n }\r\n\r\n public openModal() {\r\n this.modalRef = this.modalService.show(this.template);\r\n }\r\n\r\n public uploadreadings() {\r\n this.uploadProgress = 0;\r\n this.buttonsStatus = true;\r\n const formData = new FormData();\r\n this.processingFile = true;\r\n formData.append(\r\n this.file.nativeElement.files[0].name,\r\n this.file.nativeElement.files[0]\r\n );\r\n formData.append(\r\n 'consumerCompanyPremisesId',\r\n this.consumerpremisesIdControl.value\r\n );\r\n const headers = new HttpHeaders({\r\n enctype: 'multipart/form-data',\r\n });\r\n this.ManualUploadService.uploadMeterReading(\r\n formData,\r\n headers\r\n ).subscribe(\r\n (event) => {\r\n this.processingFile = false;\r\n this.closeModal();\r\n this.buttonsStatus = false;\r\n\r\n if (event.successMessage !== undefined) {\r\n this.toastr.success(event.successMessage);\r\n } else {\r\n this.toastr.error(event.errorMessage);\r\n }\r\n },\r\n (error: HttpResponse) => {\r\n this.processingFile = false;\r\n this.closeModal();\r\n this.buttonsStatus = false;\r\n if (isNullOrUndefined(error.body)) {\r\n this.toastr.error(\r\n 'An error occurred while uploading the document'\r\n );\r\n } else {\r\n this.toastr.error(error.body.errorMessage);\r\n }\r\n }\r\n );\r\n }\r\n\r\n public closeModal() {\r\n this.modalRef.hide();\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpParams } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { Page } from '../../model/page.model';\r\nimport { isNullOrUndefined } from 'util';\r\n\r\n@Injectable()\r\nexport class VatService {\r\n constructor(private httpClient: HttpClient) {}\r\n\r\n public GetAllVat(\r\n ): Observable {\r\n return this.httpClient.get(API_URL + 'setting/GetAllVat');\r\n }\r\n\r\n public AddVat(newVat: any): Observable {\r\n return this.httpClient.put(API_URL + 'setting/AddVat', newVat);\r\n }\r\n}\r\n","import { debounceTime } from 'rxjs/operators';\r\nimport { Component, OnInit, TemplateRef } from '@angular/core';\r\n\r\nimport { FormGroup, FormControl, Validators } from '@angular/forms';\r\nimport { BsModalRef, BsModalService } from 'ngx-bootstrap';\r\nimport { CommonService } from '../../common/common-service';\r\nimport { Page } from '../../model/page.model';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { VatService } from './vat-settings.service';\r\nimport { Vat } from '../../model/vat.model';\r\n\r\n@Component({\r\n selector: 'vat-settings',\r\n templateUrl: './vat-settings.component.html',\r\n styleUrls: ['../form.styles.scss'],\r\n})\r\nexport class VatSettingsComponent implements OnInit {\r\n public submitting: boolean = false;\r\n public errorMessage: string;\r\n public loading: boolean = true;\r\n public settingsPage: Page;\r\n public settingsData: any[] = [];\r\n public addVatForm: FormGroup;\r\n private sortProp = {};\r\n private modalRef: BsModalRef;\r\n private allVAT: any[] = [];\r\n private minStartDate: Date;\r\n\r\n constructor(\r\n private vatService: VatService,\r\n private toaster: ToastrService,\r\n private modalService: BsModalService,\r\n public commonService: CommonService\r\n ) {\r\n this.settingsPage = new Page();\r\n this.settingsPage.size = 10;\r\n this.addVatForm = new FormGroup({\r\n value: new FormControl(null, [\r\n Validators.required,\r\n ]),\r\n startdate: new FormControl(null, [\r\n Validators.required,\r\n\r\n ])\r\n });\r\n\r\n }\r\n\r\n public openTemplate(event: any, template: TemplateRef) {\r\n\r\n this.modalRef = this.modalService.show(template);\r\n\r\n }\r\n\r\n public ngOnInit() {\r\n this.loading = true;\r\n this.minStartDate = new Date();\r\n this.vatService.GetAllVat().subscribe((VATs: Vat[]) => {\r\n\r\n this.allVAT = VATs;\r\n const parseddate = new Date(VATs[0].startDate);\r\n parseddate.setMonth(parseddate.getMonth() + 1);\r\n this.minStartDate.setFullYear(parseddate.getFullYear(), parseddate.getMonth() , 1);\r\n this.settingsPage.totalPages = Math.ceil(\r\n VATs.length / this.settingsPage.size\r\n );\r\n this.settingsPage.totalElements = VATs.length;\r\n\r\n if (VATs.length <= this.settingsPage.size) {\r\n\r\n this.settingsData = VATs;\r\n } else {\r\n\r\n this.settingsData = VATs.slice(0, this.settingsPage.size);\r\n }\r\n\r\n this.loading = false;\r\n\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.toaster.error(this.errorMessage);\r\n this.loading = false;\r\n });\r\n this.changePage({ offset: this.settingsPage.offset });\r\n }\r\n\r\n public changePage(pageInfo: any): void {\r\n\r\n this.settingsPage.offset = pageInfo.offset * this.settingsPage.size;\r\n\r\n if (this.allVAT.length <= (pageInfo.offset + 1) * this.settingsPage.size) {\r\n\r\n this.settingsData = this.allVAT.slice(pageInfo.offset * this.settingsPage.size);\r\n } else {\r\n\r\n this.settingsData = this.allVAT.slice(pageInfo.offset * this.settingsPage.size, pageInfo.offset * this.settingsPage.size + this.settingsPage.size);\r\n }\r\n\r\n }\r\n\r\n public onPopupSubmit() {\r\n this.commonService.validateAllFormFields(this.addVatForm);\r\n if (this.addVatForm.valid) {\r\n this.modalRef.hide();\r\n this.submitting = true;\r\n\r\n this.vatService.AddVat(new Vat(this.addVatForm.controls.startdate.value, this.addVatForm.controls.value.value)).subscribe(\r\n () => {\r\n this.addVatForm.reset();\r\n this.toaster.success('VAT Added Successfully');\r\n this.changePage({ offset: this.settingsPage.offset });\r\n this.submitting = false;\r\n this.ngOnInit();\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.toaster.error(this.errorMessage);\r\n this.submitting = false;\r\n }\r\n );\r\n }\r\n }\r\n}\r\n","export class Vat {\r\n constructor(\r\n public startDate: string,\r\n public value: number\r\n ) { }\r\n}\r\n","import { DocumentMaintenanceComponent } from './component/general-maintenance/document-maintenance/document-maintenance.component';\r\nimport { BulkMeterDetailsComponent } from './component/distributor/bulk-meter-list/bulk-meter-details/bulk-meter-details.component';\r\nimport { GeneratorIncreaseNotificationDetailsComponent } from './component/administration/notifications/generator-notifications/generator-increase-notification-details/generator-increase-notification-details.component';\r\nimport { GeneratorNotificationsComponent } from './component/administration/notifications/generator-notifications/generator-notifications.component';\r\nimport { ProspectPpaComponent } from './component/administration/prospect-ppa/prospect-ppa.component';\r\nimport { ProspectsComponent } from './component/administration/prospects/prospects.component';\r\n\r\nimport { Routes } from '@angular/router';\r\nimport { PageNotFoundComponent } from './errors/404/page-not-found.component';\r\nimport { HomeComponent } from './component/home/home.component';\r\nimport { AllocationComponent } from './component/allocation/allocation.component';\r\nimport { AllocationRunComponent } from './component/allocation/allocation-run/allocation-run.component';\r\nimport { LoginComponent } from './component/authentication/login.component';\r\nimport { AuthenticationGuard } from './authentication/guard/authentication.guard';\r\nimport { LogoutComponent } from './component/authentication/logout/logout.component';\r\nimport { ConsumerCompaniesListComponent } from './component/consumer-company/list/consumer-companies-list.component';\r\nimport { ArchivedConsumerCompaniesListComponent } from './component/consumer-company/archived/archived-consumer-companies-list.component';\r\nimport { AllocationRunWarningsComponent } from './component/allocation/allocation-run/allocation-run-warnings/allocation-run-warnings.component';\r\nimport { AllocationSummaryConsumerComponent } from './component/allocation/allocation-run/allocation-summary-consumer/allocation-summary-consumer.component';\r\nimport { ParametersComponent } from './component/allocation/allocation-run/parameters/parameters.component';\r\nimport { AllocationSummaryGeneratorComponent } from './component/allocation/allocation-run/allocation-summary-generator/allocation-summary-generator.component';\r\nimport { FrequentlyAskedQuestionsComponent } from './component/infomation/frequently-asked-questions/frequently-asked-questions.component';\r\nimport { UsefulLinksComponent } from './component/infomation/useful-links/useful-links.component';\r\nimport { AuthorizationGuard } from './authentication/guard/authorization.guard';\r\nimport { ForbiddenComponent } from './errors/403/forbidden.component';\r\nimport { UserListComponent } from './component/administration/user/list/user-list.component';\r\nimport { CreateUserComponent } from './component/administration/user/create/create-user.component';\r\nimport { UserEmailVerificationComponent } from './component/administration/user/verify/user-email-verification.component';\r\nimport { EditUserComponent } from './component/administration/user/edit/edit-user.component';\r\nimport { SalesRepListComponent } from './component/administration/sales-rep/list/sales-rep-list.component';\r\nimport { CreateSalesRepComponent } from './component/administration/sales-rep/create/create-sales-rep.component';\r\nimport { EditSalesRepComponent } from './component/administration/sales-rep/edit/edit-sales-rep.component';\r\nimport { AllocationSendWarningsComponent } from './component/allocation/allocation-run/allocation-send-warnings/allocation-send-warnings.component';\r\nimport { ConsumerDetailsComponent } from './component/administration/prospects/consumer-details/consumer-details.component';\r\nimport { SapExportComponent } from './component/sap-export/sap-export.component';\r\nimport { DistributorListComponent } from './component/distributor/list/distributor-list.component';\r\nimport { CreateDistributorComponent } from './component/distributor/create/create-distributor.component';\r\nimport { EditDistributorComponent } from './component/distributor/edit/edit-distributor.component';\r\nimport { GeneratorEvaluationComponent } from './component/administration/evaluation/generator-evaluation/generator-evaluation.component';\r\nimport { ArchivedGeneratorEvaluationComponent } from './component/administration/evaluation/generator-evaluation/archived-generator-evaluation/archived-generator-evaluation.component';\r\nimport { GeneratorEvaluationDetailsComponent } from './component/administration/evaluation/generator-evaluation/generator-evaluation-details/generator-evaluation-details.component';\r\nimport { ProspectEvaluationComponent } from './component/administration/evaluation/prospect-evaluation/prospect-evaluation.component';\r\nimport { ArchivedProspectEvaluationComponent } from './component/administration/evaluation/prospect-evaluation/archived-prospect-evaluation/archived-prospect-evaluation.component';\r\n\r\nimport { ProspectEvaluationDetailsComponent } from './component/administration/evaluation/prospect-evaluation/prospect-evaluation-details/prospect-evaluation-details.component';\r\nimport { ProspectOfferComponent } from './component/administration/evaluation/prospect-evaluation/prospect-offer/prospect-offer.component';\r\nimport { GeneratorPpaComponent } from './component/administration/evaluation/generator-evaluation/generator-ppa/generator-ppa.component';\r\nimport { GeneratorProjectFacilityActivationComponent } from './component/generator-project-facility/generator-project-facility-activation/generator-project-facility-activation.component';\r\nimport { ForgotPasswordComponent } from './component/authentication/ForgotPassword/forgot-password.component';\r\nimport { ResetPasswordComponent } from './component/administration/user/reset-password/reset-password.component';\r\nimport { ConsumerCompanyPremisesActivationComponent } from './component/consumer-company-premises/consumer-company-premises-activation/consumer-company-premises-activation.component';\r\nimport { EditConsumerCompanyComponent } from './component/consumer-company/edit/edit-consumer-company.component';\r\nimport { ConsumerCompanyPremisesListComponent } from './component/consumer-company-premises/list/consumer-company-premises-list.component';\r\nimport { GeneratorCompaniesListComponent } from './component/generator-company/list/generator-companies-list.component';\r\nimport { ArchivedGeneratorCompaniesListComponent } from './component/generator-company/archived/archived-generator-companies-list.component';\r\nimport { EditGeneratorCompanyComponent } from './component/generator-company/edit/edit-generator-company.component';\r\nimport { PpaScheduleComponent } from './component/administration/prospect-ppa/ppa-schedule/ppa-schedule.component';\r\nimport { RecsComponent } from './component/allocation/allocation-run/recs/recs.component';\r\nimport { EditGeneratorProjectComponent } from './component/generator-project/edit/edit-generator-project.component';\r\nimport { EditConsumerCompanyPremisesComponent } from './component/consumer-company-premises/edit/edit-consumer-company-premises.component';\r\nimport { RecsConsumerListComponent } from './component/allocation/allocation-run/recs/recs-consumer-list/recs-consumer-list.component';\r\nimport { GeneratorPpaScheduleComponent } from './component/administration/evaluation/generator-evaluation/generator-ppa-schedule/generator-ppa-schedule.component';\r\nimport { NewApplicationComponent } from './component/application/new-application.component';\r\nimport { ApplicationUserEmailVerificationComponent } from './component/application/generator-application/application-user-email-verification/application-user-email-verification.component';\r\nimport { CompanyDetailsComponent } from './component/application/generator-application/company-details/company-details.component';\r\nimport { SpvDetailsComponent } from './component/application/generator-application/spv-details/spv-details.component';\r\nimport { NdaAgreementComponent } from './component/application/generator-application/nda-agreement/nda-agreement.component';\r\nimport { NdaAgreementDownloadComponent } from './component/application/generator-application/nda-agreement-template/nda-agreement-template.component';\r\nimport { FacilityDetailsComponent } from './component/application/generator-application/facility-details/facility-details.component';\r\nimport { NersaConsumerReportComponent } from './component/nersa-report/nersa-consumer-report/nersa-consumer-report.component';\r\nimport { NersaGeneratorReportComponent } from './component/nersa-report/nersa-generator-report/nersa-generator-report.component';\r\nimport { GeneratorTermsheetComponent } from './component/administration/evaluation/generator-evaluation/generator-termsheet/generator-termsheet.component';\r\nimport { AllocationRunDetailComponent } from './component/allocation/allocation-run/allocation-run-detail/allocation-run-detail.component';\r\nimport { CpiComponent } from './component/general-maintenance/cpi/cpi.component';\r\nimport { SettingsComponent } from './component/settings/settings.component';\r\nimport { GeneratorProjectFacilityDistributorListComponent } from './component/generator-project-facility/generator-project-facility-distributor-list/generator-project-facility-distributor-list.component';\r\nimport { GeneratorProjectFacilityDistributorNominationsComponent } from './component/generator-project-facility/generator-project-facility-distributor-nominations/generator-project-facility-distributor-nominations.component';\r\nimport { GeneratorForecastReportComponent } from './component/report/forecast-reports/generator-forecast-report/generator-forecast-report.component';\r\nimport { ConsumerAndRevenueForecastReportComponent } from './component/report/forecast-reports/consumer-and-revenue-forecast-report/consumer-and-revenue-forecast-report.component';\r\nimport { GeneratorApplicationProjectListComponent } from './component/application/generator-application/generator-project/generator-projects-list/generator-application-project-list.component';\r\nimport { GeneratorApplicationProjectEditComponent } from './component/application/generator-application/generator-project/generator-project-edit/generator-application-project-edit.component';\r\nimport { GeneratorApplicationProjectFacilityEditComponent } from './component/application/generator-application/generator-project-facility/generator-project-facility-edit/generator-application-project-facility-edit.component';\r\nimport { ProvidersListComponent } from './component/administration/integrator-providers/providers-list/providers-list.component';\r\nimport { ProvidersDetailComponent } from './component/administration/integrator-providers/providers-detail/providers-detail.component';\r\nimport { ConsumerApplicationComponent } from './component/application/consumer-application/consumer-application.component';\r\nimport { PublicHolidayComponent } from './component/public-holiday/public-holiday.component';\r\nimport { AllocationRunErrorsComponent } from './component/allocation/allocation-run/allocation-run-errors/allocation-run-errors.component';\r\nimport { ConsumerForecastWarningsComponent } from './component/report/forecast-reports/consumer-and-revenue-forecast-report/consumer-forecast-warnings/consumer-forecast-warnings.component';\r\nimport { RevenueForecastWarningsComponent } from './component/report/forecast-reports/consumer-and-revenue-forecast-report/revenue-forecast-warnings/revenue-forecast-warnings.component';\r\nimport { ManagementReportComponent } from './component/report/management-report/management-report.component';\r\nimport { MaintenanceComponent } from './errors/maintenance/maintenance.component';\r\nimport { SalesRepReportComponent } from './component/report/sales-rep-report/sales-rep-report.component';\r\nimport { ForecastParametersComponent } from './component/report/forecast-reports/consumer-and-revenue-forecast-report/forecast-parameters/forecast-parameters.component';\r\nimport { ApplicationReportsComponent } from './component/report/application-reports/application-reports.component';\r\nimport { ProspectDetailsComponent } from './component/administration/prospects/prospect-details/prospect-details.component';\r\nimport { DistributorActivationReportComponent } from './component/report/distributor-activation-report/distributor-activation-report.component';\r\nimport { GeneratorPpaRenewalNotificationsComponent } from './component/administration/notifications/generator-ppa-renewal-notifications/generator-ppa-renewal-notifications.component';\r\nimport { ConsumerPpaRenewalNotificationsComponent } from './component/administration/notifications/consumer-ppa-renewal-notifications/consumer-ppa-renewal-notifications.component';\r\nimport { DownloadableDocumentsComponent } from './component/infomation/downloadable-documents-component/downloadable-documents-component';\r\nimport { ForecastComponent } from './component/forecast/parameters/forecast.component';\r\nimport { ForecastRunComponent } from './component/forecast/runs/forecast-run.component';\r\nimport { AllocationForecastRunComponent } from './component/forecast/allocations/allocation-forecast-run.component';\r\nimport { ConsumerSalesReportsComponent } from './component/report/consumer-sales-reports/consumer-sales-reports.component';\r\nimport { GeneratorReportsComponent } from './component/report/generator-reports/generator-reports.component';\r\nimport { InvoiceBatchSummaryComponent } from './component/invoices/invoice-batch-summary/invoice-batch-summary.component';\r\nimport { InvoiceBatchDetailsComponent } from './component/invoices/invoice-batch-details/invoice-batch-details.component';\r\nimport { InvoiceDetailsComponent } from './component/invoices/invoice-details/invoice-details.component';\r\nimport { DemoSettingsComponent } from './component/demo-settings/demo-settings.component';\r\nimport { ConsumerStatementComponent } from './component/consumer-company-premises/statements/consumer-statement.component';\r\nimport { MeterManualUploadComponent } from './component/consumer-company-premises/meter-manual-upload/meter-manual-upload.component';\r\nimport { VatSettingsComponent } from './component/vat-settings/vat-settings.component';\r\n\r\nexport const ROUTES: Routes = [\r\n { path: '', redirectTo: 'login', pathMatch: 'full' },\r\n { path: 'logout', component: LogoutComponent },\r\n { path: 'login', component: LoginComponent },\r\n { path: 'forgot-password', component: ForgotPasswordComponent },\r\n {\r\n path: 'administration/user/reset-user-password',\r\n component: ResetPasswordComponent,\r\n },\r\n { path: 'new-application', component: NewApplicationComponent },\r\n {\r\n path: 'application/verify-email',\r\n component: ApplicationUserEmailVerificationComponent,\r\n },\r\n {\r\n path: 'administration/user/verify-email-password',\r\n component: UserEmailVerificationComponent,\r\n },\r\n {\r\n path: '',\r\n canActivate: [AuthenticationGuard],\r\n children: [\r\n { path: 'home', component: HomeComponent },\r\n\r\n {\r\n path: 'consumer-companies',\r\n component: ConsumerCompaniesListComponent,\r\n canActivate: [AuthorizationGuard],\r\n data: {\r\n roles:\r\n 'Administrator,Sales Manager,Operations Manager,Manager,Operations Administrator,Financial Executive,Financial Admin,Legal,Consumer Officer',\r\n },\r\n },\r\n {\r\n path: 'archived-consumer-companies',\r\n component: ArchivedConsumerCompaniesListComponent,\r\n canActivate: [AuthorizationGuard],\r\n data: {\r\n roles:\r\n 'Administrator,Sales Manager,Operations Manager,Manager,Operations Administrator,Financial Executive,Financial Admin,Legal,Consumer Officer',\r\n },\r\n },\r\n {\r\n path: 'consumer-company/:consumerCompanyId/edit',\r\n component: EditConsumerCompanyComponent,\r\n canActivate: [AuthorizationGuard],\r\n data: {\r\n roles:\r\n 'Administrator,Sales Manager,Operations Manager,Manager,Operations Administrator,Financial Executive,Financial Admin,Legal,Consumer Officer',\r\n },\r\n },\r\n\r\n {\r\n path: 'consumer-company-premises',\r\n component: ConsumerCompanyPremisesListComponent,\r\n canActivate: [AuthorizationGuard],\r\n data: {\r\n roles:\r\n 'Administrator,Sales Manager,Operations Manager,Manager,Operations Administrator,Consumer Officer',\r\n },\r\n },\r\n\r\n {\r\n path:\r\n 'consumer-company-premises/:consumerCompanyPremisesId/edit',\r\n component: EditConsumerCompanyPremisesComponent,\r\n canActivate: [AuthorizationGuard],\r\n data: {\r\n roles:\r\n 'Administrator,Sales Manager,Operations Manager,Manager,Operations Administrator,ConsumerApplication,Financial Executive,Financial Admin,Legal,Consumer Officer',\r\n },\r\n },\r\n {\r\n path: 'consumer/statement',\r\n component: ConsumerStatementComponent,\r\n },\r\n {\r\n path: 'consumer/meterupload',\r\n component: MeterManualUploadComponent,\r\n data: {\r\n roles: 'Administrator,Operations Administrator,Manager',\r\n },\r\n },\r\n\r\n {\r\n path: 'consumers/application',\r\n component: ConsumerApplicationComponent,\r\n canActivate: [AuthorizationGuard],\r\n data: { roles: 'ConsumerApplication' },\r\n runGuardsAndResolvers: 'always',\r\n },\r\n\r\n {\r\n path: 'consumers/prospects',\r\n component: ProspectsComponent,\r\n canActivate: [AuthorizationGuard],\r\n data: {\r\n roles:\r\n 'Administrator,Sales Manager,Operations Manager,Manager,Operations Administrator,SalesRep,Consumer Officer',\r\n },\r\n },\r\n\r\n {\r\n path: 'consumers/activation/:consumerCompanyPremisesId',\r\n component: ConsumerCompanyPremisesActivationComponent,\r\n canActivate: [AuthorizationGuard],\r\n data: {\r\n roles:\r\n 'Administrator,Sales Manager,Operations Manager,Manager,Operations Administrator',\r\n },\r\n },\r\n\r\n {\r\n path: 'consumers/prospect-evaluations',\r\n component: ProspectEvaluationComponent,\r\n canActivate: [AuthorizationGuard],\r\n data: {\r\n roles:\r\n 'Administrator,Sales Manager,Operations Manager,Manager,Operations Administrator,SalesRep,Consumer Officer',\r\n },\r\n },\r\n\r\n {\r\n path:\r\n 'consumers/prospect-evaluations/premises-details/:consumerCompanyPremisesId',\r\n component: ProspectEvaluationDetailsComponent,\r\n canActivate: [AuthorizationGuard],\r\n data: {\r\n roles:\r\n 'Administrator,Sales Manager,Operations Manager,Manager,Operations Administrator,SalesRep',\r\n },\r\n },\r\n\r\n {\r\n path: 'consumers/archived-prospect-evaluations',\r\n component: ArchivedProspectEvaluationComponent,\r\n canActivate: [AuthorizationGuard],\r\n data: {\r\n roles:\r\n 'Administrator,Sales Manager,Operations Manager,Manager,Operations Administrator,SalesRep,Consumer Officer',\r\n },\r\n },\r\n\r\n {\r\n path:\r\n 'consumers/prospect-ppa/generate/:consumerCompanyPremisesId',\r\n component: ProspectPpaComponent,\r\n canActivate: [AuthorizationGuard],\r\n data: {\r\n roles:\r\n 'Administrator,Sales Manager,Operations Manager,Manager,Operations Administrator,SalesRep,Consumer Officer',\r\n },\r\n },\r\n\r\n {\r\n path:\r\n 'consumers/prospect-evaluations/offer/:consumerCompanyPremisesId',\r\n component: ProspectOfferComponent,\r\n canActivate: [AuthorizationGuard],\r\n data: {\r\n roles:\r\n 'Administrator,Sales Manager,Operations Manager,Manager,Operations Administrator,SalesRep,Consumer Officer',\r\n },\r\n },\r\n\r\n {\r\n path: 'consumers/premises-schedule/:consumerCompanyPremisesId',\r\n component: PpaScheduleComponent,\r\n canActivate: [AuthorizationGuard],\r\n data: {\r\n roles:\r\n 'Administrator,Sales Manager,Operations Manager,Manager,Operations Administrator,SalesRep,Consumer Officer',\r\n },\r\n },\r\n\r\n {\r\n path: 'consumers/ppa-renewal-notifications',\r\n component: ConsumerPpaRenewalNotificationsComponent,\r\n canActivate: [AuthorizationGuard],\r\n data: {\r\n roles:\r\n 'Administrator,Sales Manager,Operations Manager,Manager,Operations Administrator',\r\n },\r\n },\r\n\r\n {\r\n path: 'consumers/prospects/new-prospect',\r\n component: ConsumerDetailsComponent,\r\n canActivate: [AuthorizationGuard],\r\n data: {\r\n roles:\r\n 'Administrator,Sales Manager,Operations Manager,Manager,Operations Administrator,SalesRep,Consumer Officer',\r\n },\r\n },\r\n\r\n {\r\n path: 'consumer/nersa-report',\r\n component: NersaConsumerReportComponent,\r\n canActivate: [AuthorizationGuard],\r\n data: {\r\n roles:\r\n 'Administrator,Operations Manager,Manager,Operations Administrator',\r\n },\r\n },\r\n\r\n {\r\n path: 'consumers/prospects/prospect-details/:consumerCompanyId',\r\n component: ProspectDetailsComponent,\r\n canActivate: [AuthorizationGuard],\r\n data: {\r\n roles:\r\n 'Administrator,Sales Manager,Operations Manager,Manager,Operations Administrator,SalesRep,Consumer Officer',\r\n },\r\n },\r\n {\r\n path: 'allocation',\r\n component: AllocationComponent,\r\n children: [\r\n {\r\n path: 'run',\r\n component: AllocationRunComponent,\r\n canActivate: [AuthorizationGuard],\r\n data: {\r\n roles:\r\n 'Administrator,Operations Manager,Manager,Operations Administrator,Financial Executive,Financial Admin,Distributor Officer',\r\n },\r\n },\r\n\r\n {\r\n path: ':distributorId/:isdemo/parameters',\r\n component: ParametersComponent,\r\n canActivate: [AuthorizationGuard],\r\n data: {\r\n roles:\r\n 'Administrator,Operations Manager,Manager,Operations Administrator,Financial Executive',\r\n },\r\n },\r\n\r\n {\r\n path: ':allocationRunId/warnings',\r\n component: AllocationRunWarningsComponent,\r\n canActivate: [AuthorizationGuard],\r\n data: {\r\n roles:\r\n 'Administrator,Operations Manager,Manager,Operations Administrator,Financial Executive,Financial Admin,Distributor Officer',\r\n },\r\n },\r\n\r\n {\r\n path: ':allocationRunId/send-warnings',\r\n component: AllocationSendWarningsComponent,\r\n canActivate: [AuthorizationGuard],\r\n data: {\r\n roles:\r\n 'Administrator,Operations Manager,Manager,Financial Executive',\r\n },\r\n },\r\n\r\n {\r\n path: ':allocationRunId/errors',\r\n component: AllocationRunErrorsComponent,\r\n canActivate: [AuthorizationGuard],\r\n data: {\r\n roles:\r\n 'Administrator,Operations Manager,Manager,Operations Administrator,Financial Executive,Financial Admin,Distributor Officer',\r\n },\r\n },\r\n\r\n {\r\n path: ':allocationRunId/summary/consumer',\r\n component: AllocationSummaryConsumerComponent,\r\n canActivate: [AuthorizationGuard],\r\n data: {\r\n roles:\r\n 'Administrator,Operations Manager,Manager,Operations Administrator,Financial Executive,Financial Admin,Distributor Officer',\r\n },\r\n },\r\n\r\n {\r\n path: ':allocationRunId/summary/generator',\r\n component: AllocationSummaryGeneratorComponent,\r\n canActivate: [AuthorizationGuard],\r\n data: {\r\n roles:\r\n 'Administrator,Operations Manager,Manager,Operations Administrator,Financial Executive,Financial Admin,Distributor Officer',\r\n },\r\n },\r\n\r\n {\r\n path: ':allocationRunId/details',\r\n component: AllocationRunDetailComponent,\r\n canActivate: [AuthorizationGuard],\r\n data: {\r\n roles:\r\n 'Administrator,Operations Manager,Manager,Operations Administrator,Financial Executive,Financial Admin,Distributor Officer',\r\n },\r\n runGuardsAndResolvers: 'always',\r\n },\r\n ],\r\n },\r\n\r\n {\r\n path: 'generators/application/holding-company',\r\n component: CompanyDetailsComponent,\r\n canActivate: [AuthorizationGuard],\r\n data: { roles: 'GeneratorApplication' },\r\n },\r\n\r\n {\r\n path: 'generators/application/spv-details',\r\n component: SpvDetailsComponent,\r\n canActivate: [AuthorizationGuard],\r\n data: { roles: 'GeneratorApplication' },\r\n },\r\n\r\n {\r\n path: 'generators/application/nda-agreement',\r\n component: NdaAgreementComponent,\r\n canActivate: [AuthorizationGuard],\r\n data: { roles: 'GeneratorApplication' },\r\n },\r\n\r\n {\r\n path: 'generators/application/nda-agreement-template',\r\n component: NdaAgreementDownloadComponent,\r\n canActivate: [AuthorizationGuard],\r\n data: { roles: 'GeneratorApplication' },\r\n },\r\n\r\n {\r\n path: 'generators/application/facility-details',\r\n component: FacilityDetailsComponent,\r\n canActivate: [AuthorizationGuard],\r\n data: { roles: 'GeneratorApplication' },\r\n },\r\n\r\n {\r\n path: 'generators/application/projects',\r\n component: GeneratorApplicationProjectListComponent,\r\n canActivate: [AuthorizationGuard],\r\n data: { roles: 'GeneratorApplication' },\r\n },\r\n\r\n {\r\n path: 'generators/application/project/:generatorProjectId/edit',\r\n component: GeneratorApplicationProjectEditComponent,\r\n canActivate: [AuthorizationGuard],\r\n data: { roles: 'GeneratorApplication' },\r\n },\r\n\r\n {\r\n path: 'generators/application/project/create',\r\n component: GeneratorApplicationProjectEditComponent,\r\n canActivate: [AuthorizationGuard],\r\n data: { roles: 'GeneratorApplication' },\r\n },\r\n\r\n {\r\n path:\r\n 'generators/application/project/:generatorProjectId/facilities/:generatorProjectFacilityId/edit',\r\n component: GeneratorApplicationProjectFacilityEditComponent,\r\n canActivate: [AuthorizationGuard],\r\n data: { roles: 'GeneratorApplication' },\r\n },\r\n\r\n {\r\n path:\r\n 'generators/application/project/:generatorProjectId/facilities/create',\r\n component: GeneratorApplicationProjectFacilityEditComponent,\r\n canActivate: [AuthorizationGuard],\r\n data: { roles: 'GeneratorApplication' },\r\n },\r\n\r\n {\r\n path: 'information/faq',\r\n component: FrequentlyAskedQuestionsComponent,\r\n canActivate: [AuthorizationGuard],\r\n data: { roles: 'GeneratorApplication' },\r\n },\r\n\r\n {\r\n path: 'information/links',\r\n component: UsefulLinksComponent,\r\n canActivate: [AuthorizationGuard],\r\n data: { roles: 'GeneratorApplication' },\r\n },\r\n\r\n {\r\n path: 'information/documents',\r\n component: DownloadableDocumentsComponent,\r\n canActivate: [AuthorizationGuard],\r\n data: { roles: 'GeneratorApplication,ConsumerApplication' },\r\n },\r\n\r\n {\r\n path: 'generators/application/:facilityId/generator-termsheet',\r\n component: GeneratorTermsheetComponent,\r\n canActivate: [AuthorizationGuard],\r\n data: {\r\n roles:\r\n 'Administrator,Operations Manager,Manager,Operations Administrator,Generator Officer',\r\n },\r\n },\r\n\r\n {\r\n path: 'generators/application/:facilityId/generator-ppa',\r\n component: GeneratorPpaComponent,\r\n canActivate: [AuthorizationGuard],\r\n data: {\r\n roles:\r\n 'Administrator,Operations Manager,Manager,Operations Administrator,Generator Officer',\r\n },\r\n },\r\n\r\n {\r\n path: 'generators/application/:facilityId/ppa-schedule',\r\n component: GeneratorPpaScheduleComponent,\r\n canActivate: [AuthorizationGuard],\r\n data: {\r\n roles:\r\n 'Administrator,Operations Manager,Manager,Operations Administrator,Generator Officer',\r\n },\r\n },\r\n\r\n {\r\n path: 'generators/activation/:generatorProjectFacilityId',\r\n component: GeneratorProjectFacilityActivationComponent,\r\n canActivate: [AuthorizationGuard],\r\n data: {\r\n roles:\r\n 'Administrator,Operations Manager,Manager,Operations Administrator',\r\n },\r\n },\r\n\r\n {\r\n path: 'generators/evaluation',\r\n component: GeneratorEvaluationComponent,\r\n canActivate: [AuthorizationGuard],\r\n data: {\r\n roles:\r\n 'Administrator,Sales Manager,Operations Manager,Manager,Operations Administrator,Generator Officer',\r\n },\r\n },\r\n\r\n {\r\n path: 'generators/archived-evaluation',\r\n component: ArchivedGeneratorEvaluationComponent,\r\n canActivate: [AuthorizationGuard],\r\n data: {\r\n roles:\r\n 'Administrator,Sales Manager,Operations Manager,Manager,Operations Administrator,Generator Officer',\r\n },\r\n },\r\n\r\n {\r\n path: 'generator/increase-notifications',\r\n component: GeneratorNotificationsComponent,\r\n canActivate: [AuthorizationGuard],\r\n data: {\r\n roles:\r\n 'Administrator,Sales Manager,Operations Manager,Manager,Operations Administrator',\r\n },\r\n },\r\n\r\n {\r\n path: 'generator/ppa-renewal-notifications',\r\n component: GeneratorPpaRenewalNotificationsComponent,\r\n canActivate: [AuthorizationGuard],\r\n data: {\r\n roles:\r\n 'Administrator,Sales Manager,Operations Manager,Manager,Operations Administrator',\r\n },\r\n },\r\n\r\n {\r\n path: 'generator/increase-notifications/:facilityId/details',\r\n component: GeneratorIncreaseNotificationDetailsComponent,\r\n canActivate: [AuthorizationGuard],\r\n data: {\r\n roles:\r\n 'Administrator,Sales Manager,Operations Manager,Manager,Operations Administrator',\r\n },\r\n },\r\n\r\n {\r\n path: 'generators/evaluation/:facilityId/details',\r\n component: GeneratorEvaluationDetailsComponent,\r\n canActivate: [AuthorizationGuard],\r\n data: {\r\n roles:\r\n 'Administrator,Operations Manager,Manager,Operations Administrator,Generator Officer',\r\n },\r\n },\r\n\r\n {\r\n path: 'administration/user',\r\n component: UserListComponent,\r\n canActivate: [AuthorizationGuard],\r\n data: { roles: 'Administrator,Operations Manager,Manager' },\r\n },\r\n\r\n {\r\n path: 'administration/user/create',\r\n component: CreateUserComponent,\r\n canActivate: [AuthorizationGuard],\r\n data: { roles: 'Administrator,Operations Manager,Manager' },\r\n },\r\n\r\n {\r\n path: 'administration/user/:userId/edit',\r\n component: EditUserComponent,\r\n canActivate: [AuthorizationGuard],\r\n data: { roles: 'Administrator,Operations Manager,Manager' },\r\n },\r\n\r\n {\r\n path: 'administration/integrator-providers',\r\n component: ProvidersListComponent,\r\n canActivate: [AuthorizationGuard],\r\n data: {\r\n roles:\r\n 'Administrator,Operations Manager,Manager,Operations Administrator,Sales Manager',\r\n },\r\n },\r\n\r\n {\r\n path: 'administration/integrator/:integratorProviderId/details',\r\n component: ProvidersDetailComponent,\r\n canActivate: [AuthorizationGuard],\r\n data: {\r\n roles:\r\n 'Administrator,Operations Manager,Manager,Operations Administrator,Sales Manager',\r\n },\r\n },\r\n\r\n {\r\n path: 'administration/sales-rep',\r\n component: SalesRepListComponent,\r\n canActivate: [AuthorizationGuard],\r\n data: {\r\n roles:\r\n 'Administrator,Operations Manager,Manager,Sales Manager',\r\n },\r\n },\r\n\r\n {\r\n path: 'administration/sales-rep/create',\r\n component: CreateSalesRepComponent,\r\n canActivate: [AuthorizationGuard],\r\n data: {\r\n roles:\r\n 'Administrator,Operations Manager,Manager,Sales Manager',\r\n },\r\n },\r\n\r\n {\r\n path: 'administration/sales-rep/:salesRepId/edit',\r\n component: EditSalesRepComponent,\r\n canActivate: [AuthorizationGuard],\r\n data: {\r\n roles:\r\n 'Administrator,Operations Manager,Manager,Sales Manager',\r\n },\r\n },\r\n\r\n {\r\n path: 'distributor',\r\n component: DistributorListComponent,\r\n canActivate: [AuthorizationGuard],\r\n data: {\r\n roles:\r\n 'Administrator,Operations Manager,Manager,Operations Administrator,Legal,Distributor Officer',\r\n },\r\n },\r\n\r\n {\r\n path: 'distributor/create',\r\n component: CreateDistributorComponent,\r\n canActivate: [AuthorizationGuard],\r\n data: {\r\n roles:\r\n 'Administrator,Operations Manager,Manager,Operations Administrator,Distributor Officer',\r\n },\r\n },\r\n\r\n {\r\n path: 'distributor/:distributorId/edit',\r\n component: EditDistributorComponent,\r\n canActivate: [AuthorizationGuard],\r\n data: {\r\n roles:\r\n 'Administrator,Operations Manager,Manager,Operations Administrator,Legal,Distributor Officer',\r\n },\r\n },\r\n\r\n {\r\n path:\r\n 'distributor/:distributorId/bulk-meter/:distributorBulkMeterId',\r\n component: BulkMeterDetailsComponent,\r\n canActivate: [AuthorizationGuard],\r\n data: {\r\n roles:\r\n 'Administrator,Operations Manager,Manager,Operations Administrator,Legal,Distributor Officer',\r\n },\r\n },\r\n\r\n {\r\n path: 'distributor/eskom',\r\n component: EditDistributorComponent,\r\n canActivate: [AuthorizationGuard],\r\n data: {\r\n roles:\r\n 'Administrator,Operations Manager,Manager,Operations Administrator,Distributor Officer',\r\n },\r\n },\r\n\r\n {\r\n path: 'sapExport',\r\n component: SapExportComponent,\r\n canActivate: [AuthorizationGuard],\r\n data: {\r\n roles:\r\n 'Administrator,Operations Manager,Manager,Operations Administrator,Financial Executive,Financial Admin',\r\n },\r\n },\r\n\r\n {\r\n path: 'generator-company',\r\n component: GeneratorCompaniesListComponent,\r\n canActivate: [AuthorizationGuard],\r\n data: {\r\n roles:\r\n 'Administrator,Operations Manager,Manager,Operations Administrator,Financial Executive,Financial Admin,Legal,Generator Officer',\r\n },\r\n },\r\n\r\n {\r\n path: 'archived-generator-company',\r\n component: ArchivedGeneratorCompaniesListComponent,\r\n canActivate: [AuthorizationGuard],\r\n data: {\r\n roles:\r\n 'Administrator,Operations Manager,Manager,Operations Administrator,Financial Executive,Financial Admin,Legal,Generator Officer',\r\n },\r\n },\r\n\r\n {\r\n path: 'generator-company/:holdingCompanyId/edit',\r\n component: EditGeneratorCompanyComponent,\r\n canActivate: [AuthorizationGuard],\r\n data: {\r\n roles:\r\n 'Administrator,Operations Manager,Manager,Operations Administrator,Financial Executive,Financial Admin,Legal,Generator Officer',\r\n },\r\n },\r\n\r\n {\r\n path: 'generator-project/:generatorProjectId/edit',\r\n component: EditGeneratorProjectComponent,\r\n canActivate: [AuthorizationGuard],\r\n data: {\r\n roles:\r\n 'Administrator,Operations Manager,Manager,Operations Administrator,Financial Executive,Financial Admin,Legal,Generator Officer',\r\n },\r\n },\r\n\r\n {\r\n path: 'generator/nersa-report',\r\n component: NersaGeneratorReportComponent,\r\n canActivate: [AuthorizationGuard],\r\n data: {\r\n roles:\r\n 'Administrator,Operations Manager,Manager,Operations Administrator',\r\n },\r\n },\r\n\r\n {\r\n path: 'recs/:allocationRunId',\r\n component: RecsComponent,\r\n canActivate: [AuthorizationGuard],\r\n data: {\r\n roles:\r\n 'Administrator,Operations Manager,Manager,Operations Administrator,Financial Executive',\r\n },\r\n },\r\n\r\n {\r\n path: 'recs-consumer-list/:allocationRunId',\r\n component: RecsConsumerListComponent,\r\n canActivate: [AuthorizationGuard],\r\n data: {\r\n roles:\r\n 'Administrator,Operations Manager,Manager,Operations Administrator,Financial Executive',\r\n },\r\n },\r\n\r\n {\r\n path: 'general-maintenance/cpi',\r\n component: CpiComponent,\r\n canActivate: [AuthorizationGuard],\r\n data: {\r\n roles:\r\n 'Administrator,Operations Manager,Manager,Operations Administrator',\r\n },\r\n },\r\n\r\n {\r\n path: 'general-maintenance/document-maintenance',\r\n component: DocumentMaintenanceComponent,\r\n canActivate: [AuthorizationGuard],\r\n data: {\r\n roles:\r\n 'Administrator,Operations Manager,Manager,Operations Administrator,Legal',\r\n },\r\n },\r\n\r\n {\r\n path: 'general-maintenance/system-settings',\r\n component: SettingsComponent,\r\n canActivate: [AuthorizationGuard],\r\n data: {\r\n roles:\r\n 'Administrator,Operations Manager,Manager,Operations Administrator',\r\n },\r\n },\r\n {\r\n path: 'general-maintenance/vat-settings',\r\n component: VatSettingsComponent,\r\n canActivate: [AuthorizationGuard],\r\n data: {\r\n roles:\r\n 'Administrator,Operations Manager,Manager,Operations Administrator',\r\n },\r\n },\r\n {\r\n path: 'general-maintenance/public-holidays',\r\n component: PublicHolidayComponent,\r\n canActivate: [AuthorizationGuard],\r\n data: {\r\n roles:\r\n 'Administrator,Operations Manager,Manager,Operations Administrator',\r\n },\r\n },\r\n\r\n {\r\n path:\r\n 'generator-project-facility/:generatorProjectFacilityId/edit/distributor-nominations',\r\n component: GeneratorProjectFacilityDistributorNominationsComponent,\r\n canActivate: [AuthorizationGuard],\r\n data: {\r\n roles:\r\n 'Administrator,Operations Manager,Manager,Operations Administrator',\r\n },\r\n },\r\n\r\n {\r\n path: 'report/generator-forecast-report',\r\n component: GeneratorForecastReportComponent,\r\n canActivate: [AuthorizationGuard],\r\n data: {\r\n roles:\r\n 'Administrator,Operations Manager,Manager,Financial Executive,Generator Officer,Operations Administrator',\r\n },\r\n },\r\n\r\n {\r\n path: 'report/consumer-and-revenue-forecast-report',\r\n component: ConsumerAndRevenueForecastReportComponent,\r\n canActivate: [AuthorizationGuard],\r\n data: {\r\n roles:\r\n 'Administrator,Operations Manager,Manager,Financial Executive,Sales Manager',\r\n },\r\n },\r\n\r\n {\r\n path: 'report/distributor-activation-report',\r\n component: DistributorActivationReportComponent,\r\n canActivate: [AuthorizationGuard],\r\n data: {\r\n roles:\r\n 'Administrator,Operations Manager,Manager,Financial Executive,Sales Manager,Operations Administrator',\r\n },\r\n },\r\n\r\n {\r\n path: 'report/management-report',\r\n component: ManagementReportComponent,\r\n canActivate: [AuthorizationGuard],\r\n data: {\r\n roles:\r\n 'Administrator,Operations Manager,Manager,Financial Executive,Sales Manager,Operations Administrator',\r\n },\r\n },\r\n\r\n {\r\n path: 'report/sales-rep-report',\r\n component: SalesRepReportComponent,\r\n canActivate: [AuthorizationGuard],\r\n data: {\r\n roles:\r\n 'Administrator,Operations Manager,Manager,Financial Executive,Sales Manager,Operations Administrator',\r\n },\r\n },\r\n\r\n {\r\n path: 'report/application-report',\r\n component: ApplicationReportsComponent,\r\n canActivate: [AuthorizationGuard],\r\n data: {\r\n roles:\r\n 'Administrator,Operations Manager,Manager,Operations Administrator',\r\n },\r\n },\r\n\r\n {\r\n path: 'report/consumer-sales-report',\r\n component: ConsumerSalesReportsComponent,\r\n canActivate: [AuthorizationGuard],\r\n data: {\r\n roles:\r\n 'Administrator,Operations Manager,Manager,Operations Administrator',\r\n },\r\n },\r\n\r\n {\r\n path: 'report/generator-report',\r\n component: GeneratorReportsComponent,\r\n canActivate: [AuthorizationGuard],\r\n data: {\r\n roles:\r\n 'Administrator,Operations Manager,Manager,Operations Administrator',\r\n },\r\n },\r\n\r\n {\r\n path:\r\n 'report/consumer-forecast-report/:consumerForecastId/warnings',\r\n component: ConsumerForecastWarningsComponent,\r\n canActivate: [AuthorizationGuard],\r\n data: {\r\n roles:\r\n 'Administrator,Operations Manager,Manager,Financial Executive,Sales Manager',\r\n },\r\n },\r\n\r\n {\r\n path:\r\n 'report/revenue-forecast-report/:revenueForecastId/warnings',\r\n component: RevenueForecastWarningsComponent,\r\n canActivate: [AuthorizationGuard],\r\n data: {\r\n roles:\r\n 'Administrator,Operations Manager,Manager,Financial Executive,Sales Manager',\r\n },\r\n },\r\n\r\n {\r\n path: 'report/forecast-parameters',\r\n component: ForecastParametersComponent,\r\n canActivate: [AuthorizationGuard],\r\n data: {\r\n roles:\r\n 'Administrator,Operations Manager,Manager,Operations Administrator',\r\n },\r\n },\r\n {\r\n path: 'report/forecast',\r\n component: ForecastComponent,\r\n canActivate: [AuthorizationGuard],\r\n data: { roles: 'Administrator,Operations Manager,Manager' },\r\n },\r\n {\r\n path: 'report/forecast/:forecastParameterId',\r\n component: ForecastComponent,\r\n canActivate: [AuthorizationGuard],\r\n data: { roles: 'Administrator,Operations Manager,Manager' },\r\n },\r\n {\r\n path: 'report/forecast-runs',\r\n component: ForecastRunComponent,\r\n canActivate: [AuthorizationGuard],\r\n data: { roles: 'Administrator,Operations Manager,Manager' },\r\n },\r\n {\r\n path: 'report/allocation-forecast',\r\n component: AllocationForecastRunComponent,\r\n canActivate: [AuthorizationGuard],\r\n data: { roles: 'Administrator,Operations Manager,Manager' },\r\n },\r\n {\r\n path: 'report/allocation-forecast/:forecastParameterId',\r\n component: AllocationForecastRunComponent,\r\n canActivate: [AuthorizationGuard],\r\n data: { roles: 'Administrator,Operations Manager,Manager' },\r\n },\r\n {\r\n path: 'general-maintenance/demo-settings',\r\n component: DemoSettingsComponent,\r\n canActivate: [AuthorizationGuard],\r\n data: {\r\n roles:\r\n 'Administrator,Operations Manager,Manager,Operations Administrator',\r\n },\r\n },\r\n {\r\n path: 'invoices',\r\n component: AllocationComponent,\r\n children: [\r\n {\r\n path: 'batch-summary',\r\n component: InvoiceBatchSummaryComponent,\r\n canActivate: [AuthorizationGuard],\r\n data: {\r\n roles:\r\n 'Administrator,Operations Manager,Manager,Operations Administrator,Financial Executive,Financial Admin,Distributor Officer',\r\n },\r\n },\r\n\r\n {\r\n path: 'batch/:invoiceBatchId',\r\n component: InvoiceBatchDetailsComponent,\r\n canActivate: [AuthorizationGuard],\r\n data: {\r\n roles:\r\n 'Administrator,Operations Manager,Manager,Operations Administrator,Financial Executive',\r\n },\r\n },\r\n {\r\n path: 'batch/:tab/:invoiceBatchId',\r\n component: InvoiceBatchDetailsComponent,\r\n canActivate: [AuthorizationGuard],\r\n data: {\r\n roles:\r\n 'Administrator,Operations Manager,Manager,Operations Administrator,Financial Executive',\r\n },\r\n },\r\n ],\r\n },\r\n {\r\n path: 'invoice/:invoiceId',\r\n component: InvoiceDetailsComponent,\r\n canActivate: [AuthorizationGuard],\r\n data: {\r\n roles:\r\n 'Administrator,Operations Manager,Manager,Operations Administrator,Financial Executive',\r\n },\r\n },\r\n {\r\n path: 'invoice/:tab/:invoiceBatchId/:invoiceId',\r\n component: InvoiceDetailsComponent,\r\n canActivate: [AuthorizationGuard],\r\n data: {\r\n roles:\r\n 'Administrator,Operations Manager,Manager,Operations Administrator,Financial Executive',\r\n },\r\n },\r\n ],\r\n },\r\n { path: 'forbidden', component: ForbiddenComponent },\r\n { path: 'maintenance-mode', component: MaintenanceComponent },\r\n { path: '**', component: PageNotFoundComponent },\r\n];\r\n","import {\r\n throwError as observableThrowError,\r\n Observable,\r\n BehaviorSubject,\r\n} from 'rxjs';\r\n\r\nimport { take, filter, catchError, switchMap, finalize } from 'rxjs/operators';\r\nimport { Injectable, Injector } from '@angular/core';\r\nimport {\r\n HttpEvent,\r\n HttpHandler,\r\n HttpInterceptor,\r\n HttpRequest,\r\n HttpErrorResponse,\r\n} from '@angular/common/http';\r\nimport { AuthenticationService } from '../service/authentication.service';\r\nimport { isNullOrUndefined } from 'util';\r\n\r\n@Injectable()\r\nexport class TokenInterceptor implements HttpInterceptor {\r\n private isRefreshingToken: boolean = false;\r\n private tokenSubject: BehaviorSubject = new BehaviorSubject(\r\n null\r\n );\r\n\r\n constructor(private injector: Injector) {}\r\n\r\n public intercept(\r\n request: HttpRequest,\r\n next: HttpHandler\r\n ): Observable> {\r\n request = this.addToken(request);\r\n\r\n if (\r\n isNullOrUndefined(request.headers.get('enctype')) ||\r\n request.headers.get('enctype') !== 'multipart/form-data'\r\n ) {\r\n request = request.clone({\r\n setHeaders: {\r\n 'Content-Type': 'application/json',\r\n },\r\n });\r\n }\r\n return next.handle(request).pipe(\r\n catchError((error) => {\r\n if (error instanceof HttpErrorResponse) {\r\n switch ((error as HttpErrorResponse).status) {\r\n case 400:\r\n return this.handle400Error(error) as Observable<\r\n HttpEvent\r\n >;\r\n case 401:\r\n return this.handle401Error(\r\n request,\r\n next\r\n ) as Observable>;\r\n default:\r\n return this.defaultErrorHandling(\r\n error\r\n ) as Observable>;\r\n }\r\n } else {\r\n // noinspection JSDeprecatedSymbols\r\n return observableThrowError(error) as Observable<\r\n HttpEvent\r\n >;\r\n }\r\n })\r\n );\r\n }\r\n\r\n // noinspection JSMethodCanBeStatic\r\n private addToken(req: HttpRequest): HttpRequest {\r\n return req.clone({\r\n setHeaders: {\r\n Authorization: `Bearer ${this.injector\r\n .get(AuthenticationService)\r\n .getToken()}`,\r\n },\r\n });\r\n }\r\n\r\n private handle401Error(req: HttpRequest, next: HttpHandler) {\r\n if (!this.isRefreshingToken) {\r\n this.isRefreshingToken = true;\r\n\r\n // Reset here so that the following requests wait until the token\r\n // comes back from the refreshToken call.\r\n this.tokenSubject.next(null);\r\n\r\n return this.injector\r\n .get(AuthenticationService)\r\n .refreshToken()\r\n .pipe(\r\n switchMap((newToken: string) => {\r\n if (newToken) {\r\n this.tokenSubject.next(newToken);\r\n req = this.addToken(req);\r\n return next.handle(req);\r\n }\r\n\r\n // If we don't get a new token, we are in trouble so logout.\r\n return this.logoutUser();\r\n }),\r\n catchError(() => {\r\n // If there is an exception calling 'refreshToken', bad news so logout.\r\n return this.logoutUser();\r\n }),\r\n finalize(() => {\r\n this.isRefreshingToken = false;\r\n })\r\n );\r\n } else {\r\n return this.tokenSubject.pipe(\r\n filter((token) => token != null),\r\n take(1),\r\n switchMap(() => {\r\n return next.handle(this.addToken(req));\r\n })\r\n );\r\n }\r\n }\r\n\r\n // noinspection JSMethodCanBeStatic\r\n private defaultErrorHandling(error) {\r\n // noinspection JSDeprecatedSymbols\r\n return observableThrowError(error);\r\n }\r\n\r\n private handle400Error(error) {\r\n if (\r\n error &&\r\n error.status === 400 &&\r\n error.error &&\r\n error.error.error === 'invalid_grant'\r\n ) {\r\n // If we get a 400 and the error message is 'invalid_grant', the token is no longer valid so logout.\r\n return this.logoutUser();\r\n }\r\n // noinspection JSDeprecatedSymbols\r\n return observableThrowError(error);\r\n }\r\n\r\n private logoutUser() {\r\n this.injector.get(AuthenticationService).logout();\r\n // noinspection JSDeprecatedSymbols\r\n return observableThrowError('');\r\n }\r\n}\r\n","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { AuthenticationService } from '../../authentication/service/authentication.service';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { Subscription } from 'rxjs';\r\nimport { CommonService } from '../../common/common-service';\r\n\r\n@Component({\r\n selector: 'app-navigation-bar',\r\n templateUrl: './navigation-bar.component.html',\r\n styleUrls: ['./navigation-bar.component.scss'],\r\n})\r\nexport class NavigationBarComponent implements OnInit, OnDestroy {\r\n public isCollapsed = true;\r\n public loggedIn: boolean;\r\n public errorMessage = '';\r\n private loggedInSubscription: Subscription;\r\n\r\n constructor(\r\n private authenticationService: AuthenticationService,\r\n public commonService: CommonService\r\n ) {\r\n this.loggedIn = authenticationService.isLoggedIn();\r\n }\r\n\r\n public ngOnInit(): void {\r\n this.loggedInSubscription = this.authenticationService\r\n .getLoggedInObservable()\r\n .subscribe(\r\n (loggedIn) => {\r\n this.loggedIn = loggedIn;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n if (!isNullOrUndefined(this.loggedInSubscription)) {\r\n this.loggedInSubscription.unsubscribe();\r\n }\r\n }\r\n}\r\n","import { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'loader',\r\n templateUrl: './loader.component.html',\r\n styleUrls: ['./loader.component.scss'],\r\n})\r\nexport class LoaderComponent {\r\n @Input('loadingText')\r\n public loadingText: string;\r\n @Input('loaderSize')\r\n public loaderSize: string;\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({ name: 'commadumper' })\r\nexport class NumberFormatPipe implements PipeTransform {\r\n public transform(value: string): string {\r\n if (!value) {\r\n return '';\r\n }\r\n return value.split(',').join(' ');\r\n }\r\n}\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'document',\r\n templateUrl: './document.component.html',\r\n styleUrls: ['./document.component.scss'],\r\n})\r\nexport class DocumentComponent {}\r\n","import { DocumentMetadata } from './document-metadata.model';\r\nimport { EntityLookup } from './entity-lookup.model';\r\n\r\nexport class Document {\r\n constructor(\r\n public fileName: string,\r\n public documentId?: number,\r\n public path?: string,\r\n public documentTypeLookupId?: string,\r\n public documentType?: EntityLookup,\r\n public createdBy?: string,\r\n public createdDateTime?: string,\r\n public documentMetadata?: DocumentMetadata[]\r\n ) {}\r\n}\r\n","import {\r\n Component,\r\n OnInit,\r\n Input,\r\n ViewChild,\r\n ElementRef,\r\n Output,\r\n EventEmitter,\r\n OnChanges,\r\n SimpleChanges,\r\n AfterViewInit,\r\n} from '@angular/core';\r\nimport {\r\n HttpClient,\r\n HttpRequest,\r\n HttpEventType,\r\n HttpResponse,\r\n} from '@angular/common/http';\r\n\r\nimport { isNullOrUndefined } from 'util';\r\nimport { HttpHeaders } from '@angular/common/http';\r\nimport {\r\n FormControl,\r\n FormGroup,\r\n ValidatorFn,\r\n Validators,\r\n} from '@angular/forms';\r\nimport { Document } from '../../../model/document.model';\r\nimport { saveAs } from 'file-saver/FileSaver';\r\nimport { DocumentMetadata } from '../../../model/document-metadata.model';\r\nimport { CommonService } from '../../../common/common-service';\r\nimport { ToastrService } from 'ngx-toastr';\r\n\r\n@Component({\r\n selector: 'document-upload',\r\n templateUrl: './document-upload.component.html',\r\n styleUrls: ['./document-upload.component.scss', '../../form.styles.scss'],\r\n})\r\nexport class DocumentUploadComponent\r\n implements OnInit, OnChanges, AfterViewInit {\r\n @ViewChild('file')\r\n public file: ElementRef;\r\n @Input('containerForm')\r\n public containerForm: FormGroup;\r\n @Input('documentType')\r\n public documentType: string;\r\n @Input('path')\r\n public path: string;\r\n @Input('pathValues')\r\n public pathValues: string[];\r\n @Input('documentMetadata')\r\n public documentMetadata: DocumentMetadata[];\r\n @Input('listenerId')\r\n public listenerId: string;\r\n @Input('disable')\r\n public disable: boolean = false;\r\n @Input('existingDocument')\r\n public existingDocument: Document;\r\n @Input('required')\r\n public required = true;\r\n @Output()\r\n public successfulUpload = new EventEmitter();\r\n public retrievingFile: boolean;\r\n public uploadOther = false;\r\n public uploadForm: FormGroup;\r\n public fileFormControl: FormControl;\r\n public fileInputFormControl: FormControl;\r\n public uploadProgress: number;\r\n public processingFile: boolean;\r\n public processed: boolean;\r\n public processSuccess: boolean;\r\n public maxFileSize = 200000000000; // Blob 200GB File limit\r\n\r\n public uploadedDocumentId: number;\r\n\r\n constructor(\r\n private http: HttpClient,\r\n protected toastr: ToastrService,\r\n public commonService: CommonService\r\n ) {}\r\n\r\n public ngOnInit(): void {\r\n this.fileFormControl = new FormControl({\r\n value: null,\r\n disabled: this.disable,\r\n });\r\n const validators: ValidatorFn[] = [this.fileSizeValidator.bind(this)];\r\n if (this.required) {\r\n validators.push(Validators.required);\r\n }\r\n this.fileInputFormControl = new FormControl(\r\n {\r\n value: null,\r\n disabled: this.disable,\r\n },\r\n validators\r\n );\r\n this.uploadForm = new FormGroup({\r\n fileFormControl: this.fileFormControl,\r\n fileInputFormControl: this.fileInputFormControl,\r\n existingFile: new FormControl({\r\n value: null,\r\n disabled: true,\r\n }),\r\n });\r\n const num = Object.keys(this.containerForm.controls).filter((field) =>\r\n field.startsWith(this.listenerId + 'Upload')\r\n ).length;\r\n this.containerForm.addControl(\r\n this.listenerId + 'Upload' + num,\r\n this.uploadForm\r\n );\r\n if (this.existingDocument) {\r\n this.uploadedDocumentId = this.existingDocument.documentId;\r\n if (this.fileInputFormControl) {\r\n this.fileInputFormControl.patchValue(\r\n this.existingDocument.fileName\r\n );\r\n }\r\n this.reevaluate();\r\n }\r\n }\r\n\r\n public ngAfterViewInit(): void {\r\n if (this.existingDocument) {\r\n this.uploadForm.controls.existingFile.patchValue(\r\n this.existingDocument.fileName\r\n );\r\n }\r\n }\r\n\r\n public ngOnChanges(changes: SimpleChanges): void {\r\n if (\r\n changes['disable'] &&\r\n !isNullOrUndefined(this.fileFormControl) &&\r\n !isNullOrUndefined(this.fileInputFormControl)\r\n ) {\r\n const value = changes['disable'].currentValue;\r\n if (value) {\r\n this.fileFormControl.disable();\r\n this.fileFormControl.markAsTouched();\r\n this.fileFormControl.updateValueAndValidity();\r\n\r\n this.fileInputFormControl.disable();\r\n this.fileInputFormControl.markAsTouched();\r\n this.fileInputFormControl.updateValueAndValidity();\r\n } else {\r\n this.fileFormControl.enable();\r\n this.fileFormControl.markAsTouched();\r\n this.fileFormControl.updateValueAndValidity();\r\n\r\n this.fileInputFormControl.enable();\r\n this.fileInputFormControl.markAsTouched();\r\n this.fileInputFormControl.setValidators([Validators.required]);\r\n this.fileInputFormControl.updateValueAndValidity();\r\n }\r\n }\r\n }\r\n\r\n public uploadAnother(): void {\r\n this.uploadOther = !this.uploadOther;\r\n\r\n if (this.uploadOther) {\r\n this.fileInputFormControl.setValidators([Validators.required]);\r\n this.fileInputFormControl.updateValueAndValidity();\r\n } else {\r\n this.fileInputFormControl.setValidators([]);\r\n this.fileInputFormControl.updateValueAndValidity();\r\n }\r\n }\r\n\r\n public onFileChange(): void {\r\n this.fileInputFormControl.setValue(\r\n this.file.nativeElement.files[0]\r\n ? this.file.nativeElement.files[0].name\r\n : null\r\n );\r\n }\r\n\r\n public fileSizeValidator(): { [s: string]: boolean } {\r\n if (\r\n !isNullOrUndefined(this.file) &&\r\n !isNullOrUndefined(this.file.nativeElement.files[0]) &&\r\n this.maxFileSize < this.file.nativeElement.files[0].size\r\n ) {\r\n return { maxfilefizeexceeded: true };\r\n }\r\n return null;\r\n }\r\n\r\n public upload(): void {\r\n this.uploadProgress = 0;\r\n this.processingFile = false;\r\n this.processed = false;\r\n\r\n const formData = new FormData();\r\n formData.append(\r\n this.file.nativeElement.files[0].name,\r\n this.file.nativeElement.files[0]\r\n );\r\n formData.append(\r\n 'documentMetadata',\r\n JSON.stringify(this.documentMetadata)\r\n );\r\n formData.append('path', this.path);\r\n formData.append('pathValues', JSON.stringify(this.pathValues));\r\n formData.append('documentType', this.documentType);\r\n const headers = new HttpHeaders({\r\n enctype: 'multipart/form-data',\r\n });\r\n\r\n const req = new HttpRequest(\r\n 'POST',\r\n API_URL + 'document/UploadAsync',\r\n formData,\r\n {\r\n headers,\r\n reportProgress: true,\r\n }\r\n );\r\n\r\n this.http.request(req).subscribe(\r\n (event) => {\r\n if (event.type === HttpEventType.UploadProgress) {\r\n this.uploadProgress = Math.round(\r\n (100 * event.loaded) / event.total\r\n );\r\n this.processingFile = true;\r\n } else if (event instanceof HttpResponse) {\r\n this.processingFile = false;\r\n this.processed = true;\r\n this.processSuccess = true;\r\n this.toastr.success(\r\n 'Successfully uploaded ' +\r\n this.file.nativeElement.files[0].name\r\n );\r\n this.uploadedDocumentId = event.body['documentId'];\r\n const newlyUploadedDocument = new Document(\r\n this.file.nativeElement.files[0].name,\r\n this.uploadedDocumentId,\r\n undefined,\r\n undefined,\r\n undefined,\r\n undefined,\r\n new Date().toDateString(),\r\n undefined\r\n );\r\n this.successfulUpload.emit({\r\n listenerId: this.listenerId,\r\n value: newlyUploadedDocument,\r\n });\r\n this.uploadForm.controls.existingFile.patchValue(\r\n newlyUploadedDocument.fileName\r\n );\r\n this.reevaluate();\r\n }\r\n },\r\n (error: HttpResponse) => {\r\n this.processingFile = false;\r\n this.processed = true;\r\n this.processSuccess = false;\r\n if (isNullOrUndefined(error.body)) {\r\n this.toastr.error(\r\n 'An error occurred while uploading the document'\r\n );\r\n } else {\r\n this.toastr.error(error.body.errorMessage);\r\n }\r\n this.successfulUpload.emit({\r\n listenerId: this.listenerId,\r\n value: null,\r\n });\r\n }\r\n );\r\n }\r\n\r\n public onDeleteFile(): void {\r\n this.http\r\n .get(\r\n API_URL +\r\n 'document/Delete?documentId=' +\r\n this.uploadedDocumentId\r\n )\r\n .subscribe(\r\n () => {\r\n this.uploadedDocumentId = null;\r\n this.fileFormControl.patchValue(null);\r\n this.fileInputFormControl.patchValue(null);\r\n this.reevaluate();\r\n },\r\n (error) => {\r\n this.toastr.error(\r\n this.commonService.handleErrorMessage(error)\r\n );\r\n }\r\n );\r\n }\r\n\r\n public onDownloadFile() {\r\n this.retrievingFile = true;\r\n this.http\r\n .get(\r\n API_URL +\r\n 'document/DownloadAsync?documentId=' +\r\n this.existingDocument.documentId,\r\n { responseType: 'blob' }\r\n )\r\n .subscribe(\r\n (response) => {\r\n this.retrievingFile = false;\r\n saveAs(response, this.existingDocument.fileName);\r\n this.toastr.success('Download complete');\r\n },\r\n (error) => {\r\n this.retrievingFile = false;\r\n if (isNullOrUndefined(error.body)) {\r\n this.toastr.error(\r\n 'An error occurred while retrieving document for download'\r\n );\r\n } else {\r\n this.toastr.error(error.body.errorMessage);\r\n }\r\n }\r\n );\r\n }\r\n\r\n private reevaluate() {\r\n if (\r\n !isNullOrUndefined(this.fileFormControl) &&\r\n !isNullOrUndefined(this.fileInputFormControl)\r\n ) {\r\n if (this.uploadedDocumentId) {\r\n this.fileInputFormControl.setValidators([]);\r\n this.fileInputFormControl.updateValueAndValidity();\r\n } else {\r\n this.fileInputFormControl.setValidators([Validators.required]);\r\n this.fileInputFormControl.updateValueAndValidity();\r\n }\r\n }\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\n\r\nimport { isNullOrUndefined } from 'util';\r\nimport { Input, Component } from '@angular/core';\r\nimport { saveAs } from 'file-saver/FileSaver';\r\nimport { ToastrService } from 'ngx-toastr';\r\n\r\n@Component({\r\n selector: 'document-download',\r\n templateUrl: './document-download.component.html',\r\n styleUrls: ['./document-download.component.scss'],\r\n})\r\nexport class DocumentDownloadComponent {\r\n @Input('documentType')\r\n public documentType: string;\r\n @Input('fileName')\r\n public fileName: string;\r\n @Input('documentId')\r\n public documentId: number;\r\n public retrievingFile: boolean;\r\n\r\n constructor(private http: HttpClient, protected toastr: ToastrService) {}\r\n\r\n public onDownloadFile() {\r\n this.retrievingFile = true;\r\n this.http\r\n .get(\r\n API_URL +\r\n 'document/DownloadAsync?documentId=' +\r\n this.documentId,\r\n { responseType: 'blob' }\r\n )\r\n .subscribe(\r\n (response) => {\r\n this.retrievingFile = false;\r\n saveAs(response, this.fileName);\r\n this.toastr.success('File downloaded successfully');\r\n },\r\n (error) => {\r\n this.retrievingFile = false;\r\n if (isNullOrUndefined(error.body)) {\r\n this.toastr.error(\r\n 'An error occurred while retrieving document for download'\r\n );\r\n } else {\r\n this.toastr.error(error.body.errorMessage);\r\n }\r\n }\r\n );\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\n\r\nimport { isNullOrUndefined } from 'util';\r\nimport { Input, Component } from '@angular/core';\r\nimport { saveAs } from 'file-saver/FileSaver';\r\nimport { ToastrService } from 'ngx-toastr';\r\n\r\n@Component({\r\n selector: 'document-download-list',\r\n templateUrl: './document-download-list.component.html',\r\n styleUrls: ['./document-download-list.component.scss'],\r\n})\r\nexport class DocumentDownloadListComponent {\r\n @Input('documentIds')\r\n public documentIds: number[];\r\n public retrievingFiles: boolean;\r\n\r\n constructor(private http: HttpClient, protected toastr: ToastrService) {}\r\n\r\n public onDownloadFiles() {\r\n this.retrievingFiles = true;\r\n this.http\r\n .post(\r\n API_URL + 'document/DownloadListAsync',\r\n { documentIds: this.documentIds },\r\n { responseType: 'blob' }\r\n )\r\n .subscribe(\r\n (response) => {\r\n this.retrievingFiles = false;\r\n saveAs(response, 'documents.zip');\r\n this.toastr.success('Downloading files');\r\n },\r\n (error) => {\r\n this.retrievingFiles = false;\r\n if (isNullOrUndefined(error.body)) {\r\n this.toastr.error(\r\n 'An error occurred while retrieving documents for download'\r\n );\r\n } else {\r\n this.toastr.error(error.body.errorMessage);\r\n }\r\n }\r\n );\r\n }\r\n}\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { AuthenticationService } from '../../../authentication/service/authentication.service';\r\n\r\n@Component({\r\n selector: '[navigationBarItem]',\r\n templateUrl: './navigation-bar-item.component.html',\r\n styleUrls: ['./navigation-bar-item.component.scss'],\r\n})\r\nexport class NavigationBarItemComponent implements OnInit {\r\n public active: boolean;\r\n @Input('userRole')\r\n public userRole: string;\r\n @Input('dropdown')\r\n public dropdown: boolean = false;\r\n\r\n constructor(private authenticationService: AuthenticationService) {}\r\n\r\n public ngOnInit(): void {\r\n this.active = this.authenticationService.isRole(this.userRole);\r\n }\r\n}\r\n","import { Component, DoCheck, Input, OnInit } from '@angular/core';\r\nimport { AbstractControl } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'validation-spans',\r\n templateUrl: './validation-spans.component.html',\r\n styleUrls: ['./validation-spans.component.scss'],\r\n})\r\nexport class ValidationSpansComponent implements OnInit, DoCheck {\r\n @Input('control')\r\n public control: AbstractControl;\r\n @Input('active')\r\n public active: boolean = false;\r\n\r\n public message = '';\r\n\r\n public ngOnInit() {\r\n this.checkForValidationErrors();\r\n }\r\n\r\n public ngDoCheck() {\r\n this.checkForValidationErrors();\r\n }\r\n\r\n private getErrorMessage(errorType: string): string {\r\n switch (errorType) {\r\n case 'required':\r\n return 'This field is required';\r\n case 'minlength':\r\n return `This fields ${\r\n this.control.errors[errorType].requiredLength\r\n } character minimum length has not been met`;\r\n case 'maxlength':\r\n return `This fields ${\r\n this.control.errors[errorType].requiredLength\r\n } character maximum length has been exceeded`;\r\n case 'digits':\r\n return 'This field only allows for numeric digits';\r\n case 'email':\r\n return 'Email format is invalid';\r\n case 'max':\r\n return `This fields maximum numeric value of ${\r\n this.control.errors[errorType].max\r\n } has been exceeded`;\r\n case 'min':\r\n return `This fields minimum numeric value of ${\r\n this.control.errors[errorType].min\r\n } has not been met`;\r\n case 'maxfilefizeexceeded':\r\n return 'The max file size is 200GB';\r\n case 'companyRegistrationNumberInvalid':\r\n return 'Company registration number not in correct format(YYYY/NNNNNN/NN)';\r\n default:\r\n return 'This field has an error';\r\n }\r\n }\r\n\r\n private checkForValidationErrors() {\r\n if (this.control.errors) {\r\n Object.keys(this.control.errors).forEach((errorType) => {\r\n this.message = this.getErrorMessage(errorType);\r\n });\r\n }\r\n }\r\n}\r\n","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { FormArray, FormControl, FormGroup } from '@angular/forms';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\nimport { CommonService } from '../../common/common-service';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { Subscription } from 'rxjs';\r\nimport { ComponentTriggersService } from '../../common/component-triggers.service';\r\n\r\n@Component({\r\n selector: 'validation-messages',\r\n templateUrl: './validation-messages.component.html',\r\n styleUrls: ['./validation-messages.component.scss'],\r\n})\r\nexport class ValidationMessagesComponent implements OnInit, OnDestroy {\r\n @Input('form')\r\n public form: FormGroup;\r\n @Input('validateTopLevelControls')\r\n public validateTopLevelControls = false;\r\n @Input('treeifyMessages')\r\n public treeifyMessages = false;\r\n public validationMessagesSafeHTML: SafeHtml;\r\n public triggerValidationMessagesSubscription: Subscription;\r\n public validationMessages = '';\r\n public errorMessage = '';\r\n\r\n constructor(\r\n private sanitizer: DomSanitizer,\r\n private commonService: CommonService,\r\n private componentTriggerService: ComponentTriggersService\r\n ) {}\r\n\r\n public ngOnInit() {\r\n this.triggerValidationMessagesSubscription = this.componentTriggerService.triggerValidationMessages.subscribe(\r\n () => {\r\n this.validate();\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n }\r\n\r\n public ngOnDestroy() {\r\n this.triggerValidationMessagesSubscription.unsubscribe();\r\n }\r\n\r\n public generateValidationMessages(inputControl: any): void {\r\n Object.keys(inputControl.controls).forEach((field) => {\r\n const control = inputControl.get(field);\r\n\r\n if (control instanceof FormControl) {\r\n if (control.touched && control.errors) {\r\n if (\r\n Object.is(control.parent, this.form) &&\r\n this.validateTopLevelControls\r\n ) {\r\n this.constructValidationMessage(control);\r\n } else if (\r\n control.parent.parent instanceof FormGroup ||\r\n control.parent.parent instanceof FormArray\r\n ) {\r\n this.constructValidationMessage(control);\r\n }\r\n }\r\n } else if (control instanceof FormGroup) {\r\n this.generateValidationMessages(control);\r\n } else if (control instanceof FormArray) {\r\n this.generateValidationMessages(control);\r\n }\r\n });\r\n }\r\n\r\n public validate() {\r\n // console.log('validate called');\r\n this.commonService.validateAllFormFields(this.form);\r\n this.validationMessages = '';\r\n this.generateValidationMessages(this.form);\r\n if (this.treeifyMessages) {\r\n this.treeifyValidationMessages();\r\n }\r\n this.validationMessagesSafeHTML = this.sanitizer.bypassSecurityTrustHtml(\r\n this.validationMessages\r\n );\r\n }\r\n\r\n private constructValidationMessage(control: any) {\r\n if (control instanceof FormControl) {\r\n this.constructValidationMessage(control.parent);\r\n } else if (control instanceof FormArray) {\r\n this.constructValidationMessage(control.parent);\r\n } else if (\r\n control instanceof FormGroup &&\r\n !Object.is(control, this.form)\r\n ) {\r\n this.constructValidationMessage(control.parent);\r\n }\r\n\r\n if (control instanceof FormGroup && !Object.is(control, this.form)) {\r\n let index = -1;\r\n let name = '';\r\n let parentIsForm = false;\r\n if (control.parent instanceof FormArray) {\r\n Object.keys((control.parent as FormArray).controls).forEach(\r\n (field, fieldIndex) => {\r\n if (\r\n Object.is(\r\n (control.parent as FormGroup).get(field),\r\n control\r\n )\r\n ) {\r\n index = fieldIndex;\r\n name = Object.keys(\r\n (control.parent.parent as FormGroup).controls\r\n ).find((parentField) => {\r\n return Object.is(\r\n (control.parent.parent as FormGroup).get(\r\n parentField\r\n ),\r\n control.parent\r\n );\r\n });\r\n }\r\n }\r\n );\r\n parentIsForm = Object.is(control.parent.parent, this.form);\r\n } else if (control.parent instanceof FormGroup) {\r\n name = Object.keys((control.parent as FormGroup).controls).find(\r\n (field) => {\r\n return Object.is(\r\n (control.parent as FormGroup).get(field),\r\n control\r\n );\r\n }\r\n );\r\n parentIsForm = Object.is(control.parent, this.form);\r\n }\r\n if (name.toUpperCase().match('(?<=UPLOAD)\\\\s*([0-9]+)') === null) {\r\n name = ' ' + this.formatName(name);\r\n this.validationMessages +=\r\n (parentIsForm ? '

    ' : '') +\r\n name +\r\n (index > -1 ? ' (' + (index + 1) + ') ' : '');\r\n }\r\n }\r\n if (control instanceof FormControl) {\r\n let name = Object.keys((control.parent as FormGroup).controls).find(\r\n (field) => {\r\n return Object.is(\r\n (control.parent as FormGroup).get(field),\r\n control\r\n );\r\n }\r\n );\r\n if (name.toUpperCase().indexOf('FILEINPUTFORMCONTROL') < 0) {\r\n name = ' \"' + this.formatName(name) + '\"';\r\n const errors = this.formatErrors(control);\r\n this.validationMessages +=\r\n (Object.is(control.parent, this.form) ? '

    ' : '') +\r\n name +\r\n errors +\r\n '

    ';\r\n }\r\n }\r\n }\r\n\r\n private formatErrors(control: FormControl) {\r\n let result = '';\r\n let errorNumber = 0;\r\n\r\n Object.keys(control.errors).forEach((errorType) => {\r\n errorNumber++;\r\n switch (errorType) {\r\n case 'required':\r\n result += `${errorNumber === 1 ? '' : ','} is required`;\r\n break;\r\n case 'minlength':\r\n result += `${errorNumber === 1 ? '' : ','} ${\r\n control.errors[errorType].requiredLength\r\n } character minimum length has not been met`;\r\n break;\r\n case 'maxlength':\r\n result += `${errorNumber === 1 ? '' : ','} ${\r\n control.errors[errorType].requiredLength\r\n } character maximum length has been exceeded`;\r\n break;\r\n case 'digits':\r\n result += `${\r\n errorNumber === 1 ? '' : ','\r\n } only allows for numeric digits`;\r\n break;\r\n case 'email':\r\n result += `${\r\n errorNumber === 1 ? '' : ','\r\n } email format is invalid`;\r\n break;\r\n case 'max':\r\n result += `${\r\n errorNumber === 1 ? '' : ','\r\n } maximum numeric value of ${\r\n control.errors[errorType].max\r\n } has been exceeded`;\r\n break;\r\n case 'min':\r\n result += `${\r\n errorNumber === 1 ? '' : ','\r\n } minimum numeric value of ${\r\n control.errors[errorType].min\r\n } has not been met`;\r\n break;\r\n case 'maxfilefizeexceeded':\r\n result += `${\r\n errorNumber === 1 ? '' : ','\r\n } max file size is 5MB`;\r\n break;\r\n case 'companyRegistrationNumberInvalid':\r\n result += `${\r\n errorNumber === 1 ? '' : ','\r\n } company registration number not in correct format(YYYY/NNNNNN/NN)`;\r\n break;\r\n default:\r\n result += `${errorNumber === 1 ? '' : ','} has an error`;\r\n }\r\n });\r\n\r\n return result;\r\n }\r\n\r\n private formatName(name: string): string {\r\n name = name.replace('LookupId', '');\r\n const result: string[] = [];\r\n name.split('').forEach((character, index) => {\r\n if (character.match(/([A-Z])/g) !== null) {\r\n if (index > 0 && index < name.length - 1) {\r\n if (name[index - 1].match(/([A-Z])/g) === null) {\r\n result.push(' ' + character.toLowerCase());\r\n } else if (name[index + 1].match(/([A-Z])/g) === null) {\r\n result.push(' ' + character.toLowerCase());\r\n } else {\r\n result.push(character.toLowerCase());\r\n }\r\n } else {\r\n result.push(character.toLowerCase());\r\n }\r\n } else {\r\n result.push(character.toLowerCase());\r\n }\r\n });\r\n return result.join('');\r\n }\r\n\r\n private treeifyValidationMessages() {\r\n this.validationMessages = this.validationMessages.replace(/

    /g, '');\r\n const messageList: string[] = this.validationMessages.split('

    ');\r\n if (messageList[messageList.length - 1] === '') {\r\n messageList.pop();\r\n }\r\n // console.log('Validation messages: ', this.validationMessages);\r\n // console.log('Message list: ', messageList);\r\n let result = '';\r\n let baseListInitiated = false;\r\n const singleLevelNestedMessageList: string[] = [];\r\n const messageCount = messageList.length;\r\n const multiLevelNestedMessageList: Array<{\r\n section: string;\r\n parentSection: string;\r\n childSection: string;\r\n }> = [];\r\n messageList.forEach((message: string, messageIndex: number) => {\r\n // console.log(messageIndex, 'Current message: ', message);\r\n if (message.startsWith(' \"')) {\r\n // Case 1: Base form messages (top level control messages)\r\n if (!baseListInitiated) {\r\n // console.log('Opening list for base');\r\n baseListInitiated = true;\r\n result += `
      `;\r\n }\r\n // console.log('Adding list item message for base');\r\n result += '
    • ' + message.replace(/\"/g, '') + '
    • ';\r\n // If this is the last message or the message after this is not part of the current base-level message list\r\n if (\r\n messageIndex + 1 === messageCount ||\r\n (!messageList[messageIndex + 1].startsWith('\"') &&\r\n !messageList[messageIndex + 1].startsWith(' \"'))\r\n ) {\r\n // console.log('Closing list for base');\r\n result += '
    ';\r\n }\r\n } else if (message.indexOf('(') < 0) {\r\n // Case 2: Single-level nested messages\r\n // Split up nested message into sections delimited by '\"'.\r\n const nestedMessageSections = message.split('\"');\r\n const nestedMessageSectionName = nestedMessageSections[0];\r\n // If the section name is not in the list of sections\r\n if (\r\n !singleLevelNestedMessageList.find(\r\n (searchNestedMessage) => {\r\n return (\r\n searchNestedMessage === nestedMessageSectionName\r\n );\r\n }\r\n )\r\n ) {\r\n // console.log('Opening list for single-level section ' + nestedMessageSectionName);\r\n // Add the section name to the list of sections\r\n singleLevelNestedMessageList.push(nestedMessageSectionName);\r\n // Create list for section\r\n result += `
      `;\r\n }\r\n // console.log('Adding list item message for single-level section ' + nestedMessageSectionName);\r\n result +=\r\n '
    • ' +\r\n nestedMessageSections[1] +\r\n nestedMessageSections[2] +\r\n '
    • ';\r\n // If this is the last message or the message after this is not part of the current single-level nested message list\r\n if (\r\n messageIndex + 1 === messageCount ||\r\n messageList[messageIndex + 1].indexOf(\r\n nestedMessageSectionName\r\n ) < 0\r\n ) {\r\n // console.log('Closing list for single-level section ' + nestedMessageSectionName);\r\n result += '
    ';\r\n }\r\n } else {\r\n // Case 3: Multi-level nested messages\r\n // Split up nested message into sections delimited by '#'. And get section count\r\n const nestedMessageSections = message\r\n .replace(/\\)/g, ')#')\r\n .split('#');\r\n const sectionsCount = nestedMessageSections.length;\r\n // Loop over sections\r\n // console.log('current message sections: ', nestedMessageSections);\r\n nestedMessageSections.forEach(\r\n (currentSection, sectionIndex: number) => {\r\n // Get parent and child sections\r\n const parentSection =\r\n sectionIndex > 0\r\n ? nestedMessageSections.slice(\r\n sectionIndex - 1,\r\n 1\r\n )[0]\r\n : null;\r\n // console.log('child section conditions: ', sectionIndex, ' <= ', sectionsCount - 2, sectionIndex <= sectionsCount - 2);\r\n const childSection =\r\n sectionIndex < sectionsCount - 1 &&\r\n sectionIndex + 1 <= sectionsCount - 1\r\n ? sectionIndex < sectionsCount - 1\r\n ? nestedMessageSections.slice(\r\n sectionIndex + 1,\r\n sectionIndex + 2\r\n )[0]\r\n : 'LAST_SECTION'\r\n : 'AFTER_LEAF';\r\n // console.log('Child section is ' + childSection);\r\n // Get the name of the current section\r\n const nestedMessageSectionName = currentSection.substr(\r\n 0,\r\n currentSection.indexOf(' (') < 0\r\n ? currentSection.length\r\n : currentSection.indexOf(' (')\r\n );\r\n // Open list if it's not the last section and the section is not in the list of nested sections\r\n if (\r\n sectionIndex + 1 < sectionsCount &&\r\n !multiLevelNestedMessageList.find(\r\n (searchNestedMessage) => {\r\n return (\r\n searchNestedMessage.section ===\r\n currentSection &&\r\n searchNestedMessage.parentSection ===\r\n parentSection\r\n );\r\n }\r\n )\r\n ) {\r\n // Create enclosing list if the multiLevelNestedMessageList does not contain the current section (i.e. it's the first in its list)\r\n const needsEnclosingList = !multiLevelNestedMessageList.find(\r\n (searchNestedMessage) => {\r\n return (\r\n searchNestedMessage.section ===\r\n nestedMessageSectionName &&\r\n searchNestedMessage.parentSection ===\r\n parentSection\r\n );\r\n }\r\n );\r\n if (needsEnclosingList) {\r\n // console.log('Opening enclosing list for multi-level list ' + message.substr(0, message.indexOf(nestedMessageSections[sectionsCount - 1])));\r\n // Add the enclosing list section to the nested section list\r\n multiLevelNestedMessageList.push({\r\n section: nestedMessageSectionName,\r\n parentSection,\r\n childSection,\r\n });\r\n // Create enclosing list\r\n result += `${\r\n parentSection !== null\r\n ? '
  • '\r\n : ''\r\n }
    \r\n
    \r\n
      `;\r\n }\r\n // console.log('Opening list for multi-level section ' + message.substr(0, message.indexOf(nestedMessageSections[sectionsCount - 1])));\r\n // Add the section to the nested section list\r\n multiLevelNestedMessageList.push({\r\n section: currentSection,\r\n parentSection,\r\n childSection,\r\n });\r\n // console.log('child section conditions (after adding to multiLevelNestedMessageList): ', sectionIndex, ' <= ', sectionsCount - 2, sectionIndex <= sectionsCount - 2);\r\n // console.log('multiLevelNestedMessageList now: ', multiLevelNestedMessageList);\r\n // Check if section has enclosing list\r\n const hasEnclosingList = !isNullOrUndefined(\r\n multiLevelNestedMessageList.find(\r\n (searchNestedMessage) => {\r\n return (\r\n searchNestedMessage.section ===\r\n nestedMessageSectionName &&\r\n searchNestedMessage.parentSection ===\r\n parentSection\r\n );\r\n }\r\n )\r\n );\r\n // Create list for section\r\n result += `${\r\n parentSection !== null || hasEnclosingList\r\n ? '
    • '\r\n : ''\r\n }
      \r\n
        `;\r\n }\r\n // Add list item if it's the last section\r\n if (sectionIndex + 1 === sectionsCount) {\r\n // console.log('Adding list item message for multi-level section ' + message.substr(0, message.indexOf(nestedMessageSections[sectionsCount - 1])));\r\n result +=\r\n '
      • ' +\r\n nestedMessageSectionName.replace(/\"/g, '') +\r\n '
      • ';\r\n }\r\n // Close list recursively if we're on a leaf section\r\n const nextMessageSections = isNullOrUndefined(\r\n messageList[messageIndex + 1]\r\n )\r\n ? []\r\n : messageList[messageIndex + 1]\r\n .replace(/\\)/g, ')#')\r\n .split('#');\r\n if (childSection === 'AFTER_LEAF') {\r\n result = this.recursicelyCloseLists(\r\n nestedMessageSections,\r\n nextMessageSections,\r\n sectionIndex,\r\n result\r\n );\r\n }\r\n }\r\n );\r\n }\r\n });\r\n // console.log('Treeify result:', result);\r\n this.validationMessages = result;\r\n }\r\n\r\n private recursicelyCloseLists(\r\n currentMessageSections: string[],\r\n nextMessageSections: string[],\r\n sectionIndex: number,\r\n result: string\r\n ): string {\r\n // console.log('______START ' + currentMessageSections[sectionIndex] + '_____');\r\n // console.log('Entered recursicelyCloseLists method:');\r\n // console.log('currentMessageCurrentSection is >>' + currentMessageSections[sectionIndex] + '<<');\r\n // console.log('nextMessageCurrentSection is >>' + (isNullOrUndefined(nextMessageSections) || isNullOrUndefined(nextMessageSections[sectionIndex])\r\n // ? 'DOES NOT EXIST'\r\n // : nextMessageSections[sectionIndex]) + '<<');\r\n // noinspection JSUnusedLocalSymbols\r\n const currentMessageIsLastMessage = nextMessageSections === null;\r\n // console.log('currentMessageIsLastMessage is >>' + currentMessageIsLastMessage + '<<');\r\n const currentMessageSectionName = currentMessageSections[\r\n sectionIndex\r\n ].substr(\r\n 0,\r\n currentMessageSections[sectionIndex].indexOf(' (') > -1\r\n ? currentMessageSections[sectionIndex].indexOf(' (')\r\n : currentMessageSections[sectionIndex].length\r\n );\r\n // console.log('currentMessageSectionName is >>' + currentMessageSectionName + '<<');\r\n const nextMessageSectionName =\r\n sectionIndex >= nextMessageSections.length\r\n ? 'AFTER_LEAF'\r\n : nextMessageSections[sectionIndex].substr(\r\n 0,\r\n nextMessageSections[sectionIndex].indexOf(' (') > -1\r\n ? nextMessageSections[sectionIndex].indexOf(' (')\r\n : nextMessageSections[sectionIndex].length\r\n );\r\n // console.log('nextMessageSectionName is >>' + nextMessageSectionName + '<<');\r\n const currentMessageParentSectionName =\r\n sectionIndex > 0\r\n ? currentMessageSections[sectionIndex - 1].substr(\r\n 0,\r\n currentMessageSections[sectionIndex - 1].indexOf(' (') >\r\n -1\r\n ? currentMessageSections[sectionIndex - 1].indexOf(\r\n ' ('\r\n )\r\n : currentMessageSections[sectionIndex - 1].length\r\n )\r\n : 'BEFORE_ROOT';\r\n // console.log('currentMessageParentSectionName is >>' + currentMessageParentSectionName + '<<');\r\n const nextMessageParentSectionName =\r\n sectionIndex > 0\r\n ? sectionIndex - 1 >= nextMessageSections.length\r\n ? 'AFTER_LEAF'\r\n : nextMessageSections[sectionIndex - 1].substr(\r\n 0,\r\n nextMessageSections[sectionIndex - 1].indexOf(' (') >\r\n -1\r\n ? nextMessageSections[sectionIndex - 1].indexOf(\r\n ' ('\r\n )\r\n : nextMessageSections[sectionIndex - 1].length\r\n )\r\n : 'BEFORE_ROOT';\r\n // console.log('nextMessageParentSectionName is >>' + nextMessageParentSectionName + '<<');\r\n const sameSectionNames =\r\n currentMessageSectionName === nextMessageSectionName;\r\n // console.log('sameSectionNames is >>' + sameSectionNames + '<<');\r\n const sameParentSectionNames =\r\n currentMessageSectionName === nextMessageSectionName;\r\n // console.log('sameParentSectionNames is >>' + sameParentSectionNames + '<<');\r\n const currentMessageSectionIsListSection =\r\n currentMessageSections[sectionIndex].indexOf(' (') > -1;\r\n // console.log('currentMessageSectionIsListSection is >>' + currentMessageSectionIsListSection + '<<');\r\n const currentMessageParentSectionIsListSection =\r\n nextMessageParentSectionName === 'BEFORE_ROOT'\r\n ? false\r\n : currentMessageSections[sectionIndex].indexOf(' (') > -1;\r\n // console.log('currentMessageParentSectionIsListSection is >>' + currentMessageParentSectionIsListSection + '<<');\r\n const nextMessageSectionIsListSection =\r\n nextMessageSectionName === 'AFTER_LEAF'\r\n ? false\r\n : nextMessageSections[sectionIndex].indexOf(' (') > -1;\r\n // console.log('nextMessageSectionIsListSection is >>' + nextMessageSectionIsListSection + '<<');\r\n const nextMessageParentSectionIsListSection =\r\n nextMessageParentSectionName === 'BEFORE_ROOT' ||\r\n nextMessageParentSectionName === 'AFTER_LEAF'\r\n ? false\r\n : currentMessageSections[sectionIndex].indexOf(' (') > -1;\r\n // console.log('nextMessageParentSectionIsListSection is >>' + nextMessageParentSectionIsListSection + '<<');\r\n const currentMessageSectionListNumber = currentMessageSectionIsListSection\r\n ? currentMessageSections[sectionIndex].substr(\r\n currentMessageSections[sectionIndex].indexOf('(') + 1,\r\n currentMessageSections[sectionIndex].indexOf(')') -\r\n currentMessageSections[sectionIndex].indexOf('(') -\r\n 1\r\n )\r\n : -1;\r\n // console.log('currentMessageSectionListNumber is >>' + currentMessageSectionListNumber + '<<');\r\n const nextMessageSectionListNumber =\r\n nextMessageSectionIsListSection && sameSectionNames\r\n ? nextMessageSections[sectionIndex].substr(\r\n nextMessageSections[sectionIndex].indexOf('(') + 1,\r\n currentMessageSections[sectionIndex].indexOf(')') -\r\n nextMessageSections[sectionIndex].indexOf('(') -\r\n 1\r\n )\r\n : -1;\r\n // console.log('nextMessageSectionListNumber is >>' + nextMessageSectionListNumber + '<<');\r\n // noinspection JSUnusedLocalSymbols\r\n const currentMessageParentSectionListNumber = currentMessageParentSectionIsListSection\r\n ? currentMessageSections[sectionIndex - 1].substr(\r\n currentMessageSections[sectionIndex - 1].indexOf('(') + 1,\r\n currentMessageSections[sectionIndex - 1].indexOf(')') -\r\n currentMessageSections[sectionIndex - 1].indexOf('(') -\r\n 1\r\n )\r\n : -1;\r\n // console.log('currentMessageParentSectionListNumber is >>' + currentMessageParentSectionListNumber + '<<');\r\n // noinspection JSUnusedLocalSymbols\r\n const nextMessageParentSectionListNumber =\r\n nextMessageParentSectionIsListSection && sameParentSectionNames\r\n ? nextMessageSections[sectionIndex - 1].substr(\r\n nextMessageSections[sectionIndex - 1].indexOf('(') + 1,\r\n currentMessageSections[sectionIndex - 1].indexOf(')') -\r\n nextMessageSections[sectionIndex - 1].indexOf('(') -\r\n 1\r\n )\r\n : -1;\r\n // console.log('nextMessageParentSectionListNumber is >>' + nextMessageParentSectionListNumber + '<<');\r\n /*\r\n * currentMessageIsLastMessage true or false\r\n * currentMessageSectionName value\r\n * nextMessageSectionName value or AFTER_LEAF\r\n * currentMessageParentSectionName value or BEFORE_ROOT\r\n * nextMessageParentSectionName value or AFTER_LEAF or BEFORE_ROOT\r\n * sameSectionNames true or false\r\n * sameParentSectionNames true or false\r\n * currentMessageSectionIsListSection true or false\r\n * nextMessageSectionIsListSection true or false\r\n * currentMessageParentSectionIsListSection true or false\r\n * nextMessageParentSectionIsListSection true or false\r\n * currentMessageSectionListNumber value or -1\r\n * nextMessageSectionListNumber value or -1\r\n * currentMessageParentSectionListNumber value or -1\r\n * nextMessageParentSectionListNumber value or -1\r\n * */\r\n\r\n if (currentMessageSectionIsListSection && !sameSectionNames) {\r\n result += this.closeList(\r\n true,\r\n currentMessageParentSectionIsListSection,\r\n nextMessageSectionListNumber === -1\r\n );\r\n }\r\n if (\r\n currentMessageSectionIsListSection &&\r\n sameSectionNames &&\r\n currentMessageSectionListNumber !== nextMessageSectionListNumber\r\n ) {\r\n result += this.closeList(\r\n true,\r\n currentMessageParentSectionIsListSection,\r\n false\r\n );\r\n }\r\n if (currentMessageParentSectionName !== 'BEFORE_ROOT') {\r\n result = this.recursicelyCloseLists(\r\n currentMessageSections,\r\n nextMessageSections,\r\n sectionIndex - 1,\r\n result\r\n );\r\n }\r\n // console.log('Result now: ' + result);\r\n // console.log('______END ' + currentMessageSections[sectionIndex] + '_____');\r\n return result;\r\n }\r\n\r\n private closeList(\r\n hasEnclosingList: boolean,\r\n parentIsList: boolean,\r\n closeEnclosingList: boolean\r\n ) {\r\n // console.log('_____CLOSING LIST START: ');\r\n // console.log('hasEnclosingList is ' + hasEnclosingList);\r\n // console.log('parentIsList is ' + parentIsList);\r\n // console.log('closeEnclosingList is ' + closeEnclosingList);\r\n // console.log('_____CLOSING LIST END');\r\n return `
      ${\r\n hasEnclosingList\r\n ? parentIsList\r\n ? '
    • ' +\r\n (closeEnclosingList ? '
  • ' : '')\r\n : '' +\r\n (closeEnclosingList ? '
    ' : '')\r\n : ''\r\n }`;\r\n }\r\n}\r\n","export class PremisesConsumption {\r\n constructor(\r\n public consumerCompanyPremisesId: number,\r\n public month: string,\r\n public year: string,\r\n public consumption: number,\r\n public peak?,\r\n public offPeak?,\r\n public standard?\r\n ) {}\r\n}\r\n","import { Tariff } from './../../../../model/tariff/tariff.model';\r\nimport { DistributorService } from './../../../distributor/distributor.service';\r\nimport { Subscription } from 'rxjs/Rx';\r\nimport { Component, OnInit, Input, ViewChild } from '@angular/core';\r\nimport { FormGroup, FormControl, Validators } from '@angular/forms';\r\nimport { EntityLookup } from '../../../../model/entity-lookup.model';\r\nimport { ComponentTriggersService } from '../../../../common/component-triggers.service';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { CommonService } from '../../../../common/common-service';\r\nimport { ConsumerCompanyPremisesService } from '../../../consumer-company-premises/consumer-company-premises.service';\r\nimport { ConsumerCompanyPremises } from 'app/model/consumer-company-premises.model';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { CustomValidators } from 'ng4-validators';\r\nimport { AddressFormComponent } from '../../../address/address-form/address-form.component';\r\nimport { ConsumerCompanyService } from '../../../consumer-company/consumer-company.service';\r\nimport { PremisesConsumption } from '../../../../model/premises-consumption.model';\r\n\r\n@Component({\r\n selector: 'premises-details',\r\n templateUrl: 'premises-details.component.html',\r\n styleUrls: ['premises-details.component.scss', '../../../form.styles.scss'],\r\n})\r\nexport class ConsumerPremisesDetailsComponent implements OnInit {\r\n public consumerCompanyPremisesForm: FormGroup;\r\n public addressForm: FormGroup;\r\n @ViewChild(AddressFormComponent)\r\n public addressFormComponent: any;\r\n public theBoundCallback: () => void;\r\n @Input('consumerCompanyPremisesId')\r\n public consumerCompanyPremisesId: number;\r\n @Input('isReadOnlyMode')\r\n public isReadOnlyMode = false;\r\n @Input('showPremisesDetails')\r\n public showPremisesDetails: boolean = false;\r\n public loading = false;\r\n public saving = false;\r\n public errorMessage: string;\r\n public evaluationResponse: string;\r\n public declinedMessage: string;\r\n public businessActivities: EntityLookup[];\r\n public distributorAccountCreditProblemList: EntityLookup[];\r\n public tariffs: Tariff[];\r\n public months: string[];\r\n public years: number[];\r\n public month: string;\r\n public distributors: EntityLookup[];\r\n public provinces: EntityLookup[];\r\n public showConsumptionCapture: boolean;\r\n public isOnePart: boolean;\r\n public isTwoPart: boolean;\r\n public isThreePart: boolean;\r\n public isArchiving: boolean;\r\n public updateConsumption: boolean;\r\n public holdingCompanyAddress: any;\r\n public premisesDeclineReason: EntityLookup[];\r\n public consumerPremisesStatuses: EntityLookup[];\r\n public premisesEvaluationStatus: EntityLookup[];\r\n public premisesDetailsEventSubscription: Subscription;\r\n private consumerCompanyPremises: ConsumerCompanyPremises;\r\n\r\n constructor(\r\n private componentTriggerService: ComponentTriggersService,\r\n private toastr: ToastrService,\r\n public commonService: CommonService,\r\n public distributorService: DistributorService,\r\n private consumerCompanyService: ConsumerCompanyService,\r\n private consumerCompanyPremisesService: ConsumerCompanyPremisesService\r\n ) {}\r\n\r\n public ngOnInit(): void {\r\n this.theBoundCallback = this.onSameAsHoldingCompanyChecked.bind(this);\r\n this.initSubscription();\r\n this.initMonthsAndYears();\r\n }\r\n\r\n // Initialize Subscription\r\n public initSubscription(): void {\r\n this.premisesDetailsEventSubscription = this.componentTriggerService.triggerPremisesDetailsComponent.subscribe(\r\n (consumerCompanyPremisesId) => {\r\n this.showPremisesDetails = true;\r\n this.consumerCompanyPremisesId = consumerCompanyPremisesId;\r\n this.initialize();\r\n }\r\n );\r\n }\r\n\r\n /// Load Consumer Company Premises Details\r\n public initialize(): void {\r\n this.loading = true;\r\n this.consumerCompanyPremisesService\r\n .getConsumerCompanyPremises(this.consumerCompanyPremisesId)\r\n .subscribe(\r\n (consumerCompanyPremises: ConsumerCompanyPremises) => {\r\n this.consumerCompanyPremises = consumerCompanyPremises;\r\n this.initializeForm();\r\n this.handleFormReadOnlyMode();\r\n this.onSelectedTariffChange(consumerCompanyPremises.tariff);\r\n this.onDistributorChange(\r\n consumerCompanyPremises.distributorId\r\n );\r\n this.getHoldingCompanyAddress(\r\n consumerCompanyPremises.consumerCompanyId\r\n );\r\n this.commonService\r\n .getEntityLookups([\r\n 'ConsumerBusinessActivity',\r\n 'Distributor',\r\n 'Province',\r\n 'PremisesProgressStatus',\r\n 'DistributorAccountCreditProblem',\r\n 'PremisesDeclineReason',\r\n ])\r\n .subscribe(\r\n (response) => {\r\n this.businessActivities =\r\n response.entityLookupResultList[\r\n 'consumerBusinessActivity'\r\n ];\r\n this.distributors =\r\n response.entityLookupResultList[\r\n 'distributor'\r\n ];\r\n this.provinces =\r\n response.entityLookupResultList['province'];\r\n this.distributorAccountCreditProblemList =\r\n response.entityLookupResultList[\r\n 'distributorAccountCreditProblem'\r\n ];\r\n this.premisesEvaluationStatus =\r\n response.entityLookupResultList[\r\n 'premisesProgressStatus'\r\n ];\r\n this.premisesDeclineReason =\r\n response.entityLookupResultList[\r\n 'premisesDeclineReason'\r\n ];\r\n this.updateConsumption =\r\n consumerCompanyPremises.premisesConsumption\r\n .length === 12\r\n ? false\r\n : true;\r\n this.getEvaluationStatus();\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n this.toastr.error(this.errorMessage);\r\n }\r\n );\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n this.toastr.error(this.errorMessage);\r\n }\r\n );\r\n }\r\n\r\n /// On Submit Premises Form\r\n public onSubmit() {\r\n this.errorMessage = '';\r\n this.addressFormComponent.enableControls();\r\n this.consumerCompanyPremisesForm.controls.address = this.addressFormComponent.addressForm;\r\n this.consumerCompanyPremisesForm.controls.premisesConsumption.setValue(\r\n this.consumerCompanyPremises.premisesConsumption\r\n );\r\n this.commonService.validateAllFormFields(\r\n this.consumerCompanyPremisesForm\r\n );\r\n this.commonService.validateAllFormFields(\r\n this.addressFormComponent.addressForm\r\n );\r\n if (this.consumerCompanyPremisesForm.valid) {\r\n this.loading = true;\r\n this.consumerCompanyPremisesService\r\n .updateConsumerCompanyPremises(\r\n this.consumerCompanyPremisesForm.value\r\n )\r\n .subscribe(\r\n () => {\r\n this.consumerCompanyService\r\n .addConsumerCompanyPremisesConsumption(\r\n this.consumerCompanyPremises.premisesConsumption\r\n )\r\n .subscribe(\r\n () => {\r\n this.toastr.success(\r\n 'Premises successfully updated'\r\n );\r\n this.loading = false;\r\n this.onBack();\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.toastr.error(this.errorMessage);\r\n this.loading = false;\r\n }\r\n );\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.toastr.error(this.errorMessage);\r\n this.loading = false;\r\n }\r\n );\r\n } else {\r\n this.toastr.error(\r\n 'Some form field(s) are not valid, please fill in correctly'\r\n );\r\n }\r\n }\r\n\r\n /// On Back\r\n public onBack(): void {\r\n this.showPremisesDetails = false;\r\n this.componentTriggerService.triggerPremisesListComponent.next(\r\n this.consumerCompanyPremises.consumerCompanyId\r\n );\r\n }\r\n\r\n /// On Distributor Change\r\n public onDistributorChange(distributorId: number): void {\r\n distributorId =\r\n distributorId > 0\r\n ? distributorId\r\n : this.consumerCompanyPremisesForm.controls.distributorId.value;\r\n if (distributorId > 0) {\r\n this.distributorService\r\n .getDistributorTariffsByDistributorId(distributorId)\r\n .subscribe(\r\n (tariffs) => {\r\n this.tariffs = tariffs;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n } else {\r\n this.tariffs = [];\r\n }\r\n\r\n if (distributorId !== this.consumerCompanyPremises.distributorId) {\r\n this.initMonthsAndYears();\r\n this.consumerCompanyPremises.premisesConsumption = [];\r\n }\r\n }\r\n\r\n /// On Tariff Code Change\r\n public onSelectedTariffChange(existingTariff: any): void {\r\n this.showConsumptionCapture = false;\r\n this.initMonthsAndYears();\r\n this.consumerCompanyPremises.premisesConsumption = existingTariff\r\n ? this.consumerCompanyPremises.premisesConsumption\r\n : [];\r\n const tariffId = this.consumerCompanyPremisesForm.controls.tariffId\r\n .value;\r\n const selectedTariff = this.tariffs\r\n ? this.tariffs.filter((t) => t.tariffId === tariffId)[0]\r\n : existingTariff;\r\n if (selectedTariff) {\r\n this.isOnePart = selectedTariff.tariffType.value\r\n .toLowerCase()\r\n .includes('non-tou');\r\n this.isTwoPart = selectedTariff.tariffType.value\r\n .toLowerCase()\r\n .includes('tou 2 part');\r\n this.isThreePart = selectedTariff.tariffType.value\r\n .toLowerCase()\r\n .includes('tou 3 part');\r\n this.showConsumptionCapture = true;\r\n }\r\n }\r\n\r\n public electricityAccountsDocumentUploaded(output: any): void {\r\n if (output.value) {\r\n this.consumerCompanyPremisesForm.controls.electricityAccountsDocument.setValue(\r\n output.value\r\n );\r\n }\r\n }\r\n\r\n public addConsumption(\r\n month: any,\r\n year: any,\r\n peak?: number,\r\n offPeak?: number,\r\n standard?: number\r\n ): void {\r\n const premise = this.consumerCompanyPremises;\r\n if (!premise.premisesConsumption) {\r\n premise.premisesConsumption = [];\r\n }\r\n if (this.isOnePart && premise.premisesConsumption) {\r\n premise.premisesConsumption.push(\r\n new PremisesConsumption(\r\n premise.consumerCompanyPremisesId,\r\n month,\r\n year,\r\n +standard\r\n )\r\n );\r\n } else {\r\n premise.premisesConsumption.push(\r\n new PremisesConsumption(\r\n premise.consumerCompanyPremisesId,\r\n month,\r\n year,\r\n +peak + +offPeak + +standard,\r\n +peak,\r\n +offPeak,\r\n +standard\r\n )\r\n );\r\n }\r\n\r\n const selectedIndex = this.months.indexOf(month);\r\n this.months.splice(selectedIndex, 1);\r\n this.updateConsumption =\r\n premise.premisesConsumption.length === 12 ? false : true;\r\n }\r\n\r\n public removeConsumption(consumptionIndex: number): void {\r\n const premisesConsumption = this.consumerCompanyPremises\r\n .premisesConsumption;\r\n this.months.push(premisesConsumption[consumptionIndex].month);\r\n this.consumerCompanyPremises.premisesConsumption.splice(\r\n consumptionIndex,\r\n 1\r\n );\r\n this.updateConsumption = true;\r\n }\r\n\r\n /// Holding Company Address\r\n public getHoldingCompanyAddress(consumerCompanyId: number): void {\r\n this.consumerCompanyService\r\n .getConsumerCompanyAddress(consumerCompanyId)\r\n .subscribe(\r\n (address: any) => {\r\n this.holdingCompanyAddress = address;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.toastr.error(this.errorMessage);\r\n }\r\n );\r\n }\r\n\r\n public ArchiveConsumerCompanyPremise(): void {\r\n this.isArchiving = true;\r\n\r\n this.consumerCompanyPremisesService\r\n .archiveConsumerCompanyPremises(this.consumerCompanyPremisesId)\r\n .subscribe(\r\n (result: any) => {\r\n this.toastr.success('Premises successfully archived');\r\n this.isArchiving = false;\r\n this.initialize();\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.toastr.error(this.errorMessage);\r\n this.isArchiving = false;\r\n }\r\n );\r\n }\r\n\r\n public UnarchiveConsumerCompanyPremise(): void {\r\n this.isArchiving = true;\r\n\r\n this.consumerCompanyPremisesService\r\n .unarchiveConsumerCompanyPremises(this.consumerCompanyPremisesId)\r\n .subscribe(\r\n (result: any) => {\r\n this.toastr.success('Premises successfully unarchived');\r\n this.isArchiving = false;\r\n this.initialize();\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.toastr.error(this.errorMessage);\r\n this.isArchiving = false;\r\n }\r\n );\r\n }\r\n\r\n public onSameAsHoldingCompanyChecked() {\r\n const checked = this.addressFormComponent.addressForm.get(\r\n 'sameAsHoldingCompany'\r\n ).value;\r\n\r\n if (checked) {\r\n if (this.holdingCompanyAddress == null) {\r\n this.toastr.info('Company does not have an address');\r\n this.addressFormComponent.addressForm.get(\r\n 'sameAsHoldingCompany'\r\n ).value = false;\r\n return;\r\n }\r\n this.addressFormComponent.disableControls();\r\n this.addressFormComponent.setValues(this.holdingCompanyAddress);\r\n } else {\r\n this.addressFormComponent.enableControls();\r\n if (this.consumerCompanyPremises.address) {\r\n this.addressFormComponent.setValues(\r\n this.consumerCompanyPremises.address\r\n );\r\n } else {\r\n this.addressFormComponent.addressForm.reset();\r\n }\r\n }\r\n }\r\n\r\n /// Prepopulat Premises Form\r\n private initializeForm() {\r\n this.initializeAddressForm();\r\n this.consumerCompanyPremisesForm = new FormGroup({\r\n consumerCompanyPremisesId: new FormControl(\r\n this.consumerCompanyPremises.consumerCompanyPremisesId\r\n ),\r\n premisesName: new FormControl(\r\n this.consumerCompanyPremises.premisesName,\r\n [Validators.required, Validators.maxLength(50)]\r\n ),\r\n vatNumber: new FormControl(this.consumerCompanyPremises.vatNumber, [\r\n Validators.minLength(10),\r\n ]),\r\n referenceNumber: new FormControl({\r\n value: this.consumerCompanyPremises.referenceNumber,\r\n disabled: true,\r\n }),\r\n meterNumber: new FormControl(\r\n this.consumerCompanyPremises.meterNumber,\r\n [Validators.required, Validators.maxLength(50)]\r\n ),\r\n accountNumber: new FormControl(\r\n this.consumerCompanyPremises.accountNumber,\r\n [Validators.required, Validators.maxLength(50)]\r\n ),\r\n smartMeterInstalled: new FormControl(\r\n this.consumerCompanyPremises.smartMeterInstalled\r\n ),\r\n businessActivityLookupId: new FormControl(\r\n this.consumerCompanyPremises.businessActivityLookupId,\r\n [Validators.required]\r\n ),\r\n tariffId: new FormControl(\r\n isNullOrUndefined(this.consumerCompanyPremises.tariffId)\r\n ? null\r\n : this.consumerCompanyPremises.tariffId,\r\n [Validators.required]\r\n ),\r\n distributorId: new FormControl(\r\n {\r\n value: this.consumerCompanyPremises.distributorId,\r\n disabled: false,\r\n },\r\n [Validators.required]\r\n ),\r\n addressId: new FormControl(this.consumerCompanyPremises.addressId),\r\n address: this.addressForm,\r\n isInApplicationMode: new FormControl(true),\r\n distributorAccountCreditProblemLookupId: new FormControl(\r\n isNullOrUndefined(\r\n this.consumerCompanyPremises.distributorAccountCreditProblem\r\n )\r\n ? null\r\n : this.consumerCompanyPremises\r\n .distributorAccountCreditProblem.entityLookupId,\r\n [Validators.required]\r\n ),\r\n hasRemoteMeter: new FormControl(\r\n this.consumerCompanyPremises.hasRemoteMeter\r\n ),\r\n premisesConsumption: new FormControl(null, [Validators.required]),\r\n });\r\n }\r\n\r\n /// Prepopulate Address Form\r\n private initializeAddressForm() {\r\n const address = this.consumerCompanyPremises.address;\r\n this.addressForm = new FormGroup({\r\n addressId: new FormControl(\r\n isNullOrUndefined(address) ? 0 : address.addressId\r\n ),\r\n addressLine1: new FormControl(\r\n isNullOrUndefined(address) ? '' : address.addressLine1,\r\n [Validators.required, Validators.maxLength(100)]\r\n ),\r\n addressLine2: new FormControl(\r\n isNullOrUndefined(address) ? '' : address.addressLine2,\r\n [Validators.required, Validators.maxLength(100)]\r\n ),\r\n addressLine3: new FormControl(\r\n isNullOrUndefined(address) ? '' : address.addressLine3,\r\n [Validators.maxLength(100)]\r\n ),\r\n provinceLookupId: new FormControl(\r\n isNullOrUndefined(address) ? null : address.provinceLookupId,\r\n [Validators.required]\r\n ),\r\n city: new FormControl(\r\n isNullOrUndefined(address) ? '' : address.city,\r\n [Validators.required, Validators.maxLength(50)]\r\n ),\r\n postalCode: new FormControl(\r\n isNullOrUndefined(address) ? '' : address.postalCode,\r\n [\r\n Validators.required,\r\n Validators.maxLength(10),\r\n CustomValidators.digits,\r\n ]\r\n ),\r\n isRural: new FormControl(\r\n isNullOrUndefined(address) ? false : address.isRural\r\n ),\r\n });\r\n }\r\n\r\n ///\r\n private handleFormReadOnlyMode() {\r\n const excludedList = [\r\n 'Prospect',\r\n 'More Info',\r\n 'Declined',\r\n 'IsEvaluationStatus',\r\n ];\r\n const enableForm =\r\n excludedList.indexOf(\r\n this.consumerCompanyPremises.premisesProgressStatus.value\r\n ) >= 0;\r\n if (this.isReadOnlyMode || !enableForm) {\r\n this.consumerCompanyPremisesForm.disable();\r\n }\r\n }\r\n\r\n private getEvaluationStatus(): void {\r\n const responseId = this.consumerCompanyPremises\r\n .evaluationStatusLookupId;\r\n const declinedReasonId = this.consumerCompanyPremises\r\n .evaluationDeclineReasonLookupId;\r\n if (responseId > 0) {\r\n this.evaluationResponse = this.premisesEvaluationStatus.find(\r\n (id) => id.entityLookupId === responseId\r\n ).value;\r\n }\r\n if (declinedReasonId > 0) {\r\n this.declinedMessage = this.premisesDeclineReason.find(\r\n (id) => id.entityLookupId === declinedReasonId\r\n ).value;\r\n }\r\n }\r\n\r\n private initMonthsAndYears() {\r\n this.months = [\r\n 'January',\r\n 'February',\r\n 'March',\r\n 'April',\r\n 'May',\r\n 'June',\r\n 'July',\r\n 'August',\r\n 'September',\r\n 'October',\r\n 'November',\r\n 'December',\r\n ];\r\n const currentYear: number = new Date().getFullYear();\r\n this.years = [];\r\n for (let i = 0; i < 5; i++) {\r\n this.years.push(currentYear + i);\r\n }\r\n }\r\n}\r\n","import {\r\n AfterViewChecked,\r\n ChangeDetectorRef,\r\n Component,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n} from '@angular/core';\r\nimport { FormArray, FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { Tariff } from '../../model/tariff/tariff.model';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { TariffRate } from '../../model/tariff/tariff-rate.model';\r\nimport { CommonService } from '../../common/common-service';\r\nimport { EntityLookup } from '../../model/entity-lookup.model';\r\nimport { Period } from '../../model/period.model';\r\nimport { Season } from '../../model/season.model';\r\nimport { TariffService } from './tariff.service';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\n\r\nimport { ComponentTriggersService } from '../../common/component-triggers.service';\r\nimport { Subscription } from 'rxjs/Rx';\r\nimport { ToastrService } from 'ngx-toastr';\r\n\r\n@Component({\r\n selector: 'tariff',\r\n templateUrl: './tariff.component.html',\r\n styleUrls: ['./tariff.component.scss', '../form.styles.scss'],\r\n})\r\nexport class TariffComponent implements OnInit, AfterViewChecked, OnDestroy {\r\n @Input('tariffId')\r\n public tariffId = 0;\r\n @Input('distributorId')\r\n public distributorId: number; // This component can be extended to handle consumer and generator tariff\r\n @Input('showTariff')\r\n public showTariff: boolean;\r\n @Input('isReadOnlyMode')\r\n public isReadOnlyMode: boolean = false;\r\n public errorMessageSafeHtml: SafeHtml;\r\n public displayError = false;\r\n public loading = false;\r\n public loadingFailed = false;\r\n public saving = false;\r\n public savingFailed = false;\r\n public isEskomDistributor = false;\r\n public periods: EntityLookup[];\r\n public seasons: EntityLookup[];\r\n public energyBrackets: EntityLookup[];\r\n public tariffTypes: EntityLookup[];\r\n public voltages: EntityLookup[];\r\n public tariffForm: FormGroup;\r\n public tariff: Tariff;\r\n public tariffs: Tariff[];\r\n public tariffEventSubscription: Subscription;\r\n\r\n constructor(\r\n private commonService: CommonService,\r\n private cdRef: ChangeDetectorRef,\r\n private tariffService: TariffService,\r\n private toastr: ToastrService,\r\n private componentTriggerService: ComponentTriggersService,\r\n protected sanitizer: DomSanitizer\r\n ) {}\r\n\r\n public ngAfterViewChecked() {\r\n this.cdRef.detectChanges();\r\n }\r\n\r\n public ngOnInit() {\r\n this.tariffEventSubscription = this.componentTriggerService.triggerTariffComponent.subscribe(\r\n (response) => {\r\n this.errorMessageSafeHtml = this.sanitizer.bypassSecurityTrustHtml(\r\n ''\r\n );\r\n this.displayError = false;\r\n this.showTariff = true;\r\n this.tariffId = response;\r\n this.initialize();\r\n },\r\n (error) => {\r\n this.errorMessageSafeHtml = this.sanitizer.bypassSecurityTrustHtml(\r\n this.commonService.handleErrorMessage(error)\r\n );\r\n }\r\n );\r\n this.initialize();\r\n }\r\n\r\n public ngOnDestroy() {\r\n this.tariffEventSubscription.unsubscribe();\r\n }\r\n\r\n public onSubmitTariff() {\r\n this.commonService.validateAllFormFields(this.tariffForm);\r\n const validationResult = this.tariffService.tariffValidations(\r\n this.tariffs,\r\n this.tariffForm,\r\n this.periods,\r\n this.seasons,\r\n this.energyBrackets,\r\n this.tariffTypes\r\n );\r\n if (this.tariffForm.valid && validationResult.isValid) {\r\n if (this.tariffForm.value.tariffId === 0) {\r\n this.onCreateTariff();\r\n } else {\r\n this.onUpdateTariff();\r\n }\r\n } else {\r\n this.toastr.error(\r\n 'Validation warnings prevent the tariff from being saved'\r\n );\r\n this.onChangeTariffOrTariffRate();\r\n }\r\n }\r\n\r\n public onBack() {\r\n this.showTariff = false;\r\n this.componentTriggerService.triggerTariffListComponent.next({\r\n distributorOrConsumer: 'distributor',\r\n id: this.distributorId,\r\n });\r\n }\r\n\r\n public onCreateTariff() {\r\n this.saving = true;\r\n this.displayError = false;\r\n this.tariffService\r\n .createTariff(this.tariffForm.value, this.distributorId, null)\r\n .subscribe(\r\n (response) => {\r\n this.tariffForm.get('tariffId').setValue(response);\r\n this.tariffId = response;\r\n this.toastr.success('Tariff successfully created');\r\n this.savingFailed = false;\r\n this.displayError = false;\r\n this.saving = false;\r\n },\r\n (error) => {\r\n this.errorMessageSafeHtml = this.sanitizer.bypassSecurityTrustHtml(\r\n this.commonService.handleErrorMessage(error)\r\n );\r\n this.toastr.error(\r\n this.commonService.handleErrorMessage(error)\r\n );\r\n this.savingFailed = true;\r\n this.displayError = true;\r\n this.saving = false;\r\n }\r\n );\r\n }\r\n\r\n public onUpdateTariff() {\r\n this.saving = true;\r\n this.displayError = false;\r\n this.tariffService.updateTariff(this.tariffForm.value).subscribe(\r\n (response) => {\r\n this.toastr.success(\r\n isNullOrUndefined(response.successMessage)\r\n ? 'Tariff successfully updated'\r\n : response.successMessage\r\n );\r\n this.savingFailed = false;\r\n this.displayError = false;\r\n this.saving = false;\r\n },\r\n (error) => {\r\n this.errorMessageSafeHtml = this.sanitizer.bypassSecurityTrustHtml(\r\n this.commonService.handleErrorMessage(error)\r\n );\r\n this.toastr.error(this.commonService.handleErrorMessage(error));\r\n this.savingFailed = true;\r\n this.displayError = true;\r\n this.saving = false;\r\n }\r\n );\r\n }\r\n\r\n public addTariffRate() {\r\n (this.tariffForm.controls.tariffRates as FormArray).push(\r\n this.initTariffRate(null)\r\n );\r\n this.onChangeTariffType();\r\n }\r\n\r\n public removeTariffRate(tariffRateIndex: number) {\r\n if (\r\n ((this.tariffForm.controls.tariffRates as FormArray).at(\r\n tariffRateIndex\r\n ) as FormGroup).get('tariffRateId').value !== 0\r\n ) {\r\n confirm(\r\n 'This tariff rate cannot be removed because it has already been previously saved'\r\n );\r\n } else if (\r\n confirm(\r\n 'Are you sure you want to remove this tariff energy charge?'\r\n )\r\n ) {\r\n (this.tariffForm.controls.tariffRates as FormArray).removeAt(\r\n tariffRateIndex\r\n );\r\n this.onChangeTariffOrTariffRate();\r\n }\r\n }\r\n\r\n public submitTariffRate(tariffRateIndex: number) {\r\n this.commonService.validateAllFormFields(this.tariffForm);\r\n const validationResult = this.tariffService.tariffValidations(\r\n this.tariffs,\r\n this.tariffForm,\r\n this.periods,\r\n this.seasons,\r\n this.energyBrackets,\r\n this.tariffTypes\r\n );\r\n const tariffRateForm = (this.tariffForm.get(\r\n 'tariffRates'\r\n ) as FormArray).at(tariffRateIndex) as FormGroup;\r\n if (tariffRateForm.valid && validationResult.isValid) {\r\n if (tariffRateForm.value.tariffRateId === 0) {\r\n this.onCreateTariffRate(tariffRateIndex);\r\n } else {\r\n this.onUpdateTariffRate(tariffRateIndex);\r\n }\r\n } else {\r\n this.toastr.error(\r\n 'Validation warnings prevent the tariff rate from being saved'\r\n );\r\n this.onChangeTariffOrTariffRate();\r\n }\r\n }\r\n\r\n public onCreateTariffRate(tariffRateIndex: number) {\r\n const tariffRateForm = (this.tariffForm.get(\r\n 'tariffRates'\r\n ) as FormArray).at(tariffRateIndex) as FormGroup;\r\n tariffRateForm.get('saving').setValue(true);\r\n this.displayError = false;\r\n this.tariffService.createTariffRate(tariffRateForm.value).subscribe(\r\n (response) => {\r\n tariffRateForm.get('tariffRateId').setValue(response);\r\n this.toastr.success('Tariff rate successfully created');\r\n this.savingFailed = false;\r\n this.displayError = false;\r\n tariffRateForm.get('saving').setValue(false);\r\n },\r\n (error) => {\r\n this.errorMessageSafeHtml = this.sanitizer.bypassSecurityTrustHtml(\r\n this.commonService.handleErrorMessage(error)\r\n );\r\n this.toastr.error(this.commonService.handleErrorMessage(error));\r\n this.savingFailed = true;\r\n this.displayError = true;\r\n tariffRateForm.get('saving').setValue(false);\r\n }\r\n );\r\n }\r\n\r\n public onUpdateTariffRate(tariffRateIndex: number) {\r\n const tariffRateForm = (this.tariffForm.get(\r\n 'tariffRates'\r\n ) as FormArray).at(tariffRateIndex) as FormGroup;\r\n tariffRateForm.get('saving').setValue(true);\r\n this.displayError = false;\r\n this.tariffService.updateTariffRate(tariffRateForm.value).subscribe(\r\n (response) => {\r\n this.toastr.success(\r\n isNullOrUndefined(response.successMessage)\r\n ? 'Tariff rate successfully updated'\r\n : response.successMessage\r\n );\r\n this.savingFailed = false;\r\n this.displayError = false;\r\n tariffRateForm.get('saving').setValue(false);\r\n },\r\n (error) => {\r\n this.errorMessageSafeHtml = this.sanitizer.bypassSecurityTrustHtml(\r\n this.commonService.handleErrorMessage(error)\r\n );\r\n this.toastr.error(this.commonService.handleErrorMessage(error));\r\n this.savingFailed = true;\r\n this.displayError = true;\r\n tariffRateForm.get('saving').setValue(false);\r\n }\r\n );\r\n }\r\n\r\n public onChangeTariffOrTariffRate() {\r\n this.errorMessageSafeHtml = '';\r\n this.displayError = false;\r\n const validationResult = this.tariffService.tariffValidations(\r\n this.tariffs,\r\n this.tariffForm,\r\n this.periods,\r\n this.seasons,\r\n this.energyBrackets,\r\n this.tariffTypes\r\n );\r\n if (!validationResult.isValid) {\r\n this.errorMessageSafeHtml = this.sanitizer.bypassSecurityTrustHtml(\r\n validationResult.validationMessage\r\n );\r\n this.displayError = true;\r\n }\r\n }\r\n\r\n public onChangeTariffType() {\r\n if (\r\n isNullOrUndefined(this.tariffForm.controls.tariffTypeLookupId.value)\r\n ) {\r\n this.commonService.disableControl(\r\n this.tariffForm.controls.tariffRates\r\n );\r\n } else {\r\n this.commonService.enableControl(\r\n this.tariffForm.controls.tariffRates,\r\n []\r\n );\r\n this.onChangeTariffOrTariffRate();\r\n }\r\n }\r\n\r\n private initialize() {\r\n this.loading = true;\r\n this.commonService\r\n .getEntityLookups([\r\n 'ConnectionVoltageSize',\r\n 'EnergyBracket',\r\n 'TariffType',\r\n 'Season',\r\n 'Period',\r\n ])\r\n .subscribe(\r\n (entityLookups) => {\r\n this.energyBrackets =\r\n entityLookups.entityLookupResultList['energyBracket'];\r\n this.voltages =\r\n entityLookups.entityLookupResultList[\r\n 'connectionVoltageSize'\r\n ];\r\n this.tariffTypes =\r\n entityLookups.entityLookupResultList['tariffType'];\r\n this.seasons =\r\n entityLookups.entityLookupResultList['season'];\r\n this.periods =\r\n entityLookups.entityLookupResultList['period'];\r\n this.tariffService.getTariff(this.tariffId).subscribe(\r\n (tariff) => {\r\n this.tariff = tariff;\r\n if (!isNullOrUndefined(this.distributorId)) {\r\n this.tariffService\r\n .getDistributorTariffs(this.distributorId)\r\n .subscribe(\r\n (tariffs) => {\r\n this.isEskomDistributor =\r\n tariff &&\r\n tariff.isEskomDistributor;\r\n this.tariffs = tariffs;\r\n this.initTariff(this.tariff);\r\n this.onChangeTariffType();\r\n this.loading = false;\r\n this.displayError = false;\r\n this.loadingFailed = false;\r\n },\r\n (error) => {\r\n this.errorMessageSafeHtml = this.sanitizer.bypassSecurityTrustHtml(\r\n this.commonService.handleErrorMessage(\r\n error\r\n )\r\n );\r\n this.loadingFailed = true;\r\n this.displayError = true;\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n },\r\n (error) => {\r\n this.errorMessageSafeHtml = this.sanitizer.bypassSecurityTrustHtml(\r\n this.commonService.handleErrorMessage(error)\r\n );\r\n this.loadingFailed = true;\r\n this.displayError = true;\r\n this.loading = false;\r\n }\r\n );\r\n },\r\n (error) => {\r\n this.errorMessageSafeHtml = this.sanitizer.bypassSecurityTrustHtml(\r\n this.commonService.handleErrorMessage(error)\r\n );\r\n this.loadingFailed = true;\r\n this.displayError = true;\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n\r\n private initTariffRates(tariffRates: TariffRate[]): FormGroup[] {\r\n const tariffRateFormGroups: FormGroup[] = [];\r\n if (!isNullOrUndefined(tariffRates)) {\r\n tariffRates.forEach((tariffRate) => {\r\n const tariffRateFormGroup = this.initTariffRate(tariffRate);\r\n tariffRateFormGroups.push(tariffRateFormGroup);\r\n });\r\n }\r\n return tariffRateFormGroups;\r\n }\r\n\r\n private initTariffRate(tariffRate: TariffRate): FormGroup {\r\n return new FormGroup({\r\n tariffRateId: new FormControl({\r\n value: isNullOrUndefined(tariffRate)\r\n ? 0\r\n : tariffRate.tariffRateId,\r\n disabled: this.isReadOnlyMode,\r\n }),\r\n periodId: new FormControl(\r\n {\r\n value: isNullOrUndefined(tariffRate)\r\n ? null\r\n : tariffRate.periodId,\r\n disabled: this.isReadOnlyMode,\r\n },\r\n [Validators.required]\r\n ),\r\n seasonId: new FormControl(\r\n {\r\n value: isNullOrUndefined(tariffRate)\r\n ? null\r\n : tariffRate.seasonId,\r\n disabled: this.isReadOnlyMode,\r\n },\r\n [Validators.required]\r\n ),\r\n energyBracketLookupId: new FormControl(\r\n {\r\n value: isNullOrUndefined(tariffRate)\r\n ? null\r\n : tariffRate.energyBracketLookupId,\r\n disabled: this.isReadOnlyMode,\r\n },\r\n [Validators.required]\r\n ),\r\n kwhRate: new FormControl(\r\n {\r\n value: isNullOrUndefined(tariffRate)\r\n ? 0\r\n : tariffRate.kwhRate,\r\n disabled: this.isReadOnlyMode,\r\n },\r\n [Validators.required, Validators.min(0)]\r\n ),\r\n kvaRate: new FormControl(\r\n {\r\n value: isNullOrUndefined(tariffRate)\r\n ? 0\r\n : tariffRate.kvaRate,\r\n disabled: this.isReadOnlyMode,\r\n },\r\n [Validators.required, Validators.min(0)]\r\n ),\r\n saving: new FormControl({\r\n value: false,\r\n disabled: this.isReadOnlyMode,\r\n }),\r\n tariffId: new FormControl({\r\n value: this.tariffId,\r\n disabled: this.isReadOnlyMode,\r\n }),\r\n });\r\n }\r\n\r\n private initTariff(tariff: Tariff) {\r\n this.tariffForm = new FormGroup({\r\n tariffId: new FormControl({\r\n value: isNullOrUndefined(tariff) ? 0 : tariff.tariffId,\r\n disabled: this.isReadOnlyMode,\r\n }),\r\n tariffCode: new FormControl(\r\n {\r\n value: isNullOrUndefined(tariff) ? '' : tariff.tariffCode,\r\n disabled: this.isReadOnlyMode,\r\n },\r\n [Validators.required, Validators.maxLength(50)]\r\n ),\r\n tariffName: new FormControl(\r\n {\r\n value: isNullOrUndefined(tariff) ? '' : tariff.tariffName,\r\n disabled: this.isReadOnlyMode,\r\n },\r\n [Validators.required, Validators.maxLength(50)]\r\n ),\r\n connectionVoltageSizeLookupId: new FormControl(\r\n {\r\n value: isNullOrUndefined(tariff)\r\n ? null\r\n : tariff.connectionVoltageSizeLookupId,\r\n disabled: this.isReadOnlyMode,\r\n },\r\n [Validators.required]\r\n ),\r\n tariffTypeLookupId: new FormControl(\r\n {\r\n value: isNullOrUndefined(tariff)\r\n ? null\r\n : tariff.tariffTypeLookupId,\r\n disabled: this.isReadOnlyMode,\r\n },\r\n [Validators.required]\r\n ),\r\n administrationCharge: new FormControl(\r\n {\r\n value: isNullOrUndefined(tariff)\r\n ? 0\r\n : tariff.administrationCharge,\r\n disabled: this.isReadOnlyMode,\r\n },\r\n [Validators.required, Validators.min(0)]\r\n ),\r\n tradingLimit: new FormControl({\r\n value: isNullOrUndefined(tariff) ? 0 : tariff.tradingLimit,\r\n disabled: this.isReadOnlyMode,\r\n }),\r\n tradingInTariff: new FormControl({\r\n value: isNullOrUndefined(tariff)\r\n ? false\r\n : tariff.tradingInTariff,\r\n disabled: this.isReadOnlyMode,\r\n }),\r\n peakDiscount: new FormControl(\r\n {\r\n value: isNullOrUndefined(tariff) ? 0 : tariff.peakDiscount,\r\n disabled: this.isReadOnlyMode,\r\n },\r\n [Validators.required, Validators.min(0), Validators.max(100)]\r\n ),\r\n offPeakDiscount: new FormControl(\r\n {\r\n value: isNullOrUndefined(tariff)\r\n ? 0\r\n : tariff.offPeakDiscount,\r\n disabled: this.isReadOnlyMode,\r\n },\r\n [Validators.required, Validators.min(0), Validators.max(100)]\r\n ),\r\n standardDiscount: new FormControl(\r\n {\r\n value: isNullOrUndefined(tariff)\r\n ? 0\r\n : tariff.standardDiscount,\r\n disabled: this.isReadOnlyMode,\r\n },\r\n [Validators.required, Validators.min(0), Validators.max(100)]\r\n ),\r\n tariffRates: new FormArray(\r\n this.initTariffRates(\r\n tariff === null ? null : tariff.tariffRates\r\n )\r\n ),\r\n });\r\n }\r\n}\r\n","import {\r\n Component,\r\n OnInit,\r\n Input,\r\n ChangeDetectorRef,\r\n AfterViewChecked,\r\n} from '@angular/core';\r\nimport { FormGroup, FormArray, FormControl, Validators } from '@angular/forms';\r\nimport {\r\n ColumnConfiguration,\r\n DataType,\r\n} from '../../model/crud-table/column-configuration.model';\r\nimport { CommonService } from '../../common/common-service';\r\nimport { DatePipe } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'crud-table',\r\n templateUrl: './crud-table.component.html',\r\n styleUrls: ['../../component/form.styles.scss'],\r\n})\r\nexport class CrudTableComponent implements OnInit, AfterViewChecked {\r\n @Input('containerForm')\r\n public containerForm: FormGroup;\r\n @Input('columnConfiguration')\r\n public columnConfiguration: ColumnConfiguration[];\r\n @Input('list')\r\n public list: any = [];\r\n @Input('tableName')\r\n public tableName: string;\r\n @Input('childControlName')\r\n public childControlName: string;\r\n @Input('addDisabled')\r\n public addDisabled: boolean = false;\r\n @Input('hideActionColumn')\r\n public hideActionColumn: boolean = false;\r\n @Input('isReadOnlyMode')\r\n public isReadOnlyMode: boolean = false;\r\n\r\n public tableColumns: any[] = [];\r\n public formArray: FormArray = new FormArray([]);\r\n\r\n public constructor(\r\n private cdRef: ChangeDetectorRef,\r\n private commonService: CommonService\r\n ) {}\r\n\r\n public ngOnInit(): void {\r\n if (!this.columnConfiguration) {\r\n this.columnConfiguration = [];\r\n }\r\n\r\n this.containerForm.setControl(this.childControlName, this.formArray);\r\n\r\n this.columnConfiguration.forEach((config) => {\r\n if (!config.isId) {\r\n this.tableColumns.push(config);\r\n }\r\n });\r\n if (!this.list) {\r\n this.list = [];\r\n }\r\n\r\n if (this.list.length > 0) {\r\n this.list.forEach((item) => {\r\n this.formArray.push(this.createForm(item, true));\r\n });\r\n } else {\r\n this.formArray.push(\r\n this.createForm(this.getEmptyObjectFromConfig(), false)\r\n );\r\n }\r\n }\r\n\r\n public ngAfterViewChecked() {\r\n this.cdRef.detectChanges();\r\n }\r\n\r\n public addRow() {\r\n this.formArray.push(\r\n this.createForm(this.getEmptyObjectFromConfig(), false)\r\n );\r\n }\r\n\r\n public deleteRow(event: any) {\r\n this.formArray.removeAt(event);\r\n }\r\n\r\n public createForm(object: any, isEdit: boolean): FormGroup {\r\n const form = new FormGroup({});\r\n // tslint:disable-next-line:forin\r\n for (const key in object) {\r\n // noinspection JSUnfilteredForInLoop\r\n const config = this.getConfigurationByFormControlName(key);\r\n if (config) {\r\n if (config.dataType === DataType.date) {\r\n // noinspection JSUnfilteredForInLoop\r\n const dateTransformed = new DatePipe(LOCALE).transform(\r\n object[key],\r\n 'dd MMMM yyyy'\r\n );\r\n // noinspection JSUnfilteredForInLoop\r\n form.setControl(\r\n key,\r\n new FormControl(dateTransformed, config.validators)\r\n );\r\n } else {\r\n // noinspection JSUnfilteredForInLoop\r\n // noinspection JSUnfilteredForInLoop\r\n form.setControl(\r\n key,\r\n new FormControl(object[key], config.validators)\r\n );\r\n }\r\n }\r\n }\r\n form.setControl('isEdit', new FormControl(isEdit));\r\n if (this.isReadOnlyMode) {\r\n form.disable();\r\n }\r\n return form;\r\n }\r\n\r\n public updateValidation(controls: any, formControlName: string): void {\r\n let max: number = this.getConfigurationByFormControlName(\r\n formControlName\r\n ).max;\r\n if (max) {\r\n if (controls['effectiveDate']) {\r\n const effectiveDate = this.trimDate(\r\n new Date(controls['effectiveDate'].value)\r\n );\r\n this.formArray.controls.forEach((c: FormGroup) => {\r\n const controlDate = this.trimDate(\r\n new Date(c.value.effectiveDate)\r\n );\r\n if (controlDate.getTime() === effectiveDate.getTime()) {\r\n this.commonService.enableControl(\r\n c.controls[formControlName],\r\n [Validators.required, Validators.max(max)],\r\n true\r\n );\r\n max = max - c.controls[formControlName].value;\r\n }\r\n });\r\n } else {\r\n this.formArray.controls.forEach((c: FormGroup) => {\r\n this.commonService.enableControl(\r\n c.controls[formControlName],\r\n [Validators.required, Validators.max(max)],\r\n true\r\n );\r\n max = max - c.controls[formControlName].value;\r\n });\r\n }\r\n }\r\n }\r\n\r\n public updateEffectiveDate(date: any, controls: any, controlName: string) {\r\n if (controlName === 'effectiveDate' && date) {\r\n controls['effectiveDate'].patchValue(date);\r\n this.getRatioColumnNames().forEach((name) => {\r\n this.updateValidation(controls, name);\r\n });\r\n }\r\n }\r\n\r\n private getEmptyObjectFromConfig(): any {\r\n const emptyObject = {};\r\n this.columnConfiguration.forEach((config) => {\r\n if (config.isId) {\r\n emptyObject[config.formControlName] = 0;\r\n } else {\r\n emptyObject[config.formControlName] = null;\r\n }\r\n });\r\n return emptyObject;\r\n }\r\n\r\n private getConfigurationByFormControlName(\r\n formControlName: string\r\n ): ColumnConfiguration {\r\n return this.columnConfiguration.find((config) => {\r\n return config.formControlName === formControlName;\r\n });\r\n }\r\n\r\n private getRatioColumnNames(): string[] {\r\n return this.columnConfiguration\r\n .filter((config) => {\r\n return config.dataType === DataType.ratio;\r\n })\r\n .map((config) => config.formControlName);\r\n }\r\n\r\n private trimDate(dateString: Date): Date {\r\n dateString.setHours(0);\r\n dateString.setMinutes(0);\r\n dateString.setSeconds(0);\r\n dateString.setMilliseconds(0);\r\n return dateString;\r\n }\r\n}\r\n","import { Input } from '@angular/core';\r\nimport { FormGroup, FormArray } from '@angular/forms';\r\nimport { ColumnConfiguration, DataType } from './model/column-configuration';\r\n\r\nexport abstract class BaseAccordionComponent {\r\n @Input('containerForm')\r\n public containerForm: FormGroup;\r\n @Input('isReadOnlyMode')\r\n public isReadOnlyMode: boolean;\r\n @Input('existingChildren')\r\n public existingChildren: any;\r\n @Input('childControlName')\r\n public childControlName: string;\r\n @Input('minimum')\r\n public minimum = 1;\r\n @Input('maximum')\r\n public maximum = 100;\r\n @Input('heading')\r\n public heading: string = '';\r\n public formArray: FormArray = new FormArray([]);\r\n\r\n public initializeForm() {\r\n if (!this.existingChildren) {\r\n this.existingChildren = [];\r\n }\r\n\r\n this.containerForm.setControl(this.childControlName, this.formArray);\r\n if (this.existingChildren.length > 0) {\r\n this.existingChildren.forEach((child) => {\r\n this.formArray.push(this.createForm(child, false));\r\n });\r\n } else {\r\n for (let i = 0; i < this.minimum; i++) {\r\n this.formArray.push(this.createForm(null, true));\r\n }\r\n }\r\n\r\n if (this.isReadOnlyMode) {\r\n this.containerForm.disable();\r\n }\r\n }\r\n\r\n public addItem() {\r\n if (this.formArray.length === this.maximum) {\r\n alert('You have reached the maximum allowed number of items');\r\n return;\r\n }\r\n this.formArray.push(this.createForm(null, true));\r\n }\r\n\r\n public removeItem(event: any) {\r\n if (confirm('Are you sure you want to remove this?')) {\r\n this.formArray.removeAt(event);\r\n }\r\n }\r\n\r\n public abstract createForm(object: any, isNewItem: boolean): FormGroup;\r\n}\r\n","import { OnInit, Component } from '@angular/core';\r\nimport { BaseAccordionComponent } from '../../../../widget/base-accordion/base-accordion.component';\r\nimport { CommonService } from '../../../../common/common-service';\r\nimport { FormGroup, FormControl, Validators } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'prepaid-accordion',\r\n templateUrl: './prepaid-vendor-accordion.component.html',\r\n styleUrls: ['../../../../component/form.styles.scss'],\r\n})\r\nexport class PrepaidVendorAccordionComponent extends BaseAccordionComponent\r\n implements OnInit {\r\n public constructor(public commonService: CommonService) {\r\n super();\r\n }\r\n\r\n public ngOnInit() {\r\n super.initializeForm();\r\n }\r\n\r\n public createForm(prepaidVendor: any, isNewItem: boolean) {\r\n if (!prepaidVendor) {\r\n prepaidVendor = {\r\n prepaidVendorId: 0,\r\n };\r\n }\r\n return new FormGroup({\r\n prepaidVendorId: new FormControl(prepaidVendor.prepaidVendorId),\r\n name: new FormControl(prepaidVendor.name, [Validators.required]),\r\n serviceFee: new FormControl(prepaidVendor.serviceFee, [\r\n Validators.required,\r\n Validators.min(0),\r\n Validators.max(100),\r\n ]),\r\n prepaidTariffs: new FormControl(prepaidVendor.prepaidTariffs),\r\n isNewItem: new FormControl(isNewItem),\r\n });\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Note } from '../../model/note.model';\r\nimport { NoteMetadata } from '../../model/note-metadata.model';\r\nimport { Observable } from 'rxjs';\r\nimport { FormControl } from '@angular/forms';\r\n\r\n@Injectable()\r\nexport class NotesService {\r\n constructor(private httpClient: HttpClient) {}\r\n\r\n public createNote(note: Note): Observable {\r\n return this.httpClient.post(API_URL + 'Note/CreateNote', note);\r\n }\r\n\r\n public getNoteById(noteId: number): Observable {\r\n return this.httpClient.get(\r\n API_URL + 'Note/GetNoteById?NoteId=' + noteId\r\n );\r\n }\r\n\r\n public getNoteByMetadataAll(noteMetadata: NoteMetadata[]): Observable {\r\n return this.httpClient.post(\r\n API_URL + 'Note/GetNoteByMetadataAll',\r\n noteMetadata\r\n );\r\n }\r\n\r\n public getNoteByMetadataAny(noteMetadata: NoteMetadata[]): Observable {\r\n return this.httpClient.post(\r\n API_URL + 'Note/GetNoteByMetadataAny',\r\n noteMetadata\r\n );\r\n }\r\n\r\n public formControlNoteToNoteModel(\r\n formControlNote: FormControl,\r\n noteMetadata: NoteMetadata[]\r\n ): Note {\r\n return new Note(0, formControlNote.value, noteMetadata, '', '');\r\n }\r\n}\r\n","import { NoteMetadata } from './note-metadata.model';\r\n\r\nexport class Note {\r\n constructor(\r\n public noteId: number,\r\n public value: string,\r\n public noteMetadata: NoteMetadata[],\r\n public createdBy?: string,\r\n public createdDateTime?: string\r\n ) {}\r\n}\r\n","import { Component, Input, OnInit, OnDestroy } from '@angular/core';\r\nimport { NoteMetadata } from '../../model/note-metadata.model';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { NotesService } from './notes.service';\r\nimport { FormArray, FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { Note } from '../../model/note.model';\r\n\r\nimport { CommonService } from '../../common/common-service';\r\nimport { Subscription } from 'rxjs';\r\nimport { ComponentTriggersService } from '../../common/component-triggers.service';\r\nimport { ToastrService } from 'ngx-toastr';\r\n\r\n@Component({\r\n selector: 'notes',\r\n templateUrl: './notes.component.html',\r\n styleUrls: ['./notes.component.scss', '../form.styles.scss'],\r\n})\r\nexport class NotesComponent implements OnInit, OnDestroy {\r\n @Input('noteMetadata')\r\n public noteMetadata: NoteMetadata[];\r\n @Input('noteId')\r\n public noteId: number;\r\n @Input('notesMustMeetAllMetadata')\r\n public notesMustMeetAllMetadata: false;\r\n @Input('pageSize')\r\n public pageSize = 3;\r\n public errorMessage = '';\r\n public notesForm: FormGroup;\r\n public notesFormArray: FormArray;\r\n public loading = false;\r\n public saving = false;\r\n public loadingFailed = false;\r\n public pageNumber = 1;\r\n public totalNotes = 0;\r\n public totalPages = 1;\r\n public pageNoteStartIndex = 0;\r\n public pageNoteEndIndex = 0;\r\n public addingNote = false;\r\n private triggerNotesRefreshSubscription: Subscription;\r\n\r\n constructor(\r\n private notesService: NotesService,\r\n private toastr: ToastrService,\r\n private commonService: CommonService,\r\n private componentTriggerService: ComponentTriggersService\r\n ) {}\r\n\r\n public ngOnInit() {\r\n this.triggerNotesRefreshSubscription = this.componentTriggerService.triggerNotesRefresh.subscribe(\r\n (noteMetadata: NoteMetadata[]) => {\r\n if (noteMetadata) {\r\n this.noteMetadata = noteMetadata;\r\n }\r\n this.initialize();\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n\r\n this.initialize();\r\n }\r\n\r\n public ngOnDestroy() {\r\n this.triggerNotesRefreshSubscription.unsubscribe();\r\n }\r\n\r\n public cancelNote() {\r\n if (confirm('Are you sure you want to cancel this note?')) {\r\n this.notesForm.controls.newNoteValue.setValue('');\r\n this.commonService.disableControl(\r\n this.notesForm.controls.newNoteValue\r\n );\r\n this.addingNote = false;\r\n }\r\n }\r\n\r\n public previousPage() {\r\n const currentPageNoteEndIndex = this.pageNoteEndIndex;\r\n if (this.pageNumber > 1) {\r\n this.pageNoteStartIndex =\r\n this.pageSize < this.totalNotes\r\n ? this.pageNoteStartIndex - this.pageSize < 0\r\n ? 0\r\n : this.pageNoteStartIndex - this.pageSize\r\n : 0;\r\n this.pageNoteEndIndex =\r\n this.pageSize < this.totalNotes\r\n ? this.pageNoteEndIndex < this.pageSize\r\n ? this.pageNoteEndIndex\r\n : (this.pageNoteEndIndex + 1) % this.pageSize === 0\r\n ? this.pageNoteEndIndex - this.pageSize\r\n : this.pageNoteEndIndex -\r\n (this.pageSize -\r\n (this.pageSize -\r\n ((this.pageNoteEndIndex + 1) %\r\n this.pageSize)))\r\n : this.totalNotes - 1;\r\n }\r\n this.pageNumber -=\r\n currentPageNoteEndIndex > this.pageNoteEndIndex ? 1 : 0;\r\n }\r\n\r\n public nextPage() {\r\n const currentPageNoteStartIndex = this.pageNoteStartIndex;\r\n if (this.pageNumber < this.totalPages) {\r\n this.pageNoteStartIndex =\r\n this.pageSize < this.totalNotes\r\n ? this.pageNoteStartIndex + this.pageSize\r\n : 0;\r\n this.pageNoteEndIndex =\r\n this.pageSize < this.totalNotes\r\n ? this.pageNoteEndIndex + this.pageSize >\r\n this.totalNotes - 1\r\n ? this.totalNotes - 1\r\n : this.pageNoteEndIndex + this.pageSize\r\n : this.totalNotes - 1;\r\n }\r\n this.pageNumber +=\r\n currentPageNoteStartIndex < this.pageNoteStartIndex ? 1 : 0;\r\n }\r\n\r\n public addNote() {\r\n this.notesForm.controls.newNoteValue.setValue('');\r\n this.commonService.enableControl(this.notesForm.controls.newNoteValue, [\r\n Validators.required,\r\n Validators.maxLength(500),\r\n ]);\r\n this.addingNote = true;\r\n }\r\n\r\n public saveNote() {\r\n this.commonService.validateAllFormFields(this.notesForm);\r\n if (this.notesForm.valid) {\r\n const note = this.notesService.formControlNoteToNoteModel(\r\n this.notesForm.controls.newNoteValue as FormControl,\r\n this.noteMetadata\r\n );\r\n this.saving = true;\r\n this.notesService.createNote(note).subscribe(\r\n () => {\r\n this.toastr.success('Note saved successfully');\r\n this.saving = false;\r\n this.initialize();\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.toastr.error(this.errorMessage);\r\n this.saving = false;\r\n }\r\n );\r\n this.addingNote = false;\r\n } else {\r\n this.toastr.error('Please ensure the form is filled in correctly');\r\n }\r\n }\r\n\r\n private initialize() {\r\n if (!isNullOrUndefined(this.pageSize) && this.pageSize <= 0) {\r\n this.errorMessage = 'Page size must be greater then 0';\r\n } else if (\r\n !isNullOrUndefined(this.noteId) &&\r\n !isNullOrUndefined(this.noteMetadata)\r\n ) {\r\n this.errorMessage =\r\n 'Note metadata and noteId provided, please only provide either metadata or a noteId';\r\n } else if (\r\n !isNullOrUndefined(this.noteId) &&\r\n !isNullOrUndefined(this.notesMustMeetAllMetadata)\r\n ) {\r\n this.errorMessage =\r\n 'notesMustMeetAllMetadata flag can only be used if note metadata is provided';\r\n } else if (\r\n !isNullOrUndefined(this.noteId) ||\r\n !isNullOrUndefined(this.noteMetadata)\r\n ) {\r\n if (!isNullOrUndefined(this.noteId)) {\r\n this.loading = true;\r\n this.notesService.getNoteById(this.noteId).subscribe(\r\n (note: Note) => {\r\n const notes: Note[] = [];\r\n notes.push(note);\r\n this.initNotesForm(notes);\r\n this.loading = false;\r\n this.loadingFailed = false;\r\n this.totalNotes = 1;\r\n this.pageNumber = 1;\r\n this.totalPages = 1;\r\n this.pageNoteStartIndex = 0;\r\n this.pageNoteEndIndex = 0;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.toastr.error(this.errorMessage);\r\n this.loading = false;\r\n this.loadingFailed = true;\r\n }\r\n );\r\n } else {\r\n this.loading = true;\r\n if (this.notesMustMeetAllMetadata) {\r\n this.notesService\r\n .getNoteByMetadataAll(this.noteMetadata)\r\n .subscribe(\r\n (responseNotes: Note[]) => {\r\n this.initNotesForm(responseNotes);\r\n this.loading = false;\r\n this.loadingFailed = false;\r\n this.totalNotes = responseNotes.length;\r\n this.pageNumber = 1;\r\n this.totalPages = Math.ceil(\r\n this.totalNotes / this.pageSize\r\n );\r\n this.pageNoteStartIndex = 0;\r\n this.pageNoteEndIndex =\r\n this.totalNotes < this.pageSize\r\n ? this.totalNotes - 1\r\n : this.pageSize - 1;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.toastr.error(this.errorMessage);\r\n this.loading = false;\r\n this.loadingFailed = true;\r\n }\r\n );\r\n } else {\r\n this.notesService\r\n .getNoteByMetadataAny(this.noteMetadata)\r\n .subscribe(\r\n (responseNotes: Note[]) => {\r\n this.initNotesForm(responseNotes);\r\n this.loading = false;\r\n this.loadingFailed = false;\r\n this.totalNotes = responseNotes.length;\r\n this.pageNumber = 1;\r\n this.totalPages = Math.ceil(\r\n this.totalNotes / this.pageSize\r\n );\r\n this.pageNoteStartIndex = 0;\r\n this.pageNoteEndIndex =\r\n this.totalNotes < this.pageSize\r\n ? this.totalNotes - 1\r\n : this.pageSize - 1;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.toastr.error(this.errorMessage);\r\n this.loading = false;\r\n this.loadingFailed = true;\r\n }\r\n );\r\n }\r\n }\r\n }\r\n }\r\n\r\n private initNotesForm(notes: Note[]) {\r\n this.notesFormArray = new FormArray(this.initNotesArray(notes));\r\n this.notesForm = new FormGroup({\r\n newNoteValue: new FormControl(''),\r\n notes: this.notesFormArray,\r\n });\r\n this.commonService.disableControl(this.notesForm.controls.newNoteValue);\r\n }\r\n\r\n private initNotesArray(notes: Note[]): FormGroup[] {\r\n const noteFormGroups: FormGroup[] = [];\r\n if (isNullOrUndefined(notes)) {\r\n noteFormGroups.push(this.initNote(null));\r\n } else {\r\n notes.forEach((note: Note) => {\r\n noteFormGroups.push(this.initNote(note));\r\n });\r\n }\r\n return noteFormGroups;\r\n }\r\n\r\n private initNote(note: Note): FormGroup {\r\n return new FormGroup({\r\n noteId: new FormControl(isNullOrUndefined(note) ? 0 : note.noteId),\r\n value: new FormControl(isNullOrUndefined(note) ? '' : note.value),\r\n createdBy: new FormControl(\r\n isNullOrUndefined(note) ? '' : note.createdBy\r\n ),\r\n createdDateTime: new FormControl(\r\n isNullOrUndefined(note) ? '' : note.createdDateTime\r\n ),\r\n noteMetadata: new FormArray(\r\n this.initNoteMetadataArray(note.noteMetadata)\r\n ),\r\n });\r\n }\r\n\r\n private initNoteMetadataArray(noteMetadatas: NoteMetadata[]): FormGroup[] {\r\n const noteMetadataFormGroups: FormGroup[] = [];\r\n if (isNullOrUndefined(noteMetadatas)) {\r\n noteMetadataFormGroups.push(this.initNoteMetadata(null));\r\n } else {\r\n noteMetadatas.forEach((noteMetadata: NoteMetadata) => {\r\n noteMetadataFormGroups.push(\r\n this.initNoteMetadata(noteMetadata)\r\n );\r\n });\r\n }\r\n return noteMetadataFormGroups;\r\n }\r\n\r\n private initNoteMetadata(noteMetadata: NoteMetadata) {\r\n return new FormGroup({\r\n noteMetadataId: new FormControl(\r\n isNullOrUndefined(noteMetadata)\r\n ? 0\r\n : noteMetadata.noteMetadataId\r\n ),\r\n metadataTypeLookupId: new FormControl(\r\n isNullOrUndefined(noteMetadata)\r\n ? ''\r\n : noteMetadata.metadataTypeLookupId\r\n ),\r\n metadataValue: new FormControl(\r\n isNullOrUndefined(noteMetadata)\r\n ? ''\r\n : noteMetadata.metadataValue\r\n ),\r\n });\r\n }\r\n}\r\n","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { isNullOrUndefined } from 'util';\r\n\r\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { CommonService } from '../../../common/common-service';\r\nimport { DocumentMetadata } from '../../../model/document-metadata.model';\r\nimport { Document } from '../../../model/document.model';\r\nimport { DocumentService } from '../document.service';\r\nimport { EntityLookup } from '../../../model/entity-lookup.model';\r\nimport { saveAs } from 'file-saver/FileSaver';\r\nimport { ComponentTriggersService } from '../../../common/component-triggers.service';\r\nimport { Subscription } from 'rxjs';\r\nimport { ToastrService } from 'ngx-toastr';\r\n\r\n@Component({\r\n selector: 'documents',\r\n templateUrl: './documents.component.html',\r\n styleUrls: ['./documents.component.scss', '../../form.styles.scss'],\r\n})\r\nexport class DocumentsComponent implements OnInit, OnDestroy {\r\n @Input('documentTypes')\r\n public documentTypes: EntityLookup[];\r\n @Input('IncludeDocumentsContaining')\r\n public IncludeDocumentsContaining: string[];\r\n @Input('documentMetadata')\r\n public documentMetadata: DocumentMetadata[];\r\n @Input('path')\r\n public path: string;\r\n @Input('pathValues')\r\n public pathValues: string[];\r\n @Input('documentId')\r\n public documentId: number;\r\n @Input('documentsMustMeetAllMetadata')\r\n public documentsMustMeetAllMetadata: false;\r\n @Input('pageSize')\r\n public pageSize = 3;\r\n @Input('isReadOnlyMode')\r\n public isReadOnlyMode: boolean = false;\r\n public errorMessage = '';\r\n public documentsForm: FormGroup;\r\n public documentsFormGroup: FormGroup;\r\n public loading = false;\r\n public documentUploaded = false;\r\n public loadingFailed = false;\r\n public pageNumber = 1;\r\n public totalDocuments = 0;\r\n public totalPages = 1;\r\n public pageDocumentStartIndex = 0;\r\n public pageDocumentEndIndex = 0;\r\n public addingDocument = false;\r\n public documents: Document[] = [];\r\n public downloadingDocumentIds: number[] = [];\r\n private newDocument: Document;\r\n private triggerDocumentsRefreshSubscription: Subscription;\r\n\r\n constructor(\r\n private documentService: DocumentService,\r\n private toastr: ToastrService,\r\n private commonService: CommonService,\r\n private componentTriggerService: ComponentTriggersService\r\n ) {}\r\n\r\n public ngOnInit() {\r\n this.triggerDocumentsRefreshSubscription = this.componentTriggerService.triggerDocumentsRefresh.subscribe(\r\n (documentMetaData: DocumentMetadata[]) => {\r\n if (documentMetaData) {\r\n this.documentMetadata = documentMetaData;\r\n }\r\n this.initialize();\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n this.initialize();\r\n }\r\n\r\n public ngOnDestroy() {\r\n this.triggerDocumentsRefreshSubscription.unsubscribe();\r\n }\r\n\r\n public cancelDocument() {\r\n if (confirm('Are you sure you want to cancel this document?')) {\r\n this.documentsForm.controls.newDocumentControl.setValue(null);\r\n this.commonService.disableControl(\r\n this.documentsForm.controls.documentTypeLookupId\r\n );\r\n this.commonService.disableControl(\r\n this.documentsForm.controls.newDocumentControl\r\n );\r\n this.addingDocument = false;\r\n this.documentUploaded = false;\r\n this.newDocument = null;\r\n }\r\n }\r\n\r\n public getDocumentType(): string {\r\n return this.documentTypes.find((docType) => {\r\n return (\r\n docType.entityLookupId ===\r\n this.documentsForm.controls.documentTypeLookupId.value\r\n );\r\n }).value;\r\n }\r\n\r\n public previousPage() {\r\n const currentPageDocumentEndIndex = this.pageDocumentEndIndex;\r\n if (this.pageNumber > 1) {\r\n this.pageDocumentStartIndex =\r\n this.pageSize < this.totalDocuments\r\n ? this.pageDocumentStartIndex - this.pageSize < 0\r\n ? 0\r\n : this.pageDocumentStartIndex - this.pageSize\r\n : 0;\r\n this.pageDocumentEndIndex =\r\n this.pageSize < this.totalDocuments\r\n ? this.pageDocumentEndIndex < this.pageSize\r\n ? this.pageDocumentEndIndex\r\n : (this.pageDocumentEndIndex + 1) % this.pageSize === 0\r\n ? this.pageDocumentEndIndex - this.pageSize\r\n : this.pageDocumentEndIndex -\r\n (this.pageSize -\r\n (this.pageSize -\r\n ((this.pageDocumentEndIndex + 1) %\r\n this.pageSize)))\r\n : this.totalDocuments - 1;\r\n }\r\n this.pageNumber -=\r\n currentPageDocumentEndIndex > this.pageDocumentEndIndex ? 1 : 0;\r\n }\r\n\r\n public nextPage() {\r\n const currentPageDocumentStartIndex = this.pageDocumentStartIndex;\r\n if (this.pageNumber < this.totalPages) {\r\n this.pageDocumentStartIndex =\r\n this.pageSize < this.totalDocuments\r\n ? this.pageDocumentStartIndex + this.pageSize\r\n : 0;\r\n this.pageDocumentEndIndex =\r\n this.pageSize < this.totalDocuments\r\n ? this.pageDocumentEndIndex + this.pageSize >\r\n this.totalDocuments - 1\r\n ? this.totalDocuments - 1\r\n : this.pageDocumentEndIndex + this.pageSize\r\n : this.totalDocuments - 1;\r\n }\r\n this.pageNumber +=\r\n currentPageDocumentStartIndex < this.pageDocumentStartIndex ? 1 : 0;\r\n }\r\n\r\n public addDocument() {\r\n this.documentsForm.controls.newDocumentControl.setValue(null);\r\n this.commonService.enableControl(\r\n this.documentsForm.controls.documentTypeLookupId,\r\n [Validators.required]\r\n );\r\n this.commonService.enableControl(\r\n this.documentsForm.controls.newDocumentControl,\r\n [Validators.required]\r\n );\r\n this.addingDocument = true;\r\n this.documentUploaded = false;\r\n this.newDocument = new Document('');\r\n }\r\n\r\n public documentUploadVerdict(output: any) {\r\n if (!isNullOrUndefined(output)) {\r\n this.addingDocument = false;\r\n this.initialize();\r\n this.newDocument = null;\r\n }\r\n }\r\n\r\n public onDeleteFile(documentId: number) {\r\n this.documentService.deleteDocument(documentId).subscribe(\r\n (response) => {\r\n this.toastr.success('Document deleted');\r\n this.initialize();\r\n },\r\n (error) => {\r\n if (isNullOrUndefined(error.body)) {\r\n this.toastr.error(\r\n 'An error occurred while deleting the document'\r\n );\r\n } else {\r\n this.toastr.error(error.body.errorMessage);\r\n }\r\n }\r\n );\r\n }\r\n\r\n public onDownloadFile(documentId: number) {\r\n const documentFileName = this.documents.find(\r\n (doc: Document) => doc.documentId === documentId\r\n ).fileName;\r\n this.downloadingDocumentIds.push(documentId);\r\n this.documentService.downloadDocument(documentId).subscribe(\r\n (response) => {\r\n this.downloadingDocumentIds.splice(\r\n this.downloadingDocumentIds.indexOf(documentId),\r\n 1\r\n );\r\n saveAs(response, documentFileName);\r\n this.toastr.success('Document download complete');\r\n },\r\n (error) => {\r\n this.downloadingDocumentIds.splice(\r\n this.downloadingDocumentIds.indexOf(documentId),\r\n 1\r\n );\r\n if (isNullOrUndefined(error.body)) {\r\n this.toastr.error(\r\n 'An error occurred while retrieving document for download'\r\n );\r\n } else {\r\n this.toastr.error(error.body.errorMessage);\r\n }\r\n }\r\n );\r\n }\r\n\r\n private initialize() {\r\n if (!isNullOrUndefined(this.pageSize) && this.pageSize <= 0) {\r\n this.errorMessage = 'Page size must be greater then 0';\r\n } else if (\r\n isNullOrUndefined(this.documentId) &&\r\n isNullOrUndefined(this.documentMetadata)\r\n ) {\r\n this.errorMessage =\r\n 'Neither document metadata nor documentId were provided, please provide either metadata or a documentId';\r\n } else if (\r\n !isNullOrUndefined(this.documentId) &&\r\n !isNullOrUndefined(this.documentMetadata)\r\n ) {\r\n this.errorMessage =\r\n 'Document metadata and documentId provided, please only provide either metadata or a documentId';\r\n } else if (\r\n !isNullOrUndefined(this.documentId) &&\r\n !isNullOrUndefined(this.documentsMustMeetAllMetadata)\r\n ) {\r\n this.errorMessage =\r\n 'documentsMustMeetAllMetadata flag can only be used if document metadata is provided';\r\n } else if (\r\n !isNullOrUndefined(this.documentMetadata) &&\r\n isNullOrUndefined(this.path)\r\n ) {\r\n this.errorMessage =\r\n 'documents path (storage location) must be provided';\r\n } else if (\r\n !isNullOrUndefined(this.documentId) ||\r\n !isNullOrUndefined(this.documentMetadata)\r\n ) {\r\n this.loading = true;\r\n if (isNullOrUndefined(this.documentTypes)) {\r\n this.commonService.getEntityLookups(['DocumentType']).subscribe(\r\n (data) => {\r\n this.documentTypes = data.entityLookupResultList[\r\n 'documentType'\r\n ].sort(this.compare);\r\n if (\r\n this.IncludeDocumentsContaining &&\r\n this.IncludeDocumentsContaining.length > 0\r\n ) {\r\n this.documentTypes = this.documentTypes.filter(\r\n (value) => {\r\n let documentTypeShouldBeIncluded = false;\r\n this.IncludeDocumentsContaining.forEach(\r\n (includeDocumentsContaining) => {\r\n if (\r\n value.value\r\n .toLowerCase()\r\n .indexOf(\r\n includeDocumentsContaining.toLowerCase()\r\n ) > -1\r\n ) {\r\n documentTypeShouldBeIncluded = true;\r\n return;\r\n }\r\n }\r\n );\r\n return documentTypeShouldBeIncluded;\r\n }\r\n );\r\n }\r\n this.continueInit();\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n this.toastr.error(this.errorMessage);\r\n this.loadingFailed = true;\r\n }\r\n );\r\n } else {\r\n this.continueInit();\r\n }\r\n }\r\n }\r\n\r\n private compare(first, second) {\r\n if (first.value < second.value) {\r\n return -1;\r\n }\r\n if (first.value > second.value) {\r\n return 1;\r\n }\r\n return 0;\r\n }\r\n\r\n private continueInit() {\r\n if (!isNullOrUndefined(this.documentId)) {\r\n this.documentService.getDocumentById(this.documentId).subscribe(\r\n (document: Document) => {\r\n this.documents.push(document);\r\n this.initDocumentsForm();\r\n // this.loading = false;\r\n this.loadingFailed = false;\r\n this.totalDocuments = 1;\r\n this.pageNumber = 1;\r\n this.totalPages = 1;\r\n this.pageDocumentStartIndex = 0;\r\n this.pageDocumentEndIndex = 0;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n this.toastr.error(this.errorMessage);\r\n this.loadingFailed = true;\r\n }\r\n );\r\n } else {\r\n this.loading = true;\r\n if (this.documentsMustMeetAllMetadata) {\r\n this.documentService\r\n .getDocumentByMetadataAll(this.documentMetadata)\r\n .subscribe(\r\n (responseDocuments: Document[]) => {\r\n this.documents = responseDocuments;\r\n this.initDocumentsForm();\r\n this.loading = false;\r\n this.loadingFailed = false;\r\n this.totalDocuments = responseDocuments.length;\r\n this.pageNumber = 1;\r\n this.totalPages = Math.ceil(\r\n this.totalDocuments / this.pageSize\r\n );\r\n this.pageDocumentStartIndex = 0;\r\n this.pageDocumentEndIndex =\r\n this.totalDocuments < this.pageSize\r\n ? this.totalDocuments - 1\r\n : this.pageSize - 1;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n this.toastr.error(this.errorMessage);\r\n this.loadingFailed = true;\r\n }\r\n );\r\n } else {\r\n this.documentService\r\n .getDocumentByMetadataAny(this.documentMetadata)\r\n .subscribe(\r\n (responseDocuments: Document[]) => {\r\n this.documents = responseDocuments;\r\n this.initDocumentsForm();\r\n this.loading = false;\r\n this.loadingFailed = false;\r\n this.totalDocuments = responseDocuments.length;\r\n this.pageNumber = 1;\r\n this.totalPages = Math.ceil(\r\n this.totalDocuments / this.pageSize\r\n );\r\n this.pageDocumentStartIndex = 0;\r\n this.pageDocumentEndIndex =\r\n this.totalDocuments < this.pageSize\r\n ? this.totalDocuments - 1\r\n : this.pageSize - 1;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n this.toastr.error(this.errorMessage);\r\n this.loadingFailed = true;\r\n }\r\n );\r\n }\r\n }\r\n }\r\n\r\n private initDocumentsForm() {\r\n this.documentsFormGroup = new FormGroup({});\r\n this.documentsForm = new FormGroup({\r\n documentTypeLookupId: new FormControl(null),\r\n newDocumentControl: new FormControl(this.newDocument),\r\n documents: this.documentsFormGroup,\r\n });\r\n this.commonService.disableControl(\r\n this.documentsForm.controls.documentTypeLookupId\r\n );\r\n this.commonService.disableControl(\r\n this.documentsForm.controls.newDocumentControl\r\n );\r\n if (!isNullOrUndefined(this.documents)) {\r\n this.documents.forEach((document: Document) => {\r\n this.documentsFormGroup.addControl(\r\n document.documentType.value + document.documentId,\r\n new FormControl(document)\r\n );\r\n });\r\n }\r\n }\r\n}\r\n","import { OnInit, Component } from '@angular/core';\r\nimport { BaseAccordionComponent } from '../../../../widget/base-accordion/base-accordion.component';\r\nimport { CommonService } from '../../../../common/common-service';\r\nimport { FormGroup, FormControl, Validators } from '@angular/forms';\r\nimport {\r\n ColumnConfiguration,\r\n DataType,\r\n} from '../../../widget/crud-table/model/column-configuration';\r\n\r\n@Component({\r\n selector: 'prepaid-tariff-accordion',\r\n templateUrl: './prepaid-tariff-accordion.component.html',\r\n styleUrls: ['../../../../component/form.styles.scss'],\r\n})\r\nexport class PrepaidTariffAccordionComponent extends BaseAccordionComponent\r\n implements OnInit {\r\n public constructor(public commonService: CommonService) {\r\n super();\r\n }\r\n\r\n public ngOnInit() {\r\n super.initializeForm();\r\n }\r\n\r\n public createForm(prepaidTariff: any, isNewItem: boolean) {\r\n if (!prepaidTariff) {\r\n prepaidTariff = {\r\n tariffId: 0,\r\n };\r\n }\r\n return new FormGroup({\r\n tariffId: new FormControl(prepaidTariff.tariffId),\r\n tariffName: new FormControl(prepaidTariff.tariffName, [\r\n Validators.required,\r\n ]),\r\n tariffBlocks: new FormControl(prepaidTariff.tariffBlocks),\r\n isNewItem: new FormControl(isNewItem),\r\n });\r\n }\r\n}\r\n","import { OnInit, Component } from '@angular/core';\r\nimport { BaseAccordionComponent } from '../../../../../widget/base-accordion/base-accordion.component';\r\nimport { CommonService } from '../../../../../common/common-service';\r\nimport { FormGroup, FormControl, Validators } from '@angular/forms';\r\nimport { ColumnConfiguration } from '../../../../../model/crud-table/column-configuration.model';\r\nimport { Consumption } from '../../../../../widget/consumption/consumption.model';\r\n\r\n@Component({\r\n selector: 'tariff-block-accordion',\r\n templateUrl: './tariff-block-accordion.component.html',\r\n styleUrls: ['../../../../../component/form.styles.scss'],\r\n})\r\nexport class TariffBlockAccordionComponent extends BaseAccordionComponent\r\n implements OnInit {\r\n public tariffRatesConfig: ColumnConfiguration[];\r\n public errorMessage = '';\r\n public loading = false;\r\n\r\n public constructor(public commonService: CommonService) {\r\n super();\r\n }\r\n\r\n public ngOnInit() {\r\n super.initializeForm();\r\n this.commonService.getEntityLookups(['Period']).subscribe(\r\n (entityLookups) => {\r\n this.tariffRatesConfig = [\r\n new ColumnConfiguration('tariffBlockRateId').initalizeKey(),\r\n new ColumnConfiguration('periodId', 'Period', [\r\n Validators.required,\r\n ]).initializeDropdown(\r\n entityLookups.entityLookupResultList['period']\r\n ),\r\n new ColumnConfiguration('kwhRate', 'kWh Rate', [\r\n Validators.required,\r\n ]).initializeNumber('R'),\r\n ];\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n\r\n public createForm(tariffBlock: any, isNewItem: boolean) {\r\n if (!tariffBlock) {\r\n tariffBlock = {\r\n tariffBlockId: 0,\r\n };\r\n }\r\n if (!tariffBlock.consumption) {\r\n tariffBlock.consumption = [];\r\n }\r\n\r\n return new FormGroup({\r\n tariffBlockId: new FormControl(tariffBlock.tariffBlockId),\r\n blockName: new FormControl(tariffBlock.blockName, [\r\n Validators.required,\r\n ]),\r\n startKwh: new FormControl(tariffBlock.startKwh, [\r\n Validators.required,\r\n Validators.min(0),\r\n ]),\r\n endKwh: new FormControl(tariffBlock.endKwh, [\r\n Validators.required,\r\n Validators.min(0),\r\n ]),\r\n tariffRates: new FormControl(tariffBlock.tariffRates),\r\n isNewItem: new FormControl(isNewItem),\r\n consumption: new FormControl(tariffBlock.consumption),\r\n });\r\n }\r\n}\r\n","import { DistributorBulkMeterService } from '../../bulk-meter-list/distributor-bulkmeter.service';\r\nimport { Component, OnInit, Input, TemplateRef } from '@angular/core';\r\nimport { FormGroup, Validators, FormControl } from '@angular/forms';\r\nimport { CommonService } from '../../../../common/common-service';\r\nimport { EntityLookup } from '../../../../model/entity-lookup.model';\r\nimport { ColumnConfiguration } from '../../../../model/crud-table/column-configuration.model';\r\nimport { BsModalRef, BsModalService } from 'ngx-bootstrap';\r\n\r\nimport { ToastrService } from 'ngx-toastr';\r\n\r\n@Component({\r\n selector: 'consumption-period',\r\n templateUrl: './consumption-period.component.html',\r\n styleUrls: [\r\n '../../../form.styles.scss',\r\n './consumption-period.component.scss',\r\n ],\r\n})\r\nexport class ConsumptionPeriodComponent implements OnInit {\r\n @Input('distributorBulkMeterId')\r\n public distributorBulkMeterId: number;\r\n public distributorBulkMeterConsumptionPeriods: any[];\r\n public periods: EntityLookup[] = [];\r\n public availablePeriods: EntityLookup[] = [];\r\n public distributorConsumptionForm: FormGroup;\r\n public months: EntityLookup[] = [];\r\n public isUpdate: boolean = false;\r\n public modalRef: BsModalRef;\r\n public consumptionColumnConfiguration: ColumnConfiguration[];\r\n public errorMessage = '';\r\n public loading = false;\r\n public saving = false;\r\n\r\n constructor(\r\n private commonService: CommonService,\r\n private distributorBulkMeterService: DistributorBulkMeterService,\r\n private modalService: BsModalService,\r\n protected toastr: ToastrService\r\n ) {\r\n this.distributorConsumptionForm = this.createForm(null);\r\n }\r\n\r\n public ngOnInit() {\r\n this.loading = true;\r\n this.commonService.getEntityLookups(['Period', 'Month']).subscribe(\r\n (entityLookups) => {\r\n this.periods = entityLookups.entityLookupResultList['period'];\r\n this.months = entityLookups.entityLookupResultList['month'];\r\n this.distributorConsumptionForm = this.createForm(null);\r\n this.consumptionColumnConfiguration = [\r\n new ColumnConfiguration(\r\n 'distributorBulkMeterConsumptionId'\r\n ).initalizeKey(),\r\n new ColumnConfiguration(\r\n 'distributorBulkMeterConsumptionPeriodId'\r\n ).initalizeKey(),\r\n new ColumnConfiguration('monthLookupId', 'Month', [\r\n Validators.required,\r\n ]).initializeDropdown(this.months),\r\n new ColumnConfiguration('peakConsumption', 'Peak', [\r\n Validators.required,\r\n Validators.min(0),\r\n ]).initializeNumber('kWh'),\r\n new ColumnConfiguration('offPeakConsumption', 'Off Peak', [\r\n Validators.required,\r\n Validators.min(0),\r\n ]).initializeNumber('kWh'),\r\n new ColumnConfiguration('standardConsumption', 'Standard', [\r\n Validators.required,\r\n Validators.min(0),\r\n ]).initializeNumber('kWh'),\r\n ];\r\n this.getDistributorBulkMeterConsumptionPeriod();\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n\r\n public getDistributorBulkMeterConsumptionPeriod(): void {\r\n this.distributorBulkMeterService\r\n .getDistributorBulkMeter(this.distributorBulkMeterId)\r\n .subscribe(\r\n (response) => {\r\n this.distributorBulkMeterConsumptionPeriods =\r\n response.distributorBulkMeterConsumptionPeriods;\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n\r\n public createForm(selectedBulkMeterConsumptionPeriod: any): FormGroup {\r\n let consumption = selectedBulkMeterConsumptionPeriod;\r\n if (!consumption) {\r\n consumption = {\r\n distributorBulkMeterConsumptionPeriodId: 0,\r\n totalConsumptionPeak: 0,\r\n totalConsumptionOffPeak: 0,\r\n totalConsumptionStandard: 0,\r\n tradeAllowedPeak: 0,\r\n importsAllowedPeak: 0,\r\n tradeAllowedOffPeak: 0,\r\n importsAllowedOffPeak: 0,\r\n tradeAllowedStandard: 0,\r\n importsAllowedStandard: 0,\r\n distributorBulkMeterConsumptions: this.initConsumption(),\r\n };\r\n }\r\n const distributorBulkMeterConsumptions = consumption\r\n ? this.prepopulateConsumption(\r\n consumption.distributorBulkMeterConsumptions,\r\n consumption.distributorBulkMeterConsumptionPeriodId\r\n )\r\n : consumption.distributorBulkMeterConsumptions;\r\n const periodName = consumption.period\r\n ? consumption.period.periodName\r\n : null;\r\n\r\n return new FormGroup({\r\n distributorBulkMeterId: new FormControl(\r\n this.distributorBulkMeterId,\r\n [Validators.required]\r\n ),\r\n distributorBulkMeterConsumptionPeriodId: new FormControl(\r\n consumption.distributorBulkMeterConsumptionPeriodId\r\n ),\r\n periodId: new FormControl(consumption.periodId, [\r\n Validators.required,\r\n ]),\r\n period: new FormControl(periodName),\r\n distributorBulkMeterConsumptions: new FormControl(\r\n distributorBulkMeterConsumptions\r\n ),\r\n totalConsumptionPeak: new FormControl(\r\n consumption.totalConsumptionPeak\r\n ),\r\n totalConsumptionOffPeak: new FormControl(\r\n consumption.totalConsumptionOffPeak\r\n ),\r\n totalConsumptionStandard: new FormControl(\r\n consumption.totalConsumptionStandard\r\n ),\r\n tradeAllowedPeak: new FormControl(consumption.tradeAllowedPeak),\r\n importsAllowedPeak: new FormControl(consumption.importsAllowedPeak),\r\n tradeAllowedOffPeak: new FormControl(\r\n consumption.tradeAllowedOffPeak\r\n ),\r\n importsAllowedOffPeak: new FormControl(\r\n consumption.importsAllowedOffPeak\r\n ),\r\n tradeAllowedStandard: new FormControl(\r\n consumption.tradeAllowedStandard\r\n ),\r\n importsAllowedStandard: new FormControl(\r\n consumption.importsAllowedStandard\r\n ),\r\n latestLimit: new FormControl(consumption.latestLimit),\r\n });\r\n }\r\n\r\n public removeChosenPeriods(selectedPeriod: any = null): void {\r\n if (\r\n this.distributorBulkMeterConsumptionPeriods &&\r\n this.distributorBulkMeterConsumptionPeriods.length > 0\r\n ) {\r\n const selectedPeriods = [];\r\n this.distributorBulkMeterConsumptionPeriods.forEach((bm) => {\r\n selectedPeriods.push(bm.period.periodName);\r\n });\r\n this.availablePeriods = this.periods.filter(\r\n (period) => selectedPeriods.indexOf(period.value) < 0\r\n );\r\n\r\n if (selectedPeriod) {\r\n this.availablePeriods.push(\r\n new EntityLookup(\r\n selectedPeriod.periodName,\r\n selectedPeriod.periodId\r\n )\r\n );\r\n }\r\n } else {\r\n this.availablePeriods = this.periods;\r\n }\r\n }\r\n\r\n public newDistributorConsumptionModal(template: TemplateRef): void {\r\n this.isUpdate = false;\r\n this.removeChosenPeriods();\r\n this.distributorConsumptionForm = this.createForm(null);\r\n this.modalRef = this.modalService.show(template, { class: 'modal-lg' });\r\n }\r\n\r\n public editDistributorConsumptionModal(\r\n selectedDistributorBulkMeterConsumptionPeriod: any,\r\n template: TemplateRef\r\n ): void {\r\n this.isUpdate = true;\r\n const selectedPeriodToAddBack =\r\n selectedDistributorBulkMeterConsumptionPeriod.period;\r\n this.removeChosenPeriods(selectedPeriodToAddBack);\r\n this.distributorConsumptionForm = this.createForm(\r\n selectedDistributorBulkMeterConsumptionPeriod\r\n );\r\n this.modalRef = this.modalService.show(template, { class: 'modal-lg' });\r\n }\r\n\r\n public onPopupSubmit(): void {\r\n this.commonService.validateAllFormFields(\r\n this.distributorConsumptionForm\r\n );\r\n if (this.distributorConsumptionForm.valid) {\r\n this.saving = true;\r\n this.distributorBulkMeterService\r\n .addDistributorBulkMeterConsumptionPeriod(\r\n this.distributorConsumptionForm.value\r\n )\r\n .subscribe(\r\n () => {\r\n this.toastr.success(\r\n 'Successfully updated bulk meter consumption period'\r\n );\r\n this.getDistributorBulkMeterConsumptionPeriod();\r\n this.saving = false;\r\n this.modalRef.hide();\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.saving = false;\r\n this.toastr.error(this.errorMessage);\r\n }\r\n );\r\n }\r\n }\r\n\r\n public onBack() {\r\n this.modalRef.hide();\r\n }\r\n\r\n private initConsumption(): any[] {\r\n const consumptionList = [];\r\n if (this.months.length < 1) {\r\n return consumptionList;\r\n }\r\n this.months.forEach((month) => {\r\n const consumptionItem = new FormGroup({\r\n distributorBulkMeterConsumptionId: new FormControl(null),\r\n distributorBulkMeterConsumptionPeriodId: new FormControl(null),\r\n monthLookupId: new FormControl(month.entityLookupId, [\r\n Validators.required,\r\n ]),\r\n peakConsumption: new FormControl(null, [\r\n Validators.required,\r\n Validators.min(0),\r\n ]),\r\n offPeakConsumption: new FormControl(null, [\r\n Validators.required,\r\n Validators.min(0),\r\n ]),\r\n standardConsumption: new FormControl(null, [\r\n Validators.required,\r\n Validators.min(0),\r\n ]),\r\n flatConsumption: new FormControl(null),\r\n });\r\n consumptionList.push(consumptionItem.value);\r\n });\r\n return consumptionList;\r\n }\r\n\r\n private prepopulateConsumption(\r\n distributorBulkMeterConsumption: any,\r\n bulkMeterConsumptionPeriodId: number\r\n ): any[] {\r\n const consumptionList = [];\r\n distributorBulkMeterConsumption.forEach((consumption) => {\r\n const consumptionItem = new FormGroup({\r\n distributorBulkMeterConsumptionId: new FormControl(\r\n consumption.distributorBulkMeterConsumptionId\r\n ),\r\n distributorBulkMeterConsumptionPeriodId: new FormControl(\r\n consumption.distributorBulkMeterConsumptionPeriodId\r\n ),\r\n monthLookupId: new FormControl(consumption.monthLookupId, [\r\n Validators.required,\r\n ]),\r\n peakConsumption: new FormControl(consumption.peakConsumption, [\r\n Validators.required,\r\n Validators.min(0),\r\n ]),\r\n offPeakConsumption: new FormControl(\r\n consumption.offPeakConsumption,\r\n [Validators.required, Validators.min(0)]\r\n ),\r\n standardConsumption: new FormControl(\r\n consumption.standardConsumption,\r\n [Validators.required, Validators.min(0)]\r\n ),\r\n flatConsumption: new FormControl(consumption.flatConsumption),\r\n });\r\n consumptionList.push(consumptionItem.value);\r\n });\r\n return consumptionList;\r\n }\r\n}\r\n","export class EntityLookup {\r\n constructor(\r\n public value: string,\r\n public entityLookupId: number,\r\n public description?: string,\r\n public orderPriority?: number\r\n ) {}\r\n}\r\n","import { debounceTime } from 'rxjs/operators';\r\nimport {\r\n Component,\r\n Input,\r\n OnInit,\r\n TemplateRef,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { CommonService } from '../../common/common-service';\r\nimport { PublicHolidayService } from './public-holiday.service';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { Period } from '../../model/period.model';\r\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { PublicHolidayTimePeriod } from '../../model/public-holiday-time-period.model';\r\nimport { EntityLookup } from '../../model/entity-lookup.model';\r\nimport { PublicHoliday } from '../../model/public-holiday.model';\r\nimport { BsModalService } from 'ngx-bootstrap/modal';\r\nimport { BsModalRef } from 'ngx-bootstrap';\r\n\r\nimport { Page } from '../../model/page.model';\r\nimport { ToastrService } from 'ngx-toastr';\r\n\r\n@Component({\r\n selector: 'public-holiday-time-period',\r\n templateUrl: './public-holiday-time-period.component.html',\r\n styleUrls: [\r\n '../form.styles.scss',\r\n './public-holiday-time-period.component.scss',\r\n ],\r\n})\r\nexport class PublicHolidayTimePeriodComponent implements OnInit {\r\n @Input('tariffId')\r\n public tariffId: number = 0;\r\n @ViewChild('publicHolidayTimePeriodModal')\r\n public publicHolidayTimePeriodModal: TemplateRef;\r\n @Input('showBackButton')\r\n public showBackButton = false;\r\n @Input('componentContainer')\r\n public componentContainer = true;\r\n @Input('isReadOnlyMode')\r\n public isReadOnlyMode = false;\r\n public publicHolidayErrorMessage = '';\r\n public loadingPublicHolidays = false;\r\n public periods: EntityLookup[];\r\n public tariffDayOfWeekLookups: EntityLookup[];\r\n public publicHolidayLookups: EntityLookup[];\r\n public publicHolidays: PublicHoliday[];\r\n public publicHolidaysTimePeriodForm: FormGroup;\r\n public periodPublicHolidays: { [periodId: number]: PublicHoliday[] };\r\n public loadingPublicHolidayTimePeriod = false;\r\n public publicHolidayTimePeriodErrorMessage = '';\r\n public savingPublicHolidayTimePeriod = false;\r\n public page: Page;\r\n public pageItems: any[];\r\n private sortProp = {};\r\n private searchForm: FormGroup;\r\n private modalRef: BsModalRef;\r\n\r\n constructor(\r\n private commonService: CommonService,\r\n private publicHolidaysService: PublicHolidayService,\r\n private modalService: BsModalService,\r\n private toastr: ToastrService\r\n ) {\r\n this.page = new Page();\r\n this.searchForm = new FormGroup({\r\n search: new FormControl(''),\r\n });\r\n }\r\n\r\n public ngOnInit() {\r\n this.searchForm\r\n .get('search')\r\n .valueChanges.pipe(debounceTime(300))\r\n .subscribe(\r\n () => {\r\n this.changePage({ offset: 0 });\r\n },\r\n (error) => {\r\n this.publicHolidayErrorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n this.loadingPublicHolidays = true;\r\n this.commonService\r\n .getEntityLookups(['Period', 'TariffDayOfWeek', 'PublicHoliday'])\r\n .subscribe(\r\n (entityLookups) => {\r\n this.periods =\r\n entityLookups.entityLookupResultList['period'];\r\n this.tariffDayOfWeekLookups =\r\n entityLookups.entityLookupResultList['tariffDayOfWeek'];\r\n this.publicHolidayLookups =\r\n entityLookups.entityLookupResultList['publicHoliday'];\r\n this.tariffDayOfWeekLookups = this.tariffDayOfWeekLookups.filter(\r\n (tariffDayOfWeekLookup: EntityLookup) => {\r\n return tariffDayOfWeekLookup.value !== 'Weekday';\r\n }\r\n );\r\n const periodModels: Period[] = [];\r\n this.periods.forEach((period: EntityLookup) => {\r\n periodModels.push(\r\n new Period(\r\n period.entityLookupId,\r\n period.value,\r\n null,\r\n null\r\n )\r\n );\r\n });\r\n this.publicHolidaysService\r\n .getPublicHolidays(periodModels)\r\n .subscribe(\r\n (publicHolidaysResponse) => {\r\n this.publicHolidays = publicHolidaysResponse;\r\n this.setPeriodPublicHolidays();\r\n this.loadingPublicHolidays = false;\r\n this.changePage({ offset: 0 });\r\n },\r\n (error) => {\r\n this.publicHolidayErrorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loadingPublicHolidays = false;\r\n }\r\n );\r\n },\r\n (error) => {\r\n this.publicHolidayErrorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loadingPublicHolidays = false;\r\n }\r\n );\r\n }\r\n\r\n public changePage(pageInfo: any) {\r\n this.publicHolidayErrorMessage = '';\r\n this.changeTariffPublicHolidaysPage(pageInfo);\r\n }\r\n\r\n public sortColumn(event: any): void {\r\n this.sortProp = {\r\n direction: event.sorts[0].dir,\r\n property: event.sorts[0].prop,\r\n };\r\n this.changePage({ offset: 0 });\r\n }\r\n\r\n public changeTariffPublicHolidaysPage(pageInfo: any): void {\r\n const searchString = this.searchForm.value.search;\r\n this.page.offset = pageInfo.offset * this.page.size;\r\n this.publicHolidaysService\r\n .getTariffPublicHolidayTimePeriodsPage(\r\n this.tariffId,\r\n searchString,\r\n this.page,\r\n this.sortProp\r\n )\r\n .subscribe(\r\n (responsePage) => {\r\n this.page.totalPages = Math.ceil(\r\n responsePage.totalItems / responsePage.size\r\n );\r\n this.page.totalElements = responsePage.totalItems;\r\n this.pageItems = responsePage.items;\r\n this.loadingPublicHolidays = false;\r\n },\r\n (error) => {\r\n this.publicHolidayErrorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loadingPublicHolidays = false;\r\n }\r\n );\r\n }\r\n\r\n public onPublicHolidayTimePeriodSelect(event: any) {\r\n if (this.isReadOnlyMode) {\r\n return;\r\n }\r\n this.openPublicHolidayTimePeriodModal(\r\n event.selected[0].publicHolidayTimePeriodId\r\n );\r\n }\r\n\r\n public onAddPublicHolidayTimePeriod() {\r\n this.openPublicHolidayTimePeriodModal(0);\r\n }\r\n\r\n public onAddPublicHolidayCopyFromMaintenance() {\r\n this.publicHolidayErrorMessage = '';\r\n if (\r\n !confirm(\r\n 'Are you sure you want to remove the currently configured public holidays and copy the general maintenance entries?'\r\n )\r\n ) {\r\n return;\r\n }\r\n this.loadingPublicHolidays = true;\r\n this.publicHolidaysService\r\n .copyPublicHolidaysToTariffPublicHolidayTimePeriods(this.tariffId)\r\n .subscribe(\r\n () => {\r\n this.changePage({ offset: 0 });\r\n },\r\n (error) => {\r\n this.publicHolidayErrorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loadingPublicHolidays = false;\r\n }\r\n );\r\n }\r\n\r\n public onPublicHolidayTimePeriodCancel(): void {\r\n this.modalRef.hide();\r\n }\r\n\r\n public onPublicHolidayTimePeriodSubmit() {\r\n this.commonService.validateAllFormFields(\r\n this.publicHolidaysTimePeriodForm\r\n );\r\n if (this.publicHolidaysTimePeriodForm.valid) {\r\n this.savingPublicHolidayTimePeriod = true;\r\n if (\r\n this.publicHolidaysTimePeriodForm.get(\r\n 'publicHolidayTimePeriodId'\r\n ).value === 0\r\n ) {\r\n this.publicHolidaysService\r\n .createPublicHolidayTimePeriod(\r\n this.publicHolidaysTimePeriodForm.value\r\n )\r\n .subscribe(\r\n (response) => {\r\n this.savingPublicHolidayTimePeriod = false;\r\n this.modalRef.hide();\r\n this.toastr.success(\r\n !isNullOrUndefined(response.successMessage)\r\n ? response.successMessage\r\n : 'Tariff public holiday successfully created'\r\n );\r\n this.changePage({ offset: 0 });\r\n },\r\n (error) => {\r\n this.publicHolidayTimePeriodErrorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.toastr.error(\r\n this.publicHolidayTimePeriodErrorMessage\r\n );\r\n this.savingPublicHolidayTimePeriod = false;\r\n }\r\n );\r\n } else {\r\n this.publicHolidaysService\r\n .updatePublicHolidayTimePeriod(\r\n this.publicHolidaysTimePeriodForm.value\r\n )\r\n .subscribe(\r\n (response) => {\r\n this.savingPublicHolidayTimePeriod = false;\r\n this.modalRef.hide();\r\n this.toastr.success(\r\n !isNullOrUndefined(response.successMessage)\r\n ? response.successMessage\r\n : 'Tariff public holiday successfully updated'\r\n );\r\n this.changePage({ offset: 0 });\r\n },\r\n (error) => {\r\n this.publicHolidayTimePeriodErrorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.toastr.error(\r\n this.publicHolidayTimePeriodErrorMessage\r\n );\r\n this.savingPublicHolidayTimePeriod = false;\r\n }\r\n );\r\n }\r\n }\r\n }\r\n\r\n public openPublicHolidayTimePeriodModal(\r\n publicHolidaysTimePeriodId: number\r\n ) {\r\n this.modalRef = this.modalService.show(\r\n this.publicHolidayTimePeriodModal\r\n );\r\n this.loadPublicHolidayTimePeriod(publicHolidaysTimePeriodId);\r\n }\r\n\r\n public onChangePeriod() {\r\n this.publicHolidaysTimePeriodForm.get('publicHolidayId').setValue(null);\r\n this.publicHolidaysTimePeriodForm.get('publicHolidayDate').setValue('');\r\n }\r\n\r\n public onChangePublicHoliday() {\r\n const publicHolidayId = this.publicHolidaysTimePeriodForm.get(\r\n 'publicHolidayId'\r\n ).value;\r\n if (!isNullOrUndefined(publicHolidayId)) {\r\n this.publicHolidaysTimePeriodForm\r\n .get('publicHolidayDate')\r\n .setValue(\r\n this.publicHolidays.find(\r\n (p) => p.publicHolidayId === publicHolidayId\r\n ).date\r\n );\r\n }\r\n }\r\n\r\n private setPeriodPublicHolidays() {\r\n this.periodPublicHolidays = [];\r\n this.publicHolidays.forEach((publicHoliday: PublicHoliday) => {\r\n if (\r\n isNullOrUndefined(\r\n this.periodPublicHolidays[publicHoliday.periodId]\r\n )\r\n ) {\r\n this.periodPublicHolidays[publicHoliday.periodId] = [];\r\n }\r\n this.periodPublicHolidays[publicHoliday.periodId].push(\r\n publicHoliday\r\n );\r\n });\r\n }\r\n\r\n private loadPublicHolidayTimePeriod(publicHolidayTimePeriodId: number) {\r\n this.loadingPublicHolidayTimePeriod = true;\r\n this.publicHolidayTimePeriodErrorMessage = '';\r\n if (publicHolidayTimePeriodId === 0) {\r\n this.initPublicHolidaysTimePeriod(null);\r\n this.loadingPublicHolidayTimePeriod = false;\r\n } else {\r\n this.publicHolidaysService\r\n .getPublicHolidayTimePeriod(publicHolidayTimePeriodId)\r\n .subscribe(\r\n (publicHolidayTimePeriodResponse) => {\r\n this.initPublicHolidaysTimePeriod(\r\n publicHolidayTimePeriodResponse\r\n );\r\n this.loadingPublicHolidayTimePeriod = false;\r\n },\r\n (error) => {\r\n this.publicHolidayTimePeriodErrorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loadingPublicHolidayTimePeriod = false;\r\n }\r\n );\r\n }\r\n }\r\n\r\n private initPublicHolidaysTimePeriod(\r\n publicHolidayTimePeriod: PublicHolidayTimePeriod\r\n ) {\r\n const publicHoliday = isNullOrUndefined(publicHolidayTimePeriod)\r\n ? null\r\n : this.publicHolidays.find((pubHol: PublicHoliday) => {\r\n return (\r\n pubHol.publicHolidayId ===\r\n publicHolidayTimePeriod.publicHolidayId\r\n );\r\n });\r\n this.publicHolidaysTimePeriodForm = new FormGroup({\r\n publicHolidayTimePeriodId: new FormControl(\r\n isNullOrUndefined(publicHolidayTimePeriod)\r\n ? 0\r\n : publicHolidayTimePeriod.publicHolidayTimePeriodId\r\n ),\r\n publicHolidayId: new FormControl(\r\n isNullOrUndefined(publicHolidayTimePeriod)\r\n ? null\r\n : publicHolidayTimePeriod.publicHolidayId,\r\n [Validators.required]\r\n ),\r\n tariffDayOfWeekLookupId: new FormControl(\r\n isNullOrUndefined(publicHolidayTimePeriod)\r\n ? null\r\n : publicHolidayTimePeriod.tariffDayOfWeekLookupId,\r\n [Validators.required]\r\n ),\r\n tariffId: new FormControl(this.tariffId),\r\n periodId: new FormControl(\r\n isNullOrUndefined(publicHoliday)\r\n ? null\r\n : publicHoliday.periodId,\r\n [Validators.required]\r\n ), // Only used on front-end\r\n publicHolidayDate: new FormControl(\r\n isNullOrUndefined(publicHoliday) ? '' : publicHoliday.date\r\n ), // Only used on front-end\r\n });\r\n }\r\n}\r\n","export class Period {\r\n constructor(\r\n public periodId: number,\r\n public periodName: string,\r\n public startDate: string,\r\n public endDate: string\r\n ) {}\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\n\r\n@Pipe({\r\n name: 'distinctStartWith',\r\n})\r\nexport class DistinctStartWithPipe implements PipeTransform {\r\n public transform(items: any[], propertyName, terminator: string): any[] {\r\n return items.filter(function(value, index, self) {\r\n const selfByPropertyNameUptoTerminator = self.map((s) =>\r\n (s as FormGroup)\r\n .get(propertyName)\r\n .value.substr(\r\n 0,\r\n (s as FormGroup)\r\n .get(propertyName)\r\n .value.indexOf(terminator)\r\n )\r\n );\r\n const valueByPropertyNameUptoTerminator = (value as FormGroup)\r\n .get(propertyName)\r\n .value.substr(\r\n 0,\r\n (value as FormGroup)\r\n .get(propertyName)\r\n .value.indexOf(terminator)\r\n );\r\n return (\r\n selfByPropertyNameUptoTerminator.indexOf(\r\n valueByPropertyNameUptoTerminator\r\n ) === index\r\n );\r\n });\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'substrStartAtZero',\r\n})\r\nexport class SubstrStartAtZeroPipe implements PipeTransform {\r\n public transform(item: string, terminator: string): string {\r\n return item.substr(0, item.indexOf(terminator));\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\n\r\n@Pipe({\r\n name: 'allStartWith',\r\n})\r\nexport class AllStartWithPipe implements PipeTransform {\r\n public transform(items: any[], propertyName, compareString: string): any[] {\r\n return items.filter(function(value) {\r\n return (\r\n '' + (value as FormGroup).get(propertyName).value\r\n ).startsWith(compareString);\r\n });\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'profileType',\r\n})\r\nexport class ProfileTypePipe implements PipeTransform {\r\n public transform(values: any[], compareType: number, args?: any): any[] {\r\n if (values) {\r\n return values.filter(\r\n (item) => item.technologyOrBusinessType === compareType\r\n );\r\n } else {\r\n return null;\r\n }\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'profileHasData',\r\n})\r\nexport class ProfileHasDataPipe implements PipeTransform {\r\n public transform(values: any[], compareType: number, args?: any): any[] {\r\n if (values) {\r\n return values.filter(\r\n (item) => item.facilityOrPremisesId === compareType\r\n );\r\n } else {\r\n return null;\r\n }\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'inclusionMonth',\r\n})\r\nexport class InclusionMonthPipe implements PipeTransform {\r\n public transform(\r\n values: any[],\r\n startmonth: number,\r\n args?: number[]\r\n ): any[] {\r\n if (values && args) {\r\n if (args.length > 0) {\r\n const endmonth = args[0];\r\n return values.filter(\r\n (item) =>\r\n item.orderPriority >= startmonth &&\r\n item.orderPriority <= endmonth\r\n );\r\n } else {\r\n return values;\r\n }\r\n } else {\r\n return null;\r\n }\r\n }\r\n}\r\n","import { Component, OnInit, Input, TemplateRef } from '@angular/core';\r\nimport { BaseAccordionComponent } from '../../../widget/base-accordion/base-accordion.component';\r\nimport { FormGroup, FormControl, Validators } from '@angular/forms';\r\nimport { CommonService } from '../../../common/common-service';\r\nimport { BsModalRef, BsModalService } from 'ngx-bootstrap';\r\nimport { DistributorService } from '../distributor.service';\r\nimport { Tariff } from '../../../model/tariff/tariff.model';\r\nimport { Router } from '@angular/router';\r\nimport { DistributorBulkMeterService } from './distributor-bulkmeter.service';\r\n\r\nimport { ComponentTriggersService } from '../../../common/component-triggers.service';\r\nimport { Subscription } from 'rxjs';\r\nimport { ToastrService } from 'ngx-toastr';\r\n\r\n@Component({\r\n selector: 'bulk-meter-list',\r\n templateUrl: './bulk-meter-list.component.html',\r\n styleUrls: ['./bulk-meter-list.component.scss', '../../form.styles.scss'],\r\n})\r\nexport class BulkMeterListComponent extends BaseAccordionComponent\r\n implements OnInit {\r\n @Input('distributorId')\r\n public distributorId: number;\r\n @Input('showBulkMeterList')\r\n public showBulkMeterList: boolean = true;\r\n @Input('isReadOnlyMode')\r\n public isReadOnlyMode: boolean = false;\r\n public bulkMeters: any[];\r\n public modalRef: BsModalRef;\r\n public newBulkMeterForm: FormGroup;\r\n public errorMessage = '';\r\n public loading = false;\r\n public savingBulkMeter = false;\r\n private tariffs: Tariff[];\r\n\r\n private triggerDistributorBulkMeterComponentSubscription: Subscription;\r\n\r\n constructor(\r\n private commonService: CommonService,\r\n private modalService: BsModalService,\r\n private distributorService: DistributorService,\r\n private distributorBulkMeterService: DistributorBulkMeterService,\r\n private router: Router,\r\n protected toastr: ToastrService,\r\n private componentTriggerService: ComponentTriggersService\r\n ) {\r\n super();\r\n }\r\n\r\n public ngOnInit() {\r\n this.triggerDistributorBulkMeterComponentSubscription = this.componentTriggerService.triggerDistributorBulkMeterComponent.subscribe(\r\n (response) => {\r\n this.showBulkMeterList = response;\r\n this.initialize();\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n\r\n this.initialize();\r\n }\r\n\r\n public initialize(): void {\r\n this.distributorService.getEskomTariffs().subscribe(\r\n (tariffs) => {\r\n this.tariffs = tariffs;\r\n this.getDistributorBulkMeters();\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n\r\n public createForm(bulkMeter: any, isNewItem: boolean): FormGroup {\r\n if (!bulkMeter) {\r\n bulkMeter = {\r\n distributorBulkMeterId: 0,\r\n isMainMeter: false,\r\n };\r\n }\r\n\r\n return this.getNewBulkMeterForm(bulkMeter);\r\n }\r\n\r\n public newBulkMeterModal(template: TemplateRef): void {\r\n this.getNewBulkMeterForm([]);\r\n this.modalRef = this.modalService.show(template); // , { class: 'modal-lg' });\r\n }\r\n\r\n public onSelect(event: any): void {\r\n this.errorMessage = '';\r\n this.showBulkMeterList = false;\r\n const showPowerLimitsAndTechnology = false;\r\n this.componentTriggerService.triggerDistributorPowerTechnologyAndLimitsComponent.next(\r\n showPowerLimitsAndTechnology\r\n );\r\n this.componentTriggerService.triggerDistributorBulkMeterDetailsComponent.next(\r\n event.selected[0].distributorBulkMeterId\r\n );\r\n }\r\n\r\n public onPopupSubmit(): void {\r\n this.commonService.validateAllFormFields(this.newBulkMeterForm);\r\n this.newBulkMeterForm.controls.distributorId.setValue(\r\n this.distributorId\r\n );\r\n if (this.newBulkMeterForm.valid) {\r\n this.savingBulkMeter = true;\r\n this.distributorBulkMeterService\r\n .addDistributorBulkMeter(this.newBulkMeterForm.value)\r\n .subscribe(\r\n () => {\r\n this.modalRef.hide();\r\n this.toastr.success('Successfully added bulk meter');\r\n this.getDistributorBulkMeters();\r\n this.savingBulkMeter = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.toastr.error(this.errorMessage);\r\n this.savingBulkMeter = false;\r\n }\r\n );\r\n }\r\n }\r\n\r\n private getDistributorBulkMeters(): void {\r\n this.distributorBulkMeterService\r\n .getDistributorBulkMeters(this.distributorId)\r\n .subscribe(\r\n (bulkMeters) => {\r\n this.bulkMeters = bulkMeters;\r\n bulkMeters.forEach((meter) => {\r\n const tariffCode = this.getTariffCode(meter.tariffId);\r\n meter.tariffCode = tariffCode;\r\n });\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n\r\n private getTariffCode(tariffId: number): string {\r\n return this.tariffs.filter((t) => t.tariffId === tariffId)[0]\r\n .tariffCode;\r\n }\r\n\r\n private getNewBulkMeterForm(bulkMeter: any): FormGroup {\r\n const consumption = bulkMeter.bulkMeterConsumption\r\n ? bulkMeter.bulkMeterConsumption\r\n : [];\r\n\r\n this.newBulkMeterForm = new FormGroup({\r\n distributorId: new FormControl(this.distributorId),\r\n distributorBulkMeterId: new FormControl(\r\n bulkMeter.distributorBulkMeterId\r\n ),\r\n meterName: new FormControl(bulkMeter.meterName, [\r\n Validators.required,\r\n ]),\r\n meterNumber: new FormControl(bulkMeter.meterNumber),\r\n tariffId: new FormControl(bulkMeter.tariffId, [\r\n Validators.required,\r\n ]),\r\n bulkMeterConsumption: new FormControl(consumption),\r\n isMainMeter: new FormControl(bulkMeter.isMainMeter),\r\n });\r\n return this.newBulkMeterForm;\r\n }\r\n}\r\n","import {\r\n AfterViewChecked,\r\n ChangeDetectorRef,\r\n Component,\r\n Input,\r\n OnInit,\r\n} from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { FormArray, FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { ConsumerCompanyService } from '../consumer-company.service';\r\nimport { CommonService } from '../../../common/common-service';\r\n\r\nimport { ComponentTriggersService } from '../../../common/component-triggers.service';\r\nimport { EntityLookup } from '../../../model/entity-lookup.model';\r\nimport { CustomValidators } from 'ng4-validators';\r\nimport { ConsumerCompany } from '../../../model/consumer-company.model';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { Address } from '../../../model/address.model';\r\nimport { ConsumerApplicationService } from '../../application/consumer-application/consumer-application.service';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { AuthorisationService } from '../../../authorisation-service/authorisation.service';\r\n\r\n@Component({\r\n selector: 'consumer-company-details',\r\n templateUrl: './consumer-company-details.component.html',\r\n styleUrls: [\r\n './consumer-company-details.component.scss',\r\n '../../form.styles.scss',\r\n ],\r\n})\r\nexport class ConsumerCompanyDetailsComponent\r\n implements OnInit, AfterViewChecked {\r\n @Input('isInApplicationMode')\r\n public isInApplicationMode: boolean = false;\r\n @Input('consumerCompanyId')\r\n public consumerCompanyId: number;\r\n @Input('isReadOnlyMode')\r\n public isReadOnlyMode = false;\r\n public consumerCompanyDetailsForm: FormGroup;\r\n public companyForm: FormGroup;\r\n public loading = false;\r\n public saving = false;\r\n public errorMessage = '';\r\n public companyTypes: EntityLookup[];\r\n public consumerCompanyStandings: EntityLookup[];\r\n public salesReps: EntityLookup[];\r\n public consumerCompany: ConsumerCompany;\r\n public addresses: Address[];\r\n public isAddendumRequired: boolean = false;\r\n public isAddendumUploaded: boolean = false;\r\n\r\n public sensitiveFieldsEditable: boolean = true;\r\n\r\n constructor(\r\n private router: Router,\r\n private cdRef: ChangeDetectorRef,\r\n public commonService: CommonService,\r\n private consumerCompanyService: ConsumerCompanyService,\r\n private authorisationService: AuthorisationService,\r\n private consumerApplicationService: ConsumerApplicationService,\r\n private toaster: ToastrService,\r\n private componentTriggerService: ComponentTriggersService\r\n ) {}\r\n\r\n public ngOnInit() {\r\n this.initialize();\r\n }\r\n\r\n public ngAfterViewChecked() {\r\n this.cdRef.detectChanges();\r\n }\r\n\r\n public onSubmit() {\r\n this.commonService.validateAllFormFields(\r\n this.consumerCompanyDetailsForm\r\n );\r\n this.componentTriggerService.triggerValidationMessages.next();\r\n if (this.consumerCompanyDetailsForm.valid) {\r\n if (this.isAddendumRequired && this.isAddendumUploaded) {\r\n if (\r\n !confirm(\r\n 'Are you sure that you would like to update the sensitive field(s)'\r\n )\r\n ) {\r\n return;\r\n }\r\n }\r\n this.saving = true;\r\n if (\r\n this.isInApplicationMode &&\r\n isNullOrUndefined(this.consumerCompanyId)\r\n ) {\r\n this.consumerCompanyService\r\n .createConsumerApplicationConsumerCompany(\r\n this.consumerCompanyDetailsForm.value\r\n )\r\n .subscribe(\r\n (consumerCompany: ConsumerCompany) => {\r\n this.consumerApplicationService\r\n .linkConsumerCompanyToApplicationUser(\r\n consumerCompany.consumerCompanyId\r\n )\r\n .subscribe(\r\n () => {\r\n this.toaster.success(\r\n 'Consumer company successfully created'\r\n );\r\n this.router.navigate(\r\n ['consumers/application'],\r\n { queryParams: { tab: 'contacts' } }\r\n );\r\n this.saving = false;\r\n },\r\n (error) => {\r\n this.saving = false;\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n },\r\n (error) => {\r\n this.saving = false;\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n } else {\r\n this.consumerCompanyService\r\n .updateConsumerCompany(\r\n this.consumerCompanyDetailsForm.value\r\n )\r\n .subscribe(\r\n () => {\r\n this.toaster.success(\r\n 'Consumer company successfully updated'\r\n );\r\n this.saving = false;\r\n this.componentTriggerService.triggerConsumerCompanyRecsComponent.next();\r\n this.initialize();\r\n },\r\n (error) => {\r\n this.saving = false;\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n }\r\n }\r\n }\r\n\r\n public onBack() {\r\n this.router.navigate(['consumer-companies']);\r\n }\r\n\r\n public formControlValueChanged(event: any) {\r\n if (!this.isInApplicationMode) {\r\n this.isAddendumRequired = false;\r\n if (\r\n event.target.attributes.formcontrolname.value ===\r\n 'companyName' &&\r\n this.companyForm.get('companyName').value !==\r\n this.consumerCompany.company.companyName\r\n ) {\r\n this.isAddendumRequired = true;\r\n } else if (\r\n event.target.attributes.formcontrolname.value ===\r\n 'companyTypeLookupId' &&\r\n +this.companyForm.get('companyTypeLookupId').value !==\r\n this.consumerCompany.company.companyTypeLookupId\r\n ) {\r\n this.isAddendumRequired = true;\r\n } else if (\r\n event.target.attributes.formcontrolname.value ===\r\n 'registrationNumber' &&\r\n this.companyForm.get('registrationNumber').value !==\r\n this.consumerCompany.company.registrationNumber\r\n ) {\r\n this.isAddendumRequired = true;\r\n }\r\n }\r\n }\r\n\r\n public successfulUploadAddendum(event: any) {\r\n if (event.value && event.listenerId === 'isAddendumUploaded') {\r\n this.consumerCompanyDetailsForm\r\n .get('addendumDocument')\r\n .setValue(event.value);\r\n this.isAddendumUploaded = true;\r\n }\r\n }\r\n\r\n private initialize() {\r\n this.loading = true;\r\n this.sensitiveFieldsEditable = this.authorisationService.isConsumerCompanyAndPremisesSensitiveFieldsEditable();\r\n // Entity Lookups\r\n this.commonService\r\n .getEntityLookups([\r\n 'CompanyType',\r\n 'ConsumerCompanyStanding',\r\n 'ConsumerBusinessActivity',\r\n 'Distributor',\r\n 'SalesRep',\r\n ])\r\n .subscribe(\r\n (response) => {\r\n this.companyTypes =\r\n response.entityLookupResultList['companyType'];\r\n this.consumerCompanyStandings =\r\n response.entityLookupResultList[\r\n 'consumerCompanyStanding'\r\n ];\r\n this.salesReps =\r\n response.entityLookupResultList['salesRep'];\r\n\r\n if (!isNullOrUndefined(this.consumerCompanyId)) {\r\n this.consumerCompanyService\r\n .getConsumerCompany(this.consumerCompanyId)\r\n .subscribe(\r\n (consumerCompany) => {\r\n this.consumerCompany = consumerCompany;\r\n this.initConsumerCompanyDetailsForm();\r\n this.initAddresses(); // Just sets the variable. The address-accordion component will handle the addresses form\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n } else {\r\n this.initConsumerCompanyDetailsForm();\r\n this.initAddresses(); // Just sets the variable. The address-accordion component will handle the addresses form\r\n this.loading = false;\r\n }\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n\r\n private initConsumerCompanyDetailsForm() {\r\n this.initCompanyForm();\r\n this.consumerCompanyDetailsForm = new FormGroup({\r\n consumerCompanyId: new FormControl(\r\n isNullOrUndefined(this.consumerCompany)\r\n ? null\r\n : this.consumerCompanyId\r\n ),\r\n consumerCompanyStandingLookupId: new FormControl(\r\n isNullOrUndefined(this.consumerCompany)\r\n ? null\r\n : this.consumerCompany.consumerCompanyStandingLookupId,\r\n [Validators.required]\r\n ),\r\n salesRepId: new FormControl(\r\n isNullOrUndefined(this.consumerCompany) ||\r\n this.isInApplicationMode\r\n ? null\r\n : this.consumerCompany.salesRepId,\r\n [Validators.required]\r\n ),\r\n isRecsRegistered: new FormControl({\r\n value:\r\n isNullOrUndefined(this.consumerCompany) ||\r\n isNullOrUndefined(this.consumerCompany.isRecsRegistered)\r\n ? false\r\n : this.consumerCompany.isRecsRegistered,\r\n disabled: !this.authorisationService.isIsRecsRegisteredEditable(),\r\n }),\r\n taxYearBeginDate: new FormControl(\r\n isNullOrUndefined(this.consumerCompany)\r\n ? ''\r\n : this.consumerCompany.taxYearBeginDate,\r\n [Validators.required]\r\n ),\r\n addendumDocument: new FormControl(null),\r\n company: this.companyForm,\r\n });\r\n if (this.isInApplicationMode) {\r\n this.consumerCompanyDetailsForm.get('salesRepId').disable();\r\n }\r\n this.handleFormReadOnlyMode();\r\n }\r\n\r\n private initCompanyForm() {\r\n const exists =\r\n !isNullOrUndefined(this.consumerCompany) &&\r\n !isNullOrUndefined(this.consumerCompany.company);\r\n this.companyForm = new FormGroup({\r\n companyId: new FormControl(\r\n !exists ? null : this.consumerCompany.company.companyId\r\n ),\r\n companyTypeLookupId: new FormControl(\r\n {\r\n value: isNullOrUndefined(this.consumerCompany)\r\n ? null\r\n : this.consumerCompany.company.companyTypeLookupId,\r\n disabled:\r\n !this.sensitiveFieldsEditable &&\r\n !this.isInApplicationMode,\r\n },\r\n [Validators.required]\r\n ),\r\n companyName: new FormControl(\r\n {\r\n value: !exists\r\n ? ''\r\n : this.consumerCompany.company.companyName,\r\n disabled:\r\n !this.sensitiveFieldsEditable &&\r\n !this.isInApplicationMode,\r\n },\r\n [Validators.required, Validators.maxLength(50)]\r\n ),\r\n registrationNumber: new FormControl(\r\n {\r\n value: !exists\r\n ? ''\r\n : this.consumerCompany.company.registrationNumber,\r\n disabled:\r\n !this.sensitiveFieldsEditable &&\r\n !this.isInApplicationMode,\r\n },\r\n [Validators.required, Validators.maxLength(14)]\r\n ),\r\n telephoneNumber: new FormControl(\r\n !exists ? '' : this.consumerCompany.company.telephoneNumber,\r\n [\r\n Validators.required,\r\n Validators.maxLength(20),\r\n CustomValidators.digits,\r\n ]\r\n ),\r\n vatNumber: new FormControl(\r\n !exists ? '' : this.consumerCompany.company.vatNumber,\r\n [Validators.minLength(10)]\r\n ),\r\n addresses: new FormArray([]),\r\n });\r\n }\r\n\r\n private initAddresses() {\r\n if (\r\n !isNullOrUndefined(this.consumerCompany) &&\r\n !isNullOrUndefined(this.consumerCompany.company) &&\r\n !isNullOrUndefined(this.consumerCompany.company.addresses)\r\n ) {\r\n this.addresses = this.consumerCompany.company.addresses;\r\n } else {\r\n this.addresses = [];\r\n }\r\n }\r\n\r\n private handleFormReadOnlyMode() {\r\n if (this.isReadOnlyMode) {\r\n this.consumerCompanyDetailsForm.disable();\r\n this.companyForm.disable();\r\n }\r\n }\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { BaseAccordionComponent } from '../../widget/base-accordion/base-accordion.component';\r\nimport { CommonService } from '../../common/common-service';\r\nimport { EntityLookup } from '../../model/entity-lookup.model';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { Address } from '../../model/address.model';\r\nimport { CustomValidators } from 'ng4-validators';\r\n\r\n@Component({\r\n selector: 'address-accordion',\r\n templateUrl: './address-accordion.component.html',\r\n styleUrls: ['../form.styles.scss'],\r\n})\r\nexport class AddressComponent extends BaseAccordionComponent implements OnInit {\r\n @Input('excludeFields')\r\n public excludeFields: string[] = [];\r\n @Input('provinces')\r\n public provinces: EntityLookup[];\r\n public errorMessage = '';\r\n public loading = false;\r\n\r\n public constructor(public commonService: CommonService) {\r\n super();\r\n }\r\n\r\n public ngOnInit() {\r\n super.initializeForm();\r\n if (isNullOrUndefined(this.provinces)) {\r\n this.commonService.getEntityLookups(['Province']).subscribe(\r\n (entityLookups) => {\r\n this.provinces =\r\n entityLookups.entityLookupResultList['province'];\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n } else {\r\n this.provinces = [];\r\n }\r\n }\r\n\r\n public createForm(address: Address, isNewItem: boolean): FormGroup {\r\n if (!address) {\r\n address = new Address('', '', '', null, '', '', false);\r\n }\r\n return new FormGroup({\r\n addressId: new FormControl(address.addressId),\r\n addressLine1: new FormControl(\r\n address.addressLine1,\r\n this.excludeFields.indexOf('addressLine1') > -1\r\n ? [Validators.maxLength(100)]\r\n : [Validators.required, Validators.maxLength(100)]\r\n ),\r\n addressLine2: new FormControl(\r\n address.addressLine2,\r\n this.excludeFields.indexOf('addressLine2') > -1\r\n ? [Validators.maxLength(100)]\r\n : [Validators.required, Validators.maxLength(100)]\r\n ),\r\n addressLine3: new FormControl(address.addressLine3, [\r\n Validators.maxLength(100),\r\n ]),\r\n provinceLookupId: new FormControl(\r\n address.provinceLookupId,\r\n this.excludeFields.indexOf('provinceLookupId') > -1\r\n ? []\r\n : [Validators.required]\r\n ),\r\n city: new FormControl(\r\n address.city,\r\n this.excludeFields.indexOf('city') > -1\r\n ? [Validators.maxLength(50)]\r\n : [Validators.required, Validators.maxLength(50)]\r\n ),\r\n postalCode: new FormControl(\r\n address.postalCode,\r\n this.excludeFields.indexOf('postalCode') > -1\r\n ? [Validators.maxLength(10), CustomValidators.digits]\r\n : [\r\n Validators.required,\r\n Validators.maxLength(10),\r\n CustomValidators.digits,\r\n ]\r\n ),\r\n isRural: new FormControl(address.isRural),\r\n isNewItem: new FormControl(isNewItem),\r\n });\r\n }\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { FormGroup, FormControl, Validators, FormArray } from '@angular/forms';\r\nimport { GeneratorCompanyService } from '../generator-company.service';\r\nimport { CustomValidators } from 'ng4-validators';\r\nimport { CommonService } from '../../../common/common-service';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { Address } from '../../../model/address.model';\r\nimport { EntityLookup } from '../../../model/entity-lookup.model';\r\nimport { Company } from '../../../model/company.model';\r\nimport { GeneratorCompany } from '../../../model/generator-company.model';\r\n\r\n@Component({\r\n selector: 'generator-company-details',\r\n templateUrl: './generator-company-details.component.html',\r\n styleUrls: ['../../form.styles.scss'],\r\n})\r\nexport class GeneratorCompanyDetailsComponent implements OnInit {\r\n public loading: boolean;\r\n public addresses: Address[];\r\n public companyTypes: EntityLookup[];\r\n public errorMessage = '';\r\n @Input('isReadOnlyMode')\r\n public isReadOnlyMode: FormGroup;\r\n private holdingCompanyId: number;\r\n private holdingCompanyForm: FormGroup;\r\n private generatorCompany: GeneratorCompany;\r\n private company: Company;\r\n private isAddendumRequired: boolean = false;\r\n private addendumUploaded: boolean = false;\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n private generatorMaintenanceService: GeneratorCompanyService,\r\n private commonService: CommonService\r\n ) {\r\n this.holdingCompanyForm = new FormGroup({\r\n companyId: new FormControl(''),\r\n companyName: new FormControl('', [\r\n Validators.required,\r\n Validators.maxLength(50),\r\n ]),\r\n companyTypeLookupId: new FormControl('', Validators.required),\r\n registrationNumber: new FormControl('', [\r\n Validators.required,\r\n Validators.maxLength(14),\r\n this.commonService.companyRegistrationNumberValidator.bind(\r\n this\r\n ),\r\n ]),\r\n telephoneNumber: new FormControl('', [\r\n Validators.required,\r\n Validators.minLength(10),\r\n Validators.maxLength(20),\r\n CustomValidators.digits,\r\n ]),\r\n vatNumber: new FormControl('', [Validators.minLength(10)]),\r\n addresses: new FormArray([]),\r\n addendum: new FormControl(''),\r\n });\r\n }\r\n\r\n public ngOnInit() {\r\n this.loadGeneratorCompanyDetails();\r\n this.handleFormReadOnlyMode();\r\n }\r\n\r\n public loadGeneratorCompanyDetails() {\r\n this.loading = true;\r\n\r\n this.route.params.subscribe(\r\n (params) => {\r\n if (params['holdingCompanyId']) {\r\n this.holdingCompanyId = params['holdingCompanyId'];\r\n }\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n\r\n this.commonService.getEntityLookups(['CompanyType']).subscribe(\r\n (response) => {\r\n this.companyTypes =\r\n response.entityLookupResultList['companyType'];\r\n this.generatorMaintenanceService\r\n .getGeneratorCompany(this.holdingCompanyId)\r\n .subscribe(\r\n (page) => {\r\n this.generatorCompany = page;\r\n this.company = this.generatorCompany.company;\r\n this.initAddresses();\r\n this.holdingCompanyForm.controls.companyId.setValue(\r\n this.company.companyId\r\n );\r\n this.holdingCompanyForm.controls.companyName.setValue(\r\n this.company.companyName\r\n );\r\n this.holdingCompanyForm.controls.companyTypeLookupId.setValue(\r\n this.company.companyTypeLookupId\r\n );\r\n this.holdingCompanyForm.controls.registrationNumber.setValue(\r\n this.company.registrationNumber\r\n );\r\n this.holdingCompanyForm.controls.telephoneNumber.setValue(\r\n this.company.telephoneNumber\r\n );\r\n this.holdingCompanyForm.controls.vatNumber.setValue(\r\n this.company.vatNumber\r\n );\r\n this.holdingCompanyForm.controls.addendum.setValue(\r\n ''\r\n );\r\n this.loading = false;\r\n\r\n this.isAddendumRequired = false;\r\n this.addendumUploaded = false;\r\n },\r\n (error) => {\r\n this.loading = false;\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n\r\n public onSubmit() {\r\n this.commonService.validateAllFormFields(this.holdingCompanyForm);\r\n if (this.holdingCompanyForm.valid) {\r\n this.loading = true;\r\n\r\n this.generatorCompany.company = this.holdingCompanyForm.value;\r\n this.generatorMaintenanceService\r\n .updateGeneratorCompany(this.generatorCompany)\r\n .subscribe(\r\n () => {\r\n this.loading = false;\r\n this.loadGeneratorCompanyDetails();\r\n },\r\n (error) => {\r\n this.loading = false;\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n }\r\n }\r\n\r\n private initAddresses() {\r\n if (\r\n !isNullOrUndefined(this.company) &&\r\n !isNullOrUndefined(this.company.addresses)\r\n ) {\r\n this.addresses = this.company.addresses;\r\n } else {\r\n this.addresses = [];\r\n }\r\n }\r\n\r\n private handleFormReadOnlyMode() {\r\n if (this.isReadOnlyMode) {\r\n this.holdingCompanyForm.disable();\r\n }\r\n }\r\n\r\n private onCompanyDetailsEdit() {\r\n this.isAddendumRequired = true;\r\n }\r\n\r\n private addendumUpload(output: any): void {\r\n if (output.value && output.listenerId === 'isAddendumUploaded') {\r\n this.holdingCompanyForm.controls.addendum.setValue(output.value);\r\n this.addendumUploaded = true;\r\n }\r\n }\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { GeneratorCompanyService } from '../../generator-company/generator-company.service';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { CommonService } from '../../../common/common-service';\r\n\r\n@Component({\r\n selector: 'generator-project-list',\r\n templateUrl: './generator-project-list.component.html',\r\n styleUrls: ['./generator-project-list.component.scss'],\r\n})\r\nexport class GeneratorProjectListComponent implements OnInit {\r\n public loading: boolean;\r\n public projects: any[];\r\n public errorMessage = '';\r\n private holdingCompanyId: number;\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n private generatorMaintenanceService: GeneratorCompanyService,\r\n private router: Router,\r\n public commonService: CommonService\r\n ) {}\r\n\r\n public ngOnInit() {\r\n this.loading = true;\r\n\r\n this.route.params.subscribe(\r\n (params) => {\r\n if (params['holdingCompanyId']) {\r\n this.holdingCompanyId = params['holdingCompanyId'];\r\n }\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n\r\n this.generatorMaintenanceService\r\n .getGeneratorProjectsByHoldingCompany(this.holdingCompanyId)\r\n .subscribe(\r\n (page) => {\r\n this.projects = page;\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.loading = false;\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n }\r\n\r\n public onSelect(event: any): void {\r\n const selectedProjectId = event.selected[0].projectId;\r\n this.router.navigate(['generator-project', selectedProjectId, 'edit'], {\r\n queryParams: {\r\n companyId: event.selected[0].companyId,\r\n companyName: event.selected[0].companyName,\r\n projectName: event.selected[0].projectName,\r\n },\r\n });\r\n }\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { GeneratorCompanyService } from '../../generator-company/generator-company.service';\r\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { CommonService } from '../../../common/common-service';\r\nimport { ToastrService } from 'ngx-toastr';\r\n\r\n@Component({\r\n selector: 'generator-project-details',\r\n templateUrl: './generator-project-details.component.html',\r\n styleUrls: ['../../form.styles.scss'],\r\n})\r\nexport class GeneratorProjectDetailsComponent implements OnInit {\r\n public loading: boolean;\r\n public errorMessage = '';\r\n @Input('isReadOnlyMode')\r\n public isReadOnlyMode: boolean = false;\r\n private projectId: number;\r\n private project: any;\r\n private companyId: number;\r\n private companyName: string;\r\n private detailsForm: FormGroup;\r\n private technologies: any;\r\n private capacities: any;\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n private generatorMaintenanceService: GeneratorCompanyService,\r\n private commonService: CommonService,\r\n private toastr: ToastrService,\r\n private router: Router\r\n ) {\r\n this.detailsForm = new FormGroup({\r\n generatorProjectId: new FormControl(''),\r\n generatorProjectName: new FormControl('', [Validators.required]),\r\n generationCapacityLookupId: new FormControl(\r\n { value: '', disabled: true },\r\n [Validators.required]\r\n ),\r\n technologyLookupId: new FormControl('', [Validators.required]),\r\n isCoGeneration: new FormControl(''),\r\n });\r\n if (this.isReadOnlyMode) {\r\n this.detailsForm.disable();\r\n }\r\n }\r\n\r\n public ngOnInit() {\r\n this.loading = true;\r\n\r\n this.route.params.subscribe(\r\n (params) => {\r\n if (params['generatorProjectId']) {\r\n this.projectId = params['generatorProjectId'];\r\n }\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n\r\n this.route.params.subscribe(\r\n () => {\r\n this.route.queryParams.subscribe((queryParams) => {\r\n this.companyId = queryParams.companyId;\r\n this.companyName = queryParams.companyName;\r\n });\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n\r\n this.commonService\r\n .getEntityLookups(['Technology', 'GenerationCapacity'])\r\n .subscribe(\r\n (data) => {\r\n this.technologies =\r\n data.entityLookupResultList['technology'];\r\n this.capacities =\r\n data.entityLookupResultList['generationCapacity'];\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n\r\n this.generatorMaintenanceService\r\n .getGeneratorProject(this.projectId)\r\n .subscribe(\r\n (page) => {\r\n this.project = page;\r\n\r\n this.detailsForm.controls.generatorProjectId.setValue(\r\n this.project.generatorProjectId\r\n );\r\n this.detailsForm.controls.generatorProjectName.setValue(\r\n this.project.generatorProjectName\r\n );\r\n this.detailsForm.controls.generationCapacityLookupId.setValue(\r\n this.project.generationCapacityLookupId\r\n );\r\n this.detailsForm.controls.technologyLookupId.setValue(\r\n this.project.technologyLookupId\r\n );\r\n this.detailsForm.controls.isCoGeneration.setValue(\r\n this.project.isCoGeneration\r\n );\r\n\r\n if (this.isReadOnlyMode) {\r\n this.detailsForm.disable();\r\n }\r\n\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.loading = false;\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n }\r\n\r\n public onSubmit() {\r\n this.errorMessage = '';\r\n this.commonService.validateAllFormFields(this.detailsForm);\r\n if (this.detailsForm.valid) {\r\n this.generatorMaintenanceService\r\n .updateGeneratorProject(this.detailsForm.value)\r\n .subscribe(\r\n (page) => {\r\n this.toastr.success(\r\n 'Generator project details successfully updated'\r\n );\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n this.toastr.error(this.errorMessage);\r\n }\r\n );\r\n }\r\n }\r\n\r\n public onBack() {\r\n this.router.navigate(['generator-company', this.companyId, 'edit'], {\r\n queryParams: {\r\n companyName: this.companyName,\r\n activeTab: 'projects',\r\n },\r\n });\r\n }\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { GeneratorCompanyService } from '../../generator-company/generator-company.service';\r\nimport { CommonService } from '../../../common/common-service';\r\nimport {\r\n FormGroup,\r\n FormControl,\r\n Validators,\r\n AbstractControl,\r\n ValidatorFn,\r\n} from '@angular/forms';\r\nimport { ComponentTriggersService } from '../../../common/component-triggers.service';\r\nimport { DocumentMetadata } from '../../../model/document-metadata.model';\r\nimport { NoteMetadata } from '../../../model/note-metadata.model';\r\nimport { EntityLookup } from '../../../model/entity-lookup.model';\r\nimport { CustomValidators } from 'ng4-validators';\r\nimport { GeneratorProjectFacility } from '../../../model/generator-project-facility.model';\r\nimport { isNullOrUndefined } from '../../../../../node_modules/@swimlane/ngx-datatable/release/utils';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { AuthorisationService } from '../../../authorisation-service/authorisation.service';\r\n\r\n@Component({\r\n selector: 'generator-project-facility-details',\r\n templateUrl: './generator-project-facility-details.component.html',\r\n styleUrls: [\r\n '../../form.styles.scss',\r\n './generator-project-facility-details.component.scss',\r\n ],\r\n})\r\nexport class GeneratorProjectFacilityDetailsComponent implements OnInit {\r\n public loading: boolean;\r\n public generatorFacilityStatuses: EntityLookup[];\r\n public baseGeneratorProjectFacilityList: GeneratorProjectFacility[];\r\n public errorMessage = '';\r\n public facilityForm: FormGroup;\r\n @Input('isReadOnlyMode')\r\n public isReadOnlyMode: boolean = false;\r\n private projectId: number;\r\n private distributorId: number;\r\n private companyId: number;\r\n private companyName: string;\r\n private projectName: string;\r\n private facilityName: string;\r\n private facilities: any;\r\n private selectedFacility: GeneratorProjectFacility;\r\n private projectTypes: any;\r\n private connectionVoltageSizes: any;\r\n private provinces: any;\r\n private selectionChoices: any;\r\n private selectFacilityForm: FormGroup;\r\n private facilityAddress: FormGroup;\r\n private isExisting: boolean;\r\n private isAddendumRequired: boolean = false;\r\n private isAddendumUploaded: boolean = false;\r\n private microScaleGenCapSingleLookupId: number;\r\n private microScaleGenCapMultiLookupId: number;\r\n private installedCapacityValidators: ValidatorFn[];\r\n private contractedCapacityValidators: ValidatorFn[];\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n private generatorMaintenanceService: GeneratorCompanyService,\r\n private commonService: CommonService,\r\n private authorisationService: AuthorisationService,\r\n private componentTriggerService: ComponentTriggersService,\r\n private router: Router,\r\n private toastr: ToastrService\r\n ) {\r\n this.selectFacilityForm = new FormGroup({\r\n facility: new FormControl(''),\r\n });\r\n\r\n this.facilityAddress = new FormGroup({\r\n addressId: new FormControl(''),\r\n addressLine1: new FormControl(''),\r\n addressLine2: new FormControl(''),\r\n addressLine3: new FormControl(''),\r\n provinceLookupId: new FormControl(''),\r\n city: new FormControl(''),\r\n postalCode: new FormControl(''),\r\n isRural: new FormControl(''),\r\n });\r\n\r\n this.facilityForm = new FormGroup({\r\n generatorProjectFacilityId: new FormControl(''),\r\n generatorProjectId: new FormControl(''),\r\n facilityName: new FormControl(''),\r\n identifier: new FormControl({ value: '' }, Validators.required),\r\n eskomIdentifier: new FormControl(null),\r\n generatorFacilityStatusLookupId: new FormControl(\r\n { value: '' },\r\n Validators.required\r\n ),\r\n excludeFromRun: new FormControl({ value: false }),\r\n reasonForExcludingFromRun: new FormControl('', [\r\n Validators.maxLength(500),\r\n ]),\r\n excludeFromForecastRun: new FormControl({ value: false }),\r\n baseGeneratorProjectFacilityId: new FormControl(''),\r\n isRecsRegistered: new FormControl({\r\n value: false,\r\n disabled: !this.authorisationService.isIsRecsRegisteredEditable(),\r\n }),\r\n connectionVoltageSizeLookupId: new FormControl(''),\r\n projectTypeLookupId: new FormControl(''),\r\n projectType: new FormControl(''),\r\n installedCapacity: new FormControl({ value: '' }, [\r\n Validators.required,\r\n CustomValidators.number,\r\n ]),\r\n contractedCapacity: new FormControl({ value: '' }, [\r\n Validators.required,\r\n CustomValidators.number,\r\n ]),\r\n sapClientNumber: new FormControl({ value: '', disabled: true }),\r\n isEmbeddedGeneration: new FormControl(''),\r\n latitudeCoordinate: new FormControl(''),\r\n longitudeCoordinate: new FormControl(''),\r\n address: this.facilityAddress,\r\n\r\n isRoofTopBased: new FormControl({ value: '' }, Validators.required),\r\n\r\n isOwnedByIPP: new FormControl({ value: '' }, Validators.required),\r\n isOfficialLeaseInPlace: new FormControl(\r\n { value: '' },\r\n Validators.required\r\n ),\r\n leaseStatusComment: new FormControl(''),\r\n leaseTitleHolderName: new FormControl(''),\r\n\r\n isRezoningRequired: new FormControl(\r\n { value: '' },\r\n Validators.required\r\n ),\r\n rezoningApplicationDate: new FormControl(''),\r\n rezoningResultObtained: new FormControl(''),\r\n rezoningApplicationResult: new FormControl(''),\r\n\r\n numberOfOperationalMonths: new FormControl(\r\n { value: '' },\r\n Validators.required\r\n ),\r\n durationOfPPA: new FormControl({ value: '' }, Validators.required),\r\n maintenanceDowntimeInWeeks: new FormControl(\r\n { value: '' },\r\n Validators.required\r\n ),\r\n plannedLifeExpectancy: new FormControl(\r\n { value: '' },\r\n Validators.required\r\n ),\r\n\r\n minimumRequiredPriceWinter: new FormControl(\r\n { value: '' },\r\n Validators.required\r\n ),\r\n minimumRequiredPriceKwSummer: new FormControl(\r\n { value: '' },\r\n Validators.required\r\n ),\r\n\r\n plannedExpansion: new FormControl(\r\n { value: '' },\r\n Validators.required\r\n ),\r\n plannedCommissioningDate: new FormControl(''),\r\n expectedExtraCapacity: new FormControl(\r\n { value: '' },\r\n Validators.required\r\n ),\r\n\r\n isIRPRequestSubmitted: new FormControl(\r\n { value: '' },\r\n Validators.required\r\n ),\r\n noDeviationApprovalObtainedReason: new FormControl(''),\r\n hasExistingNERSALicence: new FormControl(\r\n { value: '' },\r\n Validators.required\r\n ),\r\n noNERSAGenerationLicenceProvidedReason: new FormControl(\r\n { value: '' },\r\n Validators.required\r\n ),\r\n\r\n isWebMetersInstalled: new FormControl(''),\r\n meterDateInstallation: new FormControl(\r\n { value: '' },\r\n Validators.required\r\n ),\r\n meterMakeAndModel: new FormControl(''),\r\n isCheckMetersInstalled: new FormControl(\r\n { value: '' },\r\n Validators.required\r\n ),\r\n\r\n exportGenerationCapacity: new FormControl(\r\n { value: '' },\r\n Validators.required\r\n ),\r\n expirationDateOfExistingPPA: new FormControl(''),\r\n existingOffTaker: new FormControl(''),\r\n\r\n projectSubmittedIntoReippp: new FormControl(\r\n { value: '' },\r\n Validators.required\r\n ),\r\n roundOfReippp: new FormControl(''),\r\n\r\n nearestSubstationName: new FormControl(\r\n { value: '' },\r\n Validators.required\r\n ),\r\n loadCapacityOfSubstation: new FormControl(\r\n { value: '' },\r\n Validators.required\r\n ),\r\n budgetConnectionCostReceived: new FormControl(\r\n { value: '' },\r\n Validators.required\r\n ),\r\n budgetConnectionUpgradeCost: new FormControl({ value: '' }),\r\n connectionAndUseOfSystemsAgreementInPlace: new FormControl(\r\n { value: '' },\r\n Validators.required\r\n ),\r\n\r\n plannedStartDate: new FormControl(\r\n { value: '' },\r\n Validators.required\r\n ),\r\n projectProgressStatus: new FormControl(\r\n { value: '' },\r\n Validators.required\r\n ),\r\n constructionStartDate: new FormControl(\r\n { value: '' },\r\n Validators.required\r\n ),\r\n electricityAndMeterDeptsNotified: new FormControl(\r\n { value: '' },\r\n Validators.required\r\n ),\r\n eiaCompletedLookupId: new FormControl(\r\n { value: '' },\r\n Validators.required\r\n ),\r\n expectedDateOfEIA: new FormControl(''),\r\n rodIssued: new FormControl({ value: '' }, Validators.required),\r\n noRODDocumentProvidedReason: new FormControl(''),\r\n\r\n acsaPermitRequiredLookupId: new FormControl(\r\n { value: '' },\r\n Validators.required\r\n ),\r\n noACSADocumentProvidedReason: new FormControl(''),\r\n geotechnicalStudyRequiredLookupId: new FormControl(\r\n { value: '' },\r\n Validators.required\r\n ),\r\n geotechnicalStudyApprovedLookupId: new FormControl(''),\r\n noGeotechnicalDocumentProvidedReason: new FormControl(''),\r\n\r\n dateOfConnectionApplication: new FormControl(''),\r\n plannedDateOfConnectionApplication: new FormControl(\r\n { value: '' },\r\n Validators.required\r\n ),\r\n expectedDateOfGridConnection: new FormControl(\r\n { value: '' },\r\n Validators.required\r\n ),\r\n\r\n preferredDebtProvider: new FormControl(\r\n { value: '' },\r\n Validators.required\r\n ),\r\n targetDebtEquityRatio: new FormControl(\r\n { value: '' },\r\n Validators.required\r\n ),\r\n equityFundingInPlace: new FormControl(\r\n { value: '' },\r\n Validators.required\r\n ),\r\n\r\n addendum: new FormControl(''),\r\n\r\n historicGenerationData: this.initYearlyDataForm(),\r\n futureGenerationData: this.initYearlyDataForm(),\r\n });\r\n }\r\n\r\n public onExcludeFromRunChange() {\r\n if (this.facilityForm.get('excludeFromRun').value) {\r\n this.commonService.enableControl(\r\n this.facilityForm.get('reasonForExcludingFromRun'),\r\n [Validators.required, Validators.maxLength(500)]\r\n );\r\n } else {\r\n this.commonService.disableControl(\r\n this.facilityForm.get('reasonForExcludingFromRun')\r\n );\r\n }\r\n }\r\n\r\n public initYearlyDataForm(): FormGroup {\r\n return new FormGroup({\r\n january: new FormControl(''),\r\n february: new FormControl(''),\r\n march: new FormControl(''),\r\n april: new FormControl(''),\r\n may: new FormControl(''),\r\n june: new FormControl(''),\r\n july: new FormControl(''),\r\n august: new FormControl(''),\r\n september: new FormControl(''),\r\n october: new FormControl(''),\r\n november: new FormControl(''),\r\n december: new FormControl(''),\r\n });\r\n }\r\n\r\n public ngOnInit() {\r\n this.loading = true;\r\n\r\n this.route.params.subscribe(\r\n (params) => {\r\n if (params['generatorProjectId']) {\r\n this.projectId = params['generatorProjectId'];\r\n }\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n this.route.params.subscribe(\r\n () => {\r\n this.route.queryParams.subscribe(\r\n (queryParams) => {\r\n this.companyId = queryParams.companyId;\r\n this.companyName = queryParams.companyName;\r\n this.projectName = queryParams.projectName;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n\r\n this.commonService\r\n .getEntityLookups([\r\n 'ProjectType',\r\n 'ConnectionVoltageSize',\r\n 'Province',\r\n 'GeneratorFacilityStatus',\r\n 'Selection',\r\n 'GenerationCapacity',\r\n ])\r\n .subscribe(\r\n (data) => {\r\n this.projectTypes =\r\n data.entityLookupResultList['projectType'];\r\n this.connectionVoltageSizes =\r\n data.entityLookupResultList['connectionVoltageSize'];\r\n this.provinces = data.entityLookupResultList['province'];\r\n this.selectionChoices =\r\n data.entityLookupResultList['selection'];\r\n this.generatorFacilityStatuses =\r\n data.entityLookupResultList['generatorFacilityStatus'];\r\n\r\n data.entityLookupResultList['generationCapacity'].forEach(\r\n (genCap) => {\r\n if (\r\n genCap.value ===\r\n 'Generation capacity 100 kW to 1 MW (Microscale - Single Facility)'\r\n ) {\r\n this.microScaleGenCapSingleLookupId =\r\n genCap.entityLookupId;\r\n }\r\n if (\r\n genCap.value ===\r\n 'Generation capacity 100 kW to 1 MW (Microscale - Multiple Facility)'\r\n ) {\r\n this.microScaleGenCapMultiLookupId =\r\n genCap.entityLookupId;\r\n }\r\n }\r\n );\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n\r\n this.generatorMaintenanceService\r\n .getGeneratorProjectFacilities(this.projectId)\r\n .subscribe(\r\n (page) => {\r\n this.facilities = page;\r\n if (this.facilities.length > 0) {\r\n this.installedCapacityValidators = [\r\n Validators.required,\r\n Validators.min(0.02),\r\n ];\r\n // Init validator for installedCapacity\r\n if (\r\n !isNullOrUndefined(\r\n this.facilities[0].generatorProject\r\n ) &&\r\n (+this.facilities[0].generatorProject\r\n .generationCapacityLookupId ===\r\n +this.microScaleGenCapSingleLookupId ||\r\n +this.facilities[0].generatorProject\r\n .generationCapacityLookupId ===\r\n +this.microScaleGenCapMultiLookupId)\r\n ) {\r\n this.installedCapacityValidators.push(\r\n Validators.max(1.0)\r\n );\r\n }\r\n this.contractedCapacityValidators = [\r\n Validators.required,\r\n Validators.min(0.02),\r\n ];\r\n // Init validator for contractedCapacity\r\n if (\r\n !isNullOrUndefined(\r\n this.facilities[0].generatorProject\r\n ) &&\r\n (+this.facilities[0].generatorProject\r\n .generationCapacityLookupId ===\r\n +this.microScaleGenCapSingleLookupId ||\r\n +this.facilities[0].generatorProject\r\n .generationCapacityLookupId ===\r\n +this.microScaleGenCapMultiLookupId)\r\n ) {\r\n this.contractedCapacityValidators.push(\r\n Validators.max(1.0)\r\n );\r\n }\r\n this.selectFacilityForm.controls.facility.setValue(\r\n this.facilities[0].generatorProjectFacilityId\r\n );\r\n this.distributorId = this.facilities[0].generatorProject.distributorId;\r\n this.loadProjectFacility(this.facilities[0]);\r\n this.disableValidations();\r\n this.onExcludeFromRunChange();\r\n }\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.loading = false;\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n }\r\n\r\n public loadProjectFacility(facility: GeneratorProjectFacility) {\r\n this.errorMessage = '';\r\n this.facilityName = facility.facilityName;\r\n\r\n this.loadHistoricData(facility.historicGenerationData);\r\n this.loadPlannedData(facility.futureGenerationData);\r\n this.selectedFacility = facility;\r\n this.isExisting =\r\n this.selectedFacility.projectType.value === 'Existing facility';\r\n\r\n this.facilityForm.controls.generatorProjectFacilityId.setValue(\r\n facility.generatorProjectFacilityId\r\n );\r\n this.facilityForm.controls.generatorProjectId.setValue(\r\n facility.generatorProjectId\r\n );\r\n\r\n this.facilityForm.controls.facilityName.setValue(facility.facilityName);\r\n this.facilityForm.controls.identifier.setValue(facility.identifier);\r\n this.facilityForm.controls.eskomIdentifier.setValue(\r\n facility.eskomIdentifier\r\n );\r\n this.facilityForm.controls.generatorFacilityStatusLookupId.setValue(\r\n facility.generatorFacilityStatusLookupId\r\n );\r\n this.facilityForm.controls.excludeFromRun.setValue(\r\n facility.excludeFromRun\r\n );\r\n this.facilityForm.controls.reasonForExcludingFromRun.setValue(\r\n facility.reasonForExcludingFromRun\r\n );\r\n this.facilityForm.controls.excludeFromForecastRun.setValue(\r\n facility.excludeFromForecastRun\r\n );\r\n\r\n this.LoadBaseGeneratorProjectFacilityList(\r\n facility.generatorProjectFacilityId\r\n );\r\n this.facilityForm.controls.baseGeneratorProjectFacilityId.setValue(\r\n isNullOrUndefined(facility.baseGeneratorProjectFacilityId)\r\n ? null\r\n : facility.baseGeneratorProjectFacilityId\r\n );\r\n\r\n this.facilityForm.controls.isRecsRegistered.setValue(\r\n facility.isRecsRegistered\r\n );\r\n\r\n this.facilityForm.controls.connectionVoltageSizeLookupId.setValue(\r\n facility.connectionVoltageSizeLookupId\r\n );\r\n this.facilityForm.controls.projectTypeLookupId.setValue(\r\n facility.projectTypeLookupId\r\n );\r\n this.facilityForm.controls.projectType.setValue(facility.projectType);\r\n\r\n this.facilityForm.controls.installedCapacity.setValue(\r\n facility.installedCapacity\r\n );\r\n this.facilityForm.controls.installedCapacity.setValidators(\r\n this.installedCapacityValidators\r\n ); // set installedCapacity validator\r\n this.facilityForm.controls.contractedCapacity.setValue(\r\n facility.contractedCapacity\r\n );\r\n this.facilityForm.controls.contractedCapacity.setValidators(\r\n this.contractedCapacityValidators\r\n ); // set contractedCapacity validator\r\n this.facilityForm.controls.sapClientNumber.setValue(\r\n facility.sapClientNumber\r\n );\r\n this.facilityForm.controls.isEmbeddedGeneration.setValue(\r\n facility.isEmbeddedGeneration\r\n );\r\n this.facilityForm.controls.latitudeCoordinate.setValue(\r\n facility.latitudeCoordinate\r\n );\r\n this.facilityForm.controls.longitudeCoordinate.setValue(\r\n facility.longitudeCoordinate\r\n );\r\n this.facilityForm.controls.addendum.setValue('');\r\n\r\n if (facility.address) {\r\n this.facilityAddress.controls.addressId.setValue(\r\n facility.address.addressId\r\n );\r\n this.facilityAddress.controls.addressLine1.setValue(\r\n facility.address.addressLine1\r\n );\r\n this.facilityAddress.controls.addressLine2.setValue(\r\n facility.address.addressLine2\r\n );\r\n this.facilityAddress.controls.addressLine3.setValue(\r\n facility.address.addressLine3\r\n );\r\n this.facilityAddress.controls.provinceLookupId.setValue(\r\n facility.address.provinceLookupId\r\n );\r\n this.facilityAddress.controls.city.setValue(facility.address.city);\r\n this.facilityAddress.controls.postalCode.setValue(\r\n facility.address.postalCode\r\n );\r\n this.facilityAddress.controls.isRural.setValue(\r\n facility.address.isRural\r\n );\r\n }\r\n\r\n this.loadSpvField(facility);\r\n // Refresh notes and document components\r\n const documentMetaData: DocumentMetadata[] = [\r\n {\r\n documentMetadataId: 0,\r\n metadataTypeLookupName: 'GeneratorProjectFacilityId',\r\n metadataValue: this.selectedFacility.generatorProjectFacilityId.toString(),\r\n },\r\n ];\r\n const noteMetaData: NoteMetadata[] = [\r\n {\r\n noteMetadataId: 0,\r\n metadataTypeLookupName: 'GeneratorProjectFacilityId',\r\n metadataValue: this.selectedFacility.generatorProjectFacilityId.toString(),\r\n },\r\n ];\r\n this.componentTriggerService.triggerDocumentsRefresh.next(\r\n documentMetaData\r\n );\r\n this.componentTriggerService.triggerNotesRefresh.next(noteMetaData);\r\n\r\n if (this.isReadOnlyMode) {\r\n this.facilityForm.disable();\r\n this.facilityAddress.disable();\r\n }\r\n }\r\n\r\n public loadSpvField(facility: any) {\r\n this.facilityForm.controls.isRoofTopBased.setValue(\r\n isNullOrUndefined(facility.isRoofTopBased)\r\n ? false\r\n : facility.isRoofTopBased\r\n );\r\n\r\n this.facilityForm.controls.isOwnedByIPP.setValue(\r\n isNullOrUndefined(facility.isOwnedByIPP)\r\n ? false\r\n : facility.isOwnedByIPP\r\n );\r\n this.facilityForm.controls.isOfficialLeaseInPlace.setValue(\r\n isNullOrUndefined(facility.isOfficialLeaseInPlace)\r\n ? false\r\n : facility.isOfficialLeaseInPlace\r\n );\r\n this.facilityForm.controls.leaseStatusComment.setValue(\r\n facility.leaseStatusComment\r\n );\r\n this.facilityForm.controls.leaseTitleHolderName.setValue(\r\n facility.leaseTitleHolderName\r\n );\r\n\r\n this.facilityForm.controls.isRezoningRequired.setValue(\r\n isNullOrUndefined(facility.isRezoningRequired)\r\n ? false\r\n : facility.isRezoningRequired\r\n );\r\n this.facilityForm.controls.rezoningApplicationDate.setValue(\r\n facility.rezoningApplicationDate\r\n );\r\n this.facilityForm.controls.rezoningResultObtained.setValue(\r\n isNullOrUndefined(facility.rezoningResultObtained)\r\n ? false\r\n : facility.rezoningResultObtained\r\n );\r\n this.facilityForm.controls.rezoningApplicationResult.setValue(\r\n isNullOrUndefined(facility.rezoningApplicationResult)\r\n ? false\r\n : facility.rezoningApplicationResult\r\n );\r\n\r\n this.facilityForm.controls.numberOfOperationalMonths.setValue(\r\n facility.numberOfOperationalMonths\r\n );\r\n this.facilityForm.controls.durationOfPPA.setValue(\r\n facility.durationOfPPA\r\n );\r\n this.facilityForm.controls.maintenanceDowntimeInWeeks.setValue(\r\n facility.maintenanceDowntimeInWeeks\r\n );\r\n this.facilityForm.controls.plannedLifeExpectancy.setValue(\r\n facility.plannedLifeExpectancy\r\n );\r\n this.facilityForm.controls.minimumRequiredPriceWinter.setValue(\r\n facility.minimumRequiredPriceWinter\r\n );\r\n this.facilityForm.controls.minimumRequiredPriceKwSummer.setValue(\r\n facility.minimumRequiredPriceKwSummer\r\n );\r\n this.facilityForm.controls.plannedExpansion.setValue(\r\n isNullOrUndefined(facility.plannedExpansion)\r\n ? false\r\n : facility.plannedExpansion\r\n );\r\n this.facilityForm.controls.plannedCommissioningDate.setValue(\r\n facility.plannedCommissioningDate\r\n );\r\n this.facilityForm.controls.expectedExtraCapacity.setValue(\r\n facility.expectedExtraCapacity\r\n );\r\n\r\n this.facilityForm.controls.isIRPRequestSubmitted.setValue(\r\n isNullOrUndefined(facility.isIRPRequestSubmitted)\r\n ? false\r\n : facility.isIRPRequestSubmitted\r\n );\r\n this.facilityForm.controls.noDeviationApprovalObtainedReason.setValue(\r\n isNullOrUndefined(facility.noDeviationApprovalObtainedReason)\r\n ? false\r\n : facility.noDeviationApprovalObtainedReason\r\n );\r\n this.facilityForm.controls.hasExistingNERSALicence.setValue(\r\n isNullOrUndefined(facility.hasExistingNERSALicence)\r\n ? false\r\n : facility.hasExistingNERSALicence\r\n );\r\n this.facilityForm.controls.noNERSAGenerationLicenceProvidedReason.setValue(\r\n facility.noNERSAGenerationLicenceProvidedReason\r\n );\r\n\r\n this.facilityForm.controls.isWebMetersInstalled.setValue(\r\n isNullOrUndefined(facility.isWebMetersInstalled)\r\n ? false\r\n : facility.isWebMetersInstalled\r\n );\r\n this.facilityForm.controls.meterDateInstallation.setValue(\r\n facility.meterDateInstallation\r\n );\r\n this.facilityForm.controls.meterMakeAndModel.setValue(\r\n facility.meterMakeAndModel\r\n );\r\n this.facilityForm.controls.isCheckMetersInstalled.setValue(\r\n isNullOrUndefined(facility.isCheckMetersInstalled)\r\n ? false\r\n : facility.isCheckMetersInstalled\r\n );\r\n this.facilityForm.controls.exportGenerationCapacity.setValue(\r\n facility.exportGenerationCapacity\r\n );\r\n this.facilityForm.controls.existingOffTaker.setValue(\r\n facility.existingOffTaker\r\n );\r\n this.facilityForm.controls.expirationDateOfExistingPPA.setValue(\r\n facility.expirationDateOfExistingPPA\r\n );\r\n\r\n this.facilityForm.controls.projectSubmittedIntoReippp.setValue(\r\n isNullOrUndefined(facility.projectSubmittedIntoReippp)\r\n ? false\r\n : facility.projectSubmittedIntoReippp\r\n );\r\n this.facilityForm.controls.roundOfReippp.setValue(\r\n facility.roundOfReippp\r\n );\r\n this.facilityForm.controls.nearestSubstationName.setValue(\r\n facility.nearestSubstationName\r\n );\r\n this.facilityForm.controls.loadCapacityOfSubstation.setValue(\r\n facility.loadCapacityOfSubstation\r\n );\r\n this.facilityForm.controls.budgetConnectionCostReceived.setValue(\r\n isNullOrUndefined(facility.budgetConnectionCostReceived)\r\n ? false\r\n : facility.budgetConnectionCostReceived\r\n );\r\n this.facilityForm.controls.budgetConnectionUpgradeCost.setValue(\r\n facility.budgetConnectionUpgradeCost\r\n );\r\n this.facilityForm.controls.connectionAndUseOfSystemsAgreementInPlace.setValue(\r\n isNullOrUndefined(\r\n facility.connectionAndUseOfSystemsAgreementInPlace\r\n )\r\n ? false\r\n : facility.connectionAndUseOfSystemsAgreementInPlace\r\n );\r\n this.facilityForm.controls.plannedStartDate.setValue(\r\n facility.plannedStartDate\r\n );\r\n this.facilityForm.controls.projectProgressStatus.setValue(\r\n facility.projectProgressStatus\r\n );\r\n this.facilityForm.controls.constructionStartDate.setValue(\r\n facility.constructionStartDate\r\n );\r\n this.facilityForm.controls.electricityAndMeterDeptsNotified.setValue(\r\n isNullOrUndefined(facility.electricityAndMeterDeptsNotified)\r\n ? false\r\n : facility.electricityAndMeterDeptsNotified\r\n );\r\n this.facilityForm.controls.eiaCompletedLookupId.setValue(\r\n facility.eiaCompletedLookupId\r\n );\r\n this.facilityForm.controls.expectedDateOfEIA.setValue(\r\n facility.expectedDateOfEIA\r\n );\r\n this.facilityForm.controls.rodIssued.setValue(\r\n isNullOrUndefined(facility.rodIssued) ? false : facility.rodIssued\r\n );\r\n this.facilityForm.controls.noRODDocumentProvidedReason.setValue(\r\n facility.noRODDocumentProvidedReason\r\n );\r\n this.facilityForm.controls.acsaPermitRequiredLookupId.setValue(\r\n facility.acsaPermitRequiredLookupId\r\n );\r\n this.facilityForm.controls.noACSADocumentProvidedReason.setValue(\r\n facility.noACSADocumentProvidedReason\r\n );\r\n this.facilityForm.controls.geotechnicalStudyRequiredLookupId.setValue(\r\n facility.geotechnicalStudyRequiredLookupId\r\n );\r\n this.facilityForm.controls.geotechnicalStudyApprovedLookupId.setValue(\r\n facility.geotechnicalStudyApprovedLookupId\r\n );\r\n this.facilityForm.controls.noGeotechnicalDocumentProvidedReason.setValue(\r\n facility.noGeotechnicalDocumentProvidedReason\r\n );\r\n this.facilityForm.controls.dateOfConnectionApplication.setValue(\r\n facility.dateOfConnectionApplication\r\n );\r\n this.facilityForm.controls.plannedDateOfConnectionApplication.setValue(\r\n facility.plannedDateOfConnectionApplication\r\n );\r\n this.facilityForm.controls.expectedDateOfGridConnection.setValue(\r\n facility.expectedDateOfGridConnection\r\n );\r\n this.facilityForm.controls.preferredDebtProvider.setValue(\r\n facility.preferredDebtProvider\r\n );\r\n this.facilityForm.controls.targetDebtEquityRatio.setValue(\r\n facility.targetDebtEquityRatio\r\n );\r\n this.facilityForm.controls.equityFundingInPlace.setValue(\r\n isNullOrUndefined(facility.equityFundingInPlace)\r\n ? false\r\n : facility.equityFundingInPlace\r\n );\r\n\r\n this.enableAllValidations();\r\n this.initCheckBoxes();\r\n }\r\n\r\n public loadHistoricData(historicData: any) {\r\n // clear form\r\n this.facilityForm.controls.historicGenerationData = this.initYearlyDataForm();\r\n\r\n if (historicData == null) {\r\n return;\r\n }\r\n\r\n const group = this.facilityForm.controls\r\n .historicGenerationData as FormGroup;\r\n group.controls.january.setValue(historicData.january);\r\n group.controls.february.setValue(historicData.february);\r\n group.controls.march.setValue(historicData.march);\r\n group.controls.april.setValue(historicData.april);\r\n group.controls.may.setValue(historicData.may);\r\n group.controls.june.setValue(historicData.june);\r\n group.controls.july.setValue(historicData.july);\r\n group.controls.august.setValue(historicData.august);\r\n group.controls.september.setValue(historicData.september);\r\n group.controls.october.setValue(historicData.october);\r\n group.controls.november.setValue(historicData.november);\r\n group.controls.december.setValue(historicData.december);\r\n }\r\n\r\n public loadPlannedData(plannedData: any) {\r\n // clear form\r\n this.facilityForm.controls.futureGenerationData = this.initYearlyDataForm();\r\n\r\n if (plannedData == null) {\r\n return;\r\n }\r\n\r\n const group = this.facilityForm.controls\r\n .futureGenerationData as FormGroup;\r\n group.controls.january.setValue(plannedData.january);\r\n group.controls.february.setValue(plannedData.february);\r\n group.controls.march.setValue(plannedData.march);\r\n group.controls.april.setValue(plannedData.april);\r\n group.controls.may.setValue(plannedData.may);\r\n group.controls.june.setValue(plannedData.june);\r\n group.controls.july.setValue(plannedData.july);\r\n group.controls.august.setValue(plannedData.august);\r\n group.controls.september.setValue(plannedData.september);\r\n group.controls.october.setValue(plannedData.october);\r\n group.controls.november.setValue(plannedData.november);\r\n group.controls.december.setValue(plannedData.december);\r\n }\r\n\r\n public validateInstalledCapacity(installedCapacity: any): boolean {\r\n let totalInstalledCapacity = 0;\r\n for (const facility of this.facilities) {\r\n if (\r\n this.selectedFacility.generatorProjectFacilityId !==\r\n facility.generatorProjectFacilityId\r\n ) {\r\n totalInstalledCapacity += +facility.installedCapacity;\r\n }\r\n }\r\n totalInstalledCapacity += +installedCapacity;\r\n\r\n return !(\r\n totalInstalledCapacity > 2.0 &&\r\n (this.selectedFacility.generatorProject\r\n .generationCapacityLookupId ===\r\n this.microScaleGenCapSingleLookupId ||\r\n this.selectedFacility.generatorProject\r\n .generationCapacityLookupId ===\r\n this.microScaleGenCapMultiLookupId)\r\n );\r\n }\r\n\r\n public validateContractedCapacity(contractedCapacity: any): boolean {\r\n let totalContractedCapacity = 0;\r\n for (const facility of this.facilities) {\r\n if (\r\n this.selectedFacility.generatorProjectFacilityId !==\r\n facility.generatorProjectFacilityId\r\n ) {\r\n totalContractedCapacity += +facility.contractedCapacity;\r\n }\r\n }\r\n totalContractedCapacity += +contractedCapacity;\r\n\r\n return !(\r\n totalContractedCapacity > 2.0 &&\r\n (this.selectedFacility.generatorProject\r\n .generationCapacityLookupId ===\r\n this.microScaleGenCapSingleLookupId ||\r\n this.selectedFacility.generatorProject\r\n .generationCapacityLookupId ===\r\n this.microScaleGenCapMultiLookupId)\r\n );\r\n }\r\n\r\n public onFacilityChange() {\r\n this.loading = true;\r\n this.loadProjectFacility(\r\n this.facilities.find(\r\n (facility) =>\r\n facility.generatorProjectFacilityId ===\r\n this.selectFacilityForm.controls.facility.value\r\n )\r\n );\r\n this.disableValidations();\r\n this.loading = false;\r\n }\r\n\r\n public onBack() {\r\n this.router.navigate(['generator-company', this.companyId, 'edit'], {\r\n queryParams: {\r\n companyName: this.companyName,\r\n activeTab: 'projects',\r\n },\r\n });\r\n }\r\n\r\n public onUpdateFacilitySubmit() {\r\n this.errorMessage = '';\r\n this.commonService.validateAllFormFields(this.facilityForm);\r\n this.componentTriggerService.triggerValidationMessages.next();\r\n\r\n if (this.facilityForm.valid) {\r\n this.loading = true;\r\n this.generatorMaintenanceService\r\n .updateGeneratorProjectFacility(this.facilityForm.getRawValue())\r\n .subscribe(\r\n (response) => {\r\n this.facilities = response;\r\n this.loading = false;\r\n this.toastr.success(\r\n 'Generator facility successfully updated'\r\n );\r\n },\r\n (error) => {\r\n this.loading = false;\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.toastr.error(this.errorMessage);\r\n }\r\n );\r\n }\r\n }\r\n\r\n public onPowerDistributionNomincationClick() {\r\n this.router.navigate(\r\n [\r\n 'generator-project-facility',\r\n this.selectFacilityForm.controls.facility.value,\r\n 'edit',\r\n 'distributor-nominations',\r\n ],\r\n {\r\n queryParams: {\r\n projectName: this.projectName,\r\n facilityName: this.facilityName,\r\n },\r\n }\r\n );\r\n }\r\n\r\n public onChangeIsRecsRegistered() {\r\n this.isAddendumRequired =\r\n this.selectedFacility.isRecsRegistered !==\r\n this.facilityForm.controls.isRecsRegistered.value;\r\n }\r\n\r\n public changePropertyOwnerShip(updateValidity: boolean = true): void {\r\n const ippOwnedControl = this.facilityForm.get('isOwnedByIPP');\r\n const officialLeaseControl = this.facilityForm.get(\r\n 'isOfficialLeaseInPlace'\r\n );\r\n const leaseTitleHolderNameControl = this.facilityForm.get(\r\n 'leaseTitleHolderName'\r\n );\r\n const leaseStatusCommentControl = this.facilityForm.get(\r\n 'leaseStatusComment'\r\n );\r\n\r\n if (ippOwnedControl.value) {\r\n this.disableControl(officialLeaseControl, updateValidity);\r\n this.disableControl(leaseTitleHolderNameControl, updateValidity);\r\n this.disableControl(leaseStatusCommentControl, updateValidity);\r\n } else {\r\n if (officialLeaseControl.value) {\r\n this.disableControl(leaseStatusCommentControl, updateValidity);\r\n this.enableControl(\r\n leaseTitleHolderNameControl,\r\n [Validators.required],\r\n updateValidity\r\n );\r\n } else {\r\n this.enableControl(\r\n leaseStatusCommentControl,\r\n [Validators.required],\r\n updateValidity\r\n );\r\n }\r\n this.enableControl(\r\n officialLeaseControl,\r\n [Validators.required],\r\n updateValidity\r\n );\r\n }\r\n }\r\n\r\n public changeLeaseControl(updateValidity: boolean = true): void {\r\n const officialLeaseControl = this.facilityForm.get(\r\n 'isOfficialLeaseInPlace'\r\n );\r\n const leaseStatusCommentControl = this.facilityForm.get(\r\n 'leaseStatusComment'\r\n );\r\n const leaseTitleHolderNameControl = this.facilityForm.get(\r\n 'leaseTitleHolderName'\r\n );\r\n const ippOwnedControl = this.facilityForm.get('isOwnedByIPP');\r\n\r\n if (officialLeaseControl.value) {\r\n this.enableControl(\r\n leaseTitleHolderNameControl,\r\n [Validators.required],\r\n updateValidity\r\n );\r\n this.disableControl(leaseStatusCommentControl);\r\n } else {\r\n if (ippOwnedControl.value) {\r\n this.disableControl(leaseStatusCommentControl);\r\n this.disableControl(leaseTitleHolderNameControl);\r\n } else {\r\n this.enableControl(\r\n leaseStatusCommentControl,\r\n [Validators.required],\r\n updateValidity\r\n );\r\n this.disableControl(leaseTitleHolderNameControl);\r\n }\r\n }\r\n }\r\n\r\n public changePlannedExpansionControls(\r\n updateValidity: boolean = true\r\n ): void {\r\n const plannedExpansionControl = this.facilityForm.get(\r\n 'plannedExpansion'\r\n );\r\n const plannedCommissioningDateControl = this.facilityForm.get(\r\n 'plannedCommissioningDate'\r\n );\r\n const expectedExtraCapacityControl = this.facilityForm.get(\r\n 'expectedExtraCapacity'\r\n );\r\n\r\n if (plannedExpansionControl.value) {\r\n this.enableControl(\r\n plannedCommissioningDateControl,\r\n [Validators.required],\r\n updateValidity\r\n );\r\n this.enableControl(\r\n expectedExtraCapacityControl,\r\n [Validators.required, Validators.min(0.0)],\r\n updateValidity\r\n );\r\n } else {\r\n this.disableControl(plannedCommissioningDateControl);\r\n this.disableControl(expectedExtraCapacityControl);\r\n }\r\n }\r\n\r\n public changeWebEnabledControls(updateValidity: boolean = true): void {\r\n const isWebEnabledMetersInstalledControl = this.facilityForm.get(\r\n 'isWebMetersInstalled'\r\n );\r\n const meterDateInstallationControl = this.facilityForm.get(\r\n 'meterDateInstallation'\r\n );\r\n\r\n if (isWebEnabledMetersInstalledControl.value) {\r\n this.disableControl(meterDateInstallationControl);\r\n } else {\r\n this.enableControl(\r\n meterDateInstallationControl,\r\n [Validators.required],\r\n updateValidity\r\n );\r\n }\r\n }\r\n\r\n public changeEIAControls(updateValidity: boolean = true): void {\r\n const eiaCompletedControl = this.facilityForm.get(\r\n 'eiaCompletedLookupId'\r\n );\r\n const expectedDateOfEiaControl = this.facilityForm.get(\r\n 'expectedDateOfEIA'\r\n );\r\n const rodIssuedControl = this.facilityForm.get('rodIssued');\r\n const noRODDocumentProvidedReasonControl = this.facilityForm.get(\r\n 'noRODDocumentProvidedReason'\r\n );\r\n\r\n // YES\r\n if (\r\n !isNullOrUndefined(\r\n this.selectionChoices.find(\r\n (x) => x.entityLookupId === eiaCompletedControl.value\r\n )\r\n ) &&\r\n this.selectionChoices.find(\r\n (x) => x.entityLookupId === eiaCompletedControl.value\r\n ).value === 'Yes'\r\n ) {\r\n this.enableControl(\r\n expectedDateOfEiaControl,\r\n [Validators.required],\r\n updateValidity\r\n );\r\n this.enableControl(\r\n rodIssuedControl,\r\n [Validators.required],\r\n updateValidity\r\n );\r\n this.enableControl(\r\n noRODDocumentProvidedReasonControl,\r\n [Validators.required],\r\n updateValidity\r\n );\r\n // NO or NOT APPLICABLE\r\n } else {\r\n this.disableControl(expectedDateOfEiaControl, updateValidity);\r\n this.disableControl(rodIssuedControl, updateValidity);\r\n this.disableControl(\r\n noRODDocumentProvidedReasonControl,\r\n updateValidity\r\n );\r\n }\r\n }\r\n\r\n public changeRODControls(updateValidity: boolean = true): void {\r\n const eiaCompletedControl = this.facilityForm.get(\r\n 'eiaCompletedLookupId'\r\n );\r\n const rodIssuedControl = this.facilityForm.get('rodIssued');\r\n const noRODDocumentProvidedReasonControl = this.facilityForm.get(\r\n 'noRODDocumentProvidedReason'\r\n );\r\n\r\n // YES\r\n if (\r\n !isNullOrUndefined(\r\n this.selectionChoices.find(\r\n (x) => x.entityLookupId === eiaCompletedControl.value\r\n )\r\n ) &&\r\n this.selectionChoices.find(\r\n (x) => x.entityLookupId === eiaCompletedControl.value\r\n ).value === 'Yes'\r\n ) {\r\n if (rodIssuedControl.value) {\r\n this.enableControl(\r\n noRODDocumentProvidedReasonControl,\r\n [Validators.required],\r\n updateValidity\r\n );\r\n this.disableControl(\r\n noRODDocumentProvidedReasonControl,\r\n updateValidity\r\n );\r\n } else {\r\n this.disableControl(\r\n noRODDocumentProvidedReasonControl,\r\n updateValidity\r\n );\r\n this.enableControl(\r\n noRODDocumentProvidedReasonControl,\r\n [Validators.required],\r\n updateValidity\r\n );\r\n }\r\n } else {\r\n // NO or N/A\r\n this.disableControl(\r\n noRODDocumentProvidedReasonControl,\r\n updateValidity\r\n );\r\n this.disableControl(rodIssuedControl);\r\n }\r\n }\r\n\r\n public changeACSAPermitRequiredControls(\r\n updateValidity: boolean = true\r\n ): void {\r\n const acsaPermitRequiredControl = this.facilityForm.get(\r\n 'acsaPermitRequiredLookupId'\r\n );\r\n const noACSADocumentProvidedReasonControl = this.facilityForm.get(\r\n 'noACSADocumentProvidedReason'\r\n );\r\n\r\n // YES\r\n if (\r\n !isNullOrUndefined(\r\n this.selectionChoices.find(\r\n (x) => x.entityLookupId === acsaPermitRequiredControl.value\r\n )\r\n ) &&\r\n this.selectionChoices.find(\r\n (x) => x.entityLookupId === acsaPermitRequiredControl.value\r\n ).value === 'Yes'\r\n ) {\r\n this.enableControl(\r\n noACSADocumentProvidedReasonControl,\r\n [Validators.required],\r\n updateValidity\r\n );\r\n // NO or NOT APPLICABLE\r\n } else {\r\n this.disableControl(\r\n noACSADocumentProvidedReasonControl,\r\n updateValidity\r\n );\r\n }\r\n }\r\n\r\n public changeGeotechnicalStudyRequiredControls(\r\n updateValidity: boolean = true\r\n ): void {\r\n const geotechnicalStudyRequiredControl = this.facilityForm.get(\r\n 'geotechnicalStudyRequiredLookupId'\r\n );\r\n const geotechnicalStudyApprovedControl = this.facilityForm.get(\r\n 'geotechnicalStudyApprovedLookupId'\r\n );\r\n const noGeotechnicalDocumentProvidedReasonControl = this.facilityForm.get(\r\n 'noGeotechnicalDocumentProvidedReason'\r\n );\r\n\r\n if (!geotechnicalStudyRequiredControl) {\r\n return;\r\n }\r\n\r\n // YES\r\n if (\r\n !isNullOrUndefined(\r\n this.selectionChoices.find(\r\n (x) =>\r\n x.entityLookupId ===\r\n geotechnicalStudyRequiredControl.value\r\n )\r\n ) &&\r\n this.selectionChoices.find(\r\n (x) =>\r\n x.entityLookupId === geotechnicalStudyRequiredControl.value\r\n ).value === 'Yes'\r\n ) {\r\n this.enableControl(\r\n geotechnicalStudyApprovedControl,\r\n [Validators.required],\r\n updateValidity\r\n );\r\n this.enableControl(\r\n noGeotechnicalDocumentProvidedReasonControl,\r\n [Validators.required],\r\n updateValidity\r\n );\r\n // NO or NOT APPLICABLE\r\n } else {\r\n this.disableControl(geotechnicalStudyApprovedControl);\r\n this.disableControl(\r\n noGeotechnicalDocumentProvidedReasonControl,\r\n updateValidity\r\n );\r\n }\r\n }\r\n\r\n public changeRezoningControls(updateValidity: boolean = true): void {\r\n const rezoningRequiredControl = this.facilityForm.get(\r\n 'isRezoningRequired'\r\n );\r\n const rezoningApplicationDateControl = this.facilityForm.get(\r\n 'rezoningApplicationDate'\r\n );\r\n const rezoningResultObtainedControl = this.facilityForm.get(\r\n 'rezoningResultObtained'\r\n );\r\n const rezoningApplicationResultControl = this.facilityForm.get(\r\n 'rezoningApplicationResult'\r\n );\r\n\r\n if (rezoningRequiredControl.value) {\r\n this.enableControl(\r\n rezoningResultObtainedControl,\r\n [Validators.required],\r\n updateValidity\r\n );\r\n this.enableControl(\r\n rezoningApplicationDateControl,\r\n [Validators.required],\r\n updateValidity\r\n );\r\n } else {\r\n this.disableControl(rezoningApplicationDateControl);\r\n this.disableControl(rezoningResultObtainedControl);\r\n this.disableControl(rezoningApplicationResultControl);\r\n }\r\n }\r\n\r\n public changeRezoningResultControl(updateValidity: boolean = true): void {\r\n const rezoningResultObtainedControl = this.facilityForm.get(\r\n 'rezoningResultObtained'\r\n );\r\n const rezoningApplicationResultControl = this.facilityForm.get(\r\n 'rezoningApplicationResult'\r\n );\r\n\r\n if (rezoningResultObtainedControl.value) {\r\n this.enableControl(\r\n rezoningApplicationResultControl,\r\n [Validators.required],\r\n updateValidity\r\n );\r\n }\r\n }\r\n\r\n public changeIRPControls(updateValidity: boolean = true): void {\r\n const isIRPRequestSubmittedControl = this.facilityForm.get(\r\n 'isIRPRequestSubmitted'\r\n );\r\n const noDeviationApprovalObtainedReasonControl = this.facilityForm.get(\r\n 'noDeviationApprovalObtainedReason'\r\n );\r\n\r\n if (isIRPRequestSubmittedControl.value) {\r\n this.enableControl(\r\n noDeviationApprovalObtainedReasonControl,\r\n [Validators.required],\r\n updateValidity\r\n );\r\n } else {\r\n this.disableControl(noDeviationApprovalObtainedReasonControl);\r\n }\r\n }\r\n\r\n public changeNersaLicenceControl(updateValidity: boolean = true): void {\r\n const hasExistingNERSALicenceControl = this.facilityForm.get(\r\n 'hasExistingNERSALicence'\r\n );\r\n const noNERSAGenerationLicenceProvidedReasonControl = this.facilityForm.get(\r\n 'noNERSAGenerationLicenceProvidedReason'\r\n );\r\n\r\n if (hasExistingNERSALicenceControl.value) {\r\n this.disableControl(noNERSAGenerationLicenceProvidedReasonControl);\r\n } else {\r\n this.enableControl(\r\n noNERSAGenerationLicenceProvidedReasonControl,\r\n [Validators.required],\r\n updateValidity\r\n );\r\n }\r\n }\r\n\r\n private initCheckBoxes(): any {\r\n this.changePropertyOwnerShip(false);\r\n this.changeNersaLicenceControl();\r\n this.changeLeaseControl();\r\n this.changeRezoningControls();\r\n this.changeRezoningResultControl();\r\n this.changePlannedExpansionControls();\r\n this.changeWebEnabledControls();\r\n this.changeIRPControls();\r\n this.changeEIAControls();\r\n this.changeRODControls();\r\n this.changeACSAPermitRequiredControls();\r\n this.changeGeotechnicalStudyRequiredControls();\r\n }\r\n\r\n private addendumUpload(output: any): void {\r\n if (output.value && output.listenerId === 'isAddendumUploaded') {\r\n this.facilityForm.controls.addendum.setValue(output.value);\r\n this.isAddendumUploaded = true;\r\n }\r\n }\r\n\r\n private enableControl(\r\n control: AbstractControl,\r\n validators: ValidatorFn[],\r\n updateValidity: boolean = true\r\n ) {\r\n control.enable();\r\n control.setValidators(validators);\r\n if (updateValidity) {\r\n control.markAsTouched();\r\n control.updateValueAndValidity();\r\n }\r\n }\r\n\r\n private disableControl(\r\n control: AbstractControl,\r\n updateValidity: boolean = true\r\n ): void {\r\n control.disable();\r\n control.clearValidators();\r\n if (updateValidity) {\r\n control.markAsTouched();\r\n control.updateValueAndValidity();\r\n }\r\n }\r\n\r\n private disableValidations() {\r\n if (this.selectedFacility.generatorProject.isMicroScale) {\r\n if (!this.isExisting) {\r\n // planned\r\n this.commonService.disableControl(\r\n this.facilityForm.controls.isIRPRequestSubmitted\r\n );\r\n this.commonService.disableControl(\r\n this.facilityForm.controls.hasExistingNERSALicence\r\n );\r\n this.commonService.disableControl(\r\n this.facilityForm.controls\r\n .noNERSAGenerationLicenceProvidedReason\r\n );\r\n\r\n this.commonService.disableControl(\r\n this.facilityForm.controls.meterDateInstallation\r\n );\r\n this.commonService.disableControl(\r\n this.facilityForm.controls.isCheckMetersInstalled\r\n );\r\n\r\n this.commonService.disableControl(\r\n this.facilityForm.controls.exportGenerationCapacity\r\n );\r\n\r\n this.commonService.disableControl(\r\n this.facilityForm.controls.projectSubmittedIntoReippp\r\n );\r\n\r\n this.commonService.disableControl(\r\n this.facilityForm.controls.nearestSubstationName\r\n );\r\n this.commonService.disableControl(\r\n this.facilityForm.controls.loadCapacityOfSubstation\r\n );\r\n this.commonService.disableControl(\r\n this.facilityForm.controls.budgetConnectionCostReceived\r\n );\r\n this.commonService.disableControl(\r\n this.facilityForm.controls.budgetConnectionUpgradeCost\r\n );\r\n this.commonService.disableControl(\r\n this.facilityForm.controls\r\n .connectionAndUseOfSystemsAgreementInPlace\r\n );\r\n }\r\n\r\n if (this.isExisting) {\r\n this.commonService.disableControl(\r\n this.facilityForm.controls.isRezoningRequired\r\n );\r\n\r\n this.commonService.disableControl(\r\n this.facilityForm.controls.isIRPRequestSubmitted\r\n );\r\n this.commonService.disableControl(\r\n this.facilityForm.controls.hasExistingNERSALicence\r\n );\r\n this.commonService.disableControl(\r\n this.facilityForm.controls\r\n .noNERSAGenerationLicenceProvidedReason\r\n );\r\n\r\n this.commonService.disableControl(\r\n this.facilityForm.controls.isCheckMetersInstalled\r\n );\r\n\r\n this.commonService.disableControl(\r\n this.facilityForm.controls.projectSubmittedIntoReippp\r\n );\r\n\r\n this.commonService.disableControl(\r\n this.facilityForm.controls.nearestSubstationName\r\n );\r\n this.commonService.disableControl(\r\n this.facilityForm.controls.loadCapacityOfSubstation\r\n );\r\n this.commonService.disableControl(\r\n this.facilityForm.controls.budgetConnectionCostReceived\r\n );\r\n this.commonService.disableControl(\r\n this.facilityForm.controls.budgetConnectionUpgradeCost\r\n );\r\n this.commonService.disableControl(\r\n this.facilityForm.controls\r\n .connectionAndUseOfSystemsAgreementInPlace\r\n );\r\n\r\n this.commonService.disableControl(\r\n this.facilityForm.controls.plannedStartDate\r\n );\r\n this.commonService.disableControl(\r\n this.facilityForm.controls.projectProgressStatus\r\n );\r\n this.commonService.disableControl(\r\n this.facilityForm.controls.constructionStartDate\r\n );\r\n this.commonService.disableControl(\r\n this.facilityForm.controls.electricityAndMeterDeptsNotified\r\n );\r\n\r\n this.commonService.disableControl(\r\n this.facilityForm.controls.eiaCompletedLookupId\r\n );\r\n this.commonService.disableControl(\r\n this.facilityForm.controls.rodIssued\r\n );\r\n\r\n this.commonService.disableControl(\r\n this.facilityForm.controls.acsaPermitRequiredLookupId\r\n );\r\n\r\n this.commonService.disableControl(\r\n this.facilityForm.controls.geotechnicalStudyRequiredLookupId\r\n );\r\n\r\n this.commonService.disableControl(\r\n this.facilityForm.controls\r\n .plannedDateOfConnectionApplication\r\n );\r\n this.commonService.disableControl(\r\n this.facilityForm.controls.expectedDateOfGridConnection\r\n );\r\n\r\n this.commonService.disableControl(\r\n this.facilityForm.controls.preferredDebtProvider\r\n );\r\n this.commonService.disableControl(\r\n this.facilityForm.controls.targetDebtEquityRatio\r\n );\r\n this.commonService.disableControl(\r\n this.facilityForm.controls.equityFundingInPlace\r\n );\r\n }\r\n } else {\r\n if (!this.isExisting) {\r\n // planned\r\n\r\n this.commonService.disableControl(\r\n this.facilityForm.controls.isRoofTopBased\r\n );\r\n\r\n this.commonService.disableControl(\r\n this.facilityForm.controls.meterDateInstallation\r\n );\r\n this.commonService.disableControl(\r\n this.facilityForm.controls.isCheckMetersInstalled\r\n );\r\n\r\n this.commonService.disableControl(\r\n this.facilityForm.controls.exportGenerationCapacity\r\n );\r\n\r\n this.commonService.disableControl(\r\n this.facilityForm.controls.plannedStartDate\r\n );\r\n this.commonService.disableControl(\r\n this.facilityForm.controls.projectProgressStatus\r\n );\r\n this.commonService.disableControl(\r\n this.facilityForm.controls.constructionStartDate\r\n );\r\n this.commonService.disableControl(\r\n this.facilityForm.controls.electricityAndMeterDeptsNotified\r\n );\r\n\r\n this.commonService.disableControl(\r\n this.facilityForm.controls.eiaCompletedLookupId\r\n );\r\n this.commonService.disableControl(\r\n this.facilityForm.controls.rodIssued\r\n );\r\n\r\n this.commonService.disableControl(\r\n this.facilityForm.controls.acsaPermitRequiredLookupId\r\n );\r\n\r\n this.commonService.disableControl(\r\n this.facilityForm.controls.geotechnicalStudyRequiredLookupId\r\n );\r\n\r\n this.commonService.disableControl(\r\n this.facilityForm.controls\r\n .plannedDateOfConnectionApplication\r\n );\r\n this.commonService.disableControl(\r\n this.facilityForm.controls.expectedDateOfGridConnection\r\n );\r\n\r\n this.commonService.disableControl(\r\n this.facilityForm.controls.preferredDebtProvider\r\n );\r\n this.commonService.disableControl(\r\n this.facilityForm.controls.targetDebtEquityRatio\r\n );\r\n this.commonService.disableControl(\r\n this.facilityForm.controls.equityFundingInPlace\r\n );\r\n }\r\n\r\n if (this.isExisting) {\r\n this.commonService.disableControl(\r\n this.facilityForm.controls.isRoofTopBased\r\n );\r\n\r\n this.commonService.disableControl(\r\n this.facilityForm.controls.projectSubmittedIntoReippp\r\n );\r\n\r\n this.commonService.disableControl(\r\n this.facilityForm.controls.nearestSubstationName\r\n );\r\n this.commonService.disableControl(\r\n this.facilityForm.controls.loadCapacityOfSubstation\r\n );\r\n this.commonService.disableControl(\r\n this.facilityForm.controls.budgetConnectionCostReceived\r\n );\r\n this.commonService.disableControl(\r\n this.facilityForm.controls.budgetConnectionUpgradeCost\r\n );\r\n this.commonService.disableControl(\r\n this.facilityForm.controls\r\n .connectionAndUseOfSystemsAgreementInPlace\r\n );\r\n\r\n this.commonService.disableControl(\r\n this.facilityForm.controls.plannedStartDate\r\n );\r\n this.commonService.disableControl(\r\n this.facilityForm.controls.projectProgressStatus\r\n );\r\n this.commonService.disableControl(\r\n this.facilityForm.controls.constructionStartDate\r\n );\r\n this.commonService.disableControl(\r\n this.facilityForm.controls.electricityAndMeterDeptsNotified\r\n );\r\n\r\n this.commonService.disableControl(\r\n this.facilityForm.controls.eiaCompletedLookupId\r\n );\r\n this.commonService.disableControl(\r\n this.facilityForm.controls.rodIssued\r\n );\r\n\r\n this.commonService.disableControl(\r\n this.facilityForm.controls.acsaPermitRequiredLookupId\r\n );\r\n\r\n this.commonService.disableControl(\r\n this.facilityForm.controls.geotechnicalStudyRequiredLookupId\r\n );\r\n\r\n this.commonService.disableControl(\r\n this.facilityForm.controls\r\n .plannedDateOfConnectionApplication\r\n );\r\n this.commonService.disableControl(\r\n this.facilityForm.controls.expectedDateOfGridConnection\r\n );\r\n\r\n this.commonService.disableControl(\r\n this.facilityForm.controls.preferredDebtProvider\r\n );\r\n this.commonService.disableControl(\r\n this.facilityForm.controls.targetDebtEquityRatio\r\n );\r\n this.commonService.disableControl(\r\n this.facilityForm.controls.equityFundingInPlace\r\n );\r\n }\r\n }\r\n }\r\n\r\n private enableAllValidations() {\r\n this.commonService.enableControl(\r\n this.facilityForm.controls.isIRPRequestSubmitted,\r\n [Validators.required]\r\n );\r\n this.commonService.enableControl(\r\n this.facilityForm.controls.hasExistingNERSALicence,\r\n [Validators.required]\r\n );\r\n this.commonService.enableControl(\r\n this.facilityForm.controls.noNERSAGenerationLicenceProvidedReason,\r\n [Validators.required]\r\n );\r\n this.commonService.enableControl(\r\n this.facilityForm.controls.meterDateInstallation,\r\n [Validators.required]\r\n );\r\n this.commonService.enableControl(\r\n this.facilityForm.controls.isCheckMetersInstalled,\r\n [Validators.required]\r\n );\r\n this.commonService.enableControl(\r\n this.facilityForm.controls.exportGenerationCapacity,\r\n [Validators.required]\r\n );\r\n this.commonService.enableControl(\r\n this.facilityForm.controls.projectSubmittedIntoReippp,\r\n [Validators.required]\r\n );\r\n this.commonService.enableControl(\r\n this.facilityForm.controls.nearestSubstationName,\r\n [Validators.required]\r\n );\r\n this.commonService.enableControl(\r\n this.facilityForm.controls.loadCapacityOfSubstation,\r\n [Validators.required]\r\n );\r\n this.commonService.enableControl(\r\n this.facilityForm.controls.budgetConnectionCostReceived,\r\n [Validators.required]\r\n );\r\n this.commonService.enableControl(\r\n this.facilityForm.controls.budgetConnectionUpgradeCost,\r\n []\r\n );\r\n this.commonService.enableControl(\r\n this.facilityForm.controls\r\n .connectionAndUseOfSystemsAgreementInPlace,\r\n [Validators.required]\r\n );\r\n this.commonService.enableControl(\r\n this.facilityForm.controls.isRezoningRequired,\r\n [Validators.required]\r\n );\r\n this.commonService.enableControl(\r\n this.facilityForm.controls.plannedStartDate,\r\n [Validators.required]\r\n );\r\n this.commonService.enableControl(\r\n this.facilityForm.controls.projectProgressStatus,\r\n [Validators.required]\r\n );\r\n this.commonService.enableControl(\r\n this.facilityForm.controls.constructionStartDate,\r\n [Validators.required]\r\n );\r\n this.commonService.enableControl(\r\n this.facilityForm.controls.electricityAndMeterDeptsNotified,\r\n [Validators.required]\r\n );\r\n this.commonService.enableControl(\r\n this.facilityForm.controls.eiaCompletedLookupId,\r\n [Validators.required]\r\n );\r\n this.commonService.enableControl(this.facilityForm.controls.rodIssued, [\r\n Validators.required,\r\n ]);\r\n this.commonService.enableControl(\r\n this.facilityForm.controls.acsaPermitRequiredLookupId,\r\n [Validators.required]\r\n );\r\n this.commonService.enableControl(\r\n this.facilityForm.controls.geotechnicalStudyRequiredLookupId,\r\n [Validators.required]\r\n );\r\n this.commonService.enableControl(\r\n this.facilityForm.controls.plannedDateOfConnectionApplication,\r\n [Validators.required]\r\n );\r\n this.commonService.enableControl(\r\n this.facilityForm.controls.expectedDateOfGridConnection,\r\n [Validators.required]\r\n );\r\n this.commonService.enableControl(\r\n this.facilityForm.controls.preferredDebtProvider,\r\n [Validators.required]\r\n );\r\n this.commonService.enableControl(\r\n this.facilityForm.controls.targetDebtEquityRatio,\r\n [Validators.required]\r\n );\r\n this.commonService.enableControl(\r\n this.facilityForm.controls.equityFundingInPlace,\r\n [Validators.required]\r\n );\r\n this.commonService.enableControl(\r\n this.facilityForm.controls.isRoofTopBased,\r\n [Validators.required]\r\n );\r\n }\r\n\r\n private LoadBaseGeneratorProjectFacilityList(facilityId: number) {\r\n this.generatorMaintenanceService\r\n .getTradingGeneratorProjectFacilitiesByDistributorId(\r\n facilityId,\r\n this.distributorId\r\n )\r\n .subscribe(\r\n (result) => {\r\n this.baseGeneratorProjectFacilityList = result;\r\n },\r\n (error) => {\r\n this.loading = false;\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n }\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { CustomValidators } from 'ng4-validators';\r\nimport { CommonService } from '../../../common/common-service';\r\nimport { ConsumerCompanyPremisesService } from '../consumer-company-premises.service';\r\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { ComponentTriggersService } from '../../../common/component-triggers.service';\r\nimport { EntityLookup } from '../../../model/entity-lookup.model';\r\nimport { isNullOrUndefined } from 'util';\r\n\r\nimport { ConsumerCompanyPremises } from '../../../model/consumer-company-premises.model';\r\nimport { Router } from '@angular/router';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { ConsumerCompanyService } from '../../consumer-company/consumer-company.service';\r\nimport { DistributorService } from '../../distributor/distributor.service';\r\n\r\n@Component({\r\n selector: 'consumer-company-premises-details',\r\n templateUrl: './consumer-company-premises-details.component.html',\r\n styleUrls: [\r\n '../../form.styles.scss',\r\n './consumer-company-premises-details.component.scss',\r\n ],\r\n})\r\nexport class ConsumerCompanyPremisesDetailsComponent implements OnInit {\r\n public consumerCompanyPremisesForm: FormGroup;\r\n public addressForm: FormGroup;\r\n @Input('consumerCompanyPremisesId')\r\n public consumerCompanyPremisesId: number;\r\n @Input('consumerCompanyName')\r\n public consumerCompanyName: number;\r\n @Input('isReadOnlyMode')\r\n public isReadOnlyMode = false;\r\n @Input('isInApplicationMode')\r\n public isInApplicationMode: boolean = false;\r\n public loading = false;\r\n public saving = false;\r\n public errorMessage = '';\r\n public businessActivities: EntityLookup[];\r\n public tariffs: EntityLookup[];\r\n public distributors: EntityLookup[];\r\n public provinces: EntityLookup[];\r\n public consumerPremisesStatuses: EntityLookup[];\r\n public baseConsumerCompanyPremisesList: ConsumerCompanyPremises[];\r\n public isAddendumRequired: boolean = false;\r\n public isAddendumUploaded: boolean = false;\r\n public consumerCompanyPremises: ConsumerCompanyPremises;\r\n public updatingProgressStatus: boolean = false;\r\n private savedDetails: boolean = false;\r\n\r\n constructor(\r\n private componentTriggerService: ComponentTriggersService,\r\n private toastr: ToastrService,\r\n public commonService: CommonService,\r\n public distributorService: DistributorService,\r\n public consumerCompanyService: ConsumerCompanyService,\r\n private consumerCompanyPremisesService: ConsumerCompanyPremisesService,\r\n private router: Router\r\n ) {}\r\n\r\n public ngOnInit() {\r\n this.loading = true;\r\n this.consumerCompanyPremisesService\r\n .getConsumerCompanyPremises(this.consumerCompanyPremisesId)\r\n .subscribe(\r\n (consumerCompanyPremises: ConsumerCompanyPremises) => {\r\n this.consumerCompanyPremises = consumerCompanyPremises;\r\n this.initializeForm();\r\n this.handleFormReadOnlyMode();\r\n this.commonService\r\n .getEntityLookups([\r\n 'ConsumerBusinessActivity',\r\n 'Distributor',\r\n 'Province',\r\n 'ConsumerPremisesStatus',\r\n ])\r\n .subscribe(\r\n (response) => {\r\n this.businessActivities =\r\n response.entityLookupResultList[\r\n 'consumerBusinessActivity'\r\n ];\r\n this.distributors =\r\n response.entityLookupResultList[\r\n 'distributor'\r\n ];\r\n this.provinces =\r\n response.entityLookupResultList['province'];\r\n this.consumerPremisesStatuses =\r\n response.entityLookupResultList[\r\n 'consumerPremisesStatus'\r\n ];\r\n this.consumerCompanyPremisesService\r\n .getConsumerCompanyPremisesByDistributorId(\r\n this.consumerCompanyPremises\r\n .distributorId\r\n )\r\n .subscribe(\r\n (result) => {\r\n this.loading = false;\r\n this.baseConsumerCompanyPremisesList = result;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n this.toastr.error(\r\n this.errorMessage\r\n );\r\n }\r\n );\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n this.toastr.error(this.errorMessage);\r\n }\r\n );\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n this.toastr.error(this.errorMessage);\r\n }\r\n );\r\n }\r\n\r\n public onDistributorChange() {\r\n const selectedDistributorId = this.consumerCompanyPremisesForm.controls\r\n .distributorId.value;\r\n if (selectedDistributorId != null) {\r\n this.distributorService\r\n .getDistributorTariffsByDistributorId(selectedDistributorId)\r\n .subscribe(\r\n (tariffs) => {\r\n this.tariffs = tariffs;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.toastr.error(this.errorMessage);\r\n }\r\n );\r\n }\r\n }\r\n\r\n public onSubmit() {\r\n this.errorMessage = '';\r\n this.commonService.validateAllFormFields(\r\n this.consumerCompanyPremisesForm\r\n );\r\n this.componentTriggerService.triggerValidationMessages.next();\r\n if (this.consumerCompanyPremisesForm.valid) {\r\n if (this.isAddendumRequired && this.isAddendumUploaded) {\r\n if (\r\n !confirm(\r\n 'Are you sure that you would like to update the sensitive field(s)'\r\n )\r\n ) {\r\n return;\r\n }\r\n }\r\n this.loading = true;\r\n this.consumerCompanyPremisesService\r\n .updateConsumerCompanyPremises(\r\n this.consumerCompanyPremisesForm.value\r\n )\r\n .subscribe(\r\n () => {\r\n this.toastr.success('Premises successfully updated');\r\n if (!this.isInApplicationMode) {\r\n this.onBack();\r\n } else {\r\n this.savedDetails = true;\r\n }\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n this.toastr.error(this.errorMessage);\r\n }\r\n );\r\n }\r\n }\r\n\r\n public electricityAccountsDocumentUploaded(output: any): void {\r\n if (output.value) {\r\n this.consumerCompanyPremisesForm.controls.electricityAccountsDocument.setValue(\r\n output.value\r\n );\r\n }\r\n }\r\n\r\n public sendPremisesForEvaluation() {\r\n this.updatingProgressStatus = true;\r\n this.consumerCompanyService\r\n .advancePremisesProgressStatus(\r\n this.consumerCompanyPremises.premisesProgressStatus.value,\r\n this.consumerCompanyPremises.consumerCompanyPremisesId\r\n )\r\n .subscribe(\r\n (premisesProgressStatus: EntityLookup) => {\r\n this.toastr.success('Premise Sent To Evaluation');\r\n this.consumerCompanyPremises.premisesProgressStatus = premisesProgressStatus;\r\n this.updatingProgressStatus = false;\r\n this.onBack();\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.toastr.error(this.errorMessage);\r\n this.updatingProgressStatus = false;\r\n }\r\n );\r\n }\r\n\r\n public onBack() {\r\n if (this.isInApplicationMode) {\r\n this.router.navigate(['/consumers', 'application'], {\r\n queryParams: {\r\n tab: 'premises',\r\n companyName: this.consumerCompanyName,\r\n },\r\n });\r\n } else {\r\n this.router.navigate(\r\n [\r\n 'consumer-company',\r\n this.consumerCompanyPremises.consumerCompanyId,\r\n 'edit',\r\n ],\r\n {\r\n queryParams: {\r\n tab: 'premises',\r\n companyName: this.consumerCompanyName,\r\n },\r\n }\r\n );\r\n }\r\n }\r\n\r\n public shouldShowSendForEvalButton() {\r\n return (\r\n this.isInApplicationMode &&\r\n this.consumerCompanyPremises.premisesProgressStatus.value ===\r\n 'New Application' &&\r\n (this.savedDetails ||\r\n (this.consumerCompanyPremisesForm.valid &&\r\n !this.consumerCompanyPremisesForm.dirty))\r\n );\r\n }\r\n\r\n public formControlValueChanged(event: any) {\r\n if (!this.isInApplicationMode) {\r\n this.isAddendumRequired = false;\r\n if (\r\n event.target.attributes.formcontrolname.value ===\r\n 'minimumContractedCapacity' &&\r\n +this.consumerCompanyPremisesForm.get(\r\n 'minimumContractedCapacity'\r\n ).value !==\r\n this.consumerCompanyPremises.minimumContractedCapacity\r\n ) {\r\n this.isAddendumRequired = true;\r\n } else if (\r\n event.target.attributes.formControlName.value ===\r\n 'identifier' &&\r\n !this.consumerCompanyPremisesForm\r\n .get('identifier')\r\n .value.toString()\r\n .toUpperCase()\r\n .startsWith('CP_')\r\n ) {\r\n const identifier = this.consumerCompanyPremisesForm.get(\r\n 'identifier'\r\n ).value;\r\n this.consumerCompanyPremisesForm\r\n .get('identifier')\r\n .patchValue('CP_' + identifier);\r\n }\r\n }\r\n }\r\n\r\n public successfulUploadAddendum(event: any) {\r\n if (event.value && event.listenerId === 'isAddendumUploaded') {\r\n this.consumerCompanyPremisesForm\r\n .get('addendumDocument')\r\n .setValue(event.value);\r\n this.isAddendumUploaded = true;\r\n }\r\n }\r\n\r\n public onExcludeFromRunChange() {\r\n if (this.consumerCompanyPremisesForm.get('excludeFromRun').value) {\r\n this.commonService.enableControl(\r\n this.consumerCompanyPremisesForm.get(\r\n 'reasonForExcludingFromRun'\r\n ),\r\n [Validators.required, Validators.maxLength(500)]\r\n );\r\n } else {\r\n this.commonService.disableControl(\r\n this.consumerCompanyPremisesForm.get(\r\n 'reasonForExcludingFromRun'\r\n )\r\n );\r\n }\r\n }\r\n\r\n private initializeForm() {\r\n this.initializeAddressForm();\r\n this.consumerCompanyPremisesForm = new FormGroup({\r\n consumerCompanyPremisesId: new FormControl(\r\n this.consumerCompanyPremises.consumerCompanyPremisesId\r\n ),\r\n premisesName: new FormControl(\r\n this.consumerCompanyPremises.premisesName,\r\n [Validators.required, Validators.maxLength(50)]\r\n ),\r\n identifier: new FormControl(\r\n {\r\n value: this.consumerCompanyPremises.identifier,\r\n disabled: this.isInApplicationMode,\r\n },\r\n [Validators.required, Validators.maxLength(50)]\r\n ),\r\n minimumContractedCapacity: new FormControl(\r\n this.consumerCompanyPremises.minimumContractedCapacity,\r\n [\r\n Validators.required,\r\n Validators.min(0),\r\n Validators.max(9999999999.99999),\r\n ]\r\n ),\r\n monthlyKwh: new FormControl(\r\n {\r\n value: this.consumerCompanyPremises.monthlyKwh,\r\n disabled: this.isInApplicationMode,\r\n },\r\n [\r\n Validators.required,\r\n Validators.min(0),\r\n Validators.max(9999999999.99999),\r\n ]\r\n ),\r\n vatNumber: new FormControl(this.consumerCompanyPremises.vatNumber, [\r\n Validators.minLength(10),\r\n ]),\r\n excludeFromRun: new FormControl(\r\n isNullOrUndefined(this.consumerCompanyPremises.excludeFromRun)\r\n ? false\r\n : this.consumerCompanyPremises.excludeFromRun\r\n ),\r\n smartMeterInstalled: new FormControl(\r\n isNullOrUndefined(\r\n this.consumerCompanyPremises.smartMeterInstalled\r\n )\r\n ? false\r\n : this.consumerCompanyPremises.smartMeterInstalled\r\n ),\r\n reasonForExcludingFromRun: new FormControl(\r\n this.consumerCompanyPremises.reasonForExcludingFromRun,\r\n [Validators.maxLength(500)]\r\n ),\r\n excludeFromForecastRun: new FormControl(\r\n isNullOrUndefined(\r\n this.consumerCompanyPremises.excludeFromForecastRun\r\n )\r\n ? false\r\n : this.consumerCompanyPremises.excludeFromForecastRun\r\n ),\r\n forecastConsumptionKwh: new FormControl(\r\n this.consumerCompanyPremises.forecastConsumptionKwh,\r\n [\r\n Validators.required,\r\n Validators.min(0),\r\n Validators.max(9999999999.99999),\r\n ]\r\n ),\r\n baseConsumerCompanyPremisesId: new FormControl(\r\n isNullOrUndefined(\r\n this.consumerCompanyPremises.baseConsumerCompanyPremisesId\r\n )\r\n ? null\r\n : this.consumerCompanyPremises.baseConsumerCompanyPremisesId\r\n ),\r\n poNumber: new FormControl(this.consumerCompanyPremises.poNumber, [\r\n Validators.pattern('^[0-9]*$'),\r\n ]),\r\n consumerPremisesStatusLookupId: new FormControl(\r\n isNullOrUndefined(\r\n this.consumerCompanyPremises.consumerPremisesStatusLookupId\r\n )\r\n ? null\r\n : this.consumerCompanyPremises\r\n .consumerPremisesStatusLookupId\r\n ),\r\n sapNumber: new FormControl({\r\n value: this.consumerCompanyPremises.sapNumber,\r\n disabled: true,\r\n }),\r\n referenceNumber: new FormControl({\r\n value: this.consumerCompanyPremises.referenceNumber,\r\n disabled: true,\r\n }),\r\n meterNumber: new FormControl(\r\n this.consumerCompanyPremises.meterNumber,\r\n [Validators.required]\r\n ),\r\n accountNumber: new FormControl(\r\n this.consumerCompanyPremises.accountNumber,\r\n [Validators.required, Validators.maxLength(50)]\r\n ),\r\n businessActivityLookupId: new FormControl(\r\n this.consumerCompanyPremises.businessActivityLookupId,\r\n [Validators.required]\r\n ),\r\n tariffId: new FormControl({\r\n value: this.consumerCompanyPremises.tariffId,\r\n disabled: !this.isInApplicationMode,\r\n }),\r\n distributorId: new FormControl(\r\n {\r\n value: this.consumerCompanyPremises.distributorId,\r\n disabled: !this.isInApplicationMode,\r\n },\r\n [Validators.required]\r\n ),\r\n addressId: new FormControl(this.consumerCompanyPremises.addressId),\r\n address: this.addressForm,\r\n premisesProgressStatus: new FormControl(\r\n this.consumerCompanyPremises.premisesProgressStatus\r\n ),\r\n isInApplicationMode: new FormControl(this.isInApplicationMode),\r\n addendumDocument: new FormControl(null),\r\n electricityAccountsDocument: new FormControl(\r\n isNullOrUndefined(this.consumerCompanyPremises) ||\r\n isNullOrUndefined(\r\n this.consumerCompanyPremises.electricityAccounts\r\n )\r\n ? null\r\n : this.consumerCompanyPremises.electricityAccounts\r\n ),\r\n latestAllocationRunInvolvedInConsumption: new FormControl({\r\n value: this.consumerCompanyPremises\r\n .latestAllocationRunInvolvedInConsumption,\r\n disabled: !isNullOrUndefined(\r\n this.consumerCompanyPremises\r\n .latestAllocationRunInvolvedInConsumption\r\n ),\r\n }),\r\n premisesName2: new FormControl(\r\n this.consumerCompanyPremises.premisesName2,\r\n [Validators.maxLength(100)]\r\n ),\r\n premisesName3: new FormControl(\r\n this.consumerCompanyPremises.premisesName3,\r\n [Validators.maxLength(100)]\r\n ),\r\n });\r\n if (\r\n !isNullOrUndefined(\r\n this.consumerCompanyPremises\r\n .latestAllocationRunInvolvedInConsumption\r\n )\r\n ) {\r\n this.commonService.disableControl(\r\n this.consumerCompanyPremisesForm.controls.monthlyKwh,\r\n true\r\n );\r\n }\r\n this.onExcludeFromRunChange();\r\n this.onDistributorChange();\r\n }\r\n\r\n private initializeAddressForm() {\r\n const address = this.consumerCompanyPremises.address;\r\n this.addressForm = new FormGroup({\r\n addressId: new FormControl(\r\n isNullOrUndefined(address) ? 0 : address.addressId\r\n ),\r\n addressLine1: new FormControl(\r\n isNullOrUndefined(address) ? '' : address.addressLine1,\r\n [Validators.required, Validators.maxLength(100)]\r\n ),\r\n addressLine2: new FormControl(\r\n isNullOrUndefined(address) ? '' : address.addressLine2,\r\n [Validators.required, Validators.maxLength(100)]\r\n ),\r\n addressLine3: new FormControl(\r\n isNullOrUndefined(address) ? '' : address.addressLine3,\r\n [Validators.maxLength(100)]\r\n ),\r\n provinceLookupId: new FormControl(\r\n isNullOrUndefined(address) ? null : address.provinceLookupId,\r\n [Validators.required]\r\n ),\r\n city: new FormControl(\r\n isNullOrUndefined(address) ? '' : address.city,\r\n [Validators.required, Validators.maxLength(50)]\r\n ),\r\n postalCode: new FormControl(\r\n isNullOrUndefined(address) ? '' : address.postalCode,\r\n [\r\n Validators.required,\r\n Validators.maxLength(10),\r\n CustomValidators.digits,\r\n ]\r\n ),\r\n isRural: new FormControl(\r\n isNullOrUndefined(address) ? false : address.isRural\r\n ),\r\n });\r\n }\r\n\r\n private handleFormReadOnlyMode() {\r\n if (this.isReadOnlyMode) {\r\n this.consumerCompanyPremisesForm.disable();\r\n this.addressForm.disable();\r\n }\r\n }\r\n}\r\n","import { OnInit, Input, Component } from '@angular/core';\r\nimport { EntityLookup } from '../../model/entity-lookup.model';\r\nimport { CommonService } from '../../common/common-service';\r\nimport { FormGroup, FormControl } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'dropdown',\r\n templateUrl: './dropdown.component.html',\r\n styleUrls: ['../../component/form.styles.scss'],\r\n})\r\nexport class DropdownComponent implements OnInit {\r\n @Input('entityLookupName')\r\n public entityLookupName: string;\r\n @Input('displayName')\r\n public displayName: string;\r\n @Input('controlName')\r\n public controlName: string;\r\n @Input('containerForm')\r\n public containerForm: FormGroup;\r\n @Input('onChange')\r\n public onChange: any;\r\n @Input('caller')\r\n public caller: any;\r\n public regex = /[0-9]+: /g;\r\n public entityLookupList: EntityLookup[];\r\n public errorMessage = '';\r\n\r\n constructor(private commonService: CommonService) {}\r\n\r\n public ngOnInit(): void {\r\n this.commonService.getEntityLookups([this.entityLookupName]).subscribe(\r\n (data) => {\r\n this.entityLookupList =\r\n data.entityLookupResultList[this.entityLookupName];\r\n const control = new FormControl();\r\n this.containerForm.addControl(this.controlName, control);\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n }\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'generation-data',\r\n templateUrl: './generation-data.component.html',\r\n styleUrls: [\r\n '../../../../form.styles.scss',\r\n './generation-data.component.scss',\r\n ],\r\n})\r\nexport class GenerationDataComponent implements OnInit {\r\n @Input('formControlGroup')\r\n public formControlGroup: FormGroup;\r\n @Input('description')\r\n public description: string;\r\n @Input('showTotalGeneration')\r\n public showTotalGeneration: boolean = false;\r\n private totalGeneration: number = null;\r\n\r\n public ngOnInit(): void {\r\n if (this.showTotalGeneration) {\r\n for (const field of Object.keys(this.formControlGroup.controls)) {\r\n const control = this.formControlGroup.get(field);\r\n this.totalGeneration += control.value as number;\r\n }\r\n }\r\n }\r\n}\r\n","import { Component, Input, OnInit, TemplateRef } from '@angular/core';\r\nimport { ActivatedRoute, Params } from '@angular/router';\r\nimport { ConsumerCompanyPremisesService } from '../consumer-company-premises.service';\r\nimport { CommonService } from '../../../common/common-service';\r\nimport { ConsumerTariff } from '../../../model/consumer-tariff.model';\r\nimport { EntityLookup } from '../../../model/entity-lookup.model';\r\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { BsModalRef } from 'ngx-bootstrap';\r\nimport { BsModalService } from 'ngx-bootstrap/modal';\r\nimport { TariffService } from '../../tariff/tariff.service';\r\n\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { Tariff } from '../../../model/tariff/tariff.model';\r\nimport { DistributorService } from '../../distributor/distributor.service';\r\n\r\n@Component({\r\n selector: 'consumer-company-premises-tariff-list',\r\n templateUrl: './consumer-company-premises-tariff-list.component.html',\r\n styleUrls: [\r\n '../../form.styles.scss',\r\n './consumer-company-premises-tariff-list.component.scss',\r\n ],\r\n})\r\nexport class ConsumerCompanyPremisesTariffListComponent implements OnInit {\r\n @Input('consumerCompanyPremisesId')\r\n public consumerCompanyPremisesId: number;\r\n @Input('isReadOnlyMode')\r\n public isReadOnlyMode = false;\r\n public tariffs: any[];\r\n public tariff: Tariff;\r\n public loading = false;\r\n public rows: any[];\r\n public errorMessage: string = '';\r\n public submitting: boolean;\r\n public newTariffForm: FormGroup;\r\n public consumerTariffId: number;\r\n private modalRef: BsModalRef;\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n private consumerCompanyPremisesService: ConsumerCompanyPremisesService,\r\n private modalService: BsModalService,\r\n private toastr: ToastrService,\r\n private tariffService: TariffService,\r\n public commonService: CommonService,\r\n public distributorService: DistributorService\r\n ) {}\r\n\r\n public ngOnInit() {\r\n this.loading = true;\r\n if (this.isReadOnlyMode) {\r\n this.newTariffForm.disable();\r\n }\r\n\r\n this.route.params.subscribe(\r\n (routeParams: Params) => {\r\n this.consumerCompanyPremisesId =\r\n routeParams.consumerCompanyPremisesId;\r\n this.consumerCompanyPremisesService\r\n .getConsumerCompanyPremisesTariffs(\r\n this.consumerCompanyPremisesId\r\n )\r\n .subscribe(\r\n (result) => {\r\n this.rows = result;\r\n this.distributorService\r\n .getDistributorTariffsFromConsumer(\r\n this.consumerCompanyPremisesId\r\n )\r\n .subscribe(\r\n (response) => {\r\n this.tariffs = response;\r\n this.initNewTariffForm();\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n }\r\n\r\n public onNewTariffAdd(template: TemplateRef): void {\r\n this.errorMessage = '';\r\n this.newTariffForm.controls.tariffId.setValue(null);\r\n this.newTariffForm.controls.effectiveDateTime.setValue('');\r\n this.newTariffForm.controls.consumerTariffId.setValue(0);\r\n this.modalRef = this.modalService.show(template);\r\n this.initNewTariffForm();\r\n }\r\n public getRowClass(value: any): string {\r\n return value.isActive ? ' active ' : ' ';\r\n }\r\n\r\n public onTariffSelect() {\r\n this.tariffService\r\n .getTariff(this.newTariffForm.controls.tariffId.value)\r\n .subscribe(\r\n (tariff) => {\r\n this.tariff = tariff;\r\n this.newTariffForm.controls.peakDiscount.setValue(\r\n tariff.peakDiscount\r\n );\r\n this.newTariffForm.controls.offPeakDiscount.setValue(\r\n tariff.offPeakDiscount\r\n );\r\n this.newTariffForm.controls.standardDiscount.setValue(\r\n tariff.standardDiscount\r\n );\r\n },\r\n (error) => {\r\n this.loading = false;\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n }\r\n\r\n public onSelect(event: any, template: TemplateRef): void {\r\n if (this.loading === false) {\r\n this.loading = true;\r\n this.errorMessage = '';\r\n this.consumerTariffId = event.selected[0].consumerTariffId;\r\n this.consumerCompanyPremisesService\r\n .getConsumerCompanyPremisesTariff(this.consumerTariffId)\r\n .subscribe(\r\n (result) => {\r\n this.initTariffForm(result);\r\n this.loading = false;\r\n this.modalRef = this.modalService.show(template);\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n }\r\n public onPopupSubmit() {\r\n this.commonService.validateAllFormFields(this.newTariffForm);\r\n if (this.newTariffForm.valid) {\r\n this.submitting = true;\r\n this.modalRef.hide();\r\n if (\r\n this.newTariffForm.value &&\r\n this.newTariffForm.value.consumerTariffId > 0\r\n ) {\r\n this.consumerCompanyPremisesService\r\n .updateConsumerTariffs(this.newTariffForm.value)\r\n .subscribe(\r\n () => {\r\n this.submitting = false;\r\n this.loading = true;\r\n this.consumerCompanyPremisesService\r\n .getConsumerCompanyPremisesTariffs(\r\n this.consumerCompanyPremisesId\r\n )\r\n .subscribe(\r\n (result) => {\r\n this.rows = result;\r\n this.loading = false;\r\n this.toastr.success(\r\n 'Successfully updated consumer tariff'\r\n );\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n this.toastr.error(this.errorMessage);\r\n }\r\n );\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.submitting = false;\r\n this.toastr.error(this.errorMessage);\r\n }\r\n );\r\n } else {\r\n this.consumerCompanyPremisesService\r\n .addConsumerCompanyPremisesTariff(this.newTariffForm.value)\r\n .subscribe(\r\n () => {\r\n this.submitting = false;\r\n this.loading = true;\r\n this.consumerCompanyPremisesService\r\n .getConsumerCompanyPremisesTariffs(\r\n this.consumerCompanyPremisesId\r\n )\r\n .subscribe(\r\n (result) => {\r\n this.rows = result;\r\n this.loading = false;\r\n this.toastr.success(\r\n 'Successfully added new consumer tariff'\r\n );\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n this.toastr.error(this.errorMessage);\r\n }\r\n );\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.submitting = false;\r\n this.toastr.error(this.errorMessage);\r\n }\r\n );\r\n }\r\n }\r\n }\r\n\r\n private initTariffForm(tariff: ConsumerTariff): void {\r\n this.newTariffForm = new FormGroup({\r\n tariffId: new FormControl(tariff.tariffId),\r\n peakDiscount: new FormControl(tariff.peakDiscount),\r\n offPeakDiscount: new FormControl(tariff.offPeakDiscount),\r\n standardDiscount: new FormControl(tariff.standardDiscount),\r\n effectiveDateTime: new FormControl(tariff.effectiveDateTime),\r\n isOverriding: new FormControl(tariff.isOverriding),\r\n consumerTariffId: new FormControl(tariff.consumerTariffId),\r\n consumerCompanyPremisesId: new FormControl(\r\n tariff.consumerCompanyPremisesId\r\n ),\r\n });\r\n if (this.isReadOnlyMode) {\r\n this.newTariffForm.disable();\r\n }\r\n }\r\n\r\n private initNewTariffForm() {\r\n this.newTariffForm = new FormGroup({\r\n consumerCompanyPremisesId: new FormControl(\r\n this.consumerCompanyPremisesId,\r\n [Validators.required]\r\n ),\r\n tariffId: new FormControl(0, [Validators.required]),\r\n peakDiscount: new FormControl(0, [Validators.required]),\r\n offPeakDiscount: new FormControl(0, [Validators.required]),\r\n standardDiscount: new FormControl(0, [Validators.required]),\r\n effectiveDateTime: new FormControl('', [Validators.required]),\r\n isOverriding: new FormControl(false, [Validators.required]),\r\n consumerTariffId: new FormControl(0, [Validators.required]),\r\n });\r\n }\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { BsModalService } from 'ngx-bootstrap/modal';\r\nimport { AllocationRunService } from '../../allocation-run.service';\r\nimport { CommonService } from '../../../../../common/common-service';\r\nimport { AllocationRunSummary } from '../../../../../model/allocation-run/allocation-run-summary.model';\r\nimport { ComponentTriggersService } from '../../../../../common/component-triggers.service';\r\n\r\n@Component({\r\n selector: 'allocation-run-summary-blocks',\r\n templateUrl: './allocation-run-summary-blocks.component.html',\r\n styleUrls: [\r\n '../../../../form.styles.scss',\r\n './allocation-run-summary-blocks.component.scss',\r\n ],\r\n})\r\nexport class AllocationRunSummaryBlocksComponent implements OnInit {\r\n @Input('allocationRunId')\r\n public allocationRunId: number;\r\n @Input('isReadOnlyMode')\r\n public isReadOnlyMode = false;\r\n public errorMessage = '';\r\n public allocationRunSummary: AllocationRunSummary;\r\n public loading = false;\r\n\r\n constructor(\r\n private router: Router,\r\n private modalService: BsModalService,\r\n private allocationRunService: AllocationRunService,\r\n public commonService: CommonService,\r\n public componentTriggersService: ComponentTriggersService\r\n ) {}\r\n\r\n public ngOnInit() {\r\n this.initialize();\r\n }\r\n\r\n public toGeneratorSummary() {\r\n this.router.navigate(\r\n [\r\n 'allocation',\r\n this.allocationRunSummary.allocationRunId,\r\n 'summary',\r\n 'generator',\r\n ],\r\n {\r\n queryParams: {\r\n startDate: this.allocationRunSummary.startDateTime,\r\n runDate: this.allocationRunSummary.createdDateTime,\r\n },\r\n }\r\n );\r\n }\r\n\r\n public toConsumerSummary() {\r\n this.router.navigate(\r\n [\r\n 'allocation',\r\n this.allocationRunSummary.allocationRunId,\r\n 'summary',\r\n 'consumer',\r\n ],\r\n {\r\n queryParams: {\r\n startDate: this.allocationRunSummary.startDateTime,\r\n runDate: this.allocationRunSummary.createdDateTime,\r\n },\r\n }\r\n );\r\n }\r\n\r\n public onPrepaidRevenueClick(): void {\r\n this.componentTriggersService.triggerPrepaidRevenueComponent.next(\r\n this.allocationRunSummary.totalPrepaidPower\r\n );\r\n }\r\n\r\n private initialize() {\r\n this.loading = true;\r\n this.allocationRunService\r\n .getAllocationRunSummary(this.allocationRunId)\r\n .subscribe(\r\n (allocationRunSummary: AllocationRunSummary) => {\r\n this.allocationRunSummary = allocationRunSummary;\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n}\r\n","import { Component, Input } from '@angular/core';\r\nimport { saveAs as importedSaveAs } from 'file-saver';\r\nimport { AllocationRunService } from '../../allocation-run.service';\r\n\r\nimport { CommonService } from '../../../../../common/common-service';\r\nimport { ToastrService } from 'ngx-toastr';\r\n\r\n@Component({\r\n selector: 'allocation-export',\r\n templateUrl: './allocation-export.component.html',\r\n styleUrls: ['./allocation-export.component.scss'],\r\n})\r\nexport class AllocationExportComponent {\r\n @Input('allocationRunId')\r\n public allocationRunId: number;\r\n @Input('startdate')\r\n public startdate: Date;\r\n\r\n public errorMessage = '';\r\n public processingFullAllocation = false;\r\n public processingContourAllocation = false;\r\n public processingSummarizedAllocation = false;\r\n\r\n constructor(\r\n private allocationRunService: AllocationRunService,\r\n private toastr: ToastrService,\r\n public commonService: CommonService\r\n ) {}\r\n\r\n public exportFullAllocation(): void {\r\n this.processingFullAllocation = true;\r\n this.toastr.info('Processing full allocation results');\r\n this.allocationRunService\r\n .getExcelExport(this.allocationRunId)\r\n .subscribe(\r\n (blob) => {\r\n importedSaveAs(blob, 'AllocationRunExport.csv');\r\n this.processingFullAllocation = false;\r\n this.toastr.success(\r\n 'Full allocation results successfully downloaded'\r\n );\r\n },\r\n () => {\r\n this.errorMessage = this.commonService.handleDocumentErrorMessage(\r\n 'allocation run export'\r\n );\r\n this.toastr.error(this.errorMessage);\r\n this.processingFullAllocation = false;\r\n }\r\n );\r\n }\r\n\r\n public exportContourAllocation(): void {\r\n this.processingContourAllocation = true;\r\n this.toastr.info('Processing Phase 1 Allocation Snapshot Results');\r\n this.allocationRunService\r\n .getExcelSnapshotExport(this.allocationRunId)\r\n .subscribe(\r\n (blob) => {\r\n importedSaveAs(blob, 'AllocationRunSnapshotExport.csv');\r\n this.processingContourAllocation = false;\r\n this.toastr.success(\r\n 'Phase 1 Allocation Snapshot Results successfully downloaded'\r\n );\r\n },\r\n () => {\r\n this.errorMessage = this.commonService.handleDocumentErrorMessage(\r\n 'allocation run contour export'\r\n );\r\n this.toastr.error(this.errorMessage);\r\n this.processingContourAllocation = false;\r\n }\r\n );\r\n }\r\n\r\n public exportSummarizedAllocation(): void {\r\n this.processingSummarizedAllocation = true;\r\n this.toastr.info('Processing summarized allocation results');\r\n this.allocationRunService\r\n .getExcelSummaryExport(this.allocationRunId)\r\n .subscribe(\r\n (blob) => {\r\n importedSaveAs(\r\n blob,\r\n new Date(this.startdate).getMonth() +\r\n 1 +\r\n '-' +\r\n new Date(this.startdate).getFullYear() +\r\n '-' +\r\n 'AllocationSummaryExport.xls'\r\n );\r\n this.processingSummarizedAllocation = false;\r\n this.toastr.success(\r\n 'Summarized allocation results successfully downloaded'\r\n );\r\n },\r\n () => {\r\n this.errorMessage = this.commonService.handleDocumentErrorMessage(\r\n 'allocation run summary export'\r\n );\r\n this.toastr.error(this.errorMessage);\r\n this.processingSummarizedAllocation = false;\r\n }\r\n );\r\n }\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { Router } from '@angular/router';\r\nimport { AllocationRunWarningSummary } from '../../../../../model/allocation-run/allocation-run-warning-summary.model';\r\nimport { AllocationRunService } from '../../allocation-run.service';\r\nimport { CommonService } from '../../../../../common/common-service';\r\n\r\n@Component({\r\n selector: 'allocation-warning',\r\n templateUrl: './allocation-warning.component.html',\r\n styleUrls: ['./allocation-warning.component.scss'],\r\n})\r\nexport class AllocationWarningComponent implements OnInit {\r\n @Input('allocationRunId')\r\n public allocationRunId: number;\r\n public loading = false;\r\n public errorMessage = '';\r\n public allocationRunWarningSummary: AllocationRunWarningSummary;\r\n\r\n public warningTypes: string[] = [];\r\n\r\n constructor(\r\n private router: Router,\r\n private allocationRunService: AllocationRunService,\r\n public commonService: CommonService\r\n ) {}\r\n\r\n public ngOnInit() {\r\n this.initialize();\r\n }\r\n\r\n public toAllocationWarnings() {\r\n this.router.navigate(['allocation', this.allocationRunId, 'warnings'], {\r\n queryParams: {\r\n startDate: this.allocationRunWarningSummary.startDateTime,\r\n runDate: this.allocationRunWarningSummary.createdDateTime,\r\n },\r\n });\r\n }\r\n\r\n private initialize() {\r\n this.loading = true;\r\n this.allocationRunService\r\n .getAllocationRunWarningSummary(this.allocationRunId)\r\n .subscribe(\r\n (allocationRunWarningSummary: AllocationRunWarningSummary) => {\r\n this.allocationRunWarningSummary = allocationRunWarningSummary;\r\n this.warningTypes = Object.keys(\r\n this.allocationRunWarningSummary.warningList\r\n );\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { AllocationRunService } from '../../allocation-run.service';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { Router } from '@angular/router';\r\nimport { AllocationRun } from '../../../../../model/allocation/allocation-run.model';\r\n\r\nimport { CommonService } from '../../../../../common/common-service';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { Subscription, interval } from 'rxjs';\r\nimport { AllocationRecsStatus } from '../../../../../model/allocation-run/allocation-run-recs-status.model';\r\n\r\n@Component({\r\n selector: 'allocation-finalization',\r\n templateUrl: './allocation-finalization.component.html',\r\n styleUrls: ['./allocation-finalization.component.scss'],\r\n})\r\nexport class AllocationFinalizationComponent implements OnInit {\r\n @Input('allocationRunId')\r\n public allocationRunId: number;\r\n @Input('isReadOnlyMode')\r\n public isReadOnlyMode = false;\r\n @Input('isAllocationsFinalizeReadOnly')\r\n public isAllocationsFinalizeReadOnly = false;\r\n public allocationRun: AllocationRun;\r\n public loading = false;\r\n public errorMessage = '';\r\n\r\n public sendStatus: string;\r\n public sendAllocationButtonEnabled: boolean;\r\n public sendAllocationTooltipEnabled: boolean;\r\n public sendAllocationButtonText: string;\r\n public sendAllocationTooltipText: string;\r\n\r\n public recsStatus: string;\r\n public recsButtonEnabled: boolean;\r\n public recsTooltipEnabled: boolean;\r\n public recsButtonText: string;\r\n public recsTooltipText: string;\r\n\r\n public runStatus: string;\r\n private RecsRunsSub: Subscription;\r\n private intervalsource = interval(3000);\r\n\r\n constructor(\r\n private allocationRunService: AllocationRunService,\r\n private router: Router,\r\n private toastr: ToastrService,\r\n public commonService: CommonService\r\n ) {}\r\n\r\n public ngOnInit() {\r\n this.initialize();\r\n }\r\n\r\n public onClickRecs() {\r\n if (\r\n this.recsStatus === 'Not Calculated' ||\r\n this.recsStatus === 'Error'\r\n ) {\r\n this.runRecsAllocation();\r\n } else {\r\n this.router.navigate(['recs', this.allocationRun.allocationRunId], {\r\n queryParams: {\r\n startDate: this.allocationRun.startDateTime,\r\n runDate: this.allocationRun.createdDateTime,\r\n },\r\n });\r\n }\r\n }\r\n\r\n public onClickSendAllocation() {\r\n if (\r\n this.sendStatus === 'Not Sent' ||\r\n this.sendStatus === 'Sent Successfully' ||\r\n this.sendStatus === 'Error'\r\n ) {\r\n this.sendAllocationResults();\r\n } else {\r\n this.router.navigate(\r\n ['allocation', this.allocationRunId, 'send-warnings'],\r\n {\r\n queryParams: {\r\n startDate: this.allocationRun.startDateTime,\r\n runDate: this.allocationRun.createdDateTime,\r\n },\r\n }\r\n );\r\n }\r\n }\r\n\r\n public sendAllocationResults(): void {\r\n this.allocationRunService\r\n .sendAllocationDataToPTSi(this.allocationRunId)\r\n .subscribe(\r\n (response) => {\r\n this.toastr.info(\r\n !isNullOrUndefined(response.successMessage)\r\n ? response.successMessage\r\n : 'Sending allocation results'\r\n );\r\n this.router.navigate([\r\n 'allocation',\r\n this.allocationRunId,\r\n 'details',\r\n ]);\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.toastr.error(this.errorMessage);\r\n this.router.navigate([\r\n 'allocation',\r\n this.allocationRunId,\r\n 'details',\r\n ]);\r\n }\r\n );\r\n }\r\n\r\n public runRecsAllocation() {\r\n this.recsStatus = 'Calculating...';\r\n this.recsTooltipText = 'Processing RECs';\r\n this.allocationRunService\r\n .runRecsAllocation(this.allocationRunId)\r\n .subscribe(\r\n (response) => {\r\n this.toastr.info(\r\n !isNullOrUndefined(response.successMessage)\r\n ? response.successMessage\r\n : 'Calculating RECs for allocation run'\r\n );\r\n this.RecsRunsSub = this.intervalsource.subscribe((val) => {\r\n this.allocationRunService\r\n .GetRecsStatus(this.allocationRun.allocationRunId)\r\n .subscribe((result: AllocationRecsStatus) => {\r\n if (result[0].recsStatus === 'Complete') {\r\n this.toastr.success(\r\n 'RECS Calculation Completed Sucessfully'\r\n );\r\n this.recsStatus = 'Complete';\r\n this.recsTooltipText = '';\r\n this.recsButtonText = 'View RECs';\r\n }\r\n if (result[0].recsStatus === 'Error') {\r\n this.toastr.error(\r\n 'RECS Calculation Failed'\r\n );\r\n this.recsStatus = 'Error';\r\n this.recsTooltipText =\r\n 'An error occurred while previously calculating the RECs. Click to retry.';\r\n }\r\n });\r\n\r\n this.RecsRunsSub.unsubscribe();\r\n });\r\n\r\n /* this.router.navigate([\r\n 'allocation',\r\n this.allocationRunId,\r\n 'details',\r\n ]);*/\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.toastr.error(this.errorMessage);\r\n this.router.navigate([\r\n 'allocation',\r\n this.allocationRunId,\r\n 'details',\r\n ]);\r\n }\r\n );\r\n }\r\n\r\n private setSendAllocationVariables() {\r\n this.sendAllocationButtonText =\r\n this.sendStatus === 'Not Sent'\r\n ? 'Send Allocation'\r\n : this.sendStatus === 'Sent With Warnings'\r\n ? 'View Send Allocation Warnings'\r\n : this.sendStatus === 'Sent Successfully'\r\n ? 'Resend allocation'\r\n : this.sendStatus === 'Sending...'\r\n ? 'Sending Allocation Results'\r\n : 'Allocation Send Error';\r\n this.sendAllocationTooltipText =\r\n this.runStatus !== 'Complete'\r\n ? 'Allocation run must be in a complete state before results can be sent'\r\n : this.recsStatus === 'Complete'\r\n ? 'Cannot send allocation results because RECs have already been calculated'\r\n : this.sendStatus === 'Not Sent'\r\n ? ''\r\n : this.sendStatus === 'Sent With Warnings'\r\n ? 'Click to view the allocation send results warnings. Results can be sent again from the warnings page.'\r\n : this.sendStatus === 'Sending...'\r\n ? 'Allocation results are currently being sent. Refresh the page to see if sending has completed'\r\n : 'An error occurred while previously sending the allocation results. Click to retry.';\r\n\r\n if (this.allocationRun.isDemo) {\r\n this.sendAllocationTooltipText =\r\n 'Allocation submission not permitted in Demo mode';\r\n }\r\n this.sendAllocationTooltipEnabled =\r\n !(this.sendStatus === 'Not Sent') ||\r\n this.recsStatus === 'Complete' ||\r\n this.runStatus !== 'Complete' ||\r\n this.allocationRun.isDemo;\r\n this.sendAllocationButtonEnabled =\r\n !this.allocationRun.isDemo &&\r\n ((!this.isAllocationsFinalizeReadOnly &&\r\n this.sendStatus !== 'Sending...' &&\r\n this.recsStatus !== 'Complete' &&\r\n this.runStatus === 'Complete') ||\r\n this.sendAllocationButtonText === 'Resend allocation');\r\n }\r\n\r\n private setRecsVariables() {\r\n this.recsButtonText =\r\n this.recsStatus === 'Not Calculated' || this.recsStatus === 'Error'\r\n ? 'Calculate RECs'\r\n : 'View RECs';\r\n this.recsTooltipText =\r\n !(\r\n this.sendStatus === 'Sent Successfully' ||\r\n this.sendStatus === 'Sent With Warnings'\r\n ) && !this.allocationRun.isDemo\r\n ? 'Allocation run results must be sent to integrator before RECs can be processed'\r\n : this.recsStatus === 'Not Calculated'\r\n ? 'Click to allocate RECs. Note: This process can only be done once per allocation run'\r\n : this.recsStatus === 'Error'\r\n ? 'An error occurred while previously calculating the RECs. Click to retry.'\r\n : this.recsStatus === 'Calculating...'\r\n ? 'RECs are currently being calculated. Refresh the page to see if calculation has completed'\r\n : '';\r\n this.recsTooltipEnabled =\r\n this.sendStatus === 'Not Sent' ||\r\n this.sendStatus === 'Sent Successfully' ||\r\n this.sendStatus === 'Sent With Warnings' ||\r\n this.recsStatus === 'Error' ||\r\n this.recsStatus === 'Calculating...';\r\n this.recsButtonEnabled =\r\n API_URL.includes('localhost') ||\r\n this.allocationRun.isDemo === true ||\r\n ((!this.isAllocationsFinalizeReadOnly ||\r\n (this.recsButtonText === 'View RECs' &&\r\n !this.isReadOnlyMode)) &&\r\n (this.sendStatus === 'Sent Successfully' ||\r\n this.sendStatus === 'Sent With Warnings'));\r\n }\r\n\r\n private initialize() {\r\n this.loading = true;\r\n this.allocationRunService\r\n .getAllocationRun(this.allocationRunId)\r\n .subscribe(\r\n (allocationRun: AllocationRun) => {\r\n this.allocationRun = allocationRun;\r\n this.sendStatus = allocationRun.allocationSentStatus.value;\r\n this.recsStatus =\r\n allocationRun.allocationRunRecsStatus.value;\r\n this.runStatus = allocationRun.allocationRunStatus.value;\r\n this.setSendAllocationVariables();\r\n this.setRecsVariables();\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { AllocationRunService } from '../../allocation-run.service';\r\nimport { AllocationRunPowerPerTechnologySummary } from '../../../../../model/allocation-run/allocation-run-power-per-technology-summary.model';\r\nimport { CommonService } from '../../../../../common/common-service';\r\n\r\n@Component({\r\n selector: 'allocation-power-per-technology',\r\n templateUrl: './allocation-power-per-technology.component.html',\r\n styleUrls: ['./allocation-power-per-technology.component.scss'],\r\n})\r\nexport class AllocationPowerPerTechnologyComponent implements OnInit {\r\n @Input('allocationRunId')\r\n public allocationRunId: number;\r\n public loading = false;\r\n public errorMessage = '';\r\n public chartData: Array<{ name: string; value: number }>;\r\n\r\n constructor(\r\n private allocationRunService: AllocationRunService,\r\n public commonService: CommonService\r\n ) {}\r\n\r\n public ngOnInit() {\r\n this.initialize();\r\n }\r\n\r\n private initialize() {\r\n this.loading = true;\r\n this.chartData = [];\r\n this.allocationRunService\r\n .getAllocationRunPowerPerTechnologySummary(this.allocationRunId)\r\n .subscribe(\r\n (\r\n allocationRunPowerPerTechnologySummary: AllocationRunPowerPerTechnologySummary\r\n ) => {\r\n this.populateChartData(\r\n allocationRunPowerPerTechnologySummary.powerPerTechnologyList\r\n );\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n\r\n private populateChartData(inputData: { [name: string]: number }) {\r\n this.chartData = [];\r\n const technologies = Object.keys(inputData);\r\n technologies.forEach((technology) => {\r\n this.chartData.push({\r\n name: technology.replace(\r\n technology.charAt(0),\r\n technology.charAt(0).toUpperCase()\r\n ),\r\n value: Math.round(inputData[technology]),\r\n });\r\n });\r\n }\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { AllocationRunService } from '../../allocation-run.service';\r\nimport { AllocationRunRevenuePerEnergyBracketSummary } from '../../../../../model/allocation-run/allocation-run-revenue-per-energy-bracket-summary.model';\r\nimport { CommonService } from '../../../../../common/common-service';\r\n\r\n@Component({\r\n selector: 'allocation-revenue-per-energy-bracket',\r\n templateUrl: './allocation-revenue-per-energy-bracket.component.html',\r\n styleUrls: ['./allocation-revenue-per-energy-bracket.component.scss'],\r\n})\r\nexport class AllocationRevenuePerEnergyBracketComponent implements OnInit {\r\n @Input('allocationRunId')\r\n public allocationRunId: number;\r\n public loading = false;\r\n public errorMessage = '';\r\n public chartData: Array<{ name: string; value: number }>;\r\n\r\n constructor(\r\n private allocationRunService: AllocationRunService,\r\n private commonService: CommonService\r\n ) {}\r\n\r\n public ngOnInit() {\r\n this.initialize();\r\n }\r\n\r\n private initialize() {\r\n this.loading = true;\r\n this.chartData = [];\r\n this.allocationRunService\r\n .getAllocationRunRevenuePerEnergyBracketSummary(\r\n this.allocationRunId\r\n )\r\n .subscribe(\r\n (\r\n allocationRunRevenuePerEnergyBracketSummary: AllocationRunRevenuePerEnergyBracketSummary\r\n ) => {\r\n this.populateChartData(\r\n allocationRunRevenuePerEnergyBracketSummary.revenuePerEnergyBracketList\r\n );\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n\r\n private populateChartData(inputData: { [name: string]: number }) {\r\n this.chartData = [];\r\n const energyBrackets = Object.keys(inputData);\r\n energyBrackets.forEach((energyBracket) => {\r\n this.chartData.push({\r\n name: energyBracket.replace(\r\n energyBracket.charAt(0),\r\n energyBracket.charAt(0).toUpperCase()\r\n ),\r\n value: Math.round(inputData[energyBracket]),\r\n });\r\n });\r\n }\r\n}\r\n","import { Router } from '@angular/router';\r\nimport { GeneratorProjectFacilityTariffRate } from './../../../model/generator/generator-project-facility-tariff-rate.model';\r\nimport { Component, OnInit, Input, OnDestroy } from '@angular/core';\r\nimport { GeneratorProjectFacilityTariffRatesService } from './generator-project-facility-tariff-rates.service';\r\nimport { CommonService } from '../../../common/common-service';\r\nimport { FormGroup, FormArray, FormControl, Validators } from '@angular/forms';\r\nimport { isNullOrUndefined } from 'util';\r\n\r\nimport { ComponentTriggersService } from '../../../common/component-triggers.service';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { Subscription } from 'rxjs/Rx';\r\n\r\n@Component({\r\n selector: 'generator-project-facility-tariff-rates',\r\n templateUrl: './generator-project-facility-tariff-rates.component.html',\r\n styleUrls: ['../../form.styles.scss'],\r\n})\r\nexport class GeneratorProjectFacilityTariffRatesComponent\r\n implements OnInit, OnDestroy {\r\n @Input('facilityData')\r\n public facilityData: any;\r\n @Input('formArrayName')\r\n public formArrayName: string;\r\n @Input('containerFormGroup')\r\n public containerFormGroup: FormGroup;\r\n @Input('enableEdit')\r\n public enableEdit: boolean = true;\r\n @Input('rateIncrease')\r\n public rateIncrease: number;\r\n public loading: boolean;\r\n public showSave: boolean;\r\n public updatingRates: boolean;\r\n public errorMessage = '';\r\n private generatorProjectFacilityTariffRates: GeneratorProjectFacilityTariffRate[] = [];\r\n private facilityId: number;\r\n private isNonTou: boolean = null;\r\n private tariffRates: FormArray;\r\n private triggerGeneratorProjectFacilityTariffRatesComponentSubscription: Subscription;\r\n\r\n constructor(\r\n private commonService: CommonService,\r\n private toastr: ToastrService,\r\n private router: Router,\r\n private generatorProjectFacilityTariffRatesService: GeneratorProjectFacilityTariffRatesService,\r\n private componentTriggersService: ComponentTriggersService\r\n ) {}\r\n\r\n public ngOnInit() {\r\n this.initialize();\r\n\r\n this.triggerGeneratorProjectFacilityTariffRatesComponentSubscription = this.componentTriggersService.triggerGeneratorProjectFacilityTariffRatesComponent.subscribe(\r\n (isNonTou: boolean) => {\r\n this.isNonTou = isNonTou;\r\n // input null to return an empty set\r\n this.loadNewTariffRates(this.facilityId, this.isNonTou);\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n }\r\n\r\n public ngOnDestroy() {\r\n this.triggerGeneratorProjectFacilityTariffRatesComponentSubscription.unsubscribe();\r\n }\r\n\r\n public initialize() {\r\n this.loading = true;\r\n this.facilityId = this.facilityData.facilityId;\r\n this.isNonTou =\r\n this.isNonTou == null ? this.facilityData.isNonTou : this.isNonTou;\r\n this.loadTariffRates(this.facilityId, this.isNonTou);\r\n }\r\n\r\n public loadTariffRates(facilityId: number, isNonTOU: boolean): void {\r\n this.generatorProjectFacilityTariffRatesService\r\n .getGeneratorProjectFacilityTariffRates(facilityId, isNonTOU)\r\n .subscribe(\r\n (page: GeneratorProjectFacilityTariffRate[]) => {\r\n this.generatorProjectFacilityTariffRates = page;\r\n this.initTariffRates();\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.loading = false;\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n }\r\n\r\n public loadNewTariffRates(facilityId: number, isNonTOU: boolean): void {\r\n this.generatorProjectFacilityTariffRatesService\r\n .getNewGeneratorProjectFacilityTariffRates(facilityId, isNonTOU)\r\n .subscribe(\r\n (page: GeneratorProjectFacilityTariffRate[]) => {\r\n this.generatorProjectFacilityTariffRates = page;\r\n this.initTariffRates();\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.loading = false;\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n }\r\n\r\n public saveNewRates(): void {\r\n this.updatingRates = true;\r\n this.generatorProjectFacilityTariffRatesService\r\n .createGeneratorProjectFacilityRates(\r\n this.generatorProjectFacilityTariffRates\r\n )\r\n .subscribe(\r\n (newRates) => {\r\n this.generatorProjectFacilityTariffRates = newRates;\r\n this.toastr.success(\r\n 'Generator project facility tariff rates updated successfully'\r\n );\r\n this.router.navigate([\r\n 'generator',\r\n 'increase-notifications',\r\n ]);\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.toastr.error(this.errorMessage);\r\n this.updatingRates = false;\r\n }\r\n );\r\n }\r\n\r\n private initTariffRates() {\r\n if (this.rateIncrease) {\r\n this.showSave = true;\r\n this.containerFormGroup.controls.tariffRates.disable();\r\n this.calculateIncrease();\r\n }\r\n this.tariffRates = new FormArray(this.populateTariffs());\r\n this.containerFormGroup.setControl('tariffRates', this.tariffRates);\r\n\r\n if (!this.enableEdit) {\r\n this.containerFormGroup.controls.tariffRates.disable();\r\n }\r\n }\r\n\r\n private calculateIncrease(): void {\r\n this.generatorProjectFacilityTariffRates.forEach((tariffRate) => {\r\n tariffRate.rate =\r\n tariffRate.rate + tariffRate.rate * (this.rateIncrease / 100);\r\n\r\n const now = new Date();\r\n tariffRate.effectiveDate = new Date(tariffRate.effectiveDate);\r\n tariffRate.endDate = new Date(tariffRate.endDate);\r\n\r\n if (\r\n tariffRate.effectiveDate.getFullYear() ===\r\n tariffRate.endDate.getFullYear()\r\n ) {\r\n tariffRate.effectiveDate.setFullYear(now.getFullYear());\r\n tariffRate.endDate.setFullYear(now.getFullYear());\r\n } else {\r\n tariffRate.effectiveDate.setFullYear(now.getFullYear());\r\n tariffRate.endDate.setFullYear(now.getFullYear() + 1);\r\n }\r\n });\r\n }\r\n\r\n private populateTariffs(): FormGroup[] {\r\n const tariffFormGroups: FormGroup[] = [];\r\n this.generatorProjectFacilityTariffRates.forEach(\r\n (tariffRate: GeneratorProjectFacilityTariffRate) => {\r\n tariffFormGroups.push(this.initTariffRate(tariffRate));\r\n }\r\n );\r\n\r\n return tariffFormGroups;\r\n }\r\n\r\n private initTariffRate(tariffRate: GeneratorProjectFacilityTariffRate) {\r\n return new FormGroup({\r\n generatorProjectFacilityTariffRateId: new FormControl(\r\n isNullOrUndefined(tariffRate)\r\n ? 0\r\n : tariffRate.generatorProjectFacilityTariffRateId\r\n ),\r\n generatorProjectFacilityId: new FormControl(\r\n isNullOrUndefined(tariffRate)\r\n ? 0\r\n : tariffRate.generatorProjectFacilityId\r\n ),\r\n rate: new FormControl(\r\n isNullOrUndefined(tariffRate) ? 0 : tariffRate.rate,\r\n [Validators.required]\r\n ),\r\n seasonId: new FormControl(\r\n isNullOrUndefined(tariffRate) ? 0 : tariffRate.seasonId\r\n ),\r\n seasonName: new FormControl(\r\n isNullOrUndefined(tariffRate) ? 0 : tariffRate.seasonName\r\n ),\r\n energyBracket: new FormControl(\r\n isNullOrUndefined(tariffRate) ? 0 : tariffRate.energyBracket\r\n ),\r\n effectiveDate: new FormControl(\r\n isNullOrUndefined(tariffRate) ? 0 : tariffRate.effectiveDate\r\n ),\r\n });\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { FormArray, FormGroup } from '@angular/forms';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { EntityLookup } from '../../../model/entity-lookup.model';\r\nimport { Page } from '../../../model/page.model';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable } from 'rxjs/Rx';\r\n\r\n@Injectable()\r\nexport class GeneratorProjectFacilityTariffRatesEditService {\r\n public periods: EntityLookup[];\r\n public seasons: EntityLookup[];\r\n public energyBrackets: EntityLookup[];\r\n public tariffTypes: EntityLookup[];\r\n\r\n constructor(private http: HttpClient) {}\r\n\r\n public getTariffRate(\r\n generatorProjectFacilityTariffRateId: number\r\n ): Observable {\r\n return this.http.get(\r\n API_URL +\r\n 'GeneratorProjectFacilityTariffRate/GetTariffRate?generatorProjectFacilityTariffRateId=' +\r\n generatorProjectFacilityTariffRateId\r\n );\r\n }\r\n\r\n public createTariffRate(tariffRate: any): Observable {\r\n return this.http.post(\r\n API_URL + 'GeneratorProjectFacilityTariffRate/CreateTariffRate',\r\n tariffRate\r\n );\r\n }\r\n\r\n public updateTariffRate(tariffRate: any): Observable {\r\n return this.http.post(\r\n API_URL + 'GeneratorProjectFacilityTariffRate/UpdateTariffRate',\r\n tariffRate\r\n );\r\n }\r\n\r\n public getTariffRatesPage(\r\n searchString: string,\r\n page: Page,\r\n sortProp: any,\r\n facilityId: number\r\n ): Observable {\r\n if (isNullOrUndefined(sortProp.direction)) {\r\n sortProp.direction = '';\r\n }\r\n if (isNullOrUndefined(sortProp.property)) {\r\n sortProp.property = '';\r\n }\r\n return this.http.get(\r\n API_URL +\r\n 'GeneratorProjectFacilityTariffRate/GetTariffRatesPage?searchString=' +\r\n searchString +\r\n '&offset=' +\r\n page.offset +\r\n '&pageSize=' +\r\n page.size +\r\n '&sortDirection=' +\r\n sortProp.direction +\r\n '&sortProperty=' +\r\n sortProp.property +\r\n '&facilityId=' +\r\n facilityId\r\n );\r\n }\r\n}\r\n","import {\r\n Component,\r\n Input,\r\n OnInit,\r\n TemplateRef,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { CommonService } from '../../../common/common-service';\r\nimport { BsModalRef, BsModalService } from 'ngx-bootstrap';\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { GeneratorProjectFacilityTariffRate } from './../../../model/generator/generator-project-facility-tariff-rate.model';\r\nimport { GeneratorProjectFacilityTariffRatesEditService } from './generator-project-facility-tariff-rates-edit.service';\r\nimport { GeneratorCompanyService } from '../../generator-company/generator-company.service';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { Page } from '../../../model/page.model';\r\nimport { debounceTime } from 'rxjs/operators';\r\nimport { EntityLookup } from '../../../model/entity-lookup.model';\r\n\r\n@Component({\r\n selector: 'generator-project-facility-tariff-rates-edit',\r\n templateUrl:\r\n './generator-project-facility-tariff-rates-edit.component.html',\r\n styleUrls: ['../../form.styles.scss'],\r\n})\r\nexport class GeneratorProjectFacilityTariffRatesEditComponent\r\n implements OnInit {\r\n public facilityId: number;\r\n @Input('isReadOnlyMode')\r\n public isReadOnlyMode = false;\r\n @ViewChild('tariffRateModal')\r\n public tariffRateModal: TemplateRef;\r\n public loading = false;\r\n public loadingTariffRate = false;\r\n public saving = false;\r\n public tariffRates: GeneratorProjectFacilityTariffRate[] = [];\r\n public newTariffRateForm: FormGroup;\r\n public errorMessage = '';\r\n public tariffRatePage: Page;\r\n public seasons: EntityLookup[];\r\n public energyBrackets: EntityLookup[];\r\n public facilities: any;\r\n public isNonTou: boolean = null;\r\n public selectFacilityForm: FormGroup;\r\n private modalRef: BsModalRef;\r\n private searchForm: FormGroup;\r\n private sortProp = {};\r\n private projectId: number;\r\n private companyId: number;\r\n private companyName: string;\r\n private projectName: string;\r\n private facilityName: string;\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n private modalService: BsModalService,\r\n public commonService: CommonService,\r\n private generatorMaintenanceService: GeneratorCompanyService,\r\n public facilityTariffRatesService: GeneratorProjectFacilityTariffRatesEditService,\r\n protected toastr: ToastrService\r\n ) {\r\n this.tariffRatePage = new Page();\r\n this.searchForm = new FormGroup({\r\n search: new FormControl(''),\r\n });\r\n this.selectFacilityForm = new FormGroup({\r\n facility: new FormControl(''),\r\n });\r\n }\r\n\r\n public ngOnInit() {\r\n this.loading = true;\r\n this.route.params.subscribe(\r\n (params) => {\r\n if (params['generatorProjectId']) {\r\n this.projectId = params['generatorProjectId'];\r\n }\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n\r\n this.route.params.subscribe(\r\n () => {\r\n this.route.queryParams.subscribe(\r\n (queryParams) => {\r\n this.companyId = queryParams.companyId;\r\n this.companyName = queryParams.companyName;\r\n this.projectName = queryParams.projectName;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n\r\n this.searchForm\r\n .get('search')\r\n .valueChanges.pipe(debounceTime(300))\r\n .subscribe(\r\n () => {\r\n this.changePage({ offset: 0 });\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n\r\n this.commonService\r\n .getEntityLookups(['Season', 'EnergyBracket'])\r\n .subscribe(\r\n (response) => {\r\n this.seasons = response.entityLookupResultList['season'];\r\n this.energyBrackets =\r\n response.entityLookupResultList['energyBracket'];\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n\r\n this.generatorMaintenanceService\r\n .getGeneratorProjectFacilities(this.projectId)\r\n .subscribe(\r\n (page) => {\r\n this.facilities = page;\r\n if (this.facilities.length > 0) {\r\n this.selectFacilityForm.controls.facility.setValue(\r\n this.facilities[0].generatorProjectFacilityId\r\n );\r\n this.facilityId = this.facilities[0].generatorProjectFacilityId;\r\n this.isNonTou =\r\n this.isNonTou == null\r\n ? this.facilities[0].isNonTou\r\n : this.isNonTou;\r\n this.changePage({ offset: this.tariffRatePage.offset });\r\n }\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.loading = false;\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n }\r\n\r\n public newTariffRate(): void {\r\n this.errorMessage = '';\r\n this.initTariffRateForm();\r\n this.modalRef = this.modalService.show(this.tariffRateModal);\r\n }\r\n\r\n public onFacilityChange() {\r\n this.loading = true;\r\n this.facilityId = this.selectFacilityForm.controls.facility.value;\r\n this.changePage({ offset: 0 });\r\n this.loading = false;\r\n }\r\n\r\n public onPopupSubmit(): void {\r\n this.errorMessage = '';\r\n this.commonService.validateAllFormFields(this.newTariffRateForm);\r\n if (this.newTariffRateForm.valid) {\r\n this.saving = true;\r\n if (\r\n this.newTariffRateForm.controls\r\n .generatorProjectFacilityTariffRateId.value === 0\r\n ) {\r\n this.facilityTariffRatesService\r\n .createTariffRate(this.newTariffRateForm.value)\r\n .subscribe(\r\n () => {\r\n this.changePage({ offset: 0 });\r\n this.modalRef.hide();\r\n this.saving = false;\r\n this.toastr.success(\r\n 'Tariff rate successfully added'\r\n );\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.toastr.error(this.errorMessage);\r\n this.saving = false;\r\n }\r\n );\r\n } else {\r\n this.facilityTariffRatesService\r\n .updateTariffRate(this.newTariffRateForm.value)\r\n .subscribe(\r\n () => {\r\n this.changePage({ offset: 0 });\r\n this.modalRef.hide();\r\n this.toastr.success(\r\n 'Tariff rate successfully updated'\r\n );\r\n this.saving = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.toastr.error(this.errorMessage);\r\n this.saving = false;\r\n }\r\n );\r\n }\r\n }\r\n }\r\n\r\n public onSelect(event: any): void {\r\n this.errorMessage = '';\r\n const generatorProjectFacilityTariffRateId =\r\n event.selected[0].generatorProjectFacilityTariffRateId;\r\n this.loadingTariffRate = true;\r\n this.facilityTariffRatesService\r\n .getTariffRate(generatorProjectFacilityTariffRateId)\r\n .subscribe(\r\n (tariffRate: GeneratorProjectFacilityTariffRate) => {\r\n this.initTariffRateForm(tariffRate);\r\n this.modalRef = this.modalService.show(\r\n this.tariffRateModal\r\n );\r\n this.loadingTariffRate = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.toastr.error(this.errorMessage);\r\n }\r\n );\r\n }\r\n\r\n public onCancel() {\r\n this.modalRef.hide();\r\n this.errorMessage = '';\r\n }\r\n\r\n public changePage(pageInfo: any): void {\r\n const searchString = this.searchForm.get('search').value;\r\n this.tariffRatePage.offset = pageInfo.offset * this.tariffRatePage.size;\r\n this.facilityTariffRatesService\r\n .getTariffRatesPage(\r\n searchString,\r\n this.tariffRatePage,\r\n this.sortProp,\r\n this.facilityId\r\n )\r\n .subscribe(\r\n (page) => {\r\n this.tariffRatePage.totalPages = Math.ceil(\r\n page.totalItems / page.size\r\n );\r\n this.tariffRatePage.totalElements = page.totalItems;\r\n this.tariffRates = page.items;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.toastr.error(this.errorMessage);\r\n }\r\n );\r\n }\r\n\r\n public sortColumn(event: any): void {\r\n this.sortProp = {\r\n direction: event.sorts[0].dir,\r\n property: event.sorts[0].prop,\r\n };\r\n this.changePage({ offset: 0 });\r\n }\r\n\r\n private initTariffRateForm(\r\n tariffRate: GeneratorProjectFacilityTariffRate = null\r\n ) {\r\n this.newTariffRateForm = new FormGroup({\r\n generatorProjectFacilityId: new FormControl(this.facilityId),\r\n generatorProjectFacilityTariffRateId: new FormControl(\r\n isNullOrUndefined(tariffRate)\r\n ? 0\r\n : tariffRate.generatorProjectFacilityTariffRateId\r\n ),\r\n seasonId: new FormControl(\r\n isNullOrUndefined(tariffRate) ? null : tariffRate.seasonId,\r\n [Validators.required]\r\n ),\r\n energyBracketLookupId: new FormControl(\r\n isNullOrUndefined(tariffRate)\r\n ? null\r\n : tariffRate.energyBracketLookupId,\r\n [Validators.required]\r\n ),\r\n rate: new FormControl(\r\n isNullOrUndefined(tariffRate) ? null : tariffRate.rate,\r\n [Validators.required, Validators.min(0)]\r\n ),\r\n effectiveDate: new FormControl(\r\n isNullOrUndefined(tariffRate) ? '' : tariffRate.effectiveDate,\r\n [Validators.required]\r\n ),\r\n endDate: new FormControl(\r\n isNullOrUndefined(tariffRate) ? '' : tariffRate.endDate\r\n ),\r\n });\r\n }\r\n}\r\n","export class Consumption {\r\n constructor(\r\n public tariffBlockConsumptionId: number,\r\n public tariffBlockId: number,\r\n public month: string,\r\n public year: string,\r\n public consumption: number,\r\n public peak?,\r\n public offPeak?,\r\n public standard?\r\n ) {}\r\n}\r\n","import { CommonService } from '../../common/common-service';\r\nimport {\r\n Component,\r\n OnInit,\r\n Input,\r\n AfterViewChecked,\r\n ChangeDetectorRef,\r\n} from '@angular/core';\r\nimport { Consumption } from './consumption.model';\r\nimport { FormGroup, FormControl, FormArray } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'consumption',\r\n templateUrl: './consumption.component.html',\r\n styleUrls: [\r\n './consumption.component.scss',\r\n '../../component/form.styles.scss',\r\n ],\r\n})\r\nexport class ConsumptionComponent implements OnInit, AfterViewChecked {\r\n @Input('isReadOnlyMode')\r\n public isReadOnlyMode: boolean = false;\r\n @Input('parentId')\r\n public parentId: number = 0;\r\n @Input('tariffParts')\r\n public tariffParts: number;\r\n @Input('containerForm')\r\n public containerForm: FormGroup;\r\n @Input('consumptionList')\r\n public consumptionList: Consumption[] = [];\r\n @Input('selectYears')\r\n public selectYears: boolean = false;\r\n\r\n public months: any[] = [];\r\n public years: any[] = [];\r\n public customClass: string = 'col-sm-12';\r\n\r\n public constructor(\r\n private cdRef: ChangeDetectorRef,\r\n public commonService: CommonService\r\n ) {}\r\n\r\n public ngOnInit() {\r\n if (this.consumptionList === null) {\r\n this.consumptionList = [];\r\n }\r\n if (this.consumptionList.length < 1) {\r\n this.initMonths();\r\n }\r\n if (this.selectYears) {\r\n this.initYear();\r\n this.customClass = 'col-sm-6';\r\n }\r\n }\r\n\r\n public ngAfterViewChecked() {\r\n this.cdRef.detectChanges();\r\n }\r\n\r\n public addConsumption(\r\n month: any,\r\n consumption: number,\r\n peak?: number,\r\n offPeak?: number,\r\n standard?: number\r\n ): void {\r\n // Add Consumption\r\n switch (this.tariffParts) {\r\n case 1:\r\n this.consumptionList.push(\r\n new Consumption(0, this.parentId, month, null, consumption)\r\n );\r\n break;\r\n case 2:\r\n this.consumptionList.push(\r\n new Consumption(\r\n 0,\r\n this.parentId,\r\n month,\r\n null,\r\n +peak + +offPeak,\r\n +peak,\r\n +offPeak,\r\n null\r\n )\r\n );\r\n break;\r\n case 3:\r\n this.consumptionList.push(\r\n new Consumption(\r\n 0,\r\n this.parentId,\r\n month,\r\n null,\r\n +peak + +offPeak + +standard,\r\n +peak,\r\n +offPeak,\r\n +standard\r\n )\r\n );\r\n break;\r\n }\r\n\r\n // Remove Added Month\r\n const selectedIndex = this.months.indexOf(month);\r\n this.months.splice(selectedIndex, 1);\r\n\r\n // Add to containterForm if completed\r\n if (this.consumptionList.length === 12) {\r\n this.containerForm.controls.consumption.setValue(\r\n this.consumptionList\r\n );\r\n }\r\n }\r\n\r\n public removeConsumption(consumptionIndex: number): void {\r\n this.months.push(this.consumptionList[consumptionIndex].month);\r\n this.consumptionList.splice(consumptionIndex, 1);\r\n }\r\n\r\n private initMonths() {\r\n this.months = [\r\n 'January',\r\n 'February',\r\n 'March',\r\n 'April',\r\n 'May',\r\n 'June',\r\n 'July',\r\n 'August',\r\n 'September',\r\n 'October',\r\n 'November',\r\n 'December',\r\n ];\r\n }\r\n\r\n private initYear(): void {\r\n const currentYear: number = new Date().getFullYear();\r\n this.years = [];\r\n for (let i = -2; i < 5; i++) {\r\n this.years.push(currentYear + i);\r\n }\r\n }\r\n}\r\n","import { DistributorService } from '../distributor.service';\r\nimport { Component, OnInit, TemplateRef, Input } from '@angular/core';\r\nimport { FormGroup, Validators, FormControl } from '@angular/forms';\r\nimport { BsModalRef, BsModalService } from 'ngx-bootstrap';\r\n\r\nimport { CommonService } from '../../../common/common-service';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { PeriodService } from '../period.service';\r\nimport { ToastrService } from 'ngx-toastr';\r\n\r\n@Component({\r\n selector: 'app-distributor-increase',\r\n templateUrl: './distributor-increase.component.html',\r\n styleUrls: [\r\n './distributor-increase.component.scss',\r\n '../../form.styles.scss',\r\n ],\r\n})\r\nexport class DistributorIncreaseComponent implements OnInit {\r\n @Input('distributorId')\r\n public distributorId: number;\r\n @Input('enableAddNew')\r\n public enableAddNew: boolean = true;\r\n @Input('isReadOnlyMode')\r\n public isReadOnlyMode: boolean = false;\r\n public increaseHistory: any[] = [];\r\n public distributors: any[] = [];\r\n public periods: any[] = [];\r\n public newIncreaseForm: FormGroup;\r\n public errorMessage: string;\r\n public loading: boolean = false;\r\n public submitting: boolean = false;\r\n private modalRef: BsModalRef;\r\n\r\n constructor(\r\n protected route: ActivatedRoute,\r\n private toastr: ToastrService,\r\n private modalService: BsModalService,\r\n public commonService: CommonService,\r\n private distributorService: DistributorService,\r\n private periodService: PeriodService\r\n ) {\r\n this.newIncreaseForm = new FormGroup({\r\n distributorId: new FormControl(null),\r\n periodId: new FormControl(null, [Validators.required]),\r\n increase: new FormControl(null, [Validators.required]),\r\n });\r\n }\r\n\r\n public ngOnInit() {\r\n if (this.distributorId && this.distributorId > 0) {\r\n this.getAllPeriods();\r\n this.getIncreaseHistory();\r\n } else {\r\n this.route.params.subscribe(\r\n (params) => {\r\n this.distributorId = params.distributorId;\r\n this.getAllPeriods();\r\n this.getIncreaseHistory();\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.toastr.error(this.errorMessage);\r\n }\r\n );\r\n }\r\n }\r\n\r\n public getIncreaseHistory() {\r\n this.distributorService\r\n .getDistributorIncreaseHistory(this.distributorId)\r\n .subscribe(\r\n (history) => {\r\n this.loading = false;\r\n this.increaseHistory = history;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.toastr.error(this.errorMessage);\r\n }\r\n );\r\n }\r\n\r\n public getAllPeriods(): void {\r\n this.periodService.getAllPeriods().subscribe(\r\n (periods) => {\r\n this.periods = periods;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n }\r\n\r\n public newIncreaseModal(template: TemplateRef): void {\r\n this.modalRef = this.modalService.show(template);\r\n }\r\n\r\n public onPopupSubmit() {\r\n this.commonService.validateAllFormFields(this.newIncreaseForm);\r\n if (this.newIncreaseForm.valid) {\r\n this.submitting = true;\r\n this.newIncreaseForm.controls.distributorId.setValue(\r\n this.distributorId\r\n );\r\n this.distributorService\r\n .addDistributorIncrease(this.newIncreaseForm.value)\r\n .subscribe(\r\n () => {\r\n this.newIncreaseForm.reset();\r\n this.toastr.success(\r\n 'Distributor increase saved successfully'\r\n );\r\n this.getIncreaseHistory();\r\n this.submitting = false;\r\n this.modalRef.hide();\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.toastr.error(this.errorMessage);\r\n this.submitting = false;\r\n }\r\n );\r\n }\r\n }\r\n}\r\n","export class SummaryInfoPair {\r\n public key: string;\r\n public value: string;\r\n}\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { SummaryInfoPair } from './summary-info-pair.model';\r\n\r\n@Component({\r\n selector: 'summary-card',\r\n templateUrl: './summary-card.component.html',\r\n styleUrls: ['./summary-card.component.scss'],\r\n})\r\nexport class SummaryCardComponent implements OnInit {\r\n // Top Left Bigger Font\r\n @Input('title')\r\n public title: string;\r\n // Top Right Faint Font\r\n @Input('rightFaint')\r\n public rightFaint: SummaryInfoPair;\r\n\r\n // Left & Right Aligned Info, key and value\r\n @Input('leftInfo')\r\n public leftInfo: SummaryInfoPair[] = [];\r\n @Input('rightInfo')\r\n public rightInfo: SummaryInfoPair[] = [];\r\n\r\n // Bottom Left Aligned Smaller Faint Font, key and value\r\n @Input('bottomFaint')\r\n public bottomFaint: SummaryInfoPair;\r\n\r\n @Input('colsPerRow')\r\n public colsPerRow: number;\r\n\r\n public customClass: string;\r\n\r\n public ngOnInit(): void {\r\n this.setSummaryGridSize();\r\n }\r\n\r\n private setSummaryGridSize(): void {\r\n switch (this.colsPerRow) {\r\n case 4:\r\n this.customClass = 'col-sm-3';\r\n break;\r\n case 3:\r\n this.customClass = 'col-sm-4';\r\n break;\r\n case 2:\r\n this.customClass = 'col-sm-6';\r\n break;\r\n case 1:\r\n this.customClass = 'col-sm-12';\r\n break;\r\n default:\r\n this.customClass = 'col-sm-6';\r\n }\r\n }\r\n}\r\n","import {\r\n Component,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n TemplateRef,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { FormArray, FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { BsModalService } from 'ngx-bootstrap/modal';\r\nimport { AllocationRunService } from '../../allocation-run.service';\r\nimport { CommonService } from '../../../../../common/common-service';\r\nimport { Router } from '@angular/router';\r\n\r\nimport { BsModalRef } from 'ngx-bootstrap';\r\nimport { AllocationPrepaidRevenue } from '../../../../../model/allocation/allocation-prepaid-revenue.model';\r\nimport { ComponentTriggersService } from '../../../../../common/component-triggers.service';\r\nimport { Subscription } from 'rxjs/Rx';\r\nimport { ToastrService } from 'ngx-toastr';\r\n\r\n@Component({\r\n selector: 'allocation-prepaid-revenue',\r\n templateUrl: './allocation-prepaid-revenue.component.html',\r\n styleUrls: [\r\n '../../../../form.styles.scss',\r\n './allocation-prepaid-revenue.component.scss',\r\n ],\r\n})\r\nexport class AllocationPrepaidRevenueComponent implements OnInit, OnDestroy {\r\n @Input('allocationRunId')\r\n public allocationRunId: number;\r\n @Input('isReadOnlyMode')\r\n public isReadOnlyMode = false;\r\n @ViewChild('prepaidRevenueModal')\r\n public prepaidRevenueModal: TemplateRef;\r\n public errorMessage = '';\r\n public prepaidRevenueForm: FormGroup;\r\n public allocationPrepaidRevenueFormArray: FormArray;\r\n public loading = false;\r\n public allocationRunTotalPrepaidRevenue: number;\r\n public totalPrepaidPower: number;\r\n private modalRef: BsModalRef;\r\n private allocationRunTotalPrepaidPower: number;\r\n private triggerPrepaidRevenueComponentSubscription: Subscription;\r\n\r\n constructor(\r\n private router: Router,\r\n private modalService: BsModalService,\r\n private allocationRunService: AllocationRunService,\r\n private toaster: ToastrService,\r\n public commonService: CommonService,\r\n public componentTriggersService: ComponentTriggersService\r\n ) {}\r\n\r\n public ngOnInit() {\r\n this.triggerPrepaidRevenueComponentSubscription = this.componentTriggersService.triggerPrepaidRevenueComponent.subscribe(\r\n (totalPrepaidPower: number) => {\r\n this.allocationRunTotalPrepaidPower = isNullOrUndefined(\r\n totalPrepaidPower\r\n )\r\n ? 0\r\n : totalPrepaidPower;\r\n this.initialize();\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n }\r\n\r\n public ngOnDestroy() {\r\n this.triggerPrepaidRevenueComponentSubscription.unsubscribe();\r\n }\r\n\r\n public onChangeBlockPropertyValue(\r\n event,\r\n tariffBlockId: number,\r\n property: string\r\n ) {\r\n const allocationPrepaidRevenueIndex = this.allocationPrepaidRevenueFormArray.controls.findIndex(\r\n (allocationPrepaidRevenueFormGroup: FormGroup) => {\r\n return (\r\n allocationPrepaidRevenueFormGroup.controls.tariffBlockId\r\n .value === tariffBlockId\r\n );\r\n }\r\n );\r\n const control = this.allocationPrepaidRevenueFormArray\r\n .at(allocationPrepaidRevenueIndex)\r\n .get(property);\r\n control.patchValue(+event.target.value);\r\n control.markAsTouched();\r\n this.setTotalPrepaidAndRevenue();\r\n this.setBlockRevenue(tariffBlockId);\r\n }\r\n\r\n public onSubmit() {\r\n this.allocationPrepaidRevenueFormArray.controls.forEach(\r\n (allocationPrepaidRevenue: FormGroup) => {\r\n this.setBlockRevenue(\r\n allocationPrepaidRevenue.get('tariffBlockId').value\r\n );\r\n }\r\n );\r\n\r\n this.commonService.validateAllFormFields(this.prepaidRevenueForm);\r\n if (this.prepaidRevenueForm.valid && this.prepaidRevenueValidation()) {\r\n this.modalRef.hide();\r\n this.allocationRunService\r\n .updateAllocationPrepaidRevenue(\r\n this.prepaidRevenueForm.get(\r\n 'allocationPrepaidRevenueFormArray'\r\n ).value\r\n )\r\n .subscribe(\r\n (response) => {\r\n this.toaster.success(\r\n !isNullOrUndefined(response.successMessage)\r\n ? response.successMessage\r\n : 'Allocation run prepaid revenue successfully updated'\r\n );\r\n this.router.navigate([\r\n 'allocation',\r\n this.allocationRunId,\r\n 'details',\r\n ]);\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.toaster.error(this.errorMessage);\r\n }\r\n );\r\n }\r\n }\r\n\r\n public onPrepaidRevenueCancel(): void {\r\n this.modalRef.hide();\r\n }\r\n\r\n private initialize() {\r\n this.errorMessage = '';\r\n this.modalRef = this.modalService.show(this.prepaidRevenueModal, {\r\n class: 'modal-lg',\r\n });\r\n this.loading = true;\r\n this.allocationRunService\r\n .getAllocationPrepaidRevenue(this.allocationRunId)\r\n .subscribe(\r\n (\r\n allocationPrepaidRevenueDtoList: AllocationPrepaidRevenue[]\r\n ) => {\r\n this.initAllocationPrepaidRevenueForm(\r\n allocationPrepaidRevenueDtoList\r\n );\r\n this.setTotalPrepaidAndRevenue();\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n\r\n private initAllocationPrepaidRevenueForm(\r\n allocationPrepaidRevenueDtoList: AllocationPrepaidRevenue[]\r\n ) {\r\n this.allocationPrepaidRevenueFormArray = new FormArray(\r\n this.initAllocationPrepaidRevenueFormArray(\r\n allocationPrepaidRevenueDtoList\r\n )\r\n );\r\n this.prepaidRevenueForm = new FormGroup({\r\n allocationPrepaidRevenueFormArray: this\r\n .allocationPrepaidRevenueFormArray,\r\n });\r\n }\r\n\r\n private initAllocationPrepaidRevenueFormArray(\r\n allocationPrepaidRevenueDtoList: AllocationPrepaidRevenue[]\r\n ): FormGroup[] {\r\n const allocationPrepaidRevenueFormGroups: FormGroup[] = [];\r\n allocationPrepaidRevenueDtoList.forEach(\r\n (allocationPrepaidRevenue: AllocationPrepaidRevenue) => {\r\n allocationPrepaidRevenueFormGroups.push(\r\n this.initAllocationPrepaidRevenueFormGroup(\r\n allocationPrepaidRevenue\r\n )\r\n );\r\n }\r\n );\r\n return allocationPrepaidRevenueFormGroups;\r\n }\r\n\r\n private initAllocationPrepaidRevenueFormGroup(\r\n allocationPrepaidRevenue: AllocationPrepaidRevenue\r\n ): FormGroup {\r\n return new FormGroup({\r\n allocationPrepaidRevenueId: new FormControl(\r\n allocationPrepaidRevenue.allocationPrepaidRevenueId\r\n ),\r\n allocationRunId: new FormControl(\r\n allocationPrepaidRevenue.allocationRunId\r\n ),\r\n tariffBlockId: new FormControl(\r\n allocationPrepaidRevenue.tariffBlockId\r\n ),\r\n blockKWh: new FormControl(allocationPrepaidRevenue.blockKWh, [\r\n Validators.required,\r\n Validators.max(9999999999.99999),\r\n ]),\r\n tariffBlockRevenue: new FormControl(\r\n allocationPrepaidRevenue.tariffBlockRevenue,\r\n [Validators.required, Validators.max(9999999999.99999)]\r\n ),\r\n vendorName: new FormControl(\r\n allocationPrepaidRevenue.vendorName + '*#*#'\r\n ),\r\n tariffName: new FormControl(allocationPrepaidRevenue.tariffName),\r\n blockName: new FormControl(allocationPrepaidRevenue.blockName),\r\n activeBlockRate: new FormControl(\r\n isNullOrUndefined(\r\n allocationPrepaidRevenue.tariffBlock.activeTariffBlockRate\r\n )\r\n ? 0\r\n : allocationPrepaidRevenue.tariffBlock.activeTariffBlockRate\r\n ),\r\n });\r\n }\r\n\r\n private prepaidRevenueValidation(): boolean {\r\n const totalBlockKwh = this.allocationPrepaidRevenueFormArray.controls\r\n .map((allocationPrepaidRevenueFormGroup: FormGroup) => {\r\n return allocationPrepaidRevenueFormGroup.get('blockKWh').value;\r\n })\r\n .reduce((blockKWhA, blockKWhB) => blockKWhA + blockKWhB);\r\n\r\n if (totalBlockKwh > this.allocationRunTotalPrepaidPower) {\r\n this.errorMessage =\r\n 'Total Block kWh (' +\r\n totalBlockKwh +\r\n 'kWh) exceeds total prepaid power allocated in the allocation run (' +\r\n this.allocationRunTotalPrepaidPower +\r\n 'kWh)';\r\n return false;\r\n }\r\n this.errorMessage = '';\r\n return true;\r\n }\r\n\r\n private setTotalPrepaidAndRevenue() {\r\n this.totalPrepaidPower = this.allocationPrepaidRevenueFormArray.controls\r\n .map((allocationPrepaidRevenueFormGroup: FormGroup) => {\r\n return allocationPrepaidRevenueFormGroup.get('blockKWh').value;\r\n })\r\n .reduce(\r\n (blockRevenueA, blockRevenueB) => blockRevenueA + blockRevenueB\r\n );\r\n\r\n this.allocationRunTotalPrepaidRevenue = this.allocationPrepaidRevenueFormArray.controls\r\n .map((allocationPrepaidRevenueFormGroup: FormGroup) => {\r\n return (\r\n allocationPrepaidRevenueFormGroup.get('blockKWh').value *\r\n allocationPrepaidRevenueFormGroup.get('activeBlockRate')\r\n .value\r\n );\r\n })\r\n .reduce(\r\n (blockRevenueA, blockRevenueB) => blockRevenueA + blockRevenueB\r\n );\r\n }\r\n\r\n private setBlockRevenue(tariffBlockId: number) {\r\n const allocationPrepaidRevenueIndex = this.allocationPrepaidRevenueFormArray.controls.findIndex(\r\n (allocationPrepaidRevenueFormGroup: FormGroup) => {\r\n return (\r\n allocationPrepaidRevenueFormGroup.controls.tariffBlockId\r\n .value === tariffBlockId\r\n );\r\n }\r\n );\r\n\r\n this.allocationPrepaidRevenueFormArray\r\n .at(allocationPrepaidRevenueIndex)\r\n .get('tariffBlockRevenue')\r\n .patchValue(\r\n this.allocationPrepaidRevenueFormArray\r\n .at(allocationPrepaidRevenueIndex)\r\n .get('activeBlockRate').value *\r\n this.allocationPrepaidRevenueFormArray\r\n .at(allocationPrepaidRevenueIndex)\r\n .get('blockKWh').value\r\n );\r\n }\r\n}\r\n","import { PrepaidVendor } from '../../../model/prepaid-vendor/prepaid-vendor.model';\r\nimport { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { Tariff } from '../../../model/tariff/tariff.model';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { Page } from '../../../model/page.model';\r\n\r\n@Injectable()\r\nexport class PrepaidVendorService {\r\n constructor(private httpClient: HttpClient) {}\r\n\r\n public getAllPrepaidVendorsByDistributorId(\r\n distributorId: number\r\n ): Observable {\r\n return this.httpClient.get(\r\n API_URL +\r\n 'PrepaidVendor/GetPrepaidVendorsByDistributorId?distributorId=' +\r\n distributorId\r\n );\r\n }\r\n\r\n public getPrepaidVendorById(prepaidVendorId: number): Observable {\r\n return this.httpClient.get(\r\n API_URL +\r\n 'PrepaidVendor/GetPrepaidVendorById?prepaidVendorId=' +\r\n prepaidVendorId\r\n );\r\n }\r\n\r\n public addPrepaidVendor(prepaidVendor: any): Observable {\r\n prepaidVendor.prepaidTariffs = [];\r\n const tariff = new Tariff(prepaidVendor.tariffName, null, null, null);\r\n prepaidVendor.prepaidTariffs.push(tariff);\r\n return this.httpClient.post(\r\n API_URL + 'PrepaidVendor/AddPrepaidVendor',\r\n prepaidVendor\r\n );\r\n }\r\n\r\n public updatePrepaidVendor(prepaidVendor: any): Observable {\r\n prepaidVendor.prepaidTariffs = [];\r\n const tariff = new Tariff(prepaidVendor.tariffName, null, null, null);\r\n prepaidVendor.prepaidTariffs.push(tariff);\r\n return this.httpClient.post(\r\n API_URL + 'PrepaidVendor/UpdatePrepaidVendor',\r\n prepaidVendor\r\n );\r\n }\r\n\r\n public addPrepaidVendorTariffBlock(tariffBlock: any): Observable {\r\n return this.httpClient.post(\r\n API_URL + 'PrepaidVendor/AddPrepaidVendorTariffBlock',\r\n tariffBlock\r\n );\r\n }\r\n\r\n public updatePrepaidVendorTariffBlock(tariffBlock: any): Observable {\r\n return this.httpClient.post(\r\n API_URL + 'PrepaidVendor/UpdatePrepaidVendorTariffBlock',\r\n tariffBlock\r\n );\r\n }\r\n\r\n public validateIdentifier(\r\n prepaidVendors: PrepaidVendor[],\r\n identifier: string\r\n ): boolean {\r\n identifier =\r\n identifier == null\r\n ? null\r\n : identifier.replace(' ', '').toLowerCase();\r\n return isNullOrUndefined(identifier) || identifier.length === 0\r\n ? true\r\n : isNullOrUndefined(\r\n prepaidVendors\r\n .map((prepaidVendor) => prepaidVendor.identifier)\r\n .filter((id) => !isNullOrUndefined(id))\r\n .find(\r\n (id) =>\r\n id.replace(' ', '').toLowerCase() === identifier\r\n )\r\n );\r\n }\r\n\r\n public getPrepaidVendors() {\r\n return this.httpClient.get(API_URL + 'PrepaidVendor/GetPrepaidVendors');\r\n }\r\n\r\n public addPrepaidVendorPrepaidRemovalPercentage(\r\n prepaidVendorPrepaidRemovalPercentage: any\r\n ): Observable {\r\n return this.httpClient.post(\r\n API_URL + 'PrepaidVendor/AddPrepaidVendorPrepaidRemovalPercentage',\r\n prepaidVendorPrepaidRemovalPercentage\r\n );\r\n }\r\n\r\n public updatePrepaidVendorPrepaidRemovalPercentage(\r\n prepaidVendorPrepaidRemovalPercentage: any\r\n ): Observable {\r\n return this.httpClient.post(\r\n API_URL +\r\n 'PrepaidVendor/UpdatePrepaidVendorPrepaidRemovalPercentage',\r\n prepaidVendorPrepaidRemovalPercentage\r\n );\r\n }\r\n\r\n public getPrepaidVendorPrepaidRemovalPercentagePage(\r\n prepaidVendorId: number,\r\n searchString: string,\r\n page: Page,\r\n sortProp: any\r\n ): Observable {\r\n if (isNullOrUndefined(sortProp.direction)) {\r\n sortProp.direction = '';\r\n }\r\n if (isNullOrUndefined(sortProp.property)) {\r\n sortProp.property = '';\r\n }\r\n\r\n return this.httpClient.get(\r\n API_URL +\r\n 'PrepaidVendor/GetPrepaidVendorPrepaidRemovalPercentagePage?prepaidVendorId=' +\r\n prepaidVendorId +\r\n '&searchString=' +\r\n searchString +\r\n '&offset=' +\r\n page.offset +\r\n '&pageSize=' +\r\n page.size +\r\n '&sortDirection=' +\r\n sortProp.direction +\r\n '&sortProperty=' +\r\n sortProp.property\r\n );\r\n }\r\n}\r\n","import { Subscription } from 'rxjs/Rx';\r\nimport { PrepaidVendorService } from './prepaid-vendor.service';\r\nimport {\r\n Component,\r\n Input,\r\n OnInit,\r\n TemplateRef,\r\n OnDestroy,\r\n} from '@angular/core';\r\nimport { FormGroup, FormControl, Validators } from '@angular/forms';\r\nimport { BsModalRef, BsModalService } from 'ngx-bootstrap';\r\nimport { CommonService } from '../../../common/common-service';\r\n\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { PrepaidVendor } from '../../../model/prepaid-vendor/prepaid-vendor.model';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { ComponentTriggersService } from '../../../common/component-triggers.service';\r\nimport { ToastrService } from 'ngx-toastr';\r\n\r\n@Component({\r\n selector: 'prepaid-vendor',\r\n templateUrl: './prepaid-vendor.component.html',\r\n styleUrls: [\r\n './prepaid-vendor.component.scss',\r\n './../../../component/form.styles.scss',\r\n ],\r\n})\r\nexport class PrepaidVendorComponent implements OnInit, OnDestroy {\r\n public loading = false;\r\n public distributorId: number = 0;\r\n public prepaidVendors: PrepaidVendor[] = [];\r\n public newPrepaidVendorForm: FormGroup;\r\n public errorMessage = '';\r\n @Input('showPrepaidVendorList')\r\n public showPrepaidVendorList = true;\r\n @Input('isReadOnlyMode')\r\n public isReadOnlyMode = false;\r\n private modalRef: BsModalRef;\r\n private prepaidVendorSubscription: Subscription;\r\n\r\n constructor(\r\n protected route: ActivatedRoute,\r\n private modalService: BsModalService,\r\n public commonService: CommonService,\r\n private router: Router,\r\n private prepaidVendorService: PrepaidVendorService,\r\n protected toastr: ToastrService,\r\n private componentTriggerService: ComponentTriggersService\r\n ) {\r\n this.newPrepaidVendorForm = new FormGroup({\r\n distributorId: new FormControl(0, [Validators.required]),\r\n name: new FormControl(null, [Validators.required]),\r\n serviceFeePercentage: new FormControl(0, [Validators.required]),\r\n tariffName: new FormControl(null, [Validators.required]),\r\n });\r\n }\r\n\r\n public ngOnInit() {\r\n this.prepaidVendorSubscription = this.componentTriggerService.triggerPrepaidVendorComponent.subscribe(\r\n (shouldShow) => {\r\n this.showPrepaidVendorList = shouldShow;\r\n this.getDistributorPrepaidVendors();\r\n }\r\n );\r\n this.route.params.subscribe(\r\n (params) => {\r\n this.distributorId = params.distributorId;\r\n this.getDistributorPrepaidVendors();\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n this.prepaidVendorSubscription.unsubscribe();\r\n }\r\n\r\n public getDistributorPrepaidVendors(): void {\r\n this.loading = true;\r\n this.prepaidVendorService\r\n .getAllPrepaidVendorsByDistributorId(this.distributorId)\r\n .subscribe(\r\n (vendors) => {\r\n vendors.forEach((vendor) => {\r\n const tariffName = isNullOrUndefined(\r\n vendor.prepaidTariffs[0]\r\n )\r\n ? ''\r\n : vendor.prepaidTariffs[0].tariffName;\r\n vendor.tariffName = tariffName;\r\n });\r\n this.prepaidVendors = vendors;\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n\r\n public newPrepaidVendorModal(template: TemplateRef): void {\r\n this.newPrepaidVendorForm.reset();\r\n this.modalRef = this.modalService.show(template);\r\n }\r\n\r\n public onPopupSubmit(): void {\r\n this.commonService.validateAllFormFields(this.newPrepaidVendorForm);\r\n this.newPrepaidVendorForm.controls.distributorId.setValue(\r\n this.distributorId\r\n );\r\n if (this.newPrepaidVendorForm.valid) {\r\n this.prepaidVendorService\r\n .addPrepaidVendor(this.newPrepaidVendorForm.value)\r\n .subscribe(\r\n (response) => {\r\n this.getDistributorPrepaidVendors();\r\n this.modalRef.hide();\r\n this.toastr.success(\r\n 'Prepaid Vendor Was Successfully Added'\r\n );\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.toastr.error(this.errorMessage);\r\n }\r\n );\r\n }\r\n }\r\n\r\n public goToDetails(prepaidVendorId: number): void {\r\n this.router.navigate([\r\n 'distributor',\r\n this.distributorId,\r\n 'prepaid-vendor',\r\n prepaidVendorId,\r\n ]);\r\n }\r\n\r\n public onSelect(event: any): void {\r\n const prepaidVendorId = event.selected[0].prepaidVendorId;\r\n this.componentTriggerService.triggerPrepaidVendorDetailsComponent.next(\r\n prepaidVendorId\r\n );\r\n this.showPrepaidVendorList = false;\r\n }\r\n}\r\n","import { Subscription } from 'rxjs/Rx';\r\nimport { Period } from '../../../../model/period.model';\r\nimport { PrepaidVendorTariffBlock } from '../../../../model/prepaid-vendor/prepaid-vendor-tariff-block.model';\r\nimport { PrepaidVendor } from '../../../../model/prepaid-vendor/prepaid-vendor.model';\r\nimport { CommonService } from '../../../../common/common-service';\r\nimport {\r\n Component,\r\n OnInit,\r\n TemplateRef,\r\n ChangeDetectorRef,\r\n AfterViewChecked,\r\n Input,\r\n OnDestroy,\r\n} from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { FormGroup, FormControl, Validators } from '@angular/forms';\r\nimport { BsModalRef, BsModalService } from 'ngx-bootstrap';\r\nimport { PrepaidVendorService } from '../prepaid-vendor.service';\r\n\r\nimport { ColumnConfiguration } from '../../../../model/crud-table/column-configuration.model';\r\nimport { TariffRate } from '../../../../model/tariff/tariff-rate.model';\r\nimport { ComponentTriggersService } from '../../../../common/component-triggers.service';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { AuthorisationService } from '../../../../authorisation-service/authorisation.service';\r\n\r\n@Component({\r\n selector: 'prepaid-vendor-details',\r\n templateUrl: './prepaid-vendor-details.component.html',\r\n styleUrls: [\r\n './prepaid-vendor-details.component.scss',\r\n '../../../../component/form.styles.scss',\r\n ],\r\n})\r\nexport class PrepaidVendorDetailsComponent\r\n implements OnInit, AfterViewChecked, OnDestroy {\r\n @Input('showPrepaidVendorDetails')\r\n public showPrepaidVendorDetails: boolean = false;\r\n public prepaidVendorId: number;\r\n\r\n public prepaidVendorForm: FormGroup;\r\n public newTariffBlockForm: FormGroup;\r\n public modalRef: BsModalRef;\r\n\r\n public tariffRatesPerPeriod: TariffRate[] = [];\r\n public consumptionList: any[] = [];\r\n public prepaidVendor: PrepaidVendor;\r\n public selectedTariffBlock: PrepaidVendorTariffBlock;\r\n public tariffId: number;\r\n public isReadOnlyMode: boolean = false;\r\n\r\n public loading: boolean = true;\r\n public popupUpdate: boolean;\r\n public errorMessage: string;\r\n public savingTariffBlock: boolean = false;\r\n\r\n public tariffRatesConfig: ColumnConfiguration[];\r\n private prepaidVendors: PrepaidVendor[];\r\n private prepaidVendorDetailsSubscription: Subscription;\r\n\r\n constructor(\r\n private router: Router,\r\n private modalService: BsModalService,\r\n private prepaidVendorService: PrepaidVendorService,\r\n private cdRef: ChangeDetectorRef,\r\n protected route: ActivatedRoute,\r\n protected toastr: ToastrService,\r\n public commonService: CommonService,\r\n private authorisationService: AuthorisationService,\r\n private componentTriggerService: ComponentTriggersService\r\n ) {\r\n this.initTariffRates();\r\n }\r\n\r\n public ngOnInit() {\r\n this.prepaidVendorDetailsSubscription = this.componentTriggerService.triggerPrepaidVendorDetailsComponent.subscribe(\r\n (prepaidVendorId) => {\r\n this.prepaidVendorId = prepaidVendorId;\r\n this.initPrepaidVendor(prepaidVendorId);\r\n this.showPrepaidVendorDetails = true;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n this.isReadOnlyMode = this.authorisationService.isDistributorsReadOnly();\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n this.prepaidVendorDetailsSubscription.unsubscribe();\r\n }\r\n\r\n public initPrepaidVendor(prepaidVendorId: number): void {\r\n this.loading = true;\r\n this.prepaidVendorService\r\n .getPrepaidVendorById(prepaidVendorId)\r\n .subscribe(\r\n (prepaidVendor) => {\r\n this.prepaidVendor = prepaidVendor;\r\n this.populatePrepaidVendorForm();\r\n this.tariffId = this.prepaidVendor.prepaidTariffs[0].tariffId;\r\n this.prepaidVendorService.getPrepaidVendors().subscribe(\r\n (prepaidVendors) => {\r\n this.prepaidVendors = prepaidVendors as PrepaidVendor[];\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n this.toastr.error(this.errorMessage);\r\n }\r\n );\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n this.toastr.error(this.errorMessage);\r\n }\r\n );\r\n }\r\n\r\n public ngAfterViewChecked() {\r\n this.cdRef.detectChanges();\r\n }\r\n\r\n public newTariffBlockModal(template: TemplateRef): void {\r\n this.popupUpdate = false;\r\n this.selectedTariffBlock = new PrepaidVendorTariffBlock();\r\n this.loadTariffBlockDetails();\r\n this.modalRef = this.modalService.show(template, { class: 'modal-lg' });\r\n }\r\n\r\n public onPopupSubmit(): void {\r\n this.errorMessage = '';\r\n this.commonService.validateAllFormFields(this.newTariffBlockForm);\r\n this.newTariffBlockForm.controls.tariffId.setValue(this.tariffId);\r\n if (this.newTariffBlockForm.valid) {\r\n this.savingTariffBlock = true;\r\n if (!this.popupUpdate) {\r\n this.createTariffBlock();\r\n } else {\r\n this.updateTariffBlock();\r\n }\r\n }\r\n }\r\n\r\n public createTariffBlock(): void {\r\n this.prepaidVendorService\r\n .addPrepaidVendorTariffBlock(this.newTariffBlockForm.value)\r\n .subscribe(\r\n () => {\r\n this.modalRef.hide();\r\n this.initPrepaidVendor(this.prepaidVendor.prepaidVendorId);\r\n this.toastr.success('Tariff Block Was Successfully Added');\r\n this.savingTariffBlock = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.toastr.error(this.errorMessage);\r\n this.savingTariffBlock = false;\r\n }\r\n );\r\n }\r\n\r\n public updateTariffBlock(): void {\r\n this.newTariffBlockForm.controls.tariffBlockId.setValue(\r\n this.selectedTariffBlock.tariffBlockId\r\n );\r\n this.prepaidVendorService\r\n .updatePrepaidVendorTariffBlock(this.newTariffBlockForm.value)\r\n .subscribe(\r\n () => {\r\n this.modalRef.hide();\r\n this.initPrepaidVendor(this.prepaidVendor.prepaidVendorId);\r\n this.toastr.success('Tariff block successfully updated');\r\n this.savingTariffBlock = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.toastr.error(this.errorMessage);\r\n this.savingTariffBlock = false;\r\n }\r\n );\r\n }\r\n\r\n public onSubmitUpdatePrepaidVendor(): void {\r\n this.commonService.validateAllFormFields(this.prepaidVendorForm);\r\n const validIdentifier = this.prepaidVendorService.validateIdentifier(\r\n this.prepaidVendors.filter(\r\n (pv) =>\r\n pv.prepaidVendorId !== this.prepaidVendor.prepaidVendorId\r\n ),\r\n this.prepaidVendorForm.value.identifier\r\n );\r\n if (this.prepaidVendorForm.valid && validIdentifier) {\r\n this.prepaidVendorForm.controls.prepaidVendorId.setValue(\r\n this.prepaidVendor.prepaidVendorId\r\n );\r\n this.prepaidVendorService\r\n .updatePrepaidVendor(this.prepaidVendorForm.value)\r\n .subscribe(\r\n (prepaidVendor) => {\r\n this.prepaidVendor = prepaidVendor;\r\n this.toastr.success(\r\n 'Prepaid Vendor Was Successfully Updated'\r\n );\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.toastr.error(this.errorMessage);\r\n }\r\n );\r\n } else if (!validIdentifier) {\r\n this.errorMessage =\r\n 'Duplicate identifier: ' +\r\n this.prepaidVendorForm.value.identifier;\r\n }\r\n }\r\n\r\n public onClickTariffBlock(\r\n selectedTariffBlock: any,\r\n template: TemplateRef\r\n ): void {\r\n this.selectedTariffBlock = selectedTariffBlock;\r\n this.popupUpdate = true;\r\n this.loadTariffBlockDetails();\r\n this.modalRef = this.modalService.show(template, { class: 'modal-lg' });\r\n }\r\n\r\n public populatePrepaidVendorForm(): void {\r\n this.prepaidVendorForm = new FormGroup({\r\n prepaidVendorId: new FormControl(null),\r\n distributorId: new FormControl(this.prepaidVendor.distributorId, [\r\n Validators.required,\r\n ]),\r\n name: new FormControl(this.prepaidVendor.name, [\r\n Validators.required,\r\n ]),\r\n serviceFeePercentage: new FormControl(\r\n this.prepaidVendor.serviceFeePercentage,\r\n [Validators.required, Validators.max(100)]\r\n ),\r\n tariffName: new FormControl(\r\n this.prepaidVendor.prepaidTariffs[0].tariffName,\r\n [Validators.required]\r\n ),\r\n identifier: new FormControl(this.prepaidVendor.identifier, [\r\n Validators.required,\r\n ]),\r\n });\r\n if (this.isReadOnlyMode) {\r\n this.prepaidVendorForm.disable();\r\n }\r\n }\r\n\r\n public loadTariffBlockDetails(): void {\r\n const rates = this.popupUpdate\r\n ? this.selectedTariffBlock.tariffRates\r\n : null;\r\n this.newTariffBlockForm = new FormGroup({\r\n tariffBlockId: new FormControl(null),\r\n tariffId: new FormControl(this.tariffId),\r\n blockName: new FormControl(this.selectedTariffBlock.blockName, [\r\n Validators.required,\r\n ]),\r\n startKwh: new FormControl(this.selectedTariffBlock.startKwh, [\r\n Validators.required,\r\n ]),\r\n endKwh: new FormControl(this.selectedTariffBlock.endKwh, [\r\n Validators.required,\r\n ]),\r\n consumption: new FormControl(this.selectedTariffBlock.consumption),\r\n tariffRates: new FormControl(rates),\r\n });\r\n if (this.isReadOnlyMode) {\r\n this.newTariffBlockForm.disable();\r\n }\r\n }\r\n\r\n public initTariffRates(): void {\r\n this.commonService.getEntityLookups(['Period']).subscribe(\r\n (entityLookups) => {\r\n const periods = entityLookups.entityLookupResultList['period'];\r\n this.tariffRatesConfig = [\r\n new ColumnConfiguration('tariffBlockRateId').initalizeKey(),\r\n new ColumnConfiguration('periodId', 'Period', [\r\n Validators.required,\r\n ]).initializeDropdown(periods),\r\n new ColumnConfiguration('kwhRate', 'kWh Rate', [\r\n Validators.required,\r\n ]).initializeNumber('R'),\r\n new ColumnConfiguration('wheelingFee', 'Wheeling Fee', [\r\n Validators.required,\r\n ]).initializeNumber('R/Kwh'),\r\n ];\r\n this.initNewTariffBlockForm();\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n }\r\n\r\n public initNewTariffBlockForm(): void {\r\n this.newTariffBlockForm = new FormGroup({\r\n tariffId: new FormControl(this.tariffId),\r\n blockName: new FormControl(null, [Validators.required]),\r\n startKwh: new FormControl(null, [Validators.required]),\r\n endKwh: new FormControl(null, [Validators.required]),\r\n tariffRates: new FormControl(null),\r\n });\r\n if (this.isReadOnlyMode) {\r\n this.newTariffBlockForm.disable();\r\n }\r\n }\r\n\r\n public validateIdentifier() {\r\n const validIdentifier = this.prepaidVendorService.validateIdentifier(\r\n this.prepaidVendors.filter(\r\n (pv) =>\r\n pv.prepaidVendorId !== this.prepaidVendor.prepaidVendorId\r\n ),\r\n this.prepaidVendorForm.value.identifier\r\n );\r\n if (!validIdentifier) {\r\n this.errorMessage =\r\n 'Duplicate identifier: ' +\r\n this.prepaidVendorForm.value.identifier;\r\n } else {\r\n this.errorMessage = '';\r\n }\r\n }\r\n\r\n public onBack() {\r\n this.componentTriggerService.triggerPrepaidVendorComponent.next(true);\r\n this.showPrepaidVendorDetails = false;\r\n }\r\n}\r\n","import { Consumption } from '../../widget/consumption/consumption.model';\r\n\r\nexport class PrepaidVendorTariffBlock {\r\n constructor(\r\n public tariffBlockId: number = 0,\r\n public blockName: string = '',\r\n public startKwh: number = 0,\r\n public endKwh: number = 0,\r\n public tariffRates: any[] = [],\r\n public consumption: Consumption[] = [],\r\n public averageConsumption: number = 0,\r\n public wheelingFee: number = 0\r\n ) {}\r\n}\r\n","import { debounceTime } from 'rxjs/operators';\r\nimport { Component, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { TariffService } from '../tariff.service';\r\nimport { ComponentTriggersService } from '../../../common/component-triggers.service';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { Subscription } from 'rxjs/Rx';\r\nimport { Page } from '../../../model/page.model';\r\nimport { FormControl, FormGroup } from '@angular/forms';\r\nimport { CommonService } from '../../../common/common-service';\r\n\r\n@Component({\r\n selector: 'tariff-list',\r\n templateUrl: './tariff-list.component.html',\r\n styleUrls: ['../../form.styles.scss', './tariff-list.component.scss'],\r\n})\r\nexport class TariffListComponent implements OnInit, OnDestroy {\r\n @Input('distributorId')\r\n public distributorId: number;\r\n @Input('consumerCompanyPremisesId')\r\n public consumerCompanyPremisesId: number;\r\n @Input('showTariffList')\r\n public showTariffList: boolean;\r\n @Input('isReadOnlyMode')\r\n public isReadOnlyMode: boolean = false;\r\n public loading = false;\r\n public errorMessage = '';\r\n public page: Page;\r\n public pageItems: any[];\r\n private sortProp = {};\r\n private searchForm: FormGroup;\r\n private tariffListSubscription: Subscription;\r\n\r\n constructor(\r\n private tariffService: TariffService,\r\n private componentTriggerService: ComponentTriggersService,\r\n public commonService: CommonService\r\n ) {\r\n this.page = new Page();\r\n this.searchForm = new FormGroup({\r\n search: new FormControl(''),\r\n });\r\n }\r\n\r\n public ngOnInit() {\r\n this.searchForm\r\n .get('search')\r\n .valueChanges.pipe(debounceTime(300))\r\n .subscribe(\r\n () => {\r\n this.changePage({ offset: 0 });\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n this.tariffListSubscription = this.componentTriggerService.triggerTariffListComponent.subscribe(\r\n (response: { distributorOrConsumer: string; id: number }) => {\r\n if (response.distributorOrConsumer === 'distributor') {\r\n this.distributorId = response.id;\r\n } else {\r\n this.consumerCompanyPremisesId = response.id;\r\n }\r\n this.initialize();\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n this.initialize();\r\n }\r\n\r\n public ngOnDestroy() {\r\n this.tariffListSubscription.unsubscribe();\r\n }\r\n\r\n public changePage(pageInfo: any) {\r\n this.errorMessage = '';\r\n if (isNullOrUndefined(this.distributorId)) {\r\n // TODO: this.changeConsumerCompanyPremisesPage(pageInfo)\r\n } else {\r\n this.changeDistributorTariffPage(pageInfo);\r\n }\r\n }\r\n\r\n public addTariff() {\r\n this.showTariffList = false;\r\n this.componentTriggerService.triggerTariffComponent.next(0);\r\n }\r\n\r\n public onSelect(event: any) {\r\n this.showTariffList = false;\r\n this.componentTriggerService.triggerTariffComponent.next(\r\n event.selected[0].tariffId\r\n );\r\n }\r\n\r\n public sortColumn(event: any): void {\r\n this.sortProp = {\r\n direction: event.sorts[0].dir,\r\n property: event.sorts[0].prop,\r\n };\r\n this.changePage({ offset: 0 });\r\n }\r\n\r\n public changeDistributorTariffPage(pageInfo: any): void {\r\n const searchString = this.searchForm.value.search;\r\n this.page.offset = pageInfo.offset * this.page.size;\r\n this.tariffService\r\n .getDistributorTariffsPage(\r\n this.distributorId,\r\n searchString,\r\n this.page,\r\n this.sortProp\r\n )\r\n .subscribe(\r\n (responsePage) => {\r\n this.page.totalPages = Math.ceil(\r\n responsePage.totalItems / responsePage.size\r\n );\r\n this.page.totalElements = responsePage.totalItems;\r\n this.pageItems = responsePage.items;\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n\r\n private initialize() {\r\n this.showTariffList = true;\r\n this.loading = true;\r\n this.changePage({ offset: 0 });\r\n }\r\n}\r\n","import { ActivatedRoute } from '@angular/router';\r\nimport {\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnInit,\r\n Output,\r\n TemplateRef,\r\n} from '@angular/core';\r\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\r\n\r\nimport { BsModalRef, BsModalService } from 'ngx-bootstrap';\r\nimport { IMultiSelectOption } from 'angular-2-dropdown-multiselect';\r\nimport { isNullOrUndefined } from 'util';\r\n\r\nimport { ColumnConfiguration, DataType } from './model/column-configuration';\r\nimport { CommonService } from '../../../common/common-service';\r\nimport { ContactService } from '../contact.service';\r\nimport { Contact } from '../../../model/contact.model';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { Attribute } from '../../../model/attribute.model';\r\n\r\n@Component({\r\n selector: 'contact-component',\r\n templateUrl: './contact.component.html',\r\n styleUrls: ['../../form.styles.scss'],\r\n})\r\nexport class ContactComponent implements OnInit {\r\n @Input('heading')\r\n public heading: string = '';\r\n @Input('attributes')\r\n public attributes: IMultiSelectOption[];\r\n @Input('excludeFields')\r\n public excludeFields: string[] = [];\r\n @Input('companyId')\r\n public companyId: number;\r\n @Input('isInConsumerApplicationMode')\r\n public isInConsumerApplicationMode: boolean;\r\n @Input('distributorId')\r\n public distributorId: number;\r\n @Input('enableActionsColumn')\r\n public enableActionsColumn: boolean = false;\r\n @Input('isReadOnlyMode')\r\n public isReadOnlyMode: boolean;\r\n @Input('disabledDesignations')\r\n public disabledDesignations: string[] = [\r\n 'IsAuthorisedContact',\r\n 'IsElectricityBillingsContact',\r\n ];\r\n public isAuthAndBillingContactLoaded: boolean = false;\r\n @Output()\r\n public authAndBillingContactLoaded = new EventEmitter();\r\n\r\n public newContactForm: FormGroup;\r\n public modalRef: BsModalRef;\r\n public contacts: any[] = [];\r\n public addContact: boolean = false;\r\n public errorMessage: '';\r\n public loadingText: string;\r\n public loading: boolean;\r\n private authorisedContactAttributeId: number;\r\n private electricityBillingsContactAttributeId: number;\r\n\r\n public constructor(\r\n protected route: ActivatedRoute,\r\n public commonService: CommonService,\r\n private modalService: BsModalService,\r\n private contactService: ContactService,\r\n private toaster: ToastrService,\r\n protected sanitizer: DomSanitizer\r\n ) {}\r\n\r\n public ngOnInit() {\r\n if (isNullOrUndefined(this.attributes)) {\r\n this.attributes = [];\r\n this.commonService\r\n .getAttributes([\r\n 'IsDirectorContact',\r\n 'HeadOfMetering',\r\n 'MeteringInstaller',\r\n 'MDMSOperator',\r\n 'ElectricityBillingSupervisor',\r\n 'ElectricityAccountingOfficer',\r\n 'HeadOfEnergy',\r\n 'TreasuryBillingContact',\r\n 'MunicipalManager',\r\n 'CFO',\r\n 'HeadOfElectricityInfrastructure',\r\n 'RevenueManager',\r\n 'EskomKeyAccountManager',\r\n 'Other',\r\n 'IsAuthorisedContact',\r\n 'IsElectricityBillingsContact',\r\n 'IsAdditionalElectricityBillingsContact',\r\n ])\r\n .subscribe(\r\n (attr) => {\r\n attr['attributeResultList'].forEach(\r\n (attribute: Attribute) => {\r\n if (\r\n attribute.attributeName ===\r\n 'IsAuthorisedContact'\r\n ) {\r\n this.authorisedContactAttributeId =\r\n attribute.attributeId;\r\n }\r\n if (\r\n attribute.attributeName ===\r\n 'IsElectricityBillingsContact'\r\n ) {\r\n this.electricityBillingsContactAttributeId =\r\n attribute.attributeId;\r\n }\r\n this.attributes.push({\r\n id: attribute.attributeId,\r\n name: attribute.attributeDisplayName,\r\n disabled:\r\n this.disabledDesignations.indexOf(\r\n attribute.attributeName\r\n ) >= 0,\r\n });\r\n this.getAllContacts();\r\n }\r\n );\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n }\r\n }\r\n\r\n public getAllContacts(): void {\r\n this.loadingText = 'Loading Contacts';\r\n this.loading = true;\r\n let contactlist: any;\r\n\r\n if (isNullOrUndefined(this.distributorId)) {\r\n contactlist = this.contactService.getContactsByCompanyId(\r\n this.companyId\r\n );\r\n } else {\r\n contactlist = this.contactService.getContactsByDistributorId(\r\n this.distributorId\r\n );\r\n }\r\n\r\n // Loading the contacts for either the company or the distributor based on the distributorId being set or the companyId.\r\n contactlist.subscribe(\r\n (contacts) => {\r\n this.contacts = contacts;\r\n this.checkForAuthAndBillingContactInConsumerApplicationMode();\r\n if (this.isAuthAndBillingContactLoaded) {\r\n this.authAndBillingContactLoaded.emit(\r\n this.isAuthAndBillingContactLoaded\r\n );\r\n }\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n\r\n public newContactModal(template: TemplateRef): void {\r\n this.errorMessage = '';\r\n this.addContact = true;\r\n this.initContactForm(new Contact());\r\n this.modalRef = this.modalService.show(template); // , { class: 'modal-lg' });\r\n }\r\n\r\n public onPopupSubmit(): void {\r\n this.errorMessage = '';\r\n this.errorMessage = undefined;\r\n this.commonService.validateAllFormFields(this.newContactForm);\r\n if (this.distributorId) {\r\n this.newContactForm.controls.distributorId.setValue(\r\n this.distributorId\r\n );\r\n this.newContactForm.controls.companyId.setValue(null);\r\n } else {\r\n this.newContactForm.controls.distributorId.setValue(null);\r\n this.newContactForm.controls.companyId.setValue(this.companyId);\r\n }\r\n this.checkForAuthAndBillingContactInConsumerApplicationMode(\r\n this.newContactForm.value\r\n );\r\n if (\r\n this.isInConsumerApplicationMode &&\r\n !this.isAuthAndBillingContactLoaded\r\n ) {\r\n // @ts-ignore\r\n this.errorMessage =\r\n 'You have to load at least one contact with the Authorised Contact and Electricity Billings Contact attributes';\r\n return;\r\n }\r\n if (this.newContactForm.valid) {\r\n this.loadingText = 'Submitting Contact';\r\n this.loading = true;\r\n this.modalRef.hide();\r\n if (this.addContact) {\r\n this.contactService\r\n .addContact(this.newContactForm.value)\r\n .subscribe(\r\n (response) => {\r\n this.getAllContacts();\r\n this.toaster.success(\r\n !isNullOrUndefined(response)\r\n ? response.successMessage\r\n : 'Successfully Added Contact'\r\n );\r\n if (this.isAuthAndBillingContactLoaded) {\r\n this.authAndBillingContactLoaded.emit(\r\n this.isAuthAndBillingContactLoaded\r\n );\r\n }\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n } else {\r\n this.contactService\r\n .updateContact(this.newContactForm.value)\r\n .subscribe(\r\n (response) => {\r\n this.getAllContacts();\r\n this.toaster.success(\r\n !isNullOrUndefined(response)\r\n ? response.successMessage\r\n : 'Successfully Added Contact'\r\n );\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n }\r\n }\r\n\r\n public deleteRow(contactRow: Contact) {\r\n this.errorMessage = '';\r\n // NOTE: This is for the onSelect method above to not be called as well,\r\n // since ngx-datatable sees the button click as the row being selected.\r\n event.stopPropagation();\r\n\r\n if (confirm('Are you sure you want to remove this contact?')) {\r\n this.loadingText = 'Deleting Contact';\r\n this.loading = true;\r\n this.errorMessage = undefined;\r\n this.contactService.deleteContact(contactRow.contactId).subscribe(\r\n () => {\r\n this.getAllContacts();\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n }\r\n\r\n public onSelect(event: any, template: TemplateRef): void {\r\n this.errorMessage = '';\r\n this.addContact = false;\r\n const contact = event.selected[0];\r\n this.initContactForm(contact);\r\n this.modalRef = this.modalService.show(template);\r\n }\r\n\r\n private initContactForm(contact: Contact): void {\r\n this.newContactForm = new FormGroup({\r\n companyId: new FormControl(this.companyId),\r\n distributorId: new FormControl(this.companyId),\r\n contactId: new FormControl(contact.contactId),\r\n firstName: new FormControl(\r\n contact.firstName,\r\n this.excludeFields.indexOf('firstName') > -1\r\n ? []\r\n : [Validators.required, Validators.maxLength(50)]\r\n ),\r\n lastName: new FormControl(\r\n contact.lastName,\r\n this.excludeFields.indexOf('lastName') > -1\r\n ? []\r\n : [Validators.required, Validators.maxLength(50)]\r\n ),\r\n email: new FormControl(\r\n contact.email,\r\n this.excludeFields.indexOf('email') > -1\r\n ? [Validators.maxLength(20)]\r\n : [Validators.required, Validators.email]\r\n ),\r\n position: new FormControl(\r\n contact.position,\r\n this.excludeFields.indexOf('position') > -1\r\n ? []\r\n : [Validators.required, Validators.maxLength(30)]\r\n ),\r\n identityNumber: new FormControl(\r\n contact.identityNumber,\r\n this.excludeFields.indexOf('identityNumber') > -1\r\n ? [Validators.minLength(13), Validators.maxLength(13)]\r\n : [\r\n Validators.required,\r\n Validators.minLength(13),\r\n Validators.maxLength(13),\r\n ]\r\n ),\r\n landLineNumber: new FormControl(\r\n contact.landLineNumber,\r\n this.excludeFields.indexOf('landLineNumber') > -1\r\n ? [Validators.minLength(10), Validators.maxLength(20)]\r\n : [\r\n Validators.required,\r\n Validators.minLength(10),\r\n Validators.maxLength(20),\r\n ]\r\n ),\r\n cellNumber: new FormControl(\r\n contact.cellNumber,\r\n this.excludeFields.indexOf('cellNumber') > -1\r\n ? [Validators.maxLength(20)]\r\n : [\r\n Validators.required,\r\n Validators.minLength(10),\r\n Validators.maxLength(20),\r\n ]\r\n ),\r\n attributeIds: new FormControl(\r\n contact.attributeIds,\r\n this.excludeFields.indexOf('attributeIds') > -1\r\n ? []\r\n : [Validators.required]\r\n ),\r\n });\r\n if (this.isReadOnlyMode) {\r\n this.newContactForm.disable();\r\n }\r\n }\r\n\r\n private checkForAuthAndBillingContactInConsumerApplicationMode(\r\n proposedNewContact: any = null\r\n ) {\r\n this.isAuthAndBillingContactLoaded = false;\r\n if (this.isInConsumerApplicationMode) {\r\n this.contacts.forEach((contact: Contact) => {\r\n if (\r\n contact.attributes.find(\r\n (a) =>\r\n a.attributeId === this.authorisedContactAttributeId\r\n ) &&\r\n contact.attributes.find(\r\n (a) =>\r\n a.attributeId ===\r\n this.electricityBillingsContactAttributeId\r\n )\r\n ) {\r\n this.isAuthAndBillingContactLoaded = true;\r\n return;\r\n }\r\n });\r\n if (\r\n !this.isAuthAndBillingContactLoaded &&\r\n proposedNewContact &&\r\n proposedNewContact.attributeIds\r\n ) {\r\n if (\r\n proposedNewContact.attributeIds.indexOf(\r\n this.authorisedContactAttributeId\r\n ) > -1 &&\r\n proposedNewContact.attributeIds.indexOf(\r\n this.electricityBillingsContactAttributeId\r\n ) > -1\r\n ) {\r\n this.isAuthAndBillingContactLoaded = true;\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { DashboardService } from './dashboard.service';\r\nimport { CommonService } from '../../common/common-service';\r\n\r\n@Component({\r\n selector: 'dashboard',\r\n templateUrl: './dashboard.component.html',\r\n styleUrls: ['./dashboard.component.scss'],\r\n})\r\nexport class DashboardComponent implements OnInit {\r\n public errorMessage = '';\r\n public initialStart: Date;\r\n\r\n public initialEnd: Date;\r\n\r\n public minDate: Date;\r\n\r\n public maxDate: Date;\r\n\r\n public initialGranularity: string;\r\n\r\n public enableYear = true;\r\n public enableMonth = true;\r\n public powerprofileloading = false;\r\n\r\n public chartData: Array<{\r\n name: string;\r\n series: Array<{ name: string; value: number }>;\r\n }>;\r\n\r\n constructor(\r\n public dashbordservice: DashboardService,\r\n public commonService: CommonService\r\n ) {\r\n this.initialEnd = new Date();\r\n this.initialStart = new Date();\r\n this.maxDate = this.initialEnd;\r\n this.initialStart.setDate(this.initialEnd.getDate() - 330);\r\n this.initialGranularity = 'month';\r\n }\r\n\r\n public ngOnInit() {\r\n this.initializePowerProfile();\r\n }\r\n\r\n private initializePowerProfile() {\r\n this.powerprofileloading = true;\r\n this.chartData = [];\r\n this.dashbordservice.getPowerProfilesToDate().subscribe(\r\n (PowertoDate) => {\r\n this.buildPowerProfileData(\r\n 'Allocation',\r\n PowertoDate.powerProfileToDateAllocation.powerPerMonthList\r\n );\r\n this.buildPowerProfileData(\r\n 'Consumption',\r\n PowertoDate.powerProfileToDateConsumption.powerPerMonthList\r\n );\r\n this.buildPowerProfileData(\r\n 'Generation',\r\n PowertoDate.powerProfileToDateGeneration.powerPerMonthList\r\n );\r\n this.powerprofileloading = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.powerprofileloading = false;\r\n }\r\n );\r\n }\r\n\r\n private buildPowerProfileData(\r\n powerProfileName: string,\r\n inputData: { [name: string]: number }\r\n ) {\r\n const inputDataIndexes = Object.keys(inputData);\r\n const chartDataSeries: Array<{ name: string; value: number }> = [];\r\n inputDataIndexes.forEach((inputDataIndex) => {\r\n chartDataSeries.push({\r\n name: inputDataIndex,\r\n value:\r\n inputData[inputDataIndex] < 0\r\n ? 0\r\n : inputData[inputDataIndex],\r\n });\r\n });\r\n this.chartData.push({\r\n name: powerProfileName,\r\n series: chartDataSeries,\r\n });\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { GenerationToDate } from '../../../model/view/generation-to-date.model';\r\nimport { DashboardService } from '../dashboard.service';\r\nimport { CommonService } from '../../../common/common-service';\r\n\r\n@Component({\r\n selector: 'generation-to-date',\r\n templateUrl: './generation-to-date.component.html',\r\n styleUrls: ['./generation-to-date.component.scss'],\r\n})\r\nexport class GenerationToDateComponent implements OnInit {\r\n public loading = false;\r\n public errorMessage = '';\r\n public chartData: Array<{ name: string; value: number }>;\r\n public yAxisTicks: number[] = [];\r\n\r\n constructor(\r\n private dashboardService: DashboardService,\r\n public commonService: CommonService\r\n ) {}\r\n\r\n public ngOnInit() {\r\n this.initialize();\r\n }\r\n\r\n private initialize() {\r\n this.loading = true;\r\n this.chartData = [];\r\n this.dashboardService.getGenerationToDate().subscribe(\r\n (generationToDate: GenerationToDate) => {\r\n this.populateChartData(generationToDate.generationToDateList);\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n\r\n private populateChartData(inputData: { [name: string]: number }) {\r\n this.chartData = [];\r\n let highestNumber = 0;\r\n const generators = Object.keys(inputData);\r\n generators.forEach((facility) => {\r\n const power = Math.round(inputData[facility]);\r\n highestNumber = power > highestNumber ? power : highestNumber;\r\n this.chartData.push({\r\n name: facility.replace(\r\n facility.charAt(0),\r\n facility.charAt(0).toUpperCase()\r\n ),\r\n value: power,\r\n });\r\n });\r\n this.setYAxisTicks(highestNumber);\r\n }\r\n\r\n private setYAxisTicks(highestNumber: number) {\r\n const elementCount = Math.round(highestNumber / 1000000) + 1;\r\n if (elementCount === 1) {\r\n this.yAxisTicks.push(1000000);\r\n } else {\r\n for (let i = 1; i <= elementCount; i += 1) {\r\n this.yAxisTicks.push(1000000 * i);\r\n }\r\n }\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { DashboardService } from '../dashboard.service';\r\nimport { GenerationPerTechnologyToDate } from '../../../model/view/generation-per-technology-to-date.model';\r\nimport { CommonService } from '../../../common/common-service';\r\n\r\n@Component({\r\n selector: 'generation-per-technology-to-date',\r\n templateUrl: './generation-per-technology-to-date.component.html',\r\n styleUrls: ['./generation-per-technology-to-date.component.scss'],\r\n})\r\nexport class GenerationPerTechnologyToDateComponent implements OnInit {\r\n public loading = false;\r\n public errorMessage = '';\r\n public chartData: Array<{ name: string; value: number }>;\r\n\r\n constructor(\r\n private dashboardService: DashboardService,\r\n public commonService: CommonService\r\n ) {}\r\n\r\n public ngOnInit() {\r\n this.initialize();\r\n }\r\n\r\n private initialize() {\r\n this.loading = true;\r\n this.chartData = [];\r\n this.dashboardService.getGenerationPerTechnologyToDate().subscribe(\r\n (generationPerTechnologyToDate: GenerationPerTechnologyToDate) => {\r\n this.populateChartData(\r\n generationPerTechnologyToDate.generationPerTechnologyToDateList\r\n );\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n\r\n private populateChartData(inputData: { [name: string]: number }) {\r\n this.chartData = [];\r\n const technologies = Object.keys(inputData);\r\n technologies.forEach((technology) => {\r\n this.chartData.push({\r\n name: technology.replace(\r\n technology.charAt(0),\r\n technology.charAt(0).toUpperCase()\r\n ),\r\n value: Math.round(inputData[technology]),\r\n });\r\n });\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { FilteredPowerProfile } from '../../model/power-profiles/filtered-power-profile.model';\r\n\r\n@Injectable()\r\nexport class PowerProfileService {\r\n constructor(private http: HttpClient) {}\r\n\r\n public getGenerators(\r\n searchstring: string,\r\n sortDirection: string,\r\n sortProperty: string\r\n ): Observable {\r\n return this.http.get(\r\n API_URL +\r\n 'GeneratorCompany/GetAllGeneratorCompanies?searchString=' +\r\n searchstring +\r\n '&sortDirection=' +\r\n sortDirection +\r\n '&sortProperty=' +\r\n sortProperty\r\n );\r\n }\r\n\r\n public getConsumers(\r\n searchstring: string,\r\n sortDirection: string,\r\n sortProperty: string\r\n ): Observable {\r\n return this.http.get(\r\n API_URL +\r\n 'ConsumerCompanyPremises/GetAllConsumerCompanyPremises?searchString=' +\r\n searchstring +\r\n '&sortDirection=' +\r\n sortDirection +\r\n '&sortProperty=' +\r\n sortProperty\r\n );\r\n }\r\n\r\n public GetFilteredPowerProfiles(\r\n data: FilteredPowerProfile\r\n ): Observable {\r\n return this.http.post(\r\n API_URL + 'Dashboard/GetFilteredPowerProfiles',\r\n data\r\n );\r\n }\r\n}\r\n","import {\r\n Component,\r\n OnInit,\r\n TemplateRef,\r\n Input,\r\n ViewChild,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { PowerProfileToDate } from '../../model/view/power-profile-to-date.model';\r\nimport { CommonService } from '../../common/common-service';\r\nimport { BsModalRef, BsModalService } from 'ngx-bootstrap/modal';\r\nimport { GeneratorFacilityDetail } from '../../model/generator/generator-project-facility-details';\r\nimport { FormControl, FormGroup } from '@angular/forms';\r\nimport { debounceTime } from 'rxjs/operators';\r\nimport { PowerProfileService } from './power-profile.service';\r\nimport { SelectionType, ColumnMode } from '@swimlane/ngx-datatable';\r\nimport { ConsumerPremisesDetail } from '../../model/consumer-premises-detail.model';\r\nimport { BsDatepickerViewMode } from 'ngx-bootstrap/datepicker/models/index';\r\nimport {\r\n BsDatepickerConfig,\r\n BsDatepickerDirective,\r\n} from 'ngx-bootstrap/datepicker';\r\nimport { FilteredPowerProfile } from '../../model/power-profiles/filtered-power-profile.model';\r\n\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { Subscription } from 'rxjs';\r\nimport { DatePipe } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'power-profile-filter',\r\n templateUrl: './power-profile-filter.component.html',\r\n styleUrls: ['./power-profile-filter.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class PowerProfileFilterComponent implements OnInit {\r\n public loading = false;\r\n public errorMessage = '';\r\n public powerProfileToDate: PowerProfileToDate;\r\n public generatorSearch;\r\n public Consumersearch;\r\n public modalRef?: BsModalRef;\r\n public generators: GeneratorFacilityDetail[];\r\n public allGenerators: GeneratorFacilityDetail[];\r\n public allconsumers: ConsumerPremisesDetail[];\r\n public consumers: ConsumerPremisesDetail[];\r\n public includedGenerators: boolean[];\r\n public selectedGenerators: any[];\r\n public selectedConsumers: any[];\r\n public SelectionType = SelectionType;\r\n public ColumnMode = ColumnMode;\r\n public filterStart: FormControl;\r\n public filterEnd: FormControl;\r\n public minMode: BsDatepickerViewMode;\r\n public bsConfig?: Partial;\r\n public timeSpanRadio: FormGroup;\r\n public allocationGraph: FormControl;\r\n public generationGraph: FormControl;\r\n public consumptionGraph: FormControl;\r\n public AccordionDic: object;\r\n public ProfilePeriod = '';\r\n\r\n @ViewChild('dpr')\r\n public datepicker: BsDatepickerDirective;\r\n public subscriptions: Subscription[] = [];\r\n\r\n @Input('initialStart')\r\n public initialStart: Date;\r\n\r\n @Input('initialEnd')\r\n public initialEnd: Date;\r\n\r\n @Input('minDate')\r\n public minDate: Date;\r\n\r\n @Input('maxDate')\r\n public maxDate: Date;\r\n\r\n @Input('initialGranularity')\r\n public initialGranularity: BsDatepickerViewMode;\r\n\r\n @Input('enableYear')\r\n public enableYear: boolean;\r\n\r\n @Input('enableMonth')\r\n public enableMonth: boolean;\r\n\r\n @Input('initialData')\r\n public chartData: Array<{\r\n name: string;\r\n series: Array<{ name: string; value: number }>;\r\n }>;\r\n\r\n @Input('allocationRunId')\r\n public allocationRunId: number;\r\n\r\n constructor(\r\n public commonService: CommonService,\r\n private modalService: BsModalService,\r\n private powerprofileService: PowerProfileService,\r\n private toaster: ToastrService\r\n ) {\r\n this.generatorSearch = new FormControl();\r\n this.Consumersearch = new FormControl();\r\n this.includedGenerators = [];\r\n this.selectedGenerators = [];\r\n this.selectedConsumers = [];\r\n\r\n this.filterStart = new FormControl();\r\n this.filterEnd = new FormControl();\r\n this.timeSpanRadio = new FormGroup({\r\n timespan: new FormControl(),\r\n });\r\n this.allocationGraph = new FormControl(true);\r\n this.generationGraph = new FormControl(true);\r\n this.consumptionGraph = new FormControl(true);\r\n\r\n this.AccordionDic = new Object();\r\n }\r\n\r\n public unsubscribe() {\r\n this.subscriptions.forEach((subscription: Subscription) => {\r\n subscription.unsubscribe();\r\n });\r\n this.subscriptions = [];\r\n }\r\n\r\n public ngOnInit() {\r\n if (this.initialStart.getFullYear() !== this.initialEnd.getFullYear()) {\r\n this.ProfilePeriod = '(12 Months)';\r\n }\r\n this.filterStart.setValue(this.initialStart);\r\n this.filterEnd.setValue(this.initialEnd);\r\n this.timeSpanRadio.get('timespan').setValue(this.initialGranularity);\r\n this.AccordionDic['timelines'] = '+';\r\n this.AccordionDic['generators'] = '+';\r\n this.AccordionDic['consumers'] = '+';\r\n this.AccordionDic['graphs'] = '+';\r\n\r\n let granularity;\r\n\r\n if (this.timeSpanRadio.get('timespan').value === 'hour') {\r\n granularity = 'day';\r\n } else {\r\n granularity = this.timeSpanRadio.get('timespan').value;\r\n }\r\n this.updateConfig(granularity);\r\n\r\n const getgeneratorPromise = this.powerprofileService\r\n .getGenerators('', '', '')\r\n .toPromise();\r\n\r\n const getconsumerPromise = this.powerprofileService\r\n .getConsumers('', '', '')\r\n .toPromise();\r\n\r\n Promise.all([getgeneratorPromise, getconsumerPromise]).then(\r\n (results: any[]) => {\r\n this.allGenerators = results[0];\r\n this.generators = results[0];\r\n this.allconsumers = results[1];\r\n this.selectedGenerators = results[0].slice();\r\n this.consumers = results[1];\r\n this.selectedConsumers = results[1].slice();\r\n }\r\n );\r\n\r\n this.generatorSearch.valueChanges\r\n .pipe(debounceTime(500))\r\n .subscribe((searchword) => {\r\n this.generators = this.allGenerators.filter(function(d) {\r\n return (\r\n d.facilityName.toLowerCase().indexOf(searchword) !==\r\n -1 || !searchword\r\n );\r\n });\r\n });\r\n\r\n this.Consumersearch.valueChanges\r\n .pipe(debounceTime(500))\r\n .subscribe((searchword) => {\r\n this.consumers = this.allconsumers.filter(function(d) {\r\n return (\r\n d.premisesName.toLowerCase().indexOf(searchword) !==\r\n -1 || !searchword\r\n );\r\n });\r\n });\r\n }\r\n\r\n public onGeneratorSelect({ selected }) {\r\n this.selectedGenerators.splice(0, this.selectedGenerators.length);\r\n this.selectedGenerators.push(...selected);\r\n }\r\n\r\n public onConsumerSelect({ selected }) {\r\n this.selectedConsumers.splice(0, this.selectedConsumers.length);\r\n this.selectedConsumers.push(...selected);\r\n }\r\n\r\n public openModal(template: TemplateRef) {\r\n this.subscriptions.push(\r\n this.modalService.onHidden.subscribe((reason: string) => {\r\n this.AccordionDic['timelines'] = '+';\r\n this.AccordionDic['generators'] = '+';\r\n this.AccordionDic['consumers'] = '+';\r\n this.AccordionDic['graphs'] = '+';\r\n this.unsubscribe();\r\n })\r\n );\r\n this.modalRef = this.modalService.show(template);\r\n }\r\n\r\n public updateConfig(granularity: BsDatepickerViewMode) {\r\n let dateformat;\r\n if (granularity === 'day') {\r\n dateformat = 'DD MMMM YYYY';\r\n } else if (granularity === 'month') {\r\n dateformat = 'MMMM YYYY';\r\n } else if (granularity === 'year') {\r\n dateformat = 'YYYY';\r\n }\r\n this.bsConfig = Object.assign(\r\n {},\r\n {\r\n minMode: granularity,\r\n dateInputFormat: dateformat,\r\n }\r\n );\r\n }\r\n public timespanchanged() {\r\n let granularity;\r\n\r\n if (this.timeSpanRadio.get('timespan').value === 'hour') {\r\n granularity = 'day';\r\n } else {\r\n granularity = this.timeSpanRadio.get('timespan').value;\r\n }\r\n\r\n this.updateConfig(granularity);\r\n this.filterStart.setValue('');\r\n this.filterEnd.setValue('');\r\n }\r\n public accordionState($event, source) {\r\n if ($event === true) {\r\n this.AccordionDic[source] = '-';\r\n } else {\r\n this.AccordionDic[source] = '+';\r\n }\r\n }\r\n\r\n public saveFilter() {\r\n this.errorMessage = '';\r\n this.modalRef.hide();\r\n if (\r\n this.filterStart.value === null ||\r\n this.filterStart.value === '' ||\r\n this.filterEnd.value === null ||\r\n this.filterEnd.value === '' ||\r\n (this.selectedConsumers.length === 0 &&\r\n this.selectedGenerators.length === 0)\r\n ) {\r\n this.toaster.error('Invalid Fields');\r\n } else {\r\n this.loading = true;\r\n this.modalRef.hide();\r\n this.chartData = [];\r\n const consumersid = [];\r\n const generatorsid = [];\r\n\r\n this.selectedConsumers.forEach((elt) => {\r\n consumersid.push(elt.consumerCompanyPremisesId);\r\n });\r\n this.selectedGenerators.forEach((elt) => {\r\n generatorsid.push(elt.generatorProjectFacilityId);\r\n });\r\n\r\n let startdate: Date;\r\n let endate: Date;\r\n\r\n if (this.filterStart.value <= this.filterEnd.value) {\r\n startdate = this.filterStart.value;\r\n endate = this.filterEnd.value;\r\n } else {\r\n startdate = this.filterEnd.value;\r\n endate = this.filterStart.value;\r\n }\r\n\r\n if (\r\n this.initialStart.getFullYear() !==\r\n this.initialEnd.getFullYear()\r\n ) {\r\n const pipe = new DatePipe('en-US');\r\n this.ProfilePeriod = '(';\r\n if (this.timeSpanRadio.get('timespan').value === 'month') {\r\n this.ProfilePeriod +=\r\n pipe.transform(startdate, 'MMM yyyy') +\r\n ' - ' +\r\n pipe.transform(endate, 'MMM yyyy');\r\n } else if (\r\n this.timeSpanRadio.get('timespan').value === 'year'\r\n ) {\r\n if (startdate.getFullYear() !== endate.getFullYear()) {\r\n this.ProfilePeriod +=\r\n pipe.transform(startdate, 'yyyy') +\r\n ' - ' +\r\n pipe.transform(endate, 'yyyy');\r\n } else {\r\n this.ProfilePeriod += pipe.transform(startdate, 'yyyy');\r\n }\r\n } else if (\r\n this.timeSpanRadio.get('timespan').value === 'day' ||\r\n this.timeSpanRadio.get('timespan').value === 'hour'\r\n ) {\r\n this.ProfilePeriod +=\r\n pipe.transform(startdate, 'dd MMM yyyy') +\r\n ' - ' +\r\n pipe.transform(endate, 'dd MMM yyyy');\r\n }\r\n\r\n this.ProfilePeriod += ')';\r\n }\r\n\r\n const filterdata = new FilteredPowerProfile(\r\n consumersid,\r\n generatorsid,\r\n this.timeSpanRadio.get('timespan').value,\r\n startdate,\r\n endate,\r\n this.allocationGraph.value,\r\n this.generationGraph.value,\r\n this.consumptionGraph.value,\r\n this.allocationRunId\r\n );\r\n\r\n this.powerprofileService\r\n .GetFilteredPowerProfiles(filterdata)\r\n .subscribe(\r\n (powerProfileToDate) => {\r\n this.powerProfileToDate = powerProfileToDate;\r\n this.buildPowerProfileData(\r\n 'Allocation',\r\n this.powerProfileToDate.powerProfileToDateAllocation\r\n .powerPerMonthList\r\n );\r\n this.buildPowerProfileData(\r\n 'Consumption',\r\n this.powerProfileToDate\r\n .powerProfileToDateConsumption.powerPerMonthList\r\n );\r\n this.buildPowerProfileData(\r\n 'Generation',\r\n this.powerProfileToDate.powerProfileToDateGeneration\r\n .powerPerMonthList\r\n );\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n }\r\n\r\n private buildPowerProfileData(\r\n powerProfileName: string,\r\n inputData: { [name: string]: number }\r\n ) {\r\n const inputDataIndexes = Object.keys(inputData);\r\n const chartDataSeries: Array<{ name: string; value: number }> = [];\r\n inputDataIndexes.forEach((inputDataIndex) => {\r\n chartDataSeries.push({\r\n name: inputDataIndex,\r\n value:\r\n inputData[inputDataIndex] < 0\r\n ? 0\r\n : inputData[inputDataIndex],\r\n });\r\n });\r\n this.chartData.push({\r\n name: powerProfileName,\r\n series: chartDataSeries,\r\n });\r\n }\r\n}\r\n","export class FilteredPowerProfile {\r\n public Consumers: number[];\r\n public Generators: number[];\r\n public Granularity: string;\r\n public Startdate: Date;\r\n public Enddate: Date;\r\n public AllocationGraph: boolean;\r\n public GenerationGraph: boolean;\r\n public ConsumptionGraph: boolean;\r\n public allocationRunId: number;\r\n public constructor(\r\n Consumers: number[],\r\n Generators: number[],\r\n Granularity: string,\r\n Startdate: Date,\r\n Enddate: Date,\r\n allocationGraph: boolean,\r\n generationGraph: boolean,\r\n consumptionGraph: boolean,\r\n AllocationRunId: number\r\n ) {\r\n this.Consumers = Consumers;\r\n this.Generators = Generators;\r\n this.Enddate = Enddate;\r\n this.Startdate = Startdate;\r\n this.Granularity = Granularity;\r\n this.AllocationGraph = allocationGraph;\r\n this.ConsumptionGraph = consumptionGraph;\r\n this.GenerationGraph = generationGraph;\r\n this.allocationRunId = AllocationRunId;\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'warnings-and-notifications',\r\n templateUrl: './warnings-and-notifications.component.html',\r\n styleUrls: ['./warnings-and-notifications.component.scss'],\r\n})\r\nexport class WarningsAndNotificationsComponent {}\r\n","import { Component, OnInit, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'information-card',\r\n templateUrl: './information-card.component.html',\r\n styleUrls: ['./information-card.component.scss'],\r\n})\r\nexport class InformationCardComponent implements OnInit {\r\n @Input('heading')\r\n public heading: string;\r\n @Input('title')\r\n public title: string;\r\n @Input('value')\r\n public value: string;\r\n @Input('cardColor')\r\n public cardColor: string = 'more-info';\r\n @Input('faIcon')\r\n public faIcon: string = 'fa-info-circle';\r\n\r\n public ngOnInit() {\r\n // TODO\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { GeneratorCompanyService } from '../../../generator-company/generator-company.service';\r\nimport { CommonService } from '../../../../common/common-service';\r\n\r\n@Component({\r\n selector: 'generator-notifications-card',\r\n templateUrl: './generator-notifications-card.component.html',\r\n styleUrls: ['./generator-notifications-card.component.scss'],\r\n})\r\nexport class GeneratorNotificationsCardComponent implements OnInit {\r\n public errorMessage = '';\r\n public loading = false;\r\n public generatorNotifications: number = 0;\r\n\r\n constructor(\r\n private generatorService: GeneratorCompanyService,\r\n private commonService: CommonService\r\n ) {}\r\n\r\n public ngOnInit() {\r\n this.loadNotifications();\r\n }\r\n\r\n private loadNotifications(): void {\r\n this.loading = true;\r\n this.generatorService\r\n .getGeneratorFacilityIncreaseNotifications()\r\n .subscribe(\r\n (facilityNotifications) => {\r\n this.generatorNotifications = facilityNotifications.length;\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n}\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { SummaryInfoPair } from '../summary-card/summary-info-pair.model';\r\n\r\n@Component({\r\n selector: 'stats-card',\r\n templateUrl: './stats-card.component.html',\r\n styleUrls: ['./stats-card.component.scss'],\r\n})\r\nexport class StatsCardComponent implements OnInit {\r\n @Input('title')\r\n public title: string;\r\n @Input('statsPair')\r\n public statsPair: SummaryInfoPair[] = [];\r\n @Input('cardColor')\r\n public cardColor: string = 'activated';\r\n @Input('faIcon')\r\n public faIcon: string = 'fa-pie-chart';\r\n\r\n public ngOnInit() {\r\n // TODO\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable } from '../../../../../node_modules/rxjs';\r\n\r\n@Injectable()\r\nexport class GeneratorProjectPpaMaintenanceService {\r\n constructor(private httpClient: HttpClient) {}\r\n\r\n public getGeneratorProjectPpaMaintenanceDocuments(\r\n generatorProjectId: number\r\n ): Observable {\r\n return this.httpClient.get(\r\n API_URL +\r\n 'GeneratorProjectPpaMaintenance/GetGeneratorProjectPpaMaintenanceDocuments?generatorProjectId=' +\r\n generatorProjectId\r\n );\r\n }\r\n\r\n public addAddendum(addendum: any): Observable {\r\n return this.httpClient.post(\r\n API_URL + 'GeneratorProjectPpaMaintenance/AddAddendum',\r\n addendum\r\n );\r\n }\r\n\r\n public renewPPA(renewPpa: any): Observable {\r\n return this.httpClient.post(\r\n API_URL + 'GeneratorProjectPpaMaintenance/RenewPPA',\r\n renewPpa\r\n );\r\n }\r\n\r\n public updatePpaCommercialAgreementAddendum(\r\n commercialAgreementChangeAdendum: any\r\n ): Observable {\r\n return this.httpClient.post(\r\n API_URL +\r\n 'GeneratorProjectPpaMaintenance/UpdatePpaCommercialAgreementAddendum',\r\n commercialAgreementChangeAdendum\r\n );\r\n }\r\n\r\n public updatePpaScheduleCommercialAgreementAddendum(\r\n commercialAgreementChangeAdendum: any\r\n ): Observable {\r\n return this.httpClient.post(\r\n API_URL +\r\n 'GeneratorProjectPpaMaintenance/UpdatePpaScheduleCommercialAgreementAddendum',\r\n commercialAgreementChangeAdendum\r\n );\r\n }\r\n\r\n public getGeneratorProjectFacilities(\r\n generatorProjectId: number\r\n ): Observable {\r\n return this.httpClient.get(\r\n API_URL +\r\n 'GeneratorProjectPpaMaintenance/GetGeneratorProjectFacilities?generatorProjectId=' +\r\n generatorProjectId\r\n );\r\n }\r\n}\r\n","import {\r\n Component,\r\n OnInit,\r\n Input,\r\n TemplateRef,\r\n ViewChild,\r\n OnDestroy,\r\n} from '@angular/core';\r\nimport { GeneratorProjectPpaMaintenanceService } from './generator-project-ppa-maintenance.service';\r\nimport { Document } from '../../../model/document.model';\r\nimport { BsModalRef, BsModalService } from 'ngx-bootstrap';\r\nimport {\r\n ActivatedRoute,\r\n Router,\r\n} from '../../../../../node_modules/@angular/router';\r\nimport { CommonService } from '../../../common/common-service';\r\nimport {\r\n FormGroup,\r\n FormControl,\r\n Validators,\r\n} from '../../../../../node_modules/@angular/forms';\r\nimport { DocumentService } from '../../document/document.service';\r\nimport { saveAs } from 'file-saver/FileSaver';\r\nimport { EntityLookup } from '../../../model/entity-lookup.model';\r\nimport { ComponentTriggersService } from '../../../common/component-triggers.service';\r\nimport { Subscription } from '../../../../../node_modules/rxjs';\r\nimport {\r\n HttpHeaders,\r\n HttpRequest,\r\n HttpResponse,\r\n HttpClient,\r\n} from '../../../../../node_modules/@angular/common/http';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { DownloadableDocument } from '../../../model/downloadable-document.model';\r\n\r\n@Component({\r\n selector: 'generator-project-ppa-maintenance',\r\n templateUrl: './generator-project-ppa-maintenance.component.html',\r\n styleUrls: [\r\n './generator-project-ppa-maintenance.component.scss',\r\n '../../form.styles.scss',\r\n ],\r\n})\r\nexport class GeneratorProjectPpaMaintenanceComponent\r\n implements OnInit, OnDestroy {\r\n @Input('isReadOnlyMode')\r\n public isReadOnlyMode: boolean = false;\r\n @Input('isPpaAddendumEnabled')\r\n public isPpaAddendumEnabled: boolean = false;\r\n @ViewChild('newAdendumModal')\r\n public newAdendumModal: TemplateRef;\r\n @ViewChild('renewPpaModal')\r\n public renewPpaModal: TemplateRef;\r\n @ViewChild('commercialAgreementChangeAdendumModal')\r\n public commercialAgreementChangeAdendumModal: TemplateRef;\r\n public loading: boolean;\r\n public popupSubmitting: boolean = false;\r\n public errorMessage = '';\r\n public projectId: number;\r\n public expiryDate: Date;\r\n public facilityId: number;\r\n public evaluationFieldId: number;\r\n public documents: DownloadableDocument[];\r\n public escalationTypes: EntityLookup;\r\n public showDocList: boolean;\r\n private modalRef: BsModalRef;\r\n private addAddendumForm: FormGroup;\r\n private renewPpaForm: FormGroup;\r\n private ppaMaintenanceEventSubscription: Subscription;\r\n private addendumFile: any;\r\n private renewPpaFile: any;\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n private router: Router,\r\n private toastr: ToastrService,\r\n private commonService: CommonService,\r\n private generatorProjectPpaMaintenanceService: GeneratorProjectPpaMaintenanceService,\r\n private componentTriggerService: ComponentTriggersService,\r\n private modalService: BsModalService,\r\n private documentService: DocumentService,\r\n private http: HttpClient\r\n ) {\r\n this.addAddendumForm = new FormGroup({\r\n generatorProjectFacilityId: new FormControl(''),\r\n addendumDoc: new FormControl(\r\n {\r\n value: '',\r\n disabled: false,\r\n },\r\n [Validators.required]\r\n ),\r\n addendumDocId: new FormControl({ value: '' }, Validators.required),\r\n comment: new FormControl(\r\n {\r\n value: null,\r\n disabled: false,\r\n },\r\n [Validators.required]\r\n ),\r\n });\r\n\r\n this.renewPpaForm = new FormGroup({\r\n generatorProjectFacilityEvaluationFieldId: new FormControl(''),\r\n generatorProjectFacilityId: new FormControl(''),\r\n commercialOperatorsDate: new FormControl(null, Validators.required),\r\n expiryDateAfterEffectiveDate: new FormControl(\r\n null,\r\n Validators.required\r\n ),\r\n renewPpaDocId: new FormControl({ value: '' }, Validators.required),\r\n renewPpaDoc: new FormControl(\r\n {\r\n value: '',\r\n disabled: false,\r\n },\r\n [Validators.required]\r\n ),\r\n });\r\n }\r\n\r\n public ngOnInit() {\r\n this.ppaMaintenanceEventSubscription = this.componentTriggerService.triggerPpaMaintenanceComponent.subscribe(\r\n () => {\r\n this.initialize();\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n this.initialize();\r\n }\r\n\r\n public initialize() {\r\n this.loading = true;\r\n this.showDocList = true;\r\n\r\n this.route.params.subscribe(\r\n (params) => {\r\n if (params['generatorProjectId']) {\r\n this.projectId = params['generatorProjectId'];\r\n }\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n this.commonService\r\n .getEntityLookups(['GeneratorEscalationType'])\r\n .subscribe(\r\n (entityLookups) => {\r\n this.escalationTypes =\r\n entityLookups.entityLookupResultList[\r\n 'generatorEscalationType'\r\n ];\r\n this.loadGeneratorProjectPpaMaintenanceDocuments();\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n\r\n public ngOnDestroy() {\r\n this.ppaMaintenanceEventSubscription.unsubscribe();\r\n }\r\n\r\n public loadGeneratorProjectPpaMaintenanceDocuments() {\r\n this.generatorProjectPpaMaintenanceService\r\n .getGeneratorProjectPpaMaintenanceDocuments(this.projectId)\r\n .subscribe(\r\n (page: any) => {\r\n // if facility application status is not set as 'complete' then disable tab\r\n if (page.isFacilityComplete === false) {\r\n this.loading = false;\r\n return;\r\n }\r\n\r\n this.componentTriggerService.triggerEnableGeneratorPpaAndAddendums.next(\r\n false\r\n );\r\n this.expiryDate = page.expiryDate;\r\n this.documents = page.documents;\r\n this.facilityId = page.generatorProjectFacilityId;\r\n this.evaluationFieldId =\r\n page.generatorProjectFacilityEvaluationFieldId;\r\n\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.toastr.error(\r\n 'An error occurred while loading addendum documents'\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n\r\n public onDownloadDocument(row: DownloadableDocument) {\r\n this.toastr.info('Processing document');\r\n row.busyDownloading = true;\r\n this.documentService.downloadDocument(row.documentId).subscribe(\r\n (response) => {\r\n row.busyDownloading = false;\r\n saveAs(response, row.fileName);\r\n },\r\n (error) => {\r\n row.busyDownloading = false;\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.toastr.error(\r\n 'An error occurred while retrieving document for download'\r\n );\r\n }\r\n );\r\n }\r\n\r\n public onShowNewAdendumModal() {\r\n this.addAddendumForm.controls.generatorProjectFacilityId.setValue(\r\n this.facilityId\r\n );\r\n this.modalRef = this.modalService.show(this.newAdendumModal);\r\n }\r\n\r\n public newAdendumDocumentUpload(event) {\r\n if (event.target.files.length > 0) {\r\n this.addendumFile = event.target.files[0];\r\n }\r\n }\r\n\r\n public onNewAdendumSubmit() {\r\n this.errorMessage = '';\r\n this.commonService.validateAllFormFields(this.addAddendumForm);\r\n\r\n if (this.addAddendumForm.valid) {\r\n this.popupSubmitting = true;\r\n const formData = new FormData();\r\n formData.append(\r\n 'generatorProjectFacilityId',\r\n JSON.stringify(\r\n this.addAddendumForm.controls.generatorProjectFacilityId\r\n .value\r\n )\r\n );\r\n formData.append(\r\n 'comment',\r\n JSON.stringify(this.addAddendumForm.controls.comment.value)\r\n );\r\n formData.append(this.addendumFile.name, this.addendumFile);\r\n const headers = new HttpHeaders({\r\n enctype: 'multipart/form-data',\r\n });\r\n\r\n const req = new HttpRequest(\r\n 'POST',\r\n API_URL + 'GeneratorProjectPpaMaintenance/AddAddendum',\r\n formData,\r\n {\r\n headers,\r\n reportProgress: true,\r\n }\r\n );\r\n\r\n this.http.request(req).subscribe(\r\n (event) => {\r\n if (event instanceof HttpResponse) {\r\n // Clear fields\r\n this.addAddendumForm.controls.comment.setValue('');\r\n this.addAddendumForm.controls.addendumDoc.setValue('');\r\n this.addAddendumForm.controls.addendumDocId.setValue(\r\n ''\r\n );\r\n this.modalRef.hide();\r\n\r\n this.popupSubmitting = false;\r\n this.toastr.success('Successfully uploaded');\r\n this.loadGeneratorProjectPpaMaintenanceDocuments();\r\n }\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.toastr.error(this.errorMessage);\r\n this.popupSubmitting = false;\r\n }\r\n );\r\n }\r\n }\r\n\r\n public onShowRenewPpaModal() {\r\n this.renewPpaForm.controls.generatorProjectFacilityEvaluationFieldId.setValue(\r\n this.evaluationFieldId\r\n );\r\n this.renewPpaForm.controls.generatorProjectFacilityId.setValue(\r\n this.facilityId\r\n );\r\n this.renewPpaForm.controls.commercialOperatorsDate.setValue(\r\n this.expiryDate\r\n );\r\n this.renewPpaForm.controls.expiryDateAfterEffectiveDate.setValue(20);\r\n\r\n this.modalRef = this.modalService.show(this.renewPpaModal);\r\n }\r\n\r\n public newRenewPpaDocumentUpload(event) {\r\n if (event.target.files.length > 0) {\r\n this.renewPpaFile = event.target.files[0];\r\n }\r\n }\r\n\r\n public onRenewPpaSubmit() {\r\n this.errorMessage = '';\r\n this.commonService.validateAllFormFields(this.renewPpaForm);\r\n\r\n if (this.renewPpaForm.valid) {\r\n this.popupSubmitting = true;\r\n const formData = new FormData();\r\n formData.append(\r\n 'generatorProjectFacilityId',\r\n JSON.stringify(\r\n this.renewPpaForm.controls.generatorProjectFacilityId.value\r\n )\r\n );\r\n formData.append(\r\n 'generatorProjectFacilityEvaluationFieldId',\r\n JSON.stringify(\r\n this.renewPpaForm.controls\r\n .generatorProjectFacilityEvaluationFieldId.value\r\n )\r\n );\r\n formData.append(\r\n 'commercialOperatorsDate',\r\n JSON.stringify(\r\n this.renewPpaForm.controls.commercialOperatorsDate.value\r\n )\r\n );\r\n formData.append(\r\n 'expiryDateAfterEffectiveDate',\r\n JSON.stringify(\r\n this.renewPpaForm.controls.expiryDateAfterEffectiveDate\r\n .value\r\n )\r\n );\r\n formData.append(this.renewPpaFile.name, this.renewPpaFile);\r\n const headers = new HttpHeaders({\r\n enctype: 'multipart/form-data',\r\n });\r\n\r\n const req = new HttpRequest(\r\n 'POST',\r\n API_URL + 'GeneratorProjectPpaMaintenance/RenewPPA',\r\n formData,\r\n {\r\n headers,\r\n reportProgress: true,\r\n }\r\n );\r\n\r\n this.http.request(req).subscribe(\r\n (event) => {\r\n if (event instanceof HttpResponse) {\r\n // Clear fields\r\n this.renewPpaForm.controls.commercialOperatorsDate.setValue(\r\n ''\r\n );\r\n this.renewPpaForm.controls.expiryDateAfterEffectiveDate.setValue(\r\n ''\r\n );\r\n this.renewPpaForm.controls.renewPpaDocId.setValue('');\r\n this.renewPpaForm.controls.renewPpaDoc.setValue('');\r\n this.modalRef.hide();\r\n\r\n this.popupSubmitting = false;\r\n this.toastr.success('Successfully uploaded');\r\n this.loadGeneratorProjectPpaMaintenanceDocuments();\r\n }\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.toastr.error(this.errorMessage);\r\n this.popupSubmitting = false;\r\n }\r\n );\r\n }\r\n }\r\n\r\n public onShowCommercialAgreementChangeAdendum() {\r\n this.showDocList = false;\r\n this.componentTriggerService.triggerCommercialAgreementComponent.next(\r\n this.facilityId\r\n );\r\n }\r\n}\r\n","import { DistributorService } from '../distributor.service';\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { Input, TemplateRef } from '@angular/core';\r\nimport { FormGroup, FormControl, Validators } from '@angular/forms';\r\nimport { BsModalRef, BsModalService } from 'ngx-bootstrap';\r\nimport { CommonService } from 'app/common/common-service';\r\n\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { ToastrService } from 'ngx-toastr';\r\n\r\n@Component({\r\n selector: 'wheeling-fees',\r\n templateUrl: './wheeling-fees.component.html',\r\n styleUrls: [\r\n './wheeling-fees.component.scss',\r\n './../../../component/form.styles.scss',\r\n ],\r\n})\r\nexport class WheelingFeesComponent implements OnInit {\r\n @Input('distributorId')\r\n public distributorId: number;\r\n @Input('isReadOnlyMode')\r\n public isReadOnlyMode = false;\r\n public wheelingFees: any;\r\n public wheelingFeesForm: FormGroup;\r\n public errorMessage = '';\r\n public loading: boolean = false;\r\n public updateWheelingFees: boolean = false;\r\n private modalRef: BsModalRef;\r\n\r\n constructor(\r\n protected route: ActivatedRoute,\r\n private modalService: BsModalService,\r\n public commonService: CommonService,\r\n protected toastr: ToastrService,\r\n public distributorService: DistributorService\r\n ) {\r\n this.wheelingFeesForm = new FormGroup({\r\n distributorWheelingFeeId: new FormControl(0),\r\n distributorId: new FormControl(0, [Validators.required]),\r\n chargeForPrepaid: new FormControl(null, [Validators.required]),\r\n chargeForPostpaid: new FormControl(null, [\r\n Validators.required,\r\n Validators.max(100),\r\n ]),\r\n effectiveDate: new FormControl(null, [Validators.required]),\r\n });\r\n }\r\n\r\n public ngOnInit() {\r\n this.route.params.subscribe(\r\n (params) => {\r\n this.distributorId = params.distributorId;\r\n this.getDistributorWheelingFees();\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n }\r\n\r\n public wheelingFeesModal(template: TemplateRef): void {\r\n this.updateWheelingFees = false;\r\n this.initWheelingFeesForm({});\r\n this.modalRef = this.modalService.show(template);\r\n }\r\n\r\n public onPopupSubmit(): void {\r\n this.errorMessage = '';\r\n this.commonService.validateAllFormFields(this.wheelingFeesForm);\r\n this.wheelingFeesForm.controls.distributorId.setValue(\r\n this.distributorId\r\n );\r\n if (this.wheelingFeesForm.valid) {\r\n this.distributorService\r\n .addDistributorWheelingFee(this.wheelingFeesForm.value)\r\n .subscribe(\r\n () => {\r\n this.modalRef.hide();\r\n this.getDistributorWheelingFees();\r\n this.toastr.success(\r\n 'Distributor Wheeling Fees Were Successfully Updated'\r\n );\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.toastr.error(this.errorMessage);\r\n }\r\n );\r\n }\r\n }\r\n\r\n public onSelect(event: any, template: TemplateRef): void {\r\n this.updateWheelingFees = true;\r\n const wheelingFee = event.selected[0];\r\n this.initWheelingFeesForm(wheelingFee);\r\n this.modalRef = this.modalService.show(template);\r\n }\r\n\r\n public initWheelingFeesForm(wheelingFee: any): void {\r\n this.wheelingFeesForm = new FormGroup({\r\n distributorWheelingFeeId: new FormControl(\r\n wheelingFee.distributorWheelingFeeId\r\n ),\r\n distributorId: new FormControl(0, [Validators.required]),\r\n chargeForPrepaid: new FormControl(wheelingFee.chargeForPrepaid, [\r\n Validators.required,\r\n ]),\r\n chargeForPostpaid: new FormControl(wheelingFee.chargeForPostpaid, [\r\n Validators.required,\r\n Validators.max(100),\r\n ]),\r\n effectiveDate: new FormControl(wheelingFee.effectiveDate, [\r\n Validators.required,\r\n ]),\r\n });\r\n\r\n if (this.isReadOnlyMode) {\r\n this.wheelingFeesForm.disable();\r\n }\r\n }\r\n\r\n private getDistributorWheelingFees(): void {\r\n this.loading = true;\r\n this.distributorService\r\n .getDistributorWheelingFees(this.distributorId)\r\n .subscribe(\r\n (wheelingFees: any) => {\r\n this.wheelingFees = wheelingFees;\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.loading = false;\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.toastr.error(this.errorMessage);\r\n }\r\n );\r\n }\r\n}\r\n","import { Component, OnInit, Input, TemplateRef } from '@angular/core';\r\nimport {\r\n FormGroup,\r\n FormControl,\r\n Validators,\r\n} from '../../../../../node_modules/@angular/forms';\r\nimport {\r\n BsModalRef,\r\n BsModalService,\r\n} from '../../../../../node_modules/ngx-bootstrap';\r\nimport { ActivatedRoute } from '../../../../../node_modules/@angular/router';\r\nimport { CommonService } from '../../../common/common-service';\r\nimport { DistributorService } from '../distributor.service';\r\nimport { ToastrService } from 'ngx-toastr';\r\n\r\n@Component({\r\n selector: 'meter-installation-charges',\r\n templateUrl: './meter-installation-charges.component.html',\r\n styleUrls: [\r\n './meter-installation-charges.component.scss',\r\n './../../../component/form.styles.scss',\r\n ],\r\n})\r\nexport class MeterInstallationChargesComponent implements OnInit {\r\n @Input('distributorId')\r\n public distributorId: number;\r\n @Input('isReadOnlyMode')\r\n public isReadOnlyMode = false;\r\n public installationCharges: any;\r\n public meterInstallationChargeForm: FormGroup;\r\n public errorMessage = '';\r\n public loading: boolean = false;\r\n public updateMeterInstallationCharges: boolean = false;\r\n private modalRef: BsModalRef;\r\n\r\n constructor(\r\n protected route: ActivatedRoute,\r\n private modalService: BsModalService,\r\n public commonService: CommonService,\r\n protected toastr: ToastrService,\r\n public distributorService: DistributorService\r\n ) {\r\n this.meterInstallationChargeForm = new FormGroup({\r\n meterInstallationChargeId: new FormControl(0),\r\n distributorId: new FormControl(0, [Validators.required]),\r\n installationCharge: new FormControl(null, [Validators.required]),\r\n administrationFee: new FormControl(null, [Validators.required]),\r\n effectiveDate: new FormControl(null, [Validators.required]),\r\n });\r\n }\r\n\r\n public ngOnInit() {\r\n this.route.params.subscribe(\r\n (params) => {\r\n this.distributorId = params.distributorId;\r\n this.getDistributorMeterIntallationCharges();\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n }\r\n\r\n public installationChargesModal(template: TemplateRef): void {\r\n this.updateMeterInstallationCharges = false;\r\n this.initInstallationChargesForm({});\r\n this.modalRef = this.modalService.show(template);\r\n }\r\n\r\n public onPopupSubmit(): void {\r\n this.errorMessage = '';\r\n this.commonService.validateAllFormFields(\r\n this.meterInstallationChargeForm\r\n );\r\n this.meterInstallationChargeForm.controls.distributorId.setValue(\r\n this.distributorId\r\n );\r\n if (this.meterInstallationChargeForm.valid) {\r\n this.distributorService\r\n .addDistributorMeterInstallationCharge(\r\n this.meterInstallationChargeForm.value\r\n )\r\n .subscribe(\r\n (response) => {\r\n this.modalRef.hide();\r\n this.getDistributorMeterIntallationCharges();\r\n this.toastr.success(\r\n 'Distributor Meter Installation Charges Were Successfully Updated'\r\n );\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.toastr.error(this.errorMessage);\r\n }\r\n );\r\n }\r\n }\r\n\r\n public onSelect(event: any, template: TemplateRef): void {\r\n this.updateMeterInstallationCharges = true;\r\n const installationCharge = event.selected[0];\r\n this.initInstallationChargesForm(installationCharge);\r\n this.modalRef = this.modalService.show(template);\r\n }\r\n\r\n public initInstallationChargesForm(installationCharge: any): void {\r\n this.meterInstallationChargeForm = new FormGroup({\r\n meterInstallationChargeId: new FormControl(\r\n installationCharge.meterInstallationChargeId\r\n ),\r\n distributorId: new FormControl(0, [Validators.required]),\r\n installationCharge: new FormControl(\r\n installationCharge.installationCharge,\r\n [Validators.required]\r\n ),\r\n administrationFee: new FormControl(\r\n installationCharge.administrationFee,\r\n [Validators.required]\r\n ),\r\n effectiveDate: new FormControl(installationCharge.effectiveDate, [\r\n Validators.required,\r\n ]),\r\n });\r\n\r\n if (this.isReadOnlyMode) {\r\n this.meterInstallationChargeForm.disable();\r\n }\r\n }\r\n\r\n private getDistributorMeterIntallationCharges(): void {\r\n this.loading = true;\r\n this.distributorService\r\n .getDistributorMeterIntallationCharges(this.distributorId)\r\n .subscribe(\r\n (installationCharges: any) => {\r\n this.installationCharges = installationCharges;\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.loading = false;\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.toastr.error(this.errorMessage);\r\n }\r\n );\r\n }\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { AllocationRunService } from '../../allocation-run.service';\r\nimport { CommonService } from '../../../../../common/common-service';\r\nimport { AllocationRunErrorSummary } from '../../../../../model/allocation-run/allocation-run-error-summary.model';\r\n\r\n@Component({\r\n selector: 'allocation-error',\r\n templateUrl: './allocation-error.component.html',\r\n styleUrls: ['./allocation-error.component.scss'],\r\n})\r\nexport class AllocationErrorComponent implements OnInit {\r\n @Input('allocationRunId')\r\n public allocationRunId: number;\r\n public loading = false;\r\n public errorMessage = '';\r\n public allocationRunErrorSummary: AllocationRunErrorSummary;\r\n\r\n public errorTypes: string[] = [];\r\n\r\n constructor(\r\n private router: Router,\r\n private allocationRunService: AllocationRunService,\r\n public commonService: CommonService\r\n ) {}\r\n\r\n public ngOnInit() {\r\n this.initialize();\r\n }\r\n\r\n public toAllocationErrors() {\r\n this.router.navigate(['allocation', this.allocationRunId, 'errors'], {\r\n queryParams: {\r\n startDate: this.allocationRunErrorSummary.startDateTime,\r\n runDate: this.allocationRunErrorSummary.createdDateTime,\r\n },\r\n });\r\n }\r\n\r\n private initialize() {\r\n this.loading = true;\r\n this.allocationRunService\r\n .getAllocationRunErrorSummary(this.allocationRunId)\r\n .subscribe(\r\n (allocationRunErrorSummary: AllocationRunErrorSummary) => {\r\n this.allocationRunErrorSummary = allocationRunErrorSummary;\r\n this.errorTypes = Object.keys(\r\n this.allocationRunErrorSummary.errorList\r\n );\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n}\r\n","export class DocumentTemplate {\r\n constructor(\r\n public documentTemplateId: number,\r\n public templateName: string,\r\n public description?: string,\r\n public path?: string,\r\n public container?: string\r\n ) {}\r\n}\r\n","import { DocumentTemplate } from './../../../model/document-template.model';\r\n\r\nimport {\r\n FormGroup,\r\n FormControl,\r\n ValidatorFn,\r\n Validators,\r\n} from '@angular/forms';\r\nimport {\r\n Component,\r\n OnInit,\r\n ElementRef,\r\n OnChanges,\r\n AfterViewInit,\r\n ViewChild,\r\n Input,\r\n EventEmitter,\r\n Output,\r\n SimpleChanges,\r\n} from '@angular/core';\r\nimport {\r\n HttpClient,\r\n HttpHeaders,\r\n HttpRequest,\r\n HttpEventType,\r\n HttpResponse,\r\n} from '../../../../../node_modules/@angular/common/http';\r\nimport { CommonService } from '../../../common/common-service';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { saveAs } from 'file-saver/FileSaver';\r\nimport { ToastrService } from 'ngx-toastr';\r\n\r\n@Component({\r\n selector: 'document-template-upload',\r\n templateUrl: './document-template-upload.component.html',\r\n styleUrls: [\r\n './document-template-upload.component.scss',\r\n '../../form.styles.scss',\r\n ],\r\n})\r\nexport class DocumentTemplateUploadComponent\r\n implements OnInit, OnChanges, AfterViewInit {\r\n @ViewChild('file')\r\n public file: ElementRef;\r\n @Input('containerForm')\r\n public containerForm: FormGroup;\r\n @Input('templateName')\r\n public templateName: string;\r\n @Input('listenerId')\r\n public listenerId: string;\r\n @Input('disable')\r\n public disable: boolean = false;\r\n @Input('existingDocument')\r\n public existingDocument: DocumentTemplate;\r\n @Input('required')\r\n public required = true;\r\n @Output()\r\n public successfulUpload = new EventEmitter();\r\n public retrievingFile: boolean;\r\n public uploadOther = false;\r\n public uploadForm: FormGroup;\r\n public fileFormControl: FormControl;\r\n public fileInputFormControl: FormControl;\r\n public uploadProgress: number;\r\n public processingFile: boolean;\r\n public processed: boolean;\r\n public processSuccess: boolean;\r\n public maxFileSize = 200000000000; // Blob 200GB File limit\r\n\r\n public uploadedDocumentId: number;\r\n\r\n constructor(\r\n private http: HttpClient,\r\n protected toastr: ToastrService,\r\n public commonService: CommonService\r\n ) {}\r\n\r\n public ngOnInit(): void {\r\n this.fileFormControl = new FormControl({\r\n value: null,\r\n disabled: this.disable,\r\n });\r\n const validators: ValidatorFn[] = [this.fileSizeValidator.bind(this)];\r\n if (this.required) {\r\n validators.push(Validators.required);\r\n }\r\n this.fileInputFormControl = new FormControl(\r\n {\r\n value: null,\r\n disabled: this.disable,\r\n },\r\n validators\r\n );\r\n this.uploadForm = new FormGroup({\r\n fileFormControl: this.fileFormControl,\r\n fileInputFormControl: this.fileInputFormControl,\r\n existingFile: new FormControl({\r\n value: null,\r\n disabled: true,\r\n }),\r\n });\r\n const num = Object.keys(this.containerForm.controls).filter((field) =>\r\n field.startsWith(this.listenerId + 'Upload')\r\n ).length;\r\n this.containerForm.addControl(\r\n this.listenerId + 'Upload' + num,\r\n this.uploadForm\r\n );\r\n if (this.existingDocument) {\r\n this.uploadedDocumentId = this.existingDocument.documentTemplateId;\r\n if (this.fileInputFormControl) {\r\n this.fileInputFormControl.patchValue(\r\n this.existingDocument.templateName\r\n );\r\n }\r\n this.reevaluate();\r\n }\r\n }\r\n\r\n public ngAfterViewInit(): void {\r\n if (this.existingDocument) {\r\n this.uploadForm.controls.existingFile.patchValue(\r\n this.existingDocument.templateName\r\n );\r\n }\r\n }\r\n\r\n public ngOnChanges(changes: SimpleChanges): void {\r\n if (\r\n changes['disable'] &&\r\n !isNullOrUndefined(this.fileFormControl) &&\r\n !isNullOrUndefined(this.fileInputFormControl)\r\n ) {\r\n const value = changes['disable'].currentValue;\r\n if (value) {\r\n this.fileFormControl.disable();\r\n this.fileFormControl.markAsTouched();\r\n this.fileFormControl.updateValueAndValidity();\r\n\r\n this.fileInputFormControl.disable();\r\n this.fileInputFormControl.markAsTouched();\r\n this.fileInputFormControl.updateValueAndValidity();\r\n } else {\r\n this.fileFormControl.enable();\r\n this.fileFormControl.markAsTouched();\r\n this.fileFormControl.updateValueAndValidity();\r\n\r\n this.fileInputFormControl.enable();\r\n this.fileInputFormControl.markAsTouched();\r\n this.fileInputFormControl.setValidators([Validators.required]);\r\n this.fileInputFormControl.updateValueAndValidity();\r\n }\r\n }\r\n }\r\n\r\n public uploadAnother(): void {\r\n this.uploadOther = !this.uploadOther;\r\n\r\n if (this.uploadOther) {\r\n this.fileInputFormControl.setValidators([Validators.required]);\r\n this.fileInputFormControl.updateValueAndValidity();\r\n } else {\r\n this.fileInputFormControl.setValidators([]);\r\n this.fileInputFormControl.updateValueAndValidity();\r\n }\r\n }\r\n\r\n public onFileChange(): void {\r\n this.fileInputFormControl.setValue(\r\n this.file.nativeElement.files[0]\r\n ? this.file.nativeElement.files[0].name\r\n : null\r\n );\r\n }\r\n\r\n public fileSizeValidator(): { [s: string]: boolean } {\r\n if (\r\n !isNullOrUndefined(this.file) &&\r\n !isNullOrUndefined(this.file.nativeElement.files[0]) &&\r\n this.maxFileSize < this.file.nativeElement.files[0].size\r\n ) {\r\n return { maxfilefizeexceeded: true };\r\n }\r\n return null;\r\n }\r\n\r\n public upload(): void {\r\n this.uploadProgress = 0;\r\n this.processingFile = false;\r\n this.processed = false;\r\n\r\n const formData = new FormData();\r\n formData.append(\r\n this.file.nativeElement.files[0].name,\r\n this.file.nativeElement.files[0]\r\n );\r\n formData.append('path', 'Templates');\r\n formData.append('templateName', this.templateName);\r\n const headers = new HttpHeaders({\r\n enctype: 'multipart/form-data',\r\n });\r\n\r\n const req = new HttpRequest(\r\n 'POST',\r\n API_URL + 'documentTemplate/UploadAsync',\r\n formData,\r\n {\r\n headers,\r\n reportProgress: true,\r\n }\r\n );\r\n\r\n this.http.request(req).subscribe(\r\n (event) => {\r\n if (event.type === HttpEventType.UploadProgress) {\r\n this.uploadProgress = Math.round(\r\n (100 * event.loaded) / event.total\r\n );\r\n this.processingFile = true;\r\n } else if (event instanceof HttpResponse) {\r\n this.processingFile = false;\r\n this.processed = true;\r\n this.processSuccess = true;\r\n this.toastr.success(\r\n 'Successfully uploaded ' +\r\n this.file.nativeElement.files[0].name\r\n );\r\n this.uploadedDocumentId = event.body['documentId'];\r\n const newlyUploadedDocument = new DocumentTemplate(\r\n this.uploadedDocumentId,\r\n this.file.nativeElement.files[0].templateName,\r\n 'description',\r\n 'path',\r\n 'container'\r\n );\r\n this.successfulUpload.emit({\r\n listenerId: this.listenerId,\r\n value: newlyUploadedDocument,\r\n });\r\n this.uploadForm.controls.existingFile.patchValue(\r\n newlyUploadedDocument.templateName\r\n );\r\n this.reevaluate();\r\n }\r\n },\r\n (error: HttpResponse) => {\r\n this.processingFile = false;\r\n this.processed = true;\r\n this.processSuccess = false;\r\n if (isNullOrUndefined(error.body)) {\r\n this.toastr.error(\r\n 'An error occurred while uploading the document'\r\n );\r\n } else {\r\n this.toastr.error(error.body.errorMessage);\r\n }\r\n this.successfulUpload.emit({\r\n listenerId: this.listenerId,\r\n value: null,\r\n });\r\n }\r\n );\r\n }\r\n\r\n public onDownloadFile() {\r\n this.retrievingFile = true;\r\n this.http\r\n .get(\r\n API_URL +\r\n 'documentTemplate/DownloadAsync?documentTemplateId=' +\r\n this.existingDocument.documentTemplateId,\r\n { responseType: 'blob' }\r\n )\r\n .subscribe(\r\n (response) => {\r\n this.retrievingFile = false;\r\n saveAs(response, this.existingDocument.path);\r\n this.toastr.success('Download complete');\r\n },\r\n (error) => {\r\n this.retrievingFile = false;\r\n if (isNullOrUndefined(error.body)) {\r\n this.toastr.error(\r\n 'An error occurred while retrieving document for download'\r\n );\r\n } else {\r\n this.toastr.error(error.body.errorMessage);\r\n }\r\n }\r\n );\r\n }\r\n\r\n private reevaluate() {\r\n if (\r\n !isNullOrUndefined(this.fileFormControl) &&\r\n !isNullOrUndefined(this.fileInputFormControl)\r\n ) {\r\n if (this.uploadedDocumentId) {\r\n this.fileInputFormControl.setValidators([]);\r\n this.fileInputFormControl.updateValueAndValidity();\r\n } else {\r\n this.fileInputFormControl.setValidators([Validators.required]);\r\n this.fileInputFormControl.updateValueAndValidity();\r\n }\r\n }\r\n }\r\n}\r\n","import { Observable } from 'rxjs';\r\nimport { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\r\n\r\n@Injectable()\r\nexport class ConsumerCompanyPpaMaintenanceService {\r\n constructor(private httpClient: HttpClient) {}\r\n\r\n public GetConsumerCompanyPpaMaintenanceDocuments(\r\n consumerCompanyId: number\r\n ): Observable {\r\n return this.httpClient.get(\r\n API_URL +\r\n 'ConsumerCompanyPpaMaintenance/GetConsumerCompanyPpaMaintenanceDocuments',\r\n {\r\n params: new HttpParams().set(\r\n 'consumerCompanyId',\r\n String(consumerCompanyId)\r\n ),\r\n }\r\n );\r\n }\r\n\r\n public AddNewAddendum(\r\n consumerCompanyId: number,\r\n comment: string,\r\n addendumDoc: any\r\n ): Observable {\r\n const formData = new FormData();\r\n formData.append('consumerCompanyId', JSON.stringify(consumerCompanyId));\r\n formData.append('comment', JSON.stringify(comment));\r\n formData.append(addendumDoc.name, addendumDoc);\r\n const headers = new HttpHeaders({\r\n enctype: 'multipart/form-data',\r\n });\r\n\r\n return this.httpClient.post(\r\n API_URL + 'ConsumerCompanyPpaMaintenance/AddConsumerAddendum',\r\n formData,\r\n { headers }\r\n );\r\n }\r\n\r\n public RenewConsumerPpa(\r\n consumerCompanyId: number,\r\n consumerCompanyPpaDetailId: number,\r\n effectiveDate: Date,\r\n expiryDate: number,\r\n newPpaDoc: any,\r\n ppaSignedDate: Date\r\n ): Observable {\r\n const formData = new FormData();\r\n formData.append('consumerCompanyId', JSON.stringify(consumerCompanyId));\r\n formData.append(\r\n 'consumerCompanyPpaDetailId',\r\n JSON.stringify(consumerCompanyPpaDetailId)\r\n );\r\n formData.append('effectiveDate', JSON.stringify(effectiveDate));\r\n formData.append('expiryDate', JSON.stringify(expiryDate));\r\n formData.append(newPpaDoc.name, newPpaDoc);\r\n formData.append('ppaSignedDate', JSON.stringify(ppaSignedDate));\r\n const headers = new HttpHeaders({\r\n enctype: 'multipart/form-data',\r\n });\r\n\r\n return this.httpClient.post(\r\n API_URL + 'ConsumerCompanyPpaMaintenance/RenewConsumerPpa',\r\n formData,\r\n { headers }\r\n );\r\n }\r\n}\r\n","import { ToastrService } from 'ngx-toastr';\r\nimport {\r\n Component,\r\n Input,\r\n OnInit,\r\n TemplateRef,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { ConsumerCompanyPpaMaintenanceService } from './consumer-company-ppa-maintenance.service';\r\nimport { CommonService } from '../../../common/common-service';\r\nimport { DocumentService } from '../../document/document.service';\r\n\r\nimport { saveAs } from 'file-saver/FileSaver';\r\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { BsModalRef, BsModalService } from 'ngx-bootstrap';\r\nimport { ComponentTriggersService } from '../../../common/component-triggers.service';\r\nimport { DownloadableDocument } from '../../../model/downloadable-document.model';\r\n\r\n@Component({\r\n selector: 'consumer-company-ppa-maintenance',\r\n templateUrl: './consumer-company-ppa-maintenance.component.html',\r\n styleUrls: [\r\n './consumer-company-ppa-maintenance.component.scss',\r\n '../../form.styles.scss',\r\n ],\r\n})\r\nexport class ConsumerCompanyPpaMaintenanceComponent implements OnInit {\r\n @ViewChild('newAddendumModal')\r\n public newAddendumModal: TemplateRef;\r\n @ViewChild('renewPpaModal')\r\n public renewPpaModal: TemplateRef;\r\n @Input('consumerCompanyId')\r\n public consumerCompanyId: number;\r\n @Input('isPpaAddendumEnabled')\r\n public isPpaAddendumEnabled: boolean = false;\r\n public documents: DownloadableDocument[];\r\n public loading: boolean = true;\r\n public popupSubmitting: boolean = false;\r\n public expiryDate: Date;\r\n public errorMessage = '';\r\n public addAddendumForm: FormGroup;\r\n public renewPpaForm: FormGroup;\r\n\r\n private modalRef: BsModalRef;\r\n private addendumDocument: any;\r\n private renewPpaDocument: any;\r\n private consumerCompanyPpaDetailId: number;\r\n\r\n constructor(\r\n private consumerCompanyPPaMaintenanceService: ConsumerCompanyPpaMaintenanceService,\r\n private commonService: CommonService,\r\n private documentService: DocumentService,\r\n private componentTriggerService: ComponentTriggersService,\r\n private modalService: BsModalService,\r\n private toaster: ToastrService\r\n ) {\r\n this.addAddendumForm = new FormGroup({\r\n addendumDoc: new FormControl(null, [Validators.required]),\r\n comment: new FormControl(null, [Validators.required]),\r\n });\r\n\r\n this.renewPpaForm = new FormGroup({\r\n consumerCompanyPpaDetailId: new FormControl(\r\n this.consumerCompanyPpaDetailId\r\n ),\r\n consumerCompanyId: new FormControl(this.consumerCompanyId),\r\n effectiveDate: new FormControl(null, Validators.required),\r\n expiryDateAfterEffectiveDate: new FormControl(\r\n null,\r\n Validators.required\r\n ),\r\n renewPpaDoc: new FormControl('', [Validators.required]),\r\n ppaSignedDate: new FormControl(null, Validators.required),\r\n });\r\n }\r\n\r\n public ngOnInit() {\r\n this.errorMessage = '';\r\n this.loadDocuments();\r\n }\r\n\r\n public loadDocuments() {\r\n this.loading = true;\r\n this.consumerCompanyPPaMaintenanceService\r\n .GetConsumerCompanyPpaMaintenanceDocuments(this.consumerCompanyId)\r\n .subscribe(\r\n (result) => {\r\n // if a ppa has not been generated then disable tab\r\n if (result.ppaGenerated === false) {\r\n this.loading = false;\r\n return;\r\n }\r\n this.componentTriggerService.triggerEnableConsumerPpaAndAddendums.next(\r\n true\r\n );\r\n this.consumerCompanyPpaDetailId =\r\n result.consumerCompanyPpaDetailId;\r\n this.expiryDate = result.expiryDate;\r\n this.documents = result.documents;\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n\r\n public onDownloadDocument(row: DownloadableDocument) {\r\n this.toaster.info('Processing document');\r\n row.busyDownloading = true;\r\n this.documentService.downloadDocument(row.documentId).subscribe(\r\n (response) => {\r\n row.busyDownloading = false;\r\n saveAs(response, row.fileName);\r\n },\r\n (error) => {\r\n row.busyDownloading = false;\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.toaster.error(\r\n 'An error occurred while retrieving document for download'\r\n );\r\n }\r\n );\r\n }\r\n\r\n public onShowNewAddendumModal() {\r\n this.addAddendumForm.reset();\r\n this.modalRef = this.modalService.show(this.newAddendumModal);\r\n }\r\n\r\n public onShowRenewPpaModal() {\r\n this.renewPpaForm.reset();\r\n this.renewPpaForm.controls.effectiveDate.setValue(this.expiryDate);\r\n this.renewPpaForm.controls.expiryDateAfterEffectiveDate.setValue(20);\r\n\r\n this.modalRef = this.modalService.show(this.renewPpaModal);\r\n }\r\n\r\n public newAddendumDocumentUpload(event: any) {\r\n if (event.target.files.length > 0) {\r\n this.addendumDocument = event.target.files[0];\r\n }\r\n }\r\n\r\n public newRenewPpaDocumentUpload(event) {\r\n if (event.target.files.length > 0) {\r\n this.renewPpaDocument = event.target.files[0];\r\n }\r\n }\r\n\r\n public onNewAddendumSubmit() {\r\n this.errorMessage = '';\r\n this.commonService.validateAllFormFields(this.addAddendumForm);\r\n if (this.addAddendumForm.valid) {\r\n this.popupSubmitting = true;\r\n this.consumerCompanyPPaMaintenanceService\r\n .AddNewAddendum(\r\n this.consumerCompanyId,\r\n this.addAddendumForm.controls.comment.value,\r\n this.addendumDocument\r\n )\r\n .subscribe(\r\n (response) => {\r\n this.modalRef.hide();\r\n this.popupSubmitting = false;\r\n this.toaster.success('Successfully uploaded addendum');\r\n this.loadDocuments();\r\n },\r\n (error) => {\r\n this.popupSubmitting = false;\r\n this.toaster.error(\r\n this.commonService.handleErrorMessage(error)\r\n );\r\n }\r\n );\r\n }\r\n }\r\n\r\n public onRenewPpaSubmit() {\r\n this.errorMessage = '';\r\n this.commonService.validateAllFormFields(this.renewPpaForm);\r\n if (this.renewPpaForm.valid) {\r\n this.popupSubmitting = true;\r\n this.consumerCompanyPPaMaintenanceService\r\n .RenewConsumerPpa(\r\n this.consumerCompanyId,\r\n this.consumerCompanyPpaDetailId,\r\n this.renewPpaForm.controls.effectiveDate.value,\r\n this.renewPpaForm.controls.expiryDateAfterEffectiveDate\r\n .value,\r\n this.renewPpaDocument,\r\n this.renewPpaForm.controls.ppaSignedDate.value\r\n )\r\n .subscribe(\r\n (event) => {\r\n this.modalRef.hide();\r\n this.popupSubmitting = false;\r\n this.toaster.success(\r\n 'Successfully uploaded PPA renewal'\r\n );\r\n this.loadDocuments();\r\n },\r\n (error) => {\r\n this.popupSubmitting = false;\r\n this.toaster.error(\r\n this.commonService.handleErrorMessage(error)\r\n );\r\n }\r\n );\r\n }\r\n }\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { CommonService } from '../../../../common/common-service';\r\nimport { DistributorService } from '../../distributor.service';\r\nimport { TradingLimitsOverall } from '../../../../model/view/trading-limits-overall.model';\r\n\r\n@Component({\r\n selector: 'trading-limits-overall',\r\n templateUrl: './trading-limits-overall.component.html',\r\n styleUrls: ['./trading-limits-overall.component.scss'],\r\n})\r\nexport class TradingLimitsOverallComponent implements OnInit {\r\n @Input('distributorId')\r\n public distributorId: number;\r\n public loading = false;\r\n public errorMessage = '';\r\n public chartData: Array<{ name: string; value: number }>;\r\n public message = '';\r\n public tradingLimit: number;\r\n\r\n constructor(\r\n private distributorService: DistributorService,\r\n public commonService: CommonService\r\n ) {}\r\n\r\n public ngOnInit() {\r\n this.initialize();\r\n }\r\n\r\n private initialize() {\r\n this.loading = true;\r\n this.chartData = [];\r\n this.distributorService\r\n .getTradingLimitsOverall(this.distributorId)\r\n .subscribe(\r\n (tradingLimitsOverall: TradingLimitsOverall) => {\r\n this.populateChartData(\r\n tradingLimitsOverall.tradingLimitsOverallList\r\n );\r\n this.message = tradingLimitsOverall.message;\r\n this.tradingLimit = tradingLimitsOverall.tradingLimit;\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n\r\n private populateChartData(inputData: { [name: string]: number }) {\r\n this.chartData = [];\r\n const headings = Object.keys(inputData);\r\n headings.forEach((heading) => {\r\n this.chartData.push({\r\n name: heading.replace(\r\n heading.charAt(0),\r\n heading.charAt(0).toUpperCase()\r\n ),\r\n value: Math.round(inputData[heading]),\r\n });\r\n });\r\n }\r\n}\r\n","import { Component, Input } from '@angular/core';\r\nimport { CommonService } from '../../../common/common-service';\r\n\r\n@Component({\r\n selector: 'distributor-dashboard',\r\n templateUrl: './distributor-dashboard.component.html',\r\n styleUrls: ['./distributor-dashboard.component.scss'],\r\n})\r\nexport class DistributorDashboardComponent {\r\n @Input('distributorId')\r\n public distributorId: number;\r\n\r\n constructor(public commonService: CommonService) {}\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { CommonService } from '../../../../common/common-service';\r\nimport { DistributorService } from '../../distributor.service';\r\nimport { PowerImportLimit } from '../../../../model/view/power-import-limit.model';\r\n\r\n@Component({\r\n selector: 'power-import-limit',\r\n templateUrl: './power-import-limit.component.html',\r\n styleUrls: ['./power-import-limit.component.scss'],\r\n})\r\nexport class PowerImportLimitComponent implements OnInit {\r\n @Input('distributorId')\r\n public distributorId: number;\r\n public loading = false;\r\n public errorMessage = '';\r\n public chartData: Array<{ name: string; value: number }>;\r\n public message = '';\r\n public tradingLimit: number;\r\n\r\n constructor(\r\n private distributorService: DistributorService,\r\n public commonService: CommonService\r\n ) {}\r\n\r\n public ngOnInit() {\r\n this.initialize();\r\n }\r\n\r\n private initialize() {\r\n this.loading = true;\r\n this.chartData = [];\r\n this.distributorService\r\n .getPowerImportLimit(this.distributorId)\r\n .subscribe(\r\n (powerImportLimit: PowerImportLimit) => {\r\n this.populateChartData(\r\n powerImportLimit.powerImportLimitList\r\n );\r\n this.message = powerImportLimit.message;\r\n this.tradingLimit = powerImportLimit.tradingLimit;\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n\r\n private populateChartData(inputData: { [name: string]: number }) {\r\n this.chartData = [];\r\n const headings = Object.keys(inputData);\r\n headings.forEach((heading) => {\r\n this.chartData.push({\r\n name: heading.replace(\r\n heading.charAt(0),\r\n heading.charAt(0).toUpperCase()\r\n ),\r\n value: Math.round(inputData[heading]),\r\n });\r\n });\r\n }\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { CommonService } from '../../../../common/common-service';\r\nimport { DistributorService } from '../../distributor.service';\r\nimport { TradingLimitsPerTariff } from '../../../../model/view/trading-limits-per-tariff.model';\r\n\r\n@Component({\r\n selector: 'trading-limits-per-tariff',\r\n templateUrl: './trading-limits-per-tariff.component.html',\r\n styleUrls: ['./trading-limits-per-tariff.component.scss'],\r\n})\r\nexport class TradingLimitsPerTariffComponent implements OnInit {\r\n @Input('distributorId')\r\n public distributorId: number;\r\n public loading = false;\r\n public errorMessage = '';\r\n public chartData: Array>;\r\n public message: string[] = [];\r\n public tradingLimit: number[] = [];\r\n public tariffCode: string[] = [];\r\n\r\n constructor(\r\n private distributorService: DistributorService,\r\n public commonService: CommonService\r\n ) {}\r\n\r\n public ngOnInit() {\r\n this.initialize();\r\n }\r\n\r\n private initialize() {\r\n this.loading = true;\r\n this.chartData = [];\r\n this.distributorService\r\n .getTradingLimitsPerTariff(this.distributorId)\r\n .subscribe(\r\n (tradingLimitsPerTariff: any) => {\r\n this.chartData = [];\r\n (tradingLimitsPerTariff.tradingLimitsPerTariffList as TradingLimitsPerTariff[]).forEach(\r\n (tradingLimitPerTariff) => {\r\n this.populateChartData(\r\n tradingLimitPerTariff.tradingLimitsPerTariffList\r\n );\r\n this.message.push(tradingLimitPerTariff.message);\r\n this.tradingLimit.push(\r\n tradingLimitPerTariff.tradingLimit\r\n );\r\n this.tariffCode.push(\r\n tradingLimitPerTariff.tariffCode\r\n );\r\n }\r\n );\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n\r\n private populateChartData(inputData: { [name: string]: number }) {\r\n const tariffChartData: Array<{ name: string; value: number }> = [];\r\n const headings = Object.keys(inputData);\r\n headings.forEach((heading) => {\r\n tariffChartData.push({\r\n name: heading.replace(\r\n heading.charAt(0),\r\n heading.charAt(0).toUpperCase()\r\n ),\r\n value: Math.round(inputData[heading]),\r\n });\r\n });\r\n this.chartData.push(tariffChartData);\r\n }\r\n}\r\n","import { Component, OnInit, OnDestroy } from '@angular/core';\r\nimport { CommonService } from '../../../common/common-service';\r\nimport { ComponentTriggersService } from '../../../common/component-triggers.service';\r\nimport { Subscription } from '../../../../../node_modules/rxjs';\r\nimport { GeneratorDocumentGeneration } from '../../../model/generator/generator-document-generation.model';\r\nimport { GeneratorProjectFacilityTariffRatesService } from '../../generator-project-facility/generator-project-facility-tariff-rates/generator-project-facility-tariff-rates.service';\r\nimport { GeneratorPpaService } from '../../administration/evaluation/generator-evaluation/generator-ppa/generator-ppa.service';\r\nimport {\r\n FormGroup,\r\n Validators,\r\n FormControl,\r\n} from '../../../../../node_modules/@angular/forms';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { EntityLookup } from '../../../model/entity-lookup.model';\r\nimport { DomSanitizer } from '../../../../../node_modules/@angular/platform-browser';\r\nimport { GeneratorProjectPpaMaintenanceService } from '../generator-project-ppa-maintenance/generator-project-ppa-maintenance.service';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { GeneratorCompanyService } from '../../generator-company/generator-company.service';\r\n\r\n@Component({\r\n selector: 'generator-project-ppa-maintenance-commercial-agreement-change',\r\n templateUrl:\r\n './generator-project-ppa-maintenance-commercial-agreement-change.component.html',\r\n styleUrls: [\r\n './generator-project-ppa-maintenance-commercial-agreement-change.component.scss',\r\n '../../form.styles.scss',\r\n ],\r\n})\r\nexport class GeneratorProjectPpaMaintenanceCommercialAgreementChangeComponent\r\n implements OnInit, OnDestroy {\r\n public loading: boolean;\r\n public errorMessage = '';\r\n public showCommercialAgreement: boolean;\r\n public commercialAgreementEventSubscription: Subscription;\r\n public projectId: number;\r\n public facilityId: number;\r\n public isMicro: boolean = false;\r\n public isPlanned: boolean = false;\r\n public isExisting: boolean = false;\r\n public isPpaSchedule: boolean = false;\r\n public commercialAgreementChangeAdendumForm: FormGroup;\r\n public isDocumentUpload: boolean = false;\r\n private escalationTypes: EntityLookup;\r\n private tariffTypes: any[];\r\n private nonTouTariffTypeId: number;\r\n private facilityPpaDoc: GeneratorDocumentGeneration;\r\n private facilities: any;\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n private commonService: CommonService,\r\n private componentTriggerService: ComponentTriggersService,\r\n private generatorProjectFacilityTariffRatesService: GeneratorProjectFacilityTariffRatesService,\r\n private generatorProjectPpaMaintenanceService: GeneratorProjectPpaMaintenanceService,\r\n private generatorPpaService: GeneratorPpaService,\r\n protected sanitizer: DomSanitizer\r\n ) {}\r\n\r\n public ngOnInit() {\r\n this.route.params.subscribe(\r\n (params) => {\r\n if (params['generatorProjectId']) {\r\n this.projectId = params['generatorProjectId'];\r\n }\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n\r\n this.commercialAgreementEventSubscription = this.componentTriggerService.triggerCommercialAgreementComponent.subscribe(\r\n (response) => {\r\n this.facilityId = response;\r\n this.showCommercialAgreement = true;\r\n this.initialize();\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n this.showCommercialAgreement = false;\r\n }\r\n\r\n public ngOnDestroy() {\r\n this.commercialAgreementEventSubscription.unsubscribe();\r\n }\r\n\r\n public initialize() {\r\n this.loading = true;\r\n this.isDocumentUpload = false;\r\n\r\n // Get Escalation Type Entity Lookups\r\n this.commonService\r\n .getEntityLookups(['GeneratorEscalationType'])\r\n .subscribe(\r\n (entityLookups) => {\r\n this.escalationTypes =\r\n entityLookups.entityLookupResultList[\r\n 'generatorEscalationType'\r\n ];\r\n this.generatorProjectPpaMaintenanceService\r\n .getGeneratorProjectFacilities(this.projectId)\r\n .subscribe(\r\n (page) => {\r\n this.facilities = page;\r\n\r\n this.generatorProjectFacilityTariffRatesService\r\n .getGeneratorTariffRateTariffTypes()\r\n .subscribe(\r\n (types: any[]) => {\r\n this.tariffTypes = types;\r\n\r\n // Get non Tariff Type Lookup Id\r\n this.tariffTypes.forEach(\r\n (t: any) => {\r\n if (\r\n t.value.indexOf(\r\n 'Non'\r\n ) >= 0\r\n ) {\r\n this.nonTouTariffTypeId =\r\n t.entityLookupId;\r\n }\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n\r\n this.generatorPpaService\r\n .getGeneratorFacilityPpa(\r\n this.facilityId\r\n )\r\n .subscribe(\r\n (\r\n ppaPage: GeneratorDocumentGeneration\r\n ) => {\r\n this.facilityPpaDoc = ppaPage;\r\n this.initCommercialAgreementForm(\r\n this.facilityPpaDoc\r\n );\r\n\r\n this.isExisting =\r\n this.facilityPpaDoc\r\n .evaluationField\r\n .documentTemplateName ===\r\n 'Existing Generator PPA';\r\n this.isPlanned =\r\n this.facilityPpaDoc\r\n .evaluationField\r\n .documentTemplateName ===\r\n 'Planned Generator PPA';\r\n this.isMicro =\r\n this.facilityPpaDoc\r\n .evaluationField\r\n .documentTemplateName ===\r\n 'Micro Scale Generator PPA';\r\n\r\n this.disableValidations();\r\n\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n },\r\n (error) => {\r\n this.loading = false;\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n\r\n // Remove unused items\r\n public initCommercialAgreementForm(ppa: GeneratorDocumentGeneration) {\r\n if (!this.isPpaSchedule) {\r\n this.commercialAgreementChangeAdendumForm = new FormGroup({\r\n generatorProjectFacilityId: new FormControl(\r\n isNullOrUndefined(ppa)\r\n ? null\r\n : ppa.evaluationField.generatorProjectFacilityId,\r\n Validators.required\r\n ),\r\n generatorFacilityEvaluationFieldId: new FormControl(\r\n isNullOrUndefined(ppa)\r\n ? null\r\n : ppa.evaluationField\r\n .generatorFacilityEvaluationFieldId,\r\n Validators.required\r\n ),\r\n\r\n commercialOperatorsDate: new FormControl(\r\n isNullOrUndefined(ppa)\r\n ? null\r\n : ppa.evaluationField.commercialOperatorsDate,\r\n Validators.required\r\n ),\r\n minimalAcceptanceInstalledCapacity: new FormControl(\r\n isNullOrUndefined(ppa)\r\n ? null\r\n : ppa.evaluationField\r\n .minimalAcceptanceInstalledCapacity,\r\n Validators.required\r\n ),\r\n allocationCapacity: new FormControl(\r\n isNullOrUndefined(ppa)\r\n ? null\r\n : ppa.evaluationField.allocationCapacity\r\n ),\r\n allocationPeriod: new FormControl(\r\n isNullOrUndefined(ppa)\r\n ? null\r\n : ppa.evaluationField.allocationPeriod\r\n ),\r\n allocationCapacity2: new FormControl(\r\n isNullOrUndefined(ppa)\r\n ? null\r\n : ppa.evaluationField.allocationCapacity2\r\n ),\r\n allocationPeriod2: new FormControl(\r\n isNullOrUndefined(ppa)\r\n ? null\r\n : ppa.evaluationField.allocationPeriod2\r\n ),\r\n allocationCapacity3: new FormControl(\r\n isNullOrUndefined(ppa)\r\n ? null\r\n : ppa.evaluationField.allocationCapacity3\r\n ),\r\n allocationPeriod3: new FormControl(\r\n isNullOrUndefined(ppa)\r\n ? null\r\n : ppa.evaluationField.allocationPeriod3\r\n ),\r\n increasedDate: new FormControl(\r\n isNullOrUndefined(ppa)\r\n ? null\r\n : ppa.evaluationField.increasedDate,\r\n Validators.required\r\n ),\r\n generatorEscalationTypeLookupId: new FormControl(\r\n isNullOrUndefined(ppa)\r\n ? null\r\n : ppa.evaluationField.generatorEscalationTypeLookupId,\r\n Validators.required\r\n ),\r\n tariffTypeLookupId: new FormControl(\r\n isNullOrUndefined(ppa)\r\n ? null\r\n : ppa.evaluationField.tariffTypeLookupId,\r\n Validators.required\r\n ),\r\n\r\n effectiveDate: new FormControl(\r\n isNullOrUndefined(ppa)\r\n ? null\r\n : ppa.evaluationField.effectiveDate,\r\n Validators.required\r\n ),\r\n\r\n addendumDoc: new FormControl(\r\n {\r\n value: '',\r\n disabled: false,\r\n },\r\n [Validators.required]\r\n ),\r\n });\r\n } else {\r\n this.commercialAgreementChangeAdendumForm = new FormGroup({\r\n generatorProjectFacilityId: new FormControl(\r\n isNullOrUndefined(ppa)\r\n ? null\r\n : ppa.evaluationField.generatorProjectFacilityId,\r\n Validators.required\r\n ),\r\n generatorFacilityEvaluationFieldId: new FormControl(\r\n isNullOrUndefined(ppa)\r\n ? null\r\n : ppa.evaluationField\r\n .generatorFacilityEvaluationFieldId,\r\n Validators.required\r\n ),\r\n generatorEscalationTypeLookupId: new FormControl(\r\n isNullOrUndefined(ppa)\r\n ? null\r\n : ppa.evaluationField.generatorEscalationTypeLookupId,\r\n Validators.required\r\n ),\r\n increasedDate: new FormControl(\r\n isNullOrUndefined(ppa)\r\n ? null\r\n : ppa.evaluationField.increasedDate,\r\n Validators.required\r\n ),\r\n tariffTypeLookupId: new FormControl(\r\n isNullOrUndefined(ppa)\r\n ? null\r\n : ppa.evaluationField.tariffTypeLookupId,\r\n Validators.required\r\n ),\r\n\r\n addendumDoc: new FormControl(\r\n {\r\n value: '',\r\n disabled: false,\r\n },\r\n [Validators.required]\r\n ),\r\n });\r\n }\r\n }\r\n\r\n public disableValidations() {\r\n if (!this.isPpaSchedule && this.isExisting) {\r\n this.commonService.disableControl(\r\n this.commercialAgreementChangeAdendumForm.controls\r\n .minimalAcceptanceInstalledCapacity\r\n );\r\n }\r\n }\r\n\r\n public onBack() {\r\n this.hideCommercialAgreement();\r\n }\r\n\r\n public onTariffTypeChange() {\r\n const isNonTou =\r\n this.commercialAgreementChangeAdendumForm.controls\r\n .tariffTypeLookupId.value === this.nonTouTariffTypeId;\r\n this.componentTriggerService.triggerGeneratorProjectFacilityTariffRatesComponent.next(\r\n isNonTou\r\n );\r\n }\r\n\r\n public onSubmit() {\r\n this.errorMessage = '';\r\n this.commonService.validateAllFormFields(\r\n this.commercialAgreementChangeAdendumForm\r\n );\r\n this.validateCommercialOperatorsDate();\r\n if (this.commercialAgreementChangeAdendumForm.valid) {\r\n this.loading = true;\r\n\r\n if (this.isPpaSchedule) {\r\n this.generatorProjectPpaMaintenanceService\r\n .updatePpaScheduleCommercialAgreementAddendum(\r\n this.commercialAgreementChangeAdendumForm.value\r\n )\r\n .subscribe(\r\n (page: GeneratorDocumentGeneration) => {\r\n this.loading = false;\r\n this.hideCommercialAgreement();\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n } else {\r\n this.generatorProjectPpaMaintenanceService\r\n .updatePpaCommercialAgreementAddendum(\r\n this.commercialAgreementChangeAdendumForm.value\r\n )\r\n .subscribe(\r\n (page: GeneratorDocumentGeneration) => {\r\n this.loading = false;\r\n this.hideCommercialAgreement();\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n }\r\n }\r\n\r\n public newAddendumDocumentUpload(output: any): void {\r\n if (output.value && output.listenerId === 'isAddendumDoc') {\r\n this.isDocumentUpload = true;\r\n this.commercialAgreementChangeAdendumForm.controls.addendumDoc.setValue(\r\n output.value\r\n );\r\n }\r\n }\r\n\r\n public hideCommercialAgreement() {\r\n this.showCommercialAgreement = false;\r\n this.componentTriggerService.triggerPpaMaintenanceComponent.next(0);\r\n }\r\n\r\n public validateCommercialOperatorsDate() {\r\n if (\r\n this.commercialAgreementChangeAdendumForm.controls\r\n .commercialOperatorsDate === undefined\r\n ) {\r\n return;\r\n }\r\n\r\n // Validate if commercialOperatorsDate is null\r\n if (\r\n this.commercialAgreementChangeAdendumForm.controls\r\n .commercialOperatorsDate.value == null\r\n ) {\r\n this.commercialAgreementChangeAdendumForm.controls.commercialOperatorsDate.setErrors(\r\n { incorrect: true }\r\n );\r\n return;\r\n }\r\n // Validate if date is on the 1st\r\n const operationDate = new Date(\r\n this.commercialAgreementChangeAdendumForm.controls.commercialOperatorsDate.value\r\n );\r\n if ((operationDate as Date).getDate() !== 1) {\r\n this.commercialAgreementChangeAdendumForm.controls.commercialOperatorsDate.setErrors(\r\n { incorrect: true }\r\n );\r\n }\r\n }\r\n\r\n public onFacilityChange(selectedFacilityId: number) {\r\n this.isDocumentUpload = false;\r\n\r\n this.loading = true;\r\n this.facilityId = selectedFacilityId;\r\n\r\n this.generatorPpaService\r\n .getGeneratorFacilityPpa(this.facilityId)\r\n .subscribe(\r\n (ppaPage: GeneratorDocumentGeneration) => {\r\n this.facilityPpaDoc = ppaPage;\r\n\r\n this.isExisting =\r\n this.facilityPpaDoc.evaluationField\r\n .documentTemplateName === 'Existing Generator PPA';\r\n this.isPlanned =\r\n this.facilityPpaDoc.evaluationField\r\n .documentTemplateName === 'Planned Generator PPA';\r\n this.isMicro =\r\n this.facilityPpaDoc.evaluationField\r\n .documentTemplateName ===\r\n 'Micro Scale Generator PPA';\r\n this.isPpaSchedule = this.facilityPpaDoc.evaluationField.isDocumentGeneratedPpaSchedule;\r\n\r\n this.initCommercialAgreementForm(this.facilityPpaDoc);\r\n this.disableValidations();\r\n\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { CommonService } from '../../../../common/common-service';\r\nimport { Router } from '@angular/router';\r\nimport { AveragePurchaseAndSalesRate } from '../../../../model/view/average-purchase-and-sales-rate.model';\r\nimport { DistributorService } from '../../distributor.service';\r\n\r\n@Component({\r\n selector: 'average-purchase-and-sales-rate',\r\n templateUrl: './average-purchase-and-sales-rate.component.html',\r\n styleUrls: ['./average-purchase-and-sales-rate.component.scss'],\r\n})\r\nexport class AveragePurchaseAndSalesRateComponent implements OnInit {\r\n @Input('distributorId')\r\n public distributorId: number;\r\n public loading = false;\r\n public errorMessage = '';\r\n public averagePurchaseAndSalesRate: AveragePurchaseAndSalesRate;\r\n\r\n constructor(\r\n private router: Router,\r\n private distributorService: DistributorService,\r\n public commonService: CommonService\r\n ) {}\r\n\r\n public ngOnInit() {\r\n this.initialize();\r\n }\r\n\r\n private initialize() {\r\n this.loading = true;\r\n this.distributorService\r\n .getAveragePurchaseAndSalesRate(this.distributorId)\r\n .subscribe(\r\n (averagePurchaseAndSalesRate: AveragePurchaseAndSalesRate) => {\r\n this.averagePurchaseAndSalesRate = averagePurchaseAndSalesRate;\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable } from 'rxjs/Observable';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { Page } from '../../../model/page.model';\r\n\r\n@Injectable()\r\nexport class DistributorWepsLessLossService {\r\n constructor(private httpClient: HttpClient) {}\r\n\r\n public getWepsLessLossesPage(\r\n searchString: string = '',\r\n page: Page,\r\n sortProp: any\r\n ): Observable {\r\n if (isNullOrUndefined(sortProp.direction)) {\r\n sortProp.direction = '';\r\n }\r\n if (isNullOrUndefined(sortProp.property)) {\r\n sortProp.property = '';\r\n } else {\r\n sortProp.property =\r\n sortProp.property === 'period' ? 'periodId' : sortProp.property;\r\n sortProp.direction =\r\n sortProp.property === 'periodId' ? 'desc' : sortProp.direction;\r\n }\r\n if (isNullOrUndefined(searchString)) {\r\n searchString = '';\r\n }\r\n\r\n return this.httpClient.get(\r\n API_URL +\r\n 'distributorWepsLessLoss/GetWepsLessLossesPage?searchString=' +\r\n searchString +\r\n '&offset=' +\r\n page.offset +\r\n '&pageSize=' +\r\n page.size +\r\n '&sortDirection=' +\r\n sortProp.direction +\r\n '&sortProperty=' +\r\n sortProp.property\r\n );\r\n }\r\n\r\n public getWepsLessLossesPeriodDailyRatePage(\r\n searchString: string = '',\r\n page: Page,\r\n sortProp: any\r\n ): Observable {\r\n if (isNullOrUndefined(sortProp.direction)) {\r\n sortProp.direction = '';\r\n }\r\n if (isNullOrUndefined(sortProp.property)) {\r\n sortProp.property = '';\r\n } else {\r\n sortProp.property =\r\n sortProp.property === 'period' ? 'periodId' : sortProp.property;\r\n sortProp.direction =\r\n sortProp.property === 'periodId' ? 'desc' : sortProp.direction;\r\n }\r\n if (isNullOrUndefined(searchString)) {\r\n searchString = '';\r\n }\r\n\r\n return this.httpClient.get(\r\n API_URL +\r\n 'distributorWepsLessLoss/GetWepsLessLossesPeriodDailyRatePage?searchString=' +\r\n searchString +\r\n '&offset=' +\r\n page.offset +\r\n '&pageSize=' +\r\n page.size +\r\n '&sortDirection=' +\r\n sortProp.direction +\r\n '&sortProperty=' +\r\n sortProp.property\r\n );\r\n }\r\n\r\n public updateWepsLessLoss(wepsLessLoss: any): Observable {\r\n return this.httpClient.post(\r\n API_URL + 'distributorWepsLessLoss/UpdateWepsLessLoss',\r\n wepsLessLoss\r\n );\r\n }\r\n\r\n public updateWepsLessLossesPeriodDailyRate(\r\n wepsLessLossesPeriodDailyRate: any\r\n ): Observable {\r\n return this.httpClient.post(\r\n API_URL +\r\n 'distributorWepsLessLoss/UpdateWepsLessLossesPeriodDailyRate',\r\n wepsLessLossesPeriodDailyRate\r\n );\r\n }\r\n\r\n public addWepsLessLosses(\r\n wepsLessLoss: any,\r\n lowDemandSeasonId,\r\n highDemandSeasonId\r\n ): Observable {\r\n const wepsLessLosses: any[] = [\r\n {\r\n distributorWepsLessLossId: 0,\r\n distributorId: wepsLessLoss.distributorId,\r\n periodId: wepsLessLoss.periodId,\r\n seasonId: lowDemandSeasonId,\r\n peakTariff: wepsLessLoss.lowDemandPeakTariff,\r\n offPeakTariff: wepsLessLoss.lowDemandOffPeakTariff,\r\n standardTariff: wepsLessLoss.lowDemandStandardTariff,\r\n },\r\n {\r\n distributorWepsLessLossId: 0,\r\n distributorId: wepsLessLoss.distributorId,\r\n periodId: wepsLessLoss.periodId,\r\n seasonId: highDemandSeasonId,\r\n peakTariff: wepsLessLoss.highDemandPeakTariff,\r\n offPeakTariff: wepsLessLoss.highDemandOffPeakTariff,\r\n standardTariff: wepsLessLoss.highDemandStandardTariff,\r\n },\r\n ];\r\n return this.httpClient.post(\r\n API_URL + 'distributorWepsLessLoss/AddWepsLessLosses',\r\n wepsLessLosses\r\n );\r\n }\r\n\r\n public addWepsLessLossesPeriodDailyRate(\r\n wepsLessLossesPeriodDailyRate: any\r\n ): Observable {\r\n return this.httpClient.post(\r\n API_URL +\r\n 'distributorWepsLessLoss/AddWepsLessLossesPeriodDailyRate',\r\n wepsLessLossesPeriodDailyRate\r\n );\r\n }\r\n}\r\n","import {\r\n Component,\r\n OnInit,\r\n TemplateRef,\r\n ViewChild,\r\n Input,\r\n} from '@angular/core';\r\nimport { FormGroup, FormControl, Validators } from '@angular/forms';\r\nimport { Page } from '../../../../model/page.model';\r\nimport { BsModalRef, BsModalService } from 'ngx-bootstrap';\r\nimport { CommonService } from '../../../../common/common-service';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { DistributorWepsLessLossService } from '../distributor-weps-less-loss.service';\r\nimport { EntityLookup } from 'app/model/entity-lookup.model';\r\n\r\n@Component({\r\n selector: 'weps-less-loses',\r\n templateUrl: './weps-less-loses.component.html',\r\n styleUrls: [\r\n './weps-less-loses.component.scss',\r\n '../../../../component/form.styles.scss',\r\n ],\r\n})\r\nexport class WepsLessLosesComponent implements OnInit {\r\n @ViewChild('wepsLessLossesModal')\r\n public wepsLessLossesModal: TemplateRef;\r\n @ViewChild('wepsLessLossesModalUpdate')\r\n public wepsLessLossesModalUpdate: TemplateRef;\r\n @Input('isReadOnlyMode')\r\n public isReadOnlyMode = false;\r\n @Input('distributorId')\r\n public distributorId: number;\r\n public errorMessage = '';\r\n public loading = false;\r\n public wepsLessLossesForm: FormGroup;\r\n public wepsLessLossesFormUpdate: FormGroup;\r\n public page: Page;\r\n public pageItems: any[];\r\n public periods: EntityLookup[];\r\n public seasons: EntityLookup[] = [];\r\n\r\n private sortProp = {};\r\n private modalRef: BsModalRef;\r\n\r\n constructor(\r\n private commonService: CommonService,\r\n private modalService: BsModalService,\r\n private distributorWepsLessLossService: DistributorWepsLessLossService,\r\n protected toastr: ToastrService\r\n ) {\r\n this.page = new Page(6);\r\n\r\n this.wepsLessLossesFormUpdate = this.initUpdateForm();\r\n this.wepsLessLossesForm = this.initNewForm();\r\n }\r\n\r\n public ngOnInit() {\r\n this.changePage({ offset: 0 });\r\n this.commonService.getEntityLookups(['Period', 'Season']).subscribe(\r\n (entityLookups) => {\r\n this.periods = entityLookups.entityLookupResultList['period'];\r\n this.seasons = entityLookups.entityLookupResultList['season'];\r\n this.wepsLessLossesForm = this.initNewForm();\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n }\r\n\r\n public changeWepsLessLossesPage(pageInfo: any): void {\r\n this.loading = true;\r\n this.page.offset = pageInfo.offset * this.page.size;\r\n this.distributorWepsLessLossService\r\n .getWepsLessLossesPage(null, this.page, this.sortProp)\r\n .subscribe(\r\n (responsePage) => {\r\n this.page.totalPages = Math.ceil(\r\n responsePage.totalItems / responsePage.size\r\n );\r\n this.page.totalElements = responsePage.totalItems;\r\n this.pageItems = responsePage.items;\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n\r\n public sortColumn(event: any): void {\r\n this.sortProp = {\r\n direction: event.sorts[0].dir,\r\n property: event.sorts[0].prop,\r\n };\r\n this.changePage({ offset: 0 });\r\n }\r\n\r\n public changePage(pageInfo: any) {\r\n this.errorMessage = '';\r\n this.changeWepsLessLossesPage(pageInfo);\r\n }\r\n\r\n public onSelect(event: any) {\r\n if (this.isReadOnlyMode) {\r\n return;\r\n }\r\n this.openWepsLessLossesModal(event.selected[0]);\r\n }\r\n\r\n public onCancel(): void {\r\n this.errorMessage = '';\r\n this.modalRef.hide();\r\n }\r\n\r\n public onSubmitUpdate(): void {\r\n this.errorMessage = '';\r\n this.commonService.validateAllFormFields(this.wepsLessLossesFormUpdate);\r\n this.wepsLessLossesForm.controls.distributorId.setValue(\r\n this.distributorId\r\n );\r\n if (this.wepsLessLossesFormUpdate.valid) {\r\n this.distributorWepsLessLossService\r\n .updateWepsLessLoss(this.wepsLessLossesFormUpdate.value)\r\n .subscribe(\r\n () => {\r\n this.modalRef.hide();\r\n this.toastr.success(\r\n 'Successfully Updated Distributor Weps Less Loss'\r\n );\r\n this.changePage({ offset: 0 });\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n }\r\n }\r\n public onSubmitNew(): void {\r\n this.errorMessage = '';\r\n this.commonService.validateAllFormFields(this.wepsLessLossesForm);\r\n this.wepsLessLossesForm.controls.distributorId.setValue(\r\n this.distributorId\r\n );\r\n if (this.wepsLessLossesForm.valid) {\r\n this.distributorWepsLessLossService\r\n .addWepsLessLosses(\r\n this.wepsLessLossesForm.value,\r\n this.wepsLessLossesForm.controls.lowDemandSeasonId.value,\r\n this.wepsLessLossesForm.controls.highDemandSeasonId.value\r\n )\r\n .subscribe(\r\n () => {\r\n this.modalRef.hide();\r\n this.toastr.success(\r\n 'Successfully Added Distributor Weps Less Losses'\r\n );\r\n this.changePage({ offset: 0 });\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n }\r\n }\r\n\r\n public openWepsLessLossesModal(wepsLessLoss: any) {\r\n this.modalRef = this.modalService.show(this.wepsLessLossesModalUpdate);\r\n this.wepsLessLossesFormUpdate = this.initUpdateForm();\r\n this.loadWepsLessLosses(wepsLessLoss);\r\n }\r\n\r\n public onAddWepsLessLosses(): void {\r\n this.wepsLessLossesForm = this.initNewForm();\r\n this.modalRef = this.modalService.show(this.wepsLessLossesModal, {\r\n class: 'modal-lg',\r\n });\r\n }\r\n\r\n private loadWepsLessLosses(wepsLessLosses: any) {\r\n const periodId = this.periods.filter(\r\n (p) => p.value === wepsLessLosses.period\r\n )[0].entityLookupId;\r\n const seasonId = this.seasons.filter(\r\n (s) => s.value === wepsLessLosses.season\r\n )[0].entityLookupId;\r\n this.wepsLessLossesFormUpdate = new FormGroup({\r\n distributorWepsLessLossId: new FormControl(\r\n wepsLessLosses.distributorWepsLessLossId,\r\n [Validators.required]\r\n ),\r\n periodId: new FormControl({ value: periodId, disabled: true }, [\r\n Validators.required,\r\n ]),\r\n seasonId: new FormControl({ value: seasonId, disabled: true }, [\r\n Validators.required,\r\n ]),\r\n peakTariff: new FormControl(wepsLessLosses.peakTariff, [\r\n Validators.required,\r\n ]),\r\n offPeakTariff: new FormControl(wepsLessLosses.offPeakTariff, [\r\n Validators.required,\r\n ]),\r\n standardTariff: new FormControl(wepsLessLosses.standardTariff, [\r\n Validators.required,\r\n ]),\r\n });\r\n\r\n if (this.isReadOnlyMode) {\r\n this.wepsLessLossesForm.disable();\r\n }\r\n }\r\n\r\n private initNewForm(): FormGroup {\r\n const lowDemandSeasonId =\r\n this.seasons.length > 0 ? this.seasons[0].entityLookupId : null;\r\n const highDemandSeasonId =\r\n this.seasons.length > 0 ? this.seasons[1].entityLookupId : null;\r\n\r\n return new FormGroup({\r\n distributorId: new FormControl(null, [Validators.required]),\r\n periodId: new FormControl(null, [Validators.required]),\r\n\r\n lowDemandSeasonId: new FormControl(\r\n { value: lowDemandSeasonId, disabled: true },\r\n [Validators.required]\r\n ),\r\n highDemandSeasonId: new FormControl(\r\n { value: highDemandSeasonId, disabled: true },\r\n [Validators.required]\r\n ),\r\n\r\n highDemandPeakTariff: new FormControl(null, [Validators.required]),\r\n highDemandOffPeakTariff: new FormControl(null, [\r\n Validators.required,\r\n ]),\r\n highDemandStandardTariff: new FormControl(null, [\r\n Validators.required,\r\n ]),\r\n\r\n lowDemandPeakTariff: new FormControl(null, [Validators.required]),\r\n lowDemandOffPeakTariff: new FormControl(null, [\r\n Validators.required,\r\n ]),\r\n lowDemandStandardTariff: new FormControl(null, [\r\n Validators.required,\r\n ]),\r\n });\r\n }\r\n\r\n private initUpdateForm(): FormGroup {\r\n return new FormGroup({\r\n distributorWepsLessLossId: new FormControl(null, [\r\n Validators.required,\r\n ]),\r\n distributorId: new FormControl(null, [Validators.required]),\r\n periodId: new FormControl(null, [Validators.required]),\r\n seasonId: new FormControl(null, [Validators.required]),\r\n peakTariff: new FormControl(null, [Validators.required]),\r\n offPeakTariff: new FormControl(null, [Validators.required]),\r\n standardTariff: new FormControl(null, [Validators.required]),\r\n });\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { CommonService } from '../../../../common/common-service';\r\nimport { DashboardService } from '../../dashboard.service';\r\n\r\n@Component({\r\n selector: 'generator-ppa-warning-card',\r\n templateUrl: './generator-ppa-warning-card.component.html',\r\n styleUrls: ['./generator-ppa-warning-card.component.scss'],\r\n})\r\nexport class GeneratorPpaWarningCardComponent implements OnInit {\r\n public overdue: number = 0;\r\n public total: number = 0;\r\n public errorMessage = '';\r\n public loading = false;\r\n\r\n constructor(\r\n private dashboardService: DashboardService,\r\n public commonService: CommonService\r\n ) {}\r\n\r\n public ngOnInit() {\r\n this.initialize();\r\n }\r\n\r\n private initialize() {\r\n this.loading = true;\r\n this.dashboardService.getGeneratorPpaWarningNotifications().subscribe(\r\n (facilitiesEvaluationNotifications) => {\r\n this.overdue =\r\n facilitiesEvaluationNotifications.generatorFacilityPpaOverdueItemsCount;\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { CommonService } from '../../../../common/common-service';\r\nimport { DashboardService } from '../../dashboard.service';\r\n\r\n@Component({\r\n selector: 'consumer-ppa-warning-card',\r\n templateUrl: './consumer-ppa-warning-card.component.html',\r\n})\r\nexport class ConsumerPpaWarningCardComponent implements OnInit {\r\n public overdue: number = 0;\r\n public total: number = 0;\r\n public errorMessage = '';\r\n public loading = false;\r\n\r\n constructor(\r\n private dashboardService: DashboardService,\r\n public commonService: CommonService\r\n ) {}\r\n\r\n public ngOnInit() {\r\n this.initialize();\r\n }\r\n\r\n private initialize() {\r\n this.loading = true;\r\n this.dashboardService\r\n .getConsumerCompanyPpaWarningNotifications()\r\n .subscribe(\r\n (consumerCompanyPPAWarningNotification) => {\r\n this.overdue =\r\n consumerCompanyPPAWarningNotification.consumerCompanyPpaOverdueItemsCount;\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n}\r\n","import {\r\n Component,\r\n Input,\r\n OnInit,\r\n TemplateRef,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { debounceTime } from 'rxjs/operators';\r\nimport { Page } from '../../../../model/page.model';\r\nimport { CommonService } from '../../../../common/common-service';\r\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { PrepaidVendorService } from '../prepaid-vendor.service';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { BsModalRef } from 'ngx-bootstrap';\r\nimport { BsModalService } from 'ngx-bootstrap/modal';\r\nimport { PrepaidVendorPrepaidRemovalPercentage } from '../../../../model/prepaid-vendor/prepaid-vendor-prepaid-removal-percentage.model';\r\nimport { isNullOrUndefined } from 'util';\r\n\r\n@Component({\r\n selector: 'prepaid-vendor-prepaid-removal-percentage-list',\r\n templateUrl:\r\n './prepaid-vendor-prepaid-removal-percentage-list.component.html',\r\n styleUrls: [\r\n '../../../form.styles.scss',\r\n './prepaid-vendor-prepaid-removal-percentage-list.component.scss',\r\n ],\r\n})\r\nexport class PrepaidVendorPrepaidRemovalPercentageListComponent\r\n implements OnInit {\r\n @Input('prepaidVendorId')\r\n public prepaidVendorId: number;\r\n @Input('isReadOnlyMode')\r\n public isReadOnlyMode: boolean = false;\r\n @ViewChild('prepaidRemovalPercentageModal')\r\n public prepaidRemovalPercentageModal: TemplateRef;\r\n public loading = false;\r\n public saving = false;\r\n public errorMessage = '';\r\n public page: Page;\r\n public pageItems: any[];\r\n public prepaidRemovalPercantageForm: FormGroup;\r\n private sortProp = {};\r\n private searchForm: FormGroup;\r\n private modalRef: BsModalRef;\r\n\r\n constructor(\r\n private prepaidVendorService: PrepaidVendorService,\r\n public commonService: CommonService,\r\n private toastr: ToastrService,\r\n private modalService: BsModalService\r\n ) {\r\n this.page = new Page();\r\n this.searchForm = new FormGroup({\r\n search: new FormControl(''),\r\n });\r\n }\r\n\r\n public ngOnInit() {\r\n this.searchForm\r\n .get('search')\r\n .valueChanges.pipe(debounceTime(300))\r\n .subscribe(\r\n () => {\r\n this.changePage({ offset: 0 });\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n this.initialize();\r\n }\r\n\r\n public addPrepaidVendorPrepaidRemovalPercentage() {\r\n this.errorMessage = '';\r\n this.initPrepaidRemovalPercentageForm(null);\r\n this.modalRef = this.modalService.show(\r\n this.prepaidRemovalPercentageModal\r\n );\r\n }\r\n\r\n public onSelect(event: any) {\r\n this.errorMessage = '';\r\n this.initPrepaidRemovalPercentageForm(event\r\n .selected[0] as PrepaidVendorPrepaidRemovalPercentage);\r\n this.modalRef = this.modalService.show(\r\n this.prepaidRemovalPercentageModal\r\n );\r\n }\r\n\r\n public onCancel() {\r\n this.modalRef.hide();\r\n }\r\n\r\n public sortColumn(event: any): void {\r\n this.sortProp = {\r\n direction: event.sorts[0].dir,\r\n property: event.sorts[0].prop,\r\n };\r\n this.changePage({ offset: 0 });\r\n }\r\n\r\n public changePage(pageInfo: any): void {\r\n const searchString = this.searchForm.value.search;\r\n this.page.offset = pageInfo.offset * this.page.size;\r\n this.prepaidVendorService\r\n .getPrepaidVendorPrepaidRemovalPercentagePage(\r\n this.prepaidVendorId,\r\n searchString,\r\n this.page,\r\n this.sortProp\r\n )\r\n .subscribe(\r\n (responsePage) => {\r\n this.page.totalPages = Math.ceil(\r\n responsePage.totalItems / responsePage.size\r\n );\r\n this.page.totalElements = responsePage.totalItems;\r\n this.pageItems = responsePage.items;\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n\r\n public onPopupSubmit() {\r\n this.errorMessage = '';\r\n this.commonService.validateAllFormFields(\r\n this.prepaidRemovalPercantageForm\r\n );\r\n if (this.prepaidRemovalPercantageForm.valid) {\r\n this.saving = true;\r\n if (\r\n this.prepaidRemovalPercantageForm.get(\r\n 'prepaidVendorPrepaidRemovalPercentageId'\r\n ).value === 0\r\n ) {\r\n this.prepaidVendorService\r\n .addPrepaidVendorPrepaidRemovalPercentage(\r\n this.prepaidRemovalPercantageForm.value\r\n )\r\n .subscribe(\r\n () => {\r\n this.toastr.success(\r\n 'Prepaid removal percentages successfully added and pushed to integrator provider'\r\n );\r\n this.modalRef.hide();\r\n this.changePage({ offset: 0 });\r\n this.saving = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.saving = false;\r\n this.toastr.error(this.errorMessage);\r\n this.changePage({ offset: 0 });\r\n }\r\n );\r\n } else {\r\n this.prepaidVendorService\r\n .updatePrepaidVendorPrepaidRemovalPercentage(\r\n this.prepaidRemovalPercantageForm.value\r\n )\r\n .subscribe(\r\n () => {\r\n this.toastr.success(\r\n 'Prepaid removal percentages successfully updated and pushed to integrator provider'\r\n );\r\n this.modalRef.hide();\r\n this.changePage({ offset: 0 });\r\n this.saving = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.saving = false;\r\n this.toastr.error(this.errorMessage);\r\n this.changePage({ offset: 0 });\r\n }\r\n );\r\n }\r\n }\r\n }\r\n\r\n private initialize() {\r\n this.loading = true;\r\n this.changePage({ offset: 0 });\r\n }\r\n\r\n private initPrepaidRemovalPercentageForm(\r\n prepaidVendorPrepaidRemovalPercentage: PrepaidVendorPrepaidRemovalPercentage\r\n ) {\r\n this.prepaidRemovalPercantageForm = new FormGroup({\r\n prepaidVendorId: new FormControl(this.prepaidVendorId),\r\n prepaidVendorPrepaidRemovalPercentageId: new FormControl(\r\n isNullOrUndefined(prepaidVendorPrepaidRemovalPercentage)\r\n ? 0\r\n : prepaidVendorPrepaidRemovalPercentage.prepaidVendorPrepaidRemovalPercentageId\r\n ),\r\n effectiveDate: new FormControl(\r\n isNullOrUndefined(prepaidVendorPrepaidRemovalPercentage)\r\n ? null\r\n : prepaidVendorPrepaidRemovalPercentage.effectiveDate,\r\n [Validators.required]\r\n ),\r\n prepaidPowerRemovalWeekdayPercentage: new FormControl(\r\n isNullOrUndefined(prepaidVendorPrepaidRemovalPercentage)\r\n ? null\r\n : prepaidVendorPrepaidRemovalPercentage.prepaidPowerRemovalWeekdayPercentage,\r\n [Validators.required, Validators.min(0), Validators.max(100)]\r\n ),\r\n prepaidPowerRemovalWeekendPercentage: new FormControl(\r\n isNullOrUndefined(prepaidVendorPrepaidRemovalPercentage)\r\n ? null\r\n : prepaidVendorPrepaidRemovalPercentage.prepaidPowerRemovalWeekendPercentage,\r\n [Validators.required, Validators.min(0), Validators.max(100)]\r\n ),\r\n });\r\n if (this.isReadOnlyMode) {\r\n this.prepaidRemovalPercantageForm.disable();\r\n }\r\n }\r\n}\r\n","import {\r\n Component,\r\n OnInit,\r\n ViewChild,\r\n TemplateRef,\r\n Input,\r\n} from '@angular/core';\r\nimport { FormGroup, FormControl, Validators } from '@angular/forms';\r\nimport { Page } from '../../../../model/page.model';\r\nimport { EntityLookup } from '../../../../model/entity-lookup.model';\r\nimport { BsModalRef, BsModalService } from 'ngx-bootstrap';\r\nimport { CommonService } from '../../../../common/common-service';\r\nimport { DistributorWepsLessLossService } from '../distributor-weps-less-loss.service';\r\nimport { ToastrService } from 'ngx-toastr';\r\n\r\n@Component({\r\n selector: 'weps-less-lesses-period-daily-rate',\r\n templateUrl: './weps-less-lesses-period-daily-rate.component.html',\r\n styleUrls: [\r\n './weps-less-lesses-period-daily-rate.component.scss',\r\n '../../../../component/form.styles.scss',\r\n ],\r\n})\r\nexport class WepsLessLessesPeriodDailyRateComponent implements OnInit {\r\n @ViewChild('wepsLessLossesPeriodDailyRateModal')\r\n public wepsLessLossesPeriodDailyRateModal: TemplateRef;\r\n @Input('isReadOnlyMode')\r\n public isReadOnlyMode = false;\r\n @Input('distributorId')\r\n public distributorId: number;\r\n public errorMessage = '';\r\n public loading = false;\r\n public wepsLessLossesForm: FormGroup;\r\n public page: Page;\r\n public pageItems: any[];\r\n public periods: EntityLookup[];\r\n public isUpdate: boolean = false;\r\n\r\n private sortProp = {};\r\n private modalRef: BsModalRef;\r\n\r\n constructor(\r\n private commonService: CommonService,\r\n private modalService: BsModalService,\r\n private distributorWepsLessLossService: DistributorWepsLessLossService,\r\n protected toastr: ToastrService\r\n ) {\r\n this.page = new Page(6);\r\n\r\n this.wepsLessLossesForm = this.initNewForm();\r\n }\r\n\r\n public ngOnInit() {\r\n this.changePage({ offset: 0 });\r\n this.commonService.getEntityLookups(['Period']).subscribe(\r\n (entityLookups) => {\r\n this.periods = entityLookups.entityLookupResultList['period'];\r\n this.wepsLessLossesForm = this.initNewForm();\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n }\r\n\r\n public changeWepsLessLossesPeriodDailyRatePage(pageInfo: any): void {\r\n this.loading = true;\r\n this.page.offset = pageInfo.offset * this.page.size;\r\n this.distributorWepsLessLossService\r\n .getWepsLessLossesPeriodDailyRatePage(\r\n null,\r\n this.page,\r\n this.sortProp\r\n )\r\n .subscribe(\r\n (responsePage) => {\r\n this.page.totalPages = Math.ceil(\r\n responsePage.totalItems / responsePage.size\r\n );\r\n this.page.totalElements = responsePage.totalItems;\r\n this.pageItems = responsePage.items;\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n\r\n public sortColumn(event: any): void {\r\n this.sortProp = {\r\n direction: event.sorts[0].dir,\r\n property: event.sorts[0].prop,\r\n };\r\n this.changePage({ offset: 0 });\r\n }\r\n\r\n public changePage(pageInfo: any) {\r\n this.errorMessage = '';\r\n this.changeWepsLessLossesPeriodDailyRatePage(pageInfo);\r\n }\r\n\r\n public onSelect(event: any) {\r\n if (this.isReadOnlyMode) {\r\n return;\r\n }\r\n this.openWepsLessLossesPeriodDailyRateModal(event.selected[0]);\r\n }\r\n\r\n public onCancel(): void {\r\n this.errorMessage = '';\r\n this.modalRef.hide();\r\n }\r\n\r\n public onSubmit(): void {\r\n this.commonService.validateAllFormFields(this.wepsLessLossesForm);\r\n this.wepsLessLossesForm.controls.distributorId.setValue(\r\n this.distributorId\r\n );\r\n if (this.wepsLessLossesForm.valid) {\r\n if (this.isUpdate) {\r\n this.distributorWepsLessLossService\r\n .updateWepsLessLossesPeriodDailyRate(\r\n this.wepsLessLossesForm.value\r\n )\r\n .subscribe(\r\n () => {\r\n this.modalRef.hide();\r\n this.toastr.success(\r\n 'Successfully Updated Distributor Weps Less Losses Daily Rate Per Period '\r\n );\r\n this.changePage({ offset: 0 });\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n } else {\r\n this.distributorWepsLessLossService\r\n .addWepsLessLossesPeriodDailyRate(\r\n this.wepsLessLossesForm.value\r\n )\r\n .subscribe(\r\n () => {\r\n this.modalRef.hide();\r\n this.toastr.success(\r\n 'Successfully Added Distributor Weps Less Losses Daily Rate Per Period '\r\n );\r\n this.changePage({ offset: 0 });\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n }\r\n }\r\n }\r\n\r\n public openWepsLessLossesPeriodDailyRateModal(\r\n wepsLessLossesPeriodDailyRate: any\r\n ) {\r\n this.isUpdate = true;\r\n this.modalRef = this.modalService.show(\r\n this.wepsLessLossesPeriodDailyRateModal\r\n );\r\n this.loadWepsLessLossesPeriodDailyRate(wepsLessLossesPeriodDailyRate);\r\n }\r\n\r\n public onAddWepsLessLossesPeriodDailyRate(): void {\r\n this.isUpdate = false;\r\n this.wepsLessLossesForm = this.initNewForm();\r\n this.modalRef = this.modalService.show(\r\n this.wepsLessLossesPeriodDailyRateModal\r\n );\r\n }\r\n\r\n private loadWepsLessLossesPeriodDailyRate(\r\n wepsLessLossesPeriodDailyRate: any\r\n ) {\r\n this.wepsLessLossesForm = new FormGroup({\r\n distributorWepsLessLossesPeriodDailyRateId: new FormControl(\r\n wepsLessLossesPeriodDailyRate.distributorWepsLessLossesPeriodDailyRateId,\r\n [Validators.required]\r\n ),\r\n distributorId: new FormControl(\r\n wepsLessLossesPeriodDailyRate.distributorId,\r\n [Validators.required]\r\n ),\r\n periodId: new FormControl(\r\n {\r\n value: wepsLessLossesPeriodDailyRate.periodId,\r\n disabled: true,\r\n },\r\n [Validators.required]\r\n ),\r\n tariff: new FormControl(wepsLessLossesPeriodDailyRate.tariff, [\r\n Validators.required,\r\n ]),\r\n });\r\n\r\n if (this.isReadOnlyMode) {\r\n this.wepsLessLossesForm.disable();\r\n }\r\n }\r\n\r\n private initNewForm(): FormGroup {\r\n return new FormGroup({\r\n distributorId: new FormControl(null, [Validators.required]),\r\n periodId: new FormControl(null, [Validators.required]),\r\n tariff: new FormControl(null, [Validators.required]),\r\n });\r\n }\r\n}\r\n","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { ExportService } from '../../sap-export/export.service';\r\nimport { CommonService } from '../../../common/common-service';\r\nimport { saveAs as importedSaveAs } from 'file-saver';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { ConsumerCompanyService } from '../consumer-company.service';\r\nimport { ConsumerCompany } from '../../../model/consumer-company.model';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { ComponentTriggersService } from '../../../common/component-triggers.service';\r\nimport { Subscription } from 'rxjs/Rx';\r\n\r\n@Component({\r\n selector: 'consumer-company-recs',\r\n templateUrl: './consumer-company-recs.component.html',\r\n styleUrls: [\r\n './consumer-company-recs.component.scss',\r\n '../../form.styles.scss',\r\n ],\r\n})\r\nexport class ConsumerCompanyRecsComponent implements OnInit, OnDestroy {\r\n @Input('consumerCompanyId')\r\n public consumerCompanyId: number;\r\n public previousYear: number;\r\n public loading = false;\r\n public processing = false;\r\n public errorMessage = '';\r\n public taxYearPresent: boolean;\r\n private triggerConsumerCompanyRecsComponentSubscription: Subscription;\r\n\r\n constructor(\r\n private exportService: ExportService,\r\n private commonService: CommonService,\r\n private toastr: ToastrService,\r\n private consumerCompanyService: ConsumerCompanyService,\r\n private componentTriggersService: ComponentTriggersService\r\n ) {}\r\n\r\n public ngOnInit() {\r\n this.triggerConsumerCompanyRecsComponentSubscription = this.componentTriggersService.triggerConsumerCompanyRecsComponent.subscribe(\r\n () => {\r\n this.initialize();\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.toastr.error(this.errorMessage);\r\n }\r\n );\r\n this.initialize();\r\n }\r\n\r\n public ngOnDestroy() {\r\n this.triggerConsumerCompanyRecsComponentSubscription.unsubscribe();\r\n }\r\n\r\n public onDownloadExport() {\r\n this.errorMessage = '';\r\n this.processing = true;\r\n this.exportService.getRecsExport(this.consumerCompanyId).subscribe(\r\n (blob) => {\r\n importedSaveAs(blob, 'RECsExport.csv');\r\n this.toastr.success('Downloading RECs export');\r\n this.processing = false;\r\n },\r\n () => {\r\n this.errorMessage = this.commonService.handleDocumentErrorMessage(\r\n 'RECs'\r\n );\r\n this.toastr.error(this.errorMessage);\r\n this.processing = false;\r\n }\r\n );\r\n }\r\n\r\n private initialize() {\r\n this.previousYear = new Date().getFullYear() - 1;\r\n this.loading = true;\r\n this.consumerCompanyService\r\n .getConsumerCompany(this.consumerCompanyId)\r\n .subscribe(\r\n (consumerCompany: ConsumerCompany) => {\r\n this.taxYearPresent = !isNullOrUndefined(\r\n consumerCompany.taxYearBeginDate\r\n );\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.toastr.error(this.errorMessage);\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { CommonService } from '../../../../../common/common-service';\r\nimport { Router } from '@angular/router';\r\nimport { AllocationRunService } from '../../allocation-run.service';\r\nimport { PurchaseAndSalesRate } from '../../../../../model/view/purchase-and-sales-rate.model';\r\n\r\n@Component({\r\n selector: 'allocation-purchase-and-sales-rate',\r\n templateUrl: './allocation-purchase-and-sales-rate.component.html',\r\n styleUrls: ['./allocation-purchase-and-sales-rate.component.scss'],\r\n})\r\nexport class AllocationPurchaseAndSalesRateComponent implements OnInit {\r\n @Input('allocationRunId')\r\n public allocationRunId: number;\r\n public loading = false;\r\n public errorMessage = '';\r\n public purchaseAndSalesRate: PurchaseAndSalesRate;\r\n\r\n constructor(\r\n private router: Router,\r\n private allocationRunService: AllocationRunService,\r\n public commonService: CommonService\r\n ) {}\r\n\r\n public ngOnInit() {\r\n this.initialize();\r\n }\r\n\r\n private initialize() {\r\n this.loading = true;\r\n this.allocationRunService\r\n .getPurchaseAndSalesRate(this.allocationRunId)\r\n .subscribe(\r\n (purchaseAndSalesRate: PurchaseAndSalesRate) => {\r\n this.purchaseAndSalesRate = purchaseAndSalesRate;\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n}\r\n","import {\r\n Component,\r\n Input,\r\n OnInit,\r\n TemplateRef,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { CommonService } from '../../../common/common-service';\r\nimport { BsModalRef, BsModalService } from 'ngx-bootstrap';\r\nimport { Router } from '@angular/router';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { TariffRate } from '../../../model/tariff/tariff-rate.model';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { TariffService } from '../tariff.service';\r\nimport { Page } from '../../../model/page.model';\r\nimport { debounceTime } from 'rxjs/operators';\r\nimport { EntityLookup } from '../../../model/entity-lookup.model';\r\n\r\n@Component({\r\n selector: 'tariff-rate-list',\r\n templateUrl: './tariff-rate-list.component.html',\r\n styleUrls: ['../../form.styles.scss', './tariff-rate-list.component.scss'],\r\n})\r\nexport class TariffRateListComponent implements OnInit {\r\n @Input('tariffId')\r\n public tariffId: number;\r\n @Input('isReadOnlyMode')\r\n public isReadOnlyMode = false;\r\n @ViewChild('tariffRateModal')\r\n public tariffRateModal: TemplateRef;\r\n public loading = false;\r\n public loadingTariffRate = false;\r\n public saving = false;\r\n public tariffRates: TariffRate[] = [];\r\n public newTariffRateForm: FormGroup;\r\n public errorMessage = '';\r\n public tariffRatePage: Page;\r\n public periods: EntityLookup[];\r\n public seasons: EntityLookup[];\r\n public energyBrackets: EntityLookup[];\r\n private modalRef: BsModalRef;\r\n private searchForm: FormGroup;\r\n private sortProp = {};\r\n\r\n constructor(\r\n private modalService: BsModalService,\r\n public commonService: CommonService,\r\n private router: Router,\r\n private tariffService: TariffService,\r\n protected toastr: ToastrService\r\n ) {\r\n this.tariffRatePage = new Page();\r\n this.searchForm = new FormGroup({\r\n search: new FormControl(''),\r\n });\r\n }\r\n\r\n public ngOnInit() {\r\n this.searchForm\r\n .get('search')\r\n .valueChanges.pipe(debounceTime(300))\r\n .subscribe(\r\n () => {\r\n this.changePage({ offset: 0 });\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n }\r\n );\r\n\r\n this.commonService\r\n .getEntityLookups(['Period', 'Season', 'EnergyBracket'])\r\n .subscribe(\r\n (response) => {\r\n this.periods = response.entityLookupResultList['period'];\r\n this.seasons = response.entityLookupResultList['season'];\r\n this.energyBrackets =\r\n response.entityLookupResultList['energyBracket'];\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n this.changePage({ offset: this.tariffRatePage.offset });\r\n }\r\n\r\n public newTariffRate(): void {\r\n this.errorMessage = '';\r\n this.initTariffRateForm();\r\n this.modalRef = this.modalService.show(this.tariffRateModal);\r\n }\r\n\r\n public onPopupSubmit(): void {\r\n this.errorMessage = '';\r\n this.commonService.validateAllFormFields(this.newTariffRateForm);\r\n if (this.newTariffRateForm.valid) {\r\n this.saving = true;\r\n if (this.newTariffRateForm.controls.tariffRateId.value === 0) {\r\n this.tariffService\r\n .createTariffRate(this.newTariffRateForm.value)\r\n .subscribe(\r\n () => {\r\n this.changePage({ offset: 0 });\r\n this.modalRef.hide();\r\n this.saving = false;\r\n this.toastr.success(\r\n 'Tariff rate successfully added'\r\n );\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.toastr.error(this.errorMessage);\r\n this.saving = false;\r\n }\r\n );\r\n } else {\r\n this.tariffService\r\n .updateTariffRate(this.newTariffRateForm.value)\r\n .subscribe(\r\n () => {\r\n this.changePage({ offset: 0 });\r\n this.modalRef.hide();\r\n this.toastr.success(\r\n 'Tariff rate successfully updated'\r\n );\r\n this.saving = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.toastr.error(this.errorMessage);\r\n this.saving = false;\r\n }\r\n );\r\n }\r\n }\r\n }\r\n\r\n public onSelect(event: any): void {\r\n this.errorMessage = '';\r\n const tariffRateId = event.selected[0].tariffRateId;\r\n this.loadingTariffRate = true;\r\n this.tariffService.getTariffRate(tariffRateId).subscribe(\r\n (tariffRate: TariffRate) => {\r\n this.modalRef = this.modalService.show(this.tariffRateModal);\r\n this.initTariffRateForm(tariffRate);\r\n this.loadingTariffRate = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.toastr.error(this.errorMessage);\r\n }\r\n );\r\n }\r\n\r\n public onCancel() {\r\n this.modalRef.hide();\r\n this.errorMessage = '';\r\n }\r\n\r\n public changePage(pageInfo: any): void {\r\n const searchString = this.searchForm.get('search').value;\r\n this.tariffRatePage.offset = pageInfo.offset * this.tariffRatePage.size;\r\n this.tariffService\r\n .getTariffRatesPage(\r\n searchString,\r\n this.tariffRatePage,\r\n this.sortProp,\r\n this.tariffId\r\n )\r\n .subscribe(\r\n (page) => {\r\n this.tariffRatePage.totalPages = Math.ceil(\r\n page.totalItems / page.size\r\n );\r\n this.tariffRatePage.totalElements = page.totalItems;\r\n this.tariffRates = page.items;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.toastr.error(this.errorMessage);\r\n }\r\n );\r\n }\r\n\r\n public sortColumn(event: any): void {\r\n this.sortProp = {\r\n direction: event.sorts[0].dir,\r\n property: event.sorts[0].prop,\r\n };\r\n this.changePage({ offset: 0 });\r\n }\r\n\r\n private initTariffRateForm(tariffRate: TariffRate = null) {\r\n this.newTariffRateForm = new FormGroup({\r\n tariffId: new FormControl(this.tariffId),\r\n tariffRateId: new FormControl(\r\n isNullOrUndefined(tariffRate) ? 0 : tariffRate.tariffRateId\r\n ),\r\n periodId: new FormControl(\r\n isNullOrUndefined(tariffRate) ? null : tariffRate.periodId,\r\n [Validators.required]\r\n ),\r\n seasonId: new FormControl(\r\n isNullOrUndefined(tariffRate) ? null : tariffRate.seasonId,\r\n [Validators.required]\r\n ),\r\n energyBracketLookupId: new FormControl(\r\n isNullOrUndefined(tariffRate)\r\n ? null\r\n : tariffRate.energyBracketLookupId,\r\n [Validators.required]\r\n ),\r\n kwhRate: new FormControl(\r\n isNullOrUndefined(tariffRate) ? null : tariffRate.kwhRate,\r\n [Validators.required, Validators.min(0)]\r\n ),\r\n wheelingFee: new FormControl(\r\n isNullOrUndefined(tariffRate) ? null : tariffRate.wheelingFee,\r\n [Validators.required, Validators.min(0)]\r\n ),\r\n });\r\n }\r\n}\r\n","import {\r\n AfterViewChecked,\r\n ChangeDetectorRef,\r\n Component,\r\n Input,\r\n OnInit,\r\n} from '@angular/core';\r\nimport {\r\n Form,\r\n FormArray,\r\n FormControl,\r\n FormGroup,\r\n Validators,\r\n} from '@angular/forms';\r\nimport { CommonService } from '../../../common/common-service';\r\nimport { EntityLookup } from '../../../model/entity-lookup.model';\r\nimport { TariffService } from '../tariff.service';\r\nimport { TariffTradingLimit } from '../../../model/tariff/tariff-trading.limit.model';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { ToastrService } from 'ngx-toastr';\r\n\r\n@Component({\r\n selector: 'tariff-trading-limit',\r\n templateUrl: './tariff-trading-limit.component.html',\r\n styleUrls: [\r\n '../../form.styles.scss',\r\n './tariff-trading-limit.component.scss',\r\n ],\r\n})\r\nexport class TariffTradingLimitComponent implements OnInit, AfterViewChecked {\r\n @Input('isReadOnlyMode')\r\n public isReadOnlyMode: boolean = false;\r\n @Input('tariffId')\r\n public tariffId: number;\r\n public errorMessage = '';\r\n public loading = false;\r\n public saving = false;\r\n public tariffTradingLimitsForm: FormGroup;\r\n public tariffTradingLimitsFormArray: FormArray;\r\n public saveEnabled = true;\r\n public months: EntityLookup[];\r\n public originalMonths: EntityLookup[];\r\n\r\n public constructor(\r\n private cdRef: ChangeDetectorRef,\r\n public commonService: CommonService,\r\n public tariffService: TariffService,\r\n private toastr: ToastrService\r\n ) {}\r\n\r\n public ngOnInit() {\r\n this.initialize();\r\n }\r\n\r\n public ngAfterViewChecked() {\r\n this.cdRef.detectChanges();\r\n }\r\n\r\n public addTariffTradingLimit(): void {\r\n this.commonService.validateAllFormFields(this.tariffTradingLimitsForm);\r\n if (this.tariffTradingLimitsForm.valid) {\r\n // Add tariff trading limit\r\n const tariffTradingLimit = new TariffTradingLimit(\r\n 0,\r\n this.tariffId,\r\n this.tariffTradingLimitsForm.get('monthLookupId').value,\r\n this.tariffTradingLimitsForm.get('tradingLimit').value\r\n );\r\n (this.tariffTradingLimitsForm.get(\r\n 'tariffTradingLimits'\r\n ) as FormArray).push(\r\n this.initTariffTradingLimit(tariffTradingLimit)\r\n );\r\n\r\n // Remove added month from dropdown list\r\n this.months.splice(\r\n this.months.indexOf(\r\n this.months.find(\r\n (month: EntityLookup) =>\r\n month.entityLookupId ===\r\n this.tariffTradingLimitsForm.get('monthLookupId')\r\n .value\r\n )\r\n ),\r\n 1\r\n );\r\n\r\n // Set month dropdown to next month\r\n this.tariffTradingLimitsForm\r\n .get('monthLookupId')\r\n .setValue(\r\n Math.min(\r\n ...this.months.map((month) => month.entityLookupId)\r\n )\r\n );\r\n\r\n // Enable save button if all 12 months trading limits are present\r\n if (\r\n (this.tariffTradingLimitsForm.get(\r\n 'tariffTradingLimits'\r\n ) as FormArray).length === 12\r\n ) {\r\n this.saveEnabled = true;\r\n }\r\n }\r\n }\r\n\r\n public removeTariffTradingLimit(monthLookupId: number): void {\r\n // Remove tariff trading limit\r\n (this.tariffTradingLimitsForm.get(\r\n 'tariffTradingLimits'\r\n ) as FormArray).removeAt(\r\n (this.tariffTradingLimitsForm.get(\r\n 'tariffTradingLimits'\r\n ) as FormArray).controls.findIndex(\r\n (tariffTradingLimit) =>\r\n (tariffTradingLimit as FormGroup).get('monthLookupId')\r\n .value === monthLookupId\r\n )\r\n );\r\n\r\n // Add removed month to dropdown list\r\n this.months.push(\r\n this.originalMonths.find(\r\n (month: EntityLookup) => month.entityLookupId === monthLookupId\r\n )\r\n );\r\n\r\n // Set month dropdown to next month\r\n this.tariffTradingLimitsForm\r\n .get('monthLookupId')\r\n .setValue(\r\n Math.min(...this.months.map((month) => month.entityLookupId))\r\n );\r\n\r\n // Disable save button all 12 months trading limits are not present\r\n this.saveEnabled = false;\r\n }\r\n\r\n public saveTariffTradingLimits() {\r\n this.errorMessage = '';\r\n this.saving = true;\r\n this.tariffService\r\n .createOrUpdateTariffTradingLimits(\r\n ((this.tariffTradingLimitsForm.get(\r\n 'tariffTradingLimits'\r\n ) as FormArray).controls as FormGroup[]).map(\r\n (tariffTradingLimitsForm) =>\r\n tariffTradingLimitsForm.value as TariffTradingLimit\r\n )\r\n )\r\n .subscribe(\r\n () => {\r\n this.toastr.success(\r\n 'Tariff trading limits successfully saved'\r\n );\r\n this.saving = false;\r\n this.initialize();\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.toastr.error(this.errorMessage);\r\n this.saving = false;\r\n }\r\n );\r\n }\r\n\r\n private initialize() {\r\n this.loading = true;\r\n this.commonService.getEntityLookups(['Month']).subscribe(\r\n (entityLookups) => {\r\n this.months = entityLookups.entityLookupResultList['month'];\r\n this.originalMonths = entityLookups.entityLookupResultList[\r\n 'month'\r\n ].slice(0);\r\n this.tariffService\r\n .getTariffTradingLimits(this.tariffId)\r\n .subscribe(\r\n (tariffTradingLimits) => {\r\n this.saveEnabled =\r\n this.tariffId !== 0 &&\r\n (tariffTradingLimits as TariffTradingLimit[])\r\n .length === 12;\r\n tariffTradingLimits = isNullOrUndefined(\r\n tariffTradingLimits\r\n )\r\n ? []\r\n : tariffTradingLimits;\r\n (tariffTradingLimits as TariffTradingLimit[])\r\n .map(\r\n (\r\n tariffTradingLimit: TariffTradingLimit\r\n ) => {\r\n return tariffTradingLimit.monthLookupId;\r\n }\r\n )\r\n .forEach((monthLookupId) =>\r\n this.months.splice(\r\n this.months.indexOf(\r\n this.months.find(\r\n (month) =>\r\n month.entityLookupId ===\r\n monthLookupId\r\n )\r\n ),\r\n 1\r\n )\r\n );\r\n\r\n this.initTariffTradingLimitsForm(\r\n tariffTradingLimits as TariffTradingLimit[]\r\n );\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n this.loading = false;\r\n }\r\n );\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n\r\n private initTariffTradingLimitsForm(\r\n tariffTradingLimits: TariffTradingLimit[]\r\n ) {\r\n this.tariffTradingLimitsFormArray = new FormArray(\r\n this.initTariffTradingLimitsArray(tariffTradingLimits)\r\n );\r\n this.tariffTradingLimitsForm = new FormGroup({\r\n monthLookupId: new FormControl(\r\n Math.min(\r\n ...this.originalMonths.map((month) => month.entityLookupId)\r\n ),\r\n [Validators.required]\r\n ),\r\n tradingLimit: new FormControl(null, [\r\n Validators.required,\r\n Validators.min(0),\r\n ]),\r\n tariffTradingLimits: this.tariffTradingLimitsFormArray,\r\n });\r\n }\r\n\r\n private initTariffTradingLimitsArray(\r\n tariffTradingLimits: TariffTradingLimit[]\r\n ): FormGroup[] {\r\n const tariffTradingLimitsFormGroups: FormGroup[] = [];\r\n tariffTradingLimits.forEach(\r\n (tariffTradingLimit: TariffTradingLimit) => {\r\n const tariffTradingLimitForm = this.initTariffTradingLimit(\r\n tariffTradingLimit\r\n );\r\n tariffTradingLimitsFormGroups.push(tariffTradingLimitForm);\r\n }\r\n );\r\n return tariffTradingLimitsFormGroups;\r\n }\r\n\r\n private initTariffTradingLimit(\r\n tariffTradingLimit: TariffTradingLimit\r\n ): FormGroup {\r\n return new FormGroup({\r\n tariffTradingLimitId: new FormControl(\r\n tariffTradingLimit.tariffTradingLimitId\r\n ),\r\n tariffId: new FormControl(tariffTradingLimit.tariffId),\r\n monthLookupId: new FormControl(tariffTradingLimit.monthLookupId),\r\n month: new FormControl(\r\n this.originalMonths.find(\r\n (month: EntityLookup) =>\r\n month.entityLookupId ===\r\n tariffTradingLimit.monthLookupId\r\n ).value\r\n ),\r\n tradingLimit: new FormControl(tariffTradingLimit.tradingLimit),\r\n });\r\n }\r\n}\r\n","import { Period } from '../period.model';\r\nimport { EntityLookup } from '../entity-lookup.model';\r\nimport { Tariff } from './tariff.model';\r\n\r\nexport class TariffTradingLimit {\r\n constructor(\r\n public tariffTradingLimitId: number,\r\n public tariffId: number,\r\n public monthLookupId: number,\r\n public tradingLimit: number\r\n ) {}\r\n}\r\n","import {\r\n Component,\r\n OnInit,\r\n ViewChild,\r\n TemplateRef,\r\n Input,\r\n OnDestroy,\r\n} from '@angular/core';\r\nimport { FormGroup, FormControl, Validators } from '@angular/forms';\r\nimport { Page } from '../../../model/page.model';\r\nimport { EntityLookup } from '../../../model/entity-lookup.model';\r\nimport { BsModalRef, BsModalService } from 'ngx-bootstrap';\r\nimport { CommonService } from '../../../common/common-service';\r\nimport { DistributorWepsLessLossService } from '../distributor-weps-less-losses/distributor-weps-less-loss.service';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { DistributorService } from '../distributor.service';\r\nimport { Subscription } from 'rxjs/Rx';\r\nimport { ComponentTriggersService } from '../../../common/component-triggers.service';\r\n\r\n@Component({\r\n selector: 'distributor-power-trading-limits',\r\n templateUrl: './distributor-power-trading-limits.component.html',\r\n styleUrls: [\r\n './distributor-power-trading-limits.component.scss',\r\n '../../form.styles.scss',\r\n ],\r\n})\r\nexport class DistributorPowerTradingLimitsComponent\r\n implements OnInit, OnDestroy {\r\n @ViewChild('powerTradingLimitsModal')\r\n public powerTradingLimitsModal: TemplateRef;\r\n @Input('isReadOnlyMode')\r\n public isReadOnlyMode = false;\r\n @Input('distributorId')\r\n public distributorId: number;\r\n @Input('showPowerLimitsAndTechnology')\r\n public showPowerLimitsAndTechnology: boolean = true;\r\n public errorMessage = '';\r\n public loading = false;\r\n public powerTradingLimitForm: FormGroup;\r\n public page: Page;\r\n public pageItems: any[];\r\n public tariffListEventSubscription: Subscription;\r\n\r\n private sortProp = {};\r\n private modalRef: BsModalRef;\r\n\r\n constructor(\r\n private commonService: CommonService,\r\n private modalService: BsModalService,\r\n private distributorService: DistributorService,\r\n protected toastr: ToastrService,\r\n private componentTriggerService: ComponentTriggersService\r\n ) {\r\n this.page = new Page(6);\r\n }\r\n\r\n public ngOnInit() {\r\n this.changePage({ offset: 0 });\r\n this.initNewForm();\r\n this.tariffListEventSubscription = this.componentTriggerService.triggerDistributorPowerTechnologyAndLimitsComponent.subscribe(\r\n (response) => {\r\n this.showPowerLimitsAndTechnology = response;\r\n }\r\n );\r\n }\r\n\r\n public ngOnDestroy() {\r\n this.tariffListEventSubscription.unsubscribe();\r\n }\r\n\r\n public changePowerTradingLimitPage(pageInfo: any): void {\r\n this.loading = true;\r\n this.page.offset = pageInfo.offset * this.page.size;\r\n this.distributorService\r\n .getPowerTradingLimitsPage(\r\n this.page,\r\n this.sortProp,\r\n this.distributorId\r\n )\r\n .subscribe(\r\n (responsePage) => {\r\n this.page.totalPages = Math.ceil(\r\n responsePage.totalItems / responsePage.size\r\n );\r\n this.page.totalElements = responsePage.totalItems;\r\n this.pageItems = responsePage.items;\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n\r\n public sortColumn(event: any): void {\r\n this.sortProp = {\r\n direction: event.sorts[0].dir,\r\n property: event.sorts[0].prop,\r\n };\r\n this.changePage({ offset: 0 });\r\n }\r\n\r\n public changePage(pageInfo: any) {\r\n this.errorMessage = '';\r\n this.changePowerTradingLimitPage(pageInfo);\r\n }\r\n\r\n public onSelect(event: any) {\r\n if (this.isReadOnlyMode) {\r\n return;\r\n }\r\n this.openPowerTradingLimit(event.selected[0]);\r\n }\r\n\r\n public onCancel(): void {\r\n this.errorMessage = '';\r\n this.modalRef.hide();\r\n }\r\n\r\n public onSubmitNew(): void {\r\n this.errorMessage = '';\r\n this.commonService.validateAllFormFields(this.powerTradingLimitForm);\r\n this.powerTradingLimitForm.controls.distributorId.setValue(\r\n this.distributorId\r\n );\r\n if (this.powerTradingLimitForm.valid) {\r\n this.distributorService\r\n .addPowerTradingLimits(this.powerTradingLimitForm.value)\r\n .subscribe(\r\n () => {\r\n this.toastr.success(\r\n 'Successfully updated Power Trading Limit'\r\n );\r\n this.changePage({ offset: 0 });\r\n this.modalRef.hide();\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.toastr.error(this.errorMessage);\r\n }\r\n );\r\n }\r\n }\r\n\r\n public openPowerTradingLimit(powerTradingLimit: any) {\r\n this.modalRef = this.modalService.show(this.powerTradingLimitsModal);\r\n this.loadPowerTradingLimit(powerTradingLimit);\r\n }\r\n\r\n public onAddPowerTradingLimit(): void {\r\n this.initNewForm();\r\n this.modalRef = this.modalService.show(this.powerTradingLimitsModal);\r\n }\r\n\r\n private loadPowerTradingLimit(powerTradingLimit: any) {\r\n this.powerTradingLimitForm = new FormGroup({\r\n distributorPowerTradingLimitId: new FormControl(\r\n powerTradingLimit.distributorPowerTradingLimitId,\r\n [Validators.required]\r\n ),\r\n distributorId: new FormControl(this.distributorId, [\r\n Validators.required,\r\n ]),\r\n percentageOfTradeAllowed: new FormControl(\r\n powerTradingLimit.percentageOfTradeAllowed,\r\n [Validators.required, Validators.max(100)]\r\n ),\r\n percentageOfPowerImportsAllowed: new FormControl(\r\n powerTradingLimit.percentageOfPowerImportsAllowed,\r\n [Validators.required, Validators.max(100)]\r\n ),\r\n effectiveDate: new FormControl(powerTradingLimit.effectiveDate, [\r\n Validators.required,\r\n ]),\r\n });\r\n\r\n if (this.isReadOnlyMode) {\r\n this.powerTradingLimitForm.disable();\r\n }\r\n }\r\n\r\n private initNewForm(): void {\r\n this.powerTradingLimitForm = new FormGroup({\r\n distributorPowerTradingLimitId: new FormControl(null),\r\n distributorId: new FormControl(this.distributorId, [\r\n Validators.required,\r\n ]),\r\n percentageOfTradeAllowed: new FormControl(null, [\r\n Validators.required,\r\n Validators.max(100),\r\n ]),\r\n percentageOfPowerImportsAllowed: new FormControl(null, [\r\n Validators.required,\r\n Validators.max(100),\r\n ]),\r\n effectiveDate: new FormControl(null, [Validators.required]),\r\n });\r\n }\r\n}\r\n","import { EntityLookup } from 'app/model/entity-lookup.model';\r\nimport {\r\n Component,\r\n OnInit,\r\n ViewChild,\r\n TemplateRef,\r\n Input,\r\n OnDestroy,\r\n} from '@angular/core';\r\nimport { FormGroup, FormControl, Validators } from '@angular/forms';\r\nimport { Page } from '../../../model/page.model';\r\nimport { BsModalRef, BsModalService } from 'ngx-bootstrap';\r\nimport { CommonService } from '../../../common/common-service';\r\nimport { DistributorService } from '../distributor.service';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { Subscription } from 'rxjs/Rx';\r\nimport { ComponentTriggersService } from '../../../common/component-triggers.service';\r\n\r\n@Component({\r\n selector: 'power-traded-per-technology',\r\n templateUrl: './power-traded-per-technology.component.html',\r\n styleUrls: [\r\n './power-traded-per-technology.component.scss',\r\n '../../form.styles.scss',\r\n ],\r\n})\r\nexport class PowerTradedPerTechnologyComponent implements OnInit, OnDestroy {\r\n @ViewChild('powerTradedPerTechnologyModal')\r\n public powerTradedPerTechnologyModal: TemplateRef;\r\n @Input('isReadOnlyMode')\r\n public isReadOnlyMode = false;\r\n @Input('distributorId')\r\n public distributorId: number;\r\n @Input('showPowerLimitsAndTechnology')\r\n public showPowerLimitsAndTechnology: boolean = true;\r\n public errorMessage = '';\r\n public loading = false;\r\n public powerTradedPerTechnologyForm: FormGroup;\r\n public page: Page;\r\n public pageItems: any[];\r\n public technologies: EntityLookup[];\r\n public tariffListEventSubscription: Subscription;\r\n\r\n private sortProp = {};\r\n private modalRef: BsModalRef;\r\n\r\n constructor(\r\n private commonService: CommonService,\r\n private modalService: BsModalService,\r\n private distributorService: DistributorService,\r\n protected toastr: ToastrService,\r\n private componentTriggerService: ComponentTriggersService\r\n ) {\r\n this.page = new Page(6);\r\n }\r\n\r\n public ngOnInit() {\r\n this.changePage({ offset: 0 });\r\n this.initNewForm();\r\n this.commonService\r\n .getEntityLookups(['Technology'])\r\n .subscribe((data) => {\r\n this.technologies = data.entityLookupResultList['technology'];\r\n });\r\n this.tariffListEventSubscription = this.componentTriggerService.triggerDistributorPowerTechnologyAndLimitsComponent.subscribe(\r\n (response) => {\r\n this.showPowerLimitsAndTechnology = response;\r\n }\r\n );\r\n }\r\n\r\n public ngOnDestroy() {\r\n this.tariffListEventSubscription.unsubscribe();\r\n }\r\n\r\n public changePowerTradedPerTechnologyPage(pageInfo: any): void {\r\n this.loading = true;\r\n this.page.offset = pageInfo.offset * this.page.size;\r\n this.distributorService\r\n .getPowerTradedPerTechnologyPage(\r\n this.page,\r\n this.sortProp,\r\n this.distributorId\r\n )\r\n .subscribe(\r\n (responsePage) => {\r\n this.page.totalPages = Math.ceil(\r\n responsePage.totalItems / responsePage.size\r\n );\r\n this.page.totalElements = responsePage.totalItems;\r\n this.pageItems = responsePage.items;\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n\r\n public sortColumn(event: any): void {\r\n this.sortProp = {\r\n direction: event.sorts[0].dir,\r\n property: event.sorts[0].prop,\r\n };\r\n this.changePage({ offset: 0 });\r\n }\r\n\r\n public changePage(pageInfo: any) {\r\n this.errorMessage = '';\r\n this.changePowerTradedPerTechnologyPage(pageInfo);\r\n }\r\n\r\n public onSelect(event: any) {\r\n if (this.isReadOnlyMode) {\r\n return;\r\n }\r\n this.openPowerTradedPerTechnology(event.selected[0]);\r\n }\r\n\r\n public onCancel(): void {\r\n this.errorMessage = '';\r\n this.modalRef.hide();\r\n }\r\n\r\n public onSubmitNew(): void {\r\n this.errorMessage = '';\r\n this.commonService.validateAllFormFields(\r\n this.powerTradedPerTechnologyForm\r\n );\r\n this.powerTradedPerTechnologyForm.controls.distributorId.setValue(\r\n this.distributorId\r\n );\r\n if (this.powerTradedPerTechnologyForm.valid) {\r\n this.distributorService\r\n .addPowerTradedPerTechnology(\r\n this.powerTradedPerTechnologyForm.value\r\n )\r\n .subscribe(\r\n (results) => {\r\n this.toastr.success(\r\n 'Successfully updated Power Traded Per Technology'\r\n );\r\n this.changePage({ offset: 0 });\r\n this.modalRef.hide();\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.toastr.error(this.errorMessage);\r\n }\r\n );\r\n }\r\n }\r\n\r\n public openPowerTradedPerTechnology(powerTradedPerTechnology: any) {\r\n this.modalRef = this.modalService.show(\r\n this.powerTradedPerTechnologyModal\r\n );\r\n this.loadPowerTradedPerTechnology(powerTradedPerTechnology);\r\n }\r\n\r\n public onAddPowerTradedPerTechnology(): void {\r\n this.initNewForm();\r\n this.modalRef = this.modalService.show(\r\n this.powerTradedPerTechnologyModal\r\n );\r\n }\r\n\r\n private loadPowerTradedPerTechnology(powerTradedPerTechnology: any) {\r\n this.powerTradedPerTechnologyForm = new FormGroup({\r\n distributorPowertradedPerTechnologyId: new FormControl(\r\n powerTradedPerTechnology.distributorPowertradedPerTechnologyId\r\n ),\r\n distributorId: new FormControl(this.distributorId, [\r\n Validators.required,\r\n ]),\r\n technologyTypeLookupId: new FormControl(\r\n powerTradedPerTechnology.technologyTypeLookupId,\r\n [Validators.required]\r\n ),\r\n highDemandTariff: new FormControl(\r\n powerTradedPerTechnology.highDemandTariff,\r\n [Validators.required]\r\n ),\r\n lowDemandTariff: new FormControl(\r\n powerTradedPerTechnology.lowDemandTariff,\r\n [Validators.required]\r\n ),\r\n percentage: new FormControl(powerTradedPerTechnology.percentage, [\r\n Validators.required,\r\n Validators.max(100),\r\n ]),\r\n effectiveDate: new FormControl(\r\n powerTradedPerTechnology.effectiveDate,\r\n [Validators.required]\r\n ),\r\n });\r\n\r\n if (this.isReadOnlyMode) {\r\n this.powerTradedPerTechnologyForm.disable();\r\n }\r\n }\r\n\r\n private initNewForm(): void {\r\n this.powerTradedPerTechnologyForm = new FormGroup({\r\n distributorPowertradedPerTechnologyId: new FormControl(null),\r\n distributorId: new FormControl(this.distributorId, [\r\n Validators.required,\r\n ]),\r\n technologyTypeLookupId: new FormControl(null, [\r\n Validators.required,\r\n ]),\r\n highDemandTariff: new FormControl(null, [Validators.required]),\r\n lowDemandTariff: new FormControl(null, [Validators.required]),\r\n percentage: new FormControl(null, [\r\n Validators.required,\r\n Validators.max(100),\r\n ]),\r\n effectiveDate: new FormControl(null, [Validators.required]),\r\n });\r\n }\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { AllocationRunService } from '../../allocation-run.service';\r\nimport { CommonService } from '../../../../../common/common-service';\r\nimport { AllocationRunPowerPerTariffSummary } from '../../../../../model/allocation-run/allocation-run-power-per-tariff-summary.model';\r\n\r\n@Component({\r\n selector: 'allocation-power-per-tariff',\r\n templateUrl: './allocation-power-per-tariff.component.html',\r\n styleUrls: ['./allocation-power-per-tariff.component.scss'],\r\n})\r\nexport class AllocationPowerPerTariffComponent implements OnInit {\r\n @Input('allocationRunId')\r\n public allocationRunId: number;\r\n public loading = false;\r\n public errorMessage = '';\r\n public chartData: Array<{ name: string; value: number }>;\r\n\r\n constructor(\r\n private allocationRunService: AllocationRunService,\r\n public commonService: CommonService\r\n ) {}\r\n\r\n public ngOnInit() {\r\n this.initialize();\r\n }\r\n\r\n private initialize() {\r\n this.loading = true;\r\n this.chartData = [];\r\n this.allocationRunService\r\n .getAllocationRunPowerPerTariffSummary(this.allocationRunId)\r\n .subscribe(\r\n (\r\n allocationRunPowerPerTariffSummary: AllocationRunPowerPerTariffSummary\r\n ) => {\r\n this.populateChartData(\r\n allocationRunPowerPerTariffSummary.powerPerTariffList\r\n );\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n\r\n private populateChartData(inputData: { [name: string]: number }) {\r\n this.chartData = [];\r\n const tariffs = Object.keys(inputData);\r\n tariffs.forEach((tariff) => {\r\n this.chartData.push({\r\n name: tariff.replace(\r\n tariff.charAt(0),\r\n tariff.charAt(0).toUpperCase()\r\n ),\r\n value: Math.round(inputData[tariff]),\r\n });\r\n });\r\n }\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { AllocationRunService } from '../../allocation-run.service';\r\nimport { CommonService } from '../../../../../common/common-service';\r\nimport { AllocationRunRevenuePerTariffSummary } from '../../../../../model/allocation-run/allocation-run-revenue-per-tariff-summary.model';\r\n\r\n@Component({\r\n selector: 'allocation-revenue-per-tariff',\r\n templateUrl: './allocation-revenue-per-tariff.component.html',\r\n styleUrls: ['./allocation-revenue-per-tariff.component.scss'],\r\n})\r\nexport class AllocationRevenuePerTariffComponent implements OnInit {\r\n @Input('allocationRunId')\r\n public allocationRunId: number;\r\n public loading = false;\r\n public errorMessage = '';\r\n public chartData: Array<{ name: string; value: number }>;\r\n\r\n constructor(\r\n private allocationRunService: AllocationRunService,\r\n public commonService: CommonService\r\n ) {}\r\n\r\n public ngOnInit() {\r\n this.initialize();\r\n }\r\n\r\n private initialize() {\r\n this.loading = true;\r\n this.chartData = [];\r\n this.allocationRunService\r\n .getAllocationRunRevenuePerTariffSummary(this.allocationRunId)\r\n .subscribe(\r\n (\r\n allocationRunRevenuePerTariffSummary: AllocationRunRevenuePerTariffSummary\r\n ) => {\r\n this.populateChartData(\r\n allocationRunRevenuePerTariffSummary.revenuePerTariffList\r\n );\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n\r\n private populateChartData(inputData: { [name: string]: number }) {\r\n this.chartData = [];\r\n const tariffs = Object.keys(inputData);\r\n tariffs.forEach((tariff) => {\r\n this.chartData.push({\r\n name: tariff.replace(\r\n tariff.charAt(0),\r\n tariff.charAt(0).toUpperCase()\r\n ),\r\n value: Math.round(inputData[tariff]),\r\n });\r\n });\r\n }\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { AllocationRunService } from '../../allocation-run.service';\r\nimport { CommonService } from '../../../../../common/common-service';\r\nimport { AllocationRunTariffSalesRatesSummary } from '../../../../../model/allocation-run/allocation-run-tariff-sales-rates-summary.model';\r\n\r\n@Component({\r\n selector: 'app-allocation-tariff-sale-rates',\r\n templateUrl: './allocation-tariff-sale-rates.component.html',\r\n styleUrls: ['./allocation-tariff-sale-rates.component.scss'],\r\n})\r\nexport class AllocationTariffSaleRatesComponent implements OnInit {\r\n @Input('allocationRunId')\r\n public allocationRunId: number;\r\n public loading = false;\r\n public errorMessage = '';\r\n public data: Array<{\r\n name: string;\r\n AvgRate: number;\r\n AvgRateMinusWheeling: number;\r\n }>;\r\n\r\n constructor(\r\n private allocationRunService: AllocationRunService,\r\n public commonService: CommonService\r\n ) {}\r\n\r\n public ngOnInit() {\r\n this.initialize();\r\n }\r\n\r\n private initialize() {\r\n this.loading = true;\r\n this.data = [];\r\n this.allocationRunService\r\n .getAllocationRunTariffSaleRatesSummary(this.allocationRunId)\r\n .subscribe(\r\n (\r\n allocationTariffSaleRatesSummary: AllocationRunTariffSalesRatesSummary\r\n ) => {\r\n this.populateData(\r\n allocationTariffSaleRatesSummary.tariffSaleRatesList\r\n );\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n\r\n private populateData(inputData: { [name: string]: number[] }) {\r\n this.data = [];\r\n const tariffs = Object.keys(inputData);\r\n tariffs.forEach((tariff) => {\r\n this.data.push({\r\n name: tariff.replace(\r\n tariff.charAt(0),\r\n tariff.charAt(0).toUpperCase()\r\n ),\r\n AvgRate: inputData[tariff][0],\r\n AvgRateMinusWheeling: inputData[tariff][1],\r\n });\r\n });\r\n }\r\n}\r\n","import { Router } from '@angular/router';\r\nimport { EntityLookup } from './../../../../model/entity-lookup.model';\r\nimport {\r\n Component,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n TemplateRef,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { Page } from '../../../../model/page.model';\r\nimport { Subscription } from 'rxjs';\r\nimport { BsModalRef, BsModalService } from 'ngx-bootstrap';\r\nimport { CommonService } from '../../../../common/common-service';\r\nimport { DistributorService } from '../../../distributor/distributor.service';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { ComponentTriggersService } from '../../../../common/component-triggers.service';\r\nimport { ConsumerCompanyPremisesService } from '../../../consumer-company-premises/consumer-company-premises.service';\r\nimport { ConsumerCompanyService } from '../../../consumer-company/consumer-company.service';\r\nimport { CustomValidators } from 'ng4-validators';\r\n\r\n@Component({\r\n selector: 'premises-list',\r\n templateUrl: './premises-list.component.html',\r\n styleUrls: ['./premises-list.component.scss', '../../../form.styles.scss'],\r\n})\r\nexport class PremisesListComponent implements OnInit, OnDestroy {\r\n @ViewChild('newPremisesModal')\r\n public newPremisesModal: TemplateRef;\r\n @Input('isReadOnlyMode')\r\n public isReadOnlyMode = false;\r\n @Input('consumerCompanyId')\r\n public consumerCompanyId: number;\r\n @Input('showPremisesList')\r\n public showPremisesList: boolean = true;\r\n public errorMessage = '';\r\n public loading = false;\r\n public page: Page;\r\n public pageItems: any[];\r\n public premisesListEventSubscription: Subscription;\r\n public newPremisesForm: FormGroup;\r\n public distributionAreas: any[];\r\n public consumerBusinessActivities: EntityLookup[];\r\n public updatingProgressStatus: boolean = false;\r\n\r\n private sortProp = {};\r\n private modalRef: BsModalRef;\r\n\r\n constructor(\r\n private commonService: CommonService,\r\n private modalService: BsModalService,\r\n private distributorService: DistributorService,\r\n private consumerCompanyService: ConsumerCompanyService,\r\n private consumerCompanyPremisesService: ConsumerCompanyPremisesService,\r\n protected toastr: ToastrService,\r\n private componentTriggerService: ComponentTriggersService,\r\n private router: Router\r\n ) {\r\n this.page = new Page();\r\n\r\n this.newPremisesForm = new FormGroup({\r\n premisesName: new FormControl(null, [Validators.required]),\r\n businessActivityLookupId: new FormControl(null, [\r\n Validators.required,\r\n ]),\r\n consumerCompanyId: new FormControl(null),\r\n distributorId: new FormControl(null, [Validators.required]),\r\n accountNumber: new FormControl(null, [\r\n Validators.required,\r\n CustomValidators.number,\r\n Validators.maxLength(50),\r\n ]),\r\n smartMeterInstalled: new FormControl(null),\r\n });\r\n }\r\n\r\n public ngOnInit() {\r\n this.initialize();\r\n\r\n this.premisesListEventSubscription = this.componentTriggerService.triggerPremisesListComponent.subscribe(\r\n (consumerCompanyId) => {\r\n this.showPremisesList = true;\r\n this.consumerCompanyId = consumerCompanyId;\r\n this.initialize();\r\n }\r\n );\r\n }\r\n\r\n public initialize(): void {\r\n this.changePage({ offset: 0 });\r\n this.distributorService.getAllDistributors().subscribe(\r\n (distributionAreas) => {\r\n this.distributionAreas = distributionAreas;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n this.commonService\r\n .getEntityLookups(['ConsumerBusinessActivity'])\r\n .subscribe(\r\n (entityLookups) => {\r\n this.consumerBusinessActivities =\r\n entityLookups.entityLookupResultList[\r\n 'consumerBusinessActivity'\r\n ];\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n\r\n public ngOnDestroy() {\r\n this.premisesListEventSubscription.unsubscribe();\r\n }\r\n\r\n public sortColumn(event: any): void {\r\n this.sortProp = {\r\n direction: event.sorts[0].dir,\r\n property: event.sorts[0].prop,\r\n };\r\n this.changePage({ offset: 0 });\r\n }\r\n\r\n public changePage(pageInfo: any): void {\r\n this.page.offset = pageInfo.offset * this.page.size;\r\n this.consumerCompanyPremisesService\r\n .getGetConsumerCompanyPremisesPage(\r\n this.consumerCompanyId,\r\n '',\r\n this.page,\r\n this.sortProp\r\n )\r\n .subscribe(\r\n (page) => {\r\n this.page.totalPages = Math.ceil(\r\n page.totalItems / page.size\r\n );\r\n this.page.totalElements = page.totalItems;\r\n this.pageItems = page.items;\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n\r\n public onSelect(event: any) {\r\n if (this.isReadOnlyMode) {\r\n return;\r\n }\r\n this.showPremisesList = false;\r\n this.componentTriggerService.triggerPremisesDetailsComponent.next(\r\n event.selected[0].consumerCompanyPremisesId\r\n );\r\n }\r\n\r\n public onBack(): void {\r\n this.showPremisesList = false;\r\n this.router.navigate(['consumers', 'prospects']);\r\n }\r\n\r\n public addNewPremisesModal(): void {\r\n this.newPremisesForm.controls.premisesName.setValue(null);\r\n this.newPremisesForm.controls.businessActivityLookupId.setValue(null);\r\n this.newPremisesForm.controls.consumerCompanyId.setValue(\r\n this.consumerCompanyId\r\n );\r\n this.newPremisesForm.controls.distributorId.setValue(null);\r\n this.newPremisesForm.controls.accountNumber.setValue(null);\r\n this.newPremisesForm.controls.smartMeterInstalled.setValue(null);\r\n this.modalRef = this.modalService.show(this.newPremisesModal);\r\n }\r\n\r\n public onPopupSubmit(): void {\r\n this.commonService.validateAllFormFields(this.newPremisesForm);\r\n if (this.newPremisesForm.valid) {\r\n this.newPremisesForm.controls.consumerCompanyId.setValue(\r\n this.consumerCompanyId\r\n );\r\n this.consumerCompanyPremisesService\r\n .addNewPremises(this.newPremisesForm.value)\r\n .subscribe(\r\n () => {\r\n this.modalRef.hide();\r\n this.toastr.success(\r\n 'Consumer Premises Was Successfully Added'\r\n );\r\n this.changePage({ offset: 0 });\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.toastr.error(this.errorMessage);\r\n }\r\n );\r\n }\r\n }\r\n\r\n public updateStatusToEvaluation(event: any, premises: any): void {\r\n event.stopPropagation();\r\n this.updatingProgressStatus = true;\r\n this.consumerCompanyService\r\n .advancePremisesProgressStatus(\r\n premises.consumerPremisesProgress,\r\n premises.consumerCompanyPremisesId\r\n )\r\n .subscribe(\r\n (response) => {\r\n this.toastr.success('Premise Sent For Evaluation');\r\n this.changePage({ offset: 0 });\r\n this.updatingProgressStatus = false;\r\n },\r\n (error) => {\r\n this.errorMessage = this.commonService.handleErrorMessage(\r\n error\r\n );\r\n this.toastr.error(this.errorMessage);\r\n this.updatingProgressStatus = false;\r\n }\r\n );\r\n }\r\n}\r\n","import { FacilitiesEvaluationNotificationsCardComponent } from './component/dashboard/warnings-and-notifications/facilities-evaluation-notifications-card/facilities-evaluation-notifications-card.component';\r\nimport { PremisesEvaluationNotificationsCardComponent } from './component/dashboard/warnings-and-notifications/premises-evaluation-notifications-card/premises-evaluation-notifications-card.component';\r\nimport { DistributorBulkMeterService } from './component/distributor/bulk-meter-list/distributor-bulkmeter.service';\r\nimport { PeriodService } from './component/distributor/period.service';\r\nimport { ProspectPpaService } from './component/administration/prospect-ppa/prospect-ppa.service';\r\nimport { ProspectService } from './component/administration/prospects/prospect.service';\r\nimport { AddressFormComponent } from './component/address/address-form/address-form.component';\r\nimport { AppComponent } from './app.component';\r\nimport { BrowserModule } from '@angular/platform-browser';\r\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { PreloadAllModules, RouterModule } from '@angular/router';\r\nimport { NgModule } from '@angular/core';\r\nimport { ROUTES } from './app.routes';\r\nimport {\r\n TypeaheadModule,\r\n AlertModule,\r\n BsDatepickerModule,\r\n AlertConfig,\r\n BsDropdownModule,\r\n BsDropdownConfig,\r\n PopoverModule,\r\n PopoverConfig,\r\n BsLocaleService,\r\n TooltipModule,\r\n TabsModule,\r\n CollapseModule,\r\n PaginationModule,\r\n} from 'ngx-bootstrap';\r\nimport { MultiselectDropdownModule } from 'angular-2-dropdown-multiselect';\r\nimport { HomeComponent } from './component/home/home.component';\r\nimport { PageNotFoundComponent } from './errors/404/page-not-found.component';\r\n\r\nimport '../styles/css/font-awesome.min.css';\r\nimport '../styles/css/toastr.css';\r\nimport { AllocationComponent } from './component/allocation/allocation.component';\r\nimport { AllocationRunComponent } from './component/allocation/allocation-run/allocation-run.component';\r\nimport { NgxDatatableModule } from '@swimlane/ngx-datatable';\r\nimport { ParametersService } from './component/allocation/allocation-run/parameters/parameters.service';\r\nimport { AuthenticationService } from './authentication/service/authentication.service';\r\nimport { TokenInterceptor } from './authentication/interceptor/token.interceptor';\r\nimport { AllocationRunService } from './component/allocation/allocation-run/allocation-run.service';\r\nimport { NavigationBarComponent } from './component/navigation-bar/navigation-bar.component';\r\nimport { LoginComponent } from './component/authentication/login.component';\r\nimport { ForgotPasswordComponent } from './component/authentication/ForgotPassword/forgot-password.component';\r\nimport { ResetPasswordComponent } from './component/administration/user/reset-password/reset-password.component';\r\nimport { AuthenticationGuard } from './authentication/guard/authentication.guard';\r\nimport { HTTP_INTERCEPTORS, HttpClientModule } from '@angular/common/http';\r\nimport { LogoutComponent } from './component/authentication/logout/logout.component';\r\nimport { ConsumerCompaniesListComponent } from './component/consumer-company/list/consumer-companies-list.component';\r\nimport { ArchivedConsumerCompaniesListComponent } from './component/consumer-company/archived/archived-consumer-companies-list.component';\r\nimport { AllocationRunWarningsComponent } from './component/allocation/allocation-run/allocation-run-warnings/allocation-run-warnings.component';\r\nimport { AccordionModule } from 'ngx-bootstrap/accordion';\r\nimport { LoaderComponent } from './widget/loader/loader.component';\r\nimport { AllocationSummaryConsumerComponent } from './component/allocation/allocation-run/allocation-summary-consumer/allocation-summary-consumer.component';\r\nimport { NumberFormatPipe } from './pipe/numberdumper.pipe';\r\nimport { DatePipe } from '@angular/common';\r\n\r\nimport { defineLocale } from 'ngx-bootstrap/chronos';\r\nimport { enGbLocale } from 'ngx-bootstrap/locale';\r\nimport { DistributorService } from './component/distributor/distributor.service';\r\nimport { ParametersComponent } from './component/allocation/allocation-run/parameters/parameters.component';\r\nimport { DateConverterService } from './widget/date-converter/date-converter.service';\r\nimport { DocumentComponent } from './component/document/document.component';\r\nimport { DocumentUploadComponent } from './component/document/document-upload/document-upload.component';\r\nimport { DocumentDownloadComponent } from './component/document/document-download/document-download.component';\r\nimport { DocumentDownloadListComponent } from './component/document/document-download-list/document-download-list.component';\r\nimport { AllocationSummaryGeneratorComponent } from './component/allocation/allocation-run/allocation-summary-generator/allocation-summary-generator.component';\r\nimport { FrequentlyAskedQuestionsComponent } from './component/infomation/frequently-asked-questions/frequently-asked-questions.component';\r\nimport { InformationService } from './component/infomation/information.service';\r\nimport { UsefulLinksComponent } from './component/infomation/useful-links/useful-links.component';\r\nimport { NavigationBarItemComponent } from './component/navigation-bar/navigation-bar-item/navigation-bar-item.component';\r\nimport { AuthorizationGuard } from './authentication/guard/authorization.guard';\r\nimport { ForbiddenComponent } from './errors/403/forbidden.component';\r\nimport { AllocationSendWarningsComponent } from './component/allocation/allocation-run/allocation-send-warnings/allocation-send-warnings.component';\r\nimport { UserListComponent } from './component/administration/user/list/user-list.component';\r\nimport { AdministrationService } from './component/administration/administration.service';\r\nimport { CreateUserComponent } from './component/administration/user/create/create-user.component';\r\nimport { UserEmailVerificationComponent } from './component/administration/user/verify/user-email-verification.component';\r\nimport { EditUserComponent } from './component/administration/user/edit/edit-user.component';\r\nimport { CommonService } from './common/common-service';\r\nimport { ValidationSpansComponent } from './widget/validation-spans/validation-spans.component';\r\nimport { SalesRepListComponent } from './component/administration/sales-rep/list/sales-rep-list.component';\r\nimport { CreateSalesRepComponent } from './component/administration/sales-rep/create/create-sales-rep.component';\r\nimport { EditSalesRepComponent } from './component/administration/sales-rep/edit/edit-sales-rep.component';\r\nimport { ProspectsComponent } from './component/administration/prospects/prospects.component';\r\nimport { ConsumerCompanyService } from './component/consumer-company/consumer-company.service';\r\nimport { ContactService } from './component/contact/contact.service';\r\nimport { SapExportComponent } from './component/sap-export/sap-export.component';\r\nimport { ExportService } from './component/sap-export/export.service';\r\nimport { ValidationMessagesComponent } from './widget/validation-messages/validation-messages.component';\r\nimport { DistributorListComponent } from './component/distributor/list/distributor-list.component';\r\nimport { CreateDistributorComponent } from './component/distributor/create/create-distributor.component';\r\nimport { EditDistributorComponent } from './component/distributor/edit/edit-distributor.component';\r\nimport { ConsumerDetailsComponent } from './component/administration/prospects/consumer-details/consumer-details.component';\r\nimport { ConsumerPremisesDetailsComponent } from './component/administration/prospects/premises-details/premises-details.component';\r\nimport { GeneratorEvaluationComponent } from './component/administration/evaluation/generator-evaluation/generator-evaluation.component';\r\nimport { ArchivedGeneratorEvaluationComponent } from './component/administration/evaluation/generator-evaluation/archived-generator-evaluation/archived-generator-evaluation.component';\r\nimport { GeneratorEvaluationService } from './component/administration/evaluation/generator-evaluation/generator-evaluation.service';\r\nimport { GeneratorEvaluationDetailsComponent } from './component/administration/evaluation/generator-evaluation/generator-evaluation-details/generator-evaluation-details.component';\r\nimport { ProspectEvaluationComponent } from './component/administration/evaluation/prospect-evaluation/prospect-evaluation.component';\r\nimport { ArchivedProspectEvaluationComponent } from './component/administration/evaluation/prospect-evaluation/archived-prospect-evaluation/archived-prospect-evaluation.component';\r\n\r\nimport { ProspectEvaluationDetailsComponent } from './component/administration/evaluation/prospect-evaluation/prospect-evaluation-details/prospect-evaluation-details.component';\r\nimport { TariffComponent } from './component/tariff/tariff.component';\r\nimport { CrudTableComponent } from './widget/crud-table/crud-table.component';\r\nimport { ProspectOfferComponent } from './component/administration/evaluation/prospect-evaluation/prospect-offer/prospect-offer.component';\r\nimport { GeneratorPpaScheduleService } from './component/administration/evaluation/generator-evaluation/generator-ppa-schedule/generator-ppa-schedule.service';\r\nimport { PrepaidVendorAccordionComponent } from './component/distributor/prepaid-vendor/prepaid-vendor-accordion/prepaid-vendor-accordion.component';\r\nimport { NotesComponent } from './component/notes/notes.component';\r\nimport { NotesService } from './component/notes/notes.service';\r\nimport { DocumentsComponent } from './component/document/documents/documents.component';\r\nimport { DocumentService } from './component/document/document.service';\r\nimport { PrepaidTariffAccordionComponent } from './component/distributor/prepaid-vendor/prepaid-tariff/prepaid-tariff-accordion.component';\r\nimport { TariffBlockAccordionComponent } from './component/distributor/prepaid-vendor/prepaid-tariff/tariff-block/tariff-block-accordion.component';\r\nimport { ConsumptionPeriodComponent } from './component/distributor/consumption/consumption-period/consumption-period.component';\r\nimport { ComponentTriggersService } from './common/component-triggers.service';\r\nimport { PublicHolidayTimePeriodComponent } from './component/public-holiday/public-holiday-time-period.component';\r\nimport { PublicHolidayService } from './component/public-holiday/public-holiday.service';\r\nimport { GeneratorPpaComponent } from './component/administration/evaluation/generator-evaluation/generator-ppa/generator-ppa.component';\r\nimport { GeneratorPpaService } from './component/administration/evaluation/generator-evaluation/generator-ppa/generator-ppa.service';\r\nimport { GeneratorProjectFacilityActivationComponent } from './component/generator-project-facility/generator-project-facility-activation/generator-project-facility-activation.component';\r\nimport { ConsumerCompanyPremisesActivationComponent } from './component/consumer-company-premises/consumer-company-premises-activation/consumer-company-premises-activation.component';\r\nimport { GeneratorProjectFacilityActivationService } from './component/generator-project-facility/generator-project-facility-activation/generator-project-facility-activation.service';\r\nimport { ConsumerCompanyPremisesActivationService } from './component/consumer-company-premises/consumer-company-premises-activation/consumer-company-premises-activation.service';\r\nimport { DistinctStartWithPipe } from './pipe/distinct-start-with.pipe';\r\nimport { SubstrStartAtZeroPipe } from './pipe/substr-start-at-zero.pipe';\r\nimport { AllStartWithPipe } from './pipe/all-start-with.pipe';\r\nimport { ProfileTypePipe } from './pipe/profile-type.pipe';\r\nimport { ProfileHasDataPipe } from './pipe/profile-has-data.pipe';\r\nimport { InclusionMonthPipe } from './pipe/inclusion-month.pipe';\r\nimport { ProspectPpaComponent } from './component/administration/prospect-ppa/prospect-ppa.component';\r\nimport { BulkMeterListComponent } from './component/distributor/bulk-meter-list/bulk-meter-list.component';\r\nimport { EditConsumerCompanyComponent } from './component/consumer-company/edit/edit-consumer-company.component';\r\nimport { ConsumerCompanyDetailsComponent } from './component/consumer-company/consumer-company-details/consumer-company-details.component';\r\nimport { ConsumerCompanyPremisesListComponent } from './component/consumer-company-premises/list/consumer-company-premises-list.component';\r\nimport { EditConsumerCompanyPremisesComponent } from './component/consumer-company-premises/edit/edit-consumer-company-premises.component';\r\nimport { AddressComponent } from './component/address/address-accordion.component';\r\nimport { GeneratorCompaniesListComponent } from './component/generator-company/list/generator-companies-list.component';\r\nimport { ArchivedGeneratorCompaniesListComponent } from './component/generator-company/archived/archived-generator-companies-list.component';\r\nimport { GeneratorCompanyService } from './component/generator-company/generator-company.service';\r\nimport { EditGeneratorCompanyComponent } from './component/generator-company/edit/edit-generator-company.component';\r\nimport { GeneratorCompanyDetailsComponent } from './component/generator-company/generator-company-details/generator-company-details.component';\r\nimport { GeneratorProjectListComponent } from './component/generator-project/list/generator-project-list.component';\r\nimport { ModalModule } from 'ngx-bootstrap';\r\nimport { ConsumerCompanyPremisesService } from './component/consumer-company-premises/consumer-company-premises.service';\r\nimport { PpaScheduleComponent } from './component/administration/prospect-ppa/ppa-schedule/ppa-schedule.component';\r\nimport { RecsComponent } from './component/allocation/allocation-run/recs/recs.component';\r\nimport { EditGeneratorProjectComponent } from './component/generator-project/edit/edit-generator-project.component';\r\nimport { GeneratorProjectDetailsComponent } from './component/generator-project/generator-project-details/generator-project-details.component';\r\nimport { GeneratorProjectFacilityDetailsComponent } from './component/generator-project-facility/generator-project-facility-details/generator-project-facility-details.component';\r\nimport { ConsumerCompanyPremisesDetailsComponent } from './component/consumer-company-premises/consumer-company-premises-details/consumer-company-premises-details.component';\r\nimport { RecsConsumerListComponent } from './component/allocation/allocation-run/recs/recs-consumer-list/recs-consumer-list.component';\r\nimport { DropdownComponent } from './widget/dropdown/dropdown.component';\r\nimport { GeneratorPpaScheduleComponent } from './component/administration/evaluation/generator-evaluation/generator-ppa-schedule/generator-ppa-schedule.component';\r\nimport { NgxMaskModule } from 'ngx-mask';\r\nimport { NgxCurrencyModule } from 'ngx-currency';\r\nimport { NewApplicationComponent } from './component/application/new-application.component';\r\nimport { CompanyDetailsComponent } from './component/application/generator-application/company-details/company-details.component';\r\nimport { SpvDetailsComponent } from './component/application/generator-application/spv-details/spv-details.component';\r\nimport { ApplicationUserEmailVerificationComponent } from './component/application/generator-application/application-user-email-verification/application-user-email-verification.component';\r\nimport { FacilityDetailsComponent } from './component/application/generator-application/facility-details/facility-details.component';\r\nimport { GenerationDataComponent } from './component/application/generator-application/facility-details/generation-data/generation-data.component';\r\nimport { NdaAgreementComponent } from './component/application/generator-application/nda-agreement/nda-agreement.component';\r\nimport { NdaAgreementDownloadComponent } from './component/application/generator-application/nda-agreement-template/nda-agreement-template.component';\r\nimport { GeneratorApplicationService } from './component/application/generator-application/generator-application.service';\r\nimport { NersaConsumerReportComponent } from './component/nersa-report/nersa-consumer-report/nersa-consumer-report.component';\r\nimport { NersaGeneratorReportComponent } from './component/nersa-report/nersa-generator-report/nersa-generator-report.component';\r\nimport { NERSAReportHistoryService } from './component/nersa-report/nersa-report-history.service';\r\nimport { ConsumerCompanyPremisesTariffListComponent } from './component/consumer-company-premises/consumer-company-premises-tariff-list/consumer-company-premises-tariff-list.component';\r\nimport { GeneratorTermsheetComponent } from './component/administration/evaluation/generator-evaluation/generator-termsheet/generator-termsheet.component';\r\nimport { GeneratorTermsheetService } from './component/administration/evaluation/generator-evaluation/generator-termsheet/generator-termsheet.service';\r\nimport { AllocationRunDetailComponent } from './component/allocation/allocation-run/allocation-run-detail/allocation-run-detail.component';\r\nimport { AllocationRunSummaryBlocksComponent } from './component/allocation/allocation-run/allocation-run-detail/allocation-summary-blocks/allocation-run-summary-blocks.component';\r\nimport { AllocationExportComponent } from './component/allocation/allocation-run/allocation-run-detail/allocation-export/allocation-export.component';\r\nimport { AllocationWarningComponent } from './component/allocation/allocation-run/allocation-run-detail/allocation-warning/allocation-warning.component';\r\nimport { AllocationFinalizationComponent } from './component/allocation/allocation-run/allocation-run-detail/allocation-finalization/allocation-finalization.component';\r\nimport { AllocationPowerPerTechnologyComponent } from './component/allocation/allocation-run/allocation-run-detail/allocation-power-per-technology/allocation-power-per-technology.component';\r\nimport { NgxChartsModule } from '@swimlane/ngx-charts';\r\nimport { AllocationRevenuePerEnergyBracketComponent } from './component/allocation/allocation-run/allocation-run-detail/allocation-revenue-per-energy-bracket/allocation-revenue-per-energy-bracket.component';\r\nimport { CpiComponent } from './component/general-maintenance/cpi/cpi.component';\r\nimport { CpiService } from './component/general-maintenance/cpi.service';\r\nimport { SettingsService } from './component/settings/settings.service';\r\nimport { SettingsComponent } from './component/settings/settings.component';\r\nimport { GeneratorProjectFacilityTariffRatesComponent } from './component/generator-project-facility/generator-project-facility-tariff-rates/generator-project-facility-tariff-rates.component';\r\nimport { GeneratorProjectFacilityTariffRatesService } from './component/generator-project-facility/generator-project-facility-tariff-rates/generator-project-facility-tariff-rates.service';\r\nimport { GeneratorProjectFacilityTariffRatesEditComponent } from './component/generator-project-facility/generator-project-facility-tariff-rates-edit/generator-project-facility-tariff-rates-edit.component';\r\nimport { GeneratorProjectFacilityTariffRatesEditService } from './component/generator-project-facility/generator-project-facility-tariff-rates-edit/generator-project-facility-tariff-rates-edit.service';\r\nimport { GeneratorProjectFacilityDistributorNominationsComponent } from './component/generator-project-facility/generator-project-facility-distributor-nominations/generator-project-facility-distributor-nominations.component';\r\nimport { ForecastReportsService } from './component/report/forecast-reports/forecast-reports.service';\r\nimport { GeneratorForecastReportComponent } from './component/report/forecast-reports/generator-forecast-report/generator-forecast-report.component';\r\nimport { ConsumptionComponent } from './widget/consumption/consumption.component';\r\nimport { DistributorIncreaseComponent } from './component/distributor/distributor-increase/distributor-increase.component';\r\nimport { GeneratorNotificationsComponent } from './component/administration/notifications/generator-notifications/generator-notifications.component';\r\nimport { SummaryCardComponent } from './widget/summary-card/summary-card.component';\r\nimport { GeneratorIncreaseNotificationDetailsComponent } from './component/administration/notifications/generator-notifications/generator-increase-notification-details/generator-increase-notification-details.component';\r\nimport { GeneratorApplicationProjectListComponent } from './component/application/generator-application/generator-project/generator-projects-list/generator-application-project-list.component';\r\nimport { GeneratorApplicationProjectEditComponent } from './component/application/generator-application/generator-project/generator-project-edit/generator-application-project-edit.component';\r\nimport { AllocationPrepaidRevenueComponent } from './component/allocation/allocation-run/allocation-run-detail/allocation-prepaid-revenue/allocation-prepaid-revenue.component';\r\nimport { ConsumerAndRevenueForecastReportComponent } from './component/report/forecast-reports/consumer-and-revenue-forecast-report/consumer-and-revenue-forecast-report.component';\r\nimport { PrepaidVendorComponent } from './component/distributor/prepaid-vendor/prepaid-vendor.component';\r\nimport { PrepaidVendorService } from './component/distributor/prepaid-vendor/prepaid-vendor.service';\r\nimport { PrepaidVendorDetailsComponent } from './component/distributor/prepaid-vendor/prepaid-vendor-details/prepaid-vendor-details.component';\r\nimport { ProspectOfferCalculationService } from './component/administration/evaluation/prospect-evaluation/prospect-offer/prospect-offer-calculation.service';\r\nimport { GeneratorApplicationProjectFacilityEditComponent } from './component/application/generator-application/generator-project-facility/generator-project-facility-edit/generator-application-project-facility-edit.component';\r\nimport { ProvidersListComponent } from './component/administration/integrator-providers/providers-list/providers-list.component';\r\nimport { IntegratorProviderService } from './component/administration/integrator-providers/integrator-provider.service';\r\nimport { ProvidersDetailComponent } from './component/administration/integrator-providers/providers-detail/providers-detail.component';\r\nimport { BulkMeterDetailsComponent } from './component/distributor/bulk-meter-list/bulk-meter-details/bulk-meter-details.component';\r\nimport { TariffListComponent } from './component/tariff/tariff-list/tariff-list.component';\r\nimport { ContactComponent } from './component/contact/contact-component/contact.component';\r\nimport { TariffService } from './component/tariff/tariff.service';\r\nimport { DashboardComponent } from './component/dashboard/dashboard.component';\r\nimport { GenerationToDateComponent } from './component/dashboard/generation-to-date/generation-to-date.component';\r\nimport { DashboardService } from './component/dashboard/dashboard.service';\r\nimport { GenerationPerTechnologyToDateComponent } from './component/dashboard/generation-per-technology-to-date/generation-per-technology-to-date.component';\r\nimport { PowerProfileFilterComponent } from './component/power-profile-filter/power-profile-filter.component';\r\nimport { WarningsAndNotificationsComponent } from './component/dashboard/warnings-and-notifications/warnings-and-notifications.component';\r\nimport { InformationCardComponent } from './widget/information-card/information-card.component';\r\nimport { GeneratorNotificationsCardComponent } from './component/dashboard/warnings-and-notifications/generator-notifications-card/generator-notifications-card.component';\r\nimport { StatsCardComponent } from './widget/stats-card/stats-card.component';\r\nimport { ConsumerApplicationService } from './component/application/consumer-application/consumer-application.service';\r\nimport { ConsumerApplicationComponent } from './component/application/consumer-application/consumer-application.component';\r\nimport { GeneratorProjectPpaMaintenanceComponent } from './component/generator-project/generator-project-ppa-maintenance/generator-project-ppa-maintenance.component';\r\nimport { GeneratorProjectPpaMaintenanceService } from './component/generator-project/generator-project-ppa-maintenance/generator-project-ppa-maintenance.service';\r\nimport { WheelingFeesComponent } from './component/distributor/wheeling-fees/wheeling-fees.component';\r\nimport { MeterInstallationChargesComponent } from './component/distributor/meter-installation-charges/meter-installation-charges.component';\r\nimport { PublicHolidayComponent } from './component/public-holiday/public-holiday.component';\r\nimport { AllocationRunErrorsComponent } from './component/allocation/allocation-run/allocation-run-errors/allocation-run-errors.component';\r\nimport { AllocationErrorComponent } from './component/allocation/allocation-run/allocation-run-detail/allocation-error/allocation-error.component';\r\nimport { DocumentMaintenanceComponent } from './component/general-maintenance/document-maintenance/document-maintenance.component';\r\nimport { DocumentMaintenanceService } from './component/general-maintenance/document-maintenance/document-maintenance.service';\r\nimport { DocumentTemplateUploadComponent } from './component/document/document-template-upload/document-template-upload.component';\r\nimport { ConsumerCompanyPpaMaintenanceComponent } from './component/consumer-company/consumer-company-ppa-maintenance/consumer-company-ppa-maintenance.component';\r\nimport { ConsumerCompanyPpaMaintenanceService } from './component/consumer-company/consumer-company-ppa-maintenance/consumer-company-ppa-maintenance.service';\r\nimport { TradingLimitsOverallComponent } from './component/distributor/distributor-dashboard/trading-limits-overall/trading-limits-overall.component';\r\nimport { DistributorDashboardComponent } from './component/distributor/distributor-dashboard/distributor-dashboard.component';\r\nimport { PowerImportLimitComponent } from './component/distributor/distributor-dashboard/power-import-limit/power-import-limit.component';\r\nimport { TradingLimitsPerTariffComponent } from './component/distributor/distributor-dashboard/trading-limits-per-tariff/trading-limits-per-tariff.component';\r\nimport { GeneratorProjectPpaMaintenanceCommercialAgreementChangeComponent } from './component/generator-project/generator-project-ppa-maintenance-commercial-agreement-change/generator-project-ppa-maintenance-commercial-agreement-change.component';\r\nimport { AveragePurchaseAndSalesRateComponent } from './component/distributor/distributor-dashboard/average-purchase-and-sales-rate/average-purchase-and-sales-rate.component';\r\nimport { ConsumerForecastWarningsComponent } from './component/report/forecast-reports/consumer-and-revenue-forecast-report/consumer-forecast-warnings/consumer-forecast-warnings.component';\r\nimport { RevenueForecastWarningsComponent } from './component/report/forecast-reports/consumer-and-revenue-forecast-report/revenue-forecast-warnings/revenue-forecast-warnings.component';\r\nimport { WepsLessLosesComponent } from './component/distributor/distributor-weps-less-losses/weps-less-loses/weps-less-loses.component';\r\nimport { DistributorWepsLessLossService } from './component/distributor/distributor-weps-less-losses/distributor-weps-less-loss.service';\r\nimport { GeneratorPpaWarningCardComponent } from './component/dashboard/warnings-and-notifications/generator-ppa-warning-card/generator-ppa-warning-card.component';\r\nimport { ToastrModule } from 'ngx-toastr';\r\nimport { ConsumerPpaWarningCardComponent } from './component/dashboard/warnings-and-notifications/consumer-ppa-warning-card/consumer-ppa-warning-card.component';\r\nimport { ManagementReportComponent } from './component/report/management-report/management-report.component';\r\nimport { ManagementReportService } from './component/report/management-report/management-report.service';\r\nimport { PrepaidVendorPrepaidRemovalPercentageListComponent } from './component/distributor/prepaid-vendor/prepaid-vendor-prepaid-removal-percentage-list/prepaid-vendor-prepaid-removal-percentage-list.component';\r\nimport { WepsLessLessesPeriodDailyRateComponent } from './component/distributor/distributor-weps-less-losses/weps-less-lesses-period-daily-rate/weps-less-lesses-period-daily-rate.component';\r\nimport { MaintenanceComponent } from './errors/maintenance/maintenance.component';\r\nimport { ForecastParametersComponent } from './component/report/forecast-reports/consumer-and-revenue-forecast-report/forecast-parameters/forecast-parameters.component';\r\nimport { AuthorisationService } from './authorisation-service/authorisation.service';\r\nimport { ConsumerCompanyRecsComponent } from './component/consumer-company/consumer-company-recs/consumer-company-recs.component';\r\nimport { SalesRepReportComponent } from './component/report/sales-rep-report/sales-rep-report.component';\r\nimport { SalesRepReportService } from './component/report/sales-rep-report/sales-rep-report.service';\r\nimport { AllocationPurchaseAndSalesRateComponent } from './component/allocation/allocation-run/allocation-run-detail/allocation-purchase-and-sales-rate/allocation-purchase-and-sales-rate.component';\r\nimport { TariffRateListComponent } from './component/tariff/tariff-rate-list/tariff-rate-list.component';\r\nimport { TariffTradingLimitComponent } from './component/tariff/tariff-trading-limit/tariff-trading-limit.component';\r\nimport { DistributorPowerTradingLimitsComponent } from './component/distributor/distributor-power-trading-limits/distributor-power-trading-limits.component';\r\nimport { PowerTradedPerTechnologyComponent } from './component/distributor/power-traded-per-technology/power-traded-per-technology.component';\r\nimport { AllocationPowerPerTariffComponent } from './component/allocation/allocation-run/allocation-run-detail/allocation-power-per-tariff/allocation-power-per-tariff.component';\r\nimport { AllocationRevenuePerTariffComponent } from './component/allocation/allocation-run/allocation-run-detail/allocation-revenue-per-tariff/allocation-revenue-per-tariff.component';\r\nimport { AllocationTariffSaleRatesComponent } from './component/allocation/allocation-run/allocation-run-detail/allocation-tariff-sale-rates/allocation-tariff-sale-rates.component';\r\nimport { ApplicationReportService } from './component/report/application-reports/application-report.service';\r\nimport { ApplicationReportsComponent } from './component/report/application-reports/application-reports.component';\r\nimport { PremisesListComponent } from './component/administration/prospects/premises-list/premises-list.component';\r\nimport { ProspectDetailsComponent } from './component/administration/prospects/prospect-details/prospect-details.component';\r\nimport { DistributorActivationReportComponent } from './component/report/distributor-activation-report/distributor-activation-report.component';\r\nimport { GeneratorPpaRenewalNotificationsComponent } from './component/administration/notifications/generator-ppa-renewal-notifications/generator-ppa-renewal-notifications.component';\r\nimport { ConsumerPpaRenewalNotificationsComponent } from './component/administration/notifications/consumer-ppa-renewal-notifications/consumer-ppa-renewal-notifications.component';\r\nimport { DownloadableDocumentsComponent } from './component/infomation/downloadable-documents-component/downloadable-documents-component';\r\nimport { ForecastComponent } from './component/forecast/parameters/forecast.component';\r\nimport { ForecastRunComponent } from './component/forecast/runs/forecast-run.component';\r\nimport { AllocationForecastRunComponent } from './component/forecast/allocations/allocation-forecast-run.component';\r\nimport { ForecastService } from './component/forecast/forecast.service';\r\nimport { ConsumerSalesReportsComponent } from './component/report/consumer-sales-reports/consumer-sales-reports.component';\r\nimport { ConsumerSalesReportService } from './component/report/consumer-sales-reports/consumer-sales-report.service';\r\nimport { GeneratorReportsComponent } from './component/report/generator-reports/generator-reports.component';\r\nimport { GeneratorReportService } from './component/report/generator-reports/generator-report.service';\r\nimport { InvoiceBatchSummaryComponent } from './component/invoices/invoice-batch-summary/invoice-batch-summary.component';\r\nimport { InvoiceBatchDetailsComponent } from './component/invoices/invoice-batch-details/invoice-batch-details.component';\r\nimport { InvoiceBatchInvoiceListComponent } from './component/invoices/invoice-batch-invoice-list/invoice-batch-invoice-list.component';\r\nimport { InvoiceDetailsComponent } from './component/invoices/invoice-details/invoice-details.component';\r\nimport { InvoiceService } from './component/invoices/invoice.service';\r\nimport { DemoSettingsComponent } from './component/demo-settings/demo-settings.component';\r\nimport { DemoSettingsService } from './component/demo-settings/demo-settings.service';\r\nimport { ConsumerStatementComponent } from './component/consumer-company-premises/statements/consumer-statement.component';\r\nimport { ConsumerService } from './component/consumer-company-premises/statements/consumer-statement.service';\r\nimport { PowerProfileService } from './component/power-profile-filter/power-profile.service';\r\nimport { MeterManualUploadService } from './component/consumer-company-premises/meter-manual-upload/meter-manual-upload.service';\r\nimport { MeterManualUploadComponent } from './component/consumer-company-premises/meter-manual-upload/meter-manual-upload.component';\r\nimport { VatSettingsComponent } from './component/vat-settings/vat-settings.component';\r\nimport { VatService } from './component/vat-settings/vat-settings.service';\r\n\r\ndefineLocale(LOCALE, enGbLocale);\r\n\r\n@NgModule({\r\n bootstrap: [AppComponent],\r\n declarations: [\r\n AppComponent,\r\n HomeComponent,\r\n PageNotFoundComponent,\r\n AllocationComponent,\r\n NavigationBarComponent,\r\n ConsumerCompaniesListComponent,\r\n ArchivedConsumerCompaniesListComponent,\r\n AllocationComponent,\r\n ParametersComponent,\r\n AllocationRunComponent,\r\n LoginComponent,\r\n ForgotPasswordComponent,\r\n ResetPasswordComponent,\r\n LogoutComponent,\r\n LoaderComponent,\r\n AllocationRunWarningsComponent,\r\n AllocationSummaryConsumerComponent,\r\n NumberFormatPipe,\r\n DocumentComponent,\r\n DocumentUploadComponent,\r\n DocumentDownloadComponent,\r\n DocumentDownloadListComponent,\r\n AllocationSummaryGeneratorComponent,\r\n FrequentlyAskedQuestionsComponent,\r\n UsefulLinksComponent,\r\n NewApplicationComponent,\r\n CompanyDetailsComponent,\r\n SpvDetailsComponent,\r\n NavigationBarItemComponent,\r\n ForbiddenComponent,\r\n ApplicationUserEmailVerificationComponent,\r\n AllocationSendWarningsComponent,\r\n ApplicationUserEmailVerificationComponent,\r\n FacilityDetailsComponent,\r\n ValidationSpansComponent,\r\n GenerationDataComponent,\r\n ConsumerDetailsComponent,\r\n ConsumerPremisesDetailsComponent,\r\n AddressFormComponent,\r\n UserListComponent,\r\n CreateUserComponent,\r\n UserEmailVerificationComponent,\r\n EditUserComponent,\r\n ApplicationUserEmailVerificationComponent,\r\n SalesRepListComponent,\r\n CreateSalesRepComponent,\r\n EditSalesRepComponent,\r\n ProspectsComponent,\r\n SapExportComponent,\r\n NdaAgreementComponent,\r\n NdaAgreementDownloadComponent,\r\n ProspectsComponent,\r\n ValidationMessagesComponent,\r\n DistributorListComponent,\r\n CreateDistributorComponent,\r\n ProspectEvaluationComponent,\r\n ArchivedProspectEvaluationComponent,\r\n ProspectEvaluationDetailsComponent,\r\n TariffComponent,\r\n CrudTableComponent,\r\n EditDistributorComponent,\r\n GeneratorEvaluationComponent,\r\n ArchivedGeneratorEvaluationComponent,\r\n GeneratorEvaluationDetailsComponent,\r\n ProspectOfferComponent,\r\n ContactComponent,\r\n PrepaidVendorAccordionComponent,\r\n NotesComponent,\r\n DocumentsComponent,\r\n PrepaidTariffAccordionComponent,\r\n TariffBlockAccordionComponent,\r\n ConsumptionPeriodComponent,\r\n PublicHolidayTimePeriodComponent,\r\n GeneratorPpaComponent,\r\n GeneratorProjectFacilityActivationComponent,\r\n ConsumerCompanyPremisesActivationComponent,\r\n DistinctStartWithPipe,\r\n SubstrStartAtZeroPipe,\r\n AllStartWithPipe,\r\n ProfileTypePipe,\r\n ProfileHasDataPipe,\r\n InclusionMonthPipe,\r\n ProspectPpaComponent,\r\n BulkMeterListComponent,\r\n ProspectPpaComponent,\r\n EditConsumerCompanyComponent,\r\n ConsumerCompanyDetailsComponent,\r\n ConsumerCompanyPremisesListComponent,\r\n EditConsumerCompanyPremisesComponent,\r\n AddressComponent,\r\n GeneratorCompaniesListComponent,\r\n ArchivedGeneratorCompaniesListComponent,\r\n EditGeneratorCompanyComponent,\r\n GeneratorCompanyDetailsComponent,\r\n GeneratorProjectListComponent,\r\n ProspectPpaComponent,\r\n RecsComponent,\r\n EditGeneratorProjectComponent,\r\n GeneratorProjectDetailsComponent,\r\n GeneratorProjectFacilityDetailsComponent,\r\n PpaScheduleComponent,\r\n ConsumerCompanyPremisesDetailsComponent,\r\n RecsConsumerListComponent,\r\n GeneratorPpaScheduleComponent,\r\n DropdownComponent,\r\n NersaConsumerReportComponent,\r\n NersaGeneratorReportComponent,\r\n ConsumerCompanyPremisesTariffListComponent,\r\n GeneratorTermsheetComponent,\r\n AllocationRunDetailComponent,\r\n AllocationRunSummaryBlocksComponent,\r\n AllocationExportComponent,\r\n AllocationWarningComponent,\r\n AllocationFinalizationComponent,\r\n AllocationPowerPerTechnologyComponent,\r\n AllocationRevenuePerEnergyBracketComponent,\r\n CpiComponent,\r\n SettingsComponent,\r\n GeneratorProjectFacilityTariffRatesComponent,\r\n GeneratorProjectFacilityTariffRatesEditComponent,\r\n GeneratorProjectFacilityDistributorNominationsComponent,\r\n GeneratorForecastReportComponent,\r\n ConsumptionComponent,\r\n DistributorIncreaseComponent,\r\n GeneratorNotificationsComponent,\r\n SummaryCardComponent,\r\n GeneratorIncreaseNotificationDetailsComponent,\r\n AllocationPrepaidRevenueComponent,\r\n ConsumerAndRevenueForecastReportComponent,\r\n PrepaidVendorComponent,\r\n PrepaidVendorDetailsComponent,\r\n ProvidersListComponent,\r\n ProvidersDetailComponent,\r\n GeneratorApplicationProjectListComponent,\r\n GeneratorApplicationProjectEditComponent,\r\n GeneratorApplicationProjectFacilityEditComponent,\r\n BulkMeterDetailsComponent,\r\n TariffListComponent,\r\n DashboardComponent,\r\n GenerationToDateComponent,\r\n GenerationPerTechnologyToDateComponent,\r\n PowerProfileFilterComponent,\r\n WarningsAndNotificationsComponent,\r\n InformationCardComponent,\r\n GeneratorNotificationsCardComponent,\r\n StatsCardComponent,\r\n PremisesEvaluationNotificationsCardComponent,\r\n FacilitiesEvaluationNotificationsCardComponent,\r\n ConsumerApplicationComponent,\r\n WheelingFeesComponent,\r\n MeterInstallationChargesComponent,\r\n PublicHolidayComponent,\r\n AllocationRunErrorsComponent,\r\n AllocationErrorComponent,\r\n DocumentMaintenanceComponent,\r\n DocumentTemplateUploadComponent,\r\n ConsumerCompanyPpaMaintenanceComponent,\r\n TradingLimitsOverallComponent,\r\n DistributorDashboardComponent,\r\n PowerImportLimitComponent,\r\n TradingLimitsPerTariffComponent,\r\n GeneratorProjectPpaMaintenanceComponent,\r\n GeneratorProjectPpaMaintenanceCommercialAgreementChangeComponent,\r\n AveragePurchaseAndSalesRateComponent,\r\n ConsumerForecastWarningsComponent,\r\n RevenueForecastWarningsComponent,\r\n WepsLessLosesComponent,\r\n GeneratorPpaWarningCardComponent,\r\n PrepaidVendorPrepaidRemovalPercentageListComponent,\r\n ConsumerPpaWarningCardComponent,\r\n ManagementReportComponent,\r\n WepsLessLessesPeriodDailyRateComponent,\r\n MaintenanceComponent,\r\n SalesRepReportComponent,\r\n ForecastParametersComponent,\r\n ConsumerCompanyRecsComponent,\r\n AllocationPurchaseAndSalesRateComponent,\r\n TariffRateListComponent,\r\n TariffTradingLimitComponent,\r\n DistributorPowerTradingLimitsComponent,\r\n PowerTradedPerTechnologyComponent,\r\n AllocationPowerPerTariffComponent,\r\n AllocationRevenuePerTariffComponent,\r\n AllocationTariffSaleRatesComponent,\r\n ApplicationReportsComponent,\r\n PremisesListComponent,\r\n ProspectDetailsComponent,\r\n DistributorActivationReportComponent,\r\n GeneratorPpaRenewalNotificationsComponent,\r\n ConsumerPpaRenewalNotificationsComponent,\r\n DownloadableDocumentsComponent,\r\n ForecastComponent,\r\n ForecastRunComponent,\r\n AllocationForecastRunComponent,\r\n ConsumerSalesReportsComponent,\r\n GeneratorReportsComponent,\r\n InvoiceBatchSummaryComponent,\r\n InvoiceBatchDetailsComponent,\r\n InvoiceBatchInvoiceListComponent,\r\n InvoiceDetailsComponent,\r\n DemoSettingsComponent,\r\n ConsumerStatementComponent,\r\n MeterManualUploadComponent,\r\n VatSettingsComponent\r\n ],\r\n imports: [\r\n BrowserModule,\r\n BrowserAnimationsModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n HttpClientModule,\r\n TabsModule.forRoot(),\r\n RouterModule.forRoot(ROUTES, {\r\n useHash: Boolean(history.pushState) === false,\r\n preloadingStrategy: PreloadAllModules,\r\n onSameUrlNavigation: 'reload',\r\n }),\r\n TypeaheadModule.forRoot(),\r\n AlertModule.forRoot(),\r\n NgxDatatableModule,\r\n ToastrModule.forRoot({ positionClass: 'toast-top-center' }),\r\n AccordionModule.forRoot(),\r\n BsDatepickerModule.forRoot(),\r\n CollapseModule.forRoot(),\r\n BsDropdownModule.forRoot(),\r\n ModalModule.forRoot(),\r\n PopoverModule,\r\n TooltipModule.forRoot(),\r\n MultiselectDropdownModule,\r\n NgxMaskModule.forRoot(),\r\n NgxCurrencyModule,\r\n NgxChartsModule,\r\n PaginationModule.forRoot(),\r\n ],\r\n providers: [\r\n ParametersService,\r\n AuthenticationService,\r\n {\r\n provide: HTTP_INTERCEPTORS,\r\n useClass: TokenInterceptor,\r\n multi: true,\r\n },\r\n AuthorisationService,\r\n AllocationRunService,\r\n AuthenticationGuard,\r\n AuthorizationGuard,\r\n InformationService,\r\n AlertConfig,\r\n DistributorService,\r\n BsDropdownConfig,\r\n DateConverterService,\r\n PopoverConfig,\r\n InformationService,\r\n GeneratorApplicationService,\r\n BsLocaleService,\r\n AdministrationService,\r\n CommonService,\r\n ContactService,\r\n ExportService,\r\n ConsumerCompanyService,\r\n GeneratorEvaluationService,\r\n TariffService,\r\n NotesService,\r\n DocumentService,\r\n ProspectService,\r\n ComponentTriggersService,\r\n GeneratorPpaService,\r\n ComponentTriggersService,\r\n PublicHolidayService,\r\n DatePipe,\r\n GeneratorProjectFacilityActivationService,\r\n ProspectPpaService,\r\n ConsumerCompanyPremisesActivationService,\r\n GeneratorCompanyService,\r\n ConsumerCompanyPremisesService,\r\n NERSAReportHistoryService,\r\n GeneratorPpaScheduleService,\r\n GeneratorTermsheetService,\r\n CpiService,\r\n SettingsService,\r\n GeneratorProjectFacilityTariffRatesService,\r\n GeneratorProjectFacilityTariffRatesEditService,\r\n ForecastReportsService,\r\n PeriodService,\r\n PrepaidVendorService,\r\n ProspectOfferCalculationService,\r\n IntegratorProviderService,\r\n DistributorBulkMeterService,\r\n DashboardService,\r\n ConsumerApplicationService,\r\n DocumentMaintenanceService,\r\n ConsumerCompanyPpaMaintenanceService,\r\n GeneratorProjectPpaMaintenanceService,\r\n DistributorWepsLessLossService,\r\n ManagementReportService,\r\n SalesRepReportService,\r\n ApplicationReportService,\r\n ForecastService,\r\n ConsumerSalesReportService,\r\n GeneratorReportService,\r\n InvoiceService,\r\n DemoSettingsService,\r\n ConsumerService,\r\n PowerProfileService,\r\n MeterManualUploadService,\r\n VatService\r\n ],\r\n})\r\nexport class AppModule {}\r\n","import { enableDebugTools, disableDebugTools } from '@angular/platform-browser';\r\nimport { ApplicationRef, enableProdMode } from '@angular/core';\r\n\r\nlet _decorateModuleRef = (value: T): T => value;\r\n\r\nif ('prod' === ENV) {\r\n enableProdMode();\r\n\r\n _decorateModuleRef = (modRef: any) => {\r\n disableDebugTools();\r\n\r\n return modRef;\r\n };\r\n} else {\r\n _decorateModuleRef = (modRef: any) => {\r\n const appRef = modRef.injector.get(ApplicationRef);\r\n const cmpRef = appRef.components[0];\r\n\r\n enableDebugTools(cmpRef);\r\n return modRef;\r\n };\r\n}\r\n\r\nexport const decorateModuleRef = _decorateModuleRef;\r\n","/**\r\n * Angular bootstrapping\r\n */\r\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\r\nimport { AppModule } from 'app/app.module';\r\nimport { decorateModuleRef } from 'app/environment';\r\n\r\n/**\r\n * App Module\r\n * our top level module that holds all of our components\r\n */\r\n\r\n/**\r\n * Bootstrap our Angular app with a top level NgModule\r\n */\r\nexport function main(): Promise {\r\n return platformBrowserDynamic()\r\n .bootstrapModule(AppModule)\r\n .then(decorateModuleRef)\r\n .catch((err) => console.error(err));\r\n}\r\n\r\n/**\r\n * Needed for hmr\r\n * in prod this is replace for document ready\r\n */\r\nswitch (document.readyState) {\r\n case 'loading':\r\n document.addEventListener('DOMContentLoaded', _domReadyHandler, false);\r\n break;\r\n case 'interactive':\r\n case 'complete':\r\n default:\r\n main();\r\n}\r\n\r\nfunction _domReadyHandler() {\r\n document.removeEventListener('DOMContentLoaded', _domReadyHandler, false);\r\n main();\r\n}\r\n","\n var result = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/sass-loader/lib/loader.js!./edit-generator-project.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","\n var result = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/sass-loader/lib/loader.js!./edit-consumer-company.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","\n var result = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/sass-loader/lib/loader.js!./cpi.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","\n var result = require(\"!!../../../../node_modules/css-loader/index.js!../../../../node_modules/sass-loader/lib/loader.js!./stats-card.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","module.exports = \"\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    {{ title }}
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    {{ info.key }} {{ info.value }}
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \"","module.exports = \"\\r\\n

    Please ensure the form is filled in correctly:

    \\r\\n
    \\r\\n
    \"","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\", \"\"]);\n\n// exports\n","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"p.checklist-update-information {\\n text-align: right;\\n color: grey;\\n margin-bottom: 0;\\n font-size: 11px; }\\n\\nhr.checklist-item-separator {\\n margin: 3px 0; }\\n\", \"\"]);\n\n// exports\n","\n var result = require(\"!!../../../../node_modules/css-loader/index.js!../../../../node_modules/sass-loader/lib/loader.js!./new-application.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","\n var result = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/sass-loader/lib/loader.js!./nersa-consumer-report.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","module.exports = \"\\r\\n

    Generator Warnings And Notifications

    \\r\\n
    \\r\\n
    \\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n\\r\\n

    Consumer Warnings And Notifications

    \\r\\n
    \\r\\n
    \\r\\n \\r\\n \\r\\n
    \"","module.exports = \"
    \\r\\n \\r\\n {{errorMessage}}\\r\\n
    \\r\\n\"","module.exports = \"\\r\\n\\r\\n
    \\r\\n

    Prospect PPA Generation\\r\\n \\r\\n \\r\\n View Details\\r\\n \\r\\n \\r\\n

    \\r\\n \\r\\n {{errorMessage}}\\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n

    Prospect PPA Details

    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n

    This PPA is based on\\r\\n {{ prospect.details.companyName }} \\r\\n {{ prospect.details.companyType }} with registration number\\r\\n {{ prospect.details.registrationNumber }} for the following premises.\\r\\n

    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
      \\r\\n
    • \\r\\n {{ premise.premisesName }} meter no\\r\\n {{ premise.meterNumber }} on account no\\r\\n {{ premise.accountNumber }}\\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

    Is RECs

    \\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

    {{prospectPpaDetail.carbonCreditsDefinition}}

    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n

    {{prospectPpaDetail.kyotoProtocolDefinition}}

    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n

    The Parties agree that\\r\\n {{ recsRecipient }} shall be the sole and exclusive owner of all Renewable Energy Certificates (if any) derived or generated from, or in connection with,\\r\\n the Renewable Energy purchased in accordance with one Renewable Energy Certificate issued per MWh consumed and shall have all rights to trade, sell or otherwise dispose of such Renewable\\r\\n Energy Certificates as appropriate, and shall be issued annually in arrears.

    \\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

    Has Minimum

    \\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

    {{ prospectPpaDetail.minimumSupplyClause }}\\r\\n {{ prospectPpaDetail.minimumSupplyValue }}\\r\\n \\r\\n

    \\r\\n
    \\r\\n
    \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    {{ premise.distributor.name }}
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n

    Is Municipality

    \\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

    {{ prospectPpaDetail.municipalityCondition }}

    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n

    Long Stop Date and Expiry Term

    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Long Stop Date\\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Expiry Term in Years\\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n

    PPA Progress

    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n PPA Document Sent\\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n PPA Signed\\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Signed 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
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \"","module.exports = \"
    \\r\\n \\r\\n {{errorMessage}}\\r\\n
    \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    Power Generated (incl. Prepaid)
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Total {{ allocationRunSummary.totalPowerGenerated | number | commadumper }} kWh \\r\\n
    \\r\\n
    \\r\\n Peak {{ allocationRunSummary.totalPeakPowerGenerated | number | commadumper }} kWh \\r\\n
    \\r\\n
    \\r\\n Off-Peak {{ allocationRunSummary.totalOffPeakPowerGenerated | number | commadumper }} kWh \\r\\n
    \\r\\n
    \\r\\n Standard {{ allocationRunSummary.totalStandardPowerGenerated | number | commadumper }} kWh \\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
    Power Consumed
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Total {{ allocationRunSummary.totalPowerConsumed | number | commadumper }} kWh \\r\\n
    \\r\\n
    \\r\\n Peak {{ allocationRunSummary.totalPeakPowerConsumed | number | commadumper }} kWh \\r\\n
    \\r\\n
    \\r\\n Off-Peak {{ allocationRunSummary.totalOffPeakPowerConsumed | number | commadumper }} kWh \\r\\n
    \\r\\n
    \\r\\n Standard {{ allocationRunSummary.totalStandardPowerConsumed | number | commadumper }} kWh \\r\\n
    \\r\\n
    \\r\\n Flat {{ allocationRunSummary.totalFlatPowerConsumed | number | commadumper }} kWh \\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
    Power Allocated
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Prepaid {{ allocationRunSummary.totalPrepaidPower | number | commadumper }} kWh \\r\\n
    \\r\\n
    \\r\\n Post-paid {{ allocationRunSummary.totalPowerAllocated | number | commadumper }} kWh \\r\\n
    \\r\\n Peak {{ allocationRunSummary.totalPeakPowerAllocated | number | commadumper }} kWh \\r\\n
    \\r\\n
    \\r\\n Off-Peak {{ allocationRunSummary.totalOffPeakPowerAllocated | number | commadumper }} kWh \\r\\n
    \\r\\n
    \\r\\n Standard {{ allocationRunSummary.totalStandardPowerAllocated | number | commadumper }} kWh \\r\\n
    \\r\\n
    \\r\\n Flat {{ allocationRunSummary.totalFlatPowerAllocated | number | commadumper }} kWh \\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
    Revenue
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Total R {{ allocationRunSummary.totalRevenue | number | commadumper }} \\r\\n
    \\r\\n
    \\r\\n Prepaid R {{ allocationRunSummary.totalPrepaidRevenue | number | commadumper }} \\r\\n
    \\r\\n
    \\r\\n Post-paid R {{ allocationRunSummary.totalPostPaidRevenue | number | commadumper }} \\r\\n
    \\r\\n
    \\r\\n Prepaid W/Fee R {{ allocationRunSummary.totalPrepaidWheelingFee | number | commadumper }} \\r\\n
    \\r\\n
    \\r\\n PostPaid W/Fee R {{ allocationRunSummary.totalPostpaidWheelingFee | number | commadumper }} \\r\\n
    \\r\\n
    \\r\\n Net Total R {{ allocationRunSummary.netRevenue | number | commadumper }} \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n \\r\\n
    \\r\\n
    \"","module.exports = \"
    \\r\\n \\r\\n {{errorMessage}}\\r\\n \\r\\n\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Facilities\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n\\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n \\r\\n \\r\\n Season\\r\\n \\r\\n \\r\\n {{ value }}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Energy Bracket\\r\\n \\r\\n \\r\\n {{ value }}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n R/kWh\\r\\n \\r\\n \\r\\n {{ value | number: '1.2-5' }}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Start Date\\r\\n \\r\\n \\r\\n {{value | date: 'dd/MM/yyyy'}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n End Date\\r\\n \\r\\n \\r\\n {{value | date: 'dd/MM/yyyy'}}\\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n\\r\\n \\r\\n
    \\r\\n \\r\\n
    \\r\\n

    Add Tariff Rate


    \\r\\n
    \\r\\n \\r\\n {{errorMessage}}\\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Season\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Energy Bracket\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n R/kWh\\r\\n R\\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Start Date\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n End 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
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \"","\n var result = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/sass-loader/lib/loader.js!./distributor-increase.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","module.exports = \"
    \\r\\n
    \\r\\n

    PowerX

    \\r\\n
    \\r\\n
    \\r\\n

    Our website is under maintenance.
    In the mean time connect with us with the information below

    \\r\\n\\r\\n
      \\r\\n
    • \\r\\n

      P

      0861 POWERX (769379)

      \\r\\n
    • \\r\\n
    • \\r\\n

      E

      info@powerx.energy

      \\r\\n
    • \\r\\n
    • \\r\\n

      A

      6th Floor, The Mall Offices, 11 Cradock Ave,
      Rosebank, Johannesburg,
      South Africa

      \\r\\n
    • \\r\\n
    \\r\\n
    \\r\\n
    \"","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".span-div {\\n text-align: center; }\\n\\n.label-control {\\n text-align: left !important;\\n padding-left: 44px;\\n white-space: pre-wrap;\\n word-break: normal;\\n overflow-wrap: normal !important; }\\n\\n.error {\\n color: #EF483F; }\\n\\nspan.input-group-addon {\\n min-width: 200px;\\n background-color: white;\\n color: black;\\n border: none;\\n font-weight: bold;\\n text-align: right; }\\n\\n.input-group input {\\n border-top-left-radius: 5px !important;\\n border-bottom-left-radius: 5px !important;\\n border-top-right-radius: 0;\\n border-bottom-right-radius: 0; }\\n\\n.btn-default {\\n background-color: #EEEEEE; }\\n\\n.addon-buttons {\\n vertical-align: top; }\\n\\n.upload-container {\\n display: table;\\n padding-right: 60px;\\n padding-left: 15px; }\\n\\ninput.form-control {\\n border-top-right-radius: 0;\\n border-bottom-right-radius: 0; }\\n\\n.error-button {\\n border-radius: 0;\\n background-color: white;\\n opacity: 1; }\\n\\n.error-button:hover {\\n cursor: default;\\n background-color: white; }\\n\\n.validation {\\n border: none !important;\\n max-width: 40px;\\n min-width: 40px; }\\n\\n.btn {\\n min-width: 40px !important; }\\n\\n.document-control {\\n padding-right: 50px !important; }\\n\\nspan.informational-note {\\n margin-left: 50px; }\\n\", \"\"]);\n\n// exports\n","exports = module.exports = require(\"../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\", \"\"]);\n\n// exports\n","exports = module.exports = require(\"../../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".pointable {\\n cursor: pointer; }\\n\\na {\\n text-decoration: none; }\\n\\nh6 {\\n margin-top: 2px;\\n margin-bottom: 2px; }\\n\\nhr {\\n margin: 3px; }\\n\\n.stats-number {\\n font-size: 26px;\\n font-weight: 700;\\n line-height: 1;\\n padding: 10px 15px 16px; }\\n\\n.stats-description {\\n text-transform: uppercase;\\n margin-bottom: 5px; }\\n\\n.stats-text {\\n color: grey; }\\n\\n.text-faded {\\n color: rgba(94, 12, 12, 0.747); }\\n\\n.badge {\\n font-weight: 100;\\n display: unset;\\n border-radius: 3px; }\\n\\n.evaluation {\\n color: #0aa8d8;\\n background-color: rgba(255, 255, 255, 0.99);\\n border: 1px solid; }\\n\\n.offer {\\n color: #5cb85c;\\n background-color: rgba(255, 255, 255, 0.99);\\n border: 1px solid; }\\n\\n.more-info {\\n color: #ff8800;\\n background-color: rgba(255, 255, 255, 0.99);\\n border: 1px solid; }\\n\\n.prospect {\\n color: #333;\\n background-color: rgba(255, 255, 255, 0.99);\\n border: 1px solid; }\\n\\n.declined {\\n background-color: rgba(255, 255, 255, 0.99);\\n color: red;\\n border: 1px solid; }\\n\\n.prospect-ppa {\\n background-color: rgba(255, 255, 255, 0.99);\\n color: #0037ff;\\n border: 1px solid; }\\n\\n.activation {\\n background-color: rgba(255, 255, 255, 0.99);\\n color: #3136ff;\\n border: 1px solid; }\\n\\n.activated {\\n background-color: rgba(255, 255, 255, 0.99);\\n color: #2dcb16;\\n border: 1px solid; }\\n\\n.dueDateWarning {\\n background-color: #FFDDDD; }\\n\\n.act-btn,\\n.act-btn h5 {\\n display: inline-block;\\n margin-left: 10px; }\\n\", \"\"]);\n\n// exports\n","module.exports = \"\\r\\n\\r\\n\"","module.exports = \"\\r\\n\\r\\n
    \\r\\n \\r\\n\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n

    New Credit Note

    \\r\\n

    New Invoice

    \\r\\n\\r\\n

    Use the below inputs to select the consumer premise you want to create a credit Note for and then select the year and month of the credit Note you would like to copy.\\r\\n

    \\r\\n

    Use the below inputs to select the consumer premise you want to create an invoice for and then select the year and month of the invoice you would like to copy.\\r\\n

    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n {{errorMessage}}\\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n \\r\\n \\r\\n
    {{model.premisesName}}
    \\r\\n
    \\r\\n
    \\r\\n Aa\\r\\n \\r\\n
    \\r\\n \\r\\n
    \\r\\n\\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n Yr\\r\\n \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n \\r\\n \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n \\r\\n\\r\\n \\r\\n\\r\\n \\r\\n \\r\\n Edit\\r\\n \\r\\n \\r\\n\\r\\n \\r\\n\\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n Customer\\r\\n \\r\\n \\r\\n {{value}}\\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n Invoice\\r\\n \\r\\n \\r\\n {{value}}\\r\\n \\r\\n \\r\\n\\r\\n\\r\\n \\r\\n \\r\\n Status\\r\\n \\r\\n \\r\\n {{ value }} \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n Total\\r\\n \\r\\n \\r\\n \\r\\n R {{value}}\\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n Email\\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n \\r\\n \\r\\n\\r\\n
    \\r\\n\\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n\\r\\n \\r\\n \\r\\n Paid\\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n \\r\\n \\r\\n\\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n \\r\\n Statement\\r\\n\\r\\n \\r\\n \\r\\n\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Delete / Download\\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

    Invoice Details


    \\r\\n\\r\\n
    \\r\\n
    \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n \\r\\n \\r\\n Description\\r\\n \\r\\n \\r\\n {{value}}\\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n Total Consumption\\r\\n \\r\\n \\r\\n {{value}}\\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n Power Allocated\\r\\n \\r\\n \\r\\n {{value}}\\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n Power Allocated\\r\\n \\r\\n \\r\\n {{value}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n UOM\\r\\n \\r\\n \\r\\n {{value}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Unit Price\\r\\n \\r\\n \\r\\n {{value}}\\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n Discount %\\r\\n \\r\\n \\r\\n {{value}}%\\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n Discount (ZAR)\\r\\n \\r\\n \\r\\n R {{value}}\\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n Amount (ZAR)\\r\\n \\r\\n \\r\\n R {{value}}\\r\\n \\r\\n \\r\\n\\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n \\r\\n\\r\\n
    \\r\\n
    \"","\n var result = require(\"!!../../../../node_modules/css-loader/index.js!../../../../node_modules/sass-loader/lib/loader.js!./loader.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\", \"\"]);\n\n// exports\n","module.exports = \"\\r\\n
    \\r\\n \\r\\n

    Revenue Per Energy Bracket

    \\r\\n
    \\r\\n {{errorMessage}}\\r\\n \\r\\n
    \\r\\n \\r\\n \\r\\n
    \\r\\n
    \"","module.exports = \"\\r\\n\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n

    {{heading}}

    \\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 Address Line 1\\r\\n Aa\\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Address Line 2\\r\\n Aa\\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Address Line 3\\r\\n Aa\\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Province\\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n City\\r\\n Aa\\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Postal Code\\r\\n #\\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Is Rural Address\\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \"","\n var result = require(\"!!../../../../../../../node_modules/css-loader/index.js!../../../../../../../node_modules/sass-loader/lib/loader.js!./prospect-evaluation-details.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","module.exports = \"\\r\\n
    \\r\\n \\r\\n

    Errors

    \\r\\n
    \\r\\n {{errorMessage}}\\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    Total {{ allocationRunErrorSummary.totalErrors | number | commadumper }} \\r\\n
    \\r\\n
    \\r\\n
    {{ errorType.replace(errorType.charAt(0), errorType.charAt(0).toUpperCase()) }} {{ allocationRunErrorSummary.errorList[errorType] | number | commadumper }} \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \"","module.exports = \"
    \\r\\n
    \\r\\n \\r\\n

    Weps Less Losses Daily Rate Per Period

    \\r\\n
    \\r\\n \\r\\n {{errorMessage}}\\r\\n \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n \\r\\n \\r\\n \\r\\n Period\\r\\n \\r\\n \\r\\n {{value}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Daily Tariff Rate\\r\\n \\r\\n \\r\\n R {{ value | number: '1.5-5' }}\\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n\\r\\n\\r\\n \\r\\n
    \\r\\n

    Weps Less Losses Daily Rate Per Period

    \\r\\n
    \\r\\n
    \\r\\n {{errorMessage}}\\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Period\\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Daily Tariff Rate\\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
    \"","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\", \"\"]);\n\n// exports\n","module.exports = \"
    \\r\\n
    \\r\\n \\r\\n

    Application Reports

    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n {{errorMessage}}\\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \"","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".component-container.remove-shadow {\\n box-shadow: none; }\\n\", \"\"]);\n\n// exports\n","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\", \"\"]);\n\n// exports\n","module.exports = \"\\r\\n
    \\r\\n \\r\\n

    Warnings

    \\r\\n
    \\r\\n {{errorMessage}}\\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    Total {{ allocationRunWarningSummary.totalWarnings | number | commadumper }} \\r\\n
    \\r\\n
    \\r\\n
    {{ warningType.replace(warningType.charAt(0), warningType.charAt(0).toUpperCase()) }} {{ allocationRunWarningSummary.warningList[warningType] | number | commadumper }} \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \"","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\", \"\"]);\n\n// exports\n","module.exports = \"
    \\r\\n \\r\\n \\r\\n \\r\\n {{errorMessage}}\\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n
    \\r\\n
    Application Reference Number: {{applicationReferenceNumber}}\\r\\n
    \\r\\n

    Phase 2 Application Capture

    \\r\\n \\r\\n

    \\r\\n Application Submitted\\r\\n

    \\r\\n
    Your application has been submitted and is pending review.
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n \\r\\n
    \\r\\n
    \\r\\n
    Application Reference Number: {{applicationReferenceNumber}}
    \\r\\n

    NDA Agreement

    \\r\\n
    \\r\\n
    Please download NDA if this was not done in the first phase of the application
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n\\r\\n
    Please upload the signed NDA below
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\"","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"p.checklist-update-information {\\n text-align: right;\\n color: grey;\\n margin-bottom: 0;\\n font-size: 11px; }\\n\\nhr.checklist-item-separator {\\n margin: 3px 0; }\\n\\nspan.input-group-addon {\\n min-width: 0; }\\n\\nspan.informational-note {\\n margin-left: 78px; }\\n\", \"\"]);\n\n// exports\n","module.exports = \"\\r\\n
    \\r\\n \\r\\n

    Tariff Trading Limits

    \\r\\n
    \\r\\n {{errorMessage}}\\r\\n \\r\\n
    \\r\\n No data to display\\r\\n
    \\r\\n
    \\r\\n
    0\\\">\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    {{tariffCode[i]}} (Limit: {{tradingLimit[i]}} kWh)
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n {{message[i]}}\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \"","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".form-signin {\\n max-width: 500px;\\n padding: 30px 38px 66px;\\n margin: 0 auto;\\n background-color: white; }\\n\\n.form-signin-heading {\\n text-align: center; }\\n .form-signin-heading img {\\n width: 100%;\\n height: 120px; }\\n\\n.form-control {\\n position: relative;\\n font-size: 16px;\\n height: auto;\\n padding: 10px; }\\n\\nbutton[type=\\\"submit\\\"] {\\n margin-top: 10px; }\\n\\nspan.input-group-addon {\\n min-width: 20px;\\n height: auto; }\\n\\na {\\n text-align: right; }\\n\", \"\"]);\n\n// exports\n","exports = module.exports = require(\"../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".list-group-item.active {\\n color: black;\\n background-color: lightgray;\\n border-color: darkgray; }\\n\\n.list-group-item.active .list-group-item-text {\\n color: gray; }\\n\", \"\"]);\n\n// exports\n","\n var result = require(\"!!../../../../node_modules/css-loader/index.js!../../../../node_modules/sass-loader/lib/loader.js!./login.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","exports = module.exports = require(\"../../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"span.informational-note {\\n margin-left: 50px; }\\n\\nspan.input-group-addon {\\n min-width: 150px !important; }\\n\", \"\"]);\n\n// exports\n","\n var result = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/sass-loader/lib/loader.js!./tariff-trading-limit.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","exports = module.exports = require(\"../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".application-heading {\\n text-align: center; }\\n\\n.application-body {\\n max-width: 700px;\\n padding: 30px 38px 30px;\\n margin: 0 auto;\\n background-color: white; }\\n\\n.name-group {\\n width: 100%;\\n margin: 0; }\\n .name-group div {\\n display: table; }\\n .name-group div.first-name {\\n padding-left: 0; }\\n .name-group div.last-name {\\n padding-right: 0; }\\n\\nbutton {\\n min-width: 100px;\\n margin-top: 8px;\\n margin-left: 8px; }\\n\", \"\"]);\n\n// exports\n","exports = module.exports = require(\"../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\nexports.i(require(\"-!../../node_modules/css-loader/index.js!@swimlane/ngx-datatable/release/index.css\"), \"\");\nexports.i(require(\"-!../../node_modules/css-loader/index.js!@swimlane/ngx-datatable/release/themes/bootstrap.css\"), \"\");\nexports.i(require(\"-!../../node_modules/css-loader/index.js!@swimlane/ngx-datatable/release/assets/icons.css\"), \"\");\n\n// module\nexports.push([module.id, \".pt-0 {\\n padding-top: 0 !important; }\\n\\n.pb-0 {\\n padding-bottom: 0 !important; }\\n\\n.pl-0 {\\n padding-left: 0 !important; }\\n\\n.pr-0 {\\n padding-right: 0 !important; }\\n\\n.ph-0 {\\n padding-left: 0 !important;\\n padding-right: 0 !important; }\\n\\n.pv-0 {\\n padding-top: 0 !important;\\n padding-bottom: 0 !important; }\\n\\n.pt-10 {\\n padding-top: 10px !important; }\\n\\n.pt-60 {\\n padding-top: 60px !important; }\\n\\n.pb-10 {\\n padding-bottom: 10px !important; }\\n\\n.pl-10 {\\n padding-left: 10px !important; }\\n\\n.pr-10 {\\n padding-right: 10px !important; }\\n\\n.pv-10 {\\n padding-top: 10px !important;\\n padding-bottom: 10px !important; }\\n\\n.ph-10 {\\n padding-left: 10px !important;\\n padding-right: 10px !important; }\\n\\n.pt-15 {\\n padding-top: 15px !important; }\\n\\n.pb-15 {\\n padding-bottom: 15px !important; }\\n\\n.pl-15 {\\n padding-left: 15px !important; }\\n\\n.pr-15 {\\n padding-right: 15px !important; }\\n\\n.pv-15 {\\n padding-top: 15px !important;\\n padding-bottom: 15px !important; }\\n\\n.ph-15 {\\n padding-left: 15px !important;\\n padding-right: 15px !important; }\\n\\n.pr-60 {\\n padding-right: 60px !important; }\\n\\n.pr-18 {\\n padding-right: 18px !important; }\\n\\n.input-group-padding {\\n padding: 6px 12px 6px 12px !important; }\\n\\n@font-face {\\n font-family: Local_Helvetica;\\n src: url(\\\"/src/styles/fonts/Helvetica.otf\\\") format(\\\"truetype\\\");\\n font-weight: normal;\\n font-style: normal; }\\n\\nhtml {\\n height: 100%; }\\n\\nbody {\\n font-family: Local_Helvetica, Arial !important;\\n background-color: whitesmoke;\\n height: 100%;\\n overflow-y: auto; }\\n\\n.alert {\\n margin-bottom: 40px; }\\n\\n.app-container {\\n height: 100%; }\\n\\n.router-outlet-container {\\n margin-left: 7%;\\n margin-right: 7%;\\n padding-top: 80px;\\n padding-bottom: 20px;\\n min-height: 400px !important;\\n height: 100%; }\\n\\n.float-right {\\n float: right; }\\n\\n.text-bold {\\n font-weight: bold; }\\n\\n.white-text {\\n color: white; }\\n\\n.primary-theme div.bs-datepicker-head,\\n.primary-theme .bs-datepicker-body table td:not(.disabled) span.selected {\\n background-color: #EF483F; }\\n\\nbs-datepicker-container {\\n z-index: 2147483647; }\\n\\n.btn-primary {\\n background-color: #EF483F;\\n border-color: #EF483F; }\\n\\n.btn-primary:hover,\\n.btn-primary:focus,\\n.btn-primary:visited,\\n.btn-primary:active,\\n.btn-primary:active:focus {\\n background-color: #ed3227;\\n border-color: #ed3227;\\n outline: none; }\\n\\n.btn-outline-primary {\\n background-color: white;\\n border-color: #ed3227;\\n color: #ed3227; }\\n\\n.btn-outline-primary:hover,\\n.btn-outline-primary:focus,\\n.btn-outline-primary:visited,\\n.btn-outline-primary:active,\\n.btn-outline-primary:active:focus {\\n background-color: #ed3227;\\n border-color: #ed3227;\\n color: white; }\\n\\n.btn-default:active:focus,\\n.btn-default:active,\\n.btn-default:focus {\\n outline: none; }\\n\\n.datepicker-actions__button {\\n display: none; }\\n\\n.component-container {\\n position: relative;\\n padding: 30px;\\n background-color: white;\\n margin-bottom: 15px;\\n min-height: 120px;\\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 1px rgba(0, 0, 0, 0.15);\\n border-radius: 2px; }\\n\\n.borderless-component-container {\\n position: relative;\\n padding: 30px;\\n background-color: white;\\n margin-bottom: 15px;\\n min-height: 120px; }\\n\\n.no-padding {\\n padding: 0; }\\n\\n.btn-primary.disabled.focus,\\n.btn-primary.disabled:focus,\\n.btn-primary.disabled:hover,\\n.btn-primary[disabled].focus,\\n.btn-primary[disabled]:focus,\\n.btn-primary[disabled]:hover,\\nfieldset[disabled] .btn-primary.focus,\\nfieldset[disabled] .btn-primary:focus,\\nfieldset[disabled] .btn-primary:hover {\\n background-color: #f15e57;\\n border-color: #f15e57; }\\n\\n.input-group {\\n padding-top: 10px;\\n padding-bottom: 10px; }\\n\\n.input-group-100 {\\n width: 100%; }\\n\\n.datepicker-actions__input {\\n font-family: Local_Helvetica, Arial !important;\\n font-size: 14px !important;\\n font-weight: normal !important; }\\n\\n.datepicker-actions {\\n height: 34px; }\\n\\n.datepicker-actions__button {\\n line-height: 34px; }\\n\\n.empty-row {\\n margin-bottom: 5px;\\n text-align: center; }\\n\\nspan.input-group-addon.search-icon {\\n width: 50px !important;\\n max-width: 50px;\\n min-width: 50px; }\\n\\n@keyframes rotate {\\n from {\\n transform: rotate(0deg); }\\n to {\\n transform: rotate(360deg); } }\\n\\ntextarea.ng-touched.ng-invalid:not(form),\\naccordion-group.ng-touched.ng-invalid:not(form),\\ninput.ng-touched.ng-invalid:not(form),\\nselect.ng-touched.ng-invalid:not(form) {\\n border-color: #a94442;\\n box-shadow: 0 0 10px #a94442; }\\n\\n.selectable .datatable-row-wrapper:hover {\\n cursor: pointer;\\n background-color: #ccc; }\\n\\n#toast-container.toast-bottom-center > div,\\n#toast-container.toast-top-center > div {\\n width: 400px;\\n margin: 15px auto auto; }\\n\\n.loader-container {\\n position: inherit;\\n height: 100%; }\\n .loader-container .loader-icon {\\n position: absolute;\\n top: calc(50% - 30px);\\n left: calc(50% - 70px); }\\n\\n.button-actions button {\\n margin-left: 5px;\\n width: 100px; }\\n\\ntypeahead-container {\\n width: calc(100% - 100px); }\\n typeahead-container ul.dropdown-menu {\\n width: 60%; }\\n typeahead-container ul.dropdown-menu > .active > a {\\n background-color: #EF483F;\\n z-index: 999;\\n width: 100%; }\\n\\nss-multiselect-dropdown {\\n padding-right: 0; }\\n ss-multiselect-dropdown div.dropdown-menu {\\n width: unset;\\n padding: 5px 5px; }\\n ss-multiselect-dropdown div.dropdown-menu .input-group-prepend {\\n display: none; }\\n ss-multiselect-dropdown div.dropdown-menu a.dropdown-item,\\n ss-multiselect-dropdown div.dropdown-menu a.dropdown-item:hover,\\n ss-multiselect-dropdown div.dropdown-menu a.dropdown-item:visited,\\n ss-multiselect-dropdown div.dropdown-menu a.dropdown-item:focus,\\n ss-multiselect-dropdown div.dropdown-menu a.dropdown-item:active {\\n display: block;\\n width: 100%;\\n text-decoration: none;\\n color: black;\\n z-index: 999; }\\n ss-multiselect-dropdown div.dropdown-menu a.dropdown-item :hover {\\n background-color: silver;\\n text-decoration: none !important; }\\n\\nss-multiselect-dropdown > div,\\nss-multiselect-dropdown > div > button {\\n width: 100%;\\n max-height: 34px;\\n min-height: 34px; }\\n\\nss-multiselect-dropdown.ng-touched.ng-invalid:not(form) div button {\\n border-color: #a94442;\\n box-shadow: 0 0 10px #a94442;\\n border-radius: 0; }\\n\\n.error-message {\\n display: inline-block;\\n width: 100%;\\n padding-left: 8px;\\n background-color: #a94442;\\n color: white; }\\n\\n.column-wrap {\\n display: inline-block;\\n white-space: pre-wrap; }\\n\\n.wrapper {\\n margin-top: 80px;\\n margin-bottom: 20px; }\\n\\n.tooltip .tooltip-inner {\\n min-width: 100px;\\n background-color: #525254; }\\n\\n.tooltip-on-disabled:disabled {\\n pointer-events: none; }\\n\\n.input-group-addon.validation,\\n.validation {\\n min-width: 40px !important;\\n max-width: 40px !important;\\n min-height: 42px !important;\\n max-height: 42px !important;\\n color: white !important;\\n background-color: white !important;\\n border: 1px solid #cccccc !important;\\n padding: 0 !important; }\\n\\n.tooltip-on-disabled-container {\\n display: inline-block; }\\n\\n.checkbox.tooltip-on-disabled-container {\\n width: 15px;\\n height: 15px;\\n display: inline-block; }\\n\\n.label-wrap {\\n white-space: normal;\\n word-break: normal;\\n overflow-wrap: normal !important;\\n text-align: right !important; }\\n\\n.wrap-text {\\n white-space: normal;\\n word-break: normal;\\n overflow-wrap: normal !important; }\\n\\ndiv.page-count span {\\n display: none !important; }\\n\\n.btn {\\n min-width: 100px !important; }\\n\\nlegend {\\n margin-bottom: 40px; }\\n\\n.half-heading {\\n width: 50%;\\n display: inline-block; }\\n\\n.btn-link {\\n color: #000000;\\n pointer-events: none; }\\n\\n.accordion-top-button-row {\\n padding-top: 10px;\\n padding-bottom: 10px;\\n margin-right: 30px; }\\n\\n[id^=\\\"toggleValidationMessageList\\\"],\\n[id^=\\\"toggleValidationMessageList\\\"] ~ .list,\\n[id^=\\\"toggleValidationMessageList\\\"] + label span + span,\\n[id^=\\\"toggleValidationMessageList\\\"]:checked + label span {\\n /* HIDE \\\"Expand\\\" (IF CHECKED) */\\n display: none; }\\n\\n[id^=\\\"toggleValidationMessageList\\\"]:checked + label span + span {\\n display: inline-block;\\n /* SHOW \\\"Collapse\\\" (IF CHECKED) */ }\\n\\n[id^=\\\"toggleValidationMessageList\\\"]:checked ~ .list {\\n display: block;\\n /* SHOW LIST (IF CHECKED) */ }\\n\\n.label-addon {\\n min-width: unset !important;\\n text-align: left !important;\\n font-weight: normal !important;\\n color: grey !important; }\\n\\na,\\na:hover {\\n color: #b83731;\\n cursor: pointer; }\\n\\n.container-header {\\n margin-top: 0;\\n padding-bottom: 30px; }\\n\\n.list-view-container {\\n margin-top: -25px; }\\n\\n.stat-box {\\n min-height: 120px !important; }\\n\\n.stat-box:hover {\\n opacity: unset; }\\n\\n.info-card:hover {\\n box-shadow: unset; }\\n\\n.table-action-buttons {\\n min-width: 40px !important;\\n width: 40px !important; }\\n\\n.info-card {\\n color: white;\\n box-shadow: 2px 2px 5px rgba(0, 0, 0, 0.3), 3px 3px 5px darkgrey; }\\n .info-card .fa {\\n font-size: xx-large;\\n border: 2px solid;\\n padding: 10px;\\n border-radius: 3px; }\\n .info-card h5 {\\n margin-top: 5px;\\n margin-bottom: 0; }\\n .info-card h3 {\\n margin-bottom: 20px;\\n margin-right: 10px;\\n font-weight: bold;\\n text-shadow: 1px 1px 1px red; }\\n\\n.badge {\\n font-weight: 100;\\n display: unset;\\n border-radius: 3px; }\\n\\n.badge-green {\\n color: #5cb85c;\\n background-color: rgba(255, 255, 255, 0.99);\\n border: 1px solid; }\\n\\n.badge-blue {\\n color: #0037ff;\\n background-color: rgba(255, 255, 255, 0.99);\\n border: 1px solid; }\\n\\n.info-card.blue {\\n background-color: #64b5f6; }\\n\\n.info-card.purple {\\n background-color: #9575cd; }\\n\\n.info-card.brown {\\n background-color: #8d6e63; }\\n\\n.info-card.cyan {\\n background-color: #00acc1; }\\n\\n.info-card.red {\\n background-color: #e57373; }\\n\\n.evaluation {\\n background-color: #0aa8d8; }\\n\\n.info-card.offer,\\n.info-card.green {\\n background-color: #5cb85c; }\\n\\n.info-card.more-info,\\n.info-card.orange {\\n background-color: #ff8800; }\\n\\n.info-card.prospect,\\n.info-card.grey {\\n background-color: #333; }\\n\\n.info-card.declined,\\n.info-card.dark-red {\\n background-color: red; }\\n\\n.info-card.prospect-ppa,\\n.info-card.dark-blue {\\n background-color: #0037ff; }\\n\\n.info-card.activation,\\n.info-card.pink {\\n background-color: #da00b5; }\\n\\n.info-card.activated {\\n background-color: #2dcb16; }\\n\\nspan.informational-note {\\n padding-top: 10px;\\n padding-left: 0;\\n margin-left: 200px; }\\n span.informational-note i {\\n padding-right: 10px;\\n color: #EF483F; }\\n span.informational-note p {\\n margin: 0;\\n font-size: 12px;\\n display: inline; }\\n\\ndiv.input-group.informational-note {\\n padding-bottom: 0; }\\n\\n.ngx-datatable .datatable-header {\\n border-top: 2px solid #d1d4d7;\\n padding-top: 10px; }\\n\\n.ngx-datatable.bootstrap .datatable-body .datatable-body-row.active {\\n background-color: #ed3227; }\\n\\n.pager li > a {\\n background-color: unset !important;\\n border: unset !important; }\\n\\n.pager li.active {\\n background-color: #70707070;\\n border-radius: 5px; }\\n\\na.action-links:hover {\\n color: #EF483F;\\n font-weight: 600;\\n text-decoration: none;\\n cursor: pointer; }\\n\\ndiv.action-links {\\n margin-bottom: 10px;\\n margin-top: 10px; }\\n\\n.extra-margin {\\n margin-right: 10px; }\\n\\nspan.input-group-addon.input-addon {\\n width: 56px;\\n text-align: center !important; }\\n\\ndiv.align-text-right {\\n text-align: right !important; }\\n\\n.pagination > li > a,\\n.pagination > li > span {\\n color: #ed3227; }\\n\\n.pagination > .active > a,\\n.pagination > .active > a:focus,\\n.pagination > .active > a:hover,\\n.pagination > .active > span,\\n.pagination > .active > span:focus,\\n.pagination > .active > span:hover {\\n background-color: #ed3227;\\n border-color: #ed3227; }\\n\\ndiv.chart-height {\\n min-height: 400px; }\\n\", \"\"]);\n\n// exports\n","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\", \"\"]);\n\n// exports\n","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\", \"\"]);\n\n// exports\n","\n var result = require(\"!!../../../../../../../node_modules/css-loader/index.js!../../../../../../../node_modules/sass-loader/lib/loader.js!./allocation-finalization.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","module.exports = \"
    \\r\\n \\r\\n

    Projects

    \\r\\n
    \\r\\n
    \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{errorMessage}}\\r\\n \\r\\n
    \\r\\n \\r\\n
    \\r\\n \\r\\n \\r\\n \\r\\n Project Name\\r\\n \\r\\n \\r\\n {{value}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Generation Capacity\\r\\n \\r\\n \\r\\n {{value.value}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Technology\\r\\n \\r\\n \\r\\n {{value.value}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Distribution Area\\r\\n \\r\\n \\r\\n {{value.name}}\\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \"","module.exports = \"
    \\r\\n \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \"","module.exports = \"\\r\\n
    \\r\\n \\r\\n

    Power Per Tariff

    \\r\\n
    \\r\\n {{errorMessage}}\\r\\n \\r\\n
    \\r\\n \\r\\n \\r\\n
    \\r\\n
    \"","module.exports = \"
    \\r\\n \\r\\n

    Generator Activation Checklist

    \\r\\n
    \\r\\n\\r\\n \\r\\n {{errorMessage}}\\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Facility Name:\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    {{generatorProjectFacility.facilityName}}
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Project Name:\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    {{ generatorProjectFacility.projectName }}
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Company Name:\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    {{ generatorProjectFacility.companyName}}
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n

    \\r\\n Long Stop Date: {{generatorFacilityEvaluationField.longStopDate | date:'mediumDate'}}\\r\\n

    \\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n Extended Long Stop 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
    \\r\\n
    \\r\\n

    \\r\\n {{generatorActivationSubSection.controls.generatorActivationChecklistItemLookupDescription.value}}\\r\\n

    \\r\\n
    \\r\\n
    \\r\\n

    \\r\\n updated by {{generatorActivationSubSection.controls.updatedBy.value}} on\\r\\n {{generatorActivationSubSection.controls.updatedDateTime.value}}\\r\\n

    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Identifier\\r\\n \\r\\n \\r\\n
    \\r\\n \\r\\n \\r\\n

    Changing the Identifier will affect interaction with metering provider

    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Distributor Power Will Be Sold To\\r\\n \\r\\n
    {{model.name}}
    \\r\\n
    \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Is RECs Registered\\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \"","exports = module.exports = require(\"../../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".fa {\\n font-size: xx-large;\\n border: 2px solid;\\n padding: 10px;\\n border-radius: 3px;\\n color: green; }\\n\\nh5 {\\n margin-top: 0; }\\n\", \"\"]);\n\n// exports\n","\n var result = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/sass-loader/lib/loader.js!./allocation-run-detail.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","module.exports = \"
    \\r\\n

    Error 404

    \\r\\n

    Page not found!

    \\r\\n
    \\r\\n\"","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".invoice-create-form {\\n margin-top: 40px !important; }\\n\\nul.dropdown-menu {\\n width: 102% !important; }\\n\\n.mr-2 {\\n margin-right: 1em; }\\n\\n.custom-modal {\\n width: 70vw !important; }\\n\\n.paid-box {\\n padding: 0px; }\\n\\n.checkbox input {\\n margin: 0;\\n padding: 0;\\n height: 23px;\\n width: 23px; }\\n\", \"\"]);\n\n// exports\n","module.exports = \"\\r\\n\\r\\n
    \\r\\n

    Premises Details

    \\r\\n \\r\\n \\r\\n \\r\\n {{errorMessage}}\\r\\n \\r\\n
    \\r\\n \\r\\n
    \\r\\n

    Basic Information

    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Premises Name\\r\\n Aa\\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Identifier\\r\\n Aa\\r\\n \\r\\n \\r\\n
    \\r\\n \\r\\n

    Changing the Identifier will affect interaction with metering provider

    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Premises Status\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Minimum Contracted Capacity\\r\\n kWh\\r\\n \\r\\n \\r\\n
    \\r\\n \\r\\n

    Changing the Minimum Contracted Capacity will require an Addendum to be uploaded

    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Monthly kWh\\r\\n kWh\\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Monthly kWh\\r\\n kWh\\r\\n \\r\\n
    \\r\\n \\r\\n

    Based on consumption in {{consumerCompanyPremises.latestAllocationRunInvolvedInDate | date: 'MMMM yyyy'}} allocation run

    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n VAT Number\\r\\n #\\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n SAP Number\\r\\n Aa\\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Reference Number\\r\\n Aa\\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Smart Meter Installed\\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Route Number\\r\\n Aa\\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Account Number\\r\\n Aa\\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Premises Type\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Distributor\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Tariff Code\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Premises Detail 1\\r\\n Aa\\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Premises Detail 2\\r\\n Aa\\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

    Premises Address

    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Address Line 1\\r\\n Aa\\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Address Line 2\\r\\n Aa\\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Address Line 3\\r\\n Aa\\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Province\\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n City\\r\\n Aa\\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Postal Code\\r\\n #\\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Is Rural Address\\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n

    Operational Settings

    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Exclude From Allocation Run\\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Reason For Excluding From Run\\r\\n Aa\\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Exclude From Forecast Run\\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Forecast Consumption kWh\\r\\n kWh\\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Forecast Profile Consumer\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n PO Number\\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
    \"","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"span.input-group-addon {\\n min-width: 90px; }\\n\\n.input-group {\\n padding-right: 0;\\n padding-left: 0; }\\n\\n.no-left-padding {\\n padding-left: 0 !important; }\\n\\nspan.input-group-addon.input-addon {\\n width: 56px;\\n text-align: center !important; }\\n\\n.extra-margin {\\n margin: 10px; }\\n\\n.note-details {\\n margin-top: 20px;\\n margin-bottom: 20px; }\\n\", \"\"]);\n\n// exports\n","exports = module.exports = require(\"../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".actions {\\n padding-top: 8px; }\\n\\n.table-input {\\n width: 80% !important; }\\n\\ninput.exclude-checkbox {\\n margin-top: 10px !important; }\\n\\n.form-control {\\n border-radius: 5px !important; }\\n\", \"\"]);\n\n// exports\n","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".pointable {\\n cursor: pointer; }\\n\\na {\\n text-decoration: none; }\\n\\nh6 {\\n margin-top: 2px;\\n margin-bottom: 2px; }\\n\\nhr {\\n margin: 3px; }\\n\\n.stats-number {\\n font-size: 26px;\\n font-weight: 700;\\n line-height: 1;\\n padding: 10px 15px 16px; }\\n\\n.stats-description {\\n text-transform: uppercase;\\n margin-bottom: 5px; }\\n\\n.stats-text {\\n color: grey; }\\n\\n.text-faded {\\n color: rgba(94, 12, 12, 0.747); }\\n\\n.badge {\\n font-weight: 100;\\n display: unset;\\n border-radius: 3px; }\\n\\n.evaluation {\\n color: #0aa8d8;\\n background-color: rgba(255, 255, 255, 0.99);\\n border: 1px solid; }\\n\\n.offer {\\n color: #5cb85c;\\n background-color: rgba(255, 255, 255, 0.99);\\n border: 1px solid; }\\n\\n.more-info {\\n color: #ff8800;\\n background-color: rgba(255, 255, 255, 0.99);\\n border: 1px solid; }\\n\\n.prospect {\\n color: #333;\\n background-color: rgba(255, 255, 255, 0.99);\\n border: 1px solid; }\\n\\n.declined {\\n background-color: rgba(255, 255, 255, 0.99);\\n color: red;\\n border: 1px solid; }\\n\\n.prospect-ppa {\\n background-color: rgba(255, 255, 255, 0.99);\\n color: #0037ff;\\n border: 1px solid; }\\n\\n.activation {\\n background-color: rgba(255, 255, 255, 0.99);\\n color: #3136ff;\\n border: 1px solid; }\\n\\n.activated {\\n background-color: rgba(255, 255, 255, 0.99);\\n color: #2dcb16;\\n border: 1px solid; }\\n\\n.dueDateWarning {\\n background-color: #FFDDDD; }\\n\\n.act-btn,\\n.act-btn h5 {\\n display: inline-block;\\n margin-left: 10px; }\\n\", \"\"]);\n\n// exports\n","module.exports = \"
    \\r\\n \\r\\n

    Manual Processing

    \\r\\n
    \\r\\n\\r\\n
    \\r\\n \\r\\n {{errorMessage}}\\r\\n \\r\\n \\r\\n
    \\r\\n \\r\\n\\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n \\r\\n
    {{model.name}}
    \\r\\n
    \\r\\n
    \\r\\n Aa\\r\\n \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n Yr\\r\\n \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n \\r\\n \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n \\r\\n \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n\\r\\n\\r\\n\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n {{historyError}}\\r\\n \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n \\r\\n\\r\\n \\r\\n\\r\\n \\r\\n \\r\\n Batch #\\r\\n \\r\\n \\r\\n BCH{{value}}\\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n {{column.name}}\\r\\n \\r\\n \\r\\n {{value}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Period\\r\\n \\r\\n \\r\\n {{value | date:'yyyy MMM'}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Date\\r\\n \\r\\n \\r\\n {{value | date:'yyyy-MM-dd HH:mm'}}\\r\\n \\r\\n \\r\\n\\r\\n\\r\\n \\r\\n \\r\\n Invoice Type\\r\\n \\r\\n \\r\\n {{ value }} \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Note\\r\\n \\r\\n \\r\\n
    \\r\\n View Note \\r\\n No Note \\r\\n
    \\r\\n
    \\r\\n\\r\\n \\r\\n \\r\\n Post Status\\r\\n \\r\\n \\r\\n Draft\\r\\n Posted\\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n Status\\r\\n \\r\\n \\r\\n {{ value }} \\r\\n \\r\\n \\r\\n\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n \\r\\n
    \\r\\n
    \\r\\n \\r\\n

    Note

    \\r\\n
    \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \"","\n var result = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/sass-loader/lib/loader.js!./invoice-batch-invoice-list.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"span.input-group-addon {\\n min-width: 100px; }\\n\", \"\"]);\n\n// exports\n","module.exports = \"
    \\r\\n
    \\r\\n \\r\\n

    Edit Generator Project

    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Company Name:
    Project Name:\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n {{companyName}}
    {{projectName}}\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n
    \"","\n var result = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/sass-loader/lib/loader.js!./generator-ppa-renewal-notifications.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","\n var result = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/sass-loader/lib/loader.js!./prospect-ppa.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","exports = module.exports = require(\"../../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".centered-80 {\\n width: 80%;\\n min-width: 80%;\\n margin-left: 10%; }\\n\", \"\"]);\n\n// exports\n","exports = module.exports = require(\"../../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"span.badge {\\n min-width: 112px; }\\n\\n.info-card {\\n min-height: 140px; }\\n\\n.info-card-total-row {\\n font-weight: bold; }\\n\\n.info-card-heading {\\n margin-top: -2px;\\n margin-bottom: 4px;\\n font-size: 1.15em; }\\n\", \"\"]);\n\n// exports\n","\n var result = require(\"!!../../../../node_modules/css-loader/index.js!../../../../node_modules/sass-loader/lib/loader.js!./validation-messages.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".container-header {\\n padding-bottom: 0 !important; }\\n\", \"\"]);\n\n// exports\n","\n var result = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/sass-loader/lib/loader.js!./prospect-evaluation.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","module.exports = \"
    \\r\\n
    \\r\\n

    {{description}}

    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n January\\r\\n kWh\\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n February\\r\\n kWh\\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n March\\r\\n kWh\\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n April\\r\\n kWh\\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n May\\r\\n kWh\\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n June\\r\\n kWh\\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n July\\r\\n kWh\\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n August\\r\\n kWh\\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n September\\r\\n kWh\\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n October\\r\\n kWh\\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n November\\r\\n kWh\\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n December\\r\\n kWh\\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Total Generation:{{totalGeneration}}\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \"","\n var result = require(\"!!../../../../node_modules/css-loader/index.js!../../../../node_modules/sass-loader/lib/loader.js!./summary-card.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"span.input-group-addon {\\n min-width: 100px; }\\n\\nspan.informational-note {\\n margin-left: 100px; }\\n\\n.overriden-checkbox {\\n width: 29px !important; }\\n\\n/deep/ .datatable-body-row.active {\\n background-color: #ed3227 !important;\\n color: white; }\\n\", \"\"]);\n\n// exports\n","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\", \"\"]);\n\n// exports\n","module.exports = \"\\r\\n\\r\\n
    \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n \\r\\n \\r\\n
    \"","exports = module.exports = require(\"../../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\", \"\"]);\n\n// exports\n","\n var result = require(\"!!../../../../../../../node_modules/css-loader/index.js!../../../../../../../node_modules/sass-loader/lib/loader.js!./generator-increase-notification-details.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","module.exports = \"
    \\r\\n
    \\r\\n \\r\\n

    Bulk Meters

    \\r\\n
    \\r\\n \\r\\n {{errorMessage}}\\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n \\r\\n \\r\\n \\r\\n Meter Name\\r\\n \\r\\n \\r\\n {{ value }}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Route Number\\r\\n \\r\\n \\r\\n {{ value }}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Tariff\\r\\n \\r\\n \\r\\n {{ value }}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Main Meter\\r\\n \\r\\n \\r\\n {{ value }}\\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n \\r\\n
    \\r\\n

    Add Bulk Meter


    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Meter Name\\r\\n Aa\\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Route Number\\r\\n #\\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Tariff\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Is Main Bulk Meter\\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
    \"","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\", \"\"]);\n\n// exports\n","module.exports = \"\\r\\n
    \\r\\n \\r\\n

    Export

    \\r\\n
    \\r\\n
    \\r\\n \\r\\n \\r\\n

    \\r\\n \\r\\n \\r\\n

    \\r\\n \\r\\n \\r\\n
    \\r\\n
    \"","module.exports = \"
    \\r\\n \\r\\n

    Prepaid Vendor Details

    \\r\\n
    \\r\\n \\r\\n {{errorMessage}}\\r\\n\\r\\n
    \\r\\n
    \\r\\n

    Vendor

    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Name\\r\\n Aa\\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Service Fee\\r\\n %\\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n

    Tariff

    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Name\\r\\n Aa\\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Identifier\\r\\n Aa\\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

    Tariff Blocks

    \\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

    Prepaid Removal Percentages

    \\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

    Add Tariff Block


    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Name\\r\\n Aa\\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Start kWh\\r\\n kWh\\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n End kWh\\r\\n kWh\\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n

    Consumption

    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \"","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"dropdown > .input-group > span.input-group-addon {\\n max-width: 50px !important;\\n padding-right: 20px !important; }\\n\", \"\"]);\n\n// exports\n","\n var result = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/sass-loader/lib/loader.js!./spv-details.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","\n var result = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/sass-loader/lib/loader.js!./archived-consumer-companies-list.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","\n var result = require(\"!!../../../../../../../node_modules/css-loader/index.js!../../../../../../../node_modules/sass-loader/lib/loader.js!./allocation-revenue-per-tariff.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","module.exports = \"
    \\r\\n
    \\r\\n \\r\\n

    Consumer Sales Report

    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n {{errorMessage}}\\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\"","\n var result = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/sass-loader/lib/loader.js!./weps-less-loses.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","module.exports = \"
    \\r\\n \\r\\n

    Power Distribution Nominations

    \\r\\n
    for {{facilityName}} of {{projectName}}
    \\r\\n
    \\r\\n \\r\\n {{errorMessage}}\\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n

    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n \\r\\n \\r\\n Distributor\\r\\n \\r\\n \\r\\n {{ value }}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Percentage Nominated\\r\\n \\r\\n \\r\\n {{ value | number: '1.2-2' }} %\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Delete\\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

    Add/Update Distributor Nomination


    \\r\\n
    \\r\\n \\r\\n {{errorMessage}}\\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Distributor\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Percentage\\r\\n %\\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \"","module.exports = \"\\r\\n

    Allocation

    \\r\\n
    \\r\\n\\r\\n
    \\r\\n \\r\\n {{errorMessage}}\\r\\n \\r\\n \\r\\n
    \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n \\r\\n
    {{model.name}}
    \\r\\n
    \\r\\n
    \\r\\n Aa\\r\\n \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n Yr\\r\\n \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n \\r\\n \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n \\r\\n \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n Import Data\\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Has Prepaid\\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Demo\\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n\\r\\n\\r\\n
    \\r\\n \\r\\n

    Prepaid

    \\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 Prepaid Power\\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n {{historyError}}\\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 {{column.name}}\\r\\n \\r\\n \\r\\n {{value}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Period\\r\\n \\r\\n \\r\\n {{value | date:'yyyy MMM'}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Created By\\r\\n \\r\\n \\r\\n {{value}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Date of Run\\r\\n \\r\\n \\r\\n {{value | date:'yyyy-MM-dd HH:mm'}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Power Generated (Including Prepaid)\\r\\n \\r\\n \\r\\n {{value | number : '1.2-2' | commadumper }} {{value !== '' ? 'kWh' : ''}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Power Consumed\\r\\n \\r\\n \\r\\n {{value | number : '1.2-2' | commadumper }} {{value !== '' ? 'kWh' : ''}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Power Allocated (Including Prepaid)\\r\\n \\r\\n \\r\\n {{value | number : '1.2-2' | commadumper }} {{value !== '' ? 'kWh' : ''}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Revenue (Including Prepaid)\\r\\n \\r\\n \\r\\n {{value !== '' ? 'R' : ''}}{{value | number : '1.2-2' | commadumper }}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Delete\\r\\n \\r\\n \\r\\n
    \\r\\n \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n \\r\\n \\r\\n Run Type\\r\\n \\r\\n \\r\\n {{ value }} \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Note\\r\\n \\r\\n \\r\\n
    \\r\\n View Note \\r\\n No Note \\r\\n
    \\r\\n
    \\r\\n \\r\\n \\r\\n Import / Run / Sent / RECs Statuses\\r\\n \\r\\n \\r\\n {{row.importStatus === undefined ? 'N/A' : row.importStatus}} / {{row.runStatus}} / {{row.sentStatus}} / {{row.recsStatus}}\\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n\\r\\n
    \\r\\n
    \\r\\n \\r\\n

    Note

    \\r\\n
    \\r\\n \\r\\n \\r\\n
    \\r\\n
    \"","\n var result = require(\"!!../../../../../../../node_modules/css-loader/index.js!../../../../../../../node_modules/sass-loader/lib/loader.js!./allocation-error.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","module.exports = \"
    \\r\\n \\r\\n {{errorMessage}}\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n Expiry Date: {{ expiryDate | date: 'dd MMMM yyyy' }}\\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 {{column.name}}\\r\\n \\r\\n \\r\\n {{value}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{column.name}}\\r\\n \\r\\n \\r\\n {{value}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{column.name}}\\r\\n \\r\\n \\r\\n {{value}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{column.name}}\\r\\n \\r\\n \\r\\n {{value}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Download\\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

    New Addendum

    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Addendum Document\\r\\n \\r\\n
    \\r\\n
    \\r\\n Comment\\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

    Renew PPA

    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Start Date\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n\\r\\n
    \\r\\n Term in Years\\r\\n #\\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n PPA Document\\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\"","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"legend {\\n margin-bottom: unset !important; }\\n\", \"\"]);\n\n// exports\n","exports = module.exports = require(\"../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".container-header {\\n padding-bottom: 0 !important; }\\n\", \"\"]);\n\n// exports\n","\n var result = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/sass-loader/lib/loader.js!./create-distributor.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","exports = module.exports = require(\"../../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\", \"\"]);\n\n// exports\n","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"span.input-group-addon {\\n min-width: 100px; }\\n\", \"\"]);\n\n// exports\n","module.exports = \"
    \\r\\n
    \\r\\n \\r\\n

    Distributor Power Trading Limits

    \\r\\n
    \\r\\n \\r\\n {{errorMessage}}\\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n \\r\\n \\r\\n \\r\\n Percentage Of Trade Allowed\\r\\n \\r\\n \\r\\n {{value | number: '1.2-2'}} %\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Percentage Of Power Imports Allowed\\r\\n \\r\\n \\r\\n {{value | number: '1.2-2'}} %\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Effective Date\\r\\n \\r\\n \\r\\n {{ value | date: 'yyyy/MM/dd' }}\\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n\\r\\n \\r\\n
    \\r\\n

    Distributor Power Trading Limits

    \\r\\n
    \\r\\n
    \\r\\n {{errorMessage}}\\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Percentage Of Trade Allowed\\r\\n %\\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Percentage Of Power Imports Allowed\\r\\n %\\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Effective 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
    \"","\n var result = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/sass-loader/lib/loader.js!./create-user.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"span.input-group-addon {\\n min-width: 100px; }\\n\", \"\"]);\n\n// exports\n","module.exports = \"
    \\r\\n \\r\\n

    Generator Evaluation

    \\r\\n
    \\r\\n \\r\\n \\r\\n {{errorMessage}}\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n

    No items to display

    \\r\\n
    \\r\\n\\r\\n
    \\r\\n
    = pageStartIndex && facilityIndex <= pageEndIndex\\\" class=\\\"list-group col-sm-12 col-md-6\\\">\\r\\n\\r\\n
    \\r\\n

    {{listItem.facilityName}}\\r\\n \\r\\n \\r\\n First Capture : {{listItem.facilityCreatedDate | date}}\\r\\n \\r\\n

    \\r\\n\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Company Name: {{ listItem.companyName }}
    \\r\\n
    \\r\\n Generation Capacity: {{ listItem.generationCapacity }}
    \\r\\n
    \\r\\n Project Type: {{ listItem.projectType }}
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n Total Generation: {{ listItem.installedCapacity }} MW
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n \\r\\n Days Left: {{ listItem.daysLeftBeforeOverdue }}\\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n\\r\\n \\r\\n
    \\r\\n
    \\r\\n {{ listItem.facilityApplicationStatus }}\\r\\n
    \\r\\n
    \\r\\n {{ listItem.facilityApplicationStatus }}\\r\\n
    \\r\\n
    \\r\\n {{ listItem.facilityApplicationStatus }}\\r\\n
    \\r\\n
    \\r\\n {{ listItem.facilityApplicationStatus }}\\r\\n
    \\r\\n
    \\r\\n {{ listItem.facilityApplicationStatus }}\\r\\n
    \\r\\n
    \\r\\n {{ listItem.facilityApplicationStatus }}\\r\\n
    \\r\\n
    \\r\\n {{listItem.facilityApplicationStatus }}\\r\\n
    \\r\\n
    \\r\\n {{ listItem.facilityApplicationStatus }}\\r\\n
    \\r\\n
    \\r\\n {{ listItem.facilityApplicationStatus }}\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    pageSize\\\">\\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \"","\n var result = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/sass-loader/lib/loader.js!./edit-consumer-company-premises.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","exports = module.exports = require(\"../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".pointable {\\n cursor: pointer;\\n height: 100%; }\\n\\ndiv.pointable:hover {\\n background-color: whitesmoke;\\n cursor: pointer; }\\n\\na {\\n text-decoration: none; }\\n\\nh6 {\\n margin-top: 2px;\\n margin-bottom: 2px; }\\n\\nhr {\\n margin: 3px; }\\n\\n.stats-number {\\n font-size: 16px;\\n font-weight: 700;\\n line-height: 1;\\n padding: 19px 15px 16px; }\\n\\n.stats-description {\\n text-transform: uppercase;\\n margin-bottom: 5px; }\\n\\n.padding-tb {\\n padding-bottom: 1px;\\n padding-top: 1px; }\\n\\n.badge {\\n font-weight: 100;\\n display: unset;\\n border-radius: 3px; }\\n\\n.badge.more-info {\\n color: #ff8800;\\n background-color: rgba(255, 255, 255, 0.99);\\n border: 1px solid #333; }\\n\\n.badge.declined {\\n background-color: rgba(255, 255, 255, 0.99);\\n color: red;\\n border: 1px solid #333; }\\n\\n.badge.prospect {\\n color: #333;\\n background-color: rgba(255, 255, 255, 0.99);\\n border: 1px solid; }\\n\\n.required-info {\\n color: #ff8800 !important; }\\n\\n.text-center {\\n text-align: center !important; }\\n\", \"\"]);\n\n// exports\n","\n var result = require(\"!!../../../../node_modules/css-loader/index.js!../../../../node_modules/sass-loader/lib/loader.js!./403.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","module.exports = \"
    \\r\\n \\r\\n {{errorMessage}}\\r\\n
    \\r\\n

    Frequently asked Questions

    \\r\\n \\r\\n \\r\\n

    A: {{questionItem.answer}}

    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \"","\n var result = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/sass-loader/lib/loader.js!./power-import-limit.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","\n var result = require(\"!!../../../../node_modules/css-loader/index.js!../../../../node_modules/sass-loader/lib/loader.js!./demo-settings.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"span.input-group-addon {\\n min-width: 100px; }\\n\\n.checkbox label {\\n padding-left: 120px; }\\n\", \"\"]);\n\n// exports\n","\n var result = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/sass-loader/lib/loader.js!./consumer-application.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","\n var result = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/sass-loader/lib/loader.js!./weps-less-lesses-period-daily-rate.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","\n var result = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/sass-loader/lib/loader.js!./prepaid-vendor-details.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","\n var result = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/sass-loader/lib/loader.js!./bulk-meter-details.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","\n var result = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/sass-loader/lib/loader.js!./forecast-run.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","\n var result = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/sass-loader/lib/loader.js!./providers-detail.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","module.exports = \"\\r\\n\\r\\n
    \\r\\n

    Tariffs

    \\r\\n \\r\\n \\r\\n \\r\\n {{errorMessage}}\\r\\n \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n Tariff Name\\r\\n \\r\\n \\r\\n {{value}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Tariff Type\\r\\n \\r\\n \\r\\n {{value}}\\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n Peak Discount\\r\\n \\r\\n \\r\\n {{value}}\\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n Off Peak Discount\\r\\n \\r\\n \\r\\n {{value}}\\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n Standard Discount\\r\\n \\r\\n \\r\\n {{value}}\\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n Effective Date\\r\\n \\r\\n \\r\\n {{value | date: 'yyyy/MM/dd'}}\\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n Is Overriding\\r\\n \\r\\n \\r\\n {{value}}\\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n\\r\\n
    \\r\\n

    Tariff Details


    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Tariff\\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Peak Discount\\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n OffPeak Discount\\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Standard Discount\\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Effective Date\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n
    \\r\\n \\r\\n

    The effective date can only be on the 1st day of a month

    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Is Overriding\\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
    \"","module.exports = \"
    \\r\\n \\r\\n

    Integrator Providers

    \\r\\n
    \\r\\n \\r\\n {{errorMessage}}\\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 {{column.name}}\\r\\n \\r\\n \\r\\n {{value}}\\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n\\r\\n
    \\r\\n

    New Integrator Provider

    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Provider Name\\r\\n \\r\\n \\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \"","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\", \"\"]);\n\n// exports\n","\n var result = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/sass-loader/lib/loader.js!./generator-notifications-card.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","module.exports = \"\\r\\n\\r\\n\\r\\n
    \\r\\n \\r\\n

    Archived Consumer Companies

    \\r\\n
    \\r\\n
    \\r\\n \\r\\n \\r\\n {{errorMessage}}\\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n

    \\r\\n
    \\r\\n
    \\r\\n \\r\\n \\r\\n \\r\\n Name\\r\\n \\r\\n \\r\\n {{value}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Registration Number\\r\\n \\r\\n \\r\\n {{value}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Type\\r\\n \\r\\n \\r\\n {{value}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Standing\\r\\n \\r\\n \\r\\n {{value}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Sales Rep\\r\\n \\r\\n \\r\\n {{value}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Agreement Term\\r\\n \\r\\n \\r\\n {{value}} years\\r\\n \\r\\n Distributors\\r\\n \\r\\n \\r\\n \\r\\n Avg Allocation\\r\\n \\r\\n \\r\\n {{value | number}} kWh\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Avg Consumption\\r\\n \\r\\n \\r\\n {{value | number}} kWh\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Options\\r\\n \\r\\n \\r\\n\\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \"","\n var result = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/sass-loader/lib/loader.js!./prospect-details.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\", \"\"]);\n\n// exports\n","\n var result = require(\"!!../../../../../../../node_modules/css-loader/index.js!../../../../../../../node_modules/sass-loader/lib/loader.js!./generator-application-project-facility-edit.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","\n var result = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/sass-loader/lib/loader.js!./meter-installation-charges.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","module.exports = \"
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \"","\n var result = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/sass-loader/lib/loader.js!./navigation-bar-item.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","module.exports = \"
    \\r\\n
    \\r\\n \\r\\n

    Weps Less Losses

    \\r\\n
    \\r\\n \\r\\n {{errorMessage}}\\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n \\r\\n \\r\\n \\r\\n Period\\r\\n \\r\\n \\r\\n {{value}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Season\\r\\n \\r\\n \\r\\n {{value}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Peak Tariff\\r\\n \\r\\n \\r\\n R {{ value | number: '1.5-5' }}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Off Peak Tariff\\r\\n \\r\\n \\r\\n R {{ value | number: '1.5-5' }}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Standard Tariff\\r\\n \\r\\n \\r\\n R {{ value | number: '1.5-5' }}\\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n\\r\\n \\r\\n
    \\r\\n

    Weps Less Losses

    \\r\\n
    \\r\\n
    \\r\\n {{errorMessage}}\\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Period\\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Season\\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Peak Tariff\\r\\n #\\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Off Peak Tariff\\r\\n #\\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Standard Tariff\\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 Season\\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Peak Tariff\\r\\n #\\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Off Peak Tariff\\r\\n #\\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Standard Tariff\\r\\n #\\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n\\r\\n \\r\\n
    \\r\\n

    Weps Less Losses

    \\r\\n
    \\r\\n
    \\r\\n {{errorMessage}}\\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Period\\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Season\\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Peak Tariff\\r\\n #\\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Off Peak Tariff\\r\\n #\\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Standard Tariff\\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
    \"","\n var result = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/sass-loader/lib/loader.js!./generation-per-technology-to-date.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","module.exports = \"
    \\r\\n \\r\\n

    Generator PPA Renewal Notifications

    \\r\\n
    \\r\\n \\r\\n \\r\\n {{errorMessage}}\\r\\n \\r\\n
    \\r\\n

    None

    \\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 Back\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\"","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\", \"\"]);\n\n// exports\n","module.exports = \"\\r\\n
    \\r\\n \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Address Line 1\\r\\n Aa\\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n Address Line 2\\r\\n Aa\\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n Address Line 3\\r\\n Aa\\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Province\\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n City\\r\\n Aa\\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Postal Code\\r\\n #\\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \"","\n var result = require(\"!!../../node_modules/css-loader/index.js!../../node_modules/sass-loader/lib/loader.js!./app.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","module.exports = \"
    \\r\\n \\r\\n

    Forecast Report: Consumer and Revenue

    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n {{errorMessage}}\\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 Run Date\\r\\n \\r\\n \\r\\n {{value | date: 'yyyy/MM/dd HH:mm:ss'}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n From Date\\r\\n \\r\\n \\r\\n {{value | date: 'yyyy/MM/dd'}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Number Of New Consumers: Post-Paid & Non-ToU\\r\\n \\r\\n \\r\\n {{row.averageNumberOfNewPostPaidConsumers === null ||\\r\\n row.averageNumberOfNewPostPaidConsumers === '' ? 'Pending' :\\r\\n row.averageNumberOfNewPostPaidConsumers + ' & ' + row.averageNumberOfNewNonTouConsumers}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Status\\r\\n \\r\\n \\r\\n {{value}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Progress\\r\\n \\r\\n \\r\\n {{value === null || value === '' || !row.monthsToForecastFor ? 'Pending' : value + '/' + row.monthsToForecastFor}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Delete\\r\\n \\r\\n \\r\\n
    \\r\\n \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n \\r\\n \\r\\n Re-Run\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Consumer Report Warnings\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Revenue Report Warnings\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Consumer Report\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Consumer Report by Tariff\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Revenue Report\\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

    Report Parameters

    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Year\\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Month\\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Months to Forecast\\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Post-Paid Consumers\\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Non-Tou Consumers\\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \"","\n var result = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/sass-loader/lib/loader.js!./allocation-summary-generator.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","module.exports = \"\\r\\n

    Forecasting

    \\r\\n
    \\r\\n\\r\\n

    Allocation Forecast Runs

    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n {{pageError}}\\r\\n \\r\\n
    \\r\\n
    \\r\\n \\r\\n \\r\\n \\r\\n {{column.name}}\\r\\n \\r\\n \\r\\n {{value}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Period\\r\\n \\r\\n \\r\\n {{value | date:'yyyy MMM'}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Date of Run\\r\\n \\r\\n \\r\\n {{value | date:'yyyy-MM-dd HH:mm'}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Power Generated (Including Prepaid)\\r\\n \\r\\n \\r\\n {{value | number : '1.2-2' | commadumper }} {{value !== '' ? 'kWh' : ''}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Power Consumed\\r\\n \\r\\n \\r\\n {{value | number : '1.2-2' | commadumper }} {{value !== '' ? 'kWh' : ''}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Power Allocated (Including Prepaid)\\r\\n \\r\\n \\r\\n {{value | number : '1.2-2' | commadumper }} {{value !== '' ? 'kWh' : ''}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Revenue (Including Prepaid)\\r\\n \\r\\n \\r\\n {{value !== '' ? 'R' : ''}}{{value | number : '1.2-2' | commadumper }}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Run Status\\r\\n \\r\\n \\r\\n {{value}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Progress\\r\\n \\r\\n \\r\\n {{value}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Allocation Report\\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Forecast Report\\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n
    \"","\n var result = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/sass-loader/lib/loader.js!./invoice-batch-details.component.scss\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"legend {\\n margin-bottom: unset !important; }\\n\", \"\"]);\n\n// exports\n","exports = module.exports = require(\"../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\", \"\"]);\n\n// exports\n","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"/* Custom CSS */\\n#stickyButton {\\n position: fixed;\\n top: 8px;\\n /* Adjust as needed */\\n z-index: 5000;\\n /* Ensure it's above other content */\\n right: 200px; }\\n\", \"\"]);\n\n// exports\n","module.exports = \"
    \\r\\n \\r\\n {{errorMessage}}\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Project Name\\r\\n Aa\\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n Generation Capacity\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n Technology Type\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n Co Generation\\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \"","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;\nmodule.exports = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = \"zn8P\";","module.exports = \"\\r\\n
    \\r\\n \\r\\n
    \\r\\n \\r\\n

    Revenue Forecast Warnings

    \\r\\n
    for {{startDate | date: 'MMMM yyyy' }}, run on {{ runDate | date: 'dd MMMM yyyy hh:mm'}}
    \\r\\n
    \\r\\n {{errorMessage}}\\r\\n

    \\r\\n None\\r\\n

    \\r\\n \\r\\n \\r\\n
    \\r\\n

    {{warning}}

    \\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\""],"sourceRoot":"webpack:///"}