{"version":3,"sources":["./src/app/shared/ag-grid-helpers/models/grid-column-meter.ts","./src/app/shared/ag-grid-helpers/models/grid-column-boolean.ts","./src/app/data/freight-forwarder-address/freight-forwarder-address.service.ts","./src/app/shared/ag-grid-helpers/renderers/grid-cell-meter/grid-cell-meter.ts","./src/app/shared/ag-grid-helpers/renderers/grid-cell-meter/grid-cell-meter.html","./src/app/shared/orders/order-grid-components/hold-filter/hold-filter.component.ts","./src/app/shared/orders/order-grid-components/hold-filter/hold-filter.component.html","./src/app/data/enums/license-type.enum.ts","./src/app/data/customer-search/customer-search.service.ts","./src/app/data/dispatch/dispatch-common.ts","./src/app/shared/ag-grid-helpers/models/grid-column-custom.model.ts","./src/app/shared/customer/customer-search/customer-search.component.ts","./src/app/shared/customer/customer-search/customer-search.component.html","./src/app/shared/customer/customer-search/customer-search.component.scss","./src/app/shared/ag-grid-helpers/models/grid-column-icon.model.ts","./src/app/data/purchaser/purchaser-common.ts","./src/app/shared/ag-grid-helpers/models/grid-column-part-number.ts","./src/app/data/orders/order-notification-request.service.ts","./src/app/shared/ag-grid-helpers/models/grid-column-contact.ts","./src/app/shared/ag-grid-helpers/filters/grid-checklist-filter/checklist-filter.component.ts","./src/app/shared/ag-grid-helpers/filters/grid-checklist-filter/checklist-filter.component.html","./src/app/shared/documents/document-common.ts","./src/app/data/purchaser-authorization/purchaser-authorization.service.ts","./src/app/shared/resources/release-notes/release-notes.component.ts","./src/app/shared/resources/release-notes/release-notes.component.html","./src/app/shared/resources/release-notes/release-notes.component.scss","./src/app/data/product/product-request.dto.ts","./src/app/data/transaction-document/transaction-document.service.ts","./src/app/shared/ag-grid-helpers/renderers/grid-cell-boolean/grid-cell-boolean-renderer.ts","./src/app/shared/ag-grid-helpers/renderers/grid-cell-boolean/grid-cell-boolean-renderer.html","./src/app/shared/ag-grid-helpers/renderers/grid-cell-boolean/grid-cell-boolean-renderer.scss","./src/app/data/enums/order-document-status-type.ts","./src/app/shared/purchaser-document-list/purchaser-document-list.component.ts","./src/app/shared/purchaser-document-list/purchaser-document-list.component.html","./src/app/shared/pipes/date-formatter.pipe.ts","./src/app/shared/purchaser-dealer-connect/purchaser-dealer-connect-list/purchaser-dealer-connect-list.component.ts","./src/app/shared/purchaser-dealer-connect/purchaser-dealer-connect-list/purchaser-dealer-connect-list.component.html","./src/app/shared/purchaser-dealer-connect/purchaser-dealer-connect-list/purchaser-dealer-connect-list.component.scss","./src/app/utils/util.ts","./src/app/data/enums/purchaser-status-type.enum.ts","./src/app/shared/ag-grid-helpers/renderers/grid-cell-address/grid-cell-address.ts","./src/app/shared/ag-grid-helpers/renderers/grid-cell-address/grid-cell-address.html","./src/environments/environment.ts","./src/app/shared/ag-grid-helpers/renderers/grid-cell-text.renderer.ts","./src/app/shared/google-maps/models/google-maps-coordinates.model.ts","./src/app/shared/ag-grid-helpers/filters/grid-dropdown-filter/grid-dropdown-filter.component.ts","./src/app/shared/ag-grid-helpers/filters/grid-dropdown-filter/grid-dropdown-filter.component.html","./src/app/data/orders/shop-order-status.service.ts","./src/app/data/orders/shop-order.service.ts","./src/app/shared/orders/order-manual-entry/order-manual-entry.component.ts","./src/app/shared/orders/order-manual-entry/order-manual-entry.component.html","./src/app/shared/orders/order-manual-entry/order-manual-entry.component.scss","./src/app/data/dispatch/dispatch.service.ts","./src/app/shared/ag-grid-helpers/filters/grid-filter-custom.ts","./src/app/shared/ag-grid-helpers/models/grid-cell-icon.model.ts","./src/app/shared/orders/reports/order-reports-home/order-reports-home.component.ts","./src/app/shared/orders/reports/order-reports-home/order-reports-home.component.html","./src/app/shared/orders/reports/order-reports-home/order-reports-home.component.scss","./src/app/shared/faq/faq-list/faq-list.component.ts","./src/app/shared/faq/faq-list/faq-list.component.html","./src/app/shared/faq/faq-list/faq-list.component.scss","./src/app/app.service.ts","./src/app/shared/styles/slider.scss","./src/app/shared/ag-grid-helpers/filters/grid-address-filter/grid-address-filter.component.ts","./src/app/shared/ag-grid-helpers/filters/grid-address-filter/grid-address-filter.component.html","./src/app/data/enums/notification-request-status-type.enum.ts","./src/app/shared/orders/order-notification-requests/order-notification-requests.component.ts","./src/app/shared/orders/order-notification-requests/order-notification-requests.component.html","./src/app/shared/orders/order-notification-requests/order-notification-requests.component.scss","./src/app/shared/ag-grid-helpers/grid-helper.ts","./src/app/shared/ag-grid-helpers/models/grid-column-purchaser.ts","./src/app/shared/ag-grid-helpers/filters/grid-purchaser-filter/grid-purchaser-filter.component.ts","./src/app/shared/ag-grid-helpers/filters/grid-purchaser-filter/grid-purchaser-filter.component.html","./src/app/data/enums/payment-type.ts","./src/app/data/shipment/shipmentinstruction.service.ts","./src/app/shared/orders/order-details/shipper-letter-of-instruction/shipper-letter-of-instructions.generator.ts","./src/app/shared/orders/order-details/shipper-letter-of-instruction/shipper-letter-of-instruction.component.ts","./src/app/shared/orders/order-details/shipper-letter-of-instruction/shipper-letter-of-instruction.component.html","./src/app/shared/orders/order-details/shipper-letter-of-instruction/shipper-letter-of-instruction.component.scss","./src/app/shared/google-maps/models/google-maps-map-option.model.ts","./src/app/data/misc/excel-helper.ts","./src/app/shared/ag-grid-helpers/renderers/grid-cell-image-group/grid-cell-image-group.ts","./src/app/shared/ag-grid-helpers/renderers/grid-cell-image-group/grid-cell-image-group.html","./src/app/shared/ag-grid-helpers/renderers/grid-cell-image-group/grid-cell-image-group.scss","./src/app/shared/ag-grid-helpers/filters/grid-purchaser-type-filter/grid-purchaser-type-filter.component.ts","./src/app/shared/ag-grid-helpers/filters/grid-purchaser-type-filter/grid-purchaser-type-filter.component.html","./src/app/data/enums/status-type.enum.ts","./src/app/data/enums/lookup-type.enum.ts","./src/app/data/enums/product-rule-type.enum.ts","./src/app/data/enums/purchaser-address-type.enum.ts","./src/app/data/enums/purchaser-contact-type.enum.ts","./src/app/data/enums/purchaser-gender.enum.ts","./src/app/data/profile/antiforgery.service.ts","./src/app/data/profile/profile.service.ts","./src/app/data/auth/auth.service.ts","./src/app/data/auth/auth.guard.ts","./src/app/data/auth/auth.interceptor.ts","./src/app/data/auth/error.interceptor.ts","./src/app/data/customer/customer.service.ts","./src/app/data/customer-account/customer-account.service.ts","./src/app/data/customer-address/customer-address.service.ts","./src/app/data/customer-contact/customer-contact.service.ts","./src/app/data/faq/faq.service.ts","./src/app/data/purchaser-dealer-connect/purchaser-dealer-connect.service.ts","./src/app/data/freight/freight.service.ts","./src/app/data/license/license.service.ts","./src/app/data/misc/component-q-and-a.ts","./src/app/data/license-item/license-item.service.ts","./src/app/data/license-document/license-document.service.ts","./src/app/data/license-template/license-template.service.ts","./src/app/data/license-template-item/license-template-item.service.ts","./src/app/data/purchaser-lvs-limit/purchaser-lvs-limit.service.ts","./src/app/data/lookup/lookup.service.ts","./src/app/data/model/model.ts","./src/app/data/order-license-rule/order-license-rule.service.ts","./src/app/data/product/product.service.ts","./src/app/data/product-rule/product-rule.service.ts","./src/app/data/product-country/product-country.service.ts","./src/app/data/purchaser/purchaser.service.ts","./src/app/data/purchaser-history/purchaser-history.service.ts","./src/app/data/purchaser-address/purchaser-address.service.ts","./src/app/data/purchaser-address-history/purchaser-address-history.service.ts","./src/app/data/purchaser-contact/purchaser-contact.service.ts","./src/app/data/purchaser-contact-history/purchaser-contact-history.service.ts","./src/app/data/purchaser-officer/purchaser-officer.service.ts","./src/app/data/purchaser-officer-history/purchaser-officer-history.service.ts","./src/app/data/purchaser-owner/purchaser-owner.service.ts","./src/app/data/purchaser-owner-history/purchaser-owner-history.service.ts","./src/app/data/purchaser-document/purchaser-document.service.ts","./src/app/data/purchaser-question/purchaser-question.service.ts","./src/app/data/purchaser-review/purchaser-review.service.ts","./src/app/data/transaction/transaction.service.ts","./src/app/data/transaction-document/transaction-document.ts","./src/app/data/ui/base.component.ts","./src/app/shared/google-maps/google-maps-helper.service.ts","./src/app/data/transaction-product/transaction-product.service.ts","./src/app/data/enums/purchaser-type.enum.ts","./src/app/shared/common-settings.ts","./src/app/shared/orders/order-list/order-list.component.ts","./src/app/shared/orders/order-list/order-list.component.html","./src/app/data/enums/entity-type.enum.ts","./src/app/data/enums/license-status-type.enum.ts","./src/app/admin/customer/merchant-dialog/merchant-dialog.component.ts","./src/app/admin/customer/merchant-dialog/merchant-dialog.component.html","./src/app/data/enums/purchaser-address-image-type.enum.ts","./src/app/data/misc/q-and-a-data.model.ts","./src/app/admin/license/license-dialog/license-dialog.component.ts","./src/app/admin/license/license-dialog/license-dialog.component.html","./src/app/admin/license/license-document-edit/license-document-edit.component.ts","./src/app/admin/license/license-document-edit/license-document-edit.component.html","./src/app/admin/license/license-document-list/license-document-list.component.ts","./src/app/admin/license/license-document-list/license-document-list.component.html","./src/app/data/freight/freight-forwarder-lookup.service.ts","./src/app/shared/ag-grid-helpers/components/grid-cell-number-editor/grid-cell-number-editor.component.ts","./src/app/shared/ag-grid-helpers/components/grid-cell-number-editor/grid-cell-number-editor.component.html","./src/app/shared/ag-grid-helpers/components/grid-cell-number-editor/grid-cell-number-editor.component.scss","./src/app/admin/license/license-edit/license-edit.component.ts","./src/app/admin/license/license-edit/license-edit.component.html","./src/app/admin/license/license-edit/license-edit.component.scss","./src/app/data/transaction-product-license/transaction-product-license.service.ts","./src/app/admin/license/license-transaction-product-list/license-transaction-product-list.component.ts","./src/app/admin/license/license-transaction-product-list/license-transaction-product-list.component.html","./src/app/admin/license/license-transaction-product-list/license-transaction-product-list.component.scss","./src/app/admin/history-list-common/history-list-common.ts","./src/app/data/product/product-history.service.ts","./src/app/admin/product/product-history/product-history-list.ts","./src/app/admin/product/product-history/product-history-list.html","./src/app/data/product/product-override-import-hts.service.ts","./src/app/admin/product/product-override-import-hts/product-override-import-hts-edit/product-override-import-hts-edit.ts","./src/app/admin/product/product-override-import-hts/product-override-import-hts-edit/product-override-import-hts-edit.html","./src/app/admin/product/product-override-import-hts/product-override-import-hts-list/product-override-import-hts-list.ts","./src/app/admin/product/product-override-import-hts/product-override-import-hts-list/product-override-import-hts-list.html","./src/app/admin/purchaser/purchaser-address-history-list/purchaser-address-history-list.component.ts","./src/app/admin/purchaser/purchaser-address-history-list/purchaser-address-history-list.component.html","./src/app/admin/purchaser/purchaser-address-list/purchaser-address-list.component.ts","./src/app/admin/purchaser/purchaser-address-list/purchaser-address-list.component.html","./src/app/admin/purchaser/purchaser-address-list/purchaser-address-list.component.scss","./src/app/admin/purchaser/purchaser-address-verification/purchaser-address-verification-capture/purchaser-address-verification-capture.component.scss","./src/app/data/enums/input-edit-view-type.enum.ts","./src/app/data/purchaser-address/purchaser-address-image.service.ts","./src/app/admin/purchaser/purchaser-address-verification/purchaser-address-verification-capture/purchaser-address-verification-capture.component.ts","./src/app/admin/purchaser/purchaser-address-verification/purchaser-address-verification-capture/purchaser-address-verification-capture.component.html","./src/app/admin/purchaser/purchaser-address-verification/purchaser-address-verification-edit/purchaser-address-verification-edit.component.ts","./src/app/admin/purchaser/purchaser-address-verification/purchaser-address-verification-edit/purchaser-address-verification-edit.component.html","./src/app/admin/purchaser/purchaser-address-verification/purchaser-address-verification-edit/purchaser-address-verification-edit.component.scss","./src/app/admin/purchaser/purchaser-address-verification/purchaser-address-verification-image/purchaser-address-verification-image.component.ts","./src/app/admin/purchaser/purchaser-address-verification/purchaser-address-verification-image/purchaser-address-verification-image.component.html","./src/app/admin/purchaser/purchaser-address-verification/purchaser-address-verification-list/purchaser-address-verification-list.component.ts","./src/app/admin/purchaser/purchaser-address-verification/purchaser-address-verification-list/purchaser-address-verification-list.component.html","./src/app/admin/purchaser/purchaser-address-verification/purchaser-address-verification-list/purchaser-address-verification-list.component.scss","./src/app/admin/purchaser/purchaser-address-verification/purchaser-address-verification-paste/purchaser-address-verification-paste.ts","./src/app/admin/purchaser/purchaser-address-verification/purchaser-address-verification-paste/purchaser-address-verification-paste.html","./src/app/admin/purchaser/purchaser-address-verification/purchaser-address-verification-paste/purchaser-address-verification-paste.scss","./src/app/admin/purchaser/purchaser-address-verification/purchaser-address-verification-street/purchaser-address-verification-street.ts","./src/app/admin/purchaser/purchaser-address-verification/purchaser-address-verification-street/purchaser-address-verification-street.html","./src/app/admin/purchaser/purchaser-address-verification/purchaser-address-verification-street/purchaser-address-verification-street.scss","./src/app/admin/purchaser/purchaser-contact-history-list/purchaser-contact-history-list.component.ts","./src/app/admin/purchaser/purchaser-contact-history-list/purchaser-contact-history-list.component.html","./src/app/admin/purchaser/purchaser-contact-list/purchaser-contact-list.component.ts","./src/app/admin/purchaser/purchaser-contact-list/purchaser-contact-list.component.html","./src/app/admin/purchaser/purchaser-dialog/purchaser-dialog.component.ts","./src/app/admin/purchaser/purchaser-dialog/purchaser-dialog.component.html","./src/app/admin/purchaser/purchaser-history-list/purchaser-history-list.component.ts","./src/app/admin/purchaser/purchaser-history-list/purchaser-history-list.component.html","./src/app/admin/purchaser/purchaser-officer-history-list/purchaser-officer-history-list.component.ts","./src/app/admin/purchaser/purchaser-officer-history-list/purchaser-officer-history-list.component.html","./src/app/admin/purchaser/purchaser-officer-list/purchaser-officer-list.component.ts","./src/app/admin/purchaser/purchaser-officer-list/purchaser-officer-list.component.html","./src/app/admin/purchaser/purchaser-owner-history-list/purchaser-owner-history-list.component.ts","./src/app/admin/purchaser/purchaser-owner-history-list/purchaser-owner-history-list.component.html","./src/app/admin/purchaser/purchaser-owner-list/purchaser-owner-list.component.ts","./src/app/admin/purchaser/purchaser-owner-list/purchaser-owner-list.component.html","./src/app/admin/purchaser/purchaser-question-view/purchaser-question-view.component.ts","./src/app/admin/purchaser/purchaser-question-view/purchaser-question-view.component.html","./src/app/admin/purchaser/purchaser-question-view/purchaser-question-view.component.scss","./src/app/admin/purchaser/purchaser-review-edit/purchaser-review-edit.component.ts","./src/app/admin/purchaser/purchaser-review-edit/purchaser-review-edit.component.html","./src/app/admin/purchaser/purchaser-sub-category-edit/purchaser-sub-category-edit.component.ts","./src/app/admin/purchaser/purchaser-sub-category-edit/purchaser-sub-category-edit.component.html","./src/app/data/wiki/wiki-common.ts","./src/app/admin/purchaser/purchaser-view/purchaser-view.component.ts","./src/app/admin/purchaser/purchaser-view/purchaser-view.component.html","./src/app/admin/purchaser/purchaser-view/purchaser-view.component.scss","./src/app/shared/address/address.component.ts","./src/app/shared/address/address.component.html","./src/app/shared/address/address.component.scss","./src/app/shared/customer/merchant-base.ts","./src/app/shared/customer/customer-billing/customer-billing.component.ts","./src/app/shared/customer/customer-billing/customer-billing.component.html","./src/app/shared/customer/customer-contact-edit/customer-contact-edit.component.ts","./src/app/shared/customer/customer-contact-edit/customer-contact-edit.component.html","./src/app/shared/customer/customer-contact-list/customer-contact-list.component.ts","./src/app/shared/customer/customer-contact-list/customer-contact-list.component.html","./src/app/shared/customer/customer-details-edit/customer-details-edit.component.ts","./src/app/shared/customer/customer-details-edit/customer-details-edit.component.html","./src/app/shared/customer/customer-search/customer-search-item.component.ts","./src/app/shared/customer/customer-search/customer-search-item.component.html","./src/app/shared/customer/customer-search/customer-search-item.component.scss","./src/app/shared/info-label/info-label.component.ts","./src/app/shared/info-label/info-label.component.html","./src/app/shared/info-label/info-label.component.scss","./src/app/shared/pipes/enum-to-array.pipe.ts","./src/app/shared/privacy-policy/privacy-policy.component.ts","./src/app/shared/privacy-policy/privacy-policy.component.html","./src/app/shared/privacy-policy/privacy-policy.component.scss","./src/app/shared/sort-helper/sort-helper.component.ts","./src/app/shared/sort-helper/sort-helper.component.html","./src/app/shared/sort-helper/sort-helper.component.scss","./src/app/shared/captcha/captcha.component.ts","./src/app/shared/captcha/captcha.component.html","./src/app/shared/captcha/captcha.component.scss","./src/app/shared/customer/customer-account-edit/customer-account-edit.component.ts","./src/app/shared/customer/customer-account-edit/customer-account-edit.component.html","./src/app/shared/customer/customer-account-list/customer-account-list.component.ts","./src/app/shared/customer/customer-account-list/customer-account-list.component.html","./src/app/shared/customer/customer-address-list/customer-address-list.component.ts","./src/app/shared/customer/customer-address-list/customer-address-list.component.html","./src/app/shared/customer/customer-marketing/customer-marketing-home/customer-marketing-home.ts","./src/app/shared/customer/customer-marketing/customer-marketing-home/customer-marketing-home.html","./src/app/shared/customer/customer-marketing/customer-marketing-images/customer-marketing-images.ts","./src/app/shared/customer/customer-marketing/customer-marketing-images/customer-marketing-images.html","./src/app/shared/customer/customer-marketing/customer-marketing-images/customer-marketing-images.scss","./src/app/data/customer-promo/customer-promo.service.ts","./src/app/shared/customer/customer-marketing/customer-marketing-promos/customer-marketing-promos-edit/customer-marketing-promos-edit.ts","./src/app/shared/customer/customer-marketing/customer-marketing-promos/customer-marketing-promos-edit/customer-marketing-promos-edit.html","./src/app/shared/customer/customer-marketing/customer-marketing-promos/customer-marketing-promos-edit/customer-marketing-promos-edit.scss","./src/app/shared/customer/customer-marketing/customer-marketing-promos/customer-marketing-promos-list/customer-marketing-promos-list.ts","./src/app/shared/customer/customer-marketing/customer-marketing-promos/customer-marketing-promos-list/customer-marketing-promos-list.html","./src/app/shared/customer/customer-marketing/customer-marketing-promos/customer-marketing-promos-list/customer-marketing-promos-list.scss","./src/app/shared/customer/customer-marketing/customer-marketing-search/customer-marketing-search.ts","./src/app/shared/customer/customer-marketing/customer-marketing-search/customer-marketing-search.html","./src/app/shared/customer/customer-marketing/customer-marketing-search/customer-marketing-search.scss","./src/app/shared/customer/customer-saver/customer-saver.component.ts","./src/app/shared/customer/customer-saver/customer-saver.component.html","./src/app/shared/customer/customer-search/customer-search-user-statement/customer-search-user-statement.component.ts","./src/app/shared/customer/customer-search/customer-search-user-statement/customer-search-user-statement.component.html","./src/app/shared/customer/customer-search/merchant-search-dialog/merchant-search-dialog.component.ts","./src/app/shared/customer/customer-search/merchant-search-dialog/merchant-search-dialog.component.html","./src/app/shared/customer/customer-tabs/customer-tabs.component.ts","./src/app/shared/customer/customer-tabs/customer-tabs.component.html","./src/app/shared/customer/merchant-purchasers/merchant-purchasers.component.ts","./src/app/shared/customer/merchant-purchasers/merchant-purchasers.component.html","./src/app/shared/customer/merchant-purchasers/merchant-purchasers.component.scss","./src/app/shared/enum-selection/enum-selection.component.ts","./src/app/shared/enum-selection/enum-selection.component.html","./src/app/shared/enum-selection/enum-selection.component.scss","./src/app/shared/freight-forwarder/freight-forwarder-edit/freight-forwarder-address-list/freight-forwarder-address-list.component.ts","./src/app/shared/freight-forwarder/freight-forwarder-edit/freight-forwarder-address-list/freight-forwarder-address-list.component.html","./src/app/shared/freight-forwarder/freight-forwarder-edit/freight-forwarder-address-list/freight-forwarder-address-list.component.scss","./src/app/shared/freight-forwarder/freight-forwarder-edit/freight-forwarder-contact-edit/freight-forwarder-contact-edit.component.ts","./src/app/shared/freight-forwarder/freight-forwarder-edit/freight-forwarder-contact-edit/freight-forwarder-contact-edit.component.html","./src/app/shared/freight-forwarder/freight-forwarder-edit/freight-forwarder-contact-list/freight-forwarder-contact-list.component.ts","./src/app/shared/freight-forwarder/freight-forwarder-edit/freight-forwarder-contact-list/freight-forwarder-contact-list.component.html","./src/app/shared/freight-forwarder/freight-forwarder-edit/freight-forwarder-contact-list/freight-forwarder-contact-list.component.scss","./src/app/shared/freight-forwarder/freight-forwarder-edit/freight-forwarder-details/freight-forwarder-details.component.ts","./src/app/shared/freight-forwarder/freight-forwarder-edit/freight-forwarder-details/freight-forwarder-details.component.html","./src/app/shared/freight-forwarder/freight-forwarder-edit/freight-forwarder-details/freight-forwarder-details.component.scss","./src/app/shared/freight-forwarder/freight-forwarder-edit/freight-forwarder-dialog/freight-forwarder-dialog.component.ts","./src/app/shared/freight-forwarder/freight-forwarder-edit/freight-forwarder-dialog/freight-forwarder-dialog.component.html","./src/app/shared/freight-forwarder/freight-forwarder-edit/freight-forwarder-tabs/freight-forwarder-tabs.component.ts","./src/app/shared/freight-forwarder/freight-forwarder-edit/freight-forwarder-tabs/freight-forwarder-tabs.component.html","./src/app/shared/misc-components/address-dialog/address-dialog.component.ts","./src/app/shared/misc-components/address-dialog/address-dialog.component.html","./src/app/shared/misc-components/date-time-input/date-time-input.component.ts","./src/app/shared/misc-components/date-time-input/date-time-input.component.html","./src/app/shared/misc-components/date-time-input/date-time-input.component.scss","./src/app/shared/misc-components/email-link/email-link.component.ts","./src/app/shared/misc-components/email-link/email-link.component.html","./src/app/shared/misc-components/input-edit-save/input-edit-save.ts","./src/app/shared/misc-components/input-edit-save/input-edit-save.html","./src/app/shared/misc-components/members/members-edit/members-edit.component.ts","./src/app/shared/misc-components/members/members-edit/members-edit.component.html","./src/app/shared/misc-components/members/members-list/members-list.component.ts","./src/app/shared/misc-components/members/members-list/members-list.component.html","./src/app/shared/misc-components/members/members-list/members-list.component.scss","./src/app/shared/misc-components/merchant-link/merchant-link.ts","./src/app/shared/misc-components/merchant-link/merchant-link.html","./src/app/shared/misc-components/phone-link/phone-link.ts","./src/app/shared/misc-components/phone-link/phone-link.html","./src/app/shared/misc-components/popup-menu/popup-menu-item/popup-menu-item.ts","./src/app/shared/misc-components/popup-menu/popup-menu-item/popup-menu-item.html","./src/app/shared/misc-components/popup-menu/popup-menu.ts","./src/app/shared/misc-components/popup-menu/popup-menu.html","./src/app/shared/misc-components/product-link/product-link.ts","./src/app/shared/misc-components/product-link/product-link.html","./src/app/shared/misc-components/purchaser-link/purchaser-link.ts","./src/app/shared/misc-components/purchaser-link/purchaser-link.html","./src/app/shared/misc-components/star-rating/star-rating.ts","./src/app/shared/misc-components/star-rating/star-rating.html","./src/app/shared/misc-components/web-link/web-link.ts","./src/app/shared/misc-components/web-link/web-link.html","./src/app/data/enums/order-product-status-type.enum.ts","./src/app/shared/misc-components/wiki-editor/wiki-editor.component.ts","./src/app/shared/misc-components/wiki-editor/wiki-editor.component.html","./src/app/shared/misc-components/wiki-editor/wiki-editor.component.scss","./src/app/data/wiki/wiki-error.model.ts","./src/app/shared/misc-components/wiki-renderer/wiki-renderer.component.ts","./src/app/shared/misc-components/wiki-renderer/wiki-renderer.component.html","./src/app/shared/misc-components/year-month-selection/year-month-selection.component.ts","./src/app/shared/misc-components/year-month-selection/year-month-selection.component.html","./src/app/shared/misc-components/year-month-selection/year-month-selection.component.scss","./src/app/data/notes/notes.service.ts","./src/app/shared/notes/notes-edit/notes-edit.ts","./src/app/shared/notes/notes-edit/notes-edit.html","./src/app/shared/notes/notes-list/notes-list.ts","./src/app/shared/notes/notes-list/notes-list.html","./src/app/shared/notes/notes-list/notes-list.scss","./src/app/data/shipment-product/shipment-product.service.ts","./src/app/data/shipment/shipment-commercial-invoice.service.ts","./src/app/shared/orders/order-details/commercial-invoice/commercial-invoice.generator.ts","./src/app/shared/orders/order-details/commercial-invoice/commercial-invoice.ts","./src/app/shared/orders/order-details/commercial-invoice/commercial-invoice.html","./src/app/shared/ag-grid-helpers/models/grid-column-document-type.ts","./src/app/shared/orders/order-details/document-list/order-document-list.component.ts","./src/app/shared/orders/order-details/document-list/order-document-list.component.html","./src/app/data/enums/shipment-product-status-type.enum.ts","./src/app/data/shipment/shipment.service.ts","./src/app/shared/orders/order-details/product-list/product-list.component.ts","./src/app/shared/orders/order-details/product-list/product-list.component.html","./src/app/shared/orders/order-details/product-list/product-list.component.scss","./src/app/data/enums/shipment-status-type.enum.ts","./src/app/shared/orders/order-details/shipment-detail/ship-product.dto.ts","./src/app/shared/orders/order-details/shipment-detail/shipment-detail.component.ts","./src/app/shared/orders/order-details/shipment-detail/shipment-detail.component.html","./src/app/shared/orders/order-details/shipment-detail/shipment-detail.component.scss","./src/app/data/shipment/shipment-common.ts","./src/app/data/enums/priority.enum.ts","./src/app/data/enums/task-status.enum.ts","./src/app/shared/orders/order-details/shipment-list/shipment-list.component.ts","./src/app/shared/orders/order-details/shipment-list/shipment-list.component.html","./src/app/data/orders/shop-order-product.service.ts","./src/app/shared/orders/order-manual-entry/order-product-bulk/order-product-bulk.component.ts","./src/app/shared/orders/order-manual-entry/order-product-bulk/order-product-bulk.component.html","./src/app/shared/orders/order-manual-entry/order-product-bulk/order-product-bulk.component.scss","./src/app/shared/orders/order-manual-entry/order-product/order-product.component.ts","./src/app/shared/orders/order-manual-entry/order-product/order-product.component.html","./src/app/shared/orders/order-manual-entry/order-product/order-product.component.scss","./src/app/shared/orders/order-manual-entry/purchaser-add-dialog/purchaser-add-dialog.component.ts","./src/app/shared/orders/order-manual-entry/purchaser-add-dialog/purchaser-add-dialog.component.html","./src/app/shared/orders/order-manual-entry/purchaser-add-dialog/purchaser-add-dialog.component.scss","./src/app/data/orders/orders-cart-check.service.ts","./src/app/shared/orders/reports/report-cart-check/report-cart-check.component.ts","./src/app/shared/orders/reports/report-cart-check/report-cart-check.component.html","./src/app/shared/orders/reports/report-remove-product/grid-cell-problem-renderer/grid-cell-problem-renderer.ts","./src/app/shared/orders/reports/report-remove-product/grid-cell-problem-renderer/grid-cell-problem-renderer.html","./src/app/data/orders/orders-remove-product.service.ts","./src/app/shared/orders/reports/report-remove-product/report-remove-product.component.ts","./src/app/shared/orders/reports/report-remove-product/report-remove-product.component.html","./src/app/shared/percent-meter/percent-meter.component.ts","./src/app/shared/percent-meter/percent-meter.component.html","./src/app/shared/percent-meter/percent-meter.component.scss","./src/app/shared/pipes/safe-html.pipe.ts","./src/app/shared/products/product-country-list/product-country-list.component.ts","./src/app/shared/products/product-country-list/product-country-list.component.html","./src/app/shared/products/product-edit/product-edit.component.ts","./src/app/shared/products/product-edit/product-edit.component.html","./src/app/shared/products/product-upload/product-upload.component.ts","./src/app/shared/products/product-upload/product-upload.component.html","./src/app/shared/purchaser-terms/purchaser-terms.component.ts","./src/app/shared/purchaser-terms/purchaser-terms.component.html","./src/app/shared/status-badge/status-badge.component.ts","./src/app/shared/status-badge/status-badge.component.html","./src/app/shared/status-badge/status-badge.component.scss","./src/app/shared/users/my-profile/my-profile.component.ts","./src/app/shared/users/my-profile/my-profile.component.html","./src/app/shared/users/my-profile/my-profile.component.scss","./src/app/data/tasks/task-request.dto.ts","./src/app/data/tasks/taskwork.service.ts","./src/app/shared/users/my-tasks/my-task-edit/my-task-detail/my-task-detail.component.ts","./src/app/shared/users/my-tasks/my-task-edit/my-task-detail/my-task-detail.component.html","./src/app/shared/users/my-tasks/my-task-edit/my-task-dialog.component.ts","./src/app/shared/users/my-tasks/my-task-edit/my-task-dialog.component.html","./src/app/data/tasks/task-document.service.ts","./src/app/shared/users/my-tasks/my-task-edit/my-task-doc-common.ts","./src/app/shared/users/my-tasks/my-task-edit/my-task-doc-edit/my-task-doc-edit.component.ts","./src/app/shared/users/my-tasks/my-task-edit/my-task-doc-edit/my-task-doc-edit.component.html","./src/app/shared/users/my-tasks/my-task-edit/my-task-doc-edit/my-task-doc-edit.component.scss","./src/app/shared/users/my-tasks/my-task-edit/my-task-doc-paste/my-task-doc-paste.ts","./src/app/shared/users/my-tasks/my-task-edit/my-task-doc-paste/my-task-doc-paste.html","./src/app/shared/users/my-tasks/my-task-edit/my-task-doc-paste/my-task-doc-paste.scss","./src/app/shared/users/my-tasks/my-task-edit/my-task-docs/my-task-docs.component.ts","./src/app/shared/users/my-tasks/my-task-edit/my-task-docs/my-task-docs.component.html","./src/app/shared/users/my-tasks/my-task-edit/my-task-tabs.component.ts","./src/app/shared/users/my-tasks/my-task-edit/my-task-tabs.component.html","./src/app/shared/ag-grid-helpers/models/grid-column-task-entity.ts","./src/app/shared/users/my-tasks/my-tasks.component.ts","./src/app/shared/users/my-tasks/my-tasks.component.html","./src/app/shared/users/my-tasks/my-tasks.component.scss","./src/app/shared/shared.module.ts","./src/app/shared/google-maps/models/google-maps-street-option.model.ts","./src/app/data/orders/order-common.ts","./src/app/shared/styles/gridfilter.scss","./src/app/data/enums/freight-forwarder-type.enum.ts","./src/app/data/freight/merchants-freight-forwarder.service.ts","./src/app/shared/reporting/pdfBuilder.ts","./src/app/data/enums/product-status-type.enum.ts","./src/app/shared/products/product-dialog/product-dialog.component.ts","./src/app/shared/products/product-dialog/product-dialog.component.html","./node_modules/moment/locale sync ^\\.\\/.*$","./src/app/shared/ag-grid-helpers/renderers/grid-cell-purchaser/grid-cell-purchaser.ts","./src/app/shared/ag-grid-helpers/renderers/grid-cell-purchaser/grid-cell-purchaser.html","./src/app/shared/orders/order-grid-components/hold-renderer/grid-cell-holds.model.ts","./src/app/shared/users/my-dashboard/my-dashboard.component.ts","./src/app/shared/users/my-dashboard/my-dashboard.component.html","./src/app/shared/users/my-dashboard/my-dashboard.component.scss","./src/app/shared/confirmation/confirmation.service.ts","./src/app/data/enums/profile-type.enum.ts","./src/app/shared/styles/address.scss","./src/app/shared/ag-grid-helpers/filters/grid-merchant-filter/grid-merchant-filter.component.ts","./src/app/shared/ag-grid-helpers/filters/grid-merchant-filter/grid-merchant-filter.component.html","./src/app/shared/ag-grid-helpers/models/grid-column-status.ts","./src/app/shared/ag-grid-helpers/filters/grid-filter-meter/grid-filter-meter.component.ts","./src/app/shared/ag-grid-helpers/filters/grid-filter-meter/grid-filter-meter.component.html","./src/app/data/purchaser-dealer-connect/purchaser-dealer-connect-common.ts","./src/app/shared/ag-grid-helpers/renderers/grid-cell-star-rating/grid-cell-star-rating-renderer.ts","./src/app/shared/ag-grid-helpers/renderers/grid-cell-star-rating/grid-cell-star-rating-renderer.html","./src/app/shared/ag-grid-helpers/renderers/grid-cell-star-rating/grid-cell-star-rating-renderer.scss","./src/app/purchaser/purchaser-common/purchaser-common.scss","./src/app/data/product/product-common.ts","./src/app/data/dealer/dealer.service.ts","./src/app/shared/dealer/dealer-list/dealer-list.ts","./src/app/shared/dealer/dealer-list/dealer-list.html","./src/app/shared/ag-grid-helpers/renderers/grid-cell-merchant/grid-cell-merchant.ts","./src/app/shared/ag-grid-helpers/renderers/grid-cell-merchant/grid-cell-merchant.html","./src/app/data/feedback/feedback.service.ts","./src/app/shared/confirmation/confirmation.component.ts","./src/app/shared/confirmation/confirmation.component.html","./src/app/shared/confirmation/confirmation.component.scss","./src/app/shared/freight-forwarder/freight-forwarder-list/grid-components/grid-column-ff-type.ts","./src/app/shared/freight-forwarder/freight-forwarder-list/freight-forwarder-list.component.ts","./src/app/shared/freight-forwarder/freight-forwarder-list/freight-forwarder-list.component.html","./src/app/shared/freight-forwarder/freight-forwarder-list/freight-forwarder-list.component.scss","./src/app/shared/ag-grid-helpers/models/grid-cell-boolean.model.ts","./src/app/shared/ag-grid-helpers/filters/grid-contact-filter/grid-contact-filter.component.ts","./src/app/shared/ag-grid-helpers/filters/grid-contact-filter/grid-contact-filter.component.html","./src/app/data/misc/fixed-image.ts","./src/app/shared/ag-grid-helpers/models/grid-column-address.ts","./src/app/shared/ag-grid-helpers/models/grid-column-purchaser-type.ts","./src/app/shared/ag-grid-helpers/models/grid-filter.model.ts","./src/app/data/enums/wiki-status.enum.ts","./src/app/data/misc/order-status.ts","./src/app/shared/orders/order-grid-components/hold-item.model.ts","./src/app/shared/orders/order-data.helper.ts","./src/app/data/tasks/task-common.ts","./src/app/shared/ag-grid-helpers/filters/grid-boolean-filter/grid-boolean-filter.component.ts","./src/app/shared/ag-grid-helpers/filters/grid-boolean-filter/grid-boolean-filter.component.html","./src/app/shared/orders/order-details/order-details.component.ts","./src/app/shared/orders/order-details/order-details.component.html","./src/app/shared/orders/order-details/order-details.component.scss","./src/app/shared/ag-grid-helpers/filters/grid-cycle-filter/grid-cycle-filter.component.ts","./src/app/shared/ag-grid-helpers/filters/grid-cycle-filter/grid-cycle-filter.component.html","./src/app/shared/ag-grid-helpers/renderers/grid-cell-icon-group/grid-cell-icon-group.ts","./src/app/shared/ag-grid-helpers/renderers/grid-cell-icon-group/grid-cell-icon-group.html","./src/app/shared/freight-forwarder/freight-forwarder-list/grid-components/grid-ff-record-type-filter/grid-ff-record-type-filter.component.ts","./src/app/shared/freight-forwarder/freight-forwarder-list/grid-components/grid-ff-record-type-filter/grid-ff-record-type-filter.component.html","./src/app/utils/date-helper.ts","./src/app/infrastructure/form-validators/number-validator.ts","./src/app/shared/ag-grid-helpers/tools/grid-sidebar-extras.ts","./src/app/shared/ag-grid-helpers/tools/grid-sidebar-extras.html","./src/app/shared/ag-grid-helpers/tools/grid-sidebar-extras.scss","./src/app/data/enums/document-status-type.enum.ts","./src/app/shared/documents/document-edit/document-edit.component.ts","./src/app/shared/documents/document-edit/document-edit.component.html","./src/app/data/freight-forwarder-contact/freight-forwarder-contact.service.ts","./src/app/shared/ag-grid-helpers/models/grid-column-merchant.ts","./src/app/shared/ag-grid-helpers/filters/grid-user-filter/grid-user-filter.component.ts","./src/app/shared/ag-grid-helpers/filters/grid-user-filter/grid-user-filter.component.html","./src/app/shared/GlobalIcons.ts","./src/app/shared/ag-grid-helpers/models/grid-column.model.ts","./src/app/data/purchaser-authorization/purchaser-enduserstatement.service.ts","./src/app/shared/products/product-dialog/product-dialog.service.ts","./src/vendor/libs/sidenav/sidenav.js","./src/app/data/enums/wiki-type.enum.ts","./src/app/utils/contact-formatter.ts","./src/app/shared/styles/ee-wiki.scss","./src/app/shared/ag-grid-helpers/models/grid-column-big-text.ts","./src/app/data/enums/feedback-type.enum.ts","./src/app/shared/feedback/feedback-dialog/feedback-dialog.ts","./src/app/shared/feedback/feedback-dialog/feedback-dialog.html","./src/app/data/orders/shop-post-message.service.ts","./src/app/shared/ag-grid-helpers/filters/grid-date-filter/grid-date-filter.component.ts","./src/app/shared/ag-grid-helpers/filters/grid-date-filter/grid-date-filter.component.html","./src/app/data/enums/dealer-conntact-trade-status.enum.ts","./src/app/shared/ag-grid-helpers/models/grid-cell-image.model.ts","./src/app/data/product/product-url-check/product-url-check.service.ts","./src/app/shared/products/product-url-check-list/product-url-check-list.ts","./src/app/shared/products/product-url-check-list/product-url-check-list.html","./src/app/shared/ag-grid-helpers/ag-grid-base.ts","./src/app/data/enums/document-designation-type.enum.ts","./src/app/data/faq/faq-common.ts","./src/app/data/enums/task-entity.enum.ts","./src/app/shared/document-preview/document-preview.service.ts","./src/app/shared/ag-grid-helpers/models/grid-column-user.ts","./src/app/shared/purchaser-dealer-connect/purchaser-dealer-connect-details/purchaser-dealer-connect-details.component.ts","./src/app/shared/purchaser-dealer-connect/purchaser-dealer-connect-details/purchaser-dealer-connect-details.component.html","./src/app/shared/google-maps/google-conts.ts","./src/app/data/wiki/wiki.service.ts","./src/app/data/misc/image-request.model.ts","./src/app/shared/freight-forwarder/freight-forwarder-common.ts","./src/app/shared/ag-grid-helpers/models/grid-column-image.model.ts","./src/app/shared/ag-grid-helpers/renderers/grid-cell-part-number/grid-cell-part-number.ts","./src/app/shared/ag-grid-helpers/renderers/grid-cell-part-number/grid-cell-part-number.html","./src/app/shared/services/can-deactivate-guard.ts","./src/app/data/freight/freight-forwarder-request.dto.ts","./src/app/data/api/api.service.ts","./src/app/shared/ag-grid-helpers/filters/grid-dispatch-type-filter/grid-dispatch-type-filter.component.ts","./src/app/shared/ag-grid-helpers/filters/grid-dispatch-type-filter/grid-dispatch-type-filter.component.html","./src/app/data/enums/order-status-type.enum.ts","./src/app/shared/ag-grid-helpers/renderers/grid-cell-contact/grid-cell-contact.ts","./src/app/shared/ag-grid-helpers/renderers/grid-cell-contact/grid-cell-contact.html","./src/app/shared/ag-grid-helpers/renderers/grid-cell-contact/grid-cell-contact.scss","./src/app/data/customer/merchant-common.ts","./src/app/data/product/product-search/product-searches.service.ts","./src/app/shared/products/product-searches/product-searches.ts","./src/app/shared/products/product-searches/product-searches.html","./src/app/data/country-export-control/country-export-control.service.ts","./src/app/shared/orders/order-grid-components/hold-renderer/grid-cell-holds.renderer.ts","./src/app/shared/orders/order-grid-components/hold-renderer/grid-cell-holds.renderer.html","./src/app/shared/orders/order-grid-components/hold-renderer/grid-cell-holds.renderer.scss","./src/app/shared/resources/user-manual/user-manual.component.ts","./src/app/shared/resources/user-manual/user-manual.component.html","./src/app/data/customer/merchant-request.dto.ts","./src/app/shared/styles/testmode.scss","./src/app/layout/layout.service.ts","./src/app/layout/layout-1/layout-1.component.ts","./src/app/layout/layout-1/layout-1.component.html","./src/app/not-found/not-found.component.ts","./src/app/not-found/not-found.component.html","./src/app/not-found/not-found.component.css","./src/app/app-routing.module.ts","./src/app/app.component.ts","./src/app/app.component.html","./src/vendor/libs/sidenav/sidenav.component.ts","./src/vendor/libs/ngx-perfect-scrollbar/ngx-perfect-scrollbar.scss","./src/vendor/libs/sidenav/sidenav-link.component.ts","./src/vendor/libs/sidenav/sidenav-router-link.component.ts","./src/vendor/libs/sidenav/sidenav-menu.component.ts","./src/vendor/libs/sidenav/sidenav-block.component.ts","./src/vendor/libs/sidenav/sidenav-divider.component.ts","./src/vendor/libs/sidenav/sidenav-header.component.ts","./src/vendor/libs/sidenav/sidenav.module.ts","./src/app/layout/layout-1-flex/layout-1-flex.component.ts","./src/app/layout/layout-1-flex/layout-1-flex.component.html","./src/app/layout/layout-2-flex/layout-2-flex.component.ts","./src/app/layout/layout-2-flex/layout-2-flex.component.html","./src/app/layout/layout-2/layout-2.component.ts","./src/app/layout/layout-2/layout-2.component.html","./src/app/layout/layout-blank/layout-blank.component.ts","./src/app/layout/layout-blank/layout-blank.component.html","./src/app/layout/layout-footer/layout-footer.component.ts","./src/app/layout/layout-footer/layout-footer.component.html","./src/app/layout/layout-horizontal-sidenav/layout-horizontal-sidenav.component.ts","./src/app/layout/layout-horizontal-sidenav/layout-horizontal-sidenav.component.html","./src/app/layout/layout-navbar/layout-navbar.component.ts","./src/app/layout/layout-navbar/layout-navbar.component.html","./src/app/layout/layout-navbar/layout-navbar.component.scss","./src/app/layout/layout-sidenav/layout-sidenav.component.ts","./src/app/layout/layout-sidenav/layout-sidenav.component.html","./src/app/layout/layout-sidenav/layout-sidenav.component.scss","./src/app/layout/layout-without-navbar-flex/layout-without-navbar-flex.component.ts","./src/app/layout/layout-without-navbar-flex/layout-without-navbar-flex.component.html","./src/app/layout/layout-without-navbar/layout-without-navbar.component.ts","./src/app/layout/layout-without-navbar/layout-without-navbar.component.html","./src/app/layout/layout-without-sidenav/layout-without-sidenav.component.ts","./src/app/layout/layout-without-sidenav/layout-without-sidenav.component.html","./src/app/layout/layout.module.ts","./src/app/shared/document-preview/document-preview.component.ts","./src/app/shared/document-preview/document-preview.component.html","./src/app/shared/document-preview/document-preview.component.scss","./src/app/app.module.ts","./src/main.ts","./src/app/data/license/license-common.ts","./$_lazy_route_resource lazy namespace object"],"names":["field","header","filter","minWidth","comparator","sorter","resizable","filterParams","suppressSizeToFit","cellRendererParams","cellRendererFramework","registerComponents","push","meterFilter","val1","val2","num1","num2","bools","width","booleans","gridBoolFilter","httpClient","FreightForwarderAddressService","providedIn","agInit","params","this","cellParams","meterValue","data","refresh","GridCellMeter","template","Icons","GlobalIcons","NoHold","initFilter","holdAEP","Object","assign","checked","Hold_AEP","holdEAR","Hold_EAR","holdITAR","Hold_ITAR","holdNone","code","description","holdImport","Hold_Import","isFilterActive","doesFilterPass","isServerSide","isAEPHold","isEARLicenseHold","isITARLicenseHold","isImportPermitHold","isAEP","isEAR","isITAR","isImport","getModel","filt","add","setModel","model","multiple","isEmpty","dude","isChk","onUpdateFilter","onFilterClear","applyAndClose","onFilterApply","OrdersHoldFilter","LicenseType","CustomerSearchService","DispatchTypes","id","name","DispatchStatuses","DispatchProccessTypes","props","toastrService","customerService","appService","searchServ","authService","formBuilder","purchaseAuthServ","canAuthorize","sortColumns","column","filterProducts","group","title","apiService","pageTitle","ngOnInit","searchForm","customerUID","isSellingOptic","isSellingShotgunParts","isSellingCompleteFirearms","isSellingRiflePartsRimfire","isSellingPistolPartsRimfire","isSellingRiflePartsCenterfire","isSellingAccessories","isSellingPistolPartsCenterfire","list","getLookup","isOnYellowPage","getProfile$","toPromise","myProfile","profile","profileType","purchaser","Business","Government","subscribe","retRes","fixAuth","onCustomerSelect","customer","customerSelected","selectedProducts","get","setValue","uid","onProducts","evtArg","reset","prod","dataList","authMerchs","results","lp","merch","find","who","authUID","length","CustomerSearchComponent","selector","encapsulation","None","icons","alias","pinned","ColumnPinned_Right","sortable","getAddressTypeName","addressType","addy","PurchaserCommon","AddressTypes","elm","getPurchaserContactName","contactType","cont","PurchaserContactTypes","DocCode_TradeLicense","DocCode_FirearmPermit","DocCode_BusinessLicense","DocCode_LetterAuthority","PurchaserTypes","PurchaserStatuses","PurchaserOfficerStatuses","PurchaserOwnerStatuses","PurchaserContactStatuses","DocumentStates","DocumentTypes","DealerRelationStatuses","AddressStatuses","PurchaserAddressImageTypes","PurchaserAddressImageStatuses","subField","statusType","purchaserUID","OrderNotificationRequestService","contactField","showPhone","showTitle","showEmail","rendOpts","gridContFilter","name1","MakeName","name2","toLowerCase","listItems","getParam","filterField","filterDataType","number","item","hasOwnProperty","default","findIndex","val","chk","buildModel","breakModel","forEach","items","num","multi","operator","or","filterType","gridFilter","mult","GridCheckListFilter","DocumentStatuses","PurchaserAuthorizationService","wikiServ","dataForm","editorForm","post","wikiType","releaseNotes","loadVersions","errRes","error","onVersionChange","loadNote","vers","versions","wikiElm","parseWiki","ver","wikiUID","blockOn","doneDidLoad","blockOff","wikiText","RelaseNotesComponent","requestID","Request_Save","Request_Close","Request_TabChanged","required","fileName","issuedBy","issuedDate","fileNameUID","importPermit","documentOther","expirationDate","transactionUID","documentTypeUID","documentDesignationType","upload","file","uploadData","FormData","append","postFile","pipe","d1","d2","save","update","canUploadDocument","order","Cancelled","Suspended","TransactionDocumentService","icon","value","trueOption","color","label","toolTip","falseOption","afterGuiAttached","GridCellBooleanRenderer","OrderDocumentStatusType","modalService","docViewService","tranDocService","purchaseDocServ","fileSaverService","noteEntityType","Purchaser","adminType","ListType_Admin","PurchaserDocumentListComponent","admin","listType","ListType_Generic","docEditType","EditType_Purchaser","ListType_Order","parentUID","EditType_Order","orderDetails","getDocs","canAdd","readOnly","canEdit","document","New","onAdd","dialogDoc","openAdd","onEdit","openEdit","onView","doc","buildUrl","openConvert","onDownload","getFile","getDesignationClass","Active","Approved","UnderReview","onDocumentUpdate","postGetList","plugDocs","docs","emit","DateFormatter","transform","inDate","displayFormat","FormatDefault","outDate","Now","Date","makeDate","format","FormatTime","FormatAmerican","FormatDateTime","FormatDateTimeMil","FormatAmericanDate","pure","activeRoute","dealConnServ","profileTypes","userRole","snapshot","userType","setupGrid","setServerPath","addColumn","TradeStatuses","MakeViewIcon","onDetail","bind","rowDoubleClick","agData","dialogDetails","openDetail","PurchaserDealerConnectListComponent","roundTo","decimals","padEnd","multNum","parseInt","broken","Math","round","Number","EPSILON","toString","split","Util","substitute","replaceAll","source","search","replaceWith","regX","RegExp","replace","args","Array","prototype","slice","call","arguments","match","testObj","undefined","Infinity","Map","size","str","trim","enumToKeyValueArray","derEnum","keys","vals","values","outArray","key","reindexArray","fixArray","fixTags","text","DOM_Space","blobToString","blobData","uri","URL","createObjectURL","req","XMLHttpRequest","open","send","revokeObjectURL","ui8","Uint8Array","response","charCodeAt","TextDecoder","decode","parseError","message","Blob","newMess","join","errors","nameData","boldDefault","firstName","middleName","lastName","outName","isDefault","WhatsWrongWithForm","form","conts","controls","valid","console","warn","KeyCode_Enter","BadDate","BlankImage","DataStorage","MaxStorageSize","exists","localStorage","getItem","Storage","JSON","parse","set","spaceTaken","stringify","setItem","delete","removeItem","clear","len","window","PurchaserStatusType","setWidth","addForm","googleLink","addressText","getContact","onMap","openAddressWindow","GridCellAddressRenderer","environment","apiUrl","production","experianToken","auth0","domain","clientId","goolgeMaps","GridCellTextRender","FormatDate","dasDate","formatDate","MoneyCellRenderer","defaultValue","getValue","FormatMoney","NumberCellRenderer","FormatNumber","DecimalCellRenderer","FormatDecimal","PercentCellRenderer","FormatPercent","EmailCellRenderer","PhoneCellRenderer","LinkCellRenderer","PurchaserCellRenderer","node","displayName","purchaserTypeName","ContactName","contact","Intl","NumberFormat","style","currency","useGrouping","minimumFractionDigits","maximumFractionDigits","latitude","longitude","itemList","idElement","displayElement","indexOf","subObj","subUID","selectedID","GridDropDownFilter","ShopOrderStatusService","stage","poNumber","purchaseDate","billingAddressUID","shippingAddressUID","ShopOrderService","customerServ","purchaserServ","router","prodServ","shopOrderServ","confirmService","purchaserAddyServ","shopOrderStatusServ","shopPostMessageServ","orderState_Create","OrderState_Create","orderState_Validate","OrderState_Validate","OrderLevelPart","products","EditType_Manual","currentState","missingProduct","currentMerch","autoHandleLoading","blockUI","isActive","merchantUID","tots","gridData","total","ngAfterViewInit","beg","obStart","nativeElement","offsetTop","end","obEnd","clientHeight","wid","offsetWidth","hit","obscure","top","height","getPurchaserLookup","purchasers","lookupList","makeNGBDate","getProducts","canDeactivate","dirty","YesNo","DirtyFormConfirmationMessage","onGotoOrders","moveToOrders","onPurchaserOpenAdd","dialogPurchaser","onPurchaserEnter","inText","target","selectPurchaser","itemsList","filteredItems","openWithSearch","close","onPurchaserAdd","cnt","setTimeout","select","onPurchaserSelect","onMerchantChange","resetState","opts","FunctionClose","merchantSetCurrent","FunctionConfirm","pUID","addressBill","addressShip","getList","splitAddress","onAddressChange","onProductOpen","dialogProductEntry","openDialog","onBulkOpen","dialogBulk","onBulkTemplate","getBulkTemplate","onBulkAddProducts","onProductSave","saveProd","quantity","amount","issues","lineNumber","existProd","partNumber","altDesc","idx","gridPopulate","onValidate","invalid","submit","saveProducts","onCreate","openDocs","addDocs","onDocumentDone","gridIcons","MakeEditIcon","MakeDeleteIcon","onDelete","colQty","colDesc","issueCols","cellRenderer","makeProductMessage","storageKey","gridOpts","masterDetail","detailRowHeight","detailCellRendererParams","getDetailRowData","successCallback","detailGridOptions","rowHeight","columnDefs","pagination","animateRows","headerHeight","paginationPageSize","detailRowAutoHeight","onFirstDataRendered","api","resetRowHeights","sizeColumnsToFit","Money","availableProducts","selectMerchant","deleteIt","Delete","lineNum","selectAddressBill","handleClearClick","selectAddressShip","billIdx","shipIdx","contBuild","billDefault","shipDefault","delimiter","includeName","contactData","Billing","address","Shipping","setAddress","fullReset","goodMessage","errorMessage","rowsCollapseAll","saveProds","addMe","altDescription","postList","checkOrder","sendIt","parseStatus","mess","messages","markAsDirty","rowExpand","statusID","Hold","Cleared","PartiallyCleared","markAsPristine","dialogDocs","DialogSize_XLarge","nav","url","navigate","OrderManualEntryComponent","DispatchService","FilterClasses","Body","Label","Button","Wrapper","TextInput","InputWrapper","SelectInput","ButtonWrapper","rowModel","RowModel_Server","hideFunc","hidePopup","paramName","closeFilter","applyFilter","filterChangedCallback","isVisible","Report_CartCheck","Report_RemovedProduct","reports","selectedReport","onRefresh","repCheck","gridRefresh","repRemove","OrderReportsComponent","faqService","postGetlist","fixAnswers","fixLinks","faqList","FaqListComponent","titleService","setTitle","documentElement","getAttribute","body","documentMode","scrollTop","to","duration","element","scrollingElement","start","change","startDate","animateScroll","t","b","c","currentTime","requestAnimationFrame","AppService","lookupServ","fieldCity","fieldState","fieldStreet","fieldCountry","prefixField","getCountryList","loadCountries","inCity","inStreet","selectState","selectCountry","passCity","passCoun","passStat","passStrt","dataCity","dataCoun","dataStat","dataStrt","getFieldName","contains","onCountryChange","getCountryStateList","listStates","countryStateList","unshift","listCountries","countryList","GridAddressFilter","NotificationRequestStatus","notificationRequestServ","canDelete","NotificationRequestStatuses","Email","Complete","makeForm","emailAddress","canViewPurchaser","onPurchaserView","OrderNoticiationRequestsComponent","GetGridDefaults","create","domLayout","GridHelpers","DOMLayout_Auto","DefaultRowHeight","PageSize","suppressCellSelection","suppressLoadingOverlay","enableCellTextSelection","defaultColDef","clickFunction","visiblefunction","edit","Edit","onClick","view","View","del","Trash","MakeDownloadIcon","Download","FixSizes","grid","redrawRows","StateSave","gridBase","filters","store","mainGrid","getFilterModel","StateKey_Filter","StateKey_Columns","columnManager","getColumnState","StateKey_Version","GridStateVersion","StateLoad","colData","filtData","setFilterModel","applyColumnState","state","applyOrder","GridStateClear","gridStateReset","AlignRight","CacheBlockSize","ServerSideStore","DOMLayout_Normal","Theme","Operator_Or","Operator_And","RowModel_Type","RowModel_Client","ColumnPinned_Left","SortDir_Ascending","SortDir_Decending","FilterType_Set","FilterType_Date","FilterType_Text","FilterType_Number","FilterDefaultAction","buttons","closeOnApply","showType","renderField","PurchaserCellOptions","options","gridPurchaserFilter","purchaserService","GridPurchaserFilter","PaymentType","inBondCode","entryNumber","paymentType","packageType","loadingPier","billOfLading","portOfExport","inlandCarrier","forwardingAgent","grossWeightInKG","isContainerized","modeOfTransport","portOfUnloading","exportingCarrier","numberOfPackages","dateOfExportation","specialInstruction","shipmentReferenceNumber","carrierIdentificationCode","isRoutedExportTransaction","isShipperInsuranceRequested","isTransactionPartiesRelated","transportationReferenceNumber","ShipmentInstructionService","pageNumber","generate","docPDF","fontReset","addCursiveFont","formatter","half","pageWidth","currY","forth","third","workH","workW","compDate","sliData","dateSLICompleted","drawBox","DrawTo_End","fieldPrefix","companyName","dataBox","wrap","Wrap","einNumber","relatedBlock","contactBox","purchaserEmailAddress","purchaserPhone","intermediateConsigneeEmailAddress","intermediateConsigneePhone","customerState","purchaserCountry","yesNoBox","isHazardousMaterial","shipMethodBlock","isAir","consolidateBlock","totalValue","customerContact","finePrint","paymentBlock","deliverBlock","isContactSender","isReturnToSender","isAbandoned","signature","customerTitle","customerPhone","customerEmail","disclaimer","commodityPage","putTotalPages","PageExpression","output","Output_Blob","marg","pageMargins","left","Box_Padding","maxY","pageHeight","packagePageHeader","lineW","internal","pageSize","getWidth","right","endText","commodities","kg","totalKilograms","oz","totalOunces","line","outText","exportType","scheduleBandDescription","makeUoM","totalPounds","classification","licenseNumber","align","posX","posY","commodity","uoM1Value","uom","uoM1","uoM2Value","uoM2","addPage","headerBox","fontSet","Font_DefaultSize","setTextColor","Color_Label","baseline","Baseline_Top","Color_Data","maxX","textDim","getTextDimensions","Align_Center","h","smallPrint","rect","x","w","y","labDim","smallY","checkBox","email","phone","myY","border","splitTextToSize","setFontSize","setFont","Font_Cursive","Baseline_Middle","related","workX","workY","payType","Collect","Prepaid","contactSender","returnToSender","abandon","modalServ","shipInstService","prof","ffField","freightForwarder","disable","openSLI","shipmentRec","dialogSLI","shipmentInstruction","detail","shipmentUID","patchValue","onClose","onGenerate","det","com","forkJoin","makePDF","sli","fromUser","saveComplete","resetForm","pdfData","openPDF","purchaserName","success","ShipperLetterInstructionsComponent","type","Road","Size","Zoom","Default","Scale","MapType","fileSub","makeTemplate","cols","book","book_new","sheet","aoa_to_sheet","book_append_sheet","ExcelHelper","ExcelExtension","readFile","fileSelectEvt","files","obby","next","complete","fileOb","asObservable","reader","FileReader","onload","makeData","readAsBinaryString","ngOnDestroy","unsubscribe","bin","result","SheetNames","Sheets","sheet_to_json","rowData","img","Images","imageList","imageField","addImage","onImageShow","currentImage","onImageClick","imageURL","imgCell","copyImg","cloneDeep","bro","pri","sec","GridCellImageGroup","purchTypes","fieldType","fieldBusiness","showBusiness","getPurchaserSubCategoryTypeList","selectPurch","matchType","selectBusi","onFilterType","GridPurchaserTypeFilter","StatusType","LookupType","ProductRuleType","PurchaserAddressType","PurchaserContactType","PurchaserGenderType","token","profileToken","AntiforgeryService","countryUID","languageUID","timezoneUID","emailConfirm","signup","info","resetPassword","getProfileList","restrictList","isBillingRole","users","ProfileService","antiforgeryService","profileService","userProfileSubject$","BehaviorSubject","loggedIn","profileInfoSubject$","profileInfo$","auth0Client$","from","client_id","redirect_uri","location","origin","audience","useRefreshTokens","shareReplay","catchError","err","throwError","handleRedirectCallback$","concatMap","client","handleRedirectCallback","isAuthenticated$","isAuthenticated","tap","res","localAuthSetup","handleAuthCallback","getTokenSilently$","getTokenSilently","getUser$","getUser","user","map","mergeMap","p","of","login","redirectPath","loginWithRedirect","appState","includes","cbRes","combineLatest","redirectUrl","navigateByUrl","logout","returnTo","AuthService","canActivate","route","startsWith","new","AuthGuard","intercept","request","handle","headersConfig","getCookie","endsWith","clone","setHeaders","withCredentials","allCookies","decodeURIComponent","cookie","substring","AuthInterceptor","status","goToDashboard","statusText","path","ErrorInterceptor","sanitizer","ImgType_Logo","ImgType_Banner","messageAnswer","Subject","messageQuestion","merchantAnswer","merchantQuestion","ceo","tradeName","founderName","onboardDate","websiteLink","logoImageURL","productBillCap","establishedYear","terminationDate","cjChargeOverride","isAbleToPurchase","isAEPDoingAESFiling","marketingMessage","onboardOverrideCharge","productClassificationCharge","deferredProductCarryoverCharge","sendAnswer","sendQuestion","getImage","imgRequest","postReq","observe","responseType","resRes","fixImg","safeURL","bypassSecurityTrustUrl","getCustomerLookup","uploadImage","imgType","imgFile","CustomerService","zip","city","street1","street2","stateUID","cellPhone","workPhone","accountNumber","accountTypeUID","CustomerAccountService","workPhone1","workPhone2","addressTypeUID","CustomerAddressService","contactTypeUID","CustomerContactService","lookupService","answer","question","purchaserType","getCountries","getProfiles","profs","USAUID","Individual","FaqService","website","language","contactName","phoneNumber","annualSales","heardOfUsUID","heardOfUsOther","annualSalesYear","productsOfInterest","bestSellingProducts","businessDescription","annualSalesCurrencyUID","saveApplication","PurchaserDealerConnectService","Tab_Tasks","Tab_Detail","Tab_Address","Tab_Members","Tab_Contacts","freightAnswer","freightQuestion","FreightService","comment","issueDate","submitDate","freightUID","licenseType","aepReferenceNumber","destinationCountryUID","LicenseService","answerHandeler","questionHandler","LicenseItemService","licenseUID","LicenseDocumentService","templateAnswer","templateQuestion","isBusiness","isGovernment","isIndividual","LicenseTemplateService","unitAmount","earCategory","exportLineItem","licenseTypeName","licenseTemplateUID","LicenseTemplateItemService","lvS1","lvS2","lvS3","lvS4","lvS5","lvsYear","PurchaserLVSLimitService","getByType","lookupType","getExportTypes","exportTypes","Observable","ExportType","getPurchaserCountry","purchaserCountryList","getUSACountryStateList","usaCountryStateList","getProfileCountryStateList","profileCountryStateList","signupPurchaserCountry","signupLanguage","signupTimezone","getLanguageList","languageList","getTimezoneList","timezoneList","getShippingMethodList","shippingMethod","getCustomerAddressTypeList","customerAddressTypeList","getCustomerContactTypeList","customerContactTypeList","getCustomerAccountTypeList","customerAccountTypeList","getPurchaserDocumentTypeList","purchaserDocumentType","purchaserSubCategoryType","getProductCategoryList","productCategoryList","getProductSubCategoryList","productSubCategoryList","parentLookupUID","getProductActionList","productActionList","getProductCaliberList","productCaliberList","getProductAmmunitionList","productAmmunitionList","getProductExportClassificationList","productExportClassificationList","getProductImportClassificationList","productImportClassificationList","getTransactionActionList","transactionActionList","getPurchaserContactTypeList","purchaserContactTypeList","getBillingChargeTypeList","billingChargeTypeList","getBillingFrequencyList","billingFrequencyList","getBillingUOMList","billingUOMList","getBillingRateConstantList","billingRateConstantList","getTransactionDocumentTypeList","transactionDocumentType","getTaskCategoryList","taskCategoryList","getTaskDocumentTypeList","taskDocumentTypeList","getMerchantSourceList","merchantSourceList","getCurrencyCodeList","currencyCodeList","getProductSellerCategory","productSellerCategory","getProductSellerSubCategory","productSellerSubCategory","LookupService","dispatchService","unitPrice1","unitPrice2","categoryUID","earSubCategory","subCategoryUID","categoryOperator","magazineCapacity1","magazineCapacity2","actionTypeUID","unitPriceOperator","descriptionOperator","earCategoryOperator","subCategoryOperator","earSubCategoryOperator","actionTypeOperator","magazineCapacityOperator","import","dispatch","OrderLicenseRuleService","prodAnswer","prodQuestion","valMin","valWhole","minValue","allowDecimal","upc","make","brand","ounces","pounds","caliber","actionUID","isLithium","imageLink1","imageLink2","barrelLength","customerCode","manufacturer","overrideITAR","websiteLink1","websiteLink2","isSerializable","websiteCategory","weightKilograms","magazineCapacity","magazineQuantity","originCountryUID","ammunitionTypeUID","overrideExportHTS","sellerCategoryUID","websiteSubCategory","customerDescription","overrideEARCategory","isExcludedFromSearch","sellerSubCategoryUID","overrideEARSubCategory","cJorCCATSClassification","overrideExportScheduleB","isOverrideBusinessExportable","isOverrideGovernmentExportable","isOverrideIndividualExportable","ProductService","productRuleType","disabled","description2","actionOperator","caliberOperator","subClassification","mainClassification","barrelLengthOperator","descriptionOperator2","isBusinessExportable","classificationTypeUID","ammunitionTypeOperator","isGovernmentExportable","isIndividualExportable","cJorCCATSClassificationOperator","sortOrder","isImportable","Import","ProductRuleService","ProductCountryService","purchaserProfileStatus$","captchaGetImage","captchaIsValid","captchaText","getCurrentProfileStatusName","setCurrentStatusName","statusName","findByEmail","getCustomsBrokers","customsBrokers","activeOnly","PurchaserService","PurchaserHistoryService","experianKey","isExperianAddress","isOnlyAddressOfThisType","PurchaserAddressService","PurchaserAddressHistoryService","purchaserContactType","PurchaserContactService","PurchaserContactHistoryService","citizenshipUID","residenceCountryUID","dualCitizenshipUID","priorCitizenshipUID","PurchaserOfficerService","PurchaserOfficerHistoryService","PurchaserOwnerService","PurchaserOwnerHistoryService","PurchaserDocumentService","PurchaserQuestionService","comments","isAutoCompleteVettingTask","PurchaserReviewService","saveStatus","orderUID","TransactionService","Model","closeEmitter","loading","pageIndex","pageLimit","pageTotal","submitted","submitError","paternMatch","isDate","enable","makeRequired","isRequired","setValidators","clearValidators","updateValueAndValidity","control","markAsUntouched","sort","sortColumn","sortDirection","addControl","direction","loadingOn","query","searchValue","loadingOff","submitDatesStore","sendData","dateList","forDate","testField","submiteDatesReset","retData","warning","dataValue","dataObj","fb","dateForm","isNaN","DialogOptions","modalRef","ToastOptions","stop","blockToggle","blockIt","webClient","makeGeoCodeURL","GeoCodeURL","makeAddress","makeMapURL","MapURL","makeStreetURL","StreetURL","getCoordinates","geometry","lat","lng","getMapImage","gotoURL","rawImage","sourcesURL","getStreetImage","FOV","Pitch","Heading","GoogleMapsHelperService","makePermitArray","product","permits","importPermit1","importPermit2","importPermit3","makeMessageArray","image","tooltip","TransactionProductService","PurchaserType","dialogSize","CommonSettings","DialogSize_Large","backdrop","keyboard","scrollable","windowClass","getNameFromID","AddressURL","DialogSize_Small","GlobalUID","DashboardTab_Tasks","DashboardTab_Profile","Profiles","Genders","WikiTypes","FeedbackTypes","allowHtml","closeButton","progressBar","tapToDismiss","positionClass","Priorities","CKEditorToolbar","toolbar","shouldNotGroupWhenFull","transactionService","canCancel","Status_Complete","Status_Cancelled","Status_Suspended","onCancelConfirm","onCancelIt","onCreateShipment","mod","Tab_Ship","DefaultYesText","DefaultNoText","Cancel","Shipment","CanShip","OrderStatuses","DateTime","OrderListComponent","EntityType","LicenseStatus","custServ","taskEntityType","License","subQuestion","handleQuestion","dialogMerchant","onCustomerUpdated","quest","Request_DirtyClose","MerchantDialogComponent","PurchaserAddressImageType","taskID","licenseServ","Tab_Docs","Tab_Trans","licenseStatuses","liceAns","handleAnswer","licenseDialog","setupUI","onTabChange","setTab","holdTab","nextId","closeMe","preventDefault","QandAData","qaData_Dirty","onUpdate","onSave","qaData_Save","onRelease","qaData_Release","licenseName","getLicenseName","whatNext","handleDirty","loadDetail","liceData","ques","qaData_Update","LicenseDialogComponent","licenseDocumentService","LicenseDocumentType","docTypes","docFile","onFileSelect","formControls","LicenseDocumentEditComponent","licenseDocServ","filterAdd","onViewDoc","LicenseDocumentListComponent","FreightForwarderLookupService","maxValue","MAX_VALUE","stepValue","numValue","mainParams","max","min","step","onBlur","colDef","inNumber","focus","GridCellNumberEditorComponent","ffLookupServ","licenseTemplateService","licenseService","licenseItemService","showQuantityWarning","liceQuest","newLicense","ear","refName","commName","plugLicense","loadItems","onMyGridReady","onGridReady","onGetRowClass","origValue","onEditStop","row","ogQty","newQty","percentage","calcPercent","applyTransaction","onPurchaserSelected","filterPurchaserData","onGetLicenseItems","liceItem","optsOverride","suppressMenu","colAmt","colCat","colPer","colLine","colUAmt","colRemAmt","colRemQty","sideBar","editable","cellEditor","cellEditorParams","registerCustomComponents","gridCellNumberEditorComponent","liceItems","cond","startEditingCell","colKey","rowIndex","popItems","remainingQuantity","amt","qty","remainingAmount","saveLicense","sendDirty","ans","sub","isClosing","saveItems","sendSaveComplete","saveList","saveItemsComplete","setFirstFreight","setFirstTemplate","liceTemplate","tempFilter","countryName","country","destinationCountry","LicenseEditComponent","TransactionProductLicenseService","transProductLicenseService","transData","dismissAll","transaction","TransactionProductLicenseListComponent","gridStorageKey","colName","colPrev","changeCols","what","getHistory","filterData","gridGetData","parseHistory","histData","sortArray","changes","histRec","when","createdDate","toValue","prev","fromValue","review","ProductHistoryService","prodHistoryServ","productUID","ProductHistoryList","overrideImportHTS","ProductOverrideImportHTSService","prodImportHTSServ","editForm","dialogImport","record","doneDidSaved","ProductOverrideImportHTSEdit","ProductOverrideImportHTSList","purchaserAddressHistoryService","openHistory","addyUID","dialogHistory","purchaserAddressUID","PurchaserAddressHistoryListComponent","purchaserAddressService","contFor","onHistory","onVerify","dialogVerification","openVerification","PurchaserAddressListComponent","InputEditViewType","imageType","purchaserAddyUID","addyData","PurchaserAddressImageService","mapsHelperServ","purchaserImgServ","imageType_Road","imageType_Street","imageType_Satellite","imageType_SatelliteWide","mapType","Hybrid","wideOffset","imgRoad","imgSat","imgSatWide","imgStreet","openCapture","purchaserAddy","dialogCapture","contForm","inSat","inRoad","inSatWide","currentZoom","Buildings","displayAddress","loadMap","onMapClick","addyLat","coords","addyLon","onImageDelete","onStreetTweak","dialogStreet","openStreet","onStreetSave","onMapZoomChange","onCapture","cords","optSat","optRoad","optSatWde","optStreet","isDirty","win","write","workers","recSat","AerialView","obSat","obSatWide","recRoad","Direction","obRoad","recStreet","StreetView","obStreet","PurchaserAddressVerificationCapture","addyImageServ","imageTypes","imageAddy","addyImage","onImageOpen","nameVal","PurchaserAddressVerificationEdit","imageEdit","imageDelete","onImageSource","onImageEdit","PurchaserAddressVerificationImage","dialogList","onPasteNew","dialogPaste","openPaster","onCustom","dialogEdit","addyImageUID","PurchaserAddressVerificationList","imgPaste","onPaste","clipboardData","getAsFile","onClear","PurchaserAddressVerificationPaste","streetSaveEvent","optsPitch","ceil","floor","maxLabel","minLabel","optsHeading","numPitch","numHeading","onImageChange","PurchaserAddressVerificationStreet","purchaserContactHistoryService","contactUID","purchaserContactUID","PurchaserContactHistoryListComponent","purchaserContactService","PurchaserContactListComponent","docListType","purchaserTypes","purchaserStatus","openPurchaser","purchUID","newStatus","purchaserDialog","loadPurchaser","onApprove","dialogReview","openReview","onStatusChange","onReviewUpdate","onHistoryOpen","purchName","availStatues","PurchaserDialogComponent","purchaserHistoryService","PurchaserHistoryListComponent","purchaserOfficerHistoryService","offUID","purchaserOfficerUID","PurchaserOfficerHistoryListComponent","purchaserOfficerService","PurchaserOfficerListComponent","purchaserOwnerHistoryService","ownerUID","purchaserOwnerUID","PurchaserOwnerHistoryListComponent","purchaserOwnerService","PurchaserOwnerListComponent","purchaserQuestionService","questions","PurchaserQuestionViewComponent","purchaserReviewService","purchStatuses","purch","setStatus","autoComplete","purchDetail","PurchaserReviewEditComponent","purchaserSubCategoryUID","dialogSubCat","PurchaserSubCategoryComponent","WikiErrorType","viewTypeLink","Link","ngOnChanges","isOnWatchList","isLimitedBuyer","onSubCatOpen","onSubCatUpdate","onWatchListChanged","savePurchaser","onLimitedBuyerChanged","onRefreshEOD","onTaxIDSave","taxIdentification","onWebsiteSave","PurchaserViewComponent","AddressComponent","detailsChanged","loadCustomer","MerchantBase","saveMe","CustomerBillingComponent","customerContactService","dialogContact","CustomerContactEditComponent","Phone","CustomerContactListComponent","statuses","merchantStatuses","editorConfig","messageEditor","submitDone","CustomerDetailsEditComponent","merchantData","Lock","Unlock","logoImg","onPurchaseAuth","dialogStatement","openStatement","onMerchAuthed","CustomerSearchItemComponent","InfoLabel","e","o","index","EnumToArrayPipe","dialogPolicy","loadList","onPolicyChange","loadFile","filename","loadPolicies","listPolicies","policies","curr","current","policyOutline","processNode","level","outH","children","subtext","PrivacyPolicyComponent","showLabel","defaultDirection","SortDir_Asc","sortChanged","sortingDir","sortingColumn","sortDirs","SortDir_Desc","SortHelperComponent","columnList","setDefaults","onSortColumn","sendSort","onSortDir","onReset","defCol","autoLoad","captchaChanged","checkTimer","captchaInput","refreshImage","statusChange","createImage","onCaptchaKeyUp","clearTimeout","checkValid","addEventListener","captchaImage","readAsDataURL","isGood","statusIcon","No","CaptchaComponent","customerAccountService","dialogAccount","CustomerAccountEditComponent","CustomerAccountListComponent","addressServ","dialogAddress","onAddressSave","addressData","CustomerAddressListComponent","Tab_Images","Tab_Search","Tab_Specials","CustomerMarketingHome","isLogoOver","isBannerOver","currentLogo","bannerImageURL","currentBanner","onDragEnter","onDragLeave","onLogoUpload","imageDone","onBannerUpload","imgName","CustomerMarketingImages","endDate","promotionURL","promotionImage","promotionDescription","CustomerPromoService","lookServ","promoServ","opt_None","opt_Direct","opt_Upload","setupIU","dialogPromo","promo","currentImgURL","onNewChange","opt","newOption","isDragOver","onImageSelected","inPromoImg","newImageUpload","fullURL","uploadComplete","CustomerMarketingPromosEdit","gotoPromo","CustomerMarketingPromosList","saveIt","submitComplete","CustomerMarketingSearch","showSave","subAnswer","closeIt","CusteromSaverComponent","userStatementServ","merchUID","dialogUserStatement","plugStatement","onAgree","purchaserEndUserStatementUID","userStateUID","statement","endUserStatement","CustomerSearchUserStatementComponent","merchSearchService","checkMerchant","merchantSearchData","MerchantSearchDialog","logoChanged","customerUpdated","Tab_Notes","Tab_Promo","Tab_Member","Tab_ShipTo","Tab_Account","Tab_Billing","Tab_Contact","Tab_Details","Tab_Purchasers","Merchant","handleQuestions","Request_DirtyNav","checkDirty","Request_LogoChanged","onTabChanged","activeId","custPromo","haveChanges","custDetail","custBilling","sendTabChanged","sendClose","sendNav","onLogoChanged","allowNav","whatTab","CustomerTabsComponent","MerchantPurchasersComponent","onChange","onTouched","EnumSelectionComponent","statusValue","placeholder","selectedName","registerOnChange","execFun","registerOnTouched","writeValue","findMe","enumData","onSelectChange","providers","provide","useExisting","ffAddressServ","FreightForwarderStatuses","ffData","canModify","FreightForwarderAddressListComponent","contactServ","FreightForwarderContactEditComponent","ffContactServ","FreightForwarderContactListComponent","freightServ","subQues","freight","recordType","FreightFordwarder","FreightRequest_Save","saveFF","saveDone","sendSaveFailed","ansUp","FreightRequest_Update","ansSave","FreightForwarderDetailsComponent","subAns","handleAnswers","readonly","CustomersBroker","FreightRequest_DirtyClose","closing","getDescription","dialogFreight","FreightRequest_TabChanged","moveOn","FreightForwarderDialogComponent","TaskEntityType","FreightForwarder","tabEvt","ffDetail","FreightRequest_DirtyTab","sendTabChange","tabID","FreightForwarderTabsComponent","saveAddress","grpFields","restrictCountry","dialogRef","stateList","showCountry","AddressDialogComponent","placeHolder","DateTimeInputComponent","inValue","inTime","onDateChange","derDate","hor","getHours","getMinutes","makeDateTime","onTimeChange","setHours","dasTime","dieHour","dieMint","EmailLinkComponent","saving","viewType","Text","saveEvent","viewTypes","editMode","onCancel","inputValue","InputEditSave","auth0ID","parentData","dialogMember","member","doneDidSave","MembersEditComponent","profileServ","restrictHeight","allowNewMembers","MembersListComponent","plugMerchant","merchant","onWebsite","webLink","onEmail","href","merchantName","MerchantLink","PhoneLink","click","PopupMenuItem","menuOptions","arrow","trigger","appendTo","placement","hideOnClick","interactive","onShow","instance","exclude","onClickOutside","event","isOpen","hide","menuInstance","menuTrigger","setProps","setContent","menuContents","onShowMenu","toggle","show","PopupMenu","prodDiggyServ","loadProduct","editByUID","inProd","prodUID","ProductLink","UserRoles","purName","purType","PurchaserLink","standAlone","StarRating","WebLink","OrderProductStatusType","makeTagImage","imageName","altText","makeExternalLink","tag","makeInternalLink","makeInternalAnchor","makePhoneLink","Tag_Icon","Tag_AEPImage","Tag_ExternalLink","Tag_InternalLink","Tag_InternalAnchor","wikiSaveEvent","wikiLoadedEvent","wikiValidateEvent","editorReady","tag_break","tag_email","tag_phone","tag_linkIn","tag_linkEx","tag_linkAnchor","loadIcons","iconMenuTrigger","iconContainer","clearWiki","currentWiki","onPreview","loadWiki","wikiLoaded","setWiki","imageUpload","setValid","markClean","wiki","wikiErrors","onIconToggle","onIconInsert","derIcon","insertText","onInsertWiki","makeEmail","makePhone","makeLinkInternal","makeLinkExternal","makeLinkAnchor","onInsertFix","fix","splice","iconList","uno","two","inElm","inWiki","setRangeText","selectionStart","selectionEnd","dispatchEvent","Event","WikiCommon","mail","prompt","link","WikiEditorComponent","errorType","MissingLink","MissingAnchor","showdownConverterServ","arAnch","arLinks","setOption","rawWiki","newWiki","localURL","holdImages","hash","buildIcon","buildLinkAnchor","buildLinkExternal","buildLinkInternal","imageExtract","primHTML","makeHtml","iconText","matches","textBetweenBracket","textBetweenParentheses","justInCase","txt","page","imageParse","endSpace","preSpace","test","downImg","fixImages","WikiTextComponent","clearable","autoSetFirst","valueFormat","countBackMonths","yearMonthChanged","cycleMonths","YearMonthSelectionComponent","cycleValue","popMonths","onValueChange","useDates","now","wDate","getFullYear","hold","dateVal","endOfMonthDate","amerEOM","date","setFirst","selectYearMonth","note","entityUID","isAEPOnly","entityType","NotesService","noteServ","noteDialog","NotesEdit","formatDT","refreshNotes","dialogNoteEdit","onNoteClick","loadNotes","notes","NotesList","shipmentDate","shipmentMethodID","shippingInstructions","aesInternalTransactionNumber","ShipmentProductService","invoiceDate","paymentTerm","otherCharge1","otherCharge2","invoiceNumber","shippingCharge","handlingCharge","shipmentNumber","otherCharge1Description","otherCharge2Description","ShipmentCommercialInvoiceService","heightContact","heightContactName","heightProductHeader","pageHeader","commercialInvoice","shipment","shipmentMethod","WidthMax","outProducts","firstPage","addProductHeader","dateOpts","Align_Right","boxPadding","FontWeight_Bold","logo","ImageFormatJPEG","makeShipperBox","makeReceiverBox","makeProductHeader","merchData","mailW","phonX","transactionProduct","hts","productCountry","importHTS","lineY","amtExt","extendedAmount","originCountry","quantityShipped","setBold","outTotals","labX","valX","bottom","invoiceServ","shipProdService","openInvoice","genny","dialogInvoice","shipmentCommercialInvoice","loadDetails","loadProducts","gotsError","saveInvoice","Image","src","CommericalInvoiceComponent","trimInput","valueGetter","textCustomComparator","testType","suppressAndOrCondition","maxWidth","docCellRenderer","documentType","condition","equals","notEqual","notContains","transactionDocServ","documentEditType","OrderDocument","canAddDocument","isDocumentReadOnly","selDoc","OrderDocumentListComponent","ShipmentProductStatusType","trackingNumber","shipmentMethodUID","ShipmentService","prodDetailsServ","shipService","transactionServ","isThereAShipment","gridLoad","onShipmentAdd","dialogShipment","onProductAdd","existingOrderUID","onDataRefresh","canClearHold","Status_Cleared","onClearHold","doClearHold","isOnActiveShipment","doCancelItem","images","ProductStatuses","renderPermit","renderShippedQuantity","canProduct","sendMe","outHTML","OrderProductListComponent","ShipmentStatusType","derWeight","kilogramsPerItem","amountShipped","aesCode","license","ordered","shipped","remaining","quantityRemaining","transactionProductUID","exportScheduleB","weight","weightRaw","dateAdapter","mercahntFFServ","shipmentStatusTypes","ShipmentStatuses","ShowType_New","ShipmentDetailComponent","ShowType_View","holdUpdate","setColumnVisible","onShipMethodChange","showFF","ShipMethodCode","onOpenProds","prodDialogRef","dialogAddProd","onProdsClose","onProdsSave","prods","availProducts","ShipProductDTO","shipProducts","prodChanged","refreshThatGrid","onMainClose","onMainSave","Deleted","deleteShipment","sDate","toModel","productListTitle","minModify","singleClickEdit","stopEditingWhenCellsLoseFocus","meth","myFFs","myList","popCommon","all","mine","parseProducts","popProducts","colTotal","colOrdered","editorOpts","shipMethods","onCellEditingStopped","totalWeight","ShowType_Edit","Priority","TaskStatus","shipmentService","shipmentListReady","trackingURL","canShip","onUpdateShipment","updateOrder","onDetails","PDF","onShipperInstructions","onCommericalInvoice","onCanDelete","ShipmentCommon","renderTracking","gridPrams","ShipmentListComponent","category","subCategory","ShopOrderProductService","orderProdServ","productAdded","excelFile","dialogOrderProduct","processExcel","onClearAll","saveToExistsOrder","onProductSaved","delMe","editProd","parseFloat","desc","partNum","avail","isOrderModification","renderMessage","dialogProduct","processResults","haveError","active","OrderProductBulkComponent","productSaved","bypassDirty","toFixed","minQty","onProductChange","onProductSearch","term","part","saveToList","prodData","checkSaveStatus","OrderProductComponent","addPurchaser","genericMessage","askNote","sumTingWong","sendDisabled","sendNotification","Save","Search","inEmail","onAction","onInputKeyUp","keyCode","onSendChange","saveNotification","findPurchaser","retMessage","checkEmail","NotFound","Pending","PendingReview","searchMessage","PurchaserAddDialogComponent","OrdersCartCheckService","cartCheckService","colDate","renderLocation","onGotoOrder","shippingAddress","OrderCartCheckReportComponent","probText","GridCellProblemRenderer","OrdersRemoveProductService","removeProdService","colProb","OrderRemoveProductReportComponent","lowPoint","highPoint","optimalPoint","percentValue","PercentMeterComponent","sanitized","bypassSecurityTrustHtml","SafeHTMLPipe","productCountryService","ProductCountryListComponent","merchServ","subQuest","fixCountry","isAdmin","onSellCatChange","onAEPCatChange","getNumberErrors","valErrors","getErrors","moveMe","ProductEditComponent","productService","mode_New","mode_Sent","openUpload","dialogUpload","onAnother","onTemplate","getTemplate","fileUpload","currentMode","ProductUploadComponent","dialogTerms","onPolicy","PurchaserTermsComponent","sizeLarge","statusWidth","myStatus","statusList","statusClass","StatusBadgeComponent","profileLoaded","MyProfileComponent","TaskRequest_Save","TaskRequest_Update","TaskRequest_FormDirty","TaskRequest_TabChanged","taskAnswer","taskQuestion","dueDate","taskDate","isBillable","completeDate","priorityType","assignedToUID","taskCategoryUID","taskDescription","getCategories","TaskService","taskServ","priorities","taskStatus","TaskStatuses","hoursList","taskSub","ogDueDate","dd","categories","onAssignedChanged","onDueHoursAdd","currDate","moment","onDueClear","Medium","TaskRequestDTO","saveTask","fieldDiff","MyTaskDetailComponent","taskService","taskSubAns","taskSubQues","TaskTab_Detail","taskData","gotoTab","closeAfterSave","entityTitle","dialogTask","handleChangeTab","askToSave","MyTaskDialogComponent","taskUID","documentText","taskDoc","TaskDocumentService","docStatusTypes","setOther","docTypeIsOther","onDocTypeSelect","selection","DocumentTypeOther","taskDocServ","documentUpdate","documentEditUpload","documentDialog","fixForm","TaskDocumentEditComponent","PasteType_HTML","PasteType_Text","textPaste","haveIt","getAsString","TaskDocumentPaste","dataPath","MyTaskDocumentsComponent","tab_Docs","TaskTab_Docs","tab_Note","TaskTab_Note","tab_Detail","myEntityType","Task","taskAns","taskQuest","onTabSelect","taskDetail","MyTaskTabsComponent","renderEntity","TaskEntities","checkListFilter","agParam","onTaskAdd","dialogTaskEdit","canView","canComplete","canAssignToMe","iconWid","colUser","Note","onNotes","GoTo","onGotoEntity","canGoTo","Check","onMarkComplete","AssignTo","onAssignToMe","doMarkComplete","dialogLicense","Order","Product","InProgress","taskAssigned","MyTasksComponent","gridComponets","licenseComponents","miscComponent","freightForwarderComponents","taskAndProfileComponents","orderComponents","productComponents","purchaserComponents","customerComponents","SharedModule","declarations","imports","withComponents","forRoot","apiKey","emoji","flavor","exports","DocumentTypesEnum","PlugDocumentTypes","newList","OrderCommon","MerchantDocumentTypes","PurchaserDocumentTypes","FreightDocumentTypes","rec","DocumentType_Other","DocumentType_AEPOther","DocumentType_ImportPermit","ChargeStatuses","DocumentDesignationTypes","PurchaserDocumentDesignationTypes","FreightForwarderType","addList","deleteList","MerchantsFreightForwarderService","WordWrapMethods","unit","PDFBuilder","Unit_Point","orientation","Orientation_Portrait","Font_DefaultFamily","addFont","FontStyle_Normal","getHeight","bold","getFontSize","FontWeight_Normal","derText","isArray","myX","Align_Left","yesChecked","xMe","DataBoxDefaults","dataLoc","Overflow","Truncate","textArray","dim","lines","trunc","LineHeight","FontStyle_Italic","Baseline_Bottom","Unit_Inch","Unit_Pixel","Unit_MiliMeter","Orientation_Landscape","ProductStatus","activeModal","Tab_Task","Tab_Country","Tab_History","Tab_ImportHTS","productStatues","pending","failed","pendingRelease","setEdit","setEditByUID","opendAdd","prodStatus","custDescription","forRealize","doIt","ProductDialogComponent","webpackContext","webpackContextResolve","__webpack_require__","Error","resolve","module","GridCellPurchaserRenderer","ordersHoldFilter","tabTask","tabProfile","paramMap","has","MyDashboardComponent","YesNoDefaults","Title","ButtonCloseIcon","ButtonCloseText","ButtonCloseColor","ButtonConfirmIcon","ThumbsUp","ButtonConfirmText","ButtonConfirmColor","DeleteDefaults","ConfirmDefaults","Open","centered","componentInstance","Message","ConfirmationService","ProfileType","loadMerchants","merchants","GridMerchantFilter","statusSorter","statusCellRenderer","statObj","filterOptions","showTicks","translate","GridFilterMeter","getStatusName","stat","DealerConnectCommon","rating","GridCellStarRatingRenderer","ExportTypes","UnitOfMessures","ScheduleBStatuses","ImportStatuses","DealerService","toastrServ","dealerServ","popDealers","dealers","DealerList","GridCellMerchantRenderer","ratingType","feedbackType","FeedbackService","onConfirm","onDismiss","dismiss","ConfirmationComponent","renderFFType","recordTypeFilter","freightService","recordTypes","RecordTypes","eodStatus","EODNoMatch","renderName","site","FreightForwarderListComponent","trueOpt","falseOpt","GridCellBoolean","DefaultNoIcon","DefaultYesIcon","DefaultFalseText","DefaultTrueText","fieldMid","fieldLast","fieldFirst","inName","passMid","passLast","nameMid","nameLast","nameFirst","GridContactFilter","addressField","gridAddyFilter","conFormat","noValueReturn","addy1","addy2","rendField","renderType","gridPurchaserTypeFilter","brok","GridFilterOperator","GridFilterDataType","GridFilterCondiction","dataType","dateTo","dateFrom","WikiStatus","abv","OrderDataHelper","isShipmentActive","messageObj","Tab_Products","Tab_Documents","HoldItemModel","Status_Hold","OrderStatus","Status_Active","Status_Failed","Failed","Status_Checked","OrderCheck","Status_Partial","ProductCategories_StorageKey","boolValue","setVal","myVal","GridBooleanFilter","orderID","orderId","onShipmentListReady","presetTab","shipmentList","onOrderUpdate","onOrderRefresh","onAddressSync","isSyncShipAddress","OrderDetailsComponent","selectMonth","myDate","GridCycleFilter","Function","checkIsVisible","GridCellIconGroup","fieldField","selectedType","GridFFRecordTypeFilter","testDT","String","DateHelper","RegDT","wannabeDate","fromNGBDate","year","month","day","setDate","getMonth","getDate","badDateOutput","endOfMonth","dataArray","descending","rec1","rec2","date1","date2","getTime","allowNull","badMax","badMin","isNull","hasDecmial","NumberValidator","numOpts","NumberValidatorOption","NumberValidatorError","hasError","isSaving","haveSubGrids","context","contextParams","providedBeanInstances","gridOptions","closeToolPanel","onExportExcel","exportDataAsExcel","onSettingReset","onFixSize","onRowsExpand","expandRows","onRowsCollapse","expand","forEachNode","setExpanded","GridSidebarExtras","DocumentStatus","purchaserDocServ","transactionDocumentService","docStatusType","allowImportPermit","DocumentEditComponent","setupForPurchaser","setupForOrder","loadPermits","newData","Other","AEPOther","plugDocTypes","docDesignationTypes","listOfImportPermits","ss","permit","found","FreightForwarderContactService","gridMerchantFilter","merch1","merch2","idTag_ID","idTag_UID","useID","GridUserFilter","Size_Large","Size_Small","Size_XLarge","Size_XXLarge","Size_ExtraSmall","ReleaseNotes_Bug","ReleaseNotes_New","ReleaseNotes_Change","ReleaseNotes_Delete","Add","Fix","Run","Tag","Copy","Star","Wait","Help","Info","List","Menu","Test","Undo","Class","Clear","Close","Excel","Print","Rules","Share","Tasks","Tools","Camera","Dealer","Expand","Export","Filter","LogOut","Manual","Orders","Resize","Upload","Account","Address","Contact","Comment","Country","History","Members","Officer","Process","Problem","Profile","Refresh","Reports","Activate","Calendar","Collapse","Document","Envelope","MaxValue","ArrowLeft","ArrowPath","Clipboard","Dashboard","Template","ExpandAll","Marketing","ScheduleB","ArrowRight","DatePicker","Deactivate","MoveUpDown","MultiImage","Promotions","UserAccess","CircleCheck","CollapseAll","Transaction","Notification","Organization","ReleaseNotes","ArrowDoubleLeft","CheckboxChecked","ArrowDoubleRight","CheckboxUnChecked","GridColumnType","columnType","wrapText","menuTabs","autoHeight","headerName","dateSorter","dateFilter","Decimal","Percent","selectedDate","cellValue","compSel","comp1","comp2","merchantsSave","merchantsDelete","PurchaserEndUserStatementService","diOpts","closed","ProductDialogService","TRANSITION_EVENTS","TRANSITION_PROPERTIES","SideNav","el","_PS","_el","_horizontal","_animate","animate","_supportsTransitionEnd","_accordion","accordion","_closeChildren","Boolean","closeChildren","_showDropdownOnHover","showDropdownOnHover","_rtl","_lastWidth","innerWidth","_onOpen","onOpen","_onOpened","onOpened","_onClose","_onClosed","onClosed","classList","remove","_inner","querySelector","container","parentNode","_prevBtn","createElement","className","appendChild","_wrapper","_nextBtn","_innerPosition","PerfectScrollbarLib","PerfectScrollbar","_scrollbar","suppressScrollX","wheelPropagation","_bindEvents","sidenavInstance","_this","_findUnopenedParent","_getItem","toggleLink","_getLink","_promisify","_findMenu","then","_isRoot","_toggleDropdown","_toggleAnimation","_closeOther","catch","_autoClose","opened","querySelectorAll","i","l","closeAll","setActive","openTree","deactivateOthers","activeItems","parentItem","_findParent","setDisabled","isOpened","isDisabled","wrapperWidth","getBoundingClientRect","innerWidth_1","_innerWidth","position","_updateSlider","_wrapperWidth","_position","fn","_i","apply","__spread","Promise","reject","destroy","_unbindEvents","_unbindAnimationEndEvent","overflow","menus","i2","l2","marginRight","marginLeft","removeChild","insertBefore","_findChild","tree","openedItems","j","k","openedChildren","z","menu","linkHeight","clearItemStyle","_bindAnimationEndEvent","itemOffset","_getItemOffset","itemWidth","menuWidth","removeAttribute","_slide","newPosition","_getSlideNextPos","_getSlidePrevPos","curItem","childNodes","tagName","curItemWidth","nextSibling","handler","cb","getComputedStyle","transitionDuration","_sideNavAnimationEndEventCb","ev","_sideNavAnimationEndEventTimeout","removeEventListener","_evntElClick","_evntWindowResize","_evntPrevBtnClick","_evntNextBtnClick","_evntBodyClick","_evntHorizontalElClick","_evntInnerMousemove","toggle_1","setAttribute","_evntInnerMouseleave","curEl","cls","toUpperCase","passed","QUnit","evnt","defineProperty","enumerable","configurable","WikiType","wrapInHTML","csz","makeVal","str1","str2","outAddy","charAt","renderBigText","FeedbackType","feedbackServ","EasyExport","rateOver","feedbackDialog","onRateHover","onRateLeave","FeedbackDialog","ShopPostMessageService","fDate","fixDate","padStart","mon","GridDateFilter","DealerConnectTradeStatus","ProductURLCheckService","urlCheckServ","filterDefault","ProductURLCheckList","gridTheme","hardFilters","serverPath","defaultFilters","frameworkComponents","extraTools","toolPanels","iconKey","toolPanel","labelDefault","toolPanelParams","suppressPivots","suppressValues","suppressPivotMode","suppressRowGroups","setEvents","rowModelType","cacheBlockSize","serverSideStoreType","parseColumn","col","setColumns","columns","addComps","columnApi","initCommunication","gridStateLoad","refreshServerSideStore","purge","func","onRowDoubleClicked","autoRefresh","haveFilterValue","onFilterChanged","filterRemove","getRows","filterModel","requestFilters","fixColumnWidths","setServerSideDatasource","parseFilters","startRow","endRow","checkData","gridSort","ascending","colId","defaultState","setRowData","gridSaveState","parseDefaults","resetColumnState","rowNumber","getDisplayedRowAtIndex","rowCollapse","rowsExpandAll","filtersFromGrid","retFilt","entries","clientSide","holdFilt","dasFilter","turnOn","onSortChanged","onDisplayedColumnsChanged","checkFilter","DocumentDesignationType","FAQStatuses","TaskEntity","fileLink","popPDF","pdfSource","testVal","blob","objURL","DocumentPreviewService","useUID","gridUserFilter","tradeStatuses","formDisplay","makeDisplayForm","dialogDealer","annualSalesCurrency","customerName","purchaserContactName","purchaserContact","cellPhone1","PurchaserDealerConnectDetailsComponent","GoogleMapsType","GoogleMapsZoom","version","releaseDate","getWiki","WikiService","imgWidth","imgHeight","FreightForwarderCommon","GridCellPartNumberRenderer","component","CanDeactivateGuard","apiResource","lookup","release","httpParams","buildQuery","parent","param","fieldProcess","dispatchTypes","selectType","selectProc","onMainFilter","types","sortTypes","processTypes","GridDispatchTypeFilter","OrderStatusType","phoneCell","phoneWork","GridCellContactRenderer","ProductSearchesService","ProductSearches","CountryExportControlService","holdList","GridCellOrderHoldsRenderer","loadManual","profType","userManual","UserManualComponent","zone","layoutHelpers","exec","runOutsideAngular","getLayoutSidenav","getSidenav","getLayoutNavbar","getLayoutFooter","getLayoutContainer","isSmallScreen","isLayout1","isCollapsed","isFixed","isOffcanvas","isNavbarFixed","isFooterFixed","isReversed","setCollapsed","collapsed","toggleCollapsed","setPosition","fixed","offcanvas","setNavbarFixed","setFooterFixed","setReversed","reversed","setAutoUpdate","on","callback","off","init","_redrawLayoutSidenav","_removeClass","LayoutService","layoutService","initialized","closeSidenav","Layout1Component","NotFoundComponent","routes","loadChildren","AppRoutingModule","events","navigationInterceptor","textContent","head","AppComponent","ref","hostClassMain","hostClassHorizontal","hostClassVertical","detach","sidenav","SidenavComponent","exportAs","hostClassBlock","linkClass","badge","badgeClass","SidenavLinkComponent","SidenavRouterLinkComponent","kids","pathname","SidenavMenuComponent","SidenavBlockComponent","SidenavDividerComponent","SidenavHeaderComponent","SidenavModule","Layout1FlexComponent","Layout2FlexComponent","Layout2Component","LayoutBlankComponent","currYear","currentBg","layoutFooterBg","onTerms","LayoutFooterComponent","LayoutHorizontalSidenavComponent","sidenavToggle","ProfileTypes","isExpanded","isRTL","profileURL","layoutNavbarBg","toggleSidenav","changePassword","onTestModeToggle","isTestMode","toggleDone","routeReuseStrategy","shouldReuseRoute","onSameUrlNavigation","LayoutNavbarComponent","hostClassFlex","statusTypes","checkedMenus","isDealer","showDealers","isLocalDealerShown","purchaserStatusType","getClasses","bg","layoutSidenavBg","isMenuOpen","menuItem","act","onFeedback","dailogFeedback","LayoutSidenavComponent","LayoutWithoutNavbarFlexComponent","LayoutWithoutNavbarComponent","LayoutWithoutSidenavComponent","LayoutModule","zoomLevel","popError","imgSafe","bypassSecurityTrustResourceUrl","sourcePDF","popImage","sourceImage","readAsText","DocumentPreviewComponent","AppModule","toastClass","newestOnTop","preventDuplicates","useClass","entryComponents","bootstrap","preserveWhitespaces","bootstrapModule","log","setLicenseKey","LicenseCommon","LicenseTypes","LicenseStatuses","webpackAsyncContext","ids"],"mappings":"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ACA,GACA,GACA,GACA,KACA,GACA,KACA,GACA,GACA,GACA,GACA,GACA,GACA,KACA,MAGFC,GACF,CACI,KACA,GACA,GACA,GACA,GACA,GACA,IAGFC,GACF,CACI,GACA,GACA,GACA,GACA,KACA,GACA,GACA,GACA,IAGFC,GACF,CACI,KACA,KACA,KACA,GACA,KACA,GACA,GACA,KACA,GACA,GACA,GACA,GACA,GACA,KACA,GACA,KACA,GAGFC,GACF,CACI,KACA,EACA,KACA,GACA,KACA,GACA,GACA,EACA,GAGFC,GACF,CACI,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,KACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,IAGFC,GACF,CACI,GACA,GACA,GACA,GACA,GACA,KACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,I,4BAmDR,OAFaC,EAAY,aA9CxB,YAAS,CACNC,aAAc,YACPV,GACAE,GACAG,GACAJ,GACAK,GACAE,GACAD,GACAH,GACAD,IAEPQ,QAAS,CACL,KAAaC,eAAe,CAACZ,KAC7B,IAAca,QAAQ,CAAEC,OAAQz3E,GAAA,EAAYO,WAAW9E,MACvD,KAAe+7E,QAAQ,CAAEE,OAAO,EAAMC,OAAQ,WAC9C,IACA,IACA,IAEA,KAAaH,UACb,KAAcA,UACd,KAAcA,UACd,KACA,IACA,IAEA,IACA,MAGJI,QAAS,aACL,KACA,MAEGf,GACAG,GACAJ,GACAK,GACAE,GACAD,GACAH,GACAD,IAEP/qB,UAAW,CAAC,IAAU,IAAc,SAE3BqrB,G,sCCzZb,wCAOI,WALA,KAAApxC,IAAc,GACd,KAAAphB,KAAe,KACf,KAAAqhB,MAAgB,I,0GCDR4xC,E,yBAAZ,SAAYA,GAER,gBACA,iBACA,gBACA,kBACA,qBACA,yBAPJ,CAAYA,MAAiB,KAU7B,+BAsJA,OAzCkB,EAAAC,kBAAd,SAAgCxzF,EAAM2T,G,QAE9B1O,EACAwuF,EAAU,GAEd,OAAQ9/E,GAEJ,KAAK,IAA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","file":"main.js","sourcesContent":["import { GridFilterMeter } from \"../filters/grid-filter-meter/grid-filter-meter.component\";\r\nimport { GridCellMeter } from \"../renderers/grid-cell-meter/grid-cell-meter\";\r\nimport { GridColumn } from \"./grid-column.model\";\r\n\r\nexport class GridColumnMeter extends GridColumn\r\n{\r\n constructor(field: any, header: string)\r\n {\r\n super(field, header);\r\n\r\n this.filter = \"meterFilter\";\r\n this.minWidth = 100;\r\n this.comparator = this.sorter;\r\n this.resizable = true;\r\n this.filterParams = { field: field };\r\n this.suppressSizeToFit = true;\r\n this.cellRendererParams = { field: field };\r\n this.cellRendererFramework = GridCellMeter;\r\n\r\n this.registerComponents.push({ meterFilter: GridFilterMeter });\r\n }\r\n\r\n private sorter(val1?: number, val2?: number): number\r\n {\r\n let num1 = val1 ?? 0;\r\n let num2 = val2 ?? 0;\r\n\r\n if (num1 == num2)\r\n {\r\n return 0;\r\n }\r\n\r\n return (num1 > num2 ? 1 : -1);\r\n }\r\n}","import { GridBooleanFilter } from \"../filters/grid-boolean-filter/grid-boolean-filter.component\";\r\nimport { GridCellBooleanRenderer } from \"../renderers/grid-cell-boolean/grid-cell-boolean-renderer\";\r\nimport { GridCellBoolean } from \"./grid-cell-boolean.model\";\r\nimport { GridColumn } from \"./grid-column.model\";\r\n\r\nexport class GridColumnBoolean extends GridColumn\r\n{\r\n constructor(field: string, header: string, bools: GridCellBoolean = new GridCellBoolean(), width: number = 100)\r\n {\r\n super(field, header);\r\n\r\n this.width = width;\r\n this.filter = \"gridBoolFilter\";\r\n this.resizable = false;\r\n this.filterParams = { field: field, booleans: bools };\r\n this.suppressSizeToFit = true;\r\n this.cellRendererParams = { bools: bools };\r\n this.cellRendererFramework = GridCellBooleanRenderer;\r\n\r\n this.registerComponents.push({ gridBoolFilter: GridBooleanFilter });\r\n }\r\n}","import { HttpClient } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { ApiService } from \"../api/api.service\";\r\nimport { FreightForwarderAddress } from \"./freight-forwarder-address\";\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class FreightForwarderAddressService extends ApiService\r\n{\r\n constructor(httpClient: HttpClient)\r\n {\r\n super(httpClient, \"freight-forwarder-address\");\r\n }\r\n}\r\n","import { ICellRendererParams } from \"@ag-grid-enterprise/all-modules\";\r\nimport { Component } from \"@angular/core\";\r\nimport { AgRendererComponent } from \"ag-grid-angular\";\r\n\r\n@Component(\r\n {\r\n templateUrl: \"./grid-cell-meter.html\"\r\n })\r\nexport class GridCellMeter implements AgRendererComponent\r\n{\r\n public meterValue: number;\r\n\r\n private field: string;\r\n private cellParams: ICellRendererParams;\r\n\r\n agInit(params): void\r\n {\r\n this.field = params.field;\r\n this.cellParams = params;\r\n this.meterValue = params.data[this.field];\r\n }\r\n\r\n refresh(params): boolean\r\n {\r\n this.cellParams = params;\r\n return true;\r\n }\r\n}","export default \"\";","import { Component } from \"@angular/core\";\r\nimport { GridFilterCustom } from \"@app/shared/ag-grid-helpers/filters/grid-filter-custom\";\r\nimport { GridHelpers } from \"@app/shared/ag-grid-helpers/grid-helper\";\r\nimport { GridFilter, GridFilterStorage } from '@app/shared/ag-grid-helpers/models/grid-filter.model';\r\nimport { GlobalIcons } from '@app/shared/GlobalIcons';\r\nimport { OrderDataHelper } from \"@app/shared/orders/order-data.helper\";\r\nimport { Util } from '@app/utils/util';\r\nimport { AgFilterComponent } from \"ag-grid-angular\";\r\nimport { IDoesFilterPassParams } from \"ag-grid-community\";\r\n\r\n@Component({\r\n styleUrls: [\"../../../styles/gridfilter.scss\"],\r\n templateUrl: \"./hold-filter.component.html\"\r\n})\r\nexport class OrdersHoldFilter extends GridFilterCustom implements AgFilterComponent\r\n{\r\n public readonly Icons = GlobalIcons;\r\n public readonly NoHold = \"!\";\r\n\r\n public holdAEP;\r\n public holdEAR;\r\n public holdITAR;\r\n public holdNone;\r\n public holdImport;\r\n\r\n private params: any;\r\n\r\n agInit(params: any): void\r\n {\r\n this.initFilter(params);\r\n\r\n this.holdAEP = Object.assign({ checked: false }, OrderDataHelper.Hold_AEP);\r\n this.holdEAR = Object.assign({ checked: false }, OrderDataHelper.Hold_EAR);\r\n this.holdITAR = Object.assign({ checked: false }, OrderDataHelper.Hold_ITAR);\r\n this.holdNone = { checked: false, code: this.NoHold, description: \"No holds only\" };\r\n this.holdImport = Object.assign({ checked: false }, OrderDataHelper.Hold_Import);\r\n }\r\n\r\n isFilterActive(): boolean\r\n {\r\n return (this.holdAEP.checked || this.holdEAR.checked || this.holdNone.checked || this.holdITAR.checked || this.holdImport.checked);\r\n }\r\n\r\n doesFilterPass(params: IDoesFilterPassParams): boolean\r\n {\r\n if (this.isServerSide || (!this.holdAEP.checked && !this.holdEAR.checked && !this.holdITAR.checked && !this.holdNone.checked && !this.holdImport.checked))\r\n {\r\n return true;\r\n }\r\n\r\n if (this.holdNone.checked)\r\n {\r\n return (!params.data.isAEPHold && !params.data.isEARLicenseHold && !params.data.isITARLicenseHold && !params.data.isImportPermitHold);\r\n }\r\n\r\n let isAEP: boolean;\r\n let isEAR: boolean;\r\n let isITAR: boolean;\r\n let isImport: boolean;\r\n\r\n if (this.holdAEP.checked)\r\n {\r\n isAEP = params.data.isAEPHold;\r\n }\r\n else\r\n {\r\n isAEP = true;\r\n }\r\n\r\n if (this.holdEAR.checked)\r\n {\r\n isEAR = params.data.isEARLicenseHold;\r\n }\r\n else\r\n {\r\n isEAR = true;\r\n }\r\n\r\n if (this.holdITAR.checked)\r\n {\r\n isITAR = params.data.isITARLicenseHold;\r\n }\r\n else\r\n {\r\n isITAR = true;\r\n }\r\n\r\n if (this.holdImport.checked)\r\n {\r\n isImport = params.data.isImportPermitHold;\r\n }\r\n else\r\n {\r\n isImport = true;\r\n }\r\n\r\n return (isAEP && isEAR && isITAR && isImport);\r\n }\r\n\r\n getModel()\r\n {\r\n if (!this.holdAEP.checked && !this.holdEAR.checked && !this.holdITAR.checked && !this.holdNone.checked && !this.holdImport.checked)\r\n {\r\n return null;\r\n }\r\n\r\n let filt = new GridFilterStorage();\r\n\r\n if (this.holdNone.checked)\r\n {\r\n filt.add(\"isAEPHold\", new GridFilter(\"false\"));\r\n filt.add(\"isEARLicenseHold\", new GridFilter(\"false\"));\r\n filt.add(\"isITARLicenseHold\", new GridFilter(\"false\"));\r\n filt.add(\"isImportPermitHold\", new GridFilter(\"false\"));\r\n\r\n return filt;\r\n }\r\n\r\n if (this.holdAEP.checked)\r\n {\r\n filt.add(\"isAEPHold\", new GridFilter(\"true\"));\r\n }\r\n\r\n if (this.holdEAR.checked)\r\n {\r\n filt.add(\"isEARLicenseHold\", new GridFilter(\"true\"));\r\n }\r\n\r\n if (this.holdITAR.checked)\r\n {\r\n filt.add(\"isITARLicenseHold\", new GridFilter(\"true\"));\r\n }\r\n\r\n if (this.holdImport.checked)\r\n {\r\n filt.add(\"isImportPermitHold\", new GridFilter(\"true\"));\r\n }\r\n\r\n return filt;\r\n }\r\n\r\n setModel(model: any)\r\n {\r\n let filt = model?.multiple;\r\n\r\n if (Util.isEmpty(filt))\r\n {\r\n this.holdAEP.checked = false;\r\n this.holdEAR.checked = false;\r\n this.holdITAR.checked = false;\r\n this.holdNone.checked = false;\r\n this.holdImport.checked = false;\r\n return;\r\n }\r\n\r\n for (let dude in filt)\r\n {\r\n let isChk = (filt[dude].filter == \"true\");\r\n\r\n switch (dude)\r\n {\r\n case \"isAEPHold\":\r\n this.holdAEP.checked = isChk;\r\n break;\r\n\r\n case \"isEARLicenseHold\":\r\n this.holdEAR.checked = isChk;\r\n break;\r\n\r\n case \"isITARLicenseHold\":\r\n this.holdITAR.checked = isChk;\r\n break;\r\n\r\n case \"isImportPermitHold\":\r\n this.holdImport.checked = isChk;\r\n break;\r\n }\r\n }\r\n\r\n this.holdNone.checked = (!this.holdAEP.checked && !this.holdEAR.checked && !this.holdITAR.checked && !this.holdImport.checked);\r\n }\r\n\r\n public onUpdateFilter(code: string)\r\n {\r\n if (code == this.NoHold && this.holdNone.checked)\r\n {\r\n this.holdAEP.checked = false;\r\n this.holdEAR.checked = false;\r\n this.holdITAR.checked = false;\r\n this.holdImport.checked = false;\r\n }\r\n else\r\n {\r\n this.holdNone.checked = false;\r\n }\r\n }\r\n\r\n public onFilterClear()\r\n {\r\n this.holdAEP.checked = false;\r\n this.holdEAR.checked = false;\r\n this.holdNone.checked = false;\r\n this.holdITAR.checked = false;\r\n this.holdImport.checked = false;\r\n\r\n this.applyAndClose();\r\n }\r\n\r\n public onFilterApply()\r\n {\r\n this.applyAndClose();\r\n }\r\n}","export default \"
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\";","export enum LicenseType\r\n{\r\n ear = 1,\r\n itar = 2\r\n}","import { HttpClient } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { ApiService } from '@app/data';\r\nimport { CustomerSearch } from \"./customer-search\";\r\n\r\n@Injectable(\r\n{\r\n providedIn: \"root\"\r\n})\r\nexport class CustomerSearchService extends ApiService\r\n{\r\n constructor(httpClient: HttpClient)\r\n {\r\n super(httpClient, \"customer-search\");\r\n }\r\n}","export class DispatchCommon\r\n{\r\n public static readonly DispatchTypes =\r\n [\r\n { id: 1, name: \"Export on Demand\" },\r\n { id: 2, name: \"Email\" },\r\n { id: 3, name: \"Data Import\" },\r\n { id: 4, name: \"Purchaser Document\" }\r\n ];\r\n\r\n public static readonly DispatchStatuses =\r\n [\r\n { id: 1, name: \"New\" },\r\n { id: 2, name: \"Pending\" },\r\n { id: 3, name: \"Processing\" },\r\n { id: 4, name: \"Complete\" },\r\n { id: 5, name: \"Failed\" }\r\n ];\r\n\r\n public static readonly DispatchProccessTypes =\r\n [\r\n [],\r\n [\r\n { id: 1, name: \"Customer\" },\r\n { id: 2, name: \"Purchaser\" },\r\n { id: 3, name: \"Purchaser Contact\" },\r\n { id: 4, name: \"Purchaser Owner\" },\r\n { id: 5, name: \"Purchaser Officer\" },\r\n { id: 6, name: \"Freight\" },\r\n ],\r\n [\r\n { id: 1, name: \"Purchaser Checkout\" },\r\n { id: 2, name: \"Confirm Email Address\" },\r\n { id: 3, name: \"Signup Purchaser\" },\r\n { id: 4, name: \"Purchaser Review Submit\" },\r\n { id: 5, name: \"Purchaser Approve\" },\r\n { id: 6, name: \"Purchaser Welcome\" },\r\n { id: 7, name: \"Information Change Submission\" },\r\n { id: 8, name: \"PurchaserChangeApproved\" },\r\n { id: 9, name: \"New Orders Suspended\" },\r\n { id: 10, name: \"New Pending Orders Suspended\" },\r\n { id: 11, name: \"Expired Permit Or License\" },\r\n { id: 12, name: \"Overdue Permit Or License\" },\r\n { id: 13, name: \"Suspension For Lapsed Permit Or License\" },\r\n { id: 14, name: \"Approval Of New License Or Permit\" },\r\n { id: 15, name: \"Restatement Of Suspended Registration\" },\r\n { id: 16, name: \"Termination Of Registration\" },\r\n { id: 17, name: \"Customer Invitation\" },\r\n { id: 18, name: \"Acknowledgement Of Customer Registration\" },\r\n { id: 19, name: \"Acknowledgement Of Changes\" },\r\n { id: 20, name: \"Receipt Of New Product\" },\r\n { id: 21, name: \"Decline Freight Forwarder\" },\r\n { id: 22, name: \"Purchaser Checkout No Permit\" },\r\n { id: 23, name: \"Purchaser Checkout Cleared\" },\r\n { id: 24, name: \"Purchaser Checkout No License\" },\r\n { id: 25, name: \"Merchant Purchaser Approval Notification\" },\r\n { id: 26, name: \"Business Application\" },\r\n { id: 27, name: \"Initiate Dealer Export License\" },\r\n { id: 28, name: \"Purchaser Checkout No License Australia\" },\r\n { id: 29, name: \"Purchaser Checkout No License New Zealand\" },\r\n { id: 30, name: \"Purchaser Checkout No License South Africa\" },\r\n { id: 31, name: \"Purchaser Checkout Australia\" },\r\n { id: 32, name: \"Purchaser Checkout New Zealand\" },\r\n { id: 33, name: \"Purchaser Checkout South Africa\" },\r\n { id: 34, name: \"Purchaser Missing Firearm Licence Initial\" },\r\n { id: 35, name: \"Purchaser Missing Firearm Licence Second\" },\r\n { id: 36, name: \"Purchaser Missing Firearm Licence Third\" },\r\n { id: 37, name: \"Purchaser Registration Start Initial\" },\r\n { id: 38, name: \"Purchaser Registration Start Reminder\" },\r\n { id: 39, name: \"Purchaser Registration Incomplete Initial\" },\r\n { id: 40, name: \"Purchaser Registration Incomplete Reminder\" },\r\n ],\r\n [\r\n { id: 1, name: \"Product Rule Export\" },\r\n { id: 2, name: \"Product Rule Import\" },\r\n { id: 3, name: \"Order License Rule\" },\r\n { id: 4, name: \"Product\" },\r\n { id: 5, name: \"Country Export Control\" },\r\n ],\r\n [\r\n { id: 1, name: \"Purchaser Document Check\" }\r\n ]\r\n ];\r\n}","import { GridColumn } from \"./grid-column.model\";\r\n\r\nexport class GridColumnCustom extends GridColumn\r\n{\r\n constructor(field: string, header: string, props: any)\r\n {\r\n super(field, header);\r\n\r\n Object.assign(this, props);\r\n }\r\n}","import { Component, OnInit, ViewEncapsulation } from \"@angular/core\";\r\nimport { FormBuilder } from \"@angular/forms\";\r\nimport { AppService } from \"@app/app.service\";\r\nimport { AuthService, BaseComponent, Customer, CustomerService, ProfileType, PurchaserType } from \"@app/data\";\r\nimport { CustomerSearch } from \"@app/data/customer-search/customer-search\";\r\nimport { CustomerSearchService } from \"@app/data/customer-search/customer-search.service\";\r\nimport { PurchaserAuthorizationService } from \"@app/data/purchaser-authorization/purchaser-authorization.service\";\r\nimport { Util } from \"@app/utils/util\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\n\r\n@Component({\r\n selector: \"customer-search\",\r\n styleUrls: [\"customer-search.component.scss\"],\r\n templateUrl: \"./customer-search.component.html\",\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class CustomerSearchComponent extends BaseComponent implements OnInit\r\n{\r\n public canAuthorize: boolean = false;\r\n public customerSelected: boolean;\r\n public selectedProducts;\r\n\r\n public sortColumns =\r\n [\r\n { column: \"displayName\", description: \"Merchant\" }\r\n ];\r\n\r\n public filterProducts =\r\n [\r\n { group: null, id: \"isSellingOptic\", name: \"Optics\" },\r\n { group: null, id: \"isSellingAccessories\", name: \"Accessories\" },\r\n { group: null, id: \"isSellingShotgunParts\", name: \"Shotgun Parts\" },\r\n { group: null, id: \"isSellingCompleteFirearms\", name: \"Complete firearms\" },\r\n { group: \"Rimfire\", id: \"isSellingRiflePartsRimfire\", name: \"Rimfire - Rifle Parts\" },\r\n { group: \"Rimfire\", id: \"isSellingPistolPartsRimfire\", name: \"Rimfire - Pistol Parts\" },\r\n { group: \"Centerfire\", id: \"isSellingRiflePartsCenterfire\", name: \"Centerfire - Rifle Parts\" },\r\n { group: \"Centerfire\", id: \"isSellingPistolPartsCenterfire\", name: \"Centerfire - Pistol Parts\" }\r\n ];\r\n\r\n constructor(toastrService: ToastrService,\r\n public customerService: CustomerService,\r\n private appService: AppService,\r\n private searchServ: CustomerSearchService,\r\n private authService: AuthService,\r\n private formBuilder: FormBuilder,\r\n private purchaseAuthServ: PurchaserAuthorizationService)\r\n {\r\n super(toastrService);\r\n\r\n this.title = \"Merchant Search\"\r\n this.apiService = searchServ;\r\n this.appService.pageTitle = this.title;\r\n }\r\n\r\n async ngOnInit()\r\n {\r\n this.searchForm = this.formBuilder.group(\r\n {\r\n customerUID: [],\r\n isSellingOptic: [],\r\n isSellingShotgunParts: [],\r\n isSellingCompleteFirearms: [],\r\n isSellingRiflePartsRimfire: [],\r\n isSellingPistolPartsRimfire: [],\r\n isSellingRiflePartsCenterfire: [],\r\n isSellingAccessories: [],\r\n isSellingPistolPartsCenterfire: []\r\n });\r\n\r\n this.list();\r\n this.customerService.getLookup({ isOnYellowPage: true });\r\n\r\n let myProfile = await this.authService.getProfile$().toPromise();\r\n\r\n if (this.authService.profile.profileType == ProfileType.purchaser && (myProfile.profileType == PurchaserType.Business || myProfile.profileType == PurchaserType.Government))\r\n {\r\n this.canAuthorize = true;\r\n this.purchaseAuthServ.list().subscribe(retRes => this.fixAuth(retRes));\r\n }\r\n }\r\n\r\n public onCustomerSelect(customer: Customer): void\r\n {\r\n this.customerSelected = !Util.isEmpty(customer);\r\n\r\n if (this.customerSelected)\r\n {\r\n this.selectedProducts = null;\r\n }\r\n\r\n this.searchForm.get(\"customerUID\").setValue(customer?.uid);\r\n this.list();\r\n }\r\n\r\n public onProducts(evtArg): void\r\n {\r\n this.customerSelected = false;\r\n this.searchForm.reset();\r\n\r\n if (Util.isEmpty(evtArg))\r\n {\r\n this.list();\r\n return;\r\n }\r\n\r\n for (let prod of evtArg)\r\n {\r\n this.searchForm.get(prod.id).setValue(true);\r\n }\r\n\r\n this.list();\r\n }\r\n\r\n private fixAuth(retRes): void\r\n {\r\n let data = this.dataList as Array;\r\n let authMerchs = retRes.results;\r\n\r\n for (let lp = 0; lp < authMerchs.length; lp++)\r\n {\r\n let merch = data.find(who => who.uid == authMerchs[lp].customerUID);\r\n\r\n if (merch)\r\n {\r\n merch.authUID = authMerchs[lp].uid;\r\n }\r\n }\r\n }\r\n}","export default \"
\\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\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\";","export default \".ng-value {\\n width: auto !important;\\n}\\n\\n.customer-select {\\n max-width: 30rem;\\n}\\n\";","import { GridHelpers } from \"../grid-helper\";\r\nimport { GridCellIconGroup } from \"../renderers/grid-cell-icon-group/grid-cell-icon-group\";\r\nimport { GridColumn } from \"./grid-column.model\";\r\n\r\nexport class GridColumnIcon extends GridColumn\r\n{\r\n constructor(icons: Array, width: number = -1, alias: string = null)\r\n {\r\n super(null, \"Action\");\r\n\r\n // This isn't the best way, but works. When you have time, figure out how to measure the icons\r\n if (width == -1)\r\n {\r\n if (icons.length == 1)\r\n {\r\n width = 90;\r\n }\r\n else\r\n {\r\n width = icons.length * 50;\r\n }\r\n }\r\n\r\n this.field = alias;\r\n this.width = width;\r\n this.filter = null;\r\n this.pinned = GridHelpers.ColumnPinned_Right;\r\n this.sortable = false;\r\n this.resizable = false;\r\n this.suppressSizeToFit = true;\r\n this.cellRendererParams = { Icons: icons };\r\n this.cellRendererFramework = GridCellIconGroup;\r\n }\r\n}","export class PurchaserCommon\r\n{\r\n public static readonly DocCode_TradeLicense = \"TL\";\r\n public static readonly DocCode_FirearmPermit = \"FP\";\r\n public static readonly DocCode_BusinessLicense = \"BL\";\r\n public static readonly DocCode_LetterAuthority = \"LOA\";\r\n\r\n public static readonly AddressTypes =\r\n [\r\n { id: 1, name: \"Primary\" },\r\n { id: 2, name: \"Shipping\" },\r\n { id: 3, name: \"Billing\" }\r\n ];\r\n\r\n public static readonly PurchaserTypes =\r\n [\r\n { id: 1, name: \"Individual\" },\r\n { id: 2, name: \"Business\" },\r\n { id: 3, name: \"Government\" }\r\n ];\r\n\r\n public static readonly PurchaserStatuses =\r\n [\r\n { id: -2, name: \"Delete\" },\r\n { id: -1, name: \"Not Found\" },\r\n { id: 7, name: \"New\" },\r\n { id: 2, name: \"Pending\" },\r\n { id: 10, name: \"Pending Review\" },\r\n { id: 1, name: \"Approved\" },\r\n { id: 9, name: \"Inactive\" },\r\n { id: 11, name: \"On Hold\" },\r\n { id: 12, name: \"Denied\" }\r\n ];\r\n\r\n public static readonly PurchaserOfficerStatuses =\r\n [\r\n { id: 1, name: \"Active\" },\r\n { id: 7, name: \"New\" },\r\n { id: 10, name: \"Pending Review\" }\r\n ];\r\n\r\n public static readonly PurchaserOwnerStatuses =\r\n [\r\n { id: 1, name: \"Active\" },\r\n { id: 7, name: \"New\" },\r\n { id: 10, name: \"Pending Review\" }\r\n ];\r\n\r\n public static readonly PurchaserContactStatuses =\r\n [\r\n { id: 1, name: \"Approved\" },\r\n { id: 7, name: \"New\" },\r\n { id: 10, name: \"Pending Review\" }\r\n ];\r\n\r\n public static readonly DocumentStates =\r\n [\r\n { id: 1, name: \"Approved\" },\r\n { id: 5, name: \"Expired\" },\r\n { id: 10, name: \"Pending Review\" }\r\n ];\r\n\r\n public static readonly DocumentTypes =\r\n [\r\n { code: PurchaserCommon.DocCode_BusinessLicense, name: \"Business License\" },\r\n { code: PurchaserCommon.DocCode_FirearmPermit, name: \"Firearm Permit\" },\r\n { code: PurchaserCommon.DocCode_LetterAuthority, name: \"Letter of Authority\" },\r\n { code: PurchaserCommon.DocCode_TradeLicense, name: \"Trade License\" },\r\n { code: \"OTHER\", name: \"Other\" }\r\n ];\r\n\r\n public static readonly PurchaserContactTypes =\r\n [\r\n { id: 1, name: \"EasyExport Contact\" },\r\n { id: 2, name: \"Agency Leader\" }\r\n ];\r\n\r\n public static readonly DealerRelationStatuses =\r\n [\r\n { id: 1, name: \"Active\" },\r\n { id: 7, name: \"New\" },\r\n { id: 9, name: \"Inactive\" },\r\n { id: 10, name: \"Pending Review\" }\r\n ];\r\n\r\n public static readonly AddressStatuses =\r\n [\r\n { id: 1, name: \"Active\" },\r\n { id: 7, name: \"New\" },\r\n { id: 10, name: \"Pending Review\" }\r\n ];\r\n\r\n public static readonly PurchaserAddressImageTypes =\r\n [\r\n { id: 1, name: \"Street\" },\r\n { id: 2, name: \"Aerial\" },\r\n { id: 3, name: \"Distance/Direction\" },\r\n { id: 4, name: \"Postal Code\" }\r\n ];\r\n\r\n public static readonly PurchaserAddressImageStatuses =\r\n [\r\n { id: 1, name: \"Active\" }\r\n ];\r\n\r\n public static getAddressTypeName(addressType: number): string\r\n {\r\n let addy = PurchaserCommon.AddressTypes.find(elm => elm.id == addressType);\r\n\r\n if (addy)\r\n {\r\n return addy.name;\r\n }\r\n\r\n return \"\";\r\n }\r\n\r\n public static getPurchaserContactName(contactType: number)\r\n {\r\n let cont = PurchaserCommon.PurchaserContactTypes.find(elm => elm.id == contactType);\r\n\r\n if (cont)\r\n {\r\n return cont.name;\r\n }\r\n\r\n return \"\";\r\n }\r\n}","import { GridCellPartNumberRenderer } from \"../renderers/grid-cell-part-number/grid-cell-part-number\";\r\nimport { GridColumn } from \"./grid-column.model\";\r\n\r\nexport class GridColumnPartNumber extends GridColumn\r\n{\r\n constructor(subField: string = null, header: string = \"Part #\")\r\n {\r\n super(\"partNumber\", header);\r\n\r\n this.width = 175;\r\n this.minWidth = 100;\r\n this.cellRendererParams = { field: subField };\r\n this.cellRendererFramework = GridCellPartNumberRenderer;\r\n }\r\n}","import { HttpClient } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { FormBuilder } from \"@angular/forms\";\r\nimport { ApiService } from \"../api/api.service\";\r\nimport { OrdersNotificationRequest } from \"./order-notification-request.model\";\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class OrderNotificationRequestService extends ApiService\r\n{\r\n public get dataForm()\r\n {\r\n let fb = new FormBuilder();\r\n let grp = fb.group(\r\n {\r\n statusType: [],\r\n customerUID: [],\r\n purchaserUID: []\r\n });\r\n\r\n return grp;\r\n }\r\n\r\n constructor(httpClient: HttpClient)\r\n {\r\n super(httpClient, \"notification-requests\");\r\n }\r\n}","import { Util } from \"@app/utils/util\";\r\nimport { GridContactFilter } from \"../filters/grid-contact-filter/grid-contact-filter.component\";\r\nimport { GridCellContactRenderer } from \"../renderers/grid-cell-contact/grid-cell-contact\";\r\nimport { GridColumn } from \"./grid-column.model\";\r\n\r\nexport class GridColumnContact extends GridColumn\r\n{\r\n constructor(contactField: any, header: string = \"Contact\", showPhone: boolean = true, showTitle: boolean = true, showEmail: boolean = true)\r\n {\r\n super(contactField, header);\r\n\r\n let rendOpts =\r\n {\r\n field: contactField,\r\n showEmail: showEmail,\r\n showPhone: showPhone,\r\n showTitle: showTitle\r\n };\r\n\r\n this.filter = \"gridContFilter\";\r\n this.minWidth = 200;\r\n this.comparator = this.sorter;\r\n this.filterParams = { field: contactField };\r\n this.cellRendererParams = rendOpts;\r\n this.cellRendererFramework = GridCellContactRenderer;\r\n\r\n this.registerComponents.push({ gridContFilter: GridContactFilter });\r\n }\r\n\r\n private sorter(val1, val2): number\r\n {\r\n if (Util.isEmpty(val1) && Util.isEmpty(val2))\r\n {\r\n return 0;\r\n }\r\n\r\n let name1 = Util.MakeName(val1, false);\r\n let name2 = Util.MakeName(val2, false);\r\n\r\n name1 = name1.toLowerCase();\r\n name2 = name2.toLowerCase();\r\n\r\n if (name1 == name2)\r\n {\r\n return 0;\r\n }\r\n\r\n return (name1 > name2 ? 1 : -1);\r\n }\r\n}","import { Component } from \"@angular/core\";\r\nimport { GridFilterCustom } from \"@app/shared/ag-grid-helpers/filters/grid-filter-custom\";\r\nimport { GridFilter, GridFilterDataType, GridFilterOperator, GridFilterStorage } from \"@app/shared/ag-grid-helpers/models/grid-filter.model\";\r\nimport { Util } from \"@app/utils/util\";\r\nimport { AgFilterComponent } from \"ag-grid-angular\";\r\nimport { IDoesFilterPassParams } from \"ag-grid-community\";\r\n\r\n@Component({\r\n styleUrls: [\"../../../styles/gridfilter.scss\"],\r\n templateUrl: \"./checklist-filter.component.html\"\r\n})\r\nexport class GridCheckListFilter extends GridFilterCustom implements AgFilterComponent\r\n{\r\n public listItems;\r\n\r\n private filterField;\r\n private filterDataType: string;\r\n\r\n agInit(params: any): void\r\n {\r\n this.initFilter(params);\r\n\r\n this.listItems = this.getParam(\"items\");\r\n this.filterField = this.getParam(\"field\");\r\n this.filterDataType = this.getParam(\"filterDataType\", GridFilterDataType.number);\r\n\r\n for (let lp in this.listItems)\r\n {\r\n let item = this.listItems[lp];\r\n\r\n if (item.hasOwnProperty(\"checked\"))\r\n {\r\n continue;\r\n }\r\n\r\n if (item.hasOwnProperty(\"default\"))\r\n {\r\n item.checked = item.default;\r\n continue;\r\n }\r\n\r\n item.checked = false;\r\n }\r\n }\r\n\r\n isFilterActive(): boolean\r\n {\r\n let idx = this.listItems.findIndex(elm => elm.checked);\r\n\r\n return idx != -1;\r\n }\r\n\r\n doesFilterPass(params: IDoesFilterPassParams): boolean\r\n {\r\n if (this.isServerSide)\r\n {\r\n return true;\r\n }\r\n\r\n let val = params.data[this.filterField];\r\n let chk = this.listItems.find(elm => elm.id == val);\r\n\r\n return chk != null && chk.checked;\r\n }\r\n\r\n getModel()\r\n {\r\n let idx = this.listItems.findIndex(elm => elm.checked);\r\n\r\n if (idx == -1)\r\n {\r\n return null;\r\n }\r\n\r\n return new GridFilterStorage(this.filterField, this.buildModel())\r\n }\r\n\r\n setModel(model: any)\r\n {\r\n this.breakModel(model);\r\n }\r\n\r\n public onFilterClear()\r\n {\r\n this.listItems.forEach(elm => elm.checked = false);\r\n\r\n this.applyAndClose();\r\n }\r\n\r\n public onFilterApply()\r\n {\r\n this.applyAndClose();\r\n }\r\n\r\n private buildModel()\r\n {\r\n let items = this.listItems.filter(elm => elm.checked);\r\n\r\n if (items.length == 1)\r\n {\r\n return new GridFilter(items[0].id, this.filterDataType);\r\n }\r\n\r\n let num = 0;\r\n let multi =\r\n {\r\n operator: GridFilterOperator.or,\r\n filterType: this.filterDataType\r\n };\r\n\r\n for (let dude of items)\r\n {\r\n num++;\r\n\r\n let key = \"condition\" + num;\r\n\r\n multi[key] = new GridFilter(dude.id, this.filterDataType);\r\n }\r\n\r\n return multi;\r\n }\r\n\r\n private breakModel(model)\r\n {\r\n model = model?.gridFilter;\r\n\r\n this.listItems.forEach(elm => elm.checked = false);\r\n\r\n if (Util.isEmpty(model))\r\n {\r\n return;\r\n }\r\n\r\n if (model.hasOwnProperty(\"filter\"))\r\n {\r\n let item = this.listItems.find(elm => elm.id == model.filter);\r\n\r\n item.checked = true;\r\n return;\r\n }\r\n\r\n for (let mult in model)\r\n {\r\n if (typeof model[mult] != \"object\")\r\n {\r\n continue;\r\n }\r\n\r\n let item = this.listItems.find(elm => elm.id == model[mult].filter);\r\n\r\n item.checked = true;\r\n }\r\n }\r\n}","export default \"
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\";","export class DocumentCommon\r\n{\r\n public static readonly DocumentStatuses =\r\n [\r\n { id: 1, name: \"Approved\", },\r\n { id: 2, name: \"Pending\" },\r\n { id: 7, name: \"New\" },\r\n { id: 9, name: \"Expired\" },\r\n { id: 10, name: \"Under Review\" },\r\n { id: 12, name: \"Declined\" }\r\n ];\r\n}","import { HttpClient } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { ApiService } from \"../api/api.service\";\r\nimport { PurchaserAuthorization } from \"./purchaser-authorization\";\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class PurchaserAuthorizationService extends ApiService\r\n{\r\n constructor(httpClient: HttpClient)\r\n {\r\n super(httpClient, \"purchaser-auth\");\r\n }\r\n}","import { Component, OnInit, ViewChild, ViewEncapsulation } from \"@angular/core\";\r\nimport { AppService } from \"@app/app.service\";\r\nimport { AuthService, BaseComponent } from \"@app/data\";\r\nimport { WikiType } from \"@app/data/enums/wiki-type.enum\";\r\nimport { WikiMod } from \"@app/data/wiki/wiki.model\";\r\nimport { WikiService } from \"@app/data/wiki/wiki.service\";\r\nimport { WikiTextComponent } from \"@app/shared/misc-components/wiki-renderer/wiki-renderer.component\";\r\nimport { Util } from \"@app/utils/util\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\n\r\n@Component(\r\n {\r\n styleUrls: [\"./release-notes.component.scss\", \"../../styles/ee-wiki.scss\"],\r\n templateUrl: \"./release-notes.component.html\",\r\n encapsulation: ViewEncapsulation.None\r\n })\r\nexport class RelaseNotesComponent extends BaseComponent implements OnInit\r\n{\r\n @ViewChild(\"wikiElm\")\r\n wikiElm: WikiTextComponent;\r\n\r\n public versions;\r\n\r\n constructor(toastrService: ToastrService,\r\n private wikiServ: WikiService,\r\n private appService: AppService,\r\n private authService: AuthService)\r\n {\r\n super(toastrService);\r\n\r\n this.title = \"EasyExport - Release Notes\";\r\n this.dataForm = wikiServ.editorForm;\r\n this.apiService = wikiServ;\r\n this.appService.pageTitle = this.title;\r\n }\r\n\r\n ngOnInit(): void\r\n {\r\n let sub = this.wikiServ.post(\"versions\", { wikiType: WikiType.releaseNotes }).subscribe(\r\n retRes => this.loadVersions(retRes),\r\n errRes => this.error(errRes));\r\n }\r\n\r\n public onVersionChange(evtArg)\r\n {\r\n this.loadNote(evtArg.uid);\r\n }\r\n\r\n private loadVersions(retRes)\r\n {\r\n let vers = retRes?.results;\r\n\r\n if (Util.isEmpty(vers))\r\n {\r\n this.setValue(\"version\", null);\r\n\r\n this.versions = [];\r\n this.wikiElm.parseWiki(null);\r\n return;\r\n }\r\n\r\n let ver = vers[0];\r\n\r\n this.versions = vers;\r\n\r\n this.setValue(\"version\", ver.uid);\r\n this.loadNote(ver.uid);\r\n }\r\n\r\n private loadNote(wikiUID)\r\n {\r\n this.blockOn(\"Loading...\");\r\n\r\n let filt: WikiMod = { uid: wikiUID };\r\n let subs = this.wikiServ.post(\"detail\", filt).subscribe(\r\n retRes => this.doneDidLoad(retRes),\r\n errRes => this.error(errRes));\r\n\r\n subs.add(() => this.blockOff());\r\n }\r\n\r\n private doneDidLoad(data)\r\n {\r\n this.wikiElm.parseWiki(data.wikiText);\r\n }\r\n}","export default \"
\\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 \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\";","export default \".restrict-select {\\n width: 10rem;\\n}\\n\\n.fixed-height {\\n top: 5rem;\\n left: 2rem;\\n right: 2rem;\\n bottom: 6rem;\\n position: absolute;\\n}\\n\\n.legend {\\n border: 1px solid #888;\\n padding: 0.1rem 0.5rem;\\n font-size: 1.5rem;\\n border-radius: 0.25rem;\\n margin-bottom: 0.25rem;\\n background-color: #bbb;\\n}\\n\";","export class ProductRequestDTO\r\n{\r\n public static readonly Request_Save = 1\r\n public static readonly Request_Close = 2;\r\n public static readonly Request_TabChanged = 3;\r\n\r\n data: any;\r\n requestID: number;\r\n\r\n constructor(requestID: number = 0, data: any = null)\r\n {\r\n this.data = data;\r\n this.requestID = requestID;\r\n }\r\n}","import { HttpClient } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { FormBuilder, Validators } from '@angular/forms';\r\nimport { Util } from \"@app/utils/util\";\r\nimport { map, mergeMap } from \"rxjs/operators\";\r\nimport { ApiService } from \"../api/api.service\";\r\nimport { OrderStatusType } from \"../enums/order-status-type.enum\";\r\nimport { Transaction } from \"../transaction/transaction\";\r\nimport { TransactionDocument } from \"./transaction-document\";\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class TransactionDocumentService extends ApiService\r\n{\r\n get editorForm()\r\n {\r\n let form = new FormBuilder();\r\n let grpFields = form.group({\r\n uid: [],\r\n name: [, Validators.required],\r\n fileName: [, Validators.required],\r\n issuedBy: [, Validators.required],\r\n issuedDate: [],\r\n statusType: [],\r\n fileNameUID: [],\r\n importPermit: [],\r\n documentOther: [],\r\n expirationDate: [],\r\n transactionUID: [],\r\n documentTypeUID: [, Validators.required],\r\n documentDesignationType: []\r\n });\r\n\r\n return grpFields;\r\n }\r\n\r\n constructor(httpClient: HttpClient)\r\n {\r\n super(httpClient, \"transaction-document\");\r\n }\r\n\r\n public upload(file: File, data: TransactionDocument)\r\n {\r\n const uploadData = new FormData();\r\n uploadData.append(file.name, file);\r\n\r\n return this.postFile(\"upload\", uploadData).pipe(\r\n map(d1 =>\r\n {\r\n data.fileName = d1.fileName;\r\n data.fileNameUID = d1.fileNameUID;\r\n\r\n return d1;\r\n }),\r\n mergeMap(d2 =>\r\n {\r\n return this.save(data);\r\n })\r\n );\r\n }\r\n\r\n public update(data: TransactionDocument)\r\n {\r\n return this.save(data);\r\n }\r\n\r\n public canUploadDocument(order: Transaction)\r\n {\r\n return Util.isEmpty(order) ||\r\n (order.statusType != OrderStatusType.Cancelled &&\r\n order.statusType != OrderStatusType.Suspended);\r\n }\r\n}","import { IAfterGuiAttachedParams, ICellRendererParams } from '@ag-grid-enterprise/all-modules';\r\nimport { Component } from \"@angular/core\";\r\nimport { GridCellBoolean } from \"@app/shared/ag-grid-helpers/models/grid-cell-boolean.model\";\r\nimport { AgRendererComponent } from \"ag-grid-angular\";\r\n\r\n@Component(\r\n {\r\n styleUrls: [\"./grid-cell-boolean-renderer.scss\"],\r\n templateUrl: \"./grid-cell-boolean-renderer.html\"\r\n })\r\nexport class GridCellBooleanRenderer implements AgRendererComponent\r\n{\r\n public icon: string = null;\r\n public bools: GridCellBoolean;\r\n public color: string;\r\n public label: string;\r\n public toolTip: string;\r\n\r\n private cellParams: ICellRendererParams;\r\n\r\n agInit(params): void\r\n {\r\n this.bools = params.bools;\r\n\r\n if (params.value == true)\r\n {\r\n this.icon = this.bools.trueOption.icon;\r\n this.color = this.bools.trueOption.color;\r\n this.label = this.bools.trueOption.label;\r\n this.toolTip = this.bools.trueOption.toolTip;\r\n }\r\n\r\n if (params.value == false)\r\n {\r\n this.icon = this.bools.falseOption.icon;\r\n this.color = this.bools.falseOption.color;\r\n this.label = this.bools.falseOption.label;\r\n this.toolTip = this.bools.falseOption.toolTip;\r\n }\r\n\r\n this.cellParams = params;\r\n }\r\n\r\n refresh(params): boolean\r\n {\r\n this.cellParams = params;\r\n return true;\r\n }\r\n\r\n afterGuiAttached?(params?: IAfterGuiAttachedParams): void\r\n {\r\n }\r\n}","export default \"\\r\\n
\\r\\n {{ label }}\\r\\n
\";","export default \"\";","export enum OrderDocumentStatusType\r\n{\r\n Approved = 1,\r\n Pending = 2,\r\n New = 7,\r\n UnderReview = 10,\r\n Declined = 12\r\n}","import { Component, Input, OnInit, ViewChild } from \"@angular/core\";\r\nimport { AuthService, BaseComponent, ProfileType, PurchaserDocumentService, Transaction, TransactionDocument } from \"@app/data\";\r\nimport { DocumentDesignationType } from \"@app/data/enums/document-designation-type.enum\";\r\nimport { EntityType } from \"@app/data/enums/entity-type.enum\";\r\nimport { OrderDocumentStatusType } from \"@app/data/enums/order-document-status-type\";\r\nimport { TransactionDocumentService } from \"@app/data/transaction-document/transaction-document.service\";\r\nimport { DocumentEditComponent } from \"@app/shared/documents/document-edit/document-edit.component\";\r\nimport { NgbModal } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { FileSaverService } from \"ngx-filesaver\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\nimport { DocumentPreviewService } from \"../document-preview/document-preview.service\";\r\n\r\n@Component({\r\n selector: \"purchaser-document-list\",\r\n styleUrls: [\"../../purchaser/purchaser-common/purchaser-common.scss\"],\r\n templateUrl: \"./purchaser-document-list.component.html\",\r\n})\r\nexport class PurchaserDocumentListComponent extends BaseComponent implements OnInit\r\n{\r\n @ViewChild(\"dialogDoc\")\r\n dialogDoc: DocumentEditComponent;\r\n\r\n @Input()\r\n listType: number;\r\n\r\n // This is temp until Admin has tested\r\n public get canView(): boolean\r\n {\r\n return (this.authService?.profile?.profileType == ProfileType.admin);\r\n }\r\n\r\n public static readonly ListType_Admin = 0;\r\n public static readonly ListType_Order = 1;\r\n public static readonly ListType_Generic = 2;\r\n\r\n public readonly noteEntityType = EntityType.Purchaser;\r\n\r\n public docs;\r\n public adminType = PurchaserDocumentListComponent.ListType_Admin;\r\n public docEditType;\r\n public orderDetails: Transaction;\r\n\r\n constructor(toastrService: ToastrService,\r\n public modalService: NgbModal,\r\n private authService: AuthService,\r\n private docViewService: DocumentPreviewService,\r\n private tranDocService: TransactionDocumentService,\r\n private purchaseDocServ: PurchaserDocumentService,\r\n private fileSaverService: FileSaverService)\r\n {\r\n super(toastrService);\r\n\r\n this.title = \"Purchaser Documents\";\r\n this.apiService = this.tranDocService;\r\n this.modalService = this.modalService;\r\n }\r\n\r\n ngOnInit(): void\r\n {\r\n switch (this.listType)\r\n {\r\n case PurchaserDocumentListComponent.ListType_Admin:\r\n case PurchaserDocumentListComponent.ListType_Generic:\r\n this.docEditType = DocumentEditComponent.EditType_Purchaser;\r\n break;\r\n\r\n case PurchaserDocumentListComponent.ListType_Order:\r\n this.parentUID = this.data.uid;\r\n this.docEditType = DocumentEditComponent.EditType_Order;\r\n this.orderDetails = this.data;\r\n break;\r\n }\r\n\r\n this.getDocs();\r\n }\r\n\r\n public canAdd()\r\n {\r\n if (this.readOnly)\r\n {\r\n return false;\r\n }\r\n\r\n if (this.listType == PurchaserDocumentListComponent.ListType_Order)\r\n {\r\n return this.tranDocService.canUploadDocument(this.orderDetails);\r\n }\r\n\r\n return true;\r\n }\r\n\r\n public canEdit(document)\r\n {\r\n if (this.listType == PurchaserDocumentListComponent.ListType_Admin || this.listType == PurchaserDocumentListComponent.ListType_Generic)\r\n {\r\n return true;\r\n }\r\n\r\n return document.statusType == OrderDocumentStatusType.New;\r\n }\r\n\r\n public onAdd()\r\n {\r\n this.dialogDoc.openAdd();\r\n }\r\n\r\n public onEdit(data)\r\n {\r\n this.dialogDoc.openEdit(data);\r\n }\r\n\r\n public onView(doc: TransactionDocument): void\r\n {\r\n let path = this.tranDocService.buildUrl(\"download-pdf\");\r\n let fileName = `${path}?fileNameUID=${doc.fileNameUID}`;\r\n\r\n this.docViewService.openConvert(fileName, this.title);\r\n }\r\n\r\n public onDownload(doc: TransactionDocument): void\r\n {\r\n this.tranDocService.getFile(\"download\", doc.fileNameUID).subscribe(\r\n retRes =>\r\n {\r\n this.fileSaverService.save(retRes, doc.fileName);\r\n },\r\n errRes => this.error(\"Failed to download document\"));\r\n }\r\n\r\n public getDesignationClass(doc)\r\n {\r\n if (doc.documentDesignationType == DocumentDesignationType.Active || doc.documentDesignationType === DocumentDesignationType.Approved)\r\n {\r\n return \"badge-success\";\r\n }\r\n\r\n return doc.documentDesignationType == DocumentDesignationType.UnderReview ? \"badge-warning\" : \"badge-primary\";\r\n }\r\n\r\n public onDocumentUpdate()\r\n {\r\n this.getDocs();\r\n }\r\n\r\n private getDocs()\r\n {\r\n let filter = null;\r\n\r\n if (this.listType == PurchaserDocumentListComponent.ListType_Admin)\r\n {\r\n filter = { purchaserUID: this.parentUID };\r\n }\r\n\r\n switch (this.listType)\r\n {\r\n case PurchaserDocumentListComponent.ListType_Order:\r\n this.tranDocService.postGetList(\"list\", { transactionUID: this.orderDetails.uid }).subscribe(\r\n retRes => this.plugDocs(retRes),\r\n errRes => this.error(errRes));\r\n break;\r\n\r\n case PurchaserDocumentListComponent.ListType_Admin:\r\n case PurchaserDocumentListComponent.ListType_Generic:\r\n this.purchaseDocServ.list(filter).subscribe(\r\n retRes => this.plugDocs(retRes),\r\n errRes => this.error(errRes));\r\n break;\r\n }\r\n }\r\n\r\n private plugDocs(docs): void\r\n {\r\n this.docs = docs.results\r\n\r\n if (this.update)\r\n {\r\n this.update.emit(this.docs);\r\n }\r\n }\r\n}","export default \"\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
{{ item.name }}
\\r\\n \\r\\n
\\r\\n Review Status: {{ item.designation?.name }}\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
{{ item.issuedBy }}
\\r\\n
\\r\\n
\\r\\n \\r\\n
{{ item.issuedDate | DateFormatter }}
\\r\\n
\\r\\n
\\r\\n \\r\\n
{{ item.expirationDate | DateFormatter }}
\\r\\n
\\r\\n
\\r\\n \\r\\n
{{ item.documentType.name }}
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
{{ item.documentOther }}
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\";","import { Pipe, PipeTransform } from \"@angular/core\";\r\nimport { DateHelper } from \"@app/utils/date-helper\";\r\nimport { Util } from \"@app/utils/util\";\r\nimport * as moment from \"moment\";\r\n\r\n@Pipe({\r\n name: \"DateFormatter\",\r\n pure: true\r\n})\r\nexport class DateFormatter implements PipeTransform\r\n{\r\n public static readonly Now = \"NOW\";\r\n public static readonly FormatTime = \"hh:mm A\";\r\n public static readonly FormatDefault = \"YYYY-MM-DD\";\r\n public static readonly FormatAmerican = \"MM/DD/YYYY hh:mm A\";\r\n public static readonly FormatDateTime = \"YYYY-MM-DD hh:mm A\";\r\n public static readonly FormatDateTimeMil = \"YYYY-MM-DD HH:mm\";\r\n public static readonly FormatAmericanDate = \"MM/DD/YYYY\";\r\n\r\n transform(inDate: any, displayFormat = DateFormatter.FormatDefault): string\r\n {\r\n if (Util.isEmpty(inDate))\r\n {\r\n return \"\";\r\n }\r\n\r\n let outDate;\r\n\r\n if (inDate == DateFormatter.Now)\r\n {\r\n outDate = new Date();\r\n }\r\n else\r\n {\r\n outDate = DateHelper.makeDate(inDate);\r\n\r\n if (outDate == null)\r\n {\r\n return \"\";\r\n }\r\n }\r\n\r\n return moment(outDate).format(displayFormat);\r\n }\r\n}","import { Component, ViewChild } from \"@angular/core\";\r\nimport { ActivatedRoute } from \"@angular/router\";\r\nimport { AppService } from \"@app/app.service\";\r\nimport { AuthService, ProfileType, PurchaserDealerConnect, PurchaserDealerConnectService } from \"@app/data\";\r\nimport { DealerConnectCommon } from \"@app/data/purchaser-dealer-connect/purchaser-dealer-connect-common\";\r\nimport { GridBase } from \"@app/shared/ag-grid-helpers/ag-grid-base\";\r\nimport { GridHelpers } from \"@app/shared/ag-grid-helpers/grid-helper\";\r\nimport { GridColumnCustom } from \"@app/shared/ag-grid-helpers/models/grid-column-custom.model\";\r\nimport { GridColumnIcon } from \"@app/shared/ag-grid-helpers/models/grid-column-icon.model\";\r\nimport { GridColumnMerchant } from \"@app/shared/ag-grid-helpers/models/grid-column-merchant\";\r\nimport { GridColumnPurchaser } from \"@app/shared/ag-grid-helpers/models/grid-column-purchaser\";\r\nimport { GridColumnStatus } from \"@app/shared/ag-grid-helpers/models/grid-column-status\";\r\nimport { GridColumn, GridColumnType } from \"@app/shared/ag-grid-helpers/models/grid-column.model\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\nimport { PurchaserDealerConnectDetailsComponent } from \"../purchaser-dealer-connect-details/purchaser-dealer-connect-details.component\";\r\n\r\n@Component({\r\n styleUrls: [\"./purchaser-dealer-connect-list.component.scss\"],\r\n templateUrl: \"./purchaser-dealer-connect-list.component.html\"\r\n})\r\nexport class PurchaserDealerConnectListComponent extends GridBase\r\n{\r\n @ViewChild(\"dialogDetails\")\r\n dialogDetails: PurchaserDealerConnectDetailsComponent;\r\n\r\n public readonly profileTypes = ProfileType;\r\n\r\n public userRole: number;\r\n\r\n constructor(toastrService: ToastrService,\r\n private appService: AppService,\r\n private activeRoute: ActivatedRoute,\r\n private authService: AuthService,\r\n private dealConnServ: PurchaserDealerConnectService)\r\n {\r\n super(toastrService, dealConnServ);\r\n\r\n this.title = \"DealerConnect\";\r\n this.userRole = this.activeRoute.snapshot.data.userType;\r\n this.appService.pageTitle = this.title;\r\n\r\n this.setupGrid();\r\n }\r\n\r\n private setupGrid()\r\n {\r\n this.setServerPath(\"list\");\r\n\r\n this.addColumn(new GridColumnStatus(DealerConnectCommon.TradeStatuses));\r\n\r\n if (this.userRole != this.profileTypes.customer)\r\n {\r\n this.addColumn(new GridColumnMerchant(\"customer.displayName\", \"customer.uid\"));\r\n }\r\n\r\n this.addColumn(new GridColumnPurchaser(\"purchaser.displayName\", \"purchaser.uid\"));\r\n this.addColumn(new GridColumn(\"country.name\", \"Country\"));\r\n\r\n if (this.userRole == this.profileTypes.customer)\r\n {\r\n this.addColumn(new GridColumnCustom(\"purchaser.productsOfInterest\", \"Products of Interest\", { minWidth: 100 }));\r\n }\r\n\r\n if (this.userRole == ProfileType.admin)\r\n {\r\n this.addColumn(new GridColumn(\"createdDate\", \"Created\", GridColumnType.Date));\r\n this.addColumn(new GridColumn(\"decisionDate\", \"Decision\", GridColumnType.Date));\r\n }\r\n\r\n this.addColumn(new GridColumnIcon([ GridHelpers.MakeViewIcon(this.onDetail.bind(this)) ]));\r\n\r\n this.rowDoubleClick(this.onDetail.bind(this));\r\n }\r\n\r\n private onDetail(agData): void\r\n {\r\n this.dialogDetails.openDetail(agData);\r\n }\r\n}","export default \"
\\r\\n \\r\\n

{{ title }}

\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\";","export default \".orders-title {\\n display: -ms-flexbox;\\n display: flex;\\n -ms-flex-align: center;\\n align-items: center;\\n}\\n\\n.orders-title h4 {\\n -ms-flex-positive: 1;\\n flex-grow: 1;\\n}\\n\\n.restrict-grid {\\n max-width: 75rem;\\n}\\n\";","import { AuthService } from '@app/data';\r\nimport { FormGroup } from \"@angular/forms\";\r\n\r\nexport class Util\r\n{\r\n public static readonly KeyCode_Enter = 13;\r\n\r\n public static readonly BadDate = \"Invalid Date\";\r\n public static readonly DOM_Space = \" \";\r\n public static readonly BlankImage = \"data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=\";\r\n\r\n public static roundTo(value: number, decimals: number)\r\n {\r\n let mult = \"1\".padEnd(decimals + 1, \"0\");\r\n let multNum = parseInt(mult);\r\n let roundIt = Math.round((value + Number.EPSILON) * multNum) / multNum;\r\n\r\n let retNum = roundIt.toString();\r\n let broken = retNum.split(\".\");\r\n\r\n if (broken.length == 1)\r\n {\r\n broken.push(\"\");\r\n }\r\n\r\n if (decimals == 0)\r\n {\r\n return broken[0];\r\n }\r\n\r\n return Util.substitute(\"{0}.{1}\", broken[0], broken[1].padEnd(decimals, \"0\"));\r\n }\r\n\r\n public static replaceAll(source: string, search: string, replaceWith: string)\r\n {\r\n if (Util.isEmpty(source))\r\n {\r\n return \"\";\r\n }\r\n\r\n source = source.toString();\r\n\r\n var regX = new RegExp(search, \"g\");\r\n\r\n return source.replace(regX, replaceWith);\r\n }\r\n\r\n public static substitute(...format)\r\n {\r\n let args = Array.prototype.slice.call(arguments, 1);\r\n\r\n return format[0].replace(/{(\\d+)}/g, function (match, number)\r\n {\r\n return typeof args[number] !== \"undefined\" ? args[number] : match;\r\n });\r\n }\r\n\r\n public static isEmpty(testObj: any): boolean\r\n {\r\n if (typeof testObj == \"undefined\" || testObj == undefined || testObj == null || testObj == \"\" || testObj === Infinity)\r\n {\r\n return true;\r\n }\r\n\r\n if (typeof testObj == \"boolean\")\r\n {\r\n return (testObj == false);\r\n }\r\n\r\n if (testObj instanceof Array)\r\n {\r\n return (testObj.length == 0);\r\n }\r\n\r\n if (testObj instanceof Map)\r\n {\r\n return (testObj.size == 0);\r\n }\r\n\r\n let str = testObj.toString().toLowerCase().trim();\r\n\r\n if (str == \"\" || str == \"0\" || str == \"false\" || str == \" \" || str == \"0000-00-00\" || str == \"NaN\")\r\n {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n public static enumToKeyValueArray(derEnum)\r\n {\r\n let keys = Object.keys(derEnum);\r\n let vals = Object.values(derEnum);\r\n let outArray = [];\r\n\r\n for (let lp = 0; lp < (vals.length / 2); lp++)\r\n {\r\n outArray.push({ key: vals[lp], value: keys[lp] });\r\n }\r\n\r\n return outArray;\r\n }\r\n\r\n public static reindexArray(fixArray)\r\n {\r\n if (fixArray == null)\r\n {\r\n return null;\r\n }\r\n\r\n // This will re-index the array. Kinda lame\r\n return fixArray.filter(elm => elm);\r\n }\r\n\r\n public static fixTags(text: string): string\r\n {\r\n if (Util.isEmpty(text))\r\n {\r\n return Util.DOM_Space;\r\n }\r\n\r\n text = Util.replaceAll(text, \"<\", \"<\");\r\n text = Util.replaceAll(text, \">\", \">\");\r\n text = Util.replaceAll(text, \"\\r\", \"\");\r\n text = Util.replaceAll(text, \"\\n\", \"
\");\r\n text = Util.replaceAll(text, \"\\\"\", \""\");\r\n\r\n return text;\r\n }\r\n\r\n // Hacky way to get a string from a Blob synchronously. Taken from https://stackoverflow.com/a/27208593/1324653\r\n public static blobToString(blobData: Blob): string\r\n {\r\n let uri = URL.createObjectURL(blobData);\r\n let req = new XMLHttpRequest();\r\n\r\n req.open('GET', uri, false);\r\n req.send();\r\n\r\n URL.revokeObjectURL(uri);\r\n\r\n let ui8 = new Uint8Array(req.response.length);\r\n\r\n for ( let lp = 0; lp < req.response.length; ++lp)\r\n {\r\n ui8[lp] = req.response.charCodeAt(lp);\r\n }\r\n\r\n return new TextDecoder().decode(ui8);\r\n }\r\n\r\n public static parseError(message: any): string\r\n {\r\n if (typeof message != \"object\")\r\n {\r\n return message;\r\n }\r\n\r\n if (message instanceof Blob)\r\n {\r\n return Util.blobToString(message);\r\n }\r\n\r\n if (message instanceof Array)\r\n {\r\n let newMess = [];\r\n\r\n for (let lp = 0; lp < message.length; lp++)\r\n {\r\n newMess.push(message[lp]);\r\n }\r\n\r\n return newMess.join(\"
\");\r\n }\r\n\r\n if (\"errors\" in message)\r\n {\r\n let newMess = [];\r\n\r\n for (let dude in message.errors)\r\n {\r\n newMess.push(message.errors[dude]);\r\n }\r\n\r\n return newMess.join(\"
\");\r\n }\r\n\r\n if (\"title\" in message)\r\n {\r\n return message.title;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n public static MakeName(nameData: any, boldDefault: boolean = true): string\r\n {\r\n if (Util.isEmpty(nameData))\r\n {\r\n return Util.DOM_Space;\r\n }\r\n\r\n let name = [];\r\n\r\n if (nameData.hasOwnProperty(\"firstName\") && !Util.isEmpty(nameData.firstName))\r\n {\r\n name.push(nameData.firstName);\r\n }\r\n\r\n if (nameData.hasOwnProperty(\"middleName\") && !Util.isEmpty(nameData.middleName))\r\n {\r\n name.push(nameData.middleName);\r\n }\r\n\r\n if (nameData.hasOwnProperty(\"lastName\") && !Util.isEmpty(nameData.lastName))\r\n {\r\n name.push(nameData.lastName);\r\n }\r\n\r\n let outName = name.join(\" \");\r\n\r\n if (boldDefault)\r\n {\r\n let defCont = (nameData.hasOwnProperty(\"isDefault\") && !Util.isEmpty(nameData.isDefault));\r\n\r\n if (defCont)\r\n {\r\n return `${outName}`;\r\n }\r\n }\r\n\r\n return outName;\r\n }\r\n\r\n public static WhatsWrongWithForm(form: FormGroup): void\r\n {\r\n let conts = Object.keys(form.controls);\r\n\r\n for (let key of conts)\r\n {\r\n let item = form.get(key);\r\n\r\n if (!item.valid)\r\n {\r\n console.warn(key);\r\n console.warn(item.errors);\r\n }\r\n }\r\n }\r\n\r\n public static DataStorage =\r\n {\r\n MaxStorageSize: 5000000,\r\n exists: function(name)\r\n {\r\n return (localStorage.getItem(name) !== null);\r\n },\r\n\r\n get: function(name)\r\n {\r\n if (Util.isEmpty(Storage))\r\n {\r\n return null;\r\n }\r\n\r\n if (localStorage[name])\r\n {\r\n return JSON.parse(localStorage.getItem(name));\r\n }\r\n\r\n return null;\r\n },\r\n\r\n set: function(name, data)\r\n {\r\n if (Util.isEmpty(Storage))\r\n {\r\n return true;\r\n }\r\n\r\n let taken = this.spaceTaken();\r\n\r\n data = JSON.stringify(data);\r\n\r\n if (taken + data.length > this.MaxStorageSize)\r\n {\r\n console.warn(`Cannot store data (${name}) in localStorage. Maximum size exceeded ${this.MaxStorageSize}`);\r\n return false;\r\n }\r\n\r\n localStorage.setItem(name, data);\r\n return true;\r\n },\r\n\r\n delete: function(name)\r\n {\r\n localStorage.removeItem(name);\r\n },\r\n\r\n clear: function()\r\n {\r\n if (Util.isEmpty(Storage))\r\n {\r\n return true;\r\n }\r\n\r\n localStorage.clear();\r\n\r\n return true;\r\n },\r\n spaceTaken: function()\r\n {\r\n var len = 0;\r\n\r\n for (var key in window.localStorage)\r\n {\r\n if (window.localStorage.hasOwnProperty(key))\r\n {\r\n len += window.localStorage[key].length;\r\n }\r\n }\r\n\r\n return len;\r\n }\r\n };\r\n}","export enum PurchaserStatusType\r\n{\r\n Delete = -2,\r\n NotFound = -1,\r\n Approved = 1,\r\n Pending = 2,\r\n New = 7,\r\n Inactive = 9,\r\n PendingReview = 10,\r\n OnHold = 11,\r\n Denied = 12\r\n}","import { Component } from \"@angular/core\";\r\nimport { CommonSettings } from \"@app/shared/common-settings\";\r\nimport { GlobalIcons } from '@app/shared/GlobalIcons';\r\nimport { ContactFormatter } from \"@app/utils/contact-formatter\";\r\nimport { Util } from \"@app/utils/util\";\r\nimport { AgRendererComponent } from \"ag-grid-angular\";\r\nimport { ICellRendererParams } from \"ag-grid-community\";\r\n\r\n@Component({\r\n styleUrls: [\"../../../styles/address.scss\"],\r\n templateUrl: \"./grid-cell-address.html\",\r\n})\r\nexport class GridCellAddressRenderer implements AgRendererComponent\r\n{\r\n public readonly Icons = GlobalIcons;\r\n\r\n public setWidth: string;\r\n public googleLink: string;\r\n public addressText: string;\r\n\r\n private field: string;\r\n private cellParams: ICellRendererParams;\r\n\r\n constructor()\r\n {\r\n }\r\n\r\n agInit(params)\r\n {\r\n this.field = params.field;\r\n this.cellParams = params;\r\n\r\n if (Util.isEmpty(params.width))\r\n {\r\n this.setWidth = \"100%\";\r\n }\r\n else\r\n {\r\n this.setWidth = params.width + \"px\";\r\n }\r\n\r\n let addy = this.field == null ? params.data : params.data[this.field];\r\n let addForm = new ContactFormatter(addy);\r\n\r\n this.googleLink = addForm.googleLink();\r\n this.addressText = addForm.getContact();\r\n }\r\n\r\n refresh(params): boolean\r\n {\r\n this.cellParams = params;\r\n return true;\r\n }\r\n\r\n public onMap(): void\r\n {\r\n CommonSettings.openAddressWindow(this.googleLink);\r\n }\r\n}","export default \"
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\";","export const environment =\r\n{\r\n apiUrl: \"https://easyexport-web.azurefd.net/api\",\r\n production: true,\r\n experianToken: \"62770241-8649-4ed0-bd71-c25e86a24c97\",\r\n auth0:\r\n {\r\n domain: \"login.easyexport.net\",\r\n clientId: \"h4lqz0mUQf31d55YuuqI06GltnXf0I24\"\r\n },\r\n goolgeMaps:\r\n {\r\n key: \"AIzaSyD8T7gVAJ5fHy3oruNIconmF6_-K8JsLwA\"\r\n }\r\n};","import { Injectable } from \"@angular/core\";\r\nimport { DateFormatter } from \"@app/shared/pipes/date-formatter.pipe\";\r\nimport { DateHelper } from '@app/utils/date-helper';\r\nimport { Util } from \"@app/utils/util\";\r\n\r\n@Injectable()\r\nexport class GridCellTextRender\r\n{\r\n private static FormatMoney = new Intl.NumberFormat(\"en-US\", { style: \"currency\", currency: \"USD\", useGrouping: true, minimumFractionDigits: 2 });\r\n private static FormatNumber = new Intl.NumberFormat(\"en-US\", { style: \"decimal\", useGrouping: true, minimumFractionDigits: 0, maximumFractionDigits: 0 });\r\n private static FormatDecimal = new Intl.NumberFormat(\"en-US\", { style: \"decimal\", useGrouping: true, minimumFractionDigits: 2, maximumFractionDigits: 4 });\r\n private static FormatPercent = new Intl.NumberFormat(\"en-US\", { style: \"percent\", minimumFractionDigits: 2 });\r\n\r\n public static FormatDate(dasDate)\r\n {\r\n if (Util.isEmpty(dasDate?.value))\r\n {\r\n return \"\";\r\n }\r\n\r\n return DateHelper.formatDate(dasDate.value);\r\n }\r\n\r\n public static FormatDateTime(dasDate)\r\n {\r\n if (Util.isEmpty(dasDate?.value))\r\n {\r\n return \"\";\r\n }\r\n\r\n return DateHelper.formatDate(dasDate.value, DateFormatter.FormatDateTime);\r\n }\r\n\r\n public static MoneyCellRenderer(params: any, defaultValue = Util.DOM_Space)\r\n {\r\n let val = GridCellTextRender.getValue(params);\r\n\r\n if (val == null)\r\n {\r\n return defaultValue;\r\n }\r\n\r\n return GridCellTextRender.FormatMoney.format(val);\r\n }\r\n\r\n public static NumberCellRenderer(params: any, defaultValue = Util.DOM_Space)\r\n {\r\n let val = GridCellTextRender.getValue(params);\r\n\r\n if (val == null)\r\n {\r\n return defaultValue;\r\n }\r\n\r\n return GridCellTextRender.FormatNumber.format(val);\r\n }\r\n\r\n public static DecimalCellRenderer(params: any, defaultValue = Util.DOM_Space)\r\n {\r\n let val = GridCellTextRender.getValue(params);\r\n\r\n if (val == null)\r\n {\r\n return defaultValue;\r\n }\r\n\r\n return GridCellTextRender.FormatDecimal.format(val);\r\n }\r\n\r\n public static PercentCellRenderer(params: any, defaultValue = Util.DOM_Space)\r\n {\r\n let val = GridCellTextRender.getValue(params);\r\n\r\n if (val == null)\r\n {\r\n return defaultValue;\r\n }\r\n\r\n return GridCellTextRender.FormatPercent.format(val);\r\n }\r\n\r\n public static EmailCellRenderer(params: any, defaultValue = Util.DOM_Space)\r\n {\r\n let val = GridCellTextRender.getValue(params);\r\n\r\n if (val == null)\r\n {\r\n return defaultValue;\r\n }\r\n\r\n return `${val}`;\r\n }\r\n\r\n public static PhoneCellRenderer(params: any, defaultValue = Util.DOM_Space)\r\n {\r\n let val = GridCellTextRender.getValue(params);\r\n\r\n if (val == null)\r\n {\r\n return defaultValue;\r\n }\r\n\r\n return `${val}`;\r\n }\r\n\r\n public static LinkCellRenderer(params: any, defaultValue = Util.DOM_Space)\r\n {\r\n let val = GridCellTextRender.getValue(params);\r\n\r\n if (val == null)\r\n {\r\n return defaultValue;\r\n }\r\n\r\n return `${val}`;\r\n }\r\n\r\n public static PurchaserCellRenderer(params: any)\r\n {\r\n if (params.node.data.purchaser)\r\n {\r\n\r\n let name = params.node.data.purchaser.displayName;\r\n let type = params.node.data.purchaser.purchaserTypeName;\r\n\r\n return `
${name} ${type}
`;\r\n }\r\n\r\n return params.value;\r\n }\r\n\r\n public static ContactName(params)\r\n {\r\n let contact;\r\n\r\n if (params.hasOwnProperty(\"data\"))\r\n {\r\n contact = params.data;\r\n }\r\n else\r\n {\r\n contact = params.value;\r\n }\r\n\r\n if (Util.isEmpty(contact))\r\n {\r\n return Util.DOM_Space;\r\n }\r\n\r\n return Util.MakeName(contact);\r\n }\r\n\r\n private static getValue(params: any)\r\n {\r\n if (Util.isEmpty(params))\r\n {\r\n return null;\r\n }\r\n\r\n if (typeof params == \"number\")\r\n {\r\n return params;\r\n }\r\n\r\n if (params.hasOwnProperty(\"value\"))\r\n {\r\n return params.value;\r\n }\r\n\r\n return null;\r\n }\r\n}","export class GoogleMapsCoordinates\r\n{\r\n latitude: number;\r\n longitude: number;\r\n\r\n constructor(latitude: number = -1, longitude: number = -1)\r\n {\r\n this.latitude = latitude;\r\n this.longitude = longitude;\r\n }\r\n}","import { Component } from \"@angular/core\";\r\nimport { GridFilterCustom } from \"@app/shared/ag-grid-helpers/filters/grid-filter-custom\";\r\nimport { GridFilter, GridFilterStorage } from \"@app/shared/ag-grid-helpers/models/grid-filter.model\";\r\nimport { Util } from \"@app/utils/util\";\r\nimport { AgFilterComponent } from \"ag-grid-angular\";\r\nimport { IDoesFilterPassParams } from \"ag-grid-community\";\r\n\r\n@Component({\r\n styleUrls: [\"../../../styles/gridfilter.scss\"],\r\n templateUrl: \"./grid-dropdown-filter.component.html\"\r\n})\r\nexport class GridDropDownFilter extends GridFilterCustom implements AgFilterComponent\r\n{\r\n public label: string;\r\n public itemList: any;\r\n public idElement: string;\r\n public selectedID: any;\r\n public displayElement: string;\r\n\r\n private subObj: string;\r\n private subUID: string;\r\n private filterField: string;\r\n\r\n constructor()\r\n {\r\n super();\r\n }\r\n\r\n agInit(params: any): void\r\n {\r\n this.initFilter(params);\r\n\r\n this.label = params.label;\r\n this.itemList = params.items;\r\n this.idElement = params.idElement;\r\n this.filterField = params.filterField ?? params.field;\r\n this.displayElement = params.displayElement;\r\n\r\n if (this.filterField.indexOf(\".\") == -1)\r\n {\r\n this.subObj = null;\r\n this.subUID = null;\r\n return;\r\n }\r\n\r\n let broken = this.filterField.split(\".\");\r\n\r\n this.subObj = broken[0];\r\n this.subUID = broken[1];\r\n }\r\n\r\n isFilterActive(): boolean\r\n {\r\n return !Util.isEmpty(this.selectedID);\r\n }\r\n\r\n doesFilterPass(params: IDoesFilterPassParams): boolean\r\n {\r\n if (this.isServerSide)\r\n {\r\n return true;\r\n }\r\n\r\n if (this.subObj == null)\r\n {\r\n return this.selectedID == params.data[this.filterField];\r\n }\r\n\r\n let dude = params.data[this.subObj];\r\n\r\n if (!dude)\r\n {\r\n return false;\r\n }\r\n\r\n return (dude[this.subUID] == this.selectedID);\r\n }\r\n\r\n getModel()\r\n {\r\n if (this.selectedID == null)\r\n {\r\n return null;\r\n }\r\n\r\n return new GridFilterStorage(this.filterField, new GridFilter(this.selectedID));\r\n }\r\n\r\n setModel(model: any)\r\n {\r\n this.selectedID = model?.gridFilter?.filter;\r\n }\r\n\r\n public onFilterClear()\r\n {\r\n this.selectedID = null;\r\n this.applyAndClose();\r\n }\r\n\r\n public onFilterApply()\r\n {\r\n this.applyAndClose();\r\n }\r\n}","export default \"
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n {{ item[displayElement] }}\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\";","import { HttpClient } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { ApiService } from \"../api/api.service\";\r\nimport { ShopOrderStatus } from \"./shop-order-status\";\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class ShopOrderStatusService extends ApiService\r\n{\r\n constructor(httpClient: HttpClient)\r\n {\r\n super(httpClient, \"order-manual-entry\");\r\n }\r\n}","import { HttpClient } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { FormBuilder, Validators } from \"@angular/forms\";\r\nimport { ApiService } from \"../api/api.service\";\r\nimport { ShopOrder } from \"./shop-order\";\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class ShopOrderService extends ApiService\r\n{\r\n public get dataForm()\r\n {\r\n let fb = new FormBuilder();\r\n let grp = fb.group(\r\n {\r\n stage: [],\r\n poNumber: [, Validators.required],\r\n customerUID: [],\r\n purchaseDate: [, Validators.required],\r\n purchaserUID: [, Validators.required],\r\n billingAddressUID: [, Validators.required],\r\n shippingAddressUID: [, Validators.required],\r\n });\r\n\r\n return grp;\r\n }\r\n\r\n constructor(httpClient: HttpClient)\r\n {\r\n super(httpClient, \"order-manual-entry\");\r\n }\r\n}","import { AfterViewInit, Component, ElementRef, OnInit, TemplateRef, ViewChild } from \"@angular/core\";\r\nimport { ActivatedRoute, Router } from \"@angular/router\";\r\nimport { AppService } from \"@app/app.service\";\r\nimport { CustomerService, ProductService, ProfileType, PurchaserAddressService, PurchaserAddressType, PurchaserService, Transaction } from \"@app/data\";\r\nimport { OrderStatusType } from \"@app/data/enums/order-status-type.enum\";\r\nimport { ShopOrderProduct } from \"@app/data/orders/shop-order-product\";\r\nimport { ShopOrderStatusService } from \"@app/data/orders/shop-order-status.service\";\r\nimport { ShopOrderService } from \"@app/data/orders/shop-order.service\";\r\nimport { ShopPostMessageService } from \"@app/data/orders/shop-post-message.service\";\r\nimport { GridBase } from \"@app/shared/ag-grid-helpers/ag-grid-base\";\r\nimport { GridHelpers } from \"@app/shared/ag-grid-helpers/grid-helper\";\r\nimport { GridColumnCustom } from \"@app/shared/ag-grid-helpers/models/grid-column-custom.model\";\r\nimport { GridColumnIcon } from \"@app/shared/ag-grid-helpers/models/grid-column-icon.model\";\r\nimport { GridColumn, GridColumnType } from \"@app/shared/ag-grid-helpers/models/grid-column.model\";\r\nimport { CommonSettings } from '@app/shared/common-settings';\r\nimport { ConfirmationService, IConfirmationOptions } from \"@app/shared/confirmation/confirmation.service\";\r\nimport { DocumentEditComponent } from \"@app/shared/documents/document-edit/document-edit.component\";\r\nimport { OrderDataHelper } from '@app/shared/orders/order-data.helper';\r\nimport { DateFormatter } from '@app/shared/pipes/date-formatter.pipe';\r\nimport { ContactFormatter } from \"@app/utils/contact-formatter\";\r\nimport { DateHelper } from '@app/utils/date-helper';\r\nimport { Util } from \"@app/utils/util\";\r\nimport { NgbModal } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { NgSelectComponent } from \"@ng-select/ng-select\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\nimport { OrderProductBulkComponent } from \"./order-product-bulk/order-product-bulk.component\";\r\nimport { OrderProductComponent } from \"./order-product/order-product.component\";\r\nimport { PurchaserAddDialogComponent } from \"./purchaser-add-dialog/purchaser-add-dialog.component\";\r\n\r\n@Component({\r\n selector: \"order-manual-entry\",\r\n styleUrls: [\"./order-manual-entry.component.scss\"],\r\n templateUrl: \"./order-manual-entry.component.html\"\r\n})\r\nexport class OrderManualEntryComponent extends GridBase implements OnInit, AfterViewInit\r\n{\r\n @ViewChild(\"obscure\")\r\n obscure: ElementRef;\r\n\r\n @ViewChild(\"obEnd\")\r\n obEnd: ElementRef;\r\n\r\n @ViewChild(\"obStart\")\r\n obStart: ElementRef;\r\n\r\n @ViewChild(\"dialogDocs\")\r\n dialogDocs: TemplateRef;\r\n\r\n @ViewChild(\"dialogBulk\")\r\n dialogBulk: OrderProductBulkComponent;\r\n\r\n @ViewChild(\"dialogPurchaser\")\r\n dialogPurchaser: PurchaserAddDialogComponent;\r\n\r\n @ViewChild(\"dialogProductEntry\")\r\n dialogProductEntry: OrderProductComponent;\r\n\r\n @ViewChild(\"selectMerchant\")\r\n selectMerchant: NgSelectComponent;\r\n\r\n @ViewChild(\"selectPurchaser\")\r\n selectPurchaser: NgSelectComponent;\r\n\r\n @ViewChild(\"selectAddressBill\")\r\n selectAddressBill: NgSelectComponent;\r\n\r\n @ViewChild(\"selectAddressShip\")\r\n selectAddressShip: NgSelectComponent;\r\n\r\n public get merchantUID()\r\n {\r\n return this.getValue(\"customerUID\");\r\n }\r\n\r\n public get canAction()\r\n {\r\n if (this.blockUI.isActive)\r\n {\r\n return true;\r\n }\r\n\r\n return this.dataForm.valid && this.products?.length > 0;\r\n }\r\n\r\n public get canAddProduct()\r\n {\r\n return this.userRole != this.profileTypes.admin || (this.userRole == this.profileTypes.admin && this.merchantUID);\r\n }\r\n\r\n public get canChangeDate()\r\n {\r\n return (this.userRole == this.profileTypes.admin);\r\n }\r\n\r\n public get orderTotal()\r\n {\r\n let tots = 0;\r\n\r\n this.gridData?.forEach(elm => tots += elm.total);\r\n\r\n return tots;\r\n }\r\n\r\n public readonly orderState_Create = OrderDataHelper.OrderState_Create;\r\n public readonly orderState_Validate = OrderDataHelper.OrderState_Validate;\r\n\r\n private readonly OrderLevelPart = \"ALL\";\r\n\r\n public addDocs: boolean;\r\n public products = [];\r\n public userRole: number;\r\n public purchasers;\r\n public docEditType = DocumentEditComponent.EditType_Manual;\r\n public addressBill;\r\n public addressShip;\r\n public goodMessage: string;\r\n public currentState = OrderDataHelper.OrderState_Validate;\r\n public errorMessage: string;\r\n public orderDetails: Transaction;\r\n public missingProduct = false;\r\n\r\n private currentMerch: string = null;\r\n\r\n constructor(toastrService: ToastrService,\r\n public customerServ: CustomerService,\r\n public modalService: NgbModal,\r\n public purchaserServ: PurchaserService,\r\n private router: Router,\r\n private prodServ: ProductService,\r\n private appService: AppService,\r\n private activeRoute: ActivatedRoute,\r\n private shopOrderServ: ShopOrderService,\r\n private confirmService: ConfirmationService,\r\n private purchaserAddyServ: PurchaserAddressService,\r\n private shopOrderStatusServ: ShopOrderStatusService,\r\n private shopPostMessageServ: ShopPostMessageService)\r\n {\r\n super(toastrService, shopOrderServ);\r\n\r\n this.title = \"New Order\";\r\n this.dataForm = this.shopOrderServ.dataForm;\r\n this.autoHandleLoading = false;\r\n this.appService.pageTitle = this.title;\r\n\r\n this.setupGrid();\r\n }\r\n\r\n ngAfterViewInit(): void\r\n {\r\n if (this.userRole != ProfileType.admin)\r\n {\r\n return;\r\n }\r\n\r\n let beg = this.obStart.nativeElement.offsetTop;\r\n let end = this.obEnd.nativeElement.clientHeight;\r\n let wid = this.obStart.nativeElement.offsetWidth;\r\n let hit = (this.obEnd.nativeElement.offsetTop - beg) + end;\r\n\r\n this.obscure.nativeElement.style.top = `${beg}px`;\r\n this.obscure.nativeElement.style.width = `${wid}px`;\r\n this.obscure.nativeElement.style.height = `${hit}px`;\r\n }\r\n\r\n ngOnInit(): void\r\n {\r\n this.userRole = this.activeRoute.snapshot.data.userType;\r\n OrderDataHelper.userRole = this.userRole;\r\n\r\n this.customerServ.getLookup();\r\n this.purchaserServ.getPurchaserLookup().add(() => this.purchasers = this.purchaserServ.lookupList);\r\n\r\n this.setValue(\"purchaseDate\", DateHelper.makeNGBDate(DateFormatter.Now));\r\n\r\n if (this.userRole != ProfileType.admin)\r\n {\r\n this.getProducts();\r\n }\r\n }\r\n\r\n public canDeactivate()\r\n {\r\n if (this.dataForm.dirty)\r\n {\r\n return this.confirmService.YesNo(CommonSettings.DirtyFormConfirmationMessage);\r\n }\r\n\r\n return true;\r\n }\r\n\r\n public onGotoOrders(): void\r\n {\r\n this.moveToOrders();\r\n }\r\n\r\n public onPurchaserOpenAdd(): void\r\n {\r\n this.dialogPurchaser.openAdd(this.merchantUID);\r\n }\r\n\r\n public onPurchaserEnter(evtArg): void\r\n {\r\n let inText = evtArg.target.value;\r\n\r\n if (!Util.isEmpty(inText) && this.selectPurchaser.itemsList.filteredItems.length == 0)\r\n {\r\n this.dialogPurchaser.openWithSearch(this.merchantUID, inText);\r\n this.selectPurchaser.close();\r\n }\r\n }\r\n\r\n public onPurchaserAdd(purchaser): void\r\n {\r\n this.purchasers = [...this.purchasers, purchaser];\r\n\r\n let cnt = this.selectPurchaser.itemsList.items.length;\r\n\r\n // Give the DOM a sec to catch up\r\n setTimeout(() =>\r\n {\r\n this.selectPurchaser.select(this.selectPurchaser.itemsList.items[cnt]);\r\n this.onPurchaserSelect();\r\n }, 250);\r\n }\r\n\r\n public onMerchantChange(evtArg): void\r\n {\r\n if (evtArg.uid == this.currentMerch)\r\n {\r\n return;\r\n }\r\n\r\n this.getProducts();\r\n\r\n if (Util.isEmpty(this.products))\r\n {\r\n this.currentMerch = evtArg.uid;\r\n\r\n this.resetState();\r\n return;\r\n }\r\n\r\n let opts: IConfirmationOptions =\r\n {\r\n FunctionClose: () => this.merchantSetCurrent(),\r\n FunctionConfirm: () =>\r\n {\r\n this.currentMerch = evtArg.uid;\r\n\r\n this.resetState(true);\r\n this.merchantSetCurrent();\r\n }\r\n };\r\n\r\n this.confirmService.YesNo(\"Switching the Merchant will clear all data; continue?\", opts);\r\n }\r\n\r\n public onPurchaserSelect(): void\r\n {\r\n let pUID = this.getValue(\"purchaserUID\");\r\n\r\n this.addressBill = [];\r\n this.addressShip = [];\r\n this.resetState();\r\n\r\n this.purchaserAddyServ.getList(\"profile-list\", { purchaserUID: pUID }).subscribe((retRes) => this.splitAddress(retRes));\r\n }\r\n\r\n public onAddressChange(): void\r\n {\r\n this.resetState();\r\n }\r\n\r\n public onProductOpen(): void\r\n {\r\n this.dialogProductEntry.openDialog();\r\n }\r\n\r\n public onBulkOpen(): void\r\n {\r\n this.dialogBulk.openDialog(this.merchantUID);\r\n }\r\n\r\n public onBulkTemplate(): void\r\n {\r\n OrderDataHelper.getBulkTemplate();\r\n }\r\n\r\n public onBulkAddProducts(products): void\r\n {\r\n for (let prod of products)\r\n {\r\n this.onProductSave(prod);\r\n }\r\n }\r\n\r\n public onProductSave(saveProd): void\r\n {\r\n this.resetState();\r\n\r\n saveProd.total = saveProd.quantity * saveProd.amount;\r\n saveProd.issues = [];\r\n\r\n if (saveProd.lineNumber == null)\r\n {\r\n let existProd = this.products.find(elm => elm.partNumber == saveProd.partNumber);\r\n\r\n if (existProd == null || existProd.amount != saveProd.amount)\r\n {\r\n saveProd.lineNumber = this.products.length + 1;\r\n this.products.push(saveProd);\r\n }\r\n else\r\n {\r\n existProd.quantity += saveProd.quantity;\r\n\r\n existProd.total = existProd.amount * existProd.quantity;\r\n existProd.altDesc = saveProd.altDesc;\r\n existProd.description = saveProd.description;\r\n }\r\n }\r\n else\r\n {\r\n let idx = this.products.findIndex(elm => elm.lineNumber == saveProd.lineNumber);\r\n\r\n this.products[idx] = saveProd;\r\n }\r\n\r\n this.gridPopulate(this.products);\r\n }\r\n\r\n public onValidate()\r\n {\r\n this.blockOn(\"Validating...\");\r\n\r\n this.missingProduct = Util.isEmpty(this.gridData);\r\n\r\n if (this.invalid() || this.missingProduct)\r\n {\r\n this.blockOff();\r\n return;\r\n }\r\n\r\n this.resetState(false, false);\r\n\r\n this.setValue(\"stage\", OrderDataHelper.OrderState_Validate);\r\n\r\n this.submit(\"save-order\").add(() => this.saveProducts());\r\n }\r\n\r\n public onCreate(openDocs: boolean)\r\n {\r\n this.blockOn(\"Creating...\");\r\n\r\n this.addDocs = openDocs;\r\n this.resetState(false, false);\r\n\r\n this.setValue(\"stage\", OrderDataHelper.OrderState_Create);\r\n\r\n this.submit(\"save-order\").add(() => this.saveProducts());\r\n }\r\n\r\n public onDocumentDone()\r\n {\r\n this.close();\r\n this.moveToOrders();\r\n }\r\n\r\n private setupGrid()\r\n {\r\n let gridIcons =\r\n [\r\n GridHelpers.MakeEditIcon(this.onEdit.bind(this)),\r\n GridHelpers.MakeDeleteIcon(this.onDelete.bind(this))\r\n ];\r\n\r\n let colQty = new GridColumn(\"quantity\", \"Qty\", GridColumnType.Number);\r\n let colDesc = new GridColumn(\"description\", \"Part - Description\");\r\n let issueCols = [new GridColumnCustom(\"message\", \"Description\", { cellRenderer: OrderDataHelper.makeProductMessage })];\r\n\r\n colQty.width = 100;\r\n colDesc.cellRenderer = \"agGroupCellRenderer\";\r\n\r\n this.storageKey = \"OrderManualEntry\";\r\n this.gridOpts.masterDetail = true;\r\n this.gridOpts.detailRowHeight = 100;\r\n this.gridOpts.detailCellRendererParams =\r\n {\r\n template: \"
\",\r\n getDetailRowData: function(params)\r\n {\r\n params.successCallback(params.data.issues);\r\n },\r\n detailGridOptions:\r\n {\r\n rowHeight: 36,\r\n columnDefs: issueCols,\r\n pagination: false,\r\n animateRows: true,\r\n headerHeight: 0,\r\n paginationPageSize: 50,\r\n detailRowAutoHeight: true,\r\n onFirstDataRendered: function (params: any)\r\n {\r\n params.api.resetRowHeights();\r\n params.api.sizeColumnsToFit();\r\n }\r\n }\r\n };\r\n\r\n this.addColumn(colDesc);\r\n this.addColumn(colQty);\r\n this.addColumn(new GridColumn(\"amount\", \"Amount\", GridColumnType.Money));\r\n this.addColumn(new GridColumn(\"total\", \"Total\", GridColumnType.Money));\r\n this.addColumn(new GridColumnIcon(gridIcons));\r\n\r\n this.rowDoubleClick(this.onEdit.bind(this));\r\n }\r\n\r\n private getProducts(): void\r\n {\r\n let filt = null;\r\n\r\n if (OrderDataHelper.userRole == this.profileTypes.admin)\r\n {\r\n filt = { customerUID: this.merchantUID };\r\n }\r\n\r\n this.prodServ.getLookup(filt).add(() =>\r\n {\r\n this.dialogBulk.availableProducts = this.prodServ.lookupList;\r\n this.dialogProductEntry.availableProducts = this.prodServ.lookupList;\r\n });\r\n }\r\n\r\n private merchantSetCurrent()\r\n {\r\n let idx = this.selectMerchant.itemsList.items.findIndex(elm => elm.value[\"uid\"] == this.currentMerch);\r\n\r\n this.selectMerchant.select(this.selectMerchant.itemsList.items[idx]);\r\n }\r\n\r\n private onEdit(agData)\r\n {\r\n this.dialogProductEntry.openDialog(agData);\r\n }\r\n\r\n private onDelete(agData)\r\n {\r\n let opts: IConfirmationOptions =\r\n {\r\n FunctionConfirm: () => this.deleteIt(agData.lineNumber)\r\n };\r\n\r\n this.confirmService.Delete(`Are you sure you want to delete \"${agData.description}?\"`, opts);\r\n }\r\n\r\n private deleteIt(lineNum)\r\n {\r\n this.resetState();\r\n\r\n let idx = this.products.findIndex(elm => elm.lineNumber == lineNum);\r\n\r\n delete this.products[idx];\r\n\r\n if (this.products.length == 1)\r\n {\r\n this.products = [];\r\n this.gridPopulate(this.products);\r\n return;\r\n }\r\n\r\n this.products = Util.reindexArray(this.products);\r\n\r\n for (let lp in this.products)\r\n {\r\n this.products[lp].lineNumber = lp + 1;\r\n }\r\n\r\n this.gridPopulate(this.products);\r\n }\r\n\r\n private splitAddress(retRes)\r\n {\r\n let data = retRes.results;\r\n\r\n if (Util.isEmpty(data))\r\n {\r\n this.selectAddressBill.handleClearClick();\r\n this.selectAddressShip.handleClearClick();\r\n return;\r\n }\r\n\r\n let billIdx = 0;\r\n let shipIdx = 0;\r\n let contBuild = new ContactFormatter();\r\n let billDefault = null;\r\n let shipDefault = null;\r\n\r\n contBuild.delimiter = \" \";\r\n contBuild.includeName = false;\r\n\r\n for (let lp in data)\r\n {\r\n contBuild.contactData = data[lp];\r\n\r\n let addy = contBuild.getContact();\r\n\r\n switch (data[lp].addressType)\r\n {\r\n case PurchaserAddressType.Billing:\r\n if (data[lp].isDefault)\r\n {\r\n billDefault = data[lp].uid;\r\n }\r\n\r\n this.addressBill = [...this.addressBill, { uid: data[lp].uid, address: addy }];\r\n break;\r\n\r\n case PurchaserAddressType.Shipping:\r\n if (data[lp].isDefault)\r\n {\r\n shipDefault = data[lp].uid;\r\n }\r\n\r\n this.addressShip = [...this.addressShip, { uid: data[lp].uid, address: addy }];\r\n break;\r\n }\r\n }\r\n\r\n if (billDefault != null)\r\n {\r\n billIdx = this.addressBill.findIndex(elm => elm.uid == billDefault);\r\n }\r\n\r\n if (shipDefault != null)\r\n {\r\n shipIdx = this.addressShip.findIndex(elm => elm.uid == shipDefault);\r\n }\r\n\r\n setTimeout(() => this.setAddress(billIdx, shipIdx), 500);\r\n }\r\n\r\n private setAddress(billIdx, shipIdx)\r\n {\r\n if (this.addressBill?.length > 0)\r\n {\r\n this.selectAddressBill.select(this.selectAddressBill.itemsList.items[billIdx]);\r\n }\r\n\r\n if (this.addressShip?.length > 0)\r\n {\r\n this.selectAddressShip.select(this.selectAddressShip.itemsList.items[shipIdx]);\r\n }\r\n }\r\n\r\n private resetState(fullReset: boolean = false, resetState: boolean = true): void\r\n {\r\n if (fullReset)\r\n {\r\n this.products = [];\r\n this.dataForm.reset();\r\n\r\n this.gridPopulate(this.products);\r\n }\r\n else\r\n {\r\n this.products.forEach(elm => elm.issues = []);\r\n }\r\n\r\n if (resetState)\r\n {\r\n this.currentState = OrderDataHelper.OrderState_Validate;\r\n }\r\n\r\n this.goodMessage = null;\r\n this.errorMessage = null;\r\n this.missingProduct = false;\r\n\r\n this.rowsCollapseAll();\r\n }\r\n\r\n private saveProducts()\r\n {\r\n if (!this.data.uid)\r\n {\r\n this.blockOff();\r\n return;\r\n }\r\n\r\n let saveProds = [];\r\n\r\n for (let lp in this.products)\r\n {\r\n let addMe =\r\n {\r\n amount: this.products[lp].amount,\r\n quantity: this.products[lp].quantity,\r\n lineNumber: this.products[lp].lineNumber,\r\n partNumber: this.products[lp].partNumber,\r\n transactionUID: this.data.uid\r\n };\r\n\r\n if (this.products[lp].altDescription)\r\n {\r\n addMe[\"customerDescription\"] = this.products[lp].altDescription;\r\n }\r\n\r\n saveProds.push(addMe);\r\n }\r\n\r\n this.shopOrderStatusServ.postList(\"save-products\", saveProds).subscribe(\r\n retRes => this.checkOrder(),\r\n errRes => this.error(errRes));\r\n }\r\n\r\n private checkOrder()\r\n {\r\n let sendIt = { uid: this.data.uid, stage: this.currentState };\r\n\r\n this.shopPostMessageServ.post(\"status\", sendIt).subscribe(\r\n retRes => this.parseStatus(retRes),\r\n errRes => this.error(errRes));\r\n }\r\n\r\n private parseStatus(retRes)\r\n {\r\n if (Util.isEmpty(retRes))\r\n {\r\n this.blockOff();\r\n return;\r\n }\r\n\r\n let mess = retRes.messages;\r\n\r\n for (let dude of mess)\r\n {\r\n let prod = this.products.find(elm => elm.partNumber == dude.partNumber);\r\n\r\n if (prod && dude.hasOwnProperty(\"message\"))\r\n {\r\n prod.issues.push(dude);\r\n }\r\n }\r\n\r\n this.dataForm.markAsDirty();\r\n this.gridPopulate(this.products);\r\n\r\n for (let lp in this.products)\r\n {\r\n let cnt = this.products[lp].issues?.length ?? 0;\r\n\r\n if (cnt > 0)\r\n {\r\n this.rowExpand(parseInt(lp));\r\n }\r\n }\r\n\r\n if (retRes.statusID == OrderStatusType.Hold ||\r\n retRes.statusID == OrderStatusType.Active ||\r\n retRes.statusID == OrderStatusType.Cleared ||\r\n retRes.statusID == OrderStatusType.PartiallyCleared)\r\n {\r\n if (this.currentState == OrderDataHelper.OrderState_Create)\r\n {\r\n this.blockOff();\r\n\r\n this.orderDetails = retRes.order;\r\n this.dataForm.markAsPristine();\r\n\r\n if (this.addDocs)\r\n {\r\n this.open(this.dialogDocs, null, CommonSettings.DialogSize_XLarge);\r\n }\r\n else\r\n {\r\n this.moveToOrders();\r\n }\r\n return;\r\n }\r\n\r\n if (retRes.messages[0].partNumber == this.OrderLevelPart)\r\n {\r\n this.goodMessage = OrderDataHelper.makeProductMessage(retRes.messages[0]);\r\n }\r\n\r\n this.currentState = OrderDataHelper.OrderState_Create;\r\n this.blockOff();\r\n return;\r\n }\r\n\r\n if (retRes.messages[0].partNumber == this.OrderLevelPart)\r\n {\r\n this.errorMessage = OrderDataHelper.makeProductMessage(retRes.messages[0]);\r\n }\r\n\r\n this.blockOff();\r\n }\r\n\r\n private moveToOrders()\r\n {\r\n let nav: string;\r\n let url;\r\n\r\n switch (OrderDataHelper.userRole)\r\n {\r\n case ProfileType.admin:\r\n nav = \"/admin\";\r\n break;\r\n\r\n case ProfileType.customer:\r\n nav = \"/customer\";\r\n break;\r\n }\r\n\r\n if (this.orderDetails)\r\n {\r\n url = [`/${nav}/order-details`, this.orderDetails.uid]\r\n }\r\n else\r\n {\r\n url = [`/${nav}/orders`];\r\n }\r\n\r\n this.router.navigate(url);\r\n }\r\n}","export default \"\\r\\n
\\r\\n \\r\\n

{{ title }}

\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n Please select a Merchant\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
Merchant is required
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
Purchaser is required
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
Shipping Address is required
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
Billing Address is required
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
Order number is required
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
Purchase date is required
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Products\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n {{ orderTotal | currency }}\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
Order should have at least one product
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\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 \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
Purchaser:{{ orderDetails.purchaser.displayName }}
Order Number:{{ orderDetails.poNumber }}
\\r\\n
\\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 default \"form {\\n max-width: 70rem;\\n}\\n\\nfieldset {\\n max-width: 70rem;\\n}\\n\\n.no-product {\\n border-color: #d9534f;\\n}\\n\\n.order-wrapper {\\n border: 1px solid #ccc;\\n padding: 1rem;\\n position: relative;\\n background-color: #fff;\\n}\\n\\n.order-total label {\\n margin: 0rem;\\n}\\n\\n.order-total span {\\n font-size: 1.25rem;\\n font-weight: bold;\\n}\\n\\n.merchant-obscure {\\n left: 10px;\\n z-index: 1001;\\n position: absolute;\\n font-size: 3rem;\\n text-align: center;\\n font-weight: bold;\\n padding-top: 5rem;\\n background-color: rgba(222, 222, 222, 0.75);\\n}\\n\";","import { Observable } from 'rxjs';\r\nimport { HttpClient } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { ApiService } from \"../api/api.service\";\r\nimport { Dispatch } from \"./dispatch\";\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class DispatchService extends ApiService\r\n{\r\n constructor(httpClient: HttpClient)\r\n {\r\n super(httpClient, \"dispatch\");\r\n }\r\n\r\n public upload(file: File): Observable\r\n {\r\n let uploadData = new FormData();\r\n\r\n uploadData.append(file.name, file);\r\n\r\n return this.postFile(\"upload\", uploadData);\r\n }\r\n}","import { GridHelpers } from \"@app/shared/ag-grid-helpers/grid-helper\";\r\n\r\nexport class GridFilterCustom\r\n{\r\n public readonly FilterClasses =\r\n {\r\n Body: \"ag-filter-body-wrapper ag-simple-filter-body-wrapper\",\r\n Label: \"text-muted mb-1\",\r\n Button: \"ag-standard-button ag-filter-apply-panel-button\",\r\n Wrapper: \"ag-filter-wrapper ag-focus-managed\",\r\n TextInput: \"ag-input-field-input ag-text-field-input w-100\",\r\n InputWrapper: \"ag-filter-from ag-filter-filter ag-labeled ag-label-align-left ag-text-field ag-input-field d-flex flex-column align-items-start\",\r\n SelectInput: \"ag-wrapper ag-picker-field-wrapper w-100 px-1\",\r\n ButtonWrapper: \"d-flex justify-content-end border-top pt-3 mt-3\"\r\n };\r\n\r\n private hideFunc;\r\n private filterParams: any;\r\n\r\n public get isServerSide()\r\n {\r\n return (this.filterParams.rowModel == GridHelpers.RowModel_Server);\r\n }\r\n\r\n afterGuiAttached(evtArg)\r\n {\r\n this.hideFunc = evtArg.hidePopup;\r\n }\r\n\r\n public getParam(paramName: string, defaultValue: any = null): any\r\n {\r\n if (this.filterParams.hasOwnProperty(paramName))\r\n {\r\n return this.filterParams[paramName];\r\n }\r\n\r\n return defaultValue;\r\n }\r\n\r\n public initFilter(filterParams: any): void\r\n {\r\n this.filterParams = filterParams;\r\n }\r\n\r\n public closeFilter(): void\r\n {\r\n if (this.hideFunc)\r\n {\r\n this.hideFunc();\r\n }\r\n }\r\n\r\n public applyFilter(): void\r\n {\r\n this.filterParams.filterChangedCallback();\r\n }\r\n\r\n public applyAndClose()\r\n {\r\n this.closeFilter();\r\n this.applyFilter();\r\n }\r\n}","export class GridCellIcon\r\n{\r\n public icon: string;\r\n public toolTip: string;\r\n public onClick: any;\r\n public isVisible: any;\r\n\r\n constructor(icon?: string)\r\n {\r\n this.icon = icon;\r\n this.isVisible = true;\r\n }\r\n}","import { ProfileType } from '@app/data';\r\nimport { Component, OnInit, ViewChild } from \"@angular/core\";\r\nimport { ActivatedRoute } from \"@angular/router\";\r\nimport { AppService } from \"@app/app.service\";\r\nimport { GlobalIcons } from '@app/shared/GlobalIcons';\r\nimport { OrderDataHelper } from \"@app/shared/orders/order-data.helper\";\r\nimport { OrderRemoveProductReportComponent } from \"../report-remove-product/report-remove-product.component\";\r\nimport { OrderCartCheckReportComponent } from \"../report-cart-check/report-cart-check.component\";\r\n\r\n@Component({\r\n selector: \"order-reports-home\",\r\n styleUrls: [\"order-reports-home.component.scss\"],\r\n templateUrl: \"./order-reports-home.component.html\",\r\n})\r\nexport class OrderReportsComponent implements OnInit\r\n{\r\n @ViewChild(\"repCheck\")\r\n repCheck: OrderCartCheckReportComponent;\r\n\r\n @ViewChild(\"repRemove\")\r\n repRemove: OrderRemoveProductReportComponent;\r\n\r\n public readonly Icons = GlobalIcons;\r\n public readonly Report_CartCheck = { id: 1, name: \"Cart Check\" };\r\n public readonly Report_RemovedProduct = { id: 2, name: \"Removed Products\" };\r\n\r\n public title: string;\r\n public selectedReport: number;\r\n\r\n public reports: Array = [];\r\n\r\n constructor(private appService: AppService, private activeRoute: ActivatedRoute)\r\n {\r\n this.title = \"Order Reports\";\r\n OrderDataHelper.userRole = this.activeRoute.snapshot.data.userType;\r\n this.appService.pageTitle = this.title;\r\n\r\n if (OrderDataHelper.userRole == ProfileType.admin)\r\n {\r\n this.reports.push(this.Report_CartCheck);\r\n }\r\n\r\n this.reports.push(this.Report_RemovedProduct);\r\n }\r\n\r\n ngOnInit(): void\r\n {\r\n this.selectedReport = this.reports[0].id;\r\n }\r\n\r\n public onRefresh(): void\r\n {\r\n switch (this.selectedReport)\r\n {\r\n case this.Report_CartCheck.id:\r\n this.repCheck.gridRefresh();\r\n break;\r\n\r\n case this.Report_RemovedProduct.id:\r\n this.repRemove.gridRefresh();\r\n break;\r\n }\r\n }\r\n}","export default \"
\\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\";","export default \".report-select {\\n max-width: 20rem;\\n}\\n\";","import { Component, OnInit } from \"@angular/core\";\r\nimport { AppService } from \"@app/app.service\";\r\nimport { BaseComponent, Faq, FaqService } from \"@app/data\";\r\nimport { FAQCommon } from \"@app/data/faq/faq-common\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\n\r\n@Component({\r\n selector: \"app-purchaser-faq\",\r\n styleUrls: [\"faq-list.component.scss\"],\r\n templateUrl: \"./faq-list.component.html\"\r\n})\r\nexport class FaqListComponent extends BaseComponent implements OnInit\r\n{\r\n public faqList;\r\n\r\n constructor(\r\n toastrService: ToastrService,\r\n private appService: AppService,\r\n private faqService: FaqService)\r\n {\r\n super(toastrService);\r\n\r\n this.title = \"FAQ\\'s\";\r\n this.apiService = faqService;\r\n this.appService.pageTitle = this.title;\r\n }\r\n\r\n ngOnInit(): void\r\n {\r\n this.postGetlist().add(() => this.fixAnswers());\r\n }\r\n\r\n private fixAnswers()\r\n {\r\n FAQCommon.fixLinks(this.dataList);\r\n\r\n this.faqList = this.dataList;\r\n }\r\n}","export default \"
\\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 {{ row.question }}\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\";","export default \":host ::ng-deep ngb-accordion .card + .card {\\n margin-top: .75rem;\\n}\\n\";","import { Injectable } from '@angular/core';\r\nimport { Title } from '@angular/platform-browser';\r\n\r\n@Injectable()\r\nexport class AppService {\r\n constructor(private titleService: Title) {}\r\n\r\n // Set page title\r\n set pageTitle(value: string) {\r\n this.titleService.setTitle(`${value} - EasyExport®`);\r\n }\r\n\r\n // Check for RTL layout\r\n get isRTL() {\r\n return document.documentElement.getAttribute('dir') === 'rtl' ||\r\n document.body.getAttribute('dir') === 'rtl';\r\n }\r\n\r\n // Check if IE10\r\n get isIE10() {\r\n return (document as any).documentMode === 10;\r\n }\r\n\r\n // Layout navbar color\r\n get layoutNavbarBg() {\r\n return 'navbar-theme';\r\n }\r\n\r\n // Layout sidenav color\r\n get layoutSidenavBg() {\r\n return 'sidenav-theme';\r\n }\r\n\r\n // Layout footer color\r\n get layoutFooterBg() {\r\n return 'footer-theme';\r\n }\r\n\r\n // Animate scrollTop\r\n scrollTop(to: number, duration: number, element = document.scrollingElement || document.documentElement) {\r\n if (element.scrollTop === to) { return; }\r\n const start = element.scrollTop;\r\n const change = to - start;\r\n const startDate = +new Date();\r\n\r\n // t = current time; b = start value; c = change in value; d = duration\r\n const easeInOutQuad = (t, b, c, d) => {\r\n t /= d / 2;\r\n if (t < 1) { return c / 2 * t * t + b; }\r\n t--;\r\n return -c / 2 * (t * (t - 2) - 1) + b;\r\n };\r\n\r\n const animateScroll = () => {\r\n const currentDate = +new Date();\r\n const currentTime = currentDate - startDate;\r\n element.scrollTop = parseInt(easeInOutQuad(currentTime, start, change, duration), 10);\r\n if (currentTime < duration) {\r\n requestAnimationFrame(animateScroll);\r\n } else {\r\n element.scrollTop = to;\r\n }\r\n };\r\n\r\n animateScroll();\r\n }\r\n}\r\n","export default \"::ng-deep .slider-wrapper .ngx-slider {\\n width: 12rem;\\n margin-left: 1rem;\\n}\\n\\n::ng-deep .slider-wrapper .ngx-slider .ngx-slider-bar {\\n height: .1rem;\\n background: #0074BA;\\n}\\n\\n::ng-deep .slider-wrapper .ngx-slider .ngx-slider-selection {\\n background: #0074BA;\\n}\\n\\n::ng-deep .slider-wrapper .ngx-slider .ngx-slider-pointer {\\n top: auto;\\n /* to remove the default positioning */\\n width: .75rem;\\n height: 1.25rem;\\n bottom: 0;\\n border: 1px solid;\\n background-color: #0074BA;\\n border-top-left-radius: 3px;\\n border-top-right-radius: 3px;\\n}\\n\\n::ng-deep .slider-wrapper .ngx-slider .ngx-slider-pointer:after {\\n display: none;\\n}\\n\\n::ng-deep .slider-wrapper .ngx-slider .ngx-slider-bubble {\\n bottom: 1rem;\\n}\\n\\n::ng-deep .slider-wrapper .ngx-slider .ngx-slider-model-value {\\n font-size: .75rem;\\n}\\n\\n::ng-deep .slider-wrapper .ngx-slider .ngx-slider-limit {\\n font-size: .75rem;\\n font-weight: bold;\\n}\\n\\n::ng-deep .slider-wrapper .ngx-slider .ngx-slider-tick {\\n top: -1px;\\n width: 1px;\\n height: 1rem;\\n background: #0074BA;\\n margin-left: .25rem;\\n border-radius: 0;\\n}\\n\";","import { Component } from \"@angular/core\";\r\nimport { LookupService } from '@app/data';\r\nimport { GridFilter, GridFilterCondiction, GridFilterDataType, GridFilterStorage } from \"@app/shared/ag-grid-helpers/models/grid-filter.model\";\r\nimport { Util } from \"@app/utils/util\";\r\nimport { AgFilterComponent } from \"ag-grid-angular\";\r\nimport { IDoesFilterPassParams } from \"ag-grid-community\";\r\nimport { GridFilterCustom } from './../grid-filter-custom';\r\n\r\n@Component({\r\n styleUrls: [\"../../../styles/gridfilter.scss\"],\r\n templateUrl: \"./grid-address-filter.component.html\"\r\n})\r\nexport class GridAddressFilter extends GridFilterCustom implements AgFilterComponent\r\n{\r\n public readonly fieldCity = \"city\";\r\n public readonly fieldState = \"stateUID\";\r\n public readonly fieldStreet = \"street1\";\r\n public readonly fieldCountry = \"countryUID\";\r\n\r\n public inCity: string;\r\n public inStreet: string;\r\n public selectState: string;\r\n public selectCountry: string;\r\n\r\n public listStates\r\n public listCountries;\r\n\r\n private field: string;\r\n private prefixField: boolean = false;\r\n\r\n constructor(private lookupServ: LookupService)\r\n {\r\n super();\r\n }\r\n\r\n agInit(params: any): void\r\n {\r\n this.initFilter(params);\r\n\r\n this.field = this.getParam(\"field\");\r\n this.prefixField = this.getParam(\"prefixField\", false);\r\n\r\n this.lookupServ.getCountryList().add(() => this.loadCountries());\r\n }\r\n\r\n isFilterActive(): boolean\r\n {\r\n return (!Util.isEmpty(this.inCity) || !Util.isEmpty(this.inStreet) || this.selectState != null || this.selectCountry != null);\r\n }\r\n\r\n doesFilterPass(params: IDoesFilterPassParams): boolean\r\n {\r\n if (this.isServerSide)\r\n {\r\n return true;\r\n }\r\n\r\n let addy = (this.field == null ? params.data : params.data[this.field]);\r\n\r\n if (Util.isEmpty(addy))\r\n {\r\n return false;\r\n }\r\n\r\n let passCity: boolean;\r\n let passCoun: boolean;\r\n let passStat: boolean;\r\n let passStrt: boolean;\r\n\r\n let dataCity = addy[this.fieldCity];\r\n let dataCoun = addy[this.fieldCountry];\r\n let dataStat = addy[this.fieldState];\r\n let dataStrt = addy[this.fieldStreet];\r\n\r\n if (Util.isEmpty(this.inCity))\r\n {\r\n passCity = true;\r\n }\r\n else\r\n {\r\n if (Util.isEmpty(dataCity))\r\n {\r\n passCity = false;\r\n }\r\n else\r\n {\r\n passCity = dataCity.toLowerCase().indexOf(this.inCity.toLowerCase()) != -1;\r\n }\r\n }\r\n\r\n if (Util.isEmpty(this.inStreet))\r\n {\r\n passStrt = true;\r\n }\r\n else\r\n {\r\n if (Util.isEmpty(dataStrt))\r\n {\r\n passStrt = false;\r\n }\r\n else\r\n {\r\n passStrt = dataStrt.toLowerCase().indexOf(this.inStreet.toLowerCase()) != -1;\r\n }\r\n }\r\n\r\n if (this.selectCountry == null)\r\n {\r\n passCoun = true;\r\n }\r\n else\r\n {\r\n passCoun = (Util.isEmpty(dataCoun) || dataCoun == this.selectCountry);\r\n }\r\n\r\n if (this.selectState == null)\r\n {\r\n passStat = true;\r\n }\r\n else\r\n {\r\n passStat = (Util.isEmpty(dataStat) || dataStat == this.selectState);\r\n }\r\n\r\n return (passCity && passCoun && passStat && passStrt);\r\n }\r\n\r\n getModel()\r\n {\r\n let filt = new GridFilterStorage();\r\n\r\n if (!Util.isEmpty(this.inCity))\r\n {\r\n let name = this.getFieldName(this.fieldCity);\r\n\r\n filt.add(name, new GridFilter(this.inCity, GridFilterDataType.text, GridFilterCondiction.contains));\r\n }\r\n\r\n if (!Util.isEmpty(this.inStreet))\r\n {\r\n let name = this.getFieldName(this.fieldStreet);\r\n\r\n filt.add(name, new GridFilter(this.inStreet, GridFilterDataType.text, GridFilterCondiction.contains));\r\n }\r\n\r\n if (this.selectState)\r\n {\r\n let name = this.getFieldName(this.fieldState);\r\n\r\n filt.add(name, new GridFilter(this.selectState));\r\n }\r\n\r\n if (this.selectCountry)\r\n {\r\n let name = this.getFieldName(this.fieldCountry);\r\n\r\n filt.add(name, new GridFilter(this.selectCountry));\r\n }\r\n\r\n return filt;\r\n }\r\n\r\n private getFieldName(field: string): string\r\n {\r\n if (this.prefixField)\r\n {\r\n return `${this.field}.${field}`;\r\n }\r\n\r\n return field;\r\n }\r\n\r\n setModel(model: any)\r\n {\r\n let filter = model?.multiple;\r\n\r\n if (!filter)\r\n {\r\n this.inCity = null;\r\n this.inStreet = null;\r\n this.selectState = null;\r\n this.selectCountry = null;\r\n return;\r\n }\r\n\r\n for (let name in filter)\r\n {\r\n let val = filter[name].filter\r\n\r\n switch (name)\r\n {\r\n case this.fieldCity:\r\n case `${this.field}.${this.fieldCity}`:\r\n this.inCity = val;\r\n break;\r\n\r\n case this.fieldStreet:\r\n case `${this.field}.${this.fieldStreet}`:\r\n this.inStreet = val;\r\n break;\r\n\r\n case this.fieldState:\r\n case `${this.field}.${this.fieldState}`:\r\n this.selectState = val;\r\n break;\r\n\r\n case this.fieldCountry:\r\n case `${this.field}.${this.fieldCountry}`:\r\n this.selectCountry = val;\r\n this.onCountryChange();\r\n break;\r\n }\r\n }\r\n }\r\n\r\n public onCountryChange(): void\r\n {\r\n if (this.selectCountry == null)\r\n {\r\n this.selectState = null;\r\n return;\r\n }\r\n\r\n this.lookupServ.getCountryStateList(this.selectCountry).add(() =>\r\n {\r\n this.listStates = this.lookupServ.countryStateList;\r\n this.listStates.unshift({ uid: null, name: \"All\" });\r\n });\r\n }\r\n\r\n public onFilterClear()\r\n {\r\n this.inCity = null;\r\n this.inStreet = null;\r\n this.selectState = null;\r\n this.selectCountry = null;\r\n\r\n this.applyAndClose();\r\n }\r\n\r\n public onFilterApply()\r\n {\r\n this.applyAndClose();\r\n }\r\n\r\n private loadCountries()\r\n {\r\n this.listCountries = this.lookupServ.countryList;\r\n this.listCountries.unshift({ uid: null, name: \"All\" });\r\n }\r\n}","export default \"
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\";","export enum NotificationRequestStatus\r\n{\r\n Deleted = -2,\r\n PurchaserWorkingOnRegistration = 2,\r\n Complete = 4,\r\n RegistrationNotStarted = 7,\r\n RegistrationIsInactive = 9,\r\n AwaitingEasyExportApproval = 10\r\n}","import { Component, ViewEncapsulation } from \"@angular/core\";\r\nimport { ActivatedRoute, Router } from \"@angular/router\";\r\nimport { AppService } from \"@app/app.service\";\r\nimport { Transaction } from \"@app/data\";\r\nimport { NotificationRequestStatus } from \"@app/data/enums/notification-request-status-type.enum\";\r\nimport { OrderNotificationRequestService } from \"@app/data/orders/order-notification-request.service\";\r\nimport { GridBase } from \"@app/shared/ag-grid-helpers/ag-grid-base\";\r\nimport { GridHelpers } from \"@app/shared/ag-grid-helpers/grid-helper\";\r\nimport { GridColumnCustom } from \"@app/shared/ag-grid-helpers/models/grid-column-custom.model\";\r\nimport { GridColumnIcon } from \"@app/shared/ag-grid-helpers/models/grid-column-icon.model\";\r\nimport { GridColumnMerchant } from \"@app/shared/ag-grid-helpers/models/grid-column-merchant\";\r\nimport { GridColumnPurchaser } from \"@app/shared/ag-grid-helpers/models/grid-column-purchaser\";\r\nimport { GridColumnStatus } from \"@app/shared/ag-grid-helpers/models/grid-column-status\";\r\nimport { GridColumn, GridColumnType } from \"@app/shared/ag-grid-helpers/models/grid-column.model\";\r\nimport { ConfirmationService, IConfirmationOptions } from \"@app/shared/confirmation/confirmation.service\";\r\nimport { OrderDataHelper } from '@app/shared/orders/order-data.helper';\r\nimport { Util } from \"@app/utils/util\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\n\r\n@Component({\r\n styleUrls: [\"./order-notification-requests.component.scss\"],\r\n templateUrl: \"./order-notification-requests.component.html\",\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class OrderNoticiationRequestsComponent extends GridBase\r\n{\r\n constructor(toastrService: ToastrService,\r\n private router: Router,\r\n private appService: AppService,\r\n private activeRoute: ActivatedRoute,\r\n private confirmService: ConfirmationService,\r\n private notificationRequestServ: OrderNotificationRequestService)\r\n {\r\n super(toastrService, notificationRequestServ);\r\n\r\n OrderDataHelper.userRole = this.activeRoute.snapshot.data.userType;\r\n\r\n this.title = \"Notification Requests\";\r\n this.appService.pageTitle = this.title;\r\n\r\n this.setupGrid();\r\n }\r\n\r\n private setupGrid()\r\n {\r\n let gridIcons =\r\n [\r\n GridHelpers.MakeDeleteIcon(this.onDelete.bind(this), this.canDelete.bind(this))\r\n ];\r\n\r\n this.addColumn(new GridColumnStatus(OrderDataHelper.NotificationRequestStatuses));\r\n\r\n if (OrderDataHelper.userRole == this.profileTypes.admin)\r\n {\r\n this.addColumn(new GridColumnMerchant(\"customer.displayName\", \"customer.uid\"));\r\n }\r\n\r\n this.storageKey = \"NotificationRequest\";\r\n this.addColumn(new GridColumnPurchaser(\"purchaser.displayName\", \"purchaser.uid\"));\r\n this.addColumn(new GridColumn(\"purchaser.emailAddress\", \"Email\", GridColumnType.Email));\r\n this.addColumn(new GridColumn(\"purchaser.language.name\", \"Language\"));\r\n this.addColumn(new GridColumn(\"country.name\", \"Country\"));\r\n this.addColumn(new GridColumnCustom(\"purchaser.cellPhone1\", \"Phone\", { width: 100 }));\r\n this.addColumn(new GridColumn(\"createdDate\", \"Created\", GridColumnType.Date));\r\n this.addColumn(new GridColumn(\"requester\", \"Requester\"));\r\n this.addColumn(new GridColumnIcon(gridIcons));\r\n }\r\n\r\n private canDelete(agData)\r\n {\r\n return (agData.statusType != NotificationRequestStatus.Complete);\r\n }\r\n\r\n private onDelete(agData)\r\n {\r\n this.dataForm = this.makeForm(agData);\r\n\r\n let opts: IConfirmationOptions =\r\n {\r\n FunctionConfirm: () => this.deleteIt()\r\n };\r\n\r\n this.confirmService.YesNo(`You sure you want to delete \"${agData.purchaser.emailAddress}\"?`, opts);\r\n }\r\n\r\n private deleteIt()\r\n {\r\n this.delete().add(() => this.gridRefresh());\r\n }\r\n\r\n private canViewPurchaser(agData)\r\n {\r\n return !Util.isEmpty(agData.purchaser.uid);\r\n }\r\n\r\n private onPurchaserView(agData)\r\n {\r\n let nav;\r\n\r\n switch (OrderDataHelper.userRole)\r\n {\r\n case this.profileTypes.admin:\r\n nav = \"admin\";\r\n break;\r\n\r\n // TODO: Customers don't have access, should they?\r\n // case this.profileTypes.customer:\r\n // nav = \"customer\";\r\n // break;\r\n }\r\n\r\n this.router.navigate([`/${nav}/purchasers`, agData.purchaser.uid]);\r\n }\r\n}","export default \"
\\r\\n \\r\\n

{{ title }}

\\r\\n
\\r\\n\\r\\n\";","export default \".status-box-registrationnotstarted {\\n color: #f00 !important;\\n background-color: #ccc !important;\\n}\\n\\n.status-box-purchaserworkingonregistration {\\n color: #000 !important;\\n background-color: #ffc !important;\\n}\\n\\n.status-box-registrationisinactive {\\n color: #000 !important;\\n background-color: #ffece6 !important;\\n}\\n\\n.status-box-awaitingeasyexportapproval {\\n color: #000 !important;\\n background-color: #e6ffe6 !important;\\n}\\n\";","import { GridOptions } from \"@ag-grid-enterprise/all-modules\";\r\nimport { GlobalIcons } from \"@app/shared/GlobalIcons\";\r\nimport { Util } from \"@app/utils/util\";\r\nimport { GridCellIcon } from \"./models/grid-cell-icon.model\";\r\n\r\nexport class GridHelpers\r\n{\r\n public static readonly AlignRight = \"rightAligned\";\r\n public static readonly CacheBlockSize = 25;\r\n public static readonly ServerSideStore = \"partial\";\r\n\r\n public static readonly GridStateVersion = \"2.1\";\r\n\r\n public static readonly DOMLayout_Auto = \"autoHeight\";\r\n public static readonly DOMLayout_Normal = \"normal\";\r\n\r\n public static readonly StateKey_Filter = \"Filter\";\r\n public static readonly StateKey_Columns = \"Columns\";\r\n public static readonly StateKey_Version = \"Version\";\r\n\r\n public static readonly Theme = \"ag-theme-alpine\";\r\n public static readonly PageSize = 25;\r\n public static readonly DefaultRowHeight = 40;\r\n\r\n public static readonly Operator_Or = \"OR\";\r\n public static readonly Operator_And = \"AND\";\r\n\r\n public static readonly RowModel_Type = \"serverSide\";\r\n public static readonly RowModel_Client = \"ClientSideRowModel\";\r\n public static readonly RowModel_Server = \"ServerSideRowModel\";\r\n\r\n public static readonly ColumnPinned_Left = \"left\";\r\n public static readonly ColumnPinned_Right = \"right\";\r\n\r\n public static readonly SortDir_Ascending = \"asc\";\r\n public static readonly SortDir_Decending = \"desc\";\r\n\r\n public static readonly FilterType_Set = \"agSetColumnFilter\";\r\n public static readonly FilterType_Date = \"agDateColumnFilter\";\r\n public static readonly FilterType_Text = \"agTextColumnFilter\";\r\n public static readonly FilterType_Number = \"agNumberColumnFilter\";\r\n public static readonly FilterDefaultAction = { buttons: [\"reset\", \"apply\"], closeOnApply: true };\r\n\r\n public static GetGridDefaults(): GridOptions\r\n {\r\n let opts = Object.create(\r\n {\r\n domLayout: GridHelpers.DOMLayout_Auto,\r\n rowHeight: GridHelpers.DefaultRowHeight,\r\n columnDefs: [],\r\n pagination: true,\r\n animateRows: true,\r\n paginationPageSize: GridHelpers.PageSize,\r\n suppressCellSelection: true,\r\n suppressLoadingOverlay: true,\r\n enableCellTextSelection: true,\r\n defaultColDef:\r\n {\r\n filter: true,\r\n sortable: true,\r\n resizable: true\r\n }\r\n });\r\n\r\n return opts;\r\n }\r\n\r\n public static MakeEditIcon(clickFunction: any = null, visiblefunction: any = null): GridCellIcon\r\n {\r\n let edit = new GridCellIcon();\r\n\r\n edit.icon = GlobalIcons.Edit;\r\n edit.onClick = clickFunction;\r\n edit.toolTip = \"Edit\";\r\n edit.isVisible = visiblefunction ?? true;\r\n\r\n return edit;\r\n }\r\n\r\n public static MakeViewIcon(clickFunction: any = null, visiblefunction: any = null): GridCellIcon\r\n {\r\n let view = new GridCellIcon();\r\n\r\n view.icon = GlobalIcons.View;\r\n view.onClick = clickFunction;\r\n view.toolTip = \"View details\";\r\n view.isVisible = visiblefunction ?? true;\r\n\r\n return view;\r\n }\r\n\r\n public static MakeDeleteIcon(clickFunction: any = null, visiblefunction: any = null): GridCellIcon\r\n {\r\n let del = new GridCellIcon();\r\n\r\n del.icon = GlobalIcons.Trash;\r\n del.onClick = clickFunction;\r\n del.toolTip = \"Delete\";\r\n del.isVisible = visiblefunction ?? true;\r\n\r\n return del;\r\n }\r\n\r\n public static MakeDownloadIcon(clickFunction: any = null, visiblefunction: any = null): GridCellIcon\r\n {\r\n let del = new GridCellIcon();\r\n\r\n del.icon = GlobalIcons.Download;\r\n del.onClick = clickFunction;\r\n del.toolTip = \"Download\";\r\n del.isVisible = visiblefunction ?? true;\r\n\r\n return del;\r\n }\r\n\r\n public static FixSizes(grid)\r\n {\r\n // Ugly fix to make sure the grid is rendered before updating the column sizes\r\n setTimeout(() =>\r\n {\r\n grid.sizeColumnsToFit();\r\n grid.resetRowHeights();\r\n grid.redrawRows();\r\n }, 100);\r\n }\r\n\r\n public static StateSave(gridBase, filters = null)\r\n {\r\n let store = Util.DataStorage.get(gridBase.storageKey);\r\n\r\n if (store == null)\r\n {\r\n store = {};\r\n }\r\n\r\n if (filters == null)\r\n {\r\n filters = gridBase.mainGrid?.getFilterModel();\r\n }\r\n\r\n store[GridHelpers.StateKey_Filter] = filters;\r\n store[GridHelpers.StateKey_Columns] = gridBase.columnManager?.getColumnState();\r\n store[GridHelpers.StateKey_Version] = GridHelpers.GridStateVersion;\r\n\r\n Util.DataStorage.set(gridBase.storageKey, store);\r\n }\r\n\r\n public static StateLoad(gridBase)\r\n {\r\n let store = Util.DataStorage.get(gridBase.storageKey);\r\n\r\n if (store == null)\r\n {\r\n return;\r\n }\r\n\r\n let ver = store[GridHelpers.StateKey_Version];\r\n let colData = store[GridHelpers.StateKey_Columns];\r\n let filtData = store[GridHelpers.StateKey_Filter];\r\n\r\n if (ver == GridHelpers.GridStateVersion)\r\n {\r\n gridBase.mainGrid.setFilterModel(filtData);\r\n gridBase.columnManager.applyColumnState({ state: colData, applyOrder: true });\r\n }\r\n else\r\n {\r\n console.warn(`Grid State Version mismatch, no data loaded: Grid: ${gridBase.storageKey}\\tVersion: ${ver}\\tCurrent Version: ${GridHelpers.GridStateVersion}`);\r\n\r\n Util.DataStorage.delete(gridBase.storageKey);\r\n }\r\n }\r\n\r\n public static GridStateClear(gridBase)\r\n {\r\n gridBase.gridStateReset();\r\n }\r\n}","import { GridPurchaserFilter } from \"../filters/grid-purchaser-filter/grid-purchaser-filter.component\";\r\nimport { GridCellPurchaserRenderer } from \"../renderers/grid-cell-purchaser/grid-cell-purchaser\";\r\nimport { GridColumn } from \"./grid-column.model\";\r\n\r\nexport class PurchaserCellOptions\r\n{\r\n public showType: boolean = true;\r\n}\r\n\r\nexport class GridColumnPurchaser extends GridColumn\r\n{\r\n constructor(renderField: string, filterField: string, opts: PurchaserCellOptions = new PurchaserCellOptions())\r\n {\r\n super(renderField, \"Purchaser\");\r\n\r\n this.width = 225;\r\n this.filter = \"gridPurchaserFilter\";\r\n this.filterParams = { field: filterField };\r\n this.suppressSizeToFit = true;\r\n this.cellRendererParams = { options: opts };\r\n this.cellRendererFramework = GridCellPurchaserRenderer;\r\n\r\n this.registerComponents.push({ gridPurchaserFilter: GridPurchaserFilter });\r\n }\r\n}","import { Component, ElementRef, ViewChild } from \"@angular/core\";\r\nimport { PurchaserService } from \"@app/data\";\r\nimport { GridFilter, GridFilterStorage } from \"@app/shared/ag-grid-helpers/models/grid-filter.model\";\r\nimport { GlobalIcons } from \"@app/shared/GlobalIcons\";\r\nimport { Util } from \"@app/utils/util\";\r\nimport { AgFilterComponent } from \"ag-grid-angular\";\r\nimport { IDoesFilterPassParams } from \"ag-grid-community\";\r\nimport { GridFilterCustom } from \"../grid-filter-custom\";\r\n\r\n@Component({\r\n styleUrls: [\"../../../styles/gridfilter.scss\"],\r\n templateUrl: \"./grid-purchaser-filter.component.html\"\r\n})\r\nexport class GridPurchaserFilter extends GridFilterCustom implements AgFilterComponent\r\n{\r\n @ViewChild(\"listPurchasers\")\r\n listPurchasers: ElementRef;\r\n\r\n public readonly Icons = GlobalIcons;\r\n\r\n public purchaserUID;\r\n\r\n private subObj: string;\r\n private subUID: string;\r\n private filterField;\r\n\r\n constructor(public purchaserService: PurchaserService)\r\n {\r\n super();\r\n }\r\n\r\n agInit(params: any): void\r\n {\r\n this.initFilter(params);\r\n this.filterField = this.getParam(\"field\");\r\n\r\n this.purchaserService.getPurchaserLookup(false);\r\n\r\n if (this.filterField.indexOf(\".\") == -1)\r\n {\r\n this.subObj = null;\r\n this.subUID = null;\r\n return;\r\n }\r\n\r\n let broken = this.filterField.split(\".\");\r\n\r\n this.subObj = broken[0];\r\n this.subUID = broken[1];\r\n }\r\n\r\n isFilterActive(): boolean\r\n {\r\n return !Util.isEmpty(this.purchaserUID);\r\n }\r\n\r\n doesFilterPass(params: IDoesFilterPassParams): boolean\r\n {\r\n if (this.isServerSide)\r\n {\r\n return true;\r\n }\r\n\r\n if (this.subObj == null)\r\n {\r\n return this.purchaserUID == params.data[this.filterField];\r\n }\r\n\r\n let merch = params.data[this.subObj];\r\n\r\n if (!merch)\r\n {\r\n return false;\r\n }\r\n\r\n return merch[this.subUID] == this.purchaserUID;\r\n }\r\n\r\n getModel()\r\n {\r\n if (this.purchaserUID == null)\r\n {\r\n return null;\r\n }\r\n\r\n return new GridFilterStorage(this.filterField, new GridFilter(this.purchaserUID));\r\n }\r\n\r\n setModel(model: any)\r\n {\r\n this.purchaserUID = model?.gridFilter?.filter;\r\n }\r\n\r\n public onFilterClear(): void\r\n {\r\n this.purchaserUID = null;\r\n\r\n this.applyFilter();\r\n this.closeFilter();\r\n }\r\n\r\n public onFilterApply(): void\r\n {\r\n this.applyFilter();\r\n this.closeFilter();\r\n }\r\n}","export default \"
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\";","export enum PaymentType\r\n{\r\n Collect = 1,\r\n Prepaid = 2\r\n}","import { HttpClient } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { FormBuilder } from \"@angular/forms\";\r\nimport { ShipmentInstruction } from '@app/data/shipment/shipmentinstruction';\r\nimport { ApiService } from \"../api/api.service\";\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class ShipmentInstructionService extends ApiService\r\n{\r\n public get editorForm()\r\n {\r\n let form = new FormBuilder();\r\n let grpFields = form.group(\r\n {\r\n inBondCode: [],\r\n entryNumber: [],\r\n paymentType: [],\r\n packageType: [],\r\n loadingPier: [],\r\n billOfLading: [],\r\n portOfExport: [],\r\n inlandCarrier: [],\r\n forwardingAgent: [],\r\n grossWeightInKG: [],\r\n isContainerized: [],\r\n modeOfTransport: [],\r\n portOfUnloading: [],\r\n exportingCarrier: [],\r\n numberOfPackages: [],\r\n dateOfExportation: [],\r\n specialInstruction: [],\r\n shipmentReferenceNumber: [],\r\n carrierIdentificationCode: [],\r\n isRoutedExportTransaction: [],\r\n isShipperInsuranceRequested: [],\r\n isTransactionPartiesRelated: [],\r\n transportationReferenceNumber: []\r\n });\r\n\r\n return grpFields;\r\n }\r\n\r\n constructor(httpClient: HttpClient)\r\n {\r\n super(httpClient, \"shipment-instruction\");\r\n }\r\n}","import { DateHelper } from \"@app/utils/date-helper\";\r\nimport { PaymentType } from \"@app/data/enums/payment-type\";\r\nimport { ShipmentInstruction } from \"@app/data/shipment/shipmentinstruction\";\r\nimport { ShipmentInstructionCommodity } from \"@app/data/shipment/shipmentinstructioncommodity\";\r\nimport { DateFormatter } from \"@app/shared/pipes/date-formatter.pipe\";\r\nimport { PDFBuilder, WordWrapMethods } from \"@app/shared/reporting/pdfBuilder\";\r\nimport { ContactFormatter } from \"@app/utils/contact-formatter\";\r\nimport { Util } from \"@app/utils/util\";\r\n\r\nexport class ShipperLetterInstructionsGenerator\r\n{\r\n public docPDF: PDFBuilder;\r\n public sliData: ShipmentInstruction;\r\n public commodities: Array;\r\n\r\n private contBuild: ContactFormatter;\r\n private pageNumber: number = 1;\r\n\r\n constructor()\r\n {\r\n this.contBuild = new ContactFormatter();\r\n this.contBuild.delimiter = \"\\n\";\r\n }\r\n\r\n public generate()\r\n {\r\n this.docPDF = new PDFBuilder();\r\n this.docPDF.fontReset();\r\n this.docPDF.addCursiveFont();\r\n\r\n let formatter = new DateFormatter();\r\n\r\n let half = this.docPDF.pageWidth() / 2;\r\n let currY = 0;\r\n let forth = this.docPDF.pageWidth() / 4;\r\n let third = this.docPDF.pageWidth() / 3;\r\n let workH = 0;\r\n let workW = 0;\r\n let compDate = formatter.transform(this.sliData.dateSLICompleted);\r\n\r\n let size = this.pageTitle(\"SHIPPER'S LETTER OF INSTRUCTION\");\r\n\r\n this.docPDF.drawBox(0, size.height, PDFBuilder.DrawTo_End, PDFBuilder.DrawTo_End);\r\n\r\n currY += size.height;\r\n workH = 35;\r\n\r\n this.contBuild.contactData = this.sliData;\r\n this.contBuild.fieldPrefix = \"customer\";\r\n\r\n this.sliData[\"customerName\"] = this.sliData.companyName;\r\n\r\n this.docPDF.dataBox(0, currY, third, workH * 2, \"USPPI / EXPORTER\", this.contBuild.getContact(), { wrap: WordWrapMethods.Wrap });\r\n this.docPDF.dataBox(third, currY, third, workH, \"INLAND CARRIER\", this.sliData.inlandCarrier);\r\n this.docPDF.dataBox(third * 2, currY, third, workH, \"BILL OF LADING / AIR WAYBILL NO.\", this.sliData.billOfLading);\r\n\r\n currY += workH;\r\n\r\n this.docPDF.dataBox(third, currY, third, workH, \"DATE OF EXPORTATION\", DateHelper.formatDate(this.sliData.dateOfExportation));\r\n this.docPDF.dataBox(third * 2, currY, third, workH, \"TRANSPORTATION REFERENCE NO.\", this.sliData.transportationReferenceNumber);\r\n\r\n currY += workH;\r\n workH = 40;\r\n workW = third / 2;\r\n\r\n this.docPDF.dataBox(0, currY, workW, workH, \"USPPI EIN (IRS) NO.\", this.sliData.einNumber);\r\n this.relatedBlock(workW, currY, workW, workH, this.sliData.isTransactionPartiesRelated);\r\n\r\n currY += workH;\r\n workH = 110;\r\n this.contBuild.fieldPrefix = \"purchaser\";\r\n\r\n this.contactBox(0, currY, third, workH, \"ULTIMATE CONSIGNEE\", this.contBuild.getContact(), this.sliData.purchaserEmailAddress, this.sliData.purchaserPhone);\r\n\r\n currY += workH;\r\n this.contBuild.fieldPrefix = \"intermediateConsignee\";\r\n\r\n this.contactBox(0, currY, third, workH, \"INTERMEDIATE CONSIGNEE \", this.contBuild.getContact(), this.sliData.intermediateConsigneeEmailAddress, this.sliData.intermediateConsigneePhone);\r\n\r\n currY += workH;\r\n workH = 30;\r\n\r\n this.docPDF.dataBox(0, currY, third, workH, \"FORWARDING AGENT\", this.sliData.forwardingAgent);\r\n this.docPDF.dataBox(third, currY, third, workH, \"POINT (STATE) OF ORIGIN\", this.sliData.customerState);\r\n this.docPDF.dataBox(third * 2, currY, third, workH, \"COUNTRY OF ULTIMATE DESTINATION\", this.sliData.purchaserCountry);\r\n\r\n currY += workH;\r\n\r\n this.docPDF.dataBox(0, currY, forth, workH, \"LOADING PIER\", this.sliData.loadingPier);\r\n this.docPDF.dataBox(forth, currY, forth, workH, \"MODE OF TRANSPORT (Specify)\", this.sliData.modeOfTransport);\r\n this.docPDF.dataBox(forth * 2, currY, forth, workH, \"CARRIER IDENTIFICATION CODE\", this.sliData.carrierIdentificationCode);\r\n this.docPDF.dataBox(forth * 3, currY, forth, workH, \"SHIPMENT REFERENCE NO.\", this.sliData.shipmentReferenceNumber);\r\n\r\n currY += workH;\r\n\r\n this.docPDF.dataBox(0, currY, forth, workH, \"EXPORTING CARRIER\", this.sliData.exportingCarrier);\r\n this.docPDF.dataBox(forth, currY, forth, workH, \"PORT OF EXPORT\", this.sliData.portOfExport);\r\n this.docPDF.dataBox(forth * 2, currY, forth, workH, \"ENTRY NUMBER\", this.sliData.entryNumber);\r\n this.docPDF.yesNoBox(forth * 3, currY, forth, workH, \"HAZARDOUS MATERIALS\", this.sliData.isHazardousMaterial);\r\n\r\n currY += workH;\r\n\r\n this.docPDF.dataBox(0, currY, forth, workH, \"PORT OF UNLOADING (Vessel and air only)\", this.sliData.portOfUnloading);\r\n this.docPDF.yesNoBox(forth, currY, forth, workH, \"CONTAINERIZED (Vessel only)\", this.sliData.isContainerized);\r\n this.docPDF.dataBox(forth * 2, currY, forth, workH, \"IN BOND CODE\", this.sliData.inBondCode);\r\n this.docPDF.yesNoBox(forth * 3, currY, forth, workH, \"ROUTED EXPORT TRANSACTION\", this.sliData.isRoutedExportTransaction);\r\n\r\n currY += workH;\r\n workH = 20;\r\n\r\n this.shipMethodBlock(0, currY, half, workH, this.sliData.isAir);\r\n this.consolidateBlock(half, currY, half, workH);\r\n\r\n currY += workH;\r\n workH = 30;\r\n\r\n this.docPDF.dataBox(0, currY, third, workH, \"LICENSE NO./LICENSE EXCEPTION SYMBOL/AUTHORIZATION\", \"See detail below\");\r\n this.docPDF.dataBox(third, currY, 80, workH, \"ECCN (When required)\", \"See below\");\r\n this.docPDF.dataBox(third + 80, currY, 50, workH, \"# PACKAGES\", this.sliData.numberOfPackages);\r\n this.docPDF.dataBox(third + 130, currY, 75, workH, \"PACKAGE TYPE\", this.sliData.packageType);\r\n this.docPDF.dataBox(third + 205, currY, 70, workH, \"GROSS WEIGHT (kg)\", this.sliData.grossWeightInKG);\r\n this.docPDF.dataBox(third + 275, currY, PDFBuilder.DrawTo_End, workH, \"TOTAL VALUE\", \"$\" + this.sliData.totalValue);\r\n\r\n currY += workH;\r\n workH = 40;\r\n\r\n this.docPDF.dataBox(0, currY, third, workH, \"DULY AUTHORIZED OFFICER OR EMPLOYEE\", this.sliData.customerContact);\r\n this.finePrint(third, currY, third, workH, \"The USPPI authorizes the forwarder named above to act as forwarding agent for export control and customs purposes.\");\r\n this.paymentBlock(third * 2, currY, third, workH, this.sliData.paymentType);\r\n\r\n currY += workH;\r\n workH = 50;\r\n\r\n this.finePrint(0, currY, third * 2, workH, \"I certify that all statements made and all information contained herein are true and correct. I understand that civil and criminal penalties, including forfeiture and sale, may be imposed for making false or fraudulent statements herein, failing to provide the violation of U.S. laws on exportation (13 U.S.C. Sec. 305; 22 U.S.C. Sec. 401; 18 U.S.C. requested information or for Sec. 1001; 50 U.S.C. App 2410).\");\r\n this.deliverBlock(third * 2, currY, third, workH, this.sliData.isContactSender, this.sliData.isReturnToSender, this.sliData.isAbandoned);\r\n\r\n currY += workH;\r\n workH = 30;\r\n workW = third - 25;\r\n\r\n this.signature(0, currY, workW, workH, this.sliData.customerContact);\r\n this.finePrint(workW, currY, workW + 50, workH, \"Confidential - for use solely for official purposes authorized by the Secretary of Commerce (13 U.S.C. 301 (g).\");\r\n this.docPDF.yesNoBox(third * 2, currY, third, workH, \"SHIPPER REQUESTS INSURANCE\", this.sliData.isShipperInsuranceRequested);\r\n\r\n currY += workH;\r\n\r\n this.docPDF.dataBox(0, currY, workW, workH, \"TITLE\", this.sliData.customerTitle);\r\n this.finePrint(workW, currY, workW + 50, workH, \"Export shipments are subject to inspection by U.S. Customs Service and/or Office of Export Enforcement.\");\r\n this.docPDF.dataBox(third * 2, currY, third, 90, \"SPECIAL INSTRUCTIONS\", this.sliData.specialInstruction, { wrap: WordWrapMethods.Wrap });\r\n\r\n currY += workH;\r\n\r\n this.docPDF.dataBox(0, currY, workW, workH, \"DATE\", compDate);\r\n this.docPDF.dataBox(workW, currY, workW + 50, workH, \"AUTHENTICATION (When required)\");\r\n\r\n currY += workH;\r\n\r\n this.docPDF.dataBox(0, currY, workW, workH, \"TELEPHONE\", this.sliData.customerPhone);\r\n this.docPDF.dataBox(workW, currY, workW + 50, workH, \"E-MAIL ADDRESS\", this.sliData.customerEmail);\r\n\r\n currY += workH;\r\n workH = 45;\r\n\r\n this.disclaimer(currY);\r\n this.commodityPage();\r\n\r\n this.docPDF.putTotalPages(PDFBuilder.PageExpression);\r\n\r\n return this.docPDF.output(PDFBuilder.Output_Blob);\r\n }\r\n\r\n private commodityPage()\r\n {\r\n let marg = this.docPDF.pageMargins.left + this.docPDF.Box_Padding;\r\n let maxY = this.docPDF.pageHeight();\r\n let currY = this.packagePageHeader();\r\n let workH = 15;\r\n let lineW = this.docPDF.internal.pageSize.getWidth() - this.docPDF.pageMargins.right;\r\n let endText = lineW - this.docPDF.pageMargins.right;\r\n\r\n for (let lp = 0; lp < this.commodities.length; lp++)\r\n {\r\n let kg = Util.roundTo(this.commodities[lp].totalKilograms, 2);\r\n let oz = Util.roundTo(this.commodities[lp].totalOunces, 2);\r\n\r\n currY += workH;\r\n\r\n this.docPDF.line(this.docPDF.pageMargins.left, currY, lineW, currY);\r\n\r\n currY += 3;\r\n\r\n this.docPDF.outText(marg, currY, this.commodities[lp].exportType?.code);\r\n this.docPDF.outText(marg + 15, currY, this.commodities[lp].scheduleBandDescription, { width: 230 });\r\n this.makeUoM(marg + 245, currY, this.commodities[lp]);\r\n this.docPDF.outText(marg + 310, currY, this.commodities[lp].totalPounds);\r\n this.docPDF.outText(marg + 340, currY, oz);\r\n this.docPDF.outText(marg + 370, currY, kg);\r\n this.docPDF.outText(marg + 395, currY, this.commodities[lp].classification, { width: 50 });\r\n this.docPDF.outText(marg + 445, currY, this.commodities[lp].licenseNumber);\r\n this.docPDF.outText(endText, currY, \"$\" + this.commodities[lp].value, { align: \"right\" });\r\n\r\n if ((currY + workH + 3) > maxY)\r\n {\r\n currY = this.packagePageHeader();\r\n }\r\n }\r\n }\r\n\r\n private makeUoM(posX: number, posY: number, commodity: ShipmentInstructionCommodity)\r\n {\r\n if (!Util.isEmpty(commodity.uoM1Value))\r\n {\r\n let uom = Util.roundTo(commodity.uoM1Value, 0) + \" \" + commodity.uoM1;\r\n\r\n this.docPDF.outText(posX, posY, uom);\r\n }\r\n\r\n if (!Util.isEmpty(commodity.uoM2Value))\r\n {\r\n let uom = Util.roundTo(commodity.uoM2Value, 0) + \" \" + commodity.uoM2;\r\n\r\n this.docPDF.outText(posX + 30, posY, uom);\r\n }\r\n }\r\n\r\n private packagePageHeader()\r\n {\r\n this.docPDF.addPage();\r\n this.pageNumber++;\r\n\r\n let size = this.pageTitle(\"SHIPPER'S LETTER OF INSTRUCTION - CONTINUATION SHEET\");\r\n let currY = size.height;\r\n let third = this.docPDF.pageWidth() / 3;\r\n let workH = 110;\r\n\r\n this.docPDF.drawBox(0, currY, PDFBuilder.DrawTo_End, PDFBuilder.DrawTo_End);\r\n\r\n this.contBuild.fieldPrefix = \"customer\";\r\n this.docPDF.dataBox(0, currY, third, workH, \"USPPI / EXPORTER\", this.contBuild.getContact(), { wrap: WordWrapMethods.Wrap });\r\n\r\n this.contBuild.fieldPrefix = \"purchaser\";\r\n this.contactBox(third, currY, third, workH, \"ULTIMATE CONSIGNEE\", this.contBuild.getContact(), this.sliData.purchaserEmailAddress, this.sliData.purchaserPhone);\r\n\r\n this.contBuild.fieldPrefix = \"intermediateConsignee\";\r\n this.contactBox(third * 2, currY, third, workH, \"INTERMEDIATE CONSIGNEE \", this.contBuild.getContact(), this.sliData.intermediateConsigneeEmailAddress, this.sliData.intermediateConsigneePhone);\r\n\r\n currY += workH;\r\n workH = 25;\r\n\r\n this.headerBox(0, currY, 400, workH, \"SCHEDULE B NUMBER DESCRIPTION OF COMMODITIES\");\r\n this.docPDF.dataBox(400, currY, PDFBuilder.DrawTo_End, workH, \"SHIPMENT REFERENCE NO.\", this.sliData.shipmentReferenceNumber);\r\n\r\n currY += workH;\r\n workH = 30;\r\n\r\n this.headerBox(0, currY, 15, PDFBuilder.DrawTo_End, \"D/F\\nor\\nM\");\r\n this.headerBox(15, currY, 230, PDFBuilder.DrawTo_End, \"\\n\\nSCHEDULE B NUMBER / DESCRIPTION\");\r\n this.headerBox(245, currY, 60, PDFBuilder.DrawTo_End, \"\\n\\nQUANTITY\");\r\n this.headerBox(305, currY, 90, PDFBuilder.DrawTo_End, \"\\nWEIGHT\");\r\n this.headerBox(395, currY, 50, PDFBuilder.DrawTo_End, \"ECCN\\nOR\\nUSML\");\r\n this.headerBox(445, currY, 80, PDFBuilder.DrawTo_End, \"EXPORT LICENSE NO\\nOR\\nEXEMPTION/EXCEPTION\");\r\n this.headerBox(525, currY, PDFBuilder.DrawTo_End, PDFBuilder.DrawTo_End, \"VALUE\", \"U.S.dollars omit cents\\nSelling price or cost if not sold\");\r\n\r\n this.docPDF.fontSet(this.docPDF.Font_DefaultSize - 2);\r\n this.docPDF.setTextColor(this.docPDF.Color_Label);\r\n this.docPDF.text(\"lbs\", 320, currY + 35, { baseline: PDFBuilder.Baseline_Top });\r\n this.docPDF.text(\"oz\", 350, currY + 35, { baseline: PDFBuilder.Baseline_Top });\r\n this.docPDF.text(\"kg\", 380, currY + 35, { baseline: PDFBuilder.Baseline_Top });\r\n this.docPDF.setTextColor(this.docPDF.Color_Data);\r\n this.docPDF.fontReset();\r\n\r\n return currY + workH;\r\n }\r\n\r\n private pageTitle(title: string)\r\n {\r\n this.docPDF.fontSet(12, \"bold\");\r\n\r\n let maxX = this.docPDF.pageWidth();\r\n let textDim = this.docPDF.getTextDimensions(title);\r\n\r\n this.docPDF.text(title, maxX / 2, this.docPDF.pageMargins.top, { align: PDFBuilder.Align_Center });\r\n this.docPDF.fontReset();\r\n\r\n this.docPDF.text(`Page ${this.pageNumber} of {totalPages}`, maxX - 40, this.docPDF.pageMargins.top);\r\n\r\n return { width: maxX, height: textDim.h };\r\n }\r\n\r\n private headerBox(posX: number, posY: number, width: number, height: number, label: string, smallPrint = null)\r\n {\r\n let rect = this.docPDF.drawBox(posX, posY, width, height);\r\n\r\n rect.x += (rect.w / 2);\r\n\r\n this.docPDF.fontSet(this.docPDF.Font_DefaultSize - 2);\r\n this.docPDF.setTextColor(this.docPDF.Color_Label);\r\n\r\n this.docPDF.text(label, rect.x, rect.y, { baseline: PDFBuilder.Baseline_Top, align: PDFBuilder.Align_Center });\r\n\r\n let labDim = this.docPDF.getTextDimensions(label);\r\n\r\n this.docPDF.setTextColor(this.docPDF.Color_Data);\r\n this.docPDF.fontReset();\r\n\r\n if (smallPrint == null)\r\n {\r\n return;\r\n }\r\n\r\n let smallY = rect.y + labDim.h;\r\n\r\n this.docPDF.fontSet(this.docPDF.Font_DefaultSize - 4);\r\n this.docPDF.setTextColor(this.docPDF.Color_Label);\r\n\r\n this.docPDF.text(smallPrint, rect.x, smallY, { baseline: PDFBuilder.Baseline_Top, align: PDFBuilder.Align_Center });\r\n\r\n this.docPDF.setTextColor(this.docPDF.Color_Data);\r\n this.docPDF.fontReset();\r\n }\r\n\r\n private shipMethodBlock(posX: number, posY: number, width: number, height: number, isAir?: boolean)\r\n {\r\n let rect = this.docPDF.drawBox(posX, posY, width, height);\r\n\r\n this.docPDF.checkBox(rect.x + 10, rect.y, \"Air\", isAir == true);\r\n this.docPDF.checkBox(rect.x + 100, rect.y, \"Ocean\", isAir != true);\r\n }\r\n\r\n private consolidateBlock(posX: number, posY: number, width: number, height: number)\r\n {\r\n let rect = this.docPDF.drawBox(posX, posY, width, height);\r\n\r\n this.docPDF.checkBox(rect.x + 10, rect.y, \"Consolidate\");\r\n this.docPDF.checkBox(rect.x + 100, rect.y, \"Direct\");\r\n }\r\n\r\n private contactBox(posX: number, posY: number, width: number, height: number, title: string, address: any, email: string, phone: string)\r\n {\r\n this.docPDF.dataBox(posX, posY, width, height, title, address, { wrap: WordWrapMethods.Wrap });\r\n\r\n let myW = width - 75;\r\n let myY = (posY + height) - 50;\r\n\r\n this.docPDF.dataBox(posX, myY, width, 30, \"Email\", email, { border: false });\r\n this.docPDF.dataBox(posX, myY + 23, width, 30, \"Tel\", phone, { border: false });\r\n }\r\n\r\n private finePrint(posX: number, posY: number, width: number, height: number, text: string)\r\n {\r\n let rect = this.docPDF.drawBox(posX, posY, width, height);\r\n let broken = this.docPDF.splitTextToSize(text, rect.w - 2);\r\n\r\n this.docPDF.outText(rect.x, rect.y, broken);\r\n }\r\n\r\n private disclaimer(posY: number)\r\n {\r\n let posX = this.docPDF.pageMargins.left + this.docPDF.Box_Padding;\r\n let width = this.docPDF.pageWidth() - (this.docPDF.Box_Padding * 2);\r\n let broken = this.docPDF.splitTextToSize(\"NOTE: The Shipper or his Authorized Agent hereby authorizes the above named Company, in his name and on his behalf, to prepare any export documents, to sign and accept any documents relating to said shipment and forward this shipment in accordance with the conditions of carriage and the tariffs of the carriers employed. The shipper guarantees payment of all collect charges in the event the consignee refuses payment. Hereunder the sole responsibility of the Company is to use reasonable care in the selection of carriers, forwarders, agents, and others to whom it may entrust the shipment.\", width);\r\n\r\n posY += this.docPDF.pageMargins.top + this.docPDF.Box_Padding;\r\n\r\n this.docPDF.outText(posX, posY, broken);\r\n }\r\n\r\n private signature(posX: number, posY: number, width: number, height: number, name: string)\r\n {\r\n let header = this.docPDF.dataBox(posX, posY, width, height, \"SIGNATURE\");\r\n\r\n if (Util.isEmpty(name))\r\n {\r\n return;\r\n }\r\n\r\n this.docPDF.fontReset();\r\n this.docPDF.setFontSize(18);\r\n this.docPDF.setFont(PDFBuilder.Font_Cursive);\r\n this.docPDF.text(name, header.x, header.y + 5, { baseline: PDFBuilder.Baseline_Middle });\r\n this.docPDF.fontReset();\r\n }\r\n\r\n private relatedBlock(posX: number, posY: number, width: number, height: number, related: boolean)\r\n {\r\n let rect = this.docPDF.dataBox(posX, posY, width, height, \"PARTIES TO TRANSACTION\");\r\n let workX = rect.x + 25;\r\n let workY = rect.y - 2;\r\n\r\n this.docPDF.checkBox(workX, workY, \"Related\", related == true);\r\n this.docPDF.checkBox(workX, workY + 12, \"Non-Related\", related != true);\r\n }\r\n\r\n private paymentBlock(posX: number, posY: number, width: number, height: number, payType?: number)\r\n {\r\n let rect = this.docPDF.dataBox(posX, posY, width, height, \"SELECT ONE\");\r\n let workX = rect.x + 25;\r\n let workY = rect.y - 2;\r\n\r\n this.docPDF.checkBox(workX, workY, \"Collect\", payType == PaymentType.Collect);\r\n this.docPDF.checkBox(workX, workY + 12, \"Prepaid\", payType == PaymentType.Prepaid);\r\n }\r\n\r\n private deliverBlock(posX: number, posY: number, width: number, height: number, contactSender: boolean, returnToSender: boolean, abandon: boolean)\r\n {\r\n let rect = this.docPDF.dataBox(posX, posY, width, height, \"SHIPPERS INSTRUCTIONS IN CASE OF INABILITY TO DELIVER\");\r\n let workX = rect.x + 25;\r\n let workY = rect.y - 2;\r\n\r\n this.docPDF.checkBox(workX, workY, \"CONTACT SENDER\", contactSender);\r\n this.docPDF.checkBox(workX, workY + 12, \"RETURN TO SENDER\", returnToSender);\r\n this.docPDF.checkBox(workX, workY + 24, \"ABANDON\", abandon);\r\n }\r\n}","import { Component, ElementRef, OnInit, ViewChild } from \"@angular/core\";\r\nimport { AuthService, BaseComponent, ProfileType } from \"@app/data\";\r\nimport { PaymentType } from \"@app/data/enums/payment-type\";\r\nimport { Shipment } from \"@app/data/shipment/shipment\";\r\nimport { ShipmentInstruction } from \"@app/data/shipment/shipmentinstruction\";\r\nimport { ShipmentInstructionService } from \"@app/data/shipment/shipmentinstruction.service\";\r\nimport { CommonSettings } from '@app/shared/common-settings';\r\nimport { ConfirmationService, IConfirmationOptions } from \"@app/shared/confirmation/confirmation.service\";\r\nimport { DocumentPreviewService } from \"@app/shared/document-preview/document-preview.service\";\r\nimport { DateFormatter } from \"@app/shared/pipes/date-formatter.pipe\";\r\nimport { DateHelper } from \"@app/utils/date-helper\";\r\nimport { Util } from \"@app/utils/util\";\r\nimport { NgbModal } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\nimport { forkJoin } from \"rxjs\";\r\nimport { ShipperLetterInstructionsGenerator } from \"./shipper-letter-of-instructions.generator\";\r\n\r\n@Component({\r\n selector: \"shipper-letter-of-instruction\",\r\n styleUrls: [\"./shipper-letter-of-instruction.component.scss\"],\r\n templateUrl: \"./shipper-letter-of-instruction.component.html\"\r\n})\r\nexport class ShipperLetterInstructionsComponent extends BaseComponent implements OnInit\r\n{\r\n @ViewChild(\"dialogSLI\")\r\n dialogSLI: ElementRef;\r\n\r\n public ffField: boolean;\r\n public shipmentRec: Shipment;\r\n\r\n constructor(toastrService: ToastrService,\r\n private modalServ: NgbModal,\r\n private authService: AuthService,\r\n private confirmService: ConfirmationService,\r\n private docViewService: DocumentPreviewService,\r\n private shipInstService: ShipmentInstructionService)\r\n {\r\n super(toastrService);\r\n\r\n this.title = \"Shipper Letter of Instruction\";\r\n this.dataForm = this.shipInstService.editorForm;\r\n this.apiService = this.shipInstService;\r\n this.modalService = modalServ;\r\n }\r\n\r\n async ngOnInit()\r\n {\r\n let prof = await this.authService.getProfile$().toPromise();\r\n\r\n this.ffField = (prof.profileType != ProfileType.freightForwarder);\r\n\r\n if (this.ffField)\r\n {\r\n this.disable([\"isContainerized\"]);\r\n }\r\n else\r\n {\r\n this.disable([\"paymentType\", \"isShipperInsuranceRequested\", \"isTransactionPartiesRelated\", \"isRoutedExportTransaction\"]);\r\n }\r\n }\r\n\r\n public openSLI(shipmentRec)\r\n {\r\n this.shipmentRec = shipmentRec;\r\n\r\n this.open(this.dialogSLI, null, CommonSettings.DialogSize_XLarge);\r\n\r\n if (Util.isEmpty(this.shipmentRec.shipmentInstruction))\r\n {\r\n this.setValue(\"paymentType\", PaymentType.Prepaid);\r\n this.setValue(\"isRoutedExportTransaction\", false);\r\n this.setValue(\"isShipperInsuranceRequested\", true);\r\n this.setValue(\"isTransactionPartiesRelated\", false);\r\n }\r\n else\r\n {\r\n this.shipInstService.detail({ shipmentUID: this.shipmentRec.uid, uid: this.shipmentRec.shipmentInstruction.uid }).subscribe(\r\n retRes =>\r\n {\r\n this.data = retRes;\r\n this.patchValue();\r\n },\r\n errRes => this.error(errRes)\r\n );\r\n }\r\n }\r\n\r\n public onClose()\r\n {\r\n if (!this.dataForm.dirty)\r\n {\r\n this.close();\r\n return;\r\n }\r\n\r\n let opts: IConfirmationOptions =\r\n {\r\n FunctionConfirm: () => this.close()\r\n };\r\n\r\n this.confirmService.YesNo(CommonSettings.DirtyFormConfirmationMessage, opts);\r\n }\r\n\r\n public onGenerate()\r\n {\r\n this.blockOn(\"Generating...\");\r\n\r\n let det = this.shipInstService.detail({ shipmentUID: this.shipmentRec.uid });\r\n let com = this.shipInstService.getList(\"commodities\", { shipmentUID: this.shipmentRec.uid });\r\n\r\n forkJoin([det, com]).subscribe(\r\n retRes => this.makePDF(retRes),\r\n errRes => this.error(errRes)\r\n );\r\n }\r\n\r\n private makePDF(retRes)\r\n {\r\n let sli = new ShipperLetterInstructionsGenerator();\r\n let detail = retRes[0];\r\n let fromUser = this.dataForm.value;\r\n\r\n detail.uid = this.data?.uid;\r\n detail.inBondCode = fromUser.inBondCode;\r\n detail.entryNumber = fromUser.entryNumber;\r\n detail.loadingPier = fromUser.loadingPier;\r\n detail.paymentType = fromUser.paymentType;\r\n detail.packageType = fromUser.packageType;\r\n detail.billOfLading = fromUser.billOfLading;\r\n detail.portOfExport = fromUser.portOfExport;\r\n detail.inlandCarrier = fromUser.inlandCarrier;\r\n detail.grossWeightInKG = fromUser.grossWeightInKG;\r\n detail.isContainerized = (fromUser.isContainerized == \"true\");\r\n detail.modeOfTransport = fromUser.modeOfTransport;\r\n detail.portOfUnloading = fromUser.portOfUnloading;\r\n detail.exportingCarrier = fromUser.exportingCarrier;\r\n detail.numberOfPackages = fromUser.numberOfPackages;\r\n detail.dateOfExportation = DateHelper.formatDate(fromUser.dateOfExportation, DateFormatter.FormatAmerican);\r\n detail.specialInstruction = fromUser.specialInstruction;\r\n detail.shipmentReferenceNumber = fromUser.shipmentReferenceNumber;\r\n detail.carrierIdentificationCode = fromUser.carrierIdentificationCode;\r\n detail.isRoutedExportTransaction = (fromUser.isRoutedExportTransaction == \"true\");\r\n detail.isShipperInsuranceRequested = (fromUser.isShipperInsuranceRequested == \"true\");\r\n detail.isTransactionPartiesRelated = (fromUser.isTransactionPartiesRelated == \"true\");\r\n detail.transportationReferenceNumber = fromUser.transportationReferenceNumber;\r\n\r\n sli.sliData = detail;\r\n sli.commodities = retRes[1].results;\r\n\r\n this.shipInstService.save(detail).subscribe(retRes => this.saveComplete(retRes));\r\n\r\n this.resetForm();\r\n\r\n let pdfData = sli.generate();\r\n\r\n this.docViewService.openPDF(pdfData, this.title);\r\n\r\n if (Util.isEmpty(detail.purchaserName)) // This shouldn't happen, but the test data is missing this, so just-in-case\r\n {\r\n detail.purchaserName = \"AEP\";\r\n }\r\n\r\n this.blockOff();\r\n }\r\n\r\n private saveComplete(retRes)\r\n {\r\n this.success(\"SLI data saved\");\r\n\r\n this.data = retRes;\r\n this.patchValue();\r\n\r\n if (this.update)\r\n {\r\n this.update.emit();\r\n }\r\n }\r\n}","export default \"\\r\\n \\r\\n
\\r\\n
Shipper's Letter of Instruction
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
Shipment #:{{ shipmentRec?.shipmentNumber }}
Date:{{ shipmentRec?.shipmentDate | DateFormatter }}
Shipped by:{{ shipmentRec?.freight?.companyName }}
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

Merchant

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

Freight Forwarder

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\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 default \".area-title {\\n text-align: center;\\n border-bottom: 1px solid #ccc;\\n padding-bottom: .25rem;\\n}\\n\";","import { GoogleMapsType, GoogleMapsZoom } from \"../google-conts\";\r\n\r\nexport class GoogleMapsMapOption\r\n{\r\n Size: number = 640;\r\n Zoom: number = GoogleMapsZoom.Default;\r\n Scale: number = 2;\r\n MapType: string;\r\n\r\n constructor(type: GoogleMapsType = GoogleMapsType.Road)\r\n {\r\n this.MapType = type;\r\n }\r\n}","import { OnDestroy } from \"@angular/core\";\r\nimport { Observable, Subject } from \"rxjs\";\r\nimport * as XLSX from \"xlsx\";\r\n\r\nexport class ExcelHelper implements OnDestroy\r\n{\r\n public static readonly ExcelExtension = \".xlsx\";\r\n\r\n private fileOb: Observable;\r\n private fileSub: Subject;\r\n\r\n constructor()\r\n {\r\n this.fileSub = new Subject();\r\n }\r\n\r\n public static makeTemplate(fileName: string, cols: string[]): void\r\n {\r\n let book = XLSX.utils.book_new();\r\n let sheet = XLSX.utils.aoa_to_sheet([cols]);\r\n\r\n XLSX.utils.book_append_sheet(book, sheet, fileName);\r\n XLSX.writeFile(book, fileName + ExcelHelper.ExcelExtension);\r\n }\r\n\r\n public readFile(fileSelectEvt) : Observable\r\n {\r\n if (fileSelectEvt.target.files.length == 0)\r\n {\r\n let obby = new Observable(obby => { obby.next(null); obby.complete(); });\r\n\r\n return obby;\r\n }\r\n\r\n this.fileOb = this.fileSub.asObservable();\r\n\r\n let file = fileSelectEvt.target.files[0];\r\n let reader: FileReader = new FileReader();\r\n\r\n reader.onload = (retRes) => this.makeData(retRes);\r\n reader.readAsBinaryString(file);\r\n\r\n return this.fileOb;\r\n }\r\n\r\n ngOnDestroy(): void\r\n {\r\n this.fileSub.unsubscribe();\r\n }\r\n\r\n private makeData(evtArg)\r\n {\r\n let bin = evtArg.target.result;\r\n let book = XLSX.read(bin, { type: \"binary\" });\r\n let name = book.SheetNames[0];\r\n let sheet = book.Sheets[name];\r\n\r\n let data = XLSX.utils.sheet_to_json(sheet);\r\n\r\n this.fileSub.next(data);\r\n }\r\n}","import { IAfterGuiAttachedParams } from \"@ag-grid-enterprise/all-modules\";\r\nimport { Component } from \"@angular/core\";\r\nimport { GridCellImage } from \"@app/shared/ag-grid-helpers/models/grid-cell-image.model\";\r\nimport { GlobalIcons } from \"@app/shared/GlobalIcons\";\r\nimport { Util } from \"@app/utils/util\";\r\nimport { AgRendererComponent } from \"ag-grid-angular\";\r\nimport cloneDeep from \"lodash-es/cloneDeep\";\r\n\r\n@Component(\r\n {\r\n styleUrls: [\"./grid-cell-image-group.scss\"],\r\n templateUrl: \"./grid-cell-image-group.html\"\r\n })\r\nexport class GridCellImageGroup implements AgRendererComponent\r\n{\r\n public readonly Icons = GlobalIcons;\r\n\r\n public imageList: Array;\r\n public currentImage: GridCellImage;\r\n\r\n private rowData;\r\n\r\n agInit(params): void\r\n {\r\n this.rowData = params.data;\r\n\r\n let img = params.Images;\r\n\r\n if (Util.isEmpty(img))\r\n {\r\n return;\r\n }\r\n\r\n this.imageList = [];\r\n\r\n for (let dude of img)\r\n {\r\n if (dude.imageField.indexOf(\"|\") == -1)\r\n {\r\n this.addImage(dude);\r\n continue;\r\n }\r\n\r\n let broken = img.imageField.split(\"|\");\r\n\r\n for (let addMe of broken)\r\n {\r\n this.addImage(new GridCellImage(addMe));\r\n }\r\n }\r\n }\r\n\r\n refresh(params): boolean\r\n {\r\n this.rowData = params.data;\r\n return true;\r\n }\r\n\r\n afterGuiAttached?(params?: IAfterGuiAttachedParams): void\r\n {\r\n }\r\n\r\n public onImageShow(img: GridCellImage): void\r\n {\r\n this.currentImage = img;\r\n }\r\n\r\n public onImageClick()\r\n {\r\n if (this.currentImage.onClick)\r\n {\r\n this.currentImage.onClick(this.currentImage);\r\n }\r\n else\r\n {\r\n window.open(this.currentImage.imageURL, \"_blank\");\r\n }\r\n }\r\n\r\n private addImage(imgCell: GridCellImage): void\r\n {\r\n // Not sure why this is happening, but if we don't clone it, all cells will have the same data!!!???\r\n let copyImg = cloneDeep(imgCell);\r\n\r\n if (copyImg.imageField.indexOf(\".\") == -1)\r\n {\r\n copyImg.imageURL = this.rowData[copyImg.imageField];\r\n\r\n if (!Util.isEmpty(copyImg.imageURL))\r\n {\r\n this.imageList.push(copyImg);\r\n }\r\n return;\r\n }\r\n\r\n let bro = copyImg.imageField.split(\".\");\r\n let pri = bro[0];\r\n let sec = bro[1];\r\n\r\n copyImg.imageURL = this.rowData[pri][sec];\r\n\r\n if (!Util.isEmpty(copyImg.imageURL))\r\n {\r\n this.imageList.push(copyImg);\r\n }\r\n }\r\n}","export default \"
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n\";","export default \".pop-base {\\n max-width: 250px;\\n max-height: 250px;\\n}\\n\\n.pop-image {\\n width: 250px;\\n height: 250px;\\n -o-object-fit: scale-down;\\n object-fit: scale-down;\\n}\\n\";","import { Component } from \"@angular/core\";\r\nimport { LookupService, PurchaserType } from \"@app/data\";\r\nimport { PurchaserCommon } from \"@app/data/purchaser/purchaser-common\";\r\nimport { GridFilterCustom } from \"@app/shared/ag-grid-helpers/filters/grid-filter-custom\";\r\nimport { GridFilter, GridFilterStorage } from \"@app/shared/ag-grid-helpers/models/grid-filter.model\";\r\nimport { Util } from \"@app/utils/util\";\r\nimport { AgFilterComponent } from \"ag-grid-angular\";\r\nimport { IDoesFilterPassParams } from \"ag-grid-community\";\r\n\r\n@Component({\r\n styleUrls: [\"../../../styles/gridfilter.scss\"],\r\n templateUrl: \"./grid-purchaser-type-filter.component.html\"\r\n})\r\nexport class GridPurchaserTypeFilter extends GridFilterCustom implements AgFilterComponent\r\n{\r\n public readonly purchTypes = PurchaserCommon.PurchaserTypes;\r\n\r\n private readonly fieldType: string = \"purchaserType\";\r\n private readonly fieldBusiness: string = \"purchaserSubCategoryUID\";\r\n\r\n public selectBusi: number;\r\n public selectPurch: number;\r\n public showBusiness: boolean = false;\r\n\r\n constructor(public lookupServ: LookupService)\r\n {\r\n super();\r\n }\r\n\r\n agInit(params: any): void\r\n {\r\n this.initFilter(params);\r\n\r\n this.lookupServ.getPurchaserSubCategoryTypeList();\r\n }\r\n\r\n isFilterActive(): boolean\r\n {\r\n return !Util.isEmpty(this.selectPurch);\r\n }\r\n\r\n doesFilterPass(params: IDoesFilterPassParams): boolean\r\n {\r\n if (this.isServerSide)\r\n {\r\n return true;\r\n }\r\n\r\n let matchType = (this.selectPurch == params.data[this.fieldType]);\r\n\r\n if (this.selectPurch != PurchaserType.Business)\r\n {\r\n return matchType;\r\n }\r\n\r\n let bus = (params.data[this.fieldBusiness] == this.selectBusi);\r\n\r\n return bus && matchType;\r\n }\r\n\r\n getModel()\r\n {\r\n if (this.selectPurch == null)\r\n {\r\n return null;\r\n }\r\n\r\n let filt = new GridFilterStorage();\r\n\r\n filt.add(this.fieldType, new GridFilter(this.selectPurch));\r\n\r\n if (this.selectBusi != null)\r\n {\r\n filt.add(this.fieldBusiness, new GridFilter(this.selectBusi));\r\n }\r\n\r\n return filt;\r\n }\r\n\r\n setModel(model: any)\r\n {\r\n let filter = model?.multiple;\r\n\r\n if (!filter)\r\n {\r\n this.selectBusi = null;\r\n this.selectPurch = null;\r\n this.showBusiness = false;\r\n return;\r\n }\r\n\r\n for (let name in filter)\r\n {\r\n switch (name)\r\n {\r\n case this.fieldType:\r\n this.selectPurch = filter[name].filter;\r\n break;\r\n\r\n case this.fieldBusiness:\r\n this.selectBusi = filter[name].filter;\r\n break;\r\n }\r\n }\r\n\r\n this.showBusiness = (this.selectPurch == PurchaserType.Business);\r\n }\r\n\r\n public onFilterType()\r\n {\r\n this.showBusiness = (this.selectPurch == PurchaserType.Business);\r\n\r\n if (!this.showBusiness)\r\n {\r\n this.selectBusi = null;\r\n }\r\n }\r\n\r\n public onFilterClear()\r\n {\r\n this.selectBusi = null;\r\n this.selectPurch = null;\r\n this.applyAndClose();\r\n }\r\n\r\n public onFilterApply()\r\n {\r\n this.applyAndClose();\r\n }\r\n}","export default \"
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\";","export enum StatusType {\r\n deleted = -2,\r\n active = 1,\r\n pending = 2,\r\n queued = 3,\r\n success = 4,\r\n failed = 5,\r\n outOfSync = 6,\r\n new = 7,\r\n pendingRelease = 8,\r\n inactive = 9,\r\n pendingReview = 10,\r\n hold = 11,\r\n deny = 12\r\n}\r\n","export enum LookupType\r\n{\r\n country = 2,\r\n countryState = 3,\r\n language = 4,\r\n timezone = 5,\r\n customerAddressType = 6,\r\n customerContactType = 7,\r\n customerAccountType = 8,\r\n productCategory = 9,\r\n productSubCategory = 10,\r\n productAction = 11,\r\n productCaliber = 12,\r\n productAmmunition = 13,\r\n productExportClassification = 14,\r\n productImportClassification = 15,\r\n PurchaserDocumentType = 16,\r\n TransactionAction = 17,\r\n PurchaserContactType = 18,\r\n BillingChargeType = 19,\r\n BillingFrequency = 20,\r\n BillingUOM = 21,\r\n BillingRateConstant = 22,\r\n TransactionDocumentType = 23,\r\n PurchaserSubCategoryType = 24,\r\n TaskCategory = 25,\r\n CommodityShipmentType = 26,\r\n ShippingMethod = 27,\r\n CurrencyCode = 29,\r\n MerchantSource = 30,\r\n TaskEntity = 31,\r\n ProductSellerCategory = 32,\r\n ProductSellerSubCategory = 33,\r\n ExportType = 34,\r\n ProductSellerGroup = 35,\r\n LicenseDocumentType = 36\r\n}","export enum ProductRuleType {\r\n Export = 1,\r\n Import = 2\r\n}\r\n","export enum PurchaserAddressType {\r\n Primary = 1,\r\n Shipping = 2,\r\n Billing = 3\r\n}\r\n","export enum PurchaserContactType {\r\n EasyExportContact = 1,\r\n AgencyLeader = 2\r\n}","export enum PurchaserGenderType {\r\n Male = 1,\r\n Female = 2,\r\n ChooseNotToSay = 3\r\n}","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\n\r\nimport { ApiService } from '../api/api.service';\r\nimport { Profile } from './profile';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AntiforgeryService extends ApiService {\r\n\r\n constructor(httpClient: HttpClient) {\r\n super(httpClient, 'antiforgery');\r\n }\r\n\r\n token() {\r\n return this.get('token');\r\n }\r\n\r\n profileToken() {\r\n return this.get('profile-token');\r\n }\r\n}\r\n","import { HttpClient } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { FormBuilder, Validators } from \"@angular/forms\";\r\nimport { ApiService } from \"../api/api.service\";\r\nimport { Profile } from \"./profile\";\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class ProfileService extends ApiService {\r\n\r\n get editorForm()\r\n {\r\n let form = new FormBuilder();\r\n let grpFields = form.group({\r\n uid: [, Validators.required],\r\n lastName: [, Validators.required],\r\n firstName: [, Validators.required],\r\n countryUID: [, Validators.required],\r\n languageUID: [, Validators.required],\r\n timezoneUID: []\r\n });\r\n\r\n return grpFields;\r\n }\r\n\r\n constructor(httpClient: HttpClient)\r\n {\r\n super(httpClient, \"profile\");\r\n }\r\n\r\n emailConfirm(data: Profile)\r\n {\r\n return this.post(\"email-confirm\", data);\r\n }\r\n\r\n signup(data: Profile)\r\n {\r\n return this.post(\"signup\", data);\r\n }\r\n\r\n info()\r\n {\r\n return this.get(\"info\");\r\n }\r\n\r\n resetPassword(data: Profile)\r\n {\r\n return this.post(\"reset-password\", data);\r\n }\r\n\r\n public getProfileList(restrictList: boolean = false)\r\n {\r\n let obby = this.getList(\"lookup\", { isBillingRole: restrictList }).subscribe(\r\n retRes =>\r\n {\r\n let data = retRes.results;\r\n let users = [];\r\n\r\n for (let dude of data)\r\n {\r\n let addMe =\r\n {\r\n id: dude.id,\r\n uid: dude.uid,\r\n name: `${dude.lastName}, ${dude.firstName}`\r\n };\r\n\r\n users.push(addMe);\r\n }\r\n\r\n this.lookupList = users;\r\n });\r\n\r\n return obby;\r\n }\r\n}","import { Injectable } from \"@angular/core\";\r\nimport { Router } from \"@angular/router\";\r\nimport createAuth0Client, { GetTokenSilentlyVerboseResponse } from \"@auth0/auth0-spa-js\";\r\nimport Auth0Client from \"@auth0/auth0-spa-js/dist/typings/Auth0Client\";\r\nimport { environment } from \"@env/environment\";\r\nimport { BehaviorSubject, combineLatest, from, Observable, of, throwError } from \"rxjs\";\r\nimport { catchError, concatMap, map, mergeMap, shareReplay, tap } from \"rxjs/operators\";\r\nimport { AntiforgeryService } from \"../profile/antiforgery.service\";\r\nimport { Profile } from \"../profile/profile\";\r\nimport { ProfileService } from \"../profile/profile.service\";\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class AuthService\r\n{\r\n get isAdmin()\r\n {\r\n return (this.profile && this.profile.profileType === 3);\r\n }\r\n\r\n // Create subject and public observable of user profile data\r\n private userProfileSubject$ = new BehaviorSubject(null);\r\n\r\n // Create a local property for login status\r\n loggedIn: boolean = null;\r\n\r\n // Create subject and public observable of profile info\r\n private profileInfoSubject$ = new BehaviorSubject(false);\r\n\r\n profileInfo$ = this.profileInfoSubject$.asObservable();\r\n profile: Profile;\r\n\r\n // Create an observable of Auth0 instance of client\r\n auth0Client$ = (from(\r\n createAuth0Client({\r\n domain: environment.auth0.domain,\r\n client_id: environment.auth0.clientId,\r\n redirect_uri: `${window.location.origin}`,\r\n audience: environment.apiUrl,\r\n useRefreshTokens: true\r\n })\r\n ) as Observable).pipe(\r\n shareReplay(1), // Every subscription receives the same shared value\r\n catchError(err => throwError(err))\r\n );\r\n\r\n handleRedirectCallback$ = this.auth0Client$.pipe(concatMap((client: Auth0Client) => from(client.handleRedirectCallback())));\r\n\r\n constructor(private router: Router, private antiforgeryService: AntiforgeryService, private profileService: ProfileService)\r\n {\r\n // On initial load, check authentication state with authorization server\r\n // Set up local auth streams if user is already authenticated\r\n this.localAuthSetup();\r\n // Handle redirect from Auth0 login\r\n this.handleAuthCallback();\r\n }\r\n\r\n // Define observables for SDK methods that return promises by default\r\n // For each Auth0 SDK method, first ensure the client instance is ready\r\n // concatMap: Using the client instance, call SDK method; SDK returns a promise\r\n // from: Convert that resulting promise into an observable\r\n isAuthenticated$ = this.auth0Client$.pipe(\r\n concatMap((client: Auth0Client) => from(client.isAuthenticated())),\r\n tap(res => this.loggedIn = res)\r\n );\r\n\r\n getTokenSilently$(options?): Observable\r\n {\r\n return this.auth0Client$.pipe(\r\n concatMap((client: Auth0Client) => from(client.getTokenSilently(options)))\r\n );\r\n }\r\n\r\n // When calling, options can be passed if desired\r\n // https://auth0.github.io/auth0-spa-js/classes/auth0client.html#getuser\r\n getUser$(options?): Observable\r\n {\r\n return this.auth0Client$.pipe(\r\n concatMap((client: Auth0Client) => from(client.getUser(options))),\r\n tap(user => this.userProfileSubject$.next(user))\r\n );\r\n }\r\n\r\n getProfile$(): Observable\r\n {\r\n // Don't cache profile because parts of the app pull it to update the state\r\n return this.antiforgeryService.profileToken().pipe(\r\n map(d1 =>\r\n {\r\n return d1;\r\n }),\r\n mergeMap(d2 =>\r\n {\r\n return this.profileService.info();\r\n }),\r\n tap(p =>\r\n {\r\n this.profile = p;\r\n this.profileInfoSubject$.next(true);\r\n })\r\n );\r\n }\r\n\r\n private localAuthSetup()\r\n {\r\n // This should only be called on app initialization\r\n // Set up local authentication streams\r\n const checkAuth$ = this.isAuthenticated$.pipe(\r\n concatMap((loggedIn: boolean) =>\r\n {\r\n if (loggedIn)\r\n {\r\n // If authenticated, get user and set in app\r\n // NOTE: you could pass options here if needed\r\n return this.getUser$();\r\n }\r\n // If not authenticated, return stream that emits 'false'\r\n return of(loggedIn);\r\n })\r\n );\r\n checkAuth$.subscribe();\r\n }\r\n\r\n login(redirectPath: string = \"/\")\r\n {\r\n // A desired redirect path can be passed to login method\r\n // (e.g., from a route guard)\r\n // Ensure Auth0 client instance exists\r\n this.auth0Client$.subscribe((client: Auth0Client) =>\r\n {\r\n // Call method to log in\r\n client.loginWithRedirect({\r\n redirect_uri: `${window.location.origin}`,\r\n appState: { target: redirectPath }\r\n });\r\n });\r\n }\r\n\r\n private handleAuthCallback()\r\n {\r\n // Call when app reloads after user logs in with Auth0\r\n const params = window.location.search;\r\n if (params.includes(\"code=\") && params.includes(\"state=\"))\r\n {\r\n let targetRoute: string; // Path to redirect to after login processsed\r\n const authComplete$ = this.handleRedirectCallback$.pipe(\r\n // Have client, now call method to handle auth callback redirect\r\n tap(cbRes =>\r\n {\r\n // Get and set target redirect route from callback results\r\n targetRoute = cbRes.appState && cbRes.appState.target ? cbRes.appState.target : \"/\";\r\n }),\r\n concatMap(() =>\r\n {\r\n // Redirect callback complete; get user and login status\r\n return combineLatest([\r\n this.getUser$(),\r\n this.isAuthenticated$,\r\n this.getProfile$()\r\n ]);\r\n })\r\n );\r\n // Subscribe to authentication completion observable\r\n // Response will be an array of user and login status\r\n authComplete$.subscribe(([user, loggedIn]) =>\r\n {\r\n // Redirect to target route after callback processing\r\n if (targetRoute === \"/\")\r\n {\r\n targetRoute = `${targetRoute}${this.profile.redirectUrl}`;\r\n }\r\n\r\n this.router.navigateByUrl(targetRoute);\r\n });\r\n }\r\n }\r\n\r\n logout()\r\n {\r\n // Ensure Auth0 client instance exists\r\n this.auth0Client$.subscribe((client: Auth0Client) =>\r\n {\r\n // Call method to log out\r\n client.logout({\r\n client_id: environment.auth0.clientId,\r\n returnTo: window.location.origin\r\n });\r\n });\r\n }\r\n\r\n resetPassword(data: Profile)\r\n {\r\n return this.profileService.resetPassword(data);\r\n }\r\n\r\n public async myProfile()\r\n {\r\n if (this.profile)\r\n {\r\n return this.profile;\r\n }\r\n\r\n return await this.getProfile$().toPromise();\r\n }\r\n}","import { Injectable } from \"@angular/core\";\r\nimport { ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot, UrlTree } from \"@angular/router\";\r\nimport { Observable } from \"rxjs\";\r\nimport { tap } from \"rxjs/operators\";\r\nimport { ProfileType } from \"../enums/profile-type.enum\";\r\nimport { StatusType } from \"../enums/status-type.enum\";\r\nimport { AuthService } from \"./auth.service\";\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class AuthGuard implements CanActivate\r\n{\r\n constructor(private router: Router, private authService: AuthService)\r\n {\r\n }\r\n\r\n canActivate(\r\n route: ActivatedRouteSnapshot,\r\n state: RouterStateSnapshot): Observable | Promise | boolean | UrlTree\r\n {\r\n let profile = this.authService.profile;\r\n /*\r\n we should read current URL and match against a whitelist of allowable route paths (transaction orders etc)\r\n */\r\n return this.authService.isAuthenticated$.pipe(\r\n tap(async loggedIn =>\r\n {\r\n if (!loggedIn)\r\n {\r\n this.authService.login(state.url);\r\n return;\r\n }\r\n\r\n if (!profile)\r\n {\r\n await this.authService.getProfile$().toPromise();\r\n profile = this.authService.profile;\r\n }\r\n\r\n if (profile && state.url.startsWith(profile.redirectUrl))\r\n {\r\n if (profile.profileType === ProfileType.purchaser)\r\n {\r\n if (profile.purchaser?.statusType === StatusType.new && state.url !== profile.redirectUrl)\r\n {\r\n this.router.navigate([profile.redirectUrl]);\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n return true;\r\n })\r\n );\r\n }\r\n}","\r\nimport { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { Observable, throwError } from \"rxjs\";\r\nimport { catchError, mergeMap } from \"rxjs/operators\";\r\nimport { AuthService } from \"./auth.service\";\r\n\r\n@Injectable()\r\nexport class AuthInterceptor implements HttpInterceptor\r\n{\r\n constructor(private authService: AuthService)\r\n {\r\n }\r\n\r\n intercept(request: HttpRequest, next: HttpHandler): Observable>\r\n {\r\n // Don't do anything to Google requests\r\n if (request.url.indexOf(\"maps.googleapis.com\") != -1)\r\n {\r\n return next.handle(request);\r\n }\r\n\r\n let headersConfig =\r\n {\r\n \"Accept\": \"application/json\",\r\n \"Content-Type\": \"application/json\",\r\n \"X-XSRF-TOKEN\": this.getCookie(\"XSRF-TOKEN\")\r\n };\r\n\r\n if (request.body instanceof FormData)\r\n {\r\n delete headersConfig[\"Content-Type\"];\r\n }\r\n\r\n if (request.url.endsWith(\"/profile/signup\") ||\r\n request.url.endsWith(\"/purchaser/signup\") ||\r\n request.url.endsWith(\"/antiforgery/token\") ||\r\n request.url.endsWith(\"/profile/email-confirm\") ||\r\n request.url.endsWith(\"/lookup/signup-language\") ||\r\n request.url.endsWith(\"/lookup/signup-timezone\") ||\r\n request.url.endsWith(\"/purchaser/get-captcha-image\") ||\r\n request.url.endsWith(\"/purchaser/get-captcha-valid\") ||\r\n request.url.endsWith(\"/lookup/signup-purchaser-country\") ||\r\n request.url.indexOf(\"assets/documents/privacy-policies\") != -1)\r\n {\r\n request = request.clone(\r\n {\r\n setHeaders: headersConfig,\r\n withCredentials: true\r\n });\r\n\r\n return next.handle(request);\r\n }\r\n\r\n return this.authService.getTokenSilently$().pipe(\r\n mergeMap(token =>\r\n {\r\n headersConfig[\"Authorization\"] = `Bearer ${token}`;\r\n\r\n request = request.clone(\r\n {\r\n setHeaders: headersConfig,\r\n withCredentials: true\r\n });\r\n\r\n return next.handle(request);\r\n }),\r\n catchError(err => throwError(err)));\r\n }\r\n\r\n private getCookie(name: string): string\r\n {\r\n let allCookies = decodeURIComponent(document.cookie).split(\"; \");\r\n\r\n for (let lp = 0; lp < allCookies.length; lp++)\r\n {\r\n let cookie = allCookies[lp];\r\n\r\n if (cookie.startsWith(name + \"=\"))\r\n {\r\n return cookie.substring(name.length + 1);\r\n }\r\n }\r\n\r\n return \"\";\r\n }\r\n}","import { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { Router } from \"@angular/router\";\r\nimport { AuthService, ProfileType } from '@app/data';\r\nimport { Observable, throwError } from \"rxjs\";\r\nimport { catchError } from \"rxjs/operators\";\r\n\r\n@Injectable()\r\nexport class ErrorInterceptor implements HttpInterceptor\r\n{\r\n constructor(private router: Router, private authService: AuthService)\r\n {\r\n }\r\n\r\n intercept(request: HttpRequest, next: HttpHandler): Observable>\r\n {\r\n return next.handle(request).pipe(catchError(evtArg =>\r\n {\r\n if ([401, 403].indexOf(evtArg.status) !== -1)\r\n {\r\n console.error(evtArg);\r\n this.goToDashboard();\r\n }\r\n\r\n let error = (evtArg.error || evtArg.statusText);\r\n\r\n return throwError(error);\r\n }));\r\n }\r\n\r\n private goToDashboard()\r\n {\r\n let path;\r\n\r\n switch (this.authService.profile.profileType)\r\n {\r\n case ProfileType.admin:\r\n path = \"/admin/mydashboard\";\r\n break;\r\n\r\n case ProfileType.customer:\r\n path = \"/customer/mydashboard\";\r\n break;\r\n\r\n case ProfileType.freightForwarder:\r\n path = \"/ff/mydashboard\";\r\n break;\r\n\r\n case ProfileType.purchaser:\r\n path = \"/purchaser/orders\";\r\n break;\r\n }\r\n\r\n this.router.navigate([path]);\r\n }\r\n}\r\n","import { HttpClient } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { FormBuilder } from \"@angular/forms\";\r\nimport { DomSanitizer, SafeUrl } from '@angular/platform-browser';\r\nimport { Util } from \"@app/utils/util\";\r\nimport { Observable, Subject } from \"rxjs\";\r\nimport { map } from \"rxjs/operators\";\r\nimport { ApiService } from \"../api/api.service\";\r\nimport { FixedImage } from \"../misc/fixed-image\";\r\nimport { ImageRequest } from \"../misc/image-request.model\";\r\nimport { Customer } from \"./customer\";\r\nimport { MerchantRequestDTO } from \"./merchant-request.dto\";\r\n\r\n@Injectable(\r\n{\r\n providedIn: \"root\"\r\n})\r\nexport class CustomerService extends ApiService\r\n{\r\n public readonly ImgType_Logo = 1;\r\n public readonly ImgType_Banner = 2;\r\n\r\n public get editorForm()\r\n {\r\n let form = new FormBuilder();\r\n let grpFields = form.group(\r\n {\r\n uid: [],\r\n ceo: [],\r\n einNumber: [],\r\n tradeName: [],\r\n statusType: [],\r\n customerUID: [],\r\n companyName: [],\r\n description: [],\r\n founderName: [],\r\n onboardDate: [],\r\n websiteLink: [],\r\n logoImageURL: [],\r\n isOnYellowPage: [],\r\n productBillCap: [],\r\n establishedYear: [],\r\n terminationDate: [],\r\n cjChargeOverride: [],\r\n isAbleToPurchase: [],\r\n isAEPDoingAESFiling: [],\r\n marketingMessage: [],\r\n onboardOverrideCharge: [],\r\n productClassificationCharge: [],\r\n deferredProductCarryoverCharge: []\r\n });\r\n\r\n return grpFields;\r\n }\r\n\r\n public serviceImage: SafeUrl;\r\n public merchantAnswer: Observable;\r\n public merchantQuestion: Observable;\r\n\r\n private messageAnswer = new Subject();\r\n private messageQuestion = new Subject();\r\n\r\n constructor(httpClient: HttpClient, private sanitizer: DomSanitizer)\r\n {\r\n super(httpClient, \"customer\");\r\n\r\n this.merchantAnswer = this.messageAnswer.asObservable();\r\n this.merchantQuestion = this.messageQuestion.asObservable();\r\n }\r\n\r\n public sendAnswer(request: MerchantRequestDTO)\r\n {\r\n this.messageAnswer.next(request);\r\n }\r\n\r\n public sendQuestion(request: MerchantRequestDTO)\r\n {\r\n this.messageQuestion.next(request);\r\n }\r\n\r\n public getImage(imgRequest: string | ImageRequest): Observable\r\n {\r\n let url = this.buildUrl(\"get-image\");\r\n let postReq: ImageRequest;\r\n\r\n if (imgRequest instanceof ImageRequest)\r\n {\r\n postReq = imgRequest;\r\n }\r\n else\r\n {\r\n postReq = new ImageRequest(imgRequest);\r\n }\r\n\r\n let obby = this.httpClient.post(url, postReq, { observe: \"response\", responseType: \"blob\"})\r\n .pipe(map(resRes =>\r\n {\r\n let bin = new Blob([resRes.body]);\r\n let fixImg = new FixedImage();\r\n\r\n fixImg.url = URL.createObjectURL(bin);\r\n fixImg.safeURL = this.sanitizer.bypassSecurityTrustUrl(fixImg.url);\r\n\r\n return fixImg;\r\n }));\r\n\r\n return obby;\r\n }\r\n\r\n public getCustomerLookup(filter: Customer = null)\r\n {\r\n return this.getList(\"lookup\", filter).subscribe(\r\n retRes =>\r\n {\r\n this.lookupList = retRes.results;\r\n });\r\n }\r\n\r\n public uploadImage(merchantUID: string, imgType: number, imgFile: File): Observable\r\n {\r\n let url: string;\r\n let uploadData = new FormData();\r\n\r\n uploadData.append(\"uid\", merchantUID);\r\n uploadData.append(imgFile.name, imgFile);\r\n\r\n switch (imgType)\r\n {\r\n case this.ImgType_Logo:\r\n url = \"upload-logo\";\r\n break;\r\n\r\n case this.ImgType_Banner:\r\n url = \"upload-banner\";\r\n }\r\n\r\n return this.httpClient.post(this.buildUrl(url), uploadData);\r\n }\r\n}","import { HttpClient } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { FormBuilder, Validators } from \"@angular/forms\";\r\nimport { ApiService } from \"../api/api.service\";\r\nimport { CustomerAccount } from \"./customer-account\";\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class CustomerAccountService extends ApiService\r\n{\r\n constructor(httpClient: HttpClient)\r\n {\r\n super(httpClient, \"customer-account\");\r\n }\r\n\r\n get editorForm()\r\n {\r\n let form = new FormBuilder();\r\n let grpFields = form.group(\r\n {\r\n uid: [],\r\n zip: [],\r\n city: [],\r\n title: [],\r\n street1: [],\r\n street2: [],\r\n lastName: [, Validators.required],\r\n stateUID: [],\r\n cellPhone: [],\r\n firstName: [, Validators.required],\r\n workPhone: [],\r\n middleName: [],\r\n statusType: [],\r\n customerUID: [],\r\n emailAddress: [],\r\n accountNumber: [],\r\n accountTypeUID: [, Validators.required],\r\n });\r\n\r\n return grpFields;\r\n }\r\n}","import { HttpClient } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { FormBuilder, Validators } from \"@angular/forms\";\r\nimport { ApiService } from \"../api/api.service\";\r\nimport { CustomerAddress } from \"./customer-address\";\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class CustomerAddressService extends ApiService\r\n{\r\n get editorForm()\r\n {\r\n let form = new FormBuilder();\r\n let grpFields = form.group(\r\n {\r\n uid: [],\r\n zip: [],\r\n city: [],\r\n street1: [, Validators.required],\r\n street2: [],\r\n stateUID: [],\r\n isDefault: [],\r\n statusType: [],\r\n workPhone1: [],\r\n workPhone2: [],\r\n customerUID: [],\r\n addressTypeUID: [, Validators.required]\r\n });\r\n\r\n return grpFields;\r\n }\r\n\r\n constructor(httpClient: HttpClient)\r\n {\r\n super(httpClient, \"customer-address\");\r\n }\r\n}","import { HttpClient } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { FormBuilder, Validators } from \"@angular/forms\";\r\nimport { ApiService } from \"../api/api.service\";\r\nimport { CustomerContact } from \"./customer-contact\";\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class CustomerContactService extends ApiService\r\n{\r\n get editorForm()\r\n {\r\n let form = new FormBuilder();\r\n let grpFields = form.group(\r\n {\r\n uid: [],\r\n zip: [],\r\n city: [],\r\n title: [],\r\n street1: [],\r\n street2: [],\r\n lastName: [, Validators.required],\r\n stateUID: [],\r\n cellPhone: [],\r\n firstName: [, Validators.required],\r\n isDefault: [],\r\n workPhone: [],\r\n middleName: [],\r\n statusType: [],\r\n customerUID: [],\r\n emailAddress: [],\r\n contactTypeUID: [, Validators.required]\r\n });\r\n\r\n return grpFields;\r\n }\r\n\r\n constructor(httpClient: HttpClient)\r\n {\r\n super(httpClient, \"customer-contact\");\r\n }\r\n}","import { HttpClient } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { FormBuilder, Validators } from \"@angular/forms\";\r\nimport { ApiResult, LookupService, ProfileType, PurchaserType } from \"@app/data\";\r\nimport { ApiService } from \"@app/data/api/api.service\";\r\nimport { Lookup } from \"@app/data/lookup/lookup\";\r\nimport { CommonSettings } from '@app/shared/common-settings';\r\nimport { Observable } from \"rxjs\";\r\nimport { Faq } from \"./faq\";\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class FaqService extends ApiService\r\n{\r\n public get editorForm()\r\n {\r\n let form = new FormBuilder();\r\n let grpFields = form.group(\r\n {\r\n uid: [],\r\n answer: [],\r\n question: [, Validators.required],\r\n countryUID: [],\r\n statusType: [],\r\n profileType: [],\r\n purchaserType: []\r\n });\r\n\r\n return grpFields;\r\n }\r\n\r\n private readonly Country_Global\r\n\r\n constructor(httpClient: HttpClient, lookupService: LookupService)\r\n {\r\n super(httpClient, \"faq\");\r\n }\r\n\r\n public getCountries(): Observable>\r\n {\r\n return this.httpClient.get>(this.buildUrl(\"countries\"));\r\n }\r\n\r\n // This probably isn't the best way, but...\r\n public getProfiles(countryUID: string): Array\r\n {\r\n let profs: Array = [];\r\n\r\n if (countryUID == CommonSettings.USAUID)\r\n {\r\n profs.push({ id: ProfileType.customer, name: \"Merchant\" });\r\n profs.push({ id: ProfileType.freightForwarder, name: \"Freight Forwarder\" });\r\n\r\n return profs;\r\n }\r\n\r\n profs.push({ id: 0, name: \"All\" });\r\n profs.push({ id: PurchaserType.Business, name: \"Business\" });\r\n profs.push({ id: PurchaserType.Government, name: \"Government\" });\r\n profs.push({ id: PurchaserType.Individual, name: \"Individual Full\" });\r\n profs.push({ id: 4, name: \"Individual Limited\" });\r\n\r\n return profs;\r\n }\r\n}","import { HttpClient } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { FormBuilder, Validators } from \"@angular/forms\";\r\nimport { ApiService } from \"../api/api.service\";\r\nimport { PurchaserDealerConnect } from \"./purchaser-dealer-connect\";\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class PurchaserDealerConnectService extends ApiService\r\n{\r\n public get dataForm()\r\n {\r\n let fb = new FormBuilder();\r\n let grp = fb.group(\r\n {\r\n zip: [],\r\n city: [],\r\n email: [, Validators.required],\r\n state: [],\r\n website: [, Validators.required],\r\n street1: [],\r\n street2: [],\r\n language: [],\r\n customerUID: [],\r\n contactName: [, Validators.required],\r\n phoneNumber: [, Validators.required],\r\n annualSales: [, Validators.required],\r\n heardOfUsUID: [],\r\n heardOfUsOther: [],\r\n annualSalesYear: [, Validators.required],\r\n productsOfInterest: [, Validators.required],\r\n bestSellingProducts: [, Validators.required],\r\n businessDescription: [, Validators.required],\r\n annualSalesCurrencyUID: [, Validators.required]\r\n });\r\n\r\n return grp;\r\n }\r\n\r\n constructor(httpClient: HttpClient)\r\n {\r\n super(httpClient, \"purchaser-dealer-connect\");\r\n }\r\n\r\n public saveApplication(data)\r\n {\r\n return this.save(data);\r\n }\r\n}","import { HttpClient } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { FormBuilder, Validators } from \"@angular/forms\";\r\nimport { FreightForwarderRequestDTO } from \"@app/data/freight/freight-forwarder-request.dto\";\r\nimport { Observable, Subject } from \"rxjs\";\r\nimport { ApiService } from \"../api/api.service\";\r\nimport { Freight } from \"./freight\";\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class FreightService extends ApiService\r\n{\r\n public readonly Tab_Tasks = 1;\r\n public readonly Tab_Detail = 2;\r\n public readonly Tab_Address = 3;\r\n public readonly Tab_Members = 4;\r\n public readonly Tab_Contacts = 5;\r\n\r\n public freightAnswer: Observable;\r\n public freightQuestion: Observable;\r\n\r\n private messageAnswer = new Subject();\r\n private messageQuestion = new Subject();\r\n\r\n public get editorForm()\r\n {\r\n let form = new FormBuilder();\r\n let grpFields = form.group(\r\n {\r\n uid: [],\r\n countryUID: [, Validators.required],\r\n statusType: [],\r\n companyName: [, Validators.required],\r\n description: [],\r\n websiteLink: []\r\n });\r\n\r\n return grpFields;\r\n }\r\n\r\n constructor(httpClient: HttpClient)\r\n {\r\n super(httpClient, \"freight-forwarder\");\r\n\r\n this.freightAnswer = this.messageAnswer.asObservable();\r\n this.freightQuestion = this.messageQuestion.asObservable();\r\n }\r\n\r\n public sendAnswer(request: FreightForwarderRequestDTO)\r\n {\r\n this.messageAnswer.next(request);\r\n }\r\n\r\n public sendQuestion(request: FreightForwarderRequestDTO)\r\n {\r\n this.messageQuestion.next(request);\r\n }\r\n}","import { HttpClient } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { FormBuilder, Validators } from \"@angular/forms\";\r\nimport { ComponentQandA } from \"../misc/component-q-and-a\";\r\nimport { License } from \"./license\";\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class LicenseService extends ComponentQandA\r\n{\r\n public get editorForm()\r\n {\r\n let form = new FormBuilder();\r\n let grpFields = form.group(\r\n {\r\n uid: [],\r\n comment: [],\r\n issueDate: [],\r\n submitDate: [, Validators.required],\r\n freightUID: [],\r\n licenseType: [, Validators.required],\r\n customerUID: [, Validators.required],\r\n purchaserUID: [, Validators.required],\r\n licenseNumber: [],\r\n expirationDate: [],\r\n aepReferenceNumber: [, Validators.required],\r\n destinationCountryUID: [, Validators.required]\r\n });\r\n\r\n return grpFields;\r\n }\r\n\r\n constructor(httpClient: HttpClient)\r\n {\r\n super(httpClient, \"license\");\r\n }\r\n}","import { ApiService } from \"@app/data/api/api.service\";\r\nimport { Observable } from \"rxjs\";\r\nimport { Subject } from \"rxjs/internal/Subject\";\r\nimport { QandAData } from \"./q-and-a-data.model\";\r\n\r\nexport class ComponentQandA extends ApiService\r\n{\r\n public messageAnswer = new Subject();\r\n public messageQuestion = new Subject();\r\n\r\n public answerHandeler: Observable = this.messageAnswer.asObservable();\r\n public questionHandler: Observable = this.messageQuestion.asObservable();\r\n\r\n public sendAnswer(request: QandAData)\r\n {\r\n this.messageAnswer.next(request);\r\n }\r\n\r\n public sendQuestion(request: QandAData)\r\n {\r\n this.messageQuestion.next(request);\r\n }\r\n}","import { HttpClient } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { ApiService } from \"../api/api.service\";\r\nimport { LicenseItem } from \"./license-item\";\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class LicenseItemService extends ApiService\r\n{\r\n constructor(httpClient: HttpClient)\r\n {\r\n super(httpClient, \"license-item\");\r\n }\r\n}","import { HttpClient } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { FormBuilder, Validators } from \"@angular/forms\";\r\nimport { map, mergeMap } from \"rxjs/operators\";\r\nimport { ApiService } from \"../api/api.service\";\r\nimport { LicenseDocument } from \"./license-document\";\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class LicenseDocumentService extends ApiService\r\n{\r\n public get editorForm()\r\n {\r\n let form = new FormBuilder();\r\n let grpFields = form.group(\r\n {\r\n uid: [],\r\n name: [, Validators.required],\r\n fileName: [, Validators.required],\r\n licenseUID: [],\r\n documentTypeUID: [, Validators.required],\r\n });\r\n\r\n return grpFields;\r\n }\r\n\r\n constructor(httpClient: HttpClient)\r\n {\r\n super(httpClient, \"license-document\");\r\n }\r\n\r\n public upload(file: File, data: LicenseDocument)\r\n {\r\n const uploadData = new FormData();\r\n uploadData.append(file.name, file);\r\n\r\n return this.postFile(\"upload\", uploadData).pipe(\r\n map(d1 =>\r\n {\r\n data.fileName = d1.fileName;\r\n data.fileNameUID = d1.fileNameUID;\r\n\r\n return d1;\r\n }),\r\n mergeMap(d2 => this.save(data))\r\n );\r\n }\r\n}","import { HttpClient } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { FormBuilder, Validators } from \"@angular/forms\";\r\nimport { Observable, Subject } from \"rxjs\";\r\nimport { ApiService } from \"../api/api.service\";\r\nimport { LicenseTemplate } from \"./license-template\";\r\nimport { LicenseTemplateRequestDTO } from \"./license-template-request.dto\";\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class LicenseTemplateService extends ApiService\r\n{\r\n public get editorForm()\r\n {\r\n let form = new FormBuilder();\r\n let grpFields = form.group(\r\n {\r\n uid: [],\r\n name: [, Validators.required],\r\n isBusiness: [],\r\n licenseType: [, Validators.required],\r\n customerUID: [, Validators.required],\r\n isGovernment: [],\r\n isIndividual: []\r\n });\r\n\r\n return grpFields;\r\n }\r\n\r\n public templateAnswer: Observable;\r\n public templateQuestion: Observable;\r\n\r\n private messageAnswer = new Subject();\r\n private messageQuestion = new Subject();\r\n\r\n constructor(httpClient: HttpClient)\r\n {\r\n super(httpClient, \"license-template\");\r\n\r\n this.templateAnswer = this.messageAnswer.asObservable();\r\n this.templateQuestion = this.messageQuestion.asObservable();\r\n }\r\n\r\n public sendAnswer(request: LicenseTemplateRequestDTO)\r\n {\r\n this.messageAnswer.next(request);\r\n }\r\n\r\n public sendQuestion(request: LicenseTemplateRequestDTO)\r\n {\r\n this.messageQuestion.next(request);\r\n }\r\n}","import { HttpClient } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { FormBuilder, Validators } from \"@angular/forms\";\r\nimport { ApiService } from \"../api/api.service\";\r\nimport { LicenseTemplateItem } from \"./license-template-item\";\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class LicenseTemplateItemService extends ApiService\r\n{\r\n public get editorForm()\r\n {\r\n let form = new FormBuilder();\r\n let grpFields = form.group(\r\n {\r\n uid: [],\r\n unitAmount: [, Validators.required],\r\n description: [, Validators.required],\r\n earCategory: [],\r\n exportLineItem: [, Validators.required],\r\n licenseTypeName: [],\r\n licenseTemplateUID: [],\r\n });\r\n\r\n return grpFields;\r\n }\r\n\r\n constructor(httpClient: HttpClient)\r\n {\r\n super(httpClient, \"license-template-item\");\r\n }\r\n}","import { HttpClient } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { FormBuilder, Validators } from \"@angular/forms\";\r\nimport { ApiService } from \"../api/api.service\";\r\nimport { PurchaserLVSLimit } from \"./purchaser-lvs-limit\";\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class PurchaserLVSLimitService extends ApiService\r\n{\r\n get editorForm()\r\n {\r\n let form = new FormBuilder();\r\n let grpFields = form.group(\r\n {\r\n uid: [],\r\n lvS1: [],\r\n lvS2: [],\r\n lvS3: [],\r\n lvS4: [],\r\n lvS5: [],\r\n lvsYear: [],\r\n customerUID: [, Validators.required],\r\n purchaserUID: [, Validators.required],\r\n });\r\n\r\n return grpFields;\r\n }\r\n\r\n constructor(httpClient: HttpClient)\r\n {\r\n super(httpClient, \"purchaserLVSLimit\");\r\n }\r\n}","import { HttpClient } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { CommonSettings } from \"@app/shared/common-settings\";\r\nimport { Observable, Subscription } from \"rxjs\";\r\nimport { LookupType } from \"..\";\r\nimport { ApiResult } from \"../api/api-result\";\r\nimport { ApiService } from \"../api/api.service\";\r\nimport { Lookup } from \"./lookup\";\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class LookupService extends ApiService\r\n{\r\n countryList: Lookup[];\r\n exportTypes: Lookup[];\r\n languageList: Lookup[];\r\n timezoneList: Lookup[];\r\n billingUOMList: Lookup[];\r\n shippingMethod: Lookup[];\r\n countryStateList: Lookup[];\r\n currencyCodeList: Lookup[];\r\n taskCategoryList: Lookup[];\r\n productActionList: Lookup[];\r\n merchantSourceList: Lookup[];\r\n productCaliberList: Lookup[];\r\n productCategoryList: Lookup[];\r\n usaCountryStateList: Lookup[];\r\n billingFrequencyList: Lookup[];\r\n purchaserCountryList: Lookup[];\r\n taskDocumentTypeList: Lookup[];\r\n billingChargeTypeList: Lookup[];\r\n productAmmunitionList: Lookup[];\r\n productSellerCategory: Lookup[];\r\n purchaserDocumentType: Lookup[];\r\n transactionActionList: Lookup[];\r\n productSubCategoryList: Lookup[];\r\n billingRateConstantList: Lookup[];\r\n profileCountryStateList: Lookup[];\r\n customerAddressTypeList: Lookup[];\r\n customerContactTypeList: Lookup[];\r\n customerAccountTypeList: Lookup[];\r\n transactionDocumentType: Lookup[];\r\n productSellerSubCategory: Lookup[];\r\n purchaserContactTypeList: Lookup[];\r\n purchaserSubCategoryType: Lookup[];\r\n transactionDocumentTypeList: Lookup[];\r\n productExportClassificationList: Lookup[];\r\n productImportClassificationList: Lookup[];\r\n\r\n constructor(httpClient: HttpClient)\r\n {\r\n super(httpClient, \"lookup\");\r\n }\r\n\r\n public getByType(lookupType: number)\r\n {\r\n return this.getList(\"list\", { lookupType });\r\n }\r\n\r\n public getExportTypes(): Subscription\r\n {\r\n if (this.exportTypes)\r\n {\r\n let sub = new Observable(obby => obby.complete());\r\n\r\n return sub.subscribe();\r\n }\r\n\r\n let sub = this.getList(\"list\", { lookupType: LookupType.ExportType }).subscribe(retRes => this.exportTypes = retRes.results);\r\n\r\n return sub;\r\n }\r\n\r\n public getCountryList(): Subscription\r\n {\r\n let sub = this.getList(\"country\").subscribe(\r\n retRes =>\r\n {\r\n this.countryList = retRes.results;\r\n });\r\n\r\n return sub;\r\n }\r\n\r\n public getPurchaserCountry(): Subscription\r\n {\r\n if (this.purchaserCountryList)\r\n {\r\n let sub = new Observable(obby => obby.complete());\r\n\r\n return sub.subscribe();\r\n }\r\n\r\n let obby = this.getList(\"purchaser-country\").subscribe(\r\n retRes =>\r\n {\r\n this.purchaserCountryList = retRes.results;\r\n });\r\n\r\n return obby;\r\n }\r\n\r\n public getCountryStateList(uid: string): Subscription\r\n {\r\n if (this.countryStateList)\r\n {\r\n let sub = new Observable(obby => obby.complete());\r\n\r\n return sub.subscribe();\r\n }\r\n\r\n let sub = this.getList(\"country-state\", { uid }).subscribe(\r\n retRes =>\r\n {\r\n this.countryStateList = retRes.results;\r\n });\r\n\r\n return sub;\r\n }\r\n\r\n public getUSACountryStateList(): Subscription\r\n {\r\n if (this.usaCountryStateList)\r\n {\r\n let sub = new Observable(obby => obby.complete());\r\n\r\n return sub.subscribe();\r\n }\r\n\r\n let sub = this.getList(\"country-state\", { uid: CommonSettings.USAUID }).subscribe(\r\n retRes =>\r\n {\r\n this.usaCountryStateList = retRes.results;\r\n });\r\n\r\n return sub;\r\n }\r\n\r\n public getProfileCountryStateList(): Subscription\r\n {\r\n if (this.profileCountryStateList)\r\n {\r\n let sub = new Observable(obby => obby.complete());\r\n\r\n return sub.subscribe();\r\n }\r\n\r\n let sub = this.getList(\"profile-country-state\").subscribe(\r\n retRes =>\r\n {\r\n this.profileCountryStateList = retRes.results;\r\n });\r\n\r\n return sub;\r\n }\r\n\r\n public signupPurchaserCountry(): Observable>\r\n {\r\n return this.getList(\"signup-purchaser-country\");\r\n }\r\n\r\n public signupLanguage(): Observable>\r\n {\r\n return this.getList(\"signup-language\");\r\n }\r\n\r\n public signupTimezone(): Observable>\r\n {\r\n return this.getList(\"signup-timezone\");\r\n }\r\n\r\n public getLanguageList(): Subscription\r\n {\r\n if (this.languageList)\r\n {\r\n let sub = new Observable(obby => obby.complete());\r\n\r\n return sub.subscribe();\r\n }\r\n\r\n let sub = this.getList(\"language\").subscribe(\r\n retRes =>\r\n {\r\n this.languageList = retRes.results;\r\n });\r\n\r\n return sub;\r\n }\r\n\r\n public getTimezoneList(): Subscription\r\n {\r\n if (this.timezoneList)\r\n {\r\n let sub = new Observable(obby => obby.complete());\r\n\r\n return sub.subscribe();\r\n }\r\n\r\n let sub = this.getList(\"timezone\").subscribe(\r\n retRes =>\r\n {\r\n this.timezoneList = retRes.results;\r\n });\r\n\r\n return sub;\r\n }\r\n\r\n public getShippingMethodList(): Subscription\r\n {\r\n if (this.shippingMethod)\r\n {\r\n let sub = new Observable(obby => obby.complete());\r\n\r\n return sub.subscribe();\r\n }\r\n\r\n let sub = this.getList(\"shipping-method\").subscribe(\r\n retRes =>\r\n {\r\n this.shippingMethod = retRes.results;\r\n });\r\n\r\n return sub;\r\n }\r\n\r\n public getCustomerAddressTypeList(): Subscription\r\n {\r\n if (this.customerAddressTypeList)\r\n {\r\n let sub = new Observable(obby => obby.complete());\r\n\r\n return sub.subscribe();\r\n }\r\n\r\n let sub = this.getList(\"customer-address-type\").subscribe(retRes => this.customerAddressTypeList = retRes.results);\r\n\r\n return sub;\r\n }\r\n\r\n public getCustomerContactTypeList(): Subscription\r\n {\r\n if (this.customerContactTypeList)\r\n {\r\n let sub = new Observable(obby => obby.complete());\r\n\r\n return sub.subscribe();\r\n }\r\n\r\n let sub = this.getList(\"customer-contact-type\").subscribe(retRes => this.customerContactTypeList = retRes.results);\r\n\r\n return sub;\r\n }\r\n\r\n public getCustomerAccountTypeList(): Subscription\r\n {\r\n if (this.customerAccountTypeList)\r\n {\r\n let sub = new Observable(obby => obby.complete());\r\n\r\n return sub.subscribe();\r\n }\r\n\r\n let sub = this.getList(\"customer-account-type\").subscribe(retRes => this.customerAccountTypeList = retRes.results);\r\n\r\n return sub;\r\n }\r\n\r\n public getPurchaserDocumentTypeList(): Subscription\r\n {\r\n if (this.purchaserDocumentType)\r\n {\r\n let sub = new Observable(obby => obby.complete());\r\n\r\n return sub.subscribe();\r\n }\r\n\r\n let sub = this.getList(\"purchaser-document-type\").subscribe(retRes => this.purchaserDocumentType = retRes.results);\r\n\r\n return sub;\r\n }\r\n\r\n public getPurchaserSubCategoryTypeList(): Subscription\r\n {\r\n if (this.purchaserSubCategoryType)\r\n {\r\n let sub = new Observable(obby => obby.complete());\r\n\r\n return sub.subscribe();\r\n }\r\n\r\n let sub = this.getList(\"purchaser-sub-category-type\").subscribe(retRes => this.purchaserSubCategoryType = retRes.results);\r\n\r\n return sub;\r\n }\r\n\r\n public getProductCategoryList(): Subscription\r\n {\r\n if (this.productCategoryList)\r\n {\r\n let sub = new Observable(obby => obby.complete());\r\n\r\n return sub.subscribe();\r\n }\r\n\r\n let sub = this.getList(\"product-category\").subscribe(retRes => this.productCategoryList = retRes.results);\r\n\r\n return sub;\r\n }\r\n\r\n public getProductSubCategoryList(parentUID: string): Subscription\r\n {\r\n if (this.productSubCategoryList)\r\n {\r\n let sub = new Observable(obby => obby.complete());\r\n\r\n return sub.subscribe();\r\n }\r\n\r\n let sub = this.getList(\"product-subcategory\", { parentLookupUID: parentUID }).subscribe(retRes => this.productSubCategoryList = retRes.results);\r\n\r\n return sub;\r\n }\r\n\r\n public getProductActionList(): Subscription\r\n {\r\n if (this.productActionList)\r\n {\r\n let sub = new Observable(obby => obby.complete());\r\n\r\n return sub.subscribe();\r\n }\r\n\r\n let sub = this.getList(\"product-action\").subscribe(retRes => this.productActionList = retRes.results);\r\n\r\n return sub;\r\n }\r\n\r\n public getProductCaliberList(): Subscription\r\n {\r\n if (this.productCaliberList)\r\n {\r\n let sub = new Observable(obby => obby.complete());\r\n\r\n return sub.subscribe();\r\n }\r\n\r\n let sub = this.getList(\"product-caliber\").subscribe(retRes => this.productCaliberList = retRes.results);\r\n\r\n return sub;\r\n }\r\n\r\n public getProductAmmunitionList(): Subscription\r\n {\r\n if (this.productAmmunitionList)\r\n {\r\n let sub = new Observable(obby => obby.complete());\r\n\r\n return sub.subscribe();\r\n }\r\n\r\n let sub = this.getList(\"product-ammunition\").subscribe(retRes => this.productAmmunitionList = retRes.results);\r\n\r\n return sub;\r\n }\r\n\r\n public getProductExportClassificationList(): Subscription\r\n {\r\n if (this.productExportClassificationList)\r\n {\r\n let sub = new Observable(obby => obby.complete());\r\n\r\n return sub.subscribe();\r\n }\r\n\r\n let sub = this.getList(\"product-export-classification\").subscribe(retRes => this.productExportClassificationList = retRes.results);\r\n\r\n return sub;\r\n }\r\n\r\n public getProductImportClassificationList(): Subscription\r\n {\r\n if (this.productImportClassificationList)\r\n {\r\n let sub = new Observable(obby => obby.complete());\r\n\r\n return sub.subscribe();\r\n }\r\n\r\n let sub = this.getList(\"product-import-classification\").subscribe(retRes => this.productImportClassificationList = retRes.results);\r\n\r\n return sub;\r\n }\r\n\r\n public getTransactionActionList(): Subscription\r\n {\r\n if (this.transactionActionList)\r\n {\r\n let sub = new Observable(obby => obby.complete());\r\n\r\n return sub.subscribe();\r\n }\r\n\r\n let sub = this.getList(\"transaction-action\").subscribe(retRes => this.transactionActionList = retRes.results);\r\n\r\n return sub;\r\n }\r\n\r\n public getPurchaserContactTypeList(): Subscription\r\n {\r\n if (this.purchaserContactTypeList)\r\n {\r\n let sub = new Observable(obby => obby.complete());\r\n\r\n return sub.subscribe();\r\n }\r\n\r\n let sub = this.getList(\"purchaser-contact-type\").subscribe(retRes => this.purchaserContactTypeList = retRes.results);\r\n\r\n return sub;\r\n }\r\n\r\n public getBillingChargeTypeList(): Subscription\r\n {\r\n if (this.billingChargeTypeList)\r\n {\r\n let sub = new Observable(obby => obby.complete());\r\n\r\n return sub.subscribe();\r\n }\r\n\r\n let sub = this.getList(\"billing-charge-type\").subscribe(retRes => this.billingChargeTypeList = retRes.results);\r\n\r\n return sub;\r\n }\r\n\r\n public getBillingFrequencyList(): Subscription\r\n {\r\n if (this.billingFrequencyList)\r\n {\r\n let sub = new Observable(obby => obby.complete());\r\n\r\n return sub.subscribe();\r\n }\r\n\r\n let sub = this.getList(\"billing-frequency\").subscribe(retRes => this.billingFrequencyList = retRes.results);\r\n\r\n return sub;\r\n }\r\n\r\n public getBillingUOMList(): Subscription\r\n {\r\n if (this.billingUOMList)\r\n {\r\n let sub = new Observable(obby => obby.complete());\r\n\r\n return sub.subscribe();\r\n }\r\n\r\n let sub = this.getList(\"billing-uom\").subscribe(retRes => this.billingUOMList = retRes.results);\r\n\r\n return sub;\r\n }\r\n\r\n public getBillingRateConstantList(): Subscription\r\n {\r\n if (this.billingRateConstantList)\r\n {\r\n let sub = new Observable(obby => obby.complete());\r\n\r\n return sub.subscribe();\r\n }\r\n\r\n let sub = this.getList(\"billing-rate-constant\").subscribe(retRes => this.billingRateConstantList = retRes.results);\r\n\r\n return sub;\r\n }\r\n\r\n public getTransactionDocumentTypeList(): Subscription\r\n {\r\n if (this.transactionDocumentType)\r\n {\r\n let sub = new Observable(obby => obby.complete());\r\n\r\n return sub.subscribe();\r\n }\r\n\r\n let sub = this.getList(\"transaction-document-type\").subscribe(retRes => this.transactionDocumentType = retRes.results);\r\n\r\n return sub;\r\n }\r\n\r\n public getTaskCategoryList(): Subscription\r\n {\r\n if (this.taskCategoryList)\r\n {\r\n let sub = new Observable(obby => obby.complete());\r\n\r\n return sub.subscribe();\r\n }\r\n\r\n let sub = this.getList(\"task-category\").subscribe(retRes => this.taskCategoryList = retRes.results);\r\n\r\n return sub;\r\n }\r\n\r\n public getTaskDocumentTypeList(): Subscription\r\n {\r\n if (this.taskDocumentTypeList)\r\n {\r\n let sub = new Observable(obby => obby.complete());\r\n\r\n return sub.subscribe();\r\n }\r\n\r\n let sub = this.getList(\"task-document-types\").subscribe(retRes => this.taskDocumentTypeList = retRes.results);\r\n\r\n return sub;\r\n }\r\n\r\n public getMerchantSourceList(): Subscription\r\n {\r\n if (this.merchantSourceList)\r\n {\r\n let sub = new Observable(obby => obby.complete());\r\n\r\n return sub.subscribe();\r\n }\r\n\r\n let sub = this.getList(\"merchant-source\").subscribe(retRes => this.merchantSourceList = retRes.results);\r\n\r\n return sub;\r\n }\r\n\r\n public getCurrencyCodeList(): Subscription\r\n {\r\n if (this.currencyCodeList)\r\n {\r\n let sub = new Observable(obby => obby.complete());\r\n\r\n return sub.subscribe();\r\n }\r\n\r\n let sub = this.getList(\"currency-code\").subscribe(retRes => this.currencyCodeList = retRes.results);\r\n\r\n return sub;\r\n }\r\n\r\n public getProductSellerCategory(): Subscription\r\n {\r\n if (this.productSellerCategory)\r\n {\r\n let sub = new Observable(obby => obby.complete());\r\n\r\n return sub.subscribe();\r\n }\r\n\r\n let sub = this.getList(\"product-seller-category\").subscribe(retRes => this.productSellerCategory = retRes.results);\r\n\r\n return sub;\r\n }\r\n\r\n public getProductSellerSubCategory(parentUID: string): Subscription\r\n {\r\n if (this.productSellerSubCategory)\r\n {\r\n let sub = new Observable(obby => obby.complete());\r\n\r\n return sub.subscribe();\r\n }\r\n\r\n let sub = this.getList(\"product-seller-subcategory\", { parentLookupUID: parentUID }).subscribe(retRes => this.productSellerSubCategory = retRes.results);\r\n\r\n return sub;\r\n }\r\n}","import { Status } from \"./status\";\r\n\r\nexport class Model\r\n{\r\n id?: number;\r\n uid?: string;\r\n status?: Status;\r\n pageIndex?: number;\r\n pageLimit?: number;\r\n pageTotal?: number;\r\n statusType?: number;\r\n sortColumn?: string;\r\n createdDate?: Date;\r\n sortDirection?: string;\r\n}","import { HttpClient } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { FormBuilder, Validators } from \"@angular/forms\";\r\nimport { map, mergeMap } from \"rxjs/operators\";\r\nimport { ApiService } from \"../api/api.service\";\r\nimport { DispatchService } from \"../dispatch/dispatch.service\";\r\nimport { OrderLicenseRule } from \"./order-license-rule\";\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class OrderLicenseRuleService extends ApiService\r\n{\r\n public get editorForm()\r\n {\r\n let form = new FormBuilder();\r\n let grpFields = form.group(\r\n {\r\n uid: [],\r\n unitPrice1: [, Validators.required],\r\n unitPrice2: [, Validators.required],\r\n customerUID: [, Validators.required],\r\n categoryUID: [],\r\n description: [],\r\n earCategory: [, Validators.required],\r\n purchaserType: [, Validators.required],\r\n earSubCategory: [],\r\n exportLineItem: [],\r\n subCategoryUID: [],\r\n categoryOperator: [],\r\n magazineCapacity1: [],\r\n magazineCapacity2: [],\r\n actionTypeUID: [],\r\n unitPriceOperator: [],\r\n descriptionOperator: [],\r\n earCategoryOperator: [, Validators.required],\r\n subCategoryOperator: [],\r\n earSubCategoryOperator: [],\r\n actionTypeOperator: [],\r\n magazineCapacityOperator: []\r\n });\r\n\r\n return grpFields;\r\n }\r\n\r\n constructor(\r\n httpClient: HttpClient,\r\n private dispatchService: DispatchService)\r\n {\r\n super(httpClient, \"order-license-rule\");\r\n }\r\n\r\n import(file: File, data: OrderLicenseRule)\r\n {\r\n return this.dispatchService.upload(file).pipe(\r\n map(d1 =>\r\n {\r\n data.dispatch = {\r\n fileName: d1.fileName,\r\n fileNameUID: d1.fileNameUID\r\n };\r\n\r\n return d1;\r\n }),\r\n mergeMap(d2 =>\r\n {\r\n return this.post(\"import\", data);\r\n })\r\n );\r\n }\r\n}","import { HttpClient } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { FormBuilder, Validators } from \"@angular/forms\";\r\nimport { NumberValidator, NumberValidatorOption } from \"@app/infrastructure/form-validators/number-validator\";\r\nimport { Observable, Subject } from \"rxjs\";\r\nimport { map, mergeMap } from \"rxjs/operators\";\r\nimport { ApiService } from \"../api/api.service\";\r\nimport { DispatchService } from \"../dispatch/dispatch.service\";\r\nimport { Product } from \"./product\";\r\nimport { ProductRequestDTO } from \"./product-request.dto\";\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class ProductService extends ApiService\r\n{\r\n public get editorForm()\r\n {\r\n let valMin = new NumberValidatorOption();\r\n let valWhole = new NumberValidatorOption();\r\n\r\n valMin.minValue = 0;\r\n valWhole.minValue = 0;\r\n valWhole.allowDecimal = false;\r\n\r\n let form = new FormBuilder();\r\n let grpFields = form.group(\r\n {\r\n uid: [],\r\n upc: [],\r\n make: [],\r\n model: [],\r\n brand: [],\r\n ounces: [, [NumberValidator(valMin)]],\r\n pounds: [, [NumberValidator(valMin)]],\r\n caliber: [, [NumberValidator(valMin)]],\r\n comment: [],\r\n actionUID: [],\r\n isLithium: [],\r\n imageLink1: [],\r\n imageLink2: [],\r\n partNumber: [, Validators.required],\r\n statusType: [],\r\n categoryUID: [],\r\n customerUID: [],\r\n description: [],\r\n barrelLength: [, [NumberValidator(valMin)]],\r\n customerCode: [],\r\n manufacturer: [],\r\n overrideITAR: [],\r\n websiteLink1: [],\r\n websiteLink2: [],\r\n isSerializable: [],\r\n subCategoryUID: [],\r\n websiteCategory: [],\r\n weightKilograms: [],\r\n magazineCapacity: [, [NumberValidator(valWhole)]],\r\n magazineQuantity: [, [NumberValidator(valWhole)]],\r\n originCountryUID: [],\r\n ammunitionTypeUID: [],\r\n overrideExportHTS: [],\r\n sellerCategoryUID: [],\r\n websiteSubCategory: [],\r\n customerDescription: [],\r\n overrideEARCategory: [],\r\n isExcludedFromSearch: [],\r\n sellerSubCategoryUID: [],\r\n overrideEARSubCategory: [],\r\n cJorCCATSClassification: [],\r\n overrideExportScheduleB: [],\r\n isOverrideBusinessExportable: [],\r\n isOverrideGovernmentExportable: [],\r\n isOverrideIndividualExportable: []\r\n });\r\n\r\n return grpFields;\r\n }\r\n\r\n public prodAnswer: Observable;\r\n public prodQuestion: Observable;\r\n\r\n private messageAnswer = new Subject();\r\n private messageQuestion = new Subject();\r\n\r\n constructor(httpClient: HttpClient, private dispatchService: DispatchService)\r\n {\r\n super(httpClient, \"product\");\r\n\r\n this.prodAnswer = this.messageAnswer.asObservable();\r\n this.prodQuestion = this.messageQuestion.asObservable();\r\n }\r\n\r\n public sendAnswer(request: ProductRequestDTO)\r\n {\r\n this.messageAnswer.next(request);\r\n }\r\n\r\n public sendQuestion(request: ProductRequestDTO)\r\n {\r\n this.messageQuestion.next(request);\r\n }\r\n\r\n public import(file: File, data: Product)\r\n {\r\n return this.dispatchService.upload(file).pipe(\r\n map(d1 =>\r\n {\r\n data.dispatch = {\r\n fileName: d1.fileName,\r\n fileNameUID: d1.fileNameUID\r\n };\r\n\r\n return d1;\r\n }),\r\n mergeMap(d2 =>\r\n {\r\n return this.post(\"import\", data);\r\n })\r\n );\r\n }\r\n}","import { ProductRuleType } from './../enums/product-rule-type.enum';\r\nimport { HttpClient } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { FormBuilder, Validators } from \"@angular/forms\";\r\nimport { map, mergeMap } from \"rxjs/operators\";\r\nimport { ApiService } from \"../api/api.service\";\r\nimport { DispatchService } from \"../dispatch/dispatch.service\";\r\nimport { ProductRule } from \"./product-rule\";\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class ProductRuleService extends ApiService\r\n{\r\n public get uploadForm()\r\n {\r\n let form = new FormBuilder();\r\n let grpFields = form.group(\r\n {\r\n fileName: [, Validators.required],\r\n productRuleType: []\r\n });\r\n\r\n return grpFields;\r\n }\r\n\r\n public get exportForm()\r\n {\r\n let form = new FormBuilder();\r\n let grpFields = form.group(\r\n {\r\n uid: [],\r\n caliber: [{ disabled: true, value: null }, Validators.required],\r\n actionUID: [{ disabled: true, value: null }, Validators.required],\r\n categoryUID: [{ disabled: true, value: null }, Validators.required],\r\n description: [{ disabled: true, value: null }, Validators.required],\r\n barrelLength: [{ disabled: true, value: null }, Validators.required],\r\n description2: [{ disabled: true, value: null }, Validators.required],\r\n actionOperator: [],\r\n subCategoryUID: [{ disabled: true, value: null }, Validators.required],\r\n caliberOperator: [],\r\n productRuleType: [],\r\n categoryOperator: [],\r\n ammunitionTypeUID: [{ disabled: true, value: null }, Validators.required],\r\n magazineCapacity1: [{ disabled: true, value: null }, Validators.required],\r\n magazineCapacity2: [{ disabled: true, value: null }, Validators.required],\r\n subClassification: [],\r\n mainClassification: [, Validators.required],\r\n descriptionOperator: [],\r\n subCategoryOperator: [],\r\n barrelLengthOperator: [],\r\n descriptionOperator2: [],\r\n isBusinessExportable: [],\r\n classificationTypeUID: [, Validators.required],\r\n ammunitionTypeOperator: [],\r\n isGovernmentExportable: [],\r\n isIndividualExportable: [],\r\n cJorCCATSClassification: [{ disabled: true, value: null }, Validators.required],\r\n magazineCapacityOperator: [],\r\n cJorCCATSClassificationOperator: []\r\n });\r\n\r\n return grpFields;\r\n }\r\n\r\n public get importForm()\r\n {\r\n let form = new FormBuilder();\r\n let grpFields = form.group(\r\n {\r\n uid: [],\r\n caliber: [{ disabled: true, value: null }, Validators.required],\r\n stateUID: [],\r\n actionUID: [{ disabled: true, value: null }, Validators.required],\r\n isLithium: [],\r\n sortOrder: [],\r\n countryUID: [],\r\n categoryUID: [{ disabled: true, value: null }, Validators.required],\r\n description: [{ disabled: true, value: null }, Validators.required],\r\n barrelLength: [{ disabled: true, value: null }, Validators.required],\r\n description2: [{ disabled: true, value: null }, Validators.required],\r\n isImportable: [],\r\n actionOperator: [],\r\n subCategoryUID: [{ disabled: true, value: null }, Validators.required],\r\n caliberOperator: [],\r\n productRuleType: [ProductRuleType.Import],\r\n categoryOperator: [],\r\n ammunitionTypeUID: [{ disabled: true, value: null }, Validators.required],\r\n magazineCapacity1: [{ disabled: true, value: null }, Validators.required],\r\n magazineCapacity2: [{ disabled: true, value: null }, Validators.required],\r\n mainClassification: [, Validators.required],\r\n descriptionOperator: [],\r\n subCategoryOperator: [],\r\n barrelLengthOperator: [],\r\n descriptionOperator2: [],\r\n classificationTypeUID: [, Validators.required],\r\n ammunitionTypeOperator: [],\r\n magazineCapacityOperator: []\r\n });\r\n\r\n return grpFields;\r\n }\r\n\r\n constructor(\r\n httpClient: HttpClient,\r\n private dispatchService: DispatchService)\r\n {\r\n super(httpClient, \"product-rule\");\r\n }\r\n\r\n import(file: File, data: ProductRule)\r\n {\r\n return this.dispatchService.upload(file).pipe(\r\n map(d1 =>\r\n {\r\n data.dispatch = {\r\n fileName: d1.fileName,\r\n fileNameUID: d1.fileNameUID\r\n };\r\n\r\n return d1;\r\n }),\r\n mergeMap(d2 =>\r\n {\r\n return this.post(\"import\", data);\r\n })\r\n );\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\n\r\nimport { ApiService } from '../api/api.service';\r\nimport { ProductCountry } from './product-country';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ProductCountryService extends ApiService {\r\n\r\n constructor(httpClient: HttpClient) {\r\n super(httpClient, 'product-country');\r\n }\r\n\r\n}\r\n","import { HttpClient } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { PurchaserStatusType } from '@app/data/enums/purchaser-status-type.enum';\r\nimport { BehaviorSubject, Observable, Subscription } from \"rxjs\";\r\nimport { ApiService } from \"../api/api.service\";\r\nimport { Purchaser } from \"./purchaser\";\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class PurchaserService extends ApiService\r\n{\r\n public customsBrokers;\r\n\r\n constructor(httpClient: HttpClient)\r\n {\r\n super(httpClient, \"purchaser\");\r\n }\r\n\r\n private purchaserProfileStatus$: BehaviorSubject = new BehaviorSubject(null);\r\n\r\n save(body): Observable\r\n {\r\n return super.save(body);\r\n }\r\n\r\n signup(data: Purchaser)\r\n {\r\n return this.post(\"signup\", data);\r\n }\r\n\r\n captchaGetImage(): Observable\r\n {\r\n return this.httpClient.get(this.buildUrl(\"get-captcha-image\"), { responseType: \"blob\" });\r\n }\r\n\r\n captchaIsValid(captchaText: string): Observable\r\n {\r\n return this.httpClient.post(this.buildUrl(\"get-captcha-valid\"), { captchaText: captchaText });\r\n }\r\n\r\n getCurrentProfileStatusName(): Observable\r\n {\r\n return this.purchaserProfileStatus$.asObservable();\r\n }\r\n setCurrentStatusName(statusName)\r\n {\r\n this.purchaserProfileStatus$.next(statusName);\r\n }\r\n\r\n public findByEmail(email: string)\r\n {\r\n return this.post(\"find-email\", { emailAddress: email });\r\n }\r\n\r\n public getCustomsBrokers(purchaserUID: string): Subscription\r\n {\r\n let sub = this.getList(\"customs-brokers\", { purchaserUID: purchaserUID })\r\n .subscribe(retRes => this.customsBrokers = retRes.results);\r\n\r\n return sub;\r\n }\r\n\r\n public getPurchaserLookup(activeOnly: boolean = true): Subscription\r\n {\r\n let filt = null;\r\n\r\n if (activeOnly)\r\n {\r\n filt = { statusType: PurchaserStatusType.Approved };\r\n }\r\n\r\n return this.getLookup(filt);\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\n\r\nimport { ApiService } from '../api/api.service';\r\nimport { PurchaserHistory } from './purchaser-history';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class PurchaserHistoryService extends ApiService {\r\n\r\n constructor(httpClient: HttpClient) {\r\n super(httpClient, 'purchaser-history');\r\n }\r\n\r\n}\r\n","import { HttpClient } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { FormBuilder, Validators } from \"@angular/forms\";\r\nimport { ApiService } from \"../api/api.service\";\r\nimport { PurchaserAddress } from \"./purchaser-address\";\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class PurchaserAddressService extends ApiService\r\n{\r\n public get editorForm()\r\n {\r\n let form = new FormBuilder();\r\n let grpFields = form.group(\r\n {\r\n uid: [],\r\n zip: [],\r\n city: [, Validators.required],\r\n street1: [, Validators.required],\r\n street2: [],\r\n stateUID: [, Validators.required],\r\n isDefault: [],\r\n countryUID: [],\r\n statusType: [],\r\n addressType: [],\r\n experianKey: [],\r\n isExperianAddress: [],\r\n isOnlyAddressOfThisType: []\r\n });\r\n\r\n return grpFields;\r\n }\r\n\r\n constructor(httpClient: HttpClient)\r\n {\r\n super(httpClient, \"purchaser-address\");\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\n\r\nimport { ApiService } from '../api/api.service';\r\nimport { PurchaserAddressHistory } from './purchaser-address-history';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class PurchaserAddressHistoryService extends ApiService {\r\n\r\n constructor(httpClient: HttpClient) {\r\n super(httpClient, 'purchaser-address-history');\r\n }\r\n\r\n}\r\n","import { HttpClient } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { FormBuilder, Validators } from \"@angular/forms\";\r\nimport { ApiService } from \"../api/api.service\";\r\nimport { PurchaserContact } from \"./purchaser-contact\";\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class PurchaserContactService extends ApiService\r\n{\r\n public get editorForm()\r\n {\r\n let form = new FormBuilder();\r\n let grpFields = form.group(\r\n {\r\n uid: [],\r\n title: [, Validators.required],\r\n lastName: [, Validators.required],\r\n cellPhone: [],\r\n firstName: [, Validators.required],\r\n isDefault: [],\r\n workPhone: [, Validators.required],\r\n middleName: [],\r\n statusType: [],\r\n emailAddress: [, [Validators.required, Validators.email]],\r\n purchaserContactType: []\r\n });\r\n\r\n return grpFields;\r\n }\r\n\r\n constructor(httpClient: HttpClient)\r\n {\r\n super(httpClient, \"purchaser-contact\");\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\n\r\nimport { ApiService } from '../api/api.service';\r\nimport { PurchaserContactHistory } from './purchaser-contact-history';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class PurchaserContactHistoryService extends ApiService {\r\n\r\n constructor(httpClient: HttpClient) {\r\n super(httpClient, 'purchaser-contact-history');\r\n }\r\n\r\n}\r\n","import { HttpClient } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { FormBuilder, Validators } from \"@angular/forms\";\r\nimport { ApiService } from \"../api/api.service\";\r\nimport { PurchaserOfficer } from \"./purchaser-officer\";\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class PurchaserOfficerService extends ApiService\r\n{\r\n public get editorForm()\r\n {\r\n let form = new FormBuilder();\r\n let grpFields = form.group(\r\n {\r\n uid: [],\r\n title: [, Validators.required],\r\n firstName: [, Validators.required],\r\n lastName: [, Validators.required],\r\n middleName: [],\r\n citizenshipUID: [, Validators.required],\r\n residenceCountryUID: [, Validators.required],\r\n dualCitizenshipUID: [],\r\n priorCitizenshipUID: [],\r\n });\r\n\r\n return grpFields;\r\n }\r\n\r\n constructor(httpClient: HttpClient)\r\n {\r\n super(httpClient, \"purchaser-officer\");\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\n\r\nimport { ApiService } from '../api/api.service';\r\nimport { PurchaserOfficerHistory } from './purchaser-officer-history';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class PurchaserOfficerHistoryService extends ApiService {\r\n\r\n constructor(httpClient: HttpClient) {\r\n super(httpClient, 'purchaser-officer-history');\r\n }\r\n\r\n}\r\n","import { HttpClient } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { FormBuilder, Validators } from \"@angular/forms\";\r\nimport { ApiService } from \"../api/api.service\";\r\nimport { PurchaserOwner } from \"./purchaser-owner\";\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class PurchaserOwnerService extends ApiService\r\n{\r\n public get editorForm()\r\n {\r\n let form = new FormBuilder();\r\n let grpFields = form.group(\r\n {\r\n uid: [],\r\n lastName: [, Validators.required],\r\n firstName: [, Validators.required],\r\n middleName: [],\r\n citizenshipUID: [, Validators.required],\r\n residenceCountryUID: [, Validators.required],\r\n dualCitizenshipUID: [],\r\n priorCitizenshipUID: []\r\n });\r\n\r\n return grpFields;\r\n }\r\n\r\n constructor(httpClient: HttpClient)\r\n {\r\n super(httpClient, \"purchaser-owner\");\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\n\r\nimport { ApiService } from '../api/api.service';\r\nimport { PurchaserOwnerHistory } from './purchaser-owner-history';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class PurchaserOwnerHistoryService extends ApiService {\r\n\r\n constructor(httpClient: HttpClient) {\r\n super(httpClient, 'purchaser-owner-history');\r\n }\r\n\r\n}\r\n","import { HttpClient } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { FormBuilder, Validators } from \"@angular/forms\";\r\nimport { map, mergeMap } from \"rxjs/operators\";\r\nimport { ApiService } from \"../api/api.service\";\r\nimport { PurchaserDocument } from \"./purchaser-document\";\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class PurchaserDocumentService extends ApiService\r\n{\r\n get editorForm()\r\n {\r\n let form = new FormBuilder();\r\n let grpFields = form.group({\r\n uid: [],\r\n name: [, Validators.required],\r\n fileName: [, Validators.required],\r\n issuedBy: [, Validators.required],\r\n issuedDate: [],\r\n statusType: [],\r\n fileNameUID: [],\r\n purchaserUID: [],\r\n documentOther: [],\r\n expirationDate: [],\r\n documentTypeUID: [, Validators.required],\r\n documentDesignationType: []\r\n });\r\n\r\n return grpFields;\r\n }\r\n\r\n constructor(httpClient: HttpClient)\r\n {\r\n super(httpClient, \"purchaser-document\");\r\n }\r\n\r\n upload(file: File, data: PurchaserDocument)\r\n {\r\n const uploadData = new FormData();\r\n uploadData.append(file.name, file);\r\n\r\n return this.postFile(\"upload\", uploadData).pipe(\r\n map(d1 =>\r\n {\r\n data.fileName = d1.fileName;\r\n data.fileNameUID = d1.fileNameUID;\r\n\r\n return d1;\r\n }),\r\n mergeMap(d2 =>\r\n {\r\n return this.save(data);\r\n })\r\n );\r\n }\r\n\r\n update(data: PurchaserDocument)\r\n {\r\n return this.save(data);\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\n\r\nimport { ApiService } from '../api/api.service';\r\nimport { PurchaserQuestion } from './purchaser-question';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class PurchaserQuestionService extends ApiService {\r\n\r\n constructor(httpClient: HttpClient) {\r\n super(httpClient, 'purchaser-question');\r\n }\r\n\r\n}\r\n","import { HttpClient } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { FormBuilder } from \"@angular/forms\";\r\nimport { ApiService } from \"../api/api.service\";\r\nimport { PurchaserReview } from \"./purchaser-review\";\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class PurchaserReviewService extends ApiService\r\n{\r\n public get editorForm()\r\n {\r\n let form = new FormBuilder();\r\n let grpFields = form.group(\r\n {\r\n comments: [],\r\n statusType: [],\r\n purchaserUID: [],\r\n isAutoCompleteVettingTask: []\r\n });\r\n\r\n return grpFields;\r\n }\r\n\r\n constructor(httpClient: HttpClient)\r\n {\r\n super(httpClient, \"purchaser-review\");\r\n }\r\n}","import { HttpClient } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { ApiService } from \"../api/api.service\";\r\nimport { Transaction } from \"./transaction\";\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class TransactionService extends ApiService\r\n{\r\n constructor(httpClient: HttpClient)\r\n {\r\n super(httpClient, \"transaction\");\r\n }\r\n\r\n public saveStatus(orderUID, status: number)\r\n {\r\n return this.save({ uid: orderUID, statusType: status });\r\n }\r\n}","import { Model } from \"../model/model\";\r\nimport { TransactionDocumentType } from \"./transaction-document-type\";\r\n\r\nexport class TransactionDocument extends Model\r\n{\r\n name?: string;\r\n fileName?: string;\r\n issuedBy?: string;\r\n issuedDate?: Date;\r\n fileNameUID?: string;\r\n documentType?: TransactionDocumentType;\r\n importPermit?: string;\r\n documentOther?: string;\r\n transactionUID: string;\r\n expirationDate?: Date;\r\n documentTypeUID?: number;\r\n isDocumentReadOnly?: boolean;\r\n documentDesignationType?: number;\r\n}","import { EventEmitter, Input, Output } from \"@angular/core\";\r\nimport { FormControl, FormGroup, Validators } from \"@angular/forms\";\r\nimport { ApiService, Model } from \"@app/data\";\r\nimport { ProfileType } from \"@app/data/enums/profile-type.enum\";\r\nimport { CommonSettings } from \"@app/shared/common-settings\";\r\nimport { GlobalIcons } from \"@app/shared/GlobalIcons\";\r\nimport { DateFormatter } from \"@app/shared/pipes/date-formatter.pipe\";\r\nimport { DateHelper } from \"@app/utils/date-helper\";\r\nimport { Util } from \"@app/utils/util\";\r\nimport { NgbDate, NgbModal, NgbModalRef } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { BlockUI, NgBlockUI } from \"ng-block-ui\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\nimport { Subscription } from 'rxjs';\r\n\r\nexport class BaseComponent\r\n{\r\n public readonly Icons = GlobalIcons;\r\n public readonly profileTypes = ProfileType;\r\n\r\n @Input()\r\n uid: string;\r\n\r\n @Input()\r\n parentUID: string;\r\n\r\n @Input()\r\n data: T;\r\n\r\n @Input()\r\n dataList: unknown[];\r\n\r\n @Input()\r\n search: T;\r\n\r\n @Input()\r\n readOnly: boolean;\r\n\r\n @BlockUI()\r\n blockUI: NgBlockUI;\r\n\r\n @Output()\r\n update = new EventEmitter();\r\n\r\n @Output()\r\n closeEmitter = new EventEmitter();\r\n\r\n public get formControls()\r\n {\r\n return this.dataForm.controls;\r\n }\r\n\r\n public get dataLength(): number\r\n {\r\n return this.dataList?.length || 0;\r\n }\r\n\r\n public get dataValue()\r\n {\r\n return Object.assign({}, this.dataForm?.value);\r\n }\r\n\r\n public get searchValue()\r\n {\r\n return Object.assign({}, this.searchForm?.value);\r\n }\r\n\r\n public get isSmallScreen(): boolean\r\n {\r\n return document.body.offsetWidth < 1024;\r\n }\r\n\r\n public loading = false;\r\n public pageIndex = 1;\r\n public pageLimit = 25;\r\n public pageTotal = 1;\r\n public submitted = false;\r\n public submitError = false;\r\n public autoHandleLoading: boolean = true;\r\n\r\n public title: string;\r\n public dataForm: FormGroup;\r\n public modalRef: NgbModalRef;\r\n public apiService: ApiService;\r\n public searchForm: FormGroup;\r\n public modalService: NgbModal;\r\n\r\n private dateList;\r\n\r\n constructor(private toastrService: ToastrService)\r\n {\r\n }\r\n\r\n public patchValue(): void\r\n {\r\n if (!this.data)\r\n {\r\n return;\r\n }\r\n\r\n this.uid = (this.data as Model).uid;\r\n\r\n if (!this.dataForm)\r\n {\r\n return;\r\n }\r\n\r\n this.dataForm.patchValue(this.data);\r\n this.dataForm.markAsPristine();\r\n\r\n let keys = Object.keys(this.dataForm.controls);\r\n\r\n for (let dude of keys)\r\n {\r\n if (!this.data.hasOwnProperty(dude))\r\n {\r\n continue;\r\n }\r\n\r\n let val = this.data[dude];\r\n\r\n if ( !DateHelper.paternMatch(val) || !DateHelper.isDate(val))\r\n {\r\n continue;\r\n }\r\n\r\n let field = this.dataForm.get(dude);\r\n\r\n if (!field)\r\n {\r\n continue;\r\n }\r\n\r\n field.setValue(DateHelper.makeNGBDate(val));\r\n }\r\n }\r\n\r\n public enable(controls: string[]): void\r\n {\r\n controls.map(cont => this.dataForm.get(cont).enable());\r\n }\r\n\r\n public disable(controls: string[]): void\r\n {\r\n controls.map(cont => this.dataForm.get(cont).disable());\r\n }\r\n\r\n public makeRequired(controls: string[], isRequired: boolean = true): void\r\n {\r\n for (let cont of controls)\r\n {\r\n let field = this.dataForm.get(cont);\r\n\r\n if (!field)\r\n {\r\n continue;\r\n }\r\n\r\n if (isRequired)\r\n {\r\n field.setValidators([Validators.required]);\r\n }\r\n else\r\n {\r\n field.clearValidators();\r\n }\r\n\r\n field.updateValueAndValidity();\r\n }\r\n }\r\n\r\n public getValue(control: string)\r\n {\r\n let field = this.dataForm.get(control);\r\n\r\n if (field)\r\n {\r\n return field.value;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n public setValue(control: string, value): void\r\n {\r\n if (this.data)\r\n {\r\n this.data[control] = value;\r\n }\r\n\r\n this.dataForm.get(control).setValue(value);\r\n }\r\n\r\n public resetForm(): void\r\n {\r\n if (!this.dataForm)\r\n {\r\n return;\r\n }\r\n\r\n this.submitted = false;\r\n this.submitError = false;\r\n\r\n this.dataForm.reset();\r\n this.dataForm.markAsPristine();\r\n this.dataForm.markAsUntouched();\r\n }\r\n\r\n public sort(evtArg): Subscription\r\n {\r\n if (Util.isEmpty(this.searchForm))\r\n {\r\n this.searchForm = new FormGroup({ sortColumn: new FormControl(), sortDirection: new FormControl() });\r\n }\r\n else\r\n {\r\n if (!this.searchForm.contains(\"sortColumn\"))\r\n {\r\n this.searchForm.addControl(\"sortColumn\", new FormControl());\r\n }\r\n\r\n if (!this.searchForm.contains(\"sortDirection\"))\r\n {\r\n this.searchForm.addControl(\"sortDirection\", new FormControl());\r\n }\r\n }\r\n\r\n this.searchForm.controls.sortColumn.setValue(evtArg.column);\r\n this.searchForm.controls.sortDirection.setValue(evtArg.direction);\r\n\r\n return this.list();\r\n }\r\n\r\n public list(path: string = \"list\"): Subscription\r\n {\r\n if (this.autoHandleLoading)\r\n {\r\n this.loadingOn();\r\n }\r\n\r\n let query = this.searchValue;\r\n\r\n query.pageIndex = this.pageIndex;\r\n query.pageLimit = this.pageLimit;\r\n\r\n let obby = this.apiService.getList(path, query).subscribe(\r\n retRes =>\r\n {\r\n if (retRes.query)\r\n {\r\n this.pageTotal = (retRes.query as Model).pageTotal;\r\n }\r\n\r\n this.dataList = retRes.results;\r\n },\r\n errRes =>\r\n {\r\n this.error(errRes);\r\n });\r\n\r\n obby.add(() =>\r\n {\r\n if (this.autoHandleLoading)\r\n {\r\n this.loadingOff();\r\n }\r\n });\r\n\r\n return obby;\r\n }\r\n\r\n public postGetlist(path: string = \"list\"): Subscription\r\n {\r\n if (this.autoHandleLoading)\r\n {\r\n this.loadingOn();\r\n }\r\n\r\n let query = this.searchValue;\r\n\r\n query.pageIndex = this.pageIndex;\r\n query.pageLimit = this.pageLimit;\r\n\r\n let obby = this.apiService.postGetList(path, query).subscribe(\r\n retRes =>\r\n {\r\n if (retRes.query)\r\n {\r\n this.pageTotal = (retRes.query as Model).pageTotal;\r\n }\r\n\r\n this.dataList = retRes.results;\r\n },\r\n errRes =>\r\n {\r\n this.error(errRes);\r\n });\r\n\r\n obby.add(() =>\r\n {\r\n if (this.autoHandleLoading)\r\n {\r\n this.loadingOff();\r\n }\r\n });\r\n\r\n return obby;\r\n }\r\n\r\n // This is a mess, but it works.\r\n // The ngbDatepicker uses an object {year, month, day}, but that can't be used by .Net. Here we\"ll change it to the US format for transmission and change it back upon return.\r\n public submitDatesStore(data: any = null): any\r\n {\r\n let sendData;\r\n\r\n this.dateList = new Map();\r\n\r\n if (data == null)\r\n {\r\n sendData = this.dataForm?.value;\r\n }\r\n else\r\n {\r\n sendData = data;\r\n }\r\n\r\n let forDate = new DateFormatter();\r\n\r\n for (let field in sendData)\r\n {\r\n let testField = sendData[field];\r\n\r\n if (testField instanceof NgbDate || (testField instanceof Object && \"year\" in testField && \"month\" in testField && \"day\" in testField))\r\n {\r\n this.dateList.set(field, sendData[field]);\r\n\r\n sendData[field] = forDate.transform(sendData[field], DateFormatter.FormatAmerican);\r\n }\r\n }\r\n\r\n return sendData;\r\n }\r\n\r\n public submiteDatesReset(data: any): void\r\n {\r\n if (this.dateList == null || this.dateList.size == 0)\r\n {\r\n return;\r\n }\r\n\r\n for (let item of this.dateList)\r\n {\r\n data[item[0]] = item[1];\r\n }\r\n\r\n this.dateList = null;\r\n }\r\n\r\n public submit(path: string = \"save\"): Subscription\r\n {\r\n if (this.invalid())\r\n {\r\n if (this.autoHandleLoading)\r\n {\r\n this.loadingOff();\r\n }\r\n\r\n this.submitError = true;\r\n return null;\r\n }\r\n\r\n if (this.autoHandleLoading)\r\n {\r\n this.loadingOn();\r\n }\r\n\r\n let sendData = this.submitDatesStore();\r\n\r\n let obby = this.apiService.post(path, sendData).subscribe(\r\n retData =>\r\n {\r\n this.submiteDatesReset(retData);\r\n\r\n this.data = retData;\r\n this.submitError = false;\r\n\r\n this.patchValue();\r\n\r\n if (this.update)\r\n {\r\n this.update.emit(retData);\r\n }\r\n },\r\n errRes =>\r\n {\r\n this.submitError = true;\r\n\r\n this.error(errRes);\r\n });\r\n\r\n obby.add(() =>\r\n {\r\n if (this.autoHandleLoading)\r\n {\r\n this.loadingOff();\r\n }\r\n });\r\n\r\n return obby;\r\n }\r\n\r\n public invalid(message?: string): boolean\r\n {\r\n this.submitted = true;\r\n\r\n if (this.dataForm.invalid)\r\n {\r\n Util.WhatsWrongWithForm(this.dataForm);\r\n\r\n message = message ? message : \"Fields are required\";\r\n this.warning(message);\r\n\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n public detail(data: any = null, path: string = \"detail\"): Subscription\r\n {\r\n if (this.autoHandleLoading)\r\n {\r\n this.loadingOn();\r\n }\r\n\r\n let filt = this.searchValue;\r\n\r\n filt = { ...filt, ...data };\r\n\r\n let obby = this.apiService.get(path, filt).subscribe(\r\n retRes =>\r\n {\r\n this.uid = (retRes as Model).uid;\r\n this.data = retRes;\r\n\r\n if (this.data && this.dataForm)\r\n {\r\n this.dataForm.patchValue(retRes);\r\n }\r\n },\r\n errRes =>\r\n {\r\n this.error(errRes);\r\n });\r\n\r\n obby.add(() =>\r\n {\r\n if (this.autoHandleLoading)\r\n {\r\n this.loadingOff();\r\n }\r\n });\r\n\r\n return obby;\r\n }\r\n\r\n public delete(path: string = \"delete\"): Subscription\r\n {\r\n if (this.autoHandleLoading)\r\n {\r\n this.loadingOn();\r\n }\r\n\r\n let obby = this.apiService.delete(path, this.dataValue).subscribe(\r\n retRes =>\r\n {\r\n this.data = retRes;\r\n\r\n if (this.data && this.dataForm)\r\n {\r\n this.dataForm.patchValue(retRes);\r\n }\r\n },\r\n errRes =>\r\n {\r\n this.error(errRes);\r\n });\r\n\r\n obby.add(() =>\r\n {\r\n if (this.autoHandleLoading)\r\n {\r\n this.loadingOff();\r\n }\r\n });\r\n\r\n return obby;\r\n }\r\n\r\n public makeForm(dataObj): FormGroup\r\n {\r\n let fb = new FormGroup({});\r\n let dateForm = new DateFormatter();\r\n\r\n for (let who in dataObj)\r\n {\r\n let val = dataObj[who];\r\n\r\n // Test to see if the val is a date\r\n if (typeof val != \"number\" && !isNaN(Date.parse(val)))\r\n {\r\n // Apparently we don't like to ship the ISO format, so americanize it\r\n val = dateForm.transform(val, DateFormatter.FormatAmerican);\r\n }\r\n\r\n fb.addControl(who, new FormControl(val));\r\n }\r\n\r\n return fb;\r\n }\r\n\r\n public open(template: any, data?: T, size: string | null = null): void\r\n {\r\n this.resetForm();\r\n\r\n if (data)\r\n {\r\n this.uid = (data as Model).uid;\r\n this.data = data;\r\n this.patchValue();\r\n }\r\n else\r\n {\r\n this.uid = undefined;\r\n this.data = undefined;\r\n }\r\n\r\n let opts = CommonSettings.DialogOptions(size);\r\n\r\n this.modalRef = this.modalService.open(template, opts);\r\n }\r\n\r\n public close(): void\r\n {\r\n if (this.modalRef)\r\n {\r\n this.modalRef.close();\r\n return;\r\n }\r\n\r\n if (this.closeEmitter )\r\n {\r\n this.closeEmitter.emit();\r\n }\r\n }\r\n\r\n public success(message, title?: string): void\r\n {\r\n this.toastrService.success(message, title, CommonSettings.ToastOptions);\r\n }\r\n\r\n public info(message, title?: string): void\r\n {\r\n this.toastrService.info(message, title, CommonSettings.ToastOptions);\r\n }\r\n\r\n public warning(message, title?: string): void\r\n {\r\n this.toastrService.warning(message, title, CommonSettings.ToastOptions);\r\n }\r\n\r\n public error(message: any, title?: string): void\r\n {\r\n message = Util.parseError(message);\r\n\r\n this.toastrService.error(message, title, CommonSettings.ToastOptions);\r\n }\r\n\r\n public loadingOn(message: string = \"Loading...\"): void\r\n {\r\n this.loading = true;\r\n this.blockOn(message);\r\n }\r\n\r\n public loadingOff(): void\r\n {\r\n this.loading = false;\r\n\r\n if (this.blockUI.isActive)\r\n {\r\n this.blockUI.stop();\r\n }\r\n }\r\n\r\n public blockOn(message: string = \"Loading...\"): void\r\n {\r\n if (!this.blockUI.isActive)\r\n {\r\n this.blockUI.start(message);\r\n }\r\n }\r\n\r\n public blockOff(): void\r\n {\r\n this.blockUI.stop();\r\n }\r\n\r\n public blockToggle(blockIt: boolean): void\r\n {\r\n if (blockIt)\r\n {\r\n this.blockOn();\r\n }\r\n else\r\n {\r\n this.blockOff();\r\n }\r\n }\r\n}","import { HttpClient } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { DomSanitizer } from \"@angular/platform-browser\";\r\nimport { FixedImage } from \"@app/data/misc/fixed-image\";\r\nimport { ContactFormatter } from \"@app/utils/contact-formatter\";\r\nimport { Util } from \"@app/utils/util\";\r\nimport { environment } from \"@env/environment\";\r\nimport { Observable } from \"rxjs\";\r\nimport { map } from \"rxjs/operators\";\r\nimport { GoogleConsts } from \"./google-conts\";\r\nimport { GoogleMapsCoordinates } from \"./models/google-maps-coordinates.model\";\r\nimport { GoogleMapsMapOption } from \"./models/google-maps-map-option.model\";\r\nimport { GoogleMapsStreetOption } from \"./models/google-maps-street-option.model\";\r\n\r\n@Injectable()\r\nexport class GoogleMapsHelperService\r\n{\r\n constructor(private webClient: HttpClient, private sanitizer: DomSanitizer)\r\n {\r\n }\r\n\r\n public makeGeoCodeURL(address: any): string\r\n {\r\n let url = GoogleConsts.GeoCodeURL;\r\n let contForm = new ContactFormatter(address);\r\n\r\n url += contForm.googleLink();\r\n url += `&key=${environment.goolgeMaps.key}`;\r\n\r\n return url;\r\n }\r\n\r\n public makeAddress(address: any): string\r\n {\r\n if (address instanceof GoogleMapsCoordinates)\r\n {\r\n return `${address.latitude},${address.longitude}`;\r\n }\r\n\r\n let contForm = new ContactFormatter(address);\r\n\r\n return contForm.googleLink();\r\n }\r\n\r\n public makeMapURL(address: any): string\r\n {\r\n let url = GoogleConsts.MapURL;\r\n\r\n url += this.makeAddress(address);\r\n url += `&key=${environment.goolgeMaps.key}`;\r\n\r\n return url;\r\n }\r\n\r\n public makeStreetURL(address: any): string\r\n {\r\n let url = GoogleConsts.StreetURL;\r\n\r\n url += this.makeAddress(address);\r\n url += `&key=${environment.goolgeMaps.key}`;\r\n\r\n return url;\r\n }\r\n\r\n public getCoordinates(address: any): Observable\r\n {\r\n if (Util.isEmpty(address))\r\n {\r\n return;\r\n }\r\n\r\n let url = this.makeGeoCodeURL(address);\r\n let obby = this.webClient.get(url).pipe(map(retRes =>\r\n {\r\n let vals = retRes[\"results\"][0].geometry.location;\r\n\r\n return new GoogleMapsCoordinates(vals.lat, vals.lng);\r\n }));\r\n\r\n return obby;\r\n }\r\n\r\n public getMapImage(address: any, opts: GoogleMapsMapOption = new GoogleMapsMapOption()): Observable\r\n {\r\n if (Util.isEmpty(address))\r\n {\r\n return;\r\n }\r\n\r\n let gotoURL = this.makeMapURL(address);\r\n\r\n gotoURL += `&size=${opts.Size}x${opts.Size}`;\r\n gotoURL += \"&zoom=\" + opts.Zoom;\r\n gotoURL += \"&scale=\" + opts.Scale;\r\n gotoURL += \"&style=feature:poi|visibility:off\";\r\n gotoURL += \"&markers=scale:2|\" + this.makeAddress(address);\r\n gotoURL += \"&maptype=\" + opts.MapType;\r\n\r\n let obby = this.webClient.get(gotoURL, { observe: \"response\", responseType: \"blob\" })\r\n .pipe(map(retRes =>\r\n {\r\n let fixImg = new FixedImage();\r\n\r\n fixImg.rawImage = new Blob([retRes.body]);\r\n\r\n fixImg.url = URL.createObjectURL(fixImg.rawImage);\r\n fixImg.safeURL = this.sanitizer.bypassSecurityTrustUrl(fixImg.url);\r\n fixImg.sourcesURL = gotoURL;\r\n\r\n return fixImg;\r\n }));\r\n\r\n return obby;\r\n }\r\n\r\n public getStreetImage(address: any, opts: GoogleMapsStreetOption = new GoogleMapsStreetOption()): Observable\r\n {\r\n if (Util.isEmpty(address))\r\n {\r\n return;\r\n }\r\n\r\n let gotoURL = this.makeStreetURL(address);\r\n\r\n gotoURL += \"&fov=\" + opts.FOV;\r\n gotoURL += `&size=${opts.Size}x${opts.Size}`;\r\n gotoURL += \"&pitch=\" + opts.Pitch;\r\n\r\n if (!Util.isEmpty(opts.Heading))\r\n {\r\n gotoURL += \"&heading=\" + opts.Heading;\r\n }\r\n\r\n let obby = this.webClient.get(gotoURL, { observe: \"response\", responseType: \"blob\" })\r\n .pipe(map(retRes =>\r\n {\r\n let fixImg = new FixedImage();\r\n\r\n fixImg.rawImage = new Blob([retRes.body]);\r\n\r\n fixImg.url = URL.createObjectURL(fixImg.rawImage);\r\n fixImg.safeURL = this.sanitizer.bypassSecurityTrustUrl(fixImg.url);\r\n fixImg.sourcesURL = gotoURL;\r\n\r\n return fixImg;\r\n }));\r\n\r\n return obby;\r\n }\r\n}","import { HttpClient } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { ApiService, TransactionProduct } from \"@app/data\";\r\nimport { Util } from \"@app/utils/util\";\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class TransactionProductService extends ApiService\r\n{\r\n constructor(httpClient: HttpClient)\r\n {\r\n super(httpClient, \"transactionproduct\");\r\n }\r\n\r\n public makePermitArray(product: TransactionProduct)\r\n {\r\n if (Util.isEmpty(product))\r\n {\r\n return [];\r\n }\r\n\r\n let permits = [];\r\n\r\n if (!Util.isEmpty(product.importPermit1))\r\n {\r\n permits.push(product.importPermit1);\r\n }\r\n\r\n if (!Util.isEmpty(product.importPermit2))\r\n {\r\n permits.push(product.importPermit2);\r\n }\r\n\r\n if (!Util.isEmpty(product.importPermit3))\r\n {\r\n permits.push(product.importPermit3);\r\n }\r\n\r\n return permits;\r\n }\r\n\r\n public makeMessageArray(product: TransactionProduct)\r\n {\r\n if (Util.isEmpty(product))\r\n {\r\n return [];\r\n }\r\n\r\n let messages = [];\r\n\r\n for (let lp = 0; lp < 5; lp++)\r\n {\r\n if (!Util.isEmpty(product[\"message\" + lp]))\r\n {\r\n messages.push({ image: product[\"urL\" + lp], text: product[\"message\" + lp], tooltip: product[\"altText\" + lp] });\r\n }\r\n }\r\n\r\n return messages;\r\n }\r\n\r\n public saveStatus(orderUID, status: number)\r\n {\r\n return this.save({ uid: orderUID, statusType: status });\r\n }\r\n}","export enum PurchaserType {\r\n Individual = 1,\r\n Business = 2,\r\n Government = 3\r\n}\r\n","import { NgbModalOptions } from \"@ng-bootstrap/ng-bootstrap\";\r\n\r\nexport interface ListType\r\n{\r\n id: number;\r\n name: string;\r\n}\r\n\r\nexport class CommonSettings\r\n{\r\n public static readonly DialogSize_Small = \"modal-sm\";\r\n public static readonly DialogSize_Large = \"modal-lg\";\r\n public static readonly DialogSize_XLarge = \"modal-xl\";\r\n\r\n public static readonly USAUID = \"26e556cb-2de7-4e2c-85a2-84b4646c56fc\";\r\n public static readonly GlobalUID = \"f178743c-285f-4dfc-9b6d-80db6d67afc1\";\r\n public static readonly AddressURL = \"https://www.google.com/maps/place/\";\r\n\r\n public static readonly DashboardTab_Tasks = 1;\r\n public static readonly DashboardTab_Profile = 2;\r\n public static readonly DirtyFormConfirmationMessage = \"You have some unsaved changes, continue without saving?\";\r\n\r\n public static readonly Profiles: Array =\r\n [\r\n { id: 2, name: \"Master\" },\r\n { id: 3, name: \"Admin\" },\r\n { id: 4, name: \"Purchaser\" },\r\n { id: 5, name: \"Merchant\" },\r\n { id: 6, name: \"Freight Forwarder\" }\r\n ];\r\n\r\n public static readonly Genders: Array =\r\n [\r\n { id: 1, name: \"Male\" },\r\n { id: 2, name: \"Female\" },\r\n { id: 3, name: \"Choose not to say\" },\r\n { id: 4, name: \"Other\" }\r\n ];\r\n\r\n public static readonly WikiTypes: Array =\r\n [\r\n { id: 1, name: \"User Manual\" },\r\n { id: 2, name: \"Release Notes\" }\r\n ];\r\n\r\n public static readonly FeedbackTypes: Array =\r\n [\r\n { id: 1, name: \"Search Engine\" },\r\n { id: 2, name: \"Registration\" },\r\n { id: 3, name: \"EasyExport\" }\r\n ];\r\n\r\n public static readonly ToastOptions =\r\n {\r\n allowHtml: true,\r\n closeButton: false,\r\n progressBar: true,\r\n tapToDismiss: true,\r\n positionClass: \"toast-center-center\"\r\n };\r\n\r\n public static readonly Priorities: Array =\r\n [\r\n { id: 1, name: \"High\" },\r\n { id: 2, name: \"Medium\" },\r\n { id: 3, name: \"Low\" }\r\n ];\r\n\r\n public static readonly CKEditorToolbar = {\r\n toolbar:\r\n {\r\n items: [\r\n \"heading\", \"|\",\r\n \"bold\", \"italic\", \"|\",\r\n \"link\", \"|\",\r\n \"outdent\", \"indent\", \"|\",\r\n \"bulletedList\", \"numberedList\", \"|\",\r\n \"undo\", \"redo\"\r\n ],\r\n shouldNotGroupWhenFull: true\r\n }\r\n };\r\n\r\n public static DialogOptions(dialogSize = CommonSettings.DialogSize_Large): NgbModalOptions\r\n {\r\n let opts: NgbModalOptions =\r\n {\r\n backdrop: \"static\",\r\n keyboard: false,\r\n scrollable: true,\r\n windowClass: dialogSize\r\n };\r\n\r\n return opts;\r\n }\r\n\r\n public static getNameFromID(list: Array, id: number): string\r\n {\r\n let dude = list.find(elm => elm.id == id);\r\n\r\n return dude?.name;\r\n }\r\n\r\n public static openAddressWindow(address: string): void\r\n {\r\n window.open(CommonSettings.AddressURL + address);\r\n }\r\n}","import { Component } from \"@angular/core\";\r\nimport { ActivatedRoute, Router } from \"@angular/router\";\r\nimport { AppService } from \"@app/app.service\";\r\nimport { ProfileType, Transaction, TransactionService } from \"@app/data\";\r\nimport { GridBase } from \"@app/shared/ag-grid-helpers/ag-grid-base\";\r\nimport { GridHelpers } from \"@app/shared/ag-grid-helpers/grid-helper\";\r\nimport { GridCellBoolean } from \"@app/shared/ag-grid-helpers/models/grid-cell-boolean.model\";\r\nimport { GridColumnBoolean } from \"@app/shared/ag-grid-helpers/models/grid-column-boolean\";\r\nimport { GridColumnCustom } from \"@app/shared/ag-grid-helpers/models/grid-column-custom.model\";\r\nimport { GridColumnIcon } from \"@app/shared/ag-grid-helpers/models/grid-column-icon.model\";\r\nimport { GridColumnMerchant } from \"@app/shared/ag-grid-helpers/models/grid-column-merchant\";\r\nimport { GridColumnPurchaser } from \"@app/shared/ag-grid-helpers/models/grid-column-purchaser\";\r\nimport { GridColumnPurchaserType } from \"@app/shared/ag-grid-helpers/models/grid-column-purchaser-type\";\r\nimport { GridColumnStatus } from \"@app/shared/ag-grid-helpers/models/grid-column-status\";\r\nimport { GridColumn, GridColumnType } from \"@app/shared/ag-grid-helpers/models/grid-column.model\";\r\nimport { ConfirmationService, IConfirmationOptions } from \"@app/shared/confirmation/confirmation.service\";\r\nimport { OrderDataHelper } from \"@app/shared/orders/order-data.helper\";\r\nimport { GridColumnOrderHolds } from \"@app/shared/orders/order-grid-components/hold-renderer/grid-cell-holds.model\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\n\r\n@Component({\r\n selector: \"order-list\",\r\n templateUrl: \"./order-list.component.html\"\r\n})\r\nexport class OrderListComponent extends GridBase\r\n{\r\n public get canAdd()\r\n {\r\n return (OrderDataHelper.userRole == this.profileTypes.admin || OrderDataHelper.userRole == this.profileTypes.customer);\r\n }\r\n\r\n constructor(toastrService: ToastrService,\r\n private router: Router,\r\n private appService: AppService,\r\n private activeRoute: ActivatedRoute,\r\n private confirmService: ConfirmationService,\r\n private transactionService: TransactionService)\r\n {\r\n super(toastrService, transactionService);\r\n\r\n this.title = \"Orders\";\r\n OrderDataHelper.userRole = this.activeRoute.snapshot.data.userType;\r\n this.appService.pageTitle = this.title;\r\n\r\n this.setupGrid();\r\n }\r\n\r\n public onAdd()\r\n {\r\n let nav = this.profileTypes[OrderDataHelper.userRole];\r\n\r\n this.router.navigateByUrl(`/${nav}/order-add`);\r\n }\r\n\r\n public canCancel(data)\r\n {\r\n let canDo =\r\n data.statusType != OrderDataHelper.Status_Complete.id &&\r\n data.statusType != OrderDataHelper.Status_Cancelled.id &&\r\n data.statusType != OrderDataHelper.Status_Suspended.id &&\r\n OrderDataHelper.userRole == this.profileTypes.customer;\r\n\r\n return canDo;\r\n }\r\n\r\n public onCancelConfirm(data)\r\n {\r\n let opts: IConfirmationOptions =\r\n {\r\n FunctionConfirm: () => this.onCancelIt(data)\r\n };\r\n\r\n this.confirmService.YesNo(`Are you sure you want to cancel Order #${data.poNumber}?`, opts);\r\n }\r\n\r\n public onCreateShipment(data)\r\n {\r\n let mod;\r\n\r\n switch (OrderDataHelper.userRole)\r\n {\r\n case this.profileTypes.admin:\r\n mod = \"admin\";\r\n break;\r\n\r\n case this.profileTypes.customer:\r\n mod = \"customer\";\r\n break;\r\n }\r\n\r\n this.router.navigate([`/${mod}/order-details`, OrderDataHelper.Tab_Ship, data.uid]);\r\n }\r\n\r\n private setupGrid()\r\n {\r\n let bools = new GridCellBoolean(GridCellBoolean.DefaultYesText, GridCellBoolean.DefaultNoText);\r\n let gridIcons =\r\n [\r\n GridHelpers.MakeViewIcon(this.onDetail.bind(this)),\r\n { icon: this.Icons.Cancel, toolTip: \"Cancel order\", onClick: this.onCancelConfirm.bind(this), isVisible: this.canCancel.bind(this) },\r\n { icon: this.Icons.Shipment, toolTip: \"Create shipment\", onClick: this.onCreateShipment.bind(this), isVisible: OrderDataHelper.CanShip }\r\n ];\r\n\r\n this.storageKey = \"OrderList\";\r\n this.setServerPath(\"list\");\r\n this.addColumn(new GridColumnStatus(OrderDataHelper.OrderStatuses));\r\n\r\n if (OrderDataHelper.userRole != ProfileType.customer)\r\n {\r\n this.addColumn(new GridColumnMerchant(\"customer.displayName\", \"customer.uid\"));\r\n }\r\n\r\n this.addColumn(new GridColumnPurchaser(\"purchaser.displayName\", \"purchaser.uid\", { showType: false }));\r\n this.addColumn(new GridColumnPurchaserType(\"purchaser.purchaserTypeName\"));\r\n this.addColumn(new GridColumnCustom(\"purchaser.language.name\", \"Language\", { minWidth: 100, width: 150 }));\r\n\r\n this.addColumn(new GridColumn(\"purchaseDate\", \"Date\", GridColumnType.DateTime));\r\n this.addColumn(new GridColumnCustom(\"poNumber\", \"Order #\", { minWidth: 100 }));\r\n this.addColumn(new GridColumn(\"orderValue\", \"Value\", GridColumnType.Money));\r\n this.addColumn(new GridColumn(\"shippingAddress.country.name\", \"Destination\"));\r\n\r\n if (OrderDataHelper.userRole == ProfileType.admin)\r\n {\r\n this.addColumn(new GridColumnBoolean(\"purchaser.isOnWatchList\", \"Watch List\"));\r\n this.addColumn(new GridColumnBoolean(\"isNewDocument\", \"New Doc\", bools));\r\n }\r\n\r\n this.addColumn(new GridColumnBoolean(\"isNote\", \"Note?\", bools));\r\n this.addColumn(new GridColumnBoolean(\"shipment.isAESRequired\", \"AES\", bools));\r\n this.addColumn(new GridColumnOrderHolds());\r\n this.addColumn(new GridColumnIcon(gridIcons));\r\n\r\n this.rowDoubleClick(this.onDetail.bind(this));\r\n }\r\n\r\n private onCancelIt(data)\r\n {\r\n this.transactionService.saveStatus(data.uid, OrderDataHelper.Status_Cancelled.id).subscribe(\r\n retRes => this.gridRefresh(),\r\n errRes => this.error(errRes));\r\n }\r\n\r\n private onDetail(agData: any)\r\n {\r\n let mod: string;\r\n\r\n switch (OrderDataHelper.userRole)\r\n {\r\n case ProfileType.admin:\r\n mod = \"admin\";\r\n break;\r\n\r\n case ProfileType.freightForwarder:\r\n mod = \"ff\";\r\n break;\r\n\r\n case ProfileType.customer:\r\n mod = \"customer\";\r\n break;\r\n }\r\n\r\n this.router.navigate([`/${mod}/order-details`, agData.uid]);\r\n }\r\n}","export default \"\\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
\";","export enum EntityType\r\n{\r\n Merchant = 1,\r\n License = 2,\r\n Order = 3,\r\n Product = 4,\r\n Purchaser = 5,\r\n FreightForwarder = 6,\r\n Task = 7,\r\n OrderDocument = 8\r\n}","export enum LicenseStatus\r\n{\r\n Active = 1,\r\n Pending = 2,\r\n Complete = 4,\r\n RWA = 6,\r\n New = 7,\r\n Expired = 9,\r\n PendingReview = 10,\r\n Denial = 12\r\n}","import { CommonSettings } from '@app/shared/common-settings';\r\nimport { Component, OnDestroy, TemplateRef, ViewChild } from \"@angular/core\";\r\nimport { BaseComponent, Customer, CustomerService } from \"@app/data\";\r\nimport { MerchantRequestDTO } from \"@app/data/customer/merchant-request.dto\";\r\nimport { TaskEntity } from '@app/data/enums/task-entity.enum';\r\nimport { NgbModal } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\nimport { Subscription } from 'rxjs';\r\n\r\n@Component(\r\n{\r\n selector: \"merchant-dialog\",\r\n templateUrl: \"./merchant-dialog.component.html\",\r\n})\r\nexport class MerchantDialogComponent extends BaseComponent implements OnDestroy\r\n{\r\n @ViewChild(\"dialogMerchant\")\r\n dialogMerchant: TemplateRef;\r\n\r\n public licenseName: string;\r\n public taskEntityType = TaskEntity.License;\r\n\r\n private subQuestion: Subscription;\r\n\r\n constructor(\r\n toastrService: ToastrService,\r\n public modalService: NgbModal,\r\n private custServ: CustomerService)\r\n {\r\n super(toastrService);\r\n\r\n this.subQuestion = this.custServ.merchantQuestion.subscribe((request) => { this.handleQuestion(request) });\r\n this.modalService = modalService;\r\n }\r\n\r\n ngOnDestroy(): void\r\n {\r\n this.subQuestion.unsubscribe();\r\n }\r\n\r\n public openAdd()\r\n {\r\n this.open(this.dialogMerchant, null, CommonSettings.DialogSize_XLarge);\r\n }\r\n\r\n public openEdit(merchantUID)\r\n {\r\n this.open(this.dialogMerchant, { uid: merchantUID }, CommonSettings.DialogSize_XLarge);\r\n }\r\n\r\n public onCustomerUpdated()\r\n {\r\n if (this.update)\r\n {\r\n this.update.emit();\r\n }\r\n }\r\n\r\n public onClose()\r\n {\r\n let quest = new MerchantRequestDTO(MerchantRequestDTO.Request_DirtyClose);\r\n\r\n this.custServ.sendQuestion(quest);\r\n }\r\n\r\n private handleQuestion(question: MerchantRequestDTO)\r\n {\r\n switch (question.requestID)\r\n {\r\n case MerchantRequestDTO.Request_Close:\r\n this.close();\r\n break;\r\n }\r\n }\r\n}","export default \"\\r\\n
\\r\\n
Merchant
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
{{ data?.displayName }}
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\";","export enum PurchaserAddressImageType\r\n{\r\n StreetView = 1,\r\n AerialView = 2,\r\n Direction = 3\r\n}","export class QandAData\r\n{\r\n data: any;\r\n taskID: number;\r\n\r\n constructor(taskID: number = 0, data: any = null)\r\n {\r\n this.data = data;\r\n this.taskID = taskID;\r\n }\r\n}","import { Component, OnDestroy, TemplateRef, ViewChild } from \"@angular/core\";\r\nimport { BaseComponent, License, LicenseService } from \"@app/data\";\r\nimport { LicenseStatus } from \"@app/data/enums/license-status-type.enum\";\r\nimport { TaskEntity } from '@app/data/enums/task-entity.enum';\r\nimport { LicenseCommon } from \"@app/data/license/license-common\";\r\nimport { QandAData } from \"@app/data/misc/q-and-a-data.model\";\r\nimport { CommonSettings } from '@app/shared/common-settings';\r\nimport { ConfirmationService, IConfirmationOptions } from \"@app/shared/confirmation/confirmation.service\";\r\nimport { NgbModal } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\nimport { Subscription } from \"rxjs\";\r\n\r\n@Component(\r\n{\r\n selector: \"license-dialog\",\r\n templateUrl: \"./license-dialog.component.html\",\r\n})\r\nexport class LicenseDialogComponent extends BaseComponent implements OnDestroy\r\n{\r\n @ViewChild(\"licenseDialog\")\r\n licenseDialog: TemplateRef;\r\n\r\n public readonly Tab_Docs = 1;\r\n public readonly Tab_Tasks = 2;\r\n public readonly Tab_Trans = 3;\r\n public readonly Tab_Detail = 4;\r\n\r\n public readonly taskEntityType = TaskEntity.License;\r\n public readonly licenseStatuses = LicenseStatus;\r\n\r\n public setTab: number;\r\n public licenseType: number;\r\n public licenseName: string;\r\n\r\n private holdTab: number;\r\n private closeMe: boolean;\r\n private liceAns: Subscription;\r\n\r\n constructor(\r\n toastrService: ToastrService,\r\n public modalService: NgbModal,\r\n private licenseServ: LicenseService,\r\n private confirmService: ConfirmationService)\r\n {\r\n super(toastrService);\r\n\r\n this.liceAns = this.licenseServ.answerHandeler.subscribe((request) => { this.handleAnswer(request) });\r\n this.modalService = modalService;\r\n }\r\n\r\n ngOnDestroy()\r\n {\r\n this.liceAns.unsubscribe();\r\n }\r\n\r\n public openAdd(licenseType: number): void\r\n {\r\n this.open(this.licenseDialog, null, CommonSettings.DialogSize_XLarge);\r\n\r\n this.setupUI(licenseType);\r\n }\r\n\r\n public openEdit(data)\r\n {\r\n this.open(this.licenseDialog, data, CommonSettings.DialogSize_XLarge);\r\n\r\n this.setupUI(data.licenseType);\r\n }\r\n\r\n public onTabChange(evtArg): void\r\n {\r\n if (this.setTab != this.Tab_Detail)\r\n {\r\n return;\r\n }\r\n\r\n this.holdTab = evtArg.nextId;\r\n this.closeMe = false;\r\n\r\n evtArg.preventDefault();\r\n\r\n this.licenseServ.sendQuestion(new QandAData(LicenseCommon.qaData_Dirty));\r\n }\r\n\r\n public onUpdate(): void\r\n {\r\n if (this.update)\r\n {\r\n this.update.emit();\r\n }\r\n }\r\n\r\n public onClose(): void\r\n {\r\n if (this.setTab != this.Tab_Detail)\r\n {\r\n this.close();\r\n return;\r\n }\r\n\r\n this.closeMe = true;\r\n\r\n this.licenseServ.sendQuestion(new QandAData(LicenseCommon.qaData_Dirty));\r\n }\r\n\r\n public onSave(closeMe: boolean): void\r\n {\r\n this.closeMe = closeMe;\r\n this.holdTab = null;\r\n\r\n this.licenseServ.sendQuestion(new QandAData(LicenseCommon.qaData_Save, closeMe));\r\n }\r\n\r\n public onRelease(closeMe: boolean): void\r\n {\r\n this.closeMe = closeMe;\r\n this.holdTab = null;\r\n\r\n this.licenseServ.sendQuestion(new QandAData(LicenseCommon.qaData_Release, closeMe));\r\n }\r\n\r\n private setupUI(licenseType: number): void\r\n {\r\n this.setTab = this.Tab_Detail;\r\n this.closeMe = false;\r\n this.licenseType = licenseType;\r\n this.licenseName = LicenseCommon.getLicenseName(licenseType);\r\n }\r\n\r\n private handleAnswer(answer: QandAData): void\r\n {\r\n switch (answer.taskID)\r\n {\r\n case LicenseCommon.qaData_Save:\r\n case LicenseCommon.qaData_Release:\r\n this.whatNext(answer);\r\n break;\r\n\r\n case LicenseCommon.qaData_Dirty:\r\n this.handleDirty(answer);\r\n break;\r\n }\r\n }\r\n\r\n private handleDirty(answer: QandAData): void\r\n {\r\n if (!answer.data)\r\n {\r\n this.whatNext();\r\n return;\r\n }\r\n\r\n let opts: IConfirmationOptions =\r\n {\r\n FunctionConfirm: () => this.whatNext()\r\n };\r\n\r\n this.confirmService.YesNo(CommonSettings.DirtyFormConfirmationMessage, opts);\r\n }\r\n\r\n private whatNext(answer: QandAData = null): void\r\n {\r\n if (this.closeMe)\r\n {\r\n this.close();\r\n return;\r\n }\r\n\r\n if (this.holdTab != null)\r\n {\r\n this.setTab = this.holdTab;\r\n return;\r\n }\r\n\r\n if (answer == null)\r\n {\r\n return;\r\n }\r\n\r\n this.licenseServ.detail({ uid: answer.data.uid }).subscribe(\r\n retRes => this.loadDetail(retRes),\r\n errRes => this.error(errRes));\r\n }\r\n\r\n private loadDetail(liceData: License): void\r\n {\r\n this.data = liceData;\r\n\r\n let ques = new QandAData(LicenseCommon.qaData_Update, liceData);\r\n\r\n this.licenseServ.sendQuestion(ques);\r\n }\r\n}","export default \"\\r\\n
\\r\\n
{{ licenseName + \\\" License\\\" }}
\\r\\n \\r\\n
\\r\\n
\\r\\n
    \\r\\n
  • \\r\\n Details\\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 Transactions\\r\\n \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
  • \\r\\n
  • \\r\\n Tasks\\r\\n \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
  • \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\";","import { Component, ElementRef, OnInit, ViewChild } from \"@angular/core\";\r\nimport { BaseComponent, LicenseDocument, LicenseDocumentService, Lookup, LookupService, LookupType } from \"@app/data\";\r\nimport { CommonSettings } from \"@app/shared/common-settings\";\r\nimport { ConfirmationService, IConfirmationOptions } from \"@app/shared/confirmation/confirmation.service\";\r\nimport { NgbModal } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\n\r\n@Component({\r\n selector: \"app-license-document-edit\",\r\n templateUrl: \"./license-document-edit.component.html\"\r\n})\r\nexport class LicenseDocumentEditComponent extends BaseComponent implements OnInit\r\n{\r\n @ViewChild(\"dialogDoc\")\r\n dialogDoc: ElementRef;\r\n\r\n public docFile?: File;\r\n public docTypes: Array;\r\n\r\n constructor(\r\n toastrService: ToastrService,\r\n private modalServ: NgbModal,\r\n private lookupServ: LookupService,\r\n private confirmService: ConfirmationService,\r\n private licenseDocumentService: LicenseDocumentService)\r\n {\r\n super(toastrService);\r\n\r\n this.dataForm = this.licenseDocumentService.editorForm;\r\n this.apiService = this.licenseDocumentService;\r\n this.modalService = modalServ;\r\n }\r\n\r\n ngOnInit(): void\r\n {\r\n this.lookupServ.getByType(LookupType.LicenseDocumentType).subscribe(\r\n {\r\n next: (retRes) => this.docTypes = retRes.results\r\n });\r\n }\r\n\r\n public openAdd(licenseUID)\r\n {\r\n this.open(this.dialogDoc);\r\n\r\n this.resetForm();\r\n this.setValue(\"licenseUID\", licenseUID);\r\n\r\n this.docFile = undefined;\r\n }\r\n\r\n public openEdit(data)\r\n {\r\n this.open(this.dialogDoc, data);\r\n\r\n this.docFile = undefined;\r\n }\r\n\r\n public onFileSelect(evtArg)\r\n {\r\n this.docFile = evtArg.target.files[0];\r\n\r\n if (!this.docFile)\r\n {\r\n return;\r\n }\r\n\r\n this.formControls[\"fileName\"].setValue(this.docFile.name);\r\n\r\n this.dataForm.markAsDirty();\r\n }\r\n\r\n public onClose()\r\n {\r\n if (!this.dataForm.dirty)\r\n {\r\n this.close();\r\n return;\r\n }\r\n\r\n let opts: IConfirmationOptions =\r\n {\r\n FunctionConfirm: () => this.close()\r\n };\r\n\r\n this.confirmService.YesNo(CommonSettings.DirtyFormConfirmationMessage, opts);\r\n }\r\n\r\n public onSave()\r\n {\r\n if (this.invalid())\r\n {\r\n return;\r\n }\r\n\r\n this.loading = true;\r\n\r\n if (this.data?.uid == null)\r\n {\r\n this.licenseDocumentService.upload(this.docFile, this.dataValue).subscribe(\r\n retRes => this.saveComplete(),\r\n errRes =>\r\n {\r\n this.loading = false;\r\n this.error(errRes);\r\n });\r\n\r\n return;\r\n }\r\n\r\n this.submit().add(() => this.saveComplete());\r\n }\r\n\r\n private saveComplete()\r\n {\r\n this.loading = false;\r\n\r\n if (this.submitError)\r\n {\r\n return;\r\n }\r\n\r\n this.close();\r\n\r\n if (this.update)\r\n {\r\n this.update.emit();\r\n }\r\n }\r\n}","export default \"\\r\\n
\\r\\n
License 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
Name is required
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
Document Type is required
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\";","import { Component, OnInit, ViewChild } from \"@angular/core\";\r\nimport { LicenseDocument, LicenseDocumentService } from \"@app/data\";\r\nimport { GridBase } from \"@app/shared/ag-grid-helpers/ag-grid-base\";\r\nimport { GridHelpers } from \"@app/shared/ag-grid-helpers/grid-helper\";\r\nimport { GridColumnIcon } from \"@app/shared/ag-grid-helpers/models/grid-column-icon.model\";\r\nimport { GridColumn } from \"@app/shared/ag-grid-helpers/models/grid-column.model\";\r\nimport { ConfirmationService, IConfirmationOptions } from \"@app/shared/confirmation/confirmation.service\";\r\nimport { DocumentPreviewService } from \"@app/shared/document-preview/document-preview.service\";\r\nimport { FileSaverService } from \"ngx-filesaver\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\nimport { LicenseDocumentEditComponent } from \"../license-document-edit/license-document-edit.component\";\r\n\r\n@Component({\r\n selector: \"app-license-document-list\",\r\n templateUrl: \"./license-document-list.component.html\"\r\n})\r\nexport class LicenseDocumentListComponent extends GridBase implements OnInit\r\n{\r\n @ViewChild(\"dialogDoc\")\r\n dialogDoc: LicenseDocumentEditComponent;\r\n\r\n constructor(\r\n toastrService: ToastrService,\r\n private confirmService: ConfirmationService,\r\n private docViewService: DocumentPreviewService,\r\n private licenseDocServ: LicenseDocumentService,\r\n private fileSaverService: FileSaverService)\r\n {\r\n super(toastrService, licenseDocServ);\r\n\r\n this.setupGrid();\r\n }\r\n\r\n ngOnInit()\r\n {\r\n this.filterAdd(\"licenseUID\", this.parentUID, false);\r\n }\r\n\r\n public onAdd()\r\n {\r\n this.dialogDoc.openAdd(this.parentUID);\r\n }\r\n\r\n private setupGrid()\r\n {\r\n let gridIcons =\r\n [\r\n GridHelpers.MakeEditIcon(this.onEdit.bind(this)),\r\n GridHelpers.MakeDeleteIcon(this.onDelete.bind(this)),\r\n GridHelpers.MakeDownloadIcon(this.onDownload.bind(this)),\r\n GridHelpers.MakeViewIcon(this.onViewDoc.bind(this))\r\n ];\r\n\r\n this.storageKey = \"LicenseDocumentList\";\r\n this.gridOpts.domLayout = GridHelpers.DOMLayout_Normal;\r\n this.gridOpts.paginationPageSize = 10;\r\n\r\n this.addColumn(new GridColumn(\"name\", \"Name\"));\r\n this.addColumn(new GridColumn(\"documentType.name\", \"Type\"));\r\n this.addColumn(new GridColumnIcon(gridIcons));\r\n\r\n this.rowDoubleClick(this.onEdit.bind(this));\r\n }\r\n\r\n private onViewDoc(agData: any): void\r\n {\r\n let path = this.licenseDocServ.buildUrl(\"download-pdf\");\r\n let fileName = `${path}?fileNameUID=${agData.fileNameUID}`;\r\n\r\n this.docViewService.openConvert(fileName, this.title);\r\n }\r\n\r\n private onDownload(data: LicenseDocument)\r\n {\r\n this.licenseDocServ.getFile(\"download\", data.fileNameUID).subscribe(\r\n retRes => this.fileSaverService.save(retRes, data.fileName),\r\n errRes => this.error(errRes));\r\n }\r\n\r\n private onEdit(agData)\r\n {\r\n agData.licenseUID = this.parentUID;\r\n\r\n this.dialogDoc.openEdit(agData);\r\n }\r\n\r\n private onDelete(agData)\r\n {\r\n this.dataForm = this.makeForm(agData);\r\n\r\n let opts: IConfirmationOptions =\r\n {\r\n FunctionConfirm: () => this.deleteIt()\r\n };\r\n\r\n this.confirmService.Delete(`Are you sure you want to delete ${agData.name}?`, opts);\r\n }\r\n\r\n private deleteIt()\r\n {\r\n this.delete().add(() => this.gridRefresh());\r\n }\r\n}","export default \"
\\r\\n
\\r\\n
Add DOC License or other documents associated to this license.
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\";","import { HttpClient } from \"@angular/common/http\";\r\nimport { Injectable } from '@angular/core';\r\nimport { ApiService } from '../api/api.service';\r\nimport { FreightForwarderLookup } from \"./freight-forwarder-lookup\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class FreightForwarderLookupService extends ApiService\r\n{\r\n constructor(httpClient: HttpClient)\r\n {\r\n super(httpClient, \"freight-forwarder\");\r\n }\r\n}","import { AfterViewInit, Component, ElementRef, ViewChild } from \"@angular/core\";\r\nimport { AgEditorComponent } from \"ag-grid-angular\";\r\n\r\n@Component({\r\n selector: \"grid-cell-number-editor.component\",\r\n styleUrls: [\"./grid-cell-number-editor.component.scss\"],\r\n templateUrl: \"./grid-cell-number-editor.component.html\"\r\n})\r\nexport class GridCellNumberEditorComponent implements AgEditorComponent, AfterViewInit\r\n{\r\n @ViewChild(\"inNumber\")\r\n inNumber: ElementRef;\r\n\r\n public minValue = 0;\r\n public maxValue = Number.MAX_VALUE;\r\n public numValue;\r\n public stepValue = 1;\r\n public mainParams;\r\n\r\n constructor()\r\n {\r\n }\r\n\r\n public agInit(params: any): void\r\n {\r\n this.numValue = params.value;\r\n this.mainParams = params;\r\n\r\n if (params.hasOwnProperty(\"max\"))\r\n {\r\n let max = params.max;\r\n\r\n if (typeof max == \"object\" && max.hasOwnProperty(\"data\"))\r\n {\r\n max = params.data[max.data];\r\n }\r\n\r\n this.maxValue = max;\r\n }\r\n\r\n if (params.hasOwnProperty(\"min\"))\r\n {\r\n let min = params.min;\r\n\r\n if (typeof min == \"object\" && min.hasOwnProperty(\"data\"))\r\n {\r\n min = params.data[min.data];\r\n }\r\n\r\n this.minValue = min;\r\n }\r\n\r\n if (params.hasOwnProperty(\"step\"))\r\n {\r\n this.stepValue = params.step;\r\n }\r\n }\r\n\r\n public getValue()\r\n {\r\n // The ag-grid does not call the blur event when the user hit enter or tab, so call blur just in case.\r\n this.onBlur();\r\n\r\n return this.numValue;\r\n }\r\n\r\n public onBlur()\r\n {\r\n if (this.numValue > this.maxValue)\r\n {\r\n this.numValue = this.maxValue;\r\n }\r\n\r\n if (this.numValue < this.minValue)\r\n {\r\n this.numValue = this.minValue;\r\n }\r\n\r\n // LameO workaround!\r\n // getValue() has to be called to assign the new value into the data object, however if the User uses the mouse to click away without pressing TAB or ENTER, getValue() isn't called.\r\n // This will plug the new value directly into the data object.\r\n let field = this.mainParams.colDef.field;\r\n\r\n this.mainParams.data[field] = this.numValue;\r\n }\r\n\r\n public ngAfterViewInit()\r\n {\r\n setTimeout(() => this.inNumber.nativeElement.focus());\r\n }\r\n}","export default \"\";","export default \"input {\\n font-size: 1.25rem;\\n}\\n\";","import { Component, ElementRef, Input, OnDestroy, OnInit, ViewChild, ViewEncapsulation } from \"@angular/core\";\r\nimport { CustomerService, License, LicenseItem, LicenseItemService, LicenseService, LicenseTemplate, LicenseTemplateService, LookupService, Purchaser, PurchaserService } from \"@app/data\";\r\nimport { LicenseStatus } from \"@app/data/enums/license-status-type.enum\";\r\nimport { LicenseType } from \"@app/data/enums/license-type.enum\";\r\nimport { PurchaserType } from \"@app/data/enums/purchaser-type.enum\";\r\nimport { FreightForwarderLookupService } from \"@app/data/freight/freight-forwarder-lookup.service\";\r\nimport { LicenseCommon } from \"@app/data/license/license-common\";\r\nimport { QandAData } from \"@app/data/misc/q-and-a-data.model\";\r\nimport { GridBase } from \"@app/shared/ag-grid-helpers/ag-grid-base\";\r\nimport { GridCellNumberEditorComponent } from \"@app/shared/ag-grid-helpers/components/grid-cell-number-editor/grid-cell-number-editor.component\";\r\nimport { GridHelpers } from \"@app/shared/ag-grid-helpers/grid-helper\";\r\nimport { GridColumnIcon } from \"@app/shared/ag-grid-helpers/models/grid-column-icon.model\";\r\nimport { GridColumnMeter } from \"@app/shared/ag-grid-helpers/models/grid-column-meter\";\r\nimport { GridColumn, GridColumnType } from \"@app/shared/ag-grid-helpers/models/grid-column.model\";\r\nimport { DateHelper } from \"@app/utils/date-helper\";\r\nimport { Util } from \"@app/utils/util\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\nimport { Subscription } from \"rxjs\";\r\n\r\n@Component({\r\n selector: \"app-license-edit\",\r\n styleUrls: [\"./license-edit.component.scss\"],\r\n templateUrl: \"./license-edit.component.html\",\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class LicenseEditComponent extends GridBase implements OnInit, OnDestroy\r\n{\r\n @Input()\r\n licenseType: number;\r\n\r\n @ViewChild(\"tableBody\")\r\n tableBody: ElementRef;\r\n\r\n public readonly licenseStatuses = LicenseStatus;\r\n\r\n public refName: string;\r\n public commName: string;\r\n public newLicense: boolean;\r\n public countryName: string;\r\n public liceTemplate: string;\r\n public showQuantityWarning: boolean = false;\r\n\r\n private liceAns: Subscription;\r\n private isClosing: boolean;\r\n private liceItems: LicenseItem[];\r\n private liceQuest: Subscription;\r\n\r\n constructor(\r\n toastrService: ToastrService,\r\n public ffLookupServ: FreightForwarderLookupService,\r\n public lookupService: LookupService,\r\n public customerService: CustomerService,\r\n public purchaserService: PurchaserService,\r\n public licenseTemplateService: LicenseTemplateService,\r\n private licenseService: LicenseService,\r\n private licenseItemService: LicenseItemService)\r\n {\r\n super(toastrService, licenseItemService);\r\n\r\n this.liceAns = this.licenseService.answerHandeler.subscribe((request) => { this.handleAnswer(request) });\r\n this.dataForm = this.licenseService.editorForm;\r\n this.liceQuest = this.licenseService.questionHandler.subscribe((request) => { this.handleQuestion(request) });\r\n this.apiService = licenseService;\r\n this.autoHandleLoading = false;\r\n }\r\n\r\n ngOnInit(): void\r\n {\r\n this.newLicense = (this.data == null);\r\n\r\n if (this.licenseType == LicenseType.ear)\r\n {\r\n this.refName = \"Reference\";\r\n this.commName = \"Comments / Conditions / Riders\";\r\n }\r\n else\r\n {\r\n this.refName = \"Transaction\";\r\n this.commName = \"Comments / Provisos\";\r\n }\r\n\r\n this.setValue(\"licenseType\", this.licenseType);\r\n this.setupGrid();\r\n\r\n if (this.newLicense)\r\n {\r\n this.customerService.getCustomerLookup();\r\n this.purchaserService.getPurchaserLookup();\r\n return;\r\n }\r\n\r\n this.ffLookupServ.getLookup({ countryUID: this.data.destinationCountryUID });\r\n\r\n this.plugLicense();\r\n this.loadItems({ licenseUID: this.data.uid });\r\n }\r\n\r\n ngOnDestroy()\r\n {\r\n this.liceAns.unsubscribe();\r\n this.liceQuest.unsubscribe();\r\n }\r\n\r\n public onMyGridReady(evtArg)\r\n {\r\n this.onGridReady(evtArg, false);\r\n }\r\n\r\n public onGetRowClass(params)\r\n {\r\n if ((params.data.quantity - params.data.origValue) < 0)\r\n {\r\n return \"has-warning\";\r\n }\r\n\r\n return null;\r\n }\r\n\r\n public onEditStop(evtArg)\r\n {\r\n let row = evtArg.data;\r\n let ogQty = row.origValue;\r\n let newQty = row.quantity;\r\n\r\n row.amount = newQty * row.unitAmount;\r\n row.percentage = this.calcPercent(row);\r\n\r\n this.mainGrid.applyTransaction({ update: [row] });\r\n this.dataForm.markAsDirty();\r\n\r\n if (this.data?.statusType != LicenseStatus.Active)\r\n {\r\n this.showQuantityWarning = false;\r\n return;\r\n }\r\n\r\n if ((newQty - ogQty) < 0)\r\n {\r\n this.showQuantityWarning = true;\r\n }\r\n }\r\n\r\n public onPurchaserSelected(evtArg): void\r\n {\r\n if (Util.isEmpty(evtArg))\r\n {\r\n this.ffLookupServ.lookupList = [];\r\n this.licenseTemplateService.lookupList = [];\r\n\r\n this.gridPopulate(null);\r\n this.setValue(\"destinationCountryUID\", null);\r\n return;\r\n }\r\n\r\n this.purchaserService.detail({ uid: evtArg.uid })\r\n .subscribe(data => this.filterPurchaserData(data));\r\n }\r\n\r\n public onGetLicenseItems(liceItem?: LicenseItem): void\r\n {\r\n this.loadItems({ licenseTemplateUID: liceItem.uid });\r\n }\r\n\r\n private setupGrid()\r\n {\r\n let optsOverride =\r\n {\r\n filter: null,\r\n sortable: false,\r\n resizable: false,\r\n suppressMenu: true,\r\n };\r\n\r\n let name = (this.licenseType == LicenseType.ear ? \"EAR\" : \"USML\");\r\n let colAmt = new GridColumn(\"amount\", \"Amount\", GridColumnType.Money);\r\n let colCat = new GridColumn(\"earCategory\", name);\r\n let colQty = new GridColumn(\"quantity\", \"Qty\", GridColumnType.Number);\r\n let colPer = new GridColumnMeter(\"remainingLicensePercent\", \"Percent\");\r\n let colLine = new GridColumn(\"exportLineItem\", \"#\", GridColumnType.Number);\r\n let colUAmt = new GridColumn(\"unitAmount\", \"Unit Amount\", GridColumnType.Money)\r\n let colRemAmt = new GridColumn(\"remainingAmount\", \"Remain Amt\", GridColumnType.Number);\r\n let colRemQty = new GridColumn(\"remainingQuantity\", \"Remain Qty\", GridColumnType.Number);\r\n let gridIcons = GridHelpers.MakeEditIcon(this.onEdit.bind(this));\r\n\r\n this.storageKey = \"LicenseItemsList\";\r\n this.gridOpts.sideBar = null;\r\n this.gridOpts.domLayout = GridHelpers.DOMLayout_Normal;\r\n this.gridOpts.paginationPageSize = 15;\r\n\r\n colAmt = Object.assign(colAmt, optsOverride);\r\n colAmt.width = 100;\r\n\r\n colCat = Object.assign(colCat, optsOverride);\r\n\r\n colPer = Object.assign(colPer, optsOverride);\r\n colPer.width = 150;\r\n\r\n colQty = Object.assign(colQty, optsOverride);\r\n colQty.width = 100;\r\n colQty.editable = true;\r\n colQty.cellEditor = \"gridCellNumberEditorComponent\";\r\n colQty.cellEditorParams = { min: 0, max: { data: \"remaining\" } };\r\n\r\n colLine = Object.assign(colLine, optsOverride);\r\n colLine.width = 50;\r\n\r\n colUAmt = Object.assign(colUAmt, optsOverride);\r\n colUAmt.width = 100;\r\n\r\n colRemAmt = Object.assign(colRemAmt, optsOverride);\r\n colRemAmt.width = 75;\r\n\r\n colRemQty = Object.assign(colRemQty, optsOverride);\r\n colRemQty.width = 75;\r\n\r\n this.addColumn(colLine);\r\n this.addColumn(colCat);\r\n this.addColumn(colQty);\r\n this.addColumn(colUAmt);\r\n this.addColumn(colAmt);\r\n this.addColumn(colRemQty);\r\n this.addColumn(colRemAmt);\r\n this.addColumn(colPer);\r\n this.addColumn(new GridColumnIcon([ gridIcons ]));\r\n\r\n this.rowDoubleClick(this.onEdit.bind(this));\r\n\r\n this.registerCustomComponents({ gridCellNumberEditorComponent: GridCellNumberEditorComponent });\r\n }\r\n\r\n private onEdit(agData: any)\r\n {\r\n let idx = this.liceItems.findIndex(cond => cond.exportLineItem == agData.exportLineItem);\r\n\r\n this.mainGrid.startEditingCell({ colKey: \"quantity\", rowIndex: idx });\r\n }\r\n\r\n private loadItems(filter: any): void\r\n {\r\n this.licenseItemService.list(filter).subscribe(\r\n retRes => this.popItems(retRes),\r\n errRes => this.error(errRes));\r\n }\r\n\r\n private popItems(retRes): void\r\n {\r\n this.liceItems = retRes.results;\r\n\r\n for (let item of this.liceItems)\r\n {\r\n item[\"origValue\"] = item.quantity - item.remainingQuantity;\r\n\r\n if (this.newLicense)\r\n {\r\n item[\"quantity\"] = 0;\r\n }\r\n }\r\n\r\n this.loadingOff();\r\n this.gridPopulate(this.liceItems);\r\n }\r\n\r\n private calcPercent(data: LicenseItem): number\r\n {\r\n let amt = data.amount;\r\n let qty = data.quantity;\r\n\r\n if (Util.isEmpty(amt))\r\n {\r\n amt = 0;\r\n }\r\n else\r\n {\r\n amt = Util.roundTo(data.remainingAmount / amt, 2);\r\n }\r\n\r\n if (Util.isEmpty(qty))\r\n {\r\n qty = 0;\r\n }\r\n else\r\n {\r\n qty = Util.roundTo(data.remainingQuantity / qty, 2);\r\n }\r\n\r\n return Math.min(qty, amt);\r\n }\r\n\r\n private handleAnswer(answer: QandAData)\r\n {\r\n switch (answer.taskID)\r\n {\r\n }\r\n }\r\n\r\n private handleQuestion(question: QandAData): void\r\n {\r\n switch (question.taskID)\r\n {\r\n case LicenseCommon.qaData_Save:\r\n case LicenseCommon.qaData_Release:\r\n this.saveLicense(question);\r\n break;\r\n\r\n case LicenseCommon.qaData_Dirty:\r\n this.sendDirty();\r\n break;\r\n\r\n case LicenseCommon.qaData_Update:\r\n this.data = question.data;\r\n this.plugLicense();\r\n break;\r\n }\r\n }\r\n\r\n private sendDirty(): void\r\n {\r\n let ans = new QandAData(LicenseCommon.qaData_Dirty, this.dataForm.dirty);\r\n\r\n this.licenseService.sendAnswer(ans);\r\n }\r\n\r\n private saveLicense(question: QandAData): void\r\n {\r\n let path: string;\r\n\r\n if (question.taskID == LicenseCommon.qaData_Release)\r\n {\r\n path = \"release\";\r\n\r\n this.makeRequired([\"issueDate\", \"licenseNumber\", \"expirationDate\"]);\r\n }\r\n else\r\n {\r\n path = \"save\";\r\n\r\n this.makeRequired([\"issueDate\", \"licenseNumber\", \"expirationDate\"], false);\r\n }\r\n\r\n this.loadingOn(\"Saving...\");\r\n\r\n let sub = this.submit(path);\r\n\r\n this.isClosing = question.data.close;\r\n\r\n if (sub)\r\n {\r\n sub.add(() => this.saveItems());\r\n }\r\n else\r\n {\r\n this.loadingOff();\r\n }\r\n }\r\n\r\n private saveItems(): void\r\n {\r\n if (this.submitError)\r\n {\r\n this.loadingOff();\r\n return;\r\n }\r\n\r\n if (Util.isEmpty(this.liceItems))\r\n {\r\n this.loadingOff();\r\n this.sendSaveComplete();\r\n return;\r\n }\r\n\r\n this.liceItems.forEach(elm => elm.licenseUID = this.uid);\r\n\r\n this.licenseItemService.saveList(this.liceItems).subscribe(\r\n retRes => this.saveItemsComplete(),\r\n errRes => this.error(errRes));\r\n }\r\n\r\n private saveItemsComplete(): void\r\n {\r\n this.sendSaveComplete();\r\n\r\n if (this.isClosing)\r\n {\r\n return;\r\n }\r\n\r\n this.loadItems({ licenseUID: this.uid })\r\n }\r\n\r\n private sendSaveComplete(): void\r\n {\r\n let ans = new QandAData(LicenseCommon.qaData_Save, { uid: this.data.uid });\r\n\r\n this.newLicense = false;\r\n this.dataForm.markAsPristine();\r\n\r\n this.licenseService.sendAnswer(ans);\r\n }\r\n\r\n private setFirstFreight(): void\r\n {\r\n setTimeout(() =>\r\n {\r\n if (Util.isEmpty(this.ffLookupServ.lookupList))\r\n {\r\n this.setValue(\"freightUID\", null);\r\n }\r\n else\r\n {\r\n this.setValue(\"freightUID\", this.ffLookupServ.lookupList[0].uid);\r\n }\r\n }, 200);\r\n }\r\n\r\n private setFirstTemplate(): void\r\n {\r\n if (Util.isEmpty(this.licenseTemplateService.lookupList))\r\n {\r\n this.liceTemplate = null;\r\n return;\r\n }\r\n\r\n setTimeout(() =>\r\n {\r\n let uid = this.licenseTemplateService.lookupList[0].uid;\r\n\r\n this.liceTemplate = uid;\r\n this.onGetLicenseItems({ uid: uid });\r\n }, 200);\r\n }\r\n\r\n private filterPurchaserData(purchaser: Purchaser): void\r\n {\r\n let merch = this.getValue(\"customerUID\");\r\n let tempFilter: LicenseTemplate =\r\n {\r\n customerUID: merch,\r\n licenseType: this.licenseType\r\n };\r\n\r\n switch (purchaser.purchaserType)\r\n {\r\n case PurchaserType.Individual:\r\n tempFilter.isIndividual = true;\r\n break;\r\n\r\n case PurchaserType.Business:\r\n tempFilter.isBusiness = true;\r\n break;\r\n\r\n case PurchaserType.Government:\r\n tempFilter.isGovernment = true;\r\n break;\r\n }\r\n\r\n this.countryName = purchaser.country?.name;\r\n\r\n this.setValue(\"destinationCountryUID\", purchaser.countryUID);\r\n\r\n this.licenseTemplateService.getLookup(tempFilter)\r\n .add(() => this.setFirstTemplate());\r\n\r\n this.ffLookupServ.getLookup({ countryUID: purchaser.countryUID })\r\n .add(() => this.setFirstFreight());\r\n }\r\n\r\n private plugLicense(): void\r\n {\r\n this.patchValue();\r\n\r\n this.countryName = this.data.destinationCountry?.name;\r\n\r\n this.setValue(\"customerUID\", this.data.customer.uid);\r\n this.setValue(\"purchaserUID\", this.data.purchaser.uid);\r\n }\r\n}","export default \"\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
Merchant is required
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
Purchaser is required
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
{{ countryName }}
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
{{ refName }} Number is required
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
License Number is required before you can Release
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
Submit date is required
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
Issue date is required before you can Release
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
Expiration date is required before you can Release
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n License Items\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n Warning: This change would reduce the quantity to below the original amount\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\";","export default \"h5 {\\n margin-bottom: 0rem;\\n}\\n\\n.has-warning {\\n border-bottom: 1px solid #ff9800 !important;\\n}\\n\";","import { HttpClient } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { ApiService } from \"../api/api.service\";\r\nimport { TransactionProductLicense } from \"./transaction-product-license\";\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class TransactionProductLicenseService extends ApiService\r\n{\r\n constructor(httpClient: HttpClient)\r\n {\r\n super(httpClient, \"transaction-product-license-list\");\r\n }\r\n}","import { Component, OnInit } from \"@angular/core\";\r\nimport { Router } from \"@angular/router\";\r\nimport { TransactionProductLicense } from \"@app/data/transaction-product-license/transaction-product-license\";\r\nimport { TransactionProductLicenseService } from \"@app/data/transaction-product-license/transaction-product-license.service\";\r\nimport { GridBase } from \"@app/shared/ag-grid-helpers/ag-grid-base\";\r\nimport { GridHelpers } from \"@app/shared/ag-grid-helpers/grid-helper\";\r\nimport { GridColumnIcon } from \"@app/shared/ag-grid-helpers/models/grid-column-icon.model\";\r\nimport { GridColumn, GridColumnType } from \"@app/shared/ag-grid-helpers/models/grid-column.model\";\r\nimport { NgbModal } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\n\r\n@Component({\r\n selector: \"app-license-transaction-product-list\",\r\n styleUrls: [\"./license-transaction-product-list.component.scss\"],\r\n templateUrl: \"./license-transaction-product-list.component.html\",\r\n})\r\n\r\nexport class TransactionProductLicenseListComponent extends GridBase implements OnInit\r\n{\r\n constructor(\r\n toastrService: ToastrService,\r\n public modalService: NgbModal,\r\n private router: Router,\r\n private transProductLicenseService: TransactionProductLicenseService)\r\n {\r\n super(toastrService, transProductLicenseService);\r\n\r\n this.setupGrid();\r\n }\r\n\r\n ngOnInit(): void\r\n {\r\n this.filterAdd(\"licenseUID\", this.parentUID);\r\n }\r\n\r\n private setupGrid()\r\n {\r\n let gridIcons =\r\n [\r\n GridHelpers.MakeViewIcon(this.onDetail.bind(this))\r\n ];\r\n\r\n this.storageKey = \"LicenseDocumentList\";\r\n this.gridOpts.domLayout = GridHelpers.DOMLayout_Normal;\r\n this.gridOpts.paginationPageSize = 10;\r\n\r\n this.addColumn(new GridColumn(\"licenseItem.exportLineItem\", \"#\"));\r\n this.addColumn(new GridColumn(\"licenseItem.description\", \"Description\"));\r\n this.addColumn(new GridColumn(\"transactionProduct.partNumber\", \"Part #\"));\r\n this.addColumn(new GridColumn(\"transaction.poNumber\", \"PO #\"));\r\n this.addColumn(new GridColumn(\"quantity\", \"Qty\", GridColumnType.Number));\r\n this.addColumn(new GridColumn(\"amount\", \"Amt\", GridColumnType.Money));\r\n this.addColumn(new GridColumn(\"dateApplied\", \"Date\", GridColumnType.Date));\r\n this.addColumn(new GridColumnIcon(gridIcons));\r\n\r\n this.rowDoubleClick(this.onDetail.bind(this));\r\n }\r\n\r\n public onDetail(transData: any): void\r\n {\r\n this.modalService.dismissAll();\r\n this.router.navigate([\"/admin/order-details\", transData.transaction.uid]);\r\n }\r\n}","export default \"\\r\\n\";","export default \".number {\\n text-align: right;\\n}\\n\\n.description {\\n overflow-x: hidden;\\n white-space: nowrap;\\n text-overflow: ellipsis;\\n}\\n\\n.list-wrapper {\\n padding: 1rem;\\n}\\n\\n.list-wrapper .header {\\n font-weight: bold;\\n}\\n\\n.list-wrapper .list-item {\\n padding: .5rem;\\n cursor: pointer;\\n}\\n\\n.list-wrapper .list-item:hover {\\n background-color: #dcddde;\\n}\\n\";","import { GridBase } from \"@app/shared/ag-grid-helpers/ag-grid-base\";\r\nimport { GridHelpers } from \"@app/shared/ag-grid-helpers/grid-helper\";\r\nimport { GridColumn, GridColumnType } from \"@app/shared/ag-grid-helpers/models/grid-column.model\";\r\nimport { DateHelper } from \"@app/utils/date-helper\";\r\nimport { Util } from \"@app/utils/util\";\r\n\r\nexport class HistoryListCommon extends GridBase\r\n{\r\n public setupGrid(gridStorageKey: string, label: string = \"Reviewed\"): void\r\n {\r\n let colName = new GridColumn(\"who\", `${label} by`);\r\n let colPrev = new GridColumn(\"prev\", \"From\");\r\n let changeCols =\r\n [\r\n new GridColumn(\"field\", \"Field\"),\r\n colPrev,\r\n new GridColumn(\"new\", \"To\")\r\n ];\r\n\r\n colPrev.type = GridHelpers.AlignRight;\r\n colName.cellRenderer = \"agGroupCellRenderer\";\r\n\r\n this.storageKey = gridStorageKey;\r\n this.gridOpts.domLayout = GridHelpers.DOMLayout_Normal;\r\n this.gridOpts.masterDetail = true;\r\n this.gridOpts.detailRowHeight = 150;\r\n this.gridOpts.paginationPageSize = 10;\r\n this.gridOpts.detailCellRendererParams =\r\n {\r\n getDetailRowData: function (params)\r\n {\r\n params.successCallback(params.data.what);\r\n },\r\n detailGridOptions:\r\n {\r\n rowHeight: 25,\r\n columnDefs: changeCols,\r\n pagination: false,\r\n animateRows: true,\r\n headerHeight: 25,\r\n paginationPageSize: 50,\r\n onFirstDataRendered: function (params: any)\r\n {\r\n params.api.resetRowHeights();\r\n params.api.sizeColumnsToFit();\r\n }\r\n }\r\n };\r\n\r\n this.addColumn(colName);\r\n this.addColumn(new GridColumn(\"when\", `${label} on`, GridColumnType.DateTime));\r\n }\r\n\r\n public getHistory(filterData: any): void\r\n {\r\n this.gridGetData(filterData).subscribe(retRes => this.parseHistory(retRes));\r\n }\r\n\r\n private parseHistory(histData: any): void\r\n {\r\n let data = histData.results;\r\n\r\n if (Util.isEmpty(data))\r\n {\r\n this.gridPopulate(null);\r\n return;\r\n }\r\n\r\n DateHelper.sortArray(data, \"createdDate\");\r\n\r\n let changes = [];\r\n\r\n for (let histRec of data)\r\n {\r\n let addMe = changes.find(elm => elm.when == histRec.createdDate);\r\n let field =\r\n {\r\n new: histRec.toValue,\r\n prev: histRec.fromValue,\r\n field: histRec.label,\r\n };\r\n\r\n if (Util.isEmpty(addMe))\r\n {\r\n addMe =\r\n {\r\n who: `${histRec.review.firstName} ${histRec.review.lastName}`,\r\n what: [field],\r\n when: histRec.createdDate\r\n };\r\n\r\n changes.push(addMe);\r\n }\r\n else\r\n {\r\n addMe.what.push(field);\r\n }\r\n }\r\n\r\n DateHelper.sortArray(changes, \"when\", false);\r\n\r\n this.gridPopulate(changes);\r\n }\r\n}","import { HttpClient } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { ApiService } from \"@app/data/api/api.service\";\r\nimport { ProductHistory } from \"@app/data/product/product-history.model\";\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class ProductHistoryService extends ApiService\r\n{\r\n constructor(httpClient: HttpClient)\r\n {\r\n super(httpClient, \"product-history\");\r\n }\r\n}","import { Component, ElementRef, ViewChild } from \"@angular/core\";\r\nimport { HistoryListCommon } from \"@app/admin/history-list-common/history-list-common\";\r\nimport { ProductHistory } from \"@app/data/product/product-history.model\";\r\nimport { ProductHistoryService } from \"@app/data/product/product-history.service\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\n\r\n@Component({\r\n selector: \"product-history-list\",\r\n templateUrl: \"./product-history-list.html\"\r\n})\r\nexport class ProductHistoryList extends HistoryListCommon\r\n{\r\n @ViewChild(\"dialogHistory\")\r\n dialogHistory: ElementRef;\r\n\r\n constructor(\r\n toastrService: ToastrService,\r\n private prodHistoryServ: ProductHistoryService)\r\n {\r\n super(toastrService, prodHistoryServ);\r\n\r\n this.setupGrid(\"Product-History\", \"Modified\");\r\n }\r\n\r\n public onMyGridReady(evtArg): void\r\n {\r\n this.onGridReady(evtArg, false);\r\n\r\n this.getHistory({ productUID: this.parentUID });\r\n }\r\n}","export default \"\\r\\n\\r\\n\";","import { HttpClient } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { FormBuilder, Validators } from \"@angular/forms\";\r\nimport { ApiService } from \"@app/data/api/api.service\";\r\nimport { ProductOverrideImportHTS } from \"./product-override-import-hts.model\";\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class ProductOverrideImportHTSService extends ApiService\r\n{\r\n public get editForm()\r\n {\r\n let form = new FormBuilder();\r\n let grpFields = form.group(\r\n {\r\n uid: [],\r\n countryUID: [, Validators.required],\r\n productUID: [, Validators.required],\r\n overrideImportHTS: [, Validators.required],\r\n });\r\n\r\n return grpFields;\r\n }\r\n\r\n constructor(httpClient: HttpClient)\r\n {\r\n super(httpClient, \"product-override-importhts\");\r\n }\r\n}","import { Component, ElementRef, OnInit, ViewChild } from \"@angular/core\";\r\nimport { BaseComponent, LookupService } from \"@app/data\";\r\nimport { ProductOverrideImportHTSService } from \"@app/data/product/product-override-import-hts.service\";\r\nimport { ProductOverrideImportHTS } from \"@app/data/product/product-override-import-hts.model\";\r\nimport { CommonSettings } from \"@app/shared/common-settings\";\r\nimport { ConfirmationService, IConfirmationOptions } from \"@app/shared/confirmation/confirmation.service\";\r\nimport { NgbModal } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\n\r\n@Component({\r\n selector: \"product-override-import-hts-edit\",\r\n templateUrl: \"./product-override-import-hts-edit.html\"\r\n})\r\nexport class ProductOverrideImportHTSEdit extends BaseComponent implements OnInit\r\n{\r\n @ViewChild(\"dialogImport\")\r\n dialogImport: ElementRef;\r\n\r\n constructor(\r\n toastrService: ToastrService,\r\n public lookupServ: LookupService,\r\n private modalServ: NgbModal,\r\n private confirmService: ConfirmationService,\r\n private prodImportHTSServ: ProductOverrideImportHTSService)\r\n {\r\n super(toastrService);\r\n\r\n this.dataForm = prodImportHTSServ.editForm;\r\n this.apiService = prodImportHTSServ;\r\n this.modalService = modalServ;\r\n }\r\n\r\n ngOnInit(): void\r\n {\r\n this.lookupServ.getCountryList();\r\n }\r\n\r\n public openAdd(): void\r\n {\r\n this.open(this.dialogImport, null, CommonSettings.DialogSize_Small);\r\n this.resetForm();\r\n\r\n this.setValue(\"productUID\", this.parentUID);\r\n }\r\n\r\n public openEdit(record: ProductOverrideImportHTS): void\r\n {\r\n this.open(this.dialogImport, record, CommonSettings.DialogSize_Small);\r\n\r\n this.setValue(\"productUID\", this.parentUID);\r\n }\r\n\r\n public onClose(): void\r\n {\r\n if (!this.dataForm.dirty)\r\n {\r\n this.close();\r\n return;\r\n }\r\n\r\n let opts: IConfirmationOptions =\r\n {\r\n FunctionConfirm: () => this.close()\r\n };\r\n\r\n this.confirmService.YesNo(CommonSettings.DirtyFormConfirmationMessage, opts);\r\n }\r\n\r\n public onSave(): void\r\n {\r\n let sub = this.submit();\r\n\r\n if (sub)\r\n {\r\n sub.add(() => this.doneDidSaved());\r\n }\r\n }\r\n\r\n private doneDidSaved(): void\r\n {\r\n if (!this.submitError)\r\n {\r\n this.close();\r\n }\r\n }\r\n}","export default \"\\r\\n
\\r\\n
Override Import HTS
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\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 HTS is required
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\";","import { Component, ViewChild } from \"@angular/core\";\r\nimport { ProductOverrideImportHTSService } from \"@app/data/product/product-override-import-hts.service\";\r\nimport { ProductOverrideImportHTS } from \"@app/data/product/product-override-import-hts.model\";\r\nimport { GridBase } from \"@app/shared/ag-grid-helpers/ag-grid-base\";\r\nimport { GridHelpers } from \"@app/shared/ag-grid-helpers/grid-helper\";\r\nimport { GridColumnIcon } from \"@app/shared/ag-grid-helpers/models/grid-column-icon.model\";\r\nimport { GridColumn } from \"@app/shared/ag-grid-helpers/models/grid-column.model\";\r\nimport { ConfirmationService, IConfirmationOptions } from \"@app/shared/confirmation/confirmation.service\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\nimport { ProductOverrideImportHTSEdit } from \"../product-override-import-hts-edit/product-override-import-hts-edit\";\r\n\r\n@Component({\r\n selector: \"product-override-import-hts-list\",\r\n templateUrl: \"./product-override-import-hts-list.html\"\r\n})\r\nexport class ProductOverrideImportHTSList extends GridBase\r\n{\r\n @ViewChild(\"dialogImport\")\r\n dialogImport: ProductOverrideImportHTSEdit;\r\n\r\n constructor(\r\n toastrService: ToastrService,\r\n private confirmService: ConfirmationService,\r\n private prodImportHTSServ: ProductOverrideImportHTSService)\r\n {\r\n super(toastrService, prodImportHTSServ);\r\n\r\n this.setupGrid();\r\n }\r\n\r\n public onMyGridReady(evtArg): void\r\n {\r\n this.filterAdd(\"productUID\", this.parentUID);\r\n\r\n this.onGridReady(evtArg, false);\r\n }\r\n\r\n public onAdd(): void\r\n {\r\n this.dialogImport.openAdd();\r\n }\r\n\r\n private setupGrid(): void\r\n {\r\n let gridIcons =\r\n [\r\n GridHelpers.MakeEditIcon(this.onEdit.bind(this)),\r\n GridHelpers.MakeDeleteIcon(this.onDelete.bind(this)),\r\n ];\r\n\r\n this.storageKey = \"ProductOverrideImportHTS\";\r\n this.addColumn(new GridColumn(\"country.name\", \"Country\"));\r\n this.addColumn(new GridColumn(\"overrideImportHTS\", \"Import HTS\"));\r\n this.addColumn(new GridColumnIcon(gridIcons));\r\n\r\n this.setServerPath(\"list\");\r\n this.rowDoubleClick(this.onEdit.bind(this));\r\n }\r\n\r\n private onEdit(agData: any): void\r\n {\r\n this.dialogImport.openEdit(agData);\r\n }\r\n\r\n private onDelete(agData)\r\n {\r\n this.dataForm = this.makeForm(agData);\r\n\r\n let opts: IConfirmationOptions =\r\n {\r\n FunctionConfirm: () => this.deleteIt()\r\n };\r\n\r\n this.confirmService.Delete(\"Are you sure you want to delete this Override record?\", opts);\r\n }\r\n\r\n private deleteIt()\r\n {\r\n this.delete().add(() => this.gridRefresh());\r\n }\r\n}","export default \"
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\";","import { Component, ElementRef, ViewChild } from \"@angular/core\";\r\nimport { HistoryListCommon } from \"@app/admin/history-list-common/history-list-common\";\r\nimport { PurchaserAddressHistory, PurchaserAddressHistoryService } from \"@app/data\";\r\nimport { CommonSettings } from \"@app/shared/common-settings\";\r\nimport { NgbModal } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\n\r\n@Component({\r\n selector: \"purchaser-address-history-list\",\r\n templateUrl: \"./purchaser-address-history-list.component.html\"\r\n})\r\nexport class PurchaserAddressHistoryListComponent extends HistoryListCommon\r\n{\r\n @ViewChild(\"dialogHistory\")\r\n dialogHistory: ElementRef;\r\n\r\n constructor(\r\n toastrService: ToastrService,\r\n public modalService: NgbModal,\r\n private purchaserAddressHistoryService: PurchaserAddressHistoryService)\r\n {\r\n super(toastrService, purchaserAddressHistoryService);\r\n\r\n this.modalService = this.modalService;\r\n\r\n this.setupGrid(\"Purchaser-Address-History\");\r\n }\r\n\r\n public openHistory(addyUID: string): void\r\n {\r\n this.open(this.dialogHistory, null, CommonSettings.DialogSize_XLarge);\r\n\r\n this.getHistory({ purchaserAddressUID: addyUID });\r\n }\r\n\r\n public onClose(): void\r\n {\r\n this.close();\r\n }\r\n}","export default \"\\r\\n
\\r\\n
Address History
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n
\";","import { Component, Input, OnInit, ViewChild } from \"@angular/core\";\r\nimport { BaseComponent, PurchaserAddress, PurchaserAddressService } from \"@app/data\";\r\nimport { CommonSettings } from \"@app/shared/common-settings\";\r\nimport { ContactFormatter } from \"@app/utils/contact-formatter\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\nimport { PurchaserAddressHistoryListComponent } from \"../purchaser-address-history-list/purchaser-address-history-list.component\";\r\nimport { PurchaserAddressVerificationList } from \"../purchaser-address-verification/purchaser-address-verification-list/purchaser-address-verification-list.component\";\r\n\r\n@Component({\r\n selector: \"purchaser-address-list\",\r\n styleUrls: [\"./purchaser-address-list.component.scss\"],\r\n templateUrl: \"./purchaser-address-list.component.html\"\r\n})\r\nexport class PurchaserAddressListComponent extends BaseComponent implements OnInit\r\n{\r\n @Input()\r\n addressChangeExplanation: string;\r\n\r\n @ViewChild(\"dialogHistory\")\r\n dialogHistory: PurchaserAddressHistoryListComponent;\r\n\r\n @ViewChild(\"dialogVerification\")\r\n dialogVerification: PurchaserAddressVerificationList;\r\n\r\n constructor(\r\n toastrService: ToastrService,\r\n private purchaserAddressService: PurchaserAddressService)\r\n {\r\n super(toastrService);\r\n\r\n this.apiService = purchaserAddressService;\r\n }\r\n\r\n ngOnInit(): void\r\n {\r\n this.searchForm = this.makeForm({ purchaserUID: this.parentUID });\r\n this.postGetlist();\r\n }\r\n\r\n public onMap(address: PurchaserAddress): void\r\n {\r\n let contFor = new ContactFormatter(address);\r\n\r\n CommonSettings.openAddressWindow(contFor.googleLink());\r\n }\r\n\r\n public onHistory(uid: string): void\r\n {\r\n this.dialogHistory.openHistory(uid);\r\n }\r\n\r\n public onVerify(address: PurchaserAddress): void\r\n {\r\n this.dialogVerification.openVerification(address);\r\n }\r\n}","export default \"
\\r\\n \\r\\n
\\r\\n {{ addressChangeExplanation }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
{{ item.addressTypeName }}
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
{{ item.street1 }}
\\r\\n
\\r\\n
\\r\\n \\r\\n
{{ item.street2 }}
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
{{ item.city }}
\\r\\n
\\r\\n
\\r\\n \\r\\n
{{ item.state?.name }}
\\r\\n
\\r\\n
\\r\\n \\r\\n
{{ item.zip }}
\\r\\n
\\r\\n
\\r\\n \\r\\n
{{ item.country?.name }}
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\";","export default \".address-main {\\n margin: 0px auto;\\n max-width: 50rem;\\n}\\n\\n.address-change {\\n border: 1px solid #ccc;\\n height: 10rem;\\n padding: .5rem;\\n overflow-y: scroll;\\n border-radius: .5rem;\\n background-color: #eee;\\n}\\n\";","export default \".instructions {\\n color: #ccc;\\n text-align: center;\\n}\\n\\n.preview-main {\\n border: 1px solid #ccc;\\n padding: .5rem;\\n border-radius: .25rem;\\n background-color: #eee;\\n}\\n\\n.preview-wrapper {\\n border: 1px solid #ccc;\\n}\\n\\n.preview-map {\\n width: 100%;\\n height: 550px;\\n}\\n\\n.map-extras {\\n display: -ms-flexbox;\\n display: flex;\\n -ms-flex-align: center;\\n align-items: center;\\n}\\n\\n.captured-image {\\n border: 1px solid #ccc;\\n display: -ms-flexbox;\\n display: flex;\\n padding: .5rem;\\n -ms-flex-align: center;\\n align-items: center;\\n border-radius: .25rem;\\n -ms-flex-direction: column;\\n flex-direction: column;\\n background-color: #eee;\\n}\\n\\n.captured-image input {\\n background-color: #fff;\\n}\\n\\n.captured-image .header {\\n width: 100%;\\n display: -ms-flexbox;\\n display: flex;\\n -ms-flex-align: center;\\n align-items: center;\\n margin-bottom: 1rem;\\n}\\n\\n.captured-image .title {\\n overflow: hidden;\\n -ms-flex-positive: 1;\\n flex-grow: 1;\\n white-space: nowrap;\\n margin-bottom: 0rem !important;\\n text-overflow: ellipsis;\\n}\\n\\n.captured-image .buttons {\\n border: 1px solid #ccc;\\n display: -ms-flexbox;\\n display: flex;\\n padding: 0rem .25rem;\\n margin-right: .25rem;\\n border-radius: .25rem;\\n background-color: #fff;\\n}\\n\\n.captured-image .buttons div {\\n cursor: pointer;\\n}\\n\\n.captured-image .image-wrapper {\\n border: 1px solid #aaa;\\n cursor: pointer;\\n height: 250px;\\n}\\n\\n.captured-image .image-wrapper img {\\n width: 100%;\\n height: 100%;\\n}\\n\";","export enum InputEditViewType\r\n{\r\n Link = 1,\r\n Text = 2,\r\n Email = 3,\r\n Phone = 4\r\n}","import { HttpClient } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { FormBuilder, FormGroup, Validators } from \"@angular/forms\";\r\nimport { DomSanitizer, SafeUrl } from \"@angular/platform-browser\";\r\nimport { Observable } from \"rxjs\";\r\nimport { map, mergeMap } from \"rxjs/operators\";\r\nimport { ApiService } from \"../api/api.service\";\r\nimport { FixedImage } from \"../misc/fixed-image\";\r\nimport { PurchaserAddressImage } from \"./purchaser-address-image.model\";\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class PurchaserAddressImageService extends ApiService\r\n{\r\n public get editorForm(): FormGroup\r\n {\r\n let form = new FormBuilder();\r\n let grpFields = form.group(\r\n {\r\n uid: [],\r\n name: [, Validators.required],\r\n fileName: [],\r\n imageType: [, Validators.required],\r\n fileNameUID: [],\r\n purchaserAddressUID: [Validators.required]\r\n });\r\n\r\n return grpFields;\r\n }\r\n\r\n public serviceImage: SafeUrl;\r\n\r\n constructor(httpClient: HttpClient, private sanitizer: DomSanitizer)\r\n {\r\n super(httpClient, \"purchaser-address-image\");\r\n }\r\n\r\n public getImage(purchaserAddyUID: string): Observable\r\n {\r\n let obby = this.getFile(\"get-image\", purchaserAddyUID).pipe(map(retRes =>\r\n {\r\n let fixImg = new FixedImage();\r\n\r\n fixImg.url = URL.createObjectURL(retRes);\r\n fixImg.safeURL = this.sanitizer.bypassSecurityTrustUrl(fixImg.url);\r\n\r\n return fixImg;\r\n }));\r\n\r\n\r\n return obby;\r\n }\r\n\r\n public upload(imgFile: Blob, addyData: PurchaserAddressImage): Observable\r\n {\r\n let name = (addyData.name || \"ThisDoesntMatter\") + \".png\";\r\n let uploadData = new FormData();\r\n\r\n uploadData.append(name, imgFile);\r\n\r\n let obby = this.postFile(\"upload\", uploadData).pipe(\r\n map(retRes =>\r\n {\r\n addyData.fileName = retRes.fileNameUID + \".png\";\r\n addyData.fileNameUID = retRes.fileNameUID;\r\n\r\n return retRes;\r\n }),\r\n mergeMap(d2 => this.save(addyData)));\r\n\r\n return obby;\r\n }\r\n}","// The AgmMap (1.1.0) is pretty buggy and the latest version isn't supported in Angular 10.\r\n// currentZoom are work-around vars because ViewChild isn't picking up the agm-map and 2-way binding isn't working\r\n\r\nimport { Component, ElementRef, ViewChild } from \"@angular/core\";\r\nimport { DomSanitizer } from \"@angular/platform-browser\";\r\nimport { BaseComponent, PurchaserAddress } from \"@app/data\";\r\nimport { PurchaserAddressImageType } from \"@app/data/enums/purchaser-address-image-type.enum\";\r\nimport { FixedImage } from \"@app/data/misc/fixed-image\";\r\nimport { PurchaserAddressImage } from \"@app/data/purchaser-address/purchaser-address-image.model\";\r\nimport { PurchaserAddressImageService } from \"@app/data/purchaser-address/purchaser-address-image.service\";\r\nimport { CommonSettings } from \"@app/shared/common-settings\";\r\nimport { ConfirmationService, IConfirmationOptions } from \"@app/shared/confirmation/confirmation.service\";\r\nimport { GoogleMapsType, GoogleMapsZoom } from \"@app/shared/google-maps/google-conts\";\r\nimport { GoogleMapsHelperService } from \"@app/shared/google-maps/google-maps-helper.service\";\r\nimport { GoogleMapsCoordinates } from \"@app/shared/google-maps/models/google-maps-coordinates.model\";\r\nimport { GoogleMapsMapOption } from \"@app/shared/google-maps/models/google-maps-map-option.model\";\r\nimport { GoogleMapsStreetOption } from \"@app/shared/google-maps/models/google-maps-street-option.model\";\r\nimport { ContactFormatter } from \"@app/utils/contact-formatter\";\r\nimport { NgbModal } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\nimport { forkJoin } from \"rxjs\";\r\nimport { PurchaserAddressVerificationStreet } from \"../purchaser-address-verification-street/purchaser-address-verification-street\";\r\n\r\n@Component({\r\n selector: \"purchaser-address-verification-capture\",\r\n styleUrls: [\"./purchaser-address-verification-capture.component.scss\"],\r\n templateUrl: \"./purchaser-address-verification-capture.component.html\"\r\n})\r\nexport class PurchaserAddressVerificationCapture extends BaseComponent\r\n{\r\n @ViewChild(\"dialogCapture\")\r\n dialogCapture: ElementRef;\r\n\r\n @ViewChild(\"dialogStreet\")\r\n dialogStreet: PurchaserAddressVerificationStreet;\r\n\r\n public get canSave(): boolean\r\n {\r\n return (!this.loading || this.imgRoad != null || this.imgSat != null || this.imgSatWide != null || this.imgStreet != null);\r\n }\r\n\r\n public get haveImage(): boolean\r\n {\r\n return (this.imgRoad != null || this.imgSat != null || this.imgSatWide != null || this.imgStreet != null);\r\n }\r\n\r\n public readonly imageType_Road = 1;\r\n public readonly imageType_Street = 2;\r\n public readonly imageType_Satellite = 3;\r\n public readonly imageType_SatelliteWide = 4;\r\n\r\n public imgSat: FixedImage;\r\n public imgRoad: FixedImage;\r\n public imgStreet: FixedImage;\r\n public imgSatWide: FixedImage;\r\n\r\n public inSat: string;\r\n public inRoad: string;\r\n public inStreet: string;\r\n public inSatWide: string;\r\n\r\n public addyLat: number;\r\n public addyLon: number;\r\n public mapType: string = GoogleMapsType.Hybrid;\r\n public wideOffset: number = 2;\r\n public displayAddress: string;\r\n\r\n private addyUID: string;\r\n private isDirty: boolean;\r\n private currentZoom: number;\r\n\r\n constructor(\r\n toastrService: ToastrService,\r\n public modalService: NgbModal,\r\n private sanitizer: DomSanitizer,\r\n private confirmService: ConfirmationService,\r\n private mapsHelperServ: GoogleMapsHelperService,\r\n private purchaserImgServ: PurchaserAddressImageService)\r\n {\r\n super(toastrService);\r\n\r\n this.dataForm = this.purchaserImgServ.editorForm;\r\n this.apiService = purchaserImgServ;\r\n this.modalService = this.modalService;\r\n }\r\n\r\n public openCapture(purchaserAddy: PurchaserAddress): void\r\n {\r\n this.open(this.dialogCapture, null, CommonSettings.DialogSize_XLarge);\r\n\r\n let contForm = new ContactFormatter(purchaserAddy);\r\n\r\n this.inSat = null;\r\n this.imgSat = null;\r\n this.inRoad = null;\r\n this.addyUID = purchaserAddy.uid;\r\n this.imgRoad = null;\r\n this.inStreet = null;\r\n this.imgStreet = null;\r\n this.inSatWide = null;\r\n this.imgSatWide = null;\r\n this.currentZoom = GoogleMapsZoom.Buildings;\r\n this.displayAddress = contForm.getContact();\r\n\r\n this.mapsHelperServ.getCoordinates(purchaserAddy).subscribe(\r\n retRes => this.loadMap(retRes),\r\n errRes => this.error(errRes));\r\n }\r\n\r\n public onMapClick(evtArg): void\r\n {\r\n this.addyLat = evtArg.coords.lat;\r\n this.addyLon = evtArg.coords.lng;\r\n }\r\n\r\n public onImageDelete(imgType: number): void\r\n {\r\n switch (imgType)\r\n {\r\n case this.imageType_Road:\r\n this.inRoad = null;\r\n this.imgRoad = null;\r\n break;\r\n\r\n case this.imageType_Satellite:\r\n this.inSat = null;\r\n this.imgSat = null;\r\n break;\r\n\r\n case this.imageType_Street:\r\n this.inStreet = null;\r\n this.imgStreet = null;\r\n break;\r\n\r\n case this.imageType_SatelliteWide:\r\n this.inSatWide = null;\r\n this.imgSatWide = null;\r\n break;\r\n }\r\n }\r\n\r\n public onStreetTweak(): void\r\n {\r\n this.dialogStreet.openStreet(this.addyLat, this.addyLon, this.imgStreet);\r\n }\r\n\r\n public onStreetSave(evtArg): void\r\n {\r\n this.imgStreet = evtArg;\r\n }\r\n\r\n public onMapZoomChange(evtArg: number): void\r\n {\r\n this.currentZoom = evtArg;\r\n }\r\n\r\n public onCapture(): void\r\n {\r\n let cords = new GoogleMapsCoordinates(this.addyLat, this.addyLon);\r\n let optSat = new GoogleMapsMapOption(GoogleMapsType.Hybrid);\r\n let optRoad = new GoogleMapsMapOption();\r\n let optSatWde = new GoogleMapsMapOption(GoogleMapsType.Hybrid);\r\n let optStreet = new GoogleMapsStreetOption();\r\n\r\n optSat.Zoom = this.currentZoom;\r\n optRoad.Zoom = this.currentZoom\r\n optSatWde.Zoom = (this.currentZoom - this.wideOffset);\r\n\r\n this.inSat = \"Aerial tight\";\r\n this.inRoad = \"Map\";\r\n this.isDirty = true;\r\n this.inStreet = \"Street\";\r\n this.inSatWide = \"Aerial wide\";\r\n\r\n this.mapsHelperServ.getMapImage(cords, optRoad).subscribe(\r\n retRes => this.imgRoad = retRes,\r\n errRes => console.error(errRes));\r\n\r\n this.mapsHelperServ.getMapImage(cords, optSat).subscribe(\r\n retRes => this.imgSat = retRes,\r\n errRes => console.error(errRes));\r\n\r\n this.mapsHelperServ.getMapImage(cords, optSatWde).subscribe(\r\n retRes => this.imgSatWide = retRes,\r\n errRes => console.error(errRes));\r\n\r\n this.mapsHelperServ.getStreetImage(cords, optStreet).subscribe(\r\n retRes => this.imgStreet = retRes,\r\n errRes => console.error(errRes));\r\n }\r\n\r\n public onImageClick(imageType: number): void\r\n {\r\n let win = window.open(\"\");\r\n let img: string;\r\n\r\n switch (imageType)\r\n {\r\n case this.imageType_Road:\r\n img = this.imgRoad.url;\r\n break;\r\n\r\n case this.imageType_Street:\r\n img = this.imgStreet.url;\r\n break;\r\n\r\n case this.imageType_Satellite:\r\n img = this.imgSat.url;\r\n break;\r\n\r\n case this.imageType_SatelliteWide:\r\n img = this.imgSatWide.url;\r\n break;\r\n }\r\n\r\n win.document.write(``);\r\n }\r\n\r\n public onClose(): void\r\n {\r\n if (!this.isDirty)\r\n {\r\n this.close();\r\n return;\r\n }\r\n\r\n let opts: IConfirmationOptions =\r\n {\r\n FunctionConfirm: () => this.close()\r\n };\r\n\r\n this.confirmService.YesNo(CommonSettings.DirtyFormConfirmationMessage, opts);\r\n }\r\n\r\n public onSave(): void\r\n {\r\n let workers = [];\r\n\r\n if (this.imgSat != null)\r\n {\r\n let recSat: PurchaserAddressImage =\r\n {\r\n name: this.inSat,\r\n imageURL: this.imgSat.sourcesURL,\r\n imageType: PurchaserAddressImageType.AerialView,\r\n purchaserAddressUID: this.addyUID\r\n }\r\n let obSat = this.purchaserImgServ.upload(this.imgSat.rawImage, recSat);\r\n\r\n workers.push(obSat);\r\n }\r\n\r\n if (this.imgSatWide != null)\r\n {\r\n let recSat: PurchaserAddressImage =\r\n {\r\n name: this.inSatWide,\r\n imageURL: this.imgSatWide.sourcesURL,\r\n imageType: PurchaserAddressImageType.AerialView,\r\n purchaserAddressUID: this.addyUID\r\n }\r\n let obSatWide = this.purchaserImgServ.upload(this.imgSatWide.rawImage, recSat);\r\n\r\n workers.push(obSatWide);\r\n }\r\n\r\n if (this.imgRoad != null)\r\n {\r\n let recRoad: PurchaserAddressImage =\r\n {\r\n name: this.inRoad,\r\n imageURL: this.imgRoad.sourcesURL,\r\n imageType: PurchaserAddressImageType.Direction,\r\n purchaserAddressUID: this.addyUID\r\n }\r\n let obRoad = this.purchaserImgServ.upload(this.imgRoad.rawImage, recRoad);\r\n\r\n workers.push(obRoad);\r\n }\r\n\r\n if (this.imgStreet != null)\r\n {\r\n let recStreet: PurchaserAddressImage =\r\n {\r\n name: this.inStreet,\r\n imageURL: this.imgStreet.sourcesURL,\r\n imageType: PurchaserAddressImageType.StreetView,\r\n purchaserAddressUID: this.addyUID\r\n }\r\n let obStreet = this.purchaserImgServ.upload(this.imgStreet.rawImage, recStreet);\r\n\r\n workers.push(obStreet);\r\n }\r\n\r\n if (workers.length == 0)\r\n {\r\n return;\r\n }\r\n\r\n this.loading = true;\r\n\r\n let sub = forkJoin(workers).subscribe(\r\n retRes => this.saveComplete(),\r\n errRes => this.error(errRes));\r\n\r\n sub.add(() => this.loading = false);\r\n }\r\n\r\n private loadMap(cords: GoogleMapsCoordinates): void\r\n {\r\n this.addyLat = cords.latitude;\r\n this.addyLon = cords.longitude;\r\n }\r\n\r\n private saveComplete(): void\r\n {\r\n this.close();\r\n\r\n if (this.update)\r\n {\r\n this.update.emit();\r\n }\r\n }\r\n}","export default \"\\r\\n
\\r\\n
\\r\\n Address Capture\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n {{ addyLat }} x {{ addyLon }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Click map to pin a new location
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

Adjust the Map as needed and hit the Capture button

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n\";","import { Component, ElementRef, ViewChild } from \"@angular/core\";\r\nimport { AuthService, BaseComponent, PurchaserAddress } from \"@app/data\";\r\nimport { FixedImage } from \"@app/data/misc/fixed-image\";\r\nimport { PurchaserAddressImage } from \"@app/data/purchaser-address/purchaser-address-image.model\";\r\nimport { PurchaserAddressImageService } from \"@app/data/purchaser-address/purchaser-address-image.service\";\r\nimport { PurchaserCommon } from '@app/data/purchaser/purchaser-common';\r\nimport { CommonSettings } from \"@app/shared/common-settings\";\r\nimport { ConfirmationService, IConfirmationOptions } from \"@app/shared/confirmation/confirmation.service\";\r\nimport { ContactFormatter } from \"@app/utils/contact-formatter\";\r\nimport { NgbModal } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\n\r\n@Component({\r\n selector: \"purchaser-address-verification-edit\",\r\n styleUrls: [\"./purchaser-address-verification-edit.component.scss\"],\r\n templateUrl: \"./purchaser-address-verification-edit.component.html\"\r\n})\r\nexport class PurchaserAddressVerificationEdit extends BaseComponent\r\n{\r\n @ViewChild(\"dialogDoc\")\r\n dialogDoc: ElementRef;\r\n\r\n public readonly imageTypes = PurchaserCommon.PurchaserAddressImageTypes;\r\n\r\n public docFile: File;\r\n public addyImage: FixedImage;\r\n public purchaserAddy: PurchaserAddress;\r\n public displayAddress: string;\r\n\r\n constructor(\r\n toastrService: ToastrService,\r\n public authService: AuthService,\r\n private modalServ: NgbModal,\r\n private addyImageServ: PurchaserAddressImageService,\r\n private confirmService: ConfirmationService)\r\n {\r\n super(toastrService);\r\n\r\n this.dataForm = this.addyImageServ.editorForm;\r\n this.modalService = modalServ;\r\n }\r\n\r\n public openAdd(purchaserAddy: PurchaserAddress): void\r\n {\r\n this.purchaserAddy = purchaserAddy;\r\n\r\n this.open(this.dialogDoc);\r\n this.setupUI();\r\n }\r\n\r\n public openEdit(purchaserAddy: PurchaserAddress, imageAddy: PurchaserAddressImage): void\r\n {\r\n this.purchaserAddy = purchaserAddy;\r\n\r\n this.open(this.dialogDoc, imageAddy);\r\n this.setupUI();\r\n\r\n let sub = this.addyImageServ.getImage(this.data.fileNameUID);\r\n\r\n sub.subscribe(retRes => this.addyImage = retRes);\r\n }\r\n\r\n public onImageOpen(): void\r\n {\r\n let win = window.open(\"\");\r\n\r\n win.document.write(``);\r\n }\r\n\r\n private setupUI(): void\r\n {\r\n let contForm = new ContactFormatter(this.purchaserAddy);\r\n\r\n this.docFile = null;\r\n this.displayAddress = contForm.getContact();\r\n\r\n this.setValue(\"purchaserAddressUID\", this.purchaserAddy.uid);\r\n this.makeRequired([\"fileName\"], true);\r\n }\r\n\r\n public onFileSelect(evtArg): void\r\n {\r\n this.docFile = evtArg.target.files[0];\r\n this.formControls.fileName.setValue(this.docFile.name);\r\n\r\n let nameVal = this.docFile.name.indexOf(\".\") > 0 ? this.docFile.name.split(\".\")[0] : this.docFile.name;\r\n\r\n this.setValue(\"name\", nameVal);\r\n this.dataForm.markAsDirty();\r\n }\r\n\r\n public onClose(): void\r\n {\r\n if (!this.dataForm.dirty)\r\n {\r\n this.close();\r\n return;\r\n }\r\n\r\n let opts: IConfirmationOptions =\r\n {\r\n FunctionConfirm: () => this.close()\r\n };\r\n\r\n this.confirmService.YesNo(CommonSettings.DirtyFormConfirmationMessage, opts);\r\n }\r\n\r\n public onSave(): void\r\n {\r\n if (this.invalid())\r\n {\r\n return;\r\n }\r\n\r\n this.loading = true;\r\n\r\n if (this.data?.uid)\r\n {\r\n this.addyImageServ.save(this.dataValue).subscribe(\r\n retRes => this.saveComplete(),\r\n errRes => this.error(errRes));\r\n }\r\n else\r\n {\r\n this.addyImageServ.upload(this.docFile, this.dataValue).subscribe(\r\n retRes => this.saveComplete(),\r\n errRes => this.error(errRes));\r\n }\r\n }\r\n\r\n private saveComplete(): void\r\n {\r\n if (this.update)\r\n {\r\n this.update.emit();\r\n }\r\n\r\n this.loading = false;\r\n this.close();\r\n }\r\n}","export default \"\\r\\n
\\r\\n
Custom Address Image
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
Image file is required
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
Type is required
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
Type is required
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\";","export default \".preview {\\n display: -ms-flexbox;\\n display: flex;\\n -ms-flex-pack: center;\\n justify-content: center;\\n}\\n\\n.preview img {\\n cursor: pointer;\\n height: 250px;\\n}\\n\";","import { Component, EventEmitter, OnInit, Output } from \"@angular/core\";\r\nimport { BaseComponent } from \"@app/data\";\r\nimport { FixedImage } from \"@app/data/misc/fixed-image\";\r\nimport { PurchaserAddressImage } from \"@app/data/purchaser-address/purchaser-address-image.model\";\r\nimport { PurchaserAddressImageService } from \"@app/data/purchaser-address/purchaser-address-image.service\";\r\nimport { NgbModal } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\n\r\n@Component({\r\n selector: \"purchaser-address-verification-image\",\r\n styleUrls: [\"../purchaser-address-verification-capture/purchaser-address-verification-capture.component.scss\"],\r\n templateUrl: \"./purchaser-address-verification-image.component.html\"\r\n})\r\nexport class PurchaserAddressVerificationImage extends BaseComponent implements OnInit\r\n{\r\n @Output()\r\n imageEdit = new EventEmitter();\r\n\r\n @Output()\r\n imageDelete = new EventEmitter();\r\n\r\n public addyImage: FixedImage;\r\n\r\n constructor(\r\n toastrService: ToastrService,\r\n public modalService: NgbModal,\r\n private purchaserImgServ: PurchaserAddressImageService)\r\n {\r\n super(toastrService);\r\n\r\n this.apiService = purchaserImgServ;\r\n this.modalService = this.modalService;\r\n }\r\n\r\n ngOnInit(): void\r\n {\r\n let sub = this.purchaserImgServ.getImage(this.data.fileNameUID);\r\n\r\n sub.subscribe(retRes => this.addyImage = retRes);\r\n }\r\n\r\n public onImageOpen(): void\r\n {\r\n let win = window.open(\"\");\r\n\r\n win.document.write(``);\r\n }\r\n\r\n public onImageSource(): void\r\n {\r\n window.open(this.data.imageURL);\r\n }\r\n\r\n public onImageEdit(): void\r\n {\r\n this.imageEdit.emit(this.data);\r\n }\r\n\r\n public onImageDelete(): void\r\n {\r\n this.imageDelete.emit(this.data.uid);\r\n }\r\n}","export default \"
\\r\\n
\\r\\n
{{ data?.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
\";","import { Component, ElementRef, ViewChild } from \"@angular/core\";\r\nimport { BaseComponent, PurchaserAddress } from \"@app/data\";\r\nimport { PurchaserAddressImage } from \"@app/data/purchaser-address/purchaser-address-image.model\";\r\nimport { PurchaserAddressImageService } from \"@app/data/purchaser-address/purchaser-address-image.service\";\r\nimport { CommonSettings } from \"@app/shared/common-settings\";\r\nimport { ContactFormatter } from \"@app/utils/contact-formatter\";\r\nimport { Util } from '@app/utils/util';\r\nimport { NgbModal } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\nimport { PurchaserAddressVerificationCapture } from \"../purchaser-address-verification-capture/purchaser-address-verification-capture.component\";\r\nimport { PurchaserAddressVerificationEdit } from \"../purchaser-address-verification-edit/purchaser-address-verification-edit.component\";\r\nimport { PurchaserAddressVerificationPaste } from \"../purchaser-address-verification-paste/purchaser-address-verification-paste\";\r\n\r\n@Component({\r\n selector: \"purchaser-address-verification-list\",\r\n styleUrls: [\"purchaser-address-verification-list.component.scss\"],\r\n templateUrl: \"./purchaser-address-verification-list.component.html\"\r\n})\r\nexport class PurchaserAddressVerificationList extends BaseComponent\r\n{\r\n @ViewChild(\"dialogList\")\r\n dialogList: ElementRef;\r\n\r\n @ViewChild(\"dialogEdit\")\r\n dialogEdit: PurchaserAddressVerificationEdit;\r\n\r\n @ViewChild(\"dialogPaste\")\r\n dialogPaste: PurchaserAddressVerificationPaste;\r\n\r\n @ViewChild(\"dialogCapture\")\r\n dialogCapture: PurchaserAddressVerificationCapture;\r\n\r\n public displayAddress: string;\r\n\r\n private purchaserAddy: PurchaserAddress;\r\n\r\n constructor(\r\n toastrService: ToastrService,\r\n public modalService: NgbModal,\r\n private purchaserImgServ: PurchaserAddressImageService)\r\n {\r\n super(toastrService);\r\n\r\n this.dataForm = this.purchaserImgServ.editorForm;\r\n this.apiService = purchaserImgServ;\r\n this.modalService = this.modalService;\r\n }\r\n\r\n public openVerification(purchaserAddy: PurchaserAddress): void\r\n {\r\n this.open(this.dialogList, null, CommonSettings.DialogSize_XLarge);\r\n\r\n let contForm = new ContactFormatter(purchaserAddy);\r\n\r\n this.loading = true;\r\n this.searchForm = this.makeForm({ purchaserAddressUID: purchaserAddy.uid });\r\n this.purchaserAddy = purchaserAddy;\r\n this.displayAddress = contForm.getContact();\r\n\r\n let sub = this.list();\r\n\r\n sub.add(() =>\r\n {\r\n this.loading = false\r\n\r\n if (Util.isEmpty(this.dataList))\r\n {\r\n this.onCapture();\r\n }\r\n });\r\n }\r\n\r\n public onCapture(): void\r\n {\r\n this.dialogCapture.openCapture(this.purchaserAddy);\r\n }\r\n\r\n public onPasteNew(): void\r\n {\r\n this.dialogPaste.openPaster(this.purchaserAddy);\r\n }\r\n\r\n public onCustom(): void\r\n {\r\n this.dialogEdit.openAdd(this.purchaserAddy);\r\n }\r\n\r\n public onImageDelete(addyImageUID: string): void\r\n {\r\n this.dataForm = this.makeForm({ uid: addyImageUID });\r\n\r\n let sub = this.delete();\r\n\r\n sub.add(() => this.onRefresh());\r\n }\r\n\r\n public onImageEdit(imageAddy: PurchaserAddressImage): void\r\n {\r\n this.dialogEdit.openEdit(this.purchaserAddy, imageAddy);\r\n }\r\n\r\n public onRefresh(): void\r\n {\r\n this.list();\r\n }\r\n\r\n public onClose(): void\r\n {\r\n this.close();\r\n }\r\n}","export default \"\\r\\n
\\r\\n
Purchaser Verification
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\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 default \".card-body {\\n min-height: 20rem;\\n}\\n\";","import { Component, ElementRef, EventEmitter, Output, ViewChild } from \"@angular/core\";\r\nimport { DomSanitizer } from \"@angular/platform-browser\";\r\nimport { BaseComponent, PurchaserAddress } from \"@app/data\";\r\nimport { FixedImage } from \"@app/data/misc/fixed-image\";\r\nimport { PurchaserAddressImage } from \"@app/data/purchaser-address/purchaser-address-image.model\";\r\nimport { PurchaserAddressImageService } from \"@app/data/purchaser-address/purchaser-address-image.service\";\r\nimport { PurchaserCommon } from \"@app/data/purchaser/purchaser-common\";\r\nimport { CommonSettings } from \"@app/shared/common-settings\";\r\nimport { ConfirmationService, IConfirmationOptions } from \"@app/shared/confirmation/confirmation.service\";\r\nimport { ContactFormatter } from \"@app/utils/contact-formatter\";\r\nimport { NgbModal } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\n\r\n@Component({\r\n selector: \"purchaser-address-verification-paste\",\r\n styleUrls: [\"./purchaser-address-verification-paste.scss\"],\r\n templateUrl: \"./purchaser-address-verification-paste.html\"\r\n})\r\nexport class PurchaserAddressVerificationPaste extends BaseComponent\r\n{\r\n @ViewChild(\"dialogPaste\")\r\n dialogPaste: ElementRef;\r\n\r\n public readonly imageTypes = PurchaserCommon.PurchaserAddressImageTypes;\r\n\r\n public imgPaste: FixedImage;\r\n public displayAddress: string;\r\n\r\n private haveImage: boolean;\r\n\r\n constructor(\r\n toastrService: ToastrService,\r\n public modalService: NgbModal,\r\n private sanitizer: DomSanitizer,\r\n private addyImageServ: PurchaserAddressImageService,\r\n private confirmService: ConfirmationService,\r\n private purchaserImgServ: PurchaserAddressImageService)\r\n {\r\n super(toastrService);\r\n\r\n this.dataForm = this.addyImageServ.editorForm;\r\n this.apiService = purchaserImgServ;\r\n this.modalService = this.modalService;\r\n }\r\n\r\n public openPaster(purchaserAddy: PurchaserAddress): void\r\n {\r\n let contForm = new ContactFormatter(purchaserAddy);\r\n\r\n this.imgPaste = null;\r\n this.displayAddress = contForm.getContact(true);\r\n\r\n this.open(this.dialogPaste, null, CommonSettings.DialogSize_XLarge);\r\n this.resetForm();\r\n\r\n this.setValue(\"purchaserAddressUID\", purchaserAddy.uid);\r\n this.makeRequired([\"fileName\"], false);\r\n }\r\n\r\n public testText: string;\r\n\r\n public onPaste(evtArg: any): void\r\n {\r\n this.imgPaste = new FixedImage();\r\n\r\n for (let item of evtArg.clipboardData.items)\r\n {\r\n if (item.type.indexOf(\"image\") == 0)\r\n {\r\n this.imgPaste.rawImage = item.getAsFile();\r\n break;\r\n }\r\n }\r\n\r\n if (this.imgPaste.rawImage == null)\r\n {\r\n return;\r\n }\r\n\r\n this.imgPaste.url = URL.createObjectURL(this.imgPaste.rawImage);\r\n this.imgPaste.safeURL = this.sanitizer.bypassSecurityTrustUrl(this.imgPaste.url);\r\n }\r\n\r\n public onClear(): void\r\n {\r\n this.imgPaste = null;\r\n }\r\n\r\n public onSave(): void\r\n {\r\n if (this.invalid() || this.imgPaste == null)\r\n {\r\n return;\r\n }\r\n\r\n this.loading = true;\r\n\r\n this.addyImageServ.upload(this.imgPaste.rawImage, this.dataValue).subscribe(\r\n retRes => this.saveComplete(),\r\n errRes => this.error(errRes));\r\n }\r\n\r\n public onClose(): void\r\n {\r\n if (!this.dataForm.dirty && this.imgPaste == null)\r\n {\r\n this.close();\r\n return;\r\n }\r\n\r\n let opts: IConfirmationOptions =\r\n {\r\n FunctionConfirm: () => this.close()\r\n };\r\n\r\n this.confirmService.YesNo(CommonSettings.DirtyFormConfirmationMessage, opts);\r\n }\r\n\r\n public saveComplete(): void\r\n {\r\n if (this.submitError)\r\n {\r\n return;\r\n }\r\n\r\n this.close();\r\n this.update.emit();\r\n }\r\n}","export default \"\\r\\n
\\r\\n
\\r\\n Clipboard Capture\\r\\n
\\r\\n \\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 is required
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
Type is required
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

Image required

\\r\\n

Copy the image to your clipboard, click here, and press CTRL-V

\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\";","export default \".paste-wrapper {\\n width: 100%;\\n border: 1px solid #ccc;\\n height: 30rem;\\n text-align: center;\\n border-radius: .5rem;\\n}\\n\\n.paste-wrapper img {\\n width: 100%;\\n}\\n\\n.paste-wrapper .instruct {\\n height: 100%;\\n padding: .5rem;\\n}\\n\\n.paste-wrapper .required {\\n border-color: #f00;\\n}\\n\";","import { Component, ElementRef, EventEmitter, Output, ViewChild } from \"@angular/core\";\r\nimport { BaseComponent, Purchaser } from \"@app/data\";\r\nimport { FixedImage } from \"@app/data/misc/fixed-image\";\r\nimport { CommonSettings } from \"@app/shared/common-settings\";\r\nimport { GoogleMapsHelperService } from \"@app/shared/google-maps/google-maps-helper.service\";\r\nimport { GoogleMapsCoordinates } from \"@app/shared/google-maps/models/google-maps-coordinates.model\";\r\nimport { GoogleMapsStreetOption } from \"@app/shared/google-maps/models/google-maps-street-option.model\";\r\nimport { NgbModal } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\n\r\n@Component({\r\n selector: \"purchaser-address-verification-street\",\r\n styleUrls: [\"./purchaser-address-verification-street.scss\", \"../../../../shared/styles/slider.scss\"],\r\n templateUrl: \"./purchaser-address-verification-street.html\"\r\n})\r\nexport class PurchaserAddressVerificationStreet extends BaseComponent\r\n{\r\n @ViewChild(\"dialogStreet\")\r\n dialogStreet: ElementRef;\r\n\r\n @Output()\r\n streetSaveEvent = new EventEmitter();\r\n\r\n public optsPitch =\r\n {\r\n ceil: 80,\r\n step: 1,\r\n floor: -80,\r\n maxLabel: \"80\",\r\n minLabel: \"-80\"\r\n };\r\n\r\n public optsHeading =\r\n {\r\n ceil: 360,\r\n step: 1,\r\n floor: 0,\r\n maxLabel: \"360\",\r\n minLabel: \"0\"\r\n };\r\n\r\n public numPitch: number;\r\n public imgStreet: FixedImage;\r\n public numHeading: number;\r\n\r\n private cords: GoogleMapsCoordinates;\r\n\r\n constructor(\r\n toastrService: ToastrService,\r\n public modalService: NgbModal,\r\n private mapsHelperServ: GoogleMapsHelperService)\r\n {\r\n super(toastrService);\r\n\r\n this.title = \"Purchaser Verification - Street tweaker\";\r\n this.modalService = modalService;\r\n }\r\n\r\n public openStreet(lat: number, lng: number, img: FixedImage): void\r\n {\r\n this.cords = new GoogleMapsCoordinates(lat, lng);\r\n this.numPitch = 0;\r\n this.imgStreet = img;\r\n this.numHeading = 0;\r\n\r\n this.open(this.dialogStreet, null, CommonSettings.DialogSize_XLarge);\r\n }\r\n\r\n public onImageChange(): void\r\n {\r\n let optStreet = new GoogleMapsStreetOption();\r\n\r\n optStreet.Pitch = this.numPitch;\r\n optStreet.Heading = this.numHeading;\r\n\r\n this.mapsHelperServ.getStreetImage(this.cords, optStreet).subscribe(\r\n retRes => this.imgStreet = retRes,\r\n errRes => console.error(errRes));\r\n }\r\n\r\n public onClose(): void\r\n {\r\n this.close();\r\n }\r\n\r\n public onSave(): void\r\n {\r\n this.close();\r\n this.streetSaveEvent.emit(this.imgStreet);\r\n }\r\n}","export default \"\\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
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\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 default \".street-image {\\n height: 40rem;\\n}\\n\\n.slider-wrapper .ngx-slider {\\n width: 100%;\\n}\\n\";","import { Component, ElementRef, ViewChild } from \"@angular/core\";\r\nimport { HistoryListCommon } from \"@app/admin/history-list-common/history-list-common\";\r\nimport { PurchaserContactHistory, PurchaserContactHistoryService } from \"@app/data\";\r\nimport { CommonSettings } from \"@app/shared/common-settings\";\r\nimport { NgbModal } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\n\r\n@Component({\r\n selector: \"purchaser-contact-history-list\",\r\n templateUrl: \"./purchaser-contact-history-list.component.html\"\r\n})\r\nexport class PurchaserContactHistoryListComponent extends HistoryListCommon\r\n{\r\n @ViewChild(\"dialogHistory\")\r\n dialogHistory: ElementRef;\r\n\r\n constructor(\r\n toastrService: ToastrService,\r\n public modalService: NgbModal,\r\n private purchaserContactHistoryService: PurchaserContactHistoryService)\r\n {\r\n super(toastrService, purchaserContactHistoryService);\r\n\r\n this.modalService = this.modalService;\r\n\r\n this.setupGrid(\"Purchaser-Contacts-History\");\r\n }\r\n\r\n public openHistory(contactUID: string): void\r\n {\r\n this.open(this.dialogHistory, null, CommonSettings.DialogSize_XLarge);\r\n\r\n this.getHistory({ purchaserContactUID: contactUID });\r\n }\r\n\r\n public onClose(): void\r\n {\r\n this.close();\r\n }\r\n}","export default \"\\r\\n
\\r\\n
Contact History
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n
\";","import { Component, OnInit, ViewChild } from \"@angular/core\";\r\nimport { BaseComponent, PurchaserContact, PurchaserContactService } from \"@app/data\";\r\nimport { Util } from \"@app/utils/util\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\nimport { PurchaserContactHistoryListComponent } from \"../purchaser-contact-history-list/purchaser-contact-history-list.component\";\r\n\r\n@Component({\r\n selector: \"purchaser-contact-list\",\r\n templateUrl: \"./purchaser-contact-list.component.html\"\r\n})\r\nexport class PurchaserContactListComponent extends BaseComponent implements OnInit\r\n{\r\n @ViewChild(\"dialogHistory\")\r\n dialogHistory: PurchaserContactHistoryListComponent;\r\n\r\n constructor(\r\n toastrService: ToastrService,\r\n private purchaserContactService: PurchaserContactService)\r\n {\r\n super(toastrService);\r\n\r\n this.apiService = purchaserContactService;\r\n }\r\n\r\n ngOnInit(): void\r\n {\r\n this.searchForm = this.makeForm({ purchaserUID: this.parentUID });\r\n this.postGetlist();\r\n }\r\n\r\n public getContact(contact): string\r\n {\r\n return Util.MakeName(contact);\r\n }\r\n\r\n public onHistory(uid: string): void\r\n {\r\n this.dialogHistory.openHistory(uid);\r\n }\r\n}","export default \"
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
{{ item.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
\\r\\n \\r\\n
{{ item.eodKey }}
\\r\\n
\\r\\n
\\r\\n \\r\\n
{{ item.eodStatus }}
\\r\\n
\\r\\n
\\r\\n \\r\\n
{{ item.eodDecisionBy }}
\\r\\n
\\r\\n
\\r\\n \\r\\n
{{ item.eodScreenedDate | DateFormatter | DateFormatter }}
\\r\\n
\\r\\n
\\r\\n \\r\\n
{{ item.eodLastSync | DateFormatter }}
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\";","import { Component, ElementRef, ViewChild } from \"@angular/core\";\r\nimport { PurchaserHistoryListComponent } from '@app/admin/purchaser/purchaser-history-list/purchaser-history-list.component';\r\nimport { BaseComponent, Purchaser, PurchaserService, PurchaserType } from \"@app/data\";\r\nimport { EntityType } from \"@app/data/enums/entity-type.enum\";\r\nimport { PurchaserStatusType } from \"@app/data/enums/purchaser-status-type.enum\";\r\nimport { TaskEntity } from \"@app/data/enums/task-entity.enum\";\r\nimport { CommonSettings } from \"@app/shared/common-settings\";\r\nimport { PurchaserDocumentListComponent } from \"@app/shared/purchaser-document-list/purchaser-document-list.component\";\r\nimport { Util } from \"@app/utils/util\";\r\nimport { NgbModal } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\nimport { PurchaserReviewEditComponent } from \"../purchaser-review-edit/purchaser-review-edit.component\";\r\nimport { PurchaserViewComponent } from \"../purchaser-view/purchaser-view.component\";\r\n\r\n@Component({\r\n selector: \"purchaser-dialog\",\r\n templateUrl: \"./purchaser-dialog.component.html\"\r\n})\r\nexport class PurchaserDialogComponent extends BaseComponent\r\n{\r\n @ViewChild(\"dialogReview\")\r\n dialogReview: PurchaserReviewEditComponent;\r\n\r\n @ViewChild(\"dialogHistory\")\r\n dialogHistory: PurchaserHistoryListComponent;\r\n\r\n @ViewChild(\"purchaserDialog\")\r\n purchaserDialog: ElementRef;\r\n\r\n @ViewChild(\"purchaserDetail\")\r\n purchaserDetail: PurchaserViewComponent;\r\n\r\n public readonly docListType = PurchaserDocumentListComponent.ListType_Admin;\r\n public readonly purchaserTypes = PurchaserType;\r\n public readonly noteEntityType = EntityType.Purchaser;\r\n public readonly taskEntityType = TaskEntity.Purchaser;\r\n public readonly purchaserStatus = PurchaserStatusType;\r\n\r\n public purchName: string;\r\n public newStatus?: number;\r\n public availStatues;\r\n\r\n constructor(\r\n toastrService: ToastrService,\r\n public modalService: NgbModal,\r\n private purchaserService: PurchaserService)\r\n {\r\n super(toastrService);\r\n\r\n this.title = \"Purchaser - \";\r\n this.apiService = purchaserService;\r\n this.modalService = modalService;\r\n }\r\n\r\n public openPurchaser(purchUID: string): void\r\n {\r\n this.newStatus = undefined;\r\n\r\n this.open(this.purchaserDialog, null, CommonSettings.DialogSize_XLarge);\r\n this.loadPurchaser(purchUID);\r\n }\r\n\r\n public onApprove(): void\r\n {\r\n this.dialogReview.openReview(this.data, PurchaserStatusType.Approved, false, true);\r\n }\r\n\r\n public onStatusChange(): void\r\n {\r\n if (!this.newStatus)\r\n {\r\n return;\r\n }\r\n\r\n this.dialogReview.openReview(this.data, this.newStatus);\r\n\r\n setTimeout(() =>\r\n {\r\n this.newStatus = undefined;\r\n }, 200);\r\n }\r\n\r\n public onClose(): void\r\n {\r\n this.close();\r\n }\r\n\r\n public onRefresh()\r\n {\r\n this.loadPurchaser(this.data.uid);\r\n\r\n if (this.update)\r\n {\r\n this.update.emit();\r\n }\r\n }\r\n\r\n public onReviewUpdate(): void\r\n {\r\n this.close();\r\n\r\n if (this.update)\r\n {\r\n this.update.emit();\r\n }\r\n }\r\n\r\n public onHistoryOpen(): void\r\n {\r\n this.dialogHistory.openHistory(this.data);\r\n }\r\n\r\n private loadPurchaser(purchUID: string): void\r\n {\r\n let sub = this.detail({ uid: purchUID });\r\n\r\n sub.add(() => this.doneDidLoad());\r\n }\r\n\r\n private doneDidLoad(): void\r\n {\r\n if (this.data.purchaserType == PurchaserType.Individual)\r\n {\r\n this.purchName = Util.MakeName(this.data);\r\n }\r\n else\r\n {\r\n this.purchName = this.data.displayName;\r\n }\r\n\r\n this.availStatues = [{ id: 0, name: \"\" }];\r\n\r\n if (this.data.statusType == PurchaserStatusType.New)\r\n {\r\n this.availStatues.push({ id: -2, name: \"Delete\" });\r\n return;\r\n }\r\n\r\n if (this.data.statusType == PurchaserStatusType.Approved)\r\n {\r\n this.availStatues.push({ id: 11, name: \"Hold (Suspend New Orders)\" });\r\n this.availStatues.push({ id: 9, name: \"Inactive (Suspend All Orders)\" });\r\n return;\r\n }\r\n\r\n this.availStatues.push({ id: 1, name: \"Approve\" });\r\n this.availStatues.push({ id: 2, name: \"Pending (Purchaser can change)\" });\r\n this.availStatues.push({ id: 11, name: \"Hold(Suspend New Orders)\" });\r\n this.availStatues.push({ id: 9, name: \"Inactive(Suspend All Orders)\" });\r\n this.availStatues.push({ id: 12, name: \"Deny\" });\r\n }\r\n}","export default \"\\r\\n
\\r\\n
\\r\\n \\r\\n {{ title }} {{ purchName }}\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\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{{ purchName }}Country{{ data.country?.name }}
 \\r\\n \\r\\n Language{{ data.language?.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 Details\\r\\n \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
  • \\r\\n
  • \\r\\n Contacts\\r\\n \\r\\n
    \\r\\n
    Contacts
    \\r\\n \\r\\n
    \\r\\n
    Owners
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    Officers
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
  • \\r\\n
  • \\r\\n Addresses\\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 Questions\\r\\n \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
  • \\r\\n
  • \\r\\n Tasks\\r\\n \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
  • \\r\\n
  • \\r\\n Notes\\r\\n \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
  • \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n\";","import { Component, ElementRef, ViewChild } from \"@angular/core\";\r\nimport { HistoryListCommon } from \"@app/admin/history-list-common/history-list-common\";\r\nimport { Purchaser, PurchaserHistoryService } from \"@app/data\";\r\nimport { PurchaserHistory } from \"@app/data/purchaser-history/purchaser-history\";\r\nimport { CommonSettings } from \"@app/shared/common-settings\";\r\nimport { NgbModal } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\n\r\n@Component({\r\n selector: \"purchaser-history-list\",\r\n templateUrl: \"./purchaser-history-list.component.html\"\r\n})\r\nexport class PurchaserHistoryListComponent extends HistoryListCommon\r\n{\r\n @ViewChild(\"dialogHistory\")\r\n dialogHistory: ElementRef;\r\n\r\n constructor(\r\n toastrService: ToastrService,\r\n public modalServ: NgbModal,\r\n private purchaserHistoryService: PurchaserHistoryService)\r\n {\r\n super(toastrService, purchaserHistoryService);\r\n\r\n this.modalService = modalServ;\r\n this.setupGrid(\"Purchaser-History\", \"Reviewed\");\r\n }\r\n\r\n public openHistory(data: Purchaser): void\r\n {\r\n this.open(this.dialogHistory, null, CommonSettings.DialogSize_XLarge);\r\n\r\n this.getHistory({ purchaserUID: data.uid });\r\n }\r\n\r\n public onClose(): void\r\n {\r\n this.close();\r\n }\r\n}","export default \"\\r\\n
\\r\\n
Purchaser History
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n
\";","import { Component, ElementRef, ViewChild } from \"@angular/core\";\r\nimport { HistoryListCommon } from \"@app/admin/history-list-common/history-list-common\";\r\nimport { PurchaserOfficerHistory, PurchaserOfficerHistoryService } from \"@app/data\";\r\nimport { CommonSettings } from \"@app/shared/common-settings\";\r\nimport { NgbModal } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\n\r\n@Component({\r\n selector: \"purchaser-officer-history-list\",\r\n templateUrl: \"./purchaser-officer-history-list.component.html\",\r\n})\r\nexport class PurchaserOfficerHistoryListComponent extends HistoryListCommon\r\n{\r\n @ViewChild(\"dialogHistory\")\r\n dialogHistory: ElementRef;\r\n\r\n constructor(\r\n toastrService: ToastrService,\r\n public modalService: NgbModal,\r\n private purchaserOfficerHistoryService: PurchaserOfficerHistoryService)\r\n {\r\n super(toastrService, purchaserOfficerHistoryService);\r\n\r\n this.modalService = modalService;\r\n\r\n this.setupGrid(\"Purchaser-Officer-History\");\r\n }\r\n\r\n public openHistory(offUID: string): void\r\n {\r\n this.open(this.dialogHistory, null, CommonSettings.DialogSize_XLarge);\r\n this.getHistory({ purchaserOfficerUID: offUID });\r\n }\r\n\r\n public onClose(): void\r\n {\r\n this.close();\r\n }\r\n}","export default \"\\r\\n
\\r\\n
Officer History
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n
\";","import { Component, OnInit, ViewChild } from \"@angular/core\";\r\nimport { BaseComponent, PurchaserOfficer, PurchaserOfficerService } from \"@app/data\";\r\nimport { Util } from \"@app/utils/util\";\r\nimport { NgbModal } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\nimport { PurchaserOfficerHistoryListComponent } from \"../purchaser-officer-history-list/purchaser-officer-history-list.component\";\r\n\r\n@Component({\r\n selector: \"purchaser-officer-list\",\r\n templateUrl: \"./purchaser-officer-list.component.html\"\r\n})\r\nexport class PurchaserOfficerListComponent extends BaseComponent implements OnInit\r\n{\r\n @ViewChild(\"dialogHistory\")\r\n dialogHistory: PurchaserOfficerHistoryListComponent;\r\n\r\n constructor(\r\n toastrService: ToastrService,\r\n public modalService: NgbModal,\r\n private purchaserOfficerService: PurchaserOfficerService)\r\n {\r\n super(toastrService);\r\n\r\n this.apiService = purchaserOfficerService;\r\n }\r\n\r\n ngOnInit(): void\r\n {\r\n this.searchForm = this.makeForm({ purchaserUID: this.parentUID });\r\n this.postGetlist();\r\n }\r\n\r\n public getContact(contact): string\r\n {\r\n return Util.MakeName(contact);\r\n }\r\n\r\n public onHistory(uid: string): void\r\n {\r\n this.dialogHistory.openHistory(uid);\r\n }\r\n}","export default \"
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
{{ item.title }}
\\r\\n
\\r\\n
\\r\\n \\r\\n
{{ item.citizenship?.name }}
\\r\\n
\\r\\n
\\r\\n \\r\\n
{{ item.residenceCountry?.name }}
\\r\\n
\\r\\n
\\r\\n \\r\\n
{{ item.dualCitizenship?.name }}
\\r\\n
\\r\\n
\\r\\n \\r\\n
{{ item.priorCitizenship?.name }}
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
{{ item.eodKey }}
\\r\\n
\\r\\n
\\r\\n \\r\\n
{{ item.eodStatus }}
\\r\\n
\\r\\n
\\r\\n \\r\\n
{{ item.eodDecisionBy }}
\\r\\n
\\r\\n
\\r\\n \\r\\n
{{ item.eodScreenedDate | DateFormatter | DateFormatter }}
\\r\\n
\\r\\n
\\r\\n \\r\\n
{{ item.eodLastSync | DateFormatter }}
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\";","import { Component, ElementRef, ViewChild } from \"@angular/core\";\r\nimport { HistoryListCommon } from \"@app/admin/history-list-common/history-list-common\";\r\nimport { PurchaserOwnerHistory, PurchaserOwnerHistoryService } from \"@app/data\";\r\nimport { CommonSettings } from \"@app/shared/common-settings\";\r\nimport { NgbModal } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\n\r\n@Component({\r\n selector: \"purchaser-owner-history-list\",\r\n templateUrl: \"./purchaser-owner-history-list.component.html\",\r\n})\r\nexport class PurchaserOwnerHistoryListComponent extends HistoryListCommon\r\n{\r\n @ViewChild(\"dialogHistory\")\r\n dialogHistory: ElementRef;\r\n\r\n constructor(\r\n toastrService: ToastrService,\r\n public modalService: NgbModal,\r\n private purchaserOwnerHistoryService: PurchaserOwnerHistoryService)\r\n {\r\n super(toastrService, purchaserOwnerHistoryService);\r\n\r\n this.modalService = modalService;\r\n\r\n this.setupGrid(\"Purchaser-Owner-History\");\r\n }\r\n\r\n public openHistory(ownerUID: string): void\r\n {\r\n this.open(this.dialogHistory, null, CommonSettings.DialogSize_XLarge);\r\n this.getHistory({ purchaserOwnerUID: ownerUID });\r\n }\r\n\r\n public onClose(): void\r\n {\r\n this.close();\r\n }\r\n}","export default \"\\r\\n
\\r\\n
Owner History
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n
\";","import { Component, OnInit, ViewChild } from \"@angular/core\";\r\nimport { BaseComponent, PurchaserOwner, PurchaserOwnerService } from \"@app/data\";\r\nimport { Util } from \"@app/utils/util\";\r\nimport { NgbModal } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\nimport { PurchaserOwnerHistoryListComponent } from \"../purchaser-owner-history-list/purchaser-owner-history-list.component\";\r\n\r\n@Component({\r\n selector: \"purchaser-owner-list\",\r\n templateUrl: \"./purchaser-owner-list.component.html\"\r\n})\r\nexport class PurchaserOwnerListComponent extends BaseComponent implements OnInit\r\n{\r\n @ViewChild(\"dialogHistory\")\r\n dialogHistory: PurchaserOwnerHistoryListComponent;\r\n\r\n constructor(\r\n toastrService: ToastrService,\r\n public modalService: NgbModal,\r\n private purchaserOwnerService: PurchaserOwnerService)\r\n {\r\n super(toastrService);\r\n\r\n this.apiService = purchaserOwnerService;\r\n }\r\n\r\n ngOnInit(): void\r\n {\r\n this.searchForm = this.makeForm({ purchaserUID: this.parentUID });\r\n this.postGetlist();\r\n }\r\n\r\n public getContact(contact): string\r\n {\r\n return Util.MakeName(contact);\r\n }\r\n\r\n public onHistory(uid: string): void\r\n {\r\n this.dialogHistory.openHistory(uid);\r\n }\r\n}","export default \"
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
{{ item.citizenship?.name }}
\\r\\n
\\r\\n
\\r\\n \\r\\n
{{ item.residenceCountry?.name }}
\\r\\n
\\r\\n
\\r\\n \\r\\n
{{ item.dualCitizenship?.name }}
\\r\\n
\\r\\n
\\r\\n \\r\\n
{{ item.priorCitizenship?.name }}
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
{{ item.eodKey }}
\\r\\n
\\r\\n
\\r\\n \\r\\n
{{ item.eodStatus }}
\\r\\n
\\r\\n
\\r\\n \\r\\n
{{ item.eodDecisionBy }}
\\r\\n
\\r\\n
\\r\\n \\r\\n
{{ item.eodScreenedDate | DateFormatter | DateFormatter }}
\\r\\n
\\r\\n
\\r\\n \\r\\n
{{ item.eodLastSync | DateFormatter }}
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\";","import { Component, Input, OnInit } from \"@angular/core\";\r\nimport { FormBuilder } from \"@angular/forms\";\r\nimport { BaseComponent, PurchaserQuestion, PurchaserQuestionService, PurchaserType } from \"@app/data\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\n\r\n@Component({\r\n selector: \"purchaser-question-view\",\r\n styleUrls: [\"./purchaser-question-view.component.scss\"],\r\n templateUrl: \"./purchaser-question-view.component.html\"\r\n})\r\nexport class PurchaserQuestionViewComponent extends BaseComponent implements OnInit\r\n{\r\n @Input()\r\n purchaserType: number;\r\n\r\n public readonly purchaserTypes = PurchaserType;\r\n\r\n public questions: any[];\r\n\r\n constructor(\r\n toastrService: ToastrService,\r\n private formBuilder: FormBuilder,\r\n private purchaserQuestionService: PurchaserQuestionService)\r\n {\r\n super(toastrService);\r\n\r\n this.apiService = purchaserQuestionService;\r\n }\r\n\r\n ngOnInit(): void\r\n {\r\n //questions\r\n if (this.purchaserType === PurchaserType.Individual)\r\n {\r\n this.questions = [\r\n { question: \"1. Have you ever been in legal trouble in any country for violating firearm ownership, sale, import or export regulations?\" },\r\n { question: \"2. I understand that if I buy firearms, firearm parts, rifle scopes, sound suppressors, or firearm accessories from an EasyExport merchant, I am not permitted to transfer them to anyone else, even to a family member or friend. I will be buying them for my own use. Please click “Confirmed” to show that you understand and agree with this.\" },\r\n { question: \"3. I confirm that if I buy firearms, firearm parts, rifle scopes, sound suppressors, or firearm accessories from an EasyExport merchant, I will be buying them for use in my country and not for use in a different country. Please click “Confirmed” to show that you understand and agree with this.\" },\r\n ];\r\n }\r\n else if (this.purchaserType === PurchaserType.Business)\r\n {\r\n this.questions = [\r\n { question: \"1. Describe your business.\" },\r\n { question: \"2. Are all your customers located in the same country as your primary business address?\" },\r\n { question: \"3. List the types of products this business sells.\" },\r\n { question: \"4. Has this business or any owner or officer ever been the subject of legal proceedings to deny it the ability to import or export any product?\" },\r\n { question: \"5. Has this business ever imported products from the United States? Please note that we do not require that you have previously imported U.S. products. We use this information as part of our evaluation of your request to create a purchaser account.\" },\r\n { question: \"6. We understand that if we buy firearms, firearm parts, rifle scopes, or firearm accessories from an EasyExport merchant, we are not permitted to sell or transfer them to anyone outside the country to which they are shipped. Please click “Confirmed” to show that you understand and agree with this.\" },\r\n { question: \"7. Please click “Confirmed” below to confirm that you will not sell or transfer products to anyone who plans to take or send them to a different country.\" },\r\n ];\r\n }\r\n else if (this.purchaserType === PurchaserType.Government)\r\n {\r\n this.questions = [\r\n { question: \"1. Please describe the mission of this agency.\" },\r\n { question: \"2. Does your agency expect to purchase firearms, firearm parts, rifle scopes, sound suppressors, or firearm accessories from EasyExport merchants?\" },\r\n { question: \"3. We understand that if we buy firearms, firearm parts, rifle scopes, sound suppressors, or firearm accessories from an EasyExport merchant, we are not permitted to sell or transfer them to anyone without the prior approval of the U.S. Government. Please click “Confirmed” to show that you understand and agree with this.\" },\r\n ];\r\n }\r\n\r\n super.detail({ purchaserUID: this.parentUID });\r\n }\r\n}","export default \"
\\r\\n
{{ questions[0].question }}
\\r\\n
\\r\\n {{ data?.q1?.answer1 }}\\r\\n
\\r\\n
\\r\\n
Description:
\\r\\n {{ data?.q1?.answer2 }}\\r\\n
\\r\\n
\\r\\n
{{ questions[1].question }}
\\r\\n
\\r\\n {{ data?.q2?.answer1 }}\\r\\n
\\r\\n\\r\\n
\\r\\n
{{ questions[2].question }}
\\r\\n
\\r\\n {{ data?.q3?.answer1 }}\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
{{ questions[0].question }}
\\r\\n
\\r\\n {{ data?.q1?.answer1 }}\\r\\n
\\r\\n\\r\\n
\\r\\n
{{ questions[1].question }}
\\r\\n
\\r\\n {{ data?.q2?.answer1 }}\\r\\n
\\r\\n
\\r\\n
Countries:
\\r\\n {{ data?.q2?.answer2 }}\\r\\n
\\r\\n\\r\\n
\\r\\n
{{ questions[2].question }}
\\r\\n
\\r\\n {{ data?.q3?.answer1 }}\\r\\n
\\r\\n\\r\\n
\\r\\n
{{ questions[3].question }}
\\r\\n
\\r\\n {{ data?.q4?.answer1 }}\\r\\n
\\r\\n
\\r\\n
Explanation:
\\r\\n {{ data?.q4?.answer2 }}\\r\\n
\\r\\n\\r\\n
\\r\\n
{{ questions[4].question }}
\\r\\n
\\r\\n {{ data?.q5?.answer1 }}\\r\\n
\\r\\n
\\r\\n
Explanation:
\\r\\n {{ data?.q5?.answer2 }}\\r\\n
\\r\\n
\\r\\n
Please list U.S. merchants you have purchased products from in the last three years:
\\r\\n {{ data?.q5?.answer3 }}\\r\\n
\\r\\n\\r\\n
\\r\\n
{{ questions[5].question }}
\\r\\n
\\r\\n {{ data?.q6?.answer1 }}\\r\\n
\\r\\n\\r\\n
\\r\\n
{{ questions[6].question }}
\\r\\n
\\r\\n {{ data?.q7?.answer1 }}\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
{{ questions[0].question }}
\\r\\n
\\r\\n {{ data?.q1?.answer1 }}\\r\\n
\\r\\n
\\r\\n
{{ questions[1].question }}
\\r\\n
\\r\\n {{ data?.q2?.answer1 }}\\r\\n
\\r\\n
\\r\\n
How the agency use firearms:
\\r\\n {{ data?.q2?.answer2 }}\\r\\n
\\r\\n\\r\\n
\\r\\n
{{ questions[2].question }}
\\r\\n
\\r\\n {{ data?.q3?.answer1 }}\\r\\n
\\r\\n
\";","export default \".q-and-a {\\n overflow: hidden;\\n white-space: normal;\\n}\\n\";","import { Component, ElementRef, ViewChild } from \"@angular/core\";\r\nimport { BaseComponent, Purchaser, PurchaserReview, PurchaserReviewService } from \"@app/data\";\r\nimport { PurchaserCommon } from \"@app/data/purchaser/purchaser-common\";\r\nimport { CommonSettings } from \"@app/shared/common-settings\";\r\nimport { ConfirmationService, IConfirmationOptions } from \"@app/shared/confirmation/confirmation.service\";\r\nimport { NgbModal } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\n\r\n@Component({\r\n selector: \"purchaser-review-edit\",\r\n templateUrl: \"./purchaser-review-edit.component.html\"\r\n})\r\nexport class PurchaserReviewEditComponent extends BaseComponent\r\n{\r\n @ViewChild(\"dialogReview\")\r\n dialogReview: ElementRef;\r\n\r\n public readonly purchStatuses = PurchaserCommon.PurchaserStatuses;\r\n\r\n public newStatus: number;\r\n public isRequired: boolean;\r\n public purchDetail: Purchaser;\r\n\r\n constructor(\r\n toastrService: ToastrService,\r\n public modalServ: NgbModal,\r\n private confirmService: ConfirmationService,\r\n private purchaserReviewService: PurchaserReviewService)\r\n {\r\n super(toastrService);\r\n\r\n this.dataForm = this.purchaserReviewService.editorForm;\r\n this.apiService = purchaserReviewService;\r\n this.modalService = modalServ;\r\n }\r\n\r\n public openReview(purch: Purchaser, setStatus: number, required: boolean = true, autoComplete: boolean = false): void\r\n {\r\n this.open(this.dialogReview);\r\n\r\n this.newStatus = setStatus;\r\n this.isRequired = required;\r\n this.purchDetail = purch;\r\n\r\n this.setValue(\"statusType\", this.newStatus);\r\n this.setValue(\"purchaserUID\", purch.uid);\r\n this.setValue(\"isAutoCompleteVettingTask\", autoComplete);\r\n\r\n this.makeRequired([\"comments\"], required);\r\n }\r\n\r\n public onSave()\r\n {\r\n let sub = this.submit();\r\n\r\n if (sub)\r\n {\r\n sub.add(() => this.saveComplete());\r\n }\r\n }\r\n\r\n public onClose()\r\n {\r\n if (!this.dataForm.dirty)\r\n {\r\n this.close();\r\n return;\r\n }\r\n\r\n let opts: IConfirmationOptions =\r\n {\r\n FunctionConfirm: () => this.close()\r\n };\r\n\r\n this.confirmService.YesNo(CommonSettings.DirtyFormConfirmationMessage, opts);\r\n }\r\n\r\n private saveComplete()\r\n {\r\n if (!this.submitError)\r\n {\r\n this.close();\r\n }\r\n }\r\n}","export default \"\\r\\n
\\r\\n
Purchaser
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n {{ purchDetail?.displayName }}\\r\\n ({{ purchDetail?.purchaserTypeName }})\\r\\n
\\r\\n
\\r\\n \\r\\n to \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
Comment is required
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\";","import { Component, ElementRef, OnInit, ViewChild } from \"@angular/core\";\r\nimport { FormBuilder } from \"@angular/forms\";\r\nimport { BaseComponent, LookupService, Purchaser, PurchaserService } from \"@app/data\";\r\nimport { CommonSettings } from \"@app/shared/common-settings\";\r\nimport { ConfirmationService, IConfirmationOptions } from \"@app/shared/confirmation/confirmation.service\";\r\nimport { NgbModal } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\n\r\n@Component({\r\n selector: \"purchaser-sub-category-edit\",\r\n templateUrl: \"./purchaser-sub-category-edit.component.html\"\r\n})\r\nexport class PurchaserSubCategoryComponent extends BaseComponent implements OnInit\r\n{\r\n @ViewChild(\"dialogSubCat\")\r\n dialogSubCat: ElementRef;\r\n\r\n constructor(\r\n toastrService: ToastrService,\r\n public modalService: NgbModal,\r\n public lookupService: LookupService,\r\n private confirmService: ConfirmationService,\r\n private purchaserService: PurchaserService)\r\n {\r\n super(toastrService);\r\n\r\n this.apiService = purchaserService;\r\n this.modalService = modalService;\r\n }\r\n\r\n ngOnInit(): void\r\n {\r\n let form = new FormBuilder();\r\n\r\n this.dataForm = form.group(\r\n {\r\n purchaserSubCategoryUID: []\r\n });\r\n\r\n this.lookupService.getPurchaserSubCategoryTypeList();\r\n }\r\n\r\n public openEdit(purch: Purchaser): void\r\n {\r\n this.open(this.dialogSubCat, purch);\r\n }\r\n\r\n public onClose(): void\r\n {\r\n if (!this.dataForm.dirty)\r\n {\r\n this.close();\r\n return;\r\n }\r\n\r\n let opts: IConfirmationOptions =\r\n {\r\n FunctionConfirm: () => this.close()\r\n };\r\n\r\n this.confirmService.YesNo(CommonSettings.DirtyFormConfirmationMessage, opts);\r\n }\r\n\r\n public onSave(): void\r\n {\r\n this.loading = true;\r\n this.data.purchaserSubCategoryUID = this.getValue(\"purchaserSubCategoryUID\");\r\n\r\n let sub = this.purchaserService.save(this.data).subscribe(\r\n retRes =>\r\n {\r\n if (this.update)\r\n {\r\n this.update.emit(this.data);\r\n }\r\n\r\n this.close();\r\n },\r\n errRes => this.error(errRes));\r\n\r\n sub.add(() => this.loading = false);\r\n }\r\n}","export default \"\\r\\n
\\r\\n
Purchaser Subcategory
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\";","export enum WikiErrorType\r\n{\r\n MissingLink = 1,\r\n MissingAnchor = 2\r\n}\r\n\r\nexport class WikiCommon\r\n{\r\n public static readonly Tag_Icon = \"[[\";\r\n public static readonly Tag_AEPImage = \"](@\";\r\n public static readonly Tag_ExternalLink = \"]($\";\r\n public static readonly Tag_InternalLink = \"](#\";\r\n public static readonly Tag_InternalAnchor = \"[:#\";\r\n\r\n public static readonly WikiTypes =\r\n [\r\n { id: 1, name: \"User Manual\" },\r\n { id: 2, name: \"Release Notes\" }\r\n ];\r\n\r\n public static makeTagImage(imageName, altText = \"\"): string\r\n {\r\n return `![${altText}](@${imageName})`;\r\n }\r\n\r\n public static makeExternalLink(text, tag)\r\n {\r\n return `[${text}]($${tag})`\r\n }\r\n\r\n public static makeInternalLink(text, tag)\r\n {\r\n return `[${text}](#${tag})`\r\n }\r\n\r\n public static makeInternalAnchor(tag)\r\n {\r\n return `[:#${tag}]`;\r\n }\r\n\r\n public static makePhoneLink(phone)\r\n {\r\n return `${phone}`;\r\n }\r\n}","import { Component, ViewChild } from \"@angular/core\";\r\nimport { BaseComponent, Purchaser, PurchaserService, PurchaserType } from \"@app/data\";\r\nimport { InputEditViewType } from \"@app/data/enums/input-edit-view-type.enum\";\r\nimport { PurchaserStatusType } from \"@app/data/enums/purchaser-status-type.enum\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\nimport { PurchaserContactHistoryListComponent } from \"../purchaser-contact-history-list/purchaser-contact-history-list.component\";\r\nimport { PurchaserSubCategoryComponent } from \"../purchaser-sub-category-edit/purchaser-sub-category-edit.component\";\r\n\r\n@Component({\r\n selector: \"purchaser-view\",\r\n styleUrls: [\"./purchaser-view.component.scss\"],\r\n templateUrl: \"./purchaser-view.component.html\"\r\n})\r\nexport class PurchaserViewComponent extends BaseComponent\r\n{\r\n @ViewChild(\"dialogSubCat\")\r\n dialogSubCat: PurchaserSubCategoryComponent;\r\n\r\n @ViewChild(\"dialogContactHistory\")\r\n dialogContactHistory: PurchaserContactHistoryListComponent;\r\n\r\n public readonly viewTypeLink = InputEditViewType.Link;\r\n public readonly purchaserTypes = PurchaserType;\r\n public readonly purchaserStatus = PurchaserStatusType;\r\n\r\n public isOnWatchList: boolean;\r\n public isLimitedBuyer: boolean;\r\n\r\n constructor(\r\n toastrService: ToastrService,\r\n private purchaserService: PurchaserService)\r\n {\r\n super(toastrService);\r\n\r\n this.apiService = purchaserService;\r\n }\r\n\r\n public ngOnChanges(): void\r\n {\r\n if (this.data)\r\n {\r\n this.isOnWatchList = this.data.isOnWatchList;\r\n this.isLimitedBuyer = this.data.isLimitedBuyer;\r\n }\r\n }\r\n\r\n public onSubCatOpen(): void\r\n {\r\n this.dialogSubCat.openEdit(this.data);\r\n }\r\n\r\n public onSubCatUpdate(): void\r\n {\r\n if (this.update)\r\n {\r\n this.update.emit();\r\n }\r\n\r\n this.detail({ uid: this.parentUID });\r\n }\r\n\r\n public onWatchListChanged(): void\r\n {\r\n this.data.isOnWatchList = this.isOnWatchList;\r\n this.savePurchaser();\r\n }\r\n\r\n public onLimitedBuyerChanged(): void\r\n {\r\n this.data.isLimitedBuyer = this.isLimitedBuyer;\r\n this.savePurchaser();\r\n }\r\n\r\n public onRefresh(): void\r\n {\r\n if (this.update)\r\n {\r\n this.update.emit();\r\n }\r\n }\r\n\r\n public onRefreshEOD(): void\r\n {\r\n this.loading = true;\r\n\r\n let sub = this.apiService.get(\"eod\", { purchaserUID: this.data.uid }).subscribe(\r\n retRes => () => this.onRefresh(),\r\n errRes => this.error(errRes));\r\n\r\n sub.add(() => this.loading = false);\r\n }\r\n\r\n public onTaxIDSave(value: string): void\r\n {\r\n this.data.taxIdentification = value;\r\n this.savePurchaser();\r\n }\r\n\r\n public onWebsiteSave(value: string): void\r\n {\r\n this.data.websiteLink = value;\r\n this.savePurchaser();\r\n }\r\n\r\n private savePurchaser(): void\r\n {\r\n this.loading = true;\r\n\r\n let sub = this.purchaserService.save(this.data).subscribe(\r\n {\r\n next: (retRes) =>\r\n {\r\n if (this.update)\r\n {\r\n this.update.emit(this.data);\r\n }\r\n\r\n this.success(\"Save complete\");\r\n },\r\n error: (errRes) => this.error(errRes)\r\n });\r\n\r\n sub.add(() => this.loading = false);\r\n }\r\n}","export default \"\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n {{ data?.firstName }}\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n {{ data?.middleName }}\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n {{ data?.lastName }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n {{ data?.birthYear }}\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n {{ data?.genderTypeName }}\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
 
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Contact\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Citizenship\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n {{ data?.citizenship?.name }}\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n {{ data?.dualCitizenship?.name }}\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n {{ data?.priorCitizenship?.name }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Freight\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n {{ data?.freightCompanyName }}\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n {{ data?.freightOther }}\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n E.O.D.\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n {{ data?.eodKey }}\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n {{ data?.eodStatus }}\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n {{ data?.eodDecisionBy }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n {{ data?.eodScreenedDate | DateFormatter }}\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n {{ data?.eodLastSync | DateFormatter }}\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n {{ data?.organizationName }}\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n {{ data?.tradeName }}\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n {{ data?.purchaserSubCategory?.name ? data?.purchaserSubCategory?.name : \\\"None\\\" }}\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n {{ data?.language?.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 Contact\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Freight\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n {{ data?.freightCompanyName }}\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n {{ data?.freightOther }}\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n E.O.D.\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n {{ data?.eodKey }}\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n {{ data?.eodStatus }}\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n {{ data?.eodDecisionBy }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n {{ data?.eodScreenedDate | DateFormatter }}\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n {{ data?.eodLastSync | DateFormatter }}\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n\";","export default \".purch-data,\\n.input-edit-save {\\n font-weight: bold;\\n}\\n\";","import { Component, Input } from \"@angular/core\";\r\nimport { Address } from \"@app/data/misc/address\";\r\nimport { CommonSettings } from \"@app/shared/common-settings\";\r\nimport { GlobalIcons } from \"@app/shared/GlobalIcons\";\r\nimport { ContactFormatter } from \"@app/utils/contact-formatter\";\r\nimport { Util } from \"@app/utils/util\";\r\n\r\n@Component({\r\n selector: \"app-address\",\r\n styleUrls: [\"address.component.scss\"],\r\n templateUrl: \"address.component.html\"\r\n})\r\nexport class AddressComponent\r\n{\r\n @Input()\r\n address: Address;\r\n\r\n public readonly Icons = GlobalIcons;\r\n\r\n public get addressTooltip()\r\n {\r\n if (Util.isEmpty(this.address))\r\n {\r\n return Util.DOM_Space;\r\n }\r\n\r\n let contFor = new ContactFormatter(this.address);\r\n\r\n contFor.delimiter = \"\\n\";\r\n\r\n return contFor.getContact();\r\n }\r\n\r\n public onMap(): void\r\n {\r\n let contFor = new ContactFormatter(this.address);\r\n\r\n CommonSettings.openAddressWindow(contFor.googleLink());\r\n }\r\n}","export default \"
\\r\\n
\\r\\n \\r\\n
{{ address.street1 }}
\\r\\n
\\r\\n
\\r\\n \\r\\n
{{ address.street2 }}
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
{{ address.city }}
\\r\\n
\\r\\n
\\r\\n \\r\\n
{{ address.state.name }}
\\r\\n
\\r\\n
\\r\\n \\r\\n
{{ address.zip }}
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\";","export default \"address {\\n position: relative;\\n margin-bottom: 0rem;\\n}\\n\\n.csz {\\n display: -ms-flexbox;\\n display: flex;\\n -ms-flex-pack: justify;\\n justify-content: space-between;\\n}\\n\\n.address-map {\\n top: 0px;\\n right: 0px;\\n padding: 0px 2px;\\n position: absolute;\\n background-color: #fff;\\n}\\n\";","import { Directive, EventEmitter, Output } from '@angular/core';\r\nimport { BaseComponent, Customer } from \"@app/data\";\r\nimport { Util } from \"@app/utils/util\";\r\nimport { Subscription } from \"rxjs/internal/Subscription\";\r\n\r\n@Directive()\r\nexport class MerchantBase extends BaseComponent\r\n{\r\n @Output()\r\n detailsChanged = new EventEmitter();\r\n\r\n public userRole: number;\r\n public subAnswer: Subscription;\r\n public subQuestion: Subscription;\r\n\r\n public get haveChanges(): boolean\r\n {\r\n return this.dataForm?.dirty;\r\n }\r\n\r\n public loadCustomer(merchantUID: string): Subscription\r\n {\r\n if (Util.isEmpty(merchantUID))\r\n {\r\n return null;\r\n }\r\n\r\n let obby = this.apiService.detail({ uid: merchantUID }).subscribe(\r\n {\r\n next: (retRes) =>\r\n {\r\n this.data = retRes;\r\n this.patchValue();\r\n },\r\n error: (errRes) => this.error(errRes)\r\n });\r\n\r\n return obby;\r\n }\r\n}","import { Component, Input, OnInit } from \"@angular/core\";\r\nimport { CustomerService } from \"@app/data\";\r\nimport { MerchantRequestDTO } from \"@app/data/customer/merchant-request.dto\";\r\nimport { MerchantBase } from \"@app/shared/customer/merchant-base\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\n\r\n@Component({\r\n selector: \"customer-billing\",\r\n templateUrl: \"./customer-billing.component.html\"\r\n})\r\nexport class CustomerBillingComponent extends MerchantBase implements OnInit\r\n{\r\n @Input()\r\n customerUID: string;\r\n\r\n constructor(toastrService: ToastrService,\r\n private customerService: CustomerService)\r\n {\r\n super(toastrService);\r\n\r\n this.apiService = customerService;\r\n this.subQuestion = this.customerService.merchantQuestion.subscribe((request) => { this.handleQuestion(request) });\r\n }\r\n\r\n async ngOnInit()\r\n {\r\n this.dataForm = this.customerService.editorForm;\r\n this.loadCustomer(this.customerUID);\r\n }\r\n\r\n ngOnDestroy(): void\r\n {\r\n this.subQuestion.unsubscribe();\r\n }\r\n\r\n private handleQuestion(question: MerchantRequestDTO)\r\n {\r\n switch (question.requestID)\r\n {\r\n case MerchantRequestDTO.Request_Save:\r\n this.saveMe();\r\n break;\r\n }\r\n }\r\n\r\n private saveMe()\r\n {\r\n let sub = this.submit();\r\n\r\n if (!sub)\r\n {\r\n return;\r\n }\r\n\r\n sub.add(() => this.doneDidSaved());\r\n }\r\n\r\n private doneDidSaved()\r\n {\r\n if (this.submitError)\r\n {\r\n return;\r\n }\r\n\r\n let ans = new MerchantRequestDTO(MerchantRequestDTO.Request_Save, this.data);\r\n\r\n this.close();\r\n this.customerService.sendAnswer(ans);\r\n }\r\n}","export default \"
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\";","import { Component, ElementRef, OnInit, ViewChild } from \"@angular/core\";\r\nimport { BaseComponent, CustomerContact, CustomerContactService, LookupService } from \"@app/data\";\r\nimport { CommonSettings } from \"@app/shared/common-settings\";\r\nimport { ConfirmationService, IConfirmationOptions } from \"@app/shared/confirmation/confirmation.service\";\r\nimport { NgbModal } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\n\r\n@Component({\r\n selector: \"customer-contact-edit\",\r\n templateUrl: \"./customer-contact-edit.component.html\"\r\n})\r\nexport class CustomerContactEditComponent extends BaseComponent implements OnInit\r\n{\r\n @ViewChild(\"dialogContact\")\r\n dialogContact: ElementRef;\r\n\r\n constructor(\r\n toastrService: ToastrService,\r\n public lookupService: LookupService,\r\n private modalServ: NgbModal,\r\n private confirmService: ConfirmationService,\r\n private customerContactService: CustomerContactService)\r\n {\r\n super(toastrService);\r\n\r\n this.apiService = customerContactService;\r\n this.modalService = modalServ;\r\n }\r\n\r\n ngOnInit(): void\r\n {\r\n this.dataForm = this.customerContactService.editorForm;\r\n\r\n this.patchValue();\r\n this.lookupService.getUSACountryStateList();\r\n this.lookupService.getCustomerContactTypeList();\r\n\r\n this.setValue(\"customerUID\", this.parentUID);\r\n }\r\n\r\n public openAdd(merchantUID)\r\n {\r\n this.open(this.dialogContact);\r\n\r\n this.resetForm();\r\n this.setValue(\"customerUID\", merchantUID);\r\n }\r\n\r\n public openEdit(data)\r\n {\r\n this.open(this.dialogContact, data);\r\n this.patchValue();\r\n }\r\n\r\n public onClose()\r\n {\r\n if (!this.dataForm.dirty)\r\n {\r\n this.close();\r\n return;\r\n }\r\n\r\n let opts: IConfirmationOptions =\r\n {\r\n FunctionConfirm: () => this.close()\r\n };\r\n\r\n this.confirmService.YesNo(CommonSettings.DirtyFormConfirmationMessage, opts);\r\n }\r\n\r\n public onSave()\r\n {\r\n let sub = this.submit();\r\n\r\n if (sub)\r\n {\r\n sub.add(() => this.doneDidSaved());\r\n }\r\n }\r\n\r\n private doneDidSaved()\r\n {\r\n if (!this.submitError)\r\n {\r\n this.close();\r\n }\r\n }\r\n}","export default \"\\r\\n
\\r\\n
Merchant Contact
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
Contact Type is required
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
First Name is required
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
Last Name is required
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\";","import { Component, ViewChild } from \"@angular/core\";\r\nimport { CustomerContact, CustomerContactService } from \"@app/data\";\r\nimport { GridBase } from \"@app/shared/ag-grid-helpers/ag-grid-base\";\r\nimport { GridHelpers } from \"@app/shared/ag-grid-helpers/grid-helper\";\r\nimport { GridColumnAddress } from \"@app/shared/ag-grid-helpers/models/grid-column-address\";\r\nimport { GridColumnContact } from \"@app/shared/ag-grid-helpers/models/grid-column-contact\";\r\nimport { GridColumnIcon } from \"@app/shared/ag-grid-helpers/models/grid-column-icon.model\";\r\nimport { GridColumn, GridColumnType } from '@app/shared/ag-grid-helpers/models/grid-column.model';\r\nimport { ConfirmationService, IConfirmationOptions } from \"@app/shared/confirmation/confirmation.service\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\nimport { CustomerContactEditComponent } from \"../customer-contact-edit/customer-contact-edit.component\";\r\n\r\n@Component({\r\n selector: \"customer-contact-list\",\r\n templateUrl: \"./customer-contact-list.component.html\"\r\n})\r\nexport class CustomerContactListComponent extends GridBase\r\n{\r\n @ViewChild(\"dialogContact\")\r\n dialogContact: CustomerContactEditComponent;\r\n\r\n constructor(\r\n toastrService: ToastrService,\r\n private confirmService: ConfirmationService,\r\n private customerContactService: CustomerContactService)\r\n {\r\n super(toastrService, customerContactService);\r\n\r\n this.setupGrid();\r\n }\r\n\r\n public onMyGridReady(evtArg)\r\n {\r\n this.filterAdd(\"customerUID\", this.parentUID, false);\r\n\r\n this.onGridReady(evtArg);\r\n }\r\n\r\n public onAdd()\r\n {\r\n this.dialogContact.openAdd(this.parentUID);\r\n }\r\n\r\n private setupGrid()\r\n {\r\n let gridIcons =\r\n [\r\n GridHelpers.MakeEditIcon(this.onEdit.bind(this)),\r\n GridHelpers.MakeDeleteIcon(this.onDelete.bind(this)),\r\n ];\r\n\r\n this.storageKey = \"Customer-Contact\";\r\n this.gridOpts.domLayout = GridHelpers.DOMLayout_Normal;\r\n this.gridOpts.rowHeight = 75;\r\n this.gridOpts.paginationPageSize = 5;\r\n\r\n this.addColumn(new GridColumnContact(null, \"Contact\", false));\r\n this.addColumn(new GridColumnAddress(null, \"Address\"));\r\n this.addColumn(new GridColumn(\"workPhone\", \"Work Phone\", GridColumnType.Phone));\r\n this.addColumn(new GridColumn(\"cellPhone\", \"Cell Phone\", GridColumnType.Phone));\r\n this.addColumn(new GridColumnIcon(gridIcons));\r\n\r\n this.rowDoubleClick(this.onEdit.bind(this));\r\n }\r\n\r\n private onEdit(agData)\r\n {\r\n this.dialogContact.openEdit(agData);\r\n }\r\n\r\n private onDelete(agData)\r\n {\r\n this.dataForm = this.makeForm(agData);\r\n\r\n let opts: IConfirmationOptions =\r\n {\r\n FunctionConfirm: () => this.deleteIt()\r\n };\r\n\r\n this.confirmService.Delete(`Are you sure you want to delete ${agData.firstName} ${agData.lastName}?`, opts);\r\n }\r\n\r\n private deleteIt()\r\n {\r\n this.delete().add(() => this.gridRefresh());\r\n }\r\n}","export default \"\\r\\n\\r\\n\\r\\n\";","import { DateHelper } from '@app/utils/date-helper';\r\nimport { Component, Input, OnDestroy, OnInit } from \"@angular/core\";\r\nimport { AuthService, CustomerService, ProfileType } from \"@app/data\";\r\nimport { MerchantCommon } from \"@app/data/customer/merchant-common\";\r\nimport { MerchantRequestDTO } from \"@app/data/customer/merchant-request.dto\";\r\nimport { CommonSettings } from \"@app/shared/common-settings\";\r\nimport { MerchantBase } from \"@app/shared/customer/merchant-base\";\r\nimport * as ClassicEditor from \"@ckeditor/ckeditor5-build-classic\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\n\r\n@Component(\r\n {\r\n selector: \"customer-details-edit\",\r\n templateUrl: \"./customer-details-edit.component.html\"\r\n })\r\nexport class CustomerDetailsEditComponent extends MerchantBase implements OnInit, OnDestroy\r\n{\r\n @Input()\r\n customerUID: string;\r\n\r\n public readonly statuses = MerchantCommon.merchantStatuses;\r\n public readonly editorConfig = CommonSettings.CKEditorToolbar;\r\n public readonly profileTypes = ProfileType;\r\n public readonly messageEditor = ClassicEditor;\r\n\r\n public userRole: number;\r\n\r\n constructor(toastrService: ToastrService,\r\n private authService: AuthService,\r\n private customerService: CustomerService)\r\n {\r\n super(toastrService);\r\n\r\n this.dataForm = this.customerService.editorForm;\r\n this.apiService = this.customerService;\r\n this.subQuestion = this.customerService.merchantQuestion.subscribe((request) => { this.handleQuestion(request) });\r\n }\r\n\r\n async ngOnInit()\r\n {\r\n let prof = await this.authService.getProfile$().toPromise();\r\n\r\n this.userRole = prof.profileType;\r\n }\r\n\r\n // This is the fix for a race condiction on the Customer screen. The HTML is already built before the data is downloaded, so we listen for the data to be changed with this:\r\n ngOnChanges()\r\n {\r\n this.loadCustomer(this.customerUID);\r\n }\r\n\r\n ngOnDestroy(): void\r\n {\r\n this.subQuestion.unsubscribe();\r\n }\r\n\r\n private handleQuestion(question: MerchantRequestDTO)\r\n {\r\n switch (question.requestID )\r\n {\r\n case MerchantRequestDTO.Request_Save:\r\n this.saveMe();\r\n break;\r\n }\r\n }\r\n\r\n private saveMe()\r\n {\r\n let sub = this.submit();\r\n\r\n if (!sub)\r\n {\r\n return;\r\n }\r\n\r\n sub.add(() => this.submitDone());\r\n }\r\n\r\n private submitDone()\r\n {\r\n if (this.submitError)\r\n {\r\n return;\r\n }\r\n\r\n let ans = new MerchantRequestDTO(MerchantRequestDTO.Request_Save, this.data);\r\n\r\n this.customerService.sendAnswer(ans);\r\n }\r\n}","export default \"
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
Merchant name is required
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\";","import { Component, Input, OnInit, ViewChild } from \"@angular/core\";\r\nimport { CustomerService, ProfileType } from \"@app/data\";\r\nimport { CustomerSearch } from \"@app/data/customer-search/customer-search\";\r\nimport { PurchaserAuthorizationService } from \"@app/data/purchaser-authorization/purchaser-authorization.service\";\r\nimport { GlobalIcons } from \"@app/shared/GlobalIcons\";\r\nimport { CustomerSearchUserStatementComponent } from \"./customer-search-user-statement/customer-search-user-statement.component\";\r\n\r\n@Component({\r\n selector: \"customer-search-item\",\r\n styleUrls: [\"customer-search-item.component.scss\"],\r\n templateUrl: \"./customer-search-item.component.html\"\r\n})\r\nexport class CustomerSearchItemComponent implements OnInit\r\n{\r\n @ViewChild(\"dialogStatement\")\r\n dialogStatement: CustomerSearchUserStatementComponent;\r\n\r\n @Input()\r\n merchantData: CustomerSearch;\r\n\r\n @Input()\r\n canAuthorize: boolean;\r\n\r\n public readonly Icons = GlobalIcons;\r\n public readonly profileTypes = ProfileType;\r\n\r\n public logoImg;\r\n\r\n public get authIcon()\r\n {\r\n return this.merchantData.authUID ? this.Icons.Lock : this.Icons.Unlock;\r\n }\r\n\r\n public get authText()\r\n {\r\n return this.merchantData.authUID ? \"Do not allow merchant to make purchases on my behalf\" : \"Authorize to make purchases\";\r\n }\r\n\r\n constructor(private custServ: CustomerService, private purchaseAuthServ: PurchaserAuthorizationService)\r\n {\r\n }\r\n\r\n ngOnInit()\r\n {\r\n this.custServ.getImage(this.merchantData.logoImageURL).subscribe(\r\n retRes => this.logoImg = retRes.safeURL);\r\n }\r\n\r\n public onPurchaseAuth()\r\n {\r\n if (this.merchantData.authUID)\r\n {\r\n this.purchaseAuthServ.delete(\"delete\", { uid: this.merchantData.authUID }).subscribe();\r\n\r\n this.merchantData.authUID = null;\r\n }\r\n else\r\n {\r\n this.dialogStatement.openStatement(this.merchantData.uid);\r\n }\r\n }\r\n\r\n public onMerchAuthed(evtArg)\r\n {\r\n this.merchantData.authUID = evtArg.uid;\r\n }\r\n}","export default \"
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Promotion(s)\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\";","export default \".customer-item {\\n border: 1px solid #ddd;\\n box-shadow: 5px 5px 15px 0px #aaa;\\n}\\n\\n.customer-header {\\n display: -ms-flexbox;\\n display: flex;\\n -ms-flex-wrap: wrap;\\n flex-wrap: wrap;\\n -ms-flex-pack: justify;\\n justify-content: space-between;\\n}\\n\\n.customer-header .logo img {\\n width: auto;\\n height: auto;\\n max-width: 200px;\\n max-height: 75px;\\n}\\n\\n.customer-header .title {\\n display: -ms-flexbox;\\n display: flex;\\n -ms-flex-direction: column;\\n flex-direction: column;\\n}\\n\\n.customer-header .title h3 {\\n margin: 0rem !important;\\n}\\n\\n.customer-header .eastside {\\n display: -ms-flexbox;\\n display: flex;\\n -ms-flex-align: start;\\n align-items: flex-start;\\n}\\n\\n.promo legend {\\n font-size: 1rem;\\n font-weight: bold;\\n}\\n\";","import { Component, Input } from \"@angular/core\";\r\nimport { GlobalIcons } from \"../GlobalIcons\";\r\n\r\n@Component({\r\n selector: \"info-label\",\r\n styleUrls: [\"info-label.component.scss\"],\r\n templateUrl: \"./info-label.component.html\"\r\n})\r\nexport class InfoLabel\r\n{\r\n @Input()\r\n label: string;\r\n\r\n @Input()\r\n infotext: string;\r\n\r\n public Icons = GlobalIcons;\r\n\r\n constructor()\r\n {\r\n }\r\n}","export default \"
\\r\\n \\r\\n \\r\\n
\";","export default \".info-label {\\n width: 100%;\\n display: -ms-flexbox;\\n display: flex;\\n}\\n\\n.info-label label {\\n -ms-flex-positive: 1;\\n flex-grow: 1;\\n}\\n\";","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'enumToArray'\r\n})\r\nexport class EnumToArrayPipe implements PipeTransform {\r\n\r\n transform(value) {\r\n return Object.keys(value).filter(e => !isNaN(+e)).map(o => ({index: +o, name: value[o]}));\r\n }\r\n\r\n}\r\n","import { HttpClient } from \"@angular/common/http\";\r\nimport { Component, ElementRef, ViewChild } from \"@angular/core\";\r\nimport { NgbModal, NgbModalRef } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { CommonSettings } from \"../common-settings\";\r\nimport { GlobalIcons } from \"../GlobalIcons\";\r\n\r\n@Component({\r\n selector: \"app-privacy-policy\",\r\n styleUrls: [\"./privacy-policy.component.scss\"],\r\n templateUrl: \"./privacy-policy.component.html\"\r\n})\r\nexport class PrivacyPolicyComponent\r\n{\r\n @ViewChild(\"dialogPolicy\")\r\n dialogPolicy: ElementRef;\r\n\r\n public readonly Icons = GlobalIcons;\r\n\r\n public policies;\r\n public policyOutline;\r\n\r\n private modalRef: NgbModalRef;\r\n\r\n constructor(public client: HttpClient, private modalService: NgbModal)\r\n {\r\n }\r\n\r\n public open()\r\n {\r\n let opts = CommonSettings.DialogOptions(CommonSettings.DialogSize_XLarge);\r\n\r\n this.modalRef = this.modalService.open(this.dialogPolicy, opts);\r\n\r\n this.client.get(\"assets/documents/privacy-policies/index.json\").subscribe(retRes => this.loadList(retRes));\r\n }\r\n\r\n public onClose()\r\n {\r\n this.modalRef.close();\r\n }\r\n\r\n public onPolicyChange(evtArg)\r\n {\r\n this.loadFile(evtArg.target.value);\r\n }\r\n\r\n private loadFile(filename: string)\r\n {\r\n this.client.get(\"assets/documents/privacy-policies/\" + filename).subscribe(retRes => this.loadPolicies(retRes));\r\n }\r\n\r\n private loadList(listPolicies)\r\n {\r\n this.policies = listPolicies;\r\n\r\n let curr = this.policies.find(elm => elm.current);\r\n\r\n this.loadFile(curr.file);\r\n }\r\n\r\n private loadPolicies(data)\r\n {\r\n this.policyOutline = this.processNode(data, 0);\r\n }\r\n\r\n private processNode(data, level: number)\r\n {\r\n let outH = `
    `;\r\n\r\n for (let lp = 0; lp < data.length; lp++)\r\n {\r\n let node = data[lp];\r\n\r\n outH += \"
  1. \";\r\n\r\n if (node.children)\r\n {\r\n outH += node.text;\r\n outH += this.processNode(node.children, level + 1);\r\n }\r\n else\r\n {\r\n outH += node.text;\r\n }\r\n\r\n if (node.subtext)\r\n {\r\n outH += node.subtext;\r\n }\r\n\r\n outH += \"
  2. \";\r\n }\r\n\r\n return outH + \"
\";\r\n }\r\n}","export default \"\\r\\n
\\r\\n
Privacy Policy
\\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 default \".policy-select {\\n margin-bottom: 2rem;\\n}\\n\\nol {\\n margin-bottom: 1rem !important;\\n}\\n\\nli {\\n margin-bottom: .5rem;\\n padding-left: 1rem !important;\\n}\\n\\nli::before {\\n margin-right: 1rem;\\n}\\n\\n.level-0 {\\n counter-reset: level0;\\n}\\n\\n.level-0 li {\\n counter-increment: level0;\\n}\\n\\n.level-1 {\\n counter-reset: level1;\\n}\\n\\n.level-1 li {\\n counter-increment: level1;\\n}\\n\\n.level-1 li::marker {\\n content: counters(level0, \\\"\\\") \\\".\\\" counters(level1, \\\"\\\");\\n}\\n\\n.level-2 {\\n counter-reset: level2;\\n list-style-type: lower-alpha;\\n}\\n\\n.level-2 li {\\n counter-increment: level2;\\n}\\n\\n.level-2 li::marker {\\n content: \\\"(\\\" counters(level2, \\\"\\\", lower-alpha) \\\")\\\";\\n}\\n\";","import { Component, EventEmitter, Input, OnInit, Output } from \"@angular/core\";\r\nimport { GlobalIcons } from '@app/shared/GlobalIcons';\r\nimport { Util } from \"@app/utils/util\";\r\nimport { ISortColumn } from \"./sort-helper-column\";\r\n\r\n@Component({\r\n selector: \"sort-helper\",\r\n styleUrls: [\"sort-helper.component.scss\"],\r\n templateUrl: \"./sort-helper.component.html\"\r\n})\r\nexport class SortHelperComponent implements OnInit\r\n{\r\n public readonly Icons = GlobalIcons;\r\n\r\n private static readonly SortDir_Asc = \"asc\";\r\n private static readonly SortDir_Desc = \"desc\";\r\n\r\n @Input(\"columns\")\r\n columnList: ISortColumn[];\r\n\r\n @Input()\r\n disabled: boolean;\r\n\r\n @Input()\r\n showLabel: boolean = true;\r\n\r\n @Input()\r\n defaultDirection: string = SortHelperComponent.SortDir_Asc;\r\n\r\n @Output()\r\n sortChanged = new EventEmitter();\r\n\r\n public sortingDir: number = 0;\r\n public sortingColumn: number = 0;\r\n\r\n public sortDirs =\r\n [\r\n { name: \"Asc\", val: SortHelperComponent.SortDir_Asc, icon: \"sort-alpha-down\" },\r\n { name: \"Desc\", val: SortHelperComponent.SortDir_Desc, icon: \"sort-alpha-down-alt\" }\r\n ];\r\n\r\n get columns()\r\n {\r\n return this.columnList;\r\n }\r\n\r\n set columns(val)\r\n {\r\n this.columnList = val;\r\n\r\n this.setDefaults();\r\n }\r\n\r\n ngOnInit(): void\r\n {\r\n this.setDefaults();\r\n }\r\n\r\n public onSortColumn(idx: number)\r\n {\r\n this.sortingColumn = idx;\r\n this.sendSort();\r\n }\r\n\r\n public onSortDir(idx: number)\r\n {\r\n this.sortingDir = idx;\r\n this.sendSort();\r\n }\r\n\r\n public onReset()\r\n {\r\n this.setDefaults();\r\n this.sendSort();\r\n }\r\n\r\n private sendSort()\r\n {\r\n let evtArg =\r\n {\r\n column: this.columnList[this.sortingColumn].column,\r\n direction: this.sortDirs[this.sortingDir].val\r\n };\r\n\r\n this.sortChanged.emit(evtArg);\r\n }\r\n\r\n private setDefaults()\r\n {\r\n if (this.defaultDirection == SortHelperComponent.SortDir_Desc)\r\n {\r\n this.sortingDir = 1;\r\n }\r\n else\r\n {\r\n this.sortingDir = 0;\r\n }\r\n\r\n if (!Util.isEmpty(this.columnList))\r\n {\r\n let defCol = this.columnList.findIndex(cond => cond.default === true);\r\n\r\n if (defCol != -1)\r\n {\r\n this.sortingColumn = defCol;\r\n }\r\n }\r\n }\r\n}","export default \"
\\r\\n \\r\\n
\\r\\n \\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 default \".sort-helper-main {\\n display: -ms-flexbox;\\n display: flex;\\n -ms-flex-wrap: nowrap;\\n flex-wrap: nowrap;\\n -ms-flex-align: start;\\n align-items: flex-start;\\n}\\n\\n.sort-helper-main i {\\n margin-right: .5rem;\\n}\\n\\n.sort-helper-main label {\\n margin: 0rem 1rem 0rem 0rem;\\n font-weight: bold;\\n}\\n\\n.sort-helper-main button {\\n padding: .25rem 1rem;\\n}\\n\\n.sort-helper-main .sort-reset {\\n padding-left: .5rem;\\n padding-right: 0rem;\\n}\\n\\n.sort-helper-main .sort-button {\\n height: 2rem;\\n}\\n\";","import { Component, EventEmitter, Input, OnInit, Output } from \"@angular/core\";\r\nimport { PurchaserService } from \"@app/data\";\r\nimport { GlobalIcons } from '@app/shared/GlobalIcons';\r\n\r\n@Component({\r\n selector: \"captcha\",\r\n styleUrls: [\"./captcha.component.scss\"],\r\n templateUrl: \"./captcha.component.html\"\r\n})\r\nexport class CaptchaComponent implements OnInit\r\n{\r\n @Input()\r\n autoLoad: boolean = true;\r\n\r\n @Output() captchaChanged:\r\n EventEmitter = new EventEmitter();\r\n\r\n public get captchaText()\r\n {\r\n return this.captchaInput;\r\n }\r\n\r\n public readonly Icons = GlobalIcons;\r\n\r\n public loading: boolean = false;\r\n public statusIcon: string;\r\n public captchaImage;\r\n public captchaInput;\r\n\r\n private checkTimer = null;\r\n\r\n constructor(private purchaserService: PurchaserService)\r\n {\r\n }\r\n\r\n ngOnInit()\r\n {\r\n if (this.autoLoad)\r\n {\r\n this.refreshImage();\r\n }\r\n }\r\n\r\n public refreshImage()\r\n {\r\n this.loading = true;\r\n this.captchaInput = null;\r\n this.statusChange(false);\r\n\r\n return this.purchaserService.captchaGetImage().subscribe(retRes => { this.createImage(retRes); });\r\n }\r\n\r\n public onCaptchaKeyUp()\r\n {\r\n if (this.checkTimer != null)\r\n {\r\n clearTimeout(this.checkTimer);\r\n }\r\n\r\n this.checkTimer = setTimeout(() => this.checkValid(), 750);\r\n }\r\n\r\n private createImage(image: Blob)\r\n {\r\n let reader = new FileReader();\r\n\r\n reader.addEventListener(\"load\", () =>\r\n {\r\n this.loading = false;\r\n this.captchaImage = reader.result;\r\n }, false);\r\n\r\n if (image)\r\n {\r\n reader.readAsDataURL(image);\r\n }\r\n }\r\n\r\n private checkValid()\r\n {\r\n this.purchaserService.captchaIsValid(this.captchaInput).subscribe(retRes =>\r\n {\r\n this.statusChange(retRes);\r\n });\r\n }\r\n\r\n private statusChange(isGood: boolean)\r\n {\r\n if (isGood)\r\n {\r\n this.statusIcon = \"far fa-check-circle fa-fw status-good\";\r\n }\r\n else\r\n {\r\n this.statusIcon = `${this.Icons.No} status-bad`;\r\n }\r\n\r\n this.captchaChanged.emit(isGood);\r\n }\r\n}","export default \"
\\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 default \".captcha-wrapper {\\n width: 12rem;\\n}\\n\\n.captcha-wrapper .captcha-image {\\n display: -ms-flexbox;\\n display: flex;\\n}\\n\\n.captcha-wrapper .captcha-input {\\n display: -ms-flexbox;\\n display: flex;\\n -ms-flex-align: center;\\n align-items: center;\\n}\\n\\n.captcha-wrapper .status-bad {\\n color: #e60000;\\n}\\n\\n.captcha-wrapper .status-good {\\n color: #00bb00;\\n}\\n\";","import { Component, ElementRef, OnInit, ViewChild } from \"@angular/core\";\r\nimport { BaseComponent, CustomerAccount, CustomerAccountService, LookupService } from \"@app/data\";\r\nimport { CommonSettings } from \"@app/shared/common-settings\";\r\nimport { ConfirmationService, IConfirmationOptions } from \"@app/shared/confirmation/confirmation.service\";\r\nimport { NgbModal } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\n\r\n@Component({\r\n selector: \"customer-account-edit\",\r\n templateUrl: \"./customer-account-edit.component.html\"\r\n})\r\nexport class CustomerAccountEditComponent extends BaseComponent implements OnInit\r\n{\r\n @ViewChild(\"dialogAccount\")\r\n dialogAccount: ElementRef;\r\n\r\n constructor(\r\n toastrService: ToastrService,\r\n public lookupService: LookupService,\r\n private modalServ: NgbModal,\r\n private confirmService: ConfirmationService,\r\n private customerAccountService: CustomerAccountService)\r\n {\r\n super(toastrService);\r\n\r\n this.dataForm = this.customerAccountService.editorForm;\r\n this.apiService = customerAccountService;\r\n this.modalService = this.modalServ;\r\n }\r\n\r\n ngOnInit(): void\r\n {\r\n this.lookupService.getUSACountryStateList();\r\n this.lookupService.getCustomerAccountTypeList();\r\n }\r\n\r\n public openAdd(merchantUID)\r\n {\r\n this.open(this.dialogAccount);\r\n\r\n this.resetForm();\r\n this.setValue(\"customerUID\", merchantUID);\r\n }\r\n\r\n public openEdit(data)\r\n {\r\n this.open(this.dialogAccount, data);\r\n this.patchValue();\r\n }\r\n\r\n public onClose()\r\n {\r\n if (!this.dataForm.dirty)\r\n {\r\n this.close();\r\n return;\r\n }\r\n\r\n let opts: IConfirmationOptions =\r\n {\r\n FunctionConfirm: () => this.close()\r\n };\r\n\r\n this.confirmService.YesNo(CommonSettings.DirtyFormConfirmationMessage, opts);\r\n }\r\n\r\n public onSave()\r\n {\r\n let sub = this.submit();\r\n\r\n if (sub)\r\n {\r\n sub.add(() => this.doneDidSaved());\r\n }\r\n }\r\n\r\n private doneDidSaved()\r\n {\r\n if (!this.submitError)\r\n {\r\n this.close();\r\n }\r\n }\r\n}","export default \"\\r\\n
\\r\\n
Account
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
Account Type is required
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n Contact Details\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
First Name is required
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
Last Name is required
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\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 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 \\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\";","import { Component, ViewChild } from \"@angular/core\";\r\nimport { CustomerAccount, CustomerAccountService } from \"@app/data\";\r\nimport { GridBase } from '@app/shared/ag-grid-helpers/ag-grid-base';\r\nimport { GridHelpers } from \"@app/shared/ag-grid-helpers/grid-helper\";\r\nimport { GridColumnAddress } from \"@app/shared/ag-grid-helpers/models/grid-column-address\";\r\nimport { GridColumnContact } from \"@app/shared/ag-grid-helpers/models/grid-column-contact\";\r\nimport { GridColumnCustom } from \"@app/shared/ag-grid-helpers/models/grid-column-custom.model\";\r\nimport { GridColumnIcon } from \"@app/shared/ag-grid-helpers/models/grid-column-icon.model\";\r\nimport { GridColumn } from \"@app/shared/ag-grid-helpers/models/grid-column.model\";\r\nimport { ConfirmationService, IConfirmationOptions } from \"@app/shared/confirmation/confirmation.service\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\nimport { CustomerAccountEditComponent } from \"../customer-account-edit/customer-account-edit.component\";\r\n\r\n@Component({\r\n selector: \"customer-account-list\",\r\n templateUrl: \"./customer-account-list.component.html\"\r\n})\r\nexport class CustomerAccountListComponent extends GridBase\r\n{\r\n @ViewChild(\"dialogAccount\")\r\n dialogAccount: CustomerAccountEditComponent;\r\n\r\n constructor(\r\n toastrService: ToastrService,\r\n private confirmService: ConfirmationService,\r\n private customerAccountService: CustomerAccountService)\r\n {\r\n super(toastrService, customerAccountService);\r\n\r\n this.setupGrid();\r\n }\r\n\r\n public onMyGridReady(evtArg)\r\n {\r\n this.filterAdd(\"customerUID\", this.parentUID, false);\r\n\r\n this.onGridReady(evtArg);\r\n }\r\n\r\n public onAdd()\r\n {\r\n this.dialogAccount.openAdd(this.parentUID);\r\n }\r\n\r\n private setupGrid()\r\n {\r\n let gridIcons =\r\n [\r\n GridHelpers.MakeEditIcon(this.onEdit.bind(this)),\r\n GridHelpers.MakeDeleteIcon(this.onDelete.bind(this)),\r\n ];\r\n\r\n this.storageKey = \"Merchant-Account\";\r\n this.gridOpts.domLayout = GridHelpers.DOMLayout_Normal;\r\n this.gridOpts.rowHeight = 75;\r\n this.gridOpts.paginationPageSize = 10;\r\n\r\n this.addColumn(new GridColumn(\"accountNumber\", \"Account\"));\r\n this.addColumn(new GridColumnCustom(\"accountType.name\", \"Type\", { width: 125 }));\r\n this.addColumn(new GridColumnContact(null, \"Contact\"));\r\n this.addColumn(new GridColumnAddress(null, \"Address\"));\r\n this.addColumn(new GridColumnIcon(gridIcons));\r\n\r\n this.rowDoubleClick(this.onEdit.bind(this));\r\n }\r\n\r\n private onEdit(agData)\r\n {\r\n this.dialogAccount.openEdit(agData);\r\n }\r\n\r\n private onDelete(agData)\r\n {\r\n this.dataForm = this.makeForm(agData);\r\n\r\n let opts: IConfirmationOptions =\r\n {\r\n FunctionConfirm: () => this.deleteIt()\r\n };\r\n\r\n this.confirmService.Delete(`Are you sure you want to delete ${agData.firstName} ${agData.lastName}?`, opts);\r\n }\r\n\r\n private deleteIt()\r\n {\r\n this.delete().add(() => this.gridRefresh());\r\n }\r\n}","export default \"\\r\\n\\r\\n\\r\\n\";","import { Component, OnInit, ViewChild } from \"@angular/core\";\r\nimport { AuthService, CustomerAddress, CustomerAddressService, LookupService } from \"@app/data\";\r\nimport { GridBase } from \"@app/shared/ag-grid-helpers/ag-grid-base\";\r\nimport { GridHelpers } from \"@app/shared/ag-grid-helpers/grid-helper\";\r\nimport { GridColumnAddress } from \"@app/shared/ag-grid-helpers/models/grid-column-address\";\r\nimport { GridColumnCustom } from \"@app/shared/ag-grid-helpers/models/grid-column-custom.model\";\r\nimport { GridColumnIcon } from \"@app/shared/ag-grid-helpers/models/grid-column-icon.model\";\r\nimport { GridColumn, GridColumnType } from '@app/shared/ag-grid-helpers/models/grid-column.model';\r\nimport { CommonSettings } from \"@app/shared/common-settings\";\r\nimport { ConfirmationService, IConfirmationOptions } from \"@app/shared/confirmation/confirmation.service\";\r\nimport { AddressDialogComponent } from \"@app/shared/misc-components/address-dialog/address-dialog.component\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\n\r\n@Component({\r\n selector: \"customer-address-list\",\r\n templateUrl: \"./customer-address-list.component.html\"\r\n})\r\nexport class CustomerAddressListComponent extends GridBase implements OnInit\r\n{\r\n @ViewChild(\"dialogAddress\")\r\n dialogAddress: AddressDialogComponent;\r\n\r\n constructor(toastrService: ToastrService,\r\n public lookupService: LookupService,\r\n private authService: AuthService,\r\n private addressServ: CustomerAddressService,\r\n private confirmService: ConfirmationService)\r\n {\r\n super(toastrService, addressServ);\r\n\r\n this.setupGrid();\r\n }\r\n\r\n ngOnInit(): void\r\n {\r\n this.lookupService.getCustomerAddressTypeList();\r\n }\r\n\r\n public onMyGridReady(evtArg)\r\n {\r\n this.filterAdd(\"customerUID\", this.parentUID, false);\r\n\r\n this.onGridReady(evtArg);\r\n }\r\n\r\n public onAdd()\r\n {\r\n this.dialogAddress.openAdd(CommonSettings.USAUID);\r\n }\r\n\r\n public onAddressSave(addressData)\r\n {\r\n let saveMe = Object.assign(addressData, { customerUID: this.parentUID });\r\n\r\n this.addressServ.post(\"save\", saveMe).subscribe(\r\n retRes =>\r\n {\r\n this.gridRefresh();\r\n this.dialogAddress.close();\r\n },\r\n errRes => this.error(errRes)\r\n );\r\n }\r\n\r\n private setupGrid()\r\n {\r\n let gridIcons =\r\n [\r\n GridHelpers.MakeEditIcon(this.onEdit.bind(this)),\r\n GridHelpers.MakeDeleteIcon(this.onDelete.bind(this)),\r\n ];\r\n\r\n this.storageKey = \"Merchant-Address\";\r\n this.gridOpts.domLayout = GridHelpers.DOMLayout_Normal;\r\n this.gridOpts.rowHeight = 75;\r\n this.gridOpts.paginationPageSize = 10;\r\n\r\n this.addColumn(new GridColumnCustom(\"addressType.name\", \"Type\", { width: 125 }));\r\n this.addColumn(new GridColumnAddress(null, \"Address\"));\r\n this.addColumn(new GridColumn(\"workPhone1\", \"Phone 1\", GridColumnType.Phone));\r\n this.addColumn(new GridColumn(\"workPhone2\", \"Phone 2\", GridColumnType.Phone));\r\n this.addColumn(new GridColumnIcon(gridIcons));\r\n\r\n this.rowDoubleClick(this.onEdit.bind(this));\r\n }\r\n\r\n private onEdit(agData)\r\n {\r\n this.dialogAddress.openEdit(agData);\r\n }\r\n\r\n private onDelete(agData)\r\n {\r\n this.dataForm = this.makeForm(agData);\r\n\r\n let opts: IConfirmationOptions =\r\n {\r\n FunctionConfirm: () => this.deleteIt()\r\n };\r\n\r\n this.confirmService.Delete(\"Are you sure you want to delete this Address?\", opts);\r\n }\r\n\r\n private deleteIt()\r\n {\r\n this.delete().add(() => this.gridRefresh());\r\n }\r\n}","export default \"\\r\\n\\r\\n\\r\\n\";","import { Component, Input } from \"@angular/core\";\r\nimport { CustomerService } from \"@app/data\";\r\nimport { MerchantBase } from \"@app/shared/customer/merchant-base\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\n\r\n@Component({\r\n selector: \"customer-marketing-home\",\r\n templateUrl: \"customer-marketing-home.html\"\r\n})\r\nexport class CustomerMarketingHome extends MerchantBase\r\n{\r\n @Input()\r\n customerUID: string;\r\n\r\n public readonly Tab_Images = 1;\r\n public readonly Tab_Search = 2;\r\n public readonly Tab_Specials = 3;\r\n\r\n constructor(toastrService: ToastrService,\r\n private custServ: CustomerService)\r\n {\r\n super(toastrService);\r\n }\r\n}","export default \"
    \\r\\n
  • \\r\\n Promotions\\r\\n \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
  • \\r\\n
  • \\r\\n Logo\\r\\n \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
  • \\r\\n
  • \\r\\n Merchant Search\\r\\n \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
  • \\r\\n
\\r\\n
\";","import { Component, Input, OnDestroy, OnInit } from \"@angular/core\";\r\nimport { AuthService, CustomerService } from \"@app/data\";\r\nimport { MerchantRequestDTO } from \"@app/data/customer/merchant-request.dto\";\r\nimport { MerchantBase } from \"@app/shared/customer/merchant-base\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\n\r\n@Component({\r\n selector: \"customer-marketing-images\",\r\n styleUrls: [\"customer-marketing-images.scss\"],\r\n templateUrl: \"customer-marketing-images.html\"\r\n})\r\nexport class CustomerMarketingImages extends MerchantBase implements OnInit, OnDestroy\r\n{\r\n @Input()\r\n customerUID: string;\r\n\r\n public currentLogo;\r\n public currentBanner;\r\n\r\n public imgLogo: File;\r\n public imgBanner: File;\r\n\r\n public isLogoOver: boolean = false;\r\n public isBannerOver: boolean = false;\r\n\r\n constructor(toastrService: ToastrService,\r\n public custServ: CustomerService,\r\n private authService: AuthService)\r\n {\r\n super(toastrService);\r\n\r\n this.dataForm = this.custServ.editorForm;\r\n this.apiService = this.custServ;\r\n this.subQuestion = this.custServ.merchantQuestion.subscribe((request) => { this.handleQuestion(request) });\r\n }\r\n\r\n ngOnInit(): void\r\n {\r\n let sub = this.loadCustomer(this.customerUID);\r\n\r\n if (sub == null)\r\n {\r\n return;\r\n }\r\n\r\n sub.add(() =>\r\n {\r\n this.custServ.getImage(this.data.logoImageURL).subscribe(retRes => this.currentLogo = retRes.safeURL);\r\n this.custServ.getImage(this.data.bannerImageURL).subscribe(retRes => this.currentBanner = retRes.safeURL);\r\n });\r\n }\r\n\r\n ngOnDestroy(): void\r\n {\r\n this.subQuestion.unsubscribe();\r\n }\r\n\r\n public onDragEnter(imgType: number): void\r\n {\r\n switch (imgType)\r\n {\r\n case this.custServ.ImgType_Logo:\r\n this.isLogoOver = true;\r\n break;\r\n\r\n case this.custServ.ImgType_Banner:\r\n this.isBannerOver = true;\r\n break;\r\n }\r\n }\r\n\r\n public onDragLeave(imgType: number): void\r\n {\r\n switch (imgType)\r\n {\r\n case this.custServ.ImgType_Logo:\r\n this.isLogoOver = false;\r\n break;\r\n\r\n case this.custServ.ImgType_Banner:\r\n this.isBannerOver = false;\r\n break;\r\n }\r\n }\r\n\r\n private handleQuestion(question: MerchantRequestDTO)\r\n {\r\n switch (question.requestID)\r\n {\r\n case MerchantRequestDTO.Request_Save:\r\n //this.checkLogo();\r\n break;\r\n }\r\n }\r\n\r\n public onLogoUpload(evtArg: any): void\r\n {\r\n this.blockOn(\"Uploading...\");\r\n\r\n let sub = this.custServ.uploadImage(this.customerUID, this.custServ.ImgType_Logo, evtArg.target.files[0]).subscribe(\r\n {\r\n next: (retRes: string) => this.imageDone(this.custServ.ImgType_Logo, retRes),\r\n error: (errRes) => this.error(errRes)\r\n });\r\n\r\n sub.add(() => this.blockOff());\r\n }\r\n\r\n public onBannerUpload(evtArg: any): void\r\n {\r\n this.blockOn(\"Uploading...\");\r\n\r\n let sub = this.custServ.uploadImage(this.customerUID, this.custServ.ImgType_Banner, evtArg.target.files[0]).subscribe(\r\n {\r\n next: (retRes: string) => this.imageDone(this.custServ.ImgType_Banner, retRes),\r\n error: (errRes) => this.error(errRes)\r\n });\r\n\r\n sub.add(() => this.blockOff());\r\n }\r\n\r\n private imageDone(imgType: number, imgName: string): void\r\n {\r\n this.custServ.getImage(imgName).subscribe(\r\n {\r\n next: (retRes) =>\r\n {\r\n switch (imgType)\r\n {\r\n case this.custServ.ImgType_Logo:\r\n this.currentLogo = retRes.safeURL;\r\n break;\r\n\r\n case this.custServ.ImgType_Banner:\r\n this.currentBanner = retRes.safeURL;\r\n break;\r\n }\r\n }\r\n });\r\n }\r\n}","export default \"\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

Upload new images:

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\";","export default \".logo img {\\n width: 100%;\\n height: 75px;\\n -o-object-fit: contain;\\n object-fit: contain;\\n}\\n\\n.banner img {\\n width: 100%;\\n height: 150px;\\n -o-object-fit: contain;\\n object-fit: contain;\\n}\\n\\n.image-wrapper {\\n border: 1px solid #ccc;\\n padding: .5rem;\\n border-radius: .25rem;\\n}\\n\\n.new-image {\\n cursor: pointer;\\n border: 2px solid #ccc;\\n}\\n\\n.file-dnd {\\n border: 2px dashed #00f;\\n background-color: #e6f5ff;\\n}\\n\";","import { HttpClient } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { FormBuilder, Validators } from \"@angular/forms\";\r\nimport { ApiService } from \"@app/data\";\r\nimport { Observable } from \"rxjs\";\r\nimport { CustomerPromo } from \"./customer-promo\";\r\n\r\n@Injectable(\r\n{\r\n providedIn: \"root\"\r\n})\r\nexport class CustomerPromoService extends ApiService\r\n{\r\n get editorForm()\r\n {\r\n let form = new FormBuilder();\r\n let grpFields = form.group(\r\n {\r\n uid: [],\r\n endDate: [],\r\n startDate: [],\r\n countryUID: [],\r\n customerUID: [],\r\n promotionURL: [, Validators.required],\r\n purchaserType: [],\r\n promotionImage: [, Validators.required],\r\n promotionDescription: [, Validators.required]\r\n });\r\n\r\n return grpFields;\r\n }\r\n\r\n constructor(httpClient: HttpClient)\r\n {\r\n super(httpClient, \"customer-promo\");\r\n }\r\n\r\n public uploadImage(imgFile: File): Observable\r\n {\r\n let uploadData = new FormData();\r\n\r\n uploadData.append(imgFile.name, imgFile);\r\n\r\n return this.httpClient.post(this.buildUrl(\"upload\"), uploadData);\r\n }\r\n}","import { Component, ElementRef, OnInit, ViewChild } from \"@angular/core\";\r\nimport { BaseComponent, LookupService } from \"@app/data\";\r\nimport { CustomerPromo } from \"@app/data/customer-promo/customer-promo\";\r\nimport { CustomerPromoService } from \"@app/data/customer-promo/customer-promo.service\";\r\nimport { PurchaserCommon } from \"@app/data/purchaser/purchaser-common\";\r\nimport { CommonSettings } from \"@app/shared/common-settings\";\r\nimport { ConfirmationService, IConfirmationOptions } from \"@app/shared/confirmation/confirmation.service\";\r\nimport { NgbModal } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\n\r\n@Component({\r\n selector: \"customer-marketing-promos-edit\",\r\n styleUrls: [\"customer-marketing-promos-edit.scss\"],\r\n templateUrl: \"customer-marketing-promos-edit.html\"\r\n})\r\nexport class CustomerMarketingPromosEdit extends BaseComponent implements OnInit\r\n{\r\n @ViewChild(\"dialogPromo\")\r\n dialogPromo: ElementRef;\r\n\r\n public readonly opt_None = 0;\r\n public readonly opt_Direct = 1;\r\n public readonly opt_Upload = 2;\r\n public readonly purchTypes = PurchaserCommon.PurchaserTypes;\r\n\r\n public newOption: number;\r\n public isDragOver: boolean;\r\n public inPromoImg?: File;\r\n public currentImgURL?: string;\r\n\r\n constructor(\r\n toastrService: ToastrService,\r\n public lookServ: LookupService,\r\n private modalServ: NgbModal,\r\n private promoServ: CustomerPromoService,\r\n private confirmService: ConfirmationService)\r\n {\r\n super(toastrService);\r\n\r\n this.dataForm = this.promoServ.editorForm;\r\n this.apiService = promoServ;\r\n this.modalService = modalServ;\r\n }\r\n\r\n ngOnInit(): void\r\n {\r\n this.lookServ.getCountryList();\r\n }\r\n\r\n public openAdd(merchantUID: string): void\r\n {\r\n this.setupIU();\r\n this.open(this.dialogPromo, null, CommonSettings.DialogSize_XLarge);\r\n\r\n this.setValue(\"customerUID\", merchantUID);\r\n }\r\n\r\n public openEdit(promo: CustomerPromo): void\r\n {\r\n this.setupIU();\r\n\r\n this.open(this.dialogPromo, promo, CommonSettings.DialogSize_XLarge);\r\n\r\n this.currentImgURL = promo.promotionImage;\r\n }\r\n\r\n public onNewChange(opt: number): void\r\n {\r\n this.newOption = opt;\r\n\r\n this.setValue(\"promotionImage\", undefined);\r\n }\r\n\r\n public onDragEnter(): void\r\n {\r\n this.isDragOver = true;\r\n }\r\n\r\n public onDragLeave(): void\r\n {\r\n this.isDragOver = false;\r\n }\r\n\r\n public onImageSelected(evtArg): void\r\n {\r\n this.inPromoImg = evtArg.target.files[0];\r\n this.dataForm.markAsDirty();\r\n\r\n this.setValue(\"promotionImage\", this.inPromoImg.name);\r\n }\r\n\r\n public onClose(): void\r\n {\r\n if (!this.dataForm.dirty)\r\n {\r\n this.close();\r\n return;\r\n }\r\n\r\n let opts: IConfirmationOptions =\r\n {\r\n FunctionConfirm: () => this.close()\r\n };\r\n\r\n this.confirmService.YesNo(CommonSettings.DirtyFormConfirmationMessage, opts);\r\n }\r\n\r\n public onSave()\r\n {\r\n if (this.newOption == this.opt_Upload)\r\n {\r\n this.newImageUpload();\r\n return;\r\n }\r\n\r\n let sub = this.submit();\r\n\r\n if (sub)\r\n {\r\n sub.add(() => this.doneDidSaved());\r\n }\r\n }\r\n\r\n private newImageUpload(): void\r\n {\r\n if (this.invalid())\r\n {\r\n return;\r\n }\r\n\r\n this.loadingOn(\"Uploading...\");\r\n\r\n this.promoServ.uploadImage(this.inPromoImg)\r\n .subscribe(\r\n {\r\n next: (fullURL: string) => this.uploadComplete(fullURL),\r\n error: errRes => this.error(errRes)\r\n })\r\n .add(() => this.loadingOff());\r\n }\r\n\r\n private uploadComplete(fullURL: string): void\r\n {\r\n this.setValue(\"promotionImage\", fullURL);\r\n\r\n let sub = this.submit();\r\n\r\n if (sub)\r\n {\r\n sub.add(() => this.doneDidSaved());\r\n }\r\n }\r\n\r\n private doneDidSaved()\r\n {\r\n if (!this.submitError)\r\n {\r\n this.close();\r\n }\r\n }\r\n\r\n private setupIU(): void\r\n {\r\n this.newOption = this.opt_None;\r\n this.inPromoImg = undefined;\r\n this.isDragOver = false;\r\n this.currentImgURL = undefined;\r\n }\r\n}","export default \"\\r\\n
\\r\\n
Promo
\\r\\n \\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 is required
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
Landing Page is required
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Image\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Images should be have dimensions of 1015 x 360 pixels or larger if the ratio is 203:72. Images should also be a web friendly format (.jpg, .png, etc). Here is an example image.\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
Image URL is required
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
Image is required
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\";","export default \".image-info {\\n border: 1px solid #cc7a00;\\n padding: .5rem;\\n border-radius: .25rem;\\n background-color: #fff5e6;\\n}\\n\\n.custom-file {\\n border: 2px dashed transparent;\\n}\\n\\n.custom-file:hover {\\n background-color: #e6f5ff;\\n}\\n\\n.file-dnd {\\n border: 2px dashed #00f;\\n background-color: #e6f5ff;\\n}\\n\\n.current-image img {\\n width: 500px;\\n border: 1px solid #ccc;\\n -o-object-fit: contain;\\n object-fit: contain;\\n}\\n\\n.current-image .current-image-url {\\n width: 100%;\\n overflow-x: hidden;\\n white-space: nowrap;\\n text-overflow: ellipsis;\\n}\\n\\n.new-wrapper label,\\n.new-wrapper input {\\n cursor: pointer;\\n font-weight: bold;\\n}\\n\";","import { Component, ViewChild } from \"@angular/core\";\r\nimport { CustomerPromo } from \"@app/data/customer-promo/customer-promo\";\r\nimport { CustomerPromoService } from \"@app/data/customer-promo/customer-promo.service\";\r\nimport { GridBase } from \"@app/shared/ag-grid-helpers/ag-grid-base\";\r\nimport { GridHelpers } from \"@app/shared/ag-grid-helpers/grid-helper\";\r\nimport { GridCellImage } from \"@app/shared/ag-grid-helpers/models/grid-cell-image.model\";\r\nimport { GridColumnIcon } from \"@app/shared/ag-grid-helpers/models/grid-column-icon.model\";\r\nimport { GridColumnImage } from \"@app/shared/ag-grid-helpers/models/grid-column-image.model\";\r\nimport { GridColumn, GridColumnType } from '@app/shared/ag-grid-helpers/models/grid-column.model';\r\nimport { ConfirmationService, IConfirmationOptions } from \"@app/shared/confirmation/confirmation.service\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\nimport { CustomerMarketingPromosEdit } from \"../customer-marketing-promos-edit/customer-marketing-promos-edit\";\r\n\r\n@Component({\r\n selector: \"customer-marketing-promos-list\",\r\n styleUrls: [\"customer-marketing-promos-list.scss\"],\r\n templateUrl: \"customer-marketing-promos-list.html\"\r\n})\r\nexport class CustomerMarketingPromosList extends GridBase\r\n{\r\n @ViewChild(\"dialogEdit\")\r\n dialogEdit: CustomerMarketingPromosEdit;\r\n\r\n constructor(\r\n toastrService: ToastrService,\r\n private promoServ: CustomerPromoService,\r\n private confirmService: ConfirmationService)\r\n {\r\n super(toastrService, promoServ);\r\n\r\n this.setupGrid();\r\n }\r\n\r\n public onMyGridReady(evtArg: any): void\r\n {\r\n this.filterAdd(\"customerUID\", this.parentUID, false);\r\n\r\n this.onGridReady(evtArg);\r\n }\r\n\r\n public onAdd(): void\r\n {\r\n this.dialogEdit.openAdd(this.parentUID);\r\n }\r\n\r\n private setupGrid(): void\r\n {\r\n let img = new GridCellImage(\"promotionImage\");\r\n let gridIcons =\r\n [\r\n GridHelpers.MakeEditIcon(this.onEdit.bind(this)),\r\n GridHelpers.MakeDeleteIcon(this.onDelete.bind(this)),\r\n ];\r\n\r\n img.onClick = this.gotoPromo.bind(this);\r\n img.toolTip = \"Go to Landing Page\";\r\n\r\n this.storageKey = \"Customer-Promos\";\r\n this.gridOpts.domLayout = GridHelpers.DOMLayout_Normal;\r\n this.gridOpts.paginationPageSize = 15;\r\n\r\n this.addColumn(new GridColumn(\"promotionDescription\", \"Description\"));\r\n this.addColumn(new GridColumn(\"clickCount\", \"Clicks\", GridColumnType.Number));\r\n this.addColumn(new GridColumn(\"startDate\", \"Start\", GridColumnType.Date));\r\n this.addColumn(new GridColumn(\"endDate\", \"End\", GridColumnType.Date));\r\n this.addColumn(new GridColumnImage([img], \"Image\"));\r\n this.addColumn(new GridColumnIcon(gridIcons));\r\n this.rowDoubleClick(this.onEdit.bind(this));\r\n }\r\n\r\n private gotoPromo(img: GridCellImage): void\r\n {\r\n let promo = this.gridData.find(elm => elm.promotionImage == img.imageURL);\r\n\r\n if (!promo)\r\n {\r\n return;\r\n }\r\n\r\n window.open(promo.promotionURL, \"_blank\");\r\n }\r\n\r\n private onEdit(agData: CustomerPromo): void\r\n {\r\n this.dialogEdit.openEdit(agData);\r\n }\r\n\r\n private onDelete(agData: CustomerPromo): void\r\n {\r\n this.dataForm = this.makeForm(agData);\r\n\r\n let opts: IConfirmationOptions =\r\n {\r\n FunctionConfirm: () => this.deleteIt()\r\n };\r\n\r\n this.confirmService.Delete(`Are you sure you want to delete this Promotion?`, opts);\r\n }\r\n\r\n private deleteIt(): void\r\n {\r\n this.delete().add(() => this.gridRefresh());\r\n }\r\n}","export default \"\\r\\n\\r\\n\\r\\n\";","export default \".promo-list {\\n width: 50rem;\\n}\\n\";","import { Component, Input, OnInit } from \"@angular/core\";\r\nimport { AuthService, CustomerService } from \"@app/data\";\r\nimport { MerchantRequestDTO } from \"@app/data/customer/merchant-request.dto\";\r\nimport { CommonSettings } from \"@app/shared/common-settings\";\r\nimport { MerchantBase } from \"@app/shared/customer/merchant-base\";\r\nimport * as ClassicEditor from \"@ckeditor/ckeditor5-build-classic\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\n\r\n@Component({\r\n selector: \"customer-marketing-search\",\r\n styleUrls: [\"customer-marketing-search.scss\"],\r\n templateUrl: \"customer-marketing-search.html\"\r\n})\r\nexport class CustomerMarketingSearch extends MerchantBase implements OnInit\r\n{\r\n @Input()\r\n customerUID: string;\r\n\r\n public userRole: number;\r\n public editorConfig = CommonSettings.CKEditorToolbar;\r\n public messageEditor = ClassicEditor;\r\n\r\n constructor(toastrService: ToastrService,\r\n private custServ: CustomerService,\r\n private authService: AuthService)\r\n {\r\n super(toastrService);\r\n\r\n this.dataForm = this.custServ.editorForm;\r\n this.apiService = this.custServ;\r\n }\r\n\r\n async ngOnInit()\r\n {\r\n let prof = await this.authService.getProfile$().toPromise();\r\n\r\n this.userRole = prof.profileType;\r\n\r\n this.loadCustomer(this.customerUID);\r\n }\r\n\r\n private handleQuestion(question: MerchantRequestDTO)\r\n {\r\n switch (question.requestID)\r\n {\r\n case MerchantRequestDTO.Request_Save:\r\n break;\r\n }\r\n }\r\n\r\n private saveIt()\r\n {\r\n let sub = this.submit();\r\n\r\n if (!sub)\r\n {\r\n return;\r\n }\r\n\r\n sub.add(() => this.submitComplete());\r\n }\r\n\r\n private submitComplete()\r\n {\r\n if (this.submitError)\r\n {\r\n return;\r\n }\r\n }\r\n}","export default \"
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\";","export default \".promo-input {\\n max-width: 50rem;\\n}\\n\";","import { Component, OnDestroy, OnInit } from \"@angular/core\";\r\nimport { AuthService, CustomerService, ProfileType } from '@app/data';\r\nimport { MerchantRequestDTO } from \"@app/data/customer/merchant-request.dto\";\r\nimport { CommonSettings } from \"@app/shared/common-settings\";\r\nimport { GlobalIcons } from '@app/shared/GlobalIcons';\r\nimport { ToastrService } from \"ngx-toastr\";\r\nimport { Subscription } from \"rxjs\";\r\n\r\n@Component(\r\n{\r\n selector: \"customer-saver\",\r\n templateUrl: './customer-saver.component.html'\r\n})\r\nexport class CusteromSaverComponent implements OnInit, OnDestroy\r\n{\r\n public readonly Icons = GlobalIcons;\r\n public readonly profileTypes = ProfileType;\r\n\r\n public showSave = true;\r\n public userRole: number;\r\n\r\n private closeIt: boolean;\r\n private subAnswer: Subscription;\r\n private subQuestion: Subscription;\r\n\r\n constructor(public authService: AuthService,\r\n public toastrService: ToastrService,\r\n private custServ: CustomerService)\r\n {\r\n this.subAnswer = this.custServ.merchantAnswer.subscribe((request) => { this.handleAnswer(request) });\r\n this.subQuestion = this.custServ.merchantQuestion.subscribe((request) => { this.handleQuestion(request) });\r\n }\r\n\r\n async ngOnInit()\r\n {\r\n let prof = await this.authService.getProfile$().toPromise();\r\n\r\n this.userRole = prof.profileType;\r\n }\r\n\r\n ngOnDestroy(): void\r\n {\r\n this.subAnswer.unsubscribe();\r\n this.subQuestion.unsubscribe();\r\n }\r\n\r\n public onClose()\r\n {\r\n let quest = new MerchantRequestDTO(MerchantRequestDTO.Request_DirtyClose);\r\n\r\n this.custServ.sendQuestion(quest);\r\n }\r\n\r\n public onSave(closeIt)\r\n {\r\n let quest = new MerchantRequestDTO(MerchantRequestDTO.Request_Save);\r\n\r\n this.closeIt = closeIt;\r\n this.custServ.sendQuestion(quest);\r\n }\r\n\r\n private handleAnswer(answer: MerchantRequestDTO)\r\n {\r\n switch (answer.requestID)\r\n {\r\n case MerchantRequestDTO.Request_Save:\r\n this.saveComplete();\r\n break;\r\n }\r\n }\r\n\r\n private handleQuestion(question: MerchantRequestDTO)\r\n {\r\n switch (question.requestID)\r\n {\r\n case MerchantRequestDTO.Request_TabChanged:\r\n this.showSave = question.data;\r\n break;\r\n }\r\n }\r\n\r\n private saveComplete()\r\n {\r\n this.toastrService.success(\"Save complete\", null, CommonSettings.ToastOptions);\r\n\r\n if (!this.closeIt)\r\n {\r\n return;\r\n }\r\n\r\n let quest = new MerchantRequestDTO(MerchantRequestDTO.Request_Close);\r\n\r\n this.custServ.sendQuestion(quest);\r\n }\r\n}","export default \"
\\r\\n
\\r\\n \\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 { CommonSettings } from '@app/shared/common-settings';\r\nimport { Component, TemplateRef, ViewChild } from \"@angular/core\";\r\nimport { BaseComponent } from \"@app/data\";\r\nimport { PurchaserAuthorization } from \"@app/data/purchaser-authorization/purchaser-authorization\";\r\nimport { PurchaserAuthorizationService } from \"@app/data/purchaser-authorization/purchaser-authorization.service\";\r\nimport { PurchaserEndUserStatementService } from \"@app/data/purchaser-authorization/purchaser-enduserstatement.service\";\r\nimport { Util } from \"@app/utils/util\";\r\nimport { NgbModal } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\n\r\n@Component(\r\n {\r\n selector: \"customer-search-user-statement\",\r\n templateUrl: \"./customer-search-user-statement.component.html\",\r\n })\r\nexport class CustomerSearchUserStatementComponent extends BaseComponent\r\n{\r\n @ViewChild(\"dialogUserStatement\")\r\n dialogUserStatement: TemplateRef;\r\n\r\n public disclaimer: string;\r\n\r\n private merchUID;\r\n private userStateUID;\r\n\r\n constructor(\r\n toastrService: ToastrService,\r\n public modalService: NgbModal,\r\n private purchaseAuthServ: PurchaserAuthorizationService,\r\n private userStatementServ: PurchaserEndUserStatementService)\r\n {\r\n super(toastrService);\r\n\r\n this.modalService = modalService;\r\n }\r\n\r\n public openStatement(merchantUID)\r\n {\r\n this.merchUID = merchantUID;\r\n\r\n this.open(this.dialogUserStatement, null, CommonSettings.DialogSize_XLarge);\r\n this.userStatementServ.get(\"get-userstatment\").subscribe((retRes) => this.plugStatement(retRes));\r\n }\r\n\r\n public onAgree()\r\n {\r\n let data =\r\n {\r\n customerUID: this.merchUID,\r\n purchaserEndUserStatementUID: this.userStateUID\r\n };\r\n\r\n this.purchaseAuthServ.post(\"save\", data).subscribe(retRes =>\r\n {\r\n this.close();\r\n this.success(\"Merchant Authorized\");\r\n\r\n if (this.update)\r\n {\r\n this.update.emit(retRes);\r\n }\r\n });\r\n }\r\n\r\n private plugStatement(statement)\r\n {\r\n this.disclaimer = statement.endUserStatement;\r\n this.disclaimer = Util.replaceAll(this.disclaimer, \"\\r\\n\", \"
\");\r\n this.userStateUID = statement.uid;\r\n }\r\n}","export default \"\\r\\n
\\r\\n
Update Product
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\";","import { Component, ElementRef, ViewChild } from \"@angular/core\";\r\nimport { CustomerSearch } from \"@app/data/customer-search/customer-search\";\r\nimport { CustomerSearchService } from \"@app/data/customer-search/customer-search.service\";\r\nimport { CommonSettings } from \"@app/shared/common-settings\";\r\nimport { GlobalIcons } from '@app/shared/GlobalIcons';\r\nimport { Util } from \"@app/utils/util\";\r\nimport { NgbModal } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\n\r\n@Component({\r\n selector: \"merchant-search-dialog\",\r\n templateUrl: \"./merchant-search-dialog.component.html\"\r\n})\r\nexport class MerchantSearchDialog\r\n{\r\n @ViewChild(\"dialogMerchant\")\r\n dialogMerchant: ElementRef;\r\n\r\n public readonly Icons = GlobalIcons;\r\n\r\n public merchantSearchData: CustomerSearch;\r\n\r\n private modalRef;\r\n\r\n constructor(\r\n private modalServ: NgbModal,\r\n private toastrService: ToastrService,\r\n private merchSearchService: CustomerSearchService)\r\n {\r\n }\r\n\r\n public open(search: string | CustomerSearch)\r\n {\r\n if (typeof search == \"string\")\r\n {\r\n this.merchSearchService.list({ customerUID: search }).subscribe(retRes => this.checkMerchant(retRes));\r\n }\r\n else\r\n {\r\n this.merchantSearchData = search;\r\n this.openDialog();\r\n }\r\n }\r\n\r\n public onClose()\r\n {\r\n this.modalRef.close();\r\n }\r\n\r\n private checkMerchant(retRes)\r\n {\r\n if (Util.isEmpty(retRes?.results))\r\n {\r\n this.toastrService.warning(\"Failed to find Merchant's data\", \"Merchant Detail\", CommonSettings.ToastOptions);\r\n return;\r\n }\r\n\r\n this.merchantSearchData = retRes.results[0];\r\n this.openDialog();\r\n }\r\n\r\n private openDialog()\r\n {\r\n let opts = CommonSettings.DialogOptions(CommonSettings.DialogSize_XLarge);\r\n\r\n this.modalRef = this.modalServ.open(this.dialogMerchant, opts);\r\n }\r\n}","export default \"\\r\\n
\\r\\n
{{ merchantSearchData?.displayName }}
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\";","import { Component, EventEmitter, Input, OnDestroy, OnInit, Output, ViewChild } from \"@angular/core\";\r\nimport { AuthService, CustomerService, ProfileType } from \"@app/data\";\r\nimport { MerchantRequestDTO } from \"@app/data/customer/merchant-request.dto\";\r\nimport { EntityType } from \"@app/data/enums/entity-type.enum\";\r\nimport { TaskEntity } from \"@app/data/enums/task-entity.enum\";\r\nimport { CommonSettings } from \"@app/shared/common-settings\";\r\nimport { ConfirmationService, IConfirmationOptions } from \"@app/shared/confirmation/confirmation.service\";\r\nimport { CustomerBillingComponent } from \"@app/shared/customer/customer-billing/customer-billing.component\";\r\nimport { CustomerDetailsEditComponent } from \"@app/shared/customer/customer-details-edit/customer-details-edit.component\";\r\nimport { GlobalIcons } from \"@app/shared/GlobalIcons\";\r\nimport { Subscription } from \"rxjs\";\r\nimport { CustomerMarketingHome } from \"../customer-marketing/customer-marketing-home/customer-marketing-home\";\r\n\r\n@Component({\r\n selector: \"customer-tabs\",\r\n templateUrl: \"./customer-tabs.component.html\"\r\n})\r\nexport class CustomerTabsComponent implements OnInit, OnDestroy\r\n{\r\n @ViewChild(\"custNav\")\r\n custNav;\r\n\r\n @ViewChild(\"custDetail\")\r\n custDetail: CustomerDetailsEditComponent;\r\n\r\n @ViewChild(\"custBilling\")\r\n custBilling: CustomerBillingComponent;\r\n\r\n @ViewChild(\"custPromo\")\r\n custPromo: CustomerMarketingHome;\r\n\r\n @Input()\r\n customerUID: string;\r\n\r\n @Output()\r\n logoChanged = new EventEmitter();\r\n\r\n @Output()\r\n customerUpdated = new EventEmitter();\r\n\r\n public readonly Icons = GlobalIcons;\r\n public readonly Tab_Notes = 1;\r\n public readonly Tab_Promo = 2;\r\n public readonly Tab_Tasks = 3;\r\n public readonly Tab_Member = 4;\r\n public readonly Tab_ShipTo = 5;\r\n public readonly Tab_Account = 6;\r\n public readonly Tab_Address = 7;\r\n public readonly Tab_Billing = 8;\r\n public readonly Tab_Contact = 9;\r\n public readonly Tab_Details = 10;\r\n public readonly Tab_Purchasers = 11;\r\n public readonly profileTypes = ProfileType;\r\n public readonly noteEntityType = EntityType.Merchant;\r\n public readonly taskEntityType = TaskEntity.Merchant;\r\n\r\n public setTab;\r\n public userRole;\r\n public subAnswer: Subscription;\r\n public subQuestion: Subscription;\r\n\r\n constructor(\r\n private authService: AuthService,\r\n private confirmService: ConfirmationService,\r\n private customerService: CustomerService)\r\n {\r\n this.subAnswer = this.customerService.merchantAnswer.subscribe((request) => { this.handleAnswer(request) });\r\n this.subQuestion = this.customerService.merchantQuestion.subscribe((request) => { this.handleQuestions(request) });\r\n }\r\n\r\n async ngOnInit()\r\n {\r\n let prof = await this.authService.getProfile$().toPromise();\r\n\r\n this.userRole = prof.profileType;\r\n }\r\n\r\n ngOnDestroy(): void\r\n {\r\n this.subAnswer.unsubscribe();\r\n this.subQuestion.unsubscribe();\r\n }\r\n\r\n public handleAnswer(answer: MerchantRequestDTO)\r\n {\r\n switch (answer.requestID)\r\n {\r\n case MerchantRequestDTO.Request_Save:\r\n if (this.customerUpdated)\r\n {\r\n this.customerUpdated.emit(answer.data);\r\n }\r\n break;\r\n }\r\n }\r\n\r\n public handleQuestions(question: MerchantRequestDTO)\r\n {\r\n switch (question.requestID)\r\n {\r\n case MerchantRequestDTO.Request_DirtyNav:\r\n case MerchantRequestDTO.Request_DirtyClose:\r\n this.checkDirty(question.requestID);\r\n break;\r\n\r\n case MerchantRequestDTO.Request_LogoChanged:\r\n if (this.logoChanged)\r\n {\r\n this.logoChanged.emit(question.data);\r\n }\r\n break;\r\n }\r\n }\r\n\r\n public onTabChanged(evtArg)\r\n {\r\n let dirty = false;\r\n\r\n switch (evtArg.activeId)\r\n {\r\n case this.Tab_Promo:\r\n dirty = this.custPromo.haveChanges;\r\n break;\r\n\r\n case this.Tab_Details:\r\n dirty = this.custDetail.haveChanges;\r\n break;\r\n\r\n case this.Tab_Billing:\r\n dirty = this.custBilling.haveChanges;\r\n break;\r\n }\r\n\r\n if (!dirty)\r\n {\r\n this.sendTabChanged(evtArg.nextId);\r\n return;\r\n }\r\n\r\n evtArg.preventDefault();\r\n\r\n let opts: IConfirmationOptions =\r\n {\r\n FunctionConfirm: () =>\r\n {\r\n this.setTab = evtArg.nextId;\r\n this.sendTabChanged(evtArg.nextId);\r\n }\r\n };\r\n\r\n this.confirmService.YesNo(CommonSettings.DirtyFormConfirmationMessage, opts);\r\n }\r\n\r\n public checkDirty(requestID)\r\n {\r\n let dirty;\r\n\r\n switch (this.setTab)\r\n {\r\n case this.Tab_Promo:\r\n dirty = this.custPromo.haveChanges;\r\n break;\r\n\r\n case this.Tab_Details:\r\n dirty = this.custDetail.haveChanges;\r\n break;\r\n\r\n case this.Tab_Billing:\r\n dirty = this.custBilling.haveChanges;\r\n break;\r\n }\r\n\r\n if (!dirty)\r\n {\r\n if (requestID == MerchantRequestDTO.Request_DirtyClose)\r\n {\r\n this.sendClose();\r\n }\r\n else\r\n {\r\n this.sendNav(true);\r\n }\r\n\r\n return;\r\n }\r\n\r\n let opts: IConfirmationOptions =\r\n {\r\n FunctionConfirm: () =>\r\n {\r\n if (requestID == MerchantRequestDTO.Request_DirtyClose)\r\n {\r\n this.sendClose();\r\n }\r\n else\r\n {\r\n this.sendNav(true);\r\n }\r\n }\r\n };\r\n\r\n if (requestID == MerchantRequestDTO.Request_DirtyNav)\r\n {\r\n opts.FunctionClose = () => this.sendNav(false);\r\n }\r\n\r\n this.confirmService.YesNo(CommonSettings.DirtyFormConfirmationMessage, opts);\r\n }\r\n\r\n public onLogoChanged(logoImg)\r\n {\r\n if (this.logoChanged)\r\n {\r\n this.logoChanged.emit(logoImg);\r\n }\r\n }\r\n\r\n private sendNav(allowNav)\r\n {\r\n let ans = new MerchantRequestDTO(MerchantRequestDTO.Request_DirtyNav, allowNav);\r\n\r\n setTimeout(() => this.customerService.sendAnswer(ans), 250);\r\n }\r\n\r\n private sendClose()\r\n {\r\n let quest = new MerchantRequestDTO(MerchantRequestDTO.Request_Close);\r\n\r\n this.customerService.sendQuestion(quest);\r\n }\r\n\r\n private sendTabChanged(whatTab)\r\n {\r\n let save = (whatTab == this.Tab_Details || whatTab == this.Tab_Billing || whatTab == this.Tab_Promo);\r\n let quest = new MerchantRequestDTO(MerchantRequestDTO.Request_TabChanged, save);\r\n\r\n this.customerService.sendQuestion(quest);\r\n }\r\n}","export default \"
    \\r\\n
  • \\r\\n Details\\r\\n \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
  • \\r\\n
  • \\r\\n Billing\\r\\n \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
  • \\r\\n
  • \\r\\n Addresses\\r\\n \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
  • \\r\\n
  • \\r\\n Contacts\\r\\n \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
  • \\r\\n
  • \\r\\n Accounts\\r\\n \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
  • \\r\\n
  • \\r\\n Members\\r\\n \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
  • \\r\\n
  • \\r\\n Marketing\\r\\n \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
  • \\r\\n
  • \\r\\n Purchasers\\r\\n \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
  • \\r\\n
  • \\r\\n Tasks\\r\\n \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
  • \\r\\n
  • \\r\\n Notes\\r\\n \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
  • \\r\\n
\\r\\n
\";","import { Component } from \"@angular/core\";\r\nimport { AppService } from \"@app/app.service\";\r\nimport { AuthService } from \"@app/data\";\r\nimport { PurchaserAuthorization } from \"@app/data/purchaser-authorization/purchaser-authorization\";\r\nimport { PurchaserAuthorizationService } from \"@app/data/purchaser-authorization/purchaser-authorization.service\";\r\nimport { GridBase } from \"@app/shared/ag-grid-helpers/ag-grid-base\";\r\nimport { GridColumnPurchaser } from \"@app/shared/ag-grid-helpers/models/grid-column-purchaser\";\r\nimport { GridColumn, GridColumnType } from \"@app/shared/ag-grid-helpers/models/grid-column.model\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\n\r\n@Component({\r\n selector: \"merchant-purchasers\",\r\n styleUrls: [\"./merchant-purchasers.component.scss\"],\r\n templateUrl: \"./merchant-purchasers.component.html\"\r\n})\r\nexport class MerchantPurchasersComponent extends GridBase\r\n{\r\n constructor(toastrService: ToastrService,\r\n private appService: AppService,\r\n private authService: AuthService,\r\n private purchaseAuthServ: PurchaserAuthorizationService)\r\n {\r\n super(toastrService, purchaseAuthServ);\r\n\r\n this.title = \"Authorized Purchasers\";\r\n this.appService.pageTitle = this.title;\r\n\r\n this.setupGrid();\r\n }\r\n\r\n public onMyGridReady(evtArg)\r\n {\r\n this.filterAdd(\"customerUID\", this.parentUID);\r\n\r\n this.onGridReady(evtArg);\r\n }\r\n\r\n private setupGrid()\r\n {\r\n this.storageKey = \"MerchantPurchasers\";\r\n this.addColumn(new GridColumnPurchaser(\"purchaser.displayName\", \"purchaser.uid\"));\r\n this.addColumn(new GridColumn(\"country.name\", \"Country\"));\r\n this.addColumn(new GridColumn(\"purchaserContactDisplayName\", \"Contact\"));\r\n this.addColumn(new GridColumn(\"country.cellPhone1\", \"Cell\"));\r\n this.addColumn(new GridColumn(\"purchaser.emailAddress\", \"Email\", GridColumnType.Email));\r\n this.addColumn(new GridColumn(\"purchaser.websiteLink\", \"Website\", GridColumnType.Link));\r\n }\r\n}","export default \"\\r\\n\";","export default \".purchasers-list {\\n max-width: 70rem;\\n}\\n\";","import { Component, forwardRef, Input, OnInit } from \"@angular/core\";\r\nimport { AbstractControl, ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\r\nimport { Util } from \"@app/utils/util\";\r\n\r\n@Component({\r\n selector: \"enum-selection\",\r\n styleUrls: [\"./enum-selection.component.scss\"],\r\n templateUrl: \"./enum-selection.component.html\",\r\n providers:\r\n [\r\n {\r\n multi: true,\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => EnumSelectionComponent)\r\n }\r\n ]\r\n})\r\nexport class EnumSelectionComponent implements ControlValueAccessor, OnInit\r\n{\r\n onChange: any = () => { };\r\n onTouched: any = () => { };\r\n\r\n @Input()\r\n placeholder: string;\r\n\r\n @Input()\r\n enumData;\r\n\r\n @Input()\r\n disabled: boolean = false;\r\n\r\n @Input(\"value\")\r\n statusValue: string;\r\n\r\n get value()\r\n {\r\n return this.statusValue;\r\n }\r\n\r\n set value(val)\r\n {\r\n this.statusValue = val;\r\n\r\n this.onChange(val);\r\n this.onTouched();\r\n }\r\n\r\n public selectedName: string;\r\n\r\n constructor()\r\n {\r\n }\r\n\r\n ngOnInit(): void\r\n {\r\n if (Util.isEmpty(this.placeholder))\r\n {\r\n this.selectedName = \"Select\";\r\n }\r\n else\r\n {\r\n this.selectedName = this.placeholder;\r\n }\r\n }\r\n\r\n registerOnChange(execFun)\r\n {\r\n this.onChange = execFun;\r\n }\r\n\r\n registerOnTouched(execFun)\r\n {\r\n this.onTouched = execFun;\r\n }\r\n\r\n writeValue(value)\r\n {\r\n if (value == this.value)\r\n {\r\n return;\r\n }\r\n\r\n let findMe = Object.keys(this.enumData)[Object.values(this.enumData).indexOf(value)];\r\n\r\n this.statusValue = value;\r\n this.selectedName = findMe;\r\n }\r\n\r\n public onSelectChange(evtArg)\r\n {\r\n this.statusValue = evtArg.index;\r\n this.selectedName = evtArg.name;\r\n\r\n this.onChange(this.statusValue);\r\n this.onTouched();\r\n }\r\n}","export default \"
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\";","export default \"\";","import { Component, Input, OnInit, ViewChild, ViewEncapsulation } from \"@angular/core\";\r\nimport { Freight, ProfileType } from \"@app/data\";\r\nimport { FreightForwarderAddress } from \"@app/data/freight-forwarder-address/freight-forwarder-address\";\r\nimport { FreightForwarderAddressService } from \"@app/data/freight-forwarder-address/freight-forwarder-address.service\";\r\nimport { GridBase } from \"@app/shared/ag-grid-helpers/ag-grid-base\";\r\nimport { GridHelpers } from \"@app/shared/ag-grid-helpers/grid-helper\";\r\nimport { GridColumnAddress } from \"@app/shared/ag-grid-helpers/models/grid-column-address\";\r\nimport { GridColumnCustom } from \"@app/shared/ag-grid-helpers/models/grid-column-custom.model\";\r\nimport { GridColumnIcon } from \"@app/shared/ag-grid-helpers/models/grid-column-icon.model\";\r\nimport { GridColumnStatus } from \"@app/shared/ag-grid-helpers/models/grid-column-status\";\r\nimport { ConfirmationService, IConfirmationOptions } from \"@app/shared/confirmation/confirmation.service\";\r\nimport { FreightForwarderCommon } from \"@app/shared/freight-forwarder/freight-forwarder-common\";\r\nimport { AddressDialogComponent } from \"@app/shared/misc-components/address-dialog/address-dialog.component\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\n\r\n@Component({\r\n selector: \"freight-forwarder-address-list\",\r\n styleUrls: [\"./freight-forwarder-address-list.component.scss\"],\r\n templateUrl: \"./freight-forwarder-address-list.component.html\",\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class FreightForwarderAddressListComponent extends GridBase implements OnInit\r\n{\r\n @Input()\r\n userRole: number;\r\n\r\n @Input()\r\n recordType: number;\r\n\r\n @Input()\r\n ffData: Freight;\r\n\r\n @ViewChild(\"dialogAddress\")\r\n dialogAddress: AddressDialogComponent;\r\n\r\n public get canModify()\r\n {\r\n return (this.userRole == ProfileType.admin || this.userRole == ProfileType.freightForwarder);\r\n }\r\n\r\n public get addressStatus()\r\n {\r\n if (this.userRole == ProfileType.admin)\r\n {\r\n return FreightForwarderCommon.FreightForwarderStatuses;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n constructor(toastrService: ToastrService,\r\n private ffAddressServ: FreightForwarderAddressService,\r\n private confirmService: ConfirmationService)\r\n {\r\n super(toastrService, ffAddressServ);\r\n }\r\n\r\n ngOnInit()\r\n {\r\n this.setupGrid();\r\n }\r\n\r\n public onMyGridReady(evtArg)\r\n {\r\n this.filterAdd(\"freightUID\", this.ffData.uid, false);\r\n\r\n this.onGridReady(evtArg);\r\n }\r\n\r\n public onAdd()\r\n {\r\n this.dialogAddress.openAdd(this.ffData.countryUID);\r\n }\r\n\r\n public onAddressSave(addressData)\r\n {\r\n let saveMe = Object.assign(addressData, { freightUID: this.ffData.uid });\r\n\r\n this.ffAddressServ.post(\"save\", saveMe).subscribe(\r\n retRes =>\r\n {\r\n this.gridRefresh();\r\n this.dialogAddress.close();\r\n },\r\n errRes => this.error(errRes)\r\n );\r\n }\r\n\r\n private setupGrid()\r\n {\r\n this.storageKey = \"FreightForwarder-Address\";\r\n this.gridOpts.rowHeight = 75;\r\n this.gridOpts.domLayout = GridHelpers.DOMLayout_Normal;\r\n this.gridOpts.paginationPageSize = 10;\r\n\r\n this.addColumn(new GridColumnStatus(FreightForwarderCommon.FreightForwarderStatuses));\r\n this.addColumn(new GridColumnAddress(null, \"Address\"));\r\n this.addColumn(new GridColumnCustom(\"workPhone1\", \"Phone 1\", { width: 100 }));\r\n this.addColumn(new GridColumnCustom(\"workPhone2\", \"Phone 2\", { width: 100 }));\r\n\r\n if (!this.readOnly && this.canModify)\r\n {\r\n let gridIcons =\r\n [\r\n GridHelpers.MakeEditIcon(this.onEdit.bind(this)),\r\n GridHelpers.MakeDeleteIcon(this.onDelete.bind(this)),\r\n ];\r\n\r\n this.addColumn(new GridColumnIcon(gridIcons));\r\n }\r\n\r\n this.rowDoubleClick(this.onEdit.bind(this));\r\n }\r\n\r\n private onEdit(agData)\r\n {\r\n this.dialogAddress.openEdit(agData);\r\n }\r\n\r\n private onDelete(agData)\r\n {\r\n this.dataForm = this.makeForm(agData);\r\n\r\n let opts: IConfirmationOptions =\r\n {\r\n FunctionConfirm: () => this.deleteIt()\r\n };\r\n\r\n this.confirmService.Delete(`Are you sure you want to delete this Address?`, opts);\r\n }\r\n\r\n private deleteIt()\r\n {\r\n this.delete().add(() => this.gridRefresh());\r\n }\r\n}","export default \"\\r\\n\\r\\n\\r\\n\";","export default \"address {\\n line-height: 1rem;\\n margin-bottom: 0rem;\\n}\\n\\n.restrict-width {\\n max-width: 80rem;\\n}\\n\";","import { Component, TemplateRef, ViewChild } from \"@angular/core\";\r\nimport { BaseComponent, LookupService } from \"@app/data\";\r\nimport { FreightForwarderContact } from \"@app/data/freight-forwarder-contact/freight-forwarder-contact\";\r\nimport { FreightForwarderContactService } from \"@app/data/freight-forwarder-contact/freight-forwarder-contact.service\";\r\nimport { CommonSettings } from \"@app/shared/common-settings\";\r\nimport { ConfirmationService, IConfirmationOptions } from \"@app/shared/confirmation/confirmation.service\";\r\nimport { NgbModal } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\n\r\n@Component({\r\n selector: \"freight-forwarder-contact-edit\",\r\n templateUrl: \"./freight-forwarder-contact-edit.component.html\"\r\n})\r\nexport class FreightForwarderContactEditComponent extends BaseComponent\r\n{\r\n @ViewChild(\"dialogContact\")\r\n dialogContact: TemplateRef;\r\n\r\n constructor(\r\n toastrService: ToastrService,\r\n public modalService: NgbModal,\r\n public lookupService: LookupService,\r\n private contactServ: FreightForwarderContactService,\r\n private confirmService: ConfirmationService)\r\n {\r\n super(toastrService);\r\n\r\n this.dataForm = this.contactServ.editorForm;\r\n this.apiService = this.contactServ;\r\n this.modalService = modalService;\r\n }\r\n\r\n public openAdd()\r\n {\r\n this.open(this.dialogContact);\r\n this.resetForm();\r\n }\r\n\r\n public openEdit(contactData)\r\n {\r\n this.open(this.dialogContact, contactData);\r\n this.patchValue();\r\n }\r\n\r\n public onClose()\r\n {\r\n if (!this.dataForm.dirty)\r\n {\r\n this.close();\r\n return;\r\n }\r\n\r\n let opts: IConfirmationOptions =\r\n {\r\n FunctionConfirm: () => this.close()\r\n };\r\n\r\n this.confirmService.YesNo(CommonSettings.DirtyFormConfirmationMessage, opts);\r\n }\r\n\r\n public onSave()\r\n {\r\n this.setValue(\"freightUID\", this.parentUID);\r\n\r\n let sub = this.submit();\r\n\r\n if (sub == null)\r\n {\r\n return;\r\n }\r\n\r\n sub.add(() => this.saveComplete());\r\n }\r\n\r\n private saveComplete()\r\n {\r\n if (!this.submitError)\r\n {\r\n this.close();\r\n }\r\n }\r\n}","export default \"\\r\\n
\\r\\n
Contact
\\r\\n \\r\\n
\\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 is required
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
Last Name is required
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\";","import { Component, Input, OnInit, ViewChild } from \"@angular/core\";\r\nimport { FreightForwarderContact } from \"@app/data/freight-forwarder-contact/freight-forwarder-contact\";\r\nimport { FreightForwarderContactService } from \"@app/data/freight-forwarder-contact/freight-forwarder-contact.service\";\r\nimport { GridBase } from \"@app/shared/ag-grid-helpers/ag-grid-base\";\r\nimport { GridHelpers } from \"@app/shared/ag-grid-helpers/grid-helper\";\r\nimport { GridColumnCustom } from \"@app/shared/ag-grid-helpers/models/grid-column-custom.model\";\r\nimport { GridColumnIcon } from \"@app/shared/ag-grid-helpers/models/grid-column-icon.model\";\r\nimport { GridColumn } from \"@app/shared/ag-grid-helpers/models/grid-column.model\";\r\nimport { GridCellTextRender } from \"@app/shared/ag-grid-helpers/renderers/grid-cell-text.renderer\";\r\nimport { ConfirmationService, IConfirmationOptions } from \"@app/shared/confirmation/confirmation.service\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\nimport { FreightForwarderContactEditComponent } from \"../freight-forwarder-contact-edit/freight-forwarder-contact-edit.component\";\r\n\r\n@Component({\r\n selector: \"freight-forwarder-contact-list\",\r\n styleUrls: [\"./freight-forwarder-contact-list.component.scss\"],\r\n templateUrl: \"./freight-forwarder-contact-list.component.html\"\r\n})\r\nexport class FreightForwarderContactListComponent extends GridBase implements OnInit\r\n{\r\n @ViewChild(\"dialogContact\")\r\n dialogContact: FreightForwarderContactEditComponent;\r\n\r\n constructor(toastrService: ToastrService,\r\n private ffContactServ: FreightForwarderContactService,\r\n private confirmService: ConfirmationService)\r\n {\r\n super(toastrService, ffContactServ);\r\n }\r\n\r\n ngOnInit()\r\n {\r\n this.setupGrid();\r\n\r\n this.filterAdd(\"freightUID\", this.parentUID, false);\r\n }\r\n\r\n public onAdd()\r\n {\r\n this.dialogContact.openAdd();\r\n }\r\n\r\n private setupGrid()\r\n {\r\n let gridIcons =\r\n [\r\n GridHelpers.MakeEditIcon(this.onEdit.bind(this)),\r\n GridHelpers.MakeDeleteIcon(this.onDelete.bind(this)),\r\n ];\r\n\r\n this.storageKey = \"FreightForwarder-Contact\";\r\n this.gridOpts.domLayout = GridHelpers.DOMLayout_Normal;\r\n this.gridOpts.paginationPageSize = 10;\r\n\r\n this.addColumn(new GridColumnCustom(\"lastName\", \"Name\", { cellRenderer: GridCellTextRender.ContactName }));\r\n this.addColumn(new GridColumn(\"title\", \"Title\"));\r\n this.addColumn(new GridColumnCustom(\"emailAddress\", \"Email\", { cellRenderer: GridCellTextRender.EmailCellRenderer }));\r\n this.addColumn(new GridColumnIcon(gridIcons));\r\n\r\n this.rowDoubleClick(this.onEdit.bind(this));\r\n }\r\n\r\n private onEdit(agData)\r\n {\r\n this.dialogContact.openEdit(agData);\r\n }\r\n\r\n private onDelete(agData)\r\n {\r\n this.dataForm = this.makeForm(agData);\r\n\r\n let opts: IConfirmationOptions =\r\n {\r\n FunctionConfirm: () => this.deleteIt()\r\n };\r\n\r\n this.confirmService.Delete(`Are you sure you want to delete this Contact?`, opts);\r\n }\r\n\r\n private deleteIt()\r\n {\r\n this.delete().add(() => this.gridRefresh());\r\n }\r\n}","export default \"\\r\\n\\r\\n\\r\\n\";","export default \".restrict-width {\\n max-width: 80rem;\\n}\\n\";","import { Component, Input, OnDestroy, OnInit } from \"@angular/core\";\r\nimport { AuthService, BaseComponent, Freight, FreightService, LookupService } from \"@app/data\";\r\nimport { FreightForwarderType } from \"@app/data/enums/freight-forwarder-type.enum\";\r\nimport { FreightForwarderRequestDTO } from \"@app/data/freight/freight-forwarder-request.dto\";\r\nimport { CommonSettings } from \"@app/shared/common-settings\";\r\nimport { FreightForwarderCommon } from \"@app/shared/freight-forwarder/freight-forwarder-common\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\nimport { Subscription } from \"rxjs\";\r\n\r\n@Component({\r\n selector: \"freight-forwarder-details\",\r\n styleUrls: [\"freight-forwarder-details.component.scss\"],\r\n templateUrl: \"./freight-forwarder-details.component.html\"\r\n})\r\nexport class FreightForwarderDetailsComponent extends BaseComponent implements OnInit, OnDestroy\r\n{\r\n @Input()\r\n isAdmin: boolean;\r\n\r\n @Input()\r\n recordType: number;\r\n\r\n @Input() set freightData(freight)\r\n {\r\n this.data = freight;\r\n this.patchValue();\r\n }\r\n\r\n public get isFF()\r\n {\r\n return (this.recordType == FreightForwarderType.FreightFordwarder);\r\n }\r\n\r\n public get haveChanges(): boolean\r\n {\r\n return this.dataForm?.dirty;\r\n }\r\n\r\n public readonly statuses = FreightForwarderCommon.FreightForwarderStatuses;\r\n\r\n public userRole: number;\r\n\r\n private subQues: Subscription;\r\n\r\n constructor(toastrService: ToastrService,\r\n public lookupService: LookupService,\r\n private authService: AuthService,\r\n private freightServ: FreightService)\r\n {\r\n super(toastrService);\r\n\r\n this.subQues = freightServ.freightQuestion.subscribe((req) => { this.handleQuestion(req) });\r\n this.dataForm = freightServ.editorForm;\r\n this.apiService = freightServ;\r\n }\r\n\r\n async ngOnInit()\r\n {\r\n this.lookupService.getCountryList();\r\n\r\n if (this.recordType == FreightForwarderType.FreightFordwarder)\r\n {\r\n this.setValue(\"countryUID\", CommonSettings.USAUID);\r\n }\r\n\r\n let prof = await this.authService.getProfile$().toPromise();\r\n\r\n this.userRole = prof.profileType;\r\n }\r\n\r\n ngOnDestroy()\r\n {\r\n this.subQues.unsubscribe();\r\n }\r\n\r\n private handleQuestion(question: FreightForwarderRequestDTO)\r\n {\r\n switch (question.taskID)\r\n {\r\n case FreightForwarderRequestDTO.FreightRequest_Save:\r\n this.saveFF();\r\n break;\r\n }\r\n }\r\n\r\n private saveFF()\r\n {\r\n let sub = this.submit();\r\n\r\n if (sub == null)\r\n {\r\n this.sendSaveFailed();\r\n return;\r\n }\r\n\r\n sub.add(() => this.saveDone());\r\n }\r\n\r\n private saveDone()\r\n {\r\n if (this.submitError)\r\n {\r\n this.sendSaveFailed();\r\n return;\r\n }\r\n\r\n let ansUp = new FreightForwarderRequestDTO(FreightForwarderRequestDTO.FreightRequest_Update, this.data);\r\n let ansSave = new FreightForwarderRequestDTO(FreightForwarderRequestDTO.FreightRequest_Save, this.data);\r\n\r\n this.success(\"Freight Forwarder saved\");\r\n\r\n this.freightServ.sendAnswer(ansUp);\r\n this.freightServ.sendAnswer(ansSave);\r\n }\r\n\r\n private sendSaveFailed()\r\n {\r\n let ans = new FreightForwarderRequestDTO(FreightForwarderRequestDTO.FreightRequest_Save);\r\n\r\n this.freightServ.sendAnswer(ans);\r\n }\r\n}","export default \"
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
Company Name is required
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
Country is required
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
Status is required
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\";","export default \".restrict-form {\\n max-width: 40rem;\\n}\\n\";","import { Component, OnDestroy, TemplateRef, ViewChild } from \"@angular/core\";\r\nimport { BaseComponent, Freight, FreightService } from \"@app/data\";\r\nimport { FreightForwarderType } from \"@app/data/enums/freight-forwarder-type.enum\";\r\nimport { FreightForwarderRequestDTO } from \"@app/data/freight/freight-forwarder-request.dto\";\r\nimport { CommonSettings } from \"@app/shared/common-settings\";\r\nimport { FreightForwarderCommon } from \"@app/shared/freight-forwarder/freight-forwarder-common\";\r\nimport { NgbModal } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\nimport { Subscription } from \"rxjs\";\r\n\r\n@Component({\r\n selector: \"freight-forwarder-dialog\",\r\n templateUrl: \"./freight-forwarder-dialog.component.html\"\r\n})\r\nexport class FreightForwarderDialogComponent extends BaseComponent implements OnDestroy\r\n{\r\n @ViewChild(\"dialogFreight\")\r\n dialogFreight: TemplateRef;\r\n\r\n public title: string;\r\n public showSave: boolean = true;\r\n public recordType: number;\r\n\r\n private subAns: Subscription;\r\n private closing: boolean;\r\n private subQues: Subscription;\r\n\r\n constructor(toastrService: ToastrService,\r\n public modalService: NgbModal,\r\n private freightServ: FreightService)\r\n {\r\n super(toastrService);\r\n\r\n this.subAns = this.freightServ.freightAnswer.subscribe((req) => { this.handleAnswers(req) });\r\n this.subQues = this.freightServ.freightQuestion.subscribe((req) => { this.handleQuestion(req) });\r\n this.apiService = freightServ;\r\n this.modalService = modalService;\r\n }\r\n\r\n ngOnDestroy()\r\n {\r\n this.subAns.unsubscribe();\r\n this.subQues.unsubscribe();\r\n }\r\n\r\n public openAdd(recordType)\r\n {\r\n this.data = null;\r\n this.readOnly = false;\r\n this.recordType = recordType;\r\n\r\n this.setupUI();\r\n }\r\n\r\n public openEdit(freight: Freight, readonly = false)\r\n {\r\n this.data = freight;\r\n this.readOnly = readonly;\r\n\r\n if (freight.countryUID == CommonSettings.USAUID)\r\n {\r\n this.recordType = FreightForwarderType.FreightFordwarder;\r\n }\r\n else\r\n {\r\n this.recordType = FreightForwarderType.CustomersBroker;\r\n }\r\n\r\n this.setupUI();\r\n }\r\n\r\n public onClose()\r\n {\r\n this.freightServ.sendQuestion(new FreightForwarderRequestDTO(FreightForwarderRequestDTO.FreightRequest_DirtyClose));\r\n }\r\n\r\n public onSave(closeMe: boolean)\r\n {\r\n this.loading = true;\r\n this.closing = closeMe;\r\n\r\n this.freightServ.sendQuestion(new FreightForwarderRequestDTO(FreightForwarderRequestDTO.FreightRequest_Save));\r\n }\r\n\r\n private setupUI()\r\n {\r\n this.title = FreightForwarderCommon.getDescription(this.recordType);\r\n this.closing = false;\r\n this.showSave = true;\r\n\r\n if (this.recordType == FreightForwarderType.FreightFordwarder)\r\n {\r\n this.title = \"Freight Forwarder\";\r\n\r\n if (this.data == null)\r\n {\r\n this.data = { countryUID: CommonSettings.USAUID };\r\n }\r\n }\r\n\r\n this.open(this.dialogFreight, this.data, CommonSettings.DialogSize_XLarge);\r\n }\r\n\r\n private handleAnswers(answer: FreightForwarderRequestDTO)\r\n {\r\n switch (answer.taskID)\r\n {\r\n case FreightForwarderRequestDTO.FreightRequest_DirtyClose:\r\n this.handleDirty(answer.data);\r\n break;\r\n\r\n case FreightForwarderRequestDTO.FreightRequest_Save:\r\n this.saveComplete(answer);\r\n break;\r\n\r\n case FreightForwarderRequestDTO.FreightRequest_TabChanged:\r\n this.showSave = (answer.data == this.freightServ.Tab_Detail);\r\n break;\r\n }\r\n }\r\n\r\n private handleDirty(moveOn)\r\n {\r\n if (moveOn)\r\n {\r\n this.close();\r\n }\r\n }\r\n\r\n private handleQuestion(request: FreightForwarderRequestDTO)\r\n {\r\n switch (request.taskID)\r\n {\r\n }\r\n }\r\n\r\n private saveComplete(answer: FreightForwarderRequestDTO)\r\n {\r\n this.loading = false;\r\n\r\n if (answer.data == null)\r\n {\r\n return;\r\n }\r\n\r\n if (this.update)\r\n {\r\n this.update.emit();\r\n }\r\n\r\n if (this.closing)\r\n {\r\n this.close();\r\n }\r\n }\r\n}","export default \"\\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 \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\";","import { Component, Input, OnDestroy, OnInit, ViewChild } from \"@angular/core\";\r\nimport { AuthService, BaseComponent, Freight, FreightService, ProfileType } from \"@app/data\";\r\nimport { FreightForwarderType } from \"@app/data/enums/freight-forwarder-type.enum\";\r\nimport { TaskEntity } from \"@app/data/enums/task-entity.enum\";\r\nimport { FreightForwarderRequestDTO } from \"@app/data/freight/freight-forwarder-request.dto\";\r\nimport { CommonSettings } from \"@app/shared/common-settings\";\r\nimport { ConfirmationService, IConfirmationOptions } from \"@app/shared/confirmation/confirmation.service\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\nimport { Subscription } from \"rxjs\";\r\nimport { FreightForwarderDetailsComponent } from \"../freight-forwarder-details/freight-forwarder-details.component\";\r\n\r\n@Component({\r\n selector: \"freight-forwarder-tabs\",\r\n templateUrl: \"./freight-forwarder-tabs.component.html\"\r\n})\r\nexport class FreightForwarderTabsComponent extends BaseComponent implements OnInit, OnDestroy\r\n{\r\n @ViewChild(\"ffDetail\")\r\n ffDetail: FreightForwarderDetailsComponent;\r\n\r\n @Input()\r\n recordType: number;\r\n\r\n @Input() set freightData(freight)\r\n {\r\n this.data = freight;\r\n }\r\n\r\n public get canModify()\r\n {\r\n // Temp: until we test as Admin\r\n //return (this.authService.profile.profileType == ProfileType.admin || this.authService.profile.profileType == ProfileType.freightForwarder);\r\n\r\n return this.authService.profile.profileType == ProfileType.admin;\r\n }\r\n\r\n public get canMember()\r\n {\r\n return (this.recordType != FreightForwarderType.CustomersBroker);\r\n }\r\n\r\n public readonly Tab_Tasks = 1;\r\n public readonly Tab_Detail = 2;\r\n public readonly Tab_Address = 3;\r\n public readonly Tab_Members = 4;\r\n public readonly Tab_Contacts = 5;\r\n public readonly TaskEntityType = TaskEntity.FreightForwarder;\r\n\r\n public setTab;\r\n\r\n private subAns: Subscription;\r\n private holdTab: number;\r\n private subQues: Subscription;\r\n\r\n constructor(toastrService: ToastrService,\r\n public authService: AuthService,\r\n public freightServ: FreightService,\r\n private confirmService: ConfirmationService)\r\n {\r\n super(toastrService);\r\n\r\n this.subAns = freightServ.freightAnswer.subscribe((req) => { this.handleAnswer(req) });\r\n this.subQues = freightServ.freightQuestion.subscribe((req) => { this.handleQuestion(req) });\r\n }\r\n\r\n ngOnInit(): void\r\n {\r\n this.authService.getProfile$().subscribe();\r\n }\r\n\r\n ngOnDestroy()\r\n {\r\n this.subAns.unsubscribe();\r\n this.subQues.unsubscribe();\r\n }\r\n\r\n public onTabChange(tabEvt)\r\n {\r\n if (tabEvt.activeId != this.Tab_Detail || !this.ffDetail.haveChanges)\r\n {\r\n this.sendTabChange(tabEvt.nextId);\r\n return;\r\n }\r\n\r\n this.holdTab = tabEvt.nextId;\r\n\r\n tabEvt.preventDefault();\r\n\r\n let ques = new FreightForwarderRequestDTO(FreightForwarderRequestDTO.FreightRequest_DirtyTab);\r\n\r\n this.handleDirty(ques);\r\n }\r\n\r\n private handleAnswer(answer: FreightForwarderRequestDTO)\r\n {\r\n switch (answer.taskID)\r\n {\r\n case FreightForwarderRequestDTO.FreightRequest_Update:\r\n this.data = answer.data;\r\n break;\r\n }\r\n }\r\n\r\n private handleQuestion(question: FreightForwarderRequestDTO)\r\n {\r\n switch (question.taskID)\r\n {\r\n case FreightForwarderRequestDTO.FreightRequest_DirtyClose:\r\n this.handleDirty(question);\r\n break;\r\n }\r\n }\r\n\r\n private sendTabChange(tabID: number)\r\n {\r\n let ans = new FreightForwarderRequestDTO(FreightForwarderRequestDTO.FreightRequest_TabChanged, tabID);\r\n\r\n this.freightServ.sendAnswer(ans);\r\n }\r\n\r\n private handleDirty(question: FreightForwarderRequestDTO)\r\n {\r\n if (this.setTab != this.freightServ.Tab_Detail)\r\n {\r\n this.sendDirty(question, true);\r\n return;\r\n }\r\n\r\n if (!this.ffDetail.haveChanges)\r\n {\r\n this.sendDirty(question, true);\r\n return;\r\n }\r\n\r\n let opts: IConfirmationOptions =\r\n {\r\n FunctionClose: () => this.sendDirty(question, false),\r\n FunctionConfirm: () => this.sendDirty(question, true)\r\n };\r\n\r\n this.confirmService.YesNo(CommonSettings.DirtyFormConfirmationMessage, opts);\r\n }\r\n\r\n private sendDirty(question: FreightForwarderRequestDTO, moveOn: boolean)\r\n {\r\n if (question.taskID == FreightForwarderRequestDTO.FreightRequest_DirtyClose)\r\n {\r\n let ans = new FreightForwarderRequestDTO(question.taskID, moveOn);\r\n\r\n this.freightServ.sendAnswer(ans);\r\n return;\r\n }\r\n\r\n if (moveOn)\r\n {\r\n this.setTab = this.holdTab;\r\n this.sendTabChange(this.holdTab);\r\n }\r\n }\r\n}","export default \"
    \\r\\n
  • \\r\\n Details\\r\\n \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
  • \\r\\n
  • \\r\\n Addresses\\r\\n \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
  • \\r\\n
  • \\r\\n Contacts\\r\\n \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
  • \\r\\n
  • \\r\\n Members\\r\\n \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
  • \\r\\n
  • \\r\\n Tasks\\r\\n \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
  • \\r\\n
\\r\\n
\";","import { Component, EventEmitter, Input, OnInit, Output, TemplateRef, ViewChild } from \"@angular/core\";\r\nimport { FormBuilder, FormGroup, Validators } from \"@angular/forms\";\r\nimport { LookupService } from \"@app/data\";\r\nimport { CommonSettings } from \"@app/shared/common-settings\";\r\nimport { ConfirmationService, IConfirmationOptions } from \"@app/shared/confirmation/confirmation.service\";\r\nimport { GlobalIcons } from '@app/shared/GlobalIcons';\r\nimport { Util } from \"@app/utils/util\";\r\nimport { NgbModal, NgbModalRef } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\n\r\n@Component({\r\n selector: \"address-dialog\",\r\n templateUrl: \"./address-dialog.component.html\"\r\n})\r\nexport class AddressDialogComponent implements OnInit\r\n{\r\n @Input()\r\n statuses;\r\n\r\n @Input()\r\n showPhone: boolean = true;\r\n\r\n @Input()\r\n addressTypes;\r\n\r\n @Output()\r\n saveAddress = new EventEmitter();\r\n\r\n @ViewChild(\"dialogAddress\")\r\n dialogAddress: TemplateRef;\r\n\r\n public readonly Icons = GlobalIcons;\r\n\r\n public dataForm: FormGroup;\r\n public stateList;\r\n public submitted: boolean;\r\n public showCountry: boolean;\r\n\r\n private dialogRef: NgbModalRef;\r\n\r\n constructor(\r\n public lookupService: LookupService,\r\n private toastrService: ToastrService,\r\n private modalService: NgbModal,\r\n private confirmService: ConfirmationService)\r\n {\r\n }\r\n\r\n ngOnInit(): void\r\n {\r\n let form = new FormBuilder();\r\n let grpFields = form.group(\r\n {\r\n uid: [],\r\n zip: [, Validators.required],\r\n city: [, Validators.required],\r\n street1: [, Validators.required],\r\n street2: [],\r\n stateUID: [, Validators.required],\r\n isDefault: [],\r\n countryUID: [],\r\n statusType: [],\r\n workPhone1: [],\r\n workPhone2: [],\r\n customerUID: [],\r\n addressTypeUID: []\r\n });\r\n\r\n this.dataForm = grpFields;\r\n }\r\n\r\n public openAdd(restrictCountry = null)\r\n {\r\n this.dataForm.reset();\r\n\r\n this.setupUI(restrictCountry);\r\n }\r\n\r\n public openEdit(addressData)\r\n {\r\n this.dataForm.reset();\r\n this.dataForm.patchValue(addressData);\r\n this.dataForm.markAsPristine();\r\n\r\n this.setupUI(addressData.countryUID);\r\n }\r\n\r\n public close()\r\n {\r\n this.dialogRef.close();\r\n }\r\n\r\n public onCountryChange(evtArg)\r\n {\r\n this.lookupService.getCountryStateList(evtArg.uid).add(() =>\r\n {\r\n this.stateList = this.lookupService.countryStateList;\r\n\r\n if (!Util.isEmpty(this.stateList))\r\n {\r\n this.dataForm.get(\"stateUID\").setValue(this.stateList[0].uid);\r\n }\r\n });\r\n }\r\n\r\n public onClose()\r\n {\r\n if (!this.dataForm.dirty)\r\n {\r\n this.dialogRef.close();\r\n return;\r\n }\r\n\r\n let opts: IConfirmationOptions =\r\n {\r\n FunctionConfirm: () => this.dialogRef.close()\r\n };\r\n\r\n this.confirmService.YesNo(CommonSettings.DirtyFormConfirmationMessage, opts);\r\n }\r\n\r\n public onSave()\r\n {\r\n if (this.dataForm.invalid)\r\n {\r\n this.submitted = true;\r\n\r\n this.toastrService.warning(\"Invalid or missing data\", \"Address\", CommonSettings.ToastOptions);\r\n return;\r\n }\r\n\r\n this.saveAddress.emit(this.dataForm.value);\r\n }\r\n\r\n private setupUI(country)\r\n {\r\n this.dataForm.get(\"countryUID\").setValue(country);\r\n\r\n if (country == null)\r\n {\r\n this.showCountry = true;\r\n this.lookupService.getCountryList();\r\n }\r\n else\r\n {\r\n this.showCountry = false;\r\n\r\n if (country == CommonSettings.USAUID)\r\n {\r\n this.lookupService.getUSACountryStateList().add(() => this.stateList = this.lookupService.usaCountryStateList);\r\n }\r\n else\r\n {\r\n this.lookupService.getCountryStateList(country).add(() => this.stateList = this.lookupService.countryStateList);\r\n }\r\n }\r\n\r\n if (this.statuses)\r\n {\r\n this.dataForm.get(\"statusType\").setValidators([Validators.required]);\r\n }\r\n else\r\n {\r\n this.dataForm.get(\"statusType\").clearValidators();\r\n }\r\n\r\n this.dataForm.get(\"statusType\").updateValueAndValidity();\r\n\r\n this.dialogRef = this.modalService.open(this.dialogAddress, CommonSettings.DialogOptions());\r\n this.submitted = false;\r\n }\r\n}","export default \"\\r\\n
\\r\\n
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
Country is required
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
Address Type is required
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
Street Address is required
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
City is required
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
State is required
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
Zip is required
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
Status is required
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\";","import { DateFormatter } from './../../pipes/date-formatter.pipe';\r\nimport { Component, Input } from \"@angular/core\";\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\r\nimport { GlobalIcons } from \"@app/shared/GlobalIcons\";\r\nimport { DateHelper } from \"@app/utils/date-helper\";\r\nimport { Util } from \"@app/utils/util\";\r\n\r\n@Component({\r\n selector: \"date-time-input\",\r\n styleUrls: [\"./date-time-input.component.scss\"],\r\n templateUrl: \"./date-time-input.component.html\",\r\n providers:\r\n [\r\n {\r\n multi: true,\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: DateTimeInputComponent\r\n }\r\n ]\r\n})\r\nexport class DateTimeInputComponent implements ControlValueAccessor\r\n{\r\n @Input()\r\n readonly: boolean = false;\r\n\r\n @Input()\r\n placeHolder: string = \"Date\";\r\n\r\n public readonly Icons = GlobalIcons;\r\n\r\n public inDate: any;\r\n public inTime: string;\r\n\r\n onChange: any = () => { };\r\n onTouched: any = () => { };\r\n\r\n registerOnChange(execFun)\r\n {\r\n this.onChange = execFun;\r\n }\r\n\r\n registerOnTouched(execFun)\r\n {\r\n this.onTouched = execFun;\r\n }\r\n\r\n writeValue(inValue)\r\n {\r\n if (Util.isEmpty(inValue))\r\n {\r\n this.inDate = null;\r\n this.inTime = null;\r\n\r\n this.onDateChange();\r\n return;\r\n }\r\n\r\n let derDate: Date;\r\n\r\n if (inValue instanceof Date)\r\n {\r\n derDate = inValue;\r\n }\r\n else\r\n {\r\n derDate = DateHelper.makeDate(inValue);\r\n\r\n if (derDate == null)\r\n {\r\n this.inDate = null;\r\n this.inTime = null;\r\n\r\n this.onDateChange();\r\n return;\r\n }\r\n }\r\n\r\n let hor = derDate.getHours().toString();\r\n let min = derDate.getMinutes().toString();\r\n\r\n if (hor.length == 1)\r\n {\r\n hor = \"0\" + hor;\r\n }\r\n\r\n if (min.length == 1)\r\n {\r\n min = \"0\" + min;\r\n }\r\n\r\n this.inDate = DateHelper.makeNGBDate(derDate);\r\n this.inTime = Util.substitute(\"{0}:{1}:{2}\", hor, min, \"00\");\r\n\r\n this.onDateChange();\r\n }\r\n\r\n public onDateChange()\r\n {\r\n this.onChange(this.makeDateTime());\r\n }\r\n\r\n public onTimeChange()\r\n {\r\n this.onChange(this.makeDateTime());\r\n }\r\n\r\n private makeDateTime(): string\r\n {\r\n if (Util.isEmpty(this.inDate))\r\n {\r\n return null;\r\n }\r\n\r\n let derDate: Date = DateHelper.makeDate(this.inDate);\r\n\r\n if (derDate == null)\r\n {\r\n return null;\r\n }\r\n\r\n if (Util.isEmpty(this.inTime))\r\n {\r\n derDate.setHours(0, 0, 0);\r\n\r\n return DateHelper.formatDate(derDate, DateFormatter.FormatDateTimeMil);\r\n }\r\n\r\n let dasTime = this.inTime.split(\":\");\r\n let dieHour = parseInt(dasTime[0]);\r\n let dieMint = parseInt(dasTime[1]);\r\n\r\n derDate.setHours(dieHour, dieMint, 0);\r\n\r\n return DateHelper.formatDate(derDate, DateFormatter.FormatDateTimeMil);\r\n }\r\n}","export default \"
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\";","export default \".cycle-filter {\\n max-width: 10rem;\\n}\\n\";","import { Component, Input } from \"@angular/core\";\r\n\r\n@Component({\r\n selector: \"email-link\",\r\n templateUrl: \"./email-link.component.html\"\r\n})\r\nexport class EmailLinkComponent\r\n{\r\n @Input()\r\n emailAddress: string;\r\n\r\n constructor()\r\n {\r\n }\r\n}","export default \"
\\r\\n {{ emailAddress }}\\r\\n
\";","import { Component, EventEmitter, Input, Output } from \"@angular/core\";\r\nimport { InputEditViewType } from \"@app/data/enums/input-edit-view-type.enum\";\r\nimport { GlobalIcons } from \"@app/shared/GlobalIcons\";\r\n\r\n@Component({\r\n selector: \"input-edit-save\",\r\n templateUrl: \"./input-edit-save.html\"\r\n})\r\nexport class InputEditSave\r\n{\r\n @Input()\r\n saving: boolean = false;\r\n\r\n @Input()\r\n inputValue: string;\r\n\r\n @Input()\r\n viewType: number = InputEditViewType.Text;\r\n\r\n @Output()\r\n saveEvent = new EventEmitter();\r\n\r\n public readonly Icons = GlobalIcons;\r\n public readonly viewTypes = InputEditViewType;\r\n\r\n public editMode: boolean = false;\r\n\r\n constructor()\r\n {\r\n }\r\n\r\n public onEdit(): void\r\n {\r\n this.editMode = true;\r\n }\r\n\r\n public onCancel(): void\r\n {\r\n this.editMode = false;\r\n }\r\n\r\n public onSave(): void\r\n {\r\n this.editMode = false;\r\n\r\n this.saveEvent.emit(this.inputValue);\r\n }\r\n}","export default \"
\\r\\n \\r\\n
\\r\\n {{ inputValue }}\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\";","import { Component, TemplateRef, ViewChild } from \"@angular/core\";\r\nimport { FormBuilder, Validators } from \"@angular/forms\";\r\nimport { BaseComponent, Profile, ProfileService } from \"@app/data\";\r\nimport { CommonSettings } from \"@app/shared/common-settings\";\r\nimport { ConfirmationService, IConfirmationOptions } from \"@app/shared/confirmation/confirmation.service\";\r\nimport { NgbModal } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\n\r\n@Component({\r\n selector: \"members-edit\",\r\n templateUrl: \"./members-edit.component.html\"\r\n})\r\nexport class MembersEditComponent extends BaseComponent\r\n{\r\n @ViewChild(\"dialogMember\")\r\n dialogMember: TemplateRef;\r\n\r\n constructor(\r\n toastrService: ToastrService,\r\n public modalService: NgbModal,\r\n private confirmService: ConfirmationService,\r\n private profileService: ProfileService)\r\n {\r\n super(toastrService);\r\n\r\n let form = new FormBuilder();\r\n let grpFields = form.group(\r\n {\r\n uid: [],\r\n auth0ID: [],\r\n lastName: [, Validators.required],\r\n firstName: [, Validators.required],\r\n freightUID: [],\r\n customerUID: [],\r\n profileType: [],\r\n emailAddress: [, Validators.required]\r\n });\r\n\r\n this.dataForm = grpFields;\r\n this.apiService = profileService;\r\n this.modalService = modalService;\r\n }\r\n\r\n public openAdd(parentData: any)\r\n {\r\n this.open(this.dialogMember);\r\n\r\n this.resetForm();\r\n this.setValue(\"profileType\", parentData.profileType);\r\n\r\n switch (parentData.profileType)\r\n {\r\n case this.profileTypes.customer:\r\n this.setValue(\"customerUID\", parentData.parentUID);\r\n break;\r\n\r\n case this.profileTypes.freightForwarder:\r\n this.setValue(\"freightUID\", parentData.parentUID);\r\n break;\r\n }\r\n }\r\n\r\n public openEdit(member)\r\n {\r\n this.open(this.dialogMember, member);\r\n this.patchValue();\r\n }\r\n\r\n public onClose()\r\n {\r\n if (!this.dataForm.dirty)\r\n {\r\n this.close();\r\n return;\r\n }\r\n\r\n let opts: IConfirmationOptions =\r\n {\r\n FunctionConfirm: () => this.close()\r\n };\r\n\r\n this.confirmService.YesNo(CommonSettings.DirtyFormConfirmationMessage, opts);\r\n }\r\n\r\n public onSave()\r\n {\r\n let sub;\r\n\r\n if (this.data?.uid)\r\n {\r\n sub = this.submit(\"save\");\r\n }\r\n else\r\n {\r\n sub = this.submit(\"invite\");\r\n }\r\n\r\n if (sub)\r\n {\r\n sub.add(() => this.doneDidSave());\r\n }\r\n }\r\n\r\n private doneDidSave()\r\n {\r\n if (!this.submitError)\r\n {\r\n this.close();\r\n }\r\n }\r\n}","export default \"\\r\\n
\\r\\n
Member
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
First Name is required
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
Last Name is required
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
Email Address is required
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\";","import { Component, Input, OnInit, ViewChild } from \"@angular/core\";\r\nimport { Profile, ProfileService } from \"@app/data\";\r\nimport { GridBase } from \"@app/shared/ag-grid-helpers/ag-grid-base\";\r\nimport { GridHelpers } from \"@app/shared/ag-grid-helpers/grid-helper\";\r\nimport { GridColumnCustom } from \"@app/shared/ag-grid-helpers/models/grid-column-custom.model\";\r\nimport { GridColumnIcon } from \"@app/shared/ag-grid-helpers/models/grid-column-icon.model\";\r\nimport { GridCellTextRender } from \"@app/shared/ag-grid-helpers/renderers/grid-cell-text.renderer\";\r\nimport { ConfirmationService, IConfirmationOptions } from \"@app/shared/confirmation/confirmation.service\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\nimport { MembersEditComponent } from \"../members-edit/members-edit.component\";\r\n\r\n@Component({\r\n selector: \"members-list\",\r\n styleUrls: [\"./members-list.component.scss\"],\r\n templateUrl: \"./members-list.component.html\"\r\n})\r\nexport class MembersListComponent extends GridBase implements OnInit\r\n{\r\n @Input()\r\n profileType;\r\n\r\n @Input()\r\n restrictHeight: boolean = false;\r\n\r\n @Input()\r\n allowNewMembers: boolean = true;\r\n\r\n @ViewChild(\"dialogMember\")\r\n dialogMember: MembersEditComponent;\r\n\r\n constructor(toastrService: ToastrService,\r\n private profileServ: ProfileService,\r\n private confirmService: ConfirmationService)\r\n {\r\n super(toastrService, profileServ);\r\n }\r\n\r\n ngOnInit()\r\n {\r\n this.setupGrid();\r\n\r\n this.filterAdd(\"profileType\", this.profileType);\r\n\r\n switch (this.profileType)\r\n {\r\n case this.profileTypes.freightForwarder:\r\n this.filterAdd(\"freightUID\", this.parentUID, false);\r\n break;\r\n\r\n case this.profileTypes.customer:\r\n this.filterAdd(\"customerUID\", this.parentUID, false);\r\n break;\r\n }\r\n }\r\n\r\n public onAdd()\r\n {\r\n let parentData =\r\n {\r\n parentUID: this.parentUID,\r\n profileType: this.profileType\r\n };\r\n\r\n this.dialogMember.openAdd(parentData);\r\n }\r\n\r\n private setupGrid()\r\n {\r\n let gridIcons =\r\n [\r\n GridHelpers.MakeEditIcon(this.onEdit.bind(this)),\r\n GridHelpers.MakeDeleteIcon(this.onDelete.bind(this)),\r\n ];\r\n\r\n this.storageKey = \"Members\";\r\n\r\n if (this.restrictHeight)\r\n {\r\n this.gridOpts.domLayout = GridHelpers.DOMLayout_Normal;\r\n this.gridOpts.paginationPageSize = 10;\r\n }\r\n\r\n this.addColumn(new GridColumnCustom(\"lastName\", \"Name\", { cellRenderer: GridCellTextRender.ContactName }));\r\n this.addColumn(new GridColumnCustom(\"emailAddress\", \"Email\", { cellRenderer: GridCellTextRender.EmailCellRenderer }));\r\n this.addColumn(new GridColumnIcon(gridIcons));\r\n\r\n this.rowDoubleClick(this.onEdit.bind(this));\r\n }\r\n\r\n private onEdit(agData)\r\n {\r\n this.dialogMember.openEdit(agData);\r\n }\r\n\r\n private onDelete(agData)\r\n {\r\n this.dataForm = this.makeForm(agData);\r\n\r\n let opts: IConfirmationOptions =\r\n {\r\n FunctionConfirm: () => this.deleteIt()\r\n };\r\n\r\n this.confirmService.Delete(`Are you sure you want to delete this Member?`, opts);\r\n }\r\n\r\n private deleteIt()\r\n {\r\n this.delete().add(() => this.gridRefresh());\r\n }\r\n}","export default \"\\r\\n\\r\\n\\r\\n\";","export default \".members-grid {\\n max-width: 80rem;\\n}\\n\";","import { Component, Input, OnInit, ViewChild } from \"@angular/core\";\r\nimport { MerchantDialogComponent } from \"@app/admin/customer/merchant-dialog/merchant-dialog.component\";\r\nimport { Customer, CustomerService } from \"@app/data\";\r\nimport { GlobalIcons } from \"@app/shared/GlobalIcons\";\r\n\r\n@Component({\r\n selector: \"merchant-link\",\r\n templateUrl: \"./merchant-link.html\",\r\n})\r\nexport class MerchantLink implements OnInit\r\n{\r\n @Input()\r\n merchant: Customer;\r\n\r\n @Input()\r\n merchantUID: string;\r\n\r\n @ViewChild(\"dialogMerchant\")\r\n dialogMerchant: MerchantDialogComponent;\r\n\r\n public readonly Icons = GlobalIcons;\r\n\r\n public email: string;\r\n public webLink: string;\r\n public merchUID: string;\r\n public merchantName: string;\r\n\r\n constructor(private custServ: CustomerService)\r\n {\r\n }\r\n\r\n ngOnInit(): void\r\n {\r\n if (this.merchantUID)\r\n {\r\n this.custServ.detail({ uid: this.merchantUID }).subscribe(retRes => this.plugMerchant(retRes));\r\n }\r\n else\r\n {\r\n this.plugMerchant(this.merchant);\r\n }\r\n }\r\n\r\n public onDetail()\r\n {\r\n this.dialogMerchant.openEdit(this.merchUID);\r\n }\r\n\r\n public onWebsite()\r\n {\r\n window.open(this.webLink, \"_blank\");\r\n }\r\n\r\n public onEmail()\r\n {\r\n window.location.href = \"mailto:\" + this.email;\r\n }\r\n\r\n private plugMerchant(merchant: Customer): void\r\n {\r\n if (!merchant)\r\n {\r\n this.email = \"\";\r\n this.webLink = \"\";\r\n this.merchUID = \"\";\r\n this.merchantName = \"\";\r\n return;\r\n }\r\n\r\n this.email = merchant.contact?.emailAddress;\r\n this.webLink = merchant.websiteLink;\r\n this.merchUID = merchant.uid;\r\n this.merchantName = merchant.displayName;\r\n }\r\n}","export default \"\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n\\r\\n\";","import { Component, Input } from \"@angular/core\";\r\n\r\n@Component({\r\n selector: \"phone-link\",\r\n templateUrl: \"./phone-link.html\"\r\n})\r\nexport class PhoneLink\r\n{\r\n @Input()\r\n phone: string;\r\n\r\n constructor()\r\n {\r\n }\r\n}","export default \"\";","import { Component, EventEmitter, Input, Output } from \"@angular/core\";\r\n\r\n@Component({\r\n selector: \"popup-menu-item\",\r\n templateUrl: \"./popup-menu-item.html\"\r\n})\r\nexport class PopupMenuItem\r\n{\r\n @Input()\r\n icon: string;\r\n\r\n @Input()\r\n text: string;\r\n\r\n @Input()\r\n toolTip: string;\r\n\r\n @Output()\r\n click: EventEmitter = new EventEmitter();\r\n}","export default \"\";","import { AfterViewInit, Component, ContentChildren, ElementRef, Input, ViewChild } from \"@angular/core\";\r\nimport tippy, { hideAll } from \"tippy.js\";\r\nimport { PopupMenuItem } from \"./popup-menu-item/popup-menu-item\";\r\n\r\n@Component({\r\n selector: \"popup-menu\",\r\n templateUrl: \"./popup-menu.html\"\r\n})\r\nexport class PopupMenu implements AfterViewInit\r\n{\r\n @Input()\r\n link;\r\n\r\n @ViewChild(\"menuContents\")\r\n menuContents: ElementRef;\r\n\r\n @ViewChild(\"menuTrigger\")\r\n menuTrigger: ElementRef;\r\n\r\n @ContentChildren(PopupMenuItem)\r\n menuItems;\r\n\r\n private menuOptions =\r\n {\r\n arrow: false,\r\n trigger: \"manual\",\r\n appendTo: document.body,\r\n placement: \"top\",\r\n hideOnClick: true,\r\n interactive: true,\r\n onShow: (instance) =>\r\n {\r\n hideAll({ exclude: instance });\r\n },\r\n onClickOutside: (instance, event) =>\r\n {\r\n this.isOpen = false;\r\n instance.hide();\r\n }\r\n };\r\n\r\n private isOpen;\r\n private menuInstance;\r\n\r\n constructor()\r\n {\r\n }\r\n\r\n public ngAfterViewInit()\r\n {\r\n this.menuInstance = tippy(this.menuTrigger.nativeElement);\r\n this.menuInstance.setProps(this.menuOptions);\r\n this.menuInstance.setContent(this.menuContents.nativeElement);\r\n }\r\n\r\n public onClick(evtArg)\r\n {\r\n this.hide();\r\n\r\n if (evtArg.click)\r\n {\r\n evtArg.click.emit();\r\n }\r\n }\r\n\r\n public onShowMenu()\r\n {\r\n this.toggle();\r\n }\r\n\r\n private show()\r\n {\r\n this.isOpen = true;\r\n this.menuInstance.show();\r\n }\r\n\r\n private hide()\r\n {\r\n this.isOpen = false;\r\n this.menuInstance.hide();\r\n }\r\n\r\n private toggle()\r\n {\r\n if (this.isOpen)\r\n {\r\n this.hide();\r\n }\r\n else\r\n {\r\n this.show();\r\n }\r\n }\r\n}","export default \"
\\r\\n \\r\\n\\r\\n
\\r\\n
{{ item.text }}
\\r\\n
\\r\\n
\";","import { Component, Input, OnInit } from \"@angular/core\";\r\nimport { Product, ProductService } from \"@app/data\";\r\nimport { GlobalIcons } from \"@app/shared/GlobalIcons\";\r\nimport { ProductDialogService } from \"@app/shared/products/product-dialog/product-dialog.service\";\r\nimport { Util } from \"@app/utils/util\";\r\n\r\n@Component({\r\n selector: \"product-link\",\r\n templateUrl: \"./product-link.html\",\r\n})\r\nexport class ProductLink implements OnInit\r\n{\r\n @Input()\r\n product: Product;\r\n\r\n @Input()\r\n productUID: string;\r\n\r\n public readonly Icons = GlobalIcons;\r\n\r\n public prodUID: string;\r\n public webLink: string;\r\n public partNumber: string;\r\n\r\n constructor(private prodServ: ProductService, private prodDiggyServ: ProductDialogService)\r\n {\r\n }\r\n\r\n ngOnInit(): void\r\n {\r\n if (this.productUID)\r\n {\r\n this.prodServ.detail({ uid: this.productUID }).subscribe(retRes => this.loadProduct(retRes));\r\n }\r\n else\r\n {\r\n this.loadProduct(this.product);\r\n }\r\n }\r\n\r\n public onDetail(): void\r\n {\r\n this.prodDiggyServ.editByUID(this.product.uid);\r\n }\r\n\r\n public onWebsite()\r\n {\r\n window.open(this.webLink, \"_blank\");\r\n }\r\n\r\n private loadProduct(inProd: Product)\r\n {\r\n if (Util.isEmpty(inProd))\r\n {\r\n this.webLink = \"\";\r\n this.prodUID = \"\";\r\n this.partNumber = \"\";\r\n return;\r\n }\r\n\r\n this.webLink = inProd.websiteLink1;\r\n this.prodUID = inProd.uid;\r\n this.partNumber = inProd.partNumber;\r\n }\r\n}","export default \"\\r\\n\\r\\n \\r\\n \\r\\n\";","import { Component, Input, OnInit, ViewChild } from \"@angular/core\";\r\nimport { PurchaserDialogComponent } from \"@app/admin/purchaser/purchaser-dialog/purchaser-dialog.component\";\r\nimport { AuthService, ProfileType, Purchaser, PurchaserService } from \"@app/data\";\r\nimport { GlobalIcons } from \"@app/shared/GlobalIcons\";\r\nimport { Util } from '@app/utils/util';\r\n\r\n@Component({\r\n selector: \"purchaser-link\",\r\n templateUrl: \"./purchaser-link.html\",\r\n})\r\nexport class PurchaserLink implements OnInit\r\n{\r\n @Input()\r\n showType: boolean;\r\n\r\n @Input()\r\n purchaser: Purchaser;\r\n\r\n @Input()\r\n purchaserUID: string;\r\n\r\n @ViewChild(\"dialogPurchaser\")\r\n dialogPurchaser: PurchaserDialogComponent;\r\n\r\n public readonly Icons = GlobalIcons;\r\n public readonly UserRoles = ProfileType;\r\n\r\n public email: string;\r\n public webLink: string;\r\n public purchUID: string;\r\n public userRole: number;\r\n public purchaserName: string;\r\n public purchaserType: string;\r\n\r\n constructor(private purchaserServ: PurchaserService, private authService: AuthService)\r\n {\r\n }\r\n\r\n ngOnInit(): void\r\n {\r\n this.userRole = this.authService.profile?.profileType;\r\n\r\n if (this.purchaserUID)\r\n {\r\n this.purchaserServ.detail({ uid: this.purchaserUID }).subscribe(retRes => this.loadPurchaser(retRes));\r\n }\r\n else\r\n {\r\n this.loadPurchaser(this.purchaser);\r\n }\r\n }\r\n\r\n public onDetail()\r\n {\r\n this.dialogPurchaser.openPurchaser(this.purchUID);\r\n }\r\n\r\n public onWebsite()\r\n {\r\n window.open(this.webLink, \"_blank\");\r\n }\r\n\r\n public onEmail()\r\n {\r\n window.location.href = \"mailto:\" + this.email;\r\n }\r\n\r\n private loadPurchaser(purchaser: Purchaser)\r\n {\r\n if (Util.isEmpty(purchaser))\r\n {\r\n this.email = \"\";\r\n this.webLink = \"\";\r\n this.purchUID = \"\";\r\n this.purchaserName = \"\";\r\n return;\r\n }\r\n\r\n let purName = purchaser.displayName ?? \"\";\r\n let purType = purchaser.purchaserTypeName ?? \"\";\r\n\r\n this.email = purchaser.emailAddress;\r\n this.webLink = purchaser.websiteLink;\r\n this.purchUID = purchaser.uid;\r\n this.purchaserName = purName;\r\n\r\n if (purType != \"\" && this.showType)\r\n {\r\n this.purchaserName += ` (${purType})`;\r\n }\r\n }\r\n}","export default \"\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n\\r\\n\";","import { Component, Input } from \"@angular/core\";\r\n\r\n@Component({\r\n selector: \"star-rating\",\r\n templateUrl: \"./star-rating.html\"\r\n})\r\nexport class StarRating\r\n{\r\n @Input()\r\n rating: number;\r\n\r\n @Input()\r\n standAlone: boolean = true;\r\n\r\n public ratingSize: string;\r\n\r\n constructor()\r\n {\r\n }\r\n}","export default \"
\\r\\n \\r\\n
\";","import { Component, Input } from \"@angular/core\";\r\n\r\n@Component({\r\n selector: \"web-link\",\r\n templateUrl: \"./web-link.html\"\r\n})\r\nexport class WebLink\r\n{\r\n @Input()\r\n webLink: string;\r\n\r\n constructor()\r\n {\r\n }\r\n}","export default \"
\\r\\n {{ webLink }}\\r\\n
\";","export enum OrderProductStatusType\r\n{\r\n active = 1,\r\n clearedForShipment = 3,\r\n complete = 4,\r\n failed = 5,\r\n hold = 10,\r\n suspended = 11,\r\n cancelled = 13,\r\n partNumberNotFound = 20,\r\n productNotActive = 21,\r\n productIsNotExportable = 22,\r\n invalidShipCountry = 23,\r\n productNotImportable = 24,\r\n extendedCountryNotExportable = 25,\r\n productPurchaserNotImportable = 26,\r\n productIsIneligible = 27,\r\n productNeedFirearmLicense = 28\r\n}","import { AfterViewInit, Component, ElementRef, EventEmitter, OnInit, Output, ViewChild, ViewEncapsulation } from \"@angular/core\";\r\nimport { FormBuilder, Validators } from \"@angular/forms\";\r\nimport { BaseComponent } from \"@app/data\";\r\nimport { WikiCommon } from \"@app/data/wiki/wiki-common\";\r\nimport { WikiMod } from \"@app/data/wiki/wiki.model\";\r\nimport { WikiService } from \"@app/data/wiki/wiki.service\";\r\nimport { WikiTextComponent } from \"@app/shared/misc-components/wiki-renderer/wiki-renderer.component\";\r\nimport { Util } from \"@app/utils/util\";\r\nimport { NgSelectComponent } from '@ng-select/ng-select';\r\nimport { ToastrService } from \"ngx-toastr\";\r\nimport tippy, { hideAll } from \"tippy.js\";\r\n\r\n@Component(\r\n {\r\n selector: \"wiki-editor\",\r\n styleUrls: [\"wiki-editor.component.scss\", \"../../styles/ee-wiki.scss\"],\r\n templateUrl: \"./wiki-editor.component.html\",\r\n encapsulation: ViewEncapsulation.None\r\n })\r\nexport class WikiEditorComponent extends BaseComponent implements OnInit, AfterViewInit\r\n{\r\n @ViewChild(\"selctType\")\r\n selctType: NgSelectComponent;\r\n\r\n @ViewChild(\"inWiki\")\r\n inWiki: ElementRef;\r\n\r\n @ViewChild(\"wikiElm\")\r\n wikiElm: WikiTextComponent;\r\n\r\n @ViewChild(\"iconContainer\")\r\n iconContainer: ElementRef;\r\n\r\n @ViewChild(\"iconMenuTrigger\")\r\n iconMenuTrigger: ElementRef;\r\n\r\n @Output()\r\n wikiSaveEvent:EventEmitter = new EventEmitter();\r\n\r\n @Output()\r\n wikiLoadedEvent: EventEmitter = new EventEmitter();\r\n\r\n @Output()\r\n wikiValidateEvent:EventEmitter = new EventEmitter();\r\n\r\n @Output()\r\n editorReady = new EventEmitter();\r\n\r\n public get isDirty(): boolean\r\n {\r\n return this.dataForm.dirty;\r\n }\r\n\r\n public get wikiText(): string\r\n {\r\n return this.getValue(\"wikiText\");\r\n }\r\n\r\n public readonly tag_break = \"
\";\r\n public readonly tag_email = \"EML\";\r\n public readonly tag_phone = \"PHN\";\r\n public readonly tag_linkIn = \"LKI\";\r\n public readonly tag_linkEx = \"LKE\";\r\n public readonly tag_linkAnchor = \"LKA\";\r\n\r\n public iconList;\r\n public wikiErrors;\r\n public currentWiki: WikiMod;\r\n\r\n private menuOptions =\r\n {\r\n arrow: false,\r\n trigger: \"manual\",\r\n appendTo: document.body,\r\n placement: \"top\",\r\n hideOnClick: true,\r\n interactive: true,\r\n onShow: (instance) =>\r\n {\r\n hideAll({ exclude: instance });\r\n },\r\n onClickOutside: (instance, event) =>\r\n {\r\n this.isOpen = false;\r\n instance.hide();\r\n }\r\n };\r\n\r\n private isOpen: boolean = false;\r\n private menuInstance;\r\n\r\n constructor(toastrService: ToastrService,\r\n private wikiServ: WikiService)\r\n {\r\n super(toastrService);\r\n\r\n let form = new FormBuilder();\r\n let grpFields = form.group({ wikiText: [Validators.required] });\r\n\r\n this.dataForm = grpFields;\r\n this.apiService = wikiServ;\r\n }\r\n\r\n ngOnInit(): void\r\n {\r\n this.loadIcons();\r\n\r\n setTimeout(() => this.editorReady.emit(), 100);\r\n }\r\n\r\n public ngAfterViewInit(): void\r\n {\r\n this.menuInstance = tippy(this.iconMenuTrigger.nativeElement);\r\n this.menuInstance.setProps(this.menuOptions);\r\n this.menuInstance.setContent(this.iconContainer.nativeElement);\r\n }\r\n\r\n public clearWiki(): void\r\n {\r\n this.currentWiki = null;\r\n this.setValue(\"wikiText\", null);\r\n\r\n this.onPreview();\r\n }\r\n\r\n public loadWiki(filter: WikiMod): void\r\n {\r\n this.blockOn(\"Loading...\");\r\n\r\n this.resetForm();\r\n\r\n let subs = this.wikiServ.post(\"detail\", filter).subscribe(\r\n retRes => this.wikiLoaded(retRes),\r\n errRes => this.error(errRes));\r\n\r\n subs.add(() => this.blockOff());\r\n }\r\n\r\n public setWiki(wikiText: string): void\r\n {\r\n this.setValue(\"wikiText\", wikiText);\r\n\r\n this.onPreview();\r\n }\r\n\r\n public uploadImage(evtArg): void\r\n {\r\n this.blockOn(\"Uploading...\");\r\n\r\n this.wikiServ.imageUpload(evtArg.target.files[0]).subscribe(\r\n retRes => this.imageDone(retRes),\r\n errRes => this.error(errRes),\r\n () => this.blockOff());\r\n }\r\n\r\n public onSave(): void\r\n {\r\n this.wikiValidateEvent.emit();\r\n }\r\n\r\n public setValid(): void\r\n {\r\n let data = this.getValue(\"wikiText\");\r\n\r\n this.currentWiki.wikiText = data;\r\n\r\n this.markClean();\r\n this.wikiSaveEvent.emit(data);\r\n }\r\n\r\n public markClean(): void\r\n {\r\n this.dataForm.markAsPristine();\r\n this.dataForm.markAsUntouched();\r\n }\r\n\r\n public onPreview(): void\r\n {\r\n let wiki = this.getValue(\"wikiText\");\r\n\r\n this.wikiErrors = this.wikiElm.parseWiki(wiki);\r\n }\r\n\r\n public onIconToggle(): void\r\n {\r\n if (this.isOpen)\r\n {\r\n this.menuInstance.hide();\r\n }\r\n else\r\n {\r\n this.menuInstance.show();\r\n }\r\n\r\n this.isOpen = !this.isOpen;\r\n }\r\n\r\n public onIconInsert(derIcon): void\r\n {\r\n this.onIconToggle();\r\n\r\n this.insertText(`[[${derIcon.name}]]`);\r\n }\r\n\r\n public onInsertWiki(tag): void\r\n {\r\n switch (tag)\r\n {\r\n case this.tag_email:\r\n tag = this.makeEmail();\r\n break;\r\n\r\n case this.tag_phone:\r\n tag = this.makePhone();\r\n break;\r\n\r\n case this.tag_linkIn:\r\n tag = this.makeLinkInternal();\r\n break;\r\n\r\n case this.tag_linkEx:\r\n tag = this.makeLinkExternal();\r\n break;\r\n\r\n case this.tag_linkAnchor:\r\n tag = this.makeLinkAnchor();\r\n break;\r\n }\r\n\r\n if (tag == null)\r\n {\r\n return;\r\n }\r\n\r\n this.insertText(tag);\r\n }\r\n\r\n public onInsertFix(idx): void\r\n {\r\n this.onInsertWiki(this.wikiErrors[idx].fix);\r\n\r\n this.wikiErrors.splice(idx, 1);\r\n\r\n Util.reindexArray(this.wikiErrors);\r\n }\r\n\r\n private loadIcons(): void\r\n {\r\n let keys = Object.keys(this.Icons);\r\n let vals = Object.values(this.Icons);\r\n\r\n this.iconList = [];\r\n\r\n for (let lp = 0; lp < keys.length; lp++)\r\n {\r\n if (keys[lp].startsWith(\"Size_\"))\r\n {\r\n continue;\r\n }\r\n\r\n this.iconList.push({ name: keys[lp], icon: vals[lp] });\r\n }\r\n\r\n this.iconList.sort((uno, two) => (uno.name > two.name) ? 1 : -1);\r\n }\r\n\r\n private wikiLoaded(data: WikiMod): void\r\n {\r\n this.currentWiki = data;\r\n\r\n this.setWiki(data.wikiText);\r\n\r\n this.wikiLoadedEvent.emit(this.currentWiki);\r\n }\r\n\r\n private insertText(text): void\r\n {\r\n let inElm = this.inWiki.nativeElement;\r\n\r\n inElm.setRangeText(text, inElm.selectionStart, inElm.selectionEnd);\r\n inElm.dispatchEvent(new Event(\"input\"));\r\n }\r\n\r\n private imageDone(retRes): void\r\n {\r\n this.onInsertWiki(WikiCommon.makeTagImage(retRes));\r\n }\r\n\r\n private makeEmail(): string\r\n {\r\n let mail = prompt(\"E-mail address\");\r\n\r\n if (mail == null)\r\n {\r\n return null;\r\n }\r\n\r\n return ``;\r\n }\r\n\r\n private makePhone(): string\r\n {\r\n let phone = prompt(\"Phone number\");\r\n\r\n if (phone == null)\r\n {\r\n return null;\r\n }\r\n\r\n return WikiCommon.makePhoneLink(phone);\r\n }\r\n\r\n private makeLinkInternal(): string\r\n {\r\n let link = prompt(\"Internal Link\");\r\n\r\n if (link == null)\r\n {\r\n return null;\r\n }\r\n\r\n return WikiCommon.makeInternalLink(\"Link text\", link);\r\n }\r\n\r\n private makeLinkAnchor(): string\r\n {\r\n let link = prompt(\"Internal Link Anchor\");\r\n\r\n if (link == null)\r\n {\r\n return null;\r\n }\r\n\r\n return WikiCommon.makeInternalAnchor(link);\r\n }\r\n\r\n private makeLinkExternal(): string\r\n {\r\n let link = prompt(\"External Link\");\r\n\r\n if (link == null)\r\n {\r\n return null;\r\n }\r\n\r\n return WikiCommon.makeExternalLink(\"Link text\", link);\r\n }\r\n}","export default \"\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
{{ item.message }}
\\r\\n
\\r\\n
\\r\\n
\\r\\n We're using the the Showdown wiki syntax. Thorough Documentation or simple demo\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\";","export default \".error-block {\\n font-size: .75rem;\\n}\\n\\n.editor-main {\\n display: -ms-flexbox;\\n display: flex;\\n -ms-flex-direction: column;\\n flex-direction: column;\\n -ms-flex-pack: justify;\\n justify-content: space-between;\\n}\\n\\n.editor-wrapper {\\n -ms-flex-positive: 1;\\n flex-grow: 1;\\n}\\n\\n.editor-textarea {\\n width: 100%;\\n border: 1px solid #ccc;\\n resize: none;\\n padding: .5rem;\\n overflow-x: scroll;\\n font-family: monospace;\\n white-space: pre;\\n}\\n\\n.editor-sytax {\\n font-size: .75rem;\\n}\\n\\n.editor-error {\\n cursor: pointer;\\n}\\n\\n.editor-icon-list {\\n width: 30rem;\\n display: -ms-flexbox;\\n display: flex;\\n padding: .5rem;\\n -ms-flex-wrap: wrap;\\n flex-wrap: wrap;\\n min-width: 15rem;\\n max-width: 25rem;\\n -ms-flex-direction: row;\\n flex-direction: row;\\n -ms-flex-pack: justify;\\n justify-content: space-between;\\n}\\n\\n.editor-icon-icon {\\n width: 32px;\\n border: 1px solid transparent;\\n cursor: pointer;\\n height: 32px;\\n margin: .25rem;\\n font-size: 1.25rem;\\n text-align: center;\\n border-radius: .25rem;\\n}\\n\\n.editor-icon-icon:hover {\\n border: 1px solid #ccc;\\n background-color: #fff;\\n}\\n\";","import { WikiErrorType, WikiCommon } from \"@app/data/wiki/wiki-common\";\r\n\r\nexport class WikiError\r\n{\r\n fix: string;\r\n message: string;\r\n errorType: number;\r\n\r\n constructor(errorType: number, data)\r\n {\r\n this.errorType = errorType;\r\n\r\n switch (errorType)\r\n {\r\n case WikiErrorType.MissingLink:\r\n this.fix = WikiCommon.makeInternalLink(\"linkText\", data);\r\n this.message = \"Anchor without link: \" + data;\r\n break;\r\n\r\n case WikiErrorType.MissingAnchor:\r\n this.fix = WikiCommon.makeInternalAnchor(data);\r\n this.message = \"Internal link missing anchor: \" + data;\r\n break;\r\n }\r\n }\r\n}","import { HttpClient } from \"@angular/common/http\";\r\nimport { Component, ViewEncapsulation } from \"@angular/core\";\r\nimport { DomSanitizer } from \"@angular/platform-browser\";\r\nimport { WikiCommon, WikiErrorType } from \"@app/data/wiki/wiki-common\";\r\nimport { WikiError } from \"@app/data/wiki/wiki-error.model\";\r\nimport { WikiService } from \"@app/data/wiki/wiki.service\";\r\nimport { GlobalIcons } from '@app/shared/GlobalIcons';\r\nimport { Util } from \"@app/utils/util\";\r\nimport { ShowdownConverter } from \"ngx-showdown\";\r\nimport { map } from \"rxjs/operators\";\r\n\r\n@Component(\r\n {\r\n selector: \"wiki-renderer\",\r\n styleUrls: [\"../../styles/ee-wiki.scss\"],\r\n templateUrl: \"./wiki-renderer.component.html\",\r\n encapsulation: ViewEncapsulation.None\r\n })\r\nexport class WikiTextComponent\r\n{\r\n public wikiText: string;\r\n\r\n private arAnch = [];\r\n private arLinks = [];\r\n private iconList = new Map();\r\n private localURL: string;\r\n private holdImages: Map;\r\n\r\n constructor(\r\n private webClient: HttpClient,\r\n private wikiServ: WikiService,\r\n private sanitizer: DomSanitizer,\r\n private showdownConverterServ: ShowdownConverter)\r\n {\r\n this.loadIcons();\r\n this.showdownConverterServ.setOption(\"backslashEscapesHTMLTags\", true);\r\n }\r\n\r\n public parseWiki(rawWiki)\r\n {\r\n if (Util.isEmpty(rawWiki))\r\n {\r\n this.wikiText = \"\";\r\n return [];\r\n }\r\n\r\n let broken = rawWiki.split(\"\\n\");\r\n let errors = [];\r\n let newWiki = [];\r\n\r\n this.arAnch = [];\r\n this.arLinks = [];\r\n this.localURL = window.location.href;\r\n this.holdImages = new Map();\r\n\r\n // Just in case there's a anchor in the URL\r\n this.localURL = this.localURL.replace(window.location.hash, \"\");\r\n\r\n for (let line of broken)\r\n {\r\n line = this.buildIcon(line);\r\n line = this.buildLinkAnchor(line);\r\n line = this.buildLinkExternal(line);\r\n line = this.buildLinkInternal(line);\r\n\r\n this.imageExtract(line);\r\n\r\n newWiki.push(line);\r\n }\r\n\r\n let primHTML = this.showdownConverterServ.makeHtml(newWiki.join(\"\\n\"));\r\n\r\n primHTML = Util.replaceAll(primHTML, \"
    \", \"
      \");\r\n primHTML = Util.replaceAll(primHTML, \"
        \", \"
          \");\r\n primHTML = Util.replaceAll(primHTML, \"\", \"\");\r\n primHTML = Util.replaceAll(primHTML, \"\", \"\");\r\n\r\n this.wikiText = primHTML;\r\n\r\n if (this.arLinks.length > 0)\r\n {\r\n for (let tag of this.arLinks)\r\n {\r\n let idx = this.arAnch.indexOf(tag);\r\n\r\n if (idx == -1)\r\n {\r\n errors.push(new WikiError(WikiErrorType.MissingAnchor, tag));\r\n }\r\n }\r\n }\r\n\r\n if (this.arAnch.length > 0)\r\n {\r\n for (let tag of this.arAnch)\r\n {\r\n let idx = this.arLinks.indexOf(tag);\r\n\r\n if (idx == -1)\r\n {\r\n errors.push(new WikiError(WikiErrorType.MissingLink, tag));\r\n }\r\n }\r\n }\r\n\r\n return errors;\r\n }\r\n\r\n private loadIcons()\r\n {\r\n let keys = Object.keys(GlobalIcons);\r\n let vals = Object.values(GlobalIcons);\r\n\r\n for (let lp = 0; lp < keys.length; lp++)\r\n {\r\n if (keys[lp].startsWith(\"Size_\"))\r\n {\r\n continue;\r\n }\r\n\r\n this.iconList.set(keys[lp], vals[lp]);\r\n }\r\n }\r\n\r\n private iconText(line)\r\n {\r\n var matches = line.match(/\\[\\[(.*?)\\]\\]/);\r\n\r\n if (matches)\r\n {\r\n return matches[1];\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private textBetweenBracket(line)\r\n {\r\n var matches = line.match(/\\[(.*?)\\]/);\r\n\r\n if (matches)\r\n {\r\n return matches[1];\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private textBetweenParentheses(line)\r\n {\r\n var matches = line.match(/\\((.*?)\\)/);\r\n\r\n if (matches)\r\n {\r\n return matches[1];\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private buildIcon(line)\r\n {\r\n let justInCase = 0;\r\n\r\n while (true)\r\n {\r\n let beg = line.indexOf(WikiCommon.Tag_Icon);\r\n\r\n if (beg == -1 || justInCase > 10)\r\n {\r\n break;\r\n }\r\n\r\n let icon = this.iconText(line);\r\n\r\n beg = line.indexOf(\"[[\");\r\n icon = this.iconList.get(icon);\r\n\r\n if (icon)\r\n {\r\n let end = line.indexOf(\"]]\", beg);\r\n let link = ``;\r\n\r\n line = line.substring(0, beg) + link + line.substring(end + 2);\r\n }\r\n\r\n justInCase++;\r\n }\r\n\r\n return line;\r\n }\r\n\r\n private buildLinkAnchor(line: string): string\r\n {\r\n let justInCase = 0;\r\n\r\n while (true)\r\n {\r\n let beg = line.indexOf(WikiCommon.Tag_InternalAnchor);\r\n\r\n if (beg == -1 || justInCase > 10)\r\n {\r\n break;\r\n }\r\n\r\n let end = line.indexOf(\"]\", beg + 1);\r\n let key = WikiCommon.Tag_InternalAnchor;\r\n let tag = line.substring(beg + 3, end);\r\n\r\n key = `${key}${tag}]`;\r\n line = line.replace(key, ``);\r\n justInCase++;\r\n\r\n this.arAnch.push(tag);\r\n }\r\n\r\n return line;\r\n }\r\n\r\n private buildLinkInternal(line: string): string\r\n {\r\n let justInCase = 0;\r\n\r\n while (true)\r\n {\r\n let beg = line.indexOf(WikiCommon.Tag_InternalLink);\r\n\r\n if (beg == -1 || justInCase > 10)\r\n {\r\n break;\r\n }\r\n\r\n let end = line.indexOf(\")\", beg + 1);\r\n let tag = line.substring(beg + 3, end);\r\n\r\n line = line.replace(WikiCommon.Tag_InternalLink, `](${this.localURL}#`);\r\n justInCase++;\r\n\r\n this.arLinks.push(tag);\r\n }\r\n\r\n return line;\r\n }\r\n\r\n private buildLinkExternal(line: string): string\r\n {\r\n let justInCase = 0;\r\n\r\n while (true)\r\n {\r\n let beg = line.indexOf(WikiCommon.Tag_ExternalLink);\r\n\r\n if (beg == -1 || justInCase > 10)\r\n {\r\n break;\r\n }\r\n\r\n let txt = this.textBetweenBracket(line);\r\n let page = this.textBetweenParentheses(line);\r\n\r\n beg = line.indexOf(\"[\");\r\n page = page.substring(1); // Chop off the leading $\r\n\r\n let end = line.indexOf(\")\", beg);\r\n let link = `${txt}`;\r\n\r\n line = line.substring(0, beg) + link + line.substring(end + 1);\r\n justInCase++;\r\n }\r\n\r\n return line;\r\n }\r\n\r\n private imageExtract(line: string): void\r\n {\r\n let beg = line.indexOf(WikiCommon.Tag_AEPImage);\r\n\r\n if (beg != -1)\r\n {\r\n this.imageParse(beg, line);\r\n }\r\n }\r\n\r\n private async imageParse(beg, line)\r\n {\r\n let img;\r\n let url = this.wikiServ.buildUrl(\"image\");\r\n let endSpace = line.indexOf(\" \", beg + 1);\r\n let preSpace = line.indexOf(\")\", beg + 1);\r\n\r\n if (endSpace != -1 && endSpace < preSpace)\r\n {\r\n img = line.substring(beg + 3, endSpace);\r\n }\r\n else\r\n {\r\n img = line.substring(beg + 3, preSpace);\r\n }\r\n\r\n url += `/${img}`;\r\n\r\n this.holdImages.set(img, null);\r\n\r\n let test = await this.webClient\r\n .get(url, { responseType: \"blob\" })\r\n .pipe(map(val => this.sanitizer.bypassSecurityTrustUrl(URL.createObjectURL(val))))\r\n .toPromise();\r\n\r\n let downImg = test[\"changingThisBreaksApplicationSecurity\"];\r\n\r\n this.holdImages.set(img, downImg);\r\n\r\n setTimeout(() => this.fixImages(), 1000);\r\n }\r\n\r\n private fixImages()\r\n {\r\n for (let key of this.holdImages.keys())\r\n {\r\n let img = this.holdImages.get(key);\r\n\r\n this.wikiText = this.wikiText.replace(\"@\" + key, img);\r\n\r\n this.holdImages.delete(key);\r\n }\r\n }\r\n}","export default \"
          \\r\\n
          \";","// TODO: This is currently set up for end of the month, not sure what else it could be used for... more work to come?\r\n\r\nimport { Component, EventEmitter, forwardRef, Input, OnInit, Output, ViewChild } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\r\nimport { DateFormatter } from \"@app/shared/pipes/date-formatter.pipe\";\r\nimport { DateHelper } from \"@app/utils/date-helper\";\r\nimport { Util } from '@app/utils/util';\r\nimport { NgSelectComponent } from \"@ng-select/ng-select\";\r\n\r\n@Component({\r\n selector: \"year-month-selection\",\r\n styleUrls: [\"./year-month-selection.component.scss\"],\r\n templateUrl: \"./year-month-selection.component.html\",\r\n providers:\r\n [\r\n {\r\n multi: true,\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => YearMonthSelectionComponent)\r\n }\r\n ]\r\n})\r\nexport class YearMonthSelectionComponent implements ControlValueAccessor, OnInit\r\n{\r\n @ViewChild(\"selectYearMonth\")\r\n selectYearMonth: NgSelectComponent;\r\n\r\n @Input()\r\n clearable: boolean = false;\r\n\r\n @Input()\r\n autoSetFirst: boolean = true;\r\n\r\n @Input()\r\n valueFormat: string = DateFormatter.FormatAmericanDate;\r\n\r\n @Input()\r\n placeHolder: string = \"Select\";\r\n\r\n @Input()\r\n displayFormat: string = \"YYYY-MMMM\";\r\n\r\n @Input()\r\n countBackMonths: number = 13;\r\n\r\n @Input(\"value\")\r\n cycleValue: string;\r\n\r\n @Output()\r\n yearMonthChanged = new EventEmitter();\r\n\r\n get value()\r\n {\r\n return this.cycleValue;\r\n }\r\n\r\n set value(val)\r\n {\r\n this.cycleValue = val;\r\n\r\n this.onChange(val);\r\n this.onTouched();\r\n }\r\n\r\n public cycleMonths = [];\r\n\r\n onChange: any = () => { };\r\n onTouched: any = () => { };\r\n\r\n ngOnInit(): void\r\n {\r\n this.popMonths();\r\n }\r\n\r\n registerOnChange(execFun)\r\n {\r\n this.onChange = execFun;\r\n }\r\n\r\n registerOnTouched(execFun)\r\n {\r\n this.onTouched = execFun;\r\n }\r\n\r\n writeValue(inValue)\r\n {\r\n this.value = inValue;\r\n }\r\n\r\n public onValueChange(evtArg)\r\n {\r\n this.yearMonthChanged.emit(evtArg);\r\n }\r\n\r\n public popMonths(dateList = null)\r\n {\r\n let useDates = [];\r\n\r\n if (Util.isEmpty(dateList))\r\n {\r\n let now = new Date();\r\n\r\n for (let lp = 0; lp < this.countBackMonths; lp++)\r\n {\r\n let wDate = new Date(now.getFullYear(), -(lp), 1);\r\n\r\n useDates.push(wDate);\r\n }\r\n }\r\n else\r\n {\r\n for (let dude of dateList)\r\n {\r\n let hold = DateHelper.makeDate(dude);\r\n\r\n if (hold != null)\r\n {\r\n useDates.push(hold);\r\n }\r\n }\r\n }\r\n\r\n this.cycleMonths = [];\r\n\r\n for (let dude of useDates)\r\n {\r\n let dateVal = DateHelper.endOfMonthDate(dude);\r\n let amerEOM = DateHelper.formatDate(dateVal, this.valueFormat);\r\n\r\n this.cycleMonths.push(\r\n {\r\n date: amerEOM,\r\n label: DateHelper.formatDate(dateVal, this.displayFormat)\r\n });\r\n }\r\n\r\n if (this.autoSetFirst)\r\n {\r\n setTimeout(this.setFirst.bind(this), 500);\r\n }\r\n }\r\n\r\n private setFirst()\r\n {\r\n this.selectYearMonth.select(this.selectYearMonth.itemsList.items[0]);\r\n }\r\n}","export default \"\\r\\n\";","export default \".cycle-filter {\\n max-width: 10rem;\\n}\\n\";","import { HttpClient } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { FormBuilder, Validators } from \"@angular/forms\";\r\nimport { ApiService } from \"@app/data/api/api.service\";\r\nimport { NoteMod } from \"@app/data/notes/note.model\";\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class NotesService extends ApiService\r\n{\r\n public get editorForm()\r\n {\r\n let fb = new FormBuilder();\r\n let grp = fb.group(\r\n {\r\n uid: [],\r\n note: [, Validators.required],\r\n entityUID: [, Validators.required],\r\n isAEPOnly: [],\r\n entityType: [,Validators.required]\r\n });\r\n\r\n return grp;\r\n }\r\n\r\n constructor(httpClient: HttpClient)\r\n {\r\n super(httpClient, \"notes\");\r\n }\r\n}","import { Component, ElementRef, Input, OnInit, ViewChild } from \"@angular/core\";\r\nimport { AuthService, BaseComponent, Profile } from \"@app/data\";\r\nimport { EntityType } from \"@app/data/enums/entity-type.enum\";\r\nimport { NoteMod } from \"@app/data/notes/note.model\";\r\nimport { NotesService } from \"@app/data/notes/notes.service\";\r\nimport { CommonSettings } from \"@app/shared/common-settings\";\r\nimport { ConfirmationService, IConfirmationOptions } from \"@app/shared/confirmation/confirmation.service\";\r\nimport { Util } from \"@app/utils/util\";\r\nimport { NgbModal } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport clone from \"lodash-es/clone\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\n\r\n@Component({\r\n selector: \"notes-edit\",\r\n templateUrl: \"./notes-edit.html\"\r\n})\r\nexport class NotesEdit extends BaseComponent implements OnInit\r\n{\r\n @Input()\r\n entityUID: string;\r\n\r\n @Input()\r\n entityType: number;\r\n\r\n @ViewChild(\"noteDialog\")\r\n noteDialog: ElementRef;\r\n\r\n public user: Profile;\r\n\r\n constructor(\r\n toastrService: ToastrService,\r\n public modalService: NgbModal,\r\n private noteServ: NotesService,\r\n private authService: AuthService,\r\n private confirmService: ConfirmationService)\r\n {\r\n super(toastrService);\r\n\r\n this.dataForm = this.noteServ.editorForm;\r\n this.apiService = this.noteServ;\r\n this.modalService = modalService;\r\n }\r\n\r\n async ngOnInit()\r\n {\r\n this.user = await this.authService.getProfile$().toPromise();\r\n }\r\n\r\n public openAdd(): void\r\n {\r\n this.readOnly = false;\r\n\r\n this.open(this.noteDialog);\r\n this.resetForm();\r\n }\r\n\r\n public openEdit(note: NoteMod): void\r\n {\r\n note.note = Util.replaceAll(clone(note.note), \"
          \", \"\\n\");\r\n this.readOnly = !(note.isAbleToEdit);\r\n\r\n this.open(this.noteDialog, note);\r\n }\r\n\r\n public onClose(): void\r\n {\r\n if (!this.dataForm.dirty)\r\n {\r\n this.close();\r\n return;\r\n }\r\n\r\n let opts: IConfirmationOptions =\r\n {\r\n FunctionConfirm: () => this.close()\r\n };\r\n\r\n this.confirmService.YesNo(CommonSettings.DirtyFormConfirmationMessage, opts);\r\n }\r\n\r\n public onSave(): void\r\n {\r\n this.setValue(\"entityUID\", this.entityUID);\r\n this.setValue(\"entityType\", this.entityType);\r\n\r\n let sub = this.submit();\r\n\r\n if (sub)\r\n {\r\n sub.add(() => this.submitComplete());\r\n }\r\n }\r\n\r\n private submitComplete(): void\r\n {\r\n if (this.submitError)\r\n {\r\n return;\r\n }\r\n\r\n this.close();\r\n this.success(\"Note created\");\r\n }\r\n}","export default \"\\r\\n
          \\r\\n
          Note
          \\r\\n \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n AEP Admin only!\\r\\n
          \\r\\n \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n
          Note is required
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n
          \\r\\n
          \";","import { Component, Input, OnInit, ViewChild } from \"@angular/core\";\r\nimport { ApiResult, BaseComponent } from \"@app/data\";\r\nimport { NoteMod } from \"@app/data/notes/note.model\";\r\nimport { NotesService } from \"@app/data/notes/notes.service\";\r\nimport { NotesEdit } from \"@app/shared/notes/notes-edit/notes-edit\";\r\nimport { DateFormatter } from \"@app/shared/pipes/date-formatter.pipe\";\r\nimport { Util } from \"@app/utils/util\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\n\r\n@Component({\r\n selector: \"notes-list\",\r\n styleUrls: [\"./notes-list.scss\"],\r\n templateUrl: \"./notes-list.html\"\r\n})\r\nexport class NotesList extends BaseComponent implements OnInit\r\n{\r\n @Input()\r\n entityUID: string;\r\n\r\n @Input()\r\n entityType: number;\r\n\r\n @ViewChild(\"dialogNoteEdit\")\r\n dialogNoteEdit: NotesEdit;\r\n\r\n public readonly formatDT: string = DateFormatter.FormatDateTime;\r\n\r\n public notes: Array;\r\n\r\n constructor(\r\n toastrService: ToastrService,\r\n private noteServ: NotesService)\r\n {\r\n super(toastrService);\r\n\r\n this.apiService = this.noteServ;\r\n }\r\n\r\n ngOnInit(): void\r\n {\r\n this.refreshNotes();\r\n }\r\n\r\n public onAdd()\r\n {\r\n this.dialogNoteEdit.openAdd();\r\n }\r\n\r\n public onNoteClick(note: NoteMod): void\r\n {\r\n this.dialogNoteEdit.openEdit(note);\r\n }\r\n\r\n public refreshNotes()\r\n {\r\n let filt =\r\n {\r\n entityUID: this.entityUID,\r\n entityType: this.entityType\r\n };\r\n\r\n this.noteServ.postGetList(\"list\", filt).subscribe(\r\n {\r\n next: (retRes) => this.loadNotes(retRes)\r\n });\r\n }\r\n\r\n private loadNotes(notes: ApiResult): void\r\n {\r\n this.notes = notes.results;\r\n\r\n for (let item of this.notes)\r\n {\r\n item.note = Util.replaceAll(item.note, \"\\n\", \"
          \");\r\n }\r\n }\r\n}","export default \"\\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          {{ item.createdName }}
          \\r\\n
          {{ item.createdDate | DateFormatter: formatDT }}
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n\";","export default \".note {\\n border: 1px solid #ccc;\\n display: -ms-flexbox;\\n display: flex;\\n border-radius: .25rem;\\n margin-bottom: 1.5rem;\\n -ms-flex-direction: column;\\n flex-direction: column;\\n}\\n\\n.header {\\n display: -ms-flexbox;\\n display: flex;\\n padding: .25rem;\\n border-bottom: 1px solid #ccc;\\n background-color: #eee;\\n}\\n\\n.header .modified-date {\\n text-align: right;\\n}\\n\\n.guts {\\n height: 7rem;\\n padding: .5rem;\\n overflow-y: scroll;\\n}\\n\\n.guts:hover {\\n cursor: pointer;\\n background-color: rgba(33, 150, 243, 0.1);\\n}\\n\";","import { HttpClient } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { FormBuilder, Validators } from \"@angular/forms\";\r\nimport { ApiService } from \"../api/api.service\";\r\nimport { ShipmentProduct } from \"./shipment-product\";\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class ShipmentProductService extends ApiService\r\n{\r\n public get editorForm()\r\n {\r\n let form = new FormBuilder();\r\n let grpFields = form.group(\r\n {\r\n uid: [],\r\n statusType: [],\r\n shipmentDate: [Validators.required],\r\n transactionUID: [],\r\n shipmentMethodID: [],\r\n shippingInstructions: [],\r\n aesInternalTransactionNumber: []\r\n });\r\n\r\n return grpFields;\r\n }\r\n\r\n constructor(httpClient: HttpClient)\r\n {\r\n super(httpClient, \"shipmentproduct\");\r\n }\r\n}","import { HttpClient } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { FormBuilder } from \"@angular/forms\";\r\nimport { ApiService } from \"../api/api.service\";\r\nimport { ShipmentCommercialInvoice } from \"./shipment-commercial-invoice.model\";\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class ShipmentCommercialInvoiceService extends ApiService\r\n{\r\n public get editorForm()\r\n {\r\n let form = new FormBuilder();\r\n let grpFields = form.group(\r\n {\r\n uid: [],\r\n comments: [],\r\n invoiceDate: [],\r\n paymentTerm: [],\r\n otherCharge1: [],\r\n otherCharge2: [],\r\n invoiceNumber: [],\r\n shippingCharge: [],\r\n handlingCharge: [],\r\n shipmentNumber: [],\r\n otherCharge1Description: [],\r\n otherCharge2Description: []\r\n });\r\n\r\n return grpFields;\r\n }\r\n\r\n constructor(httpClient: HttpClient)\r\n {\r\n super(httpClient, \"shipment-commercial-invoice\");\r\n }\r\n}","import { Transaction } from \"@app/data\";\r\nimport { ShipmentProduct } from \"@app/data/shipment-product/shipment-product\";\r\nimport { ShipmentCommercialInvoice } from \"@app/data/shipment/shipment-commercial-invoice.model\";\r\nimport { PDFBuilder, WordWrapMethods } from \"@app/shared/reporting/pdfBuilder\";\r\nimport { ContactFormatter } from \"@app/utils/contact-formatter\";\r\nimport { DateHelper } from \"@app/utils/date-helper\";\r\nimport { Util } from \"@app/utils/util\";\r\n\r\nexport class CommercialInvoiceGenerator\r\n{\r\n public logo;\r\n public products: Array;\r\n public orderDetails: Transaction;\r\n public commercialInvoice: ShipmentCommercialInvoice;\r\n\r\n private readonly pageTitle = \"Commercial Invoice\";\r\n private readonly heightContact = 110;\r\n private readonly heightContactName = 30;\r\n private readonly heightProductHeader = 20;\r\n\r\n private docPDF: PDFBuilder;\r\n private contBuild: ContactFormatter;\r\n private pageNumber: number;\r\n\r\n constructor()\r\n {\r\n this.contBuild = new ContactFormatter();\r\n this.contBuild.delimiter = \"\\n\";\r\n }\r\n\r\n public generate()\r\n {\r\n this.docPDF = new PDFBuilder();\r\n this.docPDF.fontReset();\r\n this.docPDF.addCursiveFont();\r\n\r\n let currY = this.pageHeader();\r\n let forth = this.docPDF.pageWidth() / 4;\r\n let workH = 0;\r\n\r\n workH = 30;\r\n\r\n this.docPDF.dataBox(0, currY, forth, workH, \"Order #\", this.orderDetails.poNumber);\r\n this.docPDF.dataBox(forth, currY, forth, workH, \"Shipping Method\", this.commercialInvoice.shipment?.shipmentMethod?.name);\r\n this.docPDF.dataBox(forth * 2, currY, forth, workH, \"Payment Terms\", this.commercialInvoice.paymentTerm);\r\n this.docPDF.dataBox(forth * 3, currY, forth, workH, \"Shipment #\", this.commercialInvoice.shipmentNumber);\r\n\r\n currY += workH;\r\n workH = 80;\r\n\r\n this.finePrint(0, currY, PDFBuilder.WidthMax, workH, \"These items are controlled by the U.S. government and authorized for export only to the country of ultimate destination for use by the ultimate consignee or end-user(s) herein identified. They may not be resold, transferred, or otherwise disposed of, to any other country or to any person other than the authorized ultimate consignee or end-user(s), either in their original form or after being incorporated into other items, without first obtaining approval from the U.S. government or as otherwise authorized by U.S. law and regulations.\\n\\nThe items in this shipment may not be sold or transferred to individuals identified on the Department of Treasury, Office of Foreign Assets Controls(OFAC) Specially Designated Nationals(SDN) List with the bracketed suffixes[SDNT] or[SDNTK].The SDN List is available at: https://www.treasury.gov/resource-center/sanctions/SDN-List/Pages/sdn_data.aspx.\");\r\n\r\n currY += workH;\r\n\r\n if (!Util.isEmpty(this.commercialInvoice.comments))\r\n {\r\n workH = 60;\r\n\r\n this.docPDF.dataBox(0, currY, PDFBuilder.WidthMax, workH, \"Comments\", this.commercialInvoice.comments, { wrap: WordWrapMethods.Wrap });\r\n\r\n currY += workH;\r\n }\r\n\r\n this.outProducts(currY);\r\n\r\n this.docPDF.putTotalPages(PDFBuilder.PageExpression);\r\n\r\n return this.docPDF.output(PDFBuilder.Output_Blob);\r\n }\r\n\r\n private pageHeader(firstPage: boolean = true, addProductHeader: boolean = true): number\r\n {\r\n let currY = 0;\r\n let workH = 35;\r\n let third = this.docPDF.pageWidth() / 3;\r\n let noBord = { border: false };\r\n let dateOpts =\r\n {\r\n align: PDFBuilder.Align_Right,\r\n border: false,\r\n boxPadding: false\r\n }\r\n\r\n if (firstPage)\r\n {\r\n this.pageNumber = 1;\r\n }\r\n else\r\n {\r\n this.docPDF.addPage();\r\n this.pageNumber++;\r\n }\r\n\r\n this.docPDF.fontSet(14, PDFBuilder.FontWeight_Bold);\r\n\r\n let maxX = this.docPDF.pageWidth();\r\n\r\n this.docPDF.text(this.pageTitle, maxX / 2, this.docPDF.pageMargins.top, { align: PDFBuilder.Align_Center });\r\n this.docPDF.fontReset();\r\n\r\n if (this.logo)\r\n {\r\n this.docPDF.addImage(this.logo, PDFBuilder.ImageFormatJPEG, this.docPDF.pageMargins.left, this.docPDF.pageMargins.top, 0, 50);\r\n }\r\n\r\n // Can't right align cause the \"totalPages\" isn't taken care of until final rendering\r\n this.docPDF.text(`Page ${this.pageNumber} of ${PDFBuilder.PageExpression}`, maxX - 40, this.docPDF.pageMargins.top);\r\n\r\n currY = 50;\r\n\r\n this.docPDF.dataBox(0, currY, third, workH, \"Invoice #\", this.commercialInvoice.invoiceNumber, noBord);\r\n this.docPDF.dataBox(third * 2, currY, third, workH, \"Invoice Date\", DateHelper.formatDate(this.commercialInvoice.invoiceDate), dateOpts);\r\n\r\n currY += workH;\r\n this.contBuild.contactData = this.commercialInvoice;\r\n\r\n workH = this.makeShipperBox(currY);\r\n workH = this.makeReceiverBox(currY);\r\n\r\n currY += workH;\r\n\r\n if (!firstPage && addProductHeader)\r\n {\r\n currY = this.makeProductHeader(currY);\r\n }\r\n\r\n return currY;\r\n }\r\n\r\n private makeShipperBox(posY: number): number\r\n {\r\n let title = \"Exporter / Shipper\";\r\n let width = this.docPDF.pageWidth() / 2;\r\n\r\n if (this.pageNumber != 1)\r\n {\r\n this.docPDF.dataBox(0, posY, width, this.heightContactName, title, this.commercialInvoice.companyName);\r\n\r\n return this.heightContactName;\r\n }\r\n\r\n this.contBuild.fieldPrefix = \"customer\";\r\n\r\n let merchData = this.commercialInvoice.companyName + this.contBuild.delimiter + this.contBuild.getContact();\r\n\r\n this.docPDF.dataBox(0, posY, width, this.heightContact, title, merchData, { wrap: WordWrapMethods.Wrap });\r\n\r\n let myY = (posY + this.heightContact) - 30;\r\n\r\n this.docPDF.dataBox(0, myY, width, 30, \"Tel\", this.commercialInvoice.customerPhone, { border: false });\r\n\r\n return this.heightContact;\r\n }\r\n\r\n private makeReceiverBox(posY: number): number\r\n {\r\n let half = this.docPDF.pageWidth() / 2;\r\n let title = \"Ship to / Consignee\";\r\n\r\n if (this.pageNumber != 1)\r\n {\r\n this.docPDF.dataBox(half, posY, half, this.heightContactName, title, this.commercialInvoice.purchaserName);\r\n\r\n return this.heightContactName;\r\n }\r\n\r\n this.contBuild.fieldPrefix = \"purchaser\";\r\n\r\n this.docPDF.dataBox(half, posY, half, this.heightContact, title, this.contBuild.getContact(), { wrap: WordWrapMethods.Wrap });\r\n\r\n let myY = (posY + this.heightContact) - 30;\r\n let phonW = 85;\r\n let mailW = (half - phonW);\r\n let phonX = (half * 2) - phonW;\r\n\r\n this.docPDF.dataBox(half, myY, mailW, 30, \"Email\", this.commercialInvoice.purchaserEmailAddress, { border: false });\r\n this.docPDF.dataBox(phonX, myY, phonW, 30, \"Tel\", this.commercialInvoice.purchaserPhone, { border: false });\r\n\r\n return this.heightContact;\r\n }\r\n\r\n private finePrint(posX: number, posY: number, width: number, height: number, text: string)\r\n {\r\n let rect = this.docPDF.drawBox(posX, posY, width, height);\r\n let broken = this.docPDF.splitTextToSize(text, rect.w - 2);\r\n\r\n this.docPDF.outText(rect.x, rect.y, broken);\r\n }\r\n\r\n private outProducts(posY: number): void\r\n {\r\n let maxY = this.docPDF.pageHeight();\r\n let posX = this.docPDF.pageMargins.left + this.docPDF.Box_Padding;\r\n let currY = this.makeProductHeader(posY);\r\n let width = posX + this.docPDF.Box_Padding + (this.docPDF.pageWidth() / 7);\r\n let workH = 10;\r\n let total = 0;\r\n let lineSize = 22;\r\n\r\n for (let prod of this.products)\r\n {\r\n this.docPDF.drawBox(0, currY, PDFBuilder.DrawTo_End, lineSize);\r\n\r\n let amt = Util.roundTo(prod.transactionProduct.amount, 2);\r\n let hts = prod.productCountry?.importHTS;\r\n let lineY = (currY + 2 + this.docPDF.pageMargins.top);\r\n let amtExt = Util.roundTo(prod.transactionProduct.extendedAmount, 2);\r\n\r\n if (!Util.isEmpty(hts))\r\n {\r\n hts = hts.substring(0, 7);\r\n }\r\n\r\n this.docPDF.outText(posX, lineY, prod.transactionProduct.partNumber);\r\n this.docPDF.outText(width, lineY, hts);\r\n this.docPDF.outText(width * 2, lineY, prod.transactionProduct.licenseNumber);\r\n this.docPDF.outText(width * 3, lineY, prod.originCountry?.code);\r\n this.docPDF.outText(width * 4, lineY, prod.quantityShipped, { align: PDFBuilder.Align_Right });\r\n this.docPDF.outText(width * 5, lineY, \"$\" + amt, { align: PDFBuilder.Align_Right, width: width });\r\n this.docPDF.outText(width * 6, lineY, \"$\" + amtExt, { align: PDFBuilder.Align_Right, width: width });\r\n\r\n lineY += workH;\r\n total += prod.transactionProduct.extendedAmount;\r\n\r\n this.docPDF.setBold();\r\n this.docPDF.outText(posX, lineY, prod.transactionProduct.customerDescription);\r\n this.docPDF.setBold(false);\r\n\r\n currY += lineSize;\r\n\r\n if ((currY + lineSize) > maxY)\r\n {\r\n currY = this.pageHeader(false);\r\n }\r\n }\r\n\r\n this.outTotals(currY, total);\r\n }\r\n\r\n private makeProductHeader(posY: number): number\r\n {\r\n let currY = posY + 5;\r\n let width = this.docPDF.pageWidth() / 7;\r\n\r\n this.docPDF.fontSet(this.docPDF.Font_DefaultSize - 2);\r\n this.docPDF.setTextColor(this.docPDF.Color_Label);\r\n\r\n this.headerBox(0, currY, width, \"Part #\\nDescription\");\r\n this.headerBox(width, currY, width, \"Harmonized Tariff\\nSchedule (HTS)\");\r\n this.headerBox(width * 2, currY, width, \"Export License / Exception\");\r\n this.headerBox(width * 3, currY, width, \"Country of Origin\");\r\n this.headerBox(width * 4, currY, width, \"Quantity\");\r\n this.headerBox(width * 5, currY, width, \"Unit Price (USD)\");\r\n this.headerBox(width * 6, currY, width, \"Ext Price (USD)\");\r\n\r\n this.docPDF.setTextColor(this.docPDF.Color_Data);\r\n this.docPDF.fontReset();\r\n\r\n return (currY + this.heightProductHeader);\r\n }\r\n\r\n private headerBox(posX: number, posY: number, width: number, label: string): void\r\n {\r\n let rect = this.docPDF.drawBox(posX, posY, width, this.heightProductHeader);\r\n\r\n rect.x += (rect.w / 2);\r\n\r\n this.docPDF.text(label, rect.x, rect.y, { baseline: PDFBuilder.Baseline_Top, align: PDFBuilder.Align_Center });\r\n }\r\n\r\n private outTotals(posY: number, total: number): void\r\n {\r\n let height: number = 50;\r\n\r\n if (!Util.isEmpty(this.commercialInvoice.otherCharge1))\r\n {\r\n height += 10;\r\n }\r\n\r\n if (!Util.isEmpty(this.commercialInvoice.otherCharge2))\r\n {\r\n height += 10;\r\n }\r\n\r\n if (posY + height > this.docPDF.pageHeight())\r\n {\r\n this.pageHeader(false, false);\r\n }\r\n\r\n let val = \"$ \" + Util.roundTo(total, 2);\r\n let maxX = this.docPDF.pageWidth();\r\n let labX = maxX - 80;\r\n let valX = maxX - 10;\r\n let currY = this.docPDF.pageHeight() - (height + this.docPDF.pageMargins.bottom);\r\n let rectPos = this.docPDF.drawBox(0, currY, maxX, height);\r\n\r\n currY = rectPos.y;\r\n\r\n this.docPDF.outText(labX, currY, \"Sub Total\", { align: PDFBuilder.Align_Right });\r\n this.docPDF.outText(valX, currY, val, { align: PDFBuilder.Align_Right });\r\n\r\n val = \"$ \" + Util.roundTo(this.commercialInvoice.shippingCharge, 2);\r\n currY += 10;\r\n total += this.commercialInvoice.shippingCharge;\r\n\r\n this.docPDF.outText(labX, currY, \"Shipping\", { align: PDFBuilder.Align_Right });\r\n this.docPDF.outText(valX, currY, val, { align: PDFBuilder.Align_Right });\r\n\r\n val = \"$ \" + Util.roundTo(this.commercialInvoice.handlingCharge, 2);\r\n currY += 10;\r\n total += this.commercialInvoice.handlingCharge;\r\n\r\n this.docPDF.outText(labX, currY, \"Handling/Processing\", { align: PDFBuilder.Align_Right });\r\n this.docPDF.outText(valX, currY, val, { align: PDFBuilder.Align_Right });\r\n\r\n if (!Util.isEmpty(this.commercialInvoice.otherCharge1))\r\n {\r\n val = \"$ \" + Util.roundTo(this.commercialInvoice.otherCharge1, 2);\r\n currY += 10;\r\n total += this.commercialInvoice.otherCharge1;\r\n\r\n this.docPDF.outText(labX, currY, this.commercialInvoice.otherCharge1Description, { align: PDFBuilder.Align_Right });\r\n this.docPDF.outText(valX, currY, val, { align: PDFBuilder.Align_Right });\r\n }\r\n\r\n if (!Util.isEmpty(this.commercialInvoice.otherCharge2))\r\n {\r\n val = \"$ \" + Util.roundTo(this.commercialInvoice.otherCharge2, 2);\r\n currY += 10;\r\n total += this.commercialInvoice.otherCharge2;\r\n\r\n this.docPDF.outText(labX, currY, this.commercialInvoice.otherCharge2Description, { align: PDFBuilder.Align_Right });\r\n this.docPDF.outText(valX, currY, val, { align: PDFBuilder.Align_Right });\r\n }\r\n\r\n val = \"$ \" + Util.roundTo(total, 2);\r\n maxX -= this.docPDF.Box_Padding;\r\n currY += 10;\r\n\r\n this.docPDF.line(this.docPDF.pageMargins.left * 2, currY, maxX , currY);\r\n\r\n currY += 2;\r\n\r\n this.docPDF.outText(labX, currY, \"Total Invoice\", { align: PDFBuilder.Align_Right });\r\n this.docPDF.outText(valX, currY, val, { align: PDFBuilder.Align_Right });\r\n }\r\n}","import { Component, ElementRef, Input, ViewChild } from \"@angular/core\";\r\nimport { BaseComponent, CustomerService, Transaction } from \"@app/data\";\r\nimport { ImageRequest } from \"@app/data/misc/image-request.model\";\r\nimport { ShipmentProductService } from '@app/data/shipment-product/shipment-product.service';\r\nimport { Shipment } from \"@app/data/shipment/shipment\";\r\nimport { ShipmentCommercialInvoice } from \"@app/data/shipment/shipment-commercial-invoice.model\";\r\nimport { ShipmentCommercialInvoiceService } from \"@app/data/shipment/shipment-commercial-invoice.service\";\r\nimport { CommonSettings } from '@app/shared/common-settings';\r\nimport { ConfirmationService, IConfirmationOptions } from \"@app/shared/confirmation/confirmation.service\";\r\nimport { DocumentPreviewService } from \"@app/shared/document-preview/document-preview.service\";\r\nimport { DateFormatter } from \"@app/shared/pipes/date-formatter.pipe\";\r\nimport { DateHelper } from \"@app/utils/date-helper\";\r\nimport { Util } from '@app/utils/util';\r\nimport { NgbModal } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\nimport { CommercialInvoiceGenerator } from \"./commercial-invoice.generator\";\r\n\r\n@Component({\r\n selector: \"commercial-invoice\",\r\n templateUrl: \"./commercial-invoice.html\"\r\n})\r\nexport class CommericalInvoiceComponent extends BaseComponent\r\n{\r\n @Input()\r\n orderDetails: Transaction;\r\n\r\n @ViewChild(\"dialogInvoice\")\r\n dialogInvoice: ElementRef;\r\n\r\n public shipmentRec: Shipment;\r\n\r\n private genny: CommercialInvoiceGenerator;\r\n\r\n constructor(toastrService: ToastrService,\r\n private custServ: CustomerService,\r\n private modalServ: NgbModal,\r\n private invoiceServ: ShipmentCommercialInvoiceService,\r\n private confirmService: ConfirmationService,\r\n private docViewService: DocumentPreviewService,\r\n private shipProdService: ShipmentProductService)\r\n {\r\n super(toastrService);\r\n\r\n this.title = \"Commercial Invoice\";\r\n this.dataForm = this.invoiceServ.editorForm;\r\n this.apiService = this.shipProdService;\r\n this.modalService = modalServ;\r\n }\r\n\r\n public openInvoice(shipmentRec: Shipment): void\r\n {\r\n this.genny = new CommercialInvoiceGenerator();\r\n this.shipmentRec = shipmentRec;\r\n\r\n this.open(this.dialogInvoice);\r\n\r\n let filt;\r\n\r\n if (Util.isEmpty(shipmentRec.shipmentCommercialInvoice?.uid))\r\n {\r\n filt = { shipmentUID: this.shipmentRec.uid };\r\n }\r\n else\r\n {\r\n filt = { uid: shipmentRec.shipmentCommercialInvoice.uid };\r\n }\r\n\r\n this.invoiceServ.detail(filt).subscribe(\r\n retRes => this.loadDetails(retRes),\r\n errRes => this.error(errRes));\r\n }\r\n\r\n public onClose()\r\n {\r\n if (!this.dataForm.dirty)\r\n {\r\n this.close();\r\n return;\r\n }\r\n\r\n let opts: IConfirmationOptions =\r\n {\r\n FunctionConfirm: () => this.close()\r\n };\r\n\r\n this.confirmService.YesNo(CommonSettings.DirtyFormConfirmationMessage, opts);\r\n }\r\n\r\n public onGenerate()\r\n {\r\n this.blockOn(\"Generating...\");\r\n\r\n this.shipProdService.postGetList(\"list\", { shipmentUID: this.shipmentRec.uid }).subscribe(\r\n retRes => this.loadProducts(retRes),\r\n errRes => this.gotsError(errRes));\r\n }\r\n\r\n private loadDetails(retRes): void\r\n {\r\n this.data = retRes;\r\n this.patchValue();\r\n\r\n if (Util.isEmpty(retRes.invoiceDate))\r\n {\r\n this.setValue(\"invoiceDate\", DateHelper.makeNGBDate(DateFormatter.Now));\r\n }\r\n }\r\n\r\n private loadProducts(retRes): void\r\n {\r\n this.data = { ...this.data, ...this.dataForm.value };\r\n\r\n this.genny.products = retRes.results;\r\n this.genny.orderDetails = this.orderDetails;\r\n this.genny.commercialInvoice = this.data;\r\n\r\n this.saveInvoice();\r\n\r\n if (Util.isEmpty(this.data.customer?.logoImageURL))\r\n {\r\n this.makePDF(null);\r\n return;\r\n }\r\n\r\n let req = new ImageRequest(this.data.customer.logoImageURL, 200);\r\n let sub = this.custServ.getImage(req).subscribe(retRes =>\r\n {\r\n this.genny.logo = new Image();\r\n this.genny.logo.src = retRes.url;\r\n });\r\n\r\n sub.add(() => this.makePDF(retRes));\r\n }\r\n\r\n private makePDF(retRes: any): void\r\n {\r\n let pdfData = this.genny.generate();\r\n\r\n this.docViewService.openPDF(pdfData, this.title);\r\n this.blockOff();\r\n }\r\n\r\n private saveInvoice(): void\r\n {\r\n let saveMe = this.submitDatesStore(this.data);\r\n\r\n this.invoiceServ.save(saveMe).subscribe(\r\n retRes => this.saveComplete(retRes),\r\n errRes => this.error(errRes));\r\n }\r\n\r\n private saveComplete(retRes)\r\n {\r\n this.success(\"Commercial Invoice data saved\");\r\n\r\n this.submiteDatesReset(retRes);\r\n\r\n this.data = retRes;\r\n this.patchValue();\r\n\r\n if (this.update)\r\n {\r\n this.update.emit();\r\n }\r\n }\r\n\r\n private gotsError(message: any): void\r\n {\r\n this.blockOff();\r\n this.error(message);\r\n }\r\n}","export default \"\\r\\n \\r\\n
          \\r\\n
          Commerical 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
          Shipment #:{{ shipmentRec?.shipmentNumber }}
          Date:{{ shipmentRec?.shipmentDate | DateFormatter }}
          Shipped by:{{ shipmentRec?.freight?.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
          Invoice date is required
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n
          \\r\\n \\r\\n
          \\r\\n
          Invoice date is required
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n
          \\r\\n \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n
          \\r\\n \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n
          \\r\\n \\r\\n \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n
          \\r\\n \\r\\n \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\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 { GridHelpers } from '@app/shared/ag-grid-helpers/grid-helper';\r\nimport { Util } from \"@app/utils/util\";\r\nimport { GridColumn } from \"./grid-column.model\";\r\nimport { GridFilterCondiction } from './grid-filter.model';\r\n\r\nexport class GridColumnDocumentType extends GridColumn\r\n{\r\n constructor(renderField: string)\r\n {\r\n super(renderField, \"Type\");\r\n\r\n let opts =\r\n {\r\n trimInput: true,\r\n valueGetter: this.getValue,\r\n textCustomComparator: this.testType,\r\n suppressAndOrCondition: true,\r\n };\r\n\r\n this.maxWidth = 300;\r\n this.cellRenderer = this.docCellRenderer.bind(this);\r\n this.filterParams = Object.assign(GridHelpers.FilterDefaultAction, opts);\r\n }\r\n\r\n private docCellRenderer(params: any)\r\n {\r\n let data = params.data;\r\n\r\n if (!Util.isEmpty(data.documentOther))\r\n {\r\n return `
          ${data.documentOther}
          `;\r\n }\r\n\r\n if (Util.isEmpty(data.documentType?.name))\r\n {\r\n return Util.DOM_Space;\r\n }\r\n\r\n return data.documentType.name;\r\n }\r\n\r\n private getValue(params)\r\n {\r\n return params.data.documentOther || params.data.documentType.name;\r\n }\r\n\r\n private testType(condition: string, data: string, findMe: string)\r\n {\r\n if (Util.isEmpty(findMe))\r\n {\r\n return true;\r\n }\r\n\r\n switch (condition)\r\n {\r\n case GridFilterCondiction.equals:\r\n return findMe == data;\r\n\r\n case GridFilterCondiction.notEqual:\r\n return findMe != data;\r\n\r\n case GridFilterCondiction.contains:\r\n return data.indexOf(findMe) > -1;\r\n\r\n case GridFilterCondiction.notContains:\r\n return data.indexOf(findMe) == -1;\r\n\r\n case GridFilterCondiction.startsWith:\r\n return findMe.startsWith(data);\r\n\r\n case GridFilterCondiction.endsWith:\r\n return findMe.endsWith(data);\r\n\r\n default:\r\n return false;\r\n }\r\n }\r\n}","import { Component, Input, OnInit, ViewChild } from \"@angular/core\";\r\nimport { AuthService, ProfileType, TransactionDocument } from \"@app/data\";\r\nimport { EntityType } from \"@app/data/enums/entity-type.enum\";\r\nimport { TransactionDocumentService } from \"@app/data/transaction-document/transaction-document.service\";\r\nimport { GridBase } from \"@app/shared/ag-grid-helpers/ag-grid-base\";\r\nimport { GridHelpers } from \"@app/shared/ag-grid-helpers/grid-helper\";\r\nimport { GridColumnCustom } from \"@app/shared/ag-grid-helpers/models/grid-column-custom.model\";\r\nimport { GridColumnDocumentType } from \"@app/shared/ag-grid-helpers/models/grid-column-document-type\";\r\nimport { GridColumnIcon } from \"@app/shared/ag-grid-helpers/models/grid-column-icon.model\";\r\nimport { GridColumnStatus } from '@app/shared/ag-grid-helpers/models/grid-column-status';\r\nimport { GridColumn, GridColumnType } from \"@app/shared/ag-grid-helpers/models/grid-column.model\";\r\nimport { ConfirmationService, IConfirmationOptions } from \"@app/shared/confirmation/confirmation.service\";\r\nimport { DocumentPreviewService } from \"@app/shared/document-preview/document-preview.service\";\r\nimport { DocumentCommon } from \"@app/shared/documents/document-common\";\r\nimport { DocumentEditComponent } from \"@app/shared/documents/document-edit/document-edit.component\";\r\nimport { OrderDataHelper } from '@app/shared/orders/order-data.helper';\r\nimport { NgbModal } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { FileSaverService } from \"ngx-filesaver\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\n\r\n@Component({\r\n selector: \"order-document-list\",\r\n templateUrl: \"./order-document-list.component.html\"\r\n})\r\nexport class OrderDocumentListComponent extends GridBase implements OnInit\r\n{\r\n @Input()\r\n documentEditType: number = DocumentEditComponent.EditType_Order;\r\n\r\n @ViewChild(\"dialogDoc\")\r\n dialogDoc: DocumentEditComponent;\r\n\r\n public readonly noteEntityType = EntityType.OrderDocument;\r\n\r\n public orderDetails;\r\n public canAddDocument: boolean = true;\r\n\r\n constructor(\r\n toastrService: ToastrService,\r\n public modalService: NgbModal,\r\n public confirmService: ConfirmationService,\r\n public transactionDocServ: TransactionDocumentService,\r\n private authService: AuthService,\r\n private docViewService: DocumentPreviewService,\r\n private fileSaverService: FileSaverService)\r\n {\r\n super(toastrService, transactionDocServ);\r\n\r\n this.title = \"Order Documents\";\r\n this.setupGrid();\r\n }\r\n\r\n async ngOnInit()\r\n {\r\n this.orderDetails = this.data;\r\n\r\n this.canAddDocument = this.documentEditType == DocumentEditComponent.EditType_Manual || this.transactionDocServ.canUploadDocument(this.orderDetails);\r\n }\r\n\r\n public onMyGridReady(evtArg)\r\n {\r\n this.filterAdd(\"transactionUID\", this.orderDetails.uid);\r\n\r\n this.onGridReady(evtArg);\r\n }\r\n\r\n public onAdd()\r\n {\r\n this.dialogDoc.openAdd();\r\n }\r\n\r\n public onRefresh()\r\n {\r\n this.gridRefresh();\r\n\r\n if (this.authService.profile.profileType != ProfileType.admin && this.authService.profile.profileType != ProfileType.customer)\r\n {\r\n this.success(\"Document has been submitted for approval\");\r\n }\r\n }\r\n\r\n private setupGrid()\r\n {\r\n let gridIcons =\r\n [\r\n GridHelpers.MakeEditIcon(this.onEdit.bind(this), this.canEdit),\r\n GridHelpers.MakeDeleteIcon(this.onDelete.bind(this), this.canDelete),\r\n GridHelpers.MakeDownloadIcon(this.onDownload.bind(this)),\r\n GridHelpers.MakeViewIcon(this.onViewDoc.bind(this))\r\n ];\r\n\r\n this.storageKey = \"OrderDocumentList\";\r\n this.addColumn(new GridColumnStatus(DocumentCommon.DocumentStatuses));\r\n this.addColumn(new GridColumnCustom(\"name\", \"Name\", { maxWidth: 300 }));\r\n this.addColumn(new GridColumnDocumentType(\"documentType\"));\r\n this.addColumn(new GridColumn(\"importPermit\", \"Import Permit\"));\r\n this.addColumn(new GridColumnCustom(\"issuedBy\", \"Issued By\", { maxWidth: 200 }));\r\n this.addColumn(new GridColumn(\"issuedDate\", \"Issued\", GridColumnType.Date));\r\n this.addColumn(new GridColumn(\"expirationDate\", \"Expiration\", GridColumnType.Date));\r\n this.addColumn(new GridColumnIcon(gridIcons));\r\n\r\n this.rowDoubleClick(this.onEdit.bind(this));\r\n }\r\n\r\n private onViewDoc(agData: any): void\r\n {\r\n let path = this.transactionDocServ.buildUrl(\"download-pdf\");\r\n let fileName = `${path}?fileNameUID=${agData.fileNameUID}`;\r\n\r\n this.docViewService.openConvert(fileName, this.title);\r\n }\r\n\r\n public canEdit(doc: TransactionDocument): boolean\r\n {\r\n return (!doc.isDocumentReadOnly && OrderDataHelper.userRole == ProfileType.admin);\r\n }\r\n\r\n private onEdit(agData: any)\r\n {\r\n this.dialogDoc.openEdit(agData);\r\n }\r\n\r\n public canDelete(doc: TransactionDocument): boolean\r\n {\r\n return (!doc.isDocumentReadOnly && OrderDataHelper.userRole == ProfileType.admin);\r\n }\r\n\r\n private onDelete(selDoc: any)\r\n {\r\n this.dataForm = this.makeForm(selDoc);\r\n\r\n let opts: IConfirmationOptions =\r\n {\r\n FunctionConfirm: () => this.deleteIt()\r\n };\r\n\r\n this.confirmService.Delete(`Are you sure you want to delete ${selDoc.name}?`, opts);\r\n }\r\n\r\n private deleteIt()\r\n {\r\n this.delete().add(() => this.gridRefresh());\r\n }\r\n\r\n private onDownload(agData: any)\r\n {\r\n this.transactionDocServ.getFile(\"download\", agData.fileNameUID).subscribe(\r\n retRes =>\r\n {\r\n this.fileSaverService.save(retRes, agData.fileName);\r\n },\r\n errRes => { this.error(\"Failed to download document\"); }\r\n );\r\n }\r\n}","export default \"
          \\r\\n \\r\\n \\r\\n \\r\\n
          \\r\\n\";","export enum ShipmentProductStatusType\r\n{\r\n Deleted = -2,\r\n Active = 1,\r\n Pending = 2,\r\n ReadyToShip = 3,\r\n Complete = 4,\r\n New = 7\r\n}","import { HttpClient } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { FormBuilder, Validators } from \"@angular/forms\";\r\nimport { ApiService } from \"../api/api.service\";\r\nimport { Shipment } from \"./shipment\";\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class ShipmentService extends ApiService\r\n{\r\n public get editorForm()\r\n {\r\n let form = new FormBuilder();\r\n let grpFields = form.group(\r\n {\r\n uid: [],\r\n comment: [],\r\n freightUID: [],\r\n statusType: [],\r\n shipmentDate: [Validators.required],\r\n shipmentNumber: [],\r\n trackingNumber: [],\r\n transactionUID: [],\r\n shipmentMethodUID: [],\r\n shippingInstructions: [],\r\n aesInternalTransactionNumber: []\r\n });\r\n\r\n return grpFields;\r\n }\r\n\r\n constructor(httpClient: HttpClient)\r\n {\r\n super(httpClient, \"shipment\");\r\n }\r\n\r\n public saveStatus(shipmentUID, status: number)\r\n {\r\n return this.save({ uid: shipmentUID, statusType: status });\r\n }\r\n}","import { Component, OnInit, ViewChild, ViewEncapsulation } from \"@angular/core\";\r\nimport { ProductService, ProfileType, Transaction, TransactionProduct, TransactionService } from \"@app/data\";\r\nimport { OrderProductStatusType } from \"@app/data/enums/order-product-status-type.enum\";\r\nimport { OrderStatusType } from \"@app/data/enums/order-status-type.enum\";\r\nimport { OrderCommon } from \"@app/data/orders/order-common\";\r\nimport { ShipmentService } from \"@app/data/shipment/shipment.service\";\r\nimport { TransactionProductService } from \"@app/data/transaction-product/transaction-product.service\";\r\nimport { GridBase } from \"@app/shared/ag-grid-helpers/ag-grid-base\";\r\nimport { GridCellImage } from \"@app/shared/ag-grid-helpers/models/grid-cell-image.model\";\r\nimport { GridColumnBoolean } from \"@app/shared/ag-grid-helpers/models/grid-column-boolean\";\r\nimport { GridColumnCustom } from \"@app/shared/ag-grid-helpers/models/grid-column-custom.model\";\r\nimport { GridColumnIcon } from \"@app/shared/ag-grid-helpers/models/grid-column-icon.model\";\r\nimport { GridColumnImage } from \"@app/shared/ag-grid-helpers/models/grid-column-image.model\";\r\nimport { GridColumnPartNumber } from \"@app/shared/ag-grid-helpers/models/grid-column-part-number\";\r\nimport { GridColumnStatus } from \"@app/shared/ag-grid-helpers/models/grid-column-status\";\r\nimport { GridColumn, GridColumnType } from \"@app/shared/ag-grid-helpers/models/grid-column.model\";\r\nimport { ConfirmationService, IConfirmationOptions } from \"@app/shared/confirmation/confirmation.service\";\r\nimport { OrderDataHelper } from \"@app/shared/orders/order-data.helper\";\r\nimport { GridColumnOrderHolds } from \"@app/shared/orders/order-grid-components/hold-renderer/grid-cell-holds.model\";\r\nimport { OrderProductBulkComponent } from \"@app/shared/orders/order-manual-entry/order-product-bulk/order-product-bulk.component\";\r\nimport { OrderProductComponent } from \"@app/shared/orders/order-manual-entry/order-product/order-product.component\";\r\nimport { Util } from \"@app/utils/util\";\r\nimport { NgbModal } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\nimport { ShipmentDetailComponent } from \"../shipment-detail/shipment-detail.component\";\r\n\r\n@Component({\r\n selector: \"order-product-list\",\r\n styleUrls: [\"./product-list.component.scss\"],\r\n templateUrl: \"./product-list.component.html\",\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class OrderProductListComponent extends GridBase implements OnInit\r\n{\r\n @ViewChild(\"dialogBulk\")\r\n dialogBulk: OrderProductBulkComponent;\r\n\r\n @ViewChild(\"dialogShipment\")\r\n dialogShipment: ShipmentDetailComponent;\r\n\r\n @ViewChild(\"dialogProductEntry\")\r\n dialogProductEntry: OrderProductComponent;\r\n\r\n public get canShip()\r\n {\r\n return OrderDataHelper.CanShip(this.orderDetails);\r\n }\r\n\r\n public get canProduct()\r\n {\r\n return (!this.orderDetails.isThereAShipment && this.orderDetails.statusType != OrderStatusType.Complete);\r\n }\r\n\r\n public userRole: number;\r\n public orderDetails: Transaction;\r\n\r\n constructor(\r\n toastrService: ToastrService,\r\n public modalService: NgbModal,\r\n private prodServ: ProductService,\r\n public prodDetailsServ: TransactionProductService,\r\n private shipService: ShipmentService,\r\n private confirmService: ConfirmationService,\r\n private transactionServ: TransactionService)\r\n {\r\n super(toastrService, prodDetailsServ);\r\n\r\n this.modalService = modalService;\r\n }\r\n\r\n ngOnInit()\r\n {\r\n this.userRole = OrderDataHelper.userRole;\r\n this.orderDetails = this.data;\r\n\r\n this.setupGrid();\r\n }\r\n\r\n public onMyGridReady(params)\r\n {\r\n this.onGridReady(params, false);\r\n\r\n this.filterAdd(\"transactionUID\", this.orderDetails.uid);\r\n\r\n this.gridLoad();\r\n }\r\n\r\n public onShipmentAdd()\r\n {\r\n this.dialogShipment.openAdd();\r\n }\r\n\r\n public onProductAdd()\r\n {\r\n if (Util.isEmpty(this.dialogProductEntry.availableProducts))\r\n {\r\n this.getProducts();\r\n }\r\n\r\n this.dialogProductEntry.merchantUID = this.orderDetails.customer.uid;\r\n this.dialogProductEntry.existingOrderUID = this.orderDetails.uid;\r\n this.dialogProductEntry.openDialog();\r\n }\r\n\r\n public onBulkTemplate()\r\n {\r\n OrderDataHelper.getBulkTemplate();\r\n }\r\n\r\n public onBulkOpen()\r\n {\r\n if (Util.isEmpty(this.dialogProductEntry.availableProducts))\r\n {\r\n this.getProducts();\r\n }\r\n\r\n this.dialogBulk.existingOrderUID = this.orderDetails.uid;\r\n this.dialogBulk.openDialog(this.orderDetails.customerUID);\r\n }\r\n\r\n public onDataRefresh()\r\n {\r\n this.close();\r\n\r\n this.transactionServ.detail({ uid: this.orderDetails.uid }).subscribe(\r\n retRes =>\r\n {\r\n this.orderDetails = retRes;\r\n\r\n this.gridRefresh();\r\n\r\n if (this.update)\r\n {\r\n this.update.emit(retRes);\r\n }\r\n },\r\n errRes => this.error(errRes));\r\n }\r\n\r\n private getProducts(): void\r\n {\r\n let filt = null;\r\n\r\n if (OrderDataHelper.userRole == this.profileTypes.admin)\r\n {\r\n filt = { customerUID: this.orderDetails.customer.uid };\r\n }\r\n\r\n this.prodServ.getLookup(filt).add(() =>\r\n {\r\n this.dialogBulk.availableProducts = this.prodServ.lookupList;\r\n this.dialogProductEntry.availableProducts = this.prodServ.lookupList;\r\n });\r\n }\r\n\r\n private canClearHold(data)\r\n {\r\n let canDo =\r\n data.isImportPermitHold &&\r\n data.statusType != OrderDataHelper.Status_Cleared.id &&\r\n data.statusType != OrderDataHelper.Status_Complete.id &&\r\n data.statusType != OrderDataHelper.Status_Cancelled.id &&\r\n data.statusType != OrderDataHelper.Status_Suspended.id &&\r\n OrderDataHelper.userRole == ProfileType.admin;\r\n\r\n return canDo;\r\n }\r\n\r\n private canCancel(data)\r\n {\r\n let canDo =\r\n data.statusType != OrderStatusType.Complete &&\r\n data.statusType != OrderStatusType.Cancelled &&\r\n data.statusType != OrderStatusType.Suspended &&\r\n this.orderDetails.statusType != OrderStatusType.Complete;\r\n\r\n return canDo;\r\n }\r\n\r\n private onClearHold(data)\r\n {\r\n let opts: IConfirmationOptions =\r\n {\r\n FunctionConfirm: () => this.doClearHold(data)\r\n };\r\n\r\n this.confirmService.YesNo(`Are you sure you want to clear the hold on the Import Permit for \"${data.customerDescription}\"?`, opts);\r\n }\r\n\r\n private onCancelConfirm(data)\r\n {\r\n let mess;\r\n\r\n if (data.isOnActiveShipment && data.shipmentUID)\r\n {\r\n mess = \"This product is part of an active Shipment. Are you sure you want to cancel?\";\r\n }\r\n else\r\n {\r\n mess = `Are you sure you want to cancel \"${data.customerDescription}\"?`;\r\n }\r\n\r\n let opts: IConfirmationOptions =\r\n {\r\n FunctionConfirm: () => this.doCancelItem(data)\r\n };\r\n\r\n this.confirmService.YesNo(mess, opts);\r\n }\r\n\r\n private setupGrid()\r\n {\r\n let images =\r\n [\r\n new GridCellImage(\"product.imageLink1\")\r\n ];\r\n\r\n this.storageKey = \"OrdersProductList\";\r\n this.addColumn(new GridColumnStatus(OrderCommon.ProductStatuses));\r\n this.addColumn(new GridColumnPartNumber(\"product\"));\r\n this.addColumn(new GridColumnCustom(\"customerDescription\", \"Description\", { width: 150, minWidth: 100 }));\r\n this.addColumn(new GridColumnImage(images, \"Images\", 100));\r\n this.addColumn(new GridColumn(\"amount\", \"Price\", GridColumnType.Money));\r\n this.addColumn(new GridColumn(\"extendedAmount\", \"Total\", GridColumnType.Money));\r\n\r\n if (OrderDataHelper.userRole == ProfileType.admin)\r\n {\r\n this.addColumn(new GridColumn(\"classification\", \"Classification\"));\r\n this.addColumn(new GridColumnCustom(\"product.exportScheduleB\", \"Schedule B #\", { width: 125, suppressSizeToFit: true }));\r\n }\r\n\r\n this.addColumn(new GridColumn(\"licenseNumber\", \"License #\"));\r\n this.addColumn(new GridColumnCustom(\"importPermit1\", \"Permit\", { cellRenderer: this.renderPermit.bind(this) }));\r\n this.addColumn(new GridColumnCustom(\"quantityShipped\", \"Shipped\", { cellRenderer: this.renderShippedQuantity, width: 75, suppressSizeToFit: true }));\r\n this.addColumn(new GridColumnBoolean(\"isChanged\", \"Changed?\"));\r\n this.addColumn(new GridColumnBoolean(\"isOnOriginalOrder\", \"On Original Order?\"));\r\n this.addColumn(new GridColumn(\"originalPartNumber\", \"Original Part #\"));\r\n this.addColumn(new GridColumn(\"originalQuantity\", \"Original Qty\", GridColumnType.Number));\r\n this.addColumn(new GridColumn(\"originalAmount\", \"Original Amt\", GridColumnType.Money));\r\n this.addColumn(new GridColumnOrderHolds());\r\n\r\n if (this.userRole == ProfileType.freightForwarder)\r\n {\r\n return;\r\n }\r\n\r\n let gridIcons =\r\n [\r\n { icon: this.Icons.Edit, toolTip: \"Edit Order item\", onClick: this.onEdit.bind(this), isVisible: this.canEdit.bind(this) },\r\n { icon: this.Icons.Cancel, toolTip: \"Cancel item\", onClick: this.onCancelConfirm.bind(this), isVisible: this.canCancel.bind(this) },\r\n { icon: this.Icons.Hold, toolTip: \"Clear Import Permit Hold\", onClick: this.onClearHold.bind(this), isVisible: this.canClearHold }\r\n ];\r\n\r\n this.addColumn(new GridColumnIcon(gridIcons));\r\n\r\n this.rowDoubleClick(this.onEdit.bind(this));\r\n }\r\n\r\n private canEdit(agData)\r\n {\r\n return (this.canProduct && agData.statusType != OrderProductStatusType.complete);\r\n }\r\n\r\n private onEdit(agData)\r\n {\r\n if (!this.canEdit(agData))\r\n {\r\n return;\r\n }\r\n\r\n this.dialogProductEntry.existingOrderUID = this.orderDetails.uid;\r\n this.dialogProductEntry.openDialog(agData);\r\n }\r\n\r\n private doClearHold(data)\r\n {\r\n let sendMe =\r\n {\r\n uid: data.uid,\r\n statusType: OrderDataHelper.Status_Cleared.id,\r\n isImportPermitHold: false\r\n };\r\n\r\n this.prodDetailsServ.save(sendMe).subscribe(\r\n retRes => this.onDataRefresh(),\r\n errRes => this.error(errRes));\r\n }\r\n\r\n private doCancelItem(data)\r\n {\r\n this.prodDetailsServ.saveStatus(data.uid, OrderDataHelper.Status_Cancelled.id).subscribe(\r\n retRes => this.onDataRefresh(),\r\n errRes => this.error(errRes));\r\n }\r\n\r\n private renderShippedQuantity(params: any)\r\n {\r\n let data = params.data;\r\n let shipped = data?.quantityShipped ?? 0;\r\n\r\n return `${shipped} of ${data.quantity}`;\r\n }\r\n\r\n private renderPermit(params: any)\r\n {\r\n let permits = this.prodDetailsServ.makePermitArray(params.data);\r\n\r\n if (Util.isEmpty(permits))\r\n {\r\n return Util.DOM_Space;\r\n }\r\n\r\n let outHTML = \"\";\r\n\r\n for (let lp = 0; lp < permits.length; lp++)\r\n {\r\n outHTML += `
          ${permits[lp]}
          `;\r\n }\r\n\r\n return outHTML;\r\n }\r\n}","export default \"
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n
          \\r\\n \\r\\n
          \\r\\n \\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 default \".issues .item {\\n display: -ms-flexbox;\\n display: flex;\\n -ms-flex-wrap: nowrap;\\n flex-wrap: nowrap;\\n margin-bottom: 1rem;\\n}\\n\\n.issues .icon {\\n width: 60px;\\n}\\n\\n.issues .description {\\n -ms-flex-positive: 1;\\n flex-grow: 1;\\n overflow-y: hidden;\\n white-space: normal;\\n text-overflow: ellipsis;\\n}\\n\\n.permit-item {\\n overflow: hidden;\\n white-space: nowrap;\\n text-overflow: ellipsis;\\n}\\n\";","export enum ShipmentStatusType\r\n{\r\n Active = 1,\r\n Complete = 4\r\n}","export class ShipProductDTO\r\n{\r\n uid: string;\r\n total: number;\r\n weight: number;\r\n aesCode: string;\r\n license: string;\r\n ordered: number;\r\n shipped: number;\r\n importHTS: string;\r\n remaining: number;\r\n weightRaw: number;\r\n partNumber: string;\r\n productUID: string;\r\n description: string;\r\n classification: string;\r\n exportScheduleB: string;\r\n\r\n constructor(product: any)\r\n {\r\n let derWeight = product.kilogramsPerItem * product.quantityShipped;\r\n\r\n this.uid = product.uid;\r\n this.total = product.amountShipped;\r\n this.aesCode = product.aesCode;\r\n this.license = product.transactionProduct.licenseNumber;\r\n this.ordered = product.transactionProduct.quantity;\r\n this.shipped = product.quantityShipped;\r\n this.importHTS = product.productCountry?.importHTS;\r\n this.remaining = product.transactionProduct.quantityRemaining;\r\n this.partNumber = product.transactionProduct.partNumber;\r\n this.productUID = product.transactionProductUID;\r\n this.description = product.transactionProduct.customerDescription;\r\n this.classification = product.transactionProduct.classification;\r\n this.exportScheduleB = product.product.exportScheduleB;\r\n\r\n this.weight = derWeight;\r\n this.weightRaw = derWeight;\r\n\r\n if (this.weight < 1)\r\n {\r\n this.weight = 1;\r\n }\r\n }\r\n}","import { Component, ElementRef, Input, OnInit, ViewChild } from \"@angular/core\";\r\nimport { AuthService, LookupService, ProfileType, Transaction } from \"@app/data\";\r\nimport { ShipmentProductStatusType } from \"@app/data/enums/shipment-product-status-type.enum\";\r\nimport { MerchantsFreightForwarderService } from \"@app/data/freight/merchants-freight-forwarder.service\";\r\nimport { ShipmentProductService } from \"@app/data/shipment-product/shipment-product.service\";\r\nimport { Shipment } from \"@app/data/shipment/shipment\";\r\nimport { ShipmentService } from \"@app/data/shipment/shipment.service\";\r\nimport { GridBase } from \"@app/shared/ag-grid-helpers/ag-grid-base\";\r\nimport { GridCellNumberEditorComponent } from \"@app/shared/ag-grid-helpers/components/grid-cell-number-editor/grid-cell-number-editor.component\";\r\nimport { GridHelpers } from \"@app/shared/ag-grid-helpers/grid-helper\";\r\nimport { GridColumnCustom } from \"@app/shared/ag-grid-helpers/models/grid-column-custom.model\";\r\nimport { GridColumnIcon } from \"@app/shared/ag-grid-helpers/models/grid-column-icon.model\";\r\nimport { GridColumn, GridColumnType } from \"@app/shared/ag-grid-helpers/models/grid-column.model\";\r\nimport { CommonSettings } from '@app/shared/common-settings';\r\nimport { ConfirmationService, IConfirmationOptions } from \"@app/shared/confirmation/confirmation.service\";\r\nimport { FreightForwarderCommon } from \"@app/shared/freight-forwarder/freight-forwarder-common\";\r\nimport { OrderDataHelper } from '@app/shared/orders/order-data.helper';\r\nimport { DateHelper } from \"@app/utils/date-helper\";\r\nimport { Util } from \"@app/utils/util\";\r\nimport { NgbDateAdapter, NgbModal } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\nimport { forkJoin } from \"rxjs\";\r\nimport { ShipProductDTO } from \"./ship-product.dto\";\r\n\r\n@Component({\r\n selector: \"order-shipment-detail\",\r\n styleUrls: [\"./shipment-detail.component.scss\"],\r\n templateUrl: \"./shipment-detail.component.html\"\r\n})\r\nexport class ShipmentDetailComponent extends GridBase implements OnInit\r\n{\r\n @Input()\r\n orderDetails: Transaction;\r\n\r\n @ViewChild(\"dialogAddProd\")\r\n dialogAddProd: ElementRef;\r\n\r\n @ViewChild(\"dialogShipment\")\r\n dialogShipment: ElementRef;\r\n\r\n public get canEdit()\r\n {\r\n if (this.userRole != ProfileType.customer)\r\n {\r\n return false;\r\n }\r\n\r\n return (this.showType != ShipmentDetailComponent.ShowType_View);\r\n }\r\n\r\n public get minModify()\r\n {\r\n return (OrderDataHelper.userRole == ProfileType.customer || OrderDataHelper.userRole == ProfileType.freightForwarder);\r\n }\r\n\r\n public static readonly ShowType_New = 0;\r\n public static readonly ShowType_Edit = 1;\r\n public static readonly ShowType_View = 2;\r\n\r\n public readonly shipmentStatusTypes = OrderDataHelper.ShipmentStatuses;\r\n\r\n public myFFs;\r\n public showFF: boolean;\r\n public showType: number = ShipmentDetailComponent.ShowType_New;\r\n public userRole: number = OrderDataHelper.userRole;\r\n public totalValue: number;\r\n public shipMethods;\r\n public totalWeight: number;\r\n public availProducts;\r\n public productListTitle: string;\r\n\r\n private holdUpdate;\r\n private prodChanged: boolean;\r\n private shipProducts;\r\n private prodDialogRef;\r\n private missingProduct: boolean;\r\n\r\n constructor(toastrService: ToastrService,\r\n public lookupServ: LookupService,\r\n public modalService: NgbModal,\r\n private authService: AuthService,\r\n private dateAdapter: NgbDateAdapter,\r\n private shipService: ShipmentService,\r\n private confirmService: ConfirmationService,\r\n private mercahntFFServ: MerchantsFreightForwarderService,\r\n private shipProdService: ShipmentProductService)\r\n {\r\n super(toastrService, shipProdService);\r\n\r\n this.dataForm = this.shipService.editorForm;\r\n this.apiService = this.shipService;\r\n }\r\n\r\n ngOnInit(): void\r\n {\r\n this.holdUpdate = this.update;\r\n\r\n this.update = null;\r\n this.setupGrid();\r\n }\r\n\r\n public openAdd(): void\r\n {\r\n this.open(this.dialogShipment, null, CommonSettings.DialogSize_XLarge);\r\n this.resetForm();\r\n\r\n this.setValue(\"transactionUID\", this.orderDetails.uid);\r\n\r\n this.setupUI();\r\n }\r\n\r\n public openEdit(data: Shipment): void\r\n {\r\n this.open(this.dialogShipment, data, CommonSettings.DialogSize_XLarge);\r\n this.patchValue();\r\n\r\n this.setupUI();\r\n }\r\n\r\n public onMyGridReady(params): void\r\n {\r\n this.onGridReady(params, false);\r\n\r\n let show = this.showType != ShipmentDetailComponent.ShowType_View;\r\n\r\n this.columnManager.setColumnVisible(\"editIcons\", show);\r\n }\r\n\r\n public onShipMethodChange(evtArg): void\r\n {\r\n this.showFF = (evtArg.code == FreightForwarderCommon.ShipMethodCode);\r\n\r\n if (this.showFF)\r\n {\r\n this.setValue(\"freightUID\", null);\r\n }\r\n }\r\n\r\n public onOpenProds(): void\r\n {\r\n let opts = CommonSettings.DialogOptions();\r\n\r\n this.prodDialogRef = this.modalService.open(this.dialogAddProd, opts);\r\n }\r\n\r\n public onProdsClose(): void\r\n {\r\n this.prodDialogRef.close();\r\n }\r\n\r\n public onProdsSave(): void\r\n {\r\n let prods = this.availProducts.filter(elm => elm.checked);\r\n\r\n for (let item of prods)\r\n {\r\n let addMe = new ShipProductDTO(item);\r\n\r\n this.shipProducts.push(addMe);\r\n }\r\n\r\n this.prodChanged = true;\r\n this.availProducts = this.availProducts.filter(elm => !elm.checked);\r\n\r\n this.refreshThatGrid();\r\n this.prodDialogRef.close();\r\n }\r\n\r\n public onMainClose(): void\r\n {\r\n this.mainGrid = null;\r\n this.columnManager = null;\r\n\r\n if (!this.dataForm.dirty && !this.prodChanged)\r\n {\r\n this.close();\r\n return;\r\n }\r\n\r\n let opts: IConfirmationOptions =\r\n {\r\n FunctionConfirm: () => this.close()\r\n };\r\n\r\n this.confirmService.YesNo(CommonSettings.DirtyFormConfirmationMessage, opts);\r\n }\r\n\r\n public onMainSave(): void\r\n {\r\n this.loading = true;\r\n\r\n if (this.invalid())\r\n {\r\n return;\r\n }\r\n\r\n if (this.showType == ShipmentDetailComponent.ShowType_New)\r\n {\r\n if (this.shipProducts.length == 0)\r\n {\r\n this.loading = false;\r\n this.missingProduct = true;\r\n return;\r\n }\r\n }\r\n else\r\n {\r\n let actProd = this.shipProducts.filter(elm => elm.statusType != ShipmentProductStatusType.Deleted);\r\n\r\n if (actProd.length == 0)\r\n {\r\n let opts: IConfirmationOptions =\r\n {\r\n FunctionConfirm: () => this.deleteShipment()\r\n };\r\n\r\n this.loading = false;\r\n\r\n this.confirmService.YesNo(\"You have removed all products from this Shipment. This will mark this Shipment record as deleted; continue?\", opts);\r\n return;\r\n }\r\n }\r\n\r\n this.submit().add(() => this.submitComplete());\r\n }\r\n\r\n private submitComplete(): void\r\n {\r\n if (this.submitError)\r\n {\r\n return;\r\n }\r\n\r\n this.loading = true;\r\n this.saveProducts();\r\n }\r\n\r\n private setupUI(): void\r\n {\r\n let sDate = (this.data ? this.data.shipmentDate : new Date());\r\n let dasDate = this.dateAdapter.toModel(DateHelper.makeNGBDate(sDate));\r\n\r\n this.showFF = false;\r\n this.prodChanged = false;\r\n this.missingProduct = false;\r\n\r\n this.setValue(\"shipmentDate\", dasDate);\r\n\r\n if (this.showType == ShipmentDetailComponent.ShowType_View)\r\n {\r\n this.productListTitle = \"Shipped products\";\r\n\r\n this.rowDoubleClick(null);\r\n }\r\n else\r\n {\r\n this.productListTitle = \"Product(s) to ship:\";\r\n\r\n if (this.minModify)\r\n {\r\n this.gridOpts.singleClickEdit = true\r\n this.gridOpts.stopEditingWhenCellsLoseFocus = true;\r\n\r\n this.rowDoubleClick(this.onEdit.bind(this));\r\n }\r\n }\r\n\r\n let meth = this.lookupServ.getList(\"shipping-method\");\r\n let myFFs = this.mercahntFFServ.myList();\r\n\r\n forkJoin([meth, myFFs]).subscribe((retRes) => this.popCommon(retRes));\r\n\r\n if (this.showType == ShipmentDetailComponent.ShowType_New)\r\n {\r\n this.shipProdService.post(\"list\", { transactionUID: this.orderDetails.uid }).subscribe(\r\n retRes => this.popProducts(retRes),\r\n errRes => this.error(errRes));\r\n return;\r\n }\r\n\r\n let all = this.shipProdService.post(\"list\", { transactionUID: this.orderDetails.uid });\r\n let mine = this.shipProdService.post(\"list\", { shipmentUID: this.data.uid });\r\n\r\n forkJoin([all, mine]).subscribe((retRes) => this.parseProducts(retRes));\r\n }\r\n\r\n private setupGrid(): void\r\n {\r\n let colTotal = new GridColumn(\"total\", \"Value\", GridColumnType.Money);\r\n let colOrdered = new GridColumn(\"ordered\", \"Ordered\", GridColumnType.Number);\r\n\r\n let editorOpts =\r\n {\r\n type: \"rightAligned\",\r\n editable: this.minModify,\r\n cellEditor: \"gridCellNumberEditorComponent\",\r\n cellEditorParams: { min: 0, max: { data: \"remaining\" } }\r\n };\r\n\r\n colTotal.width = 90;\r\n colOrdered.width = 95;\r\n\r\n this.storageKey = \"ShipmentDetail\";\r\n this.gridOpts.domLayout = GridHelpers.DOMLayout_Normal;\r\n this.gridOpts.paginationPageSize = 6;\r\n\r\n this.addColumn(new GridColumnCustom(\"partNumber\", \"Part #\", { width: 200 }));\r\n this.addColumn(new GridColumn(\"description\", \"Description\"));\r\n this.addColumn(new GridColumn(\"aesCode\", \"AES\"));\r\n this.addColumn(new GridColumn(\"exportScheduleB\", \"Schedule B\"));\r\n this.addColumn(new GridColumn(\"classification\", \"ECCN\"));\r\n this.addColumn(new GridColumn(\"importHTS\", \"HTS\"));\r\n this.addColumn(new GridColumn(\"license\", \"License\"));\r\n this.addColumn(colOrdered);\r\n this.addColumn(new GridColumnCustom(\"shipped\", \"# to Ship\", editorOpts));\r\n this.addColumn(colTotal);\r\n this.addColumn(new GridColumn(\"weight\", \"AES Weight (kg)\", GridColumnType.Number));\r\n\r\n if (this.minModify)\r\n {\r\n let gridIcons =\r\n [\r\n GridHelpers.MakeEditIcon(this.onEdit.bind(this)),\r\n GridHelpers.MakeDeleteIcon(this.onDelete.bind(this))\r\n ];\r\n\r\n this.addColumn(new GridColumnIcon(gridIcons, -1, \"editIcons\"));\r\n }\r\n\r\n this.registerCustomComponents({ gridCellNumberEditorComponent: GridCellNumberEditorComponent });\r\n }\r\n\r\n private popCommon(retRes): void\r\n {\r\n let uid = this.getValue(\"shipmentMethodUID\");\r\n\r\n this.myFFs = retRes[1].results;\r\n this.shipMethods = retRes[0].results;\r\n\r\n if (!Util.isEmpty(uid))\r\n {\r\n let meth = this.shipMethods.find(elm => elm.uid == uid);\r\n\r\n this.onShipMethodChange(meth);\r\n\r\n this.setValue(\"freightUID\", this.data.freight?.uid);\r\n }\r\n }\r\n\r\n private parseProducts(retRes): void\r\n {\r\n this.popProducts(retRes[1]);\r\n\r\n let all = retRes[0].results;\r\n let mine = retRes[1].results;\r\n\r\n this.availProducts = [];\r\n\r\n for (let prod of all)\r\n {\r\n let item = mine.find(elm => elm.transactionProductUID == prod.transactionProductUID);\r\n\r\n if (!item)\r\n {\r\n prod.checked = false;\r\n\r\n this.availProducts.push(prod);\r\n }\r\n }\r\n }\r\n\r\n private popProducts(retRes: any): void\r\n {\r\n let data = retRes.results;\r\n\r\n this.shipProducts = [];\r\n\r\n for (let item of data)\r\n {\r\n let prod = new ShipProductDTO(item);\r\n\r\n if (prod.shipped >= 0)\r\n {\r\n this.shipProducts.push(prod);\r\n }\r\n }\r\n\r\n this.refreshThatGrid();\r\n }\r\n\r\n public onCellEditingStopped(evtArg): void\r\n {\r\n let data = evtArg.node.data;\r\n let weight = data.kilogramsPerItem * data.shipped;\r\n\r\n if (weight < 1 || isNaN(weight))\r\n {\r\n weight = 1;\r\n }\r\n\r\n evtArg.node.data.weight = weight;\r\n\r\n this.prodChanged = true;\r\n this.refreshThatGrid();\r\n }\r\n\r\n private onEdit(agData: any): void\r\n {\r\n let idx = this.shipProducts.findIndex(cond => cond.productUID == agData.productUID);\r\n\r\n this.mainGrid.startEditingCell({ colKey: \"shipped\", rowIndex: idx });\r\n }\r\n\r\n private onDelete(agData: any): void\r\n {\r\n if (this.showType == ShipmentDetailComponent.ShowType_New)\r\n {\r\n let idx = this.shipProducts.findIndex(cond => cond.productUID == agData.productUID);\r\n\r\n this.shipProducts.splice(idx, 1);\r\n\r\n this.shipProducts = Util.reindexArray(this.shipProducts);\r\n }\r\n else\r\n {\r\n let dude = this.shipProducts.find(cond => cond.productUID == agData.productUID);\r\n\r\n dude.statusType = ShipmentProductStatusType.Deleted;\r\n }\r\n\r\n this.prodChanged = true;\r\n this.refreshThatGrid();\r\n }\r\n\r\n private refreshThatGrid(): void\r\n {\r\n let data = this.shipProducts.filter(elm => elm.statusType != ShipmentProductStatusType.Deleted);\r\n\r\n this.totalValue = 0;\r\n this.totalWeight = 0;\r\n\r\n for (let item of data)\r\n {\r\n this.totalValue += item.total;\r\n this.totalWeight += item.weightRaw;\r\n }\r\n\r\n this.gridPopulate(data);\r\n }\r\n\r\n private deleteShipment(): void\r\n {\r\n this.delete().add(() =>\r\n {\r\n this.close();\r\n\r\n if (this.holdUpdate)\r\n {\r\n this.holdUpdate.emit();\r\n }\r\n });\r\n }\r\n\r\n private saveProducts(): void\r\n {\r\n let saveProds = [];\r\n\r\n for (let dude of this.shipProducts)\r\n {\r\n let addMe =\r\n {\r\n uid: dude.uid,\r\n statusType: dude.statusType,\r\n shipmentUID: this.data.uid,\r\n transactionUID: this.orderDetails.uid,\r\n quantityShipped: dude.shipped,\r\n transactionProductUID: dude.productUID\r\n };\r\n\r\n saveProds.push(addMe);\r\n }\r\n\r\n this.shipProdService.postList(\"savelist\", saveProds).subscribe(\r\n retRes =>\r\n {\r\n this.close();\r\n this.success(\"Shipment create successfully\");\r\n\r\n if (this.holdUpdate)\r\n {\r\n this.holdUpdate.emit();\r\n }\r\n },\r\n errRes => this.error(errRes),\r\n () => this.loading = false);\r\n }\r\n}","export default \"\\r\\n
          \\r\\n
          Shipment
          \\r\\n \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
          Merchant:{{ orderDetails.customer?.displayName }}
          Order #:{{ orderDetails.poNumber }}
          Order date:{{ orderDetails.purchaseDate | DateFormatter: formatDT }}
          Actual Weight (kg):{{ totalWeight | number }}
          Value{{ totalValue | currency }}
          \\r\\n
          \\r\\n AES Required\\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n
          \\r\\n \\r\\n
          \\r\\n \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n
          \\r\\n \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n {{ productListTitle }}\\r\\n
          \\r\\n \\r\\n
          Shipment must have at least one product
          \\r\\n
          \\r\\n \\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 Product
          \\r\\n \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n
          \";","export default \"legend {\\n width: auto;\\n}\\n\\n.shipment-grid {\\n height: 25rem;\\n}\\n\\n.no-product {\\n border-color: #d9534f;\\n}\\n\\n.order-header {\\n display: -ms-flexbox;\\n display: flex;\\n -ms-flex-pack: justify;\\n justify-content: space-between;\\n}\\n\\n.add-product {\\n background-color: #e6f2ff;\\n}\\n\\n.add-product label {\\n cursor: pointer;\\n display: -ms-flexbox;\\n display: flex;\\n padding: .5rem;\\n font-size: 1rem;\\n -ms-flex-align: center;\\n align-items: center;\\n margin-bottom: 0rem;\\n}\\n\\n.add-product label:hover {\\n background-color: #fff;\\n}\\n\";","export class ShipmentCommon\r\n{\r\n public static readonly ShipmentStatuses =\r\n [\r\n { id: 1, name: \"Active\" },\r\n { id: 4, name: \"Complete\" }\r\n ];\r\n}","export enum Priority\r\n{\r\n High = 1,\r\n Medium = 2,\r\n Low = 3\r\n}","export enum TaskStatus\r\n{\r\n InProgress = 1,\r\n Pending = 2,\r\n Complete = 4,\r\n New = 7,\r\n PendingReview = 10,\r\n OnHold = 11,\r\n Cancelled = 13\r\n}","import { AfterViewInit, Component, EventEmitter, OnInit, Output, ViewChild } from \"@angular/core\";\r\nimport { ProfileType, Transaction, TransactionService } from \"@app/data\";\r\nimport { ShipmentStatusType } from \"@app/data/enums/shipment-status-type.enum\";\r\nimport { Shipment } from \"@app/data/shipment/shipment\";\r\nimport { ShipmentCommon } from \"@app/data/shipment/shipment-common\";\r\nimport { ShipmentService } from \"@app/data/shipment/shipment.service\";\r\nimport { GridBase } from \"@app/shared/ag-grid-helpers/ag-grid-base\";\r\nimport { GridHelpers } from \"@app/shared/ag-grid-helpers/grid-helper\";\r\nimport { GridCellBoolean } from \"@app/shared/ag-grid-helpers/models/grid-cell-boolean.model\";\r\nimport { GridColumnBoolean } from \"@app/shared/ag-grid-helpers/models/grid-column-boolean\";\r\nimport { GridColumnCustom } from \"@app/shared/ag-grid-helpers/models/grid-column-custom.model\";\r\nimport { GridColumnIcon } from \"@app/shared/ag-grid-helpers/models/grid-column-icon.model\";\r\nimport { GridColumnStatus } from \"@app/shared/ag-grid-helpers/models/grid-column-status\";\r\nimport { GridColumn, GridColumnType } from \"@app/shared/ag-grid-helpers/models/grid-column.model\";\r\nimport { ConfirmationService, IConfirmationOptions } from \"@app/shared/confirmation/confirmation.service\";\r\nimport { OrderDataHelper } from '@app/shared/orders/order-data.helper';\r\nimport { Util } from \"@app/utils/util\";\r\nimport { NgbModal } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\nimport { CommericalInvoiceComponent } from \"../commercial-invoice/commercial-invoice\";\r\nimport { ShipmentDetailComponent } from \"../shipment-detail/shipment-detail.component\";\r\nimport { ShipperLetterInstructionsComponent } from \"../shipper-letter-of-instruction/shipper-letter-of-instruction.component\";\r\n\r\n@Component({\r\n selector: \"order-shipment-list\",\r\n templateUrl: \"./shipment-list.component.html\"\r\n})\r\nexport class ShipmentListComponent extends GridBase implements OnInit, AfterViewInit\r\n{\r\n @ViewChild(\"dialogSLI\")\r\n dialogSLI: ShipperLetterInstructionsComponent;\r\n\r\n @ViewChild(\"dialogInvoice\")\r\n dialogInvoice: CommericalInvoiceComponent;\r\n\r\n @ViewChild(\"dialogShipment\")\r\n dialogShipment: ShipmentDetailComponent;\r\n\r\n @Output()\r\n shipmentListReady = new EventEmitter();\r\n\r\n public readonly trackingURL = \"https://parcelsapp.com/en/tracking/\";\r\n\r\n public canShip: boolean;\r\n public userRole: number = OrderDataHelper.userRole;\r\n public orderDetails: Transaction;\r\n\r\n constructor(\r\n toastrService: ToastrService,\r\n public modalService: NgbModal,\r\n private confirmService: ConfirmationService,\r\n private shipmentService: ShipmentService,\r\n private transactionServ: TransactionService)\r\n {\r\n super(toastrService, shipmentService);\r\n\r\n this.modalService = modalService;\r\n\r\n this.setupGrid();\r\n }\r\n\r\n ngOnInit()\r\n {\r\n this.canShip = OrderDataHelper.CanShip(this.data);\r\n this.orderDetails = this.data;\r\n\r\n this.filterAdd(\"transactionUID\", this.data.uid);\r\n }\r\n\r\n ngAfterViewInit(): void\r\n {\r\n if (this.shipmentListReady)\r\n {\r\n this.shipmentListReady.emit(\"Required!?\");\r\n }\r\n }\r\n\r\n public onAdd()\r\n {\r\n this.dialogShipment.showType = ShipmentDetailComponent.ShowType_New;\r\n this.dialogShipment.openAdd();\r\n }\r\n\r\n public onUpdateShipment()\r\n {\r\n this.close();\r\n this.gridRefresh();\r\n this.updateOrder();\r\n }\r\n\r\n private setupGrid()\r\n {\r\n let bools = new GridCellBoolean(GridCellBoolean.DefaultYesText, GridCellBoolean.DefaultNoText);\r\n let gridIcons =\r\n [\r\n GridHelpers.MakeViewIcon(this.onDetails.bind(this)),\r\n { icon: this.Icons.PDF, toolTip: \"Generate Shipper's Letter of Instruction\", onClick: this.onShipperInstructions.bind(this) },\r\n { icon: this.Icons.Billing, toolTip: \"Commerical Invoice\", onClick: this.onCommericalInvoice.bind(this) }\r\n ];\r\n\r\n if (this.userRole != ProfileType.freightForwarder)\r\n {\r\n gridIcons.push(GridHelpers.MakeDeleteIcon(this.onDelete.bind(this), this.onCanDelete.bind(this)));\r\n }\r\n\r\n this.storageKey = \"ShipmentList\";\r\n this.addColumn(new GridColumnStatus(ShipmentCommon.ShipmentStatuses));\r\n this.addColumn(new GridColumn(\"shipmentNumber\", \"Ship #\"));\r\n this.addColumn(new GridColumn(\"shipmentDate\", \"Ship Date\", GridColumnType.Date));\r\n this.addColumn(new GridColumn(\"freight.companyName\", \"Shipped by\"));\r\n this.addColumn(new GridColumnCustom(\"trackingNumber\", \"Tracking\", { cellRenderer: this.renderTracking.bind(this) }));\r\n this.addColumn(new GridColumn(\"aesInternalTransactionNumber\", \"ITN\"));\r\n this.addColumn(new GridColumn(\"shippingInstructions\", \"Shipping Instructions\"));\r\n this.addColumn(new GridColumnBoolean(\"isAESRequired\", \"AES\", bools));\r\n this.addColumn(new GridColumnIcon(gridIcons));\r\n\r\n this.rowDoubleClick(this.onDetails.bind(this));\r\n }\r\n\r\n private renderTracking(gridPrams)\r\n {\r\n if (Util.isEmpty(gridPrams.data.trackingNumber))\r\n {\r\n return Util.DOM_Space;\r\n }\r\n\r\n let num = gridPrams.data.trackingNumber;\r\n\r\n return Util.substitute(\"{1}\", this.trackingURL, num);\r\n }\r\n\r\n private onDetails(agData)\r\n {\r\n if (agData.statusType == ShipmentStatusType.Complete)\r\n {\r\n this.dialogShipment.showType = ShipmentDetailComponent.ShowType_View;\r\n }\r\n else\r\n {\r\n this.dialogShipment.showType = ShipmentDetailComponent.ShowType_Edit;\r\n }\r\n\r\n this.dialogShipment.openEdit(agData);\r\n }\r\n\r\n private onCanDelete(agData)\r\n {\r\n return agData.statusType != ShipmentStatusType.Complete;\r\n }\r\n\r\n private onCommericalInvoice(agData): void\r\n {\r\n this.dialogInvoice.openInvoice(agData);\r\n }\r\n\r\n private onShipperInstructions(agData)\r\n {\r\n this.dialogSLI.openSLI(agData);\r\n }\r\n\r\n private onDelete(agData)\r\n {\r\n this.dataForm = this.makeForm(agData);\r\n\r\n let opts: IConfirmationOptions =\r\n {\r\n FunctionConfirm: () => this.deleteIt()\r\n };\r\n\r\n this.confirmService.Delete(`Are you sure you want to delete #${agData.shipmentNumber}?`, opts);\r\n }\r\n\r\n private deleteIt()\r\n {\r\n this.delete().add(() =>\r\n {\r\n this.gridRefresh();\r\n this.updateOrder();\r\n });\r\n }\r\n\r\n private updateOrder()\r\n {\r\n this.transactionServ.detail({ uid: this.orderDetails.uid }).subscribe(\r\n retRes =>\r\n {\r\n this.data = retRes;\r\n this.canShip = OrderDataHelper.CanShip(retRes);\r\n this.orderDetails = retRes;\r\n\r\n if (this.update)\r\n {\r\n this.update.emit(retRes);\r\n }\r\n },\r\n errRes => this.error(errRes));\r\n }\r\n}","export default \"
          \\r\\n \\r\\n \\r\\n \\r\\n
          \\r\\n\\r\\n\\r\\n\";","import { HttpClient } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { FormBuilder, Validators } from \"@angular/forms\";\r\nimport { ApiService } from \"../api/api.service\";\r\nimport { ShopOrderProduct } from \"./shop-order-product\";\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class ShopOrderProductService extends ApiService\r\n{\r\n public get dataForm()\r\n {\r\n let fb = new FormBuilder();\r\n let grp = fb.group(\r\n {\r\n uid: [],\r\n amount: [, [Validators.required, Validators.min(.01)]],\r\n category: [],\r\n quantity: [, [Validators.required, Validators.min(1)]],\r\n lineNumber: [],\r\n partNumber: [,Validators.required],\r\n subCategory: [],\r\n altDescription: [],\r\n customerDescription: []\r\n });\r\n\r\n return grp;\r\n }\r\n\r\n constructor(httpClient: HttpClient)\r\n {\r\n super(httpClient, \"order-manual-entry\");\r\n }\r\n}","import { Component, EventEmitter, Output, TemplateRef, ViewChild } from \"@angular/core\";\r\nimport { OrderProductStatusType } from \"@app/data/enums/order-product-status-type.enum\";\r\nimport { ExcelHelper } from \"@app/data/misc/excel-helper\";\r\nimport { ShopOrderProduct } from \"@app/data/orders/shop-order-product\";\r\nimport { ShopOrderProductService } from \"@app/data/orders/shop-order-product.service\";\r\nimport { ShopPostMessageService } from \"@app/data/orders/shop-post-message.service\";\r\nimport { GridBase } from \"@app/shared/ag-grid-helpers/ag-grid-base\";\r\nimport { GridHelpers } from \"@app/shared/ag-grid-helpers/grid-helper\";\r\nimport { GridColumnCustom } from \"@app/shared/ag-grid-helpers/models/grid-column-custom.model\";\r\nimport { GridColumnIcon } from '@app/shared/ag-grid-helpers/models/grid-column-icon.model';\r\nimport { GridColumn, GridColumnType } from \"@app/shared/ag-grid-helpers/models/grid-column.model\";\r\nimport { CommonSettings } from \"@app/shared/common-settings\";\r\nimport { ConfirmationService, IConfirmationOptions } from \"@app/shared/confirmation/confirmation.service\";\r\nimport { OrderDataHelper } from '@app/shared/orders/order-data.helper';\r\nimport { OrderProductComponent } from \"@app/shared/orders/order-manual-entry/order-product/order-product.component\";\r\nimport { Util } from \"@app/utils/util\";\r\nimport { NgbModal } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\n\r\n@Component({\r\n selector: \"order-product-bulk\",\r\n styleUrls: [\"./order-product-bulk.component.scss\"],\r\n templateUrl: \"./order-product-bulk.component.html\"\r\n})\r\nexport class OrderProductBulkComponent extends GridBase\r\n{\r\n @ViewChild(\"dialogProduct\")\r\n dialogProduct: OrderProductComponent;\r\n\r\n @ViewChild(\"dialogOrderProduct\")\r\n dialogOrderProduct: TemplateRef;\r\n\r\n @Output()\r\n productAdded = new EventEmitter();\r\n\r\n public excelFile;\r\n public merchantUID;\r\n public existingOrderUID = null;\r\n public availableProducts;\r\n\r\n private editProd;\r\n\r\n constructor(toastrService: ToastrService,\r\n public modalService: NgbModal,\r\n private orderProdServ: ShopOrderProductService,\r\n private confirmService: ConfirmationService,\r\n private shopPostMessageServ: ShopPostMessageService)\r\n {\r\n super(toastrService, orderProdServ);\r\n\r\n this.setupGrid();\r\n }\r\n\r\n public openDialog(merchantUID)\r\n {\r\n this.gridData = [];\r\n this.excelFile = null;\r\n this.merchantUID = merchantUID;\r\n\r\n this.open(this.dialogOrderProduct, null, CommonSettings.DialogSize_XLarge);\r\n }\r\n\r\n public onBulkTemplate()\r\n {\r\n OrderDataHelper.getBulkTemplate();\r\n }\r\n\r\n public onFileSelect(evtArg)\r\n {\r\n this.blockOn(\"Processing file\");\r\n\r\n this.excelFile = evtArg.target.files[0];\r\n\r\n let xHelp = new ExcelHelper();\r\n\r\n xHelp.readFile(evtArg).subscribe(retRes => this.processExcel(retRes));\r\n }\r\n\r\n public onClearAll()\r\n {\r\n this.excelFile = null;\r\n\r\n this.gridPopulate([]);\r\n }\r\n\r\n public onClose()\r\n {\r\n let prods = this.gridData.filter(elm => Util.isEmpty(elm.message) )\r\n\r\n if (prods.length == 0)\r\n {\r\n this.close();\r\n return;\r\n }\r\n\r\n let opts: IConfirmationOptions =\r\n {\r\n FunctionConfirm: () => this.close()\r\n };\r\n\r\n this.confirmService.YesNo(CommonSettings.DirtyFormConfirmationMessage, opts);\r\n }\r\n\r\n public onSave()\r\n {\r\n if (this.existingOrderUID != null)\r\n {\r\n this.saveToExistsOrder();\r\n return;\r\n }\r\n\r\n let prods = this.gridData.filter(elm => elm.description != \"\");\r\n\r\n prods.forEach(elm => elm.description = `${elm.partNumber} - ${elm.description}`);\r\n\r\n this.close();\r\n this.productAdded.emit(prods);\r\n }\r\n\r\n public onProductSaved(data)\r\n {\r\n let prod = this.gridData.find(elm => elm.uid == data.uid);\r\n\r\n data.total = data.amount * data.quantity;\r\n\r\n if (prod == null)\r\n {\r\n let delMe = this.gridData.findIndex(elm => elm.partNumber == this.editProd.partNumber);\r\n\r\n if (delMe != -1)\r\n {\r\n delete this.gridData[delMe];\r\n }\r\n\r\n this.gridData.push(data);\r\n\r\n this.gridData = Util.reindexArray(this.gridData);\r\n }\r\n else\r\n {\r\n prod.total = data.total;\r\n prod.amount = data.amount;\r\n prod.quantity = data.quantity;\r\n }\r\n\r\n this.gridPopulate(this.gridData);\r\n }\r\n\r\n private processExcel(data)\r\n {\r\n if (Util.isEmpty(data))\r\n {\r\n this.blockOff();\r\n return;\r\n }\r\n\r\n let cnt = 0;\r\n\r\n for (let item of data)\r\n {\r\n let amt = parseFloat(item[\"Price\"]);\r\n let qty = parseInt(item[\"Quantity\"]);\r\n let desc = \"\";\r\n let error = [];\r\n let partNum = item[\"PartNumber\"];\r\n\r\n if (Util.isEmpty(partNum))\r\n {\r\n partNum = \"\";\r\n error.push(\"Missing Part number\");\r\n }\r\n else\r\n {\r\n partNum = partNum.toString().trim();\r\n\r\n let prod = this.availableProducts.find(elm => elm.partNumber.trim().toLowerCase() == partNum.toLowerCase());\r\n\r\n if (prod == null)\r\n {\r\n error.push(\"Product not found\");\r\n }\r\n else\r\n {\r\n desc = prod.customerDescription;\r\n }\r\n }\r\n\r\n if (isNaN(qty))\r\n {\r\n qty = 0;\r\n error.push(\"Invalid or missing Quantity\");\r\n }\r\n\r\n if (isNaN(amt))\r\n {\r\n amt = 0;\r\n error.push(\"Invalid or missing Price\");\r\n }\r\n\r\n let avail = this.gridData.find(elm => elm.partNumber.toLowerCase() == partNum.toLowerCase() && elm.amount == amt);\r\n\r\n if (avail == null)\r\n {\r\n let addMe =\r\n {\r\n uid: \"B-\" + cnt,\r\n total: amt * qty,\r\n amount: amt,\r\n message: error.join(\"
          \"),\r\n quantity: qty,\r\n partNumber: partNum,\r\n description: desc,\r\n isOrderModification: true\r\n };\r\n\r\n this.gridData.push(addMe);\r\n\r\n cnt++;\r\n }\r\n else\r\n {\r\n avail.message += \"
          \" + error.join(\"
          \");\r\n avail.quantity += qty;\r\n avail.total = avail.quantity * avail.amount;\r\n }\r\n }\r\n\r\n this.gridPopulate(this.gridData);\r\n this.blockOff();\r\n }\r\n\r\n private setupGrid()\r\n {\r\n let gridIcons =\r\n [\r\n GridHelpers.MakeEditIcon(this.onEdit.bind(this), this.canEdit.bind(this)),\r\n GridHelpers.MakeDeleteIcon(this.onDelete.bind(this))\r\n ];\r\n\r\n this.gridData = [];\r\n this.gridOpts.domLayout = GridHelpers.DOMLayout_Normal;\r\n this.gridOpts.paginationPageSize = 10;\r\n\r\n this.addColumn(new GridColumn(\"partNumber\", \"Part #\"));\r\n this.addColumn(new GridColumn(\"description\", \"Descrtipion\"));\r\n this.addColumn(new GridColumn(\"quantity\", \"Qty\", GridColumnType.Number));\r\n this.addColumn(new GridColumn(\"amount\", \"Price\", GridColumnType.Money));\r\n this.addColumn(new GridColumn(\"total\", \"Total\", GridColumnType.Money));\r\n this.addColumn(new GridColumnCustom(\"message\", \"Message\", { cellRenderer: this.renderMessage.bind(this) }));\r\n this.addColumn(new GridColumnIcon(gridIcons));\r\n\r\n this.rowDoubleClick(this.onEdit.bind(this));\r\n }\r\n\r\n private canEdit(agData)\r\n {\r\n return !Util.isEmpty(agData.description);\r\n }\r\n\r\n private renderMessage(agData)\r\n {\r\n let mess = agData.value;\r\n\r\n if (Util.isEmpty(mess))\r\n {\r\n return Util.DOM_Space;\r\n }\r\n\r\n return `${mess}`;\r\n }\r\n\r\n private onEdit(agData)\r\n {\r\n this.editProd = agData;\r\n\r\n this.dialogProduct.openDialog(agData);\r\n }\r\n\r\n private onDelete(agData)\r\n {\r\n let opts: IConfirmationOptions =\r\n {\r\n FunctionConfirm: () => this.deleteIt(agData.partNumber)\r\n };\r\n\r\n this.confirmService.Delete(`Are you sure you want to delete \"${agData.description}?\"`, opts);\r\n }\r\n\r\n private deleteIt(partNum)\r\n {\r\n let idx = this.gridData.findIndex(elm => elm.partNumber == partNum);\r\n\r\n if (idx == -1)\r\n {\r\n return;\r\n }\r\n\r\n delete this.gridData[idx];\r\n\r\n this.gridData = Util.reindexArray(this.gridData);\r\n\r\n this.gridPopulate(this.gridData);\r\n }\r\n\r\n private saveToExistsOrder()\r\n {\r\n let saveProds = [];\r\n\r\n for (let prod of this.gridData.filter(elm => elm.description != \"\"))\r\n {\r\n let addMe: ShopOrderProduct =\r\n {\r\n amount: prod.amount,\r\n quantity: prod.quantity,\r\n partNumber: prod.partNumber,\r\n transactionUID: this.existingOrderUID,\r\n isOrderModification: true\r\n };\r\n\r\n saveProds.push(addMe);\r\n }\r\n\r\n if (saveProds.length == 0)\r\n {\r\n this.close();\r\n return;\r\n }\r\n\r\n this.orderProdServ.postList(\"save-products\", saveProds).subscribe(\r\n retRes => this.processResults(retRes),\r\n errRes => this.error(errRes));\r\n }\r\n\r\n private processResults(retData)\r\n {\r\n let sendIt = { uid: this.existingOrderUID, stage: OrderDataHelper.OrderState_Validate };\r\n let haveError = false;\r\n\r\n for (let lp in this.gridData)\r\n {\r\n let item = this.gridData[lp];\r\n let dude = retData.find(elm => elm.partNumber == item.partNumber);\r\n\r\n if (dude.statusType == OrderProductStatusType.active)\r\n {\r\n delete this.gridData[lp];\r\n }\r\n else\r\n {\r\n haveError = true;\r\n item.message = dude.message;\r\n }\r\n }\r\n\r\n this.shopPostMessageServ.post(\"check\", sendIt).subscribe(\r\n retRes =>\r\n {\r\n if ( haveError)\r\n {\r\n this.gridData = Util.reindexArray(this.gridData);\r\n this.gridPopulate(this.gridData);\r\n }\r\n else\r\n {\r\n this.close();\r\n }\r\n\r\n this.productAdded.emit();\r\n },\r\n errRes => this.error(errRes));\r\n }\r\n}","export default \"\\r\\n
          \\r\\n
          Order Product
          \\r\\n \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n
          \\r\\n
          \\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 default \".product-grid {\\n height: 30rem;\\n}\\n\\n.total {\\n font-size: 1.5rem;\\n font-weight: bold;\\n}\\n\";","import { Component, EventEmitter, Input, Output, TemplateRef, ViewChild } from \"@angular/core\";\r\nimport { Validators } from \"@angular/forms\";\r\nimport { BaseComponent } from \"@app/data\";\r\nimport { OrderProductStatusType } from \"@app/data/enums/order-product-status-type.enum\";\r\nimport { ShopOrderProduct } from \"@app/data/orders/shop-order-product\";\r\nimport { ShopOrderProductService } from \"@app/data/orders/shop-order-product.service\";\r\nimport { ShopPostMessageService } from \"@app/data/orders/shop-post-message.service\";\r\nimport { CommonSettings } from '@app/shared/common-settings';\r\nimport { ConfirmationService, IConfirmationOptions } from \"@app/shared/confirmation/confirmation.service\";\r\nimport { OrderDataHelper } from '@app/shared/orders/order-data.helper';\r\nimport { Util } from \"@app/utils/util\";\r\nimport { NgbModal } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\n\r\n@Component({\r\n selector: \"order-manual-entry-product\",\r\n styleUrls: [\"./order-product.component.scss\"],\r\n templateUrl: \"./order-product.component.html\"\r\n})\r\nexport class OrderProductComponent extends BaseComponent\r\n{\r\n @ViewChild(\"dialogOrderProduct\")\r\n dialogOrderProduct: TemplateRef;\r\n\r\n @Input()\r\n merchantUID: string;\r\n\r\n @Output()\r\n productSaved = new EventEmitter();\r\n\r\n public get totalAmount()\r\n {\r\n let amt = this.getValue(\"amount\") ?? 0;\r\n let qty = this.getValue(\"quantity\") ?? 0;\r\n\r\n return \"$\" + (amt * qty).toFixed(2);\r\n }\r\n\r\n public minQty;\r\n public errorMessage = null;\r\n public existingOrderUID = null;\r\n public availableProducts;\r\n\r\n private bypassDirty = false;\r\n\r\n constructor(toastrService: ToastrService,\r\n public modalService: NgbModal,\r\n private orderProdServ: ShopOrderProductService,\r\n private confirmService: ConfirmationService,\r\n private shopPostMessageServ: ShopPostMessageService)\r\n {\r\n super(toastrService);\r\n\r\n this.dataForm = this.orderProdServ.dataForm;\r\n this.apiService = this.orderProdServ;\r\n }\r\n\r\n public openDialog(data = null)\r\n {\r\n this.bypassDirty = false;\r\n this.errorMessage = null;\r\n\r\n this.open(this.dialogOrderProduct, data, CommonSettings.DialogSize_XLarge);\r\n\r\n if (data && data.quantityShipped > 0)\r\n {\r\n this.minQty = data.quantityShipped + 1;\r\n }\r\n else\r\n {\r\n this.minQty = 1;\r\n }\r\n\r\n if (data)\r\n {\r\n this.setValue(\"partNumber\", data.product.partNumber);\r\n }\r\n\r\n this.dataForm.get(\"quantity\").setValidators([Validators.required, Validators.min(this.minQty)]);\r\n this.dataForm.get(\"quantity\").updateValueAndValidity();\r\n }\r\n\r\n public onProductChange()\r\n {\r\n this.errorMessage = null;\r\n }\r\n\r\n public onClose()\r\n {\r\n if (!this.dataForm.dirty || this.bypassDirty)\r\n {\r\n this.close();\r\n return;\r\n }\r\n\r\n let opts: IConfirmationOptions =\r\n {\r\n FunctionConfirm: () => this.close()\r\n };\r\n\r\n this.confirmService.YesNo(CommonSettings.DirtyFormConfirmationMessage, opts);\r\n }\r\n\r\n public onProductSearch(term: string, item)\r\n {\r\n let desc = item.customerDescription?.toLowerCase();\r\n let part = item.partNumber?.toLowerCase();\r\n\r\n term = term.toLowerCase();\r\n\r\n return (!Util.isEmpty(desc) && desc.indexOf(term) != -1) || (!Util.isEmpty(part) && part.indexOf(term) != -1);\r\n }\r\n\r\n public onSave()\r\n {\r\n if (this.invalid())\r\n {\r\n return;\r\n }\r\n\r\n if (this.existingOrderUID == null)\r\n {\r\n this.saveToList();\r\n }\r\n else\r\n {\r\n this.saveToExistsOrder();\r\n }\r\n }\r\n\r\n private saveToList()\r\n {\r\n let desc = this.getValue(\"altDescription\");\r\n let part = this.getValue(\"partNumber\");\r\n let prodData = this.dataForm.value;\r\n\r\n if (Util.isEmpty(desc))\r\n {\r\n let prod = this.availableProducts.find(elm => elm.partNumber == part);\r\n\r\n prodData.description = prod.customerDescription ?? \"\";\r\n }\r\n else\r\n {\r\n prodData.description = desc;\r\n }\r\n\r\n prodData.description = `${part} - ${prodData.description}`;\r\n\r\n this.productSaved.emit(prodData);\r\n this.close();\r\n }\r\n\r\n private saveToExistsOrder()\r\n {\r\n let desc = this.getValue(\"altDescription\");\r\n let prodData = this.dataForm.value;\r\n\r\n let saveProd: ShopOrderProduct =\r\n {\r\n amount: prodData.amount,\r\n quantity: prodData.quantity,\r\n lineNumber: this.data?.lineNumber ?? 0,\r\n partNumber: prodData.partNumber,\r\n transactionUID: this.existingOrderUID,\r\n isOrderModification: true\r\n };\r\n\r\n if (Util.isEmpty(desc))\r\n {\r\n saveProd.customerDescription = desc;\r\n }\r\n\r\n this.orderProdServ.postList(\"append-modify-product\", [saveProd]).subscribe(\r\n retRes => this.checkSaveStatus(retRes),\r\n errRes => this.error(errRes));\r\n }\r\n\r\n private checkSaveStatus(retRes)\r\n {\r\n retRes = retRes[0];\r\n\r\n if (retRes.statusType != OrderProductStatusType.active)\r\n {\r\n this.bypassDirty = true;\r\n this.errorMessage = retRes.message;\r\n return;\r\n }\r\n\r\n let sendIt = { uid: this.existingOrderUID, stage: OrderDataHelper.OrderState_Validate };\r\n\r\n this.shopPostMessageServ.post(\"check\", sendIt).subscribe(\r\n retRes =>\r\n {\r\n this.close();\r\n this.productSaved.emit();\r\n },\r\n errRes => this.error(errRes));\r\n }\r\n}","export default \"\\r\\n
          \\r\\n
          Order Product
          \\r\\n \\r\\n
          \\r\\n
          \\r\\n \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n \\r\\n
          \\r\\n
          Part #
          \\r\\n
          Description
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n
          \\r\\n
          {{ item.partNumber }}
          \\r\\n
          {{ item.customerDescription }}
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n
          \\r\\n
          {{ item.partNumber }}
          \\r\\n
          {{ item.customerDescription }}
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n
          Product is required
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n \\r\\n
          \\r\\n
          \\r\\n \\r\\n
          \\r\\n {{ totalAmount }}\\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n
          \";","export default \".total {\\n font-size: 1.5rem;\\n font-weight: bold;\\n}\\n\\n.form-override {\\n max-width: 100%;\\n}\\n\";","import { Component, EventEmitter, Output, TemplateRef, ViewChild } from \"@angular/core\";\r\nimport { BaseComponent, PurchaserService } from \"@app/data\";\r\nimport { PurchaserStatusType } from \"@app/data/enums/purchaser-status-type.enum\";\r\nimport { OrdersNotificationRequest } from \"@app/data/orders/order-notification-request.model\";\r\nimport { OrderNotificationRequestService } from \"@app/data/orders/order-notification-request.service\";\r\nimport { CommonSettings } from \"@app/shared/common-settings\";\r\nimport { Util } from \"@app/utils/util\";\r\nimport { NgbModal } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\n\r\n@Component(\r\n {\r\n selector: \"purchaser-add-dialog\",\r\n styleUrls: [\"./purchaser-add-dialog.component.scss\"],\r\n templateUrl: \"./purchaser-add-dialog.component.html\"\r\n })\r\nexport class PurchaserAddDialogComponent extends BaseComponent\r\n{\r\n @Output()\r\n addPurchaser = new EventEmitter();\r\n\r\n @ViewChild(\"dialogPurchaser\")\r\n dialogPurchaser: TemplateRef;\r\n\r\n public get buttonIcon()\r\n {\r\n if (this.askNote)\r\n {\r\n return this.Icons.Save;\r\n }\r\n\r\n return this.Icons.Search;\r\n }\r\n\r\n public get buttonText()\r\n {\r\n if (this.askNote)\r\n {\r\n return \"Save\";\r\n }\r\n\r\n return \"Find\";\r\n }\r\n\r\n public readonly genericMessage = \"Invalid Purchaser Email address\";\r\n\r\n public askNote: boolean = false;\r\n public inEmail: string;\r\n public retMessage: string;\r\n public sumTingWong: boolean = false;\r\n public sendDisabled: boolean = false;\r\n public sendNotification: boolean = true;\r\n\r\n private merchantUID: string;\r\n private purchaserUID: string;\r\n\r\n constructor(\r\n toastrService: ToastrService,\r\n public modalService: NgbModal,\r\n private purchaserServ: PurchaserService,\r\n private notificationRequestServ: OrderNotificationRequestService)\r\n {\r\n super(toastrService);\r\n\r\n this.modalService = modalService;\r\n }\r\n\r\n public openAdd(merchantUID: string): void\r\n {\r\n this.merchantUID = merchantUID;\r\n this.setupUI();\r\n }\r\n\r\n public openWithSearch(merchantUID: string, email: string): void\r\n {\r\n this.setupUI();\r\n\r\n this.inEmail = email;\r\n this.merchantUID = merchantUID;\r\n this.onAction();\r\n }\r\n\r\n public onInputKeyUp(evtArg)\r\n {\r\n if (evtArg.keyCode == Util.KeyCode_Enter)\r\n {\r\n this.onAction();\r\n }\r\n else\r\n {\r\n this.askNote = false;\r\n this.sumTingWong = false;\r\n this.sendDisabled = false;\r\n }\r\n }\r\n\r\n public onSendChange()\r\n {\r\n this.sendDisabled = (this.sumTingWong && !this.sendNotification);\r\n }\r\n\r\n public onAction()\r\n {\r\n if (Util.isEmpty(this.inEmail))\r\n {\r\n this.close();\r\n return;\r\n }\r\n\r\n if (this.askNote && this.sendNotification)\r\n {\r\n this.saveNotification();\r\n }\r\n else\r\n {\r\n this.findPurchaser();\r\n }\r\n }\r\n\r\n private setupUI()\r\n {\r\n this.askNote = false;\r\n this.inEmail = null;\r\n this.retMessage = null;\r\n this.sumTingWong = false;\r\n this.sendNotification = true;\r\n\r\n this.open(this.dialogPurchaser, null, CommonSettings.DialogSize_Small);\r\n }\r\n\r\n private findPurchaser()\r\n {\r\n this.purchaserServ.findByEmail(this.inEmail).subscribe(\r\n retRes => this.checkEmail(retRes),\r\n errRes =>\r\n {\r\n this.askNote = false;\r\n this.retMessage = errRes;\r\n this.sumTingWong = true;\r\n });\r\n }\r\n\r\n private saveNotification()\r\n {\r\n let saveMe =\r\n {\r\n customerUID: this.merchantUID,\r\n purchaserUID: this.purchaserUID,\r\n purchaserEmailAddress: this.inEmail\r\n };\r\n\r\n this.notificationRequestServ.save(saveMe).subscribe(\r\n retRes =>\r\n {\r\n this.close();\r\n this.success(\"Notification requests sent\");\r\n },\r\n errRes => this.error(errRes));\r\n }\r\n\r\n private checkEmail(retRes)\r\n {\r\n if (Util.isEmpty(retRes))\r\n {\r\n this.askNote = false;\r\n this.retMessage = this.genericMessage;\r\n this.sumTingWong = true;\r\n return;\r\n }\r\n\r\n if (retRes.statusType == PurchaserStatusType.Approved)\r\n {\r\n this.close();\r\n this.addPurchaser.emit(retRes);\r\n return;\r\n }\r\n\r\n this.askNote = (retRes.statusType == PurchaserStatusType.NotFound || retRes.statusType == PurchaserStatusType.New || retRes.statusType == PurchaserStatusType.Pending || retRes.statusType == PurchaserStatusType.PendingReview);\r\n this.retMessage = retRes.searchMessage;\r\n this.sumTingWong = true;\r\n this.purchaserUID = retRes.uid;\r\n }\r\n}","export default \"\\r\\n
          \\r\\n
          Find Purchaser
          \\r\\n \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n
          {{ retMessage }}
          \\r\\n
          \\r\\n \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n
          \\r\\n
          \";","export default \".find-issue {\\n color: #a11;\\n padding: .5rem;\\n}\\n\\n.send-notification {\\n margin: .5rem;\\n}\\n\";","import { HttpClient } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { FormBuilder } from \"@angular/forms\";\r\nimport { ApiService } from \"../api/api.service\";\r\nimport { OrdersCartCheck } from \"./orders-cart-check\";\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class OrdersCartCheckService extends ApiService\r\n{\r\n public get dataForm()\r\n {\r\n let fb = new FormBuilder();\r\n let grp = fb.group(\r\n {\r\n statusType: [],\r\n customerUID: [],\r\n purchaserUID: []\r\n });\r\n\r\n return grp;\r\n }\r\n\r\n constructor(httpClient: HttpClient)\r\n {\r\n super(httpClient, \"order-reports\");\r\n }\r\n}","import { Component } from \"@angular/core\";\r\nimport { Router } from \"@angular/router\";\r\nimport { OrderCommon } from \"@app/data/orders/order-common\";\r\nimport { OrdersCartCheck } from \"@app/data/orders/orders-cart-check\";\r\nimport { OrdersCartCheckService } from \"@app/data/orders/orders-cart-check.service\";\r\nimport { GridBase } from \"@app/shared/ag-grid-helpers/ag-grid-base\";\r\nimport { GridHelpers } from '@app/shared/ag-grid-helpers/grid-helper';\r\nimport { GridColumnCustom } from \"@app/shared/ag-grid-helpers/models/grid-column-custom.model\";\r\nimport { GridColumnMerchant } from \"@app/shared/ag-grid-helpers/models/grid-column-merchant\";\r\nimport { GridColumnPurchaser } from \"@app/shared/ag-grid-helpers/models/grid-column-purchaser\";\r\nimport { GridColumnStatus } from \"@app/shared/ag-grid-helpers/models/grid-column-status\";\r\nimport { GridColumn, GridColumnType } from \"@app/shared/ag-grid-helpers/models/grid-column.model\";\r\nimport { Util } from \"@app/utils/util\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\n\r\n@Component({\r\n selector: \"order-reports-cart-check\",\r\n templateUrl: \"./report-cart-check.component.html\",\r\n})\r\nexport class OrderCartCheckReportComponent extends GridBase\r\n{\r\n constructor(\r\n toastrService: ToastrService,\r\n private router: Router,\r\n private cartCheckService: OrdersCartCheckService)\r\n {\r\n super(toastrService, cartCheckService);\r\n\r\n this.setupGrid();\r\n }\r\n\r\n private setupGrid()\r\n {\r\n let colDate = new GridColumn(\"createdDateEST\", \"Created\", GridColumnType.DateTime);\r\n\r\n colDate.sort = GridHelpers.SortDir_Decending;\r\n\r\n this.storageKey = \"OrderCartCheckReport\";\r\n this.addColumn(new GridColumnStatus(OrderCommon.OrderStatuses));\r\n this.addColumn(colDate);\r\n this.addColumn(new GridColumn(\"createdBy\", \"Created By\"));\r\n this.addColumn(new GridColumnMerchant(\"customer.displayName\", \"customer.uid\"));\r\n this.addColumn(new GridColumnPurchaser(\"purchaser.displayName\", \"purchaser.uid\"));\r\n this.addColumn(new GridColumnCustom(\"poNumber\", \"Order #\", { width: 100 }));\r\n this.addColumn(new GridColumnCustom(\"shippingAddress.state.name\", \"Location\", { cellRenderer: this.renderLocation, filter: \"text\" }));\r\n this.addColumn(new GridColumn(\"distinctProductCount\", \"# Products\", GridColumnType.Number));\r\n this.addColumn(new GridColumn(\"totalQuantity\", \"Qty\", GridColumnType.Number));\r\n this.addColumn(new GridColumn(\"totalAmount\", \"Amount\", GridColumnType.Money));\r\n this.addColumn(new GridColumn(\"message\", \"Message\"));\r\n\r\n this.setServerPath(\"cart-check\");\r\n this.rowDoubleClick(this.onGotoOrder.bind(this));\r\n }\r\n\r\n private renderLocation(params: any)\r\n {\r\n let cnt = params.node.data.shippingAddress?.country?.name;\r\n let state = params.node.data.shippingAddress?.state?.name;\r\n\r\n if (!Util.isEmpty(state))\r\n {\r\n cnt = `${state}, ${cnt}`;\r\n }\r\n\r\n return cnt;\r\n }\r\n\r\n private onGotoOrder(agData)\r\n {\r\n this.router.navigate([\"/admin/order-details\", agData.uid]);\r\n }\r\n}","export default \"\\r\\n\";","import { Component } from \"@angular/core\";\r\nimport { GlobalIcons } from \"@app/shared/GlobalIcons\";\r\nimport { AgRendererComponent } from \"ag-grid-angular\";\r\nimport { ICellRendererParams } from \"ag-grid-community\";\r\n\r\n@Component({\r\n templateUrl: \"./grid-cell-problem-renderer.html\",\r\n})\r\nexport class GridCellProblemRenderer implements AgRendererComponent\r\n{\r\n public readonly Icons = GlobalIcons;\r\n\r\n public tooltip: string;\r\n public probText: string;\r\n\r\n private cellParams: ICellRendererParams;\r\n\r\n constructor()\r\n {\r\n }\r\n\r\n agInit(params: any)\r\n {\r\n this.tooltip = params.data.product.tooltip;\r\n this.probText = params.data.product.status.name;\r\n this.cellParams = params;\r\n }\r\n\r\n refresh(params): boolean\r\n {\r\n this.cellParams = params;\r\n return true;\r\n }\r\n}","export default \"
          \\r\\n {{ probText }}\\r\\n \\r\\n
          \\r\\n\\r\\n \\r\\n\";","import { HttpClient } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { FormBuilder } from \"@angular/forms\";\r\nimport { ApiService } from \"../api/api.service\";\r\nimport { OrdersRemoveProduct } from \"./orders-remove-product\";\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class OrdersRemoveProductService extends ApiService\r\n{\r\n public get dataForm()\r\n {\r\n let fb = new FormBuilder();\r\n let grp = fb.group(\r\n {\r\n statusType: [],\r\n customerUID: [],\r\n purchaserUID: []\r\n });\r\n\r\n return grp;\r\n }\r\n\r\n constructor(httpClient: HttpClient)\r\n {\r\n super(httpClient, \"order-reports\");\r\n }\r\n}","import { Component } from \"@angular/core\";\r\nimport { ActivatedRoute, Router } from \"@angular/router\";\r\nimport { ProfileType } from '@app/data';\r\nimport { OrderCommon } from '@app/data/orders/order-common';\r\nimport { OrdersRemoveProduct } from \"@app/data/orders/orders-remove-product\";\r\nimport { OrdersRemoveProductService } from \"@app/data/orders/orders-remove-product.service\";\r\nimport { GridBase } from \"@app/shared/ag-grid-helpers/ag-grid-base\";\r\nimport { GridHelpers } from \"@app/shared/ag-grid-helpers/grid-helper\";\r\nimport { GridColumnCustom } from \"@app/shared/ag-grid-helpers/models/grid-column-custom.model\";\r\nimport { GridColumnMerchant } from \"@app/shared/ag-grid-helpers/models/grid-column-merchant\";\r\nimport { GridColumnPurchaser } from \"@app/shared/ag-grid-helpers/models/grid-column-purchaser\";\r\nimport { GridColumnStatus } from \"@app/shared/ag-grid-helpers/models/grid-column-status\";\r\nimport { GridColumn, GridColumnType } from \"@app/shared/ag-grid-helpers/models/grid-column.model\";\r\nimport { OrderDataHelper } from '@app/shared/orders/order-data.helper';\r\nimport { ToastrService } from \"ngx-toastr\";\r\nimport { GridCellProblemRenderer } from \"./grid-cell-problem-renderer/grid-cell-problem-renderer\";\r\n\r\n@Component({\r\n selector: \"order-reports-remove-product\",\r\n templateUrl: \"./report-remove-product.component.html\",\r\n})\r\nexport class OrderRemoveProductReportComponent extends GridBase\r\n{\r\n constructor(\r\n toastrService: ToastrService,\r\n private router: Router,\r\n private activeRoute: ActivatedRoute,\r\n private removeProdService: OrdersRemoveProductService)\r\n {\r\n super(toastrService, removeProdService);\r\n\r\n OrderDataHelper.userRole = this.activeRoute.snapshot.data.userType;\r\n\r\n this.setupGrid();\r\n }\r\n\r\n private setupGrid()\r\n {\r\n let colDate = new GridColumn(\"createdDateEST\", \"Created\", GridColumnType.DateTime);\r\n let colProb = new GridColumn(\"product.status.name\", \"Problem\");\r\n\r\n colDate.sort = GridHelpers.SortDir_Decending;\r\n colProb.cellRendererFramework = GridCellProblemRenderer;\r\n\r\n this.storageKey = \"OrderRemoveProductReport\";\r\n this.addColumn(new GridColumnStatus(OrderCommon.OrderStatuses));\r\n this.addColumn(colDate);\r\n\r\n if (OrderDataHelper.userRole == ProfileType.admin)\r\n {\r\n this.addColumn(new GridColumnMerchant(\"customer.displayName\", \"customer.uid\"));\r\n this.addColumn(new GridColumnPurchaser(\"purchaser.displayName\", \"purchaser.uid\"));\r\n }\r\n\r\n this.addColumn(new GridColumnCustom(\"poNumber\", \"Order #\", { width: 100 }));\r\n this.addColumn(new GridColumn(\"destinationCountry\", \"Country\"));\r\n this.addColumn(new GridColumn(\"product.customerDescription\", \"Description\"));\r\n this.addColumn(new GridColumn(\"partNumber\", \"Part #\"));\r\n this.addColumn(colProb);\r\n\r\n this.setServerPath(\"remove-product\");\r\n this.rowDoubleClick(this.onGotoOrder.bind(this));\r\n }\r\n\r\n private onGotoOrder(agData)\r\n {\r\n this.router.navigate([\"/admin/order-details\", agData.uid]);\r\n }\r\n}","export default \"\\r\\n\";","import { Component, Input } from \"@angular/core\";\r\nimport { Util } from \"@app/utils/util\";\r\n\r\n@Component({\r\n selector: \"percent-meter\",\r\n styleUrls: [\"./percent-meter.component.scss\"],\r\n templateUrl: \"./percent-meter.component.html\",\r\n})\r\nexport class PercentMeterComponent\r\n{\r\n public percentValue: number;\r\n\r\n // TODO: These should be in a database or config file\r\n @Input()\r\n lowPoint: number = 5;\r\n\r\n @Input()\r\n highPoint: number = 75;\r\n\r\n @Input()\r\n optimalPoint: number = 100;\r\n\r\n @Input()\r\n get value(): number { return this.percentValue; };\r\n set value(val: number)\r\n {\r\n if (Util.isEmpty(val))\r\n {\r\n val = 0;\r\n }\r\n\r\n if (val < 1)\r\n {\r\n val *= 100;\r\n }\r\n\r\n this.percentValue = Math.round(val);\r\n }\r\n}","export default \"\\r\\n\";","export default \".percent-meter {\\n width: 7rem;\\n height: 2rem;\\n padding: 0rem .5rem;\\n position: relative;\\n}\\n\\n.percent-meter::after {\\n top: 30%;\\n left: 35%;\\n content: attr(title);\\n padding: 0rem .25rem;\\n position: absolute;\\n font-size: .75rem;\\n font-weight: bold;\\n line-height: .75rem;\\n border-radius: .25rem;\\n background-color: rgba(240, 240, 240, 0.75);\\n}\\n\\n.percent-meter-zero-value {\\n border-radius: .25rem;\\n background-color: #fdd;\\n}\\n\";","import { Pipe, PipeTransform } from \"@angular/core\";\r\nimport { DomSanitizer } from \"@angular/platform-browser\";\r\n\r\n@Pipe({ name: \"safeHTML\" })\r\nexport class SafeHTMLPipe implements PipeTransform\r\n{\r\n constructor(private sanitized: DomSanitizer)\r\n {\r\n }\r\n\r\n public transform(value)\r\n {\r\n return this.sanitized.bypassSecurityTrustHtml(value);\r\n }\r\n}","import { Component } from \"@angular/core\";\r\nimport { ProductCountry, ProductCountryService } from \"@app/data\";\r\nimport { GridBase } from \"@app/shared/ag-grid-helpers/ag-grid-base\";\r\nimport { GridCellBoolean } from \"@app/shared/ag-grid-helpers/models/grid-cell-boolean.model\";\r\nimport { GridColumnBoolean } from \"@app/shared/ag-grid-helpers/models/grid-column-boolean\";\r\nimport { GridColumnCustom } from \"@app/shared/ag-grid-helpers/models/grid-column-custom.model\";\r\nimport { GridFilter, GridFilterDataType } from \"@app/shared/ag-grid-helpers/models/grid-filter.model\";\r\nimport { NgbModal } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\n\r\n@Component({\r\n selector: \"app-product-country-list\",\r\n templateUrl: \"./product-country-list.component.html\",\r\n styles: []\r\n})\r\nexport class ProductCountryListComponent extends GridBase\r\n{\r\n constructor(\r\n toastrService: ToastrService,\r\n public modalService: NgbModal,\r\n private productCountryService: ProductCountryService)\r\n {\r\n super(toastrService, productCountryService);\r\n\r\n this.setupGrid();\r\n }\r\n\r\n public onMyGridReady(params)\r\n {\r\n let filt = new GridFilter(this.parentUID, GridFilterDataType.text);\r\n\r\n this.filterAdd(\"productUID\", filt);\r\n this.onGridReady(params);\r\n }\r\n\r\n private setupGrid()\r\n {\r\n let bools = new GridCellBoolean(GridCellBoolean.DefaultYesText, GridCellBoolean.DefaultNoText);\r\n\r\n this.storageKey = \"CountryList-Admin\";\r\n this.addColumn(new GridColumnCustom(\"country.name\", \"Country\", { minWidth: 150 }));\r\n this.addColumn(new GridColumnCustom(\"importHTS\", \"Import HTS\", { minWidth: 150 }));\r\n this.addColumn(new GridColumnBoolean(\"isImportable\", \"Is Importable\", bools, 150));\r\n this.addColumn(new GridColumnCustom(\"individualPermit1\", \"Individual #1\", { minWidth: 150 }));\r\n this.addColumn(new GridColumnCustom(\"governmentPermit1\", \"Government #1\", { minWidth: 150 }));\r\n this.addColumn(new GridColumnCustom(\"businessPermit1\", \"Business #1\", { minWidth: 150 }));\r\n this.addColumn(new GridColumnCustom(\"individualPermit2\", \"Individual #2\", { minWidth: 150 }));\r\n this.addColumn(new GridColumnCustom(\"governmentPermit2\", \"Government #2\", { minWidth: 150 }));\r\n this.addColumn(new GridColumnCustom(\"businessPermit2\", \"Business #2\", { minWidth: 150 }));\r\n\r\n this.setServerPath(\"list\");\r\n }\r\n}\r\n","export default \"
          \\r\\n \\r\\n \\r\\n
          \";","import { CommonSettings } from '@app/shared/common-settings';\r\nimport { Component, OnDestroy, OnInit } from \"@angular/core\";\r\nimport { AuthService, BaseComponent, CustomerService, LookupService, Product, ProductService, ProfileType } from \"@app/data\";\r\nimport { ProductRequestDTO } from \"@app/data/product/product-request.dto\";\r\nimport { NumberValidatorError } from \"@app/infrastructure/form-validators/number-validator\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\nimport { Subscription } from \"rxjs\";\r\n\r\n@Component({\r\n selector: \"app-product-edit\",\r\n templateUrl: \"./product-edit.component.html\"\r\n})\r\nexport class ProductEditComponent extends BaseComponent implements OnInit, OnDestroy\r\n{\r\n public get isAdmin(): boolean\r\n {\r\n return (this.userRole == ProfileType.admin);\r\n }\r\n\r\n private userRole: number;\r\n private subQuest: Subscription;\r\n\r\n constructor(\r\n toastrService: ToastrService,\r\n public merchServ: CustomerService,\r\n public lookupService: LookupService,\r\n private prodServ: ProductService,\r\n private authService: AuthService)\r\n {\r\n super(toastrService);\r\n\r\n this.dataForm = this.prodServ.editorForm;\r\n this.subQuest = this.prodServ.prodQuestion.subscribe((req) => { this.handleQuestion(req) });\r\n this.apiService = prodServ;\r\n }\r\n\r\n async ngOnInit()\r\n {\r\n let myProfile = await this.authService.getProfile$().toPromise();\r\n\r\n this.userRole = myProfile.profileType;\r\n }\r\n\r\n // This is the fix for a race condiction: the HTML is already built before the data is downloaded, so we listen for the data to be changed with this:\r\n ngOnChanges()\r\n {\r\n this.patchValue();\r\n\r\n this.lookupService.getCountryList().add(() => this.fixCountry());\r\n this.lookupService.getProductActionList();\r\n this.lookupService.getProductAmmunitionList();\r\n this.lookupService.getProductCategoryList();\r\n this.lookupService.getProductSellerCategory();\r\n\r\n if (this.data?.uid)\r\n {\r\n if (this.isAdmin)\r\n {\r\n this.setValue(\"customerUID\", this.data.customer.uid);\r\n }\r\n\r\n this.onSellCatChange({ clear: true, uid: this.data.sellerCategoryUID });\r\n this.onAEPCatChange({ clear: true, uid: this.data.categoryUID });\r\n }\r\n\r\n if (!this.isAdmin)\r\n {\r\n this.makeRequired([\"customerDescription\"]);\r\n return;\r\n }\r\n\r\n this.merchServ.getCustomerLookup();\r\n\r\n this.makeRequired([\"customerUID\", \"description\"]);\r\n }\r\n\r\n ngOnDestroy(): void\r\n {\r\n this.subQuest.unsubscribe();\r\n }\r\n\r\n public getNumberErrors(valErrors: any): string\r\n {\r\n let errors = NumberValidatorError.getErrors(valErrors);\r\n\r\n if (errors == null)\r\n {\r\n return null;\r\n }\r\n\r\n return errors.join(\"
          \");\r\n }\r\n\r\n public onSellCatChange(evtArg): void\r\n {\r\n if (!evtArg.clear)\r\n {\r\n this.setValue(\"sellerSubCategoryUID\", null);\r\n }\r\n\r\n this.lookupService.productSellerSubCategory = null;\r\n\r\n if (evtArg.uid)\r\n {\r\n this.lookupService.getProductSellerSubCategory(evtArg.uid);\r\n }\r\n }\r\n\r\n public onAEPCatChange(evtArg): void\r\n {\r\n if (!evtArg.clear)\r\n {\r\n this.setValue(\"subCategoryUID\", null);\r\n }\r\n\r\n this.lookupService.productSubCategoryList = null;\r\n\r\n if (evtArg.uid)\r\n {\r\n this.lookupService.getProductSubCategoryList(evtArg.uid);\r\n }\r\n }\r\n\r\n private fixCountry(): void\r\n {\r\n let idx = this.lookupService.countryList.findIndex(elm => elm.uid == CommonSettings.USAUID);\r\n let moveMe = this.lookupService.countryList.splice(idx, 1);\r\n\r\n this.lookupService.countryList.unshift(moveMe[0]);\r\n }\r\n\r\n private handleQuestion(question: ProductRequestDTO)\r\n {\r\n switch (question.requestID)\r\n {\r\n case ProductRequestDTO.Request_Save:\r\n this.saveIt(question.data);\r\n break;\r\n\r\n case ProductRequestDTO.Request_Close:\r\n case ProductRequestDTO.Request_TabChanged:\r\n let ans = new ProductRequestDTO(question.requestID, this.dataForm.dirty);\r\n\r\n this.prodServ.sendAnswer(ans);\r\n break;\r\n }\r\n }\r\n\r\n private saveIt(statusType)\r\n {\r\n this.setValue(\"statusType\", statusType);\r\n\r\n let sub = this.submit();\r\n\r\n if (sub)\r\n {\r\n sub.add(() => this.submitComplete());\r\n }\r\n else\r\n {\r\n this.sendSaveComplete(null);\r\n }\r\n }\r\n\r\n private submitComplete()\r\n {\r\n if (this.submitError)\r\n {\r\n this.sendSaveComplete(null);\r\n return;\r\n }\r\n\r\n this.sendSaveComplete(this.data);\r\n }\r\n\r\n private sendSaveComplete(data: Product): void\r\n {\r\n let ans = new ProductRequestDTO(ProductRequestDTO.Request_Save, data);\r\n\r\n this.prodServ.sendAnswer(ans);\r\n }\r\n}","export default \"
          \\r\\n \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n \\r\\n
          Merchant is required
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n \\r\\n
          Part Number is required
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n \\r\\n
          Description is required
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n \\r\\n
          Part Number is required
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n \\r\\n
          Description is required
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n Web Related\\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n Manufacturing\\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n Firearms and Firearm Parts\\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n Misc.\\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n Categorizations\\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n
          {{ data.classification }}
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n
          {{ data.exportScheduleB }}
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n
          {{ data.exportHTS }}
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n Overrides\\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\nIf known, enter the weight of the product in kilograms. Otherwise, leave this field blank.\\r\\nEnter the manufacturer of the product\\r\\nIf the product has Universal Product Code (UPC), enter it here. Otherwise, leave this field blank.\\r\\nEnter the caliber of the firearm. For parts, indicate the most common caliber. (Ex: .22)\\r\\nEnter the description of the product\\r\\nProvide a link to an image of the product\\r\\nIf you have an additional image link, enter it here. Otherwise, leave this field blank\\r\\nChoose rimfire or centerfire from the dropdown box\\r\\nIf the product is or has a lithium metal or lithium ion batter, click the button\\r\\nIf the product is a firearm, enter the make. For parts, enter the make of the firearm that the part is used on. If there are multiple makes that the part can used on, enter all of them separated by commas\\r\\nEnter your internal part number for the product. This must match exactly as it is on your website\\r\\nEnter the brand name of the product\\r\\nThis field only applies if you have obtained an official classification determination from the Dept of State or Dept of Commerce. If you have obtained a classification, enter the ECCN or USML number here. Otherwise, leave this blank.\\r\\nEnter the link to the product page on your website.\\r\\nIf you have an additional website link, enter it here. Otherwise, leave this field blank\\r\\nIf the product is a firearm, enter the model. For parts, enter the model of the firearm that the part is used on. If there are multiple models that the part can used on, enter all of them separated by commas\\r\\nYou can enter the weight in pounds only, ounces only or combination of pounds and ounces\\r\\nYou can enter the weight in pounds only, ounces only or combination of pounds and ounces\\r\\nChoose from the dropdown box. For firearms, choose the action/type of the firearm. For parts and accessories of firearms, choose the action/type of the firearm that the part is used for/on. If the part/accessory is not action specific (it can be used on multiple actions/types), please use the most common action that the part can be used for.\\r\\nFor firearms or barrels, enter the length in inches (Ex: 18.5)\\r\\nEnter the highest capacity of any magazine or magazine body\\r\\nFor any products that include magazines as part of a set or kit, enter the amount of magazines included in the set or kit. For firearms, enter the quantity of magazines that ship with the firearm.\\r\\nIf your company is willing to serialize and mark the product in accordance with the EU directive, click the button. Otherwise, leave this unchecked.\\r\\nChoose the product's country of origin from the dropdown box\\r\\nChoose the category from the dropdown box\\r\\nIf you have an additional ID number (other than the part number entered above) for the product, enter it here. Otherwise, leave this field blank.\\r\\nChoose the subcategory from the dropdown box. If none of subcategories apply, choose \\\"Other Proudct Not Listed\\\" at the end of the list\";","import { Component, ElementRef, OnInit, ViewChild } from \"@angular/core\";\r\nimport { FormBuilder, Validators } from \"@angular/forms\";\r\nimport { AuthService, BaseComponent, CustomerService, Product, ProductService, ProfileType } from \"@app/data\";\r\nimport { ProductCommon } from \"@app/data/product/product-common\";\r\nimport { CommonSettings } from \"@app/shared/common-settings\";\r\nimport { ConfirmationService, IConfirmationOptions } from \"@app/shared/confirmation/confirmation.service\";\r\nimport { NgbModal } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\n\r\n@Component(\r\n{\r\n selector: \"app-product-upload\",\r\n templateUrl: \"./product-upload.component.html\"\r\n})\r\nexport class ProductUploadComponent extends BaseComponent implements OnInit\r\n{\r\n @ViewChild(\"dialogUpload\")\r\n dialogUpload: ElementRef;\r\n\r\n public get isAdmin(): boolean\r\n {\r\n return (this.userRole == ProfileType.admin);\r\n }\r\n\r\n public readonly mode_New: number = 1;\r\n public readonly mode_Sent: number = 2;\r\n\r\n public userRole: number;\r\n public fileUpload: File;\r\n public currentMode: number;\r\n\r\n constructor(\r\n toastrService: ToastrService,\r\n public customerService: CustomerService,\r\n private modalServ: NgbModal,\r\n private authService: AuthService,\r\n private formBuilder: FormBuilder,\r\n private confirmService: ConfirmationService,\r\n private productService: ProductService)\r\n {\r\n super(toastrService);\r\n\r\n this.dataForm = this.formBuilder.group(\r\n {\r\n fileName: [, Validators.required],\r\n customerUID: []\r\n });\r\n this.modalService = modalServ;\r\n }\r\n\r\n async ngOnInit()\r\n {\r\n let myProfile = await this.authService.getProfile$().toPromise();\r\n\r\n this.userRole = myProfile.profileType;\r\n\r\n if (this.userRole == ProfileType.admin)\r\n {\r\n this.customerService.getCustomerLookup();\r\n\r\n this.makeRequired([\"customerUID\"]);\r\n }\r\n }\r\n\r\n public openUpload(): void\r\n {\r\n this.open(this.dialogUpload);\r\n this.onAnother();\r\n }\r\n\r\n public onTemplate(): void\r\n {\r\n ProductCommon.getTemplate(this.isAdmin);\r\n }\r\n\r\n public onFileSelect(evtArg): void\r\n {\r\n this.fileUpload = evtArg.target.files[0];\r\n this.formControls[\"fileName\"].setValue(this.fileUpload.name);\r\n\r\n this.dataForm.markAsDirty();\r\n }\r\n\r\n public onClose(): void\r\n {\r\n if (this.currentMode == this.mode_Sent || !this.dataForm.dirty)\r\n {\r\n this.close();\r\n return;\r\n }\r\n\r\n let opts: IConfirmationOptions =\r\n {\r\n FunctionConfirm: () => this.close()\r\n };\r\n\r\n this.confirmService.YesNo(CommonSettings.DirtyFormConfirmationMessage, opts);\r\n }\r\n\r\n public onSave(): void\r\n {\r\n if (this.invalid())\r\n {\r\n return;\r\n }\r\n\r\n this.loading = true;\r\n\r\n this.productService.import(this.fileUpload, this.dataValue).subscribe(\r\n retRes =>\r\n {\r\n this.loading = false;\r\n this.currentMode = this.mode_Sent;\r\n },\r\n errRes =>\r\n {\r\n this.loading = false;\r\n this.error(errRes);\r\n });\r\n }\r\n\r\n public onAnother(): void\r\n {\r\n this.fileUpload = null;\r\n this.currentMode = this.mode_New;\r\n }\r\n}","export default \"\\r\\n
          \\r\\n
          \\r\\n Upload Products\\r\\n
          \\r\\n \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n \\r\\n
          Merchant is required
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n
          Product file is required
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          Please verify the file has the following column headers (columns can be in any order).
          \\r\\n
            \\r\\n
          • ActionType
          • \\r\\n
          • TypeOfAmmo
          • \\r\\n
          • BarrelLength
          • \\r\\n
          • Brand
          • \\r\\n
          • Caliber
          • \\r\\n
          • CustomerDescription
          • \\r\\n
          • IDno
          • \\r\\n
          • ImageLink
          • \\r\\n
          • AdditionalImageLink
          • \\r\\n
          • LithiumOrLithiumIonBattery
          • \\r\\n
          • MagazineCapacityRounds
          • \\r\\n
          • MagazineQuantity
          • \\r\\n
          • Manufacturer
          • \\r\\n
          • CountryOfOrigin
          • \\r\\n
          • Ounces
          • \\r\\n
          • PartNo
          • \\r\\n
          • Pounds
          • \\r\\n
          • UPC
          • \\r\\n
          • ProductPageLink
          • \\r\\n
          • CJorCCATSClassification (optional)
          • \\r\\n
          • SellerCategory (optional)
          • \\r\\n
          • SellerSubCategory (optional)
          • \\r\\n
          • Model (optional)
          • \\r\\n
          • Make (optional)
          • \\r\\n
          • WeightInKilograms (optional)
          • \\r\\n
          • IsSerializable (optional)
          • \\r\\n
          • AEPDescription (optional)
          • \\r\\n
          • Category (optional)
          • \\r\\n
          • SubCategory (optional)
          • \\r\\n
          • WebsiteCategory (optional)
          • \\r\\n
          • WebsiteSubCategory (optional)
          • \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n File has been uploaded successfully.
          \\r\\n Please wait up to 1-2 minutes to process the rules.\\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n \\r\\n
          \\r\\n
          \";","import { GlobalIcons } from '@app/shared/GlobalIcons';\r\nimport { Component, ElementRef, ViewChild } from \"@angular/core\";\r\nimport { CommonSettings } from '@app/shared/common-settings';\r\nimport { NgbModal, NgbModalRef } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { PrivacyPolicyComponent } from \"../privacy-policy/privacy-policy.component\";\r\n\r\n@Component({\r\n selector: \"app-purchaser-terms\",\r\n templateUrl: \"./purchaser-terms.component.html\"\r\n})\r\nexport class PurchaserTermsComponent\r\n{\r\n @ViewChild(\"dialogTerms\")\r\n dialogTerms: ElementRef;\r\n\r\n @ViewChild(\"dialogPolicy\")\r\n dialogPolicy: PrivacyPolicyComponent;\r\n\r\n public readonly Icons = GlobalIcons;\r\n\r\n private modalRef: NgbModalRef;\r\n\r\n constructor(private modalService: NgbModal)\r\n {\r\n }\r\n\r\n public open()\r\n {\r\n let opts = CommonSettings.DialogOptions(CommonSettings.DialogSize_XLarge);\r\n\r\n this.modalRef = this.modalService.open(this.dialogTerms, opts);\r\n }\r\n\r\n public onClose()\r\n {\r\n this.modalRef.close();\r\n }\r\n\r\n public onPolicy()\r\n {\r\n this.dialogPolicy.open();\r\n }\r\n}","export default \"\\r\\n
          \\r\\n
          Terms of Service
          \\r\\n \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n

          EasyExport Purchaser Terms of Service

          \\r\\n

          Effective Date:  February 1, 2020 

          \\r\\n

          By requesting and using an EasyExport® Purchaser Account, you (“You,”\\r\\n “you,” or “Purchaser”) agree to be bound by these Terms of Service.

          \\r\\n
            \\r\\n
          1. Lawful Commerce. The mission of EasyExport is to facilitate lawful international\\r\\n commerce in U.S. firearms, parts, optics and related sporting and outdoor products\\r\\n (“Products”). We do this by assisting U.S. merchants with their export transactions (in\\r\\n this document we refer to American online stores that use EasyExport to process exports as\\r\\n “Merchants”). You agree that you will only use your EasyExport Purchaser Account to make\\r\\n purchases that are lawful under United States law, the laws of your country and any other applicable\\r\\n international laws. You represent to us that you are authorized to purchase, import, possess and use every\\r\\n Product you purchase that is processed by EasyExport. If you are a dealer or distributor, you also\\r\\n represent to us that you are authorized to resell Products you purchase for resale.
          2. \\r\\n
          3. Lawful End Use. You are required to use the Products you purchase from Merchants only\\r\\n for lawful purposes in your country. For example, you cannot purchase Products for other people if you do\\r\\n not have all necessary authority to do so under the laws of your country. You also are not allowed to\\r\\n purchase Products that will be used for unlawful purposes in your country or anywhere else.
          4. \\r\\n
          5. No Export. If the commercial invoice included by the Merchant with your shipment states\\r\\n that Products cannot be re-exported, you must use those Products only in your country and may not take\\r\\n them anywhere else or sell or give them to anyone who intends to take them outside your country.
          6. \\r\\n
          7. Purchaser Account. Your Purchaser Account enables EasyExport to process orders you\\r\\n place with any Merchant. The information you provide is used to assure that your order is shipped by the\\r\\n Merchant in compliance with U.S. export laws and import regulations in your country. EasyExport will block\\r\\n access to Purchaser Account setup or usage to anyone who it believes seeks access for reasons that are\\r\\n inconsistent with EasyExport's mission or policies.
          8. \\r\\n
          9. Account Information Complete and Accurate. By providing information or uploading\\r\\n documents to EasyExport in connection with your Purchaser Account or any transaction EasyExport processes\\r\\n on behalf of a Merchant, you warrant that all information you provide and all documents you upload are\\r\\n true, accurate, complete and do not omit any information that we would need to see in order to fully\\r\\n understand the information and documents you have provided.
          10. \\r\\n
          11. Discretionary Approval. EasyExport uses the information you provide, the documents you\\r\\n upload and other sources of information to decide whether to approve your account. We may need to ask you\\r\\n for additional or clarifying information to help us make our decision. If we do, we apologize for the\\r\\n additional work, but we request your cooperation. It is additional work for us, too. Please respond to\\r\\n questions as soon as you can to avoid delay. Our decision to approve or not approve an account is made by\\r\\n EasyExport in our sole discretion. If you believe we have made a mistake, please tell us by writing\\r\\n to buyers@easyexport.net. Our ultimate decision is\\r\\n final.
          12. \\r\\n
          13. Termination of Purchaser Account. EasyExport may suspend or terminate your EasyExport\\r\\n Purchaser Account at any time and for any reason without notifying you in advance. EasyExport receives\\r\\n information continuously from a variety of sources that affect decisions it continuously makes about\\r\\n safety, security, or legality of shipments by Merchants to specific purchasers or to categories of\\r\\n purchasers. Decisions regarding previously approved Purchaser Accounts that are based on such information\\r\\n ordinarily will be implemented immediately. If you are affected by such a decision, we will communicate\\r\\n with you as soon as we can. We have no obligation to share with you our reasons for terminating your\\r\\n account or any information relating to termination.
          14. \\r\\n
          15. Updating Account Information. Information in your approved EasyExport Purchaser Account\\r\\n is used to populate name, address and other fields of information at the Merchant's website when you make\\r\\n a purchase. You will not be able to make changes at the Merchant's website when you make a purchase. If\\r\\n you wish to change that information, you must change it in your EasyExport Purchaser Account.\\r\\n Please note that most changes need to be approved before they take effect and will result in a\\r\\n temporary suspension of your account until they have been approved. \\r\\n
          16. \\r\\n
          17. Updating Licenses and Permits. If you expect to purchase firearms, firearm parts,\\r\\n firearm accessories or optics for firearms, we require that individuals upload their firearm permit or\\r\\n permits. We ask dealers and distributors to upload their business licenses and licenses to sell firearms\\r\\n and related products. When you make a purchase, EasyExport will check whether these permits are in effect.\\r\\n We may ask you to upload a new permit before clearing certain items for shipment by the Merchant.\\r\\n Please upload copies of original documents, not translations. Documents not originally issued in\\r\\n English must be uploaded in the original language in pdf format.\\r\\n
          18. \\r\\n
          19. Import Permits. If you buy something from a Merchant that requires an import permit\\r\\n when it enters your country or when it is delivered to you, we will enable the Merchant to identify the\\r\\n item for you before you complete the checkout process. You will be required to upload a valid\\r\\n import permit to your EasyExport Purchaser Account before it can ship. Please upload\\r\\n copies of original documents, not translations. Documents not originally issued in English must be\\r\\n uploaded in the original language in pdf format. 
          20. \\r\\n
          21. Export Licenses. If a Merchant requires an export license from the United States\\r\\n Government before shipping an item to you, we will enable the Merchant to identify the item for you before\\r\\n you complete the checkout process. It ordinarily takes 30-45 days to obtain an export license so please\\r\\n allow extra time for those items. The Merchant can provide specific information about shipment of your\\r\\n order.
          22. \\r\\n
          23. Limited Value Exception (LVS) (Small Orders). Small orders of firearm parts and\\r\\n accessories and certain other items may be exempt from requirements for an export license that would apply\\r\\n if the order were larger. EasyExport will automatically calculate when the LVS exception applies to an\\r\\n order. There are annual limits on the amounts that each Merchant can ship to you using this exception.\\r\\n EasyExport keeps track of your usage. If you exceed your annual limit for a type of Product, you will be\\r\\n told prior to completing the checkout process that certain items require an export license. After you have\\r\\n reached the annual limit, even small orders will require a license until the next calendar year.\\r\\n You are not allowed to split large orders into smaller parts in order to avoid the need for\\r\\n Merchants to obtain export licenses. Splitting orders to avoid U.S. export licenses is cause for\\r\\n termination of your Purchaser Account.\\r\\n
          24. \\r\\n
          25. Import, Customs and Duty Information. The dashboard in your Purchaser Account contains\\r\\n FAQs regarding import regulations and permits, customs duties and other import charges that may apply to\\r\\n purchases you make from Merchants. The FAQs also provide information regarding U.S. export regulations\\r\\n that apply to exports to your country. This information is provided for your convenience, but we encourage\\r\\n you to contact the local authorities identified in the FAQs for precise information relating to your\\r\\n purchase. We believe the information we provide is accurate, but we are not attorneys and do not provide\\r\\n legal advice. If you believe any of the information we have provided is not accurate, please tell us by\\r\\n writing to buyers@easyexport.net.\\r\\n EasyExport FAQs are provided for the use of approved EasyExport purchasers only. Copying,\\r\\n distributing or posting EasyExport FAQs is prohibited. Violation of this rule is cause for termination\\r\\n of your Purchaser Account, in addition to other legal remedies available to us.\\r\\n
          26. \\r\\n
          27. Restrictions on Certain Sales. Restrictions may apply to certain items that Merchants\\r\\n offer in their online stores that prevent you from purchasing them. These restrictions are discussed in\\r\\n the FAQs in your Purchaser Account dashboard. Merchants may not be familiar with the restrictions, so\\r\\n contact us with questions at buyers@easyexport.net.\\r\\n
          28. \\r\\n
          29. Shipment of Firearms, Frames and Receivers to Individuals Prohibited. We have advised\\r\\n Merchants that EasyExport cannot be used to process shipments of firearms, firearm frames or receivers\\r\\n directly to individuals. If you are an individual and wish to purchase a firearm, frame or receiver,\\r\\n please arrange for a dealer near you to create a Purchaser Account and purchase the item for you.\\r\\n EasyExport will collect and post the names of dealers who are willing to perform this service for\\r\\n individuals for a nominal charge, so please tell us if you have a good experience with a dealer who\\r\\n purchases a firearm, frame or receiver for you. You can write to buyers@easyexport.net
          30. \\r\\n
          31. Shipping. Questions about shipping should be directed to the Merchant. EasyExport does\\r\\n not handle shipment of items Merchants sell to you.
          32. \\r\\n
          33. Returns. Questions about your ability to return items you have purchased should be\\r\\n directed to the Merchant. Please understand that in most instances, it will not be possible for Merchants\\r\\n to accept returns of items to which export regulations in your country or import regulations in the United\\r\\n States apply. 
          34. \\r\\n
          35. No EasyExport Involvement in Purchase Transaction. EasyExport is not involved in the\\r\\n purchase transactions you engage in with Merchants. Our sole function is to process exports to approved\\r\\n purchasers. If you have questions about Products, prices, shipping, return policies, warranties, or\\r\\n related matters, those should be directed to the Merchant. Consult the information on each Merchant's\\r\\n website for that Merchant's policies, especially policies relating to international shipments.
          36. \\r\\n
          37. No Warranties. EasyExport makes no warranties about its own services or the Products or\\r\\n services provided by Merchants. Warranties for Products are a matter between you and the Merchant.
          38. \\r\\n
          39. No Liability for Service Interruptions, Delay, Errors or Omissions. EasyExport\\r\\n recognizes that its service supports online sales to purchasers around the world. Those sales take place\\r\\n 24 hours a day 7 days a week. There is never a good time for our system to be out of service or for a\\r\\n delay or error to occur in processing an order, and we do our best to ensure those things don't happen. We\\r\\n apologize for any inconvenience to you when system outages, delays or errors occur, but we are not legally\\r\\n responsible for any loss or damage you may sustain as a result of any service interruption, delay, error\\r\\n or omission.
          40. \\r\\n
          41. EasyExport is Not a Buying Agent, Merchant or Broker. EasyExport does not act as a\\r\\n buying agent, merchant or broker.
          42. \\r\\n
          43. Reporting Suspected Abuse. Abuse of the EasyExport system by any purchaser jeopardizes\\r\\n the ability of Merchants to continue offering you and other purchasers convenient access to U.S. Merchants\\r\\n of firearms, parts, optics and related products. If you have information relating to possible abuse of the\\r\\n EasyExport system, please tell us by writing to hotline@easyexport.net. If we report the information you give\\r\\n us to law enforcement authorities, we may be required to disclose your identity to the law enforcement\\r\\n authorities. We will not disclose your identity to anyone else other than our attorneys, if required.\\r\\n Thank you in advance for any information you share with us regarding actual or possible\\r\\n abuse.\\r\\n
          44. \\r\\n
          45. Cooperation with Law Enforcement Authorities. EasyExport cooperates with law\\r\\n enforcement authorities as required or requested to prevent or combat unauthorized or illegal use of\\r\\n EasyExport's services. 
          46. \\r\\n
          47. Privacy. Please refer to the Privacy Policy for EasyExport Purchasers and the current privacy policies posted by Merchants.
          48. \\r\\n
          49. Amendment. We reserve the right to amend, modify or replace these Terms of Service at\\r\\n any time without notice to you other than by posting amended, modified, or new Terms of Service on the\\r\\n EasyExport website or in the portal to your Purchaser Account. This version of the Terms of Service will\\r\\n expire when it is replaced by a subsequent version.
          50. \\r\\n
          51. EasyExport. EasyExport is an export processing service operated by Automated Export\\r\\n Processing, Inc., a corporation organized under the laws of the State of Delaware in the United States of\\r\\n America. Automated Export Processing, Inc. is an independent business that is not affiliated with the U.S.\\r\\n merchants who use EasyExport services to process export transactions. In these Terms of Service,\\r\\n “we,” “us” and “EasyExport” refer to Automated Export\\r\\n Processing, Inc.
          52. \\r\\n
          53. Reaffirmation of Consent. Every time you log in to your Purchaser Account or make a\\r\\n purchase from a Merchant, you will be deemed to have reaffirmed your agreement to the EasyExport\\r\\n Purchaser Terms of Service and the Privacy Policy for EasyExport Purchasers then in effect.  \\r\\n
          54. \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n
          \\r\\n\";","import { Component, Input } from \"@angular/core\";\r\nimport { Status } from \"@app/data/model/status\";\r\n\r\n@Component({\r\n selector: \"status-badge\",\r\n styleUrls: [\"./status-badge.component.scss\"],\r\n templateUrl: \"./status-badge.component.html\",\r\n})\r\nexport class StatusBadgeComponent\r\n{\r\n @Input()\r\n sizeLarge: boolean = true;\r\n\r\n @Input()\r\n status: Status;\r\n\r\n @Input()\r\n statusWidth: number = null;\r\n\r\n @Input()\r\n statusType: number;\r\n\r\n @Input()\r\n statusList: any;\r\n\r\n public statusName: string;\r\n public statusClass: string;\r\n\r\n constructor()\r\n {\r\n }\r\n\r\n public ngOnChanges(): void\r\n {\r\n if (this.statusType)\r\n {\r\n let myStatus = this.statusList.find(elm => elm.id == this.statusType);\r\n\r\n if (!myStatus)\r\n {\r\n return;\r\n }\r\n\r\n this.statusName = myStatus.name;\r\n this.statusClass = this.statusName.toLowerCase().replace(\" \", \"\");\r\n }\r\n else\r\n {\r\n this.statusName = this.status?.name;\r\n this.statusClass = this.status?.name.toLowerCase().replace(\" \", \"\");\r\n }\r\n }\r\n}","export default \"
          {{ statusName }}
          \";","export default \".status-large {\\n width: 10rem;\\n padding: .5rem;\\n font-size: 1rem;\\n line-height: 1rem;\\n}\\n\";","import { Component, OnInit } from \"@angular/core\";\r\nimport { AppService } from \"@app/app.service\";\r\nimport { AuthService, BaseComponent, LookupService, Profile, ProfileService, ProfileType } from \"@app/data\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\n\r\n@Component({\r\n selector: \"my-profile\",\r\n styleUrls: [\"./my-profile.component.scss\"],\r\n templateUrl: \"./my-profile.component.html\"\r\n})\r\nexport class MyProfileComponent extends BaseComponent implements OnInit\r\n{\r\n constructor(\r\n toastrService: ToastrService,\r\n public lookupServ: LookupService,\r\n private appService: AppService,\r\n private authService: AuthService,\r\n private profileServ: ProfileService)\r\n {\r\n super(toastrService);\r\n\r\n this.title = \"My Profile\";\r\n this.dataForm = this.profileServ.editorForm;\r\n this.apiService = this.profileServ;\r\n this.appService.pageTitle = this.title;\r\n }\r\n\r\n ngOnInit(): void\r\n {\r\n this.lookupServ.getLanguageList();\r\n this.lookupServ.getTimezoneList();\r\n\r\n this.authService.getProfile$().subscribe(() => this.profileLoaded());\r\n }\r\n\r\n public onSave()\r\n {\r\n let sub = this.submit(\"save-basic\");\r\n\r\n if (sub)\r\n {\r\n sub.add(() => this.doneDidSaved());\r\n }\r\n }\r\n\r\n private profileLoaded()\r\n {\r\n this.data = this.authService.profile;\r\n this.patchValue();\r\n\r\n if (this.data.profileType == ProfileType.admin)\r\n {\r\n this.lookupServ.getCountryList();\r\n\r\n this.makeRequired([\"countryUID\"]);\r\n }\r\n else\r\n {\r\n this.makeRequired([\"countryUID\"], false);\r\n }\r\n }\r\n\r\n private doneDidSaved()\r\n {\r\n if (!this.submitError)\r\n {\r\n this.success(\"Profile saved\");\r\n }\r\n }\r\n}","export default \"
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n
          First name is required
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n
          Last name is required
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n \\r\\n
          Country is required
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n \\r\\n
          Language is required
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n\";","export default \".profile-main {\\n border: 1px solid #ccc;\\n padding: .5rem 1rem;\\n max-width: 60rem;\\n border-radius: .25rem;\\n background-color: #fff;\\n}\\n\";","export class TaskRequestDTO\r\n{\r\n public static readonly TaskRequest_Save = 1;\r\n public static readonly TaskRequest_Update = 2;\r\n public static readonly TaskRequest_FormDirty = 3;\r\n public static readonly TaskRequest_TabChanged = 4;\r\n\r\n data: any;\r\n taskID: number;\r\n\r\n constructor(taskID: number = 0, data: any = null)\r\n {\r\n this.data = data;\r\n this.taskID = taskID;\r\n }\r\n}","import { HttpClient } from \"@angular/common/http\";\r\nimport { Injectable } from '@angular/core';\r\nimport { FormBuilder, Validators } from \"@angular/forms\";\r\nimport { ApiResult, ApiService } from '@app/data';\r\nimport { Lookup } from \"@app/data/lookup/lookup\";\r\nimport { Observable, Subject } from \"rxjs\";\r\nimport { TaskRequestDTO } from \"./task-request.dto\";\r\nimport { TaskWork } from \"./taskwork.model\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class TaskService extends ApiService\r\n{\r\n public get editorForm()\r\n {\r\n let form = new FormBuilder();\r\n let grpFields = form.group(\r\n {\r\n uid: [],\r\n note: [],\r\n dueDate: [],\r\n taskDate: [],\r\n entityUID: [, Validators.required],\r\n entityType: [, Validators.required],\r\n isBillable: [],\r\n statusType: [],\r\n completeDate: [],\r\n priorityType: [, Validators.required],\r\n assignedToUID: [],\r\n taskCategoryUID: [, Validators.required],\r\n taskDescription: [, Validators.required]\r\n });\r\n\r\n return grpFields;\r\n }\r\n\r\n public taskAnswer: Observable;\r\n public taskQuestion: Observable;\r\n\r\n private messageAnswer = new Subject();\r\n private messageQuestion = new Subject();\r\n\r\n constructor(httpClient: HttpClient)\r\n {\r\n super(httpClient, \"tasks\");\r\n\r\n this.taskAnswer = this.messageAnswer.asObservable();\r\n this.taskQuestion = this.messageQuestion.asObservable();\r\n }\r\n\r\n public sendAnswer(request: TaskRequestDTO)\r\n {\r\n this.messageAnswer.next(request);\r\n }\r\n\r\n public sendQuestion(request: TaskRequestDTO)\r\n {\r\n this.messageQuestion.next(request);\r\n }\r\n\r\n public getCategories(entityType: number)\r\n {\r\n let path = this.buildUrl(\"categories\");\r\n\r\n return this.httpClient.post>(path, { entityType });\r\n }\r\n}","import { Component, Input, OnDestroy, OnInit } from \"@angular/core\";\r\nimport { BaseComponent, Lookup, ProfileService } from \"@app/data\";\r\nimport { Priority } from \"@app/data/enums/priority.enum\";\r\nimport { TaskStatus } from \"@app/data/enums/task-status.enum\";\r\nimport { TaskCommon } from \"@app/data/tasks/task-common\";\r\nimport { TaskRequestDTO } from \"@app/data/tasks/task-request.dto\";\r\nimport { TaskWork } from '@app/data/tasks/taskwork.model';\r\nimport { TaskService } from \"@app/data/tasks/taskwork.service\";\r\nimport { CommonSettings } from '@app/shared/common-settings';\r\nimport { DateFormatter } from '@app/shared/pipes/date-formatter.pipe';\r\nimport { DateHelper } from '@app/utils/date-helper';\r\nimport { Util } from \"@app/utils/util\";\r\nimport { NgbDateAdapter } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport * as moment from \"moment\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\nimport { Subscription } from \"rxjs\";\r\n\r\n@Component({\r\n selector: \"my-task-detail\",\r\n templateUrl: \"./my-task-detail.component.html\"\r\n})\r\nexport class MyTaskDetailComponent extends BaseComponent implements OnInit, OnDestroy\r\n{\r\n @Input()\r\n entityUID: string;\r\n\r\n @Input()\r\n entityType: number;\r\n\r\n public get haveChanges(): boolean\r\n {\r\n return this.dataForm.dirty;\r\n }\r\n\r\n public get haveDueDate(): boolean\r\n {\r\n let dd = this.getValue(\"dueDate\");\r\n\r\n return !Util.isEmpty(dd);\r\n }\r\n\r\n public readonly priorities = CommonSettings.Priorities;\r\n public readonly taskStatus = TaskCommon.TaskStatuses;\r\n\r\n public hoursList: number[] = [1, 2, 4, 6, 8, 12, 24, 36, 48];\r\n public categories: Lookup[];\r\n\r\n private taskSub: Subscription;\r\n private ogDueDate: Date;\r\n\r\n constructor(\r\n toastrService: ToastrService,\r\n public profileServ: ProfileService,\r\n private taskServ: TaskService,\r\n private dateAdapter: NgbDateAdapter)\r\n {\r\n super(toastrService);\r\n\r\n this.taskSub = this.taskServ.taskQuestion.subscribe((request) => { this.handleQuestions(request) });\r\n this.dataForm = this.taskServ.editorForm;\r\n this.ogDueDate = null;\r\n this.apiService = this.taskServ;\r\n }\r\n\r\n ngOnInit(): void\r\n {\r\n this.taskServ.getCategories(this.entityType).subscribe((retRes) => this.categories = retRes.results);\r\n\r\n this.profileServ.getProfileList();\r\n this.setupUI();\r\n }\r\n\r\n ngOnDestroy()\r\n {\r\n this.taskSub.unsubscribe();\r\n }\r\n\r\n public onAssignedChanged()\r\n {\r\n this.setValue(\"statusType\", TaskStatus.New);\r\n }\r\n\r\n public onStatusChange()\r\n {\r\n let stat = this.getValue(\"statusType\");\r\n\r\n if (stat == TaskStatus.Complete)\r\n {\r\n this.setValue(\"completeDate\", DateFormatter.Now);\r\n }\r\n else\r\n {\r\n this.setValue(\"completeDate\", null);\r\n }\r\n }\r\n\r\n public onDueHoursAdd(evtArg): void\r\n {\r\n let currDate = moment(this.getValue(\"taskDate\"));\r\n\r\n currDate.add(evtArg, \"hours\");\r\n\r\n this.setValue(\"dueDate\", currDate.format(DateFormatter.FormatDateTime));\r\n }\r\n\r\n public onDueClear(): void\r\n {\r\n this.setValue(\"dueDate\", null);\r\n }\r\n\r\n private setupUI()\r\n {\r\n if (!this.data)\r\n {\r\n this.setValue(\"taskDate\", DateHelper.formatDate(DateFormatter.Now, DateFormatter.FormatDateTime));\r\n this.setValue(\"entityUID\", this.entityUID);\r\n this.setValue(\"entityType\", this.entityType);\r\n this.setValue(\"statusType\", TaskStatus.New);\r\n this.setValue(\"priorityType\", Priority.Medium);\r\n return;\r\n }\r\n\r\n this.patchValue();\r\n\r\n this.disable([\"taskDate\"]);\r\n this.setValue(\"taskDate\", DateHelper.formatDate(this.data.taskDate, DateFormatter.FormatDateTime));\r\n\r\n this.readOnly = (this.data.statusType == TaskStatus.Complete);\r\n }\r\n\r\n private handleQuestions(request: TaskRequestDTO)\r\n {\r\n switch (request.taskID)\r\n {\r\n case TaskRequestDTO.TaskRequest_Save:\r\n this.saveTask();\r\n break;\r\n }\r\n }\r\n\r\n private saveTask()\r\n {\r\n let note = [];\r\n\r\n if (this.data?.uid == null)\r\n {\r\n note.push(\"Task created\");\r\n }\r\n else\r\n {\r\n if (this.fieldDiff(\"assignedToUID\"))\r\n {\r\n let ass = this.getValue(\"assignedToUID\");\r\n let dude = this.profileServ.lookupList.find(elm => elm.uid == ass);\r\n\r\n note.push(\"Task assigned to: \" + dude.name);\r\n }\r\n\r\n if (this.fieldDiff(\"priorityType\"))\r\n {\r\n let pri = this.getValue(\"priorityType\");\r\n let dude = this.priorities.find(elm => elm.id == pri);\r\n\r\n note.push(\"Priority changed to \" + dude.name);\r\n }\r\n\r\n if (this.fieldDiff(\"completeDate\"))\r\n {\r\n note.push(\"Task marked as complete\");\r\n }\r\n }\r\n\r\n this.setValue(\"note\", note.join(\"\\n\"));\r\n\r\n let obby = this.submit();\r\n\r\n if (obby != null)\r\n {\r\n obby.add(() => this.saveDone());\r\n }\r\n }\r\n\r\n private fieldDiff(who: string)\r\n {\r\n return this.data[who] != this.getValue(who);\r\n }\r\n\r\n private saveDone()\r\n {\r\n if (this.submitError)\r\n {\r\n return;\r\n }\r\n\r\n this.readOnly = (this.data.statusType == TaskStatus.Complete);\r\n\r\n // The readOnly set above is causing the form to be dirty. Why??\r\n this.dataForm.markAsPristine();\r\n\r\n let ans = new TaskRequestDTO(TaskRequestDTO.TaskRequest_Save, this.data);\r\n\r\n this.taskServ.sendAnswer(ans);\r\n }\r\n}","export default \"
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n \\r\\n
          Product is required
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n
          \\r\\n \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n
          \\r\\n \\r\\n \\r\\n
          \\r\\n \\r\\n
          \\r\\n \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n
          \\r\\n \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n
          Task description is required
          \\r\\n
          \\r\\n
          \\r\\n
          \";","import { Component, Input, OnDestroy, TemplateRef, ViewChild } from \"@angular/core\";\r\nimport { BaseComponent } from \"@app/data\";\r\nimport { TaskEntity } from \"@app/data/enums/task-entity.enum\";\r\nimport { TaskStatus } from \"@app/data/enums/task-status.enum\";\r\nimport { TaskCommon } from \"@app/data/tasks/task-common\";\r\nimport { TaskRequestDTO } from \"@app/data/tasks/task-request.dto\";\r\nimport { TaskWork } from \"@app/data/tasks/taskwork.model\";\r\nimport { TaskService } from \"@app/data/tasks/taskwork.service\";\r\nimport { CommonSettings } from \"@app/shared/common-settings\";\r\nimport { ConfirmationService, IConfirmationOptions } from \"@app/shared/confirmation/confirmation.service\";\r\nimport { NgbModal } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\nimport { Subscription } from \"rxjs\";\r\n\r\n@Component({\r\n selector: \"my-task-dialog\",\r\n templateUrl: \"./my-task-dialog.component.html\"\r\n})\r\nexport class MyTaskDialogComponent extends BaseComponent implements OnDestroy\r\n{\r\n @Input()\r\n entityUID: string;\r\n\r\n @Input()\r\n entityType: number;\r\n\r\n @ViewChild(\"dialogTask\")\r\n dialogTask: TemplateRef;\r\n\r\n public get canSave()\r\n {\r\n return (this.setTab == TaskCommon.TaskTab_Detail && (this.taskData == null || this.taskData.statusType != TaskStatus.Complete));\r\n }\r\n\r\n public taskData;\r\n public entityTitle: string;\r\n\r\n private setTab: number;\r\n private closing: boolean = false;\r\n private holdTab: number;\r\n private taskSubAns: Subscription;\r\n private taskSubQues: Subscription;\r\n private closeAfterSave: boolean;\r\n\r\n constructor(\r\n toastrService: ToastrService,\r\n public modalService: NgbModal,\r\n private taskService: TaskService,\r\n private confirmService: ConfirmationService)\r\n {\r\n super(toastrService);\r\n\r\n this.taskSubAns = this.taskService.taskAnswer.subscribe((req) => { this.handleAnswers(req) });\r\n this.taskSubQues = this.taskService.taskQuestion.subscribe((req) => { this.handleQuestion(req) });\r\n this.modalService = modalService;\r\n }\r\n\r\n ngOnDestroy()\r\n {\r\n this.taskSubAns.unsubscribe();\r\n this.taskSubQues.unsubscribe();\r\n }\r\n\r\n public openAdd()\r\n {\r\n this.taskData = null;\r\n\r\n this.setupUI();\r\n }\r\n\r\n public openEdit(data: TaskWork, gotoTab: number = 0): void\r\n {\r\n this.taskData = data;\r\n this.entityUID = data.entityUID;\r\n this.entityType = data.entityType;\r\n\r\n this.setupUI();\r\n\r\n if (gotoTab != 0)\r\n {\r\n this.holdTab = gotoTab;\r\n this.gotoTab();\r\n }\r\n }\r\n\r\n public onClose()\r\n {\r\n this.closing = true;\r\n this.taskService.sendQuestion(new TaskRequestDTO(TaskRequestDTO.TaskRequest_FormDirty));\r\n }\r\n\r\n public onSave(closeMe: boolean)\r\n {\r\n this.closeAfterSave = closeMe;\r\n\r\n this.taskService.sendQuestion(new TaskRequestDTO(TaskRequestDTO.TaskRequest_Save));\r\n }\r\n\r\n private setupUI()\r\n {\r\n this.setTab = TaskCommon.TaskTab_Detail;\r\n this.closing = false;\r\n this.entityTitle = TaskEntity[this.entityType];\r\n\r\n this.open(this.dialogTask, null, CommonSettings.DialogSize_XLarge);\r\n }\r\n\r\n private handleAnswers(answer: TaskRequestDTO)\r\n {\r\n switch (answer.taskID)\r\n {\r\n case TaskRequestDTO.TaskRequest_FormDirty:\r\n this.handleDirty(answer);\r\n break;\r\n\r\n case TaskRequestDTO.TaskRequest_Save:\r\n this.saveComplete(answer.data);\r\n break;\r\n }\r\n }\r\n\r\n private handleQuestion(request: TaskRequestDTO)\r\n {\r\n switch (request.taskID)\r\n {\r\n case TaskRequestDTO.TaskRequest_TabChanged:\r\n this.handleChangeTab(request.data);\r\n break;\r\n }\r\n }\r\n\r\n private handleDirty(answer)\r\n {\r\n if (answer.data)\r\n {\r\n this.askToSave();\r\n }\r\n else\r\n {\r\n this.whatNext();\r\n }\r\n }\r\n\r\n private handleChangeTab(tabEvt)\r\n {\r\n this.holdTab = tabEvt.nextId;\r\n\r\n tabEvt.preventDefault();\r\n\r\n if (tabEvt.activeId == TaskCommon.TaskTab_Detail)\r\n {\r\n let req = new TaskRequestDTO(TaskRequestDTO.TaskRequest_FormDirty);\r\n\r\n this.taskService.sendQuestion(req);\r\n }\r\n else\r\n {\r\n this.gotoTab();\r\n }\r\n }\r\n\r\n private gotoTab()\r\n {\r\n let req = new TaskRequestDTO(TaskRequestDTO.TaskRequest_TabChanged, this.holdTab);\r\n\r\n this.setTab = this.holdTab;\r\n this.taskService.sendAnswer(req);\r\n }\r\n\r\n private saveComplete(data)\r\n {\r\n if (this.update)\r\n {\r\n this.update.emit();\r\n }\r\n\r\n if (this.closeAfterSave)\r\n {\r\n this.close();\r\n return;\r\n }\r\n\r\n this.taskService.sendQuestion(new TaskRequestDTO(TaskRequestDTO.TaskRequest_Update, data));\r\n }\r\n\r\n private askToSave()\r\n {\r\n let opts: IConfirmationOptions =\r\n {\r\n FunctionConfirm: () => this.whatNext()\r\n };\r\n\r\n this.confirmService.YesNo(CommonSettings.DirtyFormConfirmationMessage, opts);\r\n }\r\n\r\n private whatNext()\r\n {\r\n if (this.closing)\r\n {\r\n this.close();\r\n }\r\n else\r\n {\r\n this.gotoTab();\r\n }\r\n }\r\n}","export default \"\\r\\n
          \\r\\n
          {{ entityTitle }} Task
          \\r\\n \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\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 { HttpClient } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { FormBuilder, Validators } from '@angular/forms';\r\nimport { ApiService } from \"@app/data/api/api.service\";\r\nimport { Observable } from \"rxjs\";\r\nimport { map, mergeMap } from \"rxjs/operators\";\r\nimport { TaskDocument } from \"./task-document.model\";\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class TaskDocumentService extends ApiService\r\n{\r\n get editorForm()\r\n {\r\n let form = new FormBuilder();\r\n let grpFields = form.group(\r\n {\r\n uid: [],\r\n name: [, Validators.required],\r\n taskUID: [],\r\n fileName: [, Validators.required],\r\n statusType: [],\r\n fileNameUID: [],\r\n documentText: [],\r\n documentOther: [],\r\n documentTypeUID: [, Validators.required]\r\n });\r\n\r\n return grpFields;\r\n }\r\n\r\n constructor(httpClient: HttpClient)\r\n {\r\n super(httpClient, \"tasks\");\r\n }\r\n\r\n public upload(file: File, data: TaskDocument)\r\n {\r\n let form = new FormData();\r\n\r\n form.append(file.name, file);\r\n\r\n return this.postFile(\"doc-upload\", form).pipe(\r\n map(d1 =>\r\n {\r\n data.fileName = d1.fileName;\r\n data.fileNameUID = d1.fileNameUID;\r\n\r\n return d1;\r\n }),\r\n mergeMap(d2 =>\r\n {\r\n return this.post(\"doc-save\", data);\r\n })\r\n );\r\n }\r\n\r\n public uploadImage(imgFile: Blob, taskDoc: TaskDocument): Observable\r\n {\r\n let name = (taskDoc.name || \"ThisDoesntMatter\") + \".png\";\r\n let uploadData = new FormData();\r\n\r\n uploadData.append(name, imgFile);\r\n\r\n let obby = this.postFile(\"doc-upload\", uploadData).pipe(\r\n map(retRes =>\r\n {\r\n taskDoc.fileName = name + \".png\";\r\n taskDoc.fileNameUID = retRes.fileNameUID;\r\n\r\n return retRes;\r\n }),\r\n mergeMap(d2 => this.post(\"doc-save\", taskDoc)));\r\n\r\n return obby;\r\n }\r\n\r\n public update(data: TaskDocument)\r\n {\r\n return this.post(\"doc-save\", data);\r\n }\r\n}","import { BaseComponent } from \"@app/data\";\r\nimport { TaskCommon } from \"@app/data/tasks/task-common\";\r\nimport { TaskDocument } from \"@app/data/tasks/task-document.model\";\r\n\r\nexport class TaskDocumentCommon extends BaseComponent\r\n{\r\n public docStatusTypes = TaskCommon.DocumentStatuses;\r\n public docTypeIsOther: boolean;\r\n\r\n public setOther(): void\r\n {\r\n if (this.docTypeIsOther)\r\n {\r\n this.makeRequired([\"documentOther\"]);\r\n }\r\n else\r\n {\r\n this.makeRequired([\"documentOther\"], false);\r\n }\r\n }\r\n\r\n public onDocTypeSelect(selection: any): void\r\n {\r\n let type = selection.code.toLowerCase();\r\n\r\n this.docTypeIsOther = (type == TaskCommon.DocumentTypeOther);\r\n\r\n this.setOther();\r\n }\r\n\r\n public saveComplete(): void\r\n {\r\n this.loading = false;\r\n\r\n if (this.submitError)\r\n {\r\n return;\r\n }\r\n\r\n this.close();\r\n this.update.emit();\r\n }\r\n}","import { Component, OnInit, TemplateRef, ViewChild } from \"@angular/core\";\r\nimport { LookupService } from \"@app/data\";\r\nimport { TaskCommon } from \"@app/data/tasks/task-common\";\r\nimport { TaskDocumentService } from \"@app/data/tasks/task-document.service\";\r\nimport { CommonSettings } from \"@app/shared/common-settings\";\r\nimport { ConfirmationService, IConfirmationOptions } from \"@app/shared/confirmation/confirmation.service\";\r\nimport { Util } from \"@app/utils/util\";\r\nimport { NgbModal } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\nimport { TaskDocumentCommon } from \"../my-task-doc-common\";\r\n\r\n@Component({\r\n selector: \"my-task-document-edit\",\r\n styleUrls: [\"./my-task-doc-edit.component.scss\"],\r\n templateUrl: \"./my-task-doc-edit.component.html\"\r\n})\r\nexport class TaskDocumentEditComponent extends TaskDocumentCommon implements OnInit\r\n{\r\n @ViewChild(\"documentDialog\")\r\n documentDialog: TemplateRef;\r\n\r\n public file: File;\r\n\r\n private documentUpdate = false;\r\n private documentEditUpload = false;\r\n\r\n constructor(\r\n toastrService: ToastrService,\r\n public modalService: NgbModal,\r\n public lookupService: LookupService,\r\n private confirmService: ConfirmationService,\r\n private taskDocServ: TaskDocumentService)\r\n {\r\n super(toastrService);\r\n\r\n this.dataForm = this.taskDocServ.editorForm;\r\n this.modalService = this.modalService;\r\n }\r\n\r\n ngOnInit(): void\r\n {\r\n this.lookupService.getTaskDocumentTypeList();\r\n }\r\n\r\n public openAdd(taskUID): void\r\n {\r\n this.open(this.documentDialog);\r\n\r\n this.fixForm();\r\n this.setValue(\"taskUID\", taskUID);\r\n this.makeRequired([\"fileName\"], true);\r\n }\r\n\r\n public openEdit(data, taskUID): void\r\n {\r\n this.open(this.documentDialog);\r\n\r\n this.fixForm();\r\n\r\n this.data = data;\r\n this.patchValue();\r\n\r\n this.docTypeIsOther = !Util.isEmpty(this.data.documentOther);\r\n this.documentUpdate = true;\r\n\r\n this.setValue(\"taskUID\", taskUID);\r\n this.setOther();\r\n this.makeRequired([\"fileName\"], true);\r\n }\r\n\r\n public onFileSelect(evtArg): void\r\n {\r\n this.file = evtArg.target.files[0];\r\n this.documentEditUpload = true;\r\n\r\n let nameVal = this.file.name.indexOf(\".\") > 0 ? this.file.name.split(\".\")[0] : this.file.name;\r\n\r\n this.setValue(\"name\", nameVal);\r\n this.setValue(\"fileName\", this.file.name);\r\n this.dataForm.markAsDirty();\r\n }\r\n\r\n public onDocTypeSelect(selection): void\r\n {\r\n let type = selection.code.toLowerCase();\r\n\r\n this.docTypeIsOther = (type == TaskCommon.DocumentTypeOther);\r\n\r\n this.setOther();\r\n }\r\n\r\n public onClose(): void\r\n {\r\n if (!this.dataForm.dirty)\r\n {\r\n this.close();\r\n return;\r\n }\r\n\r\n let opts: IConfirmationOptions =\r\n {\r\n FunctionConfirm: () => this.close()\r\n };\r\n\r\n this.confirmService.YesNo(CommonSettings.DirtyFormConfirmationMessage, opts);\r\n }\r\n\r\n public onSave(): void\r\n {\r\n if (this.invalid())\r\n {\r\n return;\r\n }\r\n\r\n this.loading = true;\r\n\r\n if (!this.docTypeIsOther)\r\n {\r\n this.setValue(\"documentOther\", null);\r\n }\r\n\r\n if (this.documentUpdate && !this.documentEditUpload)\r\n {\r\n this.taskDocServ.update(this.dataValue).subscribe(\r\n retRes =>\r\n {\r\n this.loading = false;\r\n\r\n if (this.update)\r\n {\r\n this.update.emit(retRes);\r\n }\r\n\r\n this.close();\r\n },\r\n errRes =>\r\n {\r\n this.loading = false;\r\n this.error(errRes);\r\n });\r\n }\r\n else\r\n {\r\n this.taskDocServ.upload(this.file, this.dataValue).subscribe(\r\n retRes =>\r\n {\r\n this.loading = false;\r\n\r\n if (this.update)\r\n {\r\n this.update.emit(retRes);\r\n }\r\n\r\n this.close();\r\n },\r\n errRes =>\r\n {\r\n this.loading = false;\r\n this.error(errRes);\r\n });\r\n }\r\n }\r\n\r\n private fixForm(): void\r\n {\r\n this.file = null;\r\n this.docTypeIsOther = false;\r\n this.documentUpdate = false;\r\n this.documentEditUpload = false;\r\n\r\n this.resetForm();\r\n this.setOther();\r\n }\r\n}","export default \"\\r\\n
          \\r\\n
          Task Document Upload
          \\r\\n \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\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 is required
          \\r\\n
          \\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 Type is required
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n
          Document Other Type is required
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n
          \\r\\n
          \";","export default \".dialog-buttons {\\n width: 100%;\\n display: -ms-flexbox;\\n display: flex;\\n}\\n\";","import { Component, ElementRef, OnInit, ViewChild } from \"@angular/core\";\r\nimport { DomSanitizer } from \"@angular/platform-browser\";\r\nimport { LookupService } from \"@app/data\";\r\nimport { FixedImage } from \"@app/data/misc/fixed-image\";\r\nimport { TaskDocumentService } from \"@app/data/tasks/task-document.service\";\r\nimport { CommonSettings } from \"@app/shared/common-settings\";\r\nimport { ConfirmationService, IConfirmationOptions } from \"@app/shared/confirmation/confirmation.service\";\r\nimport { TaskDocumentCommon } from \"@app/shared/users/my-tasks/my-task-edit/my-task-doc-common\";\r\nimport { NgbModal } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\n\r\n@Component({\r\n selector: \"my-task-doc-paste\",\r\n styleUrls: [\"./my-task-doc-paste.scss\"],\r\n templateUrl: \"./my-task-doc-paste.html\"\r\n})\r\nexport class TaskDocumentPaste extends TaskDocumentCommon implements OnInit\r\n{\r\n @ViewChild(\"dialogPaste\")\r\n dialogPaste: ElementRef;\r\n\r\n public readonly PasteType_HTML = \"text/html\";\r\n public readonly PasteType_Text = \"text/plain\";\r\n\r\n public imgPaste?: FixedImage;\r\n public textPaste?: string;\r\n\r\n constructor(\r\n toastrService: ToastrService,\r\n public lookupService: LookupService,\r\n private modalServ: NgbModal,\r\n private sanitizer: DomSanitizer,\r\n private taskDocServ: TaskDocumentService,\r\n private confirmService: ConfirmationService)\r\n {\r\n super(toastrService);\r\n\r\n this.dataForm = this.taskDocServ.editorForm;\r\n this.apiService = taskDocServ;\r\n this.modalService = this.modalServ;\r\n }\r\n\r\n ngOnInit(): void\r\n {\r\n this.lookupService.getTaskDocumentTypeList();\r\n }\r\n\r\n public openPaster(taskUID: string): void\r\n {\r\n this.imgPaste = undefined;\r\n this.textPaste = undefined;\r\n\r\n this.open(this.dialogPaste, null, CommonSettings.DialogSize_XLarge);\r\n this.resetForm();\r\n\r\n this.setValue(\"taskUID\", taskUID);\r\n this.makeRequired([\"fileName\"], false);\r\n }\r\n\r\n public onPaste(evtArg: any): void\r\n {\r\n for (let item of evtArg.clipboardData.items)\r\n {\r\n if (item.type.indexOf(\"image/\") == 0)\r\n {\r\n this.imgPaste = new FixedImage();\r\n this.imgPaste.rawImage = item.getAsFile();\r\n break;\r\n }\r\n }\r\n\r\n if (this.imgPaste)\r\n {\r\n this.imgPaste.url = URL.createObjectURL(this.imgPaste.rawImage!);\r\n this.imgPaste.safeURL = this.sanitizer.bypassSecurityTrustUrl(this.imgPaste.url);\r\n return;\r\n }\r\n\r\n let haveIt = false;\r\n\r\n for (let item of evtArg.clipboardData.items)\r\n {\r\n if (item.type == this.PasteType_HTML)\r\n {\r\n haveIt = true;\r\n item.getAsString((str: string) => this.textPaste = str);\r\n break;\r\n }\r\n }\r\n\r\n // Lame alert! I spent way too much time figuring this out.\r\n // For some reason textPaste won't show until you click somewhere on the screen. Maybe because it's in a callback function?\r\n // This is my fix?!?!?!\r\n setTimeout(() => this.textPaste = this.textPaste, 200);\r\n\r\n if (haveIt)\r\n {\r\n return;\r\n }\r\n\r\n for (let item of evtArg.clipboardData.items)\r\n {\r\n if (item.type == this.PasteType_Text)\r\n {\r\n item.getAsString((str: string) => this.textPaste = str);\r\n break;\r\n }\r\n }\r\n\r\n setTimeout(() => this.textPaste = this.textPaste, 200);\r\n }\r\n\r\n public onClear(): void\r\n {\r\n this.imgPaste = undefined;\r\n this.textPaste = undefined;\r\n }\r\n\r\n public onSave(): void\r\n {\r\n if (this.invalid() || (this.textPaste == null && this.imgPaste == null))\r\n {\r\n return;\r\n }\r\n\r\n this.loading = true;\r\n\r\n if (this.imgPaste)\r\n {\r\n this.taskDocServ.uploadImage(this.imgPaste.rawImage!, this.dataValue).subscribe(\r\n {\r\n next: (retRes) => this.saveComplete(),\r\n error: (errRes) => this.error(errRes)\r\n });\r\n return;\r\n }\r\n\r\n this.setValue(\"documentText\", this.textPaste);\r\n\r\n let sub = this.submit(\"doc-save\");\r\n\r\n if (sub)\r\n {\r\n sub.add(() => this.saveComplete());\r\n }\r\n }\r\n\r\n public onClose(): void\r\n {\r\n if (!this.dataForm.dirty && this.textPaste == null)\r\n {\r\n this.close();\r\n return;\r\n }\r\n\r\n let opts: IConfirmationOptions =\r\n {\r\n FunctionConfirm: () => this.close()\r\n };\r\n\r\n this.confirmService.YesNo(CommonSettings.DirtyFormConfirmationMessage, opts);\r\n }\r\n}","export default \"\\r\\n
          \\r\\n
          \\r\\n Email/Text Capture\\r\\n
          \\r\\n \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n
          Name is required
          \\r\\n
          \\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 Type is required
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n
          Document Other Type is required
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n

          Text required

          \\r\\n

          Copy the Email or text to your clipboard, click here, and press CTRL-V

          \\r\\n
          \\r\\n
          \\r\\n \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n
          \";","export default \".paste-wrapper {\\n width: 100%;\\n border: 1px solid #ccc;\\n height: 27rem;\\n padding: 1rem;\\n border-radius: .5rem;\\n}\\n\\n.paste-wrapper img {\\n width: 100%;\\n}\\n\\n.paste-wrapper .instruct {\\n padding: .5rem;\\n text-align: center;\\n}\\n\\n.paste-wrapper .required {\\n border-color: #f00;\\n}\\n\\n.text-area {\\n height: 25rem;\\n overflow: scroll;\\n}\\n\";","import { Component, OnInit, ViewChild } from \"@angular/core\";\r\nimport { TaskStatus } from \"@app/data/enums/task-status.enum\";\r\nimport { TaskCommon } from \"@app/data/tasks/task-common\";\r\nimport { TaskDocument } from \"@app/data/tasks/task-document.model\";\r\nimport { TaskDocumentService } from \"@app/data/tasks/task-document.service\";\r\nimport { GridBase } from \"@app/shared/ag-grid-helpers/ag-grid-base\";\r\nimport { GridHelpers } from \"@app/shared/ag-grid-helpers/grid-helper\";\r\nimport { GridColumnDocumentType } from \"@app/shared/ag-grid-helpers/models/grid-column-document-type\";\r\nimport { GridColumnIcon } from \"@app/shared/ag-grid-helpers/models/grid-column-icon.model\";\r\nimport { GridColumnStatus } from '@app/shared/ag-grid-helpers/models/grid-column-status';\r\nimport { GridColumn } from \"@app/shared/ag-grid-helpers/models/grid-column.model\";\r\nimport { ConfirmationService, IConfirmationOptions } from \"@app/shared/confirmation/confirmation.service\";\r\nimport { DocumentPreviewService } from \"@app/shared/document-preview/document-preview.service\";\r\nimport { TaskDocumentEditComponent } from \"@app/shared/users/my-tasks/my-task-edit/my-task-doc-edit/my-task-doc-edit.component\";\r\nimport { NgbModal } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { FileSaverService } from \"ngx-filesaver\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\nimport { TaskDocumentPaste } from \"../my-task-doc-paste/my-task-doc-paste\";\r\n\r\n@Component({\r\n selector: \"my-task-docs\",\r\n templateUrl: \"./my-task-docs.component.html\"\r\n})\r\nexport class MyTaskDocumentsComponent extends GridBase implements OnInit\r\n{\r\n @ViewChild(\"dialogDoc\")\r\n dialogDoc: TaskDocumentEditComponent;\r\n\r\n @ViewChild(\"dialogPaste\")\r\n dialogPaste: TaskDocumentPaste;\r\n\r\n constructor(\r\n toastrService: ToastrService,\r\n public taskDocServ: TaskDocumentService,\r\n public modalService: NgbModal,\r\n public confirmService: ConfirmationService,\r\n private docViewService: DocumentPreviewService,\r\n private fileSaverService: FileSaverService)\r\n {\r\n super(toastrService, taskDocServ);\r\n\r\n this.title = \"Tasks\";\r\n this.setupGrid();\r\n }\r\n\r\n ngOnInit(): void\r\n {\r\n this.filterAdd(\"taskUID\", this.data.uid);\r\n }\r\n\r\n public onAdd(): void\r\n {\r\n this.dialogDoc.openAdd(this.data.uid);\r\n }\r\n\r\n public onPaste(): void\r\n {\r\n this.dialogPaste.openPaster(this.data.uid);\r\n }\r\n\r\n public canEdit(): boolean\r\n {\r\n return (this.data.statusType != TaskStatus.Complete);\r\n }\r\n\r\n private setupGrid()\r\n {\r\n let gridIcons =\r\n [\r\n GridHelpers.MakeEditIcon(this.onEdit.bind(this), this.canEdit.bind(this)),\r\n GridHelpers.MakeDeleteIcon(this.onDelete.bind(this), this.canEdit.bind(this)),\r\n GridHelpers.MakeDownloadIcon(this.onDownload.bind(this)),\r\n GridHelpers.MakeViewIcon(this.onViewDoc.bind(this))\r\n ];\r\n\r\n this.dataPath = \"doc-list\";\r\n this.storageKey = \"MyTaskDocuments\";\r\n this.gridOpts.domLayout = GridHelpers.DOMLayout_Normal;\r\n this.gridOpts.paginationPageSize = 6;\r\n\r\n this.addColumn(new GridColumnStatus(TaskCommon.DocumentStatuses));\r\n this.addColumn(new GridColumn(\"name\", \"Name\"));\r\n this.addColumn(new GridColumnDocumentType(\"documentType\"));\r\n this.addColumn(new GridColumnIcon(gridIcons));\r\n\r\n this.rowDoubleClick(this.onEdit.bind(this));\r\n }\r\n\r\n private onViewDoc(agData: TaskDocument): void\r\n {\r\n let path = this.taskDocServ.buildUrl(\"pdf-download\");\r\n let fileName = `${path}?fileNameUID=${agData.fileNameUID}`;\r\n\r\n this.docViewService.openConvert(fileName, this.title);\r\n }\r\n\r\n private onEdit(agData: TaskDocument)\r\n {\r\n this.dialogDoc.readOnly = (this.data.statusType == TaskStatus.Complete);\r\n this.dialogDoc.openEdit(agData, this.data.uid);\r\n }\r\n\r\n private onDelete(selDoc: TaskDocument)\r\n {\r\n this.dataForm = this.makeForm(selDoc);\r\n\r\n let opts: IConfirmationOptions =\r\n {\r\n FunctionConfirm: () => this.deleteIt()\r\n };\r\n\r\n this.confirmService.Delete(`Are you sure you want to delete ${selDoc.name}?`, opts);\r\n }\r\n\r\n private deleteIt()\r\n {\r\n this.delete(\"doc-delete\").add(() => this.gridRefresh());\r\n }\r\n\r\n private onDownload(agData: any)\r\n {\r\n this.taskDocServ.getFile(\"doc-download\", agData.fileNameUID).subscribe(\r\n retRes =>\r\n {\r\n this.fileSaverService.save(retRes, agData.fileName);\r\n },\r\n errRes => { this.error(\"Failed to download document\"); }\r\n );\r\n }\r\n}","export default \"
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n
          \\r\\n\\r\\n\";","import { EntityType } from '@app/data/enums/entity-type.enum';\r\nimport { TaskCommon } from '@app/data/tasks/task-common';\r\nimport { Component, Input, OnDestroy, ViewChild } from \"@angular/core\";\r\nimport { BaseComponent } from \"@app/data\";\r\nimport { TaskRequestDTO } from \"@app/data/tasks/task-request.dto\";\r\nimport { TaskWork } from '@app/data/tasks/taskwork.model';\r\nimport { TaskService } from \"@app/data/tasks/taskwork.service\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\nimport { Subscription } from \"rxjs\";\r\nimport { MyTaskDetailComponent } from \"./my-task-detail/my-task-detail.component\";\r\n\r\n@Component({\r\n selector: \"my-task-tabs\",\r\n templateUrl: \"./my-task-tabs.component.html\"\r\n})\r\nexport class MyTaskTabsComponent extends BaseComponent implements OnDestroy\r\n{\r\n @ViewChild(\"taskDetail\")\r\n taskDetail: MyTaskDetailComponent;\r\n\r\n @Input()\r\n entityUID: string;\r\n\r\n @Input()\r\n entityType: number;\r\n\r\n public readonly tab_Docs = TaskCommon.TaskTab_Docs;\r\n public readonly tab_Note = TaskCommon.TaskTab_Note;\r\n public readonly tab_Detail = TaskCommon.TaskTab_Detail;\r\n\r\n public readonly myEntityType = EntityType.Task;\r\n\r\n public setTab;\r\n\r\n private taskAns: Subscription;\r\n private taskQuest: Subscription;\r\n\r\n constructor(toastrService: ToastrService,\r\n private taskServ: TaskService)\r\n {\r\n super(toastrService);\r\n\r\n this.taskAns = this.taskServ.taskAnswer.subscribe((request) => { this.handleAnswer(request) });\r\n this.taskQuest = this.taskServ.taskQuestion.subscribe((request) => { this.handleQuestion(request) });\r\n }\r\n\r\n ngOnDestroy()\r\n {\r\n this.taskAns.unsubscribe();\r\n this.taskQuest.unsubscribe();\r\n }\r\n\r\n public onTabSelect(evtArg)\r\n {\r\n let req = new TaskRequestDTO(TaskRequestDTO.TaskRequest_TabChanged, evtArg);\r\n\r\n this.taskServ.sendQuestion(req);\r\n }\r\n\r\n private handleAnswer(answer: TaskRequestDTO)\r\n {\r\n switch (answer.taskID)\r\n {\r\n case TaskRequestDTO.TaskRequest_TabChanged:\r\n this.setTab = answer.data;\r\n break;\r\n }\r\n }\r\n\r\n private handleQuestion(question: TaskRequestDTO): void\r\n {\r\n switch (question.taskID)\r\n {\r\n case TaskRequestDTO.TaskRequest_FormDirty:\r\n this.handleDirty(question);\r\n break;\r\n\r\n case TaskRequestDTO.TaskRequest_Update:\r\n this.data = question.data;\r\n break;\r\n }\r\n }\r\n\r\n private handleDirty(question: TaskRequestDTO): void\r\n {\r\n let dirty = false;\r\n\r\n if (this.setTab == TaskCommon.TaskTab_Detail)\r\n {\r\n dirty = this.taskDetail.haveChanges;\r\n }\r\n\r\n let ans = new TaskRequestDTO(question.taskID, dirty);\r\n\r\n this.taskServ.sendAnswer(ans);\r\n }\r\n}","export default \"
            \\r\\n
          • \\r\\n Details\\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 Notes\\r\\n \\r\\n \\r\\n \\r\\n
          • \\r\\n
          \\r\\n
          \";","import { TaskEntity } from \"@app/data/enums/task-entity.enum\";\r\nimport { TaskCommon } from '@app/data/tasks/task-common';\r\nimport cloneDeep from \"lodash-es/cloneDeep\";\r\nimport { GridCheckListFilter } from \"../filters/grid-checklist-filter/checklist-filter.component\";\r\nimport { GridColumn } from \"./grid-column.model\";\r\nimport { GridFilterDataType } from \"./grid-filter.model\";\r\n\r\nexport class GridColumnTaskEntity extends GridColumn\r\n{\r\n constructor(field: string, header: string = \"Area\")\r\n {\r\n super(field, header);\r\n\r\n this.width = 140;\r\n this.filter = \"checkListFilter\";\r\n this.cellRenderer = this.renderEntity;\r\n this.filterParams = { field: field, filterDataType: GridFilterDataType.text, items: cloneDeep(TaskCommon.TaskEntities) };\r\n this.suppressSizeToFit = true;\r\n\r\n this.registerComponents.push({ checkListFilter: GridCheckListFilter });\r\n }\r\n\r\n private renderEntity(agParam)\r\n {\r\n return TaskEntity[agParam.data.entityType];\r\n }\r\n}","import { Component, Input, OnInit, ViewChild } from \"@angular/core\";\r\nimport { Router } from \"@angular/router\";\r\nimport { MerchantDialogComponent } from \"@app/admin/customer/merchant-dialog/merchant-dialog.component\";\r\nimport { LicenseDialogComponent } from \"@app/admin/license/license-dialog/license-dialog.component\";\r\nimport { PurchaserDialogComponent } from \"@app/admin/purchaser/purchaser-dialog/purchaser-dialog.component\";\r\nimport { AppService } from \"@app/app.service\";\r\nimport { AuthService, Profile } from \"@app/data\";\r\nimport { TaskEntity } from \"@app/data/enums/task-entity.enum\";\r\nimport { TaskStatus } from \"@app/data/enums/task-status.enum\";\r\nimport { TaskCommon } from \"@app/data/tasks/task-common\";\r\nimport { TaskWork } from \"@app/data/tasks/taskwork.model\";\r\nimport { TaskService } from \"@app/data/tasks/taskwork.service\";\r\nimport { GridBase } from \"@app/shared/ag-grid-helpers/ag-grid-base\";\r\nimport { GridHelpers } from \"@app/shared/ag-grid-helpers/grid-helper\";\r\nimport { GridColumnBigText } from \"@app/shared/ag-grid-helpers/models/grid-column-big-text\";\r\nimport { GridColumnCustom } from \"@app/shared/ag-grid-helpers/models/grid-column-custom.model\";\r\nimport { GridColumnIcon } from \"@app/shared/ag-grid-helpers/models/grid-column-icon.model\";\r\nimport { GridColumnStatus } from \"@app/shared/ag-grid-helpers/models/grid-column-status\";\r\nimport { GridColumnTaskEntity } from \"@app/shared/ag-grid-helpers/models/grid-column-task-entity\";\r\nimport { GridColumnUser } from \"@app/shared/ag-grid-helpers/models/grid-column-user\";\r\nimport { GridColumn, GridColumnType } from \"@app/shared/ag-grid-helpers/models/grid-column.model\";\r\nimport { ConfirmationService, IConfirmationOptions } from \"@app/shared/confirmation/confirmation.service\";\r\nimport { FreightForwarderDialogComponent } from \"@app/shared/freight-forwarder/freight-forwarder-edit/freight-forwarder-dialog/freight-forwarder-dialog.component\";\r\nimport { DateFormatter } from \"@app/shared/pipes/date-formatter.pipe\";\r\nimport { ProductDialogComponent } from \"@app/shared/products/product-dialog/product-dialog.component\";\r\nimport { ProductDialogService } from \"@app/shared/products/product-dialog/product-dialog.service\";\r\nimport { DateHelper } from \"@app/utils/date-helper\";\r\nimport { Util } from \"@app/utils/util\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\nimport { MyTaskDialogComponent } from \"./my-task-edit/my-task-dialog.component\";\r\n\r\n@Component({\r\n selector: \"my-tasks\",\r\n styleUrls: [\"./my-tasks.component.scss\"],\r\n templateUrl: \"./my-tasks.component.html\"\r\n})\r\nexport class MyTasksComponent extends GridBase implements OnInit\r\n{\r\n @Input()\r\n entityUID: string = null;\r\n\r\n @Input()\r\n entityType: number = 0;\r\n\r\n @Input()\r\n restrictHeight: boolean = false;\r\n\r\n @ViewChild(\"dialogFreight\")\r\n dialogFreight: FreightForwarderDialogComponent;\r\n\r\n @ViewChild(\"dialogLicense\")\r\n dialogLicense: LicenseDialogComponent;\r\n\r\n @ViewChild(\"dialogMerchant\")\r\n dialogMerchant: MerchantDialogComponent;\r\n\r\n @ViewChild(\"dialogPurchaser\")\r\n dialogPurchaser: PurchaserDialogComponent;\r\n\r\n @ViewChild(\"dialogTaskEdit\")\r\n dialogTaskEdit: MyTaskDialogComponent;\r\n\r\n private myProfile: Profile;\r\n\r\n constructor(\r\n toastrService: ToastrService,\r\n private router: Router,\r\n private taskServ: TaskService,\r\n private appService: AppService,\r\n private authService: AuthService,\r\n private prodDiggyServ: ProductDialogService,\r\n private confirmService: ConfirmationService)\r\n {\r\n super(toastrService, taskServ);\r\n\r\n this.appService.pageTitle = \"My Tasks\";\r\n }\r\n\r\n async ngOnInit()\r\n {\r\n this.setupGrid();\r\n\r\n if (this.entityUID != null)\r\n {\r\n this.filterAdd(\"entityUID\", this.entityUID, false);\r\n this.filterAdd(\"entityType\", this.entityType, false);\r\n }\r\n\r\n this.myProfile = await this.authService.getProfile$().toPromise();\r\n }\r\n\r\n public onTaskAdd()\r\n {\r\n this.dialogTaskEdit.openAdd();\r\n }\r\n\r\n public onUpdate()\r\n {\r\n this.gridRefresh();\r\n\r\n if (this.update)\r\n {\r\n this.update.emit();\r\n }\r\n }\r\n\r\n private canEdit(agData)\r\n {\r\n return agData.statusType != TaskStatus.Complete;\r\n }\r\n\r\n private canView(agData)\r\n {\r\n return agData.statusType == TaskStatus.Complete;\r\n }\r\n\r\n private canComplete(agData)\r\n {\r\n return agData.statusType != TaskStatus.Complete;\r\n }\r\n\r\n private canAssignToMe(agData)\r\n {\r\n return agData.statusType == TaskStatus.New;\r\n }\r\n\r\n private setupGrid()\r\n {\r\n let iconWid = (this.entityUID == null ? 280 : 200);\r\n let colUser = new GridColumnUser(\"assignedToName\", \"assignedToUID\");\r\n let gridIcons =\r\n [\r\n GridHelpers.MakeEditIcon(this.onEdit.bind(this), this.canEdit.bind(this)),\r\n GridHelpers.MakeViewIcon(this.onEdit.bind(this), this.canView.bind(this)),\r\n GridHelpers.MakeDeleteIcon(this.onDelete.bind(this), this.canEdit.bind(this)),\r\n { icon: this.Icons.Note, onClick: this.onNotes.bind(this), toolTip: \"Go to Notes\" },\r\n { icon: this.Icons.GoTo, onClick: this.onGotoEntity.bind(this), toolTip: \"Go to related record\", isVisible: this.canGoTo.bind(this) },\r\n { icon: this.Icons.Check, onClick: this.onMarkComplete.bind(this), toolTip: \"Mark Task as complete\", isVisible: this.canComplete.bind(this) },\r\n { icon: this.Icons.AssignTo, onClick: this.onAssignToMe.bind(this), toolTip: \"Assign this Task to me\", isVisible: this.canAssignToMe.bind(this) }\r\n ];\r\n\r\n colUser.minWidth = 125;\r\n this.storageKey = \"MyTasks\";\r\n\r\n if (this.restrictHeight)\r\n {\r\n this.gridOpts.domLayout = GridHelpers.DOMLayout_Normal;\r\n this.gridOpts.paginationPageSize = 10;\r\n }\r\n\r\n this.setServerPath(\"list\");\r\n this.addColumn(new GridColumnStatus(TaskCommon.TaskStatuses));\r\n\r\n if (this.entityUID == null)\r\n {\r\n this.storageKey += \"-Dashboard\";\r\n this.addColumn(new GridColumnTaskEntity(\"entityType\"));\r\n }\r\n\r\n this.addColumn(new GridColumnCustom(\"entityName\", \"Reference\", { minWidth: 100 }))\r\n this.addColumn(new GridColumnCustom(\"taskCategory.name\", \"Category\", { minWidth: 150 }));\r\n this.addColumn(new GridColumnCustom(\"taskDescription\", \"Description\", { minWidth: 150 }));\r\n this.addColumn(colUser);\r\n this.addColumn(new GridColumn(\"taskDate\", \"Task Date\", GridColumnType.DateTime));\r\n this.addColumn(new GridColumn(\"dueDate\", \"Due\", GridColumnType.DateTime));\r\n this.addColumn(new GridColumn(\"completeDate\", \"Completed\", GridColumnType.DateTime));\r\n this.addColumn(new GridColumnBigText(\"note\", \"Last Note\"));\r\n this.addColumn(new GridColumnIcon(gridIcons, iconWid));\r\n\r\n this.rowDoubleClick(this.onEdit.bind(this));\r\n }\r\n\r\n private onNotes(agData): void\r\n {\r\n this.dialogTaskEdit.openEdit(agData, TaskCommon.TaskTab_Note);\r\n }\r\n\r\n private onEdit(agData)\r\n {\r\n this.dialogTaskEdit.openEdit(agData);\r\n }\r\n\r\n private onDelete(agData)\r\n {\r\n this.dataForm = this.makeForm(agData);\r\n\r\n let opts: IConfirmationOptions =\r\n {\r\n FunctionConfirm: () => this.deleteIt()\r\n };\r\n\r\n this.confirmService.YesNo(`You sure you want to delete \"${agData.taskDescription}\"?`, opts);\r\n }\r\n\r\n private deleteIt(): void\r\n {\r\n this.delete().add(() => this.onUpdate());\r\n }\r\n\r\n private onMarkComplete(agData)\r\n {\r\n let opts: IConfirmationOptions =\r\n {\r\n FunctionConfirm: () => this.doMarkComplete(agData)\r\n };\r\n\r\n this.confirmService.YesNo(`You sure you want mark this Task as complete?`, opts);\r\n }\r\n\r\n private doMarkComplete(agData)\r\n {\r\n agData.statusType = TaskStatus.Complete;\r\n agData.completeDate = DateHelper.formatDate(DateFormatter.Now, DateFormatter.FormatDateTimeMil);\r\n\r\n if (Util.isEmpty(agData.assignedToUID))\r\n {\r\n agData.assignedToUID = this.myProfile.uid;\r\n }\r\n\r\n this.taskServ.save(agData).subscribe(\r\n retRes =>\r\n {\r\n this.success(\"Task marked as Complete\");\r\n this.onUpdate();\r\n },\r\n errRes => this.error(errRes));\r\n }\r\n\r\n private canGoTo()\r\n {\r\n return this.entityUID == null;\r\n }\r\n\r\n private onGotoEntity(agData)\r\n {\r\n switch (agData.entityType)\r\n {\r\n case TaskEntity.License:\r\n this.dialogLicense.openEdit(agData);\r\n break;\r\n\r\n case TaskEntity.Merchant:\r\n this.dialogMerchant.openEdit(agData.entityUID);\r\n break;\r\n\r\n case TaskEntity.Order:\r\n this.router.navigate([\"admin/order-details\", agData.entityUID]);\r\n break;\r\n\r\n case TaskEntity.Product:\r\n this.prodDiggyServ.editByUID(agData.entityUID);\r\n break;\r\n\r\n case TaskEntity.Purchaser:\r\n this.dialogPurchaser.openPurchaser(agData.entityUID);\r\n break;\r\n\r\n case TaskEntity.FreightForwarder:\r\n this.dialogFreight.openEdit(agData.uid);\r\n break;\r\n }\r\n }\r\n\r\n private onAssignToMe(agData): void\r\n {\r\n agData.note = `Task assigned to: ${this.myProfile.lastName}, ${this.myProfile.firstName}`;\r\n agData.statusType = TaskStatus.InProgress;\r\n agData.assignedToUID = this.myProfile.uid;\r\n\r\n this.taskServ.post(\"save\", agData).subscribe(\r\n retRes => this.taskAssigned(),\r\n errRes => this.error(errRes));\r\n }\r\n\r\n private taskAssigned()\r\n {\r\n this.success(\"Task has been assigned to you\");\r\n this.onUpdate();\r\n }\r\n}","export default \"
          \\r\\n \\r\\n \\r\\n \\r\\n
          \\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\";","export default \".status-box-new {\\n color: #888;\\n border-color: #888;\\n background-color: #f5f5f5;\\n}\\n\";","import { AgmCoreModule } from \"@agm/core\";\r\nimport { NgxSliderModule } from \"@angular-slider/ngx-slider\";\r\nimport { CommonModule, CurrencyPipe, DatePipe } from \"@angular/common\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\r\nimport { MerchantDialogComponent } from \"@app/admin/customer/merchant-dialog/merchant-dialog.component\";\r\nimport { LicenseDialogComponent } from \"@app/admin/license/license-dialog/license-dialog.component\";\r\nimport { LicenseDocumentEditComponent } from \"@app/admin/license/license-document-edit/license-document-edit.component\";\r\nimport { LicenseDocumentListComponent } from \"@app/admin/license/license-document-list/license-document-list.component\";\r\nimport { LicenseEditComponent } from \"@app/admin/license/license-edit/license-edit.component\";\r\nimport { TransactionProductLicenseListComponent } from \"@app/admin/license/license-transaction-product-list/license-transaction-product-list.component\";\r\nimport { ProductHistoryList } from \"@app/admin/product/product-history/product-history-list\";\r\nimport { ProductOverrideImportHTSEdit } from \"@app/admin/product/product-override-import-hts/product-override-import-hts-edit/product-override-import-hts-edit\";\r\nimport { ProductOverrideImportHTSList } from \"@app/admin/product/product-override-import-hts/product-override-import-hts-list/product-override-import-hts-list\";\r\nimport { PurchaserAddressHistoryListComponent } from \"@app/admin/purchaser/purchaser-address-history-list/purchaser-address-history-list.component\";\r\nimport { PurchaserAddressListComponent } from \"@app/admin/purchaser/purchaser-address-list/purchaser-address-list.component\";\r\nimport { PurchaserAddressVerificationCapture } from \"@app/admin/purchaser/purchaser-address-verification/purchaser-address-verification-capture/purchaser-address-verification-capture.component\";\r\nimport { PurchaserAddressVerificationEdit } from \"@app/admin/purchaser/purchaser-address-verification/purchaser-address-verification-edit/purchaser-address-verification-edit.component\";\r\nimport { PurchaserAddressVerificationImage } from \"@app/admin/purchaser/purchaser-address-verification/purchaser-address-verification-image/purchaser-address-verification-image.component\";\r\nimport { PurchaserAddressVerificationList } from \"@app/admin/purchaser/purchaser-address-verification/purchaser-address-verification-list/purchaser-address-verification-list.component\";\r\nimport { PurchaserAddressVerificationPaste } from \"@app/admin/purchaser/purchaser-address-verification/purchaser-address-verification-paste/purchaser-address-verification-paste\";\r\nimport { PurchaserAddressVerificationStreet } from \"@app/admin/purchaser/purchaser-address-verification/purchaser-address-verification-street/purchaser-address-verification-street\";\r\nimport { PurchaserContactHistoryListComponent } from \"@app/admin/purchaser/purchaser-contact-history-list/purchaser-contact-history-list.component\";\r\nimport { PurchaserContactListComponent } from \"@app/admin/purchaser/purchaser-contact-list/purchaser-contact-list.component\";\r\nimport { PurchaserDialogComponent } from \"@app/admin/purchaser/purchaser-dialog/purchaser-dialog.component\";\r\nimport { PurchaserHistoryListComponent } from \"@app/admin/purchaser/purchaser-history-list/purchaser-history-list.component\";\r\nimport { PurchaserOfficerHistoryListComponent } from \"@app/admin/purchaser/purchaser-officer-history-list/purchaser-officer-history-list.component\";\r\nimport { PurchaserOfficerListComponent } from \"@app/admin/purchaser/purchaser-officer-list/purchaser-officer-list.component\";\r\nimport { PurchaserOwnerHistoryListComponent } from \"@app/admin/purchaser/purchaser-owner-history-list/purchaser-owner-history-list.component\";\r\nimport { PurchaserOwnerListComponent } from \"@app/admin/purchaser/purchaser-owner-list/purchaser-owner-list.component\";\r\nimport { PurchaserQuestionViewComponent } from \"@app/admin/purchaser/purchaser-question-view/purchaser-question-view.component\";\r\nimport { PurchaserReviewEditComponent } from \"@app/admin/purchaser/purchaser-review-edit/purchaser-review-edit.component\";\r\nimport { PurchaserSubCategoryComponent } from \"@app/admin/purchaser/purchaser-sub-category-edit/purchaser-sub-category-edit.component\";\r\nimport { PurchaserViewComponent } from \"@app/admin/purchaser/purchaser-view/purchaser-view.component\";\r\nimport { AddressComponent } from \"@app/shared/address/address.component\";\r\nimport { CustomerBillingComponent } from \"@app/shared/customer/customer-billing/customer-billing.component\";\r\nimport { CustomerContactEditComponent } from \"@app/shared/customer/customer-contact-edit/customer-contact-edit.component\";\r\nimport { CustomerContactListComponent } from \"@app/shared/customer/customer-contact-list/customer-contact-list.component\";\r\nimport { CustomerDetailsEditComponent } from \"@app/shared/customer/customer-details-edit/customer-details-edit.component\";\r\nimport { CustomerSearchItemComponent } from \"@app/shared/customer/customer-search/customer-search-item.component\";\r\nimport { CustomerSearchComponent } from \"@app/shared/customer/customer-search/customer-search.component\";\r\nimport { InfoLabel } from \"@app/shared/info-label/info-label.component\";\r\nimport { DateFormatter } from \"@app/shared/pipes/date-formatter.pipe\";\r\nimport { EnumToArrayPipe } from \"@app/shared/pipes/enum-to-array.pipe\";\r\nimport { PrivacyPolicyComponent } from \"@app/shared/privacy-policy/privacy-policy.component\";\r\nimport { PurchaserDealerConnectDetailsComponent } from \"@app/shared/purchaser-dealer-connect/purchaser-dealer-connect-details/purchaser-dealer-connect-details.component\";\r\nimport { PurchaserDealerConnectListComponent } from \"@app/shared/purchaser-dealer-connect/purchaser-dealer-connect-list/purchaser-dealer-connect-list.component\";\r\nimport { SortHelperComponent } from \"@app/shared/sort-helper/sort-helper.component\";\r\nimport { CKEditorModule } from \"@ckeditor/ckeditor5-angular\";\r\nimport { environment } from \"@env/environment\";\r\nimport { NgbModalModule, NgbModule } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { NgSelectModule } from \"@ng-select/ng-select\";\r\nimport { AgGridModule } from \"ag-grid-angular\";\r\nimport { BlockUIModule } from \"ng-block-ui\";\r\nimport { RatingModule } from \"ngx-bootstrap/rating\";\r\nimport { NgxMaskModule } from \"ngx-mask\";\r\nimport { ShowdownModule } from \"ngx-showdown\";\r\nimport { GridCellNumberEditorComponent } from \"./ag-grid-helpers/components/grid-cell-number-editor/grid-cell-number-editor.component\";\r\nimport { GridAddressFilter } from \"./ag-grid-helpers/filters/grid-address-filter/grid-address-filter.component\";\r\nimport { GridBooleanFilter } from \"./ag-grid-helpers/filters/grid-boolean-filter/grid-boolean-filter.component\";\r\nimport { GridCheckListFilter } from \"./ag-grid-helpers/filters/grid-checklist-filter/checklist-filter.component\";\r\nimport { GridContactFilter } from \"./ag-grid-helpers/filters/grid-contact-filter/grid-contact-filter.component\";\r\nimport { GridCycleFilter } from \"./ag-grid-helpers/filters/grid-cycle-filter/grid-cycle-filter.component\";\r\nimport { GridDateFilter } from \"./ag-grid-helpers/filters/grid-date-filter/grid-date-filter.component\";\r\nimport { GridDispatchTypeFilter } from \"./ag-grid-helpers/filters/grid-dispatch-type-filter/grid-dispatch-type-filter.component\";\r\nimport { GridDropDownFilter } from \"./ag-grid-helpers/filters/grid-dropdown-filter/grid-dropdown-filter.component\";\r\nimport { GridFilterMeter } from \"./ag-grid-helpers/filters/grid-filter-meter/grid-filter-meter.component\";\r\nimport { GridMerchantFilter } from \"./ag-grid-helpers/filters/grid-merchant-filter/grid-merchant-filter.component\";\r\nimport { GridPurchaserFilter } from \"./ag-grid-helpers/filters/grid-purchaser-filter/grid-purchaser-filter.component\";\r\nimport { GridPurchaserTypeFilter } from \"./ag-grid-helpers/filters/grid-purchaser-type-filter/grid-purchaser-type-filter.component\";\r\nimport { GridUserFilter } from \"./ag-grid-helpers/filters/grid-user-filter/grid-user-filter.component\";\r\nimport { GridCellAddressRenderer } from \"./ag-grid-helpers/renderers/grid-cell-address/grid-cell-address\";\r\nimport { GridCellBooleanRenderer } from \"./ag-grid-helpers/renderers/grid-cell-boolean/grid-cell-boolean-renderer\";\r\nimport { GridCellContactRenderer } from \"./ag-grid-helpers/renderers/grid-cell-contact/grid-cell-contact\";\r\nimport { GridCellIconGroup } from \"./ag-grid-helpers/renderers/grid-cell-icon-group/grid-cell-icon-group\";\r\nimport { GridCellImageGroup } from \"./ag-grid-helpers/renderers/grid-cell-image-group/grid-cell-image-group\";\r\nimport { GridCellMerchantRenderer } from \"./ag-grid-helpers/renderers/grid-cell-merchant/grid-cell-merchant\";\r\nimport { GridCellMeter } from \"./ag-grid-helpers/renderers/grid-cell-meter/grid-cell-meter\";\r\nimport { GridCellPartNumberRenderer } from \"./ag-grid-helpers/renderers/grid-cell-part-number/grid-cell-part-number\";\r\nimport { GridCellPurchaserRenderer } from \"./ag-grid-helpers/renderers/grid-cell-purchaser/grid-cell-purchaser\";\r\nimport { GridCellStarRatingRenderer } from \"./ag-grid-helpers/renderers/grid-cell-star-rating/grid-cell-star-rating-renderer\";\r\nimport { GridSidebarExtras } from \"./ag-grid-helpers/tools/grid-sidebar-extras\";\r\nimport { CaptchaComponent } from \"./captcha/captcha.component\";\r\nimport { CustomerAccountEditComponent } from \"./customer/customer-account-edit/customer-account-edit.component\";\r\nimport { CustomerAccountListComponent } from \"./customer/customer-account-list/customer-account-list.component\";\r\nimport { CustomerAddressListComponent } from \"./customer/customer-address-list/customer-address-list.component\";\r\nimport { CustomerMarketingHome } from \"./customer/customer-marketing/customer-marketing-home/customer-marketing-home\";\r\nimport { CustomerMarketingImages } from \"./customer/customer-marketing/customer-marketing-images/customer-marketing-images\";\r\nimport { CustomerMarketingPromosEdit } from \"./customer/customer-marketing/customer-marketing-promos/customer-marketing-promos-edit/customer-marketing-promos-edit\";\r\nimport { CustomerMarketingPromosList } from \"./customer/customer-marketing/customer-marketing-promos/customer-marketing-promos-list/customer-marketing-promos-list\";\r\nimport { CustomerMarketingSearch } from \"./customer/customer-marketing/customer-marketing-search/customer-marketing-search\";\r\nimport { CusteromSaverComponent } from \"./customer/customer-saver/customer-saver.component\";\r\nimport { CustomerSearchUserStatementComponent } from \"./customer/customer-search/customer-search-user-statement/customer-search-user-statement.component\";\r\nimport { MerchantSearchDialog } from \"./customer/customer-search/merchant-search-dialog/merchant-search-dialog.component\";\r\nimport { CustomerTabsComponent } from \"./customer/customer-tabs/customer-tabs.component\";\r\nimport { MerchantPurchasersComponent } from \"./customer/merchant-purchasers/merchant-purchasers.component\";\r\nimport { DealerList } from \"./dealer/dealer-list/dealer-list\";\r\nimport { DocumentEditComponent } from \"./documents/document-edit/document-edit.component\";\r\nimport { EnumSelectionComponent } from \"./enum-selection/enum-selection.component\";\r\nimport { FaqListComponent } from \"./faq/faq-list/faq-list.component\";\r\nimport { FeedbackDialog } from \"./feedback/feedback-dialog/feedback-dialog\";\r\nimport { FreightForwarderAddressListComponent } from \"./freight-forwarder/freight-forwarder-edit/freight-forwarder-address-list/freight-forwarder-address-list.component\";\r\nimport { FreightForwarderContactEditComponent } from \"./freight-forwarder/freight-forwarder-edit/freight-forwarder-contact-edit/freight-forwarder-contact-edit.component\";\r\nimport { FreightForwarderContactListComponent } from \"./freight-forwarder/freight-forwarder-edit/freight-forwarder-contact-list/freight-forwarder-contact-list.component\";\r\nimport { FreightForwarderDetailsComponent } from \"./freight-forwarder/freight-forwarder-edit/freight-forwarder-details/freight-forwarder-details.component\";\r\nimport { FreightForwarderDialogComponent } from \"./freight-forwarder/freight-forwarder-edit/freight-forwarder-dialog/freight-forwarder-dialog.component\";\r\nimport { FreightForwarderTabsComponent } from \"./freight-forwarder/freight-forwarder-edit/freight-forwarder-tabs/freight-forwarder-tabs.component\";\r\nimport { FreightForwarderListComponent } from \"./freight-forwarder/freight-forwarder-list/freight-forwarder-list.component\";\r\nimport { GridFFRecordTypeFilter } from \"./freight-forwarder/freight-forwarder-list/grid-components/grid-ff-record-type-filter/grid-ff-record-type-filter.component\";\r\nimport { AddressDialogComponent } from \"./misc-components/address-dialog/address-dialog.component\";\r\nimport { DateTimeInputComponent } from \"./misc-components/date-time-input/date-time-input.component\";\r\nimport { EmailLinkComponent } from \"./misc-components/email-link/email-link.component\";\r\nimport { InputEditSave } from \"./misc-components/input-edit-save/input-edit-save\";\r\nimport { MembersEditComponent } from \"./misc-components/members/members-edit/members-edit.component\";\r\nimport { MembersListComponent } from \"./misc-components/members/members-list/members-list.component\";\r\nimport { MerchantLink } from \"./misc-components/merchant-link/merchant-link\";\r\nimport { PhoneLink } from \"./misc-components/phone-link/phone-link\";\r\nimport { PopupMenu } from \"./misc-components/popup-menu/popup-menu\";\r\nimport { PopupMenuItem } from \"./misc-components/popup-menu/popup-menu-item/popup-menu-item\";\r\nimport { ProductLink } from \"./misc-components/product-link/product-link\";\r\nimport { PurchaserLink } from \"./misc-components/purchaser-link/purchaser-link\";\r\nimport { StarRating } from \"./misc-components/star-rating/star-rating\";\r\nimport { WebLink } from \"./misc-components/web-link/web-link\";\r\nimport { WikiEditorComponent } from \"./misc-components/wiki-editor/wiki-editor.component\";\r\nimport { WikiTextComponent } from \"./misc-components/wiki-renderer/wiki-renderer.component\";\r\nimport { YearMonthSelectionComponent } from \"./misc-components/year-month-selection/year-month-selection.component\";\r\nimport { NotesEdit } from \"./notes/notes-edit/notes-edit\";\r\nimport { NotesList } from \"./notes/notes-list/notes-list\";\r\nimport { CommericalInvoiceComponent } from \"./orders/order-details/commercial-invoice/commercial-invoice\";\r\nimport { OrderDocumentListComponent } from \"./orders/order-details/document-list/order-document-list.component\";\r\nimport { OrderDetailsComponent } from \"./orders/order-details/order-details.component\";\r\nimport { OrderProductListComponent } from \"./orders/order-details/product-list/product-list.component\";\r\nimport { ShipmentDetailComponent } from \"./orders/order-details/shipment-detail/shipment-detail.component\";\r\nimport { ShipmentListComponent } from \"./orders/order-details/shipment-list/shipment-list.component\";\r\nimport { ShipperLetterInstructionsComponent } from \"./orders/order-details/shipper-letter-of-instruction/shipper-letter-of-instruction.component\";\r\nimport { OrdersHoldFilter } from \"./orders/order-grid-components/hold-filter/hold-filter.component\";\r\nimport { GridCellOrderHoldsRenderer } from \"./orders/order-grid-components/hold-renderer/grid-cell-holds.renderer\";\r\nimport { OrderListComponent } from \"./orders/order-list/order-list.component\";\r\nimport { OrderManualEntryComponent } from \"./orders/order-manual-entry/order-manual-entry.component\";\r\nimport { OrderProductBulkComponent } from \"./orders/order-manual-entry/order-product-bulk/order-product-bulk.component\";\r\nimport { OrderProductComponent } from \"./orders/order-manual-entry/order-product/order-product.component\";\r\nimport { PurchaserAddDialogComponent } from \"./orders/order-manual-entry/purchaser-add-dialog/purchaser-add-dialog.component\";\r\nimport { OrderNoticiationRequestsComponent } from \"./orders/order-notification-requests/order-notification-requests.component\";\r\nimport { OrderReportsComponent } from \"./orders/reports/order-reports-home/order-reports-home.component\";\r\nimport { OrderCartCheckReportComponent } from \"./orders/reports/report-cart-check/report-cart-check.component\";\r\nimport { GridCellProblemRenderer } from \"./orders/reports/report-remove-product/grid-cell-problem-renderer/grid-cell-problem-renderer\";\r\nimport { OrderRemoveProductReportComponent } from \"./orders/reports/report-remove-product/report-remove-product.component\";\r\nimport { PercentMeterComponent } from \"./percent-meter/percent-meter.component\";\r\nimport { SafeHTMLPipe } from \"./pipes/safe-html.pipe\";\r\nimport { ProductCountryListComponent } from \"./products/product-country-list/product-country-list.component\";\r\nimport { ProductDialogComponent } from \"./products/product-dialog/product-dialog.component\";\r\nimport { ProductEditComponent } from \"./products/product-edit/product-edit.component\";\r\nimport { ProductSearches } from \"./products/product-searches/product-searches\";\r\nimport { ProductUploadComponent } from \"./products/product-upload/product-upload.component\";\r\nimport { ProductURLCheckList } from \"./products/product-url-check-list/product-url-check-list\";\r\nimport { PurchaserDocumentListComponent } from \"./purchaser-document-list/purchaser-document-list.component\";\r\nimport { PurchaserTermsComponent } from \"./purchaser-terms/purchaser-terms.component\";\r\nimport { RelaseNotesComponent } from \"./resources/release-notes/release-notes.component\";\r\nimport { UserManualComponent } from \"./resources/user-manual/user-manual.component\";\r\nimport { CanDeactivateGuard } from \"./services/can-deactivate-guard\";\r\nimport { StatusBadgeComponent } from \"./status-badge/status-badge.component\";\r\nimport { MyDashboardComponent } from \"./users/my-dashboard/my-dashboard.component\";\r\nimport { MyProfileComponent } from \"./users/my-profile/my-profile.component\";\r\nimport { MyTaskDetailComponent } from \"./users/my-tasks/my-task-edit/my-task-detail/my-task-detail.component\";\r\nimport { MyTaskDialogComponent } from \"./users/my-tasks/my-task-edit/my-task-dialog.component\";\r\nimport { TaskDocumentEditComponent } from \"./users/my-tasks/my-task-edit/my-task-doc-edit/my-task-doc-edit.component\";\r\nimport { TaskDocumentPaste } from \"./users/my-tasks/my-task-edit/my-task-doc-paste/my-task-doc-paste\";\r\nimport { MyTaskDocumentsComponent } from \"./users/my-tasks/my-task-edit/my-task-docs/my-task-docs.component\";\r\nimport { MyTaskTabsComponent } from \"./users/my-tasks/my-task-edit/my-task-tabs.component\";\r\nimport { MyTasksComponent } from \"./users/my-tasks/my-tasks.component\";\r\n\r\nconst gridComponets =\r\n [\r\n GridCellMeter,\r\n GridDateFilter,\r\n GridUserFilter,\r\n GridCycleFilter,\r\n GridFilterMeter,\r\n OrdersHoldFilter,\r\n GridAddressFilter,\r\n GridBooleanFilter,\r\n GridContactFilter,\r\n GridCellIconGroup,\r\n GridSidebarExtras,\r\n GridCellImageGroup,\r\n GridDropDownFilter,\r\n GridMerchantFilter,\r\n GridCheckListFilter,\r\n GridPurchaserFilter,\r\n GridFFRecordTypeFilter,\r\n GridDispatchTypeFilter,\r\n GridCellAddressRenderer,\r\n GridCellContactRenderer,\r\n GridCellBooleanRenderer,\r\n GridCellProblemRenderer,\r\n GridPurchaserTypeFilter,\r\n GridCellMerchantRenderer,\r\n GridCellPurchaserRenderer,\r\n GridCellOrderHoldsRenderer,\r\n GridCellPartNumberRenderer,\r\n GridCellStarRatingRenderer,\r\n GridCellNumberEditorComponent\r\n ];\r\n\r\nconst licenseComponents =\r\n [\r\n LicenseEditComponent,\r\n LicenseDialogComponent,\r\n LicenseDocumentEditComponent,\r\n LicenseDocumentListComponent\r\n ];\r\n\r\nconst miscComponent =\r\n [\r\n WebLink,\r\n NotesEdit,\r\n NotesList,\r\n InfoLabel,\r\n PhoneLink,\r\n PopupMenu,\r\n DealerList,\r\n StarRating,\r\n ProductLink,\r\n MerchantLink,\r\n SafeHTMLPipe,\r\n PopupMenuItem,\r\n DateFormatter,\r\n InputEditSave,\r\n PurchaserLink,\r\n FeedbackDialog,\r\n EnumToArrayPipe,\r\n AddressComponent,\r\n CaptchaComponent,\r\n FaqListComponent,\r\n WikiTextComponent,\r\n EmailLinkComponent,\r\n SortHelperComponent,\r\n UserManualComponent,\r\n WikiEditorComponent,\r\n MembersEditComponent,\r\n MembersListComponent,\r\n MerchantSearchDialog,\r\n RelaseNotesComponent,\r\n StatusBadgeComponent,\r\n DocumentEditComponent,\r\n PercentMeterComponent,\r\n AddressDialogComponent,\r\n DateTimeInputComponent,\r\n EnumSelectionComponent,\r\n PrivacyPolicyComponent,\r\n YearMonthSelectionComponent,\r\n PurchaserDealerConnectListComponent,\r\n PurchaserDealerConnectDetailsComponent\r\n ];\r\n\r\nconst freightForwarderComponents =\r\n [\r\n FreightForwarderListComponent,\r\n FreightForwarderTabsComponent,\r\n FreightForwarderDialogComponent,\r\n FreightForwarderDetailsComponent,\r\n FreightForwarderAddressListComponent,\r\n FreightForwarderContactEditComponent,\r\n FreightForwarderContactListComponent\r\n ];\r\n\r\nconst taskAndProfileComponents =\r\n [\r\n MyTasksComponent,\r\n TaskDocumentPaste,\r\n MyProfileComponent,\r\n MyTaskTabsComponent,\r\n MyDashboardComponent,\r\n MyTaskDetailComponent,\r\n MyTaskDialogComponent,\r\n MyTaskDocumentsComponent,\r\n TaskDocumentEditComponent\r\n ];\r\n\r\nconst orderComponents =\r\n [\r\n OrdersHoldFilter,\r\n OrderListComponent,\r\n OrderDetailsComponent,\r\n OrderProductComponent,\r\n OrderReportsComponent,\r\n ShipmentListComponent,\r\n ShipmentDetailComponent,\r\n OrderManualEntryComponent,\r\n OrderProductBulkComponent,\r\n OrderProductListComponent,\r\n CommericalInvoiceComponent,\r\n OrderDocumentListComponent,\r\n OrderCartCheckReportComponent,\r\n OrderNoticiationRequestsComponent,\r\n OrderRemoveProductReportComponent,\r\n ShipperLetterInstructionsComponent,\r\n TransactionProductLicenseListComponent\r\n ];\r\n\r\nconst productComponents =\r\n [\r\n ProductSearches,\r\n ProductHistoryList,\r\n ProductURLCheckList,\r\n ProductEditComponent,\r\n ProductDialogComponent,\r\n ProductUploadComponent,\r\n ProductCountryListComponent,\r\n ProductOverrideImportHTSEdit,\r\n ProductOverrideImportHTSList\r\n ];\r\n\r\nconst purchaserComponents =\r\n [\r\n PurchaserViewComponent,\r\n PurchaserTermsComponent,\r\n PurchaserDialogComponent,\r\n PurchaserAddDialogComponent,\r\n PurchaserOwnerListComponent,\r\n PurchaserReviewEditComponent,\r\n PurchaserAddressListComponent,\r\n PurchaserContactListComponent,\r\n PurchaserHistoryListComponent,\r\n PurchaserOfficerListComponent,\r\n PurchaserSubCategoryComponent,\r\n PurchaserDocumentListComponent,\r\n PurchaserQuestionViewComponent,\r\n PurchaserAddressVerificationEdit,\r\n PurchaserAddressVerificationList,\r\n PurchaserAddressVerificationImage,\r\n PurchaserAddressVerificationPaste,\r\n PurchaserAddressVerificationStreet,\r\n PurchaserOwnerHistoryListComponent,\r\n PurchaserAddressVerificationCapture,\r\n PurchaserAddressHistoryListComponent,\r\n PurchaserContactHistoryListComponent,\r\n PurchaserOfficerHistoryListComponent\r\n ];\r\n\r\nconst customerComponents =\r\n [\r\n CustomerMarketingHome,\r\n CustomerTabsComponent,\r\n CusteromSaverComponent,\r\n CustomerMarketingImages,\r\n CustomerMarketingSearch,\r\n CustomerSearchComponent,\r\n MerchantDialogComponent,\r\n CustomerBillingComponent,\r\n CustomerMarketingPromosEdit,\r\n CustomerMarketingPromosList,\r\n CustomerSearchItemComponent,\r\n MerchantPurchasersComponent,\r\n CustomerAccountEditComponent,\r\n CustomerAccountListComponent,\r\n CustomerAddressListComponent,\r\n CustomerContactEditComponent,\r\n CustomerContactListComponent,\r\n CustomerDetailsEditComponent,\r\n CustomerSearchUserStatementComponent\r\n ];\r\n\r\n@NgModule({\r\n declarations: [\r\n ...gridComponets,\r\n ...miscComponent,\r\n ...orderComponents,\r\n ...licenseComponents,\r\n ...productComponents,\r\n ...customerComponents,\r\n ...purchaserComponents,\r\n ...taskAndProfileComponents,\r\n ...freightForwarderComponents\r\n ],\r\n imports: [\r\n AgGridModule.withComponents([gridComponets]),\r\n AgmCoreModule.forRoot({ apiKey: environment.goolgeMaps.key }),\r\n ShowdownModule.forRoot({ emoji: true, flavor: \"github\" }),\r\n FormsModule,\r\n CommonModule,\r\n NgbModalModule,\r\n\r\n RatingModule.forRoot(),\r\n NgxMaskModule.forRoot(),\r\n BlockUIModule.forRoot(),\r\n CKEditorModule,\r\n NgxSliderModule,\r\n ReactiveFormsModule,\r\n\r\n NgbModule,\r\n NgSelectModule\r\n\r\n ],\r\n exports: [\r\n AgGridModule,\r\n CKEditorModule,\r\n\r\n ...miscComponent,\r\n ...orderComponents,\r\n ...licenseComponents,\r\n ...productComponents,\r\n ...customerComponents,\r\n ...purchaserComponents,\r\n ...taskAndProfileComponents,\r\n ...freightForwarderComponents\r\n ],\r\n providers: [DatePipe, CurrencyPipe, CanDeactivateGuard]\r\n})\r\nexport class SharedModule\r\n{\r\n}","export class GoogleMapsStreetOption\r\n{\r\n FOV: number = 90;\r\n Size: number = 1024;\r\n Pitch: number = 0;\r\n Heading: number;\r\n\r\n constructor()\r\n {\r\n }\r\n}","import { ProfileType } from '@app/data';\r\n// TODO: This is getting out-of-hand! There are too many variations for different users. Need to come up with a better solution\r\n\r\nexport enum DocumentTypesEnum\r\n{\r\n Other = \"OTHER\",\r\n AEPOther = \"AEP\",\r\n Invoice = \"INV\",\r\n SalesOrder = \"SO\",\r\n ImportPermit = \"IMP\",\r\n EndUserStatement = \"EUS\"\r\n}\r\n\r\nexport class OrderCommon\r\n{\r\n public static readonly DocumentType_Other = \"OTHER\";\r\n public static readonly DocumentType_AEPOther = \"AEP\";\r\n public static readonly DocumentType_ImportPermit = \"IMP\";\r\n\r\n public static readonly OrderStatuses =\r\n [\r\n { id: -2, name: \"Order Check\" },\r\n { id: 1, name: \"Active\" },\r\n { id: 2, name: \"Partially Cleared\" },\r\n { id: 3, name: \"Cleared\" },\r\n { id: 4, name: \"Complete\" },\r\n { id: 5, name: \"Failed\" },\r\n { id: 10, name: \"Hold\" },\r\n { id: 11, name: \"Suspended\" },\r\n { id: 13, name: \"Cancelled\" }\r\n ];\r\n\r\n public static readonly ChargeStatuses =\r\n [\r\n { id: 1, name: \"Active\" },\r\n { id: 2, name: \"Pending\" },\r\n { id: 4, name: \"Complete\" },\r\n { id: 7, name: \"New\" },\r\n { id: 9, name: \"Cancelled\" },\r\n { id: 10, name: \"Pending Review\" },\r\n ];\r\n\r\n public static readonly DocumentDesignationTypes =\r\n [\r\n { id: 1, name: \"Active\" },\r\n { id: 2, name: \"Approved\" },\r\n { id: 3, name: \"Other\" },\r\n { id: 4, name: \"Under Review\" }\r\n ];\r\n\r\n public static readonly PurchaserDocumentDesignationTypes =\r\n [\r\n { id: 1, name: \"Active\" },\r\n { id: 2, name: \"Approved\" },\r\n { id: 3, name: \"Other\" },\r\n { id: 4, name: \"Under Review\" },\r\n { id: 5, name: \"Expired\" }\r\n ];\r\n\r\n public static readonly DocumentTypes =\r\n [\r\n { id: \"AIR\", name: \"Air Waybill\", uid: null },\r\n { id: \"ATF\", name: \"ATF Form 9\", uid: null },\r\n { id: \"DEL_CONF\", name: \"Delivery Confirmation\", uid: null },\r\n { id: \"EEI\", name: \"EEI\", uid: null },\r\n { id: \"EUS\", name: \"End User Statement\", uid: null },\r\n { id: \"IMP\", name: \"Import Permit\", uid: null },\r\n { id: \"INV\", name: \"Invoice\", uid: null },\r\n { id: \"Quote\", name: \"Quote\", uid: null },\r\n { id: \"SO\", name: \"Sales Order\", uid: null },\r\n { id: \"OTHER\", name: \"Other\", uid: null },\r\n { id: \"AEP\", name: \"AEP Other\", uid: null }\r\n ];\r\n\r\n public static readonly MerchantDocumentTypes =\r\n [\r\n { id: \"AIR\", name: \"Air Waybill\", uid: null },\r\n { id: \"ATF\", name: \"ATF Form 9\", uid: null },\r\n { id: \"DEL_CONF\", name: \"Delivery Confirmation\", uid: null },\r\n { id: \"EEI\", name: \"EEI\", uid: null },\r\n { id: \"EUS\", name: \"End User Statement\", uid: null },\r\n { id: \"INV\", name: \"Invoice\", uid: null },\r\n { id: \"Quote\", name: \"Quote\", uid: null },\r\n { id: \"SO\", name: \"Sales Order\", uid: null }\r\n ];\r\n\r\n public static readonly FreightDocumentTypes =\r\n [\r\n { id: \"AIR\", name: \"Air Waybill\", uid: null },\r\n { id: \"ATF\", name: \"ATF Form 9\", uid: null },\r\n { id: \"DEL_CONF\", name: \"Delivery Confirmation\", uid: null },\r\n { id: \"EEI\", name: \"EEI\", uid: null },\r\n { id: \"Quote\", name: \"Quote\", uid: null },\r\n { id: \"OTHER\", name: \"Other\", uid: null }\r\n ];\r\n\r\n public static readonly ProductStatuses =\r\n [\r\n { id: 1, name: \"Active\" },\r\n { id: 3, name: \"ClearedForShipment\" },\r\n { id: 4, name: \"Complete\" },\r\n { id: 5, name: \"Failed\" },\r\n { id: 10, name: \"Hold\" },\r\n { id: 11, name: \"Suspended\" },\r\n { id: 13, name: \"Cancelled\" },\r\n { id: 20, name: \"PartNumberNotFound\" },\r\n { id: 21, name: \"ProductNotActive\" },\r\n { id: 22, name: \"ProductIsNotExportable\" },\r\n { id: 23, name: \"InvalidShipCountry\" },\r\n { id: 24, name: \"ProductNotImportable\" },\r\n { id: 25, name: \"ExtendedCountryNotExportable\" },\r\n { id: 26, name: \"ProductPurchaserNotImportable\" },\r\n { id: 27, name: \"ProductIsIneligible\" },\r\n { id: 28, name: \"ProductNeedFirearmLicense\" }\r\n ];\r\n\r\n public static readonly PurchaserDocumentTypes =\r\n [\r\n { id: \"IMP\", name: \"Import Permit\", uid: null },\r\n { id: \"OTHER\", name: \"Other\", uid: null }\r\n ];\r\n\r\n public static PlugDocumentTypes(data, userRole)\r\n {\r\n let list;\r\n let newList = [];\r\n\r\n switch (userRole)\r\n {\r\n case ProfileType.admin:\r\n list = OrderCommon.DocumentTypes;\r\n break;\r\n\r\n case ProfileType.customer:\r\n list = OrderCommon.MerchantDocumentTypes;\r\n break;\r\n\r\n case ProfileType.purchaser:\r\n list = OrderCommon.PurchaserDocumentTypes;\r\n break;\r\n\r\n case ProfileType.freightForwarder:\r\n list = OrderCommon.FreightDocumentTypes;\r\n break;\r\n\r\n default:\r\n return newList;\r\n }\r\n\r\n for (var rec of data)\r\n {\r\n let type = list.find(elm => elm.id == rec.code);\r\n\r\n if (type)\r\n {\r\n type.uid = rec.uid;\r\n\r\n newList.push(type);\r\n }\r\n }\r\n\r\n return newList;\r\n }\r\n}","export default \".filter-wrapper {\\n padding: 1rem;\\n}\\n\\n.filter-wrapper hr {\\n margin: 0.5rem 0rem;\\n}\\n\\n.filter-wrapper div {\\n margin-bottom: 1rem;\\n}\\n\\n.filter-clear {\\n width: 100%;\\n}\\n\\n.filter-checkbox-item label {\\n width: 100%;\\n border: 1px solid transparent;\\n cursor: pointer;\\n padding: .25rem;\\n font-size: 1rem;\\n white-space: nowrap;\\n border-radius: .25rem;\\n margin-bottom: -1rem !important;\\n}\\n\\n.filter-checkbox-item label:hover {\\n border-color: #0074BA;\\n background-color: #e6f2ff;\\n}\\n\\n.filter-radio-item {\\n width: 100%;\\n border: 1px solid transparent;\\n cursor: pointer;\\n display: -ms-flexbox;\\n display: flex;\\n padding: .25rem;\\n -ms-flex-align: center;\\n align-items: center;\\n border-radius: .25rem;\\n margin-bottom: 0rem;\\n}\\n\\n.filter-radio-item input {\\n cursor: pointer;\\n}\\n\\n.filter-radio-item label {\\n width: 100%;\\n cursor: pointer;\\n font-size: 1rem;\\n font-weight: bold;\\n margin-left: .5rem;\\n margin-bottom: 0rem;\\n}\\n\\n.filter-radio-item:hover {\\n border-color: #0074BA;\\n background-color: #e6f2ff;\\n}\\n\\n.ng-select {\\n width: 100%;\\n}\\n\";","export enum FreightForwarderType\r\n{\r\n FreightFordwarder = 1,\r\n CustomersBroker = 2\r\n}","import { HttpClient } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { ApiService } from \"../api/api.service\";\r\nimport { MerchantsFreightForwarder } from \"./merchants-freight-forwarder.model\";\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class MerchantsFreightForwarderService extends ApiService\r\n{\r\n constructor(httpClient: HttpClient)\r\n {\r\n super(httpClient, \"freight-forwarder\");\r\n }\r\n\r\n public myList()\r\n {\r\n return this.postGetList(\"merchant-list\", {});\r\n }\r\n\r\n public addList(data)\r\n {\r\n return this.httpClient.post(this.buildUrl(\"merchant-save-list\"), JSON.stringify(data));\r\n }\r\n\r\n public deleteList(data)\r\n {\r\n return this.httpClient.post(this.buildUrl(\"merchant-delete-list\"), JSON.stringify(data));\r\n }\r\n}","import { Util } from \"@app/utils/util\";\r\nimport jsPDF, { Point, Rectangle } from \"jspdf\";\r\n\r\nexport enum WordWrapMethods\r\n{\r\n Wrap = 0,\r\n Overflow = 1,\r\n Truncate = 2\r\n}\r\n\r\nexport class PDFBuilder extends jsPDF\r\n{\r\n public static readonly WidthMax = -1;\r\n public static readonly LineHeight = 1.15;\r\n public static readonly DrawTo_End = -1;\r\n\r\n public static readonly PageExpression = \"{totalPages}\";\r\n public static readonly ImageFormatJPEG = \"JPEG\";\r\n\r\n public static readonly Font_Cursive = \"Parisienne\";\r\n public static readonly FontStyle_Italic = \"italic\";\r\n public static readonly FontStyle_Normal = \"normal\";\r\n\r\n public static readonly FontWeight_Bold = \"bold\";\r\n public static readonly FontWeight_Normal = \"normal\";\r\n\r\n public static readonly Baseline_Top = \"top\";\r\n public static readonly Baseline_Bottom = \"bottom\";\r\n public static readonly Baseline_Middle = \"middle\";\r\n\r\n public static readonly Align_Left = \"left\";\r\n public static readonly Align_Right = \"right\";\r\n public static readonly Align_Center = \"center\";\r\n\r\n public static readonly Unit_Inch = \"in\";\r\n public static readonly Unit_Pixel = \"px\";\r\n public static readonly Unit_Point = \"pt\";\r\n public static readonly Unit_MiliMeter = \"mm\";\r\n\r\n public static readonly Output_Blob = \"blob\";\r\n\r\n public static readonly Orientation_Portrait = \"portrait\";\r\n public static readonly Orientation_Landscape = \"landscape\";\r\n\r\n public static readonly DataBoxDefaults =\r\n {\r\n wrap: WordWrapMethods.Truncate,\r\n align: PDFBuilder.Align_Left,\r\n border: true,\r\n boxPadding: true\r\n };\r\n\r\n public Color_Data = \"#000\";\r\n public Color_Label = \"#999\";\r\n public Box_Padding = 4;\r\n public Font_DefaultSize = 8;\r\n public Font_DefaultFamily = \"helvetica\";\r\n\r\n public pageMargins = { top: 15, bottom: 2, left: 5, right: 5 };\r\n\r\n constructor(options: any = { unit: PDFBuilder.Unit_Point, orientation: PDFBuilder.Orientation_Portrait })\r\n {\r\n super(options);\r\n }\r\n\r\n public addCursiveFont = function()\r\n {\r\n this.addFont(\"assets/fonts/Parisienne-Regular.ttf\", PDFBuilder.Font_Cursive, PDFBuilder.FontStyle_Normal);\r\n }\r\n\r\n public pageWidth = function()\r\n {\r\n let maxX = this.internal.pageSize.getWidth();\r\n\r\n return maxX - (this.pageMargins.left + this.pageMargins.right);\r\n }\r\n\r\n public pageHeight = function()\r\n {\r\n let maxY = this.internal.pageSize.getHeight();\r\n\r\n return maxY - (this.pageMargins.top + this.pageMargins.bottom);\r\n }\r\n\r\n public setBold = function(bold: boolean = true): void\r\n {\r\n if (bold)\r\n {\r\n this.fontSet(this.getFontSize(), PDFBuilder.FontWeight_Bold);\r\n }\r\n else\r\n {\r\n this.fontSet(this.getFontSize(), PDFBuilder.FontWeight_Normal);\r\n }\r\n }\r\n\r\n public fontReset = function()\r\n {\r\n this.fontSet(this.Font_DefaultSize);\r\n }\r\n\r\n public fontSet = function(size: number, weight: string = PDFBuilder.FontWeight_Normal, style: string = PDFBuilder.FontStyle_Normal): void\r\n {\r\n this.setFont(this.Font_DefaultFamily, style, weight);\r\n this.setFontSize(size);\r\n }\r\n\r\n public outText = function(posX: number, posY: number, text: any, options = {}): void\r\n {\r\n let derText = text;\r\n\r\n if (Util.isEmpty(derText))\r\n {\r\n derText = \"\";\r\n }\r\n else\r\n {\r\n if (!Array.isArray(derText))\r\n {\r\n derText = derText.toString();\r\n\r\n if (options.hasOwnProperty(\"width\"))\r\n {\r\n let broken = this.splitTextToSize(derText, options[\"width\"]);\r\n\r\n derText = broken[0];\r\n }\r\n }\r\n }\r\n\r\n options = Object.assign({ baseline: PDFBuilder.Baseline_Top }, options);\r\n\r\n this.text(derText, posX, posY, options);\r\n }\r\n\r\n public drawBox = function(posX: number, posY: number, width: number, height: number): Rectangle\r\n {\r\n let myX = posX + this.pageMargins.left;\r\n let myY = posY + this.pageMargins.top;\r\n\r\n if (width == PDFBuilder.DrawTo_End)\r\n {\r\n width = this.internal.pageSize.getWidth() - (myX + this.pageMargins.right);\r\n }\r\n\r\n if (height == PDFBuilder.DrawTo_End)\r\n {\r\n height = this.pageHeight() - posY;\r\n }\r\n\r\n this.rect(myX, myY, width, height);\r\n\r\n myX += this.Box_Padding;\r\n myY += this.Box_Padding;\r\n width -= (this.Box_Padding * 2);\r\n height -= (this.Box_Padding * 2);\r\n\r\n return { x: myX, y: myY, w: width, h: height };\r\n }\r\n\r\n public label = function(posX: number, posY: number, label: string, align: string = PDFBuilder.Align_Left)\r\n {\r\n this.fontSet(this.Font_DefaultSize - 2);\r\n this.setTextColor(this.Color_Label);\r\n\r\n this.outText(posX, posY, label, { align: align });\r\n\r\n this.setTextColor(this.Color_Data);\r\n this.fontReset();\r\n }\r\n\r\n public yesNoBox = function(posX: number, posY: number, width: number, height: number, label: string, yesChecked?: boolean)\r\n {\r\n let rect = this.dataBox(posX, posY, width, height, label);\r\n let workX = rect.x + 10;\r\n\r\n this.checkBox(workX, rect.y, \"Yes\", yesChecked == true);\r\n this.checkBox(workX + 40, rect.y, \"No\", yesChecked == false);\r\n }\r\n\r\n public checkBox = function(posX: number, posY: number, label: string, checked: boolean = null): Rectangle\r\n {\r\n let xMe = checked == true ? \"X\" : \"\";\r\n\r\n this.rect(posX, posY, 10, 10);\r\n this.outText(posX + 2, posY + 1, xMe);\r\n this.outText(posX + 15, posY, label);\r\n\r\n let textDim = this.getTextDimensions(label);\r\n\r\n return { x: posX, y: posY, w: textDim.w + 15, h: Math.max(textDim.h, 10) };\r\n }\r\n\r\n // The Point return is the label's position + it's height\r\n public dataBox = function(posX: number, posY: number, width: number, height: number, label: string, data: any = null, opts: any = null): Point\r\n {\r\n opts = Object.assign({}, PDFBuilder.DataBoxDefaults, opts);\r\n\r\n if (width == PDFBuilder.WidthMax)\r\n {\r\n width = this.pageWidth();\r\n }\r\n\r\n if (opts.border)\r\n {\r\n this.drawBox(posX, posY, width, height);\r\n }\r\n\r\n if (label == null)\r\n {\r\n label = \"\";\r\n }\r\n\r\n let myX = posX + this.pageMargins.left;\r\n let myY = posY + this.pageMargins.top;\r\n let labX = myX;\r\n let textDim = this.getTextDimensions(label);\r\n\r\n if (opts.boxPadding)\r\n {\r\n myX += this.Box_Padding;\r\n myY += this.Box_Padding;\r\n labX += this.Box_Padding;\r\n }\r\n\r\n if (width == PDFBuilder.DrawTo_End)\r\n {\r\n width = this.pageWidth() - posX;\r\n }\r\n else\r\n {\r\n if (opts.boxPadding)\r\n {\r\n width -= this.Box_Padding * 2;\r\n }\r\n }\r\n\r\n switch (opts.align)\r\n {\r\n case PDFBuilder.Align_Center:\r\n if (opts.boxPadding)\r\n {\r\n labX = ((posX + width) - (this.Box_Padding * 2)) / 2;\r\n }\r\n else\r\n {\r\n labX = (posX + width) / 2;\r\n }\r\n break;\r\n\r\n case PDFBuilder.Align_Right:\r\n if (opts.boxPadding)\r\n {\r\n labX = ((posX + width) - this.Box_Padding);\r\n }\r\n else\r\n {\r\n labX = posX + width;\r\n }\r\n break;\r\n }\r\n\r\n this.label(labX, myY, label, opts.align);\r\n\r\n myY += textDim.h + 2;\r\n height -= textDim.h + 2;\r\n\r\n let dataLoc = { x: myX, y: myY };\r\n\r\n if (data == null)\r\n {\r\n return dataLoc;\r\n }\r\n\r\n this.fontSet(this.Font_DefaultSize + 2);\r\n\r\n switch (opts.align)\r\n {\r\n case PDFBuilder.Align_Center:\r\n if (opts.boxPadding)\r\n {\r\n myX = ((posX + width) - (this.Box_Padding * 2)) / 2;\r\n }\r\n else\r\n {\r\n myX = (posX + width) / 2;\r\n }\r\n break;\r\n\r\n case PDFBuilder.Align_Right:\r\n if (opts.boxPadding)\r\n {\r\n myX = ((posX + width) - this.Box_Padding);\r\n }\r\n else\r\n {\r\n myX = posX + width;\r\n }\r\n break;\r\n }\r\n\r\n switch (opts.wrap)\r\n {\r\n case WordWrapMethods.Overflow:\r\n this.outText(myX, myY, data, { align: opts.align });\r\n break;\r\n\r\n case WordWrapMethods.Truncate:\r\n data = this.splitTextToSize(data, width);\r\n this.outText(myX, myY, data[0], { align: opts.align });\r\n break;\r\n\r\n case WordWrapMethods.Wrap:\r\n data = this.textArray(data, width, height);\r\n this.outText(myX, myY, data, { align: opts.align });\r\n break;\r\n }\r\n\r\n this.fontReset();\r\n\r\n return dataLoc;\r\n }\r\n\r\n public textArray = function(data: any, width: number, height: number)\r\n {\r\n data = this.splitTextToSize(data, width);\r\n\r\n if (data.length < 2)\r\n {\r\n return data;\r\n }\r\n\r\n let dim = this.getTextDimensions(data[0]);\r\n let lines = Math.trunc(height / (dim.h * PDFBuilder.LineHeight));\r\n\r\n return data.slice(0, lines);\r\n }\r\n}","export enum ProductStatus\r\n{\r\n deleted = -2,\r\n active = 1,\r\n pending = 2,\r\n failed = 5,\r\n new = 7,\r\n pendingRelease = 8,\r\n inactive = 9,\r\n}","import { Component, OnDestroy, OnInit } from \"@angular/core\";\r\nimport { AuthService, BaseComponent, Product, ProductService, ProfileType } from \"@app/data\";\r\nimport { ProductStatus } from \"@app/data/enums/product-status-type.enum\";\r\nimport { TaskEntity } from \"@app/data/enums/task-entity.enum\";\r\nimport { ProductCommon } from '@app/data/product/product-common';\r\nimport { ProductRequestDTO } from \"@app/data/product/product-request.dto\";\r\nimport { CommonSettings } from \"@app/shared/common-settings\";\r\nimport { ConfirmationService, IConfirmationOptions } from \"@app/shared/confirmation/confirmation.service\";\r\nimport { NgbActiveModal } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\nimport { Subscription } from \"rxjs\";\r\n\r\n@Component(\r\n{\r\n selector: \"product-dialog\",\r\n templateUrl: \"./product-dialog.component.html\",\r\n})\r\nexport class ProductDialogComponent extends BaseComponent implements OnInit, OnDestroy\r\n{\r\n public get isAdmin(): boolean\r\n {\r\n return (this.userRole == ProfileType.admin);\r\n }\r\n\r\n public get canClassify(): boolean\r\n {\r\n if (!this.isAdmin)\r\n {\r\n return false;\r\n }\r\n\r\n return (this.data?.statusType == ProductStatus.active || this.data?.statusType == ProductStatus.pending || this.data?.statusType == ProductStatus.failed || this.data?.statusType == ProductStatus.pendingRelease);\r\n }\r\n\r\n public set product(prod: Product)\r\n {\r\n this.setEdit(prod);\r\n }\r\n\r\n public set productUID(prodUID: string)\r\n {\r\n this.setEditByUID(prodUID);\r\n }\r\n\r\n public readonly Tab_Task = 0;\r\n public readonly Tab_Detail = 1;\r\n public readonly Tab_Country = 2;\r\n public readonly Tab_History = 3;\r\n public readonly Tab_ImportHTS = 4;\r\n\r\n public readonly statusList = ProductCommon.ProductStatuses;\r\n public readonly productStatues = ProductStatus;\r\n public readonly taskEntityType = TaskEntity.Product;\r\n\r\n public setTab = this.Tab_Detail;\r\n public userRole: number;\r\n public prodStatus: number;\r\n public description: string;\r\n public merchantName: string;\r\n public custDescription: string;\r\n\r\n private subAns: Subscription;\r\n private closeIt: boolean;\r\n private holdTab: number;\r\n\r\n constructor(\r\n toastrService: ToastrService,\r\n private prodServ: ProductService,\r\n private activeModal: NgbActiveModal,\r\n private authService: AuthService,\r\n private confirmService: ConfirmationService)\r\n {\r\n super(toastrService);\r\n\r\n this.subAns = this.prodServ.prodAnswer.subscribe((req) => { this.handleAnswers(req) });\r\n }\r\n\r\n async ngOnInit()\r\n {\r\n let myProfile = await this.authService.getProfile$().toPromise();\r\n\r\n this.userRole = myProfile.profileType;\r\n }\r\n\r\n ngOnDestroy(): void\r\n {\r\n this.subAns.unsubscribe();\r\n }\r\n\r\n public opendAdd(): void\r\n {\r\n this.setTab = this.Tab_Detail;\r\n }\r\n\r\n private setEdit(prod: Product): void\r\n {\r\n this.uid = prod.uid;\r\n this.data = prod;\r\n this.setTab = this.Tab_Detail;\r\n this.prodStatus = prod.statusType;\r\n this.description = prod.description;\r\n this.merchantName = prod.customer?.displayName;\r\n this.custDescription = prod.customerDescription;\r\n }\r\n\r\n public setEditByUID(productUID): void\r\n {\r\n this.prodServ.detail({ uid: productUID }).subscribe(\r\n retRes => this.setEdit(retRes),\r\n errRes => this.error(errRes));\r\n }\r\n\r\n public onClose(): void\r\n {\r\n if (this.setTab != this.Tab_Detail)\r\n {\r\n this.activeModal.close();\r\n return;\r\n }\r\n\r\n let quest = new ProductRequestDTO(ProductRequestDTO.Request_Close);\r\n\r\n this.prodServ.sendQuestion(quest);\r\n }\r\n\r\n public onTabChanged(evtArg): void\r\n {\r\n switch (evtArg.activeId)\r\n {\r\n case this.Tab_Detail:\r\n let quest = new ProductRequestDTO(ProductRequestDTO.Request_TabChanged);\r\n\r\n evtArg.preventDefault();\r\n\r\n this.holdTab = evtArg.nextId;\r\n this.prodServ.sendQuestion(quest);\r\n break;\r\n }\r\n }\r\n\r\n public onSave(statusType: number, closeIt = false): void\r\n {\r\n let quest = new ProductRequestDTO(ProductRequestDTO.Request_Save, statusType);\r\n\r\n this.loading = true;\r\n this.closeIt = closeIt;\r\n this.prodServ.sendQuestion(quest);\r\n }\r\n\r\n private handleAnswers(answer: ProductRequestDTO): void\r\n {\r\n switch (answer.requestID)\r\n {\r\n case ProductRequestDTO.Request_Save:\r\n this.saveDone(answer.data);\r\n break;\r\n\r\n case ProductRequestDTO.Request_Close:\r\n case ProductRequestDTO.Request_TabChanged:\r\n this.forRealize(answer);\r\n break;\r\n }\r\n }\r\n\r\n private saveDone(data: Product): void\r\n {\r\n if (data == null)\r\n {\r\n this.loading = false;\r\n return;\r\n }\r\n\r\n this.loading = false;\r\n\r\n if (this.closeIt)\r\n {\r\n this.activeModal.close();\r\n return;\r\n }\r\n\r\n this.data = data;\r\n this.prodStatus = data.statusType;\r\n this.description = data.description;\r\n this.custDescription = data.customerDescription;\r\n }\r\n\r\n private forRealize(answer: ProductRequestDTO): void\r\n {\r\n if (!answer.data)\r\n {\r\n this.doIt(answer);\r\n return;\r\n }\r\n\r\n let opts: IConfirmationOptions =\r\n {\r\n FunctionConfirm: () => this.doIt(answer)\r\n };\r\n\r\n this.confirmService.YesNo(CommonSettings.DirtyFormConfirmationMessage, opts);\r\n }\r\n\r\n private doIt(answer): void\r\n {\r\n if (answer.requestID == ProductRequestDTO.Request_Close)\r\n {\r\n this.activeModal.close();\r\n }\r\n else\r\n {\r\n this.setTab = this.holdTab;\r\n }\r\n }\r\n}","export default \"
          \\r\\n
          Product
          \\r\\n \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
          Merchant:{{ merchantName }}
          Description:{{ description }}
          Merchant Description:{{ custDescription }}
          \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
          Description:{{ custDescription }}
          \\r\\n
          \\r\\n \\r\\n
          \\r\\n
          \\r\\n
            \\r\\n
          • \\r\\n Details\\r\\n \\r\\n
            \\r\\n \\r\\n
            \\r\\n
            \\r\\n
          • \\r\\n
          • \\r\\n Countries\\r\\n \\r\\n
            \\r\\n \\r\\n
            \\r\\n
            \\r\\n
          • \\r\\n
          • \\r\\n Tasks\\r\\n \\r\\n
            \\r\\n \\r\\n
            \\r\\n
            \\r\\n
          • \\r\\n
          • \\r\\n Import HTS\\r\\n \\r\\n
            \\r\\n \\r\\n
            \\r\\n
            \\r\\n
          • \\r\\n
          • \\r\\n History\\r\\n \\r\\n
            \\r\\n \\r\\n
            \\r\\n
            \\r\\n
          • \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n\";","var map = {\n\t\"./af\": \"K/tc\",\n\t\"./af.js\": \"K/tc\",\n\t\"./ar\": \"jnO4\",\n\t\"./ar-dz\": \"o1bE\",\n\t\"./ar-dz.js\": \"o1bE\",\n\t\"./ar-kw\": \"Qj4J\",\n\t\"./ar-kw.js\": \"Qj4J\",\n\t\"./ar-ly\": \"HP3h\",\n\t\"./ar-ly.js\": \"HP3h\",\n\t\"./ar-ma\": \"CoRJ\",\n\t\"./ar-ma.js\": \"CoRJ\",\n\t\"./ar-sa\": \"gjCT\",\n\t\"./ar-sa.js\": \"gjCT\",\n\t\"./ar-tn\": \"bYM6\",\n\t\"./ar-tn.js\": \"bYM6\",\n\t\"./ar.js\": \"jnO4\",\n\t\"./az\": \"SFxW\",\n\t\"./az.js\": \"SFxW\",\n\t\"./be\": \"H8ED\",\n\t\"./be.js\": \"H8ED\",\n\t\"./bg\": \"hKrs\",\n\t\"./bg.js\": \"hKrs\",\n\t\"./bm\": \"p/rL\",\n\t\"./bm.js\": \"p/rL\",\n\t\"./bn\": \"kEOa\",\n\t\"./bn-bd\": \"loYQ\",\n\t\"./bn-bd.js\": \"loYQ\",\n\t\"./bn.js\": \"kEOa\",\n\t\"./bo\": \"0mo+\",\n\t\"./bo.js\": \"0mo+\",\n\t\"./br\": \"aIdf\",\n\t\"./br.js\": \"aIdf\",\n\t\"./bs\": \"JVSJ\",\n\t\"./bs.js\": \"JVSJ\",\n\t\"./ca\": \"1xZ4\",\n\t\"./ca.js\": \"1xZ4\",\n\t\"./cs\": \"PA2r\",\n\t\"./cs.js\": \"PA2r\",\n\t\"./cv\": \"A+xa\",\n\t\"./cv.js\": \"A+xa\",\n\t\"./cy\": \"l5ep\",\n\t\"./cy.js\": \"l5ep\",\n\t\"./da\": \"DxQv\",\n\t\"./da.js\": \"DxQv\",\n\t\"./de\": \"tGlX\",\n\t\"./de-at\": \"s+uk\",\n\t\"./de-at.js\": \"s+uk\",\n\t\"./de-ch\": \"u3GI\",\n\t\"./de-ch.js\": \"u3GI\",\n\t\"./de.js\": \"tGlX\",\n\t\"./dv\": \"WYrj\",\n\t\"./dv.js\": \"WYrj\",\n\t\"./el\": \"jUeY\",\n\t\"./el.js\": \"jUeY\",\n\t\"./en-au\": \"Dmvi\",\n\t\"./en-au.js\": \"Dmvi\",\n\t\"./en-ca\": \"OIYi\",\n\t\"./en-ca.js\": \"OIYi\",\n\t\"./en-gb\": \"Oaa7\",\n\t\"./en-gb.js\": \"Oaa7\",\n\t\"./en-ie\": \"4dOw\",\n\t\"./en-ie.js\": \"4dOw\",\n\t\"./en-il\": \"czMo\",\n\t\"./en-il.js\": \"czMo\",\n\t\"./en-in\": \"7C5Q\",\n\t\"./en-in.js\": \"7C5Q\",\n\t\"./en-nz\": \"b1Dy\",\n\t\"./en-nz.js\": \"b1Dy\",\n\t\"./en-sg\": \"t+mt\",\n\t\"./en-sg.js\": \"t+mt\",\n\t\"./eo\": \"Zduo\",\n\t\"./eo.js\": \"Zduo\",\n\t\"./es\": \"iYuL\",\n\t\"./es-do\": \"CjzT\",\n\t\"./es-do.js\": \"CjzT\",\n\t\"./es-mx\": \"tbfe\",\n\t\"./es-mx.js\": \"tbfe\",\n\t\"./es-us\": \"Vclq\",\n\t\"./es-us.js\": \"Vclq\",\n\t\"./es.js\": \"iYuL\",\n\t\"./et\": \"7BjC\",\n\t\"./et.js\": \"7BjC\",\n\t\"./eu\": \"D/JM\",\n\t\"./eu.js\": \"D/JM\",\n\t\"./fa\": \"jfSC\",\n\t\"./fa.js\": \"jfSC\",\n\t\"./fi\": \"gekB\",\n\t\"./fi.js\": \"gekB\",\n\t\"./fil\": \"1ppg\",\n\t\"./fil.js\": \"1ppg\",\n\t\"./fo\": \"ByF4\",\n\t\"./fo.js\": \"ByF4\",\n\t\"./fr\": \"nyYc\",\n\t\"./fr-ca\": \"2fjn\",\n\t\"./fr-ca.js\": \"2fjn\",\n\t\"./fr-ch\": \"Dkky\",\n\t\"./fr-ch.js\": \"Dkky\",\n\t\"./fr.js\": \"nyYc\",\n\t\"./fy\": \"cRix\",\n\t\"./fy.js\": \"cRix\",\n\t\"./ga\": \"USCx\",\n\t\"./ga.js\": \"USCx\",\n\t\"./gd\": \"9rRi\",\n\t\"./gd.js\": \"9rRi\",\n\t\"./gl\": \"iEDd\",\n\t\"./gl.js\": \"iEDd\",\n\t\"./gom-deva\": \"qvJo\",\n\t\"./gom-deva.js\": \"qvJo\",\n\t\"./gom-latn\": \"DKr+\",\n\t\"./gom-latn.js\": \"DKr+\",\n\t\"./gu\": \"4MV3\",\n\t\"./gu.js\": \"4MV3\",\n\t\"./he\": \"x6pH\",\n\t\"./he.js\": \"x6pH\",\n\t\"./hi\": \"3E1r\",\n\t\"./hi.js\": \"3E1r\",\n\t\"./hr\": \"S6ln\",\n\t\"./hr.js\": \"S6ln\",\n\t\"./hu\": \"WxRl\",\n\t\"./hu.js\": \"WxRl\",\n\t\"./hy-am\": \"1rYy\",\n\t\"./hy-am.js\": \"1rYy\",\n\t\"./id\": \"UDhR\",\n\t\"./id.js\": \"UDhR\",\n\t\"./is\": \"BVg3\",\n\t\"./is.js\": \"BVg3\",\n\t\"./it\": \"bpih\",\n\t\"./it-ch\": \"bxKX\",\n\t\"./it-ch.js\": \"bxKX\",\n\t\"./it.js\": \"bpih\",\n\t\"./ja\": \"B55N\",\n\t\"./ja.js\": \"B55N\",\n\t\"./jv\": \"tUCv\",\n\t\"./jv.js\": \"tUCv\",\n\t\"./ka\": \"IBtZ\",\n\t\"./ka.js\": \"IBtZ\",\n\t\"./kk\": \"bXm7\",\n\t\"./kk.js\": \"bXm7\",\n\t\"./km\": \"6B0Y\",\n\t\"./km.js\": \"6B0Y\",\n\t\"./kn\": \"PpIw\",\n\t\"./kn.js\": \"PpIw\",\n\t\"./ko\": \"Ivi+\",\n\t\"./ko.js\": \"Ivi+\",\n\t\"./ku\": \"JCF/\",\n\t\"./ku.js\": \"JCF/\",\n\t\"./ky\": \"lgnt\",\n\t\"./ky.js\": \"lgnt\",\n\t\"./lb\": \"RAwQ\",\n\t\"./lb.js\": \"RAwQ\",\n\t\"./lo\": \"sp3z\",\n\t\"./lo.js\": \"sp3z\",\n\t\"./lt\": \"JvlW\",\n\t\"./lt.js\": \"JvlW\",\n\t\"./lv\": \"uXwI\",\n\t\"./lv.js\": \"uXwI\",\n\t\"./me\": \"KTz0\",\n\t\"./me.js\": \"KTz0\",\n\t\"./mi\": \"aIsn\",\n\t\"./mi.js\": \"aIsn\",\n\t\"./mk\": \"aQkU\",\n\t\"./mk.js\": \"aQkU\",\n\t\"./ml\": \"AvvY\",\n\t\"./ml.js\": \"AvvY\",\n\t\"./mn\": \"lYtQ\",\n\t\"./mn.js\": \"lYtQ\",\n\t\"./mr\": \"Ob0Z\",\n\t\"./mr.js\": \"Ob0Z\",\n\t\"./ms\": \"6+QB\",\n\t\"./ms-my\": \"ZAMP\",\n\t\"./ms-my.js\": \"ZAMP\",\n\t\"./ms.js\": \"6+QB\",\n\t\"./mt\": \"G0Uy\",\n\t\"./mt.js\": \"G0Uy\",\n\t\"./my\": \"honF\",\n\t\"./my.js\": \"honF\",\n\t\"./nb\": \"bOMt\",\n\t\"./nb.js\": \"bOMt\",\n\t\"./ne\": \"OjkT\",\n\t\"./ne.js\": \"OjkT\",\n\t\"./nl\": \"+s0g\",\n\t\"./nl-be\": \"2ykv\",\n\t\"./nl-be.js\": \"2ykv\",\n\t\"./nl.js\": \"+s0g\",\n\t\"./nn\": \"uEye\",\n\t\"./nn.js\": \"uEye\",\n\t\"./oc-lnc\": \"Fnuy\",\n\t\"./oc-lnc.js\": \"Fnuy\",\n\t\"./pa-in\": \"8/+R\",\n\t\"./pa-in.js\": \"8/+R\",\n\t\"./pl\": \"jVdC\",\n\t\"./pl.js\": \"jVdC\",\n\t\"./pt\": \"8mBD\",\n\t\"./pt-br\": \"0tRk\",\n\t\"./pt-br.js\": \"0tRk\",\n\t\"./pt.js\": \"8mBD\",\n\t\"./ro\": \"lyxo\",\n\t\"./ro.js\": \"lyxo\",\n\t\"./ru\": \"lXzo\",\n\t\"./ru.js\": \"lXzo\",\n\t\"./sd\": \"Z4QM\",\n\t\"./sd.js\": \"Z4QM\",\n\t\"./se\": \"//9w\",\n\t\"./se.js\": \"//9w\",\n\t\"./si\": \"7aV9\",\n\t\"./si.js\": \"7aV9\",\n\t\"./sk\": \"e+ae\",\n\t\"./sk.js\": \"e+ae\",\n\t\"./sl\": \"gVVK\",\n\t\"./sl.js\": \"gVVK\",\n\t\"./sq\": \"yPMs\",\n\t\"./sq.js\": \"yPMs\",\n\t\"./sr\": \"zx6S\",\n\t\"./sr-cyrl\": \"E+lV\",\n\t\"./sr-cyrl.js\": \"E+lV\",\n\t\"./sr.js\": \"zx6S\",\n\t\"./ss\": \"Ur1D\",\n\t\"./ss.js\": \"Ur1D\",\n\t\"./sv\": \"X709\",\n\t\"./sv.js\": \"X709\",\n\t\"./sw\": \"dNwA\",\n\t\"./sw.js\": \"dNwA\",\n\t\"./ta\": \"PeUW\",\n\t\"./ta.js\": \"PeUW\",\n\t\"./te\": \"XLvN\",\n\t\"./te.js\": \"XLvN\",\n\t\"./tet\": \"V2x9\",\n\t\"./tet.js\": \"V2x9\",\n\t\"./tg\": \"Oxv6\",\n\t\"./tg.js\": \"Oxv6\",\n\t\"./th\": \"EOgW\",\n\t\"./th.js\": \"EOgW\",\n\t\"./tk\": \"Wv91\",\n\t\"./tk.js\": \"Wv91\",\n\t\"./tl-ph\": \"Dzi0\",\n\t\"./tl-ph.js\": \"Dzi0\",\n\t\"./tlh\": \"z3Vd\",\n\t\"./tlh.js\": \"z3Vd\",\n\t\"./tr\": \"DoHr\",\n\t\"./tr.js\": \"DoHr\",\n\t\"./tzl\": \"z1FC\",\n\t\"./tzl.js\": \"z1FC\",\n\t\"./tzm\": \"wQk9\",\n\t\"./tzm-latn\": \"tT3J\",\n\t\"./tzm-latn.js\": \"tT3J\",\n\t\"./tzm.js\": \"wQk9\",\n\t\"./ug-cn\": \"YRex\",\n\t\"./ug-cn.js\": \"YRex\",\n\t\"./uk\": \"raLr\",\n\t\"./uk.js\": \"raLr\",\n\t\"./ur\": \"UpQW\",\n\t\"./ur.js\": \"UpQW\",\n\t\"./uz\": \"Loxo\",\n\t\"./uz-latn\": \"AQ68\",\n\t\"./uz-latn.js\": \"AQ68\",\n\t\"./uz.js\": \"Loxo\",\n\t\"./vi\": \"KSF8\",\n\t\"./vi.js\": \"KSF8\",\n\t\"./x-pseudo\": \"/X5v\",\n\t\"./x-pseudo.js\": \"/X5v\",\n\t\"./yo\": \"fzPg\",\n\t\"./yo.js\": \"fzPg\",\n\t\"./zh-cn\": \"XDpg\",\n\t\"./zh-cn.js\": \"XDpg\",\n\t\"./zh-hk\": \"SatO\",\n\t\"./zh-hk.js\": \"SatO\",\n\t\"./zh-mo\": \"OmwH\",\n\t\"./zh-mo.js\": \"OmwH\",\n\t\"./zh-tw\": \"kOpN\",\n\t\"./zh-tw.js\": \"kOpN\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"RnhZ\";","import { Component } from \"@angular/core\";\r\nimport { Router } from \"@angular/router\";\r\nimport { Purchaser } from '@app/data';\r\nimport { AgRendererComponent } from \"ag-grid-angular\";\r\nimport { ICellRendererParams } from \"ag-grid-community\";\r\nimport { PurchaserCellOptions } from \"../../models/grid-column-purchaser\";\r\n\r\n@Component({\r\n templateUrl: \"./grid-cell-purchaser.html\",\r\n})\r\nexport class GridCellPurchaserRenderer implements AgRendererComponent\r\n{\r\n public showType: boolean;\r\n public purchaser: Purchaser;\r\n\r\n private cellParams: ICellRendererParams;\r\n\r\n constructor(private router: Router)\r\n {\r\n }\r\n\r\n agInit(params)\r\n {\r\n let opts = params.options as PurchaserCellOptions;\r\n\r\n this.showType = opts.showType;\r\n this.cellParams = params;\r\n\r\n if (params.node.data.purchaser)\r\n {\r\n this.purchaser = params.node.data.purchaser;\r\n }\r\n else\r\n {\r\n this.purchaser = { displayName: params.value };\r\n }\r\n }\r\n\r\n refresh(params): boolean\r\n {\r\n this.cellParams = params;\r\n return true;\r\n }\r\n}","export default \"\";","import { GridColumn } from \"@app/shared/ag-grid-helpers/models/grid-column.model\";\r\nimport { OrdersHoldFilter } from \"../hold-filter/hold-filter.component\";\r\nimport { GridCellOrderHoldsRenderer } from \"./grid-cell-holds.renderer\";\r\n\r\nexport class GridColumnOrderHolds extends GridColumn\r\n{\r\n constructor(width: number = 150)\r\n {\r\n super(null, \"Holds\");\r\n\r\n this.field = \"OrderHolds\";\r\n this.width = width;\r\n this.filter = \"ordersHoldFilter\";\r\n this.sortable = false;\r\n this.resizable = false;\r\n this.suppressSizeToFit = true;\r\n this.cellRendererFramework = GridCellOrderHoldsRenderer;\r\n\r\n this.registerComponents.push({ ordersHoldFilter: OrdersHoldFilter });\r\n }\r\n}","import { Component, OnInit } from \"@angular/core\";\r\nimport { ActivatedRoute } from \"@angular/router\";\r\nimport { AppService } from \"@app/app.service\";\r\nimport { AuthService, BaseComponent, Profile, ProfileType } from \"@app/data\";\r\nimport { CommonSettings } from '@app/shared/common-settings';\r\nimport { ToastrService } from \"ngx-toastr\";\r\n\r\n@Component({\r\n styleUrls: [\"my-dashboard.component.scss\"],\r\n templateUrl: \"./my-dashboard.component.html\"\r\n})\r\nexport class MyDashboardComponent extends BaseComponent implements OnInit\r\n{\r\n public readonly tabTask = CommonSettings.DashboardTab_Tasks;\r\n public readonly tabProfile = CommonSettings.DashboardTab_Profile;\r\n\r\n public setTab: number;\r\n public myProfile: Profile;\r\n\r\n constructor(\r\n toastrService: ToastrService,\r\n private appService: AppService,\r\n private activeRoute: ActivatedRoute,\r\n private authService: AuthService)\r\n {\r\n super(toastrService);\r\n\r\n this.setTab = CommonSettings.DashboardTab_Tasks;\r\n this.appService.pageTitle = \"Dashboard\";\r\n }\r\n\r\n ngOnInit(): void\r\n {\r\n this.authService.getProfile$().subscribe(() =>\r\n {\r\n this.myProfile = this.authService.profile\r\n\r\n // This is temp while testing the Task stuff\r\n if (this.myProfile.profileType != ProfileType.admin)\r\n {\r\n this.setTab = CommonSettings.DashboardTab_Profile;\r\n }\r\n\r\n if (this.activeRoute.snapshot.paramMap.has(\"tab\"))\r\n {\r\n this.setTab = parseInt(this.activeRoute.snapshot.paramMap.get(\"tab\"));\r\n }\r\n });\r\n }\r\n}","export default \"
          \\r\\n
          \\r\\n
          \\r\\n

          {{ myProfile?.firstName }} {{ myProfile?.lastName }}

          \\r\\n
          {{ myProfile?.emailAddress }}
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
            \\r\\n
          • \\r\\n Tasks\\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
          \";","export default \"\";","import { Injectable } from \"@angular/core\";\r\nimport { GlobalIcons } from \"@app/shared/GlobalIcons\";\r\nimport { NgbModal, NgbModalOptions } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { ConfirmationComponent } from \"./confirmation.component\";\r\n\r\nexport interface IConfirmationOptions\r\n{\r\n Title?: string;\r\n FunctionClose?: () => void;\r\n FunctionConfirm?: () => void;\r\n ButtonCloseIcon?: string;\r\n ButtonCloseText?: string;\r\n ButtonCloseColor?: string;\r\n ButtonConfirmIcon?: string;\r\n ButtonConfirmText?: string;\r\n ButtonConfirmColor?: string;\r\n}\r\n\r\n@Injectable()\r\nexport class ConfirmationService\r\n{\r\n private readonly YesNoDefaults: IConfirmationOptions =\r\n {\r\n Title: \"Really?\",\r\n FunctionClose: null,\r\n FunctionConfirm: null,\r\n ButtonCloseIcon: GlobalIcons.No,\r\n ButtonCloseText: \"No\",\r\n ButtonCloseColor: \"white\",\r\n ButtonConfirmIcon: GlobalIcons.ThumbsUp,\r\n ButtonConfirmText: \"Yes\",\r\n ButtonConfirmColor: \"success\"\r\n };\r\n\r\n private readonly DeleteDefaults: IConfirmationOptions =\r\n {\r\n Title: \"Delete?\",\r\n FunctionClose: null,\r\n FunctionConfirm: null,\r\n ButtonCloseIcon: GlobalIcons.No,\r\n ButtonCloseText: \"Cancel\",\r\n ButtonCloseColor: \"white\",\r\n ButtonConfirmIcon: GlobalIcons.Trash,\r\n ButtonConfirmText: \"Delete\",\r\n ButtonConfirmColor: \"danger\"\r\n };\r\n\r\n private readonly ConfirmDefaults: IConfirmationOptions =\r\n {\r\n Title: \"Confirm\",\r\n FunctionClose: null,\r\n FunctionConfirm: null,\r\n ButtonCloseIcon: GlobalIcons.No,\r\n ButtonCloseText: \"Cancel\",\r\n ButtonCloseColor: \"white\",\r\n ButtonConfirmIcon: GlobalIcons.Check,\r\n ButtonConfirmText: \"OK\",\r\n ButtonConfirmColor: \"primary\"\r\n };\r\n\r\n constructor(private modalService: NgbModal)\r\n {\r\n }\r\n\r\n public YesNo(message: string, options: IConfirmationOptions = this.YesNoDefaults)\r\n {\r\n options = { ...this.YesNoDefaults, ...options };\r\n\r\n return this.Open(message, options);\r\n }\r\n\r\n public Delete(message: string, options: IConfirmationOptions = this.DeleteDefaults)\r\n {\r\n options = { ...this.DeleteDefaults, ...options };\r\n\r\n return this.Open(message, options);\r\n }\r\n\r\n public Open(message: string, options: IConfirmationOptions = this.ConfirmDefaults): Promise\r\n {\r\n options = { ...this.ConfirmDefaults, ...options };\r\n\r\n let diOpts: NgbModalOptions =\r\n {\r\n backdrop: \"static\",\r\n centered: true\r\n };\r\n\r\n let modalRef = this.modalService.open(ConfirmationComponent, diOpts);\r\n\r\n modalRef.componentInstance.Title = options.Title;\r\n modalRef.componentInstance.Message = message;\r\n modalRef.componentInstance.FunctionClose = options.FunctionClose;\r\n modalRef.componentInstance.FunctionConfirm = options.FunctionConfirm;\r\n modalRef.componentInstance.ButtonCloseIcon = options.ButtonCloseIcon;\r\n modalRef.componentInstance.ButtonCloseText = options.ButtonCloseText;\r\n modalRef.componentInstance.ButtonCloseColor = options.ButtonCloseColor;\r\n modalRef.componentInstance.ButtonConfirmIcon = options.ButtonConfirmIcon;\r\n modalRef.componentInstance.ButtonConfirmText = options.ButtonConfirmText;\r\n modalRef.componentInstance.ButtonConfirmColor = options.ButtonConfirmColor;\r\n\r\n return modalRef.result;\r\n }\r\n}","export enum ProfileType\r\n{\r\n master = 2,\r\n admin = 3,\r\n purchaser = 4,\r\n customer = 5,\r\n freightForwarder = 6\r\n}","export default \".address-wrapper {\\n display: -ms-flexbox;\\n display: flex;\\n}\\n\\n.address-wrapper .address-text {\\n -ms-flex-positive: 1;\\n flex-grow: 1;\\n overflow-x: hidden;\\n text-overflow: ellipsis;\\n}\\n\";","import { Component } from \"@angular/core\";\r\nimport { CustomerService } from \"@app/data\";\r\nimport { GridFilter, GridFilterStorage } from '@app/shared/ag-grid-helpers/models/grid-filter.model';\r\nimport { Util } from \"@app/utils/util\";\r\nimport { AgFilterComponent } from \"ag-grid-angular\";\r\nimport { IDoesFilterPassParams } from \"ag-grid-community\";\r\nimport { GridFilterCustom } from \"../grid-filter-custom\";\r\n\r\n@Component({\r\n styleUrls: [\"../../../styles/gridfilter.scss\"],\r\n templateUrl: \"./grid-merchant-filter.component.html\"\r\n})\r\nexport class GridMerchantFilter extends GridFilterCustom implements AgFilterComponent\r\n{\r\n public merchants;\r\n public merchantUID;\r\n\r\n private subObj: string;\r\n private subUID: string;\r\n private filterField;\r\n\r\n constructor(public customerService: CustomerService)\r\n {\r\n super();\r\n }\r\n\r\n agInit(params: any): void\r\n {\r\n this.initFilter(params);\r\n this.filterField = this.getParam(\"field\");\r\n\r\n this.customerService.getLookup().add(() => this.loadMerchants());\r\n\r\n if (this.filterField.indexOf(\".\") == -1)\r\n {\r\n this.subObj = null;\r\n this.subUID = null;\r\n return;\r\n }\r\n\r\n let broken = this.filterField.split(\".\");\r\n\r\n this.subObj = broken[0];\r\n this.subUID = broken[1];\r\n }\r\n\r\n isFilterActive(): boolean\r\n {\r\n return !Util.isEmpty(this.merchantUID);\r\n }\r\n\r\n doesFilterPass(params: IDoesFilterPassParams): boolean\r\n {\r\n if (this.isServerSide)\r\n {\r\n return true;\r\n }\r\n\r\n if (this.subObj == null)\r\n {\r\n return this.merchantUID == params.data[this.filterField];\r\n }\r\n\r\n let merch = params.data[this.subObj];\r\n\r\n if (!merch)\r\n {\r\n return false;\r\n }\r\n\r\n return merch[this.subUID] == this.merchantUID;\r\n }\r\n\r\n getModel()\r\n {\r\n if (this.merchantUID == null)\r\n {\r\n return null;\r\n }\r\n\r\n return new GridFilterStorage(this.filterField, new GridFilter(this.merchantUID));\r\n }\r\n\r\n setModel(model: any)\r\n {\r\n this.merchantUID = model?.gridFilter?.filter;\r\n }\r\n\r\n public onFilterClear(): void\r\n {\r\n this.merchantUID = null;\r\n\r\n this.applyAndClose();\r\n }\r\n\r\n public onFilterApply(): void\r\n {\r\n this.applyAndClose();\r\n }\r\n\r\n private loadMerchants(): void\r\n {\r\n this.merchants = this.customerService.lookupList;\r\n this.merchants.unshift({ uid: null, displayName: null });\r\n }\r\n}","export default \"
          \\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 { Util } from \"@app/utils/util\";\r\nimport cloneDeep from \"lodash.clonedeep\";\r\nimport { GridCheckListFilter } from \"../filters/grid-checklist-filter/checklist-filter.component\";\r\nimport { GridColumn } from \"./grid-column.model\";\r\n\r\nexport class GridColumnStatus extends GridColumn\r\n{\r\n constructor(statuses)\r\n {\r\n super(\"status\", \"Status\");\r\n\r\n this.width = 175;\r\n this.filter = \"checkListFilter\";\r\n this.comparator = this.statusSorter;\r\n this.cellRenderer = this.statusCellRenderer.bind(this);\r\n this.filterParams = { field: \"statusType\", items: cloneDeep(statuses) };\r\n this.suppressSizeToFit = true;\r\n\r\n this.registerComponents.push({ checkListFilter: GridCheckListFilter });\r\n }\r\n\r\n private statusCellRenderer(params: any)\r\n {\r\n let name;\r\n let data = params.data;\r\n\r\n if (data.hasOwnProperty(\"status\"))\r\n {\r\n name = data.status?.name;\r\n }\r\n else\r\n {\r\n if (data.hasOwnProperty(\"statusType\"))\r\n {\r\n let status = params.column.colDef.filterParams.items;\r\n let statObj = status.find(elm => elm.id == data.statusType);\r\n\r\n if (statObj)\r\n {\r\n name = statObj.name;\r\n }\r\n }\r\n }\r\n\r\n if (Util.isEmpty(name))\r\n {\r\n return Util.DOM_Space;\r\n }\r\n\r\n let className = name.toLowerCase().replaceAll(\" \", \"\");\r\n\r\n return `
          ${name}
          `;\r\n }\r\n}","import { Component } from \"@angular/core\";\r\nimport { GridFilter, GridFilterStorage } from \"@app/shared/ag-grid-helpers/models/grid-filter.model\";\r\nimport { AgFilterComponent } from \"ag-grid-angular\";\r\nimport { IDoesFilterPassParams } from \"ag-grid-community\";\r\nimport { GridFilterCustom } from \"../grid-filter-custom\";\r\n\r\n@Component({\r\n styleUrls: [\"../../../styles/gridfilter.scss\", \"../../../styles/slider.scss\"],\r\n templateUrl: \"./grid-filter-meter.component.html\"\r\n})\r\nexport class GridFilterMeter extends GridFilterCustom implements AgFilterComponent\r\n{\r\n public meterValue: number = 100;\r\n public filterOptions =\r\n {\r\n ceil: 1,\r\n step: .1,\r\n floor: 0,\r\n maxLabel: \"100%\",\r\n minLabel: \"0%\",\r\n showTicks: true,\r\n translate: (value: number): string =>\r\n {\r\n return (value * 100) + \"%\";\r\n }\r\n };\r\n\r\n private field;\r\n\r\n agInit(params: any): void\r\n {\r\n this.initFilter(params);\r\n\r\n this.field = this.getParam(\"field\");\r\n }\r\n\r\n isFilterActive(): boolean\r\n {\r\n return (this.meterValue != null);\r\n }\r\n\r\n doesFilterPass(params: IDoesFilterPassParams): boolean\r\n {\r\n if (this.isServerSide || this.meterValue == null)\r\n {\r\n return true;\r\n }\r\n\r\n return params.data[this.field] <= (this.meterValue * 100);\r\n }\r\n\r\n getModel()\r\n {\r\n if (this.meterValue == null)\r\n {\r\n return null;\r\n }\r\n\r\n return new GridFilterStorage(this.field, new GridFilter(this.meterValue));\r\n }\r\n\r\n setModel(model: any)\r\n {\r\n this.meterValue = model?.gridFilter?.filter;\r\n }\r\n\r\n public onFilterClear(): void\r\n {\r\n this.meterValue = null;\r\n\r\n this.applyAndClose();\r\n }\r\n\r\n public onFilterApply(): void\r\n {\r\n this.applyAndClose();\r\n }\r\n}","export default \"
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n
          \\r\\n
          \\r\\n
          \";","export class DealerConnectCommon\r\n{\r\n public static readonly TradeStatuses =\r\n [\r\n { id: 1, name: \"Approved\" },\r\n { id: 10, name: \"Pending Review\" },\r\n { id: 12, name: \"Declined\" }\r\n ];\r\n\r\n public static getStatusName(status: number): string\r\n {\r\n let stat = DealerConnectCommon.TradeStatuses.find(elm => elm.id == status);\r\n\r\n return stat?.name;\r\n }\r\n}","import { IAfterGuiAttachedParams, ICellRendererParams } from '@ag-grid-enterprise/all-modules';\r\nimport { Component } from \"@angular/core\";\r\nimport { AgRendererComponent } from \"ag-grid-angular\";\r\nimport { threadId } from \"worker_threads\";\r\n\r\n@Component(\r\n {\r\n styleUrls: [\"./grid-cell-star-rating-renderer.scss\"],\r\n templateUrl: \"./grid-cell-star-rating-renderer.html\"\r\n })\r\nexport class GridCellStarRatingRenderer implements AgRendererComponent\r\n{\r\n public rating: number;\r\n\r\n private cellParams: ICellRendererParams;\r\n\r\n agInit(params): void\r\n {\r\n this.rating = params.value;\r\n this.cellParams = params;\r\n }\r\n\r\n refresh(params): boolean\r\n {\r\n this.cellParams = params;\r\n return true;\r\n }\r\n\r\n afterGuiAttached?(params?: IAfterGuiAttachedParams): void\r\n {\r\n }\r\n}","export default \"\";","export default \".rating {\\n font-size: 1.5rem;\\n}\\n\";","export default \".block-list {\\n display: -ms-flexbox;\\n display: flex;\\n -ms-flex-wrap: wrap;\\n flex-wrap: wrap;\\n}\\n\\n.block-wrapper {\\n padding: .5rem;\\n}\\n\\n.block {\\n border: 1px solid #ccc;\\n border-bottom-left-radius: 1rem;\\n border-bottom-right-radius: 1rem;\\n}\\n\\n.block label {\\n margin-bottom: 0rem;\\n}\\n\\n.block .title {\\n border: 1px solid #ccc;\\n display: -ms-flexbox;\\n display: flex;\\n padding: .5rem;\\n -ms-flex-wrap: wrap;\\n flex-wrap: wrap;\\n -ms-flex-align: center;\\n align-items: center;\\n -ms-flex-pack: justify;\\n justify-content: space-between;\\n background-color: #eee;\\n}\\n\\n.block .title h5 {\\n margin: 0rem;\\n overflow: hidden;\\n -ms-flex-positive: 1;\\n flex-grow: 1;\\n white-space: nowrap;\\n text-overflow: ellipsis;\\n}\\n\\n.block .detail-line {\\n margin: 0rem;\\n background-color: #fff;\\n border-bottom-left-radius: 1rem;\\n border-bottom-right-radius: 1rem;\\n}\\n\\n.block .detail-line div {\\n margin-bottom: .25rem;\\n}\\n\";","import { ExcelHelper } from \"../misc/excel-helper\";\r\n\r\nexport class ProductCommon\r\n{\r\n public static readonly ExportTypes =\r\n [\r\n { id: 1, name: \"Domestic\" },\r\n { id: 2, name: \"Foreign\" },\r\n { id: 3, name: \"Foreign Military Sales\" }\r\n ]\r\n\r\n public static readonly UnitOfMessures =\r\n [\r\n { id: 1, name: \"No.\" },\r\n { id: 2, name: \"kg\" },\r\n { id: 3, name: \"Pcs\" },\r\n { id: 4, name: \"Dz\" },\r\n { id: 5, name: \"Doz.\" },\r\n { id: 6, name: \"Bbl\" },\r\n { id: 7, name: \"Dz prs.\" },\r\n { id: 8, name: \"Dz Pcs\" },\r\n { id: 9, name: \"m2\" }\r\n ];\r\n\r\n public static readonly ProductStatuses =\r\n [\r\n { id: 7, name: \"New\" },\r\n { id: 2, name: \"Pending\" },\r\n { id: 8, name: \"Pending Release\" },\r\n { id: 1, name: \"Active\" },\r\n { id: 9, name: \"Inactive\" },\r\n { id: 5, name: \"Failed\" },\r\n ];\r\n\r\n public static readonly ScheduleBStatuses =\r\n [\r\n { id: 1, name: \"Active\" },\r\n { id: 2, name: \"Pending\" },\r\n { id: 9, name: \"Inactive\" }\r\n ];\r\n\r\n public static readonly ImportStatuses =\r\n [\r\n { id: 1, name: \"Active\" },\r\n { id: 5, name: \"Failed\" }\r\n ];\r\n\r\n public static getTemplate(isAdmin: boolean): void\r\n {\r\n let cols =\r\n [\r\n \"SellerCategory\",\r\n \"SellerSubCategory\",\r\n \"IDno\",\r\n \"PartNo\",\r\n \"UPC\",\r\n \"CustomerDescription\",\r\n \"Make\",\r\n \"Model\",\r\n \"BarrelLength\",\r\n \"Caliber\",\r\n \"MagazineQuantity\",\r\n \"MagazineCapacityRounds\",\r\n \"ActionType\",\r\n \"TypeOfAmmo\",\r\n \"Manufacturer\",\r\n \"ProductPageLink\",\r\n \"ImageLink\",\r\n \"AdditionalImageLink\",\r\n \"Brand\",\r\n \"LithiumOrLithiumIonBattery\",\r\n \"Pounds\",\r\n \"Ounces\",\r\n \"WeightInKilograms\",\r\n \"CountryOfOrigin\",\r\n \"CJorCCATSClassification\"\r\n ];\r\n\r\n if (isAdmin)\r\n {\r\n let addCols = [\"IsSerializable?\", \"AEPDescription\", \"Category\", \"SubCategory\", \"WebsiteCategory\", \"WebsiteSubCategory\"];\r\n\r\n cols = [...cols, ...addCols];\r\n }\r\n\r\n ExcelHelper.makeTemplate(\"Products\", cols);\r\n }\r\n}","import { HttpClient } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { ApiService } from \"@app/data/api/api.service\";\r\nimport { Dealer } from \"./dealer.model\";\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class DealerService extends ApiService\r\n{\r\n constructor(httpClient: HttpClient)\r\n {\r\n super(httpClient, \"dealer\");\r\n }\r\n}","import { Component, OnInit } from \"@angular/core\";\r\nimport { AppService } from \"@app/app.service\";\r\nimport { ApiResult, BaseComponent } from \"@app/data\";\r\nimport { Dealer } from \"@app/data/dealer/dealer.model\";\r\nimport { DealerService } from \"@app/data/dealer/dealer.service\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\n\r\n@Component({\r\n selector: \"dealer-list\",\r\n templateUrl: \"./dealer-list.html\"\r\n})\r\nexport class DealerList extends BaseComponent implements OnInit\r\n{\r\n public dealers: Array;\r\n\r\n constructor(toastrServ: ToastrService, private appService: AppService, private dealerServ: DealerService)\r\n {\r\n super(toastrServ);\r\n\r\n this.title = \"Local Dealers\";\r\n this.appService.pageTitle = this.title;\r\n }\r\n\r\n ngOnInit(): void\r\n {\r\n this.dealerServ.list().subscribe((retRes) => this.popDealers(retRes));\r\n }\r\n\r\n private popDealers(retRes: ApiResult): void\r\n {\r\n this.dealers = retRes.results;\r\n }\r\n}","export default \"
          \\r\\n \\r\\n

          {{ title }}

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

          {{ dealer.displayName }}

          \\r\\n

          \\r\\n {{ dealer.displayName }}\\r\\n

          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \";","import { Component } from \"@angular/core\";\r\nimport { Customer } from \"@app/data\";\r\nimport { AgRendererComponent } from \"ag-grid-angular\";\r\nimport { ICellRendererParams } from \"ag-grid-community\";\r\n\r\n@Component({\r\n templateUrl: \"./grid-cell-merchant.html\",\r\n})\r\nexport class GridCellMerchantRenderer implements AgRendererComponent\r\n{\r\n public merchant: Customer;\r\n\r\n private cellParams: ICellRendererParams;\r\n\r\n constructor()\r\n {\r\n }\r\n\r\n agInit(params)\r\n {\r\n this.cellParams = params;\r\n\r\n if (params.node.data.customer)\r\n {\r\n this.merchant = params.node.data.customer;\r\n }\r\n else\r\n {\r\n this.merchant = { displayName: params.value };\r\n }\r\n }\r\n\r\n refresh(params): boolean\r\n {\r\n this.cellParams = params;\r\n return true;\r\n }\r\n}","export default \"\";","import { HttpClient } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { FormBuilder, Validators } from \"@angular/forms\";\r\nimport { ApiService } from \"@app/data/api/api.service\";\r\nimport { Feedback } from \"./feedback.model\";\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class FeedbackService extends ApiService\r\n{\r\n public get editorForm()\r\n {\r\n let fb = new FormBuilder();\r\n let grp = fb.group(\r\n {\r\n comment: [, Validators.required],\r\n ratingType: [],\r\n feedbackType: []\r\n });\r\n\r\n return grp;\r\n }\r\n\r\n constructor(httpClient: HttpClient)\r\n {\r\n super(httpClient, \"feedback\");\r\n }\r\n}","import { Util } from '@app/utils/util';\r\nimport { Component, Input } from \"@angular/core\";\r\nimport { NgbActiveModal } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { GlobalIcons } from \"../GlobalIcons\";\r\n\r\n@Component({\r\n selector: \"app-confirmation\",\r\n styleUrls: [\"./confirmation.component.scss\"],\r\n templateUrl: \"./confirmation.component.html\"\r\n})\r\nexport class ConfirmationComponent\r\n{\r\n public Icons = GlobalIcons;\r\n\r\n @Input()\r\n Data: any;\r\n\r\n @Input()\r\n Title: string;\r\n\r\n @Input()\r\n Message: string;\r\n\r\n @Input()\r\n ButtonCloseIcon: string = this.Icons.No;\r\n\r\n @Input()\r\n ButtonCloseText: string = \"Close\";\r\n\r\n @Input()\r\n ButtonCloseColor: string = \"light\";\r\n\r\n @Input()\r\n ButtonConfirmIcon: string = this.Icons.Check;\r\n\r\n @Input()\r\n ButtonConfirmText: string = \"OK\";\r\n\r\n @Input()\r\n ButtonConfirmColor: string = \"light\";\r\n\r\n @Input()\r\n FunctionClose: () => void;\r\n\r\n @Input()\r\n FunctionConfirm: () => void;\r\n\r\n constructor(private activeModal: NgbActiveModal)\r\n {\r\n }\r\n\r\n public onClose()\r\n {\r\n if (!Util.isEmpty(this.FunctionClose))\r\n {\r\n this.FunctionClose();\r\n }\r\n\r\n this.activeModal.close(false);\r\n }\r\n\r\n public onConfirm()\r\n {\r\n if (!Util.isEmpty(this.FunctionConfirm))\r\n {\r\n this.FunctionConfirm();\r\n }\r\n\r\n this.activeModal.close(true);\r\n }\r\n\r\n public onDismiss()\r\n {\r\n this.activeModal.dismiss();\r\n }\r\n}","export default \"
          \\r\\n

          {{ Title }}

          \\r\\n \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n
          \";","export default \".modal-header {\\n padding: 1rem;\\n border-bottom: 1px solid #eee;\\n}\\n\\n.modal-body {\\n padding: 1rem;\\n}\\n\";","import { GridColumn } from \"@app/shared/ag-grid-helpers/models/grid-column.model\";\r\nimport { FreightForwarderCommon } from '@app/shared/freight-forwarder/freight-forwarder-common';\r\nimport { Util } from \"@app/utils/util\";\r\nimport { GridFFRecordTypeFilter } from \"./grid-ff-record-type-filter/grid-ff-record-type-filter.component\";\r\n\r\nexport class GridColumnFFType extends GridColumn\r\n{\r\n constructor()\r\n {\r\n super(\"countryUID\", \"Type\");\r\n\r\n this.width = 175;\r\n this.filter = \"recordTypeFilter\";\r\n this.comparator = this.sorter;\r\n this.cellRenderer = this.renderFFType;\r\n this.suppressSizeToFit = true;\r\n\r\n this.registerComponents.push({ recordTypeFilter: GridFFRecordTypeFilter });\r\n }\r\n\r\n private renderFFType(agData: any): string\r\n {\r\n return FreightForwarderCommon.recordType(agData.data.countryUID);\r\n }\r\n\r\n private sorter(val1, val2)\r\n {\r\n if (Util.isEmpty(val1) || Util.isEmpty(val2))\r\n {\r\n return 0;\r\n }\r\n\r\n let name1 = FreightForwarderCommon.recordType(val1);\r\n let name2 = FreightForwarderCommon.recordType(val2);\r\n\r\n if (name1 == name2)\r\n {\r\n return 0;\r\n }\r\n\r\n return name1 > name2 ? 1 : -1;\r\n }\r\n}","import { Component, ViewChild } from \"@angular/core\";\r\nimport { AppService } from \"@app/app.service\";\r\nimport { Freight, FreightService } from \"@app/data\";\r\nimport { FreightForwarderType } from \"@app/data/enums/freight-forwarder-type.enum\";\r\nimport { GridBase } from \"@app/shared/ag-grid-helpers/ag-grid-base\";\r\nimport { GridHelpers } from \"@app/shared/ag-grid-helpers/grid-helper\";\r\nimport { GridColumnAddress } from \"@app/shared/ag-grid-helpers/models/grid-column-address\";\r\nimport { GridColumnContact } from \"@app/shared/ag-grid-helpers/models/grid-column-contact\";\r\nimport { GridColumnCustom } from \"@app/shared/ag-grid-helpers/models/grid-column-custom.model\";\r\nimport { GridColumnGroup } from \"@app/shared/ag-grid-helpers/models/grid-column-group.model\";\r\nimport { GridColumnIcon } from \"@app/shared/ag-grid-helpers/models/grid-column-icon.model\";\r\nimport { GridColumnStatus } from \"@app/shared/ag-grid-helpers/models/grid-column-status\";\r\nimport { GridColumn } from \"@app/shared/ag-grid-helpers/models/grid-column.model\";\r\nimport { FreightForwarderCommon } from \"@app/shared/freight-forwarder/freight-forwarder-common\";\r\nimport { FreightForwarderDialogComponent } from \"@app/shared/freight-forwarder/freight-forwarder-edit/freight-forwarder-dialog/freight-forwarder-dialog.component\";\r\nimport { Util } from \"@app/utils/util\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\nimport { GridColumnFFType } from \"./grid-components/grid-column-ff-type\";\r\n\r\n@Component({\r\n selector: \"freight-forwarder-list\",\r\n styleUrls: [\"./freight-forwarder-list.component.scss\"],\r\n templateUrl: \"./freight-forwarder-list.component.html\"\r\n})\r\nexport class FreightForwarderListComponent extends GridBase\r\n{\r\n @ViewChild(\"dialogFreight\")\r\n dialogFreight: FreightForwarderDialogComponent;\r\n\r\n public readonly recordTypes = FreightForwarderCommon.RecordTypes;\r\n\r\n constructor(\r\n toastrService: ToastrService,\r\n private appService: AppService,\r\n private freightService: FreightService)\r\n {\r\n super(toastrService, freightService);\r\n\r\n this.title = \"Freight Forwarders & Customs Brokers\";\r\n this.appService.pageTitle = this.title;\r\n\r\n this.setupGrid();\r\n }\r\n\r\n public onAdd(recordType)\r\n {\r\n this.dialogFreight.openAdd(recordType);\r\n }\r\n\r\n public onGetRowClass(params)\r\n {\r\n if (params.data.eodStatus != FreightForwarderCommon.EODNoMatch)\r\n {\r\n return \"ag-grid-row-eod\";\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private setupGrid()\r\n {\r\n let gridIcons =\r\n [\r\n GridHelpers.MakeEditIcon(this.onEdit.bind(this))\r\n ];\r\n\r\n this.storageKey = \"FreightForwarder-Admin\";\r\n this.gridOpts.domLayout = GridHelpers.DOMLayout_Normal;\r\n this.gridOpts.rowHeight = 75;\r\n this.gridOpts.paginationPageSize = 20;\r\n\r\n this.addColumn(new GridColumnStatus(FreightForwarderCommon.FreightForwarderStatuses));\r\n this.addColumn(new GridColumnCustom(\"companyName\", \"Name\", { minWidth: 200, cellRenderer: this.renderName.bind(this) }));\r\n this.addColumn(new GridColumnFFType());\r\n this.addColumn(new GridColumn(\"description\", \"Description\"));\r\n this.addColumn(new GridColumnContact(\"contact\"));\r\n this.addColumn(new GridColumnAddress(\"address\", \"Address\"));\r\n this.addColumn(new GridColumn(\"eodDecisionBy\", \"EOD Decision By\"));\r\n this.addColumn(new GridColumn(\"eodKey\", \"EOD Key\"));\r\n this.addColumn(new GridColumn(\"eodStatus\", \"EOD Status\"));\r\n this.addColumn(new GridColumnIcon(gridIcons));\r\n\r\n this.rowDoubleClick(this.onEdit.bind(this));\r\n }\r\n\r\n private renderName(params)\r\n {\r\n let data = params.data;\r\n let name = data.companyName;\r\n let site = data.websiteLink;\r\n\r\n if (Util.isEmpty(site))\r\n {\r\n return name;\r\n }\r\n\r\n return `${name} `;\r\n }\r\n\r\n private onEdit(agData)\r\n {\r\n this.dialogFreight.openEdit(agData);\r\n }\r\n}","export default \"
          \\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\";","export default \".merchant-grid {\\n height: 75rem;\\n}\\n\";","import { GlobalIcons } from \"@app/shared/GlobalIcons\";\r\n\r\nexport class GridCellBooleanOption\r\n{\r\n public icon?: string;\r\n public color?: string;\r\n public label?: string;\r\n public toolTip?: string;\r\n}\r\n\r\nexport class GridCellBoolean\r\n{\r\n public static readonly DefaultNoIcon: GridCellBooleanOption =\r\n {\r\n icon: GlobalIcons.No,\r\n color: \"#c33\",\r\n label: \"No\",\r\n toolTip: \"No\"\r\n };\r\n\r\n public static readonly DefaultYesIcon: GridCellBooleanOption =\r\n {\r\n icon: GlobalIcons.Check,\r\n color: \"#3c3\",\r\n label: \"Yes\",\r\n toolTip: \"Yes\"\r\n };\r\n\r\n public static readonly DefaultNoText: GridCellBooleanOption =\r\n {\r\n label: \"NO\",\r\n toolTip: \"No\"\r\n };\r\n\r\n public static readonly DefaultYesText: GridCellBooleanOption =\r\n {\r\n label: \"YES\",\r\n toolTip: \"Yes\"\r\n };\r\n\r\n public static readonly DefaultFalseText: GridCellBooleanOption =\r\n {\r\n label: \"False\",\r\n toolTip: \"False\"\r\n };\r\n\r\n public static readonly DefaultTrueText: GridCellBooleanOption =\r\n {\r\n label: \"True\",\r\n toolTip: \"True\"\r\n };\r\n\r\n public trueOption: GridCellBooleanOption;\r\n public falseOption: GridCellBooleanOption;\r\n\r\n constructor(trueOpt: GridCellBooleanOption = GridCellBoolean.DefaultYesText, falseOpt: GridCellBooleanOption = GridCellBoolean.DefaultNoText)\r\n {\r\n this.trueOption = trueOpt;\r\n this.falseOption = falseOpt;\r\n }\r\n}","import { Component } from \"@angular/core\";\r\nimport { GridFilter, GridFilterCondiction, GridFilterDataType, GridFilterStorage } from \"@app/shared/ag-grid-helpers/models/grid-filter.model\";\r\nimport { Util } from '@app/utils/util';\r\nimport { AgFilterComponent } from \"ag-grid-angular\";\r\nimport { IDoesFilterPassParams } from \"ag-grid-community\";\r\nimport { GridFilterCustom } from \"../grid-filter-custom\";\r\n\r\n@Component({\r\n styleUrls: [\"../../../styles/gridfilter.scss\"],\r\n templateUrl: \"./grid-contact-filter.component.html\"\r\n})\r\nexport class GridContactFilter extends GridFilterCustom implements AgFilterComponent\r\n{\r\n public readonly fieldMid = \"middleName\";\r\n public readonly fieldLast = \"lastName\";\r\n public readonly fieldFirst = \"firstName\";\r\n\r\n public inName: string;\r\n\r\n private field;\r\n\r\n agInit(params: any): void\r\n {\r\n this.initFilter(params);\r\n\r\n this.field = this.getParam(\"field\");\r\n }\r\n\r\n isFilterActive(): boolean\r\n {\r\n return !Util.isEmpty(this.inName);\r\n }\r\n\r\n doesFilterPass(params: IDoesFilterPassParams): boolean\r\n {\r\n if (this.isServerSide)\r\n {\r\n return true;\r\n }\r\n\r\n if (Util.isEmpty(this.inName))\r\n {\r\n return false;\r\n }\r\n\r\n let contact = (this.field == null ? params.data : params.data[this.field]);\r\n\r\n if (Util.isEmpty(contact))\r\n {\r\n return false;\r\n }\r\n\r\n let passMid: boolean;\r\n let passLast: boolean;\r\n let passFirst: boolean;\r\n\r\n let name = this.inName.toLowerCase();\r\n let nameMid = contact[this.fieldMid];\r\n let nameLast = contact[this.fieldLast];\r\n let nameFirst = contact[this.fieldFirst];\r\n\r\n if (Util.isEmpty(nameMid))\r\n {\r\n passMid = false;\r\n }\r\n else\r\n {\r\n passMid = nameMid.toLowerCase().indexOf(name) != -1;\r\n }\r\n\r\n if (Util.isEmpty(nameLast))\r\n {\r\n passLast = false;\r\n }\r\n else\r\n {\r\n passLast = nameLast.toLowerCase().indexOf(name) != -1;\r\n }\r\n\r\n if (Util.isEmpty(nameFirst))\r\n {\r\n passFirst = false;\r\n }\r\n else\r\n {\r\n passFirst = nameFirst.toLowerCase().indexOf(name) != -1;\r\n }\r\n\r\n return (passFirst || passLast || passMid);\r\n }\r\n\r\n getModel()\r\n {\r\n if (Util.isEmpty(this.inName))\r\n {\r\n return null;\r\n }\r\n\r\n let filt = new GridFilter(this.inName, GridFilterDataType.text, GridFilterCondiction.contains);\r\n\r\n return new GridFilterStorage(this.field, filt);\r\n }\r\n\r\n setModel(model: any)\r\n {\r\n this.inName = model?.gridFilter?.filter;\r\n }\r\n\r\n public onFilterClear(): void\r\n {\r\n this.inName = null;\r\n\r\n this.applyAndClose();\r\n }\r\n\r\n public onFilterApply(): void\r\n {\r\n this.applyAndClose();\r\n }\r\n}","export default \"
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n
          \\r\\n
          \\r\\n
          \";","import { SafeUrl } from \"@angular/platform-browser\";\r\n\r\nexport class FixedImage\r\n{\r\n url?: string;\r\n safeURL?: SafeUrl;\r\n rawImage?: Blob;\r\n sourcesURL: string;\r\n}","import { ContactFormatter } from \"@app/utils/contact-formatter\";\r\nimport { Util } from '@app/utils/util';\r\nimport { GridAddressFilter } from \"../filters/grid-address-filter/grid-address-filter.component\";\r\nimport { GridCellAddressRenderer } from \"../renderers/grid-cell-address/grid-cell-address\";\r\nimport { GridColumn } from \"./grid-column.model\";\r\n\r\nexport class GridColumnAddress extends GridColumn\r\n{\r\n constructor(addressField: any, header: string = \"Address\", prefixField: boolean = false)\r\n {\r\n super(addressField, header);\r\n\r\n this.filter = \"gridAddyFilter\";\r\n this.minWidth = 300;\r\n this.comparator = this.sorter.bind(this);\r\n this.filterParams = { field: addressField, prefixField: prefixField };\r\n this.cellRendererParams = { field: addressField };\r\n this.cellRendererFramework = GridCellAddressRenderer;\r\n\r\n this.registerComponents.push({ gridAddyFilter: GridAddressFilter });\r\n }\r\n\r\n private sorter(val1, val2): number\r\n {\r\n if (Util.isEmpty(val1) && Util.isEmpty(val2))\r\n {\r\n return 0;\r\n }\r\n\r\n let conFormat = new ContactFormatter();\r\n\r\n conFormat.contactData = val1;\r\n conFormat.noValueReturn = \" \";\r\n\r\n let addy1 = conFormat.getContact();\r\n\r\n conFormat.contactData = val2;\r\n\r\n let addy2 = conFormat.getContact();\r\n\r\n if (addy1 == addy2)\r\n {\r\n return 0\r\n }\r\n\r\n return (addy1 > addy2 ? 1 : -1);\r\n }\r\n}","import { GridPurchaserTypeFilter } from \"../filters/grid-purchaser-type-filter/grid-purchaser-type-filter.component\";\r\nimport { GridColumn } from \"./grid-column.model\";\r\n\r\nexport class GridColumnPurchaserType extends GridColumn\r\n{\r\n private rendField: string;\r\n\r\n constructor(field: string = \"purchaserTypeName\")\r\n {\r\n super(field, \"Purchaser Type\");\r\n\r\n this.filter = \"gridPurchaserTypeFilter\";\r\n this.minWidth = 150;\r\n this.rendField = field;\r\n this.cellRenderer = this.renderType.bind(this);\r\n\r\n this.registerComponents.push({ gridPurchaserTypeFilter: GridPurchaserTypeFilter });\r\n }\r\n\r\n private renderType(params: any): string\r\n {\r\n let data = params.data;\r\n\r\n if (this.rendField.indexOf(\".\") == -1)\r\n {\r\n return data[this.rendField];\r\n }\r\n\r\n let brok = this.rendField.split(\".\");\r\n let parn = data[brok[0]];\r\n\r\n return parn[brok[1]];\r\n }\r\n}","export enum GridFilterOperator\r\n{\r\n or = \"OR\",\r\n and = \"AND\"\r\n}\r\n\r\nexport enum GridFilterDataType\r\n{\r\n date = \"date\",\r\n text = \"text\",\r\n number = \"number\"\r\n}\r\n\r\nexport enum GridFilterCondiction\r\n{\r\n equals = \"equals\",\r\n inRange = \"inRange\",\r\n contains = \"contains\",\r\n endsWith = \"endsWith\",\r\n lessThan = \"lessThan\",\r\n notEqual = \"notequal\",\r\n startsWith = \"startsWith\",\r\n greaterThan = \"greaterThan\",\r\n notContains = \"notContains\",\r\n lessThanOrEqual = \"lessThanOrEqual\",\r\n greaterThanOrEqual = \"greaterThanOrEqual\"\r\n}\r\n\r\nexport class GridFilter\r\n{\r\n type: string;\r\n filter: string;\r\n dateTo?: string;\r\n dateFrom?: string;\r\n filterType: string;\r\n filterField: string;\r\n\r\n constructor(value, dataType: string | GridFilterDataType = GridFilterDataType.text, condition: GridFilterCondiction = GridFilterCondiction.equals)\r\n {\r\n this.type = condition;\r\n this.filterType = dataType;\r\n\r\n if (dataType == GridFilterDataType.date)\r\n {\r\n this.dateTo = \"\";\r\n this.dateFrom = value;\r\n }\r\n else\r\n {\r\n this.filter = value;\r\n }\r\n }\r\n}\r\n\r\nexport class GridFilterStorage\r\n{\r\n multiple = null;\r\n gridFilter?: any;\r\n filterField: string;\r\n\r\n constructor(field?: string, filter?: any)\r\n {\r\n this.gridFilter = filter;\r\n this.filterField = field;\r\n }\r\n\r\n public add(field, filter)\r\n {\r\n if (this.multiple == null)\r\n {\r\n this.multiple = {};\r\n }\r\n\r\n this.multiple[field] = filter;\r\n }\r\n}","export enum WikiStatus\r\n{\r\n Active = 1,\r\n Pending = 2,\r\n Inactive = 9\r\n}","export class OrderStatus\r\n{\r\n public id: number;\r\n public description: string;\r\n\r\n constructor(id: number, desc: string)\r\n {\r\n this.id = id;\r\n this.description = desc;\r\n }\r\n}","export class HoldItemModel\r\n{\r\n code: string;\r\n description: string;\r\n\r\n constructor(abv: string, desc: string)\r\n {\r\n this.code = abv;\r\n this.description = desc;\r\n }\r\n}","import { Injectable } from \"@angular/core\";\r\nimport { OrderStatusType } from \"@app/data/enums/order-status-type.enum\";\r\nimport { ProfileType } from \"@app/data/enums/profile-type.enum\";\r\nimport { ExcelHelper } from \"@app/data/misc/excel-helper\";\r\nimport { OrderStatus } from \"@app/data/misc/order-status\";\r\nimport { HoldItemModel } from \"@app/shared/orders/order-grid-components/hold-item.model\";\r\nimport { Util } from \"@app/utils/util\";\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class OrderDataHelper\r\n{\r\n public static readonly Tab_Ship = 3;\r\n public static readonly Tab_Products = 1;\r\n public static readonly Tab_Documents = 2;\r\n\r\n public static readonly OrderState_Create = 1;\r\n public static readonly OrderState_Validate = 0;\r\n\r\n public static readonly Hold_AEP = new HoldItemModel(\"AEP\", \"AEP (Admin) hold\");\r\n public static readonly Hold_EAR = new HoldItemModel(\"LIC\", \"EAR License hold\");\r\n public static readonly Hold_ITAR = new HoldItemModel(\"ITAR\", \"ITAR License hold\");\r\n public static readonly Hold_Import = new HoldItemModel(\"IMP\", \"Import Permit hold\");\r\n\r\n public static readonly Status_Hold = new OrderStatus(OrderStatusType.Hold, \"Hold\");\r\n public static readonly Status_Active = new OrderStatus(OrderStatusType.Active, \"Active\");\r\n public static readonly Status_Failed = new OrderStatus(OrderStatusType.Failed, \"Failed\");\r\n public static readonly Status_Checked = new OrderStatus(OrderStatusType.OrderCheck, \"Order Check\");\r\n public static readonly Status_Cleared = new OrderStatus(OrderStatusType.Cleared, \"Cleared\");\r\n public static readonly Status_Partial = new OrderStatus(OrderStatusType.PartiallyCleared, \"Partially Cleared\");\r\n public static readonly Status_Complete = new OrderStatus(OrderStatusType.Complete, \"Complete\");\r\n public static readonly Status_Cancelled = new OrderStatus(OrderStatusType.Cancelled, \"Cancelled\");\r\n public static readonly Status_Suspended = new OrderStatus(OrderStatusType.Suspended, \"Suspended\");\r\n\r\n public static readonly ProductCategories_StorageKey = \"ProdCategories\";\r\n\r\n public static userRole: number;\r\n\r\n public static readonly ChargeStatuses =\r\n [\r\n { id: 1, name: \"Active\" },\r\n { id: 2, name: \"Pending\" },\r\n { id: 4, name: \"Complete\" },\r\n { id: 7, name: \"New\" },\r\n { id: 9, name: \"Cancelled\" },\r\n { id: 10, name: \"Pending Review\" },\r\n ];\r\n\r\n public static readonly OrderStatuses =\r\n [\r\n { id: 2, name: \"Partially Cleared\" },\r\n { id: 3, name: \"Cleared\" },\r\n { id: 4, name: \"Complete\" },\r\n { id: 10, name: \"Hold\" },\r\n { id: 11, name: \"Suspended\" },\r\n { id: 13, name: \"Cancelled\" }\r\n ];\r\n\r\n public static readonly NotificationRequestStatuses =\r\n [\r\n { id: 2, name: \"Purchaser working on registration\" },\r\n { id: 4, name: \"Complete\" },\r\n { id: 7, name: \"Registration not started\" },\r\n { id: 9, name: \"Registration is inactive\" },\r\n { id: 10, name: \"Awaiting EasyExport approval\" }\r\n ];\r\n\r\n public static readonly ShipmentStatuses =\r\n [\r\n { id: 1, name: \"Active\" },\r\n { id: 4, name: \"Complete\" }\r\n ];\r\n\r\n static get HoldList()\r\n {\r\n let list = new Array();\r\n\r\n list.push(OrderDataHelper.Hold_AEP);\r\n list.push(OrderDataHelper.Hold_EAR);\r\n list.push(OrderDataHelper.Hold_ITAR);\r\n list.push(OrderDataHelper.Hold_Import);\r\n\r\n return list;\r\n }\r\n\r\n public static CanShip(data)\r\n {\r\n if (OrderDataHelper.userRole != ProfileType.customer)\r\n {\r\n return false;\r\n }\r\n\r\n let canDo =\r\n !data.isShipmentActive &&\r\n data.statusType != OrderStatusType.Hold &&\r\n data.statusType != OrderStatusType.Complete &&\r\n data.statusType != OrderStatusType.Cancelled &&\r\n data.statusType != OrderStatusType.Suspended;\r\n\r\n return canDo;\r\n }\r\n\r\n public static makeProductMessage(messageObj)\r\n {\r\n let img;\r\n\r\n if (messageObj.hasOwnProperty(\"node\"))\r\n {\r\n messageObj = messageObj.node.data;\r\n }\r\n\r\n if (Util.isEmpty(messageObj.url))\r\n {\r\n img = \"\";\r\n }\r\n else\r\n {\r\n let toolTip = messageObj.product?.status?.name ?? \"\";\r\n\r\n img = ``;\r\n }\r\n\r\n return Util.substitute(\"
          {0} {1}
          \", img, messageObj.message);\r\n }\r\n\r\n public static getBulkTemplate()\r\n {\r\n ExcelHelper.makeTemplate(\"BulkProducts\", [\"PartNumber\", \"Quantity\", \"Price\" ]);\r\n }\r\n}","export class TaskCommon\r\n{\r\n public static readonly TaskTab_Docs = 1;\r\n public static readonly TaskTab_Note = 2;\r\n public static readonly TaskTab_Detail = 3;\r\n public static readonly DocumentTypeOther = \"othr\";\r\n\r\n public static readonly TaskEntities =\r\n [\r\n { id: 1, name: \"Merchant\" },\r\n { id: 2, name: \"License\" },\r\n { id: 3, name: \"Order\" },\r\n { id: 4, name: \"Product\" },\r\n { id: 5, name: \"Purchaser\" },\r\n { id: 6, name: \"Freight Forwarder\" }\r\n ];\r\n\r\n public static readonly TaskStatuses =\r\n [\r\n { id: 1, name: \"In Progress\" },\r\n { id: 2, name: \"Pending\" },\r\n { id: 4, name: \"Complete\" },\r\n { id: 7, name: \"New\" },\r\n { id: 11, name: \"On Hold\" },\r\n { id: 13, name: \"Cancelled\" }\r\n ];\r\n\r\n public static readonly DocumentStatuses =\r\n [\r\n { id: 1, name: \"Active\" },\r\n { id: 4, name: \"Complete\" }\r\n ];\r\n}","import { Component } from \"@angular/core\";\r\nimport { GridCellBoolean } from \"@app/shared/ag-grid-helpers/models/grid-cell-boolean.model\";\r\nimport { GridFilter, GridFilterStorage } from '@app/shared/ag-grid-helpers/models/grid-filter.model';\r\nimport { AgFilterComponent } from \"ag-grid-angular\";\r\nimport { IDoesFilterPassParams } from \"ag-grid-community\";\r\nimport { GridFilterCustom } from \"../grid-filter-custom\";\r\n\r\n@Component({\r\n styleUrls: [\"../../../styles/gridfilter.scss\"],\r\n templateUrl: \"./grid-boolean-filter.component.html\"\r\n})\r\nexport class GridBooleanFilter extends GridFilterCustom implements AgFilterComponent\r\n{\r\n public booleans: GridCellBoolean;\r\n public boolValue?: boolean;\r\n\r\n private field: string;\r\n\r\n agInit(params: any): void\r\n {\r\n this.initFilter(params);\r\n\r\n this.field = this.getParam(\"field\");\r\n this.booleans = params.booleans;\r\n }\r\n\r\n isFilterActive(): boolean\r\n {\r\n return this.boolValue != null;\r\n }\r\n\r\n doesFilterPass(params: IDoesFilterPassParams): boolean\r\n {\r\n if (this.isServerSide || this.boolValue == null)\r\n {\r\n return true;\r\n }\r\n\r\n if (!params.data.hasOwnProperty(this.field))\r\n {\r\n return (this.boolValue == null);\r\n }\r\n\r\n let myVal = params.data[this.field];\r\n\r\n if (myVal == null || myVal == undefined)\r\n {\r\n return (this.boolValue == null);\r\n }\r\n\r\n let setVal: boolean;\r\n\r\n switch (myVal.toString().toLowerCase())\r\n {\r\n case \"1\":\r\n case \"yes\":\r\n case \"true\":\r\n setVal = true;\r\n break;\r\n\r\n default:\r\n setVal = false;\r\n break;\r\n }\r\n\r\n return (this.boolValue == setVal);\r\n }\r\n\r\n getModel()\r\n {\r\n if (this.boolValue == null)\r\n {\r\n return null;\r\n }\r\n\r\n return new GridFilterStorage(this.field, new GridFilter(this.boolValue));\r\n }\r\n\r\n setModel(model: any)\r\n {\r\n model = model?.gridFilter?.filter;\r\n\r\n if (model == null || model == undefined)\r\n {\r\n this.boolValue = null;\r\n return;\r\n }\r\n\r\n this.boolValue = model;\r\n }\r\n\r\n public onFilterClear(): void\r\n {\r\n this.boolValue = null;\r\n\r\n this.applyAndClose();\r\n }\r\n\r\n public onFilterApply(): void\r\n {\r\n this.applyAndClose();\r\n }\r\n}","export default \"
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n
          \\r\\n
          \\r\\n
          \";","import { Component, OnInit, ViewChild } from \"@angular/core\";\r\nimport { ActivatedRoute, Router } from \"@angular/router\";\r\nimport { AppService } from \"@app/app.service\";\r\nimport { BaseComponent, ProfileType, Transaction, TransactionService } from \"@app/data\";\r\nimport { TaskEntity } from \"@app/data/enums/task-entity.enum\";\r\nimport { OrderDataHelper } from '@app/shared/orders/order-data.helper';\r\nimport { DateFormatter } from \"@app/shared/pipes/date-formatter.pipe\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\nimport { ShipmentListComponent } from \"./shipment-list/shipment-list.component\";\r\n\r\n@Component({\r\n selector: \"order-details\",\r\n styleUrls: [\"./order-details.component.scss\"],\r\n templateUrl: \"./order-details.component.html\"\r\n})\r\nexport class OrderDetailsComponent extends BaseComponent implements OnInit\r\n{\r\n @ViewChild(\"shipmentList\")\r\n shipmentList: ShipmentListComponent;\r\n\r\n public readonly formatDT: string = DateFormatter.FormatDateTime;\r\n public readonly myEntityType = TaskEntity.Order;\r\n\r\n public setTab: number;\r\n public userRole: number;\r\n public orderDetails: Transaction;\r\n\r\n private presetTab: boolean;\r\n\r\n constructor(\r\n toastrService: ToastrService,\r\n private router: Router,\r\n private appService: AppService,\r\n private activeRoute: ActivatedRoute,\r\n private transactionServ: TransactionService)\r\n {\r\n super(toastrService);\r\n\r\n this.title = \"Order Details\";\r\n this.loading = true;\r\n this.appService.pageTitle = this.title;\r\n }\r\n\r\n ngOnInit()\r\n {\r\n this.userRole = this.activeRoute.snapshot.data.userType;\r\n OrderDataHelper.userRole = this.userRole;\r\n\r\n if (!this.activeRoute.snapshot.paramMap.has(\"orderId\"))\r\n {\r\n this.loading = false;\r\n return;\r\n }\r\n\r\n let orderID = this.activeRoute.snapshot.params.orderId;\r\n\r\n this.transactionServ.detail({ uid: orderID }).subscribe(\r\n retRes => this.loadDetails(retRes),\r\n errRes => this.error(errRes));\r\n }\r\n\r\n public onGotoOrders()\r\n {\r\n let nav: string;\r\n\r\n switch (this.userRole)\r\n {\r\n case ProfileType.admin:\r\n nav = \"/admin\";\r\n break;\r\n\r\n case ProfileType.freightForwarder:\r\n nav = \"/ff\";\r\n break;\r\n\r\n case ProfileType.customer:\r\n nav = \"/customer\";\r\n break;\r\n }\r\n\r\n this.router.navigate([nav + \"/orders\"]);\r\n }\r\n\r\n public onShipmentListReady()\r\n {\r\n if (this.presetTab)\r\n {\r\n this.presetTab = false;\r\n setTimeout(() => this.shipmentList.onAdd(), 1000);\r\n }\r\n }\r\n\r\n public onOrderUpdate(order)\r\n {\r\n this.orderDetails = order;\r\n }\r\n\r\n public onOrderRefresh()\r\n {\r\n this.transactionServ.detail({ uid: this.orderDetails.uid }).subscribe(\r\n retRes => this.loadDetails(retRes),\r\n errRes => this.error(errRes));\r\n }\r\n\r\n public onAddressSync(): void\r\n {\r\n this.orderDetails.isSyncShipAddress = true;\r\n\r\n this.transactionServ.save(this.orderDetails).subscribe(\r\n {\r\n next: (retRes) =>\r\n {\r\n this.orderDetails = retRes;\r\n this.success(\"Address updated\");\r\n },\r\n error: (errRes) => this.error(errRes)\r\n });\r\n }\r\n\r\n private loadDetails(data)\r\n {\r\n this.loading = false;\r\n this.orderDetails = data;\r\n\r\n if (this.activeRoute.snapshot.paramMap.has(\"tab\"))\r\n {\r\n this.setTab = parseInt(this.activeRoute.snapshot.paramMap.get(\"tab\"));\r\n this.presetTab = true;\r\n }\r\n }\r\n}","export default \"
          \\r\\n \\r\\n

          {{ title }}

          \\r\\n
          \\r\\n
          \\r\\n
          OH NO!
          \\r\\n
          Order not found
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
          Merchant:\\r\\n \\r\\n
          Order #:{{ orderDetails.poNumber }}
          Order date:{{ orderDetails.purchaseDate | DateFormatter: formatDT }}
          \\r\\n
          \\r\\n \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n Purchaser\\r\\n
          \\r\\n
          \\r\\n \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n Order Value\\r\\n
          \\r\\n
          \\r\\n {{ orderDetails.orderValue | currency }}\\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n Shipping Address\\r\\n
          \\r\\n
          \\r\\n \\r\\n
          \\r\\n
          \\r\\n \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          AES Required
          \\r\\n
          AEP Hold
          \\r\\n
          EAR License Hold
          \\r\\n
          ITAR License Hold
          \\r\\n
          Import Permit Hold
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
            \\r\\n
          • \\r\\n Products\\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 Shipments\\r\\n \\r\\n \\r\\n \\r\\n
          • \\r\\n
          • \\r\\n Notes\\r\\n \\r\\n \\r\\n \\r\\n
          • \\r\\n
          • \\r\\n Tasks\\r\\n \\r\\n \\r\\n \\r\\n
          • \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \";","export default \"::ng-deep .modal-xl .modal-dialog {\\n max-width: 1400px !important;\\n}\\n\\n.not-found {\\n font-size: 3rem;\\n}\\n\\n.order-title {\\n border-bottom: 1px solid #ddd;\\n}\\n\\n.order-wrapper {\\n border-radius: .5rem;\\n}\\n\\n.order-header {\\n display: -ms-flexbox;\\n display: flex;\\n border-bottom: 1px solid #ccc;\\n -ms-flex-pack: justify;\\n justify-content: space-between;\\n}\\n\\n.order-header .name-line {\\n width: 100%;\\n display: -ms-flexbox;\\n display: flex;\\n -ms-flex-pack: justify;\\n justify-content: space-between;\\n}\\n\\n.order-header .name-line .row {\\n -ms-flex-positive: 1;\\n flex-grow: 1;\\n}\\n\\n.order-header .name-line .row div {\\n max-width: 20rem;\\n}\\n\";","import { Component } from \"@angular/core\";\r\nimport { GridFilter, GridFilterDataType, GridFilterStorage } from \"@app/shared/ag-grid-helpers/models/grid-filter.model\";\r\nimport { DateFormatter } from \"@app/shared/pipes/date-formatter.pipe\";\r\nimport { DateHelper } from \"@app/utils/date-helper\";\r\nimport { AgFilterComponent } from \"ag-grid-angular\";\r\nimport { IDoesFilterPassParams } from \"ag-grid-community\";\r\nimport { GridFilterCustom } from './../grid-filter-custom';\r\n\r\n@Component({\r\n styleUrls: [\"../../../styles/gridfilter.scss\"],\r\n templateUrl: \"./grid-cycle-filter.component.html\"\r\n})\r\nexport class GridCycleFilter extends GridFilterCustom implements AgFilterComponent\r\n{\r\n public selectMonth = null;\r\n\r\n private filterField;\r\n\r\n agInit(params: any): void\r\n {\r\n this.initFilter(params);\r\n\r\n this.filterField = params.field;\r\n }\r\n\r\n isFilterActive(): boolean\r\n {\r\n return this.selectMonth != null;\r\n }\r\n\r\n doesFilterPass(params: IDoesFilterPassParams): boolean\r\n {\r\n if (this.isServerSide)\r\n {\r\n return true;\r\n }\r\n\r\n let myDate = DateHelper.formatDate(params.data[this.filterField], DateFormatter.FormatAmericanDate);\r\n\r\n return this.selectMonth == myDate;\r\n }\r\n\r\n getModel()\r\n {\r\n if (this.selectMonth == null)\r\n {\r\n return null;\r\n }\r\n\r\n let filt = new GridFilter(this.selectMonth, GridFilterDataType.date);\r\n\r\n return new GridFilterStorage(this.filterField, filt);\r\n }\r\n\r\n setModel(model: any)\r\n {\r\n this.selectMonth = model?.gridFilter?.filter;\r\n }\r\n\r\n public onFilterClear(): void\r\n {\r\n this.selectMonth = null;\r\n this.applyAndClose();\r\n }\r\n\r\n public onFilterApply(): void\r\n {\r\n this.applyAndClose();\r\n }\r\n}","export default \"
          \\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 { IAfterGuiAttachedParams, ICellRendererParams } from \"@ag-grid-enterprise/all-modules\";\r\nimport { Component } from \"@angular/core\";\r\nimport { GridCellIcon } from \"@app/shared/ag-grid-helpers/models/grid-cell-icon.model\";\r\nimport { GlobalIcons } from \"@app/shared/GlobalIcons\";\r\nimport { AgRendererComponent } from \"ag-grid-angular\";\r\n\r\n@Component(\r\n {\r\n templateUrl: \"./grid-cell-icon-group.html\"\r\n })\r\nexport class GridCellIconGroup implements AgRendererComponent\r\n{\r\n public readonly Icons = GlobalIcons;\r\n\r\n public iconList: Array;\r\n private cellParams: ICellRendererParams;\r\n\r\n agInit(params): void\r\n {\r\n this.iconList = params.Icons;\r\n this.cellParams = params;\r\n }\r\n\r\n refresh(params): boolean\r\n {\r\n this.cellParams = params;\r\n return true;\r\n }\r\n\r\n afterGuiAttached?(params?: IAfterGuiAttachedParams): void\r\n {\r\n }\r\n\r\n public onClick(idx: number)\r\n {\r\n let who = this.iconList[idx];\r\n\r\n if (who.onClick instanceof Function)\r\n {\r\n who.onClick(this.cellParams.data);\r\n }\r\n }\r\n\r\n public checkIsVisible(item)\r\n {\r\n if (!item.hasOwnProperty(\"isVisible\"))\r\n {\r\n return true;\r\n }\r\n\r\n if (typeof item.isVisible == \"function\")\r\n {\r\n return item.isVisible(this.cellParams.data);\r\n }\r\n\r\n return item.isVisible;\r\n }\r\n}","export default \"
          \\r\\n \\r\\n
          \\r\\n \\r\\n
          \\r\\n
          \\r\\n
          \";","import { Component } from \"@angular/core\";\r\nimport { FreightForwarderType } from \"@app/data/enums/freight-forwarder-type.enum\";\r\nimport { GridFilterCustom } from \"@app/shared/ag-grid-helpers/filters/grid-filter-custom\";\r\nimport { GridFilter, GridFilterStorage } from \"@app/shared/ag-grid-helpers/models/grid-filter.model\";\r\nimport { CommonSettings } from '@app/shared/common-settings';\r\nimport { FreightForwarderCommon } from '@app/shared/freight-forwarder/freight-forwarder-common';\r\nimport { Util } from \"@app/utils/util\";\r\nimport { AgFilterComponent } from \"ag-grid-angular\";\r\nimport { IDoesFilterPassParams } from \"ag-grid-community\";\r\nimport clone from \"lodash-es/clone\";\r\n\r\n@Component({\r\n styleUrls: [\"../../../../styles/gridfilter.scss\"],\r\n templateUrl: \"./grid-ff-record-type-filter.component.html\"\r\n})\r\nexport class GridFFRecordTypeFilter extends GridFilterCustom implements AgFilterComponent\r\n{\r\n private readonly fieldField: string = \"countryUID\";\r\n\r\n public recordTypes;\r\n public selectedType: number;\r\n\r\n agInit(params: any): void\r\n {\r\n this.initFilter(params);\r\n\r\n this.recordTypes = clone(FreightForwarderCommon.RecordTypes);\r\n this.recordTypes.unshift({ id: null, name: \"All\" });\r\n }\r\n\r\n isFilterActive(): boolean\r\n {\r\n return !Util.isEmpty(this.selectedType);\r\n }\r\n\r\n doesFilterPass(params: IDoesFilterPassParams): boolean\r\n {\r\n if (this.isServerSide || this.selectedType == null)\r\n {\r\n return true;\r\n }\r\n\r\n if (this.selectedType == FreightForwarderType.FreightFordwarder)\r\n {\r\n return params.data[this.fieldField] == CommonSettings.USAUID;\r\n }\r\n\r\n return params.data[this.fieldField] != CommonSettings.USAUID;\r\n }\r\n\r\n getModel()\r\n {\r\n if (this.selectedType == null)\r\n {\r\n return null;\r\n }\r\n\r\n return new GridFilterStorage(this.fieldField, new GridFilter(this.selectedType));\r\n }\r\n\r\n setModel(model: any)\r\n {\r\n this.selectedType = model?.gridFilter?.filter;\r\n }\r\n\r\n public onFilterApply(): void\r\n {\r\n this.applyAndClose();\r\n }\r\n\r\n public onFilterClear(): void\r\n {\r\n this.selectedType = null;\r\n this.applyAndClose();\r\n }\r\n}","export default \"
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n
          \\r\\n
          \\r\\n
          \";","import { FormControl } from \"@angular/forms\";\r\nimport { DateFormatter } from \"@app/shared/pipes/date-formatter.pipe\";\r\nimport { Util } from \"@app/utils/util\";\r\nimport { NgbDate } from \"@ng-bootstrap/ng-bootstrap\";\r\n\r\nexport class DateHelper\r\n{\r\n public static readonly RegDT = /^\\d{2}\\/\\d{2}\\/\\d{4} \\d{2}:\\d{2}:\\d{2} UTC$/;\r\n\r\n public static paternMatch(testDT: any): boolean\r\n {\r\n if (Util.isEmpty(testDT))\r\n {\r\n return false;\r\n }\r\n\r\n if (testDT instanceof Date)\r\n {\r\n return true;\r\n }\r\n\r\n let chg = String(testDT);\r\n let test = chg.match(DateHelper.RegDT);\r\n\r\n return (test != null);\r\n }\r\n\r\n public static isDate(testDT: any): boolean\r\n {\r\n return !isNaN(Date.parse(testDT));\r\n }\r\n\r\n public static formatDate(wannabeDate: any, displayFormat: string = DateFormatter.FormatDefault): string\r\n {\r\n let form = new DateFormatter();\r\n\r\n return form.transform(wannabeDate, displayFormat);\r\n }\r\n\r\n public static fromNGBDate(inDate: any): Date\r\n {\r\n if (Util.isEmpty(inDate))\r\n {\r\n return null;\r\n }\r\n\r\n if (inDate instanceof FormControl)\r\n {\r\n if (Util.isEmpty(inDate.value))\r\n {\r\n return null;\r\n }\r\n\r\n let setDate = new Date(inDate.value.year, inDate.value.month - 1, inDate.value.day)\r\n\r\n inDate.setValue(setDate);\r\n return;\r\n }\r\n\r\n return new Date(inDate.year, inDate.month - 1, inDate.day);\r\n }\r\n\r\n public static makeNGBDate(inDate: any): NgbDate\r\n {\r\n let outDate = DateHelper.makeDate(inDate);\r\n\r\n if (outDate == null)\r\n {\r\n return null;\r\n }\r\n\r\n return new NgbDate(outDate.getFullYear(), outDate.getMonth() + 1, outDate.getDate());\r\n }\r\n\r\n public static makeDate(wannabeDate: any, badDateOutput = null): Date\r\n {\r\n if (Util.isEmpty(wannabeDate))\r\n {\r\n return badDateOutput;\r\n }\r\n\r\n if (wannabeDate instanceof Date)\r\n {\r\n return wannabeDate;\r\n }\r\n\r\n let outDate = null;\r\n\r\n if (typeof wannabeDate == \"string\")\r\n {\r\n if (wannabeDate == DateFormatter.Now)\r\n {\r\n outDate = new Date();\r\n }\r\n else\r\n {\r\n let makeDate = wannabeDate.replace(\" UTC\", \"\");\r\n\r\n outDate = new Date(makeDate);\r\n }\r\n }\r\n else\r\n {\r\n if (\"year\" in wannabeDate)\r\n {\r\n outDate = new Date(wannabeDate.year, wannabeDate.month - 1, wannabeDate.day);\r\n }\r\n }\r\n\r\n if (outDate == null || outDate == Util.BadDate)\r\n {\r\n return badDateOutput;\r\n }\r\n\r\n return outDate;\r\n }\r\n\r\n public static endOfMonth(when: any, format: string = DateFormatter.FormatDefault)\r\n {\r\n let wDate = DateHelper.makeDate(when);\r\n\r\n if (wDate == null)\r\n {\r\n return \"\";\r\n }\r\n\r\n let form = new DateFormatter();\r\n let dasDate = new Date(wDate.getFullYear(), wDate.getMonth() + 1, 0);\r\n\r\n return form.transform(dasDate, format);\r\n }\r\n\r\n public static endOfMonthDate(when: Date)\r\n {\r\n return new Date(when.getFullYear(), when.getMonth() + 1, 0)\r\n }\r\n\r\n public static sortArray(dataArray, field: string, descending: boolean = true)\r\n {\r\n if (Util.isEmpty(dataArray))\r\n {\r\n return dataArray;\r\n }\r\n\r\n dataArray.sort((rec1, rec2) =>\r\n {\r\n let date1 = new Date(rec1[field]);\r\n let date2 = new Date(rec2[field]);\r\n\r\n if (date1.toString() == Util.BadDate || date2.toString() == Util.BadDate)\r\n {\r\n return 0;\r\n }\r\n\r\n if (descending)\r\n {\r\n return date1.getTime() - date2.getTime();\r\n }\r\n\r\n return date2.getTime() - date1.getTime();\r\n });\r\n }\r\n}","import { AbstractControl, ValidatorFn } from \"@angular/forms\";\r\nimport { Util } from \"@app/utils/util\";\r\n\r\nexport class NumberValidatorOption\r\n{\r\n public maxValue: number = null;\r\n public minValue: number = null;\r\n public allowNull: boolean = true;\r\n public allowDecimal: boolean = true;\r\n}\r\n\r\nexport class NumberValidatorError\r\n{\r\n public badMax: number = null;\r\n public badMin: number = null;\r\n public isNull: boolean = false;\r\n public hasDecmial: boolean = false;\r\n\r\n public static getErrors(valErrors: NumberValidatorError): string[]\r\n {\r\n if (Util.isEmpty(valErrors))\r\n {\r\n return null;\r\n }\r\n\r\n let errors = [];\r\n\r\n if (valErrors.isNull)\r\n {\r\n errors.push(\"Value is required\");\r\n }\r\n\r\n if (valErrors.badMax != null)\r\n {\r\n errors.push(`Maximum value is ${valErrors.badMax}`);\r\n }\r\n\r\n if (valErrors.badMin != null)\r\n {\r\n errors.push(`Minimum value is ${valErrors.badMin}`);\r\n }\r\n\r\n if (valErrors.hasDecmial)\r\n {\r\n errors.push(\"Only whole numbers are allowed\");\r\n }\r\n\r\n return errors;\r\n }\r\n}\r\n\r\nexport function NumberValidator(numOpts: NumberValidatorOption = new NumberValidatorOption()): ValidatorFn\r\n{\r\n return (control: AbstractControl): NumberValidatorError | null =>\r\n {\r\n let val = control.value;\r\n let errors = new NumberValidatorError();\r\n\r\n if (val == null)\r\n {\r\n if (numOpts.allowNull)\r\n {\r\n return null;\r\n }\r\n\r\n errors.isNull = true;\r\n return errors;\r\n }\r\n\r\n let hasError = false;\r\n\r\n if (numOpts.minValue != null && val < numOpts.minValue)\r\n {\r\n hasError = true;\r\n errors.badMin = numOpts.minValue;\r\n }\r\n\r\n if (numOpts.maxValue != null && val > numOpts.maxValue)\r\n {\r\n hasError = true;\r\n errors.badMax = numOpts.maxValue;\r\n }\r\n\r\n if (!numOpts.allowDecimal && val.toString().indexOf(\".\") != -1)\r\n {\r\n hasError = true;\r\n errors.hasDecmial = true;\r\n }\r\n\r\n if (hasError)\r\n {\r\n return errors;\r\n }\r\n\r\n return null;\r\n };\r\n}","import { IToolPanel, IToolPanelParams } from \"@ag-grid-community/all-modules\";\r\nimport { Component } from \"@angular/core\";\r\nimport { GridHelpers } from \"@app/shared/ag-grid-helpers/grid-helper\";\r\nimport { GlobalIcons } from \"@app/shared/GlobalIcons\";\r\n\r\n@Component({\r\n selector: \"grid-sidebar-extra\",\r\n styleUrls: [\"grid-sidebar-extras.scss\"],\r\n templateUrl: \"grid-sidebar-extras.html\",\r\n})\r\nexport class GridSidebarExtras implements IToolPanel\r\n{\r\n public Icons = GlobalIcons;\r\n public autoSave;\r\n public isSaving = false;\r\n public haveSubGrids: boolean;\r\n\r\n private params: any;\r\n private gridBase;\r\n\r\n agInit(params: IToolPanelParams): void\r\n {\r\n this.params = params;\r\n this.gridBase = this.params.grid;\r\n this.haveSubGrids = this.params.api.context.contextParams.providedBeanInstances.gridOptions.masterDetail;\r\n }\r\n\r\n refresh(): void\r\n {\r\n }\r\n\r\n public onRefresh(): void\r\n {\r\n this.params.api.closeToolPanel();\r\n\r\n this.gridBase.gridRefresh();\r\n }\r\n\r\n public onExportExcel(): void\r\n {\r\n this.params.api.exportDataAsExcel();\r\n }\r\n\r\n public onFilterClear(): void\r\n {\r\n this.gridBase.mainGrid.setFilterModel(null);\r\n }\r\n\r\n public onSettingReset(): void\r\n {\r\n this.params.api.closeToolPanel();\r\n\r\n GridHelpers.GridStateClear(this.gridBase);\r\n }\r\n\r\n public onFixSize(): void\r\n {\r\n this.params.api.closeToolPanel();\r\n\r\n GridHelpers.FixSizes(this.params.api);\r\n }\r\n\r\n public onRowsExpand(): void\r\n {\r\n this.expandRows(true);\r\n }\r\n\r\n public onRowsCollapse(): void\r\n {\r\n this.expandRows(false);\r\n }\r\n\r\n private expandRows(expand: boolean): void\r\n {\r\n this.params.api.forEachNode((node) => node.setExpanded(expand));\r\n }\r\n}","export default \"
          \\r\\n
          \\r\\n Data\\r\\n \\r\\n \\r\\n
          \\r\\n
          \\r\\n Rows\\r\\n \\r\\n \\r\\n
          \\r\\n
          \\r\\n Settings\\r\\n \\r\\n \\r\\n \\r\\n
          \\r\\n
          \";","export default \".extra-wrapper {\\n padding: 1rem;\\n}\\n\\n.extra-wrapper button {\\n margin: .25rem;\\n text-align: left;\\n}\\n\\nfieldset legend {\\n font-size: 1.25rem;\\n}\\n\\nfieldset button {\\n width: 95%;\\n}\\n\\n.form-check {\\n display: -ms-flexbox;\\n display: flex;\\n padding: 0rem;\\n margin-left: .25rem;\\n -ms-flex-direction: column;\\n flex-direction: column;\\n}\\n\\n.form-check input {\\n cursor: pointer;\\n margin-left: .1rem;\\n}\\n\\n.form-check label {\\n cursor: pointer;\\n font-weight: bold;\\n margin-left: 1.5rem;\\n}\\n\\n.form-check button {\\n width: auto;\\n -ms-flex-item-align: self-end;\\n align-self: self-end;\\n}\\n\";","export enum DocumentStatus\r\n{\r\n Approved = 1,\r\n Pending = 2,\r\n New = 7,\r\n UnderReview = 10,\r\n Declined = 12\r\n}","import { Component, ElementRef, Input, ViewChild } from \"@angular/core\";\r\nimport { AuthService, BaseComponent, LookupService, PurchaserDocument, PurchaserDocumentService } from \"@app/data\";\r\nimport { DocumentDesignationType } from \"@app/data/enums/document-designation-type.enum\";\r\nimport { DocumentStatus } from \"@app/data/enums/document-status-type.enum\";\r\nimport { DocumentTypesEnum, OrderCommon } from '@app/data/orders/order-common';\r\nimport { TransactionDocument } from \"@app/data/transaction-document/transaction-document\";\r\nimport { TransactionDocumentService } from \"@app/data/transaction-document/transaction-document.service\";\r\nimport { TransactionProductService } from \"@app/data/transaction-product/transaction-product.service\";\r\nimport { CommonSettings } from \"@app/shared/common-settings\";\r\nimport { ConfirmationService, IConfirmationOptions } from \"@app/shared/confirmation/confirmation.service\";\r\nimport { DocumentCommon } from \"@app/shared/documents/document-common\";\r\nimport { Util } from \"@app/utils/util\";\r\nimport { NgbModal } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\n\r\n@Component({\r\n selector: \"document-edit\",\r\n templateUrl: \"./document-edit.component.html\"\r\n})\r\nexport class DocumentEditComponent extends BaseComponent\r\n{\r\n @Input()\r\n noteEntityType: number;\r\n\r\n @Input()\r\n documentEditType;\r\n\r\n @ViewChild(\"dialogDoc\")\r\n dialogDoc: ElementRef;\r\n\r\n public static readonly EditType_Order = 1;\r\n public static readonly EditType_Manual = 2;\r\n public static readonly EditType_Purchaser = 3;\r\n\r\n public docFile: File;\r\n public docTypes;\r\n public docStatusType = DocumentCommon.DocumentStatuses;\r\n public docTypeIsOther = false;\r\n public allowImportPermit = false;\r\n public docDesignationTypes;\r\n public listOfImportPermits;\r\n\r\n private documentUpdate = false;\r\n private documentEditUpload = false;\r\n\r\n constructor(\r\n toastrService: ToastrService,\r\n public authService: AuthService,\r\n public lookupService: LookupService,\r\n private modalServ: NgbModal,\r\n private confirmService: ConfirmationService,\r\n private prodDetailsServ: TransactionProductService,\r\n private purchaserDocServ: PurchaserDocumentService,\r\n private transactionDocumentService: TransactionDocumentService)\r\n {\r\n super(toastrService);\r\n\r\n this.modalService = modalServ;\r\n }\r\n\r\n public openAdd()\r\n {\r\n this.open(this.dialogDoc, null, CommonSettings.DialogSize_XLarge);\r\n this.setupUI();\r\n }\r\n\r\n public openEdit(data)\r\n {\r\n this.open(this.dialogDoc, data, CommonSettings.DialogSize_XLarge);\r\n this.setupUI();\r\n }\r\n\r\n private setupUI()\r\n {\r\n this.docFile = null;\r\n this.documentEditUpload = false;\r\n this.resetForm();\r\n\r\n if (this.documentEditType == DocumentEditComponent.EditType_Purchaser)\r\n {\r\n this.setupForPurchaser();\r\n }\r\n else\r\n {\r\n this.allowImportPermit = true;\r\n this.setupForOrder();\r\n }\r\n\r\n if (this.authService.isAdmin)\r\n {\r\n this.prodDetailsServ.post(\"list\", { transactionUID: this.parentUID }).subscribe(retRes => this.loadPermits(retRes));\r\n }\r\n\r\n this.patchValue();\r\n\r\n if (this.data)\r\n {\r\n this.readOnly = (this.data.statusType != DocumentStatus.New && this.authService.profile.profileType == this.profileTypes.purchaser);\r\n this.docTypeIsOther = !Util.isEmpty(this.data.documentOther);\r\n this.documentUpdate = true;\r\n\r\n this.setOther();\r\n\r\n if (!this.readOnly && this.data.hasOwnProperty(\"isDocumentReadOnly\"))\r\n {\r\n this.readOnly = (this.data as TransactionDocument).isDocumentReadOnly;\r\n }\r\n }\r\n else\r\n {\r\n let stat;\r\n\r\n if (this.documentEditType == DocumentEditComponent.EditType_Purchaser)\r\n {\r\n this.setValue(\"documentDesignationType\", DocumentDesignationType.UnderReview);\r\n }\r\n\r\n if (this.authService.isAdmin)\r\n {\r\n stat = DocumentStatus.Approved;\r\n }\r\n else\r\n {\r\n stat = DocumentStatus.New;\r\n }\r\n\r\n this.readOnly = false;\r\n this.setValue(\"statusType\", stat);\r\n }\r\n }\r\n\r\n public onFileSelect(evtArg)\r\n {\r\n this.documentEditUpload = true;\r\n\r\n this.docFile = evtArg.target.files[0];\r\n this.formControls.fileName.setValue(this.docFile.name);\r\n\r\n let nameVal = this.docFile.name.indexOf(\".\") > 0 ? this.docFile.name.split(\".\")[0] : this.docFile.name;\r\n\r\n this.formControls.name.setValue(nameVal);\r\n this.dataForm.markAsDirty();\r\n }\r\n\r\n public onClose()\r\n {\r\n if (!this.dataForm.dirty)\r\n {\r\n this.close();\r\n return;\r\n }\r\n\r\n let opts: IConfirmationOptions =\r\n {\r\n FunctionConfirm: () => this.close()\r\n };\r\n\r\n this.confirmService.YesNo(CommonSettings.DirtyFormConfirmationMessage, opts);\r\n }\r\n\r\n public onSave(closeMe: boolean): void\r\n {\r\n if (this.invalid())\r\n {\r\n return;\r\n }\r\n\r\n this.loading = true;\r\n\r\n let newData = this.submitDatesStore();\r\n\r\n if (!this.docTypeIsOther)\r\n {\r\n this.setValue(\"documentOther\", null);\r\n }\r\n\r\n if (this.documentUpdate && !this.documentEditUpload)\r\n {\r\n if (this.documentEditType == DocumentEditComponent.EditType_Purchaser)\r\n {\r\n this.purchaserDocServ.update(newData).subscribe(\r\n {\r\n next: (retRes) => this.saveComplete(retRes, closeMe),\r\n error: (errRes) =>\r\n {\r\n this.loading = false;\r\n this.error(errRes);\r\n }\r\n });\r\n }\r\n else\r\n {\r\n this.transactionDocumentService.update(newData).subscribe(\r\n {\r\n next: (retRes) => this.saveComplete(retRes, closeMe),\r\n error: (errRes) =>\r\n {\r\n this.loading = false;\r\n this.error(errRes);\r\n }\r\n });\r\n }\r\n }\r\n else\r\n {\r\n if (this.documentEditType == DocumentEditComponent.EditType_Purchaser)\r\n {\r\n this.purchaserDocServ.upload(this.docFile, newData).subscribe(\r\n {\r\n next: (retRes) => this.saveComplete(retRes, closeMe),\r\n error: (errRes) =>\r\n {\r\n this.loading = false;\r\n this.error(errRes);\r\n }\r\n });\r\n }\r\n else\r\n {\r\n this.transactionDocumentService.upload(this.docFile, newData).subscribe(\r\n {\r\n next: (retRes) => this.saveComplete(retRes, closeMe),\r\n error: (errRes) =>\r\n {\r\n this.loading = false;\r\n this.error(errRes);\r\n }\r\n });\r\n }\r\n }\r\n }\r\n\r\n private saveComplete(retRes: any, closeMe: boolean): void\r\n {\r\n this.uid = retRes.uid;\r\n this.data = retRes;\r\n this.loading = false;\r\n\r\n this.patchValue();\r\n\r\n if (this.update)\r\n {\r\n this.update.emit(retRes);\r\n }\r\n\r\n if (closeMe)\r\n {\r\n this.close();\r\n return;\r\n }\r\n\r\n this.data = retRes;\r\n\r\n this.patchValue();\r\n }\r\n\r\n public onDocTypeSelect(selection)\r\n {\r\n this.docTypeIsOther = (selection.code == DocumentTypesEnum.Other || selection.id == DocumentTypesEnum.Other || selection.id == DocumentTypesEnum.AEPOther);\r\n\r\n this.setOther();\r\n }\r\n\r\n private setupForOrder()\r\n {\r\n this.dataForm = this.transactionDocumentService.editorForm;\r\n\r\n this.setValue(\"transactionUID\", this.parentUID);\r\n this.lookupService.getTransactionDocumentTypeList().add(() => this.plugDocTypes());\r\n }\r\n\r\n private setupForPurchaser()\r\n {\r\n this.dataForm = this.purchaserDocServ.editorForm;\r\n\r\n if (this.authService.isAdmin)\r\n {\r\n this.docDesignationTypes = OrderCommon.PurchaserDocumentDesignationTypes;\r\n }\r\n\r\n this.setValue(\"purchaserUID\", this.parentUID);\r\n this.lookupService.getPurchaserDocumentTypeList().add(() => this.plugDocTypes());\r\n }\r\n\r\n private plugDocTypes()\r\n {\r\n if (this.documentEditType == DocumentEditComponent.EditType_Purchaser)\r\n {\r\n this.docTypes = this.lookupService.purchaserDocumentType;\r\n }\r\n else\r\n {\r\n this.docTypes = OrderCommon.PlugDocumentTypes(this.lookupService.transactionDocumentType, this.authService.profile.profileType);\r\n }\r\n }\r\n\r\n private setOther()\r\n {\r\n if (this.docTypeIsOther)\r\n {\r\n this.makeRequired([\"documentOther\"]);\r\n }\r\n else\r\n {\r\n this.makeRequired([\"documentOther\"], false);\r\n }\r\n }\r\n\r\n private loadPermits(retRes)\r\n {\r\n let transData = retRes.results;\r\n\r\n this.listOfImportPermits = [];\r\n\r\n for (let lp = 0; lp < transData.length; lp++)\r\n {\r\n for (let ss = 0; ss < 3; ss++)\r\n {\r\n let permit = transData[lp][\"importPermit\" + ss];\r\n\r\n if (Util.isEmpty(permit))\r\n {\r\n continue;\r\n }\r\n\r\n let found = this.listOfImportPermits.find(cond => cond.name == permit);\r\n\r\n if (Util.isEmpty(found))\r\n {\r\n this.listOfImportPermits.push({ name: permit });\r\n }\r\n }\r\n }\r\n }\r\n}","export default \"\\r\\n
          \\r\\n
          Document
          \\r\\n \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
            \\r\\n
          • \\r\\n Details\\r\\n \\r\\n
            \\r\\n
            \\r\\n \\r\\n \\r\\n
            \\r\\n
            \\r\\n
            \\r\\n \\r\\n \\r\\n
            Name is required
            \\r\\n
            \\r\\n
            \\r\\n \\r\\n \\r\\n \\r\\n
            \\r\\n
            \\r\\n
            \\r\\n
            \\r\\n \\r\\n \\r\\n \\r\\n
            Issued By is required
            \\r\\n
            \\r\\n
            \\r\\n \\r\\n \\r\\n
            \\r\\n \\r\\n
            \\r\\n \\r\\n
            \\r\\n
            \\r\\n
            \\r\\n
            \\r\\n \\r\\n \\r\\n
            \\r\\n \\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 Type is required
            \\r\\n
            \\r\\n
            \\r\\n \\r\\n \\r\\n \\r\\n
            Status is required
            \\r\\n
            \\r\\n
            \\r\\n
            \\r\\n
            \\r\\n \\r\\n \\r\\n
            Document Other Type is required
            \\r\\n
            \\r\\n
            \\r\\n
            \\r\\n
            \\r\\n \\r\\n \\r\\n \\r\\n
            \\r\\n
            \\r\\n
            \\r\\n
            \\r\\n
          • \\r\\n
          • \\r\\n Notes\\r\\n \\r\\n
            \\r\\n \\r\\n
            \\r\\n
            \\r\\n
          • \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n
          \\r\\n\\r\\n Enter the name of the agency or authority that issued the document you are uploading.\\r\\n\\r\\n\\r\\n If applicable, enter the date that the document was issued.\\r\\n\\r\\n\\r\\n If applicable, enter the expiration date of the document.\\r\\n\";","import { HttpClient } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { FormBuilder, Validators } from \"@angular/forms\";\r\nimport { ApiService } from \"../api/api.service\";\r\nimport { FreightForwarderContact } from \"./freight-forwarder-contact\";\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class FreightForwarderContactService extends ApiService\r\n{\r\n public get editorForm()\r\n {\r\n let form = new FormBuilder();\r\n let grpFields = form.group(\r\n {\r\n uid: [],\r\n title: [],\r\n lastName: [, Validators.required],\r\n cellPhone: [],\r\n firstName: [, Validators.required],\r\n isDefault: [],\r\n workPhone: [],\r\n freightUID: [],\r\n middleName: [],\r\n statusType: [],\r\n emailAddress: []\r\n });\r\n\r\n return grpFields;\r\n }\r\n\r\n constructor(httpClient: HttpClient)\r\n {\r\n super(httpClient, \"freight-forwarder-contact\");\r\n }\r\n}","import { Customer } from \"@app/data\";\r\nimport { GridMerchantFilter } from \"../filters/grid-merchant-filter/grid-merchant-filter.component\";\r\nimport { GridCellMerchantRenderer } from \"../renderers/grid-cell-merchant/grid-cell-merchant\";\r\nimport { GridColumn } from \"./grid-column.model\";\r\n\r\nexport class GridColumnMerchant extends GridColumn\r\n{\r\n constructor(renderField: string, filterField: string)\r\n {\r\n super(renderField, \"Merchant\");\r\n\r\n this.width = 175;\r\n this.minWidth = 100;\r\n this.filter = \"gridMerchantFilter\";\r\n this.minWidth = 100;\r\n this.comparator = this.sorter.bind(this);\r\n this.filterParams = { field: filterField };\r\n this.cellRendererFramework = GridCellMerchantRenderer;\r\n\r\n this.registerComponents.push({ gridMerchantFilter: GridMerchantFilter });\r\n }\r\n\r\n private sorter(merch1: Customer, merch2: Customer): number\r\n {\r\n let name1 = merch1.displayName?.toLowerCase();\r\n let name2 = merch2.displayName?.toLowerCase();\r\n\r\n if (name1 == name2)\r\n {\r\n return 0;\r\n }\r\n\r\n return (name1 > name2 ? 1 : -1);\r\n }\r\n}","import { Component } from \"@angular/core\";\r\nimport { ProfileService } from \"@app/data\";\r\nimport { GridFilterCustom } from \"@app/shared/ag-grid-helpers/filters/grid-filter-custom\";\r\nimport { GridFilter, GridFilterStorage } from \"@app/shared/ag-grid-helpers/models/grid-filter.model\";\r\nimport { Util } from \"@app/utils/util\";\r\nimport { AgFilterComponent } from \"ag-grid-angular\";\r\nimport { IDoesFilterPassParams } from \"ag-grid-community\";\r\n\r\n@Component({\r\n styleUrls: [\"../../../styles/gridfilter.scss\"],\r\n templateUrl: \"./grid-user-filter.component.html\"\r\n})\r\nexport class GridUserFilter extends GridFilterCustom implements AgFilterComponent\r\n{\r\n public readonly idTag_ID = \"id\";\r\n public readonly idTag_UID = \"uid\";\r\n\r\n public useID: string;\r\n public selectedID;\r\n\r\n private filterField;\r\n\r\n constructor(public profileServ: ProfileService)\r\n {\r\n super();\r\n }\r\n\r\n agInit(params: any): void\r\n {\r\n this.initFilter(params);\r\n\r\n this.filterField = this.getParam(\"field\");\r\n\r\n let id = this.getParam(\"useUID\", true);\r\n\r\n if (id)\r\n {\r\n this.useID = this.idTag_UID;\r\n }\r\n else\r\n {\r\n this.useID = this.idTag_ID;\r\n }\r\n\r\n this.profileServ.getProfileList();\r\n }\r\n\r\n isFilterActive(): boolean\r\n {\r\n return !Util.isEmpty(this.selectedID);\r\n }\r\n\r\n doesFilterPass(params: IDoesFilterPassParams): boolean\r\n {\r\n if (this.isServerSide)\r\n {\r\n return true;\r\n }\r\n\r\n return params.data[this.filterField] == this.selectedID;\r\n }\r\n\r\n getModel()\r\n {\r\n if (this.selectedID == null)\r\n {\r\n return null;\r\n }\r\n\r\n return new GridFilterStorage(this.filterField, new GridFilter(this.selectedID));;\r\n }\r\n\r\n setModel(model: any)\r\n {\r\n this.selectedID = model?.gridFilter?.filter;\r\n }\r\n\r\n public onFilterApply()\r\n {\r\n this.applyAndClose();\r\n }\r\n\r\n public onFilterClear()\r\n {\r\n this.selectedID = null;\r\n this.applyAndClose();\r\n }\r\n}","export default \"
          \\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 class GlobalIcons\r\n{\r\n public static readonly Size_Large = \"fa-lg\";\r\n public static readonly Size_Small = \"fa-sm\";\r\n public static readonly Size_XLarge = \"fa-2x\";\r\n public static readonly Size_XXLarge = \"fa-4x\";\r\n public static readonly Size_ExtraSmall = \"fa-xs\";\r\n\r\n public static readonly ReleaseNotes_Bug = \"fas fa-xs fa-fw fa-bug release-notes-bug\";\r\n public static readonly ReleaseNotes_New = \"fas fa-xs fa-fw fa-certificate release-notes-new\";\r\n public static readonly ReleaseNotes_Change = \"fas fa-xs fa-fw fa-pen-alt release-notes-change\";\r\n public static readonly ReleaseNotes_Delete = \"fas fa-xs fa-fw fa-cut release-notes-delete\";\r\n\r\n public static readonly No: string = \"fas fa-ban fa-fw\";\r\n public static readonly Add: string = \"fas fa-plus fa-fw\";\r\n public static readonly Fix: string = \"fas fa-band-aid fa-fw\";\r\n public static readonly PDF: string = \"fas fa-file-pdf fa-fw\";\r\n public static readonly Run: string = \"fas fa-running fa-fw\";\r\n public static readonly Tag: string = \"fas fa-fw fa-tag\";\r\n public static readonly Copy: string = \"far fa-copy fa-fw\";\r\n public static readonly Edit: string = \"far fa-edit fa-fw\";\r\n public static readonly Star: string = \"fas fa-star fa-fw\";\r\n public static readonly Wait: string = \"fas fa-hourglass-half fa-fw\";\r\n public static readonly GoTo: string = \"fas fa-directions fa-fw\";\r\n public static readonly Help: string = \"far fa-question-circle fa-fw\";\r\n public static readonly Hold: string = \"fas fa-pause-circle fa-fw\";\r\n public static readonly Info: string = \"fas fa-info-circle fa-fw\";\r\n public static readonly Link: string = \"fas fa-external-link-alt fa-fw\";\r\n public static readonly List: string = \"fas fa-list fa-fw\";\r\n public static readonly Lock: string = \"fas fa-lock fa-fw\";\r\n public static readonly Menu: string = \"fas fa-bars fa-fw\";\r\n public static readonly Note: string = \"far fa-sticky-note fa-fw\";\r\n public static readonly Save: string = \"fas fa-save fa-fw\";\r\n public static readonly Test: string = \"fas fa-vial fa-fw\";\r\n public static readonly Undo: string = \"fas fa-undo-alt fa-fw\";\r\n public static readonly View: string = \"fas fa-eye fa-fw\";\r\n public static readonly Check: string = \"fas fa-check fa-fw\";\r\n public static readonly Class: string = \"far fa-object-group fa-fw\";\r\n public static readonly Clear: string = \"fas fa-times-circle fa-fw\";\r\n public static readonly Close: string = \"fas fa-times fa-fw\";\r\n public static readonly Excel: string = \"far fa-file-excel fa-fw\";\r\n public static readonly Image: string = \"far fa-image fa-fw\";\r\n public static readonly Phone: string = \"fas fa-fw fa-phone\";\r\n public static readonly Print: string = \"fas fa-print fa-fw\";\r\n public static readonly Rules: string = \"fas fa-fw fa-pencil-ruler\";\r\n public static readonly Share: string = \"fas fa-fw fa-share\";\r\n public static readonly Tasks: string = \"fas fa-tasks fa-fw\";\r\n public static readonly Tools: string = \"fas fa-fw fa-tools\";\r\n public static readonly Trash: string = \"fas fa-trash fa-fw\";\r\n public static readonly Camera: string = \"fas fa-fw fa-camera\";\r\n public static readonly Cancel: string = \"fas fa-window-close fa-fw\";\r\n public static readonly Dealer: string = \"fas fa-fw fa-store\";\r\n public static readonly Expand: string = \"fas fa-expand-alt fa-fw\";\r\n public static readonly Export: string = \"fas fa-fw fa-file-export\";\r\n public static readonly Filter: string = \"fas fa-filter fa-fw\";\r\n public static readonly Import: string = \"fas fa-fw fa-file-import\";\r\n public static readonly LogOut: string = \"fas fa-sign-out-alt fa-fw\";\r\n public static readonly Manual: string = \"fas fa-fw fa-book\";\r\n public static readonly Orders: string = \"fas fa-fw fa-receipt\";\r\n public static readonly Resize: string = \"fas fa-arrows-alt-h fa-fw\";\r\n public static readonly Search: string = \"fas fa-search fa-fw\";\r\n public static readonly Unlock: string = \"fas fa-unlock fa-fw\";\r\n public static readonly Upload: string = \"fas fa-upload fa-fw\";\r\n public static readonly Account: string = \"fas fa-user fa-fw\";\r\n public static readonly Address: string = \"fas fa-map fa-fw\";\r\n public static readonly Billing: string = \"fas fa-file-invoice-dollar fa-fw\";\r\n public static readonly Contact: string = \"fas fa-address-book fa-fw\";\r\n public static readonly Comment: string = \"fa-fw fas fa-comment-dots\";\r\n public static readonly Country: string = \"fas fa-globe-americas fa-fw\";\r\n public static readonly History: string = \"fas fa-history fa-fw\";\r\n public static readonly License: string = \"fas fa-fw fa-file-contract\";\r\n public static readonly Members: string = \"fas fa-user-friends fa-fw\";\r\n public static readonly Officer: string = \"fas fa-user-tie fa-fw\";\r\n public static readonly Product: string = \"fas fa-box fa-fw\";\r\n public static readonly Process: string = \"fab fa-fw fa-stack-overflow\";\r\n public static readonly Problem: string = \"fas fa-exclamation-triangle fa-fw\";\r\n public static readonly Profile: string = \"far fa-fw fa-id-badge\";\r\n public static readonly Refresh: string = \"fas fa-sync-alt fa-fw\";\r\n public static readonly Reports: string = \"fas fa-fw fa-align-left\";\r\n public static readonly Activate: string = \"far fa-fw fa-plus-square\";\r\n public static readonly AssignTo: string = \"fas fa-fw fa-user-check\";\r\n public static readonly Calendar: string = \"far fa-calendar-alt fa-fw\";\r\n public static readonly Collapse: string = \"fas fa-compress-alt fa-fw\";\r\n public static readonly Document: string = \"fas fa-file-alt fa-fw\";\r\n public static readonly Download: string = \"fas fa-download fa-fw\";\r\n public static readonly Envelope: string = \"far fa-envelope fa-fw\";\r\n public static readonly MaxValue: string = \"fas fa-fw fa-infinity\";\r\n public static readonly Merchant: string = \"fas fa-fw fa-people-carry\";\r\n public static readonly Shipment: string = \"fas fa-truck fa-fw\";\r\n public static readonly ThumbsUp: string = \"fas fa-thumbs-up fa-fw\";\r\n public static readonly ArrowLeft: string = \"fas fa-angle-left fa-fw\";\r\n public static readonly ArrowPath: string = \"fas fa-long-arrow-alt-right\";\r\n public static readonly Clipboard: string = \"fas fa-fw fa-clipboard\";\r\n public static readonly Dashboard: string = \"fas fa-desktop fa-fw\";\r\n public static readonly Template: string = \"fas fa-fw fa-boxes\";\r\n public static readonly ExpandAll: string = \"fas fa-fw fa-expand-arrows-alt\";\r\n public static readonly Marketing: string = \"fas fa-fw fa-bullseye\";\r\n public static readonly Purchaser: string = \"fas fa-fw fa-users\";\r\n public static readonly ScheduleB: string = \"fas fa-fw fa-passport\";\r\n public static readonly ArrowRight: string = \"fas fa-angle-right fa-fw\";\r\n public static readonly DatePicker: string = \"far fa-fw fa-2x fa-calendar-alt btn icon-btn borderless icon-interactive\";\r\n public static readonly Deactivate: string = \"far fa-minus-square\";\r\n public static readonly MoveUpDown: string = \"fas fa-fw fa-arrows-alt-v\";\r\n public static readonly MultiImage: string = \"far fa-fw fa-images\";\r\n public static readonly Promotions: string = \"fas fa-comment-dollar fa-fw\";\r\n public static readonly UserAccess: string = \"fas fa-user-lock fa-fw\";\r\n public static readonly CircleCheck: string = \"far fa-fw fa-check-circle\";\r\n public static readonly CollapseAll: string = \"fas fa-fw fa-compress-arrows-alt\";\r\n public static readonly Transaction: string = \"fas fa-cash-register\";\r\n public static readonly Notification: string = \"fas fa-bell fa-fw\";\r\n public static readonly Organization: string = \"fas fa-fw fa-building\";\r\n public static readonly ReleaseNotes: string = \"fas fa-fw fa-file-invoice\";\r\n public static readonly ArrowDoubleLeft: string = \"fas fa-angle-double-left fa-fw\";\r\n public static readonly CheckboxChecked: string = \"far fa-square fa-fw\";\r\n public static readonly ArrowDoubleRight: string = \"fas fa-angle-double-right fa-fw\";\r\n public static readonly CheckboxUnChecked: string = \"far fa-check-square fa-fw\";\r\n}","import { GridHelpers } from '@app/shared/ag-grid-helpers/grid-helper';\r\nimport { DateHelper } from \"@app/utils/date-helper\";\r\nimport { Util } from \"@app/utils/util\";\r\nimport { GridDateFilter } from \"../filters/grid-date-filter/grid-date-filter.component\";\r\nimport { GridCellTextRender } from \"../renderers/grid-cell-text.renderer\";\r\n\r\nexport enum GridColumnType\r\n{\r\n Date,\r\n Link,\r\n Email,\r\n Money,\r\n Phone,\r\n Number,\r\n String,\r\n Decimal,\r\n Percent,\r\n DateTime\r\n}\r\n\r\nexport class GridColumn\r\n{\r\n public hide: boolean = false;\r\n public sort: string;\r\n public type: string;\r\n public field: string;\r\n public width: number;\r\n public filter: string = GridHelpers.FilterType_Text;\r\n public pinned: string;\r\n public editable: boolean = false;\r\n public maxWidth: number;\r\n public minWidth: number = 75;\r\n public sortable: boolean = true;\r\n public wrapText: boolean = false;\r\n public cellClass: string;\r\n public cellStyle: any;\r\n public menuTabs = [\"filterMenuTab\", \"generalMenuTab\", \"columnsMenuTab\"];\r\n public resizable: boolean = true;\r\n public autoHeight: boolean = false;\r\n public cellEditor: string;\r\n public comparator;\r\n public headerName: string;\r\n public cellRenderer: any;\r\n public filterParams;\r\n public suppressMenu: boolean = false;\r\n public cellEditorParams: any;\r\n public suppressSizeToFit: boolean = false;\r\n public cellRendererParams: any;\r\n public registerComponents;\r\n public cellRendererFramework: any;\r\n public headerComponentParams: any;\r\n\r\n constructor(field: string, header: string, columnType: GridColumnType = GridColumnType.String)\r\n {\r\n this.field = field;\r\n this.filter = GridHelpers.FilterType_Text;\r\n this.headerName = header;\r\n this.filterParams = GridHelpers.FilterDefaultAction;\r\n this.registerComponents = [];\r\n\r\n switch (columnType)\r\n {\r\n case GridColumnType.Date:\r\n this.width = 120;\r\n this.filter = \"dateFilter\";\r\n this.comparator = this.dateSorter;\r\n this.filterParams = Object.assign(this.filterParams, { suppressAndOrCondition: true, comparator: this.dateFilter, field: this.field });\r\n this.cellRenderer = GridCellTextRender.FormatDate;\r\n this.suppressSizeToFit = true;\r\n this.cellRendererFramework = GridDateFilter;\r\n\r\n this.registerComponents.push({ dateFilter: GridDateFilter });\r\n break;\r\n\r\n case GridColumnType.DateTime:\r\n this.width = 170;\r\n this.filter = GridHelpers.FilterType_Date;\r\n this.comparator = this.dateSorter;\r\n this.filterParams = Object.assign(this.filterParams, { suppressAndOrCondition: true, comparator: this.dateFilter, field: this.field });\r\n this.cellRenderer = GridCellTextRender.FormatDateTime;\r\n this.suppressSizeToFit = true;\r\n break;\r\n\r\n case GridColumnType.Email:\r\n this.width = 170;\r\n this.cellRenderer = GridCellTextRender.EmailCellRenderer;\r\n this.suppressSizeToFit = true;\r\n break;\r\n\r\n case GridColumnType.Link:\r\n this.cellRenderer = GridCellTextRender.LinkCellRenderer;\r\n break;\r\n\r\n case GridColumnType.Money:\r\n this.type = GridHelpers.AlignRight;\r\n this.width = 125;\r\n this.filter = GridHelpers.FilterType_Number;\r\n this.cellRenderer = GridCellTextRender.MoneyCellRenderer\r\n this.suppressSizeToFit = true;\r\n break;\r\n\r\n case GridColumnType.Number:\r\n this.type = GridHelpers.AlignRight;\r\n this.width = 125;\r\n this.filter = GridHelpers.FilterType_Number;\r\n this.cellRenderer = GridCellTextRender.NumberCellRenderer;\r\n this.suppressSizeToFit = true;\r\n break;\r\n\r\n case GridColumnType.Decimal:\r\n this.type = GridHelpers.AlignRight;\r\n this.width = 125;\r\n this.filter = GridHelpers.FilterType_Number;\r\n this.cellRenderer = GridCellTextRender.DecimalCellRenderer\r\n this.suppressSizeToFit = true;\r\n break;\r\n\r\n case GridColumnType.Percent:\r\n this.type = GridHelpers.AlignRight;\r\n this.width = 100;\r\n this.filter = GridHelpers.FilterType_Number;\r\n this.cellRenderer = GridCellTextRender.PercentCellRenderer\r\n this.suppressSizeToFit = true;\r\n break;\r\n\r\n case GridColumnType.Phone:\r\n this.width = 125;\r\n this.cellRenderer = GridCellTextRender.PhoneCellRenderer\r\n this.suppressSizeToFit = true;\r\n break;\r\n }\r\n }\r\n\r\n public statusSorter(val1, val2)\r\n {\r\n if (Util.isEmpty(val1) || Util.isEmpty(val2))\r\n {\r\n return 0;\r\n }\r\n\r\n if (val1.name == val2.name)\r\n {\r\n return 0;\r\n }\r\n\r\n return val1.name > val2.name ? 1 : -1;\r\n }\r\n\r\n private dateFilter(selectedDate: Date, cellValue)\r\n {\r\n if (Util.isEmpty(cellValue))\r\n {\r\n return -1;\r\n }\r\n\r\n let dateVal = DateHelper.makeDate(cellValue);\r\n\r\n if (dateVal == null)\r\n {\r\n return -1;\r\n }\r\n\r\n dateVal.setHours(0, 0, 0);\r\n selectedDate.setHours(0, 0, 0);\r\n\r\n let compSel = selectedDate.getTime();\r\n let compDate = dateVal.getTime();\r\n\r\n if (compDate == compSel)\r\n {\r\n return 0;\r\n }\r\n\r\n return (compDate < compSel ? -1 : 1);\r\n }\r\n\r\n private dateSorter(val1, val2)\r\n {\r\n let comp1 = DateHelper.makeDate(val1);\r\n let comp2 = DateHelper.makeDate(val2);\r\n\r\n if (comp1 == null && comp2 == null)\r\n {\r\n return 0;\r\n }\r\n\r\n if (comp1 == null)\r\n {\r\n return -1;\r\n }\r\n\r\n if (comp2 == null)\r\n {\r\n return 1;\r\n }\r\n\r\n return comp1.getTime() - comp2.getTime();\r\n }\r\n}","import { HttpClient } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { ApiService } from \"../api/api.service\";\r\nimport { PurchaserAuthListDTO } from \"./purchaser-authlist.dto\";\r\nimport { PurchaserEndUserStatement } from \"./purchaser-enduserstatement\";\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class PurchaserEndUserStatementService extends ApiService\r\n{\r\n constructor(httpClient: HttpClient)\r\n {\r\n super(httpClient, \"purchaser-auth\");\r\n }\r\n\r\n public merchantsSave(data: PurchaserAuthListDTO)\r\n {\r\n return this.httpClient.post(this.buildUrl(\"save-list\"), JSON.stringify(data));\r\n }\r\n\r\n public merchantsDelete(data: PurchaserAuthListDTO)\r\n {\r\n return this.httpClient.post(this.buildUrl(\"delete-list\"), JSON.stringify(data));\r\n }\r\n}","import { EventEmitter, Injectable, Output } from \"@angular/core\";\r\nimport { Product } from \"@app/data\";\r\nimport { CommonSettings } from '@app/shared/common-settings';\r\nimport { NgbModal } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { ProductDialogComponent } from \"./product-dialog.component\";\r\n\r\n@Injectable()\r\nexport class ProductDialogService\r\n{\r\n @Output()\r\n refresh = new EventEmitter();\r\n\r\n private diOpts = CommonSettings.DialogOptions(CommonSettings.DialogSize_XLarge);\r\n\r\n constructor(private modalService: NgbModal)\r\n {\r\n }\r\n\r\n public add(): void\r\n {\r\n let modalRef = this.modalService.open(ProductDialogComponent, this.diOpts);\r\n\r\n modalRef.closed.subscribe(() => this.refresh.emit());\r\n }\r\n\r\n public edit(prod: Product): void\r\n {\r\n let modalRef = this.modalService.open(ProductDialogComponent, this.diOpts);\r\n\r\n modalRef.componentInstance.product = prod;\r\n modalRef.closed.subscribe(() => this.refresh.emit());\r\n }\r\n\r\n public editByUID(prodUID: string): void\r\n {\r\n let modalRef = this.modalService.open(ProductDialogComponent, this.diOpts);\r\n\r\n modalRef.componentInstance.productUID = prodUID;\r\n modalRef.closed.subscribe(() => this.refresh.emit());\r\n }\r\n}","import { __read, __spread } from \"tslib\";\nvar TRANSITION_EVENTS = ['transitionend', 'webkitTransitionEnd', 'oTransitionEnd'];\nvar TRANSITION_PROPERTIES = ['transition', 'MozTransition', 'webkitTransition', 'WebkitTransition', 'OTransition'];\nvar DELTA = 5;\nvar SideNav = /** @class */ (function () {\n function SideNav(el, options, _PS) {\n if (options === void 0) { options = {}; }\n if (_PS === void 0) { _PS = null; }\n this._el = el;\n this._horizontal = options.orientation === 'horizontal';\n this._animate = options.animate !== false && this._supportsTransitionEnd();\n this._accordion = options.accordion !== false;\n this._closeChildren = Boolean(options.closeChildren);\n this._showDropdownOnHover = Boolean(options.showDropdownOnHover);\n this._rtl = document.documentElement.getAttribute('dir') === 'rtl' || document.body.getAttribute('dir') === 'rtl';\n this._lastWidth = this._horizontal ? window.innerWidth : null;\n this._onOpen = options.onOpen || (function () { });\n this._onOpened = options.onOpened || (function () { });\n this._onClose = options.onClose || (function () { });\n this._onClosed = options.onClosed || (function () { });\n el.classList.add('sidenav');\n el.classList[this._animate ? 'remove' : 'add']('sidenav-no-animation');\n if (!this._horizontal) {\n el.classList.add('sidenav-vertical');\n el.classList.remove('sidenav-horizontal');\n var PerfectScrollbarLib = _PS || window.PerfectScrollbar;\n if (PerfectScrollbarLib && el.querySelector('.sidenav-inner')) {\n this._scrollbar = new PerfectScrollbarLib(el.querySelector('.sidenav-inner'), {\n suppressScrollX: true,\n wheelPropagation: true\n });\n }\n }\n else {\n el.classList.add('sidenav-horizontal');\n el.classList.remove('sidenav-vertical');\n this._inner = el.querySelector('.sidenav-inner');\n var container = this._inner.parentNode;\n this._prevBtn = el.querySelector('.sidenav-horizontal-prev');\n if (!this._prevBtn) {\n this._prevBtn = document.createElement('a');\n this._prevBtn.href = '#';\n this._prevBtn.className = 'sidenav-horizontal-prev';\n container.appendChild(this._prevBtn);\n }\n this._wrapper = el.querySelector('.sidenav-horizontal-wrapper');\n if (!this._wrapper) {\n this._wrapper = document.createElement('div');\n this._wrapper.className = 'sidenav-horizontal-wrapper';\n this._wrapper.appendChild(this._inner);\n container.appendChild(this._wrapper);\n }\n this._nextBtn = el.querySelector('.sidenav-horizontal-next');\n if (!this._nextBtn) {\n this._nextBtn = document.createElement('a');\n this._nextBtn.href = '#';\n this._nextBtn.className = 'sidenav-horizontal-next';\n container.appendChild(this._nextBtn);\n }\n this._innerPosition = 0;\n this.update();\n }\n this._bindEvents();\n // Link sidenav instance to element\n el.sidenavInstance = this;\n }\n SideNav.prototype.open = function (el, closeChildren) {\n var _this = this;\n if (closeChildren === void 0) { closeChildren = this._closeChildren; }\n var item = this._findUnopenedParent(this._getItem(el, true), closeChildren);\n if (!item)\n return;\n var toggleLink = this._getLink(item, true);\n this._promisify(this._onOpen, this, item, toggleLink, this._findMenu(item))\n .then(function () {\n if (!_this._horizontal || !_this._isRoot(item)) {\n if (_this._animate) {\n window.requestAnimationFrame(function () { return _this._toggleAnimation(true, item, false); });\n if (_this._accordion)\n _this._closeOther(item, closeChildren);\n }\n else {\n item.classList.add('open');\n _this._onOpened && _this._onOpened(_this, item, toggleLink, _this._findMenu(item));\n if (_this._accordion)\n _this._closeOther(item, closeChildren);\n }\n }\n else {\n _this._toggleDropdown(true, item, closeChildren);\n _this._onOpened && _this._onOpened(_this, item, toggleLink, _this._findMenu(item));\n }\n })\n .catch(function () { });\n };\n SideNav.prototype.close = function (el, closeChildren, _autoClose) {\n var _this = this;\n if (closeChildren === void 0) { closeChildren = this._closeChildren; }\n if (_autoClose === void 0) { _autoClose = false; }\n var item = this._getItem(el, true);\n var toggleLink = this._getLink(el, true);\n if (!item.classList.contains('open') || item.classList.contains('disabled'))\n return;\n this._promisify(this._onClose, this, item, toggleLink, this._findMenu(item), _autoClose)\n .then(function () {\n if (!_this._horizontal || !_this._isRoot(item)) {\n if (_this._animate) {\n window.requestAnimationFrame(function () { return _this._toggleAnimation(false, item, closeChildren); });\n }\n else {\n item.classList.remove('open');\n if (closeChildren) {\n var opened = item.querySelectorAll('.sidenav-item.open');\n for (var i = 0, l = opened.length; i < l; i++)\n opened[i].classList.remove('open');\n }\n _this._onClosed && _this._onClosed(_this, item, toggleLink, _this._findMenu(item));\n }\n }\n else {\n _this._toggleDropdown(false, item, closeChildren);\n _this._onClosed && _this._onClosed(_this, item, toggleLink, _this._findMenu(item));\n }\n })\n .catch(function () { });\n };\n SideNav.prototype.toggle = function (el, closeChildren) {\n if (closeChildren === void 0) { closeChildren = this._closeChildren; }\n var item = this._getItem(el, true);\n if (item.classList.contains('open'))\n this.close(item, closeChildren);\n else\n this.open(item, closeChildren);\n };\n SideNav.prototype.closeAll = function (closeChildren) {\n if (closeChildren === void 0) { closeChildren = this._closeChildren; }\n var opened = this._el.querySelectorAll('.sidenav-inner > .sidenav-item.open');\n for (var i = 0, l = opened.length; i < l; i++)\n this.close(opened[i], closeChildren);\n };\n SideNav.prototype.setActive = function (el, active, openTree, deactivateOthers) {\n if (openTree === void 0) { openTree = true; }\n if (deactivateOthers === void 0) { deactivateOthers = true; }\n var item = this._getItem(el, false);\n if (active && deactivateOthers) {\n var activeItems = this._el.querySelectorAll('.sidenav-inner .sidenav-item.active');\n for (var i = 0, l = activeItems.length; i < l; i++)\n activeItems[i].classList.remove('active');\n }\n if (active && openTree) {\n var parentItem = this._findParent(item, 'sidenav-item', false);\n parentItem && this.open(parentItem);\n }\n while (item) {\n item.classList[active ? 'add' : 'remove']('active');\n item = this._findParent(item, 'sidenav-item', false);\n }\n };\n SideNav.prototype.setDisabled = function (el, disabled) {\n this._getItem(el, false).classList[disabled ? 'add' : 'remove']('disabled');\n };\n SideNav.prototype.isActive = function (el) {\n return this._getItem(el, false).classList.contains('active');\n };\n SideNav.prototype.isOpened = function (el) {\n return this._getItem(el, false).classList.contains('open');\n };\n SideNav.prototype.isDisabled = function (el) {\n return this._getItem(el, false).classList.contains('disabled');\n };\n SideNav.prototype.update = function () {\n if (!this._horizontal) {\n if (this._scrollbar) {\n this._scrollbar.update();\n }\n }\n else {\n this.closeAll();\n var wrapperWidth = Math.round(this._wrapper.getBoundingClientRect().width);\n var innerWidth_1 = this._innerWidth;\n var position = this._innerPosition;\n if ((wrapperWidth - position) > innerWidth_1) {\n position = wrapperWidth - innerWidth_1;\n if (position > 0)\n position = 0;\n this._innerPosition = position;\n }\n this._updateSlider(wrapperWidth, innerWidth_1, position);\n }\n };\n SideNav.prototype._updateSlider = function (wrapperWidth, innerWidth, position) {\n if (wrapperWidth === void 0) { wrapperWidth = null; }\n if (innerWidth === void 0) { innerWidth = null; }\n if (position === void 0) { position = null; }\n var _wrapperWidth = wrapperWidth !== null ? wrapperWidth : Math.round(this._wrapper.getBoundingClientRect().width);\n var _innerWidth = innerWidth !== null ? innerWidth : this._innerWidth;\n var _position = position !== null ? position : this._innerPosition;\n if (_position === 0)\n this._prevBtn.classList.add('disabled');\n else\n this._prevBtn.classList.remove('disabled');\n if (_innerWidth + _position <= _wrapperWidth)\n this._nextBtn.classList.add('disabled');\n else\n this._nextBtn.classList.remove('disabled');\n };\n SideNav.prototype._promisify = function (fn) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n var result = fn.apply(void 0, __spread(args));\n return result instanceof Promise\n ? result\n : (result === false ? Promise.reject() : Promise.resolve());\n };\n SideNav.prototype.destroy = function () {\n if (!this._el)\n return;\n this._unbindEvents();\n var items = this._el.querySelectorAll('.sidenav-item');\n for (var i = 0, l = items.length; i < l; i++) {\n this._unbindAnimationEndEvent(items[i]);\n items[i].classList.remove('sidenav-item-animating');\n items[i].classList.remove('open');\n items[i].style.overflow = null;\n items[i].style.height = null;\n }\n var menus = this._el.querySelectorAll('.sidenav-menu');\n for (var i2 = 0, l2 = menus.length; i2 < l2; i2++) {\n menus[i2].style.marginRight = null;\n menus[i2].style.marginLeft = null;\n }\n this._el.classList.remove('sidenav-no-animation');\n if (this._wrapper) {\n this._prevBtn.parentNode.removeChild(this._prevBtn);\n this._nextBtn.parentNode.removeChild(this._nextBtn);\n this._wrapper.parentNode.insertBefore(this._inner, this._wrapper);\n this._wrapper.parentNode.removeChild(this._wrapper);\n this._inner.style.marginLeft = null;\n this._inner.style.marginRight = null;\n }\n this._el.sidenavInstance = null;\n delete this._el.sidenavInstance;\n this._el = null;\n this._horizontal = null;\n this._animate = null;\n this._accordion = null;\n this._closeChildren = null;\n this._showDropdownOnHover = null;\n this._rtl = null;\n this._onOpen = null;\n this._onOpened = null;\n this._onClose = null;\n this._onClosed = null;\n if (this._scrollbar) {\n this._scrollbar.destroy();\n this._scrollbar = null;\n }\n this._inner = null;\n this._prevBtn = null;\n this._wrapper = null;\n this._nextBtn = null;\n };\n SideNav.prototype._getLink = function (el, toggle) {\n var found = [];\n var selector = toggle ? 'sidenav-toggle' : 'sidenav-link';\n if (el.classList.contains(selector))\n found = [el];\n else if (el.classList.contains('sidenav-item'))\n found = this._findChild(el, [selector]);\n if (!found.length)\n throw new Error(\"`\" + selector + \"` element not found.\");\n return found[0];\n };\n SideNav.prototype._getItem = function (el, toggle) {\n var item = null;\n var selector = toggle ? 'sidenav-toggle' : 'sidenav-link';\n if (el.classList.contains('sidenav-item')) {\n if (this._findChild(el, [selector]).length)\n item = el;\n }\n else if (el.classList.contains(selector)) {\n item = el.parentNode.classList.contains('sidenav-item') ? el.parentNode : null;\n }\n if (!item) {\n throw new Error((toggle ? 'Toggable ' : '') + \"`.sidenav-item` element not found.\");\n }\n return item;\n };\n SideNav.prototype._findUnopenedParent = function (item, closeChildren) {\n var tree = [];\n var parentItem = null;\n while (item) {\n if (item.classList.contains('disabled')) {\n parentItem = null;\n tree = [];\n }\n else {\n if (!item.classList.contains('open'))\n parentItem = item;\n tree.push(item);\n }\n item = this._findParent(item, 'sidenav-item', false);\n }\n if (!parentItem)\n return null;\n if (tree.length === 1)\n return parentItem;\n tree = tree.slice(0, tree.indexOf(parentItem));\n for (var i = 0, l = tree.length; i < l; i++) {\n tree[i].classList.add('open');\n if (this._accordion) {\n var openedItems = this._findChild(tree[i].parentNode, ['sidenav-item', 'open']);\n for (var j = 0, k = openedItems.length; j < k; j++) {\n if (openedItems[j] === tree[i])\n continue;\n openedItems[j].classList.remove('open');\n if (closeChildren) {\n var openedChildren = openedItems[j].querySelectorAll('.sidenav-item.open');\n for (var x = 0, z = openedChildren.length; x < z; x++) {\n openedChildren[x].classList.remove('open');\n }\n }\n }\n }\n }\n return parentItem;\n };\n SideNav.prototype._closeOther = function (item, closeChildren) {\n var opened = this._findChild(item.parentNode, ['sidenav-item', 'open']);\n for (var i = 0, l = opened.length; i < l; i++) {\n if (opened[i] !== item)\n this.close(opened[i], closeChildren, true);\n }\n };\n SideNav.prototype._toggleAnimation = function (open, item, closeChildren) {\n var _this = this;\n var toggleLink = this._getLink(item, true);\n var menu = this._findMenu(item);\n this._unbindAnimationEndEvent(item);\n var linkHeight = Math.round(toggleLink.getBoundingClientRect().height);\n item.style.overflow = 'hidden';\n var clearItemStyle = function () {\n item.classList.remove('sidenav-item-animating');\n item.classList.remove('sidenav-item-closing');\n item.style.overflow = null;\n item.style.height = null;\n if (!_this._horizontal)\n _this.update();\n };\n if (open) {\n item.style.height = linkHeight + \"px\";\n item.classList.add('sidenav-item-animating');\n item.classList.add('open');\n this._bindAnimationEndEvent(item, function () {\n clearItemStyle();\n _this._onOpened && _this._onOpened(_this, item, toggleLink, menu);\n });\n setTimeout(function () { return item.style.height = linkHeight + Math.round(menu.getBoundingClientRect().height) + \"px\"; }, 50);\n }\n else {\n item.style.height = linkHeight + Math.round(menu.getBoundingClientRect().height) + \"px\";\n item.classList.add('sidenav-item-animating');\n item.classList.add('sidenav-item-closing');\n this._bindAnimationEndEvent(item, function () {\n item.classList.remove('open');\n clearItemStyle();\n if (closeChildren) {\n var opened = item.querySelectorAll('.sidenav-item.open');\n for (var i = 0, l = opened.length; i < l; i++)\n opened[i].classList.remove('open');\n }\n _this._onClosed && _this._onClosed(_this, item, toggleLink, menu);\n });\n setTimeout(function () { return item.style.height = linkHeight + \"px\"; }, 50);\n }\n };\n SideNav.prototype._toggleDropdown = function (show, item, closeChildren) {\n var menu = this._findMenu(item);\n if (show) {\n var wrapperWidth = Math.round(this._wrapper.getBoundingClientRect().width);\n var position = this._innerPosition;\n var itemOffset = this._getItemOffset(item);\n var itemWidth = Math.round(item.getBoundingClientRect().width);\n if ((itemOffset - DELTA) <= (-1 * position)) {\n this._innerPosition = -1 * itemOffset;\n }\n else if ((itemOffset + position + itemWidth + DELTA) >= wrapperWidth) {\n if (itemWidth > wrapperWidth) {\n this._innerPosition = -1 * itemOffset;\n }\n else {\n this._innerPosition = -1 * (itemOffset + itemWidth - wrapperWidth);\n }\n }\n item.classList.add('open');\n var menuWidth = Math.round(menu.getBoundingClientRect().width);\n if ((itemOffset + this._innerPosition + menuWidth) > wrapperWidth && menuWidth < wrapperWidth && menuWidth > itemWidth) {\n menu.style[this._rtl ? 'marginRight' : 'marginLeft'] = \"-\" + (menuWidth - itemWidth) + \"px\";\n }\n this._closeOther(item, closeChildren);\n this._updateSlider();\n }\n else {\n var toggle = this._findChild(item, ['sidenav-toggle']);\n toggle.length && toggle[0].removeAttribute('data-hover', 'true');\n item.classList.remove('open');\n menu.style[this._rtl ? 'marginRight' : 'marginLeft'] = null;\n if (closeChildren) {\n var opened = menu.querySelectorAll('.sidenav-item.open');\n for (var i = 0, l = opened.length; i < l; i++)\n opened[i].classList.remove('open');\n }\n }\n };\n SideNav.prototype._slide = function (direction) {\n var wrapperWidth = Math.round(this._wrapper.getBoundingClientRect().width);\n var innerWidth = this._innerWidth;\n var newPosition;\n if (direction === 'next') {\n newPosition = this._getSlideNextPos();\n if (innerWidth + newPosition < wrapperWidth) {\n newPosition = wrapperWidth - innerWidth;\n }\n }\n else {\n newPosition = this._getSlidePrevPos();\n if (newPosition > 0)\n newPosition = 0;\n }\n this._innerPosition = newPosition;\n this.update();\n };\n SideNav.prototype._getSlideNextPos = function () {\n var wrapperWidth = Math.round(this._wrapper.getBoundingClientRect().width);\n var position = this._innerPosition;\n var curItem = this._inner.childNodes[0];\n var left = 0;\n while (curItem) {\n if (curItem.tagName) {\n var curItemWidth = Math.round(curItem.getBoundingClientRect().width);\n if ((left + position - DELTA) <= wrapperWidth && (left + position + curItemWidth + DELTA) >= wrapperWidth) {\n if (curItemWidth > wrapperWidth && left === (-1 * position))\n left += curItemWidth;\n break;\n }\n left += curItemWidth;\n }\n curItem = curItem.nextSibling;\n }\n return -1 * left;\n };\n SideNav.prototype._getSlidePrevPos = function () {\n var wrapperWidth = Math.round(this._wrapper.getBoundingClientRect().width);\n var position = this._innerPosition;\n var curItem = this._inner.childNodes[0];\n var left = 0;\n while (curItem) {\n if (curItem.tagName) {\n var curItemWidth = Math.round(curItem.getBoundingClientRect().width);\n if ((left - DELTA) <= (-1 * position) && (left + curItemWidth + DELTA) >= (-1 * position)) {\n if (curItemWidth <= wrapperWidth)\n left = left + curItemWidth - wrapperWidth;\n break;\n }\n left += curItemWidth;\n }\n curItem = curItem.nextSibling;\n }\n return -1 * left;\n };\n SideNav.prototype._getItemOffset = function (item) {\n var curItem = this._inner.childNodes[0];\n var left = 0;\n while (curItem !== item) {\n if (curItem.tagName) {\n left += Math.round(curItem.getBoundingClientRect().width);\n }\n curItem = curItem.nextSibling;\n }\n return left;\n };\n SideNav.prototype._bindAnimationEndEvent = function (el, handler) {\n var _this = this;\n var cb = function (e) {\n if (e.target !== el)\n return;\n _this._unbindAnimationEndEvent(el);\n handler(e);\n };\n var duration = window.getComputedStyle(el).transitionDuration;\n duration = parseFloat(duration) * (duration.indexOf('ms') !== -1 ? 1 : 1000);\n el._sideNavAnimationEndEventCb = cb;\n TRANSITION_EVENTS.forEach(function (ev) { return el.addEventListener(ev, el._sideNavAnimationEndEventCb, false); });\n el._sideNavAnimationEndEventTimeout = setTimeout(function () {\n cb({ target: el });\n }, duration + 50);\n };\n SideNav.prototype._unbindAnimationEndEvent = function (el) {\n var cb = el._sideNavAnimationEndEventCb;\n if (el._sideNavAnimationEndEventTimeout) {\n clearTimeout(el._sideNavAnimationEndEventTimeout);\n el._sideNavAnimationEndEventTimeout = null;\n }\n if (!cb)\n return;\n TRANSITION_EVENTS.forEach(function (ev) { return el.removeEventListener(ev, cb, false); });\n el._sideNavAnimationEndEventCb = null;\n };\n SideNav.prototype._bindEvents = function () {\n var _this = this;\n this._evntElClick = function (e) {\n var toggleLink = e.target.classList.contains('sidenav-toggle') ?\n e.target :\n _this._findParent(e.target, 'sidenav-toggle', false);\n if (toggleLink) {\n e.preventDefault();\n if (toggleLink.getAttribute('data-hover') !== 'true') {\n _this.toggle(toggleLink);\n }\n }\n };\n this._el.addEventListener('click', this._evntElClick);\n this._evntWindowResize = function () {\n if (!_this._horizontal) {\n _this.update();\n }\n else if (_this._lastWidth !== window.innerWidth) {\n _this._lastWidth = window.innerWidth;\n _this.update();\n }\n };\n window.addEventListener('resize', this._evntWindowResize);\n if (this._horizontal) {\n this._evntPrevBtnClick = function (e) {\n e.preventDefault();\n if (_this._prevBtn.classList.contains('disabled'))\n return;\n _this._slide('prev');\n };\n this._prevBtn.addEventListener('click', this._evntPrevBtnClick);\n this._evntNextBtnClick = function (e) {\n e.preventDefault();\n if (_this._nextBtn.classList.contains('disabled'))\n return;\n _this._slide('next');\n };\n this._nextBtn.addEventListener('click', this._evntNextBtnClick);\n this._evntBodyClick = function (e) {\n if (!_this._inner.contains(e.target) && _this._el.querySelectorAll('.sidenav-inner > .sidenav-item.open').length)\n _this.closeAll();\n };\n document.body.addEventListener('click', this._evntBodyClick);\n this._evntHorizontalElClick = function (e) {\n var link = e.target.classList.contains('sidenav-link') ? e.target : _this._findParent(e.target, 'sidenav-link', false);\n if (link && !link.classList.contains('sidenav-toggle'))\n _this.closeAll();\n };\n this._el.addEventListener('click', this._evntHorizontalElClick);\n if (this._showDropdownOnHover) {\n this._evntInnerMousemove = function (e) {\n var curItem = _this._findParent(e.target, 'sidenav-item', false);\n var item = null;\n while (curItem) {\n item = curItem;\n curItem = _this._findParent(curItem, 'sidenav-item', false);\n }\n if (item && !item.classList.contains('open')) {\n var toggle_1 = _this._findChild(item, ['sidenav-toggle']);\n if (toggle_1.length) {\n toggle_1[0].setAttribute('data-hover', 'true');\n _this.open(toggle_1[0], _this._closeChildren, true);\n setTimeout(function () {\n toggle_1[0].removeAttribute('data-hover');\n }, 500);\n }\n }\n };\n this._inner.addEventListener('mousemove', this._evntInnerMousemove);\n this._evntInnerMouseleave = function (e) {\n _this.closeAll();\n };\n this._inner.addEventListener('mouseleave', this._evntInnerMouseleave);\n }\n }\n };\n SideNav.prototype._unbindEvents = function () {\n if (this._evntElClick) {\n this._el.removeEventListener('click', this._evntElClick);\n this._evntElClick = null;\n }\n if (this._evntWindowResize) {\n window.removeEventListener('resize', this._evntWindowResize);\n this._evntWindowResize = null;\n }\n if (this._evntPrevBtnClick) {\n this._prevBtn.removeEventListener('click', this._evntPrevBtnClick);\n this._evntPrevBtnClick = null;\n }\n if (this._evntNextBtnClick) {\n this._nextBtn.removeEventListener('click', this._evntNextBtnClick);\n this._evntNextBtnClick = null;\n }\n if (this._evntBodyClick) {\n document.body.removeEventListener('click', this._evntBodyClick);\n this._evntBodyClick = null;\n }\n if (this._evntHorizontalElClick) {\n this._el.removeEventListener('click', this._evntHorizontalElClick);\n this._evntHorizontalElClick = null;\n }\n if (this._evntInnerMousemove) {\n this._inner.removeEventListener('mousemove', this._evntInnerMousemove);\n this._evntInnerMousemove = null;\n }\n if (this._evntInnerMouseleave) {\n this._inner.removeEventListener('mouseleave', this._evntInnerMouseleave);\n this._evntInnerMouseleave = null;\n }\n };\n SideNav.prototype._findMenu = function (item) {\n var curEl = item.childNodes[0];\n var menu = null;\n while (curEl && !menu) {\n if (curEl.classList && curEl.classList.contains('sidenav-menu'))\n menu = curEl;\n curEl = curEl.nextSibling;\n }\n if (!menu)\n throw new Error('Cannot find `.sidenav-menu` element for the current `.sidenav-toggle`');\n return menu;\n };\n SideNav.prototype._isRoot = function (item) {\n return !this._findParent(item, 'sidenav-item', false);\n };\n SideNav.prototype._findParent = function (el, cls, throwError) {\n if (throwError === void 0) { throwError = true; }\n if (el.tagName.toUpperCase() === 'BODY')\n return null;\n el = el.parentNode;\n while (el && el.tagName.toUpperCase() !== 'BODY' && !el.classList.contains(cls)) {\n el = el.parentNode;\n }\n el = el && el.tagName.toUpperCase() !== 'BODY' ? el : null;\n if (!el && throwError)\n throw new Error(\"Cannot find `.\" + cls + \"` parent element\");\n return el;\n };\n SideNav.prototype._findChild = function (el, cls) {\n var items = el.childNodes;\n var found = [];\n for (var i = 0, l = items.length; i < l; i++) {\n if (items[i].classList) {\n var passed = 0;\n for (var j = 0; j < cls.length; j++) {\n if (items[i].classList.contains(cls[j]))\n passed++;\n }\n if (cls.length === passed)\n found.push(items[i]);\n }\n }\n return found;\n };\n SideNav.prototype._supportsTransitionEnd = function () {\n if (window.QUnit) {\n return false;\n }\n var el = document.body || document.documentElement;\n var result = false;\n TRANSITION_PROPERTIES.forEach(function (evnt) {\n if (typeof el.style[evnt] !== 'undefined')\n result = true;\n });\n return result;\n };\n Object.defineProperty(SideNav.prototype, \"_innerWidth\", {\n get: function () {\n var items = this._inner.childNodes;\n var width = 0;\n for (var i = 0, l = items.length; i < l; i++) {\n if (items[i].tagName) {\n width += Math.round(items[i].getBoundingClientRect().width);\n }\n }\n return width;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(SideNav.prototype, \"_innerPosition\", {\n get: function () {\n return parseInt(this._inner.style[this._rtl ? 'marginRight' : 'marginLeft'] || '0px');\n },\n set: function (value) {\n this._inner.style[this._rtl ? 'marginRight' : 'marginLeft'] = value + \"px\";\n return value;\n },\n enumerable: false,\n configurable: true\n });\n return SideNav;\n}());\nexport { SideNav };\n//# sourceMappingURL=sidenav.js.map","export enum WikiType\r\n{\r\n userManual = 1,\r\n releaseNotes = 2\r\n}","import { Util } from \"@app/utils/util\";\r\n\r\nexport class ContactFormatter\r\n{\r\n public contactData: any;\r\n\r\n public delimiter: string = \"
          \";\r\n public fieldPrefix: string = null;\r\n public includeName: boolean = true;\r\n public noValueReturn = null;\r\n\r\n constructor(data: any = null)\r\n {\r\n this.contactData = data;\r\n }\r\n\r\n public getContact(wrapInHTML: boolean = false)\r\n {\r\n if (Util.isEmpty(this.contactData))\r\n {\r\n return this.noValueReturn;\r\n }\r\n\r\n let csz = \"\";\r\n let zip = this.makeVal(\"zip\");\r\n let city = this.makeVal(\"city\");\r\n let name = this.makeVal(\"name\");\r\n let str1 = this.makeVal(\"street1\");\r\n let str2 = this.makeVal(\"street2\");\r\n let state = this.makeVal(\"state\");\r\n let country = this.makeVal(\"country\");\r\n let outAddy = \"\";\r\n\r\n if (this.includeName && !Util.isEmpty(name))\r\n {\r\n outAddy = name;\r\n }\r\n\r\n if (!Util.isEmpty(str1))\r\n {\r\n if (outAddy != \"\")\r\n {\r\n outAddy += this.delimiter;\r\n }\r\n\r\n outAddy += str1;\r\n }\r\n\r\n if (!Util.isEmpty(str2))\r\n {\r\n if (outAddy != \"\")\r\n {\r\n outAddy += this.delimiter;\r\n }\r\n\r\n outAddy += str2;\r\n }\r\n\r\n if (!Util.isEmpty(city))\r\n {\r\n csz = city;\r\n }\r\n\r\n if (!Util.isEmpty(state))\r\n {\r\n if (csz != \"\")\r\n {\r\n csz += \", \";\r\n }\r\n\r\n if (typeof state == \"string\")\r\n {\r\n csz += state;\r\n }\r\n else\r\n {\r\n csz += state.name;\r\n }\r\n }\r\n\r\n if (!Util.isEmpty(country))\r\n {\r\n csz += \" \";\r\n\r\n if (typeof country == \"string\")\r\n {\r\n csz += country;\r\n }\r\n else\r\n {\r\n csz += country.name;\r\n }\r\n }\r\n\r\n if (!Util.isEmpty(zip))\r\n {\r\n csz += \" \" + zip;\r\n }\r\n\r\n if (csz == \"\" && outAddy == \"\")\r\n {\r\n return null;\r\n }\r\n\r\n if (outAddy != \"\" && csz != \"\")\r\n {\r\n outAddy += this.delimiter;\r\n }\r\n\r\n if (wrapInHTML)\r\n {\r\n return `
          ${outAddy}${csz}
          `;\r\n }\r\n\r\n return outAddy + csz;\r\n }\r\n\r\n public googleLink(): string\r\n {\r\n this.delimiter = \" \";\r\n\r\n let addy = this.getContact();\r\n\r\n if (Util.isEmpty(this.contactData) || addy == this.noValueReturn)\r\n {\r\n return this.noValueReturn;\r\n }\r\n\r\n return Util.replaceAll(addy, \" \", \"+\");\r\n }\r\n\r\n private makeVal(field: string)\r\n {\r\n if (this.fieldPrefix != null)\r\n {\r\n field = this.fieldPrefix + field.charAt(0).toUpperCase() + field.slice(1);\r\n }\r\n\r\n if (this.contactData.hasOwnProperty(field) && this.contactData[field] != null)\r\n {\r\n return this.contactData[field];\r\n }\r\n\r\n return null;\r\n }\r\n}","export default \"ol > li > ol {\\n list-style-type: lower-alpha;\\n}\\n\\nol > li > ol > li > ol {\\n list-style-type: upper-roman;\\n}\\n\\n.wiki-list {\\n margin-top: 1rem !important;\\n line-height: 1rem !important;\\n padding-left: 1.5rem !important;\\n margin-bottom: .75rem !important;\\n}\\n\\n.wiki-list li {\\n margin-bottom: .5rem;\\n}\\n\\n.wiki-table-header {\\n border-bottom: 1px solid #ddd;\\n}\\n\\n.wiki-table-cell {\\n padding: .1rem 1rem;\\n}\\n\\n.wiki-max-height {\\n height: 100%;\\n box-sizing: border-box;\\n}\\n\\n.wiki-preview-wrapper {\\n position: relative;\\n}\\n\\n.wiki-preview-main {\\n top: 0px;\\n left: 0px;\\n right: 0px;\\n bottom: 0px;\\n border: 1px solid #ccc;\\n padding: 1rem;\\n position: absolute;\\n overflow-y: scroll;\\n background-color: #fff;\\n}\\n\\n.release-notes-bug {\\n color: #f90;\\n}\\n\\n.release-notes-new {\\n color: #e6e600;\\n}\\n\\n.release-notes-change {\\n color: #093;\\n}\\n\\n.release-notes-delete {\\n color: #f11;\\n}\\n\";","import { Util } from \"@app/utils/util\";\r\nimport { GridColumn } from \"./grid-column.model\";\r\n\r\nexport class GridColumnBigText extends GridColumn\r\n{\r\n constructor(renderField: string, header: string, width: number = 200)\r\n {\r\n super(renderField, header);\r\n\r\n this.minWidth = width;\r\n this.cellRenderer = this.renderBigText;\r\n }\r\n\r\n private renderBigText(params: any): string\r\n {\r\n let text = params.value;\r\n\r\n if (Util.isEmpty(text))\r\n {\r\n return Util.DOM_Space;\r\n }\r\n\r\n return `${text}`;\r\n }\r\n}","export enum FeedbackType\r\n{\r\n SearchEngine = 1,\r\n Registration = 2,\r\n EasyExport = 3\r\n}","import { Component, ElementRef, ViewChild } from \"@angular/core\";\r\nimport { BaseComponent, Profile } from \"@app/data\";\r\nimport { FeedbackType } from \"@app/data/enums/feedback-type.enum\";\r\nimport { Feedback } from \"@app/data/feedback/feedback.model\";\r\nimport { FeedbackService } from \"@app/data/feedback/feedback.service\";\r\nimport { CommonSettings } from \"@app/shared/common-settings\";\r\nimport { ConfirmationService, IConfirmationOptions } from \"@app/shared/confirmation/confirmation.service\";\r\nimport { NgbModal } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\n\r\n@Component({\r\n selector: \"feedback-dialog\",\r\n templateUrl: \"./feedback-dialog.html\"\r\n})\r\nexport class FeedbackDialog extends BaseComponent\r\n{\r\n @ViewChild(\"feedbackDialog\")\r\n feedbackDialog: ElementRef;\r\n\r\n public user: Profile;\r\n public rating: number;\r\n public rateOver?: number;\r\n\r\n constructor(\r\n toastrService: ToastrService,\r\n public modalService: NgbModal,\r\n private feedbackServ: FeedbackService,\r\n private confirmService: ConfirmationService)\r\n {\r\n super(toastrService);\r\n\r\n this.dataForm = this.feedbackServ.editorForm;\r\n this.apiService = this.feedbackServ;\r\n this.modalService = modalService;\r\n }\r\n\r\n public openAdd(feedbackType: number = FeedbackType.EasyExport): void\r\n {\r\n this.rating = 0;\r\n this.rateOver = undefined;\r\n\r\n this.open(this.feedbackDialog);\r\n this.resetForm();\r\n\r\n this.setValue(\"feedbackType\", feedbackType);\r\n }\r\n\r\n public onRateHover(val: any): void\r\n {\r\n this.rating = val;\r\n this.rateOver = val;\r\n }\r\n\r\n public onRateLeave(): void\r\n {\r\n if (this.rating)\r\n {\r\n this.rateOver = this.rating;\r\n }\r\n else\r\n {\r\n this.rateOver = undefined;\r\n }\r\n }\r\n\r\n public onClose(): void\r\n {\r\n if (!this.dataForm.dirty)\r\n {\r\n this.close();\r\n return;\r\n }\r\n\r\n let opts: IConfirmationOptions =\r\n {\r\n FunctionConfirm: () => this.close()\r\n };\r\n\r\n this.confirmService.YesNo(CommonSettings.DirtyFormConfirmationMessage, opts);\r\n }\r\n\r\n public onSave(): void\r\n {\r\n let sub = this.submit();\r\n\r\n if (sub)\r\n {\r\n sub.add(() => this.submitComplete());\r\n }\r\n }\r\n\r\n private submitComplete(): void\r\n {\r\n if (this.submitError)\r\n {\r\n return;\r\n }\r\n\r\n this.close();\r\n this.success(\"Thanks for your Feedback!\");\r\n }\r\n}","export default \"\\r\\n
          \\r\\n
          Feedback
          \\r\\n \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n
          \\r\\n \\r\\n {{ rateOver }}\\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n \\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 { HttpClient } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { ApiService } from \"../api/api.service\";\r\nimport { ShopPostMessage } from \"./shop-post-message\";\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class ShopPostMessageService extends ApiService\r\n{\r\n constructor(httpClient: HttpClient)\r\n {\r\n super(httpClient, \"order-manual-entry\");\r\n }\r\n}","import { Component } from \"@angular/core\";\r\nimport { GridFilter, GridFilterDataType, GridFilterStorage } from \"@app/shared/ag-grid-helpers/models/grid-filter.model\";\r\nimport { GlobalIcons } from '@app/shared/GlobalIcons';\r\nimport { DateHelper } from \"@app/utils/date-helper\";\r\nimport { Util } from \"@app/utils/util\";\r\nimport { AgFilterComponent } from \"ag-grid-angular\";\r\nimport { IDoesFilterPassParams } from \"ag-grid-community\";\r\nimport { GridFilterCustom } from \"../grid-filter-custom\";\r\n\r\n@Component({\r\n styleUrls: [\"../../../styles/gridfilter.scss\"],\r\n templateUrl: \"./grid-date-filter.component.html\"\r\n})\r\nexport class GridDateFilter extends GridFilterCustom implements AgFilterComponent\r\n{\r\n public readonly Icons = GlobalIcons;\r\n\r\n public myDate = null;\r\n\r\n private fixDate: string;\r\n private filterField;\r\n\r\n agInit(params: any): void\r\n {\r\n this.initFilter(params);\r\n\r\n this.filterField = this.getParam(\"field\");\r\n }\r\n\r\n isFilterActive(): boolean\r\n {\r\n return this.myDate != null;\r\n }\r\n\r\n doesFilterPass(params: IDoesFilterPassParams): boolean\r\n {\r\n if (this.isServerSide)\r\n {\r\n return true;\r\n }\r\n\r\n let fDate = params.data[this.filterField];\r\n\r\n if (Util.isEmpty(fDate))\r\n {\r\n return (this.myDate == null);\r\n }\r\n\r\n if (this.myDate == null)\r\n {\r\n return false;\r\n }\r\n\r\n let formDate = DateHelper.formatDate(fDate);\r\n\r\n return (formDate == this.fixDate);\r\n }\r\n\r\n getModel()\r\n {\r\n if (this.myDate == null)\r\n {\r\n return null;\r\n }\r\n\r\n let filt = new GridFilter(this.fixDate, GridFilterDataType.date);\r\n\r\n return new GridFilterStorage(this.filterField, filt);\r\n }\r\n\r\n setModel(model: any)\r\n {\r\n this.myDate = model?.gridFilter?.filter;\r\n }\r\n\r\n public onDateChange(): void\r\n {\r\n if (this.myDate == null)\r\n {\r\n this.fixDate = null;\r\n return;\r\n }\r\n\r\n let day = this.myDate.day.toString().padStart(2, \"0\");\r\n let mon = this.myDate.month.toString().padStart(2, \"0\");\r\n\r\n this.fixDate = `${this.myDate.year}-${mon}-${day}`;\r\n }\r\n\r\n public onFilterClear(): void\r\n {\r\n this.myDate = null;\r\n this.applyAndClose();\r\n }\r\n\r\n public onFilterApply(): void\r\n {\r\n this.applyAndClose();\r\n }\r\n}","export default \"
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n
          \\r\\n \\r\\n
          \\r\\n \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n
          \\r\\n
          \\r\\n
          \";","export enum DealerConnectTradeStatus\r\n{\r\n Approved = 1,\r\n PendingReview = 10,\r\n Declined = 12\r\n}","export class GridCellImage\r\n{\r\n public toolTip: string;\r\n public imageURL: string;\r\n public onClick?: Function;\r\n public imageField: string;\r\n\r\n constructor(field?: string)\r\n {\r\n this.imageField = field;\r\n }\r\n}","import { HttpClient } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { ApiService } from \"@app/data/api/api.service\";\r\nimport { ProductURLCheck } from \"./product-url-check.model\";\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class ProductURLCheckService extends ApiService\r\n{\r\n constructor(httpClient: HttpClient)\r\n {\r\n super(httpClient, \"product-url-check\");\r\n }\r\n}","import { Component } from \"@angular/core\";\r\nimport { ActivatedRoute } from \"@angular/router\";\r\nimport { AppService } from \"@app/app.service\";\r\nimport { ProfileType } from \"@app/data\";\r\nimport { ProductURLCheck } from \"@app/data/product/product-url-check/product-url-check.model\";\r\nimport { ProductURLCheckService } from \"@app/data/product/product-url-check/product-url-check.service\";\r\nimport { GridBase } from \"@app/shared/ag-grid-helpers/ag-grid-base\";\r\nimport { GridCellBoolean } from \"@app/shared/ag-grid-helpers/models/grid-cell-boolean.model\";\r\nimport { GridColumnBoolean } from \"@app/shared/ag-grid-helpers/models/grid-column-boolean\";\r\nimport { GridColumnMerchant } from '@app/shared/ag-grid-helpers/models/grid-column-merchant';\r\nimport { GridColumnPartNumber } from \"@app/shared/ag-grid-helpers/models/grid-column-part-number\";\r\nimport { GridColumn } from \"@app/shared/ag-grid-helpers/models/grid-column.model\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\n\r\n@Component({\r\n templateUrl: \"product-url-check-list.html\"\r\n})\r\nexport class ProductURLCheckList extends GridBase\r\n{\r\n private userRole: number;\r\n\r\n constructor(\r\n toastrService: ToastrService,\r\n private appService: AppService,\r\n private activeRoute: ActivatedRoute,\r\n private urlCheckServ: ProductURLCheckService)\r\n {\r\n super(toastrService, urlCheckServ);\r\n\r\n this.title = \"Link Validation\";\r\n this.userRole = this.activeRoute.snapshot.data.userType;\r\n this.appService.pageTitle = this.title;\r\n\r\n this.setupGrid();\r\n }\r\n\r\n public onMyGridReady(evtArg: any): void\r\n {\r\n this.filterDefault(\"isValidURL\", false);\r\n\r\n this.onGridReady(evtArg);\r\n }\r\n\r\n private setupGrid(): void\r\n {\r\n this.storageKey = \"ProductURLCheck\";\r\n if (this.userRole == ProfileType.admin)\r\n {\r\n this.addColumn(new GridColumnMerchant(\"customer.displayName\", \"customer.uid\"));\r\n }\r\n this.addColumn(new GridColumnBoolean(\"isValidURL\", \"Valid?\", new GridCellBoolean(), 120));\r\n this.addColumn(new GridColumnPartNumber(\"product\"));\r\n this.addColumn(new GridColumn(\"urlTypeName\", \"Type\"));\r\n this.addColumn(new GridColumn(\"url\", \"URL\"));\r\n this.addColumn(new GridColumn(\"scrapedImageURL\", \"Scraped Image\"));\r\n\r\n this.setServerPath(\"list\");\r\n }\r\n}","export default \"
          \\r\\n \\r\\n

          {{ title }}

          \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n
          \";","import { OnDestroy } from '@angular/core';\r\nimport { BaseComponent } from \"@app/data\";\r\nimport { ApiService } from \"@app/data/api/api.service\";\r\nimport { GridHelpers } from \"@app/shared/ag-grid-helpers/grid-helper\";\r\nimport { GridFilterDataType } from '@app/shared/ag-grid-helpers/models/grid-filter.model';\r\nimport { Util } from \"@app/utils/util\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\nimport { GridColumnGroup } from \"./models/grid-column-group.model\";\r\nimport { GridColumn } from \"./models/grid-column.model\";\r\nimport { GridFilter, GridFilterStorage } from \"./models/grid-filter.model\";\r\nimport { GridSidebarExtras } from \"./tools/grid-sidebar-extras\";\r\n\r\nexport class GridBase extends BaseComponent implements OnDestroy\r\n{\r\n public gridOpts;\r\n public mainGrid;\r\n public gridData: Array;\r\n public dataPath: string;\r\n public gridTheme = GridHelpers.Theme;\r\n public storageKey: string = null;\r\n public columnManager;\r\n public stateOverrideCallback: () => void;\r\n\r\n public hardFilters = new Map();\r\n private serverPath: string = null;\r\n private defaultFilters = new Map();\r\n\r\n constructor(toastrService: ToastrService, apiService: ApiService)\r\n {\r\n super(toastrService);\r\n\r\n this.gridOpts = GridHelpers.GetGridDefaults();\r\n this.apiService = apiService;\r\n this.gridOpts.frameworkComponents = { extraTools: GridSidebarExtras };\r\n\r\n this.gridOpts.icons =\r\n {\r\n left: ``\r\n };\r\n\r\n this.gridOpts.sideBar =\r\n {\r\n toolPanels: [\r\n {\r\n id: \"extraTools\",\r\n iconKey: \"left\",\r\n toolPanel: \"extraTools\",\r\n labelDefault: \"Tools\",\r\n toolPanelParams: { grid: this }\r\n },\r\n {\r\n id: \"columns\",\r\n iconKey: \"columns\",\r\n toolPanel: \"agColumnsToolPanel\",\r\n labelDefault: \"Columns\",\r\n toolPanelParams:\r\n {\r\n suppressPivots: true,\r\n suppressValues: true,\r\n suppressPivotMode: true,\r\n suppressRowGroups: true\r\n }\r\n },\r\n {\r\n id: \"filters\",\r\n iconKey: \"filter\",\r\n toolPanel: \"agFiltersToolPanel\",\r\n labelDefault: \"Filters\"\r\n }\r\n ]\r\n };\r\n }\r\n\r\n ngOnDestroy(): void\r\n {\r\n this.setEvents(false);\r\n }\r\n\r\n public setServerPath(path: string)\r\n {\r\n this.serverPath = path;\r\n\r\n this.gridOpts.rowModelType = GridHelpers.RowModel_Type;\r\n this.gridOpts.cacheBlockSize = GridHelpers.CacheBlockSize;\r\n this.gridOpts.serverSideStoreType = GridHelpers.ServerSideStore;\r\n }\r\n\r\n public addColumn(column: GridColumn | GridColumnGroup)\r\n {\r\n if (column instanceof GridColumn)\r\n {\r\n this.parseColumn(column);\r\n }\r\n else\r\n {\r\n for (let col of column.children)\r\n {\r\n this.parseColumn(col);\r\n }\r\n }\r\n\r\n this.gridOpts.columnDefs.push(column);\r\n }\r\n\r\n public setColumns(columns: Array)\r\n {\r\n this.gridOpts.columnDefs = columns;\r\n }\r\n\r\n public registerCustomComponents(addComps: any)\r\n {\r\n this.gridOpts.frameworkComponents = Object.assign(this.gridOpts.frameworkComponents, addComps);\r\n }\r\n\r\n public onGridReady(params, autoLoad: boolean = true)\r\n {\r\n this.mainGrid = params.api;\r\n this.columnManager = params.columnApi;\r\n\r\n if (this.serverPath == null)\r\n {\r\n if (autoLoad)\r\n {\r\n this.gridLoad();\r\n }\r\n }\r\n else\r\n {\r\n this.initCommunication();\r\n this.gridStateLoad();\r\n }\r\n }\r\n\r\n public gridRefresh()\r\n {\r\n if (this.serverPath == null)\r\n {\r\n this.gridLoad();\r\n }\r\n else\r\n {\r\n this.mainGrid.refreshServerSideStore({ purge: false });\r\n }\r\n }\r\n\r\n public rowDoubleClick(func: (retRes: any) => any)\r\n {\r\n if (func == null)\r\n {\r\n this.gridOpts.onRowDoubleClicked = null;\r\n }\r\n else\r\n {\r\n this.gridOpts.onRowDoubleClicked = (evtArg) => { func(evtArg.data); };\r\n }\r\n }\r\n\r\n public filterAdd(field: string, value, autoRefresh: boolean = true)\r\n {\r\n let filt;\r\n\r\n if (value instanceof GridFilter)\r\n {\r\n filt = value;\r\n }\r\n else\r\n {\r\n filt = new GridFilter(value);\r\n }\r\n\r\n if (!this.haveFilterValue(filt))\r\n {\r\n this.filterRemove(field, autoRefresh);\r\n return;\r\n }\r\n\r\n if (Util.isEmpty(filt.filterField))\r\n {\r\n filt.filterField = field;\r\n }\r\n\r\n this.hardFilters.set(field, filt);\r\n\r\n if (autoRefresh)\r\n {\r\n this.mainGrid?.onFilterChanged();\r\n }\r\n }\r\n\r\n public filterDefault(field: string, value)\r\n {\r\n let filt;\r\n\r\n if (value instanceof GridFilter)\r\n {\r\n filt = value;\r\n }\r\n else\r\n {\r\n filt = new GridFilter(value);\r\n }\r\n\r\n if (Util.isEmpty(filt.filterField))\r\n {\r\n filt.filterField = field;\r\n }\r\n\r\n this.defaultFilters.set(field, filt);\r\n }\r\n\r\n public filterRemove(field: string, autoRefresh: boolean = true)\r\n {\r\n if (!this.hardFilters.has(field))\r\n {\r\n return;\r\n }\r\n\r\n this.hardFilters.delete(field);\r\n\r\n if (autoRefresh)\r\n {\r\n this.mainGrid.onFilterChanged();\r\n }\r\n }\r\n\r\n public initCommunication(path: string = null): void\r\n {\r\n if (path == null)\r\n {\r\n path = this.apiService.buildUrl(this.serverPath);\r\n }\r\n\r\n let request =\r\n {\r\n getRows: (params) =>\r\n {\r\n let req = params.request;\r\n\r\n req.filterModel = this.requestFilters(req.filterModel);\r\n\r\n this.apiService.httpClient.post(path, req).subscribe(retRes =>\r\n {\r\n params.success(retRes);\r\n\r\n this.fixColumnWidths();\r\n });\r\n }\r\n };\r\n\r\n this.mainGrid.setServerSideDatasource(request);\r\n }\r\n\r\n public gridLoad(data = null, path: string = null)\r\n {\r\n if (path == null)\r\n {\r\n if (this.dataPath)\r\n {\r\n path = this.dataPath;\r\n }\r\n else\r\n {\r\n path = \"list\";\r\n }\r\n }\r\n\r\n let filter;\r\n\r\n if (data == null)\r\n {\r\n filter = this.parseFilters(this.hardFilters, true);\r\n }\r\n else\r\n {\r\n filter = data;\r\n }\r\n\r\n filter = Object.assign(filter, { startRow: 0, endRow: 999999 });\r\n\r\n let obby = this.gridGetData(filter, path).subscribe(\r\n retRes => this.checkData(retRes),\r\n errRes => this.error(errRes));\r\n\r\n return obby;\r\n }\r\n\r\n public gridSort(column: string, ascending: boolean = true): void\r\n {\r\n let dir = (ascending ? GridHelpers.SortDir_Ascending : GridHelpers.SortDir_Decending);\r\n let opts =\r\n {\r\n state: [{ colId: column, sort: dir }],\r\n defaultState: { sort: null }\r\n };\r\n\r\n this.columnManager.applyColumnState(opts);\r\n }\r\n\r\n public gridGetData(data: any = null, path: string = null)\r\n {\r\n if (this.dataPath)\r\n {\r\n path = this.dataPath;\r\n }\r\n else\r\n {\r\n path = \"list\";\r\n }\r\n\r\n if (data == null)\r\n {\r\n data = {};\r\n }\r\n\r\n return this.apiService.httpClient.post(this.apiService.buildUrl(path), data);\r\n }\r\n\r\n public gridPopulate(data: any)\r\n {\r\n this.gridData = data;\r\n this.mainGrid.setRowData(this.gridData);\r\n\r\n this.gridStateLoad();\r\n }\r\n\r\n public gridSaveState(filters = null)\r\n {\r\n if (this.storageKey != null)\r\n {\r\n GridHelpers.StateSave(this, filters);\r\n }\r\n }\r\n\r\n public gridStateLoad()\r\n {\r\n if (this.storageKey == null)\r\n {\r\n this.fixColumnWidths();\r\n return;\r\n }\r\n\r\n this.setEvents(false);\r\n\r\n GridHelpers.StateLoad(this);\r\n\r\n this.fixColumnWidths(true);\r\n }\r\n\r\n public gridStateReset()\r\n {\r\n let filt = this.parseDefaults();\r\n\r\n this.setEvents(false);\r\n this.columnManager.resetColumnState();\r\n\r\n Util.DataStorage.delete(this.storageKey);\r\n\r\n this.gridSaveState(filt);\r\n this.gridStateLoad();\r\n }\r\n\r\n public fixColumnWidths(setEvents = false)\r\n {\r\n setTimeout(() =>\r\n {\r\n if (setEvents)\r\n {\r\n this.setEvents(true);\r\n }\r\n\r\n GridHelpers.FixSizes(this.mainGrid);\r\n }, 1000);\r\n }\r\n\r\n public rowExpand(rowNumber: number)\r\n {\r\n this.mainGrid.getDisplayedRowAtIndex(rowNumber).setExpanded(true);\r\n }\r\n\r\n public rowCollapse(rowNumber: number)\r\n {\r\n this.mainGrid.getDisplayedRowAtIndex(rowNumber).setExpanded(false);\r\n }\r\n\r\n public rowsExpandAll()\r\n {\r\n this.mainGrid.forEachNode((node) => node.setExpanded(true));\r\n }\r\n\r\n public rowsCollapseAll()\r\n {\r\n this.mainGrid.forEachNode((node) => node.setExpanded(false));\r\n }\r\n\r\n private requestFilters(filtersFromGrid)\r\n {\r\n let retFilt = this.parseFilters(filtersFromGrid);\r\n\r\n if (this.hardFilters.size > 0)\r\n {\r\n retFilt = Object.assign(retFilt, this.parseFilters(this.hardFilters));\r\n }\r\n\r\n return retFilt;\r\n }\r\n\r\n private parseColumn(column: GridColumn)\r\n {\r\n if (!Util.isEmpty(column.registerComponents))\r\n {\r\n for (let lp = 0; lp < column.registerComponents.length; lp++)\r\n {\r\n this.registerCustomComponents(column.registerComponents[lp]);\r\n }\r\n }\r\n\r\n delete column.registerComponents;\r\n\r\n // This will allow any custom filters access to this GridBase and register the filter component\r\n column.filterParams = Object.assign({ gridBase: this }, column.filterParams);\r\n }\r\n\r\n private parseDefaults()\r\n {\r\n let retFilt = {};\r\n\r\n for (let [key, filt] of this.defaultFilters.entries())\r\n {\r\n let addMe = new GridFilterStorage(filt.filterField, filt);\r\n\r\n retFilt = Object.assign(retFilt, { [key]: addMe });\r\n }\r\n\r\n return retFilt;\r\n }\r\n\r\n private parseFilters(filters, clientSide = false)\r\n {\r\n let retFilt = {};\r\n\r\n if (filters instanceof Map)\r\n {\r\n let holdFilt = {};\r\n\r\n for (let filt of filters.values())\r\n {\r\n holdFilt = Object.assign(holdFilt, { [filt.filterField]: filt });\r\n }\r\n\r\n filters = holdFilt;\r\n }\r\n\r\n for (let dude in filters)\r\n {\r\n let dasFilter = filters[dude];\r\n\r\n if (!(dasFilter instanceof GridFilter) && !(dasFilter instanceof GridFilterStorage))\r\n {\r\n if (clientSide)\r\n {\r\n retFilt = Object.assign(retFilt, { [dude]: dasFilter.filter });\r\n }\r\n else\r\n {\r\n retFilt = Object.assign(retFilt, { [dude]: dasFilter });\r\n }\r\n continue;\r\n }\r\n\r\n if (dasFilter instanceof GridFilter)\r\n {\r\n if (clientSide)\r\n {\r\n retFilt = Object.assign(retFilt, { [dasFilter.filterField]: dasFilter.filter });\r\n }\r\n else\r\n {\r\n retFilt = Object.assign(retFilt, { [dasFilter.filterField]: dasFilter });\r\n }\r\n continue;\r\n }\r\n\r\n if (dasFilter instanceof GridFilterStorage)\r\n {\r\n if (Util.isEmpty(dasFilter[\"multiple\"]))\r\n {\r\n if (clientSide)\r\n {\r\n retFilt = Object.assign(retFilt, { [dasFilter.filterField]: dasFilter.gridFilter.filter });\r\n }\r\n else\r\n {\r\n retFilt = Object.assign(retFilt, { [dasFilter.filterField]: dasFilter.gridFilter });\r\n }\r\n }\r\n else\r\n {\r\n let mult = dasFilter[\"multiple\"];\r\n\r\n for (let item in mult)\r\n {\r\n if (clientSide)\r\n {\r\n retFilt = Object.assign(retFilt, { [item]: mult[item].filter });\r\n }\r\n else\r\n {\r\n retFilt = Object.assign(retFilt, { [item]: mult[item] });\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n return retFilt;\r\n }\r\n\r\n private setEvents(turnOn: boolean)\r\n {\r\n if (turnOn)\r\n {\r\n this.gridOpts.onSortChanged = () => this.gridSaveState();\r\n this.gridOpts.onFilterChanged = () => { this.gridSaveState() };\r\n this.gridOpts.onDisplayedColumnsChanged = () => this.gridSaveState();\r\n }\r\n else\r\n {\r\n this.gridOpts.onSortChanged = null;\r\n this.gridOpts.onFilterChanged = null\r\n this.gridOpts.onDisplayedColumnsChanged = null;\r\n }\r\n }\r\n\r\n private checkData(retRes)\r\n {\r\n if (retRes.hasOwnProperty(\"results\"))\r\n {\r\n this.gridPopulate(retRes[\"results\"]);\r\n return;\r\n }\r\n\r\n if (retRes.hasOwnProperty(\"rowData\"))\r\n {\r\n this.gridPopulate(retRes[\"rowData\"]);\r\n return;\r\n }\r\n\r\n this.gridPopulate(retRes);\r\n }\r\n\r\n private haveFilterValue(checkFilter)\r\n {\r\n let value;\r\n\r\n if (checkFilter.filterType == GridFilterDataType.date)\r\n {\r\n value = checkFilter.dateTo || checkFilter.dateFrom;\r\n }\r\n else\r\n {\r\n value = checkFilter.filter;\r\n }\r\n\r\n // I'm not sure why, but (\"\" == false).\r\n // If value = false, the result of (value == \"\") is true. The fix is to make sure value isn't a boolean. Makes my face hurt!\r\n if (typeof value != \"boolean\" && (value == null || value == \"\"))\r\n {\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n}","export enum DocumentDesignationType {\r\n Active = 1,\r\n Approved = 2,\r\n Other = 3,\r\n UnderReview = 4\r\n }","import { Util } from \"@app/utils/util\";\r\n\r\nexport class FAQCommon\r\n{\r\n public static readonly FAQStatuses =\r\n [\r\n { id: -2, name: \"Deleted\" },\r\n { id: 1, name: \"Active\" },\r\n { id: 2, name: \"Pending\" },\r\n { id: 9, name: \"Inactive\" },\r\n ];\r\n\r\n public static fixLinks(faqList)\r\n {\r\n for (let item of faqList)\r\n {\r\n item[\"answer\"] = Util.replaceAll(item[\"answer\"], \" modRef.componentInstance.setPDF = retRes,\r\n // errRes => modRef.componentInstance.setError = errRes);\r\n\r\n var obby = this.httpClient.get(fileLink,\r\n {\r\n observe: \"response\",\r\n responseType: \"blob\",\r\n });\r\n\r\n obby.subscribe(\r\n retRes => this.popPDF(retRes),\r\n errRes => this.toastrService.error(Util.parseError(errRes), title, CommonSettings.ToastOptions));\r\n }\r\n\r\n public openPDF(pdfSource: Blob, title: string = \"Preview\"): void\r\n {\r\n // let opts = CommonSettings.DialogOptions(CommonSettings.DialogSize_XLarge);\r\n // let modalRef = this.modalService.open(DocumentPreviewComponent, opts);\r\n\r\n // modalRef.componentInstance.title = title;\r\n // modalRef.componentInstance.setPDF = pdfSource;\r\n\r\n this.popPDF(pdfSource);\r\n }\r\n\r\n private async popPDF(val)\r\n {\r\n let testVal: any;\r\n\r\n if (val instanceof HttpResponse)\r\n {\r\n testVal = val.body;\r\n }\r\n else\r\n {\r\n testVal = val;\r\n }\r\n\r\n let blob = new Blob([testVal], { type: 'application/pdf' })\r\n let objURL = URL.createObjectURL(blob);\r\n\r\n window.open(objURL, \"_blank\", \"popup=true\");\r\n }\r\n}","import { GridUserFilter } from \"../filters/grid-user-filter/grid-user-filter.component\";\r\nimport { GridColumn } from \"./grid-column.model\";\r\n\r\nexport class GridColumnUser extends GridColumn\r\n{\r\n constructor(renderField: string, filterField: string, useUID: boolean = true, header: string = \"Assigned to\")\r\n {\r\n super(renderField, header);\r\n\r\n this.filter = \"gridUserFilter\";\r\n this.maxWidth = 300;\r\n this.filterParams = { field: filterField, useUID: useUID };\r\n\r\n this.registerComponents.push({ gridUserFilter: GridUserFilter });\r\n }\r\n}","import { Component, ElementRef, OnInit, ViewChild } from \"@angular/core\";\r\nimport { FormBuilder, FormGroup } from \"@angular/forms\";\r\nimport { AuthService, BaseComponent, PurchaserDealerConnect, PurchaserDealerConnectService } from \"@app/data\";\r\nimport { DealerConnectTradeStatus } from \"@app/data/enums/dealer-conntact-trade-status.enum\";\r\nimport { NgbModal } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\n\r\n@Component({\r\n selector: \"purchaser-dealer-connect-details\",\r\n templateUrl: \"./purchaser-dealer-connect-details.component.html\"\r\n})\r\nexport class PurchaserDealerConnectDetailsComponent extends BaseComponent implements OnInit\r\n{\r\n @ViewChild(\"dialogDealer\")\r\n dialogDealer: ElementRef;\r\n\r\n public readonly tradeStatuses = DealerConnectTradeStatus;\r\n\r\n public userRole;\r\n public formDisplay: FormGroup;\r\n\r\n constructor(\r\n toastrService: ToastrService,\r\n private modalServ: NgbModal,\r\n private authService: AuthService,\r\n private dealConnServ: PurchaserDealerConnectService)\r\n {\r\n super(toastrService);\r\n\r\n this.title = \"DealerConnect\";\r\n this.apiService = this.dealConnServ;\r\n this.formDisplay = this.makeDisplayForm();\r\n this.modalService = this.modalServ;\r\n }\r\n\r\n ngOnInit(): void\r\n {\r\n this.userRole = this.authService.profile?.profileType;\r\n }\r\n\r\n public openDetail(data)\r\n {\r\n this.open(this.dialogDealer);\r\n\r\n this.uid = data.uid;\r\n\r\n this.formDisplay.patchValue(data.address);\r\n this.formDisplay.patchValue(data.purchaser);\r\n\r\n this.formDisplay.controls.state.setValue(data.state?.name);\r\n this.formDisplay.controls.currency.setValue(data.purchaser.annualSalesCurrency?.name);\r\n this.formDisplay.controls.language.setValue(data.language?.name);\r\n this.formDisplay.controls.customerName.setValue(data.customer.displayName);\r\n this.formDisplay.controls.purchaserName.setValue(data.purchaser.displayName);\r\n this.formDisplay.controls.purchaserContactName.setValue(data.purchaserContact?.displayName);\r\n }\r\n\r\n public onClose()\r\n {\r\n this.close();\r\n }\r\n\r\n public onStatusChange(statusType: number): void\r\n {\r\n let data =\r\n {\r\n uid: this.uid,\r\n statusType: statusType\r\n };\r\n\r\n this.apiService.save(data).subscribe(() => this.saveComplete());\r\n }\r\n\r\n private makeDisplayForm()\r\n {\r\n let fb = new FormBuilder();\r\n let grp = fb.group(\r\n {\r\n zip: [],\r\n city: [],\r\n state: [],\r\n street1: [],\r\n street2: [],\r\n currency: [],\r\n language: [],\r\n cellPhone1: [],\r\n customerUID: [],\r\n contactName: [],\r\n annualSales: [],\r\n websiteLink: [],\r\n customerName: [],\r\n emailAddress: [],\r\n purchaserName: [],\r\n annualSalesYear: [],\r\n productsOfInterest: [],\r\n bestSellingProducts: [],\r\n businessDescription: [],\r\n purchaserContactName: []\r\n });\r\n\r\n return grp;\r\n }\r\n\r\n private saveComplete()\r\n {\r\n this.close();\r\n\r\n if (this.update)\r\n {\r\n this.update.emit();\r\n }\r\n }\r\n}","export default \"\\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
          \\r\\n
          \\r\\n \\r\\n \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n
          \";","export enum GoogleMapsType\r\n{\r\n Road = \"roadmap\",\r\n Hybrid = \"hybrid\",\r\n Terrain = \"terrain\",\r\n Satellite = \"satellite\"\r\n}\r\n\r\nexport enum GoogleMapsZoom\r\n{\r\n World = 1,\r\n Continent = 5,\r\n City = 10,\r\n Street = 17,\r\n Default = 18,\r\n Buildings = 21\r\n}\r\n\r\nexport class GoogleConsts\r\n{\r\n public static readonly MapURL = \"https://maps.googleapis.com/maps/api/staticmap?center=\";\r\n public static readonly StreetURL = \"https://maps.googleapis.com/maps/api/streetview?location=\";\r\n public static readonly GeoCodeURL = \"https://maps.googleapis.com/maps/api/geocode/json?address=\";\r\n}","import { HttpClient } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { FormBuilder, Validators } from \"@angular/forms\";\r\nimport { Util } from \"@app/utils/util\";\r\nimport { ApiService } from \"../api/api.service\";\r\nimport { WikiMod } from \"./wiki.model\";\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class WikiService extends ApiService\r\n{\r\n public get editorForm()\r\n {\r\n let form = new FormBuilder();\r\n let grpFields = form.group(\r\n {\r\n uid: [],\r\n version: [, Validators.required],\r\n wikiText: [],\r\n wikiType: [, Validators.required],\r\n statusType: [],\r\n profileType: [],\r\n releaseDate: []\r\n });\r\n\r\n return grpFields;\r\n }\r\n\r\n constructor(httpClient: HttpClient)\r\n {\r\n super(httpClient, \"wiki\");\r\n }\r\n\r\n public imageUpload(imgFile: File)\r\n {\r\n if (Util.isEmpty(imgFile))\r\n {\r\n return;\r\n }\r\n\r\n let uploadData = new FormData();\r\n\r\n uploadData.append(imgFile.name, imgFile);\r\n\r\n return this.postFile(\"upload-image\", uploadData);\r\n }\r\n\r\n public getWiki(profile: number, wikiType: number)\r\n {\r\n let filt = { wikiType: wikiType, profileType: profile };\r\n let subs = this.post(\"detail\", filt);\r\n\r\n return subs;\r\n }\r\n}","export class ImageRequest\r\n{\r\n width?: number;\r\n height?: number;\r\n fileName: string;\r\n\r\n constructor(fileName?: string, imgWidth?: number, imgHeight?: number)\r\n {\r\n this.width = imgWidth;\r\n this.height = imgHeight;\r\n this.fileName = fileName;\r\n }\r\n}","import { FreightForwarderType } from \"@app/data/enums/freight-forwarder-type.enum\";\r\nimport { CommonSettings } from \"@app/shared/common-settings\";\r\nimport { Util } from \"@app/utils/util\";\r\n\r\nexport class FreightForwarderCommon\r\n{\r\n public static readonly EODNoMatch = \"No Match\";\r\n public static readonly ShipMethodCode = \"FF\";\r\n\r\n public static readonly RecordTypes =\r\n [\r\n { id: 1, name: \"Freight Forwarder\" },\r\n { id: 2, name: \"Customs Broker\" }\r\n ];\r\n\r\n public static readonly FreightForwarderStatuses =\r\n [\r\n { id: 1, name: \"Approved\" },\r\n { id: 2, name: \"Pending\" },\r\n { id: 7, name: \"New\" },\r\n { id: 9, name: \"Inactive\" },\r\n { id: 10, name: \"Pending Review\" },\r\n { id: 11, name: \"Hold\" },\r\n { id: 12, name: \"Deny\" }\r\n ];\r\n\r\n public static recordType(countryUID: string): string\r\n {\r\n if (Util.isEmpty(countryUID))\r\n {\r\n return \"\";\r\n }\r\n\r\n if (countryUID == CommonSettings.USAUID)\r\n {\r\n return FreightForwarderCommon.getDescription(FreightForwarderType.FreightFordwarder);\r\n }\r\n\r\n return FreightForwarderCommon.getDescription(FreightForwarderType.CustomersBroker);\r\n }\r\n\r\n public static getDescription(recordType: number): string\r\n {\r\n let ffType = FreightForwarderCommon.RecordTypes.find(elm => elm.id == recordType);\r\n\r\n return ffType.name;\r\n }\r\n}","import { GridCellImageGroup } from \"../renderers/grid-cell-image-group/grid-cell-image-group\";\r\nimport { GridColumn } from \"./grid-column.model\";\r\n\r\nexport class GridColumnImage extends GridColumn\r\n{\r\n constructor(images: Array, header: string, width: number = 100)\r\n {\r\n super(null, header);\r\n\r\n this.width = width;\r\n this.filter = null;\r\n this.minWidth = width;\r\n this.sortable = false;\r\n this.resizable = false;\r\n this.suppressSizeToFit = true;\r\n this.cellRendererParams = { Images: images };\r\n this.cellRendererFramework = GridCellImageGroup;\r\n }\r\n}","import { Component } from \"@angular/core\";\r\nimport { Product } from \"@app/data\";\r\nimport { Util } from \"@app/utils/util\";\r\nimport { AgRendererComponent } from \"ag-grid-angular\";\r\nimport { ICellRendererParams } from \"ag-grid-community\";\r\n\r\n@Component({\r\n templateUrl: \"./grid-cell-part-number.html\",\r\n})\r\nexport class GridCellPartNumberRenderer implements AgRendererComponent\r\n{\r\n public product: Product;\r\n\r\n private cellParams: ICellRendererParams;\r\n\r\n constructor()\r\n {\r\n }\r\n\r\n agInit(params)\r\n {\r\n this.cellParams = params;\r\n\r\n if (Util.isEmpty(params.field))\r\n {\r\n this.product = params.data;\r\n }\r\n else\r\n {\r\n this.product = params.data[params.field];\r\n }\r\n }\r\n\r\n refresh(params): boolean\r\n {\r\n this.cellParams = params;\r\n return true;\r\n }\r\n}","export default \"\";","import { Injectable } from \"@angular/core\";\r\nimport { ActivatedRouteSnapshot, CanDeactivate, RouterStateSnapshot, UrlTree } from \"@angular/router\";\r\nimport { Observable } from \"rxjs\";\r\n\r\nexport interface CanComponentDeactivate\r\n{\r\n canDeactivate: () => Observable | Promise | boolean | UrlTree;\r\n}\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class CanDeactivateGuard implements CanDeactivate {\r\n\r\n canDeactivate(component: CanComponentDeactivate, route: ActivatedRouteSnapshot, state: RouterStateSnapshot)\r\n {\r\n return component.canDeactivate ? component.canDeactivate() : true;\r\n }\r\n}","export class FreightForwarderRequestDTO\r\n{\r\n public static readonly FreightRequest_Save = 1;\r\n public static readonly FreightRequest_Update = 2;\r\n public static readonly FreightRequest_DirtyTab = 3;\r\n public static readonly FreightRequest_DirtyClose = 4;\r\n public static readonly FreightRequest_TabChanged = 5;\r\n\r\n data: any;\r\n taskID: number;\r\n\r\n constructor(taskID: number = 0, data: any = null)\r\n {\r\n this.data = data;\r\n this.taskID = taskID;\r\n }\r\n}","import { HttpClient, HttpParams } from '@angular/common/http';\r\nimport { DomSanitizer } from \"@angular/platform-browser\";\r\nimport { environment } from '@env/environment';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { FixedImage } from \"../misc/fixed-image\";\r\nimport { ApiResult } from './api-result';\r\n\r\nexport class ApiService {\r\n\r\n lookupList: T[];\r\n\r\n constructor(public httpClient: HttpClient, private apiResource: string)\r\n {\r\n }\r\n\r\n list(query?: T): Observable>\r\n {\r\n return this.getList('list', query);\r\n }\r\n\r\n lookup(query?: T): Observable>\r\n {\r\n return this.getList('lookup', query);\r\n }\r\n\r\n save(body: T): Observable\r\n {\r\n return this.post('save', body);\r\n }\r\n\r\n release(body: T): Observable\r\n {\r\n return this.post('release', body);\r\n }\r\n\r\n saveList(body: T[]): Observable\r\n {\r\n return this.postList('save', body);\r\n }\r\n\r\n detail(query?: T): Observable\r\n {\r\n return this.get('detail', query);\r\n }\r\n\r\n getList(path: string, query?: T): Observable>\r\n {\r\n let httpParams = new HttpParams();\r\n\r\n if (query)\r\n {\r\n Object.keys(query).forEach((key) =>\r\n {\r\n if (key)\r\n {\r\n //If this param is passed as true we will use it else we don't wan't to filter for 'false' instead it is unchecked and we go back to queries without looking at this field\r\n if (key == 'isImportPermitHold')\r\n {\r\n if (query['isImportPermitHold'])\r\n {\r\n\r\n }\r\n else\r\n {\r\n delete query['isImportPermitHold'];\r\n }\r\n }\r\n if (key == 'isEARLicenseHold')\r\n {\r\n if (query['isEARLicenseHold'])\r\n {\r\n\r\n }\r\n else\r\n {\r\n delete query['isEARLicenseHold'];\r\n }\r\n }\r\n }\r\n }, this);\r\n httpParams = this.buildQuery(httpParams, query);\r\n }\r\n\r\n return this.httpClient.get>(\r\n this.buildUrl(path),\r\n { params: httpParams });\r\n }\r\n\r\n getLookup(query?: T)\r\n {\r\n return this.lookup(query).subscribe(retRes => this.lookupList = retRes.results);\r\n }\r\n\r\n get(path: string, query?: T): Observable\r\n {\r\n let httpParams = new HttpParams();\r\n\r\n if (query)\r\n {\r\n httpParams = this.buildQuery(httpParams, query);\r\n }\r\n\r\n return this.httpClient.get(\r\n this.buildUrl(path),\r\n { params: httpParams });\r\n }\r\n\r\n delete(path: string, query?: T): Observable\r\n {\r\n let httpParams = new HttpParams();\r\n\r\n if (query)\r\n {\r\n httpParams = this.buildQuery(httpParams, query);\r\n }\r\n\r\n return this.httpClient.delete(this.buildUrl(path), { params: httpParams });\r\n }\r\n\r\n getFile(path: string, uid: string)\r\n {\r\n path = this.buildUrl(path);\r\n\r\n return this.httpClient.get(`${path}?fileNameUID=${uid}`,\r\n {\r\n observe: \"response\",\r\n responseType: \"blob\",\r\n })\r\n .pipe(map(res =>\r\n {\r\n return new Blob([res.body]);\r\n }));\r\n }\r\n\r\n post(path: string, body: T): Observable\r\n {\r\n return this.httpClient.post(\r\n this.buildUrl(path),\r\n JSON.stringify(body));\r\n }\r\n\r\n postGetList(path: string, body?: T): Observable>\r\n {\r\n return this.httpClient.post>(\r\n this.buildUrl(path),\r\n JSON.stringify(body));\r\n }\r\n\r\n postList(path: string, body: T[]): Observable\r\n {\r\n return this.httpClient.post(\r\n this.buildUrl(path),\r\n JSON.stringify(body));\r\n }\r\n\r\n postFile(path: string, body: FormData): Observable\r\n {\r\n return this.httpClient.post(\r\n this.buildUrl(path),\r\n body);\r\n }\r\n\r\n public buildUrl(path: string): string\r\n {\r\n return `${environment.apiUrl}/${this.apiResource}/${path}`;\r\n }\r\n\r\n private buildQuery(httpParams: HttpParams, query: T, parent?: string): HttpParams\r\n {\r\n Object.keys(query).forEach((key) =>\r\n {\r\n if (query[key] != null)\r\n {\r\n const param: string = parent ? `${parent}.${key}` : key;\r\n\r\n if (typeof query[key] !== 'object' || Array.isArray(query[key]))\r\n {\r\n httpParams = httpParams.set(param, query[key]);\r\n } else\r\n {\r\n httpParams = this.buildQuery(httpParams, query[key], param);\r\n }\r\n }\r\n }, this);\r\n\r\n return httpParams;\r\n }\r\n}","import { Component } from \"@angular/core\";\r\nimport { DispatchCommon } from '@app/data/dispatch/dispatch-common';\r\nimport { GridFilter, GridFilterStorage } from \"@app/shared/ag-grid-helpers/models/grid-filter.model\";\r\nimport { Util } from \"@app/utils/util\";\r\nimport { AgFilterComponent } from \"ag-grid-angular\";\r\nimport { IDoesFilterPassParams } from \"ag-grid-community\";\r\nimport clone from \"lodash-es/clone\";\r\nimport { GridFilterCustom } from \"../grid-filter-custom\";\r\n\r\n@Component({\r\n styleUrls: [\"../../../styles/gridfilter.scss\"],\r\n templateUrl: \"./grid-dispatch-type-filter.component.html\"\r\n})\r\nexport class GridDispatchTypeFilter extends GridFilterCustom implements AgFilterComponent\r\n{\r\n public readonly fieldType = \"dispatchType\";\r\n public readonly fieldProcess = \"dispatchProcessType\";\r\n public readonly dispatchTypes = DispatchCommon.DispatchTypes;\r\n\r\n public selectType: number;\r\n public selectProc: number;\r\n public processTypes;\r\n\r\n agInit(params: any): void\r\n {\r\n this.initFilter(params);\r\n }\r\n\r\n isFilterActive(): boolean\r\n {\r\n return !Util.isEmpty(this.selectType);\r\n }\r\n\r\n doesFilterPass(params: IDoesFilterPassParams): boolean\r\n {\r\n if (this.isServerSide || Util.isEmpty(this.selectType))\r\n {\r\n return true;\r\n }\r\n\r\n return (this.selectType == params.data[this.fieldType] && (Util.isEmpty(this.selectProc) || this.selectProc == params.data[this.fieldProcess]));\r\n }\r\n\r\n getModel()\r\n {\r\n if (Util.isEmpty(this.selectType))\r\n {\r\n return null;\r\n }\r\n\r\n let filt = new GridFilterStorage();\r\n\r\n filt.add(this.fieldType, new GridFilter(this.selectType));\r\n\r\n if (!Util.isEmpty(this.selectProc))\r\n {\r\n filt.add(this.fieldProcess, new GridFilter(this.selectProc));\r\n }\r\n\r\n return filt;\r\n }\r\n\r\n setModel(model: any)\r\n {\r\n let filter = model?.multiple;\r\n\r\n if (Util.isEmpty(filter))\r\n {\r\n this.selectType = null;\r\n this.selectProc = null;\r\n return;\r\n }\r\n\r\n for (let name in filter)\r\n {\r\n switch (name)\r\n {\r\n case this.fieldType:\r\n this.selectType = filter[name].filter;\r\n break;\r\n\r\n case this.fieldProcess:\r\n this.selectProc = filter[name].filter;\r\n break;\r\n }\r\n }\r\n\r\n this.onMainFilter();\r\n }\r\n\r\n public onMainFilter(): void\r\n {\r\n let types = clone(DispatchCommon.DispatchProccessTypes[this.selectType]);\r\n\r\n types.sort((val1, val2) => this.sortTypes(val1, val2));\r\n types.unshift({ id: null, name: \"All\" });\r\n\r\n this.processTypes = types;\r\n }\r\n\r\n public onFilterClear()\r\n {\r\n this.selectProc = null;\r\n this.selectType = null;\r\n\r\n this.applyFilter();\r\n this.closeFilter();\r\n }\r\n\r\n public onFilterApply()\r\n {\r\n this.applyFilter();\r\n this.closeFilter();\r\n }\r\n\r\n private sortTypes(val1: any, val2: any): number\r\n {\r\n if (val1.name == val2.name)\r\n {\r\n return 0;\r\n }\r\n\r\n return (val1.name > val2.name ? 1 : -1);\r\n }\r\n}","export default \"
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n \\r\\n
          \\r\\n
          \\r\\n \\r\\n \\r\\n
          \\r\\n
          \\r\\n
          \";","export enum OrderStatusType\r\n{\r\n Hold = 10,\r\n Active = 1,\r\n Failed = 5,\r\n Cleared = 3,\r\n Complete = 4,\r\n Cancelled = 13,\r\n Suspended = 11,\r\n OrderCheck = -2,\r\n PartiallyCleared = 2\r\n}","import { Component } from \"@angular/core\";\r\nimport { Util } from \"@app/utils/util\";\r\nimport { AgRendererComponent } from \"ag-grid-angular\";\r\nimport { ICellRendererParams } from \"ag-grid-community\";\r\n\r\n@Component({\r\n styleUrls: [\"./grid-cell-contact.scss\"],\r\n templateUrl: \"./grid-cell-contact.html\",\r\n})\r\nexport class GridCellContactRenderer implements AgRendererComponent\r\n{\r\n public email: string;\r\n public title: string;\r\n public setWidth: string;\r\n public phoneCell: string;\r\n public phoneWork: string;\r\n public contactName: string;\r\n\r\n private field: string;\r\n private showEmail: boolean;\r\n private showTitle: boolean;\r\n private showPhone: boolean;\r\n private cellParams: ICellRendererParams;\r\n\r\n agInit(params)\r\n {\r\n this.field = params.field;\r\n this.showEmail = params.showEmail;\r\n this.showTitle = params.showTitle;\r\n this.showPhone = params.showPhone;\r\n this.cellParams = params;\r\n\r\n if (Util.isEmpty(params.width))\r\n {\r\n this.setWidth = \"100%\";\r\n }\r\n else\r\n {\r\n this.setWidth = params.width + \"px\";\r\n }\r\n\r\n let contact = (this.field == null ? params.data : params.data[this.field]);\r\n\r\n if (Util.isEmpty(contact))\r\n {\r\n return;\r\n }\r\n\r\n this.contactName = Util.MakeName(contact);\r\n\r\n if (this.showTitle && contact.hasOwnProperty(\"title\") && !Util.isEmpty(contact.title))\r\n {\r\n this.contactName += ` (${contact.title})`;\r\n }\r\n\r\n if (this.showPhone && contact.hasOwnProperty(\"cellPhone\"))\r\n {\r\n this.phoneCell = contact.cellPhone;\r\n }\r\n\r\n if (this.showEmail && contact.hasOwnProperty(\"emailAddress\"))\r\n {\r\n this.email = contact.emailAddress;\r\n }\r\n\r\n if (this.showPhone && contact.hasOwnProperty(\"workPhone\"))\r\n {\r\n this.phoneWork = contact.workPhone;\r\n }\r\n }\r\n\r\n refresh(params): boolean\r\n {\r\n this.cellParams = params;\r\n return true;\r\n }\r\n}","export default \"
          \";","export default \".contact-wrapper {\\n display: -ms-flexbox;\\n display: flex;\\n -ms-flex-direction: column;\\n flex-direction: column;\\n}\\n\\n.contact-name {\\n margin-bottom: .5rem;\\n}\\n\";","export class MerchantCommon\r\n{\r\n public static merchantStatuses =\r\n [\r\n { id: 1, name: \"Active\" },\r\n { id: 2, name: \"Pending\" },\r\n { id: 9, name: \"Inactive\" }\r\n ];\r\n}","import { HttpClient } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { ApiService } from \"@app/data/api/api.service\";\r\nimport { ProductSearch } from \"./product-search.model\";\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class ProductSearchesService extends ApiService\r\n{\r\n constructor(httpClient: HttpClient)\r\n {\r\n super(httpClient, \"product-searches\");\r\n }\r\n}","import { Component } from \"@angular/core\";\r\nimport { ProductSearch } from \"@app/data/product/product-search/product-search.model\";\r\nimport { ProductSearchesService } from \"@app/data/product/product-search/product-searches.service\";\r\nimport { GridBase } from \"@app/shared/ag-grid-helpers/ag-grid-base\";\r\nimport { GridColumnCustom } from \"@app/shared/ag-grid-helpers/models/grid-column-custom.model\";\r\nimport { GridColumnMerchant } from '@app/shared/ag-grid-helpers/models/grid-column-merchant';\r\nimport { GridColumnPartNumber } from \"@app/shared/ag-grid-helpers/models/grid-column-part-number\";\r\nimport { GridColumnPurchaser } from '@app/shared/ag-grid-helpers/models/grid-column-purchaser';\r\nimport { GridColumn, GridColumnType } from \"@app/shared/ag-grid-helpers/models/grid-column.model\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\n\r\n@Component({\r\n templateUrl: \"product-searches.html\"\r\n})\r\nexport class ProductSearches extends GridBase\r\n{\r\n constructor(\r\n toastrService: ToastrService,\r\n private searchServ: ProductSearchesService)\r\n {\r\n super(toastrService, searchServ);\r\n\r\n this.setupGrid();\r\n }\r\n\r\n private setupGrid()\r\n {\r\n this.storageKey = \"ProductSearches\";\r\n this.addColumn(new GridColumnCustom(\"textSearch\", \"Searched\", { minWidth: 150 }));\r\n this.addColumn(new GridColumn(\"createdDate\", \"Date\", GridColumnType.DateTime));\r\n this.addColumn(new GridColumn(\"ipAddress\", \"From\"));\r\n this.addColumn(new GridColumnPartNumber());\r\n this.addColumn(new GridColumn(\"country.name\", \"Country\"));\r\n this.addColumn(new GridColumnMerchant(\"customer.displayName\", \"customer.uid\"));\r\n this.addColumn(new GridColumnPurchaser(\"purchaser.displayName\", \"purchaser.uid\"));\r\n this.addColumn(new GridColumn(\"sellerCategory.name\", \"Category\"));\r\n this.addColumn(new GridColumn(\"sellerGroup.name\", \"Group\"));\r\n }\r\n}","export default \"
          \\r\\n \\r\\n \\r\\n
          \";","import { HttpClient } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { map, mergeMap } from \"rxjs/operators\";\r\nimport { ApiService } from \"../api/api.service\";\r\nimport { DispatchService } from \"../dispatch/dispatch.service\";\r\nimport { CountryExportControl } from \"./country-export-control\";\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class CountryExportControlService extends ApiService\r\n{\r\n constructor(httpClient: HttpClient, private dispatchService: DispatchService)\r\n {\r\n super(httpClient, \"country-export-control\");\r\n }\r\n\r\n import(file: File, data: CountryExportControl)\r\n {\r\n return this.dispatchService.upload(file).pipe(\r\n map(d1 =>\r\n {\r\n data.dispatch = {\r\n fileName: d1.fileName,\r\n fileNameUID: d1.fileNameUID\r\n };\r\n\r\n return d1;\r\n }),\r\n mergeMap(d2 =>\r\n {\r\n return this.post(\"import\", data);\r\n })\r\n );\r\n }\r\n}","import { Component } from \"@angular/core\";\r\nimport { OrderDataHelper } from '@app/shared/orders/order-data.helper';\r\nimport { HoldItemModel } from \"@app/shared/orders/order-grid-components/hold-item.model\";\r\nimport { Util } from \"@app/utils/util\";\r\nimport { ICellRendererAngularComp } from \"ag-grid-angular\";\r\nimport { ICellRendererParams } from \"ag-grid-community\";\r\n\r\n@Component(\r\n{\r\n selector: \"grid-cell-holds\",\r\n styleUrls: [\"./grid-cell-holds.renderer.scss\"],\r\n templateUrl: \"./grid-cell-holds.renderer.html\"\r\n})\r\nexport class GridCellOrderHoldsRenderer implements ICellRendererAngularComp\r\n{\r\n public holdList: Array;\r\n\r\n private cellParams: ICellRendererParams;\r\n\r\n agInit(params): void\r\n {\r\n this.cellParams = params;\r\n\r\n let data = params.data;\r\n\r\n this.holdList = new Array();\r\n\r\n if (!Util.isEmpty(data.isAEPHold))\r\n {\r\n this.holdList.push(OrderDataHelper.Hold_AEP);\r\n }\r\n\r\n if (!Util.isEmpty(data.isEARLicenseHold))\r\n {\r\n this.holdList.push(OrderDataHelper.Hold_EAR);\r\n }\r\n\r\n if (!Util.isEmpty(data.isITARLicenseHold))\r\n {\r\n this.holdList.push(OrderDataHelper.Hold_ITAR);\r\n }\r\n\r\n if (!Util.isEmpty(data.isImportPermitHold))\r\n {\r\n this.holdList.push(OrderDataHelper.Hold_Import);\r\n }\r\n }\r\n\r\n refresh(params: ICellRendererParams): boolean\r\n {\r\n this.cellParams = params;\r\n return true;\r\n }\r\n}","export default \"
          \\r\\n
          \\r\\n {{ item.code }}\\r\\n
          \\r\\n
          \";","export default \".hold-group {\\n display: -ms-flexbox;\\n display: flex;\\n}\\n\\n.hold-group div {\\n width: auto;\\n height: auto;\\n padding: 0rem 0.25rem;\\n margin-right: .25rem;\\n}\\n\";","import { Component, OnInit, ViewChild, ViewEncapsulation } from \"@angular/core\";\r\nimport { AppService } from \"@app/app.service\";\r\nimport { AuthService, BaseComponent } from \"@app/data\";\r\nimport { WikiStatus } from '@app/data/enums/wiki-status.enum';\r\nimport { WikiType } from \"@app/data/enums/wiki-type.enum\";\r\nimport { WikiMod } from \"@app/data/wiki/wiki.model\";\r\nimport { WikiService } from \"@app/data/wiki/wiki.service\";\r\nimport { WikiTextComponent } from \"@app/shared/misc-components/wiki-renderer/wiki-renderer.component\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\n\r\n@Component(\r\n {\r\n styleUrls: [\"../../styles/ee-wiki.scss\"],\r\n templateUrl: \"./user-manual.component.html\",\r\n encapsulation: ViewEncapsulation.None\r\n })\r\nexport class UserManualComponent extends BaseComponent implements OnInit\r\n{\r\n @ViewChild(\"wikiElm\")\r\n wikiElm: WikiTextComponent;\r\n\r\n constructor(toastrService: ToastrService,\r\n private wikiServ: WikiService,\r\n private appService: AppService,\r\n private authService: AuthService)\r\n {\r\n super(toastrService);\r\n\r\n this.title = \"EasyExport User Manual\";\r\n this.apiService = wikiServ;\r\n this.appService.pageTitle = this.title;\r\n }\r\n\r\n async ngOnInit()\r\n {\r\n let prof = await this.authService.getProfile$().toPromise();\r\n\r\n this.loadManual(prof.profileType);\r\n }\r\n\r\n private loadManual(profType)\r\n {\r\n this.blockOn(\"Loading...\");\r\n\r\n let filt: WikiMod =\r\n {\r\n wikiType: WikiType.userManual,\r\n statusType: WikiStatus.Active,\r\n profileType: profType\r\n }\r\n\r\n this.wikiServ.post(\"detail\", filt).subscribe(\r\n retRes => this.doneDidLoad(retRes),\r\n errRes => this.error(errRes),\r\n () => this.blockOff());\r\n }\r\n\r\n private doneDidLoad(data)\r\n {\r\n this.wikiElm.parseWiki(data.wikiText);\r\n }\r\n}","export default \"\\r\\n
          \\r\\n \\r\\n

          {{ title }}

          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n
          \\r\\n
          \\r\\n
          \";","export class MerchantRequestDTO\r\n{\r\n public static readonly Request_Save = 1;\r\n public static readonly Request_Close = 2;\r\n public static readonly Request_DirtyNav = 3\r\n public static readonly Request_DirtyClose = 4;\r\n public static readonly Request_TabChanged = 5;\r\n public static readonly Request_LogoChanged = 6;\r\n\r\n data: any;\r\n requestID: number;\r\n\r\n constructor(requestID: number = 0, data: any = null)\r\n {\r\n this.data = data;\r\n this.requestID = requestID;\r\n }\r\n}","export default \".testmode {\\n color: #060;\\n display: -ms-flexbox;\\n display: flex;\\n}\\n\\n.testmode i {\\n width: 1.5rem;\\n border: 1px solid transparent;\\n height: 1.5rem;\\n padding: .2rem;\\n margin-right: .25rem;\\n border-radius: .25rem;\\n}\\n\\n.testmode:hover {\\n color: #fff;\\n background-color: #060;\\n}\\n\\n.testmode-on {\\n color: #fff;\\n background-color: #060;\\n}\\n\\n.testmode-banner {\\n color: #060;\\n border: 2px solid #060;\\n padding: 0rem 1rem;\\n font-size: 2rem;\\n border-radius: .5rem;\\n background-color: #fff;\\n}\\n\\n.testmode-banner::after {\\n content: \\\"Test Mode\\\";\\n}\\n\\n@media (max-width: 1024px) {\\n .testmode-banner {\\n padding: 0rem;\\n }\\n .testmode-banner::after {\\n content: \\\"TM\\\";\\n }\\n}\\n\";","import { Injectable, NgZone } from '@angular/core';\r\n\r\n@Injectable()\r\nexport class LayoutService {\r\n constructor(private zone: NgZone) {}\r\n\r\n private get layoutHelpers() {\r\n return (window as any).layoutHelpers;\r\n }\r\n\r\n private exec(fn) {\r\n return this.layoutHelpers && this.zone.runOutsideAngular(fn);\r\n }\r\n\r\n public getLayoutSidenav() {\r\n return this.exec(() => this.layoutHelpers.getLayoutSidenav()) || null;\r\n }\r\n\r\n public getSidenav() {\r\n return this.exec(() => this.layoutHelpers.getSidenav()) || null;\r\n }\r\n\r\n public getLayoutNavbar() {\r\n return this.exec(() => this.layoutHelpers.getLayoutNavbar()) || null;\r\n }\r\n\r\n public getLayoutFooter() {\r\n return this.exec(() => this.layoutHelpers.getLayoutFooter()) || null;\r\n }\r\n\r\n public getLayoutContainer() {\r\n return this.exec(() => this.layoutHelpers.getLayoutContainer()) || null;\r\n }\r\n\r\n public isSmallScreen() {\r\n return this.exec(() => this.layoutHelpers.isSmallScreen());\r\n }\r\n\r\n public isLayout1() {\r\n return this.exec(() => this.layoutHelpers.isLayout1());\r\n }\r\n\r\n public isCollapsed() {\r\n return this.exec(() => this.layoutHelpers.isCollapsed());\r\n }\r\n\r\n public isFixed() {\r\n return this.exec(() => this.layoutHelpers.isFixed());\r\n }\r\n\r\n public isOffcanvas() {\r\n return this.exec(() => this.layoutHelpers.isOffcanvas());\r\n }\r\n\r\n public isNavbarFixed() {\r\n return this.exec(() => this.layoutHelpers.isNavbarFixed());\r\n }\r\n\r\n public isFooterFixed() {\r\n return this.exec(() => this.layoutHelpers.isFooterFixed());\r\n }\r\n\r\n public isReversed() {\r\n return this.exec(() => this.layoutHelpers.isReversed());\r\n }\r\n\r\n public setCollapsed(collapsed, animate = true) {\r\n this.exec(() => this.layoutHelpers.setCollapsed(collapsed, animate));\r\n }\r\n\r\n public toggleCollapsed(animate = true) {\r\n this.exec(() => this.layoutHelpers.toggleCollapsed(animate));\r\n }\r\n\r\n public setPosition(fixed, offcanvas) {\r\n this.exec(() => this.layoutHelpers.setPosition(fixed, offcanvas));\r\n }\r\n\r\n public setNavbarFixed(fixed) {\r\n this.exec(() => this.layoutHelpers.setNavbarFixed(fixed));\r\n }\r\n\r\n public setFooterFixed(fixed) {\r\n this.exec(() => this.layoutHelpers.setFooterFixed(fixed));\r\n }\r\n\r\n public setReversed(reversed) {\r\n this.exec(() => this.layoutHelpers.setReversed(reversed));\r\n }\r\n\r\n public update() {\r\n this.exec(() => this.layoutHelpers.update());\r\n }\r\n\r\n public setAutoUpdate(enable) {\r\n this.exec(() => this.layoutHelpers.setAutoUpdate(enable));\r\n }\r\n\r\n public on(event, callback) {\r\n this.exec(() => this.layoutHelpers.on(event, callback));\r\n }\r\n\r\n public off(event) {\r\n this.exec(() => this.layoutHelpers.off(event));\r\n }\r\n\r\n public init() {\r\n this.exec(() => this.layoutHelpers.init());\r\n }\r\n\r\n public destroy() {\r\n this.exec(() => this.layoutHelpers.destroy());\r\n }\r\n\r\n // Internal\r\n //\r\n\r\n public _redrawLayoutSidenav() {\r\n this.exec(() => this.layoutHelpers._redrawLayoutSidenav());\r\n }\r\n\r\n public _removeClass(cls) {\r\n this.exec(() => this.layoutHelpers._removeClass(cls));\r\n }\r\n}\r\n","import { AfterViewInit, Component, OnDestroy } from \"@angular/core\";\r\nimport { LayoutService } from \"../layout.service\";\r\n\r\n@Component({\r\n styles: [\":host { display: block; }\", \":host ::ng-deep .layout-loading .sidenav-link { transition: none !important; }\"],\r\n selector: \"app-layout-1\",\r\n templateUrl: \"./layout-1.component.html\",\r\n})\r\nexport class Layout1Component implements AfterViewInit, OnDestroy\r\n{\r\n // Prevent \"blink\" effect\r\n public initialized = false;\r\n\r\n constructor(private layoutService: LayoutService)\r\n {\r\n }\r\n\r\n ngAfterViewInit()\r\n {\r\n setTimeout(() =>\r\n {\r\n this.initialized = true;\r\n\r\n this.layoutService.init();\r\n this.layoutService.update();\r\n this.layoutService.setAutoUpdate(true);\r\n });\r\n }\r\n\r\n ngOnDestroy()\r\n {\r\n setTimeout(() =>\r\n {\r\n this.layoutService.destroy();\r\n });\r\n }\r\n\r\n closeSidenav()\r\n {\r\n setTimeout(() =>\r\n {\r\n this.layoutService.setCollapsed(true);\r\n });\r\n }\r\n}","export default \"
          \\r\\n
          \\r\\n \\r\\n
          \\r\\n \\r\\n
          \\r\\n
          \\r\\n \\r\\n
          \\r\\n \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \";","import { Component } from '@angular/core';\r\nimport { AppService } from '../app.service';\r\n\r\n@Component({\r\n selector: 'app-not-found',\r\n templateUrl: './not-found.component.html',\r\n styleUrls: ['not-found.component.css']\r\n})\r\nexport class NotFoundComponent {\r\n\r\n constructor(private appService: AppService) {\r\n this.appService.pageTitle = '404 Not Found';\r\n }\r\n\r\n}\r\n","export default \"
          \\r\\n
          \\r\\n

          404

          \\r\\n

          Not Found

          \\r\\n
          \\r\\n
          \\r\\n\";","export default \".not-found-container {\\r\\n width: 100%;\\r\\n min-height: 100vh;\\r\\n background: #fff;\\r\\n display: -ms-flexbox;\\r\\n display: flex;\\r\\n -ms-flex-pack: center;\\r\\n justify-content: center;\\r\\n -ms-flex-align: center;\\r\\n align-items: center;\\r\\n}\\r\\n\\r\\n.not-found-status {\\r\\n font-size: 10rem;\\r\\n font-weight: 400;\\r\\n margin: 0;\\r\\n line-height: 1;\\r\\n}\\r\\n\\r\\n.not-found-message {\\r\\n font-weight: 300;\\r\\n font-size: 3.25rem;\\r\\n margin: 0;\\r\\n line-height: 1;\\r\\n}\\r\\n\";","import { ModuleWithProviders } from \"@angular/core\";\r\nimport { RouterModule, Routes } from \"@angular/router\";\r\nimport { AuthGuard } from \"@app/data\";\r\nimport { Layout1Component } from \"./layout/layout-1/layout-1.component\";\r\nimport { NotFoundComponent } from \"./not-found/not-found.component\";\r\n\r\nconst routes: Routes = [\r\n { path: \"\", loadChildren: \"./account/account.module#AccountModule\" },\r\n { path: \"ff\", component: Layout1Component, loadChildren: \"./freight-forwarder/freight-forwarder.module#FreightForwarderModule\", canActivate: [AuthGuard] },\r\n { path: \"master\", component: Layout1Component, loadChildren: \"./master/master.module#MasterModule\", canActivate: [AuthGuard] },\r\n { path: \"purchaser\", component: Layout1Component, loadChildren: \"./purchaser/purchaser.module#PurchaserModule\", canActivate: [AuthGuard] },\r\n { path: \"admin\", component: Layout1Component, loadChildren: \"./admin/admin.module#AdminModule\", canActivate: [AuthGuard] },\r\n { path: \"customer\", component: Layout1Component, loadChildren: \"./customer/customer.module#CustomerModule\", canActivate: [AuthGuard] },\r\n\r\n { path: \"**\", component: NotFoundComponent }\r\n];\r\n\r\nexport const AppRoutingModule: ModuleWithProviders = RouterModule.forRoot(routes);","import { Component } from '@angular/core';\r\nimport { Router, Event as RouterEvent, NavigationStart, NavigationEnd, NavigationCancel, NavigationError } from '@angular/router';\r\nimport { AppService } from './app.service';\r\nimport { LayoutService } from './layout/layout.service';\r\n\r\n@Component({\r\n selector: 'app-root',\r\n templateUrl: './app.component.html',\r\n styles: [':host { display: block; }']\r\n})\r\nexport class AppComponent {\r\n constructor(private router: Router, private appService: AppService, private layoutService: LayoutService) {\r\n // Subscribe to router events to handle page transition\r\n this.router.events.subscribe(this.navigationInterceptor.bind(this));\r\n\r\n // Disable animations and transitions in IE10 to increase performance\r\n if (typeof (document as any).documentMode === 'number' && (document as any).documentMode < 11) {\r\n const style = document.createElement('style');\r\n style.textContent = `\r\n * {\r\n -ms-animation: none !important;\r\n animation: none !important;\r\n -ms-transition: none !important;\r\n transition: none !important;\r\n }`;\r\n document.head.appendChild(style);\r\n }\r\n }\r\n\r\n private navigationInterceptor(e: RouterEvent) {\r\n if (e instanceof NavigationStart) {\r\n // Set loading state\r\n document.body.classList.add('app-loading');\r\n }\r\n\r\n if (e instanceof NavigationEnd) {\r\n // Scroll to top of the page\r\n this.appService.scrollTop(0, 0);\r\n }\r\n\r\n if (e instanceof NavigationEnd || e instanceof NavigationCancel || e instanceof NavigationError) {\r\n // On small screens collapse sidenav\r\n if (this.layoutService.isSmallScreen() && !this.layoutService.isCollapsed()) {\r\n setTimeout(() => this.layoutService.setCollapsed(true, true), 10);\r\n }\r\n\r\n // Remove loading state\r\n document.body.classList.remove('app-loading');\r\n }\r\n }\r\n}\r\n","export default \"\\r\\n\";","import {\r\n Component, ElementRef, Input, OnDestroy, NgZone, ChangeDetectorRef, AfterViewInit, HostBinding, Output, EventEmitter\r\n} from '@angular/core';\r\n\r\nimport PerfectScrollbar from 'perfect-scrollbar';\r\nconst SideNav = require('./sidenav.js').SideNav;\r\n\r\n@Component({\r\n selector: 'sidenav', // tslint:disable-line\r\n exportAs: 'sidenav',\r\n template: '',\r\n styleUrls: ['../ngx-perfect-scrollbar/ngx-perfect-scrollbar.scss']\r\n})\r\nexport class SidenavComponent implements AfterViewInit, OnDestroy {\r\n public sidenav;\r\n\r\n @Input() orientation = 'vertical';\r\n @Input() animate = true;\r\n @Input() accordion = true;\r\n @Input() closeChildren = false;\r\n @Input() showDropdownOnHover = false;\r\n\r\n @Input() onOpen: any;\r\n @Input() onOpened: any;\r\n @Input() onClose: any;\r\n @Input() onClosed: any;\r\n\r\n @Output() destroy = new EventEmitter();\r\n\r\n @HostBinding('class.sidenav') hostClassMain = true;\r\n @HostBinding('class.sidenav-horizontal') hostClassHorizontal = false;\r\n @HostBinding('class.sidenav-vertical') hostClassVertical = false;\r\n\r\n constructor(private el: ElementRef, private zone: NgZone, private ref: ChangeDetectorRef) {\r\n this.ref.detach();\r\n\r\n // Set host classes\r\n this.hostClassHorizontal = this.orientation === 'horizontal';\r\n this.hostClassVertical = !this.hostClassHorizontal;\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.zone.runOutsideAngular(() => {\r\n this.sidenav = new SideNav(this.el.nativeElement, {\r\n orientation: this.orientation,\r\n animate: this.animate,\r\n accordion: this.accordion,\r\n closeChildren: this.closeChildren,\r\n showDropdownOnHover: this.showDropdownOnHover,\r\n\r\n onOpen: this.onOpen,\r\n onOpened: this.onOpened,\r\n onClose: this.onClose,\r\n onClosed: this.onClosed\r\n }, PerfectScrollbar);\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroy.emit(this);\r\n if (this.sidenav) { this.zone.runOutsideAngular(() => this.sidenav.destroy()); }\r\n this.sidenav = null;\r\n this.el = null;\r\n }\r\n}\r\n","export default \":host ::ng-deep {\\n /*\\n * Container style\\n */\\n /*\\n * Scrollbar rail styles\\n */\\n /*\\n * Scrollbar thumb styles\\n */\\n /* MS supports */\\n}\\n\\n:host ::ng-deep .ps {\\n overflow: hidden !important;\\n overflow-anchor: none;\\n -ms-overflow-style: none;\\n touch-action: auto;\\n -ms-touch-action: auto;\\n}\\n\\n:host ::ng-deep .ps__rail-x {\\n display: none;\\n opacity: 0;\\n transition: background-color .2s linear, opacity .2s linear;\\n -webkit-transition: background-color .2s linear, opacity .2s linear;\\n height: 15px;\\n /* there must be 'bottom' or 'top' for ps__rail-x */\\n bottom: 0px;\\n /* please don't change 'position' */\\n position: absolute;\\n}\\n\\n:host ::ng-deep .ps__rail-y {\\n display: none;\\n opacity: 0;\\n transition: background-color .2s linear, opacity .2s linear;\\n -webkit-transition: background-color .2s linear, opacity .2s linear;\\n width: 15px;\\n /* there must be 'right' or 'left' for ps__rail-y */\\n right: 0;\\n /* please don't change 'position' */\\n position: absolute;\\n}\\n\\n:host ::ng-deep .ps--active-x > .ps__rail-x,\\n:host ::ng-deep .ps--active-y > .ps__rail-y {\\n display: block;\\n background-color: transparent;\\n}\\n\\n:host ::ng-deep .ps:hover > .ps__rail-x,\\n:host ::ng-deep .ps:hover > .ps__rail-y,\\n:host ::ng-deep .ps--focus > .ps__rail-x,\\n:host ::ng-deep .ps--focus > .ps__rail-y,\\n:host ::ng-deep .ps--scrolling-x > .ps__rail-x,\\n:host ::ng-deep .ps--scrolling-y > .ps__rail-y {\\n opacity: 0.6;\\n}\\n\\n:host ::ng-deep .ps .ps__rail-x:hover,\\n:host ::ng-deep .ps .ps__rail-y:hover,\\n:host ::ng-deep .ps .ps__rail-x:focus,\\n:host ::ng-deep .ps .ps__rail-y:focus,\\n:host ::ng-deep .ps .ps__rail-x.ps--clicking,\\n:host ::ng-deep .ps .ps__rail-y.ps--clicking {\\n background-color: #eee;\\n opacity: 0.9;\\n}\\n\\n:host ::ng-deep .ps__thumb-x {\\n background-color: #aaa;\\n border-radius: 6px;\\n transition: background-color .2s linear, height .2s ease-in-out;\\n -webkit-transition: background-color .2s linear, height .2s ease-in-out;\\n height: 6px;\\n /* there must be 'bottom' for ps__thumb-x */\\n bottom: 2px;\\n /* please don't change 'position' */\\n position: absolute;\\n}\\n\\n:host ::ng-deep .ps__thumb-y {\\n background-color: #aaa;\\n border-radius: 6px;\\n transition: background-color .2s linear, width .2s ease-in-out;\\n -webkit-transition: background-color .2s linear, width .2s ease-in-out;\\n width: 6px;\\n /* there must be 'right' for ps__thumb-y */\\n right: 2px;\\n /* please don't change 'position' */\\n position: absolute;\\n}\\n\\n:host ::ng-deep .ps__rail-x:hover > .ps__thumb-x,\\n:host ::ng-deep .ps__rail-x:focus > .ps__thumb-x,\\n:host ::ng-deep .ps__rail-x.ps--clicking .ps__thumb-x {\\n background-color: #999;\\n height: 11px;\\n}\\n\\n:host ::ng-deep .ps__rail-y:hover > .ps__thumb-y,\\n:host ::ng-deep .ps__rail-y:focus > .ps__thumb-y,\\n:host ::ng-deep .ps__rail-y.ps--clicking .ps__thumb-y {\\n background-color: #999;\\n width: 11px;\\n}\\n\\n@supports (-ms-overflow-style: none) {\\n :host ::ng-deep .ps {\\n overflow: auto !important;\\n }\\n}\\n\\n@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {\\n :host ::ng-deep .ps {\\n overflow: auto !important;\\n }\\n}\\n\\n:host ::ng-deep .ps {\\n position: relative;\\n}\\n\\n:host ::ng-deep .ps__rail-x,\\n:host ::ng-deep .ps__rail-y,\\n:host ::ng-deep .ps__thumb-x,\\n:host ::ng-deep .ps__thumb-y {\\n border-radius: 10rem;\\n}\\n\\n:host ::ng-deep .ps__rail-x {\\n height: 0.25rem;\\n}\\n\\n:host ::ng-deep .ps__rail-y {\\n width: 0.25rem;\\n}\\n\\n:host ::ng-deep .ps__thumb-x {\\n bottom: 0;\\n height: 0.25rem;\\n}\\n\\n:host ::ng-deep .ps__thumb-y {\\n right: 0;\\n width: 0.25rem;\\n}\\n\\n:host ::ng-deep .ps__rail-x:hover,\\n:host ::ng-deep .ps__rail-x:focus,\\n:host ::ng-deep .ps__rail-x.ps--clicking,\\n:host ::ng-deep .ps__rail-x:hover > .ps__thumb-x,\\n:host ::ng-deep .ps__rail-x:focus > .ps__thumb-x,\\n:host ::ng-deep .ps__rail-x.ps--clicking > .ps__thumb-x {\\n height: 0.375rem;\\n}\\n\\n:host ::ng-deep .ps__rail-y:hover,\\n:host ::ng-deep .ps__rail-y:focus,\\n:host ::ng-deep .ps__rail-y.ps--clicking,\\n:host ::ng-deep .ps__rail-y:hover > .ps__thumb-y,\\n:host ::ng-deep .ps__rail-y:focus > .ps__thumb-y,\\n:host ::ng-deep .ps__rail-y.ps--clicking > .ps__thumb-y {\\n width: 0.375rem;\\n}\\n\\n.material-style :host ::ng-deep .ps__rail-x:hover,\\n.material-style :host ::ng-deep .ps__rail-y:hover,\\n.material-style :host ::ng-deep .ps__rail-x:focus,\\n.material-style :host ::ng-deep .ps__rail-y:focus,\\n.material-style :host ::ng-deep .ps__rail-x.ps--clicking,\\n.material-style :host ::ng-deep .ps__rail-y.ps--clicking {\\n background-color: rgba(24, 28, 33, 0.1);\\n}\\n\\n.material-style :host ::ng-deep .ps__thumb-x,\\n.material-style :host ::ng-deep .ps__thumb-y {\\n background-color: rgba(24, 28, 33, 0.3);\\n}\\n\\n.material-style :host ::ng-deep .ps__rail-x:hover > .ps__thumb-x,\\n.material-style :host ::ng-deep .ps__rail-y:hover > .ps__thumb-y,\\n.material-style :host ::ng-deep .ps__rail-x:focus > .ps__thumb-x,\\n.material-style :host ::ng-deep .ps__rail-y:focus > .ps__thumb-y,\\n.material-style :host ::ng-deep .ps__rail-x.ps--clicking > .ps__thumb-x,\\n.material-style :host ::ng-deep .ps__rail-y.ps--clicking > .ps__thumb-y {\\n background-color: rgba(24, 28, 33, 0.6);\\n}\\n\\n.material-style :host ::ng-deep .ps-inverted .ps__rail-x:hover,\\n.material-style :host ::ng-deep .ps-inverted .ps__rail-y:hover,\\n.material-style :host ::ng-deep .ps-inverted .ps__rail-x:focus,\\n.material-style :host ::ng-deep .ps-inverted .ps__rail-y:focus,\\n.material-style :host ::ng-deep .ps-inverted .ps__rail-x.ps--clicking,\\n.material-style :host ::ng-deep .ps-inverted .ps__rail-y.ps--clicking {\\n background-color: rgba(255, 255, 255, 0.5);\\n}\\n\\n.material-style :host ::ng-deep .ps-inverted .ps__thumb-x,\\n.material-style :host ::ng-deep .ps-inverted .ps__thumb-y {\\n background-color: rgba(255, 255, 255, 0.7);\\n}\\n\\n.material-style :host ::ng-deep .ps-inverted .ps__rail-x:hover > .ps__thumb-x,\\n.material-style :host ::ng-deep .ps-inverted .ps__rail-y:hover > .ps__thumb-y,\\n.material-style :host ::ng-deep .ps-inverted .ps__rail-x:focus > .ps__thumb-x,\\n.material-style :host ::ng-deep .ps-inverted .ps__rail-y:focus > .ps__thumb-y,\\n.material-style :host ::ng-deep .ps-inverted .ps__rail-x.ps--clicking > .ps__thumb-x,\\n.material-style :host ::ng-deep .ps-inverted .ps__rail-y.ps--clicking > .ps__thumb-y {\\n background-color: #fff;\\n}\\n\";","import { Component, Input, HostBinding } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'sidenav-link', // tslint:disable-line\r\n template: `\r\n\r\n \r\n
          \r\n
          {{badge}}
          \r\n
          \r\n `\r\n})\r\nexport class SidenavLinkComponent {\r\n @HostBinding('class.sidenav-item') hostClassMain = true;\r\n @HostBinding('class.d-block') hostClassBlock = true;\r\n\r\n @Input() href: string;\r\n @Input() icon: string;\r\n @Input() target = '_self';\r\n @Input() linkClass = '';\r\n @Input() badge: any = null;\r\n @Input() badgeClass = '';\r\n @Input() @HostBinding('class.disabled') disabled = false;\r\n @Input() @HostBinding('class.active') active = false;\r\n}\r\n","import { Component, Input, HostBinding } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'sidenav-router-link', // tslint:disable-line\r\n template: `\r\n\r\n \r\n
          \r\n
          {{badge}}
          \r\n\r\n `\r\n})\r\nexport class SidenavRouterLinkComponent {\r\n @HostBinding('class.sidenav-item') hostClassMain = true;\r\n @HostBinding('class.d-block') hostClassBlock = true;\r\n\r\n @Input() icon: string;\r\n @Input() linkClass = '';\r\n @Input() badge: any = null;\r\n @Input() badgeClass = '';\r\n @Input() @HostBinding('class.disabled') disabled = false;\r\n @Input() @HostBinding('class.active') active = false;\r\n\r\n @Input() route: any[] | string;\r\n @Input() queryParams: object;\r\n @Input() fragment: string;\r\n @Input() queryParamsHandling: any;\r\n @Input() preserveFragment: boolean;\r\n @Input() skipLocationChange: boolean;\r\n @Input() replaceUrl: boolean;\r\n}\r\n","import { Component, ElementRef, HostBinding, Input } from '@angular/core';\r\nimport { Router } from \"@angular/router\";\r\n\r\n@Component({\r\n selector: 'sidenav-menu', // tslint:disable-line\r\n template: `\r\n\r\n \r\n
          \r\n
          {{badge}}
          \r\n
          \r\n
          \r\n \r\n
          \r\n `\r\n})\r\nexport class SidenavMenuComponent\r\n{\r\n @HostBinding('class.sidenav-item') hostClassMain = true;\r\n @HostBinding('class.d-block') hostClassBlock = true;\r\n\r\n @Input() text: string;\r\n @Input() icon: string;\r\n @Input() linkClass = '';\r\n @Input() badge: any = null;\r\n @Input() badgeClass = '';\r\n @Input() @HostBinding('class.disabled') disabled = false;\r\n @Input() @HostBinding('class.active') active = false;\r\n @Input() @HostBinding('class.open') open = false;\r\n\r\n constructor(private router: Router, private el: ElementRef)\r\n {\r\n }\r\n\r\n public isActive(): boolean\r\n {\r\n let me = this.el.nativeElement;\r\n let kids = me.querySelectorAll(\"sidenav-router-link\");\r\n\r\n for (let item of kids)\r\n {\r\n let path = item.getAttribute(\"route\");\r\n\r\n if (item.pathname != \"/\" && this.router.isActive(path, false))\r\n {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n}","import { Component, HostBinding } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'sidenav-block', // tslint:disable-line\r\n template: `\r\n \r\n `\r\n})\r\nexport class SidenavBlockComponent {\r\n @HostBinding('class.sidenav-block') hostClassMain = true;\r\n @HostBinding('class.d-block') hostClassBlock = true;\r\n}\r\n","import { Component, HostBinding } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'sidenav-divider', // tslint:disable-line\r\n template: ''\r\n})\r\nexport class SidenavDividerComponent {\r\n @HostBinding('class.sidenav-divider') hostClassMain = true;\r\n @HostBinding('class.d-block') hostClassBlock = true;\r\n}\r\n","import { Component, HostBinding } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'sidenav-header', // tslint:disable-line\r\n template: `\r\n \r\n `\r\n})\r\nexport class SidenavHeaderComponent {\r\n @HostBinding('class.sidenav-header') hostClassMain = true;\r\n @HostBinding('class.d-block') hostClassBlock = true;\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { RouterModule } from '@angular/router';\r\nimport { SidenavComponent } from './sidenav.component';\r\nimport { SidenavLinkComponent } from './sidenav-link.component';\r\nimport { SidenavRouterLinkComponent } from './sidenav-router-link.component';\r\nimport { SidenavMenuComponent } from './sidenav-menu.component';\r\nimport { SidenavBlockComponent } from './sidenav-block.component';\r\nimport { SidenavDividerComponent } from './sidenav-divider.component';\r\nimport { SidenavHeaderComponent } from './sidenav-header.component';\r\n\r\n@NgModule({\r\n imports: [ CommonModule, RouterModule ],\r\n declarations: [\r\n SidenavComponent,\r\n SidenavLinkComponent,\r\n SidenavRouterLinkComponent,\r\n SidenavMenuComponent,\r\n SidenavBlockComponent,\r\n SidenavDividerComponent,\r\n SidenavHeaderComponent\r\n ],\r\n exports: [\r\n SidenavComponent,\r\n SidenavLinkComponent,\r\n SidenavRouterLinkComponent,\r\n SidenavMenuComponent,\r\n SidenavBlockComponent,\r\n SidenavDividerComponent,\r\n SidenavHeaderComponent\r\n ]\r\n})\r\nexport class SidenavModule { }\r\n","import { Component, AfterViewInit, OnDestroy } from '@angular/core';\r\nimport { LayoutService } from '../layout.service';\r\n\r\n@Component({\r\n selector: 'app-layout-1-flex',\r\n templateUrl: './layout-1-flex.component.html',\r\n styles: [':host { display: block; }', ':host ::ng-deep .layout-loading .sidenav-link { transition: none !important; }']\r\n})\r\nexport class Layout1FlexComponent implements AfterViewInit, OnDestroy {\r\n // Prevent \"blink\" effect\r\n public initialized = false;\r\n\r\n constructor(private layoutService: LayoutService) {}\r\n\r\n ngAfterViewInit() {\r\n setTimeout(() => {\r\n this.initialized = true;\r\n\r\n this.layoutService.init();\r\n this.layoutService.update();\r\n this.layoutService.setAutoUpdate(true);\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n setTimeout(() => {\r\n this.layoutService.destroy();\r\n });\r\n }\r\n\r\n closeSidenav() {\r\n setTimeout(() => {\r\n this.layoutService.setCollapsed(true);\r\n });\r\n }\r\n}\r\n","export default \"
          \\r\\n
          \\r\\n \\r\\n\\r\\n
          \\r\\n \\r\\n\\r\\n
          \\r\\n
          \\r\\n \\r\\n
          \\r\\n\\r\\n \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n\";","import { Component, AfterViewInit, OnDestroy } from '@angular/core';\r\nimport { LayoutService } from '../layout.service';\r\n\r\n@Component({\r\n selector: 'app-layout-2-flex',\r\n templateUrl: './layout-2-flex.component.html',\r\n styles: [':host { display: block; }', ':host ::ng-deep .layout-loading .sidenav-link { transition: none !important; }']\r\n})\r\nexport class Layout2FlexComponent implements AfterViewInit, OnDestroy {\r\n // Prevent \"blink\" effect\r\n public initialized = false;\r\n\r\n constructor(private layoutService: LayoutService) {}\r\n\r\n ngAfterViewInit() {\r\n setTimeout(() => {\r\n this.initialized = true;\r\n\r\n this.layoutService.init();\r\n this.layoutService.update();\r\n this.layoutService.setAutoUpdate(true);\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n setTimeout(() => {\r\n this.layoutService.destroy();\r\n });\r\n }\r\n\r\n closeSidenav() {\r\n setTimeout(() => {\r\n this.layoutService.setCollapsed(true);\r\n });\r\n }\r\n}\r\n","export default \"
          \\r\\n
          \\r\\n \\r\\n\\r\\n
          \\r\\n \\r\\n\\r\\n
          \\r\\n
          \\r\\n \\r\\n
          \\r\\n\\r\\n \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n\";","import { Component, AfterViewInit, OnDestroy } from '@angular/core';\r\nimport { LayoutService } from '../layout.service';\r\n\r\n@Component({\r\n selector: 'app-layout-2',\r\n templateUrl: './layout-2.component.html',\r\n styles: [':host { display: block; }', ':host ::ng-deep .layout-loading .sidenav-link { transition: none !important; }']\r\n})\r\nexport class Layout2Component implements AfterViewInit, OnDestroy {\r\n // Prevent \"blink\" effect\r\n public initialized = false;\r\n\r\n constructor(private layoutService: LayoutService) {}\r\n\r\n ngAfterViewInit() {\r\n setTimeout(() => {\r\n this.initialized = true;\r\n\r\n this.layoutService.init();\r\n this.layoutService.update();\r\n this.layoutService.setAutoUpdate(true);\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n setTimeout(() => {\r\n this.layoutService.destroy();\r\n });\r\n }\r\n\r\n closeSidenav() {\r\n setTimeout(() => {\r\n this.layoutService.setCollapsed(true);\r\n });\r\n }\r\n}\r\n","export default \"
          \\r\\n
          \\r\\n \\r\\n
          \\r\\n \\r\\n
          \\r\\n
          \\r\\n \\r\\n
          \\r\\n \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \";","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-layout-blank',\r\n templateUrl: './layout-blank.component.html',\r\n styles: [':host { display: block; }']\r\n})\r\nexport class LayoutBlankComponent {}\r\n","export default \"
          \\r\\n \\r\\n
          \\r\\n\";","import { Component, HostBinding, OnInit, ViewChild } from \"@angular/core\";\r\nimport { AppService } from \"@app/app.service\";\r\nimport { AuthService, Profile } from \"@app/data\";\r\nimport { PrivacyPolicyComponent } from \"@app/shared/privacy-policy/privacy-policy.component\";\r\nimport { PurchaserTermsComponent } from \"@app/shared/purchaser-terms/purchaser-terms.component\";\r\n\r\n@Component({\r\n styles: [\":host { display: block; }\"],\r\n selector: \"app-layout-footer\",\r\n templateUrl: \"./layout-footer.component.html\"\r\n})\r\nexport class LayoutFooterComponent implements OnInit\r\n{\r\n @ViewChild(\"dialogTerms\")\r\n dialogTerms: PurchaserTermsComponent;\r\n\r\n @ViewChild(\"dialogPolicy\")\r\n dialogPolicy: PrivacyPolicyComponent;\r\n\r\n\r\n @HostBinding(\"class.layout-footer\")\r\n hostClassMain = true;\r\n\r\n public currYear;\r\n public myProfile: Profile;\r\n\r\n constructor(\r\n private appService: AppService,\r\n private authService: AuthService)\r\n {\r\n this.currYear = new Date().getFullYear();\r\n }\r\n\r\n async ngOnInit()\r\n {\r\n this.myProfile = await this.authService.getProfile$().toPromise();\r\n }\r\n\r\n currentBg()\r\n {\r\n return `bg-${this.appService.layoutFooterBg}`;\r\n }\r\n\r\n public onTerms()\r\n {\r\n this.dialogTerms.open();\r\n }\r\n\r\n public onPolicy()\r\n {\r\n this.dialogPolicy.open();\r\n }\r\n}","export default \"\\r\\n\\r\\n\";","import { Component, AfterViewInit, OnDestroy } from '@angular/core';\r\nimport { LayoutService } from '../layout.service';\r\n\r\n@Component({\r\n selector: 'app-layout-horizontal-sidenav',\r\n templateUrl: './layout-horizontal-sidenav.component.html',\r\n styles: [':host { display: block; }', ':host ::ng-deep .layout-loading .sidenav-link { transition: none !important; }']\r\n})\r\nexport class LayoutHorizontalSidenavComponent implements AfterViewInit, OnDestroy {\r\n // Prevent \"blink\" effect\r\n public initialized = false;\r\n\r\n constructor(private layoutService: LayoutService) {}\r\n\r\n ngAfterViewInit() {\r\n setTimeout(() => {\r\n this.initialized = true;\r\n\r\n // Enshure that we have not '.layout-expanded' class on the html element\r\n this.layoutService._removeClass('layout-expanded');\r\n\r\n this.layoutService.init();\r\n this.layoutService.update();\r\n this.layoutService.setAutoUpdate(true);\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n setTimeout(() => {\r\n this.layoutService.destroy();\r\n });\r\n }\r\n}\r\n","export default \"
          \\r\\n
          \\r\\n \\r\\n
          \\r\\n
          \\r\\n \\r\\n
          \\r\\n \\r\\n
          \\r\\n \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \";","import { Component, HostBinding, Input, OnInit } from \"@angular/core\";\r\nimport { Router } from \"@angular/router\";\r\nimport { AppService } from \"@app/app.service\";\r\nimport { AuthService, Profile, ProfileService, ProfileType } from \"@app/data\";\r\nimport { LayoutService } from \"@app/layout/layout.service\";\r\nimport { CommonSettings } from '@app/shared/common-settings';\r\nimport { GlobalIcons } from \"@app/shared/GlobalIcons\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\n\r\n@Component({\r\n selector: \"app-layout-navbar\",\r\n styles: [\":host { display: block; }\"],\r\n styleUrls: [\"./layout-navbar.component.scss\", \"../../shared/styles/testmode.scss\"],\r\n templateUrl: \"./layout-navbar.component.html\"\r\n})\r\nexport class LayoutNavbarComponent implements OnInit\r\n{\r\n @Input()\r\n sidenavToggle = true;\r\n\r\n @HostBinding(\"class.layout-navbar\") hostClassMain = true;\r\n\r\n public readonly Icons = GlobalIcons;\r\n public readonly ProfileTypes = ProfileType;\r\n\r\n public isRTL: boolean;\r\n public myProfile: Profile;\r\n public isExpanded = false;\r\n public profileURL;\r\n\r\n constructor(\r\n public authService: AuthService,\r\n private router: Router,\r\n private appService: AppService,\r\n private toastrService: ToastrService,\r\n private layoutService: LayoutService,\r\n private profileService: ProfileService)\r\n {\r\n this.isRTL = appService.isRTL;\r\n }\r\n\r\n async ngOnInit()\r\n {\r\n this.myProfile = await this.authService.getProfile$().toPromise();\r\n\r\n if (this.myProfile.profileType == this.ProfileTypes.purchaser)\r\n {\r\n this.profileURL = \"profile\";\r\n }\r\n else\r\n {\r\n this.profileURL = \"mydashboard/\" + CommonSettings.DashboardTab_Profile;\r\n }\r\n }\r\n\r\n currentBg()\r\n {\r\n return `bg-${this.appService.layoutNavbarBg}`;\r\n }\r\n\r\n toggleSidenav()\r\n {\r\n this.layoutService.toggleCollapsed();\r\n }\r\n\r\n info(message, title?: string)\r\n {\r\n this.toastrService.info(message, title, CommonSettings.ToastOptions);\r\n }\r\n\r\n error(message, title?: string)\r\n {\r\n this.toastrService.error(message, title, CommonSettings.ToastOptions);\r\n }\r\n\r\n changePassword()\r\n {\r\n this.profileService.resetPassword(this.myProfile).subscribe(\r\n retRes =>\r\n {\r\n this.info(`An email has been sent to ${this.myProfile.emailAddress} with instructions on how to reset your password.`)\r\n },\r\n errRes => this.error(errRes));\r\n }\r\n\r\n public onTestModeToggle()\r\n {\r\n this.myProfile.isTestMode = !this.myProfile.isTestMode;\r\n\r\n this.profileService.get(`testmode/${this.myProfile.uid}/${this.myProfile.isTestMode}`).subscribe(\r\n retRes => this.toggleDone(),\r\n errRes => this.error(errRes));\r\n }\r\n\r\n private toggleDone()\r\n {\r\n if (window.location.pathname.indexOf(\"/admin/purchasers\") == -1)\r\n {\r\n return;\r\n }\r\n\r\n this.router.routeReuseStrategy.shouldReuseRoute = () => false;\r\n this.router.onSameUrlNavigation = \"reload\";\r\n\r\n this.router.navigate([\"/admin/purchasers\"]);\r\n }\r\n}","export default \"\";","export default \".menu-link {\\n color: #0074BA;\\n}\\n\\n.menu-link:hover {\\n color: #fff;\\n background-color: #0074BA;\\n}\\n\\n.logout {\\n color: #600;\\n}\\n\\n.logout:hover {\\n color: #fff;\\n background-color: #600;\\n}\\n\";","import { Component, HostBinding, Input, ViewChild } from \"@angular/core\";\r\nimport { Router } from \"@angular/router\";\r\nimport { AppService } from \"@app/app.service\";\r\nimport { AuthService, PurchaserType, StatusType } from \"@app/data\";\r\nimport { ProfileType } from \"@app/data/enums/profile-type.enum\";\r\nimport { LayoutService } from \"@app/layout/layout.service\";\r\nimport { FeedbackDialog } from \"@app/shared/feedback/feedback-dialog/feedback-dialog\";\r\nimport { GlobalIcons } from '@app/shared/GlobalIcons';\r\nimport { SidenavMenuComponent } from \"src/vendor/libs/sidenav/sidenav-menu.component\";\r\n\r\n@Component({\r\n selector: \"app-layout-sidenav\",\r\n styleUrls: [\"./layout-sidenav.component.scss\"],\r\n templateUrl: \"./layout-sidenav.component.html\"\r\n})\r\nexport class LayoutSidenavComponent\r\n{\r\n @ViewChild(\"menuMain\")\r\n menuMain;\r\n\r\n @ViewChild(\"dailogFeedback\")\r\n dailogFeedback: FeedbackDialog;\r\n\r\n @Input()\r\n orientation = \"vertical\";\r\n\r\n @HostBinding(\"class.flex-grow-0\") hostClassFlex = false;\r\n @HostBinding(\"class.layout-sidenav\") hostClassVertical = false;\r\n @HostBinding(\"class.layout-sidenav-horizontal\") hostClassHorizontal = false;\r\n\r\n public readonly Icons = GlobalIcons;\r\n public readonly statusTypes = StatusType;\r\n public readonly profileTypes = ProfileType;\r\n public readonly purchaserTypes = PurchaserType;\r\n\r\n public isDealer: boolean;\r\n public userRole: number;\r\n public showDealers: boolean;\r\n public purchaserType: number;\r\n public purchaserStatusType: number;\r\n\r\n private checkedMenus = [];\r\n\r\n constructor(private router: Router, private appService: AppService, private layoutService: LayoutService, private authService: AuthService)\r\n {\r\n // Set host classes\r\n this.hostClassVertical = this.orientation !== \"horizontal\";\r\n this.hostClassHorizontal = !this.hostClassVertical;\r\n this.hostClassFlex = this.hostClassHorizontal;\r\n\r\n this.isDealer = this.authService.profile?.purchaser?.isDealer;\r\n this.userRole = this.authService.profile?.profileType;\r\n this.showDealers = this.authService.profile?.isLocalDealerShown;\r\n this.purchaserType = this.authService.profile?.purchaser?.purchaserType;\r\n this.purchaserStatusType = this.authService.profile?.purchaser?.statusType;\r\n\r\n if (!this.userRole)\r\n {\r\n this.authService.getProfile$().subscribe((response) =>\r\n {\r\n this.userRole = this.authService.profile?.profileType;\r\n this.purchaserStatusType = this.authService.profile?.purchaser?.statusType;\r\n this.purchaserType = this.authService.profile?.purchaser?.purchaserType;\r\n });\r\n }\r\n\r\n this.authService.profileInfo$.subscribe((value) =>\r\n {\r\n this.purchaserStatusType = this.authService.profile?.purchaser?.statusType;\r\n });\r\n }\r\n\r\n public getClasses()\r\n {\r\n let bg = this.appService.layoutSidenavBg;\r\n\r\n if (this.orientation === \"horizontal\" && (bg.indexOf(\" sidenav-dark\") !== -1 || bg.indexOf(\" sidenav-light\") !== -1))\r\n {\r\n bg = bg\r\n .replace(\" sidenav-dark\", \"\")\r\n .replace(\" sidenav-light\", \"\")\r\n .replace(\"-darker\", \"\")\r\n .replace(\"-dark\", \"\");\r\n }\r\n\r\n return `${this.orientation === \"horizontal\" ? \"container-p-x \" : \"\"} bg-${bg}`;\r\n }\r\n\r\n public isActive(url): boolean\r\n {\r\n if (url instanceof Array)\r\n {\r\n for (let item of url)\r\n {\r\n if (this.router.isActive(item, false))\r\n {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n return this.router.isActive(url, false);\r\n }\r\n\r\n // Using the checkedMenus array to store what has been checked, this prevents the \"NG0100: Expression has changed after it was checked\" error\r\n public isMenuOpen(menuItem: SidenavMenuComponent): boolean\r\n {\r\n let item = this.checkedMenus.find(elm => elm.text == menuItem.text);\r\n\r\n if ( item)\r\n {\r\n return item.active;\r\n }\r\n\r\n let act = menuItem.isActive();\r\n\r\n this.checkedMenus.push({ text: menuItem.text, active: act });\r\n\r\n return act;\r\n }\r\n\r\n public onFeedback(): void\r\n {\r\n this.dailogFeedback.openAdd();\r\n }\r\n}","export default \"\\r\\n \\r\\n
          \\r\\n Dashboard\\r\\n Invite AEP Admin\\r\\n PROFILE\\r\\n My Profile\\r\\n Orders\\r\\n
          \\r\\n\\r\\n \\r\\n
          \\r\\n Dashboard\\r\\n \\r\\n Orders\\r\\n Reports\\r\\n Notification Requests\\r\\n \\r\\n Merchants\\r\\n \\r\\n Purchasers\\r\\n DealerConnect\\r\\n \\r\\n \\r\\n Products\\r\\n Searches\\r\\n Link Validation\\r\\n \\r\\n Freight Forwarders & Customs Brokers\\r\\n \\r\\n Manual\\r\\n Release Notes\\r\\n \\r\\n\\r\\n SETUP\\r\\n\\r\\n \\r\\n FAQ's\\r\\n Billing\\r\\n KeyMaster Processes\\r\\n Feedback\\r\\n LVS Override\\r\\n Manual\\r\\n Release Notes\\r\\n Auto Assigned Tasks\\r\\n \\r\\n\\r\\n \\r\\n Licenses\\r\\n Templates\\r\\n \\r\\n\\r\\n \\r\\n Country Export Control\\r\\n Product Export\\r\\n Product Import\\r\\n Order to License\\r\\n ScheduleB\\r\\n \\r\\n\\r\\n Misc\\r\\n Merchant Search\\r\\n Dealers\\r\\n
          \\r\\n\\r\\n \\r\\n
          \\r\\n Dashboard\\r\\n \\r\\n Orders\\r\\n Reports\\r\\n Notification Requests\\r\\n \\r\\n \\r\\n Products\\r\\n \\r\\n Link Validation\\r\\n \\r\\n Billing\\r\\n Freight Forwarders\\r\\n DealerConnect\\r\\n \\r\\n FAQ's\\r\\n Manual\\r\\n Release Notes\\r\\n \\r\\n Profile\\r\\n My Organization\\r\\n Misc\\r\\n Feedback\\r\\n
          \\r\\n\\r\\n \\r\\n
          \\r\\n Dashboard\\r\\n Orders\\r\\n \\r\\n FAQ's\\r\\n Manual\\r\\n Release Notes\\r\\n \\r\\n Profile\\r\\n My Organization\\r\\n Misc\\r\\n Feedback\\r\\n
          \\r\\n\\r\\n \\r\\n
          \\r\\n Account Setup\\r\\n
          \\r\\n\\r\\n \\r\\n
          \\r\\n Orders\\r\\n My Documents\\r\\n My Profile\\r\\n Merchant Search\\r\\n Local Dealers\\r\\n Apply for Trade Relationships\\r\\n \\r\\n \\r\\n FAQ's\\r\\n Manual\\r\\n Release Notes\\r\\n \\r\\n Misc\\r\\n Feedback\\r\\n
          \\r\\n
          \\r\\n\";","export default \":host {\\n display: block;\\n}\\n\\n.divider {\\n background-color: #343c44;\\n}\\n\";","import { Component, AfterViewInit, OnDestroy } from '@angular/core';\r\nimport { LayoutService } from '../layout.service';\r\n\r\n@Component({\r\n selector: 'app-layout-without-navbar-flex',\r\n templateUrl: './layout-without-navbar-flex.component.html',\r\n styles: [':host { display: block; }', ':host ::ng-deep .layout-loading .sidenav-link { transition: none !important; }']\r\n})\r\nexport class LayoutWithoutNavbarFlexComponent implements AfterViewInit, OnDestroy {\r\n // Prevent \"blink\" effect\r\n public initialized = false;\r\n\r\n constructor(private layoutService: LayoutService) {}\r\n\r\n ngAfterViewInit() {\r\n setTimeout(() => {\r\n this.initialized = true;\r\n\r\n this.layoutService.init();\r\n this.layoutService.update();\r\n this.layoutService.setAutoUpdate(true);\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n setTimeout(() => {\r\n this.layoutService.destroy();\r\n });\r\n }\r\n\r\n closeSidenav() {\r\n setTimeout(() => {\r\n this.layoutService.setCollapsed(true);\r\n });\r\n }\r\n}\r\n","export default \"
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n\\r\\n
          \\r\\n
          \\r\\n \\r\\n
          \\r\\n\\r\\n \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n\";","import { Component, AfterViewInit, OnDestroy } from '@angular/core';\r\nimport { LayoutService } from '../layout.service';\r\n\r\n@Component({\r\n selector: 'app-layout-without-navbar',\r\n templateUrl: './layout-without-navbar.component.html',\r\n styles: [':host { display: block; }', ':host ::ng-deep .layout-loading .sidenav-link { transition: none !important; }']\r\n})\r\nexport class LayoutWithoutNavbarComponent implements AfterViewInit, OnDestroy {\r\n // Prevent \"blink\" effect\r\n public initialized = false;\r\n\r\n constructor(private layoutService: LayoutService) {}\r\n\r\n ngAfterViewInit() {\r\n setTimeout(() => {\r\n this.initialized = true;\r\n\r\n this.layoutService.init();\r\n this.layoutService.update();\r\n this.layoutService.setAutoUpdate(true);\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n setTimeout(() => {\r\n this.layoutService.destroy();\r\n });\r\n }\r\n\r\n closeSidenav() {\r\n setTimeout(() => {\r\n this.layoutService.setCollapsed(true);\r\n });\r\n }\r\n}\r\n","export default \"
          \\r\\n
          \\r\\n
          \\r\\n \\r\\n
          \\r\\n
          \\r\\n \\r\\n
          \\r\\n \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \";","import { Component, AfterViewInit, OnDestroy } from '@angular/core';\r\nimport { LayoutService } from '../layout.service';\r\n\r\n@Component({\r\n selector: 'app-layout-without-sidenav',\r\n templateUrl: './layout-without-sidenav.component.html',\r\n styles: [':host { display: block; }']\r\n})\r\nexport class LayoutWithoutSidenavComponent implements AfterViewInit, OnDestroy {\r\n // Prevent \"blink\" effect\r\n public initialized = false;\r\n\r\n constructor(private layoutService: LayoutService) {}\r\n\r\n ngAfterViewInit() {\r\n setTimeout(() => {\r\n this.initialized = true;\r\n\r\n // Enshure that we have not '.layout-expanded' class on the html element\r\n this.layoutService._removeClass('layout-expanded');\r\n\r\n this.layoutService.init();\r\n this.layoutService.update();\r\n this.layoutService.setAutoUpdate(true);\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n setTimeout(() => {\r\n this.layoutService.destroy();\r\n });\r\n }\r\n}\r\n","export default \"
          \\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 { DragDropModule } from \"@angular/cdk/drag-drop\";\r\nimport { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { RouterModule } from '@angular/router';\r\nimport { SharedModule } from '@app/shared/shared.module';\r\n\r\n// *******************************************************************************\r\n// Libs\r\nimport { NgbModule } from '@ng-bootstrap/ng-bootstrap';\r\nimport { SidenavModule } from '../../vendor/libs/sidenav/sidenav.module';\r\nimport { Layout1FlexComponent } from './layout-1-flex/layout-1-flex.component';\r\n\r\n// *******************************************************************************\r\n// Layouts\r\nimport { Layout1Component } from './layout-1/layout-1.component';\r\nimport { Layout2FlexComponent } from './layout-2-flex/layout-2-flex.component';\r\nimport { Layout2Component } from './layout-2/layout-2.component';\r\nimport { LayoutBlankComponent } from './layout-blank/layout-blank.component';\r\nimport { LayoutFooterComponent } from './layout-footer/layout-footer.component';\r\nimport { LayoutHorizontalSidenavComponent } from './layout-horizontal-sidenav/layout-horizontal-sidenav.component';\r\n\r\n// *******************************************************************************\r\n// Components\r\nimport { LayoutNavbarComponent } from './layout-navbar/layout-navbar.component';\r\nimport { LayoutSidenavComponent } from './layout-sidenav/layout-sidenav.component';\r\nimport { LayoutWithoutNavbarFlexComponent } from './layout-without-navbar-flex/layout-without-navbar-flex.component';\r\nimport { LayoutWithoutNavbarComponent } from './layout-without-navbar/layout-without-navbar.component';\r\nimport { LayoutWithoutSidenavComponent } from './layout-without-sidenav/layout-without-sidenav.component';\r\n\r\n// *******************************************************************************\r\n// Services\r\nimport { LayoutService } from './layout.service';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n RouterModule,\r\n NgbModule,\r\n SidenavModule,\r\n DragDropModule,\r\n SharedModule\r\n ],\r\n declarations: [\r\n Layout1Component,\r\n Layout1FlexComponent,\r\n Layout2Component,\r\n Layout2FlexComponent,\r\n LayoutWithoutNavbarComponent,\r\n LayoutWithoutNavbarFlexComponent,\r\n LayoutWithoutSidenavComponent,\r\n LayoutHorizontalSidenavComponent,\r\n LayoutBlankComponent,\r\n LayoutNavbarComponent,\r\n LayoutSidenavComponent,\r\n LayoutFooterComponent\r\n ],\r\n providers: [\r\n LayoutService\r\n ]\r\n})\r\nexport class LayoutModule { }","import { HttpResponse } from \"@angular/common/http\";\r\nimport { Component, Input } from \"@angular/core\";\r\nimport { DomSanitizer } from \"@angular/platform-browser\";\r\nimport { GlobalIcons } from \"@app/shared/GlobalIcons\";\r\nimport { NgbActiveModal } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { FileSaverService } from \"ngx-filesaver\";\r\n\r\n@Component({\r\n selector: \"document-preview\",\r\n styleUrls: [\"./document-preview.component.scss\"],\r\n templateUrl: \"./document-preview.component.html\"\r\n})\r\nexport class DocumentPreviewComponent\r\n{\r\n @Input()\r\n title: string;\r\n\r\n @Input()\r\n fileLink: string;\r\n\r\n public set setPDF(val)\r\n {\r\n this.popPDF(val);\r\n }\r\n\r\n public set setError(val)\r\n {\r\n this.popError(val);\r\n }\r\n\r\n public readonly Icons = GlobalIcons;\r\n\r\n public loading: boolean = true;\r\n public zoomLevel: number = 1;\r\n public sourcePDF: any;\r\n public sourceImage: any;\r\n public errorMessage: string = null;\r\n\r\n constructor(private activeModal: NgbActiveModal, private sanitizer: DomSanitizer)\r\n {\r\n }\r\n\r\n public onClose(): void\r\n {\r\n this.activeModal.close(false);\r\n }\r\n\r\n private async popPDF(val)\r\n {\r\n let testVal: any;\r\n\r\n if (val instanceof HttpResponse)\r\n {\r\n testVal = val.body;\r\n }\r\n else\r\n {\r\n testVal = val;\r\n }\r\n\r\n let blob = new Blob([testVal], { type: 'application/pdf' })\r\n let objURL = URL.createObjectURL(blob);\r\n let imgSafe = this.sanitizer.bypassSecurityTrustResourceUrl(objURL);\r\n\r\n this.loading = false;\r\n this.sourcePDF = imgSafe;\r\n }\r\n\r\n private popImage(val): void\r\n {\r\n let objURL = URL.createObjectURL(val.body);\r\n let imgSafe = this.sanitizer.bypassSecurityTrustUrl(objURL);\r\n\r\n this.loading = false;\r\n this.sourceImage = imgSafe;\r\n }\r\n\r\n private popError(val): void\r\n {\r\n if (val instanceof Blob)\r\n {\r\n let reader: FileReader = new FileReader();\r\n\r\n reader.onload = (retRes) => this.errorMessage = retRes.target.result.toString();\r\n reader.readAsText(val);\r\n }\r\n else\r\n {\r\n this.errorMessage = val;\r\n }\r\n\r\n this.loading = false;\r\n }\r\n}","export default \"
          \\r\\n

          {{ title }}

          \\r\\n \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n
          \\r\\n Loading...\\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
          \";","export default \"::ng-deep .slider-wrapper .ngx-slider {\\n width: 12rem;\\n margin-left: 1rem;\\n}\\n\\n::ng-deep .slider-wrapper .ngx-slider .ngx-slider-bar {\\n height: .1rem;\\n background: #0074BA;\\n}\\n\\n::ng-deep .slider-wrapper .ngx-slider .ngx-slider-selection {\\n background: #0074BA;\\n}\\n\\n::ng-deep .slider-wrapper .ngx-slider .ngx-slider-pointer {\\n top: auto;\\n /* to remove the default positioning */\\n width: .75rem;\\n height: 1.25rem;\\n bottom: 0;\\n border: 1px solid;\\n background-color: #0074BA;\\n border-top-left-radius: 3px;\\n border-top-right-radius: 3px;\\n}\\n\\n::ng-deep .slider-wrapper .ngx-slider .ngx-slider-pointer:after {\\n display: none;\\n}\\n\\n::ng-deep .slider-wrapper .ngx-slider .ngx-slider-bubble {\\n bottom: 1rem;\\n}\\n\\n::ng-deep .slider-wrapper .ngx-slider .ngx-slider-model-value {\\n font-size: .75rem;\\n}\\n\\n::ng-deep .slider-wrapper .ngx-slider .ngx-slider-limit {\\n font-size: .75rem;\\n font-weight: bold;\\n}\\n\\n::ng-deep .slider-wrapper .ngx-slider .ngx-slider-tick {\\n top: -1px;\\n width: 1px;\\n height: 1rem;\\n background: #0074BA;\\n margin-left: .25rem;\\n border-radius: 0;\\n}\\n\\niframe {\\n width: 100%;\\n height: 99%;\\n}\\n\\n.preview-pdf {\\n width: 100%;\\n height: 40rem;\\n padding: 0rem;\\n}\\n\\n.form-group {\\n margin-bottom: 0rem;\\n}\\n\\n.preview-body {\\n width: 100%;\\n height: calc(95vh - 250px);\\n /* 95% view height minus headers & footers */\\n}\\n\\n.preview-image {\\n margin: 0rem auto;\\n max-height: 40rem;\\n}\\n\\n.preview-error {\\n margin: 1rem;\\n}\\n\\n.toolbar {\\n width: 100%;\\n padding-left: 1rem;\\n border-bottom: 1px solid #ccc;\\n background-color: #eee;\\n}\\n\\n.preview-loading {\\n color: #29a329;\\n height: 10rem;\\n font-size: 2rem;\\n text-align: center;\\n padding-top: 4rem;\\n background-color: #ddd;\\n}\\n\";","import { DragDropModule } from \"@angular/cdk/drag-drop\";\r\nimport { HttpClientModule, HTTP_INTERCEPTORS } from \"@angular/common/http\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\r\nimport { BrowserModule, Title } from \"@angular/platform-browser\";\r\nimport { BrowserAnimationsModule } from \"@angular/platform-browser/animations\";\r\nimport { AuthInterceptor, ErrorInterceptor } from \"@app/data\";\r\nimport { ConfirmationComponent } from \"@app/shared/confirmation/confirmation.component\";\r\nimport { ConfirmationService } from \"@app/shared/confirmation/confirmation.service\";\r\nimport { NgbModule } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport \"ag-grid-enterprise\";\r\nimport { FileSaverModule } from \"ngx-filesaver\";\r\nimport { ToastrModule } from \"ngx-toastr\";\r\nimport { AppRoutingModule } from \"./app-routing.module\";\r\nimport { AppComponent } from \"./app.component\";\r\nimport { AppService } from \"./app.service\";\r\nimport { LayoutModule } from \"./layout/layout.module\";\r\nimport { NotFoundComponent } from \"./not-found/not-found.component\";\r\nimport { DocumentPreviewComponent } from \"./shared/document-preview/document-preview.component\";\r\nimport { DocumentPreviewService } from \"./shared/document-preview/document-preview.service\";\r\nimport { GoogleMapsHelperService } from \"./shared/google-maps/google-maps-helper.service\";\r\nimport { ProductDialogService } from \"./shared/products/product-dialog/product-dialog.service\";\r\n\r\n@NgModule({\r\n declarations:\r\n [\r\n AppComponent,\r\n NotFoundComponent,\r\n ConfirmationComponent,\r\n DocumentPreviewComponent\r\n ],\r\n imports:\r\n [\r\n FormsModule,\r\n BrowserModule,\r\n HttpClientModule,\r\n ReactiveFormsModule,\r\n BrowserAnimationsModule,\r\n\r\n LayoutModule,\r\n AppRoutingModule,\r\n\r\n NgbModule,\r\n DragDropModule,\r\n FileSaverModule,\r\n\r\n ToastrModule.forRoot(\r\n {\r\n toastClass: \"toast\",\r\n newestOnTop: true,\r\n preventDuplicates: true\r\n })\r\n ],\r\n providers:\r\n [\r\n Title,\r\n AppService,\r\n ConfirmationService,\r\n ProductDialogService,\r\n DocumentPreviewService,\r\n GoogleMapsHelperService,\r\n\r\n // Interceptors\r\n { provide: HTTP_INTERCEPTORS, useClass: AuthInterceptor, multi: true },\r\n { provide: HTTP_INTERCEPTORS, useClass: ErrorInterceptor, multi: true },\r\n ],\r\n entryComponents:\r\n [\r\n ConfirmationComponent,\r\n DocumentPreviewComponent\r\n ],\r\n\r\n bootstrap:\r\n [\r\n AppComponent\r\n ]\r\n})\r\nexport class AppModule\r\n{\r\n}","import { enableProdMode } from \"@angular/core\";\r\nimport { platformBrowserDynamic } from \"@angular/platform-browser-dynamic\";\r\nimport { BootstrapModuleFn as Bootstrap } from \"@ngxs/hmr-plugin\";\r\nimport { AppModule } from \"./app/app.module\";\r\nimport { environment } from \"./environments/environment\";\r\nimport { LicenseManager } from \"ag-grid-enterprise\";\r\n\r\nif (environment.production)\r\n{\r\n enableProdMode();\r\n}\r\n\r\nconst options = { preserveWhitespaces: false };\r\nconst bootstrap: Bootstrap = () => platformBrowserDynamic().bootstrapModule(AppModule, options);\r\n\r\noptions.preserveWhitespaces = true;\r\nbootstrap().catch(err => console.log(err));\r\n\r\ndeclare module \"@angular/core\"\r\n{\r\n interface ModuleWithProviders\r\n {\r\n ngModule: Type;\r\n providers?: Provider[];\r\n }\r\n}\r\n\r\nLicenseManager.setLicenseKey(\"CompanyName=Automated Export Processing, Inc.,LicensedApplication=EasyExport,LicenseType=SingleApplication,LicensedConcurrentDeveloperCount=1,LicensedProductionInstancesCount=1,AssetReference=AG-034923,SupportServicesEnd=22_December_2023_[v2]_MTcwMzIwMzIwMDAwMA==0257ec30f7c843b4a874b57b9717263e\");","import { Util } from \"@app/utils/util\";\r\n\r\nexport class LicenseCommon\r\n{\r\n public static readonly qaData_Save = 1;\r\n public static readonly qaData_Dirty = 2;\r\n public static readonly qaData_Update = 3;\r\n public static readonly qaData_Release = 4;\r\n\r\n public static LicenseTypes =\r\n [\r\n { id: 1, name: \"EAR\" },\r\n { id: 2, name: \"ITAR\" }\r\n ];\r\n\r\n public static LicenseStatuses =\r\n [\r\n { id: 1, name: \"Active\" },\r\n { id: 2, name: \"Pending\" },\r\n { id: 4, name: \"Complete\" },\r\n { id: 7, name: \"New\" },\r\n { id: 9, name: \"Expired\" },\r\n { id: 10, name: \"Pending Review\" }\r\n ];\r\n\r\n public static getLicenseName(licenseType: number): string\r\n {\r\n let dude = LicenseCommon.LicenseTypes.find(elm => elm.id == licenseType);\r\n\r\n if (Util.isEmpty(dude))\r\n {\r\n return \"\";\r\n }\r\n\r\n return dude.name;\r\n }\r\n}","var map = {\n\t\"./account/account.module\": [\n\t\t\"jcJX\",\n\t\t10\n\t],\n\t\"./admin/admin.module\": [\n\t\t\"jkDv\",\n\t\t1\n\t],\n\t\"./customer/customer.module\": [\n\t\t\"d7gL\",\n\t\t8\n\t],\n\t\"./freight-forwarder/freight-forwarder.module\": [\n\t\t\"2/ca\",\n\t\t9\n\t],\n\t\"./master/master.module\": [\n\t\t\"Nm5a\",\n\t\t11\n\t],\n\t\"./purchaser/purchaser.module\": [\n\t\t\"Z5Va\",\n\t\t1,\n\t\t12\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn Promise.all(ids.slice(1).map(__webpack_require__.e)).then(function() {\n\t\treturn __webpack_require__(id);\n\t});\n}\nwebpackAsyncContext.keys = function webpackAsyncContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackAsyncContext.id = \"zn8P\";\nmodule.exports = webpackAsyncContext;"],"sourceRoot":"webpack:///"}