{"version":3,"sources":["../src/utils/menu-item.controller.abstract.ts","../src/tools.components.ts","../src/administrative/administrative.components.ts","../src/appointment/appointment.components.ts","../src/chat/chat.components.ts","../src/customer/customer.components.ts","../src/dashboard/dashboard.components.ts","../src/dispatch-summary/dispatch-summary.components.ts","../src/forms/form.components.ts","../src/history/history.components.ts","../src/header-messages/header-messages.components.ts","../src/item-management/item-management.components.ts","../src/payment/payment.components.ts","../src/price-guide/price-guide.components.ts","../src/questionnaire/questionnaire.components.ts","../src/template-store/template-store.components.ts","../src/time-event/time-event.components.ts","../src/timeclock/timeclock.components.ts","../src/utils/organization.components.ts","../src/work-order/ng-sort.components.ts","../src/work-order/work-order.components.ts","../src/work-order-template/work-order-template.components.ts","../src/administrative/purchase-order/purchase-order.components.ts","../src/administrative/inventory/inventory.components.ts","../src/administrative/send-invoice/send-invoice.components.ts","../src/administrative/reviews/reviews.components.ts","../src/administrative/tags/tags.components.ts","../src/administrative/vendor-inventory/vendor-inventory.components.ts","../src/administrative/administrative.service.ts","../src/appointment/appointment.service.ts","../src/appointment/selected-appointment.service.ts","../src/authentication/auth-interceptor.service.ts","../src/chat/chat.service.ts","../src/customer/customer.service.ts","../src/customer/selected-customer.service.ts","../src/dashboard/dashboard.service.ts","../src/dispatch/dispatch.service.ts","../src/dispatch-summary/dispatch-summary.service.ts","../src/forms/form.service.ts","../src/helpers/bottom-drawer.service.ts","../src/helpers/location.service.ts","../src/helpers/states.service.ts","../src/helpers/title-bar.service.ts","../src/helpers/upload.service.ts","../src/history/history.service.ts","../src/header-messages/header-messages.service.ts","../src/item-management/item-management.service.ts","../src/login/login.service.ts","../src/payment/payment.service.ts","../src/price-guide/price-guide.service.ts","../src/questionnaire/questionnaire.service.ts","../src/template-store/template-store.service.ts","../src/time-event/time-event.service.ts","../src/timeclock/timeclock.service.ts","../src/utils/office.service.ts","../src/utils/organization.service.ts","../src/utils/toast.service.ts","../src/user/user.service.ts","../src/work-order/banner.service.ts","../src/work-order/package-actions.service.ts","../src/work-order/work-order.service.ts","../src/work-order-template/work-order-template.service.ts","../src/administrative/purchase-order/purchase-order.service.ts","../src/administrative/inventory/inventory.service.ts","../src/administrative/reviews/reviews.service.ts","../src/administrative/tags/tags.service.ts","../src/administrative/vendor-inventory/vendor-inventory.service.ts","../src/utils/telephony/telephony-outbound.service.ts","../src/chat/chat-messages-wrapper.directive.ts","../src/chat/chat.directive.ts","../src/dispatch-summary/dispatch-summary-table.directive.ts","../src/helpers/bottom-drawer.directive.ts","../src/helpers/capitalize.directive.ts","../src/helpers/google-place.directive.ts","../src/helpers/permission.directive.ts","../src/helpers/phone.directive.ts","../src/helpers/signature-area.directive.ts","../src/utils/slide-out.directive.ts","../src/administrative/administrative.controller.ts","../src/appointment/appointment-menu.controller.ts","../src/appointment/appointment-overview.controller.ts","../src/appointment/appointment.controller.ts","../src/chat/chat.controller.ts","../src/customer/customer-create.controller.ts","../src/customer/customer-search.controller.ts","../src/customer/service-request.controller.ts","../src/dashboard/dashboard.controller.ts","../src/dispatch-summary/dispatch-summary.controller.ts","../src/forms/form-details.controller.ts","../src/forms/form-list.controller.ts","../src/history/history.controller.ts","../src/header-messages/header-messages.controller.ts","../src/item-management/item-management.controller.ts","../src/login/login.controller.ts","../src/payment/payment.controller.ts","../src/price-guide/price-guide.controller.ts","../src/template-store/template-store.controller.ts","../src/template-store/template-view.controller.ts","../src/time-event/time-event.controller.ts","../src/timeclock/timeclock-button.controller.ts","../src/timeclock/timeclock.controller.ts","../src/user/user-menu.controller.ts","../src/work-order/banner-flyout.controller.ts","../src/work-order/work-order.controller.ts","../src/administrative/purchase-order/purchase-order.controller.ts","../src/administrative/inventory/inventory-select.controller.ts","../src/administrative/inventory/inventory-summary.controller.ts","../src/administrative/send-invoice/send-invoice.controller.ts","../src/administrative/reviews/reviews.controller.ts","../src/administrative/tags/tags.controller.ts","../src/administrative/upload-photos/upload-photos.controller.ts","../src/administrative/vendor-inventory/vendor-inventory.controller.ts","../src/history/photos/photos.controller.ts","../src/history/recommendations/recommendations-detail.controller.ts","../src/history/recommendations/recommendations-list.controller.ts","../src/history/recommendations/recommendations-view.controller.ts","../src/history/service-request-history/service-request-detail.controller.ts","../src/history/service-request-history/service-request-list.controller.ts","../src/item-management/item-details/item-details.controller.ts","../src/questionnaire/item/item-questionnaire.controller.ts","../src/questionnaire/survey/customer-survey.controller.ts","../src/utils/telephony/telephony-outbound.controller.ts","../src/helpers/countries.constant.ts","../src/helpers/states.constant.ts","../src/helpers/validations.constant.ts","../src/administrative/administrative.module.ts","../src/appointment/appointment.module.ts","../src/chat/chat.module.ts","../src/customer/customer.module.ts","../src/dashboard/dashboard.module.ts","../src/dispatch-summary/dispatch-summary.module.ts","../src/forms/form.module.ts","../src/history/history.module.ts","../src/header-messages/header-messages.module.ts","../src/item-management/item-management.module.ts","../src/payment/payment.module.ts","../src/price-guide/price-guide.module.ts","../src/questionnaire/questionnaire.module.ts","../src/template-store/template-store.module.ts","../src/time-event/time-event.module.ts","../src/timeclock/timeclock.module.ts","../src/utils/utils.module.ts","../src/user/user.module.ts","../src/work-order/work-order.module.ts","../src/work-order-template/work-order-template.module.ts","../src/administrative/purchase-order/purchase-order.module.ts","../src/administrative/inventory/inventory.module.ts","../src/administrative/send-invoice/send-invoice.module.ts","../src/administrative/reviews/reviews.module.ts","../src/administrative/tags/tags.module.ts","../src/administrative/upload-photos/upload-photos.module.ts","../src/administrative/vendor-inventory/vendor-inventory.module.ts","../src/app.ts"],"names":[],"mappings":"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","file":"app.0ba253cb.js","sourcesContent":["/// <reference path=\"../_references.ts\"/>\n\nmodule App.Utils {\n\texport abstract class MenuItemController {\n\t\tpublic menuOptions: App.MenuItem[];\n\t\tconstructor(protected $state: ng.ui.IStateService) {}\n\n\t\tdoMenuAction(item: MenuItem): ng.IPromise<any> {\n\t\t\treturn item.action();\n\t\t}\n\n\t\tabstract menuActionComplete(item: MenuItem): void;\n\n\t\tclickAction(item: MenuItem): void {\n\t\t\tif (angular.isDefined(item.action)) {\n\t\t\t\titem.loading = true;\n\t\t\t\tthis.doMenuAction(item).then(() => {\n\t\t\t\t\tif (angular.isDefined(item.uiSref)) {\n\t\t\t\t\t\tthis.$state.go(item.uiSref);\n\t\t\t\t\t\tthis.menuActionComplete(item);\n\t\t\t\t\t}\n\t\t\t\t}).finally(() => {\n\t\t\t\t\titem.loading = false;\n\t\t\t\t});\n\t\t\t} else if (angular.isDefined(item.uiSref)) {\n\t\t\t\tthis.$state.go(item.uiSref);\n\t\t\t\tthis.menuActionComplete(item);\n\t\t\t}\n\t\t}\n\t}\n}","/// <reference path=\"_references.ts\"/>\n\nmodule App {\n\tconst\n\t\tSTRIP_COMMENTS = /((\\/\\/.*$)|(\\/\\*[\\s\\S]*?\\*\\/))/mg,\n\t\tARGUMENT_NAMES = /([^\\s,]+)/g;\n\n\texport function DefaultFactory(cls: Function) {\n\t\tconst instance = function() {\n\t\t\t// the arguments require an extra parameter at the beginning for some reason\n\t\t\tArray.prototype.unshift.call(arguments, cls);\n\n\t\t\tconst fn = Function.prototype.bind.apply(cls, arguments);\n\n\t\t\treturn new fn();\n\t\t};\n\n\t\tinstance.$inject = getParameters(cls);\n\n\t\treturn instance;\n\t}\n\n\tfunction getParameters(fn: Function) {\n\t\tconst fnStr = fn.toString().replace(STRIP_COMMENTS, '').replace(/\\$wamp2/g, '$wamp');\n\t\tconst result = fnStr.slice(fnStr.indexOf('(') + 1, fnStr.indexOf(')')).match(ARGUMENT_NAMES);\n\n\t\treturn result === null\n\t\t\t? []\n\t\t\t: result;\n\t}\n}\n","/// <reference path=\"./_references.ts\"/>\r\n\r\nmodule App.Administrative {\r\n    export interface CheckListItem {\r\n        displayName: string,\r\n        name: string,\r\n        sref?: string,\r\n        isSelected?: boolean\r\n    }\r\n\r\n    export interface AppointmentCheckListItem extends CheckListItem {\r\n        status?: () => string,\r\n        permission: string,\r\n        required: boolean\r\n    }\r\n\r\n    export type AppointmentChecklist = {\r\n        id?: number,\r\n        create_purchase_order?: boolean,\r\n        email_recommendations?: boolean,\r\n        upload_photos?: boolean,\r\n        send_review_request?: boolean,\r\n        replenish_truck_inventory?: boolean,\r\n        organization?: number,\r\n        close_service_request_on_complete?: boolean,\r\n        [k: string]: boolean | number;\r\n    }\r\n\r\n    export type ServiceRequestChecklist = {\r\n        id?: number,\r\n        contact_customer?: boolean,\r\n        follow_up_recommendation?: boolean,\r\n        order_supplies?: boolean,\r\n        appointment_service_request_complete?: boolean,\r\n        organization?: number,\r\n        upload_on_complete?: boolean,\r\n        email_on_complete?: boolean,\r\n        invoice_note?: string,\r\n        invoice_email?: string,\r\n        review_count?: number,\r\n        callsource_review_count?: number,\r\n        image_count?: number,\r\n        [k: string]: boolean | number | string;\r\n    }\r\n\r\n    export type Note = {\r\n        id: number,\r\n        user: string,\r\n        customer: string,\r\n        description: string\r\n    }\r\n\r\n    export interface AppRootScope extends ng.IRootScopeService {\r\n        app: {\r\n            startAppLoading:() => void;\r\n            stopAppLoading:() => void;\r\n            isAppLoading?: boolean;\r\n\r\n            showAppHeader:() => void;\r\n            generateGuid:() => void;\r\n            hideAppHeader:() => void;\r\n            getTitle:() => string;\r\n            isHeaderShown: boolean;\r\n            initElement: (selector: string) => void;\r\n\r\n            setOrganization: (id: number) => void;\r\n\r\n            getClockedStatusColor: (timeclock: boolean) => string;\r\n            getClockedStatusText: () => string;\r\n            showTimeEvents: () => void;\r\n        }\r\n    }\r\n\r\n    export interface ServiceRequestPhoto {\r\n        id?: number;\r\n        url: string;\r\n        file_type: string;\r\n        caption?: string;\r\n        send_with_invoice?: boolean;\r\n        send_with_recommendation?: boolean;\r\n    }\r\n\r\n    export interface GameConfig {\r\n        id: number,\r\n        visible: boolean,\r\n        description: string,\r\n        ranks: GameRank[]\r\n    }\r\n\r\n    export interface SRScore {\r\n        id?: number,\r\n        points_psq_completed: number,\r\n        psq_completed: boolean,\r\n        points_items_catalogued: number,\r\n        items_catalogued: boolean,\r\n        points_items_maintained: number,\r\n        items_maintained: boolean,\r\n        points_item_report_sent: number,\r\n        item_report_sent: boolean,\r\n        points_ssp_sold: number,\r\n        ssp_sold: boolean,\r\n        points_signature_captured: number,\r\n        signature_captured: boolean,\r\n        points_etc_updated: number,\r\n        etc_updated: boolean,\r\n        points_recommendation_emailed: number,\r\n        recommendation_emailed: boolean,\r\n        points_photos_uploaded: number,\r\n        photos_uploaded: boolean,\r\n        points_po_made: number,\r\n        po_made: boolean,\r\n        points_inventory_replenished: number,\r\n        inventory_replenished: boolean,\r\n        points_review_requested: number,\r\n        review_requested: boolean,\r\n        points_note_left: number,\r\n        note_left: boolean,\r\n        points_sale_min: number,\r\n        sale_min: boolean,\r\n        points_sale_goal: number,\r\n        sale_goal: boolean,\r\n        points_minutes_goal: number,\r\n        minutes_goal: boolean,\r\n        total_points: number,\r\n        points: number,\r\n        percent: number,\r\n        complete: boolean\r\n    }\r\n\r\n    export interface TechData {\r\n        [date: string]: number;\r\n    }\r\n\r\n    export interface TechScore {\r\n        id: number,\r\n        average: number,\r\n        rank: GameRank,\r\n        data: TechData,\r\n        all_data: TechData,\r\n        team_data: TechData,\r\n    }\r\n\r\n    export interface GameRank {\r\n        id: number,\r\n        image_url: string,\r\n        name: string,\r\n        percent?: number,\r\n        description: string\r\n    }\r\n}","module App.Appointments {\n\timport Package = App.PriceGuide.Package;\n\timport PaymentType = App.Payment.PaymentType;\n\timport Questionnaire = App.Questionnaire.Questionnaire;\n\n\texport type Tag = {\n\t\tid: number;\n\t\tname: string;\n\t};\n\n\texport type TagType = {\n\t\tid: number;\n\t\tname: string;\n\t\ttags: Tag[];\n\t}\n\n\texport type Department = {\n\t\tid: number;\n\t\tname: string;\n\t\ttag_types: TagType[];\n\t}\n\n\texport type DispatchCode = {\n\t\tid: number;\n\t\tname: string;\n\t}\n\n\texport type LeadSource = {\n\t\tid: number;\n\t\tname: string;\n\t\tdescription: string;\n\t\tnumber: number;\n\t\tstatus: boolean;\n\t}\n\n\texport type Salesman = {\n\t\tid: number;\n\t\tname: string;\n\t}\n\n\texport type ServiceNote = {\n\t\tid: number;\n\t\tdescription: string;\n\t}\n\n\texport type ServiceAddress = {\n\t\tlatitude: string;\n\t\tlongitude: string;\n\t\taddress: string;\n\t\tid: number;\n\t\tlocation?: Location;\n\t\tstreet?: string;\n\t\tcity?: string;\n\t\tstate?: string;\n\t\tzip?: string;\n\t}\n\n\texport type ServicePlanAgreement = {\n\t\tid: number;\n\t\tactive: boolean;\n\t\tservice_plan: ServicePlan;\n\t\texpiry: string;\n\t}\n\n\texport type Customer = {\n\t\tid: number;\n\t\tfull_name?: string;\n\t\tcompany_name?: string;\n\t\tfirst_name?: string;\n\t\tlast_name?: string;\n\t\thome_phone?: string;\n\t\tmobile_phone?: string;\n\t\twork_phone?: string;\n\t\temails?: Email[];\n\t\table_to_bill?: boolean;\n\t\tlast_service_plan?: ServicePlanAgreement;\n\t\trate_mode?: RateMode;\n\t\trate_type?: RateType;\n\t\tphone_numbers?: PhoneNumber[];\n\t\tcan_show_financing?: boolean;\n\t\ttags?: Tag[];\n\t\trecolor_tag?: Tag;\n\t\tfiles?: File[];\n\t}\n\n\texport type File = {\n\t\tid?: number;\n\t\turl: string;\n\t\tfile_type: string;\n\t\tname: string;\n\t}\n\n\texport type Email = {\n\t\tid: number;\n\t\temail: string;\n\t\tmarketing: boolean;\n\t}\n\n\texport type RateMode = {\n\t\t[key: string]: boolean|string;\n\t\tdefault_mode_name: string;\n\t\tregular: boolean;\n\t\titemized: boolean;\n\t\twhilehere: boolean;\n\t\tadmin: boolean;\n\t\tfinance: boolean;\n\t\tservice_plan: boolean;\n\t}\n\n\texport type ServiceRequestType = {\n\t\tid?: number;\n\t\tname: string;\n\t}\n\n\texport type RateType = {\n\t\tid: number;\n\t\tname: string;\n\t}\n\n\texport type ServiceRequest = {\n\t\t[key: string]: any;\n\n\t\tid: number;\n\t\tservice_address?: ServiceAddress;\n\t\tservice_request_type?: ServiceRequestType;\n\t\tservice_plan?: ServicePlan;\n\t\tfinance_plan?: FinancePlan;\n\t\tnotes?: ServiceNote[];\n\t\tpromised_date?: string;\n\t\tpromised_time?: string;\n\t\tservice_request_status?: string;\n\t\tpayment_type?: PaymentType;\n\t\tappointments?: Appointment[];\n\t\tdispatch_code?: DispatchCode;\n\t\tdepartment?: Department;\n\t\tpackages?: Package[];\n\t\tcustomer?: Customer;\n\t\tlocation?: Location;\n\t\ttags?: Tag[];\n\t\tamount_due?: string;\n\t\ttotal?: string;\n\t\tquestionnaire?: Questionnaire;\n\t\tcan_show_regular_pricing?: boolean;\n\t}\n\n\texport type ServicePlan = {\n\t\tid: number | string;\n\t\tname: string;\n\t\tnotes: string;\n\t\tterm: 'monthly' | 'annual';\n\t\tvisits_per_year: number;\n\t\tcost: number;\n\t\tsavings: string;\n\t\texpire_date: Date;\n\t\tdefault_service_plan: boolean;\n\t}\n\n\texport type FinancePlan = {\n\t\tid: number;\n\t\tmin_invoice: number;\n\t\tmin_payment: number;\n\t\tvisible: boolean;\n\t\tpayment: number;\n\t\tnotes: string|null;\n\t\tfinance_company?: FinanceCompany;\n\t\tdefault_finance_plan: boolean;\n\t\tname: string;\n\t\tamount: string;\n\t}\n\n\texport type FinanceCompany = {\n\t\tid: number;\n\t\tname: string;\n\t\tplans?: FinancePlan[];\n\t}\n\n\texport interface Appointment {\n\t\t[key: string]: any;\n\n\t\tid?: number;\n\t\tappointment_status?: string;\n\t\tservice_request: ServiceRequest;\n\t\tscheduled_date: string; // YYYY-MM-DD\n\t\tscheduled_time: string; // HH:mm\n\t\tscheduled_duration: number;\n\t\testimated_completion_time: string; // hh:mm\n\t\ttechnician?: number;\n\t\tis_partial?: boolean;\n\t}\n\n\texport interface AppointmentDataSet {\n\t\ttoday: Appointment[];\n\t\tpast: Appointment[];\n\t}\n\n\texport type PhoneNumber = {\n\t\tid?: number;\n\t\tnumber: string;\n\t\tsend_text: boolean;\n\t\ttelephony_ext?: string;\n\t}\n}","/// <reference path=\"_references.ts\"/>\n\nmodule App.Chat {\n\texport interface $wamp {\n\t\topen(): void;\n\t\tsubscribe(topic: string, handler: (message: Message[]) => void): ng.IPromise<Subscription>;\n\t\tunsubscribe(subscription: Subscription): ng.IPromise<void>;\n\t\tpublish(topic: string, args: [Message], kwargs?: any, options?: any): ng.IPromise<void>;\n\t\tcall(procedure: string, args?: [number, string], kwargs?: any, options?: any): ng.IPromise<{args: [any]}>;\n\t}\n\n\texport interface Message {\n\t\t[key: string]: any;\n\n\t\tid?: number;\n\t\ttimestamp?: string;\n\t\tmessage: string;\n\t\tsender?: {\n\t\t\tid: number,\n\t\t\tname: string\n\t\t} | number;\n\t\trecipient?: {\n\t\t\tid: number,\n\t\t\tname: string\n\t\t} | number;\n\t\tread?: boolean;\n\t}\n\n\texport interface ChatUser {\n\t\tid: number;\n\t\tname: string;\n\t\tavatar?: string;\n\t\tlastmessage?: Message;\n\t\tunread: number;\n\t\tonline: boolean;\n\t\trole: string;\n\t}\n\n\texport interface Subscription{\n\n\t}\n}","/// <reference path=\"../_references.ts\"/>\n\nmodule App.Customer {\n\n\timport PaymentType = App.Payment.PaymentType;\n\timport ServiceRequestType = App.Appointments.ServiceRequestType;\n\timport LeadSource = App.Appointments.LeadSource;\n\timport Salesman = App.Appointments.Salesman;\n\timport ServicePlan = App.Appointments.ServicePlan;\n\timport FinancePlan = App.Appointments.FinancePlan;\n\timport Department = App.Appointments.Department;\n\timport Package = App.PriceGuide.Package;\n\timport ServiceNote = App.Appointments.ServiceNote;\n\timport Location = App.DispatchService.Location;\n\n\texport class Address {\n\t\tid: number = null;\n\t\tstreet: string = null;\n\t\tstreet_two: string = \"\";\n\t\tcity: string = null;\n\t\tstate: string = null;\n\t\tzip: string = null;\n\t\tlatitude: string = null;\n\t\tlongitude: string = null;\n\t\tlocation: Location = null;\n\t\table_to_bill: number = 0;\n\t\taddress_components: AddressComponents = null;\n\t\taddress: string = null;\n\n\t\tconstructor() {\n\n\t\t}\n\t}\n\n\texport class AddressComponents {\n\t\tstreetNum: string = null;\n\t\tstreetName: string = null;\n\t\tcity: string = null;\n\t\tpostalCode: string = null;\n\t\tstate: string = null;\n\t\tlatitude: number = null;\n\t\tlongitude: number = null;\n\n\t\tconstructor() {\n\n\t\t}\n\t}\n\n\texport class AddressComponent {\n\t\tlong_name: string = null;\n\t\tshort_name: string = null;\n\t\ttypes: string[] = null;\n\n\t\tconstructor() {\n\n\t\t}\n\t}\n\n\texport type DispatchCode = {\n\t\tid: number;\n\t\tname: string;\n\t\tdepartment: Department;\n\t}\n\n\texport interface ICustomer {\n\t\tid: number;\n\t\tpriority: number;\n\t\tfull_name: string;\n\t\tcompany_name: string;\n\t\tservice_addresses: Array<Address>;\n\t\tfirst_name: string;\n\t\tlast_name: string;\n\t\tcontract_rate: boolean;\n\t\temails: Array<Email>;\n\t\tphone_numbers: Array<PhoneNumber>;\n\t\tbilling_addresses: Array<Address>;\n\t\table_to_bill: number;\n\t\tnotes: string;\n\t\trate_type: number;\n\t\tcan_show_financing: boolean;\n\t}\n\n\texport class Customer implements ICustomer {\n\t\tid: number = null;\n\t\tpriority: number = 3;\n\t\tfull_name: string = null;\n\t\tcompany_name: string = null;\n\t\tservice_addresses: Array<Address> = [];\n\t\tfirst_name: string = null;\n\t\tlast_name: string = null;\n\t\tcontract_rate: boolean = false;\n\t\temails: Array<Email> = [];\n\t\tphone_numbers: Array<PhoneNumber> = [];\n\t\tbilling_addresses: Array<Address> = [];\n\t\table_to_bill: number = 0;\n\t\tnotes: string;\n\t\trate_type: number = null;\n\t\tcan_show_financing: boolean = true;\n\n\t\tconstructor() { }\n\n\t\taddServiceAddress(address?: Address) {\n\t\t\tthis.service_addresses.push(address || new Address());\n\t\t}\n\n\t\taddBillingAddress(address?: Address) {\n\t\t\tthis.billing_addresses.push(address || new Address());\n\t\t}\n\t}\n\n\texport class Email {\n\t\tid: number = null;\n\t\temail: string = null;\n\t\tlabel: string = null;\n\t\tmarketing: boolean = true;\n\t}\n\n\texport class PhoneNumber {\n\t\tid?: number = null;\n\t\tnumber: string = null;\n\t\tlabel?: string = null;\n\t\tsend_text: boolean = true;\n\t}\n\n\texport class ServiceRequest {\n\t\tid?: number;\n\t\tlatest_invoice_id: number;\n\t\tlast_sent_recommendation?: {['id']: number};\n\t\tservice_address: number;\n\t\tservice_request_type: ServiceRequestType;\n\t\tservice_request_status: number;\n\t\tpromised_date?: string;\n\t\tpromised_time?: string;\n\t\tdescription?: string;\n\t\tpayment_type: PaymentType;\n\t\tlead_source: LeadSource;\n\t\tsalesman: Salesman;\n\t\tservice_plan?: ServicePlan;\n\t\tfinance_plan?: FinancePlan;\n\t\tnotes?: ServiceNote;\n\t\tappointments: Appointment[];\n\t\tdispatch_code: number;\n\t\tdepartment: number;\n\t\ttechnician?: number;\n\t\tpackages?: Package[];\n\t\tcustomer: number|ICustomer;\n\t\tamount_due?: string;\n\t\ttotal?: string;\n\t\tafter_hours: boolean;\n\t\tcreate_appointment: number;\n\n\t\tconstructor() {\n\n\t\t}\n\t}\n\n\texport type Appointment = {\n\t\tid: number;\n\t\tservice_request: number;\n\t\tscheduled_date: string; // YYYY-MM-DD\n\t\tscheduled_time: string; // HH:mm\n\t\ttechnician: number;\n\t}\n}\n","module App.Dashboard {\r\n\texport type TechStats = {\r\n\t\tzeroSoldMinutesCount: number,\r\n\t\thasSoldMinutesCount: number,\r\n\t\ttotalSoldMinutes: number,\r\n\t\tserviceRequestCount: number,\r\n\t\ttotalCommissions: number,\r\n\t\ttotalHours: string,\r\n\t\tplansNotConverted: number,\r\n\t\tplansConverted: number,\r\n\t\texistingPlans: number,\r\n\t\tcurrentlyActivePlans: number\r\n\t}\r\n\r\n\texport type Range = {\r\n\t\tname: string,\r\n\t\tstart: Date,\r\n\t\tend: Date\r\n\t}\r\n}","module App.DispatchSummary {\r\n\timport ServiceAddress = App.Appointments.ServiceAddress;\r\n\timport ServiceRequestType = App.Appointments.ServiceRequestType;\r\n\r\n\timport ServiceNote = App.Appointments.ServiceNote;\r\n\timport Customer = App.Appointments.Customer;\r\n\timport DispatchCode = App.Appointments.DispatchCode;\r\n\r\n\texport type ServiceRequest = {\r\n\t\tid: number;\r\n\t\tservice_address: ServiceAddress;\r\n\t\tservice_request_type: ServiceRequestType;\r\n\t\tnotes: ServiceNote[];\r\n\t\tpromised_date: string;\r\n\t\tpromised_time: string;\r\n\t\tservice_request_status?: string;\r\n\t\tappointments: Appointment[];\r\n\t\tdispatch_code: DispatchCode;\r\n\t\tdepartment: Department;\r\n\t\tcustomer: Customer;\r\n\r\n\t\tapptId?: number;\r\n\t\tapptTime?: string;\r\n\t\tapptStatus?: string;\r\n\t\tapptStatusIcon?: string;\r\n\t\tchipTech?: string;\r\n\t\tisChecked?: boolean;\r\n\t\ttimeOrdering?: string;\r\n\t\tcustomerName?: string;\r\n\t\tchipTitle?: string;\r\n\t\tdepartmentColor?: string;\r\n\t}\r\n\r\n\texport interface Appointment {\r\n\t\tid: number;\r\n\t\tappointment_status: string;\r\n\t\tscheduled_date: string;\r\n\t\tscheduled_time: string;\r\n\t\ttechnician: { id: number, full_name: string };\r\n\t}\r\n\r\n\texport type Department = {\r\n\t\tid: number;\r\n\t\tname: string;\r\n\t\tabbreviation: string;\r\n\t\tcolor?: string;\r\n\t}\r\n\r\n\texport type Status = {\r\n\t\tid: number;\r\n\t\tname: number;\r\n\t}\r\n}","/// <reference path=\"_references.ts\"/>\n\nmodule App.Forms {\n\texport interface FormList {\n\t\tid: number;\n\t\tname: string;\n\t\tdescription: string;\n\t}\n\n\texport interface Form extends FormList {\n\t\tcustomer_signature: keyof typeof SignatureType;\n\t\ttech_signature: keyof typeof SignatureType;\n\t\telements: FormElement[];\n\t\tread_only: boolean;\n\t\ttitle: string;\n\t}\n\n\texport enum SignatureType {\n\t\tNONE,\n\t\tALLOW,\n\t\tREQUIRED,\n\t}\n\n\texport enum FormElementType {\n\t\tCheckbox,\n\t\tCheckList,\n\t\tDropdown,\n\t\tHeader,\n\t\tMultiSelect,\n\t\tNumber,\n\t\tStaticText,\n\t\tText,\n\t\tTextArea,\n\t\tPassFail,\n\t}\n\n\texport interface FormElement {\n\t\tid?: number;\n\t\ttype: keyof typeof FormElementType;\n\t\tname: string;\n\t\tread_only: boolean;\n\n\t\tsize?: 1|2|3;\n\t\trequired?: boolean;\n\t\thelp_text?: string;\n\t\tplaceholder?: string;\n\t\tshow_name?: boolean;\n\t\tmin?: number;\n\t\tmax?: number;\n\t\ttext?: string;\n\t\toptions?: string[];\n\t\tcolumns?: string[];\n\t}\n\n\texport interface FormAnswer {\n\t\tid: number;\n\t\tanswer?: string;\n\t\tdescription?: string;\n\t\tselected?: string[];\n\t\telement: number;\n\t\timages: FormAnswerImage[];\n\t}\n\n\texport interface FormAnswerImage {\n\t\tid: number;\n\t\turl: string;\n\t}\n\n\texport interface FormInstanceList {\n\t\tid: number;\n\t\tcreated: Date;\n\t\tversion: FormList;\n\t}\n\n\texport interface FormInstance extends FormInstanceList {\n\t\tversion: Form;\n\t\tanswers: FormAnswer[];\n\t\tservice_request: number|{id: number}|null;\n\t\tserviceable_item: number|{id: number}|null;\n\t\tcustomer_signature?: string;\n\t\ttech_signature?: string;\n\t}\n}\n","/// <reference path=\"../_references.ts\"/>\n\nmodule App.History {\n\n\n\timport DispatchCode = App.Customer.DispatchCode;\n\timport ServiceRequestType = App.Appointments.ServiceRequestType;\n\timport PaymentType = App.Payment.PaymentType;\n\timport LeadSource = App.Appointments.LeadSource;\n\timport Salesman = App.Appointments.Salesman;\n\timport ServicePlan = App.Appointments.ServicePlan;\n\timport FinancePlan = App.Appointments.FinancePlan;\n\timport ServiceNote = App.Appointments.ServiceNote;\n\timport Appointment = App.Customer.Appointment;\n\timport Package = App.WorkOrderTemplate.Package;\n\timport Customer = App.Customer.Customer;\n\timport Department = App.Appointments.Department;\n\timport Note = App.Administrative.Note;\n\timport Address = App.Customer.Address;\n\timport ServiceableItem = App.ItemManagement.ServiceableItem;\n\texport type HistoryItem = {\n\t\tdisplayName: string;\n\t\tsref: string;\n\t\tsrefAddress: string;\n\t\tsrefSR: string;\n\t\tpermission: string;\n\t}\n\n\texport class ServiceRequest {\n\t\tid: number;\n\t\tservice_address: number;\n\t\tservice_request_type: ServiceRequestType;\n\t\tservice_request_status: number;\n\t\tpromised_date: string;\n\t\tpromised_time: string;\n\t\tpayment_type: PaymentType;\n\t\tlead_source: LeadSource;\n\t\tsalesman: Salesman;\n\t\tservice_plan: ServicePlan;\n\t\tfinance_plan: FinancePlan;\n\t\tnotes: ServiceNote;\n\t\tappointments: Appointment[];\n\t\tdispatch_code: DispatchCode;\n\t\tdepartment: number;\n\t\ttechnician: number;\n\t\tpackages: Package[];\n\t\tcustomer: Customer;\n\t\tamount_due: string;\n\t\ttotal: number;\n\t\tafter_hours: boolean;\n\n\t\tconstructor() {\n\n\t\t}\n\t}\n\n\texport type ServiceRequestPhoto = {\n\t\tid: number;\n\t\tcaption: string;\n\t\tsource: string;\n\t}\n\n\texport type ServiceRequestHistoryItem = {\n\t\tid: number;\n\t\tfull_name: string;\n\t\tservice_date: string;\n\t\tinvoice_total: number;\n\t\tdispatch_code: string;\n\n\t}\n\n\n\ttype Approval = {\n\t\tid: number;\n\t\tcreated: string;\n\t\tprint_name: string\n\t}\n\n\ttype Status = {\n\t\tid: number;\n\t\tcreated: string;\n\t\tupdated: string;\n\t\tname: string\n\t}\n\n\texport type Invoice = {\n\t\tapproved_date: string;\n\t\tbalance_due: number;\n\t\tbilling_address: Address;\n\t\tcompany_name: string;\n\t\tcreated: string;\n\t\tcustomer: string;\n\t\tdiscount_amount: number;\n\t\tdiscount_code: string;\n\t\tdue_date: string;\n\t\tfinance_plan: number;\n\t\tid: number;\n\t\tinvoice_number: number;\n\t\tinvoice_organization: any;\n\t\tnote: string;\n\t\tpackages: Package[];\n\t\tpaid_full: boolean;\n\t\tservice_address: Address;\n\t\tservice_plan: ServicePlan;\n\t\tservice_request: number;\n\t\tserviceable_items: ServiceableItem[];\n\t\tsignature: string;\n\t\tstatus: Status;\n\t\tsubtotal: number;\n\t\ttax: number;\n\t\tterms: string[];\n\t\ttotal: number;\n\t\ttotal_payments: number;\n\t\ttotal_recurring: number;\n\t\ttotal_savings: number;\n\t\tupdated: string;\n\t\tvoid_date: string;\n\t\tvoid_reason: string\n\t}\n\t/*export type Invoice = {\n\t\tafter_hours: boolean;\n\t\tappointments: Appointment[];\n\t\tapproval: Approval;\n\t\tcoupon?: any;\n\t\tcustomer: Customer;\n\t\tdepartment: Department;\n\t\tdescription: string;\n\t\tdispatch_code: DispatchCode;\n\t\tfinance_plan: FinancePlan;\n\t\timages?: ServiceRequestPhoto[];\n\t\tinventories: any[];\n\t\tlatest_invoice_id: number;\n\t\tlead_source: LeadSource;\n\t\tlocation: Location;\n\t\tnotes: Note[];\n\t\tpackages: Package[];\n\t\tpayment_type: PaymentType;\n\t\tpromised_date: string;\n\t\tpromised_time: string;\n\t\tsales_person: number;\n\t\tsales_tax_override_labor: any;\n\t\tsales_tax_override_material: any;\n\t\tservice_address: Address;\n\t\tservice_plan: ServicePlan;\n\t\tservice_request_status: string;\n\t\tservice_request_type: ServiceRequestType;\n\t\tserviceable_items: ServiceableItem[];\n\t}\n*/\n}","/// <reference path='../_references.ts'/>\n\nmodule App.HeaderMessages {\n\texport interface GlobalMessage {\n\t\tid: number;\n\t\tmessage: string;\n\t\tcreated: string;\n\t\tvisible: boolean;\n\t\tall_roles: boolean;\n\t\troles: number[];\n\t}\n}\n","/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule App.ItemManagement {\r\n\timport Questionnaire = App.Questionnaire.Questionnaire;\r\n\r\n\texport class ServiceableItem {\r\n\t\t[key: string]: any;\r\n\r\n\t\tid: number;\r\n\t\tserviceable_item_type: ServiceableItemType;\r\n\t\tnotes: ServiceableItemNote[];\r\n\t\tlocation: string;\r\n\t\tmake: string;\r\n\t\tmodel_number: string;\r\n\t\tserial_number: string;\r\n\t\tinstalled_on: Date;\r\n\t\tin_service: boolean;\r\n\t\tmaintained: boolean;\r\n\t\timages: ServiceableItemImage[];\r\n\t\torganization: number;\r\n\t\tservice_request: {id: number};\r\n\t\tlast_serviced: Date;\r\n\t\ttag_1: TagOption;\r\n\t\ttag_2: TagOption;\r\n\t\ttag_3: TagOption;\r\n\t\ttag_4: TagOption;\r\n\t\ttag_5: TagOption;\r\n\t\ttag_6: TagOption;\r\n\t\ttag_7: TagOption;\r\n\t\ttag_8: TagOption;\r\n\t\ttag_9: TagOption;\r\n\r\n\t\tage: string;\r\n\t\tservice_requests: { id: number }[];\r\n\r\n\t\tconstructor(data?: ServiceableItem) {\r\n\t\t\tdata = data || this;\r\n\r\n\t\t\tif(data.installed_on != null) {\r\n\t\t\t\tthis.installed_on = moment(data.installed_on).toDate();\r\n\r\n\t\t\t\tlet ms = moment().diff(this.installed_on);\r\n\t\t\t\tlet duration = moment.duration(ms);\r\n\r\n\t\t\t\tthis.age = '';\r\n\t\t\t\tthis.age += this.timeString(duration.years(), 'Year');\r\n\t\t\t\tif(duration.months() > 0) {\r\n\t\t\t\t\tif (this.age) {\r\n\t\t\t\t\t\tthis.age += ', '\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.age += this.timeString(duration.months(), 'Month');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif(data.last_serviced != null) {\r\n\t\t\t\tthis.last_serviced = moment(data.last_serviced).toDate();\r\n\t\t\t}\r\n\r\n\t\t\tthis.id = data.id;\r\n\t\t\tthis.serviceable_item_type = data.serviceable_item_type;\r\n\t\t\tthis.notes = data.notes;\r\n\t\t\tthis.location = data.location;\r\n\t\t\tthis.model_number = data.model_number;\r\n\t\t\tthis.serial_number = data.serial_number;\r\n\t\t\tthis.in_service = data.in_service;\r\n\t\t\tthis.maintained = data.maintained;\r\n\t\t\tthis.images = data.images;\r\n\t\t\tthis.organization = data.organization;\r\n\t\t\tthis.service_request = data.service_request;\r\n\t\t\tthis.tag_1 = data.tag_1;\r\n\t\t\tthis.tag_2 = data.tag_2;\r\n\t\t\tthis.tag_3 = data.tag_3;\r\n\t\t\tthis.tag_4 = data.tag_4;\r\n\t\t\tthis.tag_5 = data.tag_5;\r\n\t\t\tthis.tag_6 = data.tag_6;\r\n\t\t\tthis.tag_7 = data.tag_7;\r\n\t\t\tthis.tag_8 = data.tag_8;\r\n\t\t\tthis.tag_9 = data.tag_9;\r\n\t\t\tthis.make = data.make;\r\n\t\t\tthis.service_requests = data.service_requests;\r\n\t\t}\r\n\r\n\t\tprivate timeString(val: number, period: string) {\r\n\t\t\tif(val > 0) {\r\n\t\t\t\treturn val + ' ' + period + (val > 1 ? 's' : '');\r\n\t\t\t}\r\n\t\t\treturn '';\r\n\t\t}\r\n\t}\r\n\r\n\texport type ServiceableItemCreate = {\r\n\t\taddress: number,\r\n\t\tcustomer: number,\r\n\t\tserviceable_item_type: number,\r\n\t\tcreated_service_request?: number,\r\n\t\tin_service: boolean,\r\n\t\tmaintained: boolean\r\n\t}\r\n\r\n\texport type ServiceableItemType = {\r\n\t\tid: number,\r\n\t\tvisible: boolean,\r\n\t\tcost: number,\r\n\t\tfrequency: string,\r\n\t\treplacement_years: number,\r\n\t\tmaintenance_months: number,\r\n\t\torganization: number,\r\n\t\tquestionnaires: Questionnaire[],\r\n\t\tname: string,\r\n\t\tdescription: string\r\n\t}\r\n\r\n\texport type ServiceableItemNote = {\r\n\t\tid?: number,\r\n\t\tdescription: string,\r\n\t\torganization?: number,\r\n\t\tservice_request?: number\r\n\t}\r\n\r\n\texport type ServiceableItemImage = {\r\n\t\tid?: number,\r\n\t\turl: string,\r\n\t\tpdf_url: string,\r\n\t\torganization: number,\r\n\t\tcreated: string\r\n\t}\r\n\r\n\texport type ServiceableItemTag = {\r\n\t\tid: number,\r\n\t\toptions: string[],\r\n\t\tname: string,\r\n\t\ttag_group: number\r\n\t}\r\n\r\n\texport type Tag = {\r\n\t\toptions: TagOption[],\r\n\t\tname: string\r\n\t}\r\n\r\n\texport type TagOption = {\r\n\t\tindex: number,\r\n\t\tvalue: string\r\n\t}\r\n}","/// <reference path=\"../_references.ts\"/>\n\nmodule App.Payment {\n\timport FinancePlan = App.Appointments.FinancePlan;\n\texport type PaymentTypeName = 'cash' | 'card' | 'check' | 'financing' | 'invoice';\n\n\texport type PaymentInfo = {\n\t\tid: number;\n\t\tfinance_plan: FinancePlan;\n\t\ttotal: string;\n\t\tamount_due: string;\n\t\tpayments: Payment[];\n\t};\n\n\texport type PaymentType = {\n\t\tid: number;\n\t\tname: PaymentTypeName;\n\t\tdescription: string;\n\t};\n\n\texport class Payment {\n\t\tid: number = null;\n\t\tamount: number = null;\n\t\temail_sent: boolean = true;\n\t\tpayment_type: PaymentTypeName = 'cash';\n\t\ttype?: string;\n\t\tdate?: string;\n\t\tdetails: string = null;\n\t\temail: string = null;\n\t\tappointment: number = null;\n\t\ttechnician: {\n\t\t\tid: number;\n\t\t\tfull_name: string;\n\t\t} | number = null;\n\t\temail_note: string = null;\n\t\tsignature: string = null;\n\t\tprint_name: string = null;\n\t\tlicense: string = null;\n\t\tbillingAddress?: string;\n\n\t\tconstructor(data?: Payment, email?: string, tech?: number, amountDue?: string) {\n\t\t\tdata = data || this;\n\n\t\t\tconst amount = amountDue ? parseFloat(amountDue.replace(',', '')) : data.amount;\n\n\t\t\tthis.id = data.id;\n\t\t\tthis.amount = amount > 0 ? amount : data.amount;\n\t\t\tthis.email_sent = true;\n\t\t\tthis.payment_type = data.payment_type;\n\t\t\tthis.date = data.date;\n\t\t\tthis.details = data.details;\n\t\t\tthis.email = email || data.email;\n\t\t\tthis.appointment = data.appointment;\n\t\t\tthis.technician = tech || data.technician;\n\t\t\tthis.email_note = data.email_note;\n\t\t\tthis.signature = data.signature || null;\n\t\t\tthis.print_name = data.print_name || null;\n\t\t\tthis.license = data.print_name || null;\n\t\t}\n\t}\n\n\texport type PaymentData = {\n\t\tfirstName: string;\n\t\tmI: string;\n\t\tlastName: string;\n\t\tbillingAddress: string;\n\t\tpostalCode: string;\n\t}\n}","/// <reference path=\"../_references.ts\"/>\n\nmodule App.PriceGuide {\n\timport Department = App.Appointments.Department;\n\n\texport type SearchParams = {\n\t\tsearch?: string;\n\t\tquery?: string;\n\t\tdepartment?: number;\n\t\tfrom_template?: number|boolean;\n\t\tcategory?: number|string;\n\t\tsub_category?: number|string;\n\t\ttag?: string;\n\t\tselected?: string;\n\t\torderBy?: string;\n\t\tsort?: 'asc' | 'desc';\n\t\tfavorites?: boolean;\n\t\tcustom?: boolean;\n\t\tservice_request?: number;\n\t\tonly_name?: boolean;\n\t\tpage?: number;\n\t\tsize?: number;\n\t\tpublic?: number|boolean;\n\t\tshow_safe_tech_info?: boolean;\n\t};\n\n\texport type SubCategory = {\n\t\tid: number;\n\t\tname: string;\n\t};\n\n\texport type ServiceCategory = {\n\t\tid: number;\n\t\tname: string;\n\t\tdepartment?: Department;\n\t\tsub_categories: SubCategory[];\n\t};\n\n\texport type ServicePriceOverride = {\n\t\tid: number;\n\t\tamount: number;\n\t};\n\n\texport type Product = {\n\t\tid: number;\n\t\tquantity?: number;\n\t\tnew_quantity?: number;\n\t\tname?: string;\n\t\tdescription?: string;\n\t\tmaterial_cost?: number;\n\t\tdepartment?: number;\n\t\tservice_department?: number; // department or this is required\n\t\tlabor_minutes?: number;\n\t\tservice_price_override?: ServicePriceOverride;\n\t\twhile_here_with_out_agreement?: number;\n\t\twhile_here_with_agreement?: number;\n\t\tservice_request_id?: number;\n\t\tcode?: string;\n\t\tindex?: number;\n\t\tcan_show_regular_pricing?: boolean;\n\t\ttax_exempt?: boolean;\n\t};\n\n\texport interface ReturnedProduct {\n\t\tid: number;\n\t\tquantity: number;\n\t\tservice: Product;\n\t\tindex?: number;\n\t}\n\n\texport interface EditedReturnedProduct extends ReturnedProduct {\n\t\tnew_quantity: number;\n\t\tnew_price?: number;\n\n\t\tis_new: boolean;\n\t\tis_done: boolean;\n\t\tis_date: boolean;\n\t\tstart_date?: Date;\n\t\tstart_time?: Date;\n\t\tend_date?: Date;\n\t\tend_time?: Date;\n\n\t\tcreate_service?: Product;\n\n\t\toriginal_set: boolean;\n\t\toriginal_quantity: number;\n\t\toriginal_name: string;\n\t\toriginal_description: string;\n\t\toriginal_price?: number;\n\n\t\tlast_quantity: number;\n\t\tlast_name: string;\n\t\tlast_description: string;\n\t\tlast_price?: number;\n\t}\n\n\texport type PackageSummary = {\n\t\tid?: number;\n\t\tquantity: number;\n\t\tservice_id: number;\n\t\tindex?: number;\n\t};\n\n\texport type Banner = {\n\t\tid: number;\n\t\tactive: boolean;\n\t\ttext: string;\n\t\tcolor: string;\n\t};\n\n\texport type PriceItemized = {\n\t\tservice: string;\n\t\tservicemonthly: string;\n\t\tregular: string;\n\t\tvolume: string;\n\t\tvolumemonthly: string;\n\t\twhilehere: string;\n\t\twhileheremonthly: string;\n\t\tdisplay: string;\n\t};\n\n\texport type PriceRegular = {\n\t\tregular: string;\n\t\tservice: string;\n\t\tservicemonthly: string;\n\t};\n\n\texport type PriceWhileHere = {\n\t\tregular: string;\n\t\tregularnormally: string;\n\t\tservice: string;\n\t\tservicenormally: string;\n\t\tservicemonthly: string;\n\t};\n\n\texport type Prices = {\n\t\titemized: PriceItemized;\n\t\tregular: PriceRegular;\n\t\twhilehere: PriceWhileHere;\n\t};\n\n\texport type PackagePresetName = {\n\t\tid: number;\n\t\tname: string;\n\t\tdescription: string;\n\t};\n\n\texport type PackagePresetNotes = {\n\t\tid: number;\n\t\tname: string;\n\t\tshort_name: string;\n\t};\n\n\texport type Package = {\n\t\t[key: string]: any;\n\n\t\tid?: number;\n\t\tcode: string;\n\t\tname: string;\n\t\tpresetName?: string | null;\n\t\tpresetNote?: string | null;\n\t\tdescription?: string;\n\t\tbanner?: Banner;\n\t\tprices?: Prices;\n\t\tmode?: 'admin' | 'regular' | 'whilehere' | 'itemized';\n\t\tservices: Array<Product | PackageSummary | ReturnedProduct | EditedReturnedProduct>;\n\t\tselectedNote?: string;\n\t\twarranty?: Warranty;\n\t\tindex?: number;\n\t\tdiscount?: string;\n\t\tcan_show_regular_pricing?: boolean;\n\t\tforce_hide_regular?: boolean;\n\t\tpackageAction?: string;\n\t};\n\n\texport type Warranty = {\n\t\tdescription?: string;\n\t\tid?: number;\n\t\tmin_invoice_amount?: number;\n\t\tmonth_duration?: number;\n\t\tname: string;\n\t\torganization: number;\n\t};\n\n\texport type PackagePresetNote = {\n\t\tid: number;\n\t\tvisible: boolean;\n\t\tshort_name: string;\n\t\tname: string;\n\t}\n}\n","/// <reference path=\"../_references.ts\"/>\n\nmodule App.Questionnaire {\n\timport ServiceableItemType = App.ItemManagement.ServiceableItemType;\n\timport ServiceRequest = App.Appointments.ServiceRequest;\n\timport User = App.User.User;\n\n\texport class Questionnaire {\n\t\tid?: number = null;\n\t\titems?: ServiceableItemType[] = [];\n\t\tname: string = null;\n\t\tquestions: Array<QuestionnaireQuestion> = [];\n\t\tvisible: boolean = true;\n\t\tquestion_count: number = 0;\n\t\tshort_url?: string;\n\t\tfirst_access_date?: string;\n\n\t\tconstructor(data?: Questionnaire) {\n\t\t\tconst vm = this;\n\n\t\t\tdata = data || vm;\n\n\t\t\tvm.id = data.id;\n\t\t\tvm.items = data.items;\n\t\t\tvm.name = data.name;\n\t\t\tvm.questions =  data.questions;\n\t\t\tvm.visible = data.visible;\n\t\t\tvm.question_count = data.question_count;\n\t\t\tvm.short_url = data.short_url;\n\t\t\tvm.first_access_date = data.first_access_date;\n\t\t}\n\n\t\tisNew() {\n\t\t\treturn +this.id !== +this.id;\n\t\t}\n\n\t\ttoJSONString() {\n\t\t\treturn JSON.stringify(this);\n\t\t}\n\t}\n\n\texport type QuestionType = {\n\t\tid: number;\n\t\tname?: string;\n\t}\n\n\texport type QuestionnaireTokenCreate = {\n\t\tquestionnaire: number,\n\t\tservice_request: number,\n\t\tserviceable_item: number\n\t}\n\n\texport type QuestionnaireToken = {\n\t\tid: number,\n\t\tcomments: string,\n\t\tis_valid?: boolean,\n\t\tcreated_by: User,\n\t\tresponses: QuestionnaireResponse[],\n\t\tservice_request: ServiceRequest,\n\t\tshort_url: string,\n\t\tversion: QuestionnaireVersion\n\t}\n\n\texport type QuestionnaireResponse = {\n\t\tid: number,\n\t\tcomments: string,\n\t\tresponse: string,\n\t\tquestion: QuestionnaireQuestion\n\t}\n\n\texport type QuestionnaireVersion = {\n\t\tid?: number,\n\t\tquestions: QuestionnaireQuestion[],\n\t\tquestionnaire: Questionnaire\n\t}\n\n\texport type QuestionnaireResponseCreate = {\n\t\tquestion: number,\n\t\tresponse: string\n\t}\n\n\texport class QuestionnaireQuestion {\n\t\tid?: number = null;\n\t\ttype?: QuestionType = null;\n\t\tquestion?: string = null;\n\t\tdetails?: string = null;\n\t\tchoices?: string[];\n\t\tdata?: string[];\n\t\tdisplay_id: number = null;\n\t\tphoto1?: string = null;\n\t\tphoto2?: string = null;\n\t\tphoto3?: string = null;\n\t\tphoto4?: string = null;\n\t\tvisible: boolean = true;\n\t\tresponse?: string = null;\n\n\t\tconstructor(data?: QuestionnaireQuestion) {\n\t\t\tconst vm = this;\n\n\t\t\tdata = data || vm;\n\n\t\t\tvm.id = data.id;\n\t\t\tvm.type = data.type;\n\t\t\tvm.question = data.question;\n\t\t\tvm.details = data.details;\n\t\t\tvm.data = data.data;\n\t\t\tvm.choices = data.choices;\n\t\t\tvm.display_id = data.display_id;\n\t\t\tvm.photo1 = data.photo1;\n\t\t\tvm.photo2 = data.photo2;\n\t\t\tvm.photo3 = data.photo3;\n\t\t\tvm.photo4 = data.photo4;\n\t\t\tvm.visible = data.visible;\n\t\t\tvm.response = data.response;\n\t\t}\n\t}\n}","/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule App.TemplateStore {\r\n\r\n\texport type TemplateType = 'Global' | 'Associated' | 'Proprietary';\r\n\r\n\texport class StoreTemplate {\r\n\t\tid: number;\r\n\t\tcreated: string;\r\n\t\tcreator: string;\r\n\t\tfavorited: boolean;\r\n\t\tpackages: TemplateListPackage[];\r\n\t\ttimes_loaded: number;\r\n\t\tname: string;\r\n\t\tpublic: boolean;\r\n\t\trating: { count: number, average: number };\r\n\t\tis_downloaded: boolean;\r\n\r\n\t\ttemplateType: TemplateType;\r\n\t\tconstructor(data: StoreTemplate) {\r\n\t\t\tthis.id = data.id;\r\n\t\t\tthis.created = data.created;\r\n\t\t\tthis.creator = data.creator;\r\n\t\t\tthis.favorited = data.favorited;\r\n\t\t\tthis.packages = data.packages;\r\n\t\t\tthis.times_loaded = data.times_loaded;\r\n\t\t\tthis.name = data.name;\r\n\t\t\tthis.rating = data.rating;\r\n\t\t\tthis.public = data.public;\r\n\t\t\tthis.is_downloaded = data.is_downloaded;\r\n\r\n\t\t\tif(this.public) {\r\n\t\t\t\tthis.templateType = 'Global';\r\n\t\t\t} else {\r\n\t\t\t\tthis.templateType = 'Associated';\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\texport type TemplateListPackage = {\r\n\t\tid: number;\r\n\t\tcode: string;\r\n\t\tname: string;\r\n\t}\r\n\r\n\texport type TemplateDetails = {\r\n\t\tid: number,\r\n\t\tcreated: string,\r\n\t\tcreator: string,\r\n\t\tfavorited: boolean,\r\n\t\tpackages: TemplateDetailPackage[],\r\n\t\ttimes_loaded: number,\r\n\t\tname: string\r\n\t\tpublic: boolean;\r\n\t\trating: { count: number, average: number };\r\n\t\tis_downloaded: boolean;\r\n\t}\r\n\r\n\texport type TemplateDetailPackage = {\r\n\t\tid: number;\r\n\t\tservices: TemplateDetailService[];\r\n\t\tbanner: string;\r\n\t\tdescription: string;\r\n\t\twarranty: string;\r\n\t\tmode: 'admin' | 'regular' | 'whilehere' | 'itemized';\r\n\t\tcode: string;\r\n\t\tname: string;\r\n\t\tindex: number;\r\n\t\tprices: PackagePrices;\r\n\t}\r\n\r\n\texport type TemplateDetailService = {\r\n\t\tid: number;\r\n\t\tquantity: number;\r\n\t\tservice: Service;\r\n\t\tindex: number;\r\n\t\tcode: string;\r\n\t}\r\n\r\n\texport type Service = {\r\n\t\tid: number;\r\n\t\tname: string;\r\n\t\timage: string;\r\n\t\tdescription: string;\r\n\t\tnumber: number;\r\n\t\tvideo_url: string;\r\n\t\tcode: string;\r\n\t\tdisplay_price: string;\r\n\t\twhile_here_with_agreement: string;\r\n\t\tregular_with_agreement: string;\r\n\t\twhile_here_with_out_agreement: string;\r\n\t\tregular_with_out_agreement: string;\r\n\t}\r\n\r\n\texport type DownloadTemplateOptions = {\r\n\t\tdepartment: number;\r\n\t\tname?: string;\r\n\t\tfavorited?: boolean;\r\n\t}\r\n\r\n\texport type PackagePrices = {\r\n\t\titemized: ItemizedPricing;\r\n\t\twhilehere: WhileHerePricing;\r\n\t\tregular: RegularPricing;\r\n\t}\r\n\r\n\texport class PricingBase {\r\n\t\tregular: string;\r\n\t\tservice: string;\r\n\t\tservicemonthly: string;\r\n\t}\r\n\r\n\texport type ItemizedPricing = {\r\n\t\tvolume: string;\r\n\t\twhileheremonthly: string;\r\n\t\twhilehere: string;\r\n\t\tregularmonthly: string;\r\n\t}\r\n\r\n\texport class WhileHerePricing extends PricingBase {\r\n\t\tregularnormally: string;\r\n\t\tservicenormally: string;\r\n\t}\r\n\r\n\texport class RegularPricing extends PricingBase { }\r\n}","/// <reference path=\"_references.ts\"/>\n\nmodule App.TimeEvent {\n\texport interface TimeEventUpdate {\n\t\tcustom_date?: number;\n\t\ttime_event_tag?: number|TimeEventTag;\n\t\tappointment?: number|App.Appointments.Appointment;\n\t}\n\texport interface TimeEvent extends TimeEventUpdate {\n\t\tid: number;\n\t\tdate: number;\n\t\ttime_event_tag: TimeEventTag;\n\t\tlength?: number;\n\t}\n\texport interface TimeEventTag {\n\t\tid: number;\n\t\tname: string;\n\t\tpaid: boolean;\n\t\ttag_type: TagType;\n\t\tcolor: string;\n\t}\n\texport enum TagType {\n\t\tCUSTOM = 0,\n\t\tCLOCKED_OUT = 1,\n\t\tTRAVELING = 2,\n\t\tON_SITE = 3,\n\t}\n}\n","module App.Timeclock {\n\texport interface Timeclock {\n\t\tid: number;\n\t\tduration: string;\n\t\tactive: boolean;\n\t\ttime_in: Date;\n\t\ttime_out: Date|null;\n\t\tnote: string|null;\n\t}\n}\n","/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule App.Utils {\r\n\texport type OrganizationCallsourceData = {\r\n\t\tid: number;\r\n\t\tname: string;\r\n\t\tcallsource_brand_id?: number;\r\n\t\tcallsource_enabled: boolean;\r\n\t\tsend_review_message: boolean;\r\n\t}\r\n\r\n\texport type OrganizationSRDisplayData = {\r\n\t\tid: number;\r\n\t\tname: string;\r\n\t\tlead_source_disabled: boolean;\r\n\t\tpayment_type_disabled: boolean;\r\n\t\tservice_request_type_disabled: boolean;\r\n\t\tdispatch_code_disabled: boolean;\r\n\t}\r\n\r\n\texport type OrganizationETCSettingData = {\r\n\t\tid: number;\r\n\t\tname: string;\r\n\t\tappointment_duration_matches_estimated_time: boolean;\r\n\t}\r\n\r\n\texport type OrganizationSSPTextData = {\r\n\t\tid: number;\r\n\t\tname: string;\r\n\t\tssp_price_card_text: string;\r\n\t}\r\n\r\n\texport type OrganizationFileUploadData = {\r\n\t\tid: number;\r\n\t\tname: string;\r\n\t\tmax_file_upload_size: number;\r\n\t}\r\n}","/// <reference path=\"../_references.ts\"/>\n\nmodule App.NgSortable {\n\n    import Package = App.PriceGuide.Package;\n    export type ItemPosition = {\n        dirX: number;\n        dirY: number;\n        distAxX: number;\n        distAxY: number;\n        distX: number;\n        distY: number;\n        lastDirX: number;\n        lastDirY: number;\n        lastX: number;\n        lastY: number;\n        nowX: number;\n        nowY: number;\n        offsetX: number;\n        offsetY: number;\n        startX: number;\n        startY: number;\n    }\n\n    export type OrderChangedEvent = {\n        dest: Destination;\n        source: Source;\n    }\n\n    export type Destination = {\n        index: number;\n        sortableScope: ng.IScope;\n    }\n\n    export type Source = {\n        index: number;\n        itemScope: ItemScope;\n        sortableScope: ng.IScope;\n    }\n\n    export interface ItemScope extends ng.IScope {\n        package: Package;\n    }\n}\n","/// <reference path=\"../_references.ts\"/>\n\nmodule App.WorkOrder {\n\timport ServicePlan = App.Appointments.ServicePlan;\n\timport ServiceableItem = App.ItemManagement.ServiceableItem;\n\timport Payment = App.Payment.Payment;\n\n\texport type Coupon = {\n\n\t}\n\n\texport class TrixConfig {\n\t\tpublic characterCount: string = '';\n\t\tpublic maxChrs: number = 2000;\n\n\t\tconstructor(data? : TrixConfig) {\n\t\t\tconst vm = this;\n\t\t\tvm.characterCount = data.characterCount;\n\t\t\tvm.maxChrs = data.maxChrs;\n\t\t};\n\t}\n\n\texport type SalesTax = {\n\t\tlabor_dollar: string;\n\t\tlabor_percent: string;\n\t\tmaterial_dollar: string;\n\t\tmaterial_percent: string;\n\t\ttotal: string;\n\t}\n\n\texport type ItemPosition = {\n        dirX: number;\n        dirY: number;\n        distAxX: number;\n        distAxY: number;\n        distX: number;\n        distY: number;\n        lastDirX: number;\n        lastDirY: number;\n        lastX: number;\n        lastY: number;\n        nowX: number;\n        nowY: number;\n        offsetX: number;\n        offsetY: number;\n        startX: number;\n        startY: number;\n    }\n\n\texport type Summary = {\n\t\tserviceable_items: ServiceableItem[];\n\t\tservice_plan: ServicePlan;\n\t\tfinance_plan: null;\n\t\tcoupon: Coupon;\n\t\ttotal: string;\n\t\tamount_due: string;\n\t\tpayments: Payment[];\n\t\tsales_tax: SalesTax;\n\t\tsub_total: string;\n\t\tadjustment: {\n\t\t\tdiscount: string;\n\t\t\tcode: string;\n\t\t};\n\t\tservice_plan_discount: string;\n\t}\n\n\texport class Banner {\n\t\tpublic id: number;\n\t\tpublic active: boolean;\n\t\tpublic text: string;\n\t\tpublic color: string;\n\n\t\tconstructor(data?: any) {\n\t\t\tif (data) {\n\t\t\t\tthis.active = true;\n\t\t\t\tthis.text = '';\n\t\t\t\tthis.color = '';\n\t\t\t} else {\n\t\t\t\tthis.text = data.text;\n\t\t\t\tthis.active = data.active;\n\t\t\t\tthis.id = data.id;\n\t\t\t\tthis.color = data.color;\n\t\t\t}\n\t\t}\n\t}\n\n\texport type Approval = {\n\t\tid: number;\n\t\tdata_url: string;\n\t\tprint_name: string;\n\t\tamount: string;\n\t\tcreated: string;\n\t}\n\n\texport class TermsConditions {\n\t\tpublic id: number;\n\t\tpublic visible: boolean;\n\t\tpublic note: string;\n\t\tpublic name: string;\n\t\tpublic org: number;\n\t\tpublic approved: boolean;\n\n\t\tconstructor(data?: TermsConditions) {\n\t\t\tconst vm = this;\n\t\t\tdata = data || new TermsConditions();\n\t\t\tvm.id = data.id;\n\t\t\tvm.visible = data.visible;\n\t\t\tvm.note = data.note;\n\t\t\tvm.name = data.name;\n\t\t\tvm.org = data.org;\n\t\t\tvm.approved = data.approved;\n\t\t}\n\n\t\tisNew() { return +this.id !== +this.id; }\n\n\t\ttoJSONString() {\n\t\t\treturn JSON.stringify(this);\n\t\t}\n\t}\n\n\texport class Template {\n\t\tname: string = null;\n\t\tfavorited: boolean = false;\n\t\tshareWithAssoc: boolean = false;\n\t\tpublic: boolean = false;\n\t\tupload: boolean = false;\n\n\t\tconstructor(data?: Template) {\n\t\t\tif (data) {\n\t\t\t\tthis.name = data.name;\n\t\t\t\tthis.favorited = data.favorited;\n\t\t\t\tthis.shareWithAssoc = data.shareWithAssoc;\n\t\t\t\tthis.public = data.public;\n\t\t\t}\n\n\t\t\tthis.calculateUpload();\n\t\t}\n\n\t\tcalculateUpload() {\n\t\t\tthis.upload = this.public || this.shareWithAssoc;\n\t\t}\n\n\t\treset() {\n\t\t\tthis.name = null;\n\t\t\tthis.favorited = false;\n\t\t\tthis.shareWithAssoc = false;\n\t\t\tthis.public = false;\n\t\t}\n\t}\n}","/// <reference path=\"../_references.ts\"/>\n\nmodule App.WorkOrderTemplate {\n\texport type Package = {\n\t\tid: number;\n\t\tcode: string;\n\t\tname: string;\n\t}\n\n\texport type Template = {\n\t\tid: number;\n\t\tcreator: string;\n\t\tfavorited: boolean;\n\t\tpackages: Package[];\n\t\ttimes_loaded: number;\n\t\tname: string;\n\t};\n}","/// <reference path=\"../_references.ts\"/>\n\nmodule App.Administrative.PurchaseOrder {\n\texport type PurchaseOrderType = {\n\t\tid: number;\n\t\tname: string;\n\t}\n\n\texport class PO {\n\t\tid: number = null;\n\t\tnote: string = null;\n\t\tsupplier: string = null;\n\t\tamount: number = null;\n\t\tservice_request: number = null;\n\t\taddress: number = null;\n\t\tpurchase_order_type: string = null;\n\n\t\tconstructor(data?: PO) {\n\t\t\tdata = data || this;\n\n\t\t\tthis.id = data.id;\n\t\t\tthis.note = data.note;\n\t\t\tthis.supplier = data.supplier;\n\t\t\tthis.amount = data.amount;\n\t\t\tthis.service_request = data.service_request;\n\t\t\tthis.address = data.address;\n\t\t\tthis.purchase_order_type = data.purchase_order_type;\n\t\t}\n\t}\n}","/// <reference path=\"../_references.ts\"/>\n\nmodule App.Administrative.Inventory {\n\n    import User = App.User.User;\n\texport type Item = {\n        id: number;\n        name: string;\n        description: string;\n        favorited: boolean;\n    }\n\n    export type SearchParams = {\n        search?: string;\n        inventory_group?: number;\n        inventory_sets?: number;\n        sub_category?: number;\n        category?: number;\n        service_request?: number;\n        favorites?: boolean;\n        size?: number;\n        page?: number;\n    }\n\n    export type Inventory = {\n        id: number;\n        quantity: number;\n        inventory: Item;\n        cost: number;\n    }\n\n\texport type InventoryReplenishment = {\n        id: number;\n        service_request: number;\n\t\tuser: User;\n        appointment: {id: number, technician: Technician};\n        inventories: Inventory[];\n        truck: string;\n        total: number;\n        created: string;\n        warehouse: Warehouse;\n    }\n\n    export type Technician = {\n        id: number;\n        full_name: string;\n    }\n\n    export type InventoryDetails = {\n        id: number;\n        name: string;\n        image: string;\n        category: { id: number, name: string };\n        sub_category: { id: number, name: string };\n        description: string;\n        inventory_group: InventoryGroup;\n        inventory_sets: InventorySet[];\n        supplier: string;\n        cost: number;\n        favorited: boolean;\n        quantity: number;\n        warehouse: Warehouse;\n    }\n\n    export type InventoryGroup = {\n        id: number;\n        categories: { id: number, name: string }[];\n        name: string;\n    }\n\n    export type InventoryCategory = {\n        id: number;\n        name: string;\n    }\n\n    export type InventorySubCategory = {\n        id: number;\n        name: string;\n        category: InventoryCategory;\n    }\n\n    export type InventoryReplenishmentCreate = {\n        inventories: InventoryCreate[];\n\t\tappointment?: number;\n\t\twarehouse?: number;\n\t\tuser?: User;\n    }\n\n    export type InventoryCreate = {\n        quantity: number;\n        inventory: number;\n    }\n\n    export type CustomInventory = {\n\t\tname: string;\n\t\tcost: number;\n\t\tservice_request: number;\n\t}\n\n\texport type InventorySet = {\n\t\tid: number;\n\t\tname: string;\n\t}\n\n\texport type Warehouse = {\n\t\tid: number;\n\t\tname: string;\n\t\tinventory_set: InventorySet;\n\t\tuser: User;\n\t}\n}","/// <reference path=\"../_references.ts\"/>\n\nmodule App.Administrative.SendInvoice {\n\texport type InvoiceResponse = {\n\t\tmessage: string;\n\t}\n\n\texport type Invoice = {\n\t\tlatest_invoice_id: Number;\n\t\tnote: string;\n\t}\n}","/// <reference path=\"../_references.ts\"/>\n\nmodule App.Administrative.Reviews {\n\texport type RequestReviewResponse = {\n\t\tstatus: string;\n\t\tmessage: string;\n\t}\n\n\texport type RequestReviewData = {\n\t\tservice_request: number;\n\t\temail?: string;\n\t\tphone?: string;\n\t}\n}","/// <reference path=\"../_references.ts\"/>\n\nmodule App.Administrative.Tags {\n\texport type TagColor = {\n\t\tid: number;\n\t\thex: string;\n\t\trgb: string;\n\t}\n\n\texport type Tag = {\n\t\tid: number;\n\t\tname: string;\n\t\ttag_color: TagColor;\n\t}\n}","/// <reference path=\"../_references.ts\"/>\n\nmodule App.Administrative.VendorInventory {\n    export interface Tag {\n        id: number;\n        name: string;\n        display_id: number;\n    }\n    export interface TagGroup {\n        id: number;\n        name: string;\n        display_id: number;\n        tags: Tag[];\n    }\n    export interface SerializedItem {\n        id: number;\n        serial: string|null;\n        description: string|null;\n    }\n    export interface WarehouseCountMap {\n        [id: number]: WarehouseCount;\n    }\n    export interface WarehouseCount {\n        id: number;\n        count: number;\n        serialized_items: SerializedItem[];\n        warehouse: {\n            id: number;\n            name: string;\n        };\n    }\n    export interface VendorInventory {\n        id: number;\n        name: string;\n        description: string|null;\n        serialized: boolean;\n        expanded?: boolean;\n        updating?: boolean;\n        favourite: boolean;\n        warehouse_counts: WarehouseCountMap;\n    }\n    export interface VendorInventoryReplenishment {\n        id: number;\n    }\n}\n","/// <reference path=\"./_references.ts\"/>\r\n\r\nmodule App.Administrative {\r\n\r\n\texport class AdministrativeService {\r\n\t\tconstructor(\r\n\t\t\tprivate $http: ng.IHttpService,\r\n\t\t\tpublic Constants: IConstants\r\n\t\t) {\r\n\r\n\t\t}\r\n\r\n\t\taddImages(serviceRequestId: number, data: ServiceRequestPhoto): ng.IHttpPromise<ServiceRequestPhoto> {\r\n\t\t\treturn this.$http.post(`${this.Constants.apiUrl}servicerequest/${serviceRequestId}/image`, data);\r\n\t\t}\r\n\r\n\t\tGetAppointmentChecklist(appointmentId: number): ng.IHttpPromise<AppointmentChecklist> {\r\n\t\t\treturn this.$http.get(`${this.Constants.apiUrl}appointment/${appointmentId}/checklist`);\r\n\t\t}\r\n\r\n\t\tgetGameConfig(): ng.IHttpPromise<GameConfig> {\r\n\t\t\treturn <ng.IHttpPromise<GameConfig>>this.$http.get(`${this.Constants.apiUrl}organization/current/gameconfig`, {\r\n\t\t\t\tparams: {\r\n\t\t\t\t\t'quiet': 1,\r\n\t\t\t\t\t'show_ranks': 1\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tgetSRscore(serviceRequestId: number, params?: Object): ng.IHttpPromise<SRScore> {\r\n\t\t\treturn <ng.IHttpPromise<SRScore>>this.$http.get(`${this.Constants.apiUrl}servicerequest/${serviceRequestId}/score`, { params: params || {} });\r\n\t\t}\r\n\r\n\t\tgetTechScore(): ng.IHttpPromise<TechScore> {\r\n\t\t\treturn <ng.IHttpPromise<TechScore>>this.$http.get(`${this.Constants.apiUrl}technician/current/score`);\r\n\t\t}\r\n\r\n\t\tUpdateAppointmentChecklist(appointmentId: number, checklist: AppointmentChecklist): ng.IHttpPromise<AppointmentChecklist> {\r\n\t\t\treturn this.$http.put(`${this.Constants.apiUrl}appointment/${appointmentId}/checklist`, checklist);\r\n\t\t}\r\n\r\n\t\tGetServiceRequestChecklist(serviceRequestId: number): ng.IHttpPromise<ServiceRequestChecklist> {\r\n\t\t\treturn this.$http.get(`${this.Constants.apiUrl}servicerequest/${serviceRequestId}/checklist`);\r\n\t\t}\r\n\r\n\t\tUpdateServiceRequestChecklist(serviceRequestId: number, checklist: ServiceRequestChecklist): ng.IHttpPromise<ServiceRequestChecklist> {\r\n\t\t\treturn this.$http.put(`${this.Constants.apiUrl}servicerequest/${serviceRequestId}/checklist`, checklist);\r\n\t\t}\r\n\r\n\t\tCreateServiceRequestNote(serviceRequestId: number, note: string): ng.IHttpPromise<Note> {\r\n\t\t\treturn this.$http.post(`${this.Constants.apiUrl}servicerequest/${serviceRequestId}/notes`, { description: note })\r\n\t\t}\r\n\r\n\t\tGetServiceRequestPhotos(serviceRequestId: number): ng.IHttpPromise<ServiceRequestPhoto[]> {\r\n\t\t\treturn this.$http.get(`${this.Constants.apiUrl}servicerequest/${serviceRequestId}/image`);\r\n\t\t}\r\n\r\n\t\tUpdateServiceRequestPhotos(serviceRequestId: number, photo: ServiceRequestPhoto): ng.IHttpPromise<ServiceRequestPhoto[]> {\r\n\t\t\treturn this.$http.put(`${this.Constants.apiUrl}servicerequest/${serviceRequestId}/image/${photo.id}`, photo);\r\n\t\t}\r\n\r\n\t\tDeleteServiceRequestPhoto(serviceRequestId: number, imageId: number): ng.IHttpPromise<ServiceRequestPhoto[]> {\r\n\t\t\treturn this.$http.delete(`${this.Constants.apiUrl}servicerequest/${serviceRequestId}/image/${imageId}`);\r\n\t\t}\r\n\r\n\t\tpublic static Factory() {\r\n\t\t\tlet instance = ($http: ng.IHttpService, Constants: IConstants) => {\r\n\t\t\t\treturn new AdministrativeService($http, Constants);\r\n\t\t\t};\r\n\r\n\t\t\tinstance.$inject = ['$http', 'Constants'];\r\n\r\n\t\t\treturn instance;\r\n\t\t}\r\n\t}\r\n}","/// <reference path=\"../_references.ts\"/>\nmodule App.Appointments {\n\timport LocationService = App.Helpers.LocationService;\n\n\texport class AppointmentService {\n\t\tprivate statusListeners: Array<() => void> = [];\n\n\t\tconstructor(\n\t\t\tpublic $http: ng.IHttpService,\n\t\t\tpublic Constants: IConstants,\n\t\t\tpublic LocationService: LocationService,\n\t\t\tpublic $q: ng.IQService\n\t\t){}\n\n\t\tpublic addStatusListener(listener: () => void): void {\n\t\t\tthis.statusListeners.push(listener);\n\t\t}\n\n\t\tpublic removeStatusListener(listener: () => void): void {\n\t\t\tconst idx = this.statusListeners.indexOf(listener);\n\t\t\tif (idx >= 0) {\n\t\t\t\tthis.statusListeners.splice(idx, 1);\n\t\t\t}\n\t\t}\n\n\t\tpublic fetch(apptId: number, params?: any): ng.IHttpPromise<Appointment> {\n\t\t\treturn this.$http.get(this.Constants.apiUrl + 'appointment/' + apptId, {\n\t\t\t\tparams: params || {},\n\t\t\t});\n\t\t}\n\n\t\tpublic fetchAll(userId: number|'current', params?: any): ng.IHttpPromise<{ today: Appointment[], past: Appointment[] }> {\n\t\t\treturn this.$http.get(this.Constants.apiUrl + `user/${userId}/appointments`, {\n\t\t\t\tparams: params || {},\n\t\t\t});\n\t\t}\n\n\t\tpublic create(appointment: Appointment): ng.IHttpPromise<Appointment> {\n\t\t\treturn this.$http.post(\n\t\t\t\tthis.Constants.apiUrl + 'appointment/',\n\t\t\t\tangular.extend({ create_event: 1 }, appointment)\n\t\t\t);\n\t\t}\n\n\t\tpublic updateStatus(apptId: number, status: string): ng.IHttpPromise<Appointment> {\n\t\t\treturn this.LocationService.getLocation()\n\t\t\t\t.then((coords: Coordinates): ng.IHttpPromise<Appointment> => {\n\t\t\t\t\treturn this.$http.put(this.Constants.apiUrl + 'appointment/' + apptId, {\n\t\t\t\t\t\t\tappointment_status: status,\n\t\t\t\t\t\t\tpaused: false,\n\t\t\t\t\t\t\tlatitude: coords.latitude,\n\t\t\t\t\t\t\tlongitude: coords.longitude,\n\t\t\t\t\t\t\tcreate_event: 1,\n\t\t\t\t\t\t}, {\n\t\t\t\t\t\t\tparams: {\n\t\t\t\t\t\t\t\tquiet: 1,\n\t\t\t\t\t\t\t\tshow_status: 1,\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.then((r: ng.IHttpResponse<Appointment>) => {\n\t\t\t\t\t\t\tthis.statusListeners.forEach(l => l());\n\t\t\t\t\t\t\treturn r;\n\t\t\t\t\t\t});\n\t\t\t\t});\n\t\t}\n\n\t\tpublic updateEtc(apptId: number, etc: string, duration: number): ng.IHttpPromise<Appointment> {\n\t\t\treturn this.LocationService.getLocation().then((coords: Coordinates): ng.IHttpPromise<Appointment> => {\n\t\t\t\treturn this.$http.put(this.Constants.apiUrl + 'appointment/' + apptId, {\n\t\t\t\t\testimated_completion_time: etc,\n\t\t\t\t\tscheduled_duration: duration,\n\t\t\t\t\tlatitude: coords.latitude,\n\t\t\t\t\tlongitude: coords.longitude,\n\t\t\t\t}, {\n\t\t\t\t\tparams: {\n\t\t\t\t\t\tquiet: 1,\n\t\t\t\t\t\tshow_etc: 1,\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\tpublic sendCustomerText(apptId: number, status: string, additionalText?: string): ng.IHttpPromise<Appointment> {\n\t\t\treturn this.$http.post(this.Constants.apiUrl + 'appointment/' + apptId + '/textcustomer', {\n\t\t\t\tstatus: status,\n\t\t\t\tadditional_text: additionalText\n\t\t\t});\n\t\t}\n\n\t\tpublic sendCustomerSRText(srId: number, customNumber?: string, status?: string): ng.IHttpPromise<ServiceRequest> {\n\t\t\treturn this.$http.post(this.Constants.apiUrl + 'servicerequest/' + srId + '/textcustomer', {\n\t\t\t\tcustom_number: customNumber,\n\t\t\t\tstatus: status\n\t\t\t});\n\t\t}\n\n\t\tpublic createSRQuestionnaire(srId: number): ng.IHttpPromise<ServiceRequest> {\n\t\t\treturn this.$http.post(this.Constants.apiUrl + 'servicerequest/' + srId + '/questionnaire',{});\n\t\t}\n\n\t\tpublic pauseAppointment(apptId: number): ng.IHttpPromise<void> {\n\t\t\treturn this.LocationService.getLocation().then((coords: Coordinates): ng.IHttpPromise<void> => {\n\t\t\t\treturn this.$http.put(this.Constants.apiUrl + 'appointment/' + apptId, {\n\t\t\t\t\tpaused: true,\n\t\t\t\t\tlatitude: coords.latitude,\n\t\t\t\t\tlongitude: coords.longitude\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\tpublic pauseAll(userId: number): ng.IHttpPromise<Appointment[]> {\n\t\t\treturn this.LocationService.getLocation().then((coords: Coordinates): ng.IHttpPromise<Appointment[]> => {\n\t\t\t\treturn this.$http.put(this.Constants.apiUrl + `user/${userId}/appointments/pause`, {\n\t\t\t\t\tlatitude: coords.latitude,\n\t\t\t\t\tlongitude: coords.longitude\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\tstatic factory() {\n\t\t\tlet instance = ($http: ng.IHttpService, Constants: IConstants, LocationService: LocationService, $q: ng.IQService) =>\n\t\t\t\tnew AppointmentService($http, Constants, LocationService, $q);\n\n\t\t\tinstance.$inject = ['$http', 'Constants', 'LocationService', '$q'];\n\n\t\t\treturn instance;\n\t\t}\n\t}\n}\n","/// <reference path=\"../_references.ts\"/>\n\nmodule App.Appointments {\n\tinterface LocalStorage extends ng.local.storage.ILocalStorageService {\n\t\tselectedAppointmentId: number;\n\t}\n\n\texport class SelectedAppointment implements Appointment {\n\t\tpublic NO_APPOINTMENT: string  = 'Warning: No appointment set.';\n\n\t\t[key: string]: any;\n\n\t\tid: number;\n\t\tappointment_status: string;\n\t\tservice_request: ServiceRequest;\n\t\tscheduled_date: string;\n\t\tscheduled_time: string;\n\t\tscheduled_duration: number;\n\t\testimated_completion_time: string;\n\t\tservice_plan: ServicePlan;\n\t\tis_partial?: boolean = true;\n\n\t\tprivate isDataSet = false;\n\t\tprivate loading?: number = null;\n\t\tprivate loadCallbacks: Array<(appointment: Appointment) => any> = [];\n\t\tprivate callbacks: Array<(appointment: Appointment) => any> = [];\n\n\t\tconstructor(\n\t\t\tprivate $localStorage: LocalStorage,\n\t\t\tprivate AppointmentService: AppointmentService,\n\t\t\tprivate $q: ng.IQService\n\t\t) {\n\n\t\t}\n\n\t\tprivate noAppointment(): ng.IPromise<any> {\n\t\t\tlet rejection = this.$q.defer<any>();\n\t\t\trejection.reject(this.NO_APPOINTMENT);\n\t\t\treturn rejection.promise;\n\t\t}\n\n\t\tgetAppointment(): ng.IPromise<Appointment> {\n\t\t\tif (this.isSet() && !this.is_partial) {\n\t\t\t\treturn this.$q.when(this);\n\t\t\t}\n\n\t\t\treturn this.loadFromStorage();\n\t\t}\n\n\t\tset(appointment: Appointment, full?: boolean): void {\n\t\t\tthis.$localStorage.selectedAppointmentId = appointment.id;\n\n\t\t\tthis.id = appointment.id;\n\t\t\tthis.appointment_status = appointment.appointment_status;\n\t\t\tthis.service_request = appointment.service_request;\n\t\t\tthis.scheduled_date = appointment.scheduled_date;\n\t\t\tthis.scheduled_time = appointment.scheduled_time;\n\t\t\tthis.scheduled_duration = appointment.scheduled_duration;\n\t\t\tthis.estimated_completion_time = appointment.estimated_completion_time;\n\t\t\tthis.is_partial = !full;\n\n\t\t\tthis.isDataSet = true;\n\n\t\t\tthis.callbacks.forEach((callback) => {\n\t\t\t\tcallback.call(null, this);\n\t\t\t});\n\t\t}\n\n\t\tsetOnly(keys: string[], appointment: Appointment): void {\n\t\t\tif (this.id !== appointment.id) {\n\t\t\t\tthis.clear();\n\t\t\t}\n\n\t\t\tthis.id = appointment.id;\n\t\t\tthis.isDataSet = true;\n\t\t\tkeys.forEach((key) => this[key] = appointment[key]);\n\t\t}\n\n\t\tclear(): void {\n\t\t\tthis.id = null;\n\t\t\tthis.appointment_status = null;\n\t\t\tthis.service_request = null;\n\t\t\tthis.scheduled_date = null;\n\t\t\tthis.scheduled_time = null;\n\t\t\tthis.estimated_completion_time = null;\n\t\t\tthis.scheduled_duration = null;\n\n\t\t\tthis.isDataSet = false;\n\t\t\tthis.is_partial = true;\n\n\t\t\tthis.$localStorage.selectedAppointmentId = null;\n\n\t\t\tthis.callbacks.forEach((callback) => {\n\t\t\t\tcallback.call(null, this);\n\t\t\t});\n\t\t}\n\n\t\tisSet(): boolean {\n\t\t\treturn this.isDataSet;\n\t\t}\n\n\t\tloadFromStorage(): ng.IPromise<Appointment> {\n\t\t\tconst vm = this;\n\n\t\t\tif (vm.$localStorage.selectedAppointmentId !== null && angular.isDefined(vm.$localStorage.selectedAppointmentId)) {\n\t\t\t\tconst id = vm.$localStorage.selectedAppointmentId;\n\t\t\t\tif (vm.loading === id) {\n\t\t\t\t\tvar defer = this.$q.defer();\n\t\t\t\t\tthis.loadCallbacks.push(defer.resolve.bind(defer));\n\t\t\t\t\treturn <ng.IPromise<Appointment>>defer.promise;\n\t\t\t\t}\n\n\t\t\t\tvm.loading = id;\n\n\t\t\t\treturn vm.AppointmentService.fetch(id, {\n\t\t\t\t\tshow_tags: 1,\n\t\t\t\t\tshow_files: 1,\n\t\t\t\t}).then((response) => {\n\t\t\t\t\tvm.set(response.data, true);\n\t\t\t\t\tvm.loading = null;\n\n\t\t\t\t\tthis.loadCallbacks.forEach((callback) => {\n\t\t\t\t\t\tcallback.call(null, this);\n\t\t\t\t\t});\n\t\t\t\t\tthis.loadCallbacks = [];\n\n\t\t\t\t\treturn this;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn this.noAppointment();\n\t\t}\n\n\t\tupdateAppointmentEtc(etc: string, duration: number, skipUpdate?: boolean): ng.IPromise<Appointment> {\n\t\t\tif (!this.id) {\n\t\t\t\treturn this.noAppointment();\n\t\t\t}\n\n\t\t\treturn this.AppointmentService.updateEtc(this.id, etc, duration).then((response) => {\n\t\t\t\tif(!skipUpdate) {\n\t\t\t\t\tthis.setOnly(['estimated_completion_time', 'scheduled_duration'], response.data);\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t});\n\t\t}\n\n\t\tupdateAppointmentStatus(status: string, skipUpdate?: boolean): ng.IPromise<Appointment> {\n\t\t\tif (!this.id) {\n\t\t\t\treturn this.noAppointment();\n\t\t\t}\n\n\t\t\treturn this.AppointmentService.updateStatus(this.id, status).then((response) => {\n\t\t\t\tif(!skipUpdate) {\n\t\t\t\t\tthis.setOnly(['appointment_status'], response.data);\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t});\n\t\t}\n\n\t\tsendCustomerText(status: string, additionalText?: string) {\n\t\t\tthis.AppointmentService.sendCustomerText(this.id, status, additionalText);\n\t\t}\n\n\t\tpauseAppointment(): ng.IHttpPromise<void> {\n\t\t\treturn this.AppointmentService.pauseAppointment(this.id);\n\t\t}\n\n\t\tgetLocation() {\n\t\t\tconst vm = this,\n\t\t\t\tsr = vm.service_request;\n\n\t\t\tlet location: Location,\n\t\t\t\tlocationName = '';\n\n\t\t\tif(sr) {\n\t\t\t\tif(sr.location) {\n\t\t\t\t\tlocation = sr.location;\n\t\t\t\t} else if(sr.service_address && sr.service_address.location) {\n\t\t\t\t\tlocation = sr.service_address.location;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(location) {\n\t\t\t\tlocationName = location.name;\n\t\t\t}\n\n\t\t\treturn locationName;\n\t\t}\n\n\t\tgetHours() {\n\t\t\tconst vm = this,\n\t\t\t\tsr = vm.service_request;\n\t\t\tlet hours = 'Emergency Service';\n\n\t\t\tif(sr) {\n\t\t\t\tif(sr.customer && sr.customer.rate_mode) {\n\t\t\t\t\tif(sr.customer.rate_mode.regular) {\n\t\t\t\t\t\thours = 'Business Hours';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn hours;\n\t\t}\n\n\t\tgetEmail() {\n\t\t\tconst sr = this.service_request;\n\n\t\t\tlet email: Email,\n\t\t\t\temailAddress = 'No email found';\n\n\t\t\tif(sr) {\n\t\t\t\tif(sr.customer && sr.customer.emails) {\n\t\t\t\t\temail = sr.customer.emails[0];\n\t\t\t\t\tif(email) {\n\t\t\t\t\t\temailAddress = email.email;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn emailAddress;\n\t\t}\n\n\t\tgetCustomerName(): string {\n\t\t\tconst customer = this.service_request && this.service_request.customer;\n\t\t\tif (!customer) {\n\t\t\t\treturn '';\n\t\t\t}\n\n\t\t\tconst hasName = Boolean(customer.first_name + customer.last_name);\n\t\t\tlet name = customer.company_name ? (customer.company_name + (hasName ? ': ' : '')) : '';\n\t\t\tname += customer.first_name ? (customer.first_name + (customer.last_name ? ' ' : '')) : '';\n\t\t\tname += customer.last_name ? customer.last_name : '';\n\n\t\t\treturn name;\n\t\t}\n\n\t\tgetServiceAddress(): string {\n\t\t\tconst sr = this.service_request;\n\n\t\t\treturn sr && sr.service_address\n\t\t\t\t? sr.service_address.address\n\t\t\t\t: '';\n\t\t}\n\n\t\tgetFirstPhone(mobileOnly?: boolean): PhoneNumber {\n\t\t\tconst sr = this.service_request;\n\n\t\t\tif (sr && sr.customer && sr.customer.phone_numbers && sr.customer.phone_numbers.length) {\n\t\t\t\tif (mobileOnly) {\n\t\t\t\t\treturn sr.customer.phone_numbers.find(number => {\n\t\t\t\t\t\treturn number.send_text === true;\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\treturn sr.customer.phone_numbers[0];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn null;\n\t\t}\n\n\t\tgetPhone(format?: boolean, mobileOnly?: boolean) {\n\t\t\tconst phone: PhoneNumber = this.getFirstPhone(mobileOnly);\n\n\t\t\treturn phone\n\t\t\t\t? format\n\t\t\t\t\t? this.formatPhone(phone.number)\n\t\t\t\t\t: phone.number\n\t\t\t\t: 'No phone found';\n\t\t};\n\n\t\tformatPhone(number: string) {\n\t\t\treturn number && number.length > 5\n\t\t\t\t? number.replace(/(\\d\\d\\d)(\\d\\d\\d)(\\d\\d\\d\\d)/, '($1) $2-$3')\n\t\t\t\t: number;\n\t\t}\n\n\t\taddListener(callback: (appointment: Appointment) => any) {\n\t\t\tthis.callbacks.push(callback);\n\t\t}\n\n\t\tremoveListener(callback: () => any) {\n\t\t\tconst index = this.callbacks.indexOf(callback);\n\t\t\tif (index >= 0) {\n\t\t\t\tthis.callbacks.splice(index, 1);\n\t\t\t}\n\t\t}\n\n\n\t\tpublic static Factory() {\n\t\t\tlet instance = ($localStorage: LocalStorage, AppointmentService: AppointmentService, $q: ng.IQService) => {\n\t\t\t\treturn new SelectedAppointment($localStorage, AppointmentService, $q);\n\t\t\t};\n\n\t\t\tinstance.$inject = ['$localStorage', 'AppointmentService', '$q'];\n\n\t\t\treturn instance;\n\t\t}\n\t}\n}","/// <reference path=\"../_references.ts\"/>\nmodule App {\n\texport class AuthInterceptor {\n\t\trequest: (config: any) => ng.IQService;\n\t\trequestError: (rejection: any) => ng.IPromise<never>;\n\t\tresponse: (response: any) => ng.IQService;\n\t\tresponseError: (rejection: any) => ng.IPromise<never>;\n\n\t\tconstructor(\n\t\t\tprivate $q: ng.IQService,\n\t\t\tprivate $injector: ng.auto.IInjectorService\n\t\t) {\n\t\t\tthis.request = (config) => {\n\t\t\t\treturn config || $q.when(config);\n\t\t\t};\n\n\t\t\tthis.requestError = (rejection) => {\n\t\t\t\treturn this.$q.reject(rejection);\n\t\t\t};\n\n\t\t\tthis.response = (response) => {\n\t\t\t\treturn response || $q.when(response);\n\t\t\t};\n\n\t\t\tthis.responseError = (rejection) => {\n\t\t\t\tif(rejection.status === 401) {\n\t\t\t\t\tconst loginService = <App.Login.LoginService> $injector.get('LoginService');\n\n\t\t\t\t\tloginService.destroySession();\n\t\t\t\t}\n\n\t\t\t\treturn $q.reject(rejection);\n\t\t\t}\n\t\t}\n\n\t\tstatic factory() {\n\t\t\tlet instance = ($q: ng.IQService, $injector: ng.auto.IInjectorService) =>\n\t\t\t\tnew AuthInterceptor($q, $injector);\n\n\t\t\tinstance.$inject = ['$http', '$injector'];\n\n\t\t\treturn instance;\n\t\t}\n\t}\n\n\tangular.module('authInterceptor', [])\n\t\t.factory('AuthInterceptor', ['$q', '$injector', AuthInterceptor.factory()])\n\t\t.config(['$httpProvider', function($httpProvider: ng.IHttpProvider) {\n\t\t\t$httpProvider.interceptors.push('AuthInterceptor');\n\t\t}]);\n}\n","/// <reference path=\"_references.ts\"/>\n\nmodule App.Chat {\n\ttype fnUnread = (total: number, users: number[]) => void;\n\n\texport class ChatService {\n\t\tprivate unreadListeners: fnUnread[] = [];\n\t\tprivate totalUnread: number;\n\t\tprivate curUnread: number[] = [];\n\t\tprivate init: boolean = false;\n\n\t\tconstructor(\n\t\t\tprivate $wamp: $wamp,\n\t\t\tprotected $q: ng.IQService,\n\t\t\tprotected $timeout: ng.ITimeoutService,\n\t\t\tpublic $http: ng.IHttpService,\n\t\t\tpublic Constants: IConstants\n\t\t) {\n\t\t\t$timeout(() => {\n\t\t\t\tthis.$wamp.open();\n\n\t\t\t\tthis.$wamp.subscribe('app.unread', (args: any) => {\n\t\t\t\t\tthis.init = true;\n\t\t\t\t\tthis.totalUnread = args[0].count;\n\t\t\t\t\tthis.curUnread = args[0].users;\n\t\t\t\t\tthis.unreadListeners.forEach(fn => fn(this.totalUnread, this.curUnread));\n\t\t\t\t});\n\t\t\t}, 0);\n\t\t}\n\n\t\tpublic subscribeToUnread(fn: fnUnread): void {\n\t\t\tthis.unreadListeners.push(fn);\n\t\t\tif (this.init) {\n\t\t\t\tfn(this.totalUnread, this.curUnread);\n\t\t\t}\n\t\t}\n\n\t\tpublic unsubscribeFromUnread(fn: fnUnread): void {\n\t\t\tlet index: number;\n\t\t\twhile((index = this.unreadListeners.indexOf(fn)) >= 0) {\n\t\t\t\tthis.unreadListeners.splice(index, 1);\n\t\t\t}\n\t\t}\n\n\t\tpublic subscribeToChat(\n\t\t\tuserId: number,\n\t\t\tfnReceive: (m: Message[]) => void\n\t\t): ng.IPromise<Subscription> {\n\t\t\treturn this.$wamp\n\t\t\t\t.subscribe('app.chat.' + userId, fnReceive);\n\t\t}\n\n\t\tpublic unsubscribeFromChat(\n\t\t\tsub: Subscription\n\t\t): ng.IPromise<void> {\n\t\t\tif (!this.$wamp) {\n\t\t\t\treturn this.$q.when();\n\t\t\t}\n\n\t\t\treturn this.$wamp.unsubscribe(sub);\n\t\t}\n\n\t\tpublic getUsers(): ng.IPromise<ChatUser[]> {\n\t\t\treturn this.$wamp.call('app.users')\n\t\t\t\t.then(r => [...r.args]);\n\t\t}\n\n\t\tpublic sendMessage(\n\t\t\tmessage: string,\n\t\t\tuserId: number\n\t\t): ng.IPromise<void> {\n\t\t\treturn this.$wamp.publish('app.chat', [{\n\t\t\t\tmessage: message,\n\t\t\t\trecipient: userId\n\t\t\t}], null, {\n\t\t\t\tacknowledge: true\n\t\t\t});\n\t\t}\n\n\t\tpublic markRead(\n\t\t\tuserId: number\n\t\t): ng.IPromise<void> {\n\t\t\treturn this.$wamp.call('app.read', [userId, ''])\n\t\t\t\t.then(() => {});\n\t\t}\n\n\t\tpublic getMessages(\n\t\t\tuserId: number,\n\t\t\tlastRetrieved: string\n\t\t): ng.IPromise<Message[]> {\n\t\t\treturn this.$wamp.call('app.messages', [userId, lastRetrieved])\n\t\t\t\t.then(r => r && r.args || []);\n\t\t}\n\n\t\tpublic getOldMessages(\n\t\t\tuserId: number,\n\t\t\tdate: string\n\t\t): ng.IPromise<Message[]> {\n\t\t\treturn this.$wamp.call('app.messages.before', [userId, date])\n\t\t\t\t.then(r => r && r.args || []);\n\t\t}\n\t}\n}","/// <reference path=\"../_references.ts\"/>\n\nmodule App.Customer {\n\timport Technician = App.Administrative.Inventory.Technician;\n\timport ServiceRequest = App.Customer.ServiceRequest;\n\timport ServiceRequestType = App.Appointments.ServiceRequestType;\n\timport DispatchCode = App.Customer.DispatchCode;\n\timport PaymentType = App.Payment.PaymentType;\n\timport LeadSource = App.Appointments.LeadSource;\n\timport File = App.Appointments.File;\n\n\texport class CustomerService {\n\n\t\tconstructor(\n\t\t\tpublic $http: ng.IHttpService,\n\t\t\tpublic Constants: IConstants\n\t\t){}\n\n\t\tpublic fetch(customerID: number, params?: Object): ng.IHttpPromise<Customer> {\n\t\t\treturn this.$http.get(`${this.Constants.apiUrl}customer/${customerID}`, {\n\t\t\t\tparams: params\n\t\t\t});\n\t\t}\n\n\t\tpublic fetchTechnicians(): ng.IHttpPromise<Technician[]> {\n\t\t\treturn this.$http.get(`${this.Constants.apiUrl}technician`);\n\t\t}\n\n\t\tpublic fetchDispatchCodes(): ng.IHttpPromise<DispatchCode[]> {\n\t\t\treturn this.$http.get(`${this.Constants.apiUrl}dispatchcode`);\n\t\t}\n\n\t\tpublic fetchServiceRequestTypes(): ng.IHttpPromise<ServiceRequestType[]> {\n\t\t\treturn this.$http.get(`${this.Constants.apiUrl}servicerequesttype`);\n\t\t}\n\n\t\tpublic fetchPaymentTypes(): ng.IHttpPromise<PaymentType[]> {\n\t\t\treturn this.$http.get(`${this.Constants.apiUrl}paymenttype`);\n\t\t}\n\n\t\tpublic fetchLeadSource(): ng.IHttpPromise<LeadSource[]> {\n\t\t\treturn this.$http.get(`${this.Constants.apiUrl}leadsource`);\n\t\t}\n\n\t\tpublic fetchSalesmen(): ng.IHttpPromise<LeadSource[]> {\n\t\t\treturn this.$http.get(`${this.Constants.apiUrl}salesman`);\n\t\t}\n\n\t\tpublic fetchCustomerAddress(customerID: number): ng.IHttpPromise<Address[]> {\n\t\t\treturn this.$http.get(`${this.Constants.apiUrl}customer/${customerID}/billingaddress`);\n\t\t}\n\n\t\tpublic getServiceAddressList(id: number, params?: Object): ng.IHttpPromise<Address[]> {\n\t\t\treturn this.$http.get(`${this.Constants.apiUrl}customer/${id}/serviceaddress`, {\n\t\t\t\tparams: params || {}\n\t\t\t});\n\t\t}\n\n\t\tpublic search(query: string): ng.IHttpPromise<Array<Customer>> {\n\t\t\treturn this.$http.get(this.Constants.apiUrl + 'customer', {\n\t\t\t\tparams: {\n\t\t\t\t\tquery: query\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tstatic factory() {\n\t\t\tlet instance = ($http: ng.IHttpService, Constants: IConstants) =>\n\t\t\t\tnew CustomerService($http, Constants);\n\n\t\t\tinstance.$inject = ['$http', 'Constants'];\n\n\t\t\treturn instance;\n\t\t}\n\n\t\tpublic create(customer: Customer): ng.IHttpPromise<Customer> {\n\t\t\treturn this.$http.post(this.Constants.apiUrl + 'customer', customer);\n\t\t}\n\n\t\tpublic createEmail(customerId: number, email: string): ng.IHttpPromise<Email> {\n\t\t\treturn this.$http.post(`${this.Constants.apiUrl}customer/${customerId}/email`,\n\t\t\t\t{\n\t\t\t\t\temail: email\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\n\t\tpublic createPhone(customerId: number, data: { number: string; send_text: boolean }): ng.IHttpPromise<PhoneNumber> {\n\t\t\treturn this.$http.post(`${this.Constants.apiUrl}customer/${customerId}/phonenumber`, data);\n\t\t}\n\n\t\tpublic createServiceRequest(sr: ServiceRequest): ng.IHttpPromise<ServiceRequest> {\n\t\t\tconst vm = this;\n\n\t\t\treturn vm.$http.post(`${this.Constants.apiUrl}servicerequest`, sr);\n\t\t}\n\n\t\tpublic update(customer: Customer): ng.IHttpPromise<Customer> {\n\t\t\treturn this.$http.put(this.Constants.apiUrl + `customer/${customer.id}`, customer);\n\t\t}\n\n\t\tpublic addFile(cId: number, file: File): ng.IHttpPromise<File> {\n\t\t\treturn this.$http.post(this.Constants.apiUrl + `customer/${cId}/file`, file);\n\t\t}\n\t}\n}\n","/// <reference path=\"../_references.ts\"/>\n\n\nmodule App.Customer {\n\timport Customer = App.Customer.Customer;\n\timport Location = App.DispatchService.Location;\n\n\tinterface LocalStorage extends ng.local.storage.ILocalStorageService {\n\t\tselectedCustomerId: number;\n\t}\n\n\texport class SelectedCustomer implements Customer {\n\t\tid: number = null;\n\t\tpriority: number = 3;\n\t\tfull_name: string = null;\n\t\tcompany_name: string = null;\n\t\tservice_addresses: Array<Address> = [];\n\t\tfirst_name: string = null;\n\t\tlast_name: string = null;\n\t\tcontract_rate: boolean = false;\n\t\temails: Array<Email> = [];\n\t\tphone_numbers: Array<PhoneNumber> = [];\n\t\tbilling_addresses: Array<Address> = [];\n\t\table_to_bill: number = 0;\n\t\tnotes: string;\n\t\trate_type: number = null;\n\t\tcan_show_financing: boolean = true;\n\n\t\tsearchQuery: string;\n\t\tsearchResults: Customer[];\n\n\t\tprivate onChangeCallbacks: Array<(data?: Customer) => any> = [];\n\n\t\tprivate isDataSet = false;\n\t\tprivate loading: number = null;\n\n\t\tpublic isFetching: boolean = false;\n\t\tpublic pageSize: number = 10;\n\t\tpublic page: number = 1;\n\t\tpublic count: number = 0;\n\t\tpublic maxPage: number = 1;\n\n\t\tconstructor(\n\t\t\tprivate $localStorage: LocalStorage,\n\t\t\tprivate CustomerService: CustomerService,\n\t\t) {\n\n\t\t}\n\n\t\tclearSearchResults(): void {\n\t\t\tconst vm = this;\n\n\t\t\tvm.searchResults = [];\n\t\t\tvm.searchQuery = '';\n\t\t}\n\n\t\tsetSearchResultsCache(results: Customer[]) {\n\t\t\tconst vm = this;\n\n\t\t\tvm.searchResults = results;\n\t\t}\n\n\t\tset(customer: Customer): void | ng.IPromise<boolean> {\n\t\t\tlet vm = this;\n\n\t\t\tvm.$localStorage.selectedCustomerId = customer.id;\n\n\t\t\tvm.id = customer.id;\n\t\t\tvm.priority = customer.priority;\n\t\t\tvm.full_name = customer.full_name;\n\t\t\tvm.company_name = customer.company_name;\n\t\t\tvm.service_addresses = customer.service_addresses;\n\t\t\tvm.first_name = customer.first_name;\n\t\t\tvm.last_name = customer.last_name;\n\t\t\tvm.contract_rate = customer.contract_rate;\n\t\t\tvm.emails = customer.emails;\n\t\t\tvm.phone_numbers = customer.phone_numbers;\n\t\t\tvm.billing_addresses = customer.billing_addresses;\n\t\t\tvm.able_to_bill = customer.able_to_bill;\n\t\t\tvm.notes = customer.notes;\n\t\t\tvm.rate_type = customer.rate_type;\n\t\t\tvm.can_show_financing = customer.can_show_financing;\n\n\t\t\tvm.isDataSet = true;\n\n\t\t\tangular.forEach(vm.onChangeCallbacks, (callback) => {\n\t\t\t\tcallback(vm);\n\t\t\t});\n\t\t}\n\n\t\tclear(): void {\n\t\t\tlet vm = this;\n\n\t\t\tvm.id = null;\n\t\t\tvm.priority = 3;\n\t\t\tvm.full_name = null;\n\t\t\tvm.company_name = null;\n\t\t\tvm.service_addresses = [];\n\t\t\tvm.first_name  = null;\n\t\t\tvm.last_name = null;\n\t\t\tvm.contract_rate = false;\n\t\t\tvm.emails = [];\n\t\t\tvm.phone_numbers = [];\n\t\t\tvm.billing_addresses = [];\n\t\t\tvm.able_to_bill = 0;\n\t\t\tvm.notes = '';\n\t\t\tvm.rate_type = null;\n\n\t\t\tvm.isDataSet = false;\n\n\t\t\tvm.$localStorage.selectedCustomerId = null;\n\t\t}\n\n\t\tisSet(): boolean {\n\t\t\treturn this.isDataSet;\n\t\t}\n\n\t\tloadServiceAddreses(query?: string) {\n\t\t\tthis.isFetching = true;\n\n\t\t\tif (query) {\n\t\t\t\tthis.page = 1;\n\t\t\t}\n\n\t\t\treturn this.CustomerService.getServiceAddressList(this.$localStorage.selectedCustomerId, {\n\t\t\t\tpage: this.page,\n\t\t\t\tsize: this.pageSize,\n\t\t\t\tquery: query\n\t\t\t}).then((response) => {\n\t\t\t\tlet headers = response.headers();\n\n\t\t\t\tif (this.updatePageInfo(Number(headers.count))) {\n\t\t\t\t\tthis.page = this.maxPage;\n\t\t\t\t}\n\n\t\t\t\tthis.service_addresses = response.data;\n\t\t\t}).finally(() => {\n\t\t\t\tthis.isFetching = false;\n\t\t\t});\n\t\t}\n\n\t\tsetPage(page: number) {\n\t\t\tlet newPage = Math.max(1, Math.min(this.maxPage, page));\n\t\t\tif (newPage !== this.page) {\n\t\t\t\tthis.page = newPage;\n\t\t\t\tthis.loadServiceAddreses();\n\t\t\t}\n\t\t}\n\n\t\tgetItemCount() {\n\t\t\tif (this.count === 0) {\n\t\t\t\treturn '0 - 0 of 0';\n\t\t\t}\n\n\t\t\treturn Math.min(this.count, ((this.page - 1) * this.pageSize) + 1) + ' - ' + Math.min(this.count, this.pageSize * this.page) + ' of ' + this.count;\n\t\t}\n\n\t\tupdatePageInfo(count: number) {\n\t\t\tthis.count = count;\n\t\t\tthis.maxPage = Math.max(1, Math.ceil(this.count / this.pageSize));\n\n\t\t\treturn this.maxPage < this.page;\n\t\t}\n\n\t\tloadFromStorage(): void | ng.IPromise<boolean> {\n\t\t\tconst vm = this;\n\n\t\t\tif (vm.$localStorage.selectedCustomerId !== null && angular.isDefined(vm.$localStorage.selectedCustomerId)) {\n\t\t\t\tconst id = vm.$localStorage.selectedCustomerId;\n\t\t\t\tif (vm.loading === id) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvm.loading = id;\n\n\t\t\t\treturn vm.CustomerService.fetch(id, { show_service_address: false }).then((response) => {\n\t\t\t\t\tvm.set(response.data);\n\t\t\t\t\tvm.loadServiceAddreses();\n\t\t\t\t\tvm.loading = null;\n\t\t\t\t\treturn true;\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\taddCallback(callback: (data?: Customer) => any) {\n\t\t\tthis.onChangeCallbacks.push(callback);\n\t\t}\n\n\t\taddServiceAddress(address: Address) {\n\t\t\tconst vm = this;\n\n\t\t\tvm.service_addresses.push(address);\n\t\t\treturn vm.save();\n\t\t}\n\n\t\taddBillingAddress(address: Address) {\n\t\t\tconst vm = this;\n\n\t\t\tvm.billing_addresses.push(address);\n\t\t\tvm.save();\n\t\t}\n\n\t\tsave() {\n\t\t\tconst vm = this;\n\n\t\t\tlet customer = new Customer();\n\n\t\t\tcustomer.id = vm.id;\n\t\t\tcustomer.priority = vm.priority;\n\t\t\tcustomer.full_name = vm.full_name;\n\t\t\tcustomer.company_name = vm.company_name;\n\t\t\tcustomer.service_addresses = vm.service_addresses;\n\t\t\tcustomer.first_name = vm.first_name;\n\t\t\tcustomer.last_name = vm.last_name;\n\t\t\tcustomer.contract_rate = vm.contract_rate;\n\t\t\tcustomer.emails = vm.emails;\n\t\t\tcustomer.phone_numbers = vm.phone_numbers;\n\t\t\tcustomer.billing_addresses = vm.billing_addresses;\n\t\t\tcustomer.able_to_bill = vm.able_to_bill;\n\t\t\tcustomer.notes = vm.notes;\n\t\t\tcustomer.rate_type = vm.rate_type;\n\n\t\t\tvm.loading = vm.id;\n\n\t\t\treturn vm.CustomerService.update(customer).then((response) => {\n\t\t\t\tvm.set(response.data);\n\t\t\t\tvm.loading = null;\n\t\t\t\treturn true;\n\t\t\t});\n\t\t}\n\n\t\tgetServiceAddressLocation(serviceAddressId: number) {\n\t\t\tconst vm = this;\n\t\t\tlet location: Location;\n\n\t\t\tfor(let i = 0, len = vm.service_addresses.length; i < len; i += 1) {\n\t\t\t\tlet address = vm.service_addresses[i];\n\n\t\t\t\tif(address.id === serviceAddressId) {\n\t\t\t\t\tlocation = address.location;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn location;\n\t\t}\n\n\t\tpublic static Factory() {\n\t\t\tlet instance = ($localStorage: LocalStorage, CustomerService: CustomerService) => {\n\t\t\t\treturn new SelectedCustomer($localStorage, CustomerService);\n\t\t\t};\n\n\t\t\tinstance.$inject = ['$localStorage', 'CustomerService'];\n\n\t\t\treturn instance;\n\t\t}\n\t}\n}","/// <reference path=\"../_references.ts\"/>\r\nmodule App.Dashboard {\r\n\r\n\texport class DashboardService {\r\n\r\n\t\tconstructor(\r\n\t\t\tpublic $http: ng.IHttpService,\r\n\t\t\tpublic Constants: IConstants\r\n\t\t){ }\r\n\r\n\t\tpublic getStats(techId: number, start: Date, end: Date): ng.IHttpPromise<TechStats> {\r\n\t\t\treturn this.$http.get(`${this.Constants.apiUrl}technician/${techId}/stats`, {\r\n\t\t\t\tparams: {\r\n\t\t\t\t\tstart: moment(start).format('YYYY-MM-DD'),\r\n\t\t\t\t\tend: moment(end).format('YYYY-MM-DD')\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tstatic factory() {\r\n\t\t\tlet instance = ($http: ng.IHttpService, Constants: IConstants) =>\r\n\t\t\t\tnew DashboardService($http, Constants);\r\n\r\n\t\t\tinstance.$inject = ['$http', 'Constants'];\r\n\r\n\t\t\treturn instance;\r\n\t\t}\r\n\t}\r\n}","/// <reference path=\"../_references.ts\"/>\nmodule App.DispatchService {\n\n\texport type Location = {\n\t\tafter_hours_end: string;\n\t\tafter_hours_fee: number;\n\t\tafter_hours_start: string;\n\t\tdescription: string;\n\t\tid: number;\n\t\tname: string;\n\t\tregular_fee: number;\n\t\tvisible: boolean;\n\t}\n\n\texport class DispatchService {\n\t\tconstructor(\n\t\t\tpublic $http: ng.IHttpService,\n\t\t\tpublic Constants: IConstants\n\t\t){}\n\n\t\tpublic getLocations(): ng.IHttpPromise<Location[]> {\n\t\t\treturn this.$http.get(this.Constants.apiUrl + 'location');\n\t\t}\n\n\t\tstatic factory() {\n\t\t\tlet instance = ($http: ng.IHttpService, Constants: IConstants) =>\n\t\t\t\tnew DispatchService($http, Constants);\n\n\t\t\tinstance.$inject = ['$http', 'Constants'];\n\n\t\t\treturn instance;\n\t\t}\n\t}\n\n\tangular\n        .module('field.dispatch', [])\n\t\t.factory('DispatchService', DispatchService.factory());\n}","/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule App.DispatchSummary {\r\n\timport Technician = App.Administrative.Inventory.Technician;\r\n\r\n\texport class DispatchSummaryService {\r\n\r\n\t\tconstructor(public $http: ng.IHttpService, public Constants: IConstants) {}\r\n\r\n\t\tpublic getAllAppointmentStatuses(): ng.IHttpPromise<Status[]> {\r\n\t\t\treturn this.$http.get(this.Constants.apiUrl + 'appointment/status');\r\n\t\t}\r\n\r\n\t\tpublic getAllStatuses(): ng.IHttpPromise<Status[]> {\r\n\t\t\treturn this.$http.get(this.Constants.apiUrl + 'servicerequeststatus');\r\n\t\t}\r\n\r\n\t\tpublic getDispatchSummaryList(day: Date): ng.IHttpPromise<ServiceRequest[]> {\r\n\t\t\treturn this.$http.get(this.Constants.apiUrl + 'servicerequest/summary_list', {\r\n\t\t\t\tparams: {\r\n\t\t\t\t\tday: moment(day).format('YYYY-MM-DD')\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tpublic getAllDepartments(): ng.IHttpPromise<Department[]> {\r\n\t\t\treturn this.$http.get(this.Constants.apiUrl + 'department');\r\n\t\t}\r\n\r\n\t\tpublic getAllTechnicians(): ng.IHttpPromise<Technician[]>  {\r\n\t\t\treturn this.$http.get(this.Constants.apiUrl + 'technician');\r\n\t\t}\r\n\r\n\t\tstatic factory() {\r\n\t\t\tlet instance = ($http: ng.IHttpService, Constants: IConstants) =>\r\n\t\t\t\tnew DispatchSummaryService($http, Constants);\r\n\r\n\t\t\tinstance.$inject = ['$http', 'Constants'];\r\n\r\n\t\t\treturn instance;\r\n\t\t}\r\n\t}\r\n}","/// <reference path=\"_references.ts\"/>\n\nmodule App.Forms {\n\texport class FormService {\n\t\tstatic $inject: string[] = ['$http', 'Constants'];\n\t\tconstructor(\n\t\t\tprivate $http: ng.IHttpService,\n\t\t\tpublic Constants: IConstants\n\t\t) { }\n\n\t\tpublic getInstances(id: number, params?: any): ng.IHttpPromise<FormInstanceList[]> {\n\t\t\tparams = params || {};\n\t\t\tparams.service_request = id;\n\n\t\t\treturn <ng.IHttpPromise<FormInstanceList[]>>this.$http.get(this.Constants.apiUrl + 'forminstance', {\n\t\t\t\tparams: params\n\t\t\t});\n\t\t}\n\n\t\tpublic getItemInstances(id: number, params?: any): ng.IHttpPromise<FormInstanceList[]> {\n\t\t\tparams = params || {};\n\t\t\tparams.serviceable_item = id;\n\n\t\t\treturn <ng.IHttpPromise<FormInstanceList[]>>this.$http.get(this.Constants.apiUrl + 'forminstance', {\n\t\t\t\tparams: params\n\t\t\t});\n\t\t}\n\n\t\tpublic getInstance(id: number, params?: any): ng.IHttpPromise<FormInstance> {\n\t\t\treturn <ng.IHttpPromise<FormInstance>>this.$http.get(this.Constants.apiUrl + 'forminstance/' + id, {\n\t\t\t\tparams: params || {}\n\t\t\t});\n\t\t}\n\n\t\tpublic updateInstance(id: number, data: any, params?: any): ng.IHttpPromise<FormInstance> {\n\t\t\treturn <ng.IHttpPromise<FormInstance>>this.$http.put(\n\t\t\t\tthis.Constants.apiUrl + 'forminstance/' + id,\n\t\t\t\tdata, {\n\t\t\t\t\tparams: params || {}\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\n\t\tpublic createInstance(\n\t\t\tformId: number,\n\t\t\tformType: 'admin'|'servicerequest'|'serviceableitem',\n\t\t\tdata: any,\n\t\t\tparams?: any\n\t\t): ng.IHttpPromise<FormInstance> {\n\t\t\treturn <ng.IHttpPromise<FormInstance>>this.$http.post(\n\t\t\t\tthis.Constants.apiUrl + 'form/' + formId + '/instance/' + formType,\n\t\t\t\tdata, {\n\t\t\t\t\tparams: params || {}\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\n\t\tpublic getForms(params?: any): ng.IHttpPromise<FormList[]> {\n\t\t\treturn <ng.IHttpPromise<FormList[]>>this.$http.get(this.Constants.apiUrl + 'form', {\n\t\t\t\tparams: params || {}\n\t\t\t});\n\t\t}\n\n\t\tpublic getForm(id: number, params?: any): ng.IHttpPromise<Form> {\n\t\t\treturn <ng.IHttpPromise<Form>>this.$http.get(this.Constants.apiUrl + 'form/' + id, {\n\t\t\t\tparams: params || {}\n\t\t\t});\n\t\t}\n\n\t\tpublic getServiceRequestForms(params?: any): ng.IHttpPromise<FormList[]> {\n\t\t\tparams = params || {};\n\t\t\tparams.sr_form = 1;\n\t\t\treturn this.getForms(params);\n\t\t}\n\n\t\tpublic deleteFormAnswerImage(formInstanceId: number, imageId: number): ng.IHttpPromise<FormInstance> {\n\t\t\treturn this.$http.delete(`${this.Constants.apiUrl}forminstance/${formInstanceId}/image/${imageId}`);\n\t\t}\n\t}\n}\n","/// <reference path=\"../_references.ts\"/>\n\n/**\n * From: https://github.com/toksfifo/bottom-drawer\n */\n\nmodule App.Helpers {\n\texport type BottomDrawerItem = {\n\t\ttext: string;\n\t\ticon: string;\n\t\tfn?: () => void;\n\t\trecursive?: boolean;\n\t}\n\n\texport class BottomDrawerService {\n\t\tpublic isOpen: boolean = false;\n\t\tpublic closeable: boolean = true;\n\n\t\toptions: Array<BottomDrawerItem> = [];\n\n\t\thideCancel: boolean = false;\n\n\t\tconstructor() {\n\t\t\treturn this;\n\t\t}\n\n\t\tpublic open(newOptions: Array<BottomDrawerItem>, boolHideCancel: boolean, closeable: boolean = true) {\n\t\t\tthis.options = newOptions;\n\t\t\tthis.hideCancel = boolHideCancel || false;\n\t\t\tthis.isOpen = true;\n\t\t\tthis.closeable = closeable;\n\t\t}\n\n\t\tpublic close() {\n\t\t\tthis.isOpen = false;\n\t\t}\n\n\t\tstatic Factory() {\n\t\t\tlet instance = () => new BottomDrawerService();\n\n\t\t\tinstance.$inject = [];\n\n\t\t\treturn instance;\n\t\t}\n\t}\n}\n","/// <reference path=\"../_references.ts\"/>\n\nmodule App.Helpers {\n\texport class LocationService {\n\t\tconstructor(public $q: ng.IQService){}\n\n\t\tpublic getLocation(): ng.IPromise<Coordinates> {\n\t\t\tlet defer: ng.IDeferred<Coordinates> = this.$q.defer();\n\n\t\t\tnavigator.geolocation.getCurrentPosition((pos) => {\n\t\t\t\tdefer.resolve(pos.coords);\n\t\t\t}, (err) => {\n\t\t\t\tdefer.resolve({\n\t\t\t\t\tlatitude: null,\n\t\t\t\t\tlongitude: null,\n\t\t\t\t});\n\t\t\t}, {\n\t\t\t\tmaximumAge: 60000,\n\t\t\t\ttimeout: 10000,\n\t\t\t\tenableHighAccuracy: true\n\t\t\t});\n\n\t\t\treturn defer.promise;\n\t\t}\n\n\t\tstatic factory() {\n\t\t\tlet instance = ($q: ng.IQService) =>\n\t\t\t\tnew LocationService($q);\n\n\t\t\tinstance.$inject = ['$q'];\n\t\t\treturn instance;\n\t\t}\n\t}\n\n\tangular\n\t\t.module('helpers.locationService', [])\n\t\t.factory('LocationService', LocationService.factory());\n}\n","/// <reference path=\"../_references.ts\"/>\nmodule App.Helpers {\n\texport type State = {\n\t\tname: string;\n\t\tabbreviation: string;\n\t}\n\n\ttype States = {\n\t\tstates: State[]\n\t}\n\n\texport class StatesService {\n\t\tconstructor(public states: State[]){}\n\n\t\tpublic querySearch(query: string): State[] {\n\t\t\treturn query ? this.states.filter(this.createFilterFor(query)) : this.states;\n\t\t}\n\n\t\tprivate createFilterFor(query: string):any {\n\t\t\tconst lowercaseQuery = query.toLowerCase();\n\n\t\t\treturn function filterFn(state: State) {\n\t\t\t\treturn state.name.toLowerCase().indexOf(lowercaseQuery) === 0 ||\n\t\t\t\t\tstate.abbreviation.toLowerCase().indexOf(lowercaseQuery) === 0;\n\t\t\t};\n\t\t}\n\n\t\tstatic factory() {\n\t\t\tlet instance = (States: States) =>\n\t\t\t\tnew StatesService(States.states);\n\n\t\t\tinstance.$inject = ['States'];\n\n\t\t\treturn instance;\n\t\t}\n\t}\n\n\tangular.module('helpers.statesService', [\n\t\t'helpers.states'\n\t]).factory('StatesService', StatesService.factory());\n}\n","/// <reference path=\"../_references.ts\"/>\n\nmodule App.Helpers {\n\timport Appointment = App.Appointments.Appointment;\n\timport AppRootScope = App.Administrative.AppRootScope;\n\timport OrganizationFileUploadData = App.Utils.OrganizationFileUploadData;\n\n\texport class TitleBarService {\n\t\tstatic Factory() {\n\t\t\tlet instance = () => new TitleBarService();\n\n\t\t\tinstance.$inject = [];\n\n\t\t\treturn instance;\n\t\t}\n\n\t\tprotected title: string = \"Home\";\n\t\tprotected cssClass: string = null;\n\n\t\tpublic set(title: string, cssClass?: string) {\n\t\t\tthis.title = title;\n\t\t\tthis.cssClass = cssClass;\n\t\t}\n\n\t\tpublic getTitle(): string {\n\t\t\treturn this.title;\n\t\t}\n\n\t\tpublic getCss(): string {\n\t\t\treturn this.cssClass;\n\t\t}\n\t}\n\n\texport class TitleBarController {\n\t\tstatic $inject: string[] = ['TitleBarService', 'SelectedAppointment', 'BottomDrawerService',\n\t\t\t'$state', 'UploadService', 'DefaultToasts', '$rootScope', 'CustomerService', 'OrganizationService'];\n\n\t\tprotected isInfoOpen: boolean = false;\n\t\tprotected savingFile: boolean = false;\n\t\tprotected appointment?: Appointment = null;\n\t\tprotected organization: OrganizationFileUploadData = null;\n\t\tprotected errorFile: Object = {};\n\n\t\tconstructor(\n\t\t\tpublic TitleBarService: TitleBarService,\n\t\t\tprotected SelectedAppointment: App.Appointments.SelectedAppointment,\n\t\t\tprotected BottomDrawerService: BottomDrawerService,\n\t\t\tprotected $state: ng.ui.IStateService,\n\t\t\tprotected UploadService: UploadService,\n\t\t\tprivate DefaultToasts: App.Utils.DefaultToasts,\n\t\t\tprivate $rootScope: AppRootScope,\n\t\t\tprivate CustomerService: App.Customer.CustomerService,\n\t\t\tprivate OrganizationService: App.Utils.OrganizationService\n\n\t\t) {\n\t\t\tthis.SelectedAppointment.addListener(this.setAppointment.bind(this));\n\t\t\tthis.SelectedAppointment.getAppointment()\n\t\t\t\t.then((appointment) => this.setAppointment(appointment));\n\t\t\tthis.OrganizationService.getFileUploadDetails()\n\t\t\t\t.then((organization) => this.organization = organization.data);\n\t\t}\n\n\t\tpublic getPage(): string {\n\t\t\treturn this.$state.current.name;\n\t\t}\n\n\t\tpublic setAppointment(appointment: Appointment): void {\n\t\t\tif (appointment && appointment.id && !appointment.is_partial) {\n\t\t\t\tthis.appointment = appointment;\n\t\t\t} else {\n\t\t\t\tthis.appointment = null;\n\t\t\t}\n\t\t}\n\n\t\tpublic toggleInfo(): void {\n\t\t\tif (this.isInfoOpen) {\n\t\t\t\tthis.closeInfo();\n\t\t\t} else {\n\t\t\t\tthis.openInfo();\n\t\t\t}\n\t\t}\n\n\t\tpublic openInfo(): void {\n\t\t\tif (!this.appointment || !this.appointment.id || this.BottomDrawerService.isOpen) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.isInfoOpen = true;\n\t\t}\n\n\t\tpublic closeInfo(): void {\n\t\t\tthis.isInfoOpen = false;\n\t\t}\n\n\t\tdisplayMaxSizeError() {\n\t\t\tthis.DefaultToasts.displayWarning('Reduce File Size and Try Again');\n\t\t\tthis.errorFile = {};\n\t\t};\n\n\t\tuploadImage(files: File[]) {\n\t\t\tlet count: number = 0,\n\t\t\t\tuploadedCount: number = 0,\n\t\t\t\tcId: number = this.appointment.service_request.customer.id;\n\n\t\t\tfiles.forEach((file) => {\n\t\t\t\tlet filetype = file.type.split('/'),\n\t\t\t\t\ttime = new Date().getTime(),\n\t\t\t\t\tfilename = this.organization.id + '/' + cId + '/' + this.$rootScope.app.generateGuid() +\n\t\t\t\t\t\t'.' + time + '.' + file.name.split('.').pop();\n\n\t\t\t\tcount++;\n\t\t\t\tthis.DefaultToasts.displayLoading('File ' + count + '/' + files.length + ' uploading');\n\t\t\t\tthis.savingFile = true;\n\t\t\t\tthis.UploadService.uploadAWS('zip-customer-uploads', filename, file).then((response: any) => {\n\t\t\t\t\tlet data = {\n\t\t\t\t\t\turl: response.headers('Location'),\n\t\t\t\t\t\tname: file.name,\n\t\t\t\t\t\tsize: file.size,\n\t\t\t\t\t\tfile_type: filetype[0] === 'application' ? filetype[1] : filetype[0]\n\t\t\t\t\t};\n\n\t\t\t\t\tthis.CustomerService.addFile(cId, data).then((images) => {\n\t\t\t\t\t\tthis.appointment.service_request.customer.files.unshift(images.data);\n\t\t\t\t\t\tuploadedCount++;\n\n\t\t\t\t\t\tif (count === uploadedCount) {\n\t\t\t\t\t\t\tthis.savingFile = false;\n\t\t\t\t\t\t\tthis.DefaultToasts.hideLoading();\n\t\t\t\t\t\t\tthis.DefaultToasts.displaySuccess('File ' + count + '/' + files.length + ' uploaded');\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t})\n\t\t\t\t.catch((err) => this.DefaultToasts.displayError(err, 'Failed to upload file: '));\n\t\t\t});\n\t\t};\n\t}\n\n\tangular.module('helpers.titleBar', [])\n\t\t.factory('TitleBarService', TitleBarService.Factory())\n\t\t.controller('TitleBarController', TitleBarController);\n}\n","/// <reference path=\"../_references.ts\"/>\n\nmodule App.Helpers {\n\texport class UploadService {\n\t\tconstructor(\n\t\t\tprivate $http: ng.IHttpService,\n\t\t\tpublic Constants: IConstants,\n\t\t\tprotected Upload: ng.angularFileUpload.IUploadService,\n\t\t) {\n\n\t\t}\n\n\t\tpublic upload(url: string, file: File): ng.angularFileUpload.IUploadPromise<any> {\n\t\t\treturn this.Upload.upload({\n\t\t\t\turl: this.Constants.apiUrl + url,\n\t\t\t\tmethod: 'POST',\n\t\t\t\tdata: {\n\t\t\t\t\tfile: file\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tpublic uploadAWS(bucket: string, filepath: string, file: File): ng.IHttpPromise<any> {\n\t\t\tlet formData = new FormData();\n\n\t\t\tformData.append('key', filepath);\n\t\t\tformData.append('file', file);\n\t\t\tformData.append('AWSAccessKeyId', 'AKIA3R3WHY4FJK6UT5OS');\n\t\t\tformData.append('acl', 'public-read');\n\t\t\tformData.append('Content-Type', file.type !== '' ? file.type : 'application/octet-stream');\n\t\t\tformData.append('filename', file.name);\n\n\t\t\treturn this.$http.post('https://' + bucket + '.s3-accelerate.dualstack.amazonaws.com', formData, {\n\t\t\t\theaders: {\n\t\t\t\t\t'Content-Type': undefined\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tpublic static Factory() {\n\t\t\tlet instance = ($http: ng.IHttpService, Constants: IConstants, Upload: ng.angularFileUpload.IUploadService) => {\n\t\t\t\treturn new UploadService($http, Constants, Upload);\n\t\t\t};\n\n\t\t\tinstance.$inject = ['$http', 'Constants', 'Upload'];\n\n\t\t\treturn instance;\n\t\t}\n\t}\n\n\tangular\n\t\t.module('helpers.uploadService', [])\n\t\t.factory('UploadService', UploadService.Factory());\n}\n","/// <reference path=\"../_references.ts\"/>\n\nmodule App.History {\n\n\timport SelectedAppointment = App.Appointments.SelectedAppointment;\n\timport ServiceRequest = App.Customer.ServiceRequest;\n\timport Package = App.PriceGuide.Package;\n\n\tinterface LocalStorage extends ng.local.storage.ILocalStorageService {\n\t\tselectedCustomerId: number;\n\t}\n\n\texport class HistoryService {\n\t\tpublic serviceRequestPhotos: ServiceRequestPhoto[];\n\t\tpublic selectedServiceRequest: ServiceRequest;\n\n\t\tconstructor(\n\t\t\tprivate $http: ng.IHttpService,\n\t\t\tpublic Constants: IConstants,\n\t\t\tpublic SelectedAppointments: SelectedAppointment\n\t\t){\n\t\t\tSelectedAppointments.getAppointment().then(() => {\n\t\t\t\tthis.initialize();\n\t\t\t});\n\t\t}\n\n\t\tinitialize() {\n\t\t\tthis.fetchServiceRequestPhotos(this.SelectedAppointments.service_request.id);\n\t\t}\n\n\n\t\tfetchServiceRequestPhotos(serviceRequestId: number) {\n\t\t\tconst vm = this;\n\n\t\t\tvm.getServiceRequestPhotos(serviceRequestId)\n\t\t\t\t.then((response) => {\n\t\t\t\t\tvm.serviceRequestPhotos = response.data;\n\t\t\t\t});\n\t\t}\n\n\t\tdeleteRecommendation(pkgId: number): ng.IHttpPromise<Package> {\n\t\t\treturn this.$http.delete(`${this.Constants.apiUrl}recommendation/${pkgId}`);\n\t\t}\n\n\t\trestoreRecommendation(pkgId: number): ng.IHttpPromise<Package> {\n\t\t\treturn this.$http.put(`${this.Constants.apiUrl}recommendation/${pkgId}/restore`, {});\n\t\t}\n\n\t\tgetServiceRequestPhotos(serviceRequestId: number): ng.IHttpPromise<ServiceRequestPhoto[]> {\n\t\t\treturn this.$http.get(`${this.Constants.apiUrl}servicerequest/${serviceRequestId}/image`)\n\t\t}\n\n\t\tgetServiceRequestPhotosByAddress(addressId: number, params?: object): ng.IHttpPromise<ServiceRequest[]> {\n\t\t\treturn this.$http.get(`${this.Constants.apiUrl}servicerequest?service_address=${addressId}&show_images=true`, {\n\t\t\t\tparams: params || {},\n\t\t\t});\n\t\t}\n\n\t\tgetServiceRequestHistoryByAddress(addressId: number, params: object): ng.IHttpPromise<ServiceRequest[]> {\n\t\t\treturn this.$http.get(`${this.Constants.apiUrl}servicerequest?service_address=${addressId}`, {\n\t\t\t\tparams: params || {},\n\t\t\t});\n\t\t}\n\n\t\tgetServiceRequestRecommendationsByAddress(addressId: number, params?: object): ng.IHttpPromise<ServiceRequest[]> {\n\t\t\treturn this.$http.get(`${this.Constants.apiUrl}servicerequest?service_address=${addressId}&show_recommendations=true&has_recommendations=true`, {\n\t\t\t\tparams: params || {},\n\t\t\t});\n\t\t}\n\n\t\tgetServiceRequest(serviceRequestId: number): ng.IHttpPromise<ServiceRequest> {\n\t\t\treturn this.$http.get(`${this.Constants.apiUrl}servicerequest/${serviceRequestId}`);\n\t\t}\n\n\t\tgetInvoice(invoiceId: number): ng.IHttpPromise<Invoice> {\n\t\t\treturn this.$http.get(`${this.Constants.apiUrl}invoice/${invoiceId}`);\n\t\t}\n\n\t\tgetInvoiceHtml(invoiceId: number): ng.IHttpPromise<string> {\n\t\t\treturn this.$http.get(`${this.Constants.apiUrl}invoice/${invoiceId}.html`);\n\t\t}\n\n\t\tgetInvoicePreviewHtml(serviceRequestId: number): ng.IHttpPromise<string> {\n\t\t\treturn this.$http.get(`${this.Constants.apiUrl}servicerequest/${serviceRequestId}/render.html`);\n\t\t}\n\n\t\tgetRecommendationHtml(recId: number): ng.IHttpPromise<string> {\n\t\t\treturn this.$http.get(`${this.Constants.apiUrl}recommendationtoken/${recId}.html`);\n\t\t}\n\n\t\tgetRecommendationsByServiceRequest(serviceRequestId: number, params?: object): ng.IHttpPromise<Package[]> {\n\t\t\treturn this.$http.get(`${this.Constants.apiUrl}servicerequest/${serviceRequestId}/recommendation`, {\n\t\t\t\tparams: params || {}\n\t\t\t});\n\t\t}\n\n\t\tconvertRecommendationToWorkOrder(selectedAppointmentServiceRequest: App.Appointments.ServiceRequest, recommendationId: number): ng.IHttpPromise<Package[]> {\n\t\t\treturn this.$http.post(`${this.Constants.apiUrl}recommendation/${recommendationId}/package`, {\n\t\t\t\tservice_request: selectedAppointmentServiceRequest\n\t\t\t});\n\t\t}\n\n\t\temailRecommendations(\n\t\t\tserviceRequestId: number,\n\t\t\trecommendations: number[],\n\t\t\temail: string,\n\t\t\temailNote?: string,\n\t\t\tallowNonRec: boolean = false\n\t\t): ng.IHttpPromise<any> {\n\t\t\tlet params: {[key: string]: any} = {\n\t\t\t\tids: recommendations,\n\t\t\t\temail: email,\n\t\t\t\tallowNonRec: allowNonRec,\n\t\t\t};\n\n\t\t\tif (emailNote) {\n\t\t\t\tparams['note'] = emailNote;\n\t\t\t}\n\n\t\t\treturn this.$http.post(`${this.Constants.apiUrl}recommendation/email`, params);\n\t\t}\n\n\t\tpublic static Factory() {\n\t\t\tlet instance = ($http: ng.IHttpService, Constants: IConstants, SelectedAppointment: SelectedAppointment) => {\n\t\t\t\treturn new HistoryService($http, Constants, SelectedAppointment);\n\t\t\t};\n\n\t\t\tinstance.$inject = ['$http', 'Constants', 'SelectedAppointment'];\n\n\t\t\treturn instance;\n\t\t}\n\t}\n}","/// <reference path='../_references.ts'/>\n\nmodule App.HeaderMessages {\n\texport class HeaderMessagesService {\n\t\tstatic $inject: string[] = ['$http', 'Constants'];\n\t\tconstructor(\n\t\t\tprotected $http: ng.IHttpService,\n\t\t\tprotected Constants: IConstants\n\t\t) {}\n\n\t\tpublic markRead(id: number): ng.IHttpPromise<GlobalMessage> {\n\t\t\treturn this.$http.post(this.Constants.apiUrl + 'globalmessage/' + id + '/read', {});\n\t\t}\n\n\t\tpublic getActiveMessages(): ng.IHttpPromise<GlobalMessage[]> {\n\t\t\treturn this.$http.get(this.Constants.apiUrl + 'globalmessage/active');\n\t\t}\n\t}\n}\n","/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule App.ItemManagement {\r\n\r\n\texport class ItemManagementService {\r\n\t\tconstructor(\r\n\t\t\tprivate $http: ng.IHttpService,\r\n\t\t\tpublic Constants: IConstants\r\n\t\t) {\r\n\r\n\t\t}\r\n\r\n\t\tGetServiceableItemList(): ng.IHttpPromise<ServiceableItem[]> {\r\n\t\t\treturn this.$http.get(`${this.Constants.apiUrl}serviceableitem`);\r\n\t\t}\r\n\r\n\t\tGetServiceableItemListByCustomer(customerId: number, addressId: number): ng.IHttpPromise<ServiceableItem[]> {\r\n\t\t\treturn this.$http.get(`${this.Constants.apiUrl}serviceableitem?customer=${customerId}&address=${addressId}&orderBy=id`);\r\n\t\t}\r\n\r\n\t\tGetServiceableItem(serviceableItemId: number): ng.IHttpPromise<ServiceableItem> {\r\n\t\t\treturn this.$http.get(`${this.Constants.apiUrl}serviceableitem/${serviceableItemId}`);\r\n\t\t}\r\n\r\n\t\tGetServiceableItemTypes(): ng.IHttpPromise<ServiceableItemType[]> {\r\n\t\t\treturn this.$http.get(`${this.Constants.apiUrl}serviceableitemtype`);\r\n\t\t}\r\n\r\n\t\tGetServiceableItemType(serviceableTypeItemId: number): ng.IHttpPromise<ServiceableItemType> {\r\n\t\t\treturn this.$http.get(`${this.Constants.apiUrl}serviceableitemtype/${serviceableTypeItemId}`);\r\n\t\t}\r\n\r\n\t\tgetItemTypeForItem(itemId: number, params?: any): ng.IHttpPromise<ServiceableItemType> {\r\n\t\t\treturn this.$http.get(`${this.Constants.apiUrl}serviceableitem/${itemId}/type`, {\r\n\t\t\t\tparams: params || {}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tCreateServiceableItem(serviceableitem: ServiceableItemCreate): ng.IHttpPromise<ServiceableItem> {\r\n\t\t\treturn this.$http.post(`${this.Constants.apiUrl}serviceableitem`, serviceableitem);\r\n\t\t}\r\n\r\n\t\tUpdateServiceableItem(serviceableitem: ServiceableItem): ng.IHttpPromise<ServiceableItem> {\r\n\t\t\treturn this.$http.put(`${this.Constants.apiUrl}serviceableitem/${serviceableitem.id}`, serviceableitem);\r\n\t\t}\r\n\r\n\t\tGetServiceableItemTags(): ng.IHttpPromise<ServiceableItemTag[]> {\r\n\t\t\treturn this.$http.get(`${this.Constants.apiUrl}serviceableitemtag`, {\r\n\t\t\t\tparams: {\r\n\t\t\t\t\tsort: 'ASC',\r\n\t\t\t\t\torderBy: 'tag_group'\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tCreateServiceableItemNote(serviceableItemId: number, note: ServiceableItemNote): ng.IHttpPromise<ServiceableItemNote> {\r\n\t\t\treturn this.$http.post(`${this.Constants.apiUrl}serviceableitem/${serviceableItemId}/note`, note);\r\n\t\t}\r\n\r\n\t\tUpdateServiceableItemNote(serviceableItemId: number, note: ServiceableItemNote): ng.IHttpPromise<ServiceableItemNote> {\r\n\t\t\treturn this.$http.put(`${this.Constants.apiUrl}serviceableitem/${serviceableItemId}/note/${note.id}`, {description: note.description});\r\n\t\t}\r\n\r\n\t\tGetServiceableItemNotes(serviceableItemId: number): ng.IHttpPromise<ServiceableItemNote[]> {\r\n\t\t\treturn this.$http.get(`${this.Constants.apiUrl}serviceableitem/${serviceableItemId}/note`);\r\n\t\t}\r\n\r\n\t\tDeleteServiceableItemNote(serviceableItemId: number, noteId: number): ng.IHttpPromise<ServiceableItemNote[]> {\r\n\t\t\treturn this.$http.delete(`${this.Constants.apiUrl}serviceableitem/${serviceableItemId}/note/${noteId}`);\r\n\t\t}\r\n\r\n\t\tDeleteServiceableItemImage(serviceableItemId: number, imageId: number): ng.IHttpPromise<ServiceableItemImage[]> {\r\n\t\t\treturn this.$http.delete(`${this.Constants.apiUrl}serviceableitem/${serviceableItemId}/image/${imageId}`);\r\n\t\t}\r\n\r\n\t\tAddServiceRequest(serviceableItemId: number, srId: number): ng.IHttpPromise<{ success: boolean }> {\r\n\t\t\treturn this.$http.post(`${this.Constants.apiUrl}serviceableitem/${serviceableItemId}/servicerequest`, {\r\n\t\t\t\tservice_request: srId\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tRemoveServiceRequest(ServiceableItemId: number, srId: number): ng.IHttpPromise<{ success: boolean }> {\r\n\t\t\treturn this.$http.delete(`${this.Constants.apiUrl}serviceableitem/${ServiceableItemId}/servicerequest`,  {data: {service_request: srId}});\r\n\t\t}\r\n\r\n\t\tpublic static Factory() {\r\n\t\t\tlet instance = ($http: ng.IHttpService, Constants: IConstants) => {\r\n\t\t\t\treturn new ItemManagementService($http, Constants);\r\n\t\t\t};\r\n\r\n\t\t\tinstance.$inject = ['$http', 'Constants'];\r\n\r\n\t\t\treturn instance;\r\n\t\t}\r\n\t}\r\n}","/// <reference path=\"../_references.ts\"/>\nmodule App.Login {\n\timport LocationService = App.Helpers.LocationService;\n\timport ToastService = App.Utils.ToastService;\n\n\tinterface tokenData {\n\t\ttoken: string;\n\t\tuser: userLoginData;\n\t}\n\n\texport interface roleLoginData {\n\t\tid: number;\n\t\tname: string;\n\t}\n\n\texport interface userLoginData {\n\t\tid: number;\n\t\tpermissions: string[];\n\t\trole: roleLoginData|null;\n\t\tlast_name?: string;\n\t\ttech_role: roleLoginData|null;\n\t}\n\n\tinterface LocalStorage extends ng.local.storage.ILocalStorageService {\n\t\tauthenticationToken: string;\n\t\tuserData: userLoginData;\n\t\told_data: LocalStorageBackup,\n\t\t$default: (settings: {[key: string] : any}) => void;\n\t\t$reset: () => void;\n\t}\n\n\tinterface LocalStorageBackup {\n\t\tuser_id: number;\n\t\tinfo: LocalStorage;\n\t}\n\n\tinterface IErrorMessage {\n\t\tmessage?: string;\n\t}\n\n\tconst LOGIN_ERROR = 'Unable to login: ',\n\t\tDEFAULT_ERROR = 'Unknown Error';\n\n\texport class LoginService {\n\t\tstatic $inject = ['$http', '$q', '$rootScope', '$window', '$localStorage', '$cookies', 'LocationService', 'ToastService'];\n\t\tprivate userData: userLoginData;\n\n\t\tconstructor(\n\t\t\tprivate $http: ng.IHttpService,\n\t\t\tprivate $q: ng.IQService,\n\t\t\tprivate $rootScope: ng.IRootScopeService,\n\t\t\tprivate $window: Window,\n\t\t\tprivate $localStorage: LocalStorage,\n\t\t\tprivate $cookies: ng.cookies.ICookiesService,\n\t\t\tprivate LocationService: LocationService,\n\t\t\tprivate ToastService: ToastService\n\t\t) { }\n\n\t\tprivate getDomainObject() {\n\t\t\tlet expireDate = new Date();\n\n\t\t\texpireDate.setDate(expireDate.getDate() + 1);\n\t\t\treturn {\n\t\t\t\tpath: '/',\n\t\t\t\tdomain: cookieDomain,\n\t\t\t\texpires: expireDate,\n\t\t\t};\n\t\t}\n\n\t\tprivate updateToken(token?: string) {\n\t\t\ttoken = token || this.giveToken();\n\t\t\tif (token) {\n\t\t\t\tthis.$cookies.put('authenticationToken', token, this.getDomainObject());\n\t\t\t}\n\t\t}\n\n\t\tisActiveSession() {\n\t\t\tthis.updateToken();\n\n\t\t\treturn angular.isDefined(this.$cookies.get('authenticationToken'));\n\t\t}\n\n\t\tcreateSession(tokenData: tokenData) {\n\t\t\tif (!tokenData.user.tech_role) {\n\t\t\t\tthis.ToastService.show(LOGIN_ERROR + 'Not a technician');\n\t\t\t\tthis.logoutSession();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.updateToken(tokenData.token);\n\t\t\tif (this.$localStorage.old_data && tokenData.user && this.$localStorage.old_data.user_id === tokenData.user.id) {\n\t\t\t\tObject.keys(this.$localStorage.old_data.info).forEach(k => {\n\t\t\t\t\tthis.$localStorage[k] = this.$localStorage.old_data.info[k];\n\t\t\t\t});\n\t\t\t\tdelete this.$localStorage.old_data;\n\t\t\t}\n\t\t\tthis.$localStorage.userData = this.userData = tokenData.user;\n\t\t\tthis.$rootScope.$broadcast('sessionChange');\n\t\t}\n\n\t\tdestroySession() {\n\t\t\tconst data: LocalStorageBackup = {\n\t\t\t\tuser_id: 0,\n\t\t\t\tinfo: angular.copy(this.$localStorage),\n\t\t\t};\n\t\t\tif (this.$localStorage.userData) {\n\t\t\t\tdelete this.$localStorage.old_data;\n\n\t\t\t\tdata.user_id = this.$localStorage.userData.id;\n\t\t\t}\n\t\t\tthis.$localStorage.$reset();\n\t\t\tif (data.user_id) {\n\t\t\t\tthis.$localStorage.old_data = data;\n\t\t\t}\n\t\t\tthis.$cookies.remove('authenticationToken', {\n\t\t\t\tpath: '/',\n\t\t\t\tdomain: cookieDomain\n\t\t\t});\n\t\t\tthis.$rootScope.$broadcast('sessionChange');\n\t\t}\n\n\t\tlogoutSession(): ng.IPromise<{}> {\n\t\t\tconst vm = this,\n\t\t\t\tcookie = vm.giveToken();\n\n\t\t\tvm.destroySession();\n\n\t\t\tif (cookie) {\n\t\t\t\treturn vm.LocationService.getLocation().then((coords) => {\n\t\t\t\t\treturn vm.$http(<ng.IRequestConfig>{\n\t\t\t\t\t\tmethod: 'DELETE',\n\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\t'API-Key': cookie\n\t\t\t\t\t\t},\n\t\t\t\t\t\tdataType: 'json',\n\t\t\t\t\t\turl: `${api}v1/logout`,\n\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\tlatitude: coords.latitude,\n\t\t\t\t\t\t\tlongitude: coords.longitude\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\treturn vm.$q.when({});\n\t\t\t}\n\t\t}\n\n\t\tgiveToken() {\n\t\t\treturn this.$cookies.get('authenticationToken');\n\t\t}\n\n\t\tgiveUserData(): userLoginData {\n\t\t\tthis.updateToken();\n\n\t\t\treturn angular.copy(this.userData || (this.userData = this.$localStorage.userData));\n\t\t}\n\n\t\tauthentication(username: string, password: string): ng.IPromise<tokenData|null> {\n\t\t\treturn this.LocationService.getLocation().then((coords) => {\n\t\t\t\treturn this.$http(<ng.IRequestConfig>{\n\t\t\t\t\tmethod: 'POST',\n\t\t\t\t\tdataType: 'json',\n\t\t\t\t\turl: `${api}v1/tokens`,\n\t\t\t\t\theaders: {\n\t\t\t\t\t\tusername: username,\n\t\t\t\t\t\tpassword: password\n\t\t\t\t\t},\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tlatitude: coords.latitude,\n\t\t\t\t\t\tlongitude: coords.longitude\n\t\t\t\t\t}\n\t\t\t\t}).catch((err: ng.IHttpResponse<IErrorMessage>) => {\n\t\t\t\t\tthis.ToastService.show(LOGIN_ERROR + (\n\t\t\t\t\t\terr && err.data && err.data.message || DEFAULT_ERROR\n\t\t\t\t\t));\n\n\t\t\t\t\treturn null;\n\t\t\t\t});\n\t\t\t}).then((tokenData: ng.IHttpResponse<tokenData>) => {\n\t\t\t\tif (!tokenData) {\n\t\t\t\t\tthis.destroySession();\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tthis.createSession(tokenData.data);\n\t\t\t\treturn tokenData.data;\n\t\t\t});\n\t\t}\n\t}\n\n\tangular.module('tradeServe.utils.login', [\n\t\t'ngStorage',\n\t\t'helpers.locationService'\n\t]).service('LoginService', LoginService)\n\t// TODO: Change this to proper TypeScript.  I couldn't figure out exactly how, and I didn't want to wrestle with it for hours.\n\t.provider('LoginServiceProvider', [function() {\n\t\tvar that = this;\n\n\t\t/**\n\t\t * Eslint has issues with this.$get\n\t\t * Set this to that, and set $get from that in an inline function\n\t\t */\n\t\t(function() {\n\t\t\tthat.$get = [\n\t\t\t\t'LoginService', (function() {\n\t\t\t\t\treturn function(loader: any) {\n\t\t\t\t\t\treturn loader.load();\n\t\t\t\t\t};\n\t\t\t\t})()\n\t\t\t];\n\t\t})();\n\n\t\treturn this;\n\t}]);\n}","/// <reference path=\"../_references.ts\"/>\n\nmodule App.Payment {\n\texport class PaymentService {\n\t\tconstructor(\n\t\t\tprivate $http: ng.IHttpService,\n\t\t\tpublic Constants: IConstants\n\t\t) {\n\n\t\t}\n\n\t\tfetchPaymentInfo(serviceRequestId: number): ng.IHttpPromise<PaymentInfo> {\n\t\t\treturn this.$http.get(`${this.Constants.apiUrl}servicerequest/${serviceRequestId}/paymentinfo`);\n\t\t}\n\n\t\tfetchPayments(serviceRequestId: number): ng.IHttpPromise<Payment[]> {\n\t\t\treturn this.$http.get(`${this.Constants.apiUrl}servicerequest/${serviceRequestId}/payment`);\n\t\t}\n\n\t\tcreatePayment(serviceRequestId: number, payment: Payment): ng.IHttpPromise<Payment> {\n\t\t\treturn this.$http.post(`${this.Constants.apiUrl}servicerequest/${serviceRequestId}/payment`, payment);\n\t\t}\n\n\t\tfetchPaymentTypes(): ng.IHttpPromise<PaymentType[]> {\n\t\t\treturn this.$http.get(`${this.Constants.apiUrl}paymenttype`);\n\t\t}\n\n\t\tsendPaymentEmail(serviceRequestId: number, paymentId: number, data: {email: string, note?: string}): ng.IHttpPromise<Payment> {\n\t\t\treturn this.$http.post(`${this.Constants.apiUrl}servicerequest/${serviceRequestId}/payment/${paymentId}/email`, data)\n\t\t}\n\n\t\tpublic static Factory() {\n\t\t\tlet instance = ($http: ng.IHttpService, Constants: IConstants) => {\n\t\t\t\treturn new PaymentService($http, Constants);\n\t\t\t};\n\n\t\t\tinstance.$inject = ['$http', 'Constants'];\n\n\t\t\treturn instance;\n\t\t}\n\t}\n}","/// <reference path=\"../_references.ts\"/>\n\nmodule App.PriceGuide {\n\timport Department = App.Appointments.Department;\n\timport TermsConditions = App.WorkOrder.TermsConditions;\n\n\texport class ProductService {\n\t\tconstructor(\n\t\t\tprivate $http: ng.IHttpService,\n\t\t\tpublic Constants: IConstants\n\t\t) {\n\n\t\t}\n\n\t\tgetCollectsTax(orgId: number|'current'): ng.IHttpPromise<{collect: boolean}> {\n\t\t\treturn this.$http.get(`${this.Constants.apiUrl}organization/${orgId}/salestax`, {\n\t\t\t\tparams: {\n\t\t\t\t\tquiet: 1,\n\t\t\t\t\tshow_collect: 1,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\tgetTermsConditions(): ng.IHttpPromise<TermsConditions[]> {\n\t\t\treturn this.$http.get(`${this.Constants.apiUrl}termsandconditions`, {\n\t\t\t\tparams: {\n\t\t\t\t\tvisible: 1,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\tgetWarranties(): ng.IHttpPromise<Warranty[]> {\n\t\t\treturn this.$http.get(`${this.Constants.apiUrl}warranty`);\n\t\t}\n\n\t\tgetDepartments(): ng.IHttpPromise<Department[]> {\n\t\t\treturn this.$http.get(`${this.Constants.apiUrl}department`);\n\t\t}\n\n\t\tgetCategories(departmentId: number): ng.IHttpPromise<ServiceCategory[]> {\n\t\t\treturn this.$http.get(`${this.Constants.apiUrl}servicecategory?department=${departmentId}`);\n\t\t}\n\n\t\tgetPackages(serviceRequestId: number, params?: any): ng.IHttpPromise<Package[]> {\n\t\t\treturn this.$http.get(`${this.Constants.apiUrl}servicerequest/${serviceRequestId}/package`, {\n\t\t\t\tparams: params || {}\n\t\t\t});\n\t\t}\n\n\t\tgetPackage(serviceRequestId: number, packageId: number): ng.IHttpPromise<Package> {\n\t\t\treturn this.$http.get(`${this.Constants.apiUrl}servicerequest/${serviceRequestId}/package/${packageId}`);\n\t\t}\n\n\t\tduplicatePackage(serviceRequestId: number, packageId: number): ng.IHttpPromise<Package> {\n\t\t\treturn this.$http.post(`${this.Constants.apiUrl}servicerequest/${serviceRequestId}/package/${packageId}/duplicate`, {});\n\t\t}\n\n\t\tgetProductList(params: SearchParams): ng.IHttpPromise<Product[]> {\n\t\t\treturn this.$http.get(`${this.Constants.apiUrl}service`, {\n\t\t\t\tparams: params || {}\n\t\t\t});\n\t\t}\n\n\t\tgetPackagePresetNames(): ng.IHttpPromise<PackagePresetName[]> {\n\t\t\treturn this.$http.get(`${this.Constants.apiUrl}packagepresetname`);\n\t\t}\n\n\t\tgetPackagePresetNotes(): ng.IHttpPromise<PackagePresetNote[]> {\n\t\t\treturn this.$http.get(`${this.Constants.apiUrl}packagepresetnote`);\n\t\t}\n\n\t\tcreateCustomProduct(product: Product): ng.IHttpPromise<Product> {\n\t\t\treturn this.$http.post(`${this.Constants.apiUrl}service`, product);\n\t\t}\n\n\t\tcreatePackage(serviceRequestId: number, newPackage: Package): ng.IHttpPromise<Product[]> {\n\t\t\treturn this.$http.post(`${this.Constants.apiUrl}servicerequest/${serviceRequestId}/package`, newPackage);\n\t\t}\n\n\t\tupdatePackage(serviceRequestId: number, pkg: any, params?: any):  ng.IHttpPromise<Package> {\n\t\t\treturn this.$http.put(`${this.Constants.apiUrl}servicerequest/${serviceRequestId}/package/${pkg.id}`, pkg, {\n\t\t\t\tparams: params || {}\n\t\t\t});\n\t\t}\n\n\t\tupdateServiceRequest(serviceRequestId: number, data: any, options?: ng.IRequestShortcutConfig):  ng.IHttpPromise<Package> {\n\t\t\treturn this.$http.put(`${this.Constants.apiUrl}servicerequest/${serviceRequestId}`, data, options);\n\t\t}\n\n\t\tdeletePackageService(serviceRequestId: number, packageId: number, servicePackageId: number) {\n\t\t\treturn this.$http.delete(`${this.Constants.apiUrl}servicerequest/${serviceRequestId}/package/${packageId}/service/${servicePackageId}`);\n\t\t}\n\n\t\tcreatePackageService(serviceRequestId: number, packageId: number, service: ReturnedProduct) {\n\t\t\treturn this.$http.post(`${this.Constants.apiUrl}servicerequest/${serviceRequestId}/package/${packageId}/service`, service);\n\t\t}\n\n\t\tupdatePackageService(serviceRequestId: number, packageId: number, service: Product) {\n\t\t\treturn this.$http.put(`${this.Constants.apiUrl}servicerequest/${serviceRequestId}/package/${packageId}/service/${service.id}`, service);\n\t\t}\n\n\t\tdeletePackage(serviceRequestId: number, pkgId: number): ng.IHttpPromise<Package> {\n\t\t\treturn this.$http.delete(`${this.Constants.apiUrl}servicerequest/${serviceRequestId}/package/${pkgId}`);\n\t\t}\n\n\t\trestorePackage(serviceRequestId: number, pkg: any, params?: any): ng.IHttpPromise<Package> {\n\t\t\treturn this.$http.put(`${this.Constants.apiUrl}servicerequest/${serviceRequestId}/package/${pkg.id}/restore`, pkg, {\n\t\t\t\tparams: params || {},\n\t\t\t});\n\t\t}\n\n\t\trecommendPackage(serviceRequestId: number, pkgId: number, data: any): ng.IHttpPromise<Package> {\n\t\t\treturn this.$http.post(`${this.Constants.apiUrl}servicerequest/${serviceRequestId}/package/${pkgId}/recommend`, data || {});\n\t\t}\n\n\t\tpublic static Factory() {\n\t\t\tlet instance = ($http: ng.IHttpService, Constants: IConstants) => {\n\t\t\t\treturn new ProductService($http, Constants);\n\t\t\t};\n\n\t\t\tinstance.$inject = ['$http', 'Constants'];\n\n\t\t\treturn instance;\n\t\t}\n\t}\n}","/// <reference path=\"../_references.ts\"/>\n\nmodule App.Questionnaire {\n\n\texport class QuestionnaireService {\n\t\tconstructor(\n\t\t\tprivate $http: ng.IHttpService,\n\t\t\tpublic Constants: IConstants\n\t\t) {\n\n\t\t}\n\n\t\tGetQuestionnaireToken(tokenId: number): ng.IHttpPromise<QuestionnaireToken> {\n\t\t\treturn this.$http.get(`${this.Constants.apiUrl}questionnairetoken/${tokenId}`);\n\t\t}\n\n\t\tCreateQuestionnaireToken(questionnairetoken: QuestionnaireTokenCreate): ng.IHttpPromise<QuestionnaireToken> {\n\t\t\treturn this.$http.post(`${this.Constants.apiUrl}questionnairetoken`, questionnairetoken);\n\t\t}\n\n\t\tUpdateQuestionnaireToken(questionnairetoken: QuestionnaireToken): ng.IHttpPromise<QuestionnaireToken> {\n\t\t\treturn this.$http.put(`${this.Constants.apiUrl}questionnairetoken/${questionnairetoken.id}`, questionnairetoken);\n\t\t}\n\n\t\tSaveQuestionnaireResponse(tokenId: number, response: QuestionnaireResponseCreate): ng.IHttpPromise<QuestionnaireToken> {\n\t\t\treturn this.$http.post(`${this.Constants.apiUrl}questionnairetoken/${tokenId}/response`, response);\n\t\t}\n\n\t\tEmailQuestionnaire(tokenId: number, data: Object): ng.IHttpPromise<QuestionnaireToken> {\n\t\t\treturn this.$http.post(`${this.Constants.apiUrl}questionnairetoken/${tokenId}/email`, data);\n\t\t}\n\n\t\tpublic static Factory() {\n\t\t\tlet instance = ($http: ng.IHttpService, Constants: IConstants) => {\n\t\t\t\treturn new QuestionnaireService($http, Constants);\n\t\t\t};\n\n\t\t\tinstance.$inject = ['$http', 'Constants'];\n\n\t\t\treturn instance;\n\t\t}\n\t}\n}","/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule App.TemplateStore {\r\n\timport Department = App.Appointments.Department;\r\n\timport SearchParams = App.PriceGuide.SearchParams;\r\n\r\n\texport class TemplateStoreService {\r\n\t\tconstructor(\r\n\t\t\tprivate $http: ng.IHttpService,\r\n\t\t\tpublic Constants: IConstants\r\n\t\t) {\r\n\r\n\t\t}\r\n\r\n\t\tgetTemplateDetails(templateId: number): ng.IHttpPromise<TemplateDetails> {\r\n\t\t\treturn this.$http.get(`${this.Constants.apiUrl}storetemplate/${templateId}`);\r\n\t\t}\r\n\r\n\t\tgetDownloadedTemplateDetails(templateId: number, params: {[key: string]: any} = {}, headers: {[key: string]: any} = {}): ng.IHttpPromise<TemplateDetails> {\r\n\t\t\treturn this.$http.get(`${this.Constants.apiUrl}template/${templateId}`, {\r\n\t\t\t\theaders: headers,\r\n\t\t\t\tparams: params\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tgetTemplateList(params: SearchParams): ng.IHttpPromise<StoreTemplate[]> {\r\n\t\t\treturn this.$http.get(`${this.Constants.apiUrl}storetemplate`, {\r\n\t\t\t\tparams: params\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tfavoriteTemplate(templateId: number): ng.IHttpPromise<TemplateDetails> {\r\n\t\t\treturn this.$http.post(`${this.Constants.apiUrl}storetemplate/${templateId}/favorite`, {});\r\n\t\t}\r\n\r\n\t\tunfavoriteTemplate(templateId: number): ng.IHttpPromise<TemplateDetails> {\r\n\t\t\treturn this.$http.post(`${this.Constants.apiUrl}storetemplate/${templateId}/unfavorite`, {});\r\n\t\t}\r\n\r\n\t\tdownloadTemplate(storeTemplateId: number, downloadOptions: DownloadTemplateOptions): ng.IHttpPromise<TemplateDetails> {\r\n\t\t\treturn this.$http.post(`${this.Constants.apiUrl}storetemplate/${storeTemplateId}/load`, downloadOptions);\r\n\t\t}\r\n\r\n\t\trateTemplate(storeTemplateId: number, rating: number): ng.IHttpPromise<TemplateDetails> {\r\n\t\t\treturn this.$http.post(`${this.Constants.apiUrl}storetemplate/${storeTemplateId}/rate`, { rating: rating })\r\n\t\t}\r\n\r\n\t\tgetDepartments(): ng.IHttpPromise<Department[]> {\r\n\t\t\treturn this.$http.get(`${this.Constants.apiUrl}department`);\r\n\t\t}\r\n\r\n\t\tpublic static Factory() {\r\n\t\t\tlet instance = ($http: ng.IHttpService, Constants: IConstants) => {\r\n\t\t\t\treturn new TemplateStoreService($http, Constants);\r\n\t\t\t};\r\n\r\n\t\t\tinstance.$inject = ['$http', 'Constants'];\r\n\r\n\t\t\treturn instance;\r\n\t\t}\r\n\t}\r\n}","/// <reference path=\"_references.ts\"/>\n\nmodule App.TimeEvent {\n\texport class TimeEventService {\n\t\tstatic $inject = ['$q', '$http', 'Constants', 'UserSession', 'PermissionService'];\n\t\tconstructor(\n\t\t\tprotected $q: ng.IQService,\n\t\t\tprotected $http: ng.IHttpService,\n\t\t\tprotected Constants: IConstants,\n\t\t\tprotected UserSession: App.User.UserSession,\n\t\t\tprotected PermissionService: App.Helpers.PermissionService\n\t\t) {\n\t\t}\n\n\t\tgetTags(params?: any): ng.IHttpPromise<TimeEventTag[]> {\n\t\t\treturn this.$http.get(`${this.Constants.apiUrl}timeeventtag`, {\n\t\t\t\tparams: params || {},\n\t\t\t});\n\t\t}\n\n\t\tgetTimeEvent(id: number, params?: any): ng.IHttpPromise<TimeEvent> {\n\t\t\treturn this.$http.get(`${this.Constants.apiUrl}timeevent/${id}`, {\n\t\t\t\tparams: params || {},\n\t\t\t});\n\t\t}\n\n\t\tgetTimeEvents(params?: any): ng.IHttpPromise<TimeEvent[]> {\n\t\t\treturn this.$http.get(`${this.Constants.apiUrl}timeevent`, {\n\t\t\t\tparams: params || {},\n\t\t\t});\n\t\t}\n\n\t\tupdate(id: number, data: TimeEventUpdate, params?: any): ng.IHttpPromise<TimeEvent> {\n\t\t\treturn this.$http.put(`${this.Constants.apiUrl}timeevent/${id}`, data, {\n\t\t\t\tparams: params || {},\n\t\t\t});\n\t\t}\n\n\t\tcreate(data: TimeEventUpdate, params?: any): ng.IHttpPromise<TimeEvent> {\n\t\t\treturn this.$http.post(`${this.Constants.apiUrl}timeevent`, data, {\n\t\t\t\tparams: params || {},\n\t\t\t});\n\t\t}\n\n\t\tgetLatestEvent(): ng.IPromise<TimeEvent> {\n\t\t\tif (!this.PermissionService.hasPermission('web.time-clock.field.view')) {\n\t\t\t\treturn this.$q.when(null);\n\t\t\t}\n\t\t\treturn this.UserSession.getUser()\n\t\t\t\t.then(user => this\n\t\t\t\t\t.getTimeEvents({\n\t\t\t\t\t\tuser: user.id,\n\t\t\t\t\t\tsize: 1,\n\t\t\t\t\t\torderBy: 'date,id',\n\t\t\t\t\t\tsort: 'DESC',\n\t\t\t\t\t})\n\t\t\t\t\t.then(r => r && r.data && r.data.length && r.data[0] || null)\n\t\t\t\t);\n\t\t}\n\n\t\tconfirmLastEvent(): ng.IPromise<any> {\n\t\t\tif (!this.PermissionService.hasPermission('web.time-clock.field.confirm')) {\n\t\t\t\treturn this.$q.when(null);\n\t\t\t}\n\t\t\treturn this.UserSession.getUser()\n\t\t\t\t.then(user => this.getTimeEvents({\n\t\t\t\t\tuser: user.id,\n\t\t\t\t\tsize: 2,\n\t\t\t\t\torderBy: 'date,id',\n\t\t\t\t\tsort: 'DESC'\n\t\t\t\t}))\n\t\t\t\t.then(r => r && r.data && r.data.length > 1 && TimeEventEditController.confirmEvent(\n\t\t\t\t\tr.data[0],\n\t\t\t\t\tr.data[1]\n\t\t\t\t));\n\t\t}\n\t}\n}\n","/// <reference path=\"../_references.ts\"/>\nmodule App.Timeclock {\n\timport LocationService = App.Helpers.LocationService;\n\n\ttype TimeclockListener = (timeclock: Timeclock) => void;\n\n\texport class TimeclockService {\n\t\tprivate static listeners: TimeclockListener[] = [];\n\t\tstatic factory() {\n\t\t\tlet instance = ($http: ng.IHttpService, Constants: IConstants, LocationService: LocationService) =>\n\t\t\t\tnew TimeclockService($http, Constants, LocationService);\n\n\t\t\tinstance.$inject = ['$http', 'Constants', 'LocationService'];\n\n\t\t\treturn instance;\n\t\t}\n\n\t\tpublic static addListener(listener: TimeclockListener) {\n\t\t\tthis.listeners.push(listener);\n\t\t}\n\n\t\tpublic static removeListener(listener: TimeclockListener) {\n\t\t\tvar index: number;\n\t\t\twhile((index = this.listeners.indexOf(listener)) >= 0) {\n\t\t\t\tthis.listeners.splice(index, 1);\n\t\t\t}\n\t\t}\n\n\t\tprivate static notify(timeclock: Timeclock) {\n\t\t\tthis.listeners.forEach(function(listener: TimeclockListener) { listener(timeclock); });\n\t\t}\n\n\t\tconstructor(\n\t\t\tpublic $http: ng.IHttpService,\n\t\t\tpublic Constants: IConstants,\n\t\t\tpublic LocationService: LocationService\n\t\t){ }\n\n\t\tpublic fetchAll(techId: number, params?: object): ng.IPromise<Timeclock[]> {\n\t\t\treturn this.$http.get(`${this.Constants.apiUrl}technician/${techId}/timeclock`, {\n\t\t\t\tparams: params || {},\n\t\t\t}).then((response: ng.IHttpResponse<Timeclock[]>) => {\n\t\t\t\tconst timeclocks = (response && response.data) || [];\n\n\t\t\t\ttimeclocks.forEach((timeclock: Timeclock) => {\n\t\t\t\t\tTimeclockService.notify(timeclock);\n\t\t\t\t});\n\n\t\t\t\treturn timeclocks;\n\t\t\t});\n\t\t}\n\n\t\tpublic update(techId:number, timeclock: Timeclock): ng.IPromise<Timeclock> {\n\t\t\treturn this.LocationService.getLocation().then((coords) => {\n\t\t\t\tlet data: any = timeclock;\n\t\t\t\tdata.latitude = coords.latitude;\n\t\t\t\tdata.longitude = coords.longitude;\n\n\t\t\t\treturn this.$http.put(`${this.Constants.apiUrl}technician/${techId}/timeclock/${timeclock.id}`, data).then((response: ng.IHttpResponse<Timeclock>) => {\n\t\t\t\t\tlet timeclock = response.data;\n\t\t\t\t\tTimeclockService.notify(timeclock);\n\t\t\t\t\treturn timeclock;\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\tpublic clockIn(techId: number): ng.IPromise<Timeclock> {\n\t\t\treturn this.LocationService.getLocation().then((coords) => {\n\t\t\t\treturn this.$http.post(`${this.Constants.apiUrl}technician/${techId}/timeclock/clockin`, {\n\t\t\t\t\tlatitude: coords.latitude,\n\t\t\t\t\tlongitude: coords.longitude\n\t\t\t\t}).then((response: ng.IHttpResponse<Timeclock>) => {\n\t\t\t\t\tlet timeclock = response.data;\n\t\t\t\t\tTimeclockService.notify(timeclock);\n\t\t\t\t\treturn timeclock;\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\tpublic clockOut(techId: number): ng.IPromise<Timeclock> {\n\t\t\treturn this.LocationService.getLocation().then((coords) => {\n\t\t\t\treturn this.$http.put(`${this.Constants.apiUrl}technician/${techId}/timeclock/clockout`, {\n\t\t\t\t\tlatitude: coords.latitude,\n\t\t\t\t\tlongitude: coords.longitude\n\t\t\t\t}).then((response: ng.IHttpResponse<Timeclock>) => {\n\t\t\t\t\tlet timeclock = response.data;\n\t\t\t\t\tTimeclockService.notify(timeclock);\n\t\t\t\t\treturn timeclock;\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\t}\n}\n","/// <reference path=\"../_references.ts\"/>\n\nmodule App.Utils {\n\timport Appointment = App.Appointments.Appointment;\n\timport AppointmentService = App.Appointments.AppointmentService;\n\timport AppRootScope = App.Administrative.AppRootScope;\n\timport SelectedAppointment = App.Appointments.SelectedAppointment;\n\timport UserSession = App.User.UserSession;\n\n\texport class OfficeService {\n\t\tconstructor(\n\t\t\tprivate $rootScope: AppRootScope,\n\t\t\tprivate $location: ng.ILocationService,\n\t\t\tprivate AppointmentService: AppointmentService,\n\t\t\tprivate SelectedAppointment: SelectedAppointment,\n\t\t\tprivate UserSession: UserSession,\n\t\t\tprivate $q: ng.IQService\n\t\t) {\n\t\t\tif($location.search().office) {\n\t\t\t\t$rootScope.app.hideAppHeader();\n\t\t\t}\n\t\t}\n\n\t\tgetAppointment(): ng.IHttpPromise<Appointment> {\n\t\t\tif(this.$location.search().apptId && this.$location.search().office) {\n\t\t\t\tthis.SelectedAppointment.clear();\n\n\t\t\t\tif (this.$location.search().officeOrg) {\n\t\t\t\t\tthis.$rootScope.app.setOrganization(this.$location.search().officeOrg);\n\t\t\t\t}\n\n\t\t\t\treturn this.AppointmentService.fetch(this.$location.search().apptId).then((resp) => {\n\t\t\t\t\tthis.SelectedAppointment.set(resp.data);\n\t\t\t\t\treturn resp;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn this.$q.reject();\n\t\t}\n\n\t\tpublic static Factory() {\n\t\t\tlet instance = (\n\t\t\t\t$rootScope: AppRootScope,\n\t\t\t\t$location: ng.ILocationService,\n\t\t\t\tAppointmentService: AppointmentService,\n\t\t\t\tSelectedAppointment: SelectedAppointment,\n\t\t\t\tUserSession: UserSession,\n\t\t\t\t$q: ng.IQService\n\t\t\t) => {\n\t\t\t\treturn new OfficeService(\n\t\t\t\t\t$rootScope,\n\t\t\t\t\t$location,\n\t\t\t\t\tAppointmentService,\n\t\t\t\t\tSelectedAppointment,\n\t\t\t\t\tUserSession,\n\t\t\t\t\t$q\n\t\t\t\t);\n\t\t\t};\n\n\t\t\treturn instance;\n\t\t}\n\t}\n}\n","/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule App.Utils {\r\n\texport class OrganizationService {\r\n\t\tconstructor(\r\n\t\t\tpublic $http: ng.IHttpService,\r\n\t\t\tpublic Constants: IConstants,\r\n\t\t){}\r\n\r\n\t\tpublic getPriceCardText(): ng.IHttpPromise<OrganizationSSPTextData> {\r\n\t\t\treturn this.$http.get(`${this.Constants.apiUrl}organization/current`, {\r\n\t\t\t\tparams: {\r\n\t\t\t\t\tquiet: 1,\r\n\t\t\t\t\tshow_field_text: 1,\r\n\t\t\t\t},\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tpublic getCallsourceDetails(): ng.IHttpPromise<OrganizationCallsourceData> {\r\n\t\t\treturn this.$http.get(`${this.Constants.apiUrl}organization/current/callsource`);\r\n\t\t}\r\n\r\n\t\tpublic getSRDisplayDetails(): ng.IHttpPromise<OrganizationSRDisplayData> {\r\n\t\t\treturn this.$http.get(`${this.Constants.apiUrl}organization/current/srdisplay`);\r\n\t\t}\r\n\r\n\t\tpublic getETCSettingDetails(): ng.IHttpPromise<OrganizationETCSettingData> {\r\n\t\t\treturn this.$http.get(`${this.Constants.apiUrl}organization/current/etcsetting`);\r\n\t\t}\r\n\r\n\t\tpublic getFileUploadDetails(): ng.IHttpPromise<OrganizationFileUploadData> {\r\n\t\t\treturn this.$http.get(`${this.Constants.apiUrl}organization/current/filesetting`);\r\n\t\t}\r\n\r\n\t\tpublic static Factory() {\r\n\t\t\tlet instance = ($http: ng.IHttpService, Constants: IConstants) => {\r\n\t\t\t\treturn new OrganizationService($http, Constants);\r\n\t\t\t};\r\n\r\n\t\t\tinstance.$inject = ['$http', 'Constants'];\r\n\r\n\t\t\treturn instance;\r\n\t\t}\r\n\t}\r\n}","/// <reference path=\"../_references.ts\"/>\n\nmodule App.Utils {\n\texport class ToastService {\n\t\tpublic static SUCCESS_SELECTOR = '#toast-service';\n\t\tpublic static ERROR_SELECTOR = '#toast-service-error';\n\t\tpublic static LOADING_SELECTOR = '#toast-service-loading';\n\t\tconstructor() {\n\n\t\t}\n\n\t\tshow(text: string, selector: string = ToastService.SUCCESS_SELECTOR, timeout: number = 20000): void {\n\t\t\tconst snackbar = document.querySelector(selector);\n\n\t\t\tif (snackbar) {\n\t\t\t\tnew MaterialSnackbar(snackbar).showSnackbar({\n\t\t\t\t\tmessage: text,\n\t\t\t\t\ttimeout: timeout,\n\t\t\t\t\tactionHandler: function() {\n\t\t\t\t\t\tnew MaterialSnackbar(snackbar).cleanup_()\n\t\t\t\t\t},\n\t\t\t\t\tactionText: 'x'\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\thide(selector: string = ToastService.SUCCESS_SELECTOR): void {\n\t\t\tconst snackbar = document.querySelector(selector);\n\n\t\t\tif (snackbar) {\n\t\t\t\tnew MaterialSnackbar(snackbar).cleanup_();\n\t\t\t}\n\t\t}\n\n\t\tshowError(prefix: string, error?: {data?: {message?: string}}, defaultMessage?: string): void {\n\t\t\tthis.show(prefix + (error && error.data && error.data.message || defaultMessage || 'Unknown Error'), ToastService.ERROR_SELECTOR);\n\t\t}\n\n\t\tshowLoading(text: string): void {\n\t\t\tthis.show(text, ToastService.LOADING_SELECTOR, 3600000000);\n\t\t}\n\n\t\thideLoading(): void {\n\t\t\tthis.hide(ToastService.LOADING_SELECTOR);\n\t\t}\n\n\t\tpublic static Factory() {\n\t\t\tlet instance = () => {\n\t\t\t\treturn new ToastService();\n\t\t\t};\n\n\t\t\tinstance.$inject = [];\n\n\t\t\treturn instance;\n\t\t}\n\t}\n\n\texport class DefaultToasts {\n\t\tprivate ToastService: ToastService = new ToastService();\n\t\tdisplayWarning(text: string) {\n\t\t\tthis.ToastService.show(text);\n\t\t}\n\t\tdisplaySuccess(text: string) {\n\t\t\tthis.ToastService.show(text);\n\t\t}\n\t\tdisplay(text: string) {\n\t\t\tthis.ToastService.show(text);\n\t\t}\n\t\tdisplayError(err: {data?: {message?: string}}, prefix: string, defaultMessage?: string) {\n\t\t\tthis.ToastService.showError(prefix, err, defaultMessage);\n\t\t}\n\t\tdisplayLoading(text: string) {\n\t\t\tthis.ToastService.showLoading(text);\n\t\t}\n\t\thideLoading() {\n\t\t\tthis.ToastService.hideLoading();\n\t\t}\n\t\thide() {\n\t\t\tthis.ToastService.hide();\n\t\t}\n\n\t\tpublic static Factory() {\n\t\t\tlet instance = () => {\n\t\t\t\treturn new DefaultToasts();\n\t\t\t};\n\n\t\t\tinstance.$inject = [];\n\n\t\t\treturn instance;\n\t\t}\n\t}\n}","/// <reference path=\"../_references.ts\"/>\n\nmodule App.User {\n\timport LoginService = App.Login.LoginService;\n\timport AppointmentService = App.Appointments.AppointmentService;\n\timport TimeclockService = App.Timeclock.TimeclockService;\n\timport SelectedAppointment = App.Appointments.SelectedAppointment;\n\n\tinterface LocalStorage extends ng.local.storage.ILocalStorageService {\n\t\tuId: number;\n\t\tuserData: App.Login.userLoginData;\n\t\t$reset: () => void;\n\t}\n\n\tinterface Tech {\n\t\tid: number;\n\t\tlatest_time: App.Timeclock.Timeclock;\n\t\tfull_name: string;\n\t}\n\n\texport interface User {\n\t\tid: number;\n\t\temail: string;\n\t\tlast_online_date: null;\n\t\tavatar: string;\n\t\tusername: string;\n\t\tfavorites: number[];\n\t\ttechnician?: Tech;\n\t\tpermissions: string[];\n\t\trole: App.Login.roleLoginData|null;\n\t\ttech_role: App.Login.roleLoginData|null;\n\t\tfirst_name?: string;\n\t\tlast_name?: string;\n\t\tfull_name?: string;\n\t\torganization?: { id: number, name: string };\n\t}\n\n\texport interface UserSession {\n\t\tuser: User;\n\t\tgetUser: () => ng.IPromise<User>;\n\t\tsetUser: (user: User) => void;\n\t\tcheckSession: () => void;\n\t\tdestroySession: () => ng.IPromise<{}>;\n\t\tfetchSessionData: () => ng.IPromise<void>;\n\t\tpauseAllAppointments: () => ng.IPromise<{}>;\n\t\tclockInTimeclock: () => ng.IPromise<any>;\n\t\tclockOutTimeclock: () => ng.IPromise<any>;\n\t\tisClocked: () => boolean;\n\t\tfetchUserInfo: () => ng.IPromise<void>;\n\t\taddFavorite: (id: number) => void;\n\t\tremoveFavorite: (id: number) => void;\n\t}\n\n\texport function UserSessionFactory(\n\t\t$window: ng.IWindowService,\n\t\t$http: ng.IHttpService,\n\t\t$localStorage: LocalStorage,\n\t\t$q: ng.IQService,\n\t\tConstants: IConstants,\n\t\tLoginService: LoginService,\n\t\tAppointmentService: AppointmentService,\n\t\tTimeclockService: TimeclockService,\n\t\tSelectedAppointment: SelectedAppointment,\n\t\t$location: ng.ILocationService,\n\t\t$stateParams: ng.ui.IStateParamsService\n\t): UserSession {\n\t\tlet isFetching: boolean = false,\n\t\t\tfetchCallbacks: ng.IDeferred<void>[] = [],\n\t\t\tUser: UserSession = {\n\t\t\t\tuser: null,\n\t\t\t\tgetUser: () => {\n\t\t\t\t\tif (User.user)\n\t\t\t\t\t\treturn $q.when(User.user);\n\t\t\t\t\treturn User.fetchSessionData().then(() => {\n\t\t\t\t\t\treturn User.user;\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\tsetUser: (user?: User) => {\n\t\t\t\t\tif ((user && user.technician) || !!$location.search().office) {\n\t\t\t\t\t\tUser.user = user;\n\n\t\t\t\t\t\tif(!$window.userlaneSettings && !$window.debugInfoEnabled) {\n\t\t\t\t\t\t\tlet tags = [\n\t\t\t\t\t\t\t\t'technician'\n\t\t\t\t\t\t\t];\n\n\t\t\t\t\t\t\tif (user.organization) {\n\t\t\t\t\t\t\t\ttags.push(`organization${user.organization.id}`);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (user.role) {\n\t\t\t\t\t\t\t\ttags.push(`role${user.role.id}`);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t$window.userlaneSettings = {\n\t\t\t\t\t\t\t\tapp_id: 32112,\n\t\t\t\t\t\t\t\tuser: {\n\t\t\t\t\t\t\t\t\tid: user.id,\n\t\t\t\t\t\t\t\t\ttags: tags\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\tlet userlaneTag = document.createElement('script');\n\t\t\t\t\t\t\tuserlaneTag.type = 'text/javascript';\n\t\t\t\t\t\t\tuserlaneTag.src = '//cdn.userlane.com/userlane.js';\n\t\t\t\t\t\t\tdocument.body.appendChild(userlaneTag);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tLoginService.destroySession();\n\t\t\t\t\t\t$window.location.href = '/';\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tcheckSession: () => {\n\t\t\t\t\tif(!LoginService.isActiveSession() && $window.location.pathname !== '/') {\n\t\t\t\t\t\t$window.location.href = '/?redirect=' + encodeURIComponent($window.location.pathname);\n\t\t\t\t\t} else if(LoginService.isActiveSession() && $window.location.pathname === '/') {\n\t\t\t\t\t\t$window.location.href = $stateParams.redirect\n\t\t\t\t\t\t\t? decodeURIComponent($stateParams.redirect)\n\t\t\t\t\t\t\t: '/home/appointment';\n\t\t\t\t\t} else if(LoginService.isActiveSession()) {\n\t\t\t\t\t\tUser.fetchSessionData();\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tdestroySession: () => {\n\t\t\t\t\treturn LoginService.logoutSession();\n\t\t\t\t},\n\t\t\t\tfetchSessionData: () => {\n\t\t\t\t\tif (isFetching) {\n\t\t\t\t\t\tlet defer: ng.IDeferred<any> = $q.defer();\n\t\t\t\t\t\tfetchCallbacks.push(defer);\n\t\t\t\t\t\treturn defer.promise;\n\t\t\t\t\t}\n\n\t\t\t\t\tisFetching = true;\n\t\t\t\t\treturn User.fetchUserInfo().then(() => {\n\t\t\t\t\t\tif (!User.user) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst prevId = $localStorage.uId,\n\t\t\t\t\t\t\tcurId = User.user.id;\n\n\t\t\t\t\t\tif (prevId != curId && prevId) {\n\t\t\t\t\t\t\t$localStorage.$reset();\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t$localStorage.uId = curId;\n\n\t\t\t\t\t\tUser.user.favorites = User.user.favorites || [];\n\t\t\t\t\t\t$localStorage.userData = User.user;\n\n\t\t\t\t\t\twhile (fetchCallbacks.length > 0) {\n\t\t\t\t\t\t\tfetchCallbacks[0].resolve();\n\t\t\t\t\t\t\tfetchCallbacks.shift();\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tisFetching = false;\n\t\t\t\t\t}).catch(() => { isFetching = false; });\n\t\t\t\t},\n\t\t\t\tpauseAllAppointments: () => {\n\t\t\t\t\treturn callWithUserId(AppointmentService.pauseAll.bind(AppointmentService));\n\t\t\t\t},\n\t\t\t\tclockInTimeclock: () => {\n\t\t\t\t\treturn callWithUserId(TimeclockService.clockIn.bind(TimeclockService))\n\t\t\t\t\t\t.then(() => { return User.fetchSessionData(); });\n\t\t\t\t},\n\t\t\t\tclockOutTimeclock: () => {\n\t\t\t\t\treturn callWithUserId(TimeclockService.clockOut.bind(TimeclockService))\n\t\t\t\t\t\t.then(() => { return User.fetchSessionData(); });\n\t\t\t\t},\n\t\t\t\tisClocked: () => {\n\t\t\t\t\treturn User.user &&\n\t\t\t\t\t\tUser.user.technician &&\n\t\t\t\t\t\tUser.user.technician.latest_time &&\n\t\t\t\t\t\tUser.user.technician.latest_time.active;\n\t\t\t\t},\n\t\t\t\tfetchUserInfo: () => {\n\t\t\t\t\treturn $http.get(`${Constants.apiUrl}user/current`).then((response) => {\n\t\t\t\t\t\tUser.setUser(<User>response.data);\n\t\t\t\t\t}, (response) => {\n\t\t\t\t\t\tif(response.status === 401) {\n\t\t\t\t\t\t\tLoginService.destroySession();\n\t\t\t\t\t\t\t$window.location.href = '/';\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\taddFavorite: (id) => {\n\t\t\t\t\tUser.user.favorites.push(id);\n\n\t\t\t\t\tupdateUserFavorites(id);\n\t\t\t\t},\n\t\t\t\tremoveFavorite: (id) => {\n\t\t\t\t\tUser.user.favorites.splice(User.user.favorites.indexOf(id), 1);\n\n\t\t\t\t\tupdateUserFavorites(id);\n\t\t\t\t}\n\t\t\t};\n\n\t\tfunction callWithUserId(call: (id: number) => ng.IPromise<any>): ng.IPromise<any> {\n\t\t\tif (User.user && User.user.id)\n\t\t\t\treturn call(User.user.id);\n\t\t\treturn User.fetchSessionData().then(() => {\n\t\t\t\treturn call(User.user.id);\n\t\t\t});\n\t\t}\n\t\tfunction updateUserFavorites(id: number) {\n\t\t\treturn $http.put(`${Constants.apiUrl}user/${User.user.id}`, {\n\t\t\t\tfavorites: User.user.favorites\n\t\t\t}).catch(() => {\n\t\t\t\tUser.user.favorites.splice(User.user.favorites.indexOf(id), 1);\n\t\t\t});\n\t\t}\n\n\t\treturn User;\n\t}\n\n\tUserSessionFactory.$inject = ['$window', '$http', '$localStorage', '$q', 'Constants', 'LoginService', 'AppointmentService', 'TimeclockService', 'SelectedAppointment', '$location', '$stateParams'];\n}\n","/// <reference path=\"../_references.ts\"/>\n\nmodule App.WorkOrder {\n\n\texport class BannerService {\n\n\t\tbanner: Banner;\n\n\t\tconstructor(private $http: ng.IHttpService,\n\t\t\t\t\tprivate $window: ng.IWindowService,\n\t\t\t\t\tprivate $timeout: ng.ITimeoutService,\n\t\t\t\t\tpublic Constants: IConstants) {\n\n\t\t}\n\n\t\tpublic getBannerProperty(banner: Banner, prop: string): string {\n\t\t\tlet value: string = null;\n\n\t\t\tif (banner) {\n\t\t\t\tswitch(prop) {\n\t\t\t\t\tcase 'color' :\n\t\t\t\t\t\tvalue = banner.color;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'text' :\n\t\t\t\t\t\tvalue = banner.text;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t// nothing;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn value;\n\t\t}\n\n\t\tpublic getPackageBanners(): ng.IHttpPromise<Banner[]> {\n\t\t\tconst vm = this;\n\n\t\t\treturn vm.$http.get(`${vm.Constants.apiUrl}packagebanner`);\n\t\t}\n\n\t\tpublic triggerResizeEvent() {\n\t\t\tconst vm = this;\n\n\t\t\tvm.$timeout(() => {\n\t\t\t\tvm.$window.dispatchEvent(new Event('resize'));\n\t\t\t}, 100);\n\t\t}\n\n\t\tpublic static Factory() {\n\t\t\tlet instance = ($http: ng.IHttpService, $window: ng.IWindowService, $timeout: ng.ITimeoutService, Constants: IConstants) => {\n\t\t\t\treturn new BannerService($http, $window, $timeout, Constants);\n\t\t\t};\n\n\t\t\tinstance.$inject = ['$http', '$window', '$timeout', 'Constants'];\n\n\t\t\treturn instance;\n\n\t\t}\n\t}\n}\n","/// <reference path=\"../_references.ts\"/>\n\nmodule App.WorkOrder {\n\timport Package = App.PriceGuide.Package;\n\timport ProductService = App.PriceGuide.ProductService;\n\timport ServiceRequest = App.Appointments.ServiceRequest;\n\n\texport class PackageActionsService {\n\t\tprotected appointmentId: number;\n\t\tpublic priceCardsVisible: boolean = false;\n\t\tpublic packageCheckboxesVisible: boolean = false;\n\t\tpublic selectForAction: string = '';\n\t\tpublic selectedPackages: Package[] = [];\n\t\tprivate updateAllCallback: Function;\n\n\t\tconstructor(\n\t\t\tpublic ProductService: ProductService,\n\t\t\tpublic $q: ng.IQService,\n\t\t) { }\n\n\t\tpublic setActiveAppointmentId(id: number) {\n\t\t\tif (this.appointmentId !== id) {\n\t\t\t\tthis.priceCardsVisible = false;\n\t\t\t\tthis.resetSelections();\n\t\t\t}\n\n\t\t\tthis.appointmentId = id;\n\t\t}\n\n\t\tpublic togglePriceCardsVisible() {\n\t\t\tconst vm = this;\n\t\t\tvm.priceCardsVisible = !vm.priceCardsVisible;\n\t\t}\n\n\t\tprivate deletePackages(sr: ServiceRequest) {\n\t\t\tconst vm = this,\n\t\t\t\tpackages = this.selectedPackages.slice(),\n\t\t\t\tpromises: {[key: number] : ng.IHttpPromise<Package>} = {};\n\n\t\t\tpackages.forEach((pkg) =>{\n\t\t\t\tpromises[pkg.id] = vm.ProductService.deletePackage(sr.id, pkg.id);\n\t\t\t});\n\n\t\t\tvm.$q.all(promises).then(()=>{\n\t\t\t\tvm.updateAllCallback();\n\t\t\t\tvm.resetSelections();\n\t\t\t}, (error) => {\n\t\t\t\tconsole.log('Something went wrong - unable to delete all the packages.' + error);\n\t\t\t});\n\t\t}\n\n\t\tpublic resetSelections() {\n\t\t\tconst vm = this;\n\t\t\tvm.packageCheckboxesVisible = false;\n\t\t\tvm.selectedPackages = [];\n\t\t\tvm.selectForAction = '';\n\t\t}\n\n\t\tprivate recommendPackages(sr: ServiceRequest) {\n\t\t\tconst vm = this,\n\t\t\t\tpackages = this.selectedPackages.slice(),\n\t\t\t\tpromises: {[key: number] : ng.IHttpPromise<Package>} = {};\n\n\t\t\tpackages.forEach((pkg) =>{\n\t\t\t\tif (!pkg.name) {\n\t\t\t\t\tpkg.name = 'Option ' + (pkg.index + 1);\n\t\t\t\t}\n\n\t\t\t\tpromises[pkg.id] = vm.ProductService.recommendPackage(sr.id, pkg.id, { name: pkg.name });\n\t\t\t});\n\n\t\t\tvm.$q.all(promises).then(() => {\n\t\t\t\tvm.updateAllCallback();\n\t\t\t\tvm.resetSelections();\n\t\t\t}, (error) => {\n\t\t\t\tconsole.log('Something went wrong - unable to recommend all the packages.' + error);\n\t\t\t});\n\t\t}\n\n\t\tpublic makeAction(actionType: string, sr: ServiceRequest, cancel?: boolean) {\n\t\t\tconst vm = this,\n\t\t\t\tdoAction = function(type: string) {\n\t\t\t\t\tif(type === 'recommend') {\n\t\t\t\t\t\tvm.recommendPackages(sr);\n\t\t\t\t\t} else if(type === 'delete') {\n\t\t\t\t\t\tvm.deletePackages(sr);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tgetMode = function(actionType: string) {\n\t\t\t\t\tlet mode = 'select',\n\t\t\t\t\t\tselected = vm.selectedPackages.length > 0;\n\n\t\t\t\t\tif(vm.packageCheckboxesVisible) {\n\t\t\t\t\t\tif(selected) {\n\t\t\t\t\t\t\tif(actionType == vm.selectForAction) {\n\t\t\t\t\t\t\t\tmode = 'action';\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tmode = 'cancel';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tmode = 'cancel';\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn mode;\n\t\t\t\t};\n\n\t\t\tif (cancel) {\n\t\t\t\tvm.resetSelections();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tswitch (getMode(actionType)) {\n\t\t\t\tcase 'cancel' :\n\t\t\t\t\tvm.resetSelections();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'action':\n\t\t\t\t\tdoAction(actionType);\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tvm.selectForAction = actionType;\n\t\t\t\t\tvm.packageCheckboxesVisible = true;\n\t\t\t}\n\t\t}\n\n\t\tpublic subscribeCallback(callback: Function) {\n\t\t\tconst vm = this;\n\n\t\t\tvm.updateAllCallback = callback;\n\t\t}\n\n\t\tpublic unsubscribeCallback(callback: Function) {\n\t\t\tconst vm = this;\n\n\t\t\tvm.updateAllCallback = null;\n\n\t\t}\n\n\t\tpublic selectPackage(selectedPkg:Package) {\n\t\t\tconst vm = this,\n\t\t\t\tindexOfPackage = vm.selectedPackages.findIndex((pkg) => {\n\t\t\t\t\treturn pkg.id === selectedPkg.id;\n\t\t\t\t});\n\n\t\t\tif(indexOfPackage > -1) {\n\t\t\t\tvm.selectedPackages.splice(indexOfPackage, 1);\n\t\t\t} else {\n\t\t\t\tvm.selectedPackages.push(selectedPkg);\n\t\t\t}\n\n\t\t}\n\n\t\tpublic isPackageSelected(selectedPkg: Package): boolean {\n\t\t\tconst vm = this;\n\t\t\treturn vm.selectedPackages.findIndex((pkg) => {\n\t\t\t\treturn pkg.id === selectedPkg.id;\n\t\t\t}) > -1;\n\t\t}\n\n\t\tpublic static Factory() {\n\t\t\tlet instance = (ProductService: ProductService, $q: ng.IQService) => {\n\t\t\t\treturn new PackageActionsService(ProductService, $q);\n\t\t\t};\n\n\t\t\tinstance.$inject = ['ProductService', '$q'];\n\n\t\t\treturn instance;\n\t\t}\n\t}\n}\n","/// <reference path=\"../_references.ts\"/>\n\nmodule App.WorkOrder {\n\timport Appointment = App.Appointments.Appointment;\n\timport FinancePlan = App.Appointments.FinancePlan;\n\timport ServicePlan = App.Appointments.ServicePlan;\n\timport ServiceRequest = App.Appointments.ServiceRequest;\n\timport ServiceableItem = App.ItemManagement.ServiceableItem;\n\n\texport class WorkOrderService {\n\t\tconstructor(\n\t\t\tprivate $http: ng.IHttpService,\n\t\t\tpublic Constants: IConstants\n\t\t) {\n\n\t\t}\n\n\t\tgetSummary(serviceRequestId: number): ng.IHttpPromise<Summary> {\n\t\t\treturn this.$http.get(`${this.Constants.apiUrl}servicerequest/${serviceRequestId}/summary`);\n\t\t}\n\n\t\tgetServicePlans(serviceRequestId: number): ng.IHttpPromise<ServicePlan[]> {\n\t\t\treturn this.$http.get(`${this.Constants.apiUrl}serviceplan?visible=1`, {\n\t\t\t\tparams: {\n\t\t\t\t\t//service_request_id: serviceRequestId\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\temail(serviceRequestId: number, email: string, packages?: Number[]): ng.IHttpPromise<{}> {\n\t\t\treturn this.$http.post(`${this.Constants.apiUrl}servicerequest/${serviceRequestId}/email`, {\n\t\t\t\temail: email,\n\t\t\t\tpackages: packages || null\n\t\t\t});\n\t\t}\n\n\t\tsendApprovalText(srId: number, phone: string, appointmentId?: number): ng.IHttpPromise<{}> {\n\t\t\treturn this.$http.post(`${this.Constants.apiUrl}servicerequest/${srId}/signtoken`, {\n\t\t\t\tphone: phone,\n\t\t\t\tappointment: appointmentId,\n\t\t\t});\n\t\t}\n\n\t\tsendApprovalEmail(srId: number, email: string, appointmentId?: number): ng.IHttpPromise<{}> {\n\t\t\treturn this.$http.post(`${this.Constants.apiUrl}servicerequest/${srId}/signtoken`, {\n\t\t\t\temail: email,\n\t\t\t\tappointment: appointmentId,\n\t\t\t});\n\t\t}\n\n\t\tgetFinanceCompanies(serviceRequestId?: number): ng.IHttpPromise<FinancePlan[]> {\n\t\t\treturn this.$http.get(`${this.Constants.apiUrl}financecompany`, {\n\t\t\t\tparams: {\n\t\t\t\t\tservice_request: serviceRequestId\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tgetRecommendationPreview(packageIds: number[], allowNonRec: boolean, params?: object): ng.IHttpPromise<string> {\n\t\t\treturn this.$http.post(\n\t\t\t\t`${this.Constants.apiUrl}recommendation/preview.html`, {\n\t\t\t\t\tids: packageIds,\n\t\t\t\t\tallowNonRec: allowNonRec\n\t\t\t\t}, {\n\t\t\t\t\tparams: params || {}\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\n\t\tupdateServicePlan(serviceRequestId: number, servicePlan: ServicePlan): ng.IHttpPromise<ServiceRequest> {\n\t\t\treturn this.$http.put(`${this.Constants.apiUrl}servicerequest/${serviceRequestId}`, {\n\t\t\t\tservice_plan: servicePlan\n\t\t\t});\n\t\t}\n\n\t\tupdateFinancePlan(serviceRequestId: number, financePlan: FinancePlan): ng.IHttpPromise<ServiceRequest> {\n\t\t\treturn this.$http.put(`${this.Constants.apiUrl}servicerequest/${serviceRequestId}`, {\n\t\t\t\tfinance_plan: financePlan\n\t\t\t});\n\t\t}\n\n\t\tgetFinancePlan(financePlanId: number, serviceRequestId?: number): ng.IHttpPromise<FinancePlan> {\n\t\t\treturn this.$http.get(`${this.Constants.apiUrl}financeplan/${financePlanId}`, {\n\t\t\t\tparams: {\n\t\t\t\t\tservice_request: serviceRequestId\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tfetchSignature(serviceRequestId: number): ng.IHttpPromise<Approval> {\n\t\t\treturn this.$http.get(`${this.Constants.apiUrl}servicerequest/${serviceRequestId}/approval`);\n\t\t}\n\n\t\tsaveSignature(\n\t\t\tserviceRequestId: number,\n\t\t\tdataUrl: string,\n\t\t\tprintName: string,\n\t\t\tamount: string,\n\t\t\tterms: TermsConditions[]\n\t\t): ng.IHttpPromise<Approval> {\n\t\t\treturn this.$http.post(`${this.Constants.apiUrl}servicerequest/${serviceRequestId}/approval`, {\n\t\t\t\tdata_url: dataUrl,\n\t\t\t\tprint_name: printName,\n\t\t\t\tamount: amount,\n\t\t\t\tterms: terms\n\t\t\t});\n\t\t}\n\n\t\taddAdjustment(serviceRequestId: number, adjustmentCode: string) {\n\t\t\treturn this.$http.put(`${this.Constants.apiUrl}servicerequest/${serviceRequestId}`, {\n\t\t\t\tcoupon: adjustmentCode\n\t\t\t})\n\t\t}\n\n\t\toverrideSalesTax(serviceRequestId: number, salesTaxOverride: number, taxType: string) {\n\t\t\tlet obj = null;\n\n\t\t\tswitch(taxType) {\n\t\t\t\tcase \"material\" :\n\t\t\t\t\tobj = {sales_tax_override_material: salesTaxOverride};\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"labor\" :\n\t\t\t\t\tobj = {sales_tax_override_labor: salesTaxOverride};\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"total\" :\n\t\t\t\t\tobj = {sales_tax_override_material: salesTaxOverride , sales_tax_override_labor: 0};\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\treturn this.$http.put(`${this.Constants.apiUrl}servicerequest/${serviceRequestId}`, obj);\n\t\t}\n\n\t\tpublic static Factory() {\n\t\t\tlet instance = ($http: ng.IHttpService, Constants: IConstants) => {\n\t\t\t\treturn new WorkOrderService($http, Constants);\n\t\t\t};\n\n\t\t\tinstance.$inject = ['$http', 'Constants'];\n\n\t\t\treturn instance;\n\t\t}\n\t}\n}","/// <reference path=\"../_references.ts\"/>\n\nmodule App.WorkOrderTemplate {\n\texport class WorkOrderTemplateService {\n\t\tconstructor(\n\t\t\tprivate $http: ng.IHttpService,\n\t\t\tpublic Constants: IConstants\n\t\t) {\n\n\t\t}\n\n\t\tfetchAll(serviceRequestId: number, query: string, favorites: true | null, size: number | null, page: number | null): ng.IHttpPromise<Template[]> {\n\t\t\treturn this.$http.get(`${this.Constants.apiUrl}template`, {\n\t\t\t\tparams: {\n\t\t\t\t\tservice_request_id: serviceRequestId,\n\t\t\t\t\tquery: query,\n\t\t\t\t\tfavorites: favorites,\n\t\t\t\t\tsize: size,\n\t\t\t\t\tpage: page,\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tdelete(id: number, params?: any): ng.IHttpPromise<Template> {\n\t\t\treturn this.$http.delete(`${this.Constants.apiUrl}template/${id}`, {\n\t\t\t\tparams: params || {},\n\t\t\t});\n\t\t}\n\n\t\taddFavorite(templateId: number): ng.IHttpPromise<void> {\n\t\t\treturn this.$http.post(`${this.Constants.apiUrl}template/${templateId}/favorite`, {});\n\t\t}\n\n\t\tremoveFavorite(templateId: number): ng.IHttpPromise<void> {\n\t\t\treturn this.$http.post(`${this.Constants.apiUrl}template/${templateId}/unfavorite`, {});\n\t\t}\n\n\t\tload(serviceRequestId: number, templateIds: string): ng.IHttpPromise<Template> {\n\t\t\treturn this.$http.post(`${this.Constants.apiUrl}servicerequest/${serviceRequestId}/loadtemplate/${templateIds}`, {});\n\t\t}\n\n\t\tcreate(serviceRequestId: number, template: App.WorkOrder.Template): ng.IHttpPromise<Template> {\n\t\t\treturn this.$http.post(`${this.Constants.apiUrl}servicerequest/${serviceRequestId}/template`, template);\n\t\t}\n\n\t\tpublic static Factory() {\n\t\t\tlet instance = ($http: ng.IHttpService, Constants: IConstants) => {\n\t\t\t\treturn new WorkOrderTemplateService($http, Constants);\n\t\t\t};\n\n\t\t\tinstance.$inject = ['$http', 'Constants'];\n\n\t\t\treturn instance;\n\t\t}\n\t}\n}","/// <reference path=\"../_references.ts\"/>\n\nmodule App.Administrative.PurchaseOrder {\n\texport class PurchaseOrderService {\n\t\tconstructor(\n\t\t\tprivate $http: ng.IHttpService,\n\t\t\tprivate Constants: IConstants\n\t\t) {\n\n\t\t}\n\n\t\tcreate(purchaseOrder: PO): ng.IHttpPromise<PO> {\n\t\t\treturn this.$http.post(`${this.Constants.apiUrl}purchaseorder`, purchaseOrder);\n\t\t}\n\n\t\tgetTypes(): ng.IHttpPromise<PurchaseOrderType[]> {\n\t\t\treturn this.$http.get(`${this.Constants.apiUrl}purchaseordertype`);\n\t\t}\n\n\t\tgetAll(serviceRequestId?: number): ng.IHttpPromise<PO[]> {\n\t\t\tlet query: {[key:string]: number} = {};\n\t\t\tif (angular.isDefined(serviceRequestId)) {\n\t\t\t\t\tquery.service_request = serviceRequestId;\n\t\t\t}\n\t\t\treturn this.$http.get(`${this.Constants.apiUrl}purchaseorder`, {\n\t\t\t\tparams: query\n\t\t\t});\n\t\t}\n\n\t\tpublic static Factory() {\n\t\t\tlet instance = ($http: ng.IHttpService, Constants: IConstants) => {\n\t\t\t\treturn new PurchaseOrderService($http, Constants);\n\t\t\t};\n\n\t\t\tinstance.$inject = ['$http', 'Constants'];\n\n\t\t\treturn instance;\n\t\t}\n\t}\n}\n","/// <reference path=\"../_references.ts\"/>\n\nmodule App.Administrative.Inventory {\n    import ServiceRequest = App.Appointments.ServiceRequest;\n    import Appointment = App.Appointments.Appointment;\n\n    export class InventoryService {\n        constructor(\n            private $http: ng.IHttpService,\n            public Constants: IConstants\n        ){\n\n        }\n\n        getServiceRequest(serviceRequestID: number): ng.IHttpPromise<ServiceRequest> {\n            return this.$http.get(`${this.Constants.apiUrl}servicerequest/${serviceRequestID}`);\n        }\n\n        getAllInventoryReplenishments(): ng.IHttpPromise<InventoryReplenishment[]> {\n            return this.$http.get(`${this.Constants.apiUrl}inventoryreplenishment`);\n        }\n\n        getInventoryReplenishment(apptID: number): ng.IHttpPromise<InventoryReplenishment[]> {\n            return this.$http.get(`${this.Constants.apiUrl}appointment/${apptID}/inventory`);\n        }\n\n        createInventoryReplenishment(apptID: number, invRepl: InventoryReplenishmentCreate): ng.IHttpPromise<InventoryReplenishment> {\n            return this.$http.post(`${this.Constants.apiUrl}appointment/${apptID}/inventory`, invRepl);\n        }\n\n        createIndependentInventoryReplenishment(invRepl: InventoryReplenishmentCreate): ng.IHttpPromise<InventoryReplenishment> {\n            return this.$http.post(`${this.Constants.apiUrl}inventoryreplenishment`, invRepl);\n        }\n\n        deleteInventoryReplenishment(invReplID: number): ng.IHttpPromise<InventoryReplenishment> {\n            return this.$http.delete(`${this.Constants.apiUrl}inventoryreplenishment/${invReplID}`);\n        }\n\n        getInventoryList(searchParams: SearchParams): ng.IHttpPromise<InventoryDetails[]> {\n            return this.$http.get(`${this.Constants.apiUrl}inventory`, {\n                params: searchParams\n            });\n        }\n\n        getInventoryItem(invId: number): ng.IHttpPromise<InventoryDetails> {\n            return this.$http.get(`${this.Constants.apiUrl}inventory/${invId}`);\n        }\n\n        favoriteInventory(invId: number): ng.IHttpPromise<InventoryDetails> {\n            return this.$http.post(`${this.Constants.apiUrl}inventory/${invId}/favorite`, {});\n        }\n\n        unfavoriteInventory(invId: number): ng.IHttpPromise<InventoryDetails> {\n            return this.$http.post(`${this.Constants.apiUrl}inventory/${invId}/unfavorite`, {});\n        }\n\n        createCustomInventory(customInventory: CustomInventory): ng.IHttpPromise<InventoryDetails> {\n            return this.$http.post(`${this.Constants.apiUrl}inventory`, customInventory);\n        }\n\n        getInventoryGroups(): ng.IHttpPromise<InventoryGroup[]>  {\n            return this.$http.get(`${this.Constants.apiUrl}inventorygroup`);\n        }\n\n        getWarehouses(): ng.IHttpPromise<Warehouse[]>  {\n            return this.$http.get(`${this.Constants.apiUrl}warehouse`);\n        }\n\n        getInventoryCategories(setId: number): ng.IHttpPromise<InventoryCategory[]>  {\n            return this.$http.get(`${this.Constants.apiUrl}inventorycategory?inventory_group=${setId}`)\n        }\n\n        getInventorySubCategories(categoryId: number): ng.IHttpPromise<InventorySubCategory[]>  {\n            return this.$http.get(`${this.Constants.apiUrl}inventorysubcategory?category=${categoryId}`);\n        }\n\n        public static Factory() {\n            let instance = ($http: ng.IHttpService, Constants: IConstants) => {\n                return new InventoryService($http, Constants);\n            };\n\n            instance.$inject = ['$http', 'Constants'];\n\n            return instance;\n        }\n    }\n}","/// <reference path=\"../_references.ts\"/>\n\nmodule App.Administrative.Reviews {\n\texport class ReviewRequestService {\n\t\tconstructor(\n\t\t\tprivate $http: ng.IHttpService,\n\t\t\tpublic Constants: IConstants\n\t\t) {\n\n\t\t}\n\n\t\tsendCallsourceReviewRequest(data: RequestReviewData): ng.IHttpPromise<RequestReviewResponse> {\n\t\t\treturn this.$http.post(`${this.Constants.apiUrl}requestreview`, data);\n\t\t}\n\n\t\tsendReviewRequest(data: RequestReviewData): ng.IHttpPromise<RequestReviewResponse> {\n\t\t\treturn this.$http.post(`${this.Constants.apiUrl}servicerequest/${data.service_request}/sendreview`, data);\n\t\t}\n\n\t\tpublic static Factory() {\n\t\t\tlet instance = ($http: ng.IHttpService, Constants: IConstants) => {\n\t\t\t\treturn new ReviewRequestService($http, Constants);\n\t\t\t};\n\n\t\t\tinstance.$inject = ['$http', 'Constants'];\n\n\t\t\treturn instance;\n\t\t}\n\t}\n\n}","/// <reference path=\"../_references.ts\"/>\n\nmodule App.Administrative.Tags {\n\timport ServiceRequest = App.Appointments.ServiceRequest;\n\timport Customer = App.Appointments.Customer;\n\n\texport class TagsService {\n\t\tconstructor(\n\t\t\tprivate $http: ng.IHttpService,\n\t\t\tprivate Constants: IConstants\n\t\t) {\n\n\t\t}\n\n\t\tfetchCustomerTags(): ng.IHttpPromise<Tag[]> {\n\t\t\treturn this.$http.get(`${this.Constants.apiUrl}customertag`);\n\t\t}\n\n\t\tfetchTagColors(): ng.IHttpPromise<TagColor[]> {\n\t\t\treturn this.$http.get(`${this.Constants.apiUrl}tagcolor`);\n\t\t}\n\n\t\tcreateCustomerTag(data: Tag): ng.IHttpPromise<Tag> {\n\t\t\treturn this.$http.post(`${this.Constants.apiUrl}customertag`, data);\n\t\t}\n\n\t\tupdateCustomerTag(data: Tag): ng.IHttpPromise<Tag> {\n\t\t\treturn this.$http.put(`${this.Constants.apiUrl}customertag/` + data.id, data);\n\t\t}\n\n\t\tfetchSRTags(): ng.IHttpPromise<Tag[]> {\n\t\t\treturn this.$http.get(`${this.Constants.apiUrl}servicerequesttag`);\n\t\t}\n\n\t\tcreateSRTag(data: Tag): ng.IHttpPromise<Tag> {\n\t\t\treturn this.$http.post(`${this.Constants.apiUrl}servicerequesttag`, data);\n\t\t}\n\n\t\tupdateSRTag(data: Tag): ng.IHttpPromise<Tag> {\n\t\t\treturn this.$http.put(`${this.Constants.apiUrl}servicerequesttag/` + data.id, data)\n\t\t}\n\n\t\tupdateCustomer(customer: Customer): ng.IHttpPromise<Customer> {\n\t\t\treturn this.$http.put(this.Constants.apiUrl + `customer/${customer.id}`, customer);\n\t\t}\n\n\t\tupdateSr(sr: ServiceRequest): ng.IHttpPromise<ServiceRequest> {\n\t\t\treturn this.$http.put(this.Constants.apiUrl + `servicerequest/${sr.id}`, sr);\n\t\t}\n\n\t\tpublic static Factory() {\n\t\t\tlet instance = ($http: ng.IHttpService, Constants: IConstants) => {\n\t\t\t\treturn new TagsService($http, Constants);\n\t\t\t};\n\n\t\t\tinstance.$inject = ['$http', 'Constants'];\n\n\t\t\treturn instance;\n\t\t}\n\t}\n}\n","/// <reference path=\"../_references.ts\"/>\n\nmodule App.Administrative.VendorInventory {\n    export class VendorInventoryService {\n        static $inject = ['$http', 'Constants'];\n        constructor(\n            private $http: ng.IHttpService,\n            public Constants: IConstants\n        ) {\n\n        }\n\n        public getAll(params: any = {}): ng.IHttpPromise<VendorInventory[]> {\n            return this.$http.get(`${this.Constants.apiUrl}vendorinventory`, {\n                params: params,\n            });\n        }\n\n        public getAllReplenishments(params: any = {}): ng.IHttpPromise<VendorInventoryReplenishment[]> {\n            return this.$http.get(`${this.Constants.apiUrl}vendorinventoryreplenishment`, {\n                params: params,\n            });\n        }\n\n        public getTagGroups(params: any = {}): ng.IHttpPromise<TagGroup[]> {\n            return this.$http.get(`${this.Constants.apiUrl}vendorinventorytaggroup`, {\n                params: params,\n            });\n        }\n\n        public createReplenishments(data: any, params: any = {}): ng.IHttpPromise<TagGroup[]> {\n            return this.$http.post(`${this.Constants.apiUrl}vendorinventoryreplenishment/bulk`, data, {\n                params: params,\n            });\n        }\n\n        public setFavourite(id: number, favourite: boolean, params: any = {}): ng.IHttpPromise<VendorInventory> {\n        \treturn this.$http.put(`${this.Constants.apiUrl}vendorinventory/${id}`, { favourite }, {\n        \t\tparams: params,\n        \t});\n        }\n    }\n}","(function() {\n\t'use strict';\n\n\ttry {\n\t\tangular\n\t\t\t.module('tradeServe.utils.telephony', [])\n\t\t\t.factory('TelephonyOutboundService', [\n\t\t\t\t'$http', 'Constants',\n\t\t\t\tfunction($http, Constants) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tgetAddressExtension: getAddressExtension,\n\t\t\t\t\t\tgetCustomerExtension: getCustomerExtension,\n\t\t\t\t\t\tgetOutboundNumber: getOutboundNumber,\n\t\t\t\t\t};\n\n\t\t\t\t\tfunction getOutboundNumber(params) {\n\t\t\t\t\t\treturn $http.get(Constants.apiUrl + 'organization/current/telephony/internal', {\n\t\t\t\t\t\t\tparams: params || {}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tfunction getCustomerExtension(customerId, id, params) {\n\t\t\t\t\t\treturn $http.put(\n\t\t\t\t\t\t\tConstants.apiUrl + 'customer/' + customerId + '/phonenumber/' + id + '/telephonyext',\n\t\t\t\t\t\t\t{}, {\n\t\t\t\t\t\t\t\tparams: params || {}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\tfunction getAddressExtension(id, params) {\n\t\t\t\t\t\treturn $http.put(\n\t\t\t\t\t\t\tConstants.apiUrl + 'address/' + id + '/telephonyext',\n\t\t\t\t\t\t\t{}, {\n\t\t\t\t\t\t\t\tparams: params || {}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]);\n\t} catch(err) {\n\t\tconsole.log(err);\n\t\treturn;\n\t}\n})();\n","/// <reference path=\"_references.ts\"/>\n\nmodule App.Chat {\n\tinterface localScope extends ng.IScope {\n\t\tchat: ChatController;\n\t\tresetOffset: () => void;\n\t\tscrollToBottom: () => void;\n\t\tgetOldMessages: () => void;\n\t\thasNew: boolean;\n\t}\n\texport class ChatMessagesWrapperDirective {\n\t\tpublic restrict: string = 'E';\n\t\tpublic templateUrl: string = 'html/chat/chat-messages-wrapper.tpl.340cd0f1.html';\n\t\tpublic require = ['^^chat'];\n\t\tpublic replace: boolean = true;\n\n\t\tconstructor(private $timeout: ng.ITimeoutService) {}\n\n\t\tpublic link(\n\t\t\t$scope: localScope,\n\t\t\t$element: ng.IAugmentedJQuery,\n\t\t\t$attrs: ng.IAttributes,\n\t\t\tcontrollers: any[]\n\t\t): void {\n\t\t\t$scope.chat = controllers[0];\n\t\t\t$scope.hasNew = false;\n\n\t\t\tlet offset = null,\n\t\t\t\toldHeight = null,\n\t\t\t\tupdateTop = false,\n\t\t\t\te = $element[0];\n\n\t\t\t$scope.scrollToBottom = () => this.$timeout(() => {\n\t\t\t\tconst newTop = e.scrollHeight - e.clientHeight;\n\n\t\t\t\tif (updateTop) {\n\t\t\t\t\te.scrollTop = e.scrollHeight - oldHeight;\n\t\t\t\t} else if (offset === null || e.scrollTop >= offset || $scope.chat.isLastOutbound()) {\n\t\t\t\t\te.scrollTop = newTop;\n\t\t\t\t\t$scope.hasNew = false;\n\t\t\t\t} else {\n\t\t\t\t\t$scope.hasNew = true;\n\t\t\t\t}\n\n\t\t\t\toffset = newTop;\n\t\t\t\toldHeight = e.scrollHeight;\n\n\t\t\t\tupdateTop = false;\n\t\t\t}, 0);\n\n\t\t\t$scope.$watch(\n\t\t\t\t() => e.scrollTop,\n\t\t\t\tscrollTop => scrollTop >= offset && ($scope.hasNew = false)\n\t\t\t);\n\n\t\t\t$scope.$watch(\n\t\t\t\t() => $scope.chat.usersOpen,\n\t\t\t\topen => open && (offset = null)\n\t\t\t);\n\n\t\t\t$scope.getOldMessages = () => {\n\t\t\t\tupdateTop = true;\n\t\t\t\t$scope.chat.getOldMessages();\n\t\t\t};\n\t\t}\n\t}\n}\n","/// <reference path=\"_references.ts\"/>\n\nmodule App.Chat {\n\texport class ChatDirective {\n\t\tpublic templateUrl: string = 'html/chat/chat.469f9ead.html';\n\t\tpublic controllerAs: string = 'chat';\n\t\tpublic controller: string = 'ChatController';\n\t\tpublic replace: boolean = true;\n\t}\n}\n","/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule App.DispatchSummary {\r\n\tangular.module('dispatchSummary.table', [])\r\n\t\t.directive('dispatchSummaryTable', [function() {\r\n\t\t\treturn {\r\n\t\t\t\trestrict: 'E',\r\n\t\t\t\tscope: {\r\n\t\t\t\t\tserviceRequests: '=',\r\n\t\t\t\t\ttableTitle: '='\r\n\t\t\t\t},\r\n\t\t\t\ttemplateUrl: 'html/dispatch-summary/dispatch-summary-table.tpl.433b446f.html',\r\n\t\t\t\tcontrollerAs: 'summaryTable',\r\n\t\t\t\tcontroller: ['$scope', 'ModalService', function($scope: any, ModalService: any) {\r\n\t\t\t\t\tconst vm = this;\r\n\r\n\t\t\t\t\tvm.dctrl = $scope.$parent.dctrl;\r\n\r\n\t\t\t\t\tvm.showModal = (sr: ServiceRequest) => {\r\n\t\t\t\t\t\tvar modalOptions = {\r\n\t\t\t\t\t\t\ttemplateUrl: 'html/dispatch-summary/dispatch-summary-panel.tpl.fa34ace6.html',\r\n\t\t\t\t\t\t\tcontroller: ['close', function(close: () => {}) {\r\n\t\t\t\t\t\t\t\tthis.sr = sr;\r\n\t\t\t\t\t\t\t\tthis.close = () => {\r\n\t\t\t\t\t\t\t\t\tclose();\r\n\t\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\t}],\r\n\t\t\t\t\t\t\tcontrollerAs: 'panel',\r\n\t\t\t\t\t\t\tbackdrop: 'static',\r\n\t\t\t\t\t\t\tkeyboard: true\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t\tModalService.showModal(modalOptions);\r\n\t\t\t\t\t};\r\n\t\t\t\t}]\r\n\t\t\t}\r\n\t\t}]);\r\n}","/// <reference path=\"../_references.ts\"/>\n\nmodule App.Appointments {\n\timport BottomDrawerService = App.Helpers.BottomDrawerService;\n\timport BottomDrawerItem = App.Helpers.BottomDrawerItem;\n\n\tinterface Scope extends ng.IScope {\n\t\tbottomDrawerService: BottomDrawerService;\n\t\tcallNextFunction: (option: BottomDrawerItem) => void;\n\t}\n\n\texport class BottomDrawerDirective {\n\t\tpublic link: (scope: ng.IScope) => void;\n\t\tpublic template: string = '\\\n\t\t\t\t<div class=\"bdDarkScreen\" ng-if=\"bottomDrawerService.isOpen\" ng-click=\"bottomDrawerService.closeable && bottomDrawerService.close()\"></div> \\\n\t\t\t\t<div class=\"bdContainer\" ng-if=\"bottomDrawerService.isOpen\" ng-cloak> \\\n\t\t\t\t\t<div class=\"bdContainer-scroll\"> \\\n\t\t\t\t\t\t<div class=\"tile-grid\">\\\n\t\t\t\t\t\t\t<button class=\"bdItem tile-cell\" ng-repeat=\"option in bottomDrawerService.options\" ng-click=\"callNextFunction(option)\"> \\\n\t\t\t\t\t\t\t\t<i ng-class=\"option.icon\"></i>\\\n\t\t\t\t\t\t\t\t<span class=\"bdItem-text\" ng-class=\"{\\'is-padded\\': option.icon}\">{{ ::option.text }}</span>\\\n\t\t\t\t\t\t\t</button>\\\n\t\t\t\t\t\t</div>\\\n\t\t\t\t\t</div> \\\n\t\t\t\t\t<button class=\"bdItem bdItem--cancel\" ng-click=\"bottomDrawerService.close()\" ng-if=\"!bottomDrawerService.hideCancel\"> \\\n\t\t\t\t\t\t<i class=\"fas fa-times fa-fw\"></i> \\\n\t\t\t\t\t\t<span class=\"bdItem-text\">Cancel</span> \\\n\t\t\t\t\t</button> \\\n\t\t\t\t</div>';\n\t\tpublic scope: boolean = true;\n\t\tpublic restrict: string = 'E';\n\n\t\tconstructor($timeout: ng.ITimeoutService, bottomDrawerService: BottomDrawerService) {\n\t\t\tBottomDrawerDirective.prototype.link = (scope: Scope) => {\n\t\t\t\tscope.bottomDrawerService = bottomDrawerService;\n\t\t\t\tscope.callNextFunction = callNextFunction;\n\n\t\t\t\tfunction callNextFunction(option: BottomDrawerItem) {\n\t\t\t\t\tconst timeAnimation = 0.25 * 1000;\n\n\t\t\t\t\tbottomDrawerService.close();\n\n\t\t\t\t\tif (option.fn) {\n\t\t\t\t\t\tif (option.recursive) {\n\t\t\t\t\t\t\t$timeout(() => {\n\t\t\t\t\t\t\t\toption.fn();\n\t\t\t\t\t\t\t}, timeAnimation + (0.1 * 1000));\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\toption.fn();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\n\t\tpublic static Factory() {\n\t\t\tlet instance = ($timeout: ng.ITimeoutService, BottomDrawerService: BottomDrawerService) => {\n\t\t\t\treturn new BottomDrawerDirective($timeout, BottomDrawerService);\n\t\t\t};\n\n\t\t\tinstance.$inject = ['$timeout', 'BottomDrawerService'];\n\n\t\t\treturn instance;\n\t\t}\n\t}\n\n\tangular.module('helpers.bottomDrawer', [])\n\t\t.factory('BottomDrawerService', BottomDrawerService.Factory())\n\t\t.directive('bottomDrawer', BottomDrawerDirective.Factory());\n\n}","/// <reference path=\"../_references.ts\"/>\n\nmodule App.Helpers {\n\n\tinterface Scope extends ng.IScope {\n\t\tngModel: string;\n\t}\n\n\texport class CapitalizeDirective implements ng.IDirective {\n\t\tpublic link: (scope:ng.IScope, elm: ng.IAugmentedJQuery, attrs: ng.IAttributes, ctrl:ng.INgModelController) => void;\n\t\tpublic scope = {\n\t\t\tngModel: '='\n\t\t};\n\t\tpublic restrict: string = 'A';\n\t\tpublic require = \"ngModel\";\n\n\t\tconstructor() {\n\n\t\t\tCapitalizeDirective.prototype.link = (scope: Scope, element: ng.IAugmentedJQuery, attrs: ng.IAttributes, ngModel: ng.INgModelController) => {\n\t\t\t\tscope.$watch(() => {\n\t\t\t\t\t\treturn ngModel.$modelValue;\n\t\t\t\t\t},(current, former) => {\n\t\t\t\t\t\tif (current && former !== current && current !== '') {\n\t\t\t\t\t\t\tscope.ngModel = scope.ngModel.replace(/^(.)|\\s(.)/g, (word: string) => { return word.toUpperCase() });\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t};\n\t\t}\n\n\t\tpublic static Factory() {\n\t\t\tlet instance = () => {\n\t\t\t\treturn new CapitalizeDirective();\n\t\t\t};\n\n\n\t\t\treturn instance;\n\t\t}\n\t}\n\n\tangular.module('helpers.capitalize', [])\n\t\t.directive('capitalize', CapitalizeDirective.Factory());\n\n}","/// <reference path=\"../_references.ts\"/>\n\nmodule App.Helpers {\n\timport AddressComponent = App.Customer.AddressComponent;\n\timport AddressComponents = App.Customer.AddressComponents;\n\timport Autocomplete = google.maps.places.Autocomplete;\n\timport PlaceResult = google.maps.places.PlaceResult;\n\n\tinterface Scope extends ng.IScope {\n\t\tgPlace: Autocomplete;\n\t\tfields: {\n\t\t\tstreet: string;\n\t\t\tcity: string;\n\t\t\tstate: string;\n\t\t\tzip: string;\n\t\t\tlatitude: number;\n\t\t\tlongitude: number;\n\t\t}\n\t}\n\n\texport class GooglePlaceDirective {\n\t\tpublic link: (scope: ng.IScope, element: ng.IAugmentedJQuery) => void;\n\t\tpublic scope = {\n\t\t\t\tngModel: '=',\n\t\t\t\tdetails: '=?',\n\t\t\t\tfields: '='\n\t\t\t};\n\t\tpublic require: string = 'ngModel';\n\n\t\tconstructor() {\n\n\t\t\tGooglePlaceDirective.prototype.link = (scope: Scope, element: ng.IAugmentedJQuery) => {\n\t\t\t\tlet options = {\n\t\t\t\t\ttypes: ['geocode']\n\t\t\t\t}, \n\t\t\t\tele = <HTMLInputElement>(<any>(element))[0];\n\n\t\t\t\tscope.gPlace = new google.maps.places.Autocomplete(ele, options);\n\n\t\t\t\tgoogle.maps.event.addListener(scope.gPlace, 'place_changed', function() {\n\t\t\t\t\tlet addressComponents: AddressComponents,\n\t\t\t\t\t\tgeoComponents = scope.gPlace.getPlace();\n\n\t\t\t\t\t\taddressComponents = new AddressComponents();\n\n\t\t\t\t\t\taddressComponents.streetNum = getAddressComponent(geoComponents, 'street_number', 'long');\n\t\t\t\t\t\taddressComponents.streetName = getAddressComponent(geoComponents, 'route', 'long');\n\t\t\t\t\t\taddressComponents.city = getAddressComponent(geoComponents, 'locality', 'long');\n\t\t\t\t\t\taddressComponents.postalCode = getAddressComponent(geoComponents, 'postal_code', 'long');\n\t\t\t\t\t\taddressComponents.state = getAddressComponent(geoComponents, 'administrative_area_level_1', 'short');\n\t\t\t\t\t\taddressComponents.latitude = geoComponents.geometry.location.lat();\n\t\t\t\t\t\taddressComponents.longitude = geoComponents.geometry.location.lng();\n\n\t\t\t\t\tfunction getAddressComponent(address: PlaceResult, component: string, type: string): string {\n\t\t\t\t\t\tvar elements = null;\n\n\t\t\t\t\t\tangular.forEach(address.address_components, function(addressComponent: AddressComponent) {\n\t\t\t\t\t\t\tif(addressComponent.types[0] === component) {\n\t\t\t\t\t\t\t\telements = type === 'short' ? addressComponent.short_name : addressComponent.long_name;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\treturn elements;\n\t\t\t\t\t}\n\n\t\t\t\t\tscope.fields.street = '';\n\t\t\t\t\tscope.fields.city = addressComponents.city;\n\t\t\t\t\tscope.fields.state = addressComponents.state;\n\t\t\t\t\tscope.fields.zip = addressComponents.postalCode;\n\t\t\t\t\tscope.fields.latitude = addressComponents.latitude;\n\t\t\t\t\tscope.fields.longitude = addressComponents.longitude;\n\t\t\t\t\tscope.$apply();\n\n\t\t\t\t\tscope.fields.street = (addressComponents.streetNum ? addressComponents.streetNum + ' ' : '') + addressComponents.streetName;\n\t\t\t\t\tscope.$apply();\n\t\t\t\t});\n\n\t\t\t}\n\n\t\t}\n\n\t\tpublic static Factory() {\n            let instance = () => {\n                return new GooglePlaceDirective();\n            };\n\n            return instance;\n        }\n\n\n\t}\n\n\tangular.module('helpers.googlePlace', [])\n        .directive('googleplace', GooglePlaceDirective.Factory());\n\n}","/// <reference path=\"../_references.ts\"/>\n\nmodule App.Helpers {\n\texport class PermissionService {\n\t\tpublic static $inject = ['$location', 'LoginService'];\n\t\tpublic static Factory() {\n\t\t\tlet instance = function($location: ng.ILocationService, LoginService: App.Login.LoginService) {\n\t\t\t\treturn new PermissionService($location, LoginService);\n\t\t\t};\n\t\t\tinstance.$inject = PermissionService.$inject;\n\t\t\treturn instance;\n\t\t}\n\n\t\tconstructor(\n\t\t\tprotected $location: ng.ILocationService,\n\t\t\tprotected LoginService: App.Login.LoginService\n\t\t) {}\n\n\t\tpublic isUserReady() {\n\t\t\treturn Boolean(this.LoginService.giveUserData());\n\t\t}\n\n\t\tpublic hasPermission(permission: string) {\n\t\t\tif (this.$location.search().office) {\n\t\t\t\t// TODO: only overwrite the permission if it is in the approved list of permissions\n\t\t\t\tpermission = 'web.office.service-requests.service-request.tech-view';\n\t\t\t}\n\n\t\t\tlet user = this.LoginService.giveUserData();\n\n\t\t\treturn user && (\n\t\t\t\t(user.role && user.role.id === 2) ||\n\t\t\t\tuser.permissions.indexOf(permission) !== -1\n\t\t\t);\n\t\t}\n\n\t\tpublic hasAnyPermission(permissions: string[]) {\n\t\t\tfor(let permission of permissions) {\n\t\t\t\tif (this.hasPermission(permission)) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn false;\n\t\t}\n\n\t\tpublic hasAllPermission(permissions: string[]) {\n\t\t\tfor(let permission of permissions) {\n\t\t\t\tif (!this.hasPermission(permission)) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn true;\n\t\t}\n\t}\n\n\tabstract class BasePermissionDirective implements ng.IDirective {\n\t\tstatic $inject = ['PermissionService', '$timeout'];\n\n\t\tpublic restrict: string = 'A';\n\t\tconstructor(\n\t\t\tprotected PermissionService: PermissionService,\n\t\t\tprotected $timeout: ng.ITimeoutService,\n\t\t\tprivate attribute: string\n\t\t) { }\n\n\t\tpublic hasPermission(permission: string) {\n\t\t\treturn this.PermissionService.hasPermission(permission);\n\t\t}\n\n\t\tpublic link($scope: ng.IScope, $element: ng.IAugmentedJQuery, $attributes: ng.IAttributes) {\n\t\t\tif (!this.PermissionService.isUserReady()) {\n\t\t\t\tthis.disable($element);\n\t\t\t\tthis.$timeout(this.link.bind(this, $scope, $element, $attributes), 200);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.callEvaluate($scope.$eval($attributes[this.attribute]), $element);\n\n\t\t\t$scope.$watch(\n\t\t\t\t$attributes[this.attribute],\n\t\t\t\t(newValue, oldValue) => {\n\t\t\t\t\tif (newValue === oldValue) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tthis.callEvaluate(newValue, $element);\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\n\t\tprivate callEvaluate(value: {}|undefined|null, $element: ng.IAugmentedJQuery) {\n\t\t\tif (value === undefined) {\n\t\t\t\treturn;\n\t\t\t} else if (!(value instanceof Array)) {\n\t\t\t\tvalue = [value];\n\t\t\t}\n\n\t\t\tthis.evaluate(<string[]>value, $element);\n\t\t}\n\n\t\tprotected abstract evaluate(value: string[], $element: ng.IAugmentedJQuery): void;\n\t\tprotected abstract disable($element: ng.IAugmentedJQuery): void;\n\t}\n\n\texport class PermissionDirective extends BasePermissionDirective {\n\t\tpublic priority: number = 100;\n\t\tconstructor(PermissionService: PermissionService, $timeout: ng.ITimeoutService) { super(PermissionService, $timeout, 'permission'); }\n\n\t\tprotected disable($element: ng.IAugmentedJQuery) {\n\t\t\t$element.css('display', 'none');\n\t\t}\n\n\t\tprotected evaluate(value: string[], $element: ng.IAugmentedJQuery) {\n\t\t\tfor (let i = value.length - 1; i >= 0; --i) {\n\t\t\t\tif (this.hasPermission(value[i])) {\n\t\t\t\t\t$element.css('display', '');\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t$element.css('display', 'none');\n\t\t\t$element.html('');\n\t\t\t$element.replaceWith('');\n\t\t}\n\n\t\tpublic static Factory() {\n\t\t\tlet instance = function(PermissionService: PermissionService, $timeout: ng.ITimeoutService) {\n\t\t\t\treturn new PermissionDirective(PermissionService, $timeout);\n\t\t\t}\n\t\t\tinstance.$inject = PermissionDirective.$inject;\n\t\t\treturn instance;\n\t\t}\n\t}\n\n\texport class WritePermissionDirective extends BasePermissionDirective {\n\t\tpublic priority: number = 99;\n\t\tconstructor(PermissionService: PermissionService, $timeout: ng.ITimeoutService) { super(PermissionService, $timeout, 'write-permission'); }\n\n\t\tprotected disable($element: ng.IAugmentedJQuery) {\n\t\t\t$element.css('disabled', 'true');\n\t\t}\n\n\t\tprotected evaluate(value: string[], $element: ng.IAugmentedJQuery) {\n\t\t\tfor (let i = value.length - 1; i >= 0; --i) {\n\t\t\t\tif (this.hasPermission('api.' + value[i] + '.write')) {\n\t\t\t\t\t$element.attr('disabled', 'false');\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t$element.attr('disabled', 'true');\n\t\t}\n\n\t\tpublic static Factory() {\n\t\t\tlet instance = function(PermissionService: PermissionService, $timeout: ng.ITimeoutService) {\n\t\t\t\treturn new WritePermissionDirective(PermissionService, $timeout);\n\t\t\t}\n\t\t\tinstance.$inject = WritePermissionDirective.$inject;\n\t\t\treturn instance;\n\t\t}\n\t}\n\n\tangular\n\t\t.module('helpers.permission', ['login'])\n\t\t.service('PermissionService', PermissionService.Factory())\n\t\t.directive('permission', ['PermissionService', '$timeout', PermissionDirective.Factory()])\n\t\t.directive('writePermission', ['PermissionService', '$timeout', WritePermissionDirective.Factory()]);\n}","/// <reference path=\"../_references.ts\"/>\n\nmodule App.Helpers {\n\n\texport class PhoneHelperDirective {\n\t\t\n\t\tpublic link: ($scope: ng.IScope, $element: JQuery, $attrs: ng.IAttributes, ngModelCtrl: any) => void;\n\t\tpublic restrict: string = 'A';\n\t\tpublic require: string = '^ngModel';\n\t\t\n\t\tconstructor($document: ng.IDocumentService, $filter: PhoneFilterService, $browser: any, PhoneConstants: PhoneConstants) {\n\n\t\t\tPhoneHelperDirective.prototype.link = ($scope: ng.IScope , $element: JQuery, $attrs: ng.IAttributes, ngModelCtrl: ng.INgModelController) => {\n\t\t\t\tlet listener = () => {\n\t\t\t\t\tvar value: string = $element.val().replace(/[^0-9]/g, '');\n\n\t\t\t\t\t$element.val($filter('tel')(value));\n\t\t\t\t};\n\n\t\t\t\t// This runs when we update the text field\n\t\t\t\tngModelCtrl.$parsers.push(function(viewValue) {\n\t\t\t\t\treturn viewValue.replace(/[^0-9]/g, '').slice(0, PhoneConstants.DIGITS);\n\t\t\t\t});\n\n\t\t\t\t// This runs when the model gets updated on the scope directly and keeps our view in sync\n\t\t\t\tngModelCtrl.$render = function() {\n\t\t\t\t\t$element.val($filter('tel')(ngModelCtrl.$viewValue));\n\t\t\t\t};\n\n\t\t\t\t$element.bind('change', listener);\n\t\t\t\t$element.bind('keydown', function(event) {\n\t\t\t\t\tvar key = event.keyCode;\n\n\t\t\t\t\t// If the keys include the CTRL, SHIFT, ALT, or META keys, or the arrow keys, do nothing.\n\t\t\t\t\t// This lets us support copy and paste too\n\t\t\t\t\tif(key === PhoneConstants.KEY_91 ||\n\t\t\t\t\t\tPhoneConstants.KEY_15 < key && key < PhoneConstants.KEY_19 ||\n\t\t\t\t\t\tPhoneConstants.KEY_37 <= key && key <= PhoneConstants.KEY_40) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\t$browser.defer(listener); // Have to do this or changes don't get picked up properly\n\t\t\t\t});\n\n\t\t\t\t$element.bind('paste cut', function() {\n\t\t\t\t\t$browser.defer(listener);\n\t\t\t\t});\n\t\t\t}\n\t\t\n\t\t}\n\n\t\tpublic static Factory() {\n\t\t\tlet instance = ($document: ng.IDocumentService, $filter: ng.IFilterService, $browser: any, PhoneConstants: PhoneConstants) => {\n\t\t\t\treturn new PhoneHelperDirective($document, $filter, $browser, PhoneConstants);\n\t\t\t};\n\n\t\t\tinstance.$inject = ['$document', '$filter', '$browser', 'PhoneConstants'];\n\n\t\t\treturn instance;\n\t\t}\n\t}\n\n\t\n\n\texport interface IPhoneConstants {\n\t\tDIGITS: number;\n\t\tKEY_91: number;\n\t\tKEY_15: number;\n\t\tKEY_19: number;\n\t\tKEY_37: number;\n\t\tKEY_40: number;\n\t\tVALUE_1: number;\n\t\tVALUE_2: number;\n\t\tVALUE_3: number;\n\t\tVALUE_7: number;\n\t}\n\n\texport class PhoneConstants implements IPhoneConstants {\n\t\tstatic get getPhoneConstants() {\n\t\t\treturn new PhoneConstants();\n\t\t}\n\n\t\tDIGITS: number;\n\t\tKEY_91: number;\n\t\tKEY_15: number;\n\t\tKEY_19: number;\n\t\tKEY_37: number;\n\t\tKEY_40: number;\n\t\tVALUE_1: number;\n\t\tVALUE_2: number;\n\t\tVALUE_3: number;\n\t\tVALUE_7: number;\n\n\t\tconstructor() {\n\t\t\tthis.DIGITS = 10;\n\t\t\tthis.KEY_91 = 91;\n\t\t\tthis.KEY_15 = 15;\n\t\t\tthis.KEY_19 = 19;\n\t\t\tthis.KEY_37 = 37;\n\t\t\tthis.KEY_40 = 40;\n\t\t\tthis.VALUE_1 = 1;\n\t\t\tthis.VALUE_2 = 2;\n\t\t\tthis.VALUE_3 = 3;\n\t\t\tthis.VALUE_7 = 7;\n\t\t}\n\n\t}\n\n\tinterface PhoneFilterService extends ng.IFilterService {\n\t\t(name: 'tel'): (tel: string) => string;\n\t}\n\n\tfunction PhoneFilter(PhoneConstants: PhoneConstants) {\n\t\treturn function(tel: string) {\n\t\t\tif(!tel) {\n\t\t\t\treturn '';\n\t\t\t}\n\n\t\t\tlet city: string, number: string,\n\t\t\t\tvalue: string = tel.toString().trim().replace(/^\\+/, '');\n\n\t\t\tif(value.match(/[^0-9]/)) {\n\t\t\t\treturn tel;\n\t\t\t}\n\n\t\t\tswitch(value.length) {\n\t\t\t\tcase PhoneConstants.VALUE_1:\n\t\t\t\tcase PhoneConstants.VALUE_2:\n\t\t\t\tcase PhoneConstants.VALUE_3:\n\t\t\t\t\tcity = value;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tcity = value.slice(0, PhoneConstants.VALUE_3);\n\t\t\t\t\tnumber = value.slice(PhoneConstants.VALUE_3);\n\t\t\t}\n\n\t\t\tif(number) {\n\t\t\t\tif(number.length > PhoneConstants.VALUE_3) {\n\t\t\t\t\tnumber = number.slice(0, PhoneConstants.VALUE_3) + '-' + number.slice(PhoneConstants.VALUE_3, PhoneConstants.VALUE_7);\n\t\t\t\t}\n\n\t\t\t\treturn ('(' + city + ') ' + number).trim();\n\t\t\t}\n\n\t\t\treturn '(' + city;\n\t\t}\n\t}\n\n\tPhoneFilter.$inject = ['PhoneConstants'];\n\n\tangular\n\t\t.module('helpers.phone', [])\n\t\t.constant('PhoneConstants', PhoneConstants.getPhoneConstants)\n\t\t.directive('phoneHelper', ['$document', '$filter', '$browser', 'PhoneConstants', PhoneHelperDirective.Factory()])\n\t\t.filter('tel', PhoneFilter);\n}\n","/// <reference path=\"../_references.ts\"/>\n\nmodule App.Helpers {\n\tinterface Scope extends ng.IScope {\n\t\tngModel?: string\n\t}\n\n\texport class SignatureArea implements ng.IDirective {\n\t\tpublic static Factory() {\n            return [\n            \t'$window',\n            \t($window: ng.IWindowService) => new SignatureArea($window)\n            ];\n\t\t}\n\n\t\tpublic template = '<canvas></canvas>';\n\t\tpublic replace = true;\n\t\tpublic restrict = 'E';\n\t\tpublic scope = {\n\t\t\tngModel: '='\n\t\t};\n\n\t\tconstructor(\n\t\t\tprotected $window: ng.IWindowService\n\t\t) { }\n\n\t\tprotected resizeCanvas(canvas: HTMLCanvasElement, signaturePad: SignaturePad): void {\n\t\t\tconst sig = signaturePad.toDataURL(),\n\t\t\t\t  ratio =  Math.max(this.$window.devicePixelRatio || 1, 1);\n\n\t\t\tcanvas.width = canvas.offsetWidth * ratio;\n\t\t\tcanvas.height = canvas.offsetHeight * ratio;\n\t\t\tcanvas.getContext('2d').scale(ratio, ratio);\n\n\t\t\tsignaturePad.fromDataURL(sig);\n\t\t}\n\n\t\tpublic link($scope: Scope, elem: ng.IAugmentedJQuery): void {\n\t\t\tlet canvas = <HTMLCanvasElement>elem[0],\n\t\t\t\tsignaturePad = new SignaturePad(canvas),\n\t\t\t\tresizeFn = this.resizeCanvas.bind(this, canvas, signaturePad);\n\n\t\t\t$scope.$watch(\n\t\t\t\t() => $scope.ngModel,\n\t\t\t\t(value?: string) => {\n\t\t\t\t\tif (!value || value === '') {\n\t\t\t\t\t\tsignaturePad.clear();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsignaturePad.fromDataURL(value);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t);\n\n\t\t\telem.addClass('signature-form');\n\n\t\t\tsignaturePad.onEnd = () => {\n\t\t\t\t$scope.ngModel = signaturePad.toDataURL();\n\t\t\t\t$scope.$apply()\n\t\t\t};\n\n\t\t\tangular.element(this.$window).bind('resize', () => {\n\t\t\t\tresizeFn();\n\t\t\t});\n\n\t\t\tresizeFn();\n\n\t\t\ttry {\n\t\t\t\tsignaturePad.fromDataURL($scope.ngModel);\n\t\t\t} catch (ex) { /* Ignore */ }\n\t\t}\n\t}\n\tangular\n\t\t.module('helpers.signature', [])\n\t\t.directive('signatureArea', SignatureArea.Factory());\n}\n","/// <reference path=\"../_references.ts\"/>\n\nmodule App.Utils {\n\tinterface Scope extends ng.IScope {\n\t\tactive: boolean;\n\t\tcloseable: boolean;\n\t\ttitle: string;\n\t\tslideDirection: 'right' | 'left';\n\t\ttoggleActive: () => void;\n\t\tisSlideLeft: () => boolean;\n\t\tonOpen?: () => void;\n\t}\n\n\texport class SlideOutDirective {\n\t\tpublic link: (scope: Scope, elem: ng.IAugmentedJQuery) => void;\n\t\tpublic scope = {\n\t\t\tactive: '=',\n\t\t\ttitle: '@',\n\t\t\tslideDirection: '@',\n\t\t\tcloseable: '<',\n\t\t\tonOpen: '&'\n\t\t};\n\t\tpublic replace = true;\n\t\tpublic transclude = true;\n\t\tpublic templateUrl = 'html/utils/slide-out.directive.52280335.html';\n\n\t\tconstructor(private $timeout: ng.ITimeoutService) {\n\t\t\tSlideOutDirective.prototype.link = (scope, elem) => {\n\t\t\t\tscope.closeable = scope.closeable !== false;\n\n\t\t\t\tconst overlay = angular.element('<div class=\"slide-out-overlay' + (scope.closeable ? '' : ' over') + '\"></div>');\n\n\t\t\t\toverlay.on('click', () => {\n\t\t\t\t\tscope.toggleActive();\n\t\t\t\t\tscope.$apply();\n\t\t\t\t});\n\n\t\t\t\telem.after(overlay);\n\n\t\t\t\tscope.toggleActive = () => {\n\t\t\t\t\tif (scope.closeable) {\n\t\t\t\t\t\tscope.active = !scope.active;\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tscope.isSlideLeft = () => {\n\t\t\t\t\treturn scope.slideDirection === 'left';\n\t\t\t\t};\n\n\t\t\t\tscope.$watch(() => scope.active, (newValue: boolean) => {\n\t\t\t\t\tif(newValue) {\n\t\t\t\t\t\toverlay.addClass('active');\n\t\t\t\t\t\tif (scope.onOpen) {\n\t\t\t\t\t\t\tscope.onOpen();\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if(!newValue) {\n\t\t\t\t\t\toverlay.removeClass('active');\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\t$timeout(() => {\n\t\t\t\t\telem.css('visibility', 'visible');\n\t\t\t\t}, 1000);\n\t\t\t};\n\t\t}\n\n\t\tpublic static Factory() {\n            let instance = ($timeout: ng.ITimeoutService) => {\n                return new SlideOutDirective($timeout);\n            };\n\n            return instance;\n        }\n\t}\n}","/// <reference path=\"./_references.ts\"/>\r\n\r\nmodule App.Administrative {\r\n    declare const Chart: any;\r\n\r\n    import Appointment = App.Appointments.Appointment;\r\n    import BottomDrawerService = App.Helpers.BottomDrawerService;\r\n    import InventoryService = App.Administrative.Inventory.InventoryService;\r\n    import LoginService = App.Login.LoginService;\r\n    import PurchaseOrderService = App.Administrative.PurchaseOrder.PurchaseOrderService;\r\n    import SelectedAppointment = App.Appointments.SelectedAppointment;\r\n    import ToastService = App.Utils.ToastService;\r\n    import userLoginData = App.Login.userLoginData;\r\n\r\n    export class AdministrativeController {\r\n        note: string = \"\";\r\n        showMdl: boolean = false;\r\n        appointment: Appointment = null;\r\n\r\n        loading: boolean = true;\r\n        isSaving: boolean = false;\r\n        isNoteSaving: boolean = false;\r\n        gameOn: boolean = false;\r\n        gameConfig: GameConfig = null;\r\n        appointmentChecklist: AppointmentChecklist = null;\r\n        serviceRequestChecklist: ServiceRequestChecklist = null;\r\n        completeForm: ng.IFormController;\r\n        userData: userLoginData = this.LoginService.giveUserData();\r\n\r\n        private poStatus?: string = null;\r\n        private poLoading: boolean = false;\r\n        private replenishmentStatus?: string = null;\r\n        private replenishmentLoading: boolean = false;\r\n        private vendorInventoryReplenishmentStatus?: string = null;\r\n        private vendorInventoryReplenishmentLoading: boolean = false;\r\n\r\n        static $inject: string[] = [\r\n            '$state', '$timeout', '$q', 'PermissionService', 'SelectedAppointment', 'AdministrativeService', 'InventoryService',\r\n            'VendorInventoryService', 'PurchaseOrderService', 'TimeEventService', 'LoginService', 'ToastService', 'ModalService',\r\n            'BottomDrawerService'\r\n        ];\r\n\r\n        constructor(\r\n            protected $state: ng.ui.IStateService,\r\n            protected $timeout: ng.ITimeoutService,\r\n            public $q: ng.IQService,\r\n            protected PermissionService: App.Helpers.PermissionService,\r\n            protected SelectedAppointment: SelectedAppointment,\r\n            protected AdministrativeService: AdministrativeService,\r\n            protected InventoryService: InventoryService,\r\n            protected VendorInventoryService: App.Administrative.VendorInventory.VendorInventoryService,\r\n            protected PurchaseOrderService: PurchaseOrderService,\r\n            protected TimeEventService: App.TimeEvent.TimeEventService,\r\n            protected LoginService: LoginService,\r\n            protected ToastService: ToastService,\r\n            protected ModalService: any,\r\n            protected BottomDrawerService: BottomDrawerService\r\n        ) {\r\n            SelectedAppointment.getAppointment().then((appointment) => {\r\n                this.setAppointment(appointment);\r\n            });\r\n        }\r\n\r\n        completeAppointment() {\r\n            const vm = this,\r\n                apptId = vm.SelectedAppointment.id;\r\n\r\n            vm.isSaving = true;\r\n            const completeApp = () => {\r\n                vm.SelectedAppointment.updateAppointmentStatus('Completed Appointment', true)\r\n                    .then(() =>\r\n                        this.TimeEventService.confirmLastEvent().then(() => {\r\n                            if (vm.SelectedAppointment.getPhone(true, true) !== \"No phone found\") {\r\n                                vm.sendCustomerText('Completed');\r\n                            } else {\r\n                                vm.SelectedAppointment.clear();\r\n                                vm.$state.go('zipSolutions.home.appointment', {completedApptId: apptId});\r\n                            }\r\n                        })\r\n                    )\r\n                    .catch((response) => {\r\n                        vm.ToastService.showError('Unable to complete appointment: ', response);\r\n                        vm.isSaving = false;\r\n                    });\r\n            }, showGamification = () => {\r\n                const promises = {\r\n                    srScore: vm.AdministrativeService.getSRscore(vm.appointment.service_request.id, { show_targets: 1 }),\r\n                    techScore: vm.AdministrativeService.getTechScore()\r\n                };\r\n\r\n                vm.$q.all(promises).then((response) => {\r\n                    var modalOptions = {\r\n                        templateUrl: \"html/administrative/gamification.ac3c5df9.html\",\r\n                        controller: function(close: (link: boolean) => void) {\r\n                            this.save = function(save: boolean) {\r\n                                close(save);\r\n                            };\r\n                            this.srScore = response.srScore.data;\r\n                            this.techScore = response.techScore.data;\r\n                            this.gameConfig = vm.gameConfig;\r\n                            this.lastName = vm.userData.last_name;\r\n                            this.appointment = vm.appointment;\r\n\r\n                            let dates = Array(14).fill(0).map((_, i) => moment().subtract(i, 'days')).reverse(),\r\n                                dateKeys = dates.map((d) => d.format('YYYY-MM-DD')),\r\n                                data = dateKeys.map((d) => response.techScore.data.data[d] || null),\r\n                                series = ['Your Score'],\r\n                                dataOptions = [{\r\n                                    backgroundColor: '#21ce99',\r\n                                    borderColor: '#21ce99',\r\n                                }],\r\n                                dataVal = [data];\r\n\r\n                            if (Object.keys(response.techScore.data.team_data || {}).length) {\r\n                                let color = Chart.defaults.global.colors[0];\r\n\r\n                                dataVal.push(dateKeys.map((d) => response.techScore.data.team_data[d] || null));\r\n                                dataOptions.push({\r\n                                    backgroundColor: color,\r\n                                    borderColor: color,\r\n                                });\r\n                                series.push('Your Team');\r\n                            }\r\n\r\n                            if (Object.keys(response.techScore.data.all_data || {}).length) {\r\n                                let color = Chart.defaults.global.colors[1];\r\n\r\n                                dataVal.push(dateKeys.map((d) => response.techScore.data.all_data[d] || null));\r\n                                dataOptions.push({\r\n                                    backgroundColor: color,\r\n                                    borderColor: color,\r\n                                });\r\n                                series.push('All Techs');\r\n                            }\r\n\r\n                            this.chart = {\r\n                                labels: dates.map((d) => d.format('MMM DD')),\r\n                                data: dataVal,\r\n                                series: series,\r\n                                dataOptions: dataOptions,\r\n                                options: {\r\n                                    tooltips: {\r\n                                        callbacks: {\r\n                                            label: (tooltip: {datasetIndex: number, yLabel: number}, data: {datasets: {label: string}[]}) => {\r\n                                                return isNaN(tooltip.yLabel)\r\n                                                    ? ''\r\n                                                    : ' ' + data.datasets[tooltip.datasetIndex].label + ': ' + tooltip.yLabel;\r\n                                            }\r\n                                        }\r\n                                    },\r\n                                    scales: {\r\n                                        yAxes: [{\r\n                                            ticks: {\r\n                                                min: 0,\r\n                                                max: 100,\r\n                                            },\r\n                                        }],\r\n                                    },\r\n                                },\r\n                            };\r\n                        },\r\n                        controllerAs: 'ctrl',\r\n                        backdrop: 'static',\r\n                        keyboard: true\r\n                    };\r\n                    modalOptions.controller.$inject = ['close'];\r\n                    vm.ModalService.showModal(modalOptions).then((modal: any) => {\r\n                        modal.close.then((save: boolean) => {\r\n                            if(save) {\r\n                                completeApp();\r\n                            } else {\r\n                                vm.isSaving = false;\r\n                            }\r\n                        });\r\n                    });\r\n                });\r\n            };\r\n\r\n            if(vm.note !== \"\") {\r\n                vm.AdministrativeService.CreateServiceRequestNote(vm.appointment.service_request.id, vm.note).then(() => {\r\n                    vm.gameOn ? showGamification() : completeApp();\r\n                });\r\n            } else {\r\n                vm.gameOn ? showGamification() : completeApp();\r\n            }\r\n        }\r\n\r\n        saveNote() {\r\n            const vm = this;\r\n\r\n            vm.isNoteSaving = true;\r\n            vm.AdministrativeService.CreateServiceRequestNote(vm.appointment.service_request.id, vm.note)\r\n                .then((resp) => {\r\n                    vm.ToastService.show('Note Saved');\r\n                    vm.note = '';\r\n                    vm.completeForm.$setPristine();\r\n                    vm.completeForm.$setUntouched();\r\n                    vm.appointment.service_request.notes.unshift(resp.data);\r\n                }).catch((response) => {\r\n                    vm.ToastService.showError('Unable to save note: ', response);\r\n                }).finally(() => {\r\n                    vm.isNoteSaving = false;\r\n                });\r\n        }\r\n\r\n        sendCustomerText(nextStatus: string) {\r\n            const vm = this,\r\n                apptId = vm.SelectedAppointment.id;\r\n\r\n            vm.BottomDrawerService.open([\r\n                {\r\n                    text: \"Send text\",\r\n                    icon: 'fas fa-mobile-alt fa-fw',\r\n                    fn: () => {\r\n                        vm.SelectedAppointment.sendCustomerText(nextStatus);\r\n                        vm.SelectedAppointment.clear();\r\n                        vm.$state.go('zipSolutions.home.appointment', {completedApptId: apptId});\r\n                    }\r\n                },\r\n                {\r\n                    text: \"Do not send a text\",\r\n                    icon: 'fas fa-times fa-fw',\r\n                    fn: () => {\r\n                        vm.SelectedAppointment.clear();\r\n                        vm.$state.go('zipSolutions.home.appointment', {completedApptId: apptId});\r\n                    }\r\n                }\r\n            ], true, false);\r\n        }\r\n\r\n        isRequired(item: AppointmentCheckListItem) {\r\n            if(!item.required) return false;\r\n            let vm = this,\r\n                role = vm.userData.role;\r\n\r\n            return (role && role.id === 2) ||\r\n                vm.userData.permissions.indexOf(item.permission) !== -1;\r\n        }\r\n\r\n        getGamification() {\r\n            const vm = this;\r\n\r\n            vm.AdministrativeService.getGameConfig().then((resp) => {\r\n                vm.gameOn = resp.data.visible;\r\n                vm.gameConfig = resp.data;\r\n            });\r\n        }\r\n\r\n        getChecklists() {\r\n            const vm = this;\r\n\r\n            const promises = {\r\n                appointmentChecklist: vm.AdministrativeService.GetAppointmentChecklist(vm.appointment.id),\r\n                srChecklist: vm.AdministrativeService.GetServiceRequestChecklist(vm.appointment.service_request.id)\r\n            };\r\n\r\n            vm.$q.all(promises).then((response) => {\r\n                vm.appointmentChecklist = response.appointmentChecklist.data;\r\n                for(let idx in vm.appointmentItems) {\r\n                    const item = vm.appointmentItems[idx];\r\n                    item.isSelected = <boolean>vm.appointmentChecklist[item.name];\r\n                }\r\n                vm.serviceRequestChecklist = response.srChecklist.data;\r\n                for(let idx in vm.serviceRequestItems) {\r\n                    const item = vm.serviceRequestItems[idx];\r\n                    item.isSelected = <boolean>vm.serviceRequestChecklist[item.name];\r\n                }\r\n                vm.upgradeMdlInputs();\r\n                vm.loading = false;\r\n            });\r\n        }\r\n\r\n        updateAppointment(item: CheckListItem) {\r\n            const vm = this;\r\n\r\n            item.isSelected = !item.isSelected;\r\n            vm.appointmentChecklist[item.name] = item.isSelected;\r\n            vm.AdministrativeService.UpdateAppointmentChecklist(vm.appointment.id, vm.appointmentChecklist);\r\n        }\r\n\r\n        updateServiceRequest(item: CheckListItem) {\r\n            const vm = this;\r\n\r\n            vm.serviceRequestChecklist[item.name] = item.isSelected;\r\n            vm.AdministrativeService.UpdateServiceRequestChecklist(vm.appointment.service_request.id, vm.serviceRequestChecklist);\r\n        }\r\n\r\n        appointmentItems: AppointmentCheckListItem[] = [\r\n            {\r\n                displayName: 'Email Recommendations',\r\n                name: 'email_recommendations',\r\n                status: () => \"\",\r\n                sref: 'zipSolutions.history.recommendations.detail',\r\n                permission: 'web.field.administrative.email-recommendations',\r\n                required: false\r\n            },\r\n            {\r\n                displayName: 'Create Purchase Order',\r\n                name: 'create_purchase_order',\r\n                status: this.getPOStatus.bind(this),\r\n                sref: '.purchase-order',\r\n                permission: 'web.field.administrative.create-purchase-order',\r\n                required: true\r\n            },\r\n            {\r\n                displayName: 'Upload Files',\r\n                status: this.getCount.bind(this, 'image_count'),\r\n                name: 'upload_photos',\r\n                sref: '.upload-photos',\r\n                permission: 'web.field.administrative.upload-photos',\r\n                required: true\r\n            },\r\n            {\r\n                displayName: 'Send Review Request',\r\n                name: 'send_review_request',\r\n                sref: '.reviews.request',\r\n                status: this.getCount.bind(this, 'review_count'),\r\n                permission: 'web.field.administrative.send-review-request',\r\n                required: true\r\n            },\r\n            {\r\n                displayName: 'Tagging',\r\n                name: 'tagged',\r\n                sref: '.tags',\r\n                status: this.getCount.bind(this, 'tag_count'),\r\n                permission: 'web.field.administrative.tagging.view',\r\n                required: false\r\n            },\r\n            {\r\n                displayName: 'Call Source Review Request',\r\n                name: 'send_call_source_review_request',\r\n                sref: '.reviews.call-source',\r\n                status: this.getCount.bind(this, 'callsource_review_count'),\r\n                permission: 'web.field.administrative.call-source-review-request',\r\n                required: true\r\n            },\r\n            {\r\n                displayName: 'Replenish Truck Inventory',\r\n                name: 'replenish_truck_inventory',\r\n                status: this.getReplenishmentStatus.bind(this),\r\n                sref: '.inventory',\r\n                permission: 'web.field.administrative.replenish-truck-inventory',\r\n                required: true\r\n            },\r\n            {\r\n                displayName: 'Replenish Truck Vendor Inventory',\r\n                name: 'vendor_inventory_replenishment',\r\n                status: this.getVendorReplenishmentStatus.bind(this),\r\n                sref: '.vendor-inventory',\r\n                permission: 'web.field.administrative.vendor-inventory',\r\n                required: true,\r\n            },\r\n            {\r\n                displayName: 'Send Invoice and Accounting',\r\n                name: 'send_invoice_accounting',\r\n                status: this.getInvoiceStatus.bind(this),\r\n                sref: '.send-invoice',\r\n                permission: 'web.field.administrative.send-invoice-accounting.page',\r\n                required: true\r\n            }\r\n        ];\r\n\r\n        serviceRequestItems: CheckListItem[] = [\r\n            {\r\n                displayName: 'Contact Customer',\r\n                name: 'contact_customer'\r\n            },\r\n            {\r\n                displayName: 'Follow Up Recommendation',\r\n                name: 'follow_up_recommendation'\r\n            },\r\n            {\r\n                displayName: 'Order Supplies',\r\n                name: 'order_supplies'\r\n            },\r\n            {\r\n                displayName: 'Appointment & SR Complete',\r\n                name: 'appointment_service_request_complete',\r\n            }\r\n        ];\r\n\r\n        setAppointment(appointment: Appointment) {\r\n            const vm = this;\r\n\r\n            vm.appointment = appointment;\r\n            vm.getChecklists();\r\n            vm.getGamification();\r\n        }\r\n\r\n        getInvoiceStatus(): string {\r\n            return String(\r\n                Number(this.serviceRequestChecklist['email_on_complete']) +\r\n                Number(this.serviceRequestChecklist['upload_on_complete']) +\r\n                Number(this.appointmentChecklist['close_service_request_on_complete'])\r\n            );\r\n        }\r\n\r\n        getVendorReplenishmentStatus(): string {\r\n            if (this.vendorInventoryReplenishmentStatus !== null) {\r\n                return this.vendorInventoryReplenishmentStatus;\r\n            }\r\n\r\n            if (!this.vendorInventoryReplenishmentLoading) {\r\n                this.vendorInventoryReplenishmentLoading = true;\r\n                this.VendorInventoryService.getAllReplenishments({ appointment: this.appointment.id, quiet: 1 }).then((resp) => {\r\n                    this.vendorInventoryReplenishmentStatus = \"\" + resp.data.length;\r\n                    this.vendorInventoryReplenishmentLoading = false;\r\n                });\r\n            }\r\n\r\n            return \"\";\r\n        }\r\n\r\n        getReplenishmentStatus(): string {\r\n            if (this.replenishmentStatus !== null) {\r\n                return this.replenishmentStatus;\r\n            }\r\n\r\n            if (!this.replenishmentLoading) {\r\n                this.replenishmentLoading = true;\r\n                this.InventoryService.getInventoryReplenishment(this.appointment.id).then((resp) => {\r\n                    this.replenishmentStatus = \"\" + resp.data.length;\r\n                    this.replenishmentLoading = false;\r\n                });\r\n            }\r\n\r\n            return \"\";\r\n        }\r\n\r\n        getCount(propertyName: string): string {\r\n            if (angular.isUndefined(this.serviceRequestChecklist[propertyName])) {\r\n                return '';\r\n            }\r\n\r\n            return String(this.serviceRequestChecklist[propertyName]);\r\n        }\r\n\r\n        getPOStatus(): string {\r\n            if (this.poStatus !== null) {\r\n                return this.poStatus;\r\n            }\r\n\r\n            if (!this.poLoading) {\r\n                this.poLoading = true;\r\n                this.PurchaseOrderService\r\n                    .getAll(this.appointment.service_request.id)\r\n                    .then((resp) => {\r\n                        this.poStatus = \"\" + resp.data.length;\r\n                        this.poLoading = false;\r\n                    });\r\n            }\r\n\r\n            return \"\";\r\n        }\r\n\r\n        upgradeMdlInputs() {\r\n            this.showMdl = false;\r\n            this.$timeout(() => {\r\n                this.showMdl = true;\r\n                this.$timeout(() => {\r\n                    componentHandler.upgradeAllRegistered();\r\n                });\r\n            });\r\n        }\r\n\r\n        goTo(sref: string) {\r\n            if (sref === 'zipSolutions.history.recommendations.detail') {\r\n                this.$state.go(sref, {id: this.appointment.service_request.id});\r\n            } else if (sref) {\r\n                this.$state.go(sref);\r\n            }\r\n        }\r\n    }\r\n}","/// <reference path=\"../_references.ts\"/>\nmodule App.Appointments {\n\n    interface HasHistoryData {\n        addressId: number;\n        serviceRequests: boolean;\n        recommendations: boolean;\n        files: boolean;\n    }\n\n    export class AppointmentMenuController{\n        static $inject = ['$state', '$q', 'SelectedAppointment', 'PermissionService', 'HistoryService'];\n        historyValues: HasHistoryData = null;\n\n        constructor(\n            private $state: ng.ui.IStateService,\n            private $q: ng.IQService,\n            private SelectedAppointment: SelectedAppointment,\n            protected PermissionService: App.Helpers.PermissionService,\n            private HistoryService: App.History.HistoryService\n        ) {\n            SelectedAppointment.addListener(this.setAppointment.bind(this));\n\n            SelectedAppointment.getAppointment().then((appointment) => {\n                this.setAppointment(appointment);\n                this.historyValues = null;\n            });\n\n            this.setMenuOptions();\n        }\n\n        appointment: Appointment = null;\n\n        menuOptions: MenuItem[] = [];\n        baseMenuOptions: MenuItem[] = [\n            {\n                title: 'Home',\n                uiSref: 'zipSolutions.home.appointment',\n                permission: ['web.field.left-nav.overview', 'web.office.service-requests.service-request.tech-view'],\n                displayKeys: true,\n                action: (SelectedAppointment: SelectedAppointment): any => {\n                    if (SelectedAppointment.isSet() === false){\n                        this.appointment = null;\n                        return Promise.resolve();\n                    }\n                    return SelectedAppointment.pauseAppointment().then(() => {\n                        SelectedAppointment.clear();\n                        return Promise.resolve();\n                    });\n                }\n            },\n            {\n                title: 'History',\n                titleTemplate: 'html/appointment/appointment-menu-history.tpl.1f6d5734.html',\n                uiSref: 'zipSolutions.history',\n                permission: 'web.field.left-nav.history',\n                displayKeys: ['Paused', 'Started', 'Arrived', 'Dispatched', 'Acknowledged']\n            },\n            {\n                title: 'Recurring Maintenance',\n                uiSref: 'zipSolutions.maintenance',\n                permission: 'web.field.left-nav.item-management',\n                displayKeys: ['Paused', 'Started', 'Arrived', 'Dispatched', 'Acknowledged']\n            },\n            {\n                title: 'Purchase Order',\n                uiSref: 'zipSolutions.administrative.purchase-order',\n                permission: 'web.field.left-nav.purchase-order',\n                displayKeys: ['Unselected', 'Started', 'Paused', 'Dispatched', 'Acknowledged'],\n            },\n            {\n                title: 'Inventory',\n                uiSref: 'zipSolutions.administrative.inventory',\n                permission: 'web.field.left-nav.inventory',\n                displayKeys: ['Started', 'Paused', 'Dispatched', 'Acknowledged'],\n            },\n            {\n                title: 'Questionnaire',\n                uiSref: 'zipSolutions.questionnaire.service',\n                permission: 'web.field.left-nav.questionnaire',\n                displayKeys: ['Paused', 'Started', 'Arrived', 'Dispatched', 'Acknowledged'],\n                questionnaireIcon: true\n            },\n            {\n                title: 'Price Guide',\n                uiSref: 'zipSolutions.price-guide',\n                displayKeys: ['Arrived'],\n                permission: ['web.field.price-guide.view', 'web.office.service-requests.service-request.tech-view']\n            },\n            {\n                title: 'Work Order',\n                uiSref: 'zipSolutions.workOrder',\n                displayKeys: ['Arrived'],\n                permission: ['web.field.left-nav.work-order', 'web.office.service-requests.service-request.tech-view']\n            },\n            {\n                title: 'Payment',\n                uiSref: 'zipSolutions.payment',\n                displayKeys: ['Arrived'],\n                permission: ['web.field.left-nav.payment', 'web.office.service-requests.service-request.tech-view']\n            },\n            {\n                title: 'Administrative',\n                uiSref: 'zipSolutions.administrative',\n                displayKeys: ['Arrived'],\n                permission: 'web.field.left-nav.administrative'\n            },\n            {\n                title: 'SR Forms',\n                uiSref: 'zipSolutions.forms',\n                displayKeys: ['Arrived'],\n                permission: ['web.field.left-nav.service-request-forms', 'web.office.service-requests.service-request.tech-view']\n            },\n            {\n                title: 'Inventory Replenish (new)',\n                uiSref: 'zipSolutions.administrative.vendor-inventory',\n                displayKeys: ['Arrived'],\n                permission: 'web.field.administrative.vendor-inventory',\n            },\n        ] as MenuItem[];\n\n        setAppointment(appointment: Appointment): void {\n            this.appointment = appointment;\n            this.setMenuOptions();\n        }\n\n        setMenuOptions(): void {\n            this.menuOptions = this.baseMenuOptions.filter(option => {\n                return !option.permission || (\n                    angular.isArray(option.permission)\n                        ? this.PermissionService.hasAnyPermission(option.permission)\n                        : this.PermissionService.hasPermission(option.permission)\n                );\n            });\n        }\n\n        getDateTime(): string|null {\n            if (!this.appointment) {\n                return null;\n            }\n\n            return (new Date(\n                this.appointment.scheduled_date + ' ' +\n                this.appointment.scheduled_time\n            )).toLocaleString();\n        }\n\n        hide(): void {\n            const element = <HTMLElement>document.getElementsByClassName('mdl-layout__obfuscator')[0];\n\n            element.click();\n        }\n\n        clickAction(item: MenuItem): void {\n            const vm = this;\n            if (angular.isDefined(item.action)) {\n                item.loading = true;\n                item.action(vm.SelectedAppointment).then(() => {\n                    vm.$state.go(item.uiSref);\n                    vm.hide();\n                    item.loading = false;\n                });\n            }\n            else {\n                vm.$state.go(item.uiSref);\n                vm.hide();\n            }\n        }\n\n        getHistoryValues(item: MenuItem) {\n            if (item.loading) {\n                return;\n            }\n\n            const addrId = this.SelectedAppointment?.service_request?.service_address?.id;\n            if (this.historyValues !== null) {\n                if (this.historyValues.addressId === addrId) {\n                    return this.historyValues;\n                } else {\n                    this.historyValues = null;\n                }\n            }\n\n            item.loading = true;\n            if (addrId === null) {\n                this.historyValues = {\n                    addressId: null,\n                    serviceRequests: false,\n                    recommendations: false,\n                    files: false,\n                };\n                item.loading = false;\n            } else {\n                this.$q.all([\n                    this.HistoryService.getServiceRequestHistoryByAddress(addrId, {size: 0}),\n                    this.HistoryService.getServiceRequestRecommendationsByAddress(addrId, {size: 0}),\n                    this.HistoryService.getServiceRequestPhotosByAddress(addrId, {size: 0}),\n                ]).then((v) => {\n                    this.historyValues = {\n                        addressId: addrId,\n                        serviceRequests: Number(v[0].headers('count')) > 0,\n                        recommendations: Number(v[1].headers('count')) > 0,\n                        files: Number(v[2].headers('count')) > 0,\n                    };\n                    item.loading = false;\n                });\n            }\n\n            return this.historyValues;\n        }\n    }\n}\n","/// <reference path=\"../_references.ts\"/>\nmodule App.Appointments {\n\timport INgMap = angular.map.INgMap;\n\timport BottomDrawerService = App.Helpers.BottomDrawerService;\n\timport TitleBarService = App.Helpers.TitleBarService;\n\timport LatLng = google.maps.LatLng;\n\timport DirectionsResult = google.maps.DirectionsResult;\n\timport DirectionsStatus = google.maps.DirectionsStatus;\n\n\texport class AppointmentOverviewController {\n\t\tshowMap: boolean;\n\n\t\tdistanceText: string = 'Getting Your Location...';\n\n\t\tprivate data: Appointment = null;\n\t\tpublic destination: LatLng;\n\t\tpublic directionsLink: string;\n\n\t\tstatusLoading: boolean = false;\n\n\t\tprivate map: App.Map = {\n\t\t\tcenter: null,\n\t\t\tzoom: 18,\n\t\t\tmarkers: [\n\t\t\t\t{\n\t\t\t\t\tid: 1,\n\t\t\t\t\tposition: null\n\t\t\t\t}\n\t\t\t]\n\t\t};\n\n\t\ttoggleBottomDrawer: (evt: ng.IAngularEvent) => void;\n\n\t\tstatic $inject = [\n\t\t\t'$scope', '$timeout', 'NgMap', 'SelectedAppointment', 'BottomDrawerService',\n\t\t\t'TitleBarService', 'PermissionService', '$state', 'TelephonyOutboundTools', 'LocationService', 'TimeEventService',\n\t\t];\n\n\t\tconstructor(\n\t\t\tprivate $scope: ng.IScope,\n\t\t\tprivate $timeout: ng.ITimeoutService,\n\t\t\tprivate NgMap: INgMap,\n\t\t\tprivate SelectedAppointment: SelectedAppointment,\n\t\t\tprivate BottomDrawerService: BottomDrawerService,\n\t\t\tprivate TitleBarService: TitleBarService,\n\t\t\tprivate PermissionService: App.Helpers.PermissionService,\n\t\t\tprivate $state: ng.ui.IStateService,\n\t\t\tprivate TelephonyOutboundTools: any,\n\t\t\tprivate LocationService: App.Helpers.LocationService,\n\t\t\tprotected TimeEventService: App.TimeEvent.TimeEventService\n\t\t) {\n\t\t\tSelectedAppointment.getAppointment().then((appointment) => {\n\t\t\t\tthis.setAppointment(appointment);\n\t\t\t});\n\n\t\t\tTitleBarService.set('Appointment');\n\n\n\t\t\tthis.toggleBottomDrawer = (evt) => {\n\t\t\t\tevt.preventDefault();\n\n\t\t\t\tconst options = [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttext: SelectedAppointment.getEmail(),\n\t\t\t\t\t\t\ticon: 'fas fa-envelope fa-fw',\n\t\t\t\t\t\t\tfn: () => {\n\t\t\t\t\t\t\t\tlet email = SelectedAppointment.getEmail();\n\n\t\t\t\t\t\t\t\tif(email) {\n\t\t\t\t\t\t\t\t\twindow.location.href = 'mailto:'+email;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttext: SelectedAppointment.getHours(),\n\t\t\t\t\t\t\ticon: 'far fa-clock fa-fw'\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t\tphone = SelectedAppointment.getFirstPhone(),\n\t\t\t\t\toption_sr =  {\n\t\t\t\t\t\ttext: 'SR ' + SelectedAppointment.service_request.id.toString(),\n\t\t\t\t\t\ticon: 'far fa-building fa-fw',\n\t\t\t\t\t},\n\t\t\t\t\toption_rate = {\n\t\t\t\t\t\ttext: SelectedAppointment.service_request.customer.rate_type ? SelectedAppointment.service_request.customer.rate_type.name : '',\n\t\t\t\t\t\ticon: 'far fa-building fa-fw',\n\t\t\t\t\t},\n\t\t\t\t\toption_appt = {\n\t\t\t\t\t\ttext: 'Appt ' + SelectedAppointment.id.toString(),\n\t\t\t\t\t\ticon: 'far fa-building fa-fw',\n\t\t\t\t\t},\n\t\t\t\t\toption_loc = {\n\t\t\t\t\t\ttext: SelectedAppointment.getLocation(),\n\t\t\t\t\t\ticon: 'fas fa-map-marker-alt fa-fw',\n\t\t\t\t\t};\n\n\t\t\t\tif (TelephonyOutboundTools.showOutboundNumber(phone)) {\n\t\t\t\t\tconst telephonyNumber = TelephonyOutboundTools.getOutboundNumber(),\n\t\t\t\t\t\ttelephonyHref = 'tel:' + telephonyNumber,\n\t\t\t\t\t\ttelephonyNumberText = telephonyNumber + ' ext. ' + phone.telephony_ext,\n\t\t\t\t\t\tformatted = SelectedAppointment.formatPhone(phone.number),\n\t\t\t\t\t\tphoneNumber = TelephonyOutboundTools.getPartialNumber(phone, formatted),\n\t\t\t\t\t\tphoneHref = 'tel:' + phoneNumber,\n\t\t\t\t\t\tphoneShowHref = TelephonyOutboundTools.showsFullNumber(phone);\n\n\t\t\t\t\toptions.push.apply(options, [{\n\t\t\t\t\t\t\ttext: telephonyNumberText,\n\t\t\t\t\t\t\ticon: 'fas fa-phone-square fa-fw',\n\t\t\t\t\t\t\tfn: () => window.location.href = telephonyHref,\n\t\t\t\t\t\t},\n\t\t\t\t\t\toption_sr, {\n\t\t\t\t\t\t\ttext: phoneNumber,\n\t\t\t\t\t\t\ticon: 'fas fa-phone-square fa-fw',\n\t\t\t\t\t\t\tfn: phoneShowHref\n\t\t\t\t\t\t\t\t? () => window.location.href = phoneHref\n\t\t\t\t\t\t\t\t: () => false,\n\t\t\t\t\t\t}, option_appt,\n\t\t\t\t\t\toption_rate,\n\t\t\t\t\t\toption_loc\n\t\t\t\t\t]);\n\t\t\t\t} else {\n\t\t\t\t\toptions.push.apply(options, [{\n\t\t\t\t\t\t\ttext: phone ? SelectedAppointment.formatPhone(phone.number) : 'No phone found',\n\t\t\t\t\t\t\ticon: 'fas fa-phone-square fa-fw',\n\t\t\t\t\t\t\tfn: phone\n\t\t\t\t\t\t\t\t? () => window.location.href = 'tel:' + phone.number\n\t\t\t\t\t\t\t\t: () => false,\n\t\t\t\t\t\t},\n\t\t\t\t\t\toption_sr,\n\t\t\t\t\t\toption_rate,\n\t\t\t\t\t\toption_appt,\n\t\t\t\t\t\toption_loc,\n\t\t\t\t\t]);\n\t\t\t\t}\n\n\t\t\t\tBottomDrawerService.open(options, true);\n\t\t\t};\n\t\t}\n\n\t\tsetAppointment(appointment: Appointment): void {\n\t\t\tconst vm = this;\n\n\t\t\tvm.data = appointment;\n\n\t\t\t// Load the appointment if it's not already loaded\n\t\t\tvm.data.getAppointment();\n\n\t\t\tvm.map.center = vm.data.service_request.service_address.latitude + ' ' + vm.data.service_request.service_address.longitude;\n\t\t\tvm.map.markers[0].position = vm.data.service_request.service_address.latitude + ' ' + vm.data.service_request.service_address.longitude;\n\t\t\tvm.validateDestination();\n\t\t}\n\n\t\tvalidateDestination(): void {\n\t\t\tconst vm = this,\n\t\t\t\taddress = vm.data.service_request.service_address;\n\n\t\t\tif (address.latitude && address.longitude) {\n\t\t\t\tvm.destination = vm.getDestination();\n\t\t\t\tvm.getLocation();\n\t\t\t} else {\n\t\t\t\tvm.distanceText = 'Destination lat/lng not found.';\n\t\t\t}\n\t\t}\n\n\t\tgetDestination() {\n\t\t\tconst vm = this;\n\n\t\t\tlet marker = vm.map.markers[0],\n\t\t\t\tposition, destination: LatLng;\n\n\t\t\tif(typeof marker.position === 'string') {\n\t\t\t\tposition = marker.position.split(' ');\n\t\t\t\tdestination = new google.maps.LatLng(parseFloat(position[0]), parseFloat(position[1]));\n\t\t\t} else {\n\t\t\t\tdestination = new google.maps.LatLng(marker.latitude, marker.longitude);\n\t\t\t}\n\n\t\t\treturn destination;\n\t\t}\n\n\t\tgetLocation() {\n\t\t\tlet vm = this,\n\t\t\t\tdestinationAddress = vm.data.service_request.service_address.street + ' ' + vm.data.service_request.service_address.city + ' ' + vm.data.service_request.service_address.state + ' ' + vm.data.service_request.service_address.zip;\n\n\t\t\tvm.directionsLink = 'https://www.google.com/maps/dir/?api=1&destination=' + encodeURIComponent(destinationAddress);\n\t\t\tvm.$timeout(() => {\n\t\t\t\tthis.showMap = true;\n\n\t\t\t\tthis.LocationService.getLocation().then((coords) => {\n\t\t\t\t\tvm.map.markers[1] = {\n\t\t\t\t\t\tid: 2,\n\t\t\t\t\t\tlatitude: coords.latitude,\n\t\t\t\t\t\tlongitude: coords.longitude\n\t\t\t\t\t};\n\n\t\t\t\t\tvm.NgMap.getMap().then(function (map) {\n\t\t\t\t\t\tlet directionsDisplay = new google.maps.DirectionsRenderer(),\n\t\t\t\t\t\t\tdirectionsService = new google.maps.DirectionsService(),\n\t\t\t\t\t\t\trequest = {\n\t\t\t\t\t\t\t\torigin: new google.maps.LatLng(\n\t\t\t\t\t\t\t\t\tcoords.latitude,\n\t\t\t\t\t\t\t\t\tcoords.longitude\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\tdestination: vm.destination,\n\t\t\t\t\t\t\t\ttravelMode: google.maps.TravelMode.DRIVING,\n\t\t\t\t\t\t\t\toptimizeWaypoints: true\n\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\tdirectionsService.route(request, function (response: DirectionsResult, status: DirectionsStatus) {\n\t\t\t\t\t\t\tif (response.routes[0]) {\n\t\t\t\t\t\t\t\tlet withText = '';\n\n\t\t\t\t\t\t\t\tif ((<any>response.routes[0].legs[0]).traffic_speed_entry.length > 0) {\n\t\t\t\t\t\t\t\t\twithText += ' with traffic';\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tvm.distanceText = response.routes[0].legs[0].distance.text +\n\t\t\t\t\t\t\t\t\t' - ' + response.routes[0].legs[0].duration.text +\n\t\t\t\t\t\t\t\t\twithText;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (status == google.maps.DirectionsStatus.OK) {\n\t\t\t\t\t\t\t\tdirectionsDisplay.setDirections(response);\n\t\t\t\t\t\t\t\tdirectionsDisplay.setMap(map);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\n\t\t\t\t\t});\n\t\t\t\t}, function () {\n\t\t\t\t\tvm.distanceText = 'Unable to determine location.';\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\tshowStatusButton(): boolean {\n\t\t\treturn this.data.appointment_status !== 'Arrived' ||\n\t\t\t\tthis.PermissionService.hasAnyPermission([\n\t\t\t\t\t'web.field.price-guide.view',\n\t\t\t\t\t'web.field.left-nav.work-order',\n\t\t\t\t\t'web.field.left-nav.administrative',\n\t\t\t\t\t'web.office.service-requests.service-request.tech-view'\n\t\t\t\t]);\n\t\t}\n\n\t\tchangeStatus() : void {\n\t\t\t// Navigate to Price Guide\n\t\t\tif (this.data.appointment_status == 'Arrived') {\n\t\t\t\tswitch (true) {\n\t\t\t\t\tcase this.PermissionService.hasPermission('web.field.price-guide.view'):\n\t\t\t\t\tcase this.PermissionService.hasPermission('web.office.service-requests.service-request.tech-view'):\n\t\t\t\t\t\tthis.$state.go('zipSolutions.price-guide');\n\t\t\t\t\t\treturn;\n\t\t\t\t\tcase this.PermissionService.hasPermission('web.field.left-nav.work-order'):\n\t\t\t\t\t\tthis.$state.go('zipSolutions.workOrder');\n\t\t\t\t\t\treturn;\n\t\t\t\t\tcase this.PermissionService.hasPermission('web.field.left-nav.administrative'):\n\t\t\t\t\t\tthis.$state.go('zipSolutions.administrative');\n\t\t\t\t\t\treturn;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\t// Don't know where to go next...\n\t\t\t\t\t\t// This should not have happened\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet nextStatus: string,\n\t\t\t\tconfirmEvent: boolean = false;\n\t\t\tswitch(this.data.appointment_status) {\n\t\t\t\tcase 'Acknowledged':\n\t\t\t\t\tnextStatus = 'Started';\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'Started':\n\t\t\t\tdefault:\n\t\t\t\t\tnextStatus = 'Arrived';\n\t\t\t\t\tconfirmEvent = this.PermissionService.hasPermission('web.time-clock.field.confirm');\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tthis.statusLoading = true;\n\t\t\tthis.SelectedAppointment.updateAppointmentStatus(nextStatus)\n\t\t\t\t.then((response) => {\n\t\t\t\t\tthis.data = response;\n\n\t\t\t\t\tif (confirmEvent) {\n\t\t\t\t\t\treturn this.TimeEventService.confirmLastEvent();\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.finally(() => {\n\t\t\t\t\tthis.statusLoading = false;\n\n\t\t\t\t\tif (this.SelectedAppointment.getPhone(true, true) !== \"No phone found\") {\n\t\t\t\t\t\tthis.sendCustomerText(nextStatus);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n\n\t\tsendCustomerText(nextStatus: string) {\n\t\t\tconst vm = this;\n\n\t\t\tvm.BottomDrawerService.open([\n\t\t\t\t{\n\t\t\t\t\ttext: \"Send text\",\n\t\t\t\t\ticon: 'fas fa-mobile-alt fa-fw',\n\t\t\t\t\tfn: () => {\n\t\t\t\t\t\tvm.SelectedAppointment.sendCustomerText(nextStatus);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttext: \"Do not send a text\",\n\t\t\t\t\ticon: 'fas fa-times fa-fw',\n\t\t\t\t\tfn: () => {\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t], true, false);\n\t\t}\n\n\t\tbuttonStatus() : string {\n\t\t\tconst vm = this;\n\n\t\t\tswitch(vm.data.appointment_status) {\n\t\t\t\tcase 'Acknowledged':\n\t\t\t\t\treturn 'Start';\n\t\t\t\tcase 'Started':\n\t\t\t\t\treturn 'Arrive';\n\t\t\t\tcase 'Arrived':\n\t\t\t\t\treturn 'Next';\n\t\t\t\tdefault:\n\t\t\t\t\treturn 'Arrive';\n\t\t\t}\n\t\t}\n\n\t\tdisplayDate(appointment: Appointment): string {\n\t\t\treturn moment(appointment.scheduled_date + ' ' + appointment.scheduled_time, 'YYYY-MM-DD HH:mm').format('ddd, MMM Do YYYY hh:mma');\n\t\t}\n\t}\n}","/// <reference path=\"../_references.ts\"/>\n\nmodule App.Appointments {\n\timport INgMap = angular.map.INgMap;\n\timport BottomDrawerService = App.Helpers.BottomDrawerService;\n\ttype Status = 'Paused' | 'Started' | 'complete' | 'Dispatched' | 'Acknowledged' | 'Arrived';\n\timport AppointmentService = App.Appointments.AppointmentService;\n\timport TitleBarService = App.Helpers.TitleBarService;\n\timport DirectionsResult = google.maps.DirectionsResult;\n\timport LatLng = google.maps.LatLng;\n\n\texport class AppointmentController {\n\t\tmap: App.Map = {\n\t\t\tcenter: \"38.970096, -92.408691\",\n\t\t\tzoom: 18,\n\t\t\tmarkers: [\n\t\t\t\t{\n\t\t\t\t\tid: 1,\n\t\t\t\t\tposition: \"38.970096, -92.408691\"\n\t\t\t\t}\n\t\t\t]\n\t\t};\n\n\t\tselectedAppt: Appointment = null;\n\t\tpastAppts: Appointment[] = [];\n\t\tfutureAppts: Appointment[] = [];\n\t\tactiveAppts: Appointment[] = [];\n\t\tloadingAppts: {id: number, loading: boolean}[] = [];\n\n\t\tstatic $inject = [\n\t\t\t'$scope', '$state', '$timeout', '$stateParams','$log', 'NgMap', 'AppointmentService', 'SelectedAppointment',\n\t\t\t'BottomDrawerService', 'TitleBarService', 'ToastService', '$q', 'LocationService', 'PermissionService', 'TimeEventService',\n\t\t];\n\n\t\tconstructor(\n\t\t\tprivate $scope: ng.IScope,\n\t\t\tprivate $state: ng.ui.IStateService,\n\t\t\tprivate $timeout: ng.ITimeoutService,\n\t\t\tprivate $stateParams: ng.ui.IStateParamsService,\n\t\t\tprivate $log: ng.ILogService,\n\t\t\tprivate NgMap: INgMap,\n\t\t\tpublic AppointmentService: AppointmentService,\n\t\t\tpublic SelectedAppointment: SelectedAppointment,\n\t\t\tprivate BottomDrawerService: BottomDrawerService,\n\t\t\tprivate TitleBarService: TitleBarService,\n\t\t\tprotected ToastService: App.Utils.ToastService,\n\t\t\tpublic $q: ng.IQService,\n\t\t\tprivate LocationService: App.Helpers.LocationService,\n\t\t\tprotected PermissionService: App.Helpers.PermissionService,\n\t\t\tprotected TimeEventService: App.TimeEvent.TimeEventService\n\t\t) {\n\t\t\tlet vm = this;\n\n\t\t\tTitleBarService.set('Home');\n\n\t\t\tvm.updateAppointmentsList().then(() => {\n\t\t\t\tSelectedAppointment.getAppointment().then((appointment) => {\n\t\t\t\t\tlet found = vm.activeAppts.concat(vm.pastAppts).concat(vm.futureAppts).find((appt) => {\n\t\t\t\t\t\treturn appt.id === appointment.id;\n\t\t\t\t\t});\n\t\t\t\t\tif (found) {\n\t\t\t\t\t\tvm.selectAppointment(appointment);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tSelectedAppointment.clear();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\tupdateAppointmentsList(): ng.IPromise<void> {\n\t\t\tlet vm = this;\n\n\t\t\treturn vm.AppointmentService.fetchAll('current', { quiet: 1, show_summary: 1, show_tags: 1 })\n\t\t\t\t.then((response: ng.IHttpResponse<{\n\t\t\t\t\ttoday: Appointment[],\n\t\t\t\t\tpast: Appointment[],\n\t\t\t\t\tfuture: Appointment[]\n\t\t\t\t}>) => {\n\t\t\t\t\tlet appointments = response.data;\n\n\t\t\t\t\tif(vm.$stateParams.completedApptId) {\n\t\t\t\t\t\tlet removeApptById = (apptArr: Appointment[]) => {\n\t\t\t\t\t\t\tlet removedAppt = apptArr.findIndex((appt) => {\n\t\t\t\t\t\t\t\treturn appt.id == vm.$stateParams.completedApptId;\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\tif(removedAppt != -1) {\n\t\t\t\t\t\t\t\tapptArr.splice(removedAppt, 1);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn apptArr;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tremoveApptById(appointments.past);\n\t\t\t\t\t\tremoveApptById(appointments.today);\n\t\t\t\t\t\tvm.SelectedAppointment.clear();\n\t\t\t\t\t}\n\t\t\t\t\tvm.activeAppts = appointments.today;\n\t\t\t\t\tvm.pastAppts = appointments.past;\n\t\t\t\t\tvm.futureAppts = appointments.future;\n\n\t\t\t\t\tvm.loadingAppts = [];\n\n\t\t\t\t\tvm.activeAppts.concat(vm.pastAppts).concat(vm.futureAppts).forEach((appt) => {\n\t\t\t\t\t\tvm.loadingAppts.push({\n\t\t\t\t\t\t\tid: appt.id,\n\t\t\t\t\t\t\tloading: false\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tif (appt.appointment_status == 'Started' || appt.appointment_status == 'Arrived') {\n\t\t\t\t\t\t\tappt.appointment_status = 'Paused';\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t}\n\n\t\tisComplete(status: Status) : boolean {\n\t\t\treturn status === 'complete';\n\t\t}\n\n\t\tbuttonStatus(status: Status) : string {\n\t\t\tswitch(status) {\n\t\t\t\tcase 'Paused':\n\t\t\t\tcase 'Started':\n\t\t\t\tcase 'Arrived':\n\t\t\t\t\treturn 'Resume';\n\t\t\t\tcase 'Dispatched':\n\t\t\t\t\treturn 'Acknowledge';\n\t\t\t\tcase 'Acknowledged':\n\t\t\t\t\treturn 'Start';\n\t\t\t\tdefault:\n\t\t\t\t\treturn 'Start';\n\t\t\t}\n\t\t}\n\n\t\tsetMap(lat: string, long: string) : void {\n\t\t\tlet vm = this;\n\n\t\t\tvm.map.center = lat + ' ' + long;\n\t\t\tvm.map.markers[0].position = lat + ' ' + long;\n\t\t}\n\n\t\tselectAppointment(appointment?: Appointment): void {\n\t\t\tconst vm = this;\n\n\t\t\tif(appointment instanceof App.Appointments.SelectedAppointment && vm.SelectedAppointment.service_request !== null) {\n\t\t\t\tvm.selectedAppt = vm.SelectedAppointment;\n\n\t\t\t\tvm.setMap(vm.selectedAppt.service_request.service_address.latitude, vm.selectedAppt.service_request.service_address.longitude);\n\t\t\t} else if(angular.isDefined(appointment)) {\n\t\t\t\tvm.SelectedAppointment.set(appointment);\n\t\t\t\tvm.SelectedAppointment.getAppointment();\n\n\t\t\t\tvm.selectedAppt = vm.SelectedAppointment;\n\n\t\t\t\tif (angular.isDefined(vm.selectedAppt.service_request) && vm.SelectedAppointment.service_request !== null) {\n\t\t\t\t\tvm.setMap(vm.selectedAppt.service_request.service_address.latitude, vm.selectedAppt.service_request.service_address.longitude);\n\t\t\t\t} else {\n\t\t\t\t\tvm.setMap(appointment.service_request.service_address.latitude, appointment.service_request.service_address.longitude);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tupdateAppointment(curAppt: Appointment, newAppt: Appointment): boolean {\n\t\t\tvar index = this.activeAppts.indexOf(curAppt);\n\t\t\tif (index !== -1) {\n\t\t\t\tthis.activeAppts[index] = newAppt;\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tindex = this.pastAppts.indexOf(curAppt);\n\t\t\tif (index !== -1) {\n\t\t\t\tthis.pastAppts[index] = newAppt;\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tindex = this.futureAppts.indexOf(curAppt);\n\t\t\tif (index !== -1) {\n\t\t\t\tthis.futureAppts[index] = newAppt;\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\treturn false;\n\t\t}\n\n\t\tprogressAppointmentStatus(appointment: Appointment): void {\n\t\t\tconst vm = this;\n\t\t\tlet apptSet: any;\n\n\t\t\tapptSet = vm.SelectedAppointment.set(appointment);\n\t\t\tvm.selectedAppt = vm.SelectedAppointment;\n\t\t\tvm.setMap(vm.selectedAppt.service_request.service_address.latitude, vm.selectedAppt.service_request.service_address.longitude);\n\n\t\t\tvar loadingAppt = vm.loadingAppts.find((obj) => {\n\t\t\t\treturn obj.id == appointment.id;\n\t\t\t});\n\t\t\tvm.$q.all([apptSet]).then(() => {\n\t\t\t\tif (appointment.appointment_status == 'Dispatched') {\n\t\t\t\t\tloadingAppt.loading = true;\n\t\t\t\t\tvm.SelectedAppointment\n\t\t\t\t\t\t.updateAppointmentStatus('Acknowledged')\n\t\t\t\t\t\t.then((response) => {\n\t\t\t\t\t\t\tthis.updateAppointment(appointment, response);\n\t\t\t\t\t\t\tappointment = response;\n\t\t\t\t\t\t})\n\t\t\t\t\t.catch((err) => this.ToastService.showError('Failed to update appointment: ', err))\n\t\t\t\t\t.finally(() => loadingAppt.loading = false);\n\t\t\t\t} else if (\n\t\t\t\t\tappointment.appointment_status == 'Acknowledged' ||\n\t\t\t\t\tappointment.appointment_status == 'Paused' ||\n\t\t\t\t\tappointment.appointment_status == 'Started' ||\n\t\t\t\t\tappointment.appointment_status == 'Arrived'\n\t\t\t\t) {\n\t\t\t\t\tloadingAppt.loading = true;\n\n\t\t\t\t\tvm.SelectedAppointment\n\t\t\t\t\t\t.updateAppointmentStatus('Started')\n\t\t\t\t\t\t.then(response => {\n\t\t\t\t\t\t\tthis.updateAppointment(appointment, response);\n\t\t\t\t\t\t\treturn appointment = response;\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.then(() => this.TimeEventService.confirmLastEvent())\n\t\t\t\t\t\t.then(() => {\n\t\t\t\t\t\t\tif (appointment.appointment_status == 'Started') {\n\t\t\t\t\t\t\t\tif (vm.SelectedAppointment.getPhone(true, true) !== \"No phone found\") {\n\t\t\t\t\t\t\t\t\tvm.sendCustomerText('Started');\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tvm.$state.go('zipSolutions.home.appointment.overview');\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.catch((err) => this.ToastService.showError('Failed to update appointment: ', err))\n\t\t\t\t\t\t.finally(() => loadingAppt.loading = false);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tsendCustomerText(nextStatus: string) {\n\t\t\tconst vm = this;\n\n\t\t\tvm.BottomDrawerService.open([\n\t\t\t\t{\n\t\t\t\t\ttext: \"Send text\",\n\t\t\t\t\ticon: 'fas fa-mobile-alt fa-fw',\n\t\t\t\t\tfn: () => {\n\t\t\t\t\t\tvm.sendTextWithLocation(nextStatus);\n\t\t\t\t\t\tvm.$state.go('zipSolutions.home.appointment.overview');\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttext: \"Do not send a text\",\n\t\t\t\t\ticon: 'fas fa-times fa-fw',\n\t\t\t\t\tfn: () => {\n\t\t\t\t\t\tvm.$state.go('zipSolutions.home.appointment.overview');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t], true, false);\n\t\t}\n\n\t\tsendTextWithLocation(nextStatus: string) {\n\t\t\tconst vm = this,\n\t\t\t\taddress = vm.SelectedAppointment.service_request.service_address,\n\t\t\t\tTIME_MULTIPLIER = 1.2;\n\n\t\t\tif(address.latitude && address.longitude) {\n\t\t\t\tvm.$timeout(() => {\n\t\t\t\t\tthis.LocationService.getLocation().then((coords) => {\n\t\t\t\t\t\tvm.map.markers[1] = {\n\t\t\t\t\t\t\tid: 2,\n\t\t\t\t\t\t\tlatitude: coords.latitude,\n\t\t\t\t\t\t\tlongitude: coords.longitude\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tvm.NgMap.getMap().then(function() {\n\t\t\t\t\t\t\tlet directionsService = new google.maps.DirectionsService(),\n\t\t\t\t\t\t\t\trequest = {\n\t\t\t\t\t\t\t\t\torigin: new google.maps.LatLng(\n\t\t\t\t\t\t\t\t\t\tcoords.latitude,\n\t\t\t\t\t\t\t\t\t\tcoords.longitude\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\tdestination: vm.getDestination(),\n\t\t\t\t\t\t\t\t\ttravelMode: google.maps.TravelMode.DRIVING,\n\t\t\t\t\t\t\t\t\toptimizeWaypoints: true\n\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\tdirectionsService.route(request, function(response: DirectionsResult) {\n\t\t\t\t\t\t\t\tconst seconds = response.routes[0].legs[0].duration.value * TIME_MULTIPLIER,\n\t\t\t\t\t\t\t\t\ttimeOfArrival = moment().add(seconds, 'seconds').format('hh:mm a');\n\n\t\t\t\t\t\t\t\tvm.SelectedAppointment.sendCustomerText(nextStatus, timeOfArrival);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t});\n\t\t\t\t\t}, function() {\n\t\t\t\t\t\tvm.SelectedAppointment.sendCustomerText(nextStatus);\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tvm.SelectedAppointment.sendCustomerText(nextStatus);\n\t\t\t}\n\t\t}\n\n\t\tgetDestination() {\n\t\t\tconst vm = this;\n\n\t\t\tlet marker = vm.map.markers[0],\n\t\t\t\tposition,\n\t\t\t\tdestination: LatLng;\n\n\t\t\tif(typeof marker.position === 'string') {\n\t\t\t\tposition = marker.position.split(' ');\n\t\t\t\tdestination = new google.maps.LatLng(parseFloat(position[0]), parseFloat(position[1]));\n\t\t\t} else {\n\t\t\t\tdestination = new google.maps.LatLng(marker.latitude, marker.longitude);\n\t\t\t}\n\n\t\t\treturn destination;\n\t\t}\n\n\t\tdisplayDate(appointment: Appointment): string {\n\t\t\treturn moment(appointment.scheduled_date + ' ' + appointment.scheduled_time, 'YYYY-MM-DD HH:mm').format('ddd, MMM Do YYYY hh:mma');\n\t\t}\n\n\t\tdisplayShortDate(appointment: Appointment): string {\n\t\t\treturn moment(appointment.scheduled_date, 'YYYY-MM-DD').format('dddd Do');\n\t\t}\n\n\t\tdisplayTime(appointment: Appointment): string {\n\t\t\treturn moment(appointment.scheduled_time, 'HH:mm').format('hh:mma');\n\t\t}\n\n\t\tisLoading(appointment: Appointment): boolean {\n\t\t\treturn this.loadingAppts.find((obj) => {\n\t\t\t\treturn obj.id == appointment.id;\n\t\t\t}).loading;\n\t\t}\n\t}\n}\n","/// <reference path=\"_references.ts\"/>\n\nmodule App.Chat {\n\timport ToastService = App.Utils.ToastService;\n\n\tinterface LocalScope extends ng.IScope {\n\t\tmenu: App.User.UserMenuController;\n\t}\n\n\texport class ChatController {\n\t\tprivate showChat: boolean;\n\t\tprivate chatListener: () => void;\n\n\t\ttoastLocation: string = 'bottom left';\n\t\tchatPanel: HTMLElement;\n\t\tchatInput: HTMLElement;\n\t\tREFRESH_USERS_DELAY: number = 150000;\n\t\tRETRY_DELAY: number = 3000;\n\t\tMAX_RETRIES: number = 5;\n\t\tENTER_KEYCODE: number = 13;\n\t\tDEFAULT_MESSAGES_RETRIEVED: number = 50;\n\t\tretries: number = 0;\n\n\t\tcurrentChat: ChatUser = {id: null, name: '', unread: 0, online: false, role: ''};\n\t\tsubscription: Subscription = null;\n\t\tusers: ChatUser[] = null;\n\t\ttotalUnread: number = 0;\n\t\tmessageLogs: {id: number, log: Message[]}[] = [];\n\t\tcurrentMessageLog: {id: number, log: Message[]} = {\n\t\t\tid: null,\n\t\t\tlog: []\n\t\t};\n\t\tsending: boolean = false;\n\t\tdrafts: Message[] = [];\n\t\tcurrentDraft: Message = {\n\t\t\trecipient: null,\n\t\t\tmessage: ''\n\t\t};\n\t\tgetUserInterval: ng.IPromise<any> = null;\n\t\tusersOpen: boolean = true;\n\t\tusersLoaded: boolean = false;\n\t\tsearch: string = '';\n\t\tsearchRegExp: RegExp = null;\n\t\tlastMessageLength: number = null;\n\t\tloadingOld: boolean = false;\n\t\tloading: boolean = true;\n\n\t\tconstructor(\n\t\t\tprivate $document: ng.IDocumentService,\n\t\t\tprivate $interval: ng.IIntervalService,\n\t\t\tprivate $scope: LocalScope,\n\t\t\tprivate $timeout: ng.ITimeoutService,\n\t\t\tprivate $window: ng.IWindowService,\n\t\t\tprivate ChatService: ChatService,\n\t\t\tprivate ToastService: ToastService\n\t\t) {\n\t\t\tthis.showChat = $scope.menu.showChat;\n\t\t\tthis.ChatService.subscribeToUnread(this.receiveUnread.bind(this));\n\n\t\t\t$scope.$watch(\n\t\t\t\t() => $scope.menu.showChat,\n\t\t\t\t(newValue, oldValue) => {\n\t\t\t\t\tthis.showChat = newValue;\n\n\t\t\t\t\tif (!newValue && oldValue) {\n\t\t\t\t\t\tthis.closeChat();\n\t\t\t\t\t\tthis.stopGettingUsers();\n\t\t\t\t\t} else if (newValue && !oldValue) {\n\t\t\t\t\t\tthis.$timeout(() => {\n\t\t\t\t\t\t\tthis.chatPanel = this.$document[0].getElementById('chat-slideout');\n\t\t\t\t\t\t\tthis.chatInput = this.$document[0].getElementById('chat-input');\n\n\t\t\t\t\t\t\tif (this.chatInput) {\n\t\t\t\t\t\t\t\tthis.chatInput.addEventListener('keypress', event => {\n\t\t\t\t\t\t\t\t\tif (event.which === this.ENTER_KEYCODE && !event.shiftKey && !event.ctrlKey) {\n\t\t\t\t\t\t\t\t\t\tthis.sendMessage();\n\t\t\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tthis.chatInput.addEventListener('focus', event => {\n\t\t\t\t\t\t\t\t\tthis.$document[0].getElementById('chat-header').classList.add('hidden-while-chatting');\n\t\t\t\t\t\t\t\t\tthis.$document[0].querySelector('#chat-slideout .mdl-layout__header').classList.add('hidden-while-chatting');\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tthis.chatInput.addEventListener('blur', event => {\n\t\t\t\t\t\t\t\t\tthis.$document[0].getElementById('chat-header').classList.remove('hidden-while-chatting');\n\t\t\t\t\t\t\t\t\tthis.$document[0].querySelector('#chat-slideout .mdl-layout__header').classList.remove('hidden-while-chatting');\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tthis.startGettingUsers();\n\t\t\t\t\t\t}, 150);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\n\t\topenChat(user: ChatUser) {\n\t\t\tthis.chatListener = this.$scope.$watch(\n\t\t\t\t() => this.currentChat.id,\n\t\t\t\tid => id === null && this.closeChat()\n\t\t\t);\n\n\t\t\tthis.usersOpen = false;\n\t\t\tthis.currentChat = user;\n\t\t\tthis.currentMessageLog = this.messageLogs.find(log => {\n\t\t\t\treturn log.id === this.currentChat.id;\n\t\t\t}) || {\n\t\t\t\tid: this.currentChat.id,\n\t\t\t\tlog: []\n\t\t\t};\n\t\t\tthis.currentDraft = this.drafts.find(draft => {\n\t\t\t\treturn draft.recipient === this.currentChat.id;\n\t\t\t}) || {\n\t\t\t\trecipient: this.currentChat.id,\n\t\t\t\tmessage: ''\n\t\t\t};\n\t\t\tthis.ChatService\n\t\t\t\t.subscribeToChat(\n\t\t\t\t\tthis.currentChat.id,\n\t\t\t\t\tthis.receiveMessage.bind(this)\n\t\t\t\t)\n\t\t\t\t.then(sub => {\n\t\t\t\t\tthis.subscription = sub;\n\t\t\t\t\tthis.getMessages();\n\t\t\t\t\tthis.stopGettingUsers();\n\t\t\t\t})\n\t\t\t\t.catch(() => this.closeChat);\n\t\t};\n\n\t\tcloseChat() {\n\t\t\tif (this.chatListener) {\n\t\t\t\tthis.chatListener();\n\t\t\t}\n\t\t\tthis.ChatService.unsubscribeFromChat(this.subscription)\n\t\t\t\t.then(() => this.subscription = null);\n\t\t\tthis.usersOpen = true;\n\t\t\tvar logIndex = this.messageLogs.findIndex(log => {\n\t\t\t\t\treturn log.id === this.currentChat.id;\n\t\t\t\t}),\n\t\t\t\tdraftIndex = this.drafts.findIndex(draft => {\n\t\t\t\t\treturn draft.recipient === this.currentChat.id;\n\t\t\t\t});\n\n\t\t\tthis.messageLogs[logIndex !== -1 ? logIndex : this.messageLogs.length] = this.currentMessageLog;\n\t\t\tthis.currentMessageLog = {\n\t\t\t\tid: null,\n\t\t\t\tlog: []\n\t\t\t};\n\t\t\tthis.drafts[draftIndex !== -1 ? draftIndex : this.drafts.length] = this.currentDraft;\n\t\t\tthis.currentDraft = {\n\t\t\t\trecipient: null,\n\t\t\t\tmessage: ''\n\t\t\t};\n\t\t\tthis.currentChat.id = null;\n\t\t\tthis.startGettingUsers();\n\t\t};\n\n\t\tgetUsers() {\n\t\t\tthis.ChatService.getUsers()\n\t\t\t\t.then(users => this.users = users)\n\t\t\t\t.finally(() => this.usersLoaded = true);\n\t\t};\n\n\t\tstartGettingUsers() {\n\t\t\tif (!this.getUserInterval) {\n\t\t\t\tthis.getUserInterval = this.$interval(this.getUsers, this.REFRESH_USERS_DELAY);\n\t\t\t}\n\t\t\tthis.getUsers();\n\t\t};\n\n\t\tstopGettingUsers() {\n\t\t\tif (this.getUserInterval) {\n\t\t\t\tthis.$interval.cancel(this.getUserInterval);\n\t\t\t\tthis.getUserInterval = null;\n\t\t\t}\n\t\t};\n\n\t\ttoggleGettingUsers() {\n\t\t\tif (this.chatPanel.classList.contains('active') && !this.currentChat.id) {\n\t\t\t\tthis.startGettingUsers();\n\t\t\t} else {\n\t\t\t\tthis.stopGettingUsers();\n\t\t\t}\n\t\t};\n\n\t\tsendMessage(retry: boolean = false, message = this.currentDraft.message) {\n\t\t\tif (!retry && (this.sending || message === '')) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.sending = true;\n\n\t\t\tthis.ChatService\n\t\t\t\t.sendMessage(\n\t\t\t\t\tmessage,\n\t\t\t\t\t<number>this.currentDraft.recipient\n\t\t\t\t)\n\t\t\t\t.then(() => {\n\t\t\t\t\tthis.currentDraft.message = '';\n\t\t\t\t\tthis.sending = false;\n\t\t\t\t\tthis.$timeout(() => {\n\t\t\t\t\t\tthis.$document[0].getElementById('chat-input').focus();\n\t\t\t\t\t}, 10);\n\t\t\t\t});\n\t\t};\n\n\t\tformatMessageDate(index: number) {\n\t\t\tvar msgDate = moment(this.currentMessageLog.log[index].timestamp);\n\n\t\t\tif (index !== 0 && msgDate.isBefore(moment(this.currentMessageLog.log[index - 1].timestamp).add(2, 'minutes'))) {\n\t\t\t\treturn '';\n\t\t\t}\n\n\t\t\treturn msgDate.format('M/DD/YY h:mm a');\n\t\t};\n\n\t\tformat(message: string) {\n\t\t\tconst elem = angular.element('<div></div>');\n\n\t\t\telem.text(message);\n\t\t\tmessage = elem.html();\n\n\t\t\treturn message.replace(\n\t\t\t\t// eslint-disable-next-line max-len\n\t\t\t\t/(https?:\\/\\/)?([0-9a-zA-Z_-]+\\.)+[0-9a-zA-Z_-]+(:\\d+)?(\\/[0-9a-zA-Z_-]+)*\\/?(\\?([0-9a-zA-Z_=-]|(&amp;))*)?/,\n\t\t\t\tfunction(match, schema) {\n\t\t\t\t\tmatch = match.replace(/&amp;/, '&');\n\t\t\t\t\treturn '<a href=\"' + (schema ? '' : 'https://') + match + '\" target=\"_blank\">' + match + '</a>';\n\t\t\t\t}\n\t\t\t);\n\t\t};\n\n\t\tisOwnMessage(message: Message) {\n\t\t\treturn this.currentChat.id !== (<{id: number, name: string}>message.sender).id;\n\t\t}\n\n\t\treceiveUnread(count: number, users: number[]) {\n\t\t\tthis.totalUnread = count;\n\n\t\t\tif (this.showChat) {\n\t\t\t\tif (this.currentChat.id && users.indexOf(this.currentChat.id) >= 0) {\n\t\t\t\t\tthis.ChatService.markRead(this.currentChat.id);\n\t\t\t\t\tthis.totalUnread -= 1;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tthis.getUsers();\n\t\t\t}\n\n\t\t\tif (this.totalUnread === 0) {\n\t\t\t\tArray.from(this.$document[0].getElementsByClassName('total-unread')).forEach((element: HTMLElement) => {\n\t\t\t\t\telement.style.display = 'none';\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tArray.from(this.$document[0].getElementsByClassName('total-unread')).forEach((element: HTMLElement) => {\n\t\t\t\t\telement.innerHTML = this.totalUnread.toString();\n\t\t\t\t\telement.style.display = 'block';\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\treceiveMessage(msg: Message[]) {\n\t\t\tconst message = msg[0];\n\n\t\t\tif (!this.isOwnMessage(message)) {\n\t\t\t\tif (!message.read) {\n\t\t\t\t\tthis.ChatService.markRead(this.currentChat.id);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (this.currentMessageLog.log.length && message.id <= this.currentMessageLog.log[this.currentMessageLog.log.length - 1].id) {\n\t\t\t\t// Update the current log's data\n\t\t\t\tvar current = this.currentMessageLog.log.find(function(logMessage) {\n\t\t\t\t\treturn logMessage.id === message.id;\n\t\t\t\t});\n\n\t\t\t\tif (current) {\n\t\t\t\t\tObject.keys(message).forEach(function(key) {\n\t\t\t\t\t\tif (message.hasOwnProperty(key)) {\n\t\t\t\t\t\t\tcurrent[key] = message[key];\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.currentMessageLog.log.push(message);\n\t\t};\n\n\t\tgetOldMessages(): null|ng.IPromise<Message[]> {\n\t\t\tif (this.loadingOld || this.loading) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tlet date = null,\n\t\t\t\ttarget = this.currentChat.id;\n\n\t\t\tthis.loadingOld = true;\n\t\t\tif (this.currentMessageLog.log.length > 0) {\n\t\t\t\tdate = this.currentMessageLog.log[0].timestamp;\n\t\t\t}\n\n\t\t\treturn this.ChatService\n\t\t\t\t.getOldMessages(target, date)\n\t\t\t\t.then(messages => {\n\t\t\t\t\tif (this.loading || !this.currentChat || this.currentChat.id !== target) {\n\t\t\t\t\t\treturn [];\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.loadingOld = false;\n\t\t\t\t\tthis.lastMessageLength = messages.length;\n\t\t\t\t\tif (messages && messages.length) {\n\t\t\t\t\t\tthis.currentMessageLog.log = messages\n\t\t\t\t\t\t\t.filter(m => this.currentMessageLog.log.findIndex(m2 => m2.id === m.id) === -1)\n\t\t\t\t\t\t\t.concat(this.currentMessageLog.log);\n\t\t\t\t\t}\n\t\t\t\t\tthis.retries = 0;\n\n\t\t\t\t\treturn messages;\n\t\t\t\t})\n\t\t\t\t.catch(() => {\n\t\t\t\t\tif (this.loading || !this.currentChat || this.currentChat.id !== target) {\n\t\t\t\t\t\treturn [];\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.retries++;\n\t\t\t\t\tif (this.retries <= this.MAX_RETRIES) {\n\t\t\t\t\t\tthis.$timeout(this.getOldMessages, this.RETRY_DELAY);\n\t\t\t\t\t\tthis.ToastService.show('Unable to retrieve messages. Retrying...')\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.retries = 0;\n\t\t\t\t\t\tthis.loadingOld = false;\n\t\t\t\t\t\tthis.ToastService.show('Unable to retrieve messages.')\n\t\t\t\t\t}\n\n\t\t\t\t\treturn [];\n\t\t\t\t});\n\t\t}\n\n\t\tisLastOutbound(): boolean {\n\t\t\treturn this.currentMessageLog.log && this.currentMessageLog.log.length\n\t\t\t\t&& this.isOwnMessage(this.currentMessageLog.log[this.currentMessageLog.log.length - 1]);\n\t\t}\n\n\t\tgetMessages(): ng.IPromise<Message[]> {\n\t\t\tlet lastRetrieved = null;\n\n\t\t\tthis.loading = true;\n\t\t\tif (this.currentMessageLog.log.length > 0) {\n\t\t\t\tlastRetrieved = this.currentMessageLog.log[this.currentMessageLog.log.length - 1].timestamp;\n\t\t\t}\n\n\t\t\treturn this.ChatService\n\t\t\t\t.getMessages(this.currentChat.id, lastRetrieved)\n\t\t\t\t.then(messages => {\n\t\t\t\t\tthis.loading = false;\n\t\t\t\t\tif (messages && messages.length) {\n\t\t\t\t\t\tthis.currentMessageLog.log = this.currentMessageLog.log.concat(\n\t\t\t\t\t\t\tmessages.filter(m => this.currentMessageLog.log.findIndex(m2 => m2.id === m.id) === -1)\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tthis.retries = 0;\n\n\t\t\t\t\treturn messages;\n\t\t\t\t})\n\t\t\t\t.catch(() => {\n\t\t\t\t\tthis.retries++;\n\t\t\t\t\tif (this.retries <= this.MAX_RETRIES) {\n\t\t\t\t\t\tthis.$timeout(this.getMessages, this.RETRY_DELAY);\n\t\t\t\t\t\tthis.ToastService.show('Unable to retrieve messages. Retrying...')\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.retries = 0;\n\t\t\t\t\t\tthis.loading = false;\n\t\t\t\t\t\tthis.ToastService.show('Unable to retrieve messages.')\n\t\t\t\t\t}\n\n\t\t\t\t\treturn [];\n\t\t\t\t});\n\t\t};\n\n\t\tsearchUsers(user: ChatUser, index: number, users: ChatUser[]) {\n\t\t\tif (user.id === users[users.length - 1].id) {\n\t\t\t\tthis.searchRegExp = new RegExp(this.search, 'i');\n\t\t\t}\n\n\t\t\treturn !this.searchRegExp || this.searchRegExp.test(user.name);\n\t\t};\n\t}\n}\n","/// <reference path=\"../_references.ts\"/>\n\nmodule App.Customer {\n\timport ILocation = App.DispatchService.Location;\n\timport Customer = App.Customer.Customer;\n\timport CustomerService = App.Customer.CustomerService;\n\timport TitleBarService = App.Helpers.TitleBarService;\n\n\texport class CustomerCreateController {\n\t\tstatic $inject = ['$log', '$scope', 'Validations', 'States', 'DispatchService', 'CustomerService', 'TitleBarService', 'SelectedCustomer', '$state'];\n\n\t\tlocation: ILocation[];\n\t\thideLocations: boolean = false;\n\n\t\tconstructor(\n\t\t\tprivate $log: ng.ILogService,\n\t\t\tprivate $scope: ng.IScope,\n\t\t\tprivate validation: Validations.Validations,\n\t\t\tprivate states: App.Helpers.State[],\n\t\t\tprivate dispatchService: DispatchService.DispatchService,\n\t\t\tprivate customerService: CustomerService,\n\t\t\tprivate TitleBarService: TitleBarService,\n\t\t\tprivate SelectedCustomer: SelectedCustomer,\n\t\t\tpublic $state: ng.ui.IStateService,\n\t\t\tprivate model: Customer\n\t\t){\n\t\t\tTitleBarService.set('Home');\n\n\t\t\tthis.resetCustomer();\n\t\t\tthis.getLocations();\n\t\t}\n\n\t\tprivate resetCustomer(): void {\n\t\t\tthis.model = new Customer();\n\t\t\tthis.model.addBillingAddress();\n\t\t\tthis.model.phone_numbers.push(new PhoneNumber());\n\t\t\tthis.model.emails.push(new Email());\n\t\t}\n\n\t\tgetLocations(): void {\n\t\t\ttry {\n\t\t\t\tthis.dispatchService.getLocations().then((response) => {\n\t\t\t\t\tthis.location = response.data;\n\n\t\t\t\t\tif (this.location.length === 1) {\n\t\t\t\t\t\tthis.hideLocations = true;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t} catch(error) {\n\t\t\t\tthis.$log.log('customer-create.controller.js - response data null.')\n\t\t\t}\n\t\t}\n\n\t\tprivate completeModelRequirements(model: Customer): Customer {\n\t\t\tlet updatedModel: Customer = angular.copy(model);\n\n\t\t\tupdatedModel.billing_addresses = angular.copy(model.service_addresses);\n\t\t\tupdatedModel.service_addresses = angular.copy(model.service_addresses);\n\n\t\t\tupdatedModel.billing_addresses[0].street_two = null;\n\t\t\tupdatedModel.service_addresses[0].street_two = null;\n\n\t\t\tif (angular.isUndefined(model.company_name)) {\n\t\t\t\tupdatedModel.company_name = null;\n\t\t\t}\n\t\t\tupdatedModel.rate_type = updatedModel.company_name ? 2 : 1;\n\n\t\t\tif(this.location.length === 1) {\n\t\t\t\tupdatedModel.service_addresses[0].location = this.location[0];\n\t\t\t}\n\n\t\t\treturn updatedModel;\n\t\t}\n\n\t\tpublic submit(form: ng.IFormController) : void {\n\t\t\tif (form.$valid) {\n\t\t\t\tlet updatedModel = this.completeModelRequirements(this.model);\n\n\t\t\t\tthis.customerService.create(updatedModel).then((response) => {\n\t\t\t\t\tthis.resetCustomer();\n\t\t\t\t\tform.$setPristine();\n\t\t\t\t\tform.$setUntouched();\n\n\t\t\t\t\tthis.SelectedCustomer.set(response.data);\n\t\t\t\t\tthis.$state.go('zipSolutions.home.service-request');\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tform.$setSubmitted();\n\t\t\t}\n\t\t}\n\t}\n}\n","/// <reference path=\"../_references.ts\"/>\n\nmodule App.Customer {\n\timport TitleBarService = App.Helpers.TitleBarService;\n\timport AppRootScope = App.Administrative.AppRootScope;\n\n\texport class CustomerSearchController {\n\t\tstatic $inject = ['$rootScope', 'CustomerService', 'SelectedCustomer', 'TitleBarService', '$state'];\n\n\t\tisSearching: boolean;\n\t\tresults: Customer[];\n\t\tquery: string;\n\n\t\tconstructor(\n\t\t\tprivate $rootScope: AppRootScope,\n\t\t\tpublic CustomerService: CustomerService,\n\t\t\tpublic SelectedCustomer: SelectedCustomer,\n\t\t\tpublic TitleBarService: TitleBarService,\n\t\t\tpublic $state: ng.ui.IStateService\n\t\t) {\n\t\t\tTitleBarService.set('Home')\n\t\t}\n\n\t\taddCustomer():void {\n\t\t\tconst vm = this;\n\n\t\t\tvm.SelectedCustomer.clearSearchResults();\n\t\t\tvm.$state.go('zipSolutions.home.customer.create');\n\t\t}\n\n\t\tselectCustomer(customer: Customer) {\n\t\t\tconst vm = this;\n\n\t\t\tvm.SelectedCustomer.set(customer);\n\t\t\tvm.$state.go('zipSolutions.home.service-request');\n\t\t}\n\n\t\tsearch(query: string) : void {\n\t\t\tlet vm = this;\n\n\t\t\tvm.results = [];\n\t\t\tvm.isSearching = true;\n\t\t\tvm.$rootScope.app.stopAppLoading();\n\n\t\t\tif(query.length > 2) {\n\t\t\t\tthis.CustomerService.search(vm.SelectedCustomer.searchQuery).then((response) => {\n\t\t\t\t\tvm.SelectedCustomer.setSearchResultsCache(response.data);\n\t\t\t\t\tvm.isSearching = false;\n\t\t\t\t\tvm.$rootScope.app.stopAppLoading();\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n}\n","/// <reference path=\"../_references.ts\"/>\n\nmodule App.Customer {\n\timport TitleBarService = App.Helpers.TitleBarService;\n\timport ServiceRequest = App.Customer.ServiceRequest;\n\timport Appointment = App.Customer.Appointment;\n\timport Technician = App.Administrative.Inventory.Technician;\n\timport State = App.Helpers.State;\n\timport ServiceRequestType = App.Appointments.ServiceRequestType;\n\timport DispatchCode = App.Customer.DispatchCode;\n\timport LeadSource = App.Appointments.LeadSource;\n\timport PaymentType = App.Payment.PaymentType;\n\timport Salesman = App.Appointments.Salesman;\n\timport ToastService = App.Utils.ToastService;\n\timport Location = App.DispatchService.Location;\n\timport AppointmentService = App.Appointments.AppointmentService;\n\timport UserSession = App.User.UserSession;\n\timport OrganizationService = App.Utils.OrganizationService;\n\timport OrganizationSRDisplayData = App.Utils.OrganizationSRDisplayData;\n\n\texport class CustomerServiceRequestController {\n\t\tstatic $inject = ['$timeout', 'UserSession', 'AppointmentService', 'CustomerService', 'SelectedCustomer', 'TitleBarService', 'ToastService', 'DispatchService', 'Validations', 'States', '$state', 'OrganizationService'];\n\n\t\taddressFilter: string;\n\t\tappointment: Appointment;\n\t\tappointmentForm: ng.IFormController;\n\t\tcustomer: SelectedCustomer;\n\t\tdispatchCode: DispatchCode;\n\t\tisSearching: boolean;\n\t\tselectedLocation: Location;\n\t\torg: OrganizationSRDisplayData;\n\t\tlocations: Location[];\n\t\tnewAddress: Address;\n\t\tnewServiceAddressForm: ng.IFormController;\n\t\tresults: Customer[];\n\t\tselectedServiceRequestAddress: Address;\n\t\tshowNewAddressForm: boolean;\n\t\ttechnicians: Technician[];\n\t\tdispatchCodes: DispatchCode[];\n\t\tserviceRequest: ServiceRequest = new ServiceRequest();\n\t\tserviceRequestTypes: ServiceRequestType[];\n\t\tpaymentTypes: PaymentType[];\n\t\tleadSources: LeadSource[];\n\t\tsalesmen: Salesman[];\n\t\tquery: string;\n\t\ttoday: Date;\n\t\tsrDate: Date;\n\t\tsrTime: Date;\n\t\tshowMdl: boolean = false;\n\t\tisSaving: boolean = false;\n\t\thideLocations: boolean = false;\n\n\t\tconstructor(\n\t\t\tprotected $timeout: ng.ITimeoutService,\n\t\t\tpublic UserSession: UserSession,\n\t\t\tpublic AppointmentService: AppointmentService,\n\t\t\tpublic CustomerService: CustomerService,\n\t\t\tpublic SelectedCustomer: SelectedCustomer,\n\t\t\tpublic TitleBarService: TitleBarService,\n\t\t\tpublic ToastService: ToastService,\n\t\t\tprivate dispatchService: DispatchService.DispatchService,\n\t\t\tpublic validation: Validations.Validations,\n\t\t\tpublic states: State[],\n\t\t\tpublic $state: ng.ui.IStateService,\n\t\t\tprotected OrganizationService: OrganizationService\n\t\t) {\n\t\t\tconst vm = this;\n\n\t\t\tTitleBarService.set('Home');\n\n\t\t\tvm.SelectedCustomer.addCallback(vm.customerLoaded);\n\t\t\tvm.SelectedCustomer.loadFromStorage();\n\t\t\tvm.getTechnicians();\n\t\t\tvm.getLocations();\n\t\t\tvm.getDispatchCodes();\n\t\t\tvm.getServiceRequestTypes();\n\t\t\tvm.getPaymentTypes();\n\t\t\tvm.getLeadSources();\n\t\t\tvm.getSalesPersons();\n\t\t\tvm.setDateAndTime();\n\n\t\t\tOrganizationService.getSRDisplayDetails().then((org) => {\n\t\t\t\tvm.org = org.data;\n\t\t\t});\n\t\t}\n\n\t\tshowNewServiceAddressForm() {\n\t\t\tconst vm = this;\n\n\t\t\tvm.showNewAddressForm = true;\n\t\t\tthis.newAddress = new Address();\n\t\t}\n\n\t\thideNewServiceAddressForm() {\n\t\t\tconst vm = this;\n\n\t\t\tvm.showNewAddressForm = false;\n\t\t\tthis.newAddress = new Address();\n\t\t}\n\n\t\tsearchServiceAddresses () {\n\t\t\tthis.SelectedCustomer.loadServiceAddreses(this.addressFilter);\n\t\t}\n\n\t\tsaveNewAddress(address: Address) {\n\t\t\tconst vm = this;\n\n\t\t\taddress.location = vm.selectedLocation;\n\n\t\t\tif(vm.locations.length === 1) {\n\t\t\t\taddress.location = vm.locations[0];\n\t\t\t}\n\n\t\t\tvm.SelectedCustomer.addServiceAddress(address).then(() => {\n\t\t\t\tvm.hideNewServiceAddressForm();\n\t\t\t});\n\n\t\t}\n\n\t\tgoTo(sref: string) {\n\t\t\tthis.$state.go(sref);\n\t\t}\n\n\t\tgetTechnicians() {\n\t\t\tconst vm = this;\n\n\t\t\tvm.CustomerService.fetchTechnicians().then(\n\t\t\t\t(response) => {\n\t\t\t\t\tvm.technicians = response.data;\n\t\t\t\t}\n\t\t\t)\n\t\t}\n\n\t\tgetDispatchCodes() {\n\t\t\tconst vm = this;\n\n\t\t\tvm.CustomerService.fetchDispatchCodes().then(\n\t\t\t\t(response) => {\n\t\t\t\t\tvm.dispatchCodes = response.data;\n\t\t\t\t}\n\t\t\t)\n\t\t}\n\n\t\tgetServiceRequestTypes() {\n\t\t\tconst vm = this;\n\n\t\t\tvm.CustomerService.fetchServiceRequestTypes().then(\n\t\t\t\t(response) => {\n\t\t\t\t\tvm.serviceRequestTypes = response.data;\n\t\t\t\t}\n\t\t\t)\n\t\t}\n\n\t\tgetPaymentTypes() {\n\t\t\tconst vm = this;\n\n\t\t\tvm.CustomerService.fetchPaymentTypes().then(\n\t\t\t\t(response) => {\n\t\t\t\t\tvm.paymentTypes = response.data;\n\t\t\t\t}\n\t\t\t)\n\t\t}\n\n\t\tgetLeadSources() {\n\t\t\tconst vm = this;\n\n\t\t\tvm.CustomerService.fetchLeadSource().then(\n\t\t\t\t(response) => {\n\t\t\t\t\tvm.leadSources = response.data;\n\t\t\t\t\tvm.leadSources.push({\n\t\t\t\t\t\tid: -1,\n\t\t\t\t\t\tname: 'Lead Tracking',\n\t\t\t\t\t\tdescription: '',\n\t\t\t\t\t\tnumber: -1,\n\t\t\t\t\t\tstatus: true\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t)\n\t\t}\n\n\t\tgetSalesPersons() {\n\t\t\tconst vm = this;\n\n\t\t\tvm.CustomerService.fetchSalesmen().then(\n\t\t\t\t(response) => {\n\t\t\t\t\tvm.salesmen = response.data;\n\t\t\t\t}\n\t\t\t)\n\t\t}\n\n\t\tcreateServiceRequest(status: number) {\n\t\t\tconst vm = this;\n\t\t\tlet sr = new ServiceRequest();\n\n\t\t\tvm.isSaving = true;\n\t\t\tsr.after_hours = vm.serviceRequest.after_hours || false;\n\t\t\tsr.service_request_status = status > 1 ? 2 : 1;\n\t\t\tsr.create_appointment = status > 1 ? (status - 1) : null;\n\t\t\tsr.customer = vm.SelectedCustomer.id;\n\t\t\tsr.service_address = vm.selectedServiceRequestAddress.id;\n\t\t\tsr.technician = vm.appointment.technician;\n\t\t\tsr.description = vm.serviceRequest.description;\n\t\t\tsr.payment_type = vm.serviceRequest.payment_type;\n\t\t\tsr.service_request_type = vm.serviceRequest.service_request_type;\n\t\t\tsr.dispatch_code = vm.dispatchCode ? vm.dispatchCode.id : null;\n\t\t\tsr.lead_source = vm.serviceRequest.lead_source ? (vm.serviceRequest.lead_source.id !== -1 ? vm.serviceRequest.lead_source : null) : null;\n\t\t\tsr.department = vm.dispatchCode ? vm.dispatchCode.department.id : null;\n\t\t\tsr.promised_date = moment(vm.srDate).format('YYYY-MM-DD');\n\t\t\tsr.promised_time = moment(vm.srTime).format('HH:mm');\n\n\t\t\tvm.CustomerService.createServiceRequest(sr)\n\t\t\t\t.then((response) => {\n\t\t\t\t\tvm.ToastService.show('Request created!');\n\t\t\t\t\tvm.$state.go('zipSolutions.home.appointment');\n\t\t\t\t}).catch((err) => {\n\t\t\t\t\tvm.ToastService.showError('Error creating appointment: ', err);\n\t\t\t\t}).finally(() => vm.isSaving = false);\n\t\t}\n\n\t\tgetLocations(): void {\n\t\t\tconst vm = this;\n\t\t\tthis.dispatchService.getLocations().then(function(response) {\n\t\t\t\tvm.locations = response.data;\n\n\t\t\t\tif(vm.locations.length === 1) {\n\t\t\t\t\tvm.hideLocations = true;\n\t\t\t\t}\n\t\t\t});\n\n\t\t}\n\n\t\tcustomerLoaded():void {\n\t\t\tconst vm = this;\n\n\t\t\tvm.customer = vm.SelectedCustomer;\n\t\t}\n\n\t\tsetDateAndTime() {\n\t\t\tconst vm = this;\n\t\t\tlet m = moment();\n\n\t\t\tvm.srDate = new Date();\n\t\t\tvm.srTime = m.minute() || m.second() || m.millisecond() ? m.add(1, 'hour').startOf('hour').toDate() : m.startOf('hour').toDate();\n\t\t}\n\n\t\tclearSearchResults(): void {\n\t\t\tthis.results = [];\n\t\t\tthis.query = '';\n\t\t}\n\n\t\tsearch(query: string) : void {\n\t\t\tlet vm = this;\n\n\t\t\tvm.results = [];\n\t\t\tvm.isSearching = true;\n\n\t\t\tif(query.length > 2) {\n\t\t\t\tthis.CustomerService.search(query).then((response) => {\n\t\t\t\t\tvm.results = response.data;\n\t\t\t\t\tvm.isSearching = false;\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tselectAddress(address: Address): void {\n\t\t\tlet vm = this;\n\n\t\t\tvm.selectedServiceRequestAddress = address;\n\t\t\tvm.upgradeMdlInputs();\n\t\t\tvm.checkAfterHours();\n\t\t}\n\n\t\tupgradeMdlInputs():void  {\n\t\t\tconst vm = this;\n\t\t\tvm.showMdl = false;\n\t\t\tvm.$timeout(() => {\n\t\t\t\tvm.showMdl = true;\n\t\t\t\tvm.$timeout(() => {\n\t\t\t\t\tcomponentHandler.upgradeAllRegistered();\n\t\t\t\t})\n\t\t\t});\n\t\t}\n\n\t\tcheckAfterHours() {\n\t\t\tconst vm = this;\n\n\t\t\tvar apptTime,\n\t\t\t\tlocation = vm.SelectedCustomer.getServiceAddressLocation(vm.selectedServiceRequestAddress.id),\n\t\t\t\tstart,\n\t\t\t\tstop;\n\n\t\t\tif (location) {\n\t\t\t\tstart = moment(location.after_hours_start, 'HH:mm');\n\t\t\t\tstop = moment(location.after_hours_end, 'HH:mm').add(1, 'days');\n\t\t\t\tapptTime = moment({\n\t\t\t\t\thour: moment(vm.srTime).hour(),\n\t\t\t\t\tminute: moment(vm.srTime).minute()\n\t\t\t\t});\n\n\t\t\t\tvm.serviceRequest.after_hours = apptTime.isBetween(start, stop);\n\t\t\t}\n\n\t\t\tvm.upgradeMdlInputs();\n\t\t}\n\t}\n}\n","/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule App.Dashboard {\r\n\timport UserSession = App.User.UserSession;\r\n\timport User = App.User.User;\r\n\r\n\tinterface LocalScope extends ng.IScope {\r\n\t\tmenu: App.User.UserMenuController;\r\n\t}\r\n\r\n\texport class DashboardController {\r\n\t\tstatic $inject = ['DashboardService', 'UserSession', '$scope'];\r\n\r\n\t\tstats: TechStats;\r\n\t\tuser: User;\r\n\t\tselectedDateRange: Range;\r\n\r\n\t\tconversionRate: string;\r\n\t\tavgSoldMinutes: string;\r\n\t\tloading = true;\r\n\r\n\t\tinit: boolean = false;\r\n\r\n\t\tconstructor(\r\n\t\t\tprivate DashboardService: DashboardService,\r\n\t\t\tprivate UserSession: UserSession,\r\n\t\t\tprotected $scope: LocalScope\r\n\t\t) {\r\n\t\t\tif ($scope.menu.showDashboard) {\r\n\t\t\t\tthis.doInit();\r\n\t\t\t} else {\r\n\t\t\t\tconst watch = $scope.$watch(\r\n\t\t\t\t\t() => $scope.menu.showDashboard,\r\n\t\t\t\t\tv => {\r\n\t\t\t\t\t\tif (v) {\r\n\t\t\t\t\t\t\twatch();\r\n\t\t\t\t\t\t\tthis.doInit();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tdoInit(): void {\r\n\t\t\tif (this.init) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tthis.init = true;\r\n\r\n\t\t\tthis.selectedDateRange = this.dateRanges[3];\r\n\r\n\t\t\tthis.UserSession.getUser().then((user) => {\r\n\t\t\t\tthis.user = user;\r\n\t\t\t\tthis.updateDateRange();\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tupdateDateRange() {\r\n\t\t\tthis.loading = true;\r\n\t\t\tthis.DashboardService.getStats(this.user.technician.id, this.selectedDateRange.start, this.selectedDateRange.end).then((response) => {\r\n\t\t\t\tthis.stats = response.data;\r\n\r\n\t\t\t\tif (this.stats.serviceRequestCount != 0) {\r\n\t\t\t\t\tthis.conversionRate = (this.stats.hasSoldMinutesCount / this.stats.serviceRequestCount * 100).toFixed(1);\r\n\t\t\t\t\tthis.avgSoldMinutes = (this.stats.totalSoldMinutes / this.stats.serviceRequestCount).toFixed(1);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.conversionRate = '0';\r\n\t\t\t\t\tthis.avgSoldMinutes = '0';\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.loading = false;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\ttoday: Date = moment().add(1, 'day').toDate();\r\n\t\tdateRanges: Range[] = [\r\n\t\t\t{\r\n\t\t\t\tname: 'Today',\r\n\t\t\t\tstart: moment().toDate(),\r\n\t\t\t\tend: this.today\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tname: 'Yesterday',\r\n\t\t\t\tstart: moment().subtract(1, 'day').toDate(),\r\n\t\t\t\tend: moment().toDate()\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tname: 'Beginning Monday',\r\n\t\t\t\tstart: moment().startOf('isoWeek').toDate(),\r\n\t\t\t\tend: this.today\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tname: 'This Month',\r\n\t\t\t\tstart: moment().startOf('month').toDate(),\r\n\t\t\t\tend: this.today\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tname: 'Last Month',\r\n\t\t\t\tstart: moment().subtract(1, 'month').startOf('month').toDate(),\r\n\t\t\t\tend: moment().subtract(1, 'month').endOf('month').toDate()\r\n\t\t\t}\r\n\t\t];\r\n\t}\r\n}","/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule App.DispatchSummary {\r\n\timport Technician = App.Administrative.Inventory.Technician;\r\n\timport ToastService = App.Utils.ToastService;\r\n\r\n\tinterface LocalScope extends ng.IScope {\r\n\t\tmenu: App.User.UserMenuController;\r\n\t}\r\n\r\n\texport class DispatchSummaryController {\r\n\t\tstatic $inject: string[] = ['DispatchSummaryService', 'ToastService', '$q', '$scope', '$timeout'];\r\n\r\n\t\tshowMdl: boolean = false;\r\n\r\n\t\tloading: boolean = false;\r\n\t\tappointmentStatuses: Status[] = [];\r\n\t\ttechnicians: Technician[] = [];\r\n\t\tsrStatuses: Status[] = [];\r\n\t\tdepartments: Department[] = [];\r\n\t\tserviceRequests: ServiceRequest[] = [];\r\n\r\n\t\tearlyMorning: ServiceRequest[] = [];\r\n\t\tlateMorning: ServiceRequest[] = [];\r\n\t\tearlyAfternoon: ServiceRequest[] = [];\r\n\t\tlateAfternoon: ServiceRequest[] = [];\r\n\t\tafterHours: ServiceRequest[] = [];\r\n\r\n\t\tshowCompleted: boolean = false;\r\n\r\n\t\tdate: Date = moment().toDate();\r\n\t\tdayOfWeek: string = null;\r\n\r\n\t\tinit: boolean = false;\r\n\r\n\t\tconstructor(\r\n\t\t\tprivate DispatchSummaryService: DispatchSummaryService,\r\n\t\t\tprivate ToastService: ToastService,\r\n\t\t\tprivate $q: ng.IQService,\r\n\t\t\tprivate $scope: LocalScope,\r\n\t\t\tprivate $timeout: ng.ITimeoutService\r\n\t\t) {\r\n\t\t\tif ($scope.menu.showDispatchSummary) {\r\n\t\t\t\tthis.doInit();\r\n\t\t\t} else {\r\n\t\t\t\tconst watch = $scope.$watch(\r\n\t\t\t\t\t() => $scope.menu.showDispatchSummary,\r\n\t\t\t\t\tv => {\r\n\t\t\t\t\t\tif (v) {\r\n\t\t\t\t\t\t\twatch();\r\n\t\t\t\t\t\t\tthis.doInit();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tdoInit(): void {\r\n\t\t\tif (this.init) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tthis.init = true;\r\n\r\n\t\t\tthis.DispatchSummaryService.getAllAppointmentStatuses().then((response) => {\r\n\t\t\t\tthis.appointmentStatuses = response.data;\r\n\t\t\t});\r\n\t\t\tthis.DispatchSummaryService.getAllTechnicians().then((response) => {\r\n\t\t\t\tthis.technicians = response.data;\r\n\t\t\t});\r\n\t\t\tthis.DispatchSummaryService.getAllStatuses().then((response) => {\r\n\t\t\t\tthis.srStatuses = response.data;\r\n\t\t\t});\r\n\r\n\t\t\tthis.$scope.$watch(() => {\r\n\t\t\t\treturn this.date;\r\n\t\t\t}, (newVal, oldVal) => {\r\n\t\t\t\tif(this.formatDate(newVal) !== this.formatDate(oldVal) && newVal) {\r\n\t\t\t\t\tthis.dayOfWeek = moment(this.date).format('dddd');\r\n\t\t\t\t\tif(!this.loading) {\r\n\t\t\t\t\t\tthis.initializeData();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.initializeData();\r\n\t\t\tthis.dayOfWeek = moment(this.date).format('dddd');\r\n\t\t}\r\n\r\n\t\tpublic initializeData() {\r\n\t\t\tthis.loading = true;\r\n\r\n\t\t\tif(this.date === null) {\r\n\t\t\t\tthis.ToastService.showError('Invalid Date');\r\n\t\t\t\tthis.loading = false;\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tthis.clearData();\r\n\r\n\t\t\tthis.$q.all([this.DispatchSummaryService.getDispatchSummaryList(this.date), this.DispatchSummaryService.getAllDepartments()])\r\n\t\t\t\t.then((data) => {\r\n\t\t\t\t\tthis.serviceRequests = data[0].data;\r\n\t\t\t\t\tthis.departments = data[1].data;\r\n\t\t\t\t\tthis.setColors();\r\n\t\t\t\t\tthis.organizeTimeBlocks(this.serviceRequests);\r\n\t\t\t\t}).finally(() => {\r\n\t\t\t\t\tthis.loading = false;\r\n\t\t\t\t\tthis.upgradeMdlInputs();\r\n\t\t\t\t});\r\n\t\t}\r\n\r\n\t\tpublic organizeTimeBlocks(serviceRequests: ServiceRequest[]) {\r\n\t\t\tconst vm = this;\r\n\r\n\t\t\tangular.forEach(serviceRequests, function(sr) {\r\n\t\t\t\tvar time = null;\r\n\r\n\t\t\t\tvar apptsOnDate = sr.appointments.filter(function(appt: Appointment) {\r\n\t\t\t\t\tif(appt.appointment_status !== 'Cancelled Appointment' && appt.appointment_status !== 'Deleted Appointment') {\r\n\t\t\t\t\t\treturn appt.scheduled_date === vm.formatDate(vm.date);\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(sr.appointments.length === 0) {\r\n\t\t\t\t\ttime = moment(sr.promised_time, 'hh:mma');\r\n\t\t\t\t\tvm.insertSr(time, angular.copy(sr));\r\n\t\t\t\t} else {\r\n\t\t\t\t\tangular.forEach(apptsOnDate, function(appt) {\r\n\t\t\t\t\t\ttime = moment(appt.scheduled_time, 'HH:mm');\r\n\t\t\t\t\t\tvm.insertSr(time, angular.copy(sr), appt);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tpublic insertSr(time: moment.Moment, sr: ServiceRequest, currentAppt: Appointment = null) {\r\n\t\t\tconst vm = this;\r\n\t\t\tsr.timeOrdering = time.format('HH:mm');\r\n\t\t\tangular.forEach(vm.timeBlocks, function(block) {\r\n\t\t\t\tif(time.isSameOrAfter(block.start) && time.isSameOrBefore(block.end)) {\r\n\t\t\t\t\tif(currentAppt) {\r\n\t\t\t\t\t\tsr.apptId = currentAppt.id;\r\n\t\t\t\t\t\tsr.apptTime = time.format('ha').slice(0, -1);\r\n\t\t\t\t\t\tsr.apptStatus = currentAppt.appointment_status;\r\n\t\t\t\t\t\tsr.apptStatusIcon = vm.getIconName(sr.apptStatus);\r\n\t\t\t\t\t\tsr.chipTech = currentAppt.technician ? currentAppt.technician.full_name : 'None';\r\n\t\t\t\t\t\tsr.isChecked = currentAppt.appointment_status === 'Completed Appointment';\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tsr.chipTech = 'None';\r\n\t\t\t\t\t\tsr.isChecked = false;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tsr.customerName = sr.customer.company_name && sr.customer.company_name !== '' ?\r\n\t\t\t\t\t\tsr.customer.company_name : sr.customer.full_name;\r\n\t\t\t\t\tsr.chipTitle = sr.customerName + ' / ' + sr.chipTech + ' / ' + (sr.service_address ? sr.service_address.city : '');\r\n\r\n\t\t\t\t\tblock.getVar().push(sr);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tpublic getDepartmentAbbrev(department: Department) {\r\n\t\t\tif(department.abbreviation) {\r\n\t\t\t\treturn department.abbreviation;\r\n\t\t\t}\r\n\r\n\t\t\tvar arr = department.name.split(' ');\r\n\r\n\t\t\tif(arr.length === 1) {\r\n\t\t\t\treturn arr[0].substring(0, 2);\r\n\t\t\t} else if(arr.length >= 2) {\r\n\t\t\t\treturn arr[0].charAt(0) + arr[1].charAt(0);\r\n\t\t\t}\r\n\r\n\t\t\treturn '';\r\n\t\t};\r\n\r\n\t\tpublic setColors() {\r\n\t\t\tconst vm = this;\r\n\r\n\t\t\tvar colorList = ['#4EB6D5', '#5BB082', '#B21B00', '#BB6BD9', '#EE6240', '#C7C7C7', '#21ce99', '#5bbad5', '#2962ff', '#43a047'];\r\n\r\n\t\t\tfor(var i = 0; i < vm.departments.length; i++) {\r\n\t\t\t\tvm.departments[i].color = colorList[i % colorList.length];\r\n\t\t\t}\r\n\r\n\t\t\tangular.forEach(vm.serviceRequests, function(sr) {\r\n\t\t\t\tvar dept = vm.departments.find(function(dept: Department) {\r\n\t\t\t\t\tif(sr.department) {\r\n\t\t\t\t\t\treturn dept.id === sr.department.id;\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(dept) {\r\n\t\t\t\t\tsr.departmentColor = dept.color;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tpublic adjustDate(days: number) {\r\n\t\t\tthis.date = moment(this.date).add(days, 'days').toDate();\r\n\t\t};\r\n\r\n\t\tpublic formatDate(date: Date) {\r\n\t\t\treturn moment(date).format('YYYY-MM-DD');\r\n\t\t};\r\n\r\n\t\tpublic getIconName(status: string) {\r\n\t\t\tswitch(status) {\r\n\t\t\t\tcase 'Waiting Dispatch':\r\n\t\t\t\t\treturn 'ellipsis-h';\r\n\t\t\t\tcase 'Dispatched':\r\n\t\t\t\t\treturn 'th';\r\n\t\t\t\tcase 'Acknowledged':\r\n\t\t\t\t\treturn 'envelope-open';\r\n\t\t\t\tcase 'Arrived':\r\n\t\t\t\t\treturn 'share';\r\n\t\t\t\tcase 'Started':\r\n\t\t\t\t\treturn 'play';\r\n\t\t\t\tcase 'Paused':\r\n\t\t\t\t\treturn 'pause';\r\n\t\t\t\tcase 'Completed Appointment':\r\n\t\t\t\t\treturn 'check-square';\r\n\t\t\t\tdefault:\r\n\t\t\t\t\treturn '';\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tpublic clearData() {\r\n\t\t\tthis.serviceRequests = [];\r\n\t\t\tthis.earlyMorning = [];\r\n\t\t\tthis.lateMorning = [];\r\n\t\t\tthis.earlyAfternoon = [];\r\n\t\t\tthis.lateAfternoon = [];\r\n\t\t\tthis.afterHours = [];\r\n\t\t}\r\n\r\n\t\ttimeBlocks = [\r\n\t\t\t{\r\n\t\t\t\tname: 'earlyMorning',\r\n\t\t\t\tstart: moment('0:00', 'H:mm'),\r\n\t\t\t\tend: moment('10:00', 'H:mm'),\r\n\t\t\t\tgetVar: () => { return this.earlyMorning; }\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tname: 'lateMorning',\r\n\t\t\t\tstart: moment('10:01', 'H:mm'),\r\n\t\t\t\tend: moment('12:00', 'H:mm'),\r\n\t\t\t\tgetVar: () => { return this.lateMorning; }\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tname: 'earlyAfternoon',\r\n\t\t\t\tstart: moment('12:01', 'H:mm'),\r\n\t\t\t\tend: moment('14:00', 'H:mm'),\r\n\t\t\t\tgetVar: () => { return this.earlyAfternoon; }\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tname: 'lateAfternoon',\r\n\t\t\t\tstart: moment('14:01', 'H:mm'),\r\n\t\t\t\tend: moment('17:00', 'H:mm'),\r\n\t\t\t\tgetVar: () => { return this.lateAfternoon; }\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tname: 'afterHours',\r\n\t\t\t\tstart: moment('17:01', 'H:mm'),\r\n\t\t\t\tend: moment('24:00', 'H:mm'),\r\n\t\t\t\tgetVar: () => { return this.afterHours; }\r\n\t\t\t}\r\n\t\t];\r\n\r\n\t\tupgradeMdlInputs() {\r\n\t\t\tconst vm = this;\r\n\t\t\tvm.showMdl = false;\r\n\t\t\tthis.$timeout(() => {\r\n\t\t\t\tthis.showMdl = true;\r\n\t\t\t  \tthis.$timeout(() => {\r\n\t\t\t\t   componentHandler.upgradeAllRegistered();\r\n\t\t\t   })\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n}","/// <reference path=\"_references.ts\"/>\n\nmodule App.Forms {\n\timport ToastService = App.Utils.ToastService;\n\n\tabstract class FormDetailControllerBase {\n\t\tstatic $inject: string[] = [\n\t\t\t'Validations',\n\t\t\t'$q', '$state',\n\t\t\t'FormService', 'UploadService', 'OfficeService', 'PermissionService', 'SelectedAppointment', 'TitleBarService',\n\t\t\t'ToastService',\n\t\t];\n\n\t\tpublic isNew: boolean;\n\t\tpublic isLoading: boolean = true;\n\t\tpublic isSaving: boolean = false;\n\t\tpublic isItemForm: boolean;\n\t\tpublic instanceCount: number = 0;\n\t\tpublic instance: FormInstance;\n\t\tpublic service_request_id: number;\n\t\tpublic email: string;\n\t\tpublic phone: string;\n\t\tpublic isEmail: boolean = false;\n\n\t\tpublic files: {\n\t\t\t[eId: string]: File[]\n\t\t} = {};\n\n\t\tpublic htmlForm: ng.IFormController;\n\t\tpublic attemptedSubmit: boolean = false;\n\n\t\tpublic hasPermission: boolean = true;\n\n\t\tprotected abstract getInstance(): ng.IPromise<FormInstance>;\n\t\tprotected abstract saveInstance(data: any, email?: string, phone?: string): ng.IPromise<FormInstance>;\n\n\t\tconstructor(\n\t\t\tpublic Validations: Validations.Validations,\n\t\t\tprotected $q: ng.IQService,\n\t\t\tprotected $state: ng.ui.IStateService,\n\t\t\tprotected FormService: FormService,\n\t\t\tprotected UploadService: App.Helpers.UploadService,\n\t\t\tprotected OfficeService: App.Utils.OfficeService,\n\t\t\tprotected PermissionService: App.Helpers.PermissionService,\n\t\t\tprotected SelectedAppointment: App.Appointments.SelectedAppointment,\n\t\t\tprotected TitleBarService: App.Helpers.TitleBarService,\n\t\t\tprotected ToastService: ToastService,\n\t\t) {\n\t\t\tTitleBarService.set('Forms');\n\t\t\tthis.isItemForm = Boolean($state.params.item);\n\n\t\t\tthis.hasPermission = this.PermissionService.hasAnyPermission(['web.field.left-nav.service-request-forms', 'web.office.service-requests.service-request.tech-view']);\n\n\t\t\tlet countPromise = OfficeService.getAppointment()\n\t\t\t\t.then((resp) => resp.data)\n\t\t\t\t.catch(() => SelectedAppointment.getAppointment())\n\t\t\t\t.then((appt) => {\n\t\t\t\t\tthis.service_request_id = appt.service_request.id;\n\t\t\t\t\tthis.email = appt.service_request.customer.emails.length\n\t\t\t\t\t\t? appt.service_request.customer.emails[0].email\n\t\t\t\t\t\t: '';\n\t\t\t\t\tthis.phone = appt.service_request.customer.phone_numbers.length\n\t\t\t\t\t\t? appt.service_request.customer.phone_numbers[0].number\n\t\t\t\t\t\t: '';\n\n\t\t\t\t\tif (this.isItemForm) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this.FormService.getInstances(\n\t\t\t\t\t\tthis.service_request_id,\n\t\t\t\t\t\t{ size: 0 }\n\t\t\t\t\t);\n\t\t\t\t});\n\n\t\t\tthis.$q\n\t\t\t\t.all({\n\t\t\t\t\tcount: countPromise,\n\t\t\t\t\tinstance: this.getInstance()\n\t\t\t\t})\n\t\t\t\t.then((data) => {\n\t\t\t\t\tthis.instanceCount = this.isItemForm\n\t\t\t\t\t\t? 0\n\t\t\t\t\t\t: Number(data.count.headers().count);\n\n\t\t\t\t\tthis.instance = data.instance;\n\t\t\t\t\tthis.isLoading = false;\n\t\t\t\t})\n\t\t\t\t.catch((err) => {\n\t\t\t\t\tthis.ToastService.showError('Error loading form: ', err);\n\t\t\t\t\tthis.goHome();\n\t\t\t\t})\n\t\t}\n\n\t\tpublic getBackSref(): string {\n\t\t\treturn this.isItemForm\n\t\t\t\t? 'zipSolutions.maintenance.details({itemId:' + this.$state.params.item + '})'\n\t\t\t\t: '^'\n\t\t}\n\n\t\tpublic goBack(): void {\n\t\t\tif (this.isItemForm) {\n\t\t\t\tthis.$state.go('zipSolutions.maintenance.details', { itemId: this.$state.params.item });\n\t\t\t} else {\n\t\t\t\tthis.$state.go('^');\n\t\t\t}\n\t\t}\n\n\t\tpublic goHome(): void {\n\t\t\tif (this.isItemForm) {\n\t\t\t\tthis.goBack();\n\t\t\t} else {\n\t\t\t\tthis.$state.go('home');\n\t\t\t}\n\t\t}\n\n\t\tpublic canGoBack(): boolean {\n\t\t\treturn this.isItemForm || (this.instanceCount > 0);\n\t\t}\n\n\t\tpublic clearCustomerSignature(): void {\n\t\t\tthis.instance.customer_signature = '';\n\t\t\tthis.htmlForm.customer_signature.$setTouched();\n\t\t}\n\n\t\tpublic clearTechSignature(): void {\n\t\t\tthis.instance.tech_signature = '';\n\t\t\tthis.htmlForm.tech_signature.$setTouched();\n\t\t}\n\n\t\tpublic showCustomerSignature(): boolean {\n\t\t\treturn SignatureType[this.instance.version.customer_signature] !== SignatureType.NONE;\n\t\t}\n\n\t\tpublic showTechSignature(): boolean {\n\t\t\treturn SignatureType[this.instance.version.tech_signature] !== SignatureType.NONE;\n\t\t}\n\n\t\tpublic isCustomerSignatureRequired(): boolean {\n\t\t\treturn SignatureType[this.instance.version.customer_signature] === SignatureType.REQUIRED && this.instance.version.read_only;\n\t\t}\n\n\t\tpublic isTechSignatureRequired(): boolean {\n\t\t\treturn SignatureType[this.instance.version.tech_signature] === SignatureType.REQUIRED;\n\t\t}\n\n\t\tpublic isFormDisabled(form: ng.IFormController): boolean {\n\t\t\treturn this.isSaving;\n\t\t}\n\n\t\tpublic upgrade(): void {\n\t\t\tcomponentHandler.upgradeAllRegistered();\n\t\t}\n\n\t\tpublic formSubmit(form: ng.IFormController, email?: string): void {\n\t\t\tthis.attemptedSubmit = true;\n\n\t\t\tif (this.isFormDisabled(form)\n\t\t\t\t|| Boolean(form && form.$invalid)\n\t\t\t\t|| (this.isEmail && email && !this.Validations.email.pattern.test(email))\n\t\t\t\t|| (!this.isEmail && email && !this.Validations.phone.pattern.test(email))\n\t\t\t) {\n\t\t\t\tthis.ToastService.show('Please fix the errors noted above', ToastService.ERROR_SELECTOR);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.isSaving = true;\n\n\t\t\tlet data: any = angular.copy(this.instance);\n\t\t\tdata.version = data.version.id;\n\n\t\t\tthis.saveInstance(data, this.isEmail ? email : null, this.isEmail ? null : email)\n\t\t\t\t.then((instance) => {\n\t\t\t\t\tthis.uploadImages(instance.id);\n\t\t\t\t\tthis.goBack();\n\t\t\t\t\tthis.instance = instance;\n\t\t\t\t\tcomponentHandler.upgradeAllRegistered();\n\t\t\t\t})\n\t\t\t\t.catch((err) => this.ToastService.showError('Failed to save form: ', err))\n\t\t\t\t.finally(() => this.isSaving = false);\n\t\t}\n\n\t\tpublic getAnswerIndex(id: number): number {\n\t\t\tlet index = this.instance.answers.findIndex((a) => a.element === id);\n\n\t\t\tif (index === -1) {\n\t\t\t\tthis.instance.answers.push({\n\t\t\t\t\tid: null,\n\t\t\t\t\telement: id,\n\t\t\t\t\tanswer: '',\n\t\t\t\t\timages: []\n\t\t\t\t});\n\t\t\t\tindex = this.instance.answers.length - 1;\n\t\t\t}\n\n\t\t\treturn index;\n\t\t}\n\n\t\tpublic getFileFor(type: keyof typeof FormElementType): string|null {\n\t\t\tswitch (FormElementType[type]) {\n\t\t\t\tcase FormElementType.Checkbox:\n\t\t\t\t\treturn 'html/forms/inputs/checkbox.tpl.f5463b7d.html';\n\n\t\t\t\tcase FormElementType.Number:\n\t\t\t\tcase FormElementType.Text:\n\t\t\t\t\treturn 'html/forms/inputs/input.tpl.c1b35d02.html';\n\n\t\t\t\tcase FormElementType.Header:\n\t\t\t\t\treturn 'html/forms/inputs/header.tpl.8a472f27.html';\n\n\t\t\t\tcase FormElementType.StaticText:\n\t\t\t\t\treturn 'html/forms/inputs/static-text.tpl.2b3f35aa.html';\n\n\t\t\t\tcase FormElementType.Dropdown:\n\t\t\t\t\treturn 'html/forms/inputs/select.tpl.28b63846.html';\n\n\t\t\t\tcase FormElementType.MultiSelect:\n\t\t\t\t\treturn 'html/forms/inputs/multi-select.tpl.5ce02973.html';\n\n\t\t\t\tcase FormElementType.TextArea:\n\t\t\t\t\treturn 'html/forms/inputs/textarea.tpl.061337f8.html';\n\n\t\t\t\tcase FormElementType.CheckList:\n\t\t\t\t\treturn 'html/forms/inputs/checklist.tpl.00544086.html';\n\n\t\t\t\tcase FormElementType.PassFail:\n\t\t\t\t\treturn 'html/forms/inputs/passfail.tpl.adc2b452.html';\n\n\t\t\t\tdefault:\n\t\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\n\t\tpublic isElement(prop: '$touched'|'$error', element: FormElement): boolean|object {\n\t\t\tswitch (FormElementType[element.type]) {\n\t\t\t\tcase FormElementType.CheckList:\n\t\t\t\t\tlet isMulti = element.columns.length > 1;\n\n\t\t\t\t\tswitch (prop) {\n\t\t\t\t\t\tcase '$touched':\n\t\t\t\t\t\t\tlet touched = isMulti;\n\n\t\t\t\t\t\t\tfor (let i = element.options.length - 1; i >= 0; --i) {\n\t\t\t\t\t\t\t\tlet item = this.htmlForm[element.id + '_' + i];\n\t\t\t\t\t\t\t\tif (item) {\n\t\t\t\t\t\t\t\t\tif (isMulti) {\n\t\t\t\t\t\t\t\t\t\ttouched = touched && item.$touched;\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tif (item.$touched) {\n\t\t\t\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn touched;\n\t\t\t\t\t\tcase '$error':\n\t\t\t\t\t\t\tlet error = {};\n\n\t\t\t\t\t\t\tfor (let i = element.options.length - 1; i >= 0; --i) {\n\t\t\t\t\t\t\t\tlet item = this.htmlForm[element.id + '_' + i];\n\t\t\t\t\t\t\t\tif (item) {\n\t\t\t\t\t\t\t\t\tif (Object.keys(item.$error).length) {\n\t\t\t\t\t\t\t\t\t\treturn item.$error;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn error;\n\t\t\t\t\t}\n\t\t\t\tdefault:\n\t\t\t\t\treturn this.htmlForm[element.id] && this.htmlForm[element.id][prop];\n\t\t\t}\n\t\t}\n\n\t\tpublic showErrors(element: FormElement): object {\n\t\t\tif (this.attemptedSubmit || this.htmlForm.$submitted || this.isElement('$touched', element)) {\n\t\t\t\treturn <object>this.isElement('$error', element);\n\t\t\t}\n\n\t\t\treturn {};\n\t\t}\n\n\t\tpublic isHelpAbove(element: FormElement): boolean {\n\t\t\tswitch (FormElementType[element.type]) {\n\t\t\t\tcase FormElementType.CheckList:\n\t\t\t\tcase FormElementType.PassFail:\n\t\t\t\t\treturn true;\n\t\t\t\tdefault:\n\t\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tpublic setChecklistAnswer(element: FormElement, idx: number, value: any): void {\n\t\t\tlet answerIdx = this.getAnswerIndex(element.id);\n\n\t\t\tthis.instance.answers[answerIdx].selected[idx] =\n\t\t\t\tthis.instance.answers[answerIdx].selected[idx] == value\n\t\t\t\t\t? null\n\t\t\t\t\t: value;\n\n\t\t\tif (element.columns.length <= 1) {\n\t\t\t\tfor (let i = element.options.length - 1; i >= 0; --i) {\n\t\t\t\t\tthis.htmlForm[element.id + '_' + i].$setTouched();\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis.htmlForm[element.id + '_' + idx].$setTouched();\n\t\t\t}\n\t\t}\n\n\t\tpublic isRequired(element: FormElement): boolean {\n\t\t\tif ((this.instance.version.read_only || element.read_only) && element.required) {\n\t\t\t\tswitch (FormElementType[element.type]) {\n\t\t\t\t\tcase FormElementType.CheckList:\n\t\t\t\t\t\tif (!element.required) {\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (element.columns.length <= 1) {\n\t\t\t\t\t\t\tlet answers = this.instance.answers[this.getAnswerIndex(element.id)].selected || [];\n\t\t\t\t\t\t\tfor (let i = element.options.length - 1; i >= 0; --i) {\n\t\t\t\t\t\t\t\tif (angular.isDefined(answers[i]) && answers[i] !== null) {\n\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn element.required;\n\t\t\t\t\t\t}\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\treturn element.required;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn false;\n\t\t}\n\n\t\tpublic getTypeForInput(element: FormElement): string {\n\t\t\tswitch (FormElementType[element.type]) {\n\t\t\t\tcase FormElementType.Number:\n\t\t\t\t\treturn 'number';\n\t\t\t\tcase FormElementType.Text:\n\t\t\t\t\treturn 'text';\n\t\t\t\tdefault:\n\t\t\t\t\treturn '';\n\t\t\t}\n\t\t}\n\n\t\tpublic getShowLabel(element: FormElement): boolean {\n\t\t\tswitch (FormElementType[element.type]) {\n\t\t\t\tcase FormElementType.StaticText:\n\t\t\t\t\treturn element.show_name;\n\t\t\t\tcase FormElementType.Checkbox:\n\t\t\t\tcase FormElementType.Dropdown:\n\t\t\t\tcase FormElementType.MultiSelect:\n\t\t\t\tcase FormElementType.Number:\n\t\t\t\tcase FormElementType.Text:\n\t\t\t\tcase FormElementType.TextArea:\n\t\t\t\tcase FormElementType.CheckList:\n\t\t\t\tcase FormElementType.PassFail:\n\t\t\t\t\treturn true;\n\t\t\t\tdefault:\n\t\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tpublic getShowNote(element: FormElement): boolean {\n\t\t\tswitch (FormElementType[element.type]) {\n\t\t\t\tcase FormElementType.PassFail:\n\t\t\t\t\treturn true;\n\t\t\t\tdefault:\n\t\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tpublic getShowImageUpload(element: FormElement): boolean {\n\t\t\tswitch (FormElementType[element.type]) {\n\t\t\t\tcase FormElementType.PassFail:\n\t\t\t\t\treturn true;\n\t\t\t\tdefault:\n\t\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tpublic getClassesForType(element: FormElement): string {\n\t\t\tswitch (FormElementType[element.type]) {\n\t\t\t\tcase FormElementType.Number:\n\t\t\t\tcase FormElementType.Text:\n\t\t\t\tcase FormElementType.TextArea:\n\t\t\t\tcase FormElementType.Checkbox:\n\t\t\t\tcase FormElementType.Dropdown:\n\t\t\t\tcase FormElementType.MultiSelect:\n\t\t\t\tcase FormElementType.PassFail:\n\t\t\t\t\treturn 'left-indent';\n\t\t\t\tcase FormElementType.StaticText:\n\t\t\t\tcase FormElementType.Header:\n\t\t\t\tdefault:\n\t\t\t\t\treturn '';\n\t\t\t}\n\t\t}\n\n\t\tpublic getClassesForInput(element: FormElement): string {\n\t\t\tswitch (FormElementType[element.type]) {\n\t\t\t\tcase FormElementType.StaticText:\n\t\t\t\t\treturn 'mdl-typography--title';\n\t\t\t\tcase FormElementType.Header:\n\t\t\t\t\treturn 'mdl-typography--headline';\n\t\t\t\tcase FormElementType.Number:\n\t\t\t\tcase FormElementType.Text:\n\t\t\t\tcase FormElementType.TextArea:\n\t\t\t\t\treturn 'mdl-textfield__input';\n\t\t\t\tcase FormElementType.Checkbox:\n\t\t\t\tcase FormElementType.Dropdown:\n\t\t\t\tcase FormElementType.MultiSelect:\n\t\t\t\tcase FormElementType.PassFail:\n\t\t\t\tdefault:\n\t\t\t\t\treturn '';\n\t\t\t}\n\t\t}\n\n\t\tpublic submitImage(elementId: number, file: File) {\n\t\t\tif (file !== null) {\n\t\t\t\tif (angular.isUndefined(this.files[elementId])) {\n\t\t\t\t\tthis.files[elementId] = [];\n\t\t\t\t}\n\n\t\t\t\tthis.files[elementId].push(file);\n\t\t\t}\n\t\t};\n\n\t\tpublic uploadImages(iId: number) {\n\t\t\tObject.keys(this.files).forEach((eId) => {\n\t\t\t\tObject.keys(this.files[eId]).forEach((index: any) => {\n\t\t\t\t\tthis.UploadService.upload('forminstance/' + iId + '/element/' + eId + '/image', this.files[eId][index]);\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\tpublic deleteUnsavedImage($index: number, eId: number) {\n\t\t\tthis.files[eId].splice($index, 1);\n\t\t};\n\n\t\tpublic setImg(elementId: number) {\n\t\t\tangular.element(document.querySelector('#image-upload' + elementId)).triggerHandler('click');\n\t\t};\n\t}\n\n\texport class FormCreateController extends FormDetailControllerBase {\n\t\tpublic isNew: boolean = true;\n\t\tpublic isLoadingType: number = 0;\n\t\tpublic types: FormList[] = [];\n\n\t\tprotected loadedForms: {[id: number]: Form} = {};\n\n\t\tprotected getInstance(): ng.IPromise<FormInstance> {\n\t\t\tlet params: any = {};\n\n\t\t\tif (this.isItemForm) {\n\t\t\t\tparams.item_form = 1;\n\t\t\t\tparams.for_item = this.$state.params.item;\n\t\t\t} else {\n\t\t\t\tparams.sr_form = 1;\n\t\t\t}\n\n\t\t\treturn this.FormService.getForms(params)\n\t\t\t\t.then((response) => {\n\t\t\t\t\tthis.types = response.data;\n\t\t\t\t\treturn this.$q.when(<FormInstance>{});\n\t\t\t\t});\n\t\t}\n\n\t\tprotected saveInstance(data: any, email?: string, phone?: string): ng.IPromise<FormInstance> {\n\t\t\tdata.service_request = this.service_request_id;\n\t\t\tif (this.isItemForm) {\n\t\t\t\tdata.serviceable_item = this.$state.params.item;\n\t\t\t}\n\n\t\t\treturn this.FormService\n\t\t\t\t.createInstance(\n\t\t\t\t\tthis.instance.version.id,\n\t\t\t\t\tthis.isItemForm ? 'serviceableitem' : 'servicerequest',\n\t\t\t\t\tdata, {\n\t\t\t\t\t\temail: email,\n\t\t\t\t\t\tphone: phone\n\t\t\t\t\t})\n\t\t\t\t.then((resp) => resp.data);\n\t\t}\n\n\t\tprivate setType(type: Form): void {\n\t\t\tthis.instance.version = type;\n\t\t\tthis.instance.answers = [];\n\t\t}\n\n\t\tpublic selectType(type: FormList): void {\n\t\t\tif (this.isLoadingType) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (this.loadedForms[type.id]) {\n\t\t\t\tthis.setType(this.loadedForms[type.id]);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.isLoadingType = type.id;\n\t\t\tthis.FormService.getForm(type.id)\n\t\t\t\t.then((response) => this.setType(response.data))\n\t\t\t\t.catch((err) => this.ToastService.showError('Error selecting form: ', err))\n\t\t\t\t.finally(() => this.isLoadingType = 0);\n\t\t}\n\t}\n\n\texport class FormEditController extends FormDetailControllerBase {\n\t\tpublic isNew: boolean = false;\n\n\t\tprotected getInstance(): ng.IPromise<FormInstance> {\n\t\t\treturn this.FormService.getInstance(this.$state.params.id).then((resp) => resp.data);\n\t\t}\n\n\t\tprotected saveInstance(data: any, email?: string, phone?: string): ng.IPromise<FormInstance> {\n\t\t\treturn this.FormService\n\t\t\t\t.updateInstance(this.instance.id, data, { email: email, phone: phone })\n\t\t\t\t.then((resp) => resp.data);\n\t\t}\n\n\t\tpublic deleteImage($index: number, images: FormAnswerImage[], image: FormAnswerImage) {\n\t\t\tthis.FormService.deleteFormAnswerImage(this.instance.id, image.id).then(() => {\n\t\t\t\timages.splice($index, 1);\n\t\t\t});\n\t\t};\n\t}\n}\n","/// <reference path=\"_references.ts\"/>\n\nmodule App.Forms {\n\timport Appointment = App.Appointments.Appointment;\n\n\texport class FormListController {\n\t\tstatic $inject: string[] = [\n\t\t\t'$scope', '$state', 'ToastService', 'OfficeService', 'SelectedAppointment', 'TitleBarService', 'FormService'\n\t\t];\n\n\t\tpublic isLoading: boolean = true;\n\n\t\tprotected appointment: Appointment;\n\t\tpublic instances: FormInstanceList[] = [];\n\n\t\tconstructor(\n\t\t\tprotected $scope: ng.IScope,\n\t\t\tprotected $state: ng.ui.IStateService,\n\t\t\tprotected ToastService: App.Utils.ToastService,\n\t\t\tprotected OfficeService: App.Utils.OfficeService,\n\t\t\tprotected SelectedAppointment: App.Appointments.SelectedAppointment,\n\t\t\tprotected TitleBarService: App.Helpers.TitleBarService,\n\t\t\tprotected FormService: FormService\n\t\t) {\n\t\t\tTitleBarService.set('Forms');\n\n\t\t\tOfficeService.getAppointment()\n\t\t\t\t.then((resp) => resp.data)\n\t\t\t\t.catch(() => SelectedAppointment.getAppointment())\n\t\t\t\t.then((appt) => {\n\t\t\t\t\tif (!appt) {\n\t\t\t\t\t\tthrow '';\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.appointment = appt;\n\n\t\t\t\t\treturn this.FormService.getInstances(appt.service_request.id);\n\t\t\t\t})\n\t\t\t\t.then((response) => {\n\t\t\t\t\tthis.instances = response.data;\n\t\t\t\t\tif (!this.instances || this.instances.length < 1) {\n\t\t\t\t\t\tthis.$state.go('.create');\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.isLoading = false;\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.catch((err) => {\n\t\t\t\t\tthis.ToastService.showError('Error loading forms: ', err);\n\t\t\t\t\tthis.$state.go('home');\n\t\t\t\t});\n\t\t}\n\t}\n}\n","/// <reference path=\"../_references.ts\"/>\n\nmodule App.History {\n\timport TitleBarService = App.Helpers.TitleBarService;\n\timport OfficeService = App.Utils.OfficeService;\n\n\texport class HistoryController {\n\n\t\tstatic $inject: string[] = ['$rootScope', '$scope', '$state' ,'TitleBarService', '$q', 'OfficeService', '$window', '$stateParams'];\n\n\t\tfromOffice: boolean = false;\n\t\tappt: Appointments.Appointment = null;\n\n\t\tconstructor(\n\t\t\tprivate $rootScope: App.Administrative.AppRootScope,\n\t\t\tprivate $scope: ng.IScope,\n\t\t\tprivate $state: ng.ui.IStateService,\n\t\t\tprivate TitleBarService: TitleBarService,\n\t\t\tprivate $q: ng.IQService,\n\t\t\tprivate OfficeService: OfficeService,\n\t\t\tprivate $window: ng.IWindowService,\n\t\t\tprivate $stateParams: ng.ui.IStateParamsService\n\t\t) {\n\t\t\t$rootScope.app.startAppLoading();\n\n\t\t\tTitleBarService.set('History');\n\n\t\t\tOfficeService.getAppointment().then((r) => {\n\t\t\t\tthis.fromOffice = true;\n\t\t\t\tthis.appt = r.data;\n\t\t\t}).finally(() => {\n\t\t\t\t$rootScope.app.stopAppLoading();\n\t\t\t});\n\t\t}\n\n\t\thistoryItems: HistoryItem[] = [\n\t\t\t{\n\t\t\t\tdisplayName: 'Service Request History',\n\t\t\t\tsref: 'zipSolutions.history.servicerequest',\n\t\t\t\tsrefAddress: 'zipSolutions.history.address.servicerequests',\n\t\t\t\tsrefSR: 'zipSolutions.history.servicerequest',\n\t\t\t\tpermission: 'web.field.history',\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'Recommendations',\n\t\t\t\tsref: 'zipSolutions.history.recommendations',\n\t\t\t\tsrefAddress: 'zipSolutions.history.address.recommendations',\n\t\t\t\tsrefSR: 'zipSolutions.history.recommendations',\n\t\t\t\tpermission: 'web.field.history',\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'Files',\n\t\t\t\tsref: 'zipSolutions.history.photos',\n\t\t\t\tsrefAddress: 'zipSolutions.history.address.photos',\n\t\t\t\tsrefSR: 'zipSolutions.history.photos',\n\t\t\t\tpermission: 'web.field.history',\n\t\t\t}\n\t\t];\n\n\t\tgetSref(item: HistoryItem) {\n\t\t\tif (this.appt) {\n\t\t\t\tconst params = angular.copy(this.$state.params);\n\t\t\t\tparams.id = this.appt.service_request.id;\n\t\t\t\tparams.showBack = true;\n\t\t\t\treturn item.srefSR + `(${ JSON.stringify(params) })`;\n\t\t\t}\n\n\t\t\treturn this.$state.params.addressId\n\t\t\t\t? item.srefAddress\n\t\t\t\t: item.sref;\n\t\t}\n\n\t\tgoBack() {\n\t\t\tif (!this.fromOffice) {\n\t\t\t\tthis.$window.history.back();\n\t\t\t} else {\n\t\t\t\tthis.$state.go(this.$state.current, this.$stateParams, { reload: true });\n\t\t\t}\n\t\t}\n\t}\n}","/// <reference path='../_references.ts'/>\n\nmodule App.HeaderMessages {\n\tinterface Config {\n\t\tlastUpdate?: number;\n\t\tuid?: number;\n\t\tactiveMessages?: GlobalMessage[];\n\t}\n\tinterface LocalStorage extends ng.local.storage.ILocalStorageService {\n\t\theaderMessagesConfig?: Config;\n\t\tuserData?: {id: number};\n\t}\n\n\tconst INTERVAL: number = 600000; // 10 Minutes\n\n\texport class HeaderMessagesController {\n\t\tstatic $inject: string[] = ['$interval', '$localStorage', 'HeaderMessagesService', 'ToastService'];\n\n\t\tprivate isSaving: number = 0;\n\t\tprivate toSave: number[] = [];\n\n\t\tconstructor(\n\t\t\tprotected $interval: ng.IIntervalService,\n\t\t\tprotected $localStorage: LocalStorage,\n\t\t\tprotected HeaderMessagesService: HeaderMessagesService,\n\t\t\tprotected ToastService: App.Utils.ToastService\n\t\t) {\n\t\t\tthis.$interval(this.update.bind(this), INTERVAL);\n\t\t\tthis.update();\n\t\t}\n\n\t\tpublic isDisabled(messageId: number): boolean {\n\t\t\treturn this.isSaving === messageId || this.toSave.indexOf(messageId) !== -1;\n\t\t}\n\n\t\tpublic isOpen(): boolean {\n\t\t\treturn this.getActiveMessages().length > 0;\n\t\t}\n\n\t\tpublic getActiveMessages(): GlobalMessage[] {\n\t\t\treturn (this.$localStorage.headerMessagesConfig || {}).activeMessages || [];\n\t\t}\n\n\t\tpublic update(): void {\n\t\t\tlet config: Config = this.$localStorage.headerMessagesConfig || {},\n\t\t\t\tlastUpdate: number = config.lastUpdate,\n\t\t\t\tcUId: number = (this.$localStorage.userData || {id: null}).id,\n\t\t\t\ttUId = config.uid;\n\n\t\t\tif (!lastUpdate || !tUId || cUId !== tUId || ((new Date()).getTime() - lastUpdate) > (INTERVAL * 0.9)) {\n\t\t\t\tthis.HeaderMessagesService.getActiveMessages()\n\t\t\t\t\t.then((response) => {\n\t\t\t\t\t\tlet activeMessages = response.data;\n\n\t\t\t\t\t\tconfig.lastUpdate = (new Date()).getTime();\n\t\t\t\t\t\tconfig.activeMessages = activeMessages;\n\t\t\t\t\t\tconfig.uid = (this.$localStorage.userData || {id: null}).id;\n\n\t\t\t\t\t\tthis.$localStorage.headerMessagesConfig = config;\n\t\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tpublic markRead(messageId: number, force?: boolean) {\n\t\t\tif (!force && this.isSaving) {\n\t\t\t\tthis.toSave.push(messageId);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.isSaving = messageId;\n\n\t\t\tthis.HeaderMessagesService.markRead(messageId)\n\t\t\t\t.then(() => {\n\t\t\t\t\tlet config: Config = this.$localStorage.headerMessagesConfig || {};\n\n\t\t\t\t\tconfig.activeMessages = config.activeMessages.filter((message) => {\n\t\t\t\t\t\treturn message.id !== messageId;\n\t\t\t\t\t});\n\n\t\t\t\t\tthis.$localStorage.headerMessagesConfig = config;\n\n\t\t\t\t\tthis.toSave = this.toSave.filter((id, index) => id !== messageId && this.toSave.indexOf(id) === index);\n\n\t\t\t\t\tif (this.toSave.length) {\n\t\t\t\t\t\tthis.markRead(this.toSave.pop(), true);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.isSaving = 0;\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.catch((err) => {\n\t\t\t\t\tthis.ToastService.showError('Failed to mark message as read: ', err);\n\t\t\t\t\tthis.isSaving = 0;\n\t\t\t\t\tthis.toSave = [];\n\t\t\t\t})\n\t\t}\n\t}\n}\n","/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule App.ItemManagement {\r\n\timport TitleBarService = App.Helpers.TitleBarService;\r\n\timport Appointment = App.Appointments.Appointment;\r\n\timport SelectedAppointment = App.Appointments.SelectedAppointment;\r\n\timport ServicePlan = App.Appointments.ServicePlan;\r\n\timport ToastService = App.Utils.ToastService;\r\n\timport OfficeService = App.Utils.OfficeService;\r\n\r\n\texport class ItemManagementController {\r\n\r\n\t\tappointment: Appointment = null;\r\n\t\tservicePlan: ServicePlan = null;\r\n\r\n\t\ttypeList: ServiceableItemType[] = null;\r\n\t\tshowAddItem: boolean = false;\r\n\t\tisSaving: boolean = false;\r\n\t\tselectedItemType: ServiceableItemType = null;\r\n\r\n\t\tserviceableItemList: ServiceableItem[] = null;\r\n\r\n\t\tstatic $inject: string[] = ['$scope', '$state' ,'TitleBarService', 'ItemManagementService', 'SelectedAppointment', 'ModalService', 'ToastService', 'OfficeService'];\r\n\r\n\t\tconstructor(\r\n\t\t\tprivate $scope: ng.IScope,\r\n\t\t\tprivate $state: ng.ui.IStateService,\r\n\t\t\tprivate TitleBarService: TitleBarService,\r\n\t\t\tprivate ItemManagementService: ItemManagementService,\r\n\t\t\tprivate SelectedAppointment: SelectedAppointment,\r\n\t\t\tprivate ModalService: any,\r\n\t\t\tprivate ToastService: ToastService,\r\n\t\t\tprivate OfficeService: OfficeService\r\n\t\t) {\r\n\t\t\tTitleBarService.set('Appointment');\r\n\r\n\t\t\tOfficeService.getAppointment().then(response => {\r\n\t\t\t\tthis.setAppointment(response.data);\r\n\t\t\t})\r\n\t\t\t.catch(() => {\r\n\t\t\t\tSelectedAppointment.getAppointment().then((appointment) => {\r\n\t\t\t\t\tthis.setAppointment(appointment);\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tItemManagementService.GetServiceableItemTypes().then((response) => {\r\n\t\t\t\tthis.typeList = response.data;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tsaveItem() {\r\n\t\t\tconst vm = this,\r\n\t\t\t\tserviceableItem : ServiceableItemCreate = {\r\n\t\t\t\t\taddress: vm.appointment.service_request.service_address.id,\r\n\t\t\t\t\tcustomer: vm.appointment.service_request.customer.id,\r\n\t\t\t\t\tcreated_service_request: vm.appointment.service_request.id,\r\n\t\t\t\t\tin_service: true,\r\n\t\t\t\t\tmaintained: false,\r\n\t\t\t\t\tserviceable_item_type: vm.selectedItemType.id,\r\n\t\t\t\t};\r\n\r\n\t\t\tthis.isSaving = true;\r\n\r\n\t\t\t vm.ItemManagementService.CreateServiceableItem(serviceableItem)\r\n\t\t\t\t .then((response) => {\r\n\t\t\t\t\tlet item = response.data;\r\n\r\n\t\t\t\t\tvm.showAddItem = false;\r\n\t\t\t\t\tvm.selectedItemType = null;\r\n\r\n\t\t\t\t\titem.service_requests = item.service_requests || [];\r\n\t\t\t\t\tvm.serviceableItemList.unshift(item);\r\n\t\t\t\t })\r\n\t\t\t\t .finally(() => this.isSaving = false);\r\n\t\t}\r\n\r\n\t\ttoggleAddItem() {\r\n\t\t\tconst vm = this;\r\n\r\n\t\t\tif(vm.showAddItem) {\r\n\t\t\t\tvm.showAddItem = false;\r\n\t\t\t\tvm.selectedItemType = null;\r\n\t\t\t} else {\r\n\t\t\t\tvm.showAddItem = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tlinkItemOpen(item: ServiceableItem) {\r\n\t\t\tconst vm = this;\r\n\r\n\t\t\tvar linkExists = !!item.service_requests.find((sr) => {\r\n\t\t\t\treturn sr.id === vm.appointment.service_request.id;\r\n\t\t\t});\r\n\r\n\t\t\tvar modalOptions = {\r\n\t\t\t\ttemplateUrl: \"html/item-management/item-link.ff2cbb8f.html\",\r\n\t\t\t\tcontroller: function(close: (link: boolean) => void) {\r\n\t\t\t\t\tthis.link = function(link: boolean) {\r\n\t\t\t\t\t\tclose(link);\r\n\t\t\t\t\t};\r\n\t\t\t\t\tthis.itemText = item.serviceable_item_type.name;\r\n\t\t\t\t\tthis.linkExists = linkExists;\r\n\t\t\t\t },\r\n\t\t\t\tcontrollerAs: 'ctrl',\r\n\t\t\t\tbackdrop: 'static',\r\n\t\t\t\tkeyboard: true\r\n\t\t\t};\r\n\t\t\tmodalOptions.controller.$inject = ['close'];\r\n\t\t\tvm.ModalService.showModal(modalOptions).then((modal: any) => {\r\n\t\t\t\tmodal.close.then((link: boolean) => {\r\n\t\t\t\t\tif(link && !linkExists) {\r\n\t\t\t\t\t\tvm.ItemManagementService.AddServiceRequest(item.id, vm.appointment.service_request.id).then((response) => {\r\n\t\t\t\t\t\t\tif(response.data.success) {\r\n\t\t\t\t\t\t\t\tvm.ToastService.show('Successfully added tag');\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tvm.itemDetails(item);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t} else if(!link && linkExists) {\r\n\t\t\t\t\t\tvm.ItemManagementService.RemoveServiceRequest(item.id, vm.appointment.service_request.id).then((response) => {\r\n\t\t\t\t\t\t\tif(response.data.success) {\r\n\t\t\t\t\t\t\t\tvm.ToastService.show('Successfully removed tag');\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tvm.itemDetails(item);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tvm.itemDetails(item);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\titemDetails(item: ServiceableItem) {\r\n\t\t\tconst vm = this;\r\n\r\n\t\t\tvm.$state.go('zipSolutions.maintenance.details', {\r\n\t\t\t\titemId: item.id\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tsetAppointment(appointment: Appointment): void {\r\n\t\t\tconst vm = this;\r\n\r\n\t\t\tvm.appointment = appointment;\r\n\t\t\tvm.servicePlan = vm.appointment.service_request.service_plan;\r\n\r\n\t\t\tvm.getServiceableItemList();\r\n\t\t}\r\n\r\n\t\tgetServiceableItemList() {\r\n\t\t\tconst vm = this;\r\n\r\n\t\t\tvm.ItemManagementService.GetServiceableItemListByCustomer(vm.appointment.service_request.customer.id, vm.appointment.service_request.service_address.id)\r\n\t\t\t\t.then((response) => {\r\n\t\t\t\t\tvm.serviceableItemList = response.data.map(function (item: any) {return new ServiceableItem(item);});\r\n\t\t\t\t});\r\n\t\t}\r\n\r\n\t\tisItemOnCurrentSR(item: ServiceableItem): boolean {\r\n\t\t\treturn item.service_request && this.appointment && this.appointment.service_request &&\r\n\t\t\t\titem.service_request.id === this.appointment.service_request.id;\r\n\t\t}\r\n\r\n\t\tgetItemColor(item: ServiceableItem): string {\r\n\t\t\treturn item.maintained || this.isItemOnCurrentSR(item)\r\n\t\t\t\t? 'green'\r\n\t\t\t\t: 'red';\r\n\t\t}\r\n\r\n\t\tgetMaintainedText(item: ServiceableItem) {\r\n\t\t\treturn item.maintained\r\n\t\t\t\t? 'Active'\r\n\t\t\t\t: this.isItemOnCurrentSR(item)\r\n\t\t\t\t\t? 'Pending'\r\n\t\t\t\t\t: item.in_service\r\n\t\t\t\t\t\t? 'Inactive'\r\n\t\t\t\t\t\t: 'Out of Service';\r\n\t\t}\r\n\r\n\t\tdisplayServicePlan(servicePlan: ServicePlan): string {\r\n\t\t\tconst vm = this;\r\n\r\n\t\t\treturn servicePlan.name + ' - ' + (servicePlan.term === 'monthly' ? 'Monthly' : 'Annually');\r\n\t\t}\r\n\r\n\t\tdisplayDate(appointment: Appointment): string {\r\n\t\t\treturn moment(appointment.scheduled_date + ' ' + appointment.scheduled_time, 'YYYY-MM-DD HH:mm').format('ddd, MMM Do YYYY hh:mma');\r\n\t\t}\r\n\t}\r\n}","/// <reference path=\"../_references.ts\"/>\n\nmodule App.Login {\n\timport UserSession = App.User.UserSession;\n\timport ToastService = App.Utils.ToastService;\n\n\texport class LoginController {\n\t\tformData: {\n\t\t\tusername: string,\n\t\t\tpassword: string\n\t\t};\n\t\tofficeUi: string;\n\n\t\tstatic $inject = ['$state', '$window', 'LoginService', 'UserSession'];\n\n\t\tconstructor(\n\t\t\tprivate $state: ng.ui.IStateService,\n\t\t\tprivate $window: ng.IWindowService,\n\t\t\tprivate LoginService: LoginService,\n\t\t\tprivate UserSession: UserSession\n\t\t) {\n\t\t\tthis.formData = {\n\t\t\t\tusername: null,\n\t\t\t\tpassword: null\n\t\t\t};\n\n\t\t\tthis.officeUi = $window.officeUi;\n\t\t}\n\n\t\tuserLogin(evt: ng.IAngularEvent) : boolean {\n\t\t\tevt.stopPropagation();\n\t\t\tevt.preventDefault();\n\t\t\tthis.LoginService.authentication(this.formData.username, this.formData.password);\n\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tangular\n        .module('login', [\n\t\t\t'ngMap'\n\t\t])\n\t\t.controller('LoginController', LoginController);\n}","/// <reference path=\"../_references.ts\"/>\n\nmodule App.Payment {\n\timport TitleBarService = App.Helpers.TitleBarService;\n\timport SelectedAppointment = App.Appointments.SelectedAppointment;\n\timport Appointment = App.Appointments.Appointment;\n\timport UserSession = App.User.UserSession;\n\timport Countries = App.Country.Countries;\n\timport Validations = App.Validations.Validations;\n\timport WorkOrderService = App.WorkOrder.WorkOrderService;\n\timport ToastService = App.Utils.ToastService;\n\timport CustomerService = App.Customer.CustomerService;\n\timport OfficeService = App.Utils.OfficeService;\n\n\texport class PaymentController {\n\t\tshowSaveAndSign: boolean = false;\n\t\tappointment: Appointment = null;\n\t\tpaymentInfo: PaymentInfo = null;\n\t\tpayment: Payment = null;\n\t\tfinanceCompanyName: string = '';\n\t\tpaymentTypes: PaymentType[] = [];\n\t\tforms: { [key: string]: ng.IFormController } = {};\n\t\tisSaving: boolean = false;\n\t\tpaymentData: PaymentData = null;\n\n\t\teditEmailFlyout: boolean = false;\n\t\tedittedEmail: string = '';\n\t\tshowNewEmail: boolean = false;\n\t\tnewEmail: string = '';\n\t\tresendFlyout: boolean = false;\n\t\tresendNote: string = '';\n\t\tresentPaymentId: number = null;\n\n\t\ttokenizerURL: string = null;\n\n\t\tstatic $inject: string[] = [\n\t\t\t'$scope', '$sce', '$q', 'TitleBarService', 'PaymentService', 'WorkOrderService', 'SelectedAppointment', 'UserSession', 'Countries',\n\t\t\t'Validations', 'ToastService', 'CustomerService', 'OfficeService', '$document'\n\t\t];\n\n\t\tconstructor(\n\t\t\tpublic $scope: ng.IScope,\n\t\t\tprivate $sce: ng.ISCEService,\n\t\t\tprotected $q: ng.IQService,\n\t\t\tprivate TitleBarService: TitleBarService,\n\t\t\tprivate PaymentService: PaymentService,\n\t\t\tprivate WorkOrderService: WorkOrderService,\n\t\t\tprivate SelectedAppointment: SelectedAppointment,\n\t\t\tprivate UserSession: UserSession,\n\t\t\tpublic countries: Countries,\n\t\t\tpublic validations: Validations,\n\t\t\tpublic ToastService: ToastService,\n\t\t\tpublic CustomerService: CustomerService,\n\t\t\tprivate OfficeService: OfficeService,\n\t\t\tprivate $document: ng.IDocumentService,\n\t\t) {\n\t\t\tTitleBarService.set('Appointment');\n\n\t\t\tthis.tokenizerURL = this.$sce.trustAsResourceUrl(this.getTokenizerURL());\n\n\t\t\tOfficeService.getAppointment().then(response => {\n\t\t\t\tthis.setAppointment(response.data);\n\t\t\t})\n\t\t\t.catch(() => {\n\t\t\t\tSelectedAppointment.getAppointment().then((appointment) => {\n\t\t\t\t\tthis.setAppointment(appointment);\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\tgetTokenizerURL(): string {\n\t\t\tconst tokenizerURL = 'https://fts.cardconnect.com:8443/itoke/ajax-tokenizer.html'\n\t\t\t\t+ '?formatinput=true'\n\t\t\t\t+ '&tokenizewheninactive=false'\n\t\t\t\t+ '&css='\n\t\t\t\t\t+ encodeURI((\n\t\t\t\t\t\t'body {'\n\t\t\t\t\t\t\t+ 'margin: 0;'\n\t\t\t\t\t\t\t+ 'max-width: 100%;'\n\t\t\t\t\t\t+ '}'\n\t\t\t\t\t\t+ 'input {'\n\t\t\t\t\t\t\t+ 'width: 1px;'\n\t\t\t\t\t\t\t+ 'min-width: 100%;'\n\t\t\t\t\t\t\t+ 'display: inline-block;'\n\t\t\t\t\t\t\t+ 'outline: 0;'\n\t\t\t\t\t\t\t+ 'font-size: 1.2rem;'\n\t\t\t\t\t\t\t+ 'border-radius: 5px;'\n\t\t\t\t\t\t\t+ 'padding: 20px;'\n\t\t\t\t\t\t\t+ 'height: 24px;'\n\t\t\t\t\t\t\t+ 'border: 2px solid rgba(0,0,0,.12);'\n\t\t\t\t\t\t\t+ 'background: transparent;'\n\t\t\t\t\t\t\t+ 'color: black;'\n\t\t\t\t\t\t+ '}'\n\t\t\t\t\t).replace(/(:|\\{|;)\\s+/g, '$1').replace(/\\s+(\\{)/g, '$1'));\n\n\t\t\treturn tokenizerURL;\n\t\t}\n\n\t\tsetPaymentData() {\n\t\t\tconst vm = this;\n\n\t\t\treturn vm.PaymentService.fetchPaymentTypes().then((response) => {\n\t\t\t\tconst email = vm.appointment.service_request.customer.emails.length ? vm.appointment.service_request.customer.emails[0].email : null;\n\n\t\t\t\tvm.paymentTypes = response.data;\n\n\t\t\t\tvm.payment = new Payment(\n\t\t\t\t\tnull,\n\t\t\t\t\temail,\n\t\t\t\t\tvm.UserSession.user && vm.UserSession.user.id || null,\n\t\t\t\t\tvm.paymentInfo.amount_due\n\t\t\t\t);\n\t\t\t\tvm.selectPaymentType(vm.appointment.service_request.payment_type.name.toLowerCase());\n\n\t\t\t\t// This shouldn't be necessary, but for some reason it is.  Causes the switch to appear after navigation - otherwise only appears on refresh.\n\t\t\t\tconst switchElement: HTMLElement = this.$document[0].getElementById('send-email-switch');\n\t\t\t\tcomponentHandler.upgradeElement(switchElement);\n\n\t\t\t\t// This shouldn't be necessary either, but mdl doesn't ensure that the switch is the right state when creating it.\n\t\t\t\tswitchElement.querySelector('input').click();\n\n\t\t\t\tvm.setFinancing();\n\t\t\t});\n\t\t}\n\n\t\tgetPaymentType(payment: Payment): string {\n\t\t\tswitch (payment.type) {\n\t\t\t\tcase 'Cash': return 'Payment';\n\t\t\t\tdefault: return payment.type;\n\t\t\t}\n\t\t}\n\n\t\tsetAppointment(appointment: Appointment): ng.IPromise<void> {\n\t\t\tconst vm = this;\n\n\t\t\tvm.appointment = appointment;\n\n\t\t\tvm.setCreditCardDetails();\n\t\t\treturn vm.getPaymentsData();\n\t\t}\n\n\t\tgetPaymentsData() {\n\t\t\tconst vm = this;\n\n\t\t\treturn vm.PaymentService.fetchPaymentInfo(vm.appointment.service_request.id).then((response) => {\n\t\t\t\tvm.paymentInfo = response.data;\n\n\t\t\t\tvm.setPaymentData();\n\t\t\t});\n\t\t}\n\n\t\tsetFinancing() {\n\t\t\tconst vm = this;\n\n\t\t\tif(vm.paymentInfo.finance_plan) {\n\t\t\t\tvm.payment.payment_type = vm.paymentTypes.find((type) => {\n\t\t\t\t\treturn type.name.toLowerCase() === 'financing';\n\t\t\t\t}).name;\n\n\t\t\t\tvm.WorkOrderService.getFinancePlan(vm.paymentInfo.finance_plan.id).then((response) => {\n\t\t\t\t\tvm.financeCompanyName = response.data.finance_company.name;\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tdateFormatter(date: string) {\n\t\t\treturn moment(date).format('D MMM YY');\n\t\t}\n\n\t\tselectPaymentType(pType: string) {\n\t\t\tif (pType === 'invoice') {\n\t\t\t\tpType = 'cash';\n\t\t\t}\n\t\t\tthis.payment.payment_type = this.paymentTypes.find((type) => {\n\t\t\t\treturn type.name.toLowerCase() === pType;\n\t\t\t}).name;\n\t\t}\n\n\t\tisSelectPaymentType(pType: PaymentTypeName) {\n\t\t\treturn this.payment && this.payment.payment_type.toLowerCase() === pType;\n\t\t}\n\n\t\tsetCreditCardDetails() {\n\t\t\tconst vm = this;\n\n\t\t\tlet custName = vm.appointment.service_request.customer.full_name.split(\" \");\n\t\t\tvm.paymentData = {\n\t\t\t\tfirstName: custName[0],\n\t\t\t\tlastName: custName[custName.length - 1],\n\t\t\t\tmI: custName.length > 2 ? custName[1][0] : null,\n\t\t\t\tbillingAddress: vm.appointment.service_request.service_address.address.substr(0, vm.appointment.service_request.service_address.address.lastIndexOf(\" \")),\n\t\t\t\tpostalCode: vm.appointment.service_request.service_address.address.substr(vm.appointment.service_request.service_address.address.lastIndexOf(\" \") + 1)\n\t\t\t}\n\n\t\t\tvm.CustomerService.fetchCustomerAddress(vm.appointment.service_request.customer.id).then((result) => {\n\t\t\t\tif (result.data !== null) {\n\t\t\t\t\tlet recentAddress = result.data.find((addr) => {\n\t\t\t\t\t\treturn addr.latitude === vm.appointment.service_request.service_address.latitude;\n\t\t\t\t\t});\n\n\t\t\t\t\tif (!recentAddress) {\n\t\t\t\t\t\trecentAddress = result.data[result.data.length - 1];\n\t\t\t\t\t}\n\t\t\t\t\tvm.paymentData.postalCode = recentAddress.zip;\n\t\t\t\t\tvm.paymentData.billingAddress = recentAddress.address.substr(0, recentAddress.address.lastIndexOf(\" \"));\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\n\t\tsaveDisabled(): boolean {\n\t\t\tif(this.payment && this.payment.payment_type && this.forms[this.payment.payment_type.toLowerCase()]) {\n\t\t\t\treturn this.forms[this.payment.payment_type.toLowerCase()].$invalid || this.payment.payment_type.toLowerCase() === 'invoice';\n\t\t\t} else {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\ttoggleShowSaveAndSign() {\n\t\t\tif(this.saveDisabled()) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.showSaveAndSign = !this.showSaveAndSign;\n\t\t}\n\n\t\tisSignatureEmpty() {\n\t\t\treturn this.payment === null || !Boolean(this.payment.signature);\n\t\t}\n\n\t\tisPrintNameEmpty() {\n\t\t\treturn this.payment === null || this.payment.print_name === null;\n\t\t}\n\n\t\tactivateTokenListener(): void {\n\t\t\tconst vm = this;\n\n\t\t\tvm.payment.details = null;\n\n\t\t\twindow.addEventListener('message', (event) => {\n\t\t\t\tvm.payment.details = JSON.parse(event.data).message;\n\t\t\t\tthis.$scope.$apply();\n\t\t\t}, false);\n\t\t}\n\n\t\tsavePaymentFormFromInput(event: any) {\n\t\t\tif (event.keyCode === 13) {\n\t\t\t\tevent.target.blur();\n\t\t\t\tthis.savePaymentForm();\n\t\t\t}\n\t\t}\n\n\t\tsavePaymentForm(): null | void {\n\t\t\tconst vm = this;\n\n\t\t\tif(vm.isSignatureEmpty() || vm.isPrintNameEmpty()) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tvm.isSaving = true;\n\n\t\t\tvm.payment.technician = vm.UserSession.user\n\t\t\t\t&& vm.UserSession.user.technician\n\t\t\t\t&& vm.UserSession.user.technician.id\n\t\t\t\t|| null;\n\n\t\t\tvm.payment.appointment = vm.appointment.id;\n\n\t\t\tif (!vm.payment.email) {\n\t\t\t\tvm.payment.email_sent = false;\n\t\t\t}\n\n\t\t\tlet saving1 = this.$q.defer(),\n\t\t\t\tsaving2 = this.$q.defer();\n\n\t\t\tvm.PaymentService.createPayment(vm.appointment.service_request.id, vm.payment).then((response) => {\n\t\t\t\tvm.showSaveAndSign = false;\n\t\t\t\tthis.payment.signature = '';\n\n\t\t\t\tvm.getPaymentsData().then(() => {\n\t\t\t\t\tsaving1.resolve();\n\t\t\t\t});\n\n\t\t\t\tvm.ToastService.show('Approved');\n\t\t\t\treturn response.data.id;\n\t\t\t}, (response) => {\n\t\t\t\tvm.ToastService.showError('Unable to process payment: ', response);\n\t\t\t\tsaving1.resolve();\n\t\t\t}).then((id: number) => {\n\t\t\t\tif (id && vm.payment.email_sent) {\n\t\t\t\t\tvm.sendEmail(id).then(() => {\n\t\t\t\t\t\tsaving2.resolve();\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tsaving2.resolve();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.$q.all([saving1.promise, saving2.promise]).then(() => {\n\t\t\t\tthis.isSaving = false;\n\t\t\t});\n\t\t}\n\n\t\ttoggleResendFlyout(id?: number) {\n\t\t\tthis.resendFlyout = !this.resendFlyout;\n\t\t\tif (id) {\n\t\t\t\tthis.resentPaymentId = id;\n\t\t\t}\n\t\t}\n\n\t\tsendEmail(resentId?: number, email?: string, note?: string) {\n\t\t\treturn this.PaymentService.sendPaymentEmail(this.appointment.service_request.id, resentId || this.payment.id, {\n\t\t\t\temail: email || this.payment.email,\n\t\t\t\tnote: note || this.payment.email_note\n\t\t\t}).then(() => {\n\t\t\t\tthis.ToastService.show('Email sent');\n\t\t\t\tif (this.resendFlyout) {\n\t\t\t\t\tthis.toggleResendFlyout();\n\t\t\t\t}\n\t\t\t}).catch(() => {\n\t\t\t\tthis.ToastService.showError('Email failed to send.  Click on the payment above to resend.')\n\t\t\t});\n\t\t}\n\n\t\teditEmail() {\n\t\t\tthis.payment.email = this.edittedEmail;\n\t\t\tthis.editEmailFlyout = false;\n\n\t\t\tif (this.showNewEmail) {\n\t\t\t\tthis.CustomerService.createEmail(this.appointment.service_request.customer.id, this.newEmail).then((email) => {\n\t\t\t\t\tthis.appointment.service_request.customer.emails.push(email.data);\n\t\t\t\t\tthis.payment.email = this.edittedEmail = email.data.email;\n\t\t\t\t\tthis.newEmail = '';\n\t\t\t\t\tthis.showNewEmail = false;\n\t\t\t\t\tthis.ToastService.show('Email created');\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n}\n","/// <reference path=\"../_references.ts\"/>\n\nmodule App.PriceGuide {\n\timport Appointment = App.Appointments.Appointment;\n\timport Department = App.Appointments.Department;\n\timport OfficeService = App.Utils.OfficeService;\n\timport SelectedAppointment = App.Appointments.SelectedAppointment;\n\timport Tag = App.Appointments.Tag;\n\timport TagType = App.Appointments.TagType;\n\timport Template = App.WorkOrderTemplate.Template;\n\timport TitleBarService = App.Helpers.TitleBarService;\n\timport UserSession = App.User.UserSession;\n\timport WorkOrderTemplateService = App.WorkOrderTemplate.WorkOrderTemplateService;\n\timport ToastService = App.Utils.ToastService;\n\n\texport class PriceGuideController {\n\t\tpublic static fromTemplateSubCat = {\n\t\t\tid: 0,\n\t\t\tname: 'From Template'\n\t\t};\n\n\t\tpublic static fromTemplateCat = {\n\t\t\tid: 0,\n\t\t\tname: 'From Template',\n\t\t\tsub_categories: [PriceGuideController.fromTemplateSubCat]\n\t\t};\n\n\t\tappointment: Appointment = null;\n\n\t\tdisplayFilters: boolean = false;\n\t\tdisplaySorts: boolean = false;\n\t\tdisplayFavorites: boolean = false;\n\t\tfromOffice: boolean = false;\n\t\tisFetching: boolean = false;\n\n\t\tdepartments: Department[] = [];\n\t\tcategories: ServiceCategory[] = [];\n\t\tsubCategories: SubCategory[] = [];\n\t\ttagTypes: TagType[];\n\n\t\tproducts: Product[] = [];\n\t\texpandMap: {[id: number]: boolean} = {};\n\n\t\tcustomProduct: Product = null;\n\n\t\tsearchText: string = null;\n\t\tdeleteTemplateMode: boolean = false;\n\t\tisDeleting: boolean = false;\n\n\t\tselectedDepartment: Department = null;\n\t\tselectedCategory: ServiceCategory = null;\n\t\tselectedSubCategory: SubCategory = null;\n\t\tselectedTags: Tag[] = [];\n\t\tselectedSortBy: 'priceLowToHigh' | 'priceHighToLow' | 'nameAscending' | 'nameDescending' = null;\n\t\tonlyName: boolean = false;\n\n\t\tpackageId: number = null;\n\n\t\tpageSize: number = 25;\n\t\tpage: number = 1;\n\t\tcount: number = 0;\n\t\tmaxPage: number = 1;\n\n\t\tisSaving: boolean = false;\n\n\t\tselectedProducts: {\n\t\t\t[key: string]: Product\n\t\t} = {};\n\n\t\taccordions: {\n\t\t\t[key: string]: boolean\n\t\t} = {};\n\n\t\tpackageCount: number = 0;\n\n\t\tselectedTemplates: number[] = [];\n\t\ttemplates: Template[] = [];\n\t\tshowTemplates: boolean = true;\n\n\t\tinProgress: boolean = false;\n\t\tmodifiedPackage: boolean = false;\n\t\tcollectsTax: boolean = false;\n\n\t\ttemplatePermission: boolean;\n\t\tproductsPermission: boolean;\n\t\tdeleteTemplatePermission: boolean;\n\n\t\tstatic $inject: string[] = [\n\t\t\t'$q', '$state', '$stateParams', 'SelectedAppointment', 'TitleBarService', 'ProductService',\n\t\t\t'PermissionService', 'WorkOrderTemplateService', 'UserSession', 'OfficeService', '$document',\n\t\t\t'ToastService', 'ModalService',\n\t\t];\n\n\t\tconstructor(\n\t\t\tprotected $q: ng.IQService,\n\t\t\tprivate $state: ng.ui.IStateService,\n\t\t\tprivate $stateParams: ng.ui.IStateParamsService,\n\t\t\tprivate SelectedAppointment: SelectedAppointment,\n\t\t\tprivate TitleBarService: TitleBarService,\n\t\t\tprivate ProductService: ProductService,\n\t\t\tprivate PermissionService: App.Helpers.PermissionService,\n\t\t\tprivate WorkOrderTemplateService: WorkOrderTemplateService,\n\t\t\tprivate UserSession: UserSession,\n\t\t\tprivate OfficeService: OfficeService,\n\t\t\tprivate $document: ng.IDocumentService,\n\t\t\tprotected ToastService: ToastService,\n\t\t\tprotected ModalService: any\n\t\t) {\n\t\t\tlet vm = this;\n\n\t\t\tTitleBarService.set('Appointment');\n\n\t\t\tvm.packageId = $stateParams.packageId;\n\n\t\t\tif(vm.packageId) {\n\t\t\t\tvm.showTemplates = false;\n\t\t\t}\n\n\t\t\tvm.accordions.department = true;\n\n\t\t\tOfficeService.getAppointment().then(response => {\n\t\t\t\tvm.fromOffice = true;\n\t\t\t\tvm.setAppointment(response.data);\n\t\t\t}).catch(() => {\n\t\t\t\tSelectedAppointment.getAppointment().then((appointment) => {\n\t\t\t\t\tvm.setAppointment(appointment);\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tthis.templatePermission = PermissionService.hasAnyPermission([\n\t\t\t\t'web.field.price-guide.templates.list',\n\t\t\t\t'web.office.service-requests.service-request.tech-view'\n\t\t\t]);\n\t\t\tthis.productsPermission = PermissionService.hasAnyPermission([\n\t\t\t\t'web.field.price-guide.products.list',\n\t\t\t\t'web.office.service-requests.service-request.tech-view'\n\t\t\t]);\n\t\t\tthis.deleteTemplatePermission = PermissionService.hasAnyPermission([\n\t\t\t\t'web.field.price-guide.templates.delete',\n\t\t\t\t'web.office.service-requests.service-request.tech-view'\n\t\t\t]);\n\n\t\t\tthis.showTemplates = this.templatePermission;\n\n\t\t\tProductService.getDepartments().then((response) => {\n\t\t\t\tvm.departments = response.data;\n\n\t\t\t\t// This shouldn't be necessary, but for some reason it is.  Causes the switch to appear after navigation - otherwise only appears on refresh.\n\t\t\t\tcomponentHandler.upgradeElement(this.$document[0].getElementById('only-name-switch'));\n\t\t\t});\n\n\t\t\tProductService.getCollectsTax('current')\n\t\t\t\t.then((resp) => this.collectsTax = resp.data.collect)\n\t\t\t\t.then(() => this.upgradeForm());\n\t\t}\n\n\t\tsetAppointment(appointment: Appointment): void {\n\t\t\tconst vm = this;\n\n\t\t\tvm.appointment = appointment;\n\n\t\t\tvm.packageCount = vm.appointment.service_request.packages.length;\n\n\t\t\tvm.getTemplates();\n\t\t\tvm.getProductsList(true);\n\t\t}\n\n\t\tresetSearch(): void {\n\t\t\tthis.searchText = '';\n\t\t\tthis.performSearch();\n\t\t}\n\n\t\tperformSearch(): void {\n\t\t\tif (this.showTemplates) {\n\t\t\t\tthis.getTemplates();\n\t\t\t} else {\n\t\t\t\tthis.getProductsList();\n\t\t\t}\n\t\t}\n\n\t\tgoTop(): void {\n\t\t\tdocument.getElementById('top-scroll').scrollIntoView({ block: 'start',  behavior: 'smooth' });\n\t\t}\n\n\t\tgetProductsList(showCustom = false): void {\n\t\t\tif (!this.productsPermission) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet vm = this,\n\t\t\t\tparams: SearchParams = {};\n\n\t\t\tvm.isFetching = true;\n\n\t\t\tif(vm.searchText && vm.searchText.length >= 3) {\n\t\t\t\tparams.search = vm.searchText;\n\t\t\t}\n\n\t\t\tif(vm.selectedDepartment) {\n\t\t\t\tparams.department = vm.selectedDepartment.id;\n\t\t\t}\n\n\t\t\tif (vm.selectedCategory) {\n\t\t\t\tif (vm.selectedCategory.id === 0) {\n\t\t\t\t\tparams.from_template = 1;\n\t\t\t\t\tparams.category = 'null';\n\t\t\t\t\tparams.sub_category = 'null';\n\t\t\t\t} else {\n\t\t\t\t\tparams.category = vm.selectedCategory.id;\n\t\t\t\t\tif (vm.selectedSubCategory) {\n\t\t\t\t\t\tparams.sub_category = vm.selectedSubCategory.id;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(vm.selectedTags.length) {\n\t\t\t\tparams.tag = vm.selectedTags.map(tag => tag.id).join(',');\n\t\t\t}\n\n\t\t\tswitch(vm.selectedSortBy) {\n\t\t\t\tcase 'priceLowToHigh':\n\t\t\t\t\tparams.orderBy = 'material_cost';\n\t\t\t\t\tparams.sort = 'asc';\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'priceHighToLow':\n\t\t\t\t\tparams.orderBy = 'material_cost';\n\t\t\t\t\tparams.sort = 'desc';\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'nameAscending':\n\t\t\t\t\tparams.orderBy = 'name';\n\t\t\t\t\tparams.sort = 'asc';\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'nameDescending':\n\t\t\t\t\tparams.orderBy = 'material_cost';\n\t\t\t\t\tparams.sort = 'desc';\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif(vm.displayFavorites) {\n\t\t\t\tparams.favorites = true;\n\t\t\t}\n\n\t\t\tif(showCustom) {\n\t\t\t\tparams.custom = true;\n\t\t\t}\n\n\t\t\tif(vm.onlyName) {\n\t\t\t\tparams.only_name = true;\n\t\t\t}\n\n\t\t\tif(Object.keys(params).length === 0) {\n\t\t\t\tconst newProducts: Product[] = [];\n\t\t\t\tfor (let i in Object.keys(vm.products)) {\n\t\t\t\t\tif (vm.isProductSelected(vm.products[i])) {\n\t\t\t\t\t\tnewProducts.push(angular.copy(vm.products[i]));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tvm.products = newProducts;\n\t\t\t\tvm.expandMap = {};\n\t\t\t\tvm.isFetching = false;\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif(Object.keys(vm.selectedProducts).length) {\n\t\t\t\tparams.selected = Object.keys(vm.selectedProducts).map((key) => parseInt(key, 10)).join(',');\n\t\t\t}\n\n\t\t\tparams.service_request = vm.appointment.service_request.id;\n\n\t\t\tparams.page = this.page;\n\t\t\tparams.size = this.pageSize;\n\t\t\tparams.show_safe_tech_info = true;\n\n\t\t\tvm.ProductService.getProductList(params).then((response) => {\n\t\t\t\tlet headers = response.headers();\n\n\t\t\t\tif (this.updatePageInfo(Number(headers.count))) {\n\t\t\t\t\tthis.page = this.maxPage;\n\t\t\t\t\treturn this.getProductsList();\n\t\t\t\t}\n\n\t\t\t\tvm.products = response.data;\n\t\t\t\tvm.expandMap = {};\n\t\t\t}, (response) => {\n\t\t\t\tvm.ToastService.showError('Unable to get products: ', response);\n\t\t\t}).finally(() => {\n\t\t\t\tvm.isFetching = false;\n\t\t\t});\n\t\t}\n\n\t\tsetPage(page: number) {\n\t\t\tlet newPage = Math.max(1, Math.min(this.maxPage, page));\n\t\t\tif (newPage !== this.page) {\n\t\t\t\tthis.page = newPage;\n\t\t\t\tthis.showTemplates ? this.getTemplates() : this.getProductsList();\n\t\t\t}\n\t\t}\n\n\t\tgetItemCount() {\n\t\t\tif (this.count === 0) {\n\t\t\t\treturn '0 - 0 of 0';\n\t\t\t}\n\n\t\t\treturn Math.min(this.count, ((this.page - 1) * this.pageSize) + 1) + ' - ' + Math.min(this.count, this.pageSize * this.page) + ' of ' + this.count;\n\t\t}\n\n\t\tupdatePageInfo(count: number) {\n\t\t\tthis.count = count;\n\t\t\tthis.maxPage = Math.max(1, Math.ceil(this.count / this.pageSize));\n\n\t\t\treturn this.maxPage < this.page;\n\t\t}\n\n\t\tgetDepartmentCategories(department: Department): void {\n\t\t\tlet vm = this;\n\n\t\t\tvm.searchText = null;\n\t\t\tvm.displayFavorites = false;\n\t\t\tvm.selectedDepartment = department;\n\t\t\tvm.selectedCategory = null;\n\t\t\tvm.selectedSubCategory = null;\n\t\t\tvm.accordions.category = false;\n\t\t\tvm.accordions.subCategory = false;\n\t\t\tvm.categories = [];\n\t\t\tvm.subCategories = [];\n\t\t\tvm.selectedTags = [];\n\n\t\t\tvm.ProductService.getCategories(department.id).then((response) => {\n\t\t\t\tvm.categories = response.data || [];\n\t\t\t\tvm.categories.push(PriceGuideController.fromTemplateCat);\n\t\t\t\tvm.accordions.category = true;\n\n\t\t\t\tvm.getProductsList();\n\t\t\t\tvm.setTagList(department);\n\t\t\t});\n\t\t}\n\n\t\tsetTagList(department: Department): void {\n\t\t\tconst vm = this;\n\n\t\t\tvm.tagTypes = department.tag_types;\n\n\t\t\tvm.tagTypes.forEach(tagType => {\n\t\t\t\tvm.accordions[tagType.name + tagType.id] = true;\n\t\t\t});\n\t\t}\n\n\t\tselectTag(tag: Tag): void {\n\t\t\tconst vm = this,\n\t\t\t\tindex = vm.selectedTags.findIndex(selectedTag => selectedTag.id === tag.id);\n\n\t\t\tvm.searchText = null;\n\t\t\tvm.displayFavorites = false;\n\t\t\tif(index > -1) {\n\t\t\t\tvm.selectedTags.splice(index, 1);\n\t\t\t} else {\n\t\t\t\tvm.selectedTags.push(tag);\n\t\t\t}\n\n\t\t\tvm.getProductsList();\n\t\t}\n\n\t\tisTagSelected(tag: Tag): boolean {\n\t\t\tconst vm = this;\n\n\t\t\treturn vm.selectedTags.findIndex(selectedTag => selectedTag.id === tag.id) > -1;\n\t\t}\n\n\t\tsetSubCategories(category: ServiceCategory): void {\n\t\t\tconst vm = this;\n\n\t\t\tvm.searchText = null;\n\t\t\tvm.displayFavorites = false;\n\t\t\tvm.selectedCategory = category;\n\t\t\tvm.selectedSubCategory = null;\n\t\t\tvm.selectedTags = [];\n\t\t\tvm.accordions.subCategory = true;\n\t\t\tvm.subCategories = category.sub_categories;\n\t\t\tif (category.id === 0) {\n\t\t\t\tvm.selectedSubCategory = PriceGuideController.fromTemplateSubCat;\n\t\t\t}\n\n\t\t\tvm.getProductsList();\n\t\t}\n\n\t\tonSelectSubCategory(subCategory: SubCategory): void {\n\t\t\tconst vm = this;\n\n\t\t\tvm.searchText = null;\n\t\t\tvm.selectedSubCategory = subCategory;\n\t\t\tvm.displayFavorites = false;\n\t\t\tvm.selectedTags = [];\n\n\t\t\tvm.getProductsList();\n\t\t}\n\n\t\ttoggleFilters(): void {\n\t\t\tthis.displayFilters = !this.displayFilters;\n\t\t}\n\n\t\tclearFilters(): void {\n\t\t\tconst vm = this;\n\n\t\t\tvm.selectedDepartment = null;\n\t\t\tvm.selectedCategory = null;\n\t\t\tvm.selectedSubCategory = null;\n\t\t\tvm.categories = [];\n\t\t\tvm.subCategories = [];\n\t\t\tvm.tagTypes = [];\n\t\t\tvm.displayFavorites = false;\n\t\t\tvm.searchText = null;\n\t\t\tvm.selectedTags = [];\n\t\t\tvm.onlyName = false;\n\n\t\t\tconst keys = Object.keys(vm.accordions);\n\n\t\t\tkeys.forEach((key) => {\n\t\t\t\tvm.accordions[key] = false;\n\t\t\t});\n\n\t\t\tvm.accordions.department = true;\n\n\t\t\tvm.getProductsList();\n\t\t}\n\n\t\tremoveFilter(type: 'department'|'category'|'subCategory' | 'tag', tag?: Tag): void {\n\t\t\tconst vm = this;\n\n\t\t\tswitch(type) {\n\t\t\t\tcase 'subCategory':\n\t\t\t\t\tvm.selectedSubCategory = null;\n\t\t\t\t\tvm.getProductsList();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'category':\n\t\t\t\t\tvm.selectedCategory = null;\n\t\t\t\t\tvm.selectedSubCategory = null;\n\t\t\t\t\tvm.getProductsList();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'tag':\n\t\t\t\t\tconst tagIndex = vm.selectedTags.findIndex(selectedTag => selectedTag.id === tag.id);\n\t\t\t\t\tif(tagIndex > -1) vm.selectedTags.splice(tagIndex, 1);\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tvm.clearFilters();\n\t\t\t}\n\t\t}\n\n\t\ttoggleSorts($event: ng.IAngularEvent): void {\n\t\t\t$event.stopPropagation();\n\n\t\t\tthis.displaySorts = !this.displaySorts;\n\t\t}\n\n\t\ttoggleFavorites(): void {\n\t\t\tthis.displayFavorites = !this.displayFavorites;\n\n\t\t\tthis.performSearch();\n\t\t}\n\n\t\tcreatePackage(): void {\n\t\t\tthis.modifiedPackage = false;\n\t\t\tlet vm = this,\n\t\t\t\tproducts = Object.keys(vm.selectedProducts).map((key) => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tquantity: vm.selectedProducts[key].quantity,\n\t\t\t\t\t\tservice_id: vm.selectedProducts[key].id\n\t\t\t\t\t};\n\t\t\t\t});\n\n\t\t\tvm.packageCount++;\n\n\t\t\tvm.ProductService.createPackage(vm.appointment.service_request.id, {\n\t\t\t\tname: null,\n\t\t\t\tcode: null,\n\t\t\t\tservices: products\n\t\t\t});\n\t\t}\n\n\t\tupdatePackage(): void {\n\t\t\tthis.modifiedPackage = false;\n\t\t\tlet vm = this,\n\t\t\t\tproducts = Object.keys(vm.selectedProducts).map((key) => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tquantity: vm.selectedProducts[key].quantity,\n\t\t\t\t\t\tservice_id: vm.selectedProducts[key].id\n\t\t\t\t\t};\n\t\t\t\t});\n\n\t\t\tvm.isSaving = true;\n\n\t\t\tvm.ProductService.updatePackage(vm.appointment.service_request.id, {\n\t\t\t\tid: vm.packageId,\n\t\t\t\tservices: products\n\t\t\t}).then(() => {\n\t\t\t\tvm.$state.go('zipSolutions.workOrder');\n\t\t\t});\n\t\t}\n\n\t\ttoggleAccordion(key: string): void {\n\t\t\tconst vm = this;\n\n\t\t\tif(angular.isUndefined(vm.accordions[key])) {\n\t\t\t\tvm.accordions[key] = false;\n\t\t\t}\n\n\t\t\tvm.accordions[key] = !vm.accordions[key];\n\t\t}\n\n\t\ttoggleProductFavorite(product: Product): void {\n\t\t\tconst vm = this;\n\n\t\t\tif(vm.isProductFavorite(product)) {\n\t\t\t\tvm.UserSession.removeFavorite(product.id);\n\t\t\t} else {\n\t\t\t\tvm.UserSession.addFavorite(product.id);\n\t\t\t}\n\t\t}\n\n\t\tisProductFavorite(product: Product): boolean {\n\t\t\tif (!this.UserSession.user) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn this.UserSession.user.favorites.indexOf(product.id) > -1;\n\t\t}\n\n\t\thasSelectedProducts(): boolean {\n\t\t\tlet vm = this;\n\n\t\t\treturn Object.keys(vm.selectedProducts).length > 0;\n\t\t}\n\n\t\tselectProduct(product: Product, manual?: undefined | boolean): void {\n\t\t\tlet vm = this;\n\t\t\tvm.modifiedPackage = true;\n\t\t\tconst quantity = product.quantity;\n\n\t\t\tif(vm.isProductSelected(product) && ((angular.isUndefined(quantity) || quantity === 0 || quantity === null) || manual)) {\n\t\t\t\tdelete vm.selectedProducts[product.id];\n\t\t\t\tproduct.quantity = null;\n\t\t\t} else {\n\t\t\t\tif(angular.isUndefined(quantity) || quantity === null) {\n\t\t\t\t\tproduct.quantity = 1;\n\t\t\t\t}\n\n\t\t\t\tvm.selectedProducts[product.id] = angular.copy(product);\n\t\t\t}\n\t\t}\n\n\t\tisProductSelected(product: Product): boolean {\n\t\t\treturn angular.isDefined(this.selectedProducts[product.id]);\n\t\t}\n\n\t\tgetQuantity(product: Product): void {\n\t\t\tconst vm = this;\n\n\t\t\tif(vm.isProductSelected(product)) {\n\t\t\t\tproduct.quantity = vm.selectedProducts[product.id].quantity;\n\t\t\t}\n\t\t}\n\n\t\tupgradeForm(): void {\n\t\t\tconst taxExemptElem = this.$document[0].getElementById('taxExempt');\n\n\t\t\tif (taxExemptElem) {\n\t\t\t\tcomponentHandler.upgradeElement(taxExemptElem.parentElement);\n\t\t\t}\n\t\t}\n\n\t\teditCustomProduct(): void {\n\t\t\tif (this.customProduct) {\n\t\t\t\tthis.customProduct = null;\n\t\t\t} else {\n\t\t\t\tthis.upgradeForm();\n\t\t\t\tthis.customProduct = {\n\t\t\t\t\tid: null,\n\t\t\t\t\tname: null,\n\t\t\t\t\ttax_exempt: false,\n\t\t\t\t\tdescription: null,\n\t\t\t\t\tmaterial_cost: null,\n\t\t\t\t\tservice_department: null,\n\t\t\t\t\tlabor_minutes: null,\n\t\t\t\t\tservice_price_override: null,\n\t\t\t\t\tservice_request_id: this.appointment.service_request.id\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\taddCustomProduct(form: ng.IFormController): void {\n\t\t\tthis.ProductService.createCustomProduct(this.customProduct).then((response) => {\n\t\t\t\tthis.customProduct = null;\n\n\t\t\t\tthis.products.unshift(response.data);\n\t\t\t\tthis.selectProduct(response.data);\n\n\t\t\t\tform.$setPristine();\n\t\t\t\tform.$setUntouched();\n\t\t\t});\n\t\t}\n\n\t\tgetTemplates() {\n\t\t\tif (this.templatePermission) {\n\t\t\t\tthis.isFetching = true;\n\n\t\t\t\tthis.WorkOrderTemplateService.fetchAll(\n\t\t\t\t\tthis.appointment.service_request.id,\n\t\t\t\t\tthis.searchText,\n\t\t\t\t\tthis.displayFavorites ? true : null,\n\t\t\t\t\tthis.pageSize,\n\t\t\t\t\tthis.page\n\t\t\t\t).then((response) => {\n\t\t\t\t\tlet headers = response.headers();\n\n\t\t\t\t\tif (this.updatePageInfo(Number(headers.count))) {\n\t\t\t\t\t\tthis.page = this.maxPage;\n\t\t\t\t\t\treturn this.getProductsList();\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.templates = response.data;\n\t\t\t\t}).finally(() => {\n\t\t\t\t\tthis.isFetching = false;\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\ttoggleShowTemplates(show: boolean) {\n\t\t\tthis.searchText = null;\n\t\t\tthis.displayFavorites = false;\n\t\t\tthis.deleteTemplateMode = false;\n\t\t\tthis.showTemplates = show;\n\t\t\tthis.pageSize = 25;\n\t\t\tthis.page = 1;\n\t\t\tthis.count = 0;\n\t\t\tthis.maxPage = 1;\n\t\t}\n\n\t\ttoggleDeleteMode() {\n\t\t\tif (this.deleteTemplatePermission) {\n\t\t\t\tthis.deleteTemplateMode = !this.deleteTemplateMode;\n\t\t\t\tthis.selectedTemplates = [];\n\t\t\t}\n\t\t}\n\n\t\tisBusy(): boolean {\n\t\t\treturn this.isDeleting;\n\t\t}\n\n\t\tdeleteTemplates() {\n\t\t\tif (this.deleteTemplatePermission) {\n\t\t\t\tthis.isDeleting = true;\n\n\t\t\t\tconst templates = this.templates.filter((template) => this.matchessTemplateSelected(template.id)),\n\t\t\t\t\t$q = this.$q,\n\t\t\t\t\tWorkOrderTemplateService = this.WorkOrderTemplateService;\n\n\t\t\t\tthis.ModalService.showModal({\n\t\t\t\t\tcontroller: ['close', function($close: (result: any, delay?: number) => void) {\n\t\t\t\t\t\t\tthis.isDone = false;\n\t\t\t\t\t\t\tthis.close = (confirm: boolean) => {\n\t\t\t\t\t\t\t\tif (confirm) {\n\t\t\t\t\t\t\t\t\tthis.isDone = true\n\t\t\t\t\t\t\t\t\t$q.all(\n\t\t\t\t\t\t\t\t\t\ttemplates.map((template) => WorkOrderTemplateService.delete(template.id, { quiet: true }))\n\t\t\t\t\t\t\t\t\t).finally(() => $close(confirm, 0));\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t$close(confirm, 0);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tthis.templates = templates;\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\tcontrollerAs: 'modal',\n\t\t\t\t\tbackdrop: 'static',\n\t\t\t\t\ttemplateUrl: 'html/price-guide/delete-templates-modal.tpl.1d1b29c6.html',\n\t\t\t\t}).then((modal) => {\n\t\t\t\t\tmodal.close.then((confirm) => {\n\t\t\t\t\t\tif (confirm) {\n\t\t\t\t\t\t\tthis.templates = this.templates.filter((template) => this.selectedTemplates.indexOf(template.id) === -1);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tthis.isDeleting = false;\n\t\t\t\t\t\tthis.toggleDeleteMode();\n\t\t\t\t\t});\n\t\t\t\t}).catch(() => this.isDeleting = false);\n\t\t\t}\n\t\t}\n\n\t\tisTemplateSelected() {\n\t\t\treturn this.selectedTemplates.length;\n\t\t}\n\n\t\tmatchessTemplateSelected(id: number) {\n\t\t\treturn this.selectedTemplates.indexOf(id) >= 0;\n\t\t}\n\n\t\tselectTemplate(id: number) {\n\t\t\tvar index = this.selectedTemplates.indexOf(id);\n\t\t\tif (index >= 0) {\n\t\t\t\tthis.selectedTemplates.splice(index, 1);\n\t\t\t} else {\n\t\t\t\tthis.selectedTemplates.push(id);\n\t\t\t}\n\t\t}\n\n\t\ttoggleTemplateFavorite(template: Template) {\n\t\t\tif(template.favorited) {\n\t\t\t\tthis.WorkOrderTemplateService.removeFavorite(template.id).then(() => {\n\t\t\t\t\ttemplate.favorited = false;\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tthis.WorkOrderTemplateService.addFavorite(template.id).then(() => {\n\t\t\t\t\ttemplate.favorited = true;\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\ttoWorkorder() {\n\t\t\tif (this.fromOffice) {\n\t\t\t\tthis.$state.go(\"zipSolutions.workOrder\", this.$stateParams, { location: false });\n\t\t\t} else {\n\t\t\t\tthis.$state.go(\"zipSolutions.workOrder\");\n\t\t\t}\n\t\t}\n\n\t\tbuildFromTemplate() {\n\t\t\tif(this.inProgress) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (this.selectedTemplates.length === 0) {\n\t\t\t\tthis.toWorkorder();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.inProgress = true;\n\n\t\t\tthis.WorkOrderTemplateService.load(this.appointment.service_request.id, this.selectedTemplates.join(',')).then(() => {\n\t\t\t\tthis.toWorkorder();\n\t\t\t}, () => {\n\t\t\t\tthis.inProgress = false;\n\t\t\t});\n\t\t}\n\n\t\tcontinueWithPackages() {\n\t\t\tif(this.hasSelectedProducts() && this.modifiedPackage) {\n\t\t\t\tif(!confirm(\"You have products selected that have not yet been packaged.  Continue?\")) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.toWorkorder();\n\t\t}\n\n\t}\n}\n","/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule App.TemplateStore {\r\n\timport TitleBarService = App.Helpers.TitleBarService;\r\n\timport BannerService = App.WorkOrder.BannerService;\r\n\r\n\texport class TemplateStoreController {\r\n\r\n\t\tsearchText: string = '';\r\n\t\tfilterFavorites: boolean = false;\r\n\t\tshowSection: TemplateType = 'Global';\r\n\r\n\t\t//TODO Get from organization\r\n\t\ttokenCount: number = 0;\r\n\r\n\t\tfullTemplateList: StoreTemplate[];\r\n\t\tdisplayedTemplateList: StoreTemplate[];\r\n\t\tselectedTemplateId: number;\r\n\t\tpublic: boolean = true;\r\n\r\n\t\tpageSize: number = 25;\r\n\t\tpage: number = 1;\r\n\t\tcount: number = 0;\r\n\t\tmaxPage: number = 1;\r\n\r\n\t\tstatic $inject = ['$state', 'TemplateStoreService', 'TitleBarService', 'BannerService'];\r\n\t\tconstructor(\r\n\t\t\tprivate $state: ng.ui.IStateService,\r\n\t\t\tprivate TemplateStoreService: TemplateStoreService,\r\n\t\t\tprivate TitleBarService: TitleBarService,\r\n\t\t\tprivate BannerService: BannerService\r\n\t\t) {\r\n\t\t\tconst vm = this;\r\n\r\n\t\t\tTitleBarService.set('Rachel\\'s Place', 'pinkText');\r\n\t\t\tvm.getTemplatesList();\r\n\t\t}\r\n\r\n\t\tgetTemplatesList() {\r\n\t\t\tthis.TemplateStoreService.getTemplateList({\r\n\t\t\t\tquery: this.searchText,\r\n\t\t\t\tpage: this.page,\r\n\t\t\t\tsize: this.pageSize,\r\n\t\t\t\tpublic: this.public ? 1 : 0\r\n\t\t\t}).then((response) => {\r\n\t\t\t\tlet headers = response.headers();\r\n\r\n\t\t\t\tif (this.updatePageInfo(Number(headers.count))) {\r\n\t\t\t\t\tthis.page = this.maxPage;\r\n\t\t\t\t\treturn this.getTemplatesList();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.fullTemplateList = response.data.map((template) => { return new StoreTemplate(template)});\r\n\t\t\t\tthis.filterTemplates();\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tsetPage(page: number) {\r\n\t\t\tlet newPage = Math.max(1, Math.min(this.maxPage, page));\r\n\t\t\tif (newPage !== this.page) {\r\n\t\t\t\tthis.page = newPage;\r\n\t\t\t\tthis.getTemplatesList();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tgetItemCount() {\r\n\t\t\tif (this.count === 0) {\r\n\t\t\t\treturn '0 - 0 of 0';\r\n\t\t\t}\r\n\r\n\t\t\treturn Math.min(this.count, ((this.page - 1) * this.pageSize) + 1) + ' - ' + Math.min(this.count, this.pageSize * this.page) + ' of ' + this.count;\r\n\t\t}\r\n\r\n\t\tupdatePageInfo(count: number) {\r\n\t\t\tthis.count = count;\r\n\t\t\tthis.maxPage = Math.max(1, Math.ceil(this.count / this.pageSize));\r\n\r\n\t\t\treturn this.maxPage < this.page;\r\n\t\t}\r\n\r\n\t\ttoggleFavorites() {\r\n\t\t\tconst vm = this;\r\n\r\n\t\t\tthis.filterFavorites = !this.filterFavorites;\r\n\t\t\tvm.filterTemplates();\r\n\t\t}\r\n\r\n\t\ttoggleTemplateFavorite(template: StoreTemplate) {\r\n\t\t\tconst vm = this;\r\n\r\n\t\t\ttemplate.favorited = !template.favorited;\r\n\r\n\t\t\tif(template.favorited) {\r\n\t\t\t\tvm.TemplateStoreService.favoriteTemplate(template.id);\r\n\t\t\t} else {\r\n\t\t\t\tvm.TemplateStoreService.unfavoriteTemplate(template.id);\r\n\t\t\t}\r\n\r\n\t\t\tvm.filterTemplates();\r\n\t\t}\r\n\r\n\t\ttoggleSection(sectionName: TemplateType) {\r\n\t\t\tconst vm = this;\r\n\r\n\t\t\tif(sectionName == 'Proprietary') {\r\n\t\t\t\talert('You do not have access to any Proprietary templates');\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tthis.showSection = sectionName;\r\n\t\t\tthis.public = !this.public;\r\n\t\t\tvm.getTemplatesList();\r\n\t\t}\r\n\r\n\t\tfilterTemplates() {\r\n\t\t\tconst vm = this;\r\n\r\n\t\t\tvm.displayedTemplateList = vm.fullTemplateList.filter((template) => {\r\n\t\t\t\tlet favoriteFilter = true;\r\n\t\t\t\tif(vm.filterFavorites) {\r\n\t\t\t\t\tfavoriteFilter = template.favorited;\r\n\t\t\t\t}\r\n\t\t\t\treturn favoriteFilter;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tselectTemplate(id: number) {\r\n\t\t\tthis.selectedTemplateId = id;\r\n\t\t}\r\n\r\n\t\tviewTemplate() {\r\n\t\t\tif (!this.selectedTemplateId) {\r\n\t\t\t\talert('You must select a template to view');\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tthis.$state.go('zipSolutions.template-store.details', { id: this.selectedTemplateId });\r\n\t\t}\r\n\r\n\t\tisSelected(sectionName: TemplateType) {\r\n\t\t\tconst vm = this;\r\n\r\n\t\t\tif(vm.showSection === sectionName) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}","/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule App.TemplateStore {\r\n\timport TitleBarService = App.Helpers.TitleBarService;\r\n\timport BannerService = App.WorkOrder.BannerService;\r\n\timport Department = App.Appointments.Department;\r\n\r\n\tinterface ILocationProvider extends ng.ILocationProvider {\r\n        search: () => {[index: string]: string};\r\n    }\r\n\r\n\texport class TemplateViewController {\r\n\t\tdownloadTemplateHelpText: string = 'Select a logical department to store this template\\'s products. This department will also determine pricing for this template.';\r\n\r\n\t\tloading: boolean = true;\r\n\t\ttemplate: TemplateDetails;\r\n\t\tshowRating: boolean = true;\r\n\t\trating: number = 1;\r\n\t\tfromOffice: boolean = false;\r\n\r\n\t\t//TODO Get from Organization\r\n\t\ttokenCount: number = 0;\r\n\t\tfavoriteTemplate: boolean = false;\r\n\t\tgetFlyoutActive: boolean = false;\r\n\r\n\t\tdepartmentList: Department[] = [];\r\n\t\tselectedDepartment: number = null;\r\n\r\n\t\tstatic $inject = ['$scope', '$sce', '$state', 'TemplateStoreService', 'TitleBarService', 'BannerService', '$location', '$document'];\r\n\t\tconstructor(\r\n\t\t\tprivate $scope: ng.IScope,\r\n\t\t\tprivate $sce: ng.ISCEService,\r\n\t\t\tprivate $state: ng.ui.IStateService,\r\n\t\t\tprivate TemplateStoreService: TemplateStoreService,\r\n\t\t\tprivate TitleBarService: TitleBarService,\r\n\t\t\tpublic BannerService: BannerService,\r\n\t\t\tpublic $location: ILocationProvider,\r\n\t\t\tpublic $document: ng.IDocumentService\r\n\t\t) {\r\n\t\t\tconst vm = this;\r\n\t\t\tlet params = {},\r\n\t\t\t\theaders = {};\r\n\r\n\t\t\t$scope.$watch(() => vm.getFlyoutActive, (newVal: boolean) => {\r\n\t\t\t\tif(!newVal) {\r\n\t\t\t\t\tthis.showRating = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif ($location.search().office){\r\n\t\t\t\tthis.fromOffice = true;\r\n\t\t\t\tTitleBarService.set('');\r\n\t\t\t\t$document.find(\"header\")[0].className += \" hide\";\r\n\r\n\t\t\t\tparams = {\r\n\t\t\t\t\tcustom: 1,\r\n\t\t\t\t\tlocation: $location.search().locationId,\r\n\t\t\t\t\tafter_hours: $location.search().afterHours,\r\n\t\t\t\t\tcustomer_type: $location.search().customerType,\r\n\t\t\t\t};\r\n\r\n\t\t\t\theaders = {\r\n\t\t\t\t\torganization: $location.search().orgId,\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\tTitleBarService.set('Rachel\\'s Place', 'pinkText');\r\n\r\n\t\t\tif ($location.search().downloaded) {\r\n\t\t\t\tvm.TemplateStoreService.getDownloadedTemplateDetails(vm.$state.params['id'], params, headers).then((response) => {\r\n\t\t\t\t\tvm.template = response.data;\r\n\t\t\t\t\tvm.sortPackages();\r\n\t\t\t\t\tvm.loading = false;\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tvm.TemplateStoreService.getTemplateDetails(vm.$state.params['id']).then((response) => {\r\n\t\t\t\t\tvm.template = response.data;\r\n\t\t\t\t\tvm.sortPackages();\r\n\t\t\t\t\tvm.loading = false;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tvm.getDepartments();\r\n\t\t}\r\n\r\n\t\tsortPackages() {\r\n\t\t\tconst vm = this;\r\n\t\t\tlet packages = vm.template.packages;\r\n\r\n\t\t\tpackages.sort((a, b) => {\r\n\t\t\t\tif (a.index > b.index) return 1; return -1;\r\n\t\t\t});\r\n\r\n\t\t\tfor(let i = 0; i < packages.length; i++){\r\n\t\t\t\tvm.sortProducts(packages[i]);\r\n\t\t\t}\r\n\r\n\t\t\treturn packages;\r\n\t\t}\r\n\r\n\t\tsortProducts(pkg: TemplateDetailPackage) {\r\n\t\t\tlet services = pkg.services;\r\n\r\n\t\t\tservices.sort((a,b) => {\r\n\t\t\t\tif (a.index > b.index) return 1; return -1;\r\n\t\t\t});\r\n\r\n\t\t\treturn pkg;\r\n\t\t}\r\n\r\n\t\ttoggleGetTemplateFlyout() {\r\n\t\t\tthis.getFlyoutActive = !this.getFlyoutActive;\r\n\t\t}\r\n\r\n\t\tgetDepartments() {\r\n\t\t\tconst vm = this;\r\n\r\n\t\t\tvm.TemplateStoreService.getDepartments().then((response) => {\r\n\t\t\t\tvm.departmentList = response.data;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tdownloadTemplate() {\r\n\t\t\tconst vm = this;\r\n\r\n\t\t\tif(!vm.selectedDepartment) {\r\n\t\t\t\talert('A department must be selected');\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tlet options: DownloadTemplateOptions = {\r\n\t\t\t\tdepartment: vm.selectedDepartment,\r\n\t\t\t\tfavorited: vm.favoriteTemplate\r\n\t\t\t}\r\n\t\t\tvm.TemplateStoreService.rateTemplate(vm.template.id, vm.rating).then(() => {\r\n\t\t\t\tvm.TemplateStoreService.downloadTemplate(vm.template.id, options).then(() => {\r\n\t\t\t\t\tvm.$state.go('zipSolutions.template-store');\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tselectDepartment(departmentId: number) {\r\n\t\t\tthis.selectedDepartment = departmentId;\r\n\t\t}\r\n\r\n\t\tgetRegularPricing(pkg: TemplateDetailPackage): string {\r\n\t\t\tlet price = '$';\r\n\r\n\t\t\tswitch(pkg.mode) {\r\n\t\t\t\tcase 'admin':\r\n\t\t\t\t\tprice = 'Admin';\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'regular':\r\n\t\t\t\tcase 'whilehere':\r\n\t\t\t\t\tprice += pkg.prices[pkg.mode].regular;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'itemized':\r\n\t\t\t\t\tprice += pkg.prices[pkg.mode].whilehere;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tprice += pkg.prices.regular.regular;\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\treturn price;\r\n\t\t}\r\n\r\n\t\tisWhileHere(pkg: TemplateDetailPackage): boolean {\r\n\t\t\treturn pkg.mode === 'whilehere';\r\n\t\t}\r\n\r\n\t\tsecureIframeSrc(videoId: string) {\r\n\t\t\tconst vm = this;\r\n\t\t\treturn vm.$sce.trustAsResourceUrl(`https://www.youtube.com/embed/${videoId}?autoplay=1`);\r\n\t\t}\r\n\r\n\t\tgoBack() {\r\n\t\t\tthis.$state.go('zipSolutions.template-store');\r\n\t\t}\r\n\t}\r\n}","/// <reference path=\"_references.ts\"/>\n\nmodule App.TimeEvent {\n\tclass TimeEventController {\n\t\tprotected loading: boolean = true;\n\t\tprotected saving: boolean = false;\n\t\tprotected userId: number = null;\n\t\tprivate userLoaded: boolean = false;\n\t\tprivate loadEventsPending: boolean = false;\n\t\tpublic event: TimeEvent = null;\n\t\tpublic events: TimeEvent[] = [];\n\t\tpublic loadingEvents: boolean = false;\n\t\tpublic formattedTotal: string;\n\n\t\tconstructor(\n\t\t\tprotected TimeEventService: TimeEventService,\n\t\t\tprotected UserSession: App.User.UserSession,\n\t\t\tpublic ToastService: App.Utils.ToastService\n\t\t) {\n\t\t\tthis.UserSession.getUser()\n\t\t\t\t.then(u => this.userId = u.id)\n\t\t\t\t.then(u => this.loadEventsPending && this.loadEvents())\n\t\t\t\t.finally(() => this.userLoaded = true);\n\t\t}\n\n\t\tprotected getMoment(date: Date, time: Date): moment.Moment {\n\t\t\treturn moment(moment(date).format('YYYY-MM-DD') + ', ' + moment(time).format('HH:mm'), 'YYYY-MM-DD, HH:mm');\n\t\t}\n\n\t\tprotected formatInterval(start: moment.Moment, end: moment.Moment): string {\n\t\t\treturn (end.clone().add(1, 'minute') < start ? '-' : '') + this.formatTime(Math.abs(Math.floor(end.diff(start, 'minutes'))));\n\t\t}\n\n\t\tprotected formatTime(totalMinutes: number, short?: boolean): string {\n\t\t\tlet hours = Math.floor(totalMinutes / 60),\n\t\t\t\tminutes = totalMinutes - (hours * 60);\n\t\t\treturn (isNaN(hours) ? '0' : hours + (short ? ':' : 'h '))\n\t\t\t\t+ (isNaN(minutes) ? '0' : (short ? (minutes < 10 ? '0' : '') + minutes : (minutes + 'm')));\n\t\t}\n\n\t\tpublic isClockedOut(): boolean {\n\t\t\treturn this.event && this.event.time_event_tag && this.event.time_event_tag.tag_type === TagType.CLOCKED_OUT;\n\t\t}\n\n\t\tpublic loadEvents(): null|ng.IPromise<void> {\n\t\t\tthis.loadingEvents = true;\n\t\t\tif (!this.userLoaded) {\n\t\t\t\tthis.loadEventsPending = true;\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\treturn this.TimeEventService\n\t\t\t\t.getTimeEvents({\n\t\t\t\t\tuser: this.userId,\n\t\t\t\t\tshow_length: 1,\n\t\t\t\t\tstart_date: moment().format('YYYY-MM-DD'),\n\t\t\t\t})\n\t\t\t\t.then(r => this.events = r.data)\n\t\t\t\t.then(() => this.calculateTotalTime())\n\t\t\t\t.catch(e => this.ToastService.showError('Failed to get today\\'s events: ', e))\n\t\t\t\t.finally(() => this.loadingEvents = false);\n\t\t}\n\n\t\tpublic getEventStartDate(event: TimeEvent): string {\n\t\t\treturn moment(String(event.date), 'X').format('h:mm a');\n\t\t}\n\t\tpublic getEventEndDate(event: TimeEvent): string {\n\t\t\tif (event.length === null) {\n\t\t\t\treturn '';\n\t\t\t}\n\n\t\t\treturn moment(String(event.date + (event.length * 60)), 'X').format('h:mm a');\n\t\t}\n\t\tpublic getEventTotal(event: TimeEvent): string {\n\t\t\tif (event.length === null) {\n\t\t\t\treturn '';\n\t\t\t}\n\n\t\t\treturn this.formatTime(event.length, true);\n\t\t}\n\t\tpublic calculateTotalTime(): void {\n\t\t\tthis.formattedTotal = this.formatTime(\n\t\t\t\tthis.events\n\t\t\t\t\t.reduce((a, c) => a + (c.time_event_tag.paid && c.length ? c.length : 0), 0),\n\t\t\t\ttrue\n\t\t\t);\n\t\t}\n\t}\n\n\texport class TimeEventViewController extends TimeEventController {\n\t\tpublic static current_event: TimeEvent;\n\t\tpublic static instance: TimeEventViewController;\n\t\tpublic static getStatusColor(): string {\n\t\t\treturn this.current_event && this.current_event.time_event_tag\n\t\t\t\t? this.current_event.time_event_tag.color\n\t\t\t\t: 'red';\n\t\t}\n\t\tpublic static getEventTagName(): string {\n\t\t\treturn this.current_event\n\t\t\t\t&& this.current_event.time_event_tag\n\t\t\t\t&& this.current_event.time_event_tag.name\n\t\t\t\t|| null;\n\t\t}\n\n\t\tpublic tags: TimeEventTag[] = [];\n\t\tprotected menu: App.User.UserMenuController;\n\t\tpublic appointment: App.Appointments.Appointment;\n\n\t\tstatic $inject = ['$q', 'TimeEventService', 'AppointmentService', 'SelectedAppointment', 'UserSession', 'ToastService'];\n\t\tconstructor(\n\t\t\tprotected $q: ng.IQService,\n\t\t\tTimeEventService: TimeEventService,\n\t\t\tAppointmentService: App.Appointments.AppointmentService,\n\t\t\tprotected SelectedAppointment: App.Appointments.SelectedAppointment,\n\t\t\tUserSession: App.User.UserSession,\n\t\t\tToastService: App.Utils.ToastService\n\t\t) {\n\t\t\tsuper(TimeEventService, UserSession, ToastService);\n\t\t\tTimeEventViewController.instance = this;\n\n\t\t\tAppointmentService.addStatusListener(() => {\n\t\t\t\tthis.updateEvent();\n\t\t\t});\n\n\t\t\tSelectedAppointment.addListener(this.setAppointment.bind(this));\n\n\t\t\t$q.all([\n\t\t\t\tthis.TimeEventService\n\t\t\t\t\t.getTags({ orderBy: 'name', sort: 'asc' })\n\t\t\t\t\t.then(r => this.tags = r.data)\n\t\t\t\t\t.catch(e => ToastService.showError('Failed to get event tags: ', e)),\n\t\t\t\tthis.updateEvent()\n\t\t\t\t\t.catch(e => ToastService.showError('Failed to get event: ', e)),\n\t\t\t\tSelectedAppointment.getAppointment()\n\t\t\t\t\t.then(this.setAppointment.bind(this))\n\t\t\t\t\t.catch(angular.noop)\n\t\t\t]).then(() => this.loading = false);\n\t\t}\n\n\t\tpublic setAppointment(appt: App.Appointments.Appointment): void {\n\t\t\tthis.appointment = appt;\n\t\t}\n\n\t\tpublic setMenu(menu: App.User.UserMenuController): void {\n\t\t\tthis.menu = menu;\n\t\t}\n\n\t\tprotected updateEvent(): ng.IPromise<TimeEvent> {\n\t\t\treturn this.TimeEventService.getLatestEvent()\n\t\t\t\t.then(e => TimeEventViewController.current_event = this.event = e);\n\t\t}\n\n\t\tpublic update(e: TimeEvent): void {\n\t\t\tif (this.event && this.event.id === e.id) {\n\t\t\t\tthis.event = e;\n\t\t\t}\n\t\t\tif (TimeEventViewController.current_event && TimeEventViewController.current_event.id === e.id) {\n\t\t\t\tTimeEventViewController.current_event = e;\n\t\t\t}\n\t\t}\n\n\t\tpublic formatInterval(): string {\n\t\t\tif (!this.event) {\n\t\t\t\treturn '';\n\t\t\t}\n\n\t\t\treturn super.formatInterval(\n\t\t\t\tmoment(String(this.event.date), 'X'),\n\t\t\t\tmoment()\n\t\t\t);\n\t\t}\n\n\t\tpublic hideTag(tag: TimeEventTag): boolean {\n\t\t\treturn !tag\n\t\t\t\t|| tag.tag_type === TagType.CLOCKED_OUT\n\t\t\t\t|| ([TagType.TRAVELING, TagType.ON_SITE].indexOf(tag.tag_type) !== -1 && !this.SelectedAppointment.id)\n\t\t}\n\n\t\tpublic startClock(tag: TimeEventTag): void {\n\t\t\tif (this.saving || (this.event && this.event.time_event_tag.id === tag.id)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.saving = true;\n\t\t\tthis.TimeEventService\n\t\t\t\t.create({\n\t\t\t\t\ttime_event_tag: tag.id,\n\t\t\t\t\tappointment: this.SelectedAppointment.id,\n\t\t\t\t})\n\t\t\t\t.then(r => TimeEventViewController.current_event = this.event = r.data)\n\t\t\t\t.then(() => this.TimeEventService.confirmLastEvent())\n\t\t\t\t.then(() => this.menu && (this.menu.showTimeEvents = false))\n\t\t\t\t.catch(e => this.ToastService.showError('Failed to change clock: ', e))\n\t\t\t\t.finally(() => this.saving = false);\n\t\t}\n\n\t\tpublic clockOut(): void {\n\t\t\tif (!this.event) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst clockedOut = this.tags.filter(t => t.tag_type === TagType.CLOCKED_OUT);\n\t\t\tif (clockedOut.length < 1) {\n\t\t\t\tthis.ToastService.show('Clocked out status not found', App.Utils.ToastService.ERROR_SELECTOR);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.startClock(clockedOut[0]);\n\t\t}\n\t}\n\n\texport class TimeEventEditController extends TimeEventController {\n\t\tprivate static instance: TimeEventEditController;\n\t\tprivate static _$q: ng.IQService;\n\n\t\tpublic static confirmEvent(\n\t\t\tconfirmEvent: TimeEvent,\n\t\t\tprevEvent: TimeEvent\n\t\t): ng.IPromise<{}> {\n\t\t\treturn TimeEventEditController.instance.init(confirmEvent, prevEvent);\n\t\t}\n\n\t\tprotected defer: ng.IDeferred<{}>;\n\t\tprotected active: boolean = false;\n\n\t\tprotected prevEvent: TimeEvent;\n\n\t\tprotected appointment: App.Appointments.Appointment;\n\n\t\tprotected date: Date;\n\t\tprotected time: Date;\n\t\tprotected limit: moment.Moment;\n\n\t\tstatic $inject = ['$q', 'SelectedAppointment', 'TimeEventService', 'UserSession', 'ToastService'];\n\t\tconstructor(\n\t\t\tprotected $q: ng.IQService,\n\t\t\tprotected SelectedAppointment: App.Appointments.SelectedAppointment,\n\t\t\tTimeEventService: TimeEventService,\n\t\t\tUserSession: App.User.UserSession,\n\t\t\tToastService: App.Utils.ToastService\n\t\t) {\n\t\t\tsuper(TimeEventService, UserSession, ToastService);\n\t\t\tTimeEventEditController.instance = this;\n\t\t}\n\n\t\tpublic resolve(): void {\n\t\t\tif (this.defer) {\n\t\t\t\tthis.defer.resolve();\n\t\t\t\tthis.defer = null;\n\t\t\t\tthis.event = null;\n\t\t\t}\n\t\t}\n\n\t\tpublic formatInterval(): string {\n\t\t\treturn super.formatInterval(\n\t\t\t\tthis.limit,\n\t\t\t\tthis.getMoment(this.date, this.time)\n\t\t\t);\n\t\t}\n\n\t\tpublic resetDate(): void {\n\t\t\tthis.date = moment(moment(String(this.event.date), 'X').format('YYYY-MM-DD')).toDate();\n\t\t\tthis.time = this.getDateFromHours(moment(String(this.event.date), 'X')).toDate();\n\t\t}\n\n\t\tprotected getDateFromHours(hours: moment.Moment): moment.Moment {\n\t\t\treturn moment('1970-01-01, ' + hours.format('HH:mm'), 'YYYY-MM-DD, HH:mm');\n\t\t}\n\n\t\tpublic getError(): string|null {\n\t\t\tconst date = this.getMoment(this.date, this.time),\n\t\t\t\tnow = moment();\n\n\t\t\tif (!date.isSame(now, 'minute') && date.isAfter(now)) {\n\t\t\t\treturn 'max';\n\t\t\t}\n\n\t\t\tif (!date.isSame(this.limit, 'minute') && date.isBefore(this.limit)) {\n\t\t\t\treturn 'min';\n\t\t\t}\n\n\t\t\treturn null;\n\t\t}\n\n\t\tpublic save(): void {\n\t\t\tthis.saving = true;\n\n\t\t\tlet date = this.getMoment(this.date, this.time),\n\t\t\t\toDate = moment(moment(String(this.event.date), 'X').format('YYYY-MM-DD, HH:mm'), 'YYYY-MM-DD, HH:mm');\n\n\t\t\tif (Math.abs(oDate.diff(date, 'minutes')) > 0) {\n\t\t\t\tthis.TimeEventService\n\t\t\t\t\t.update(this.event.id, {\n\t\t\t\t\t\tcustom_date: date.unix(),\n\t\t\t\t\t})\n\t\t\t\t\t.then(r => this.event = r.data)\n\t\t\t\t\t.then(e => TimeEventViewController.instance.update(e))\n\t\t\t\t\t.then(_ => this.resolve())\n\t\t\t\t\t.catch((err) => this.ToastService.showError('Unable to update event: ', err))\n\t\t\t\t\t.finally(() => {\n\t\t\t\t\t\tthis.saving = false;\n\t\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tthis.resolve();\n\t\t\t\tthis.saving = false;\n\t\t\t}\n\t\t}\n\n\t\tpublic init(\n\t\t\tconfirmEvent: TimeEvent,\n\t\t\tprevEvent: TimeEvent,\n\t\t): ng.IPromise<any> {\n\t\t\tthis.resolve();\n\n\t\t\tthis.defer = this.$q.defer();\n\n\t\t\tthis.event = confirmEvent;\n\t\t\tthis.prevEvent = prevEvent;\n\n\t\t\tthis.limit = moment(String(prevEvent.date), 'X');\n\n\t\t\tthis.loading = true;\n\t\t\tthis.saving = false;\n\t\t\tthis.active = true;\n\n\t\t\tthis.resetDate();\n\n\t\t\tthis.SelectedAppointment.getAppointment()\n\t\t\t\t.then(appt => this.appointment = appt)\n\t\t\t\t.finally(() => this.loading = false);\n\n\t\t\tthis.defer.promise.finally(() => this.active = false);\n\n\t\t\treturn this.defer.promise;\n\t\t}\n\t}\n}\n","/// <reference path=\"../_references.ts\"/>\n\nmodule App.Timeclock {\n\timport TitleBarService = App.Helpers.TitleBarService;\n\timport UserSession = App.User.UserSession;\n\n\texport class TimeclockButtonController {\n\t\tstatic $inject = ['$q', 'UserSession', 'TimeclockService'];\n\n\t\tpublic isClocking: boolean = true;\n\t\tpublic loading: boolean = true;\n\n\t\tconstructor(\n\t\t\tprotected $q: ng.IQService,\n\t\t\tprotected UserSession: UserSession,\n\t\t\tprotected TimeclockService: TimeclockService\n\t\t) {\n\t\t\tUserSession.fetchSessionData().then(() => {\n\t\t\t\tthis.isClocking = false;\n\t\t\t\tthis.loading = false;\n\t\t\t});\n\t\t}\n\n\t\tisClocked(): boolean {\n\t\t\treturn this.loading || this.UserSession.isClocked();\n\t\t}\n\n\t\ttoggleClocked(): void {\n\t\t\tif (this.isClocking) return;\n\t\t\tthis.isClocking = true;\n\n\t\t\tthis.UserSession.getUser().then((user) => {\n\t\t\t\tlet clock: (techId: number) => ng.IPromise<Timeclock> = this.isClocked()\n\t\t\t\t\t? this.TimeclockService.clockOut\n\t\t\t\t\t: this.TimeclockService.clockIn;\n\n\t\t\t\tclock.bind(this.TimeclockService)(user.technician.id).then((timeclock: Timeclock) => {\n\t\t\t\t\tuser.technician.latest_time = timeclock;\n\t\t\t\t\tthis.UserSession.setUser(user);\n\t\t\t\t\tthis.isClocking = false;\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\t}\n}\n","/// <reference path=\"../_references.ts\"/>\nmodule App.Timeclock {\n\timport TitleBarService = App.Helpers.TitleBarService;\n\timport UserSession = App.User.UserSession;\n\n\tinterface LocalScope extends ng.IScope {\n\t\tmenu: App.User.UserMenuController;\n\t}\n\n\texport class TimeclockController {\n\t\tstatic $inject = ['$interval', '$state', 'UserSession', 'TimeclockService', '$scope'];\n\n\t\thistory: Timeclock[] = [];\n\t\tquery: string;\n\t\tpublic loading: boolean = true;\n\t\tpublic saving: boolean = false;\n\t\tpublic timeclock: Timeclock = null;\n\t\tpublic clockedTime: string = '';\n\n\t\tinit: boolean = false;\n\n\t\tconstructor(\n\t\t\tprotected $interval: ng.IIntervalService,\n\t\t\tpublic $state: ng.ui.IStateService,\n\t\t\tprotected UserSession: UserSession,\n\t\t\tpublic TimeclockService: TimeclockService,\n\t\t\tprotected $scope: LocalScope\n\t\t) {\n\t\t\tif ($scope.menu.showTimeClock) {\n\t\t\t\tthis.doInit();\n\t\t\t} else {\n\t\t\t\tconst watch = $scope.$watch(\n\t\t\t\t\t() => $scope.menu.showTimeClock,\n\t\t\t\t\tv => {\n\t\t\t\t\t\tif (v) {\n\t\t\t\t\t\t\twatch();\n\t\t\t\t\t\t\tthis.doInit();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tdoInit(): void {\n\t\t\tif (this.init) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.init = true;\n\n\t\t\tTimeclockService.addListener((timeclock: Timeclock) => {\n\t\t\t\tfor(var i = this.history.length - 1; i >= 0; --i) {\n\t\t\t\t\tif (this.history[i].id === timeclock.id) {\n\t\t\t\t\t\tthis.history[i] = timeclock;\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.history.unshift(timeclock);\n\t\t\t});\n\n\t\t\tthis.UserSession.getUser().then((user) => {\n\t\t\t\tconst time = new Date(Number(new Date()) - 1000 * 60 * 60 * 24 * 10); // Last 10 days\n\t\t\t\tthis.TimeclockService.fetchAll(\n\t\t\t\t\tuser.technician.id, {\n\t\t\t\t\t\t'OR[gte@time_in]': time,\n\t\t\t\t\t\t'OR[OR][gte@time_out]': time,\n\t\t\t\t\t\t'OR[OR][time_out]': 'null',\n\t\t\t\t\t}\n\t\t\t\t ).then((timeclocks: Timeclock[]) => {\n\t\t\t\t\tthis.history = timeclocks;\n\t\t\t\t\tthis.updateClockedTime();\n\t\t\t\t\tthis.$interval(this.updateClockedTime.bind(this), 2000);\n\t\t\t\t\tthis.loading = false;\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\tedit(timeclock: Timeclock): void {\n\t\t\tthis.timeclock = angular.copy(timeclock);\n\t\t}\n\n\t\tclear(): void {\n\t\t\tif (this.saving) return;\n\t\t\tthis.timeclock.note = null;\n\t\t\tthis.save();\n\t\t}\n\n\t\tsave(): void {\n\t\t\tif (this.saving) return;\n\t\t\tthis.saving = true;\n\t\t\tif (this.timeclock.note === '') this.timeclock.note = null;\n\n\t\t\tthis.TimeclockService.update(this.UserSession.user.technician.id, this.timeclock)\n\t\t\t\t.then((timeclock: Timeclock) => {\n\t\t\t\t\tthis.timeclock = null;\n\t\t\t\t}).finally(() => {\n\t\t\t\t\tthis.saving = false;\n\t\t\t\t});\n\t\t}\n\n\t\tgetFormattedTime(time: Date|null): string {\n\t\t\tif (time === null) return '';\n\n\t\t\tvar then = moment(time);\n\t\t\treturn then.format('hh:mm A');\n\t\t}\n\n\t\tgetFormattedDate(time: Date): string {\n\t\t\tif (time === null) return '';\n\n\t\t\tvar then = moment(time),\n\t\t\t\tnow = moment(new Date());\n\n\t\t\treturn then.week() === now.week()\n\t\t\t\t? then.format('ddd')\n\t\t\t\t: then.format('ddd MMM Do');\n\t\t}\n\n\t\tgetTimeclock(): Timeclock|null {\n\t\t\treturn (this.UserSession.user\n\t\t\t\t&& this.UserSession.user.technician\n\t\t\t\t&& this.UserSession.user.technician.latest_time\n\t\t\t\t|| null);\n\t\t}\n\n\t\tformatHours(fracHours: number): string {\n\t\t\tvar hours = Math.floor(fracHours),\n\t\t\t\tminutes = Math.round((fracHours - hours) * 60);\n\t\t\tif (hours > 999) return '> 1000 hours';\n\t\t\treturn `${hours}h ${minutes}m`;\n\t\t}\n\n\t\tupdateClockedTime(): void {\n\t\t\tlet time = this.getTimeclock();\n\n\t\t\tthis.clockedTime = time && (\n\t\t\t\tthis.formatHours(Math.abs(moment.duration(moment(\n\t\t\t\t\ttime.active\n\t\t\t\t\t\t? time.time_in\n\t\t\t\t\t\t: time.time_out\n\t\t\t\t).diff(new Date())).asHours()))\n\t\t\t) || '';\n\t\t}\n\n\t\tisActive(): boolean {\n\t\t\tlet time = this.getTimeclock();\n\t\t\treturn time && time.active;\n\t\t}\n\t}\n}\n","/// <reference path=\"../_references.ts\"/>\n\nmodule App.User {\n\texport class UserMenuController extends App.Utils.MenuItemController {\n\t\tstatic $inject = ['$state', '$rootScope', '$timeout', '$q', 'UserSession', 'PermissionService'];\n\n\t\tpublic menuOptions: App.MenuItem[] = [];\n\n\t\tprotected overlay: Element;\n\t\tprotected drawer: Element;\n\t\tpublic isClocking: boolean = false;\n\t\tpublic showTimeClock: boolean = false;\n\t\tpublic showDashboard: boolean = false;\n\t\tpublic showDispatchSummary: boolean = false;\n\t\tpublic showingMenu: boolean = false;\n\t\tpublic showTimeEvents: boolean = false;\n\t\tpublic showChat: boolean = false;\n\t\tpublic userDisplayName: string = '';\n\n\t\tconstructor(\n\t\t\t$state: ng.ui.IStateService,\n\t\t\t$rootScope: App.Administrative.AppRootScope,\n\t\t\tprotected $timeout: ng.ITimeoutService,\n\t\t\tprotected $q: ng.IQService,\n\t\t\tpublic UserSession: UserSession,\n\t\t\tprotected PermissionService: App.Helpers.PermissionService\n\t\t) {\n\t\t\tsuper($state);\n\n\t\t\t$rootScope.app.showTimeEvents = () => { this.showTimeEvents = true; };\n\n\t\t\tthis.overlay = document.createElement('div');\n\t\t\tthis.overlay.classList.add('mdl-layout__obfuscator-right');\n\n\n\t\t\tthis.overlay.addEventListener('click', () => this.toggleVisible());\n\t\t\tthis.$timeout(() => {\n\t\t\t\tconst drawer = document.querySelector('.mdl-layout__drawer-right-button');\n\n\t\t\t\tif (drawer) {\n\t\t\t\t\tdrawer.addEventListener('click', () => this.toggleVisible());\n\t\t\t\t}\n\t\t\t});\n\t\t\tthis.$timeout(() => {\n\t\t\t\tconst layout = document.querySelector('.mdl-layout');\n\n\t\t\t\tif (layout) {\n\t\t\t\t\tlayout.appendChild(this.overlay);\n\t\t\t\t}\n\t\t\t}, 200);\n\n\t\t\tUserSession.getUser().then((user: User) => {\n\t\t\t\tthis.userDisplayName = user.first_name + ' ' + user.last_name;\n\t\t\t});\n\n\t\t\tthis.menuOptions = [\n\t\t\t\t{\n\t\t\t\t\ttitle: 'Messages',\n\t\t\t\t\taction: this.toggleChat.bind(this),\n\t\t\t\t\tpermission: 'web.field.right-nav.messages',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttitle: 'Dashboard',\n\t\t\t\t\taction: this.toggleDashboard.bind(this),\n\t\t\t\t\tpermission: 'web.field.right-nav.stats',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttitle: 'Time Clock',\n\t\t\t\t\taction: this.toggleTimeClock.bind(this),\n\t\t\t\t\tpermission: 'web.field.right-nav.time-clock',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttitle: this.PermissionService.hasPermission('web.field.right-nav.time-clock')\n\t\t\t\t\t\t? 'Time Clock (new)'\n\t\t\t\t\t\t: 'Time Clock',\n\t\t\t\t\taction: this.toggleTimeEvents.bind(this),\n\t\t\t\t\tpermission: 'web.time-clock.field.view',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttitle: 'Dispatch Summary',\n\t\t\t\t\taction: this.toggleDispatchSummary.bind(this),\n\t\t\t\t\tpermission: 'web.field.right-nav.dispatch-summary',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttitle: 'Rachel\\'s Place',\n\t\t\t\t\tuiSref: 'zipSolutions.template-store',\n\t\t\t\t\tcssClass: 'pinkText',\n\t\t\t\t\tpermission: 'web.field.right-nav.template-store',\n\t\t\t\t}\n\t\t\t];\n\t\t}\n\n\t\tprivate getDrawer(): Element {\n\t\t\treturn this.drawer || (this.drawer = document.querySelector('.mdl-layout__drawer-right'));\n\t\t}\n\n\t\ttoggleVisible(): void {\n\t\t\tif (this.showTimeClock || this.showTimeEvents) return;\n\t\t\tthis.showingMenu = !this.showingMenu;\n\t\t\tthis.getDrawer().classList.toggle('is-visible');\n\t\t\tthis.overlay.classList.toggle('is-visible');\n\t\t}\n\n\t\thide(): void {\n\t\t\tthis.getDrawer().classList.remove('is-visible');\n\t\t\tthis.overlay.classList.remove('is-visible');\n\t\t}\n\n\t\ttoggleTimeClock(): ng.IPromise<boolean> {\n\t\t\tthis.showTimeClock = !this.showTimeClock;\n\t\t\treturn this.$q.when(this.showTimeClock);\n\t\t}\n\n\t\ttoggleTimeEvents(): ng.IPromise<boolean> {\n\t\t\tthis.showTimeEvents = !this.showTimeEvents;\n\t\t\treturn this.$q.when(this.showTimeEvents);\n\t\t}\n\n\t\ttoggleDashboard(): ng.IPromise<boolean> {\n\t\t\tthis.showDashboard = !this.showDashboard;\n\t\t\treturn this.$q.when(this.showDashboard);\n\t\t}\n\n\t\ttoggleDispatchSummary(): ng.IPromise<boolean> {\n\t\t\tthis.showDispatchSummary = !this.showDispatchSummary;\n\t\t\treturn this.$q.when(this.showDispatchSummary)\n\t\t}\n\n\t\tmenuActionComplete(item: MenuItem): void {\n\t\t\tthis.hide();\n\t\t}\n\n\t\ttoggleChat(): ng.IPromise<boolean> {\n\t\t\tthis.showChat = !this.showChat;\n\t\t\treturn this.$q.when(this.showChat);\n\t\t}\n\t}\n}\n","/// <reference path=\"../_references.ts\"/>\n\nmodule App.WorkOrder {\n\n\timport BannerService = App.WorkOrder.BannerService;\n\timport Package = App.PriceGuide.Package;\n\n\texport class BannerFlyoutController {\n\n\t\tbanners: Banner[];\n\t\tselectedBanner: number = null;\n\n\t\tstatic $inject: string[] = ['BannerService'];\n\n\t\tconstructor(public BannerService: BannerService) {\n\n\t\t\tconst vm = this;\n\n\t\t\tvm.loadBanners();\n\t\t}\n\n\t\tloadBanners() {\n\t\t\tconst vm = this;\n\n\t\t\tvm.BannerService.getPackageBanners().then((response) => {\n\t\t\t\tvm.banners = response.data;\n\t\t\t});\n\t\t}\n\n\t\ttoggleSelectedBanner(banner: Banner, pkg: Package) {\n\t\t\tconst vm = this;\n\n\t\t\tif(pkg.banner) {\n\t\t\t\tvm.selectedBanner = pkg.banner.id;\n\t\t\t}\n\n\t\t\tif(!pkg.banner || pkg.banner.id !== banner.id) {\n\t\t\t\tpkg.banner = banner;\n\t\t\t\tvm.selectedBanner = pkg.banner.id;\n\t\t\t} else {\n\t\t\t\tpkg.banner = null;\n\t\t\t\tvm.selectedBanner = null;\n\t\t\t}\n\t\t}\n\t}\n}\n","/// <reference path=\"../_references.ts\"/>\n/// <reference path=\"../price-guide/price-guide.components.ts\"/>\n\nmodule App.WorkOrder {\n    import Appointment = App.Appointments.Appointment;\n    import CustomerService = App.Customer.CustomerService;\n    import Department = App.Appointments.Department;\n    import EditedReturnedProduct = App.PriceGuide.EditedReturnedProduct;\n    import FinanceCompany = App.Appointments.FinanceCompany;\n    import FinancePlan = App.Appointments.FinancePlan;\n    import ItemManagementService = App.ItemManagement.ItemManagementService;\n    import OfficeService = App.Utils.OfficeService;\n    import OrderChangedEvent = App.NgSortable.OrderChangedEvent;\n    import Package = App.PriceGuide.Package;\n    import PackagePresetName = App.PriceGuide.PackagePresetName;\n    import PackagePresetNote = App.PriceGuide.PackagePresetNote;\n    import Product = App.PriceGuide.Product;\n    import ProductService = App.PriceGuide.ProductService;\n    import ReturnedProduct = App.PriceGuide.ReturnedProduct;\n    import SelectedAppointment = App.Appointments.SelectedAppointment;\n    import ServiceableItem = App.ItemManagement.ServiceableItem;\n    import ServiceableItemCreate = App.ItemManagement.ServiceableItemCreate;\n    import ServiceableItemType = App.ItemManagement.ServiceableItemType;\n    import ServicePlan = App.Appointments.ServicePlan;\n    import ServicePlanAgreement = App.Appointments.ServicePlanAgreement;\n    import TitleBarService = App.Helpers.TitleBarService;\n    import ToastService = App.Utils.ToastService;\n    import Warranty = App.PriceGuide.Warranty;\n    import WorkOrderTemplateService = App.WorkOrderTemplate.WorkOrderTemplateService;\n\n    export class WorkOrderController {\n        appointment: Appointment = null;\n        warranties: Warranty[] = [];\n        summary: Summary = null;\n        title: string = '';\n\n        canEditProducts: boolean;\n        inEditMode: boolean = false;\n        isSaving: boolean = false;\n        packageAction: string = '';\n        fromOffice: boolean = false;\n\n        inArchivedMode: boolean = false;\n        archivedPackages?: Package[] = null;\n        pendingArchivedPackages: Package[] = [];\n        pendingRestores: {[key: number]: boolean} = {};\n        originalArchivedIndecies: {[key: number]: number} = {};\n        isArchivedLoading: boolean = false;\n\n        bannerOptions: boolean = false;\n        bannerPackage: Package = null;\n\n        financePlanLoading: boolean = false;\n\n        isShowingEmail: boolean = false;\n        editEmailFlyout: boolean = false;\n        showNewEmail: boolean = false;\n        newEmail: string = '';\n        isApporvalLoaded: boolean = false;\n\n        editEtc: boolean = false;\n        estimatedTime: string = '';\n        estimatedEndTime: string = '';\n\n        editAdjustments: boolean = false;\n        adjustmentCode: string = '';\n\n        editSalesTax: boolean = false;\n        salesTaxOverrideType: string = null;\n        salesTaxOverride: number = null;\n\n        emailWorkOrder: boolean = true;\n        email: string = '';\n        emailNote: string = '';\n\n        previewRecommendation: boolean = false;\n        previewRecommendationHtml?: string = null;\n\n        presetNames: PackagePresetName[] = [];\n        presetNotes: PackagePresetNote[] = [];\n\n        financePlanOptions: boolean = false;\n        financeCompanies: FinanceCompany[] = [];\n        financePlan: FinancePlan = null;\n        financeBestPrice: number|null = null;\n        financePlanExists: boolean = false;\n\n        servicePlanOptions: boolean = false;\n        servicePlans: ServicePlan[] = [];\n        servicePlan: ServicePlan = null;\n        activeServicePlan: ServicePlan = null;\n        inactiveServicePlan: ServicePlan = null;\n        isUpdatingServicePlan: boolean = false;\n        isUpdatingProductDisplay: boolean = false;\n        isUpdatingSinglePrice: boolean = false;\n\n        lastServicePlan: ServicePlanAgreement = null;\n\n        termsConditions: TermsConditions[] = [];\n        activeTerms: TermsConditions[] = [];\n        signatureSlideOut: boolean = false;\n        acceptedAllTurns: boolean = false;\n\n        signature: string = null;\n        approval: Approval = null;\n        signaturePrintName: string = null;\n        isSavingSignature: boolean = false;\n\n        originalPackages: Package[] = [];\n\n        showNewItemForm: boolean = false;\n        selectedItemType: ServiceableItemType = null;\n        serviceItemTypes: ServiceableItemType[] = [];\n        serviceItems: ServiceableItem[] = [];\n\n        showCreateTemplate: boolean = false;\n        templateFavorite: boolean = false;\n        template: Template = new Template();\n\n        blockingSaves: Promise<void>[] = new Array();\n\n        user: App.User.User;\n\n        interval: number;\n\n        approvalTextPhone: string;\n        approvalTextPending: boolean = false;\n        approvalTextShow: boolean = false;\n        approvalTextNew: boolean = false;\n\n        approvalEmail: string = '';\n        approvalEmailPending: boolean = false;\n        approvalEmailShow: boolean = false;\n        approvalEmailNew: boolean = false;\n\n        org: App.Utils.OrganizationETCSettingData;\n\n        sortableOptions:Object = {\n            containment: '.packages',\n            scrollableContainer: '.work-order-body',\n            allowDuplicates: false,\n            orderChanged: this.orderChanged.bind(this),\n            dragMove: this.dragMove.bind(this)\n        };\n\n        departments: Department[];\n        departmentsLoaded: boolean = false;\n\n\t\tssp_price_card_text: string = '□□□□ □□□□□□□□□ □□□□□□□□□□□';\n\n        private newServiceId: number = 0;\n        private productEditMap: {[packageId: number]: {[productId: number]: boolean}} = {};\n\n        static $inject: string[] = [\n            '$window',\n            '$scope',\n            '$sce',\n            '$state',\n            'SelectedAppointment',\n            'TitleBarService',\n            'ProductService',\n            'WorkOrderTemplateService',\n            'WorkOrderService',\n            'PackageActionsService',\n            'HistoryService',\n            'OfficeService',\n            'UserSession',\n            'PermissionService',\n            'ToastService',\n            '$q',\n            'BannerService',\n            'ItemManagementService',\n            'CustomerService',\n            'OrganizationService'\n        ];\n\n        constructor(\n            private $window: ng.IWindowService,\n            private $scope: ng.IScope,\n            private $sce: ng.ISCEService,\n            private $state: ng.ui.IStateService,\n            private SelectedAppointment: SelectedAppointment,\n            private TitleBarService: TitleBarService,\n            private ProductService: ProductService,\n            private WorkOrderTemplateService: WorkOrderTemplateService,\n            private WorkOrderService: WorkOrderService,\n            private PackageActionsService: PackageActionsService,\n            private HistoryService: App.History.HistoryService,\n            private OfficeService: OfficeService,\n            private UserSession: App.User.UserSession,\n            private PermissionService: App.Helpers.PermissionService,\n            public ToastService: ToastService,\n            public $q: ng.IQService,\n            public BannerService: BannerService,\n            public ItemManagementService: ItemManagementService,\n            public CustomerService: CustomerService,\n            protected OrganizationService: App.Utils.OrganizationService\n        ) {\n            const vm = this;\n\n            TitleBarService.set('Appointment');\n\n            OfficeService.getAppointment().then(response => {\n                this.fromOffice = true;\n                this.setAppointment(response.data);\n            }).catch(() => {\n                SelectedAppointment.getAppointment().then((appointment) => {\n                    this.setAppointment(appointment);\n                    this.getEtcTime();\n                });\n            });\n\n            this.UserSession.getUser().then((user) => this.user = user);\n            this.canEditProducts = this.PermissionService.hasPermission('web.field.work-order.products.edit');\n\n            OrganizationService.getETCSettingDetails().then((org) => {\n                vm.org = org.data;\n            });\n\n\t\t\tOrganizationService.getPriceCardText()\n\t\t\t\t.then((r) => this.ssp_price_card_text = r.data.ssp_price_card_text);\n\n            vm.getPackagePresets();\n        }\n\n        setProductOriginals(product: EditedReturnedProduct) {\n            if (!product.original_set) {\n                product.original_set = true;\n                product.original_name = product.service.name;\n                product.original_description = product.service.description;\n                product.original_price = product.service.service_price_override && product.service.service_price_override.amount || null;\n                product.new_price = product.original_price;\n            }\n        }\n\n        editProduct(product: EditedReturnedProduct, pkg: Package) {\n            this.setProductOriginals(product);\n\n            product.last_quantity = product.new_quantity;\n            product.last_name = product.service.name;\n            product.last_description = product.service.description;\n            product.last_price = product.new_price;\n\n            this.productEditMap[pkg.id] = this.productEditMap[pkg.id] || {};\n            this.productEditMap[pkg.id][product.id] = true;\n        }\n\n        stopEditProduct(product: EditedReturnedProduct, pkg: Package, force?: boolean) {\n            if (!force) {\n                // Validation\n                if (product.is_new) {\n                    if (!product.service.department) {\n                        return;\n                    }\n                }\n                if (product.is_date) {\n                    if (!product.start_date || !product.start_time || !product.end_date || !product.end_time) {\n                        return;\n                    }\n                }\n                if (!product.service.name) {\n                    return;\n                }\n            }\n            product.is_done = true;\n            if (product.is_date) {\n                const\n                    start = moment(\n                        moment(product.start_date).format('YYYY-MM-DD')\n                        + ' '\n                        + moment(<any>product.start_time, 'HH:mm').format('HH:mm'),\n                        'YYYY-MM-DD HH:mm'\n                    ),\n                    end = moment(\n                        moment(product.end_date).format('YYYY-MM-DD')\n                        + ' '\n                        + moment(<any>product.end_time, 'HH:mm').format('HH:mm'),\n                        'YYYY-MM-DD HH:mm'\n                    ),\n                    diff = Math.abs(end.diff(start, 'hours', true)),\n                    hours = Math.floor(diff),\n                    seconds = Math.round((diff - hours) * 60),\n                    elem = angular.element('<div>' + product.service.description + '</div>'),\n                    children = elem.children(),\n                    regex = new RegExp(\n                        (this.user.technician && this.user.technician.full_name || '').replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')\n                        + 'From: \\d{4}-\\d{2}-\\d{2} \\d\\d?:\\d{2} (a|p)mTo:\\d{4}-\\d{2}-\\d{2} \\d\\d?:\\d{2} (a|p)m'\n                    ),\n                    html = '<pre>'\n                            + (this.user.technician && this.user.technician.full_name || '')\n                            + '<br/>From: '\n                            + (\n                                start.isBefore(end)\n                                    ? start.format('YYYY-MM-DD h:mm a') + '<br/>To: ' + end.format('YYYY-MM-DD h:mm a')\n                                    : end.format('YYYY-MM-DD h:mm a')   + '<br/>To: ' + start.format('YYYY-MM-DD h:mm a')\n                            )\n                        + '</pre>';\n\n                let updated = false;\n\n                for (let i = 0; i < children.length; ++i) {\n                    if ('PRE' === children[i].tagName && regex.test(children[i].textContent)) {\n                        children[i].outerHTML = html;\n                        updated = true;\n                    }\n                }\n\n                product.service.labor_minutes = diff * 60;\n                product.service.name = 'Labor ' + hours + ':' + (seconds < 10 ? ('0' + String(seconds)) : seconds);\n                product.service.description = elem.html();\n\n                if (!updated) {\n                    product.service.description = html\n                        + (\n                            product.service.description\n                                ? '<br/><br/>' + product.service.description\n                                : ''\n                        );\n                }\n            }\n            this.productEditMap[pkg.id] = this.productEditMap[pkg.id] || {};\n            this.productEditMap[pkg.id][product.id] = false;\n            if (product.is_new) {\n                this.setProductOriginals(product);\n            }\n        }\n\n        revertProduct(product: EditedReturnedProduct, pkg: Package) {\n            if (product.is_new && !product.is_done) {\n                pkg.services.splice(pkg.services.findIndex((s: EditedReturnedProduct) => s.id === product.id), 1);\n            } else {\n                product.new_quantity = product.last_quantity;\n                product.new_price = product.last_price;\n                product.service.name = product.last_name;\n                product.service.description = product.last_description;\n            }\n            this.stopEditProduct(product, pkg, true);\n        }\n\n        showProductEdit(product: EditedReturnedProduct, pkg: Package): boolean {\n            return this.productEditMap[pkg.id] && this.productEditMap[pkg.id][product.id];\n        }\n\n        addNewService(pkg: Package, dateBased?: boolean) {\n            // Only allow one new service at a time\n            if (pkg.services.some((s: EditedReturnedProduct) => s.is_new && !s.is_done)) {\n                return;\n            }\n            if (!this.departmentsLoaded) {\n                this.ProductService.getDepartments()\n                    .then(resp => {\n                        this.departments = resp.data;\n                        this.departmentsLoaded = true;\n                    })\n                    .catch(err => this.ToastService.showError('Failed to load departments: ', err));\n            }\n\n            const nService: EditedReturnedProduct = <any>{\n                id: --this.newServiceId,\n                is_new: true,\n                is_done: false,\n                is_date: dateBased === true,\n\n                quantity: 1,\n                index: (pkg.services.sort((a, b) => b.index - a.index)[0] || { index: -1 }).index + 1,\n                service: {\n                    name: '',\n                    description: '',\n                },\n            };\n\n            if (nService.is_date) {\n                const date = moment(moment().format('YYYY-MM-DD HH:mm'), 'YYYY-MM-DD HH:mm');\n\n                nService.start_date = date.toDate();\n                nService.start_time = date.toDate();\n                nService.end_date = date.toDate();\n                nService.end_time = date.toDate();\n\n                nService.service.name = 'Labor';\n            }\n\n            pkg.services.push(nService);\n            this.editProduct(nService, pkg);\n        }\n\n        getPackageList(): Package[] {\n            if (this.inArchivedMode) {\n                return this.isArchivedLoading ? [] : this.archivedPackages;\n            }\n\n            this.sortPackages();\n\n            return this.appointment.service_request.packages;\n        }\n\n        toggleArchivedMode(): void {\n            if (!this.PermissionService.hasPermission('web.field.work-order.edit')) {\n                return;\n            }\n            this.$state.go('.', { deleted: this.inArchivedMode ? '0' : '1' });\n\n            if (this.inArchivedMode) {\n                this.inArchivedMode = false;\n                if (this.isArchivedLoading) {\n                    return;\n                }\n\n                let shownPackageError = false;\n\n                this.archivedPackages\n                    .filter((pkg) => pkg.index !== this.originalArchivedIndecies[pkg.id])\n                    .forEach((pkg) => {\n                        this.ProductService.updatePackage(this.appointment.service_request.id, pkg, { quiet: 1 })\n                            .catch((err) => {\n                                if (!shownPackageError) {\n                                    shownPackageError = true;\n                                    this.ToastService.showError('Failed to update package order: ', err);\n                                }\n                            });\n                        this.originalArchivedIndecies[pkg.id] = pkg.index;\n                    });\n\n                return;\n            }\n\n            this.inArchivedMode = true;\n            this.isShowingEmail = false;\n            this.PackageActionsService.resetSelections();\n\n            if (this.isArchivedLoading) {\n                return;\n            }\n\n            this.isArchivedLoading = true;\n\n            this.ProductService.getPackages(this.appointment.service_request.id, { archived: 1 })\n                .then((response) => {\n                    this.archivedPackages = response.data || [];\n                    this.pendingArchivedPackages\n                        .filter((pkg) => this.archivedPackages.findIndex((p) => p.id === pkg.id) === -1)\n                        .forEach((pkg) => this.archivedPackages.push(pkg));\n                    this.pendingArchivedPackages = [];\n                    this.archivedPackages = this.archivedPackages.map(pkg => this.sortProducts(pkg));\n                    this.archivedPackages.forEach((pkg) => this.originalArchivedIndecies[pkg.id] = pkg.index);\n                    this.fixArchivedPackageIndecies();\n                    this.isArchivedLoading = false;\n                });\n        }\n\n        fixArchivedPackageIndecies() {\n            this.archivedPackages = this.archivedPackages.sort((pkg1, pkg2) => pkg1.index - pkg2.index);\n            for (let i = this.archivedPackages.length - 1; i >= 0; --i) {\n                this.archivedPackages[i].index = i;\n            }\n        }\n\n        addArchivedPackage(pkg: Package) {\n            if (this.archivedPackages === null) {\n                this.pendingArchivedPackages.push(pkg);\n            } else {\n                this.archivedPackages.push(pkg);\n                this.originalArchivedIndecies[pkg.id] = pkg.index;\n                this.fixArchivedPackageIndecies();\n            }\n        }\n\n        showMode(pkg: Package, mode: string): boolean {\n            return pkg.mode === mode || this.getModeBool(mode);\n        }\n\n        getActiveTerms(): TermsConditions[]\n        {\n            return this.termsConditions.filter((termsConditions: TermsConditions) => {\n                return termsConditions.approved;\n            });\n        }\n\n        checkTerms(): boolean {\n            return (this.termsConditions.length === 0) || (this.getActiveTerms().length >= 1);\n        }\n\n        isPositive(number: string|number): boolean {\n            if (angular.isString(number)) {\n                number = parseFloat(number.replace(/,/g, ''));\n            }\n            return number > 0;\n        }\n\n        formatDate(dateString: string): string {\n            let date = new Date(dateString),\n                dateParts = date.toDateString().split(' ');\n\n            return dateParts[1] + ' ' + dateParts[2] + ', ' + dateParts[3];\n        }\n\n        frequencyToTerm(frequency: string): string {\n            switch(frequency) {\n                case 'monthly':\n                case 'month':\n                    return 'month';\n                case 'yearly':\n                case 'year':\n                case 'annual':\n                    return 'year';\n                default:\n                    throw 'Unable to get term from ' + frequency;\n            }\n        }\n\n        removeFinance(): void {\n            if (this.financePlan !== null) {\n                this.financePlan = null;\n                this.updateFinancePlan(this.financePlan);\n            }\n        }\n\n        updateFinancePlan(financePlan: FinancePlan) {\n            const vm = this;\n\n            if (financePlan === null) {\n                vm.financePlan = null;\n            }\n\n            return vm.WorkOrderService.updateFinancePlan(vm.appointment.service_request.id, financePlan).then((response) => {\n                vm.appointment.service_request.finance_plan = vm.financePlan = response.data.finance_plan;\n                vm.getPackages().then(() => {\n                    vm.getSummary().then(() => {\n                        componentHandler.upgradeAllRegistered();\n                    });\n                });\n            });\n        }\n\n        usesFinancePlans(): boolean {\n            return this.financePlanExists && this.getModeBool('finance') || !!this.financePlan;\n        }\n\n        getModeBool(type: string): boolean {\n            return <boolean>(\n                this.appointment &&\n                this.appointment.service_request &&\n                this.appointment.service_request.customer &&\n                this.appointment.service_request.customer.rate_mode &&\n                this.appointment.service_request.customer.rate_mode[type]\n            );\n        }\n\n        openFinancePlans(): void {\n            this.financePlanLoading = true;\n            this.financePlanOptions = true;\n            componentHandler.upgradeAllRegistered();\n\n            this.getFinancePlans()\n                .then(() => {\n                    if (!this.usesFinancePlans()) {\n                        this.financePlanOptions = false;\n                    }\n\n                    this.financePlanLoading = false;\n                    componentHandler.upgradeAllRegistered();\n                });\n        }\n\n        getFinancePlans(): ng.IPromise<void> {\n            return this.WorkOrderService.getFinanceCompanies(this.appointment.service_request.id)\n                .then((response) => {\n                    this.financeCompanies = [];\n                    (response.data || []).forEach((company: FinanceCompany) => {\n                        let plans: FinancePlan[] = [];\n\n                        (company.plans || []).forEach((plan: FinancePlan) => {\n                            if (!plan.visible) {\n                                return;\n                            }\n                            this.financePlanExists = true;\n                            let amount = parseFloat(plan.amount.replace(/,/g, ''));\n                            if (this.financeBestPrice === null || amount < this.financeBestPrice) {\n                                this.financeBestPrice = amount;\n                            }\n                            plans.push(plan);\n                        });\n                        if (plans.length) {\n                            company.plans = plans;\n                            this.financeCompanies.push(company);\n                        }\n                    });\n                    componentHandler.upgradeAllRegistered();\n                });\n        }\n\n        removeWarranty(pkg: Package): void {\n            if (!angular.isNumber(pkg.warranty.id)) {\n                pkg.warranty = null;\n            }\n        }\n\n        savePackages(): ng.IPromise<Package[]> {\n            const promises: {[id: number]: ng.IPromise<Package>} = {};\n\n            // TODO: Only send changed packages\n            this.appointment.service_request.packages.forEach((toUpdatePkg) => {\n                promises[toUpdatePkg.id] = this.savePackage(toUpdatePkg).then((updatedPkg) => {\n                    this.selectPreset(updatedPkg);\n                    return updatedPkg;\n                });\n            });\n\n            return this.$q.all(promises).then((response) => {\n                const updatedPackageIds = Object.keys(response),\n                    updatedPackages: Package[] = []\n\n                updatedPackageIds.forEach((id) => {\n                    const pkg: Package = response[id];\n\n                    updatedPackages.push(pkg);\n\n                    for (let i = this.appointment.service_request.packages.length - 1; i >= 0; --i) {\n                        if (this.appointment.service_request.packages[i].id === pkg.id) {\n                            this.appointment.service_request.packages[i] = this.sortProducts(pkg);\n                            break;\n                        }\n                    }\n\n                    for (let i = this.originalPackages.length - 1; i >= 0; --i) {\n                        if (this.originalPackages[i].id === pkg.id) {\n                            this.originalPackages[i] = angular.copy(pkg);\n                            break;\n                        }\n                    }\n\n                });\n\n                const promise = updatedPackages.length\n                    ? this.getSummary().then(() => {\n                        return updatedPackages;\n                    })\n                    : this.$q.when(updatedPackages);\n\n                return promise.then(d => {\n                    this.appointment.service_request.packages.forEach((p) => p.services.forEach(s => this.setProductOriginals(<EditedReturnedProduct><any>s)));\n                    return d;\n                });\n            });\n        }\n\n        getQuantity(product: Product): void {\n            product.new_quantity = parseFloat(String(product.new_quantity)) || 1;\n            product.new_quantity = product.new_quantity <= 0 ? 1 : product.new_quantity;\n        }\n\n        savePackage(pkg: Package): ng.IPromise<Package> {\n            const promises: ng.IHttpPromise<{}>[] = [],\n                services: EditedReturnedProduct[] = <EditedReturnedProduct[]>pkg.services;\n\n            services.forEach(service => {\n                const isChanged = service.is_new || (angular.isDefined(service.new_quantity) && service.new_quantity !== service.quantity\n                        || service.original_set && (\n                            service.original_name !== service.service.name\n                            || service.original_description !== service.service.description\n                            || service.original_price !== service.new_price\n                        ));\n\n                if (isChanged) {\n                    service.quantity = service.new_quantity;\n\n                    service.original_set = true;\n                    service.original_name = service.service.name;\n                    service.original_description = service.service.description;\n                    service.original_price = service.new_price;\n                    service.service.service_price_override = service.original_price\n                        ? <any>{ amount: service.original_price }\n                        : null;\n\n                    if (service.is_new) {\n                        const newService: EditedReturnedProduct = <any>{\n                            quantity: service.quantity,\n                            index: service.index,\n                            create_service: {\n                                name: service.original_name,\n                                description: service.original_description,\n                                service_price_override: service.original_price,\n                                department: service.service.department,\n                                labor_minutes: service.service.labor_minutes || 0,\n                                material_cost: service.service.material_cost || 0,\n                                tax_exempt: service.service.tax_exempt,\n                            }\n                        };\n\n                        if (!this.PermissionService.hasPermission('web.field.work-order.products.edit_price')) {\n                            delete newService.create_service.service_price_override;\n                        }\n                        service.is_new = false;\n\n                        promises.push(\n                            this.ProductService.createPackageService(\n                                this.appointment.service_request.id,\n                                pkg.id,\n                                newService\n                            )\n                        );\n                    } else {\n                        const newService: EditedReturnedProduct = <any>{\n                            id: service.id,\n                            quantity: service.quantity,\n                            name: service.original_name,\n                            description: service.original_description,\n                            service_price_override: service.original_price,\n                            index: service.index,\n                        };\n\n                        if (!this.PermissionService.hasPermission('web.field.work-order.products.edit_price')) {\n                            delete (<Product><any>newService).service_price_override;\n                        }\n\n                        promises.push(\n                            this.ProductService.updatePackageService(\n                                this.appointment.service_request.id,\n                                pkg.id,\n                                newService\n                            )\n                        );\n                    }\n                }\n            });\n\n            return this.$q.all(promises).then(() => {\n                let savePkg = angular.copy(pkg);\n                delete savePkg.services; // We do not want to send them on update as it will duplicate\n\n                return this.ProductService.updatePackage(this.appointment.service_request.id, savePkg)\n                    .then((newPackage) => {\n                        return pkg = newPackage.data;\n                    });\n            });\n        }\n\n        setAppointment(appointment: Appointment): ng.IPromise<void> {\n            const vm = this,\n                isDifferent = !vm.appointment || vm.appointment.service_request.id !== appointment.service_request.id;\n\n            vm.appointment = appointment;\n            vm.appointment.service_request.packages = [];\n            vm.servicePlan = vm.appointment.service_request.service_plan;\n            vm.financePlan = vm.appointment.service_request.finance_plan;\n\n            if (isDifferent) {\n                vm.inArchivedMode = false;\n                vm.archivedPackages = null;\n                vm.pendingArchivedPackages = [];\n                vm.originalArchivedIndecies = {};\n                vm.isArchivedLoading = false;\n                vm.pendingRestores = {};\n            }\n\n            vm.setCustomerTitle();\n            vm.PackageActionsService.subscribeCallback(vm.updateAll.bind(this));\n            vm.PackageActionsService.setActiveAppointmentId(vm.appointment.id);\n\n            let plan = vm.appointment.service_request.customer.last_service_plan;\n\n            if(plan) {\n                if(plan.active) {\n                    vm.activeServicePlan = plan.service_plan;\n                    if(vm.activeServicePlan) {\n                        vm.activeServicePlan.id = 'a' + vm.activeServicePlan.id;\n                    }\n                }\n                if(!plan.active) {\n                    vm.inactiveServicePlan = plan.service_plan;\n                }\n            }\n\n            vm.lastServicePlan = plan;\n\n            if (!vm.servicePlan && vm.activeServicePlan) {\n                vm.servicePlan = angular.copy(vm.activeServicePlan);\n            }\n\n            let emails = vm.appointment.service_request.customer.emails;\n\n            this.email = emails.length\n                ? emails[0].email\n                : '';\n\n            let phones = vm.appointment.service_request.customer.phone_numbers;\n            this.approvalTextPhone = phones.length\n                ? (phones.filter(p => p.send_text)[0] || {number: ''}).number\n                : '';\n\n            if (this.$state.params.deleted === '1') {\n                this.toggleEditMode();\n                this.toggleArchivedMode();\n            }\n\n            return this.updateAll();\n        }\n\n        toggleMobileApproval() {\n            this.approvalEmailShow = false;\n            this.approvalTextShow = !this.approvalTextShow;\n        }\n\n        sendApprovalText() {\n            if (this.approvalTextPending) {\n                return;\n            }\n\n            this.approvalTextPending = true;\n\n            this.WorkOrderService\n                .sendApprovalText(\n                    this.appointment.service_request.id,\n                    this.approvalTextPhone,\n                    this.fromOffice ? null : this.appointment.id\n                )\n                .then(() => {\n                    this.ToastService.show('Sent approval text');\n                    if (!this.appointment.service_request.customer.phone_numbers.find(p => p.number === this.approvalTextPhone)) {\n                        this.appointment.service_request.customer.phone_numbers.push({\n                            id: null,\n                            number: this.approvalTextPhone,\n                            send_text: true,\n                        });\n                    }\n                })\n                .catch(err => this.ToastService.showError('Failed to send approval: ', err))\n                .finally(() => {\n                    this.approvalTextPending = false;\n                    this.toggleMobileApproval();\n                });\n        }\n\n        toggleEmailApproval() {\n            this.approvalTextShow = false;\n            this.approvalEmailShow = !this.approvalEmailShow;\n        }\n\n        toggleApprovalEmailNew() {\n            this.approvalEmailNew = !this.approvalEmailNew;\n            this.approvalEmail = '';\n        }\n\n        sendApprovalEmail() {\n            if (this.approvalEmailPending) {\n                return;\n            }\n\n            this.approvalEmailPending = true;\n\n            this.WorkOrderService\n                .sendApprovalEmail(\n                    this.appointment.service_request.id,\n                    this.approvalEmail,\n                    this.fromOffice ? null : this.appointment.id\n                )\n                .then(() => {\n                    this.ToastService.show('Sent approval email');\n                    if (!this.appointment.service_request.customer.emails.find(e => e.email === this.approvalEmail)) {\n                        this.appointment.service_request.customer.emails.push({\n                            id: null,\n                            email: this.approvalEmail,\n                            marketing: true,\n                        });\n                    }\n                })\n                .catch(err => this.ToastService.showError('Failed to send approval: ', err))\n                .finally(() => {\n                    this.approvalEmailPending = false;\n                    this.toggleEmailApproval();\n                });\n        }\n\n        updateAll() {\n            const vm = this;\n\n            return vm.getPackages().then(() => {\n                vm.getSummary().then(() => {\n                    vm.getServicePlans();\n                    vm.getServiceItems();\n                    vm.getFinancePlans();\n                    vm.getTermsConditions();\n                    vm.getServiceItemTypes();\n                    vm.getSignature();\n                });\n            });\n        }\n\n        selectPreset(pkg: Package): void {\n            const vm = this;\n\n            pkg.presetName = (vm.presetNames || []).reduce((r: string | null, name: PackagePresetName) => {\n                return r || (name.description === pkg.name && name.description) || null;\n            }, null);\n\n            pkg.presetNote = pkg.description && (vm.presetNotes || []).reduce((r: string | null, note: PackagePresetNote) => {\n                return r || (note.name === pkg.description && note.name) || null;\n            }, null) || null;\n        }\n\n        getPackages() {\n            const vm = this;\n\n            return vm.ProductService.getPackages(vm.appointment.service_request.id).then((response) => {\n                response.data.forEach(vm.selectPreset.bind(vm));\n\n                vm.appointment.service_request.packages = response.data.map(pkg => {\n                    pkg.services.forEach(s => this.setProductOriginals(<EditedReturnedProduct><any>s));\n                    return vm.sortProducts(pkg);\n                });\n                vm.originalPackages = angular.copy(response.data);\n            });\n        }\n\n        getPackagePresets() {\n            const vm = this;\n\n            return vm.ProductService.getPackagePresetNames().then((response) => {\n                vm.presetNames = response.data;\n\n                vm.ProductService.getPackagePresetNotes().then((response) => {\n                    vm.presetNotes = response.data;\n\n                    vm.ProductService.getWarranties().then((response) => {\n                        vm.warranties = response.data;\n                    });\n                });\n            });\n        }\n\n        getSummary() {\n            const vm = this;\n\n            return vm.$q.all(vm.blockingSaves).then(() => {\n                return vm.WorkOrderService.getSummary(vm.appointment.service_request.id).then((response) => {\n                    vm.summary = response.data;\n                    vm.blockingSaves = [];\n                    vm.sortPackages();\n                });\n            });\n        }\n\n        getTermsConditions() {\n            const vm = this;\n\n            return vm.ProductService.getTermsConditions().then((response) => {\n                vm.termsConditions = response.data;\n                if (vm.approval){\n                    vm.termsConditions.forEach((terms) => {\n                        terms.approved = true;\n                    })\n                }\n            });\n        }\n\n        setCustomerTitle() {\n            const vm = this,\n                customer = vm.appointment.service_request.customer;\n\n            if(customer) {\n                vm.title = customer.company_name ? customer.company_name : customer.full_name;\n            }\n        }\n\n        toggleSinglePriceWorkOrder() {\n            if (this.isUpdatingSinglePrice) {\n                return;\n            }\n\n            this.isUpdatingSinglePrice = true;\n\n            this.ProductService.updateServiceRequest(this.appointment.service_request.id, {\n                force_hide_regular: this.appointment.service_request.can_show_regular_pricing\n            }).then((response) => {\n                this.appointment.service_request.can_show_regular_pricing = response.data.can_show_regular_pricing;\n                this.appointment.service_request.packages.forEach((pkg, index) => {\n                    pkg.can_show_regular_pricing = (<Package[]>response.data.packages)\n                        .find((pk) => pk.id === pkg.id)\n                        .can_show_regular_pricing;\n                });\n            }).finally(() => {\n                this.isUpdatingSinglePrice = false;\n            });\n        }\n\n        doPackageAction(pkg: Package, action: string) {\n            const vm = this;\n\n            if (this.inArchivedMode) {\n                if (action === 'restore') {\n                    if (this.pendingRestores[pkg.id]) {\n                        return;\n                    }\n\n                    this.pendingRestores[pkg.id] = true;\n                    let index = this.appointment.service_request.packages.length;\n                    this.appointment.service_request.packages.push(pkg);\n\n                    this.ProductService.restorePackage(\n                        this.appointment.service_request.id, {\n                            id: pkg.id,\n                            index: index,\n                        }, {\n                            quiet: 1\n                        }\n                    ).then((response) => {\n                        pkg.index = index;\n                        if (this.archivedPackages !== null) {\n                            let idx = this.archivedPackages.findIndex((p) => p.id === pkg.id);\n                            if (idx !== -1) {\n                                this.archivedPackages.splice(idx, 1);\n                            }\n                        }\n                    }).catch((err) => {\n                        this.ToastService.showError('Failed to restore package: ', err);\n                        this.appointment.service_request.packages.splice(index, 1);\n                    }).finally(() => this.pendingRestores[pkg.id] = false);\n                }\n\n                return;\n            }\n\n            switch(action) {\n                case 'add':\n                    vm.$state.go('zipSolutions.price-guide', {\n                        packageId: pkg.id\n                    });\n\n                    break;\n                case 'remove':\n                    vm.showDeletePackageWarning(pkg);\n\n                    break;\n                case 'single':\n                    this.ProductService.updatePackage(this.appointment.service_request.id, {\n                        id: pkg.id,\n                        force_hide_regular: pkg.can_show_regular_pricing\n                    }).then((response) => {\n                        Object.keys(response.data).forEach((key) => {\n                            pkg[key] = response.data[key];\n                        });\n                        pkg.packageAction = '';\n                    });\n                    break;\n                case 'duplicate':\n                    this.ProductService.duplicatePackage(vm.appointment.service_request.id, pkg.id).then((response) => {\n                        vm.appointment.service_request.packages.push(response.data);\n                        vm.sortPackages();\n                        pkg.packageAction = '';\n                    });\n                    break;\n                default:\n                    break;\n            }\n        }\n\n        showDeletePackageWarning(pkg: Package) {\n            const message = 'Are you sure you want to delete this package?',\n                result = window.confirm(message),\n                vm = this;\n\n            if (result) {\n                vm.deletePackage(pkg);\n            }\n        }\n\n        deletePackage(pkg: Package) {\n            const vm = this;\n\n            return this.savePackage(pkg)\n                .then(() => vm.ProductService.deletePackage(vm.appointment.service_request.id, pkg.id))\n                .then(() => {\n                    const index = vm.appointment.service_request.packages.findIndex((pk) => pk.id === pkg.id);\n\n                    vm.appointment.service_request.packages.splice(index, 1);\n                    vm.sortPackages();\n                    vm.addArchivedPackage(pkg);\n\n                    return pkg;\n                });\n        }\n\n        getCurrentPricing(pkg: Package): string {\n            return this.servicePlan\n                ? this.getMaintenancePricing(pkg)\n                : this.getRegularPricing(pkg);\n        }\n\n        getRegularPricing(pkg: Package): string {\n            let price = '$';\n\n            switch(pkg.mode) {\n                case 'admin':\n                    price = 'Admin';\n                    break;\n                case 'regular':\n                case 'whilehere':\n                    price += pkg.prices[pkg.mode].regular;\n                    break;\n                case 'itemized':\n                    price += pkg.prices[pkg.mode].whilehere;\n                    break;\n                default:\n                    price += pkg.prices.regular.regular;\n                    break;\n            }\n\n            return price;\n        }\n\n        getMaintenancePricing(pkg: Package): string {\n            let price = '$';\n\n            switch(pkg.mode) {\n                case 'admin':\n                    price = 'Admin';\n                    break;\n                case 'regular':\n                case 'whilehere':\n                    price += pkg.prices[pkg.mode].service;\n                    break;\n                case 'itemized':\n                    if (this.usesServicePlans() || !this.showMultiPrice(pkg)) {\n                        price += pkg.prices.itemized.service;\n                    } else {\n                        price += pkg.prices.itemized.whilehere;\n                    }\n                    break;\n                default:\n                    price += pkg.prices.regular.service;\n                    break;\n            }\n\n            return price;\n        }\n\n        getMaintenanceMonthlyPrice(pkg: Package): string {\n            switch(pkg.mode) {\n                case 'admin':\n                    return null;\n                case 'regular':\n                case 'whilehere':\n                case 'itemized':\n                    return pkg.prices[pkg.mode].servicemonthly;\n                default:\n                    return pkg.prices.regular.servicemonthly;\n            }\n        }\n\n        canBeFinanced(pkg: Package): boolean {\n            return this.getMaintenanceMonthlyPrice(pkg) != null && this.appointment.service_request.customer.can_show_financing;\n        }\n\n        getMaintenanceMonthlyPricing(pkg: Package): string {\n            let price = this.getMaintenanceMonthlyPrice(pkg);\n\n            if(price == null){\n                return null;\n            }\n\n            return `${price} / month *`;\n        }\n\n        getItemizedPrice(packageProduct: ReturnedProduct, pkg: Package): string {\n            let price = '$';\n\n            if (this.servicePlan || this.activeServicePlan || !pkg.can_show_regular_pricing) {\n                price += angular.isDefined(packageProduct.service.while_here_with_agreement)\n                    ? packageProduct.service.while_here_with_agreement\n                    : '';\n            } else {\n                price += angular.isDefined(packageProduct.service.while_here_with_out_agreement)\n                    ? packageProduct.service.while_here_with_out_agreement\n                    : '';\n            }\n\n            return price === '$'\n                ? ''\n                : price;\n        }\n\n        isAdmin(pkg: Package): boolean {\n            return pkg.mode === 'admin';\n        }\n\n        isWhileHere(pkg: Package): boolean {\n            return pkg.mode === 'whilehere';\n        }\n\n        isItemized(pkg: Package): boolean {\n            return pkg.mode === 'itemized';\n        }\n\n        toggleEditMode(): void {\n            if (!this.PermissionService.hasPermission('web.field.work-order.edit')) {\n                return;\n            }\n            if (this.inArchivedMode) {\n                this.toggleArchivedMode();\n            }\n            if (this.inEditMode) {\n                this.BannerService.triggerResizeEvent(); // This is for the fit text plugin\n                this.savePackages();\n            }\n\n            this.inEditMode = !this.inEditMode;\n            this.isShowingEmail = false;\n            this.productEditMap = {};\n            this.PackageActionsService.resetSelections();\n        }\n\n        saveRecommendations(): void {\n            if (!this.isShowingEmail || !this.PackageActionsService.selectedPackages.length || this.isSaving) {\n                return;\n            }\n\n            this.HistoryService.emailRecommendations(\n                this.appointment.service_request.id,\n                this.PackageActionsService.selectedPackages.map(p => p.id),\n                '',\n                this.emailNote,\n                true\n            ).then(() => {\n                this.PackageActionsService.makeAction('recommend', this.appointment.service_request);\n                this.isShowingEmail = false;\n                this.emailNote = '';\n            });\n        }\n\n        sendEmail(): void {\n            if (!this.isShowingEmail || this.isSaving) {\n                return;\n            }\n\n            this.isSaving = true;\n            let promise: ng.IHttpPromise<any> = null,\n                ids = this.PackageActionsService.selectedPackages.map(p => p.id);\n\n            this.savePackages().finally(() => {\n                if (this.isShowingRecommendation() && this.PackageActionsService.selectedPackages.length) {\n                    promise = this.HistoryService.emailRecommendations(\n                        this.appointment.service_request.id,\n                        ids,\n                        this.email,\n                        this.emailNote,\n                        true\n                    );\n                } else {\n                    promise = this.WorkOrderService.email(\n                        this.appointment.service_request.id,\n                        this.email\n                    );\n                }\n\n                promise.then(() => {\n                    this.isShowingEmail = false;\n                    this.emailNote = '';\n\n                    if (this.isShowingRecommendation()) {\n                        this.PackageActionsService.makeAction('recommend', this.appointment.service_request);\n                    } else {\n                        this.PackageActionsService.resetSelections();\n                        this.PackageActionsService.packageCheckboxesVisible = false;\n                    }\n\n                }).finally(() => this.isSaving = false);\n            });\n        }\n\n        editEmail() {\n            this.editEmailFlyout = false;\n\n            if (this.showNewEmail) {\n                this.CustomerService.createEmail(this.appointment.service_request.customer.id, this.newEmail).then((email) => {\n                    this.appointment.service_request.customer.emails.push(email.data);\n                    this.email= email.data.email;\n                    this.newEmail = '';\n                    this.showNewEmail = false;\n                    this.ToastService.show('Email created');\n                });\n            }\n        }\n\n        toggleEmailSelection(): void {\n            this.isShowingEmail = !this.isShowingEmail;\n            this.PackageActionsService.resetSelections();\n        }\n\n        removeServiceFromPackage(service: Product, pkg: Package) {\n            const vm = this;\n\n            return vm.ProductService.deletePackageService(vm.appointment.service_request.id, pkg.id, service.id).then(() => {\n                pkg.services.splice(pkg.services.findIndex(p => p.id === service.id), 1);\n                return vm.ProductService.getPackage(vm.appointment.service_request.id, pkg.id).then((response) => {\n                    pkg.prices = response.data.prices;\n                    pkg.code = response.data.code;\n\n                    return vm.getSummary();\n                })\n            });\n        }\n\n        showPackageNote(pkg: Package): boolean {\n            return pkg.description !== null;\n        }\n\n        showBannerFlyout(pkg: Package) {\n            const vm = this;\n\n            vm.bannerPackage = pkg;\n            this.bannerOptions = true;\n        }\n\n        showSalesTaxFlyout(taxType: string) {\n            const vm = this;\n\n            vm.salesTaxOverrideType = taxType;\n            vm.editSalesTax = true;\n        }\n\n        overrideSalesTax() {\n            const vm = this;\n            vm.WorkOrderService.overrideSalesTax(vm.appointment.service_request.id, vm.salesTaxOverride, vm.salesTaxOverrideType).then(() => {\n                vm.getSummary();\n                vm.editSalesTax = false;\n                vm.salesTaxOverride = null;\n            });\n        }\n\n        showEtcButton() {\n            const today = moment().format('YYYY-MM-DD');\n\n            if (this.appointment && this.appointment.scheduled_date === today) {\n                return true;\n            }\n        }\n\n        showEtcFlyout() {\n            const vm = this;\n            vm.editEtc = true;\n        }\n\n        updateEtc() {\n            const vm = this,\n                today = moment().format('YYYY-MM-DD');\n\n            if (!vm.estimatedTime) {\n                return;\n            }\n\n            if (vm.appointment && vm.appointment.scheduled_date !== today) {\n                vm.editEtc = false;\n                vm.ToastService.showError('Failed to save ETC: Appointment must be today');\n                return;\n            }\n\n            let duration = null;\n\n            if (vm.org.appointment_duration_matches_estimated_time) {\n                let minutes = moment.duration(vm.estimatedTime).asMinutes(),\n                    now = moment(),\n                    startTime = moment(vm.appointment.scheduled_date + ' ' + vm.appointment.scheduled_time, 'YYYY-MM-DD HH:mm');\n\n                if (startTime.isBefore(now)) {\n                    const timeInto = moment.duration(startTime.diff(now));\n\n                    duration = minutes - timeInto.asMinutes();\n                } else {\n                    duration = minutes;\n                }\n\n                duration = Math.max(15, duration);\n            }\n\n            return vm.SelectedAppointment.updateAppointmentEtc(vm.estimatedTime, duration, false).then(() => {\n                vm.editEtc = false;\n                vm.getEtcTime();\n                vm.ToastService.show('Estimated Time Saved');\n            }).catch(err => {\n                this.ToastService.showError('Failed to save ETC: ', err);\n            });\n        }\n\n        getEtcTime() {\n            const vm = this;\n\n            if (vm.appointment && vm.appointment.estimated_completion_time) {\n                vm.estimatedEndTime = moment(vm.appointment.scheduled_time, 'HH:mm')\n                    .add(vm.appointment.scheduled_duration, 'm')\n                    .format('h:mm A');\n            }\n        }\n\n        showAdjustmentFlyout() {\n            this.estimatedTime = this.appointment.estimated_completion_time;\n            this.editAdjustments = true;\n        }\n\n        addAdjustment() {\n            const vm = this;\n            return vm.WorkOrderService.addAdjustment(vm.appointment.service_request.id, vm.adjustmentCode).then(() => {\n                vm.getSummary();\n                vm.editAdjustments = false;\n                if (!vm.summary.coupon) {\n                    vm.adjustmentCode = \"\";\n                }\n            });\n        }\n\n        removeAdjustment() {\n            const vm = this;\n            return vm.WorkOrderService.addAdjustment(vm.appointment.service_request.id, null).then(() => {\n                vm.getSummary();\n                vm.adjustmentCode = \"\";\n            })\n        }\n\n        secureIframeSrc(videoId: string) {\n            const vm = this;\n            return vm.$sce.trustAsResourceUrl(`https://www.youtube.com/embed/${videoId}?autoplay=1`);\n        }\n\n        getDefaultServicePlan(): ServicePlan|null {\n            let defaults = this.servicePlans.filter((servicePlan: ServicePlan) => {\n                return servicePlan.default_service_plan;\n            });\n\n            return defaults && defaults.length && defaults[0] || null;\n        }\n\n        getServicePlans(): ng.IPromise<ServicePlan[]> {\n            const vm = this;\n\n            return vm.WorkOrderService.getServicePlans(vm.appointment.service_request.id).then((response) => {\n                var found = false;\n\n                vm.servicePlans = response.data || [];\n                if (this.activeServicePlan) {\n                    // Put current service plan first\n                    vm.servicePlans.unshift(this.activeServicePlan);\n                }\n\n                return vm.servicePlans;\n            });\n        }\n\n        checkWarranty(warranty: Warranty, pkg: Package) {\n            return warranty.min_invoice_amount <= parseFloat(pkg.prices.whilehere.regularnormally.replace(',', ''));\n        }\n\n        servicePlanTermText(servicePlan: ServicePlan) {\n            if(angular.isUndefined(servicePlan) || servicePlan === null) {\n                return '';\n            }\n            return servicePlan.term === 'monthly' ? 'Monthly' : 'Annually';\n        }\n\n        servicePlanPaymentTerm(servicePlan: ServicePlan) {\n            if(angular.isUndefined(servicePlan) || servicePlan === null) {\n                return '';\n            }\n            return servicePlan.term === 'monthly' ? 'mo' : 'yr';\n        }\n\n        getServicePlanTerm(servicePlan: ServicePlan) {\n            if(angular.isUndefined(servicePlan) || servicePlan === null) {\n                return '';\n            }\n            return servicePlan.term.replace(/(^|\\s)(\\w)/g, (match: string) => match.toUpperCase());\n        }\n\n        updateServicePlan(servicePlan: ServicePlan) {\n            const vm = this;\n\n            if (vm.isUpdatingServicePlan) {\n                return;\n            }\n\n            vm.isUpdatingServicePlan = true;\n            vm.servicePlan = servicePlan === null ? null : servicePlan;\n\n            return vm.WorkOrderService.updateServicePlan(\n                vm.appointment.service_request.id,\n                servicePlan === null || (vm.activeServicePlan && servicePlan.id === vm.activeServicePlan.id)\n                    ? null\n                    : vm.servicePlan\n            ).then((response) => {\n                vm.appointment.service_request.service_plan = vm.servicePlan =\n                    response.data.service_plan || angular.copy(vm.activeServicePlan);\n\n                vm.getPackages().then(() => {\n                    vm.getSummary().then(() => {\n                        vm.isUpdatingServicePlan = false;\n                    });\n                });\n            });\n        }\n\n        usesServicePlans(): boolean {\n            return (this.servicePlans.length > 0 && this.getModeBool('service_plan')) || Boolean(this.servicePlan);\n        }\n\n        showDiscount(pkg: Package): boolean {\n            return !this.isAdmin(pkg) && this.usesServicePlans() && !!pkg.can_show_regular_pricing && Number(pkg.discount) > 0;\n        }\n\n        showMultiPrice(pkg: Package): boolean {\n            return this.usesServicePlans() && !!pkg.can_show_regular_pricing && this.getRegularPricing(pkg) !== this.getMaintenancePricing(pkg);\n        }\n\n\t\tgetSSPCardText(): string {\n\t\t\treturn this.ssp_price_card_text;\n\t\t}\n\n        isAnyAdmin(): boolean {\n            if (!this.appointment.service_request) {\n                return;\n            }\n\n            return this.appointment.service_request.packages.some(pkg => {\n                return pkg.mode === 'admin';\n            });\n        }\n\n        summaryCostDisplay(value: string, pkg?: Package, negative?: boolean, forceNonAdmin?: boolean) {\n            const vm = this;\n\n            if(!vm.appointment || !vm.appointment.service_request || !angular.isString(value)) {\n                return '';\n            }\n\n            const isAdmin = !forceNonAdmin && (pkg\n                    ? this.isAdmin(pkg)\n                    : vm.isAnyAdmin()\n                );\n\n            negative = negative || value.indexOf('-') === 0;\n\n            return isAdmin\n                ? 'Admin Priced'\n                : ((negative ? '-' : '') + '$' + value.replace(/^-/, ''));\n        }\n\n        getSignature() {\n            const vm = this;\n\n            vm.WorkOrderService.fetchSignature(vm.appointment.service_request.id)\n                .then(response => {\n                    vm.approval = response.data;\n                    vm.approval.created = new Date(vm.approval.created).toLocaleString(\"en-US\", { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' }) + \" at \" +\n                                            new Date(vm.approval.created).toLocaleTimeString(\"en-US\", {hour: 'numeric', minute: 'numeric'});\n                    vm.signature = vm.approval.data_url;\n                })\n                .catch(() => true)\n                .finally(() => vm.isApporvalLoaded = true);\n        }\n\n        saveSignatureFormFromInput(event: any) {\n            if (event.keyCode === 13) {\n                event.target.blur();\n                this.saveSignatureForm();\n            }\n        }\n\n        saveSignatureForm(): null | void {\n            if (this.isSignatureEmpty() || this.isPrintNameEmpty() || this.isSavingSignature) {\n                return null;\n            }\n\n            this.isSavingSignature = true;\n\n            if (this.emailWorkOrder && Boolean(this.email)) {\n                this.WorkOrderService.email(this.appointment.service_request.id, this.email);\n            }\n\n            this.WorkOrderService.saveSignature(\n                this.appointment.service_request.id,\n                this.signature,\n                this.signaturePrintName,\n                this.summary.total,\n                this.getActiveTerms()\n            ).then(response => {\n                this.signatureSlideOut = false;\n                this.approval = response.data;\n                this.approval.created =\n                    new Date(this.approval.created).toLocaleString(\"en-US\", { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' })\n                    + \" at \" +\n                    new Date(this.approval.created).toLocaleTimeString(\"en-US\", {hour: 'numeric', minute: 'numeric'});\n                this.showEtcFlyout();\n            }).catch(err => {\n                this.ToastService.showError('Failed to save approval: ', err);\n            }).finally(() => {\n                this.isSavingSignature = false;\n            });\n        }\n\n        isPrintNameEmpty() {\n            return this.signaturePrintName === null;\n        }\n\n        isSignatureEmpty() {\n            return !Boolean(this.signature);\n        }\n\n        displayDate(date: Date): string {\n            return moment(date).format('YYYY-MM-DD');\n        }\n\n        isServiceItemChecked(serviceItem: ServiceableItem) {\n            return serviceItem.service_request !== null && angular.isDefined(serviceItem.service_request);\n        }\n\n        toggleNewItemForm() {\n            this.showNewItemForm = !this.showNewItemForm;\n        }\n\n        toggleServicePlanOptions() {\n            this.servicePlanOptions = this.usesServicePlans() && !this.servicePlanOptions;\n            this.showNewItemForm = false;\n        }\n\n        getServiceItemTypes() {\n            return this.ItemManagementService.GetServiceableItemTypes().then((response) => {\n                this.serviceItemTypes = response.data;\n            });\n        }\n\n        getServiceItems() {\n            return this.ItemManagementService.GetServiceableItemListByCustomer(this.appointment.service_request.customer.id, this.appointment.service_request.service_address.id).then((response) =>  {\n                this.serviceItems = response.data;\n            });\n        }\n\n        updateServiceItem(serviceItem: ServiceableItem) {\n            const vm = this;\n            serviceItem.service_request = vm.isServiceItemChecked(serviceItem)\n                ? null\n                : { id: vm.appointment.service_request.id };\n\n            return vm.ItemManagementService.UpdateServiceableItem(serviceItem).then((response) =>  {\n                serviceItem = response.data;\n\n                return vm.getSummary();\n            });\n        }\n\n        createServiceItem() {\n            const vm = this;\n\n            const serviceableItem : ServiceableItemCreate = {\n                address: vm.appointment.service_request.service_address.id,\n                customer: vm.appointment.service_request.customer.id,\n                in_service: true,\n                maintained: false,\n                serviceable_item_type: vm.selectedItemType.id,\n                created_service_request: vm.appointment.service_request.id,\n            };\n\n            return this.ItemManagementService.CreateServiceableItem(serviceableItem).then(() => {\n                this.showNewItemForm = false;\n                this.getServiceItems();\n            });\n        }\n\n        cancelCreatingServiceItem() {\n            this.showNewItemForm = false;\n        }\n\n        trixChange(e: any, editor: any, config: TrixConfig) {\n            const doc = editor ? editor.getDocument() : null,\n                count = doc ? doc.getLength() : null;\n\n            config.characterCount = count ? count.toString() : '';\n        }\n\n        getNewTrixConfig(config: TrixConfig) {\n            return new TrixConfig(config);\n        }\n\n        toggleCreateTemplate() {\n            this.template.reset();\n            this.showCreateTemplate = !this.showCreateTemplate;\n        }\n\n        toggleEmail() {\n            this.isShowingEmail = !this.isShowingEmail;\n        }\n\n        shareTypeValue(value: 'global' | 'associated' | 'company'): boolean {\n            return (value === 'global' && this.template.public) ||\n                (value === 'associated' && this.template.shareWithAssoc) ||\n                (!this.template.public && !this.template.shareWithAssoc);\n        }\n\n        selectShareType(value: 'global' | 'associated' | 'company') {\n            switch(value) {\n                case 'global':\n                    this.template.public = true;\n                    this.template.shareWithAssoc = false;\n                    break;\n                case 'associated':\n                    this.template.public = false;\n                    this.template.shareWithAssoc = true;\n                    break;\n                default:\n                    this.template.public = false;\n                    this.template.shareWithAssoc = false;\n            }\n\n            this.template.calculateUpload();\n        }\n\n        createTemplate() {\n            this.savePackages().finally(() => {\n                this.WorkOrderTemplateService.create(this.appointment.service_request.id, this.template).then(() => {\n                    this.toggleCreateTemplate();\n                });\n            });\n        }\n\n        moveLeft(pkg: Package) {\n            this.appointment.service_request.packages.forEach((otherPkg) => {\n                if (otherPkg.index === pkg.index - 1) {\n                    otherPkg.index++;\n                }\n            });\n            pkg.index--;\n            this.sortPackages();\n        }\n\n        moveRight(pkg: Package) {\n            this.appointment.service_request.packages.forEach((otherPkg) => {\n                if (otherPkg.index === pkg.index + 1) {\n                    otherPkg.index--;\n                }\n            });\n            pkg.index++;\n            this.sortPackages();\n        }\n\n        moveUp(service: EditedReturnedProduct, pkg: Package) {\n            const vm = this;\n\n            (<Product[]>vm.appointment.service_request.packages[pkg.index].services).forEach((otherService: EditedReturnedProduct) => {\n                if (otherService.index === service.index - 1){\n                    otherService.index++;\n                    if (!otherService.is_new) {\n                        vm.blockingSaves.push(new Promise<void>((resolve) => {\n                            vm.ProductService.updatePackageService(vm.appointment.service_request.id, pkg.id, otherService).then(() => {\n                                resolve();\n                            });\n                        }));\n                    }\n                }\n            });\n\n            service.index--;\n            if (!service.is_new) {\n                vm.blockingSaves.push(new Promise<void>((resolve) => {\n                    vm.ProductService.updatePackageService(vm.appointment.service_request.id, pkg.id, service).then(() => {\n                        resolve();\n                    });\n                }));\n            }\n            vm.sortProducts(pkg);\n        }\n\n        moveDown(service: Product, pkg: Package) {\n            const vm = this;\n\n            (<Product[]>vm.appointment.service_request.packages[pkg.index].services).forEach((otherService: EditedReturnedProduct) =>{\n                if (otherService.index === service.index + 1){\n                    otherService.index--;\n                    if (!otherService.is_new) {\n                        vm.blockingSaves.push(new Promise<void>((resolve) => {\n                            vm.ProductService.updatePackageService(vm.appointment.service_request.id, pkg.id, otherService).then(() => {\n                                resolve();\n                            });\n                        }));\n                    }\n                }\n            });\n\n            service.index++;\n            vm.blockingSaves.push(new Promise<void>((resolve) => {\n                vm.ProductService.updatePackageService(vm.appointment.service_request.id, pkg.id, service).then(() => {\n                    resolve();\n                });\n            }));\n            vm.sortProducts(pkg);\n        }\n\n        sortPackages() {\n            const vm = this;\n\n            vm.appointment.service_request.packages.sort((a, b) => {\n                if (a.index > b.index) return 1; return -1;\n            });\n\n            for(let i = 0; i < vm.appointment.service_request.packages.length; i++){\n                vm.appointment.service_request.packages[i].index = i;\n                vm.sortProducts(vm.appointment.service_request.packages[i]);\n            }\n        }\n\n        sortProducts(pkg: Package) {\n            (<Product[]>pkg.services).sort((a,b) => {\n                if (a.index > b.index) return 1; return -1;\n            });\n\n            for (let i = 0; i < pkg.services.length; i++){\n                pkg.services[i].index = i;\n            }\n\n            return pkg;\n        }\n\n        orderChanged(event: OrderChangedEvent) {\n            const vm = this,\n                dest = event.dest,\n                src = event.source;\n\n            if(dest.index < src.index) {\n                this.moveLeft(src.itemScope.package);\n            } else if(src.index < dest.index) {\n                this.moveRight(src.itemScope.package);\n            }\n\n            vm.savePackages();\n        }\n\n        dragMove(itemPosition: ItemPosition, containment: HTMLElement, eventObj: Touch) {\n            const vm = this,\n                below = eventObj.clientY > vm.$window.innerHeight,\n                above = eventObj.clientY < 200;\n\n            if (below || above) {\n                if (!this.interval) {\n                    this.interval = vm.$window.setInterval(() => {\n                        vm.$window.scrollBy(0, below ? 20 : -20);\n                    },25);\n                }\n            } else {\n                vm.$window.clearInterval(vm.interval);\n                vm.interval = null;\n            }\n        }\n\n        toggleProductDisplay(): ng.IPromise<any> {\n            if (this.isUpdatingProductDisplay) {\n                return;\n            }\n\n            this.isUpdatingProductDisplay = true;\n\n            return this.ProductService.updateServiceRequest(this.appointment.service_request.id, {\n                show_products: !this.appointment.service_request.show_products\n            }).then((response) => {\n                this.appointment.service_request.show_products = response.data.show_products;\n            }).finally(() => {\n                this.isUpdatingProductDisplay = false;\n            });\n        }\n\n        canShowProducts(): boolean {\n            return this.appointment.service_request ? this.appointment.service_request.show_products : null;\n        }\n\n        isShowingRecommendation() {\n            return this.PackageActionsService.selectForAction === 'recommend';\n        }\n\n        cancelRecommendation() {\n            this.previewRecommendation = false;\n            this.previewRecommendationHtml = null;\n            this.PackageActionsService.makeAction('recommend', this.appointment.service_request, true);\n        }\n\n        toggleRecommendationPreview() {\n            if (this.PackageActionsService.selectedPackages.length) {\n                this.previewRecommendation = !this.previewRecommendation;\n                if (this.previewRecommendation) {\n                    this.WorkOrderService.getRecommendationPreview(\n                        this.PackageActionsService.selectedPackages.map((p) => p.id),\n                        true\n                    ).then((resp) => {\n                        let parser = new DOMParser(),\n                            body = angular.element(parser.parseFromString(resp.data, 'text/html').body);\n\n                        body.find('script').remove();\n\n                        this.previewRecommendationHtml = body.html();\n                    });\n                } else {\n                    this.previewRecommendationHtml = null;\n                }\n            } else {\n                this.previewRecommendation = false;\n                this.previewRecommendationHtml = null;\n            }\n        }\n\n        confirmRecommendations() {\n            if (!this.PackageActionsService.selectedPackages.length) {\n                // Nothing selected, just close recommendation selection\n                this.PackageActionsService.makeAction('recommend', this.appointment.service_request);\n                return;\n            }\n\n            this.isShowingEmail = true;\n        }\n\n        convertToWorkOrder() {\n            // noop\n        }\n    }\n}\n","/// <reference path=\"../_references.ts\"/>\n\nmodule App.Administrative.PurchaseOrder {\n\timport Appointment = App.Appointments.Appointment;\n\timport SelectedAppointment = App.Appointments.SelectedAppointment;\n\timport TitleBarService = App.Helpers.TitleBarService;\n\n\texport class PurchaseOrderController {\n\t\tappointment: Appointment = null;\n\t\tpo: PO = new PO();\n\t\tform: ng.IFormController;\n\t\tusingAt: boolean = null;\n\t\tisSaving: boolean = false;\n\t\ttypes: PurchaseOrderType[] = [];\n\n\t\tstatic $inject: string[] = ['SelectedAppointment', 'PurchaseOrderService', 'TitleBarService'];\n\n\t\tconstructor(\n\t\t\tprivate SelectedAppointment: SelectedAppointment,\n\t\t\tprivate PurchaseOrderService: PurchaseOrderService,\n\t\t\tprivate TitleBarService: TitleBarService\n\t\t) {\n\t\t\tTitleBarService.set('Purchase Order');\n\n\t\t\tSelectedAppointment.getAppointment().then((appointment) => {\n\t\t\t\tthis.setAppointment(appointment);\n\t\t\t}).catch((response) => {\n\t\t\t\tif (response === SelectedAppointment.NO_APPOINTMENT) {\n\t\t\t\t\tthis.usingAt = false;\n\t\t\t\t}\n\t\t\t\t// TODO: Display an error?\n\t\t\t});\n\n\t\t\tPurchaseOrderService.getTypes().then(response => {\n\t\t\t\tthis.types = response.data;\n\t\t\t});\n\t\t}\n\n\t\tsetAppointment(appointment: Appointment) {\n\t\t\tthis.appointment = appointment;\n\t\t}\n\n\t\tcreatePo() {\n\t\t\tthis.isSaving = true;\n\n\t\t\tif(this.usingAt) {\n\t\t\t\tthis.po.address = this.appointment.service_request.service_address.id;\n\t\t\t\tthis.po.service_request = this.appointment.service_request.id;\n\t\t\t}\n\n\t\t\tthis.PurchaseOrderService.create(this.po).then((response) => {\n\t\t\t\tthis.po.id = response.data.id;\n\t\t\t}).finally(() => this.isSaving = false);\n\t\t}\n\t}\n}\n","/// <reference path=\"../_references.ts\"/>\n\nmodule App.Administrative.Inventory {\n\timport TitleBarService = App.Helpers.TitleBarService;\n\timport SelectedAppointment = App.Appointments.SelectedAppointment;\n\timport Appointment = App.Appointments.Appointment;\n\timport UserSession = App.User.UserSession;\n\timport User = App.User.User;\n\n\texport class InventorySelectController {\n\t\tappointment: Appointment = null;\n\t\tsearchText: string = '';\n\t\tlastSearch: string = '';\n\t\tdisplayFavorites: boolean = false;\n\t\tdisplayCustom: boolean = false;\n\t\tdisplayFilters: boolean = false;\n\t\tisSaving: boolean = false;\n\t\tinventoryList: InventoryDetails[];\n\t\tuser: User;\n\n\t\tcustomInventory: CustomInventory;\n\n\t\tgroups: InventoryGroup[] = [];\n\t\tcategories: InventoryCategory[] = [];\n\t\tsubCategories: InventorySubCategory[] = [];\n\n\t\tselectedWarehouse: Warehouse = null;\n\t\tselectedGroup: InventoryGroup = null;\n\t\tselectedCategory: InventoryCategory = null;\n\t\tselectedSubCategory: InventorySubCategory = null;\n\n\t\tsearching: boolean = false;\n\n\t\tcount: number = 0;\n\t\tmaxPage: number = 1;\n\n\t\tpageSize: number = 25;\n\t\tpage: number = 1;\n\n\t\tselectedInventory: {\n\t\t\t[key: string]: InventoryDetails\n\t\t} = {};\n\n\t\taccordions: {\n\t\t\t[key: string]: boolean\n\t\t} = {};\n\n\t\tstatic $inject: string[] = ['$scope', '$state', '$stateParams', 'TitleBarService', 'SelectedAppointment', 'InventoryService', 'UserSession'];\n\n\t\tconstructor(\n\t\t\tprivate $scope: ng.IScope,\n\t\t\tprivate $state: ng.ui.IStateService,\n\t\t\tprivate $stateParams: ng.ui.IStateParamsService,\n\t\t\tprivate TitleBarService: TitleBarService,\n\t\t\tprivate SelectedAppointment: SelectedAppointment,\n\t\t\tprivate InventoryService: InventoryService,\n\t\t\tprivate UserSession: UserSession\n\t\t) {\n\t\t\tconst vm = this;\n\n\t\t\tTitleBarService.set('Appointment');\n\t\t\tvm.selectedWarehouse = vm.$stateParams.selectedWarehouse;\n\n\t\t\tSelectedAppointment.getAppointment().then((appointment) => {\n\t\t\t\tvm.setAppointment(appointment);\n\t\t\t});\n\n\t\t\tUserSession.getUser().then((user) => {\n\t\t\t\tvm.user = user;\n\t\t\t});\n\n\t\t\tvm.InventoryService.getInventoryGroups().then((response) => {\n\t\t\t\tvm.groups = response.data;\n\t\t\t});\n\n\t\t\tvm.getInventoryList();\n\t\t}\n\n\t\tsetAppointment(appointment: Appointment): void {\n\t\t\tthis.appointment = appointment;\n\t\t\tthis.getInventoryList();\n\t\t}\n\n\t\tsearchChange() {\n\t\t\tif ((this.searchText === '' || this.searchText.length >= 3) && this.searchText !== this.lastSearch) {\n\t\t\t\tthis.getInventoryList();\n\t\t\t}\n\t\t}\n\n\t\tsetPage(page: number) {\n\t\t\tlet newPage = Math.max(1, Math.min(this.maxPage, page));\n\t\t\tif (newPage !== this.page) {\n\t\t\t\tthis.page = newPage;\n\t\t\t\tthis.getInventoryList();\n\t\t\t}\n\t\t}\n\n\t\tgetItemCount() {\n\t\t\tif (this.count === 0) {\n\t\t\t\treturn '0 - 0 of 0';\n\t\t\t}\n\n\t\t\treturn Math.min(this.count, ((this.page - 1) * this.pageSize) + 1) + ' - ' + Math.min(this.count, this.pageSize * this.page) + ' of ' + this.count;\n\t\t}\n\n\t\tupdatePageInfo(count: number) {\n\t\t\tthis.count = count;\n\t\t\tthis.maxPage = Math.max(1, Math.ceil(this.count / this.pageSize));\n\n\t\t\treturn this.maxPage < this.page;\n\t\t}\n\n\t\tgetInventoryList() {\n\t\t\tconst vm = this;\n\t\t\tlet params: SearchParams = {\n\t\t\t\tsize: vm.pageSize,\n\t\t\t\tpage: vm.page\n\t\t\t};\n\n\t\t\tvm.searching = true;\n\n\t\t\tif(vm.searchText && vm.searchText.length >= 3) {\n\t\t\t\tthis.lastSearch = this.searchText;\n\t\t\t\tparams.search = vm.searchText;\n\t\t\t}\n\n\t\t\tif(vm.selectedGroup) {\n\t\t\t\tparams.inventory_group = vm.selectedGroup.id;\n\t\t\t}\n\n\t\t\tif(vm.selectedCategory) {\n\t\t\t\tparams.category = vm.selectedCategory.id;\n\t\t\t}\n\n\t\t\tif(vm.selectedSubCategory) {\n\t\t\t\tparams.sub_category = vm.selectedSubCategory.id;\n\t\t\t}\n\n\t\t\tif(vm.selectedWarehouse) {\n\t\t\t\tparams.inventory_sets = vm.selectedWarehouse.inventory_set.id;\n\t\t\t}\n\n\t\t\tif(vm.displayFavorites) {\n\t\t\t\tparams.favorites = true;\n\t\t\t}\n\n\t\t\tif(vm.appointment) {\n\t\t\t\tparams.service_request = vm.appointment.service_request.id;\n\t\t\t}\n\n\t\t\tvm.InventoryService.getInventoryList(params).then((response) => {\n\t\t\t\tlet headers = response.headers();\n\n\t\t\t\tif (this.updatePageInfo(Number(headers.count))) {\n\t\t\t\t\tthis.page = this.maxPage;\n\t\t\t\t\treturn this.getInventoryList();\n\t\t\t\t}\n\n\t\t\t\tif (vm.inventoryList !== undefined) {\n\t\t\t\t\tvm.inventoryList = vm.inventoryList.filter((inventory) => {\n\t\t\t\t\t\treturn Object.keys(vm.selectedInventory).find((key: any) => {\n\t\t\t\t\t\t\treturn key === inventory.id.toString();\n\t\t\t\t\t\t}) ? true : false;\n\t\t\t\t\t})\n\t\t\t\t} else {\n\t\t\t\t\tvm.inventoryList = [];\n\t\t\t\t}\n\n\t\t\t\tvm.inventoryList = [...vm.inventoryList, ...response.data.filter((inventory) => {\n\t\t\t\t\treturn !vm.inventoryList.find((inv: any) => {\n\t\t\t\t\t\treturn inv.id === inventory.id;\n\t\t\t\t\t});\n\t\t\t\t})];\n\t\t\t}).finally(() => {\n\t\t\t\tthis.searching = false;\n\t\t\t});\n\t\t}\n\n\t\taddCustomInventory() {\n\t\t\tif (this.appointment !== null){\n\t\t\t\tthis.customInventory.service_request = this.appointment.service_request.id;\n\t\t\t}\n\t\t\tthis.InventoryService.createCustomInventory(this.customInventory).then((response) => {\n\t\t\t\tthis.displayCustom = false;\n\t\t\t\tthis.inventoryList.unshift(response.data);\n\t\t\t\tthis.selectInventory(response.data);\n\t\t\t});\n\t\t}\n\n\t\tcreateInventoryReplenishment() {\n\t\t\tconst vm = this;\n\n\t\t\tvm.isSaving = true;\n\n\t\t\tlet inventories = Object.keys(vm.selectedInventory).map((key) => {\n\t\t\t\treturn {\n\t\t\t\t\tquantity: vm.selectedInventory[key].quantity,\n\t\t\t\t\tinventory: vm.selectedInventory[key].id\n\t\t\t\t};\n\t\t\t});\n\n\t\t\tif (vm.appointment !== null){\n\t\t\t\tvm.InventoryService.createInventoryReplenishment(vm.appointment.id, {user: vm.user, appointment: vm.appointment.id, inventories: inventories, warehouse: vm.selectedWarehouse.id}).then((response) => {\n\t\t\t\t\tvm.$state.go('^');\n\t\t\t\t}).finally(() => this.isSaving = false);\n\t\t\t} else {\n\t\t\t\tvm.InventoryService.createIndependentInventoryReplenishment({user: vm.user, inventories: inventories, warehouse: vm.selectedWarehouse.id}).then((response) => {\n\t\t\t\t\tvm.$state.go('^');\n\t\t\t\t}).finally(() => this.isSaving = false);\n\t\t\t}\n\t\t}\n\n\t\tselectInventory(inventory: InventoryDetails, manual?: undefined | boolean) {\n\t\t\tconst vm = this;\n\t\t\tconst quantity = inventory.quantity;\n\n\t\t\tif(vm.isInventorySelected(inventory) && ((angular.isUndefined(quantity) || quantity === 0 || quantity === null) || manual)) {\n\t\t\t\tdelete vm.selectedInventory[inventory.id];\n\t\t\t\tinventory.quantity = null;\n\t\t\t} else {\n\t\t\t\tif(angular.isUndefined(quantity) || quantity === null) {\n\t\t\t\t\tinventory.quantity = 1;\n\t\t\t\t}\n\n\t\t\t\tvm.selectedInventory[inventory.id] = angular.copy(inventory);\n\t\t\t}\n\t\t}\n\n\t\thasSelectedInventory(): boolean {\n\t\t\tconst vm = this;\n\n\t\t\treturn Object.keys(vm.selectedInventory).length > 0;\n\t\t}\n\n\t\tisInventorySelected(inventory: InventoryDetails) {\n\t\t\treturn angular.isDefined(this.selectedInventory[inventory.id]);\n\t\t}\n\n\t\tremoveFilter(type: 'inventoryGroup'|'category'|'subCategory') {\n\t\t\tconst vm = this;\n\n\t\t\tswitch(type) {\n\t\t\t\tcase 'subCategory':\n\t\t\t\t\tvm.selectedSubCategory = null;\n\t\t\t\t\tvm.getInventoryList();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'category':\n\t\t\t\t\tvm.selectedCategory = null;\n\t\t\t\t\tvm.selectedSubCategory = null;\n\t\t\t\t\tvm.getInventoryList();\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tvm.clearFilters();\n\t\t\t}\n\t\t}\n\n\t\tclearFilters() {\n\t\t\tconst vm = this;\n\n\t\t\tvm.selectedGroup = null;\n\t\t\tvm.selectedCategory = null;\n\t\t\tvm.selectedSubCategory = null;\n\t\t\tvm.categories = [];\n\t\t\tvm.subCategories = [];\n\t\t\tvm.displayFavorites = false;\n\t\t\tvm.searchText = null;\n\n\t\t\tconst keys = Object.keys(vm.accordions);\n\n\t\t\tkeys.forEach((key) => {\n\t\t\t\tvm.accordions[key] = false;\n\t\t\t});\n\n\t\t\tvm.accordions.inventoryGroup = true;\n\n\t\t\tvm.getInventoryList();\n\t\t}\n\n\t\tgetGroupCategories(group: InventoryGroup) {\n\t\t\tconst vm = this;\n\n\t\t\tvm.searchText = null;\n\t\t\tvm.displayFavorites = false;\n\t\t\tvm.selectedCategory = null;\n\t\t\tvm.selectedSubCategory = null;\n\t\t\tvm.accordions.category = false;\n\t\t\tvm.accordions.subCategory = false;\n\t\t\tvm.categories = [];\n\t\t\tvm.subCategories = [];\n\n\t\t\tvm.InventoryService.getInventoryCategories(group.id).then((response) => {\n\t\t\t\tvm.categories = response.data;\n\t\t\t\tvm.accordions.category = true;\n\t\t\t});\n\n\t\t\tvm.getInventoryList();\n\t\t}\n\n\t\tonSelectSubCategory(subCategory: InventorySubCategory): void {\n\t\t\tconst vm = this;\n\n\t\t\tvm.selectedSubCategory = subCategory;\n\t\t\tvm.searchText = null;\n\t\t\tvm.displayFavorites = false;\n\n\t\t\tvm.getInventoryList();\n\t\t}\n\n\t\tsetSubCategories(category: InventoryCategory) {\n\t\t\tconst vm = this;\n\n\t\t\tvm.searchText = null;\n\t\t\tvm.displayFavorites = false;\n\t\t\tvm.selectedSubCategory = null;\n\t\t\tvm.accordions.subCategory = true;\n\n\t\t\tvm.InventoryService.getInventorySubCategories(category.id).then((response) => {\n\t\t\t\tvm.subCategories = response.data;\n\t\t\t\tvm.getInventoryList();\n\t\t\t});\n\t\t}\n\n\t\ttoggleAccordion(key: string) {\n\t\t\tconst vm = this;\n\n\t\t\tif(angular.isUndefined(vm.accordions[key])) {\n\t\t\t\tvm.accordions[key] = false;\n\t\t\t}\n\n\t\t\tvm.accordions[key] = !vm.accordions[key];\n\t\t}\n\n\t\ttoggleFavorites() {\n\t\t\tthis.displayFavorites = !this.displayFavorites;\n\n\t\t\tthis.getInventoryList();\n\t\t}\n\n\t\ttoggleFilters() {\n\t\t\tthis.displayFilters = !this.displayFilters;\n\t\t}\n\n\t\ttoggleCustomInventory() {\n\t\t\tthis.displayCustom = !this.displayCustom;\n\t\t}\n\n\t\ttoggleInventoryFavorite(inventory: InventoryDetails) {\n\t\t\tconst vm = this;\n\n\t\t\tinventory.favorited = !inventory.favorited;\n\n\t\t\tif(inventory.favorited) {\n\t\t\t\tvm.InventoryService.favoriteInventory(inventory.id);\n\t\t\t} else {\n\t\t\t\tvm.InventoryService.unfavoriteInventory(inventory.id);\n\t\t\t}\n\t\t}\n \t}\n}","/// <reference path=\"../_references.ts\"/>\n\nmodule App.Administrative.Inventory {\n\timport TitleBarService = App.Helpers.TitleBarService;\n\timport ServiceRequest = App.Appointments.ServiceRequest;\n\timport SelectedAppointment = App.Appointments.SelectedAppointment;\n\timport Appointment = App.Appointments.Appointment;\n\timport UserSession = App.User.UserSession;\n\timport User = App.User.User;\n\timport OfficeService = App.Utils.OfficeService;\n\n\texport class InventorySummaryController {\n\n\t\tstatic $inject: string[] = ['$scope', '$state' ,'TitleBarService', 'SelectedAppointment', 'InventoryService', '$q', 'UserSession', 'OfficeService'];\n\n\t\tserviceRequest: ServiceRequest = null;\n\t\tinvReplenishments: InventoryReplenishment[] = null;\n\t\twarehouses: Warehouse[] = null;\n\t\tuser: User;\n\n\t\ttotalCost: number = null;\n\t\tselectedWarehouse: Warehouse = null;\n\t\tconfirmSelected: boolean = false;\n\n\t\tstandalone: boolean = false;\n\n\t\tconstructor(\n\t\t\tprivate $scope: ng.IScope,\n\t\t\tprivate $state: ng.ui.IStateService,\n\t\t\tprivate TitleBarService: TitleBarService,\n\t\t\tprivate SelectedAppointment: SelectedAppointment,\n\t\t\tprivate InventoryService: InventoryService,\n\t\t\tprivate $q: ng.IQService,\n\t\t\tprivate UserSession: UserSession,\n\t\t\tprivate OfficeService: OfficeService\n\t\t) {\n\t\t\tTitleBarService.set('Appointment');\n\n\t\t\tUserSession.getUser().then((user) => {\n\t\t\t\tthis.user = user;\n\t\t\t\tthis.getWarehouses();\n\t\t\t});\n\n\t\t\tthis.standalone = Boolean($state.params.standalone);\n\n\t\t\tOfficeService.getAppointment().then(response => {\n\t\t\t\tthis.setServiceRequest(response.data);\n\t\t\t})\n\t\t\t.catch(() => {\n\t\t\t\tSelectedAppointment.getAppointment().then((appointment) => {\n\t\t\t\t\tthis.setServiceRequest(appointment);\n\t\t\t\t}).catch((response) => {\n\t\t\t\t\tif (response === SelectedAppointment.NO_APPOINTMENT) {\n\t\t\t\t\t\tthis.setReplenishmentsWithoutAppointment();\n\t\t\t\t\t}\n\t\t\t\t\t// TODO: Display an error?\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\tgetTitle(): string {\n\t\t\treturn this.standalone\n\t\t\t\t? 'Inventory'\n\t\t\t\t: 'Inventory Summary';\n\t\t}\n\n\t\tdeleteInventoryReplenishment(invReplenishmentId: number) {\n\t\t\tconst vm = this;\n\n\t\t\tthis.InventoryService.deleteInventoryReplenishment(invReplenishmentId).then((response) => {\n\t\t\t\tvm.invReplenishments.splice(vm.invReplenishments.findIndex((item) => response.data.id == item.id), 1);\n\t\t\t\tvm.totalCost = vm.calculateTotal(vm.invReplenishments);\n\t\t\t});\n\t\t}\n\n\t\tgetWarehouses() {\n\t\t\tthis.InventoryService.getWarehouses().then((response) => {\n\t\t\t\tthis.warehouses = response.data;\n\t\t\t\tthis.selectedWarehouse = this.warehouses.find(x => {\n\t\t\t\t\treturn x.user.id === this.user.id;\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\tgetReplenishmentList(){\n\t\t\tconst vm = this;\n\n\t\t\tvm.invReplenishments = [];\n\n\t\t\tlet promises: ng.IPromise<ng.IHttpResponse<InventoryReplenishment[]>>[] = [];\n\t\t\tvm.serviceRequest.appointments.forEach((appointment) => {\n\t\t\t\tpromises.push(vm.InventoryService.getInventoryReplenishment(appointment.id))\n\t\t\t});\n\t\t\tvm.$q.all(promises).then((response) => {\n\t\t\t\tresponse.forEach((list) => {\n\t\t\t\t\tvm.invReplenishments = vm.invReplenishments.concat(list.data);\n\t\t\t\t});\n\t\t\t\tvm.totalCost = vm.calculateTotal(vm.invReplenishments);\n\t\t\t});\n\t\t}\n\n\t\tcalculateTotal(invReplenishments: InventoryReplenishment[]) {\n\t\t\tlet total = 0;\n\t\t\tinvReplenishments.forEach((invReplenishment) => {\n\t\t\t\ttotal += invReplenishment.total;\n\t\t\t});\n\t\t\treturn total;\n\t\t}\n\n\t\tsetServiceRequest(appointment: Appointment): void {\n\t\t\tthis.InventoryService.getServiceRequest(appointment.service_request.id).then((response) => {\n\t\t\t\tthis.serviceRequest = response.data;\n\t\t\t\tthis.getReplenishmentList();\n\t\t\t});\n\t\t}\n\n\t\tsetReplenishmentsWithoutAppointment(){\n\t\t\tthis.InventoryService.getAllInventoryReplenishments().then((response) => {\n\t\t\t\tthis.invReplenishments = response.data;\n\t\t\t})\n\t\t}\n\n\t\tdisplayDate(date: string) {\n\t\t\treturn moment(date).format('MM/DD/YYYY h:mma');\n\t\t}\n\n\t\ttoggleSelectInventory() {\n\t\t\tthis.$state.go('.select', { selectedWarehouse: this.selectedWarehouse });\n\t\t}\n\t}\n}","/// <reference path=\"../_references.ts\"/>\n\nmodule App.Administrative.SendInvoice {\n\timport AdministrativeService = App.Administrative.AdministrativeService;\n\timport Appointment = App.Appointments.Appointment;\n\timport SelectedAppointment = App.Appointments.SelectedAppointment;\n\timport TitleBarService = App.Helpers.TitleBarService;\n\timport ToastService = App.Utils.ToastService;\n\timport CustomerService = App.Customer.CustomerService;\n\n\texport class SendInvoiceController {\n\t\tstatic $inject: string[] = [\n\t\t\t'$state', '$q', 'AdministrativeService', 'TitleBarService', 'SelectedAppointment', 'ToastService', 'CustomerService'\n\t\t];\n\n\t\tappointment: Appointment = null;\n\t\tcorrectDataText: string = 'Is this the correct email or phone number to send the review request to?'\n\t\tcustomerName: string = '';\n\n\t\temail: string = null;\n\t\tnote: string = null;\n\t\tsyncAccounting: boolean = false;\n\t\tsendEmail: boolean = false;\n\t\tcloseSR: boolean = false;\n\n\t\teditEmailFlyout: boolean = false;\n\t\tedittedEmail: string = '';\n\t\tshowNewEmail: boolean = false;\n\t\tnewEmail: string = '';\n\n\t\tloading: boolean = true;\n\n\t\tconstructor(\n\t\t\tprivate $state: ng.ui.IStateService,\n\t\t\tprivate $q: ng.IQService,\n\t\t\tprivate AdministrativeService: AdministrativeService,\n\t\t\tprivate TitleBarService: TitleBarService,\n\t\t\tprivate SelectedAppointment: SelectedAppointment,\n\t\t\tprivate ToastService: ToastService,\n\t\t\tprivate CustomerService: CustomerService\n\t\t) {\n\t\t\tTitleBarService.set('Appointment');\n\n\t\t\tSelectedAppointment.getAppointment().then((appointment) => {\n\t\t\t\tthis.setAppointment(appointment);\n\n\t\t\t\t$q.all({\n\t\t\t\t\tserviceRequest: AdministrativeService.GetServiceRequestChecklist(this.appointment.service_request.id),\n\t\t\t\t\tappointment: AdministrativeService.GetAppointmentChecklist(this.appointment.id),\n\t\t\t\t}).then((data) => {\n\t\t\t\t\tthis.note = data.serviceRequest.data.invoice_note || this.note;\n\t\t\t\t\tthis.email = data.serviceRequest.data.invoice_email || this.email;\n\t\t\t\t\tthis.syncAccounting = data.serviceRequest.data.upload_on_complete;\n\t\t\t\t\tthis.sendEmail = data.serviceRequest.data.email_on_complete;\n\t\t\t\t\tthis.closeSR = data.appointment.data.close_service_request_on_complete;\n\n\t\t\t\t\tthis.loading = false;\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\teditEmail() {\n\t\t\tthis.email = this.edittedEmail;\n\t\t\tthis.editEmailFlyout = false;\n\n\t\t\tif (this.showNewEmail) {\n\t\t\t\tthis.CustomerService.createEmail(this.appointment.service_request.customer.id, this.newEmail).then((email) => {\n\t\t\t\t\tthis.appointment.service_request.customer.emails.push(email.data);\n\t\t\t\t\tthis.email = this.edittedEmail = email.data.email;\n\t\t\t\t\tthis.newEmail = '';\n\t\t\t\t\tthis.showNewEmail = false;\n\t\t\t\t\tthis.ToastService.show('Email created');\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tsave() {\n\t\t\tthis.$q.all({\n\t\t\t\tserviceRequest: this.AdministrativeService.UpdateServiceRequestChecklist(this.appointment.service_request.id, {\n\t\t\t\t\tinvoice_email: this.email,\n\t\t\t\t\tinvoice_note: this.note,\n\t\t\t\t\tupload_on_complete: this.syncAccounting,\n\t\t\t\t\temail_on_complete: this.sendEmail\n\t\t\t\t}),\n\t\t\t\tappointment: this.AdministrativeService.UpdateAppointmentChecklist(this.appointment.id, {\n\t\t\t\t\tclose_service_request_on_complete: this.closeSR\n\t\t\t\t}),\n\t\t\t}).then(() => {\n\t\t\t\tthis.$state.go('zipSolutions.administrative');\n\t\t\t}).catch((response) => {\n\t\t\t\tthis.ToastService.showError('Unable to update appointment: ', response);\n\t\t\t});\n\t\t}\n\n\t\tsetAppointment(appointment: Appointment): void {\n\t\t\tconst vm = this;\n\n\t\t\tvm.appointment = appointment;\n\n\t\t\tif(vm.appointment.service_request.customer.emails.length > 0) {\n\t\t\t\tvm.email = vm.appointment.service_request.customer.emails[0].email;\n\t\t\t\tvm.edittedEmail = vm.email;\n\t\t\t}\n\n\t\t\tvm.customerName = vm.appointment.service_request.customer.full_name;\n\t\t}\n\t}\n}","/// <reference path=\"../_references.ts\"/>\n\nmodule App.Administrative.Reviews {\n\timport TitleBarService = App.Helpers.TitleBarService;\n\timport Appointment = App.Appointments.Appointment;\n\timport SelectedAppointment = App.Appointments.SelectedAppointment;\n\timport ToastService = App.Utils.ToastService;\n\timport OrganizationService = App.Utils.OrganizationService;\n\timport CustomerService = App.Customer.CustomerService;\n\timport PhoneNumber = App.Appointments.PhoneNumber;\n\n\texport class ReviewRequestController {\n\t\tappointment: Appointment = null;\n\t\tcorrectDataText: string = 'Is this the correct email or phone number to send the review request to?';\n\t\tcustomerName: string = '';\n\n\t\temail: string = null;\n\t\tphone: string = null;\n\n\t\teditEmailFlyout: boolean = false;\n\t\teditPhoneFlyout: boolean = false;\n\t\tedittedEmail: string = '';\n\t\tedittedPhone: string = null;\n\t\tphoneNumbers: PhoneNumber[];\n\n\t\tsendEmail: boolean = true;\n\t\tsendPhone: boolean = false;\n\t\tshowNewEmail: boolean = false;\n\t\tshowNewPhone: boolean = false;\n\t\tnewEmail: string = '';\n\t\tnewPhone: string = '';\n\n\t\tsending: boolean = false;\n\t\tloading: boolean = true;\n\n\t\tcallsourceEnabled: boolean = false;\n\t\treviewsEnabled: boolean = false;\n\t\treviewChoosen: boolean = false;\n\t\tcallsourceHasBrand: boolean = false;\n\n\t\tstatic $inject: string[] = ['$state', 'ReviewRequestService', 'TitleBarService', 'SelectedAppointment', 'ToastService', 'OrganizationService', 'CustomerService'];\n\n\t\tconstructor(\n\t\t\tprivate $state: ng.ui.IStateService,\n\t\t\tprivate ReviewRequestService: ReviewRequestService,\n\t\t\tprivate TitleBarService: TitleBarService,\n\t\t\tprivate SelectedAppointment: SelectedAppointment,\n\t\t\tprivate ToastService: ToastService,\n\t\t\tprotected OrganizationService: OrganizationService,\n\t\t\tprivate CustomerService: CustomerService\n\t\t) {\n\t\t\tOrganizationService.getCallsourceDetails().then((ocs) => {\n\t\t\t\tthis.callsourceEnabled = ocs.data.callsource_enabled;\n\t\t\t\tthis.reviewsEnabled = ocs.data.send_review_message;\n\t\t\t\tthis.callsourceHasBrand = (ocs.data.callsource_brand_id || 0) > 0;\n\t\t\t});\n\t\t\tTitleBarService.set('Appointment');\n\t\t\tthis.reviewChoosen = $state.current.data && $state.current.data.review;\n\n\t\t\tSelectedAppointment.getAppointment().then((appointment) => {\n\t\t\t\tthis.setAppointment(appointment);\n\t\t\t});\n\t\t}\n\n\t\tsendReviewRequest() {\n\t\t\tif(!this.sendEmail && !this.sendPhone) {\n\t\t\t\tthis.ToastService.show('Must check either email or phone.');\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.sending = true;\n\t\t\tlet data: RequestReviewData = {\n\t\t\t\t\tservice_request: this.appointment.service_request.id\n\t\t\t\t},\n\t\t\t\tfunc = this.reviewChoosen\n\t\t\t\t\t? this.ReviewRequestService.sendReviewRequest\n\t\t\t\t\t: this.ReviewRequestService.sendCallsourceReviewRequest;\n\n\t\t\tif(this.sendEmail) {\n\t\t\t\tdata.email = this.email;\n\t\t\t}\n\t\t\tif(this.sendPhone) {\n\t\t\t\tdata.phone = this.phone.toString();\n\t\t\t}\n\n\t\t\tfunc.bind(this.ReviewRequestService)(data).then((response: RequestReviewResponse) => {\n\t\t\t\tif(response.status === 'error') {\n\t\t\t\t\tthis.ToastService.show('Error requesting review. ' + response.message);\n\t\t\t\t\tthis.sending = false;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis.ToastService.show('Message sent successfully');\n\t\t\t\tthis.$state.go('zipSolutions.administrative');\n\t\t\t}).catch((reason: RequestReviewResponse) => {\n\t\t\t\tthis.ToastService.show('Error requesting review. ' + reason.message);\n\t\t\t\tthis.sending = false;\n\t\t\t\treturn;\n\t\t\t});\n\t\t}\n\n\t\teditEmail() {\n\t\t\tthis.email = this.edittedEmail;\n\t\t\tthis.editEmailFlyout = false;\n\n\t\t\tif (this.showNewEmail) {\n\t\t\t\tthis.CustomerService.createEmail(this.appointment.service_request.customer.id, this.newEmail).then((email) => {\n\t\t\t\t\tthis.appointment.service_request.customer.emails.push(email.data);\n\t\t\t\t\tthis.email = this.edittedEmail = email.data.email;\n\t\t\t\t\tthis.newEmail = '';\n\t\t\t\t\tthis.showNewEmail = false;\n\t\t\t\t\tthis.ToastService.show('Email created');\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\teditPhone() {\n\t\t\tthis.phone = this.edittedPhone;\n\t\t\tthis.editPhoneFlyout = false;\n\n\t\t\tif (this.showNewPhone) {\n\t\t\t\tthis.CustomerService.createPhone(this.appointment.service_request.customer.id,\n\t\t\t\t\t{\n\t\t\t\t\t\tnumber: this.newPhone,\n\t\t\t\t\t\tsend_text: true\n\t\t\t\t\t}\n\t\t\t\t).then((phone) => {\n\t\t\t\t\tthis.phoneNumbers.push(phone.data);\n\t\t\t\t\tthis.phone = this.edittedPhone = phone.data.number;\n\t\t\t\t\tthis.newPhone = '';\n\t\t\t\t\tthis.showNewPhone = false;\n\t\t\t\t\tthis.ToastService.show('Phone Number created');\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tsetAppointment(appointment: Appointment): void {\n\t\t\tthis.appointment = appointment;\n\n\t\t\tif(this.appointment.service_request.customer.emails.length > 0) {\n\t\t\t\tthis.email = this.appointment.service_request.customer.emails[0].email;\n\t\t\t\tthis.edittedEmail = this.email;\n\t\t\t}\n\t\t\tif(this.appointment.service_request.customer.phone_numbers.length > 0) {\n\t\t\t\tthis.phoneNumbers = this.appointment.service_request.customer.phone_numbers.filter(number => {\n\t\t\t\t\treturn number.send_text === true;\n\t\t\t\t});\n\n\t\t\t\tif (this.phoneNumbers.length > 0) {\n\t\t\t\t\tthis.phone = this.phoneNumbers[0].number;\n\t\t\t\t\tthis.edittedPhone = this.phone;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.customerName = this.appointment.service_request.customer.full_name;\n\n\t\t\tthis.loading = false;\n\t\t}\n\t}\n}","/// <reference path=\"../_references.ts\"/>\n\nmodule App.Administrative.Tags {\n\timport Appointment = App.Appointments.Appointment;\n\timport SelectedAppointment = App.Appointments.SelectedAppointment;\n\timport TitleBarService = App.Helpers.TitleBarService;\n\timport ServiceRequest = App.Appointments.ServiceRequest;\n\timport Customer = App.Appointments.Customer;\n\n\texport class TagsController {\n\t\tcustomer: Customer = null;\n\t\tserviceRequest: ServiceRequest = null;\n\t\tisSaving: boolean = false;\n\t\ttagEdit: boolean = false;\n\t\tcanCustomerSelect: boolean = false;\n\t\tcanSrSelect: boolean = false;\n\t\tisLoading: boolean = true;\n\t\tsrTags: Tag[] = [];\n\t\tnewTag: Tag = null;\n\t\tnewTagType: string = null;\n\t\tcustomerTags: Tag[] = [];\n\t\ttagColors: TagColor[] = [];\n\n\t\tstatic $inject: string[] = ['$q', 'SelectedAppointment', 'TagsService', 'TitleBarService', 'ToastService', 'PermissionService'];\n\n\t\tconstructor(\n\t\t\tpublic $q: ng.IQService,\n\t\t\tprivate SelectedAppointment: SelectedAppointment,\n\t\t\tprivate TagsService: TagsService,\n\t\t\tprivate TitleBarService: TitleBarService,\n\t\t\tprivate ToastService: App.Utils.ToastService,\n\t\t\tprotected PermissionService: App.Helpers.PermissionService,\n\t\t) {\n\t\t\tTitleBarService.set('Appointment');\n\t\t\tthis.canCustomerSelect = PermissionService.hasPermission('web.field.administrative.tagging.customer.select');\n\t\t\tthis.canSrSelect = PermissionService.hasPermission('web.field.administrative.tagging.service-request.select');\n\n\t\t\tSelectedAppointment.getAppointment().then((appointment) => {\n\t\t\t\tthis.setAppointment(appointment);\n\t\t\t});\n\t\t}\n\n\t\tsetAppointment(appointment: Appointment) {\n\t\t\tthis.customer = appointment.service_request.customer;\n\t\t\tthis.serviceRequest = appointment.service_request;\n\n\t\t\tthis.initialize();\n\t\t}\n\n\t\tinitialize() {\n\t\t\tconst promises = {\n\t\t\t\tcustomerTags: this.TagsService.fetchCustomerTags(),\n\t\t\t\ttagColors: this.TagsService.fetchTagColors(),\n\t\t\t\tsrTags: this.TagsService.fetchSRTags()\n\t\t\t};\n\n\t\t\tthis.$q.all(promises).then((response) => {\n\t\t\t\tthis.customerTags = response.customerTags.data;\n\t\t\t\tthis.tagColors = response.tagColors.data;\n\t\t\t\tthis.srTags = response.srTags.data;\n\t\t\t}).finally(() => this.isLoading = false);\n\t\t}\n\n\t\tgetCustomerTagIndex(id: number) {\n\t\t\treturn this.customer.tags.findIndex(function(t) {\n\t\t\t\treturn t.id === id;\n\t\t\t});\n\t\t};\n\n\t\tgetSrTagIndex(id: number) {\n\t\t\treturn this.serviceRequest.tags.findIndex(function(t) {\n\t\t\t\treturn t.id === id;\n\t\t\t});\n\t\t};\n\n\t\tselectCustomerTag(tag: Tag) {\n\t\t\tlet index = this.getCustomerTagIndex(tag.id);\n\n\t\t\tif (index > -1) {\n\t\t\t\tthis.customer.tags.splice(index, 1);\n\t\t\t} else {\n\t\t\t\tthis.customer.tags.push(tag);\n\t\t\t}\n\n\t\t\tthis.isSaving = true;\n\n\t\t\tthis.TagsService.updateCustomer({\n\t\t\t\t\tid: this.customer.id,\n\t\t\t\t\ttags: this.customer.tags\n\t\t\t\t}\n\t\t\t)\n\t\t\t\t.then(() => {\n\t\t\t\t\tthis.ToastService.show('Tags saved');\n\t\t\t\t}).catch((err) => {\n\t\t\t\t\tthis.ToastService.showError('Failed to update customer tags: ', err);\n\t\t\t\t}).finally(() => {\n\t\t\t\t\tthis.isSaving = false;\n\t\t\t\t});\n\t\t};\n\n\t\tselectSrTag(tag: Tag) {\n\t\t\tlet index = this.getSrTagIndex(tag.id);\n\n\t\t\tif (index > -1) {\n\t\t\t\tthis.serviceRequest.tags.splice(index, 1);\n\t\t\t} else {\n\t\t\t\tthis.serviceRequest.tags.push(tag);\n\t\t\t}\n\n\t\t\tthis.isSaving = true;\n\n\t\t\tthis.TagsService.updateSr({\n\t\t\t\t\tid: this.serviceRequest.id,\n\t\t\t\t\ttags: this.serviceRequest.tags\n\t\t\t\t}\n\t\t\t)\n\t\t\t\t.then(() => {\n\t\t\t\t\tthis.ToastService.show('Tags saved');\n\t\t\t\t}).catch((err) => {\n\t\t\t\tthis.ToastService.showError('Failed to update SR tags: ', err);\n\t\t\t}).finally(() => {\n\t\t\t\tthis.isSaving = false;\n\t\t\t});\n\t\t};\n\n\t\tupdateRecolorTag(tag: Tag) {\n\t\t\tthis.isSaving = true;\n\n\t\t\tif (this.customer.recolor_tag && this.customer.recolor_tag.id === tag.id) {\n\t\t\t\ttag = null;\n\t\t\t}\n\n\t\t\tthis.TagsService.updateCustomer({\n\t\t\t\t\tid: this.customer.id,\n\t\t\t\t\trecolor_tag: tag\n\t\t\t\t}\n\t\t\t)\n\t\t\t\t.then(() => {\n\t\t\t\t\tthis.ToastService.show('Recolor saved');\n\t\t\t\t\tthis.customer.recolor_tag = tag;\n\t\t\t\t}).catch((err) => {\n\t\t\t\t\tthis.ToastService.showError('Failed to update customer tags: ', err);\n\t\t\t\t}).finally(() => {\n\t\t\t\t\tthis.isSaving = false;\n\t\t\t\t});\n\t\t};\n\n\t\ttoggleTagEdit(type: string = null, tag: Tag = null) {\n\t\t\tthis.tagEdit = !this.tagEdit;\n\t\t\tthis.newTag = tag;\n\t\t\tthis.newTagType = type;\n\t\t};\n\n\t\teditTags() {\n\t\t\tif (this.isSaving) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!this.newTag.name || !this.newTag.tag_color) {\n\t\t\t\tthis.ToastService.show('Tag Name and Color are Required.');\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.isSaving = true;\n\t\t\tvar func = this.newTag.id\n\t\t\t\t? this.newTagType === 'customer' ? this.TagsService.updateCustomerTag : this.TagsService.updateSRTag\n\t\t\t\t: this.newTagType === 'customer' ? this.TagsService.createCustomerTag : this.TagsService.createSRTag;\n\n\t\t\tfunc.bind(this.TagsService)(this.newTag)\n\t\t\t\t.then((response) => {\n\t\t\t\t\tlet index;\n\t\t\t\t\tif (this.newTagType === 'customer') {\n\t\t\t\t\t\tindex = this.customerTags.findIndex(function(t) {\n\t\t\t\t\t\t\treturn t.id === response.data.id;\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tif (index > -1) {\n\t\t\t\t\t\t\tthis.customerTags[index] = response.data;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis.customerTags.push(response.data);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tindex = this.srTags.findIndex(function (t) {\n\t\t\t\t\t\t\treturn t.id === response.data.id;\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tif (index > -1) {\n\t\t\t\t\t\t\tthis.srTags[index] = response.data;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis.srTags.push(response.data);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.toggleTagEdit();\n\t\t\t\t\tthis.ToastService.show('Tag saved');\n\t\t\t\t})\n\t\t\t\t.catch((err) => {\n\t\t\t\t\tthis.ToastService.showError('Failed to save tag: ', err);\n\t\t\t\t})\n\t\t\t\t.finally(() => {\n\t\t\t\t\tthis.isSaving = false;\n\t\t\t\t});\n\t\t};\n\t}\n}\n","/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule App.Administrative.UploadPhotos {\r\n\timport TitleBarService = App.Helpers.TitleBarService;\r\n\timport UploadService = App.Helpers.UploadService;\r\n\timport Appointment = App.Appointments.Appointment;\r\n\timport SelectedAppointment = App.Appointments.SelectedAppointment;\r\n\timport DefaultToasts = App.Utils.DefaultToasts;\r\n\timport OrganizationFileUploadData = App.Utils.OrganizationFileUploadData;\r\n\r\n\texport class UploadPhotosController {\r\n\t\tloading: boolean = true;\r\n\t\tsavingImage: boolean = false;\r\n\t\terrorFile: Object = {};\r\n\t\tphotos: ServiceRequestPhoto[];\r\n\t\tappointment: Appointment = null;\r\n\t\torganization: OrganizationFileUploadData = null;\r\n\r\n\t\tshowMdl: boolean = true;\r\n\t\tstatic $inject: string[] = ['$rootScope', 'AdministrativeService', 'SelectedAppointment', 'TitleBarService',\r\n\t\t\t'$timeout', 'UploadService', 'DefaultToasts', 'OrganizationService'];\r\n\r\n\t\tconstructor(\r\n\t\t\tprivate $rootScope: AppRootScope,\r\n\t\t\tprivate AdministrativeService: AdministrativeService,\r\n\t\t\tprotected SelectedAppointment: SelectedAppointment,\r\n\t\t\tprivate TitleBarService: TitleBarService,\r\n\t\t\tprivate $timeout: ng.ITimeoutService,\r\n\t\t\tprivate UploadService: UploadService,\r\n\t\t\tprivate DefaultToasts: DefaultToasts,\r\n\t\t\tprivate OrganizationService: App.Utils.OrganizationService\r\n\t\t) {\r\n\t\t\tTitleBarService.set('Appointment');\r\n\r\n\t\t\tOrganizationService.getFileUploadDetails().then((organization) => {\r\n\t\t\t\tthis.organization = organization.data;\r\n\t\t\t});\r\n\r\n\t\t\tSelectedAppointment.getAppointment().then((appointment) => {\r\n\t\t\t\tthis.setAppointment(appointment);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tsetAppointment(appointment: Appointment) {\r\n\t\t\tthis.appointment = appointment;\r\n\r\n\t\t\tthis.AdministrativeService.GetServiceRequestPhotos(this.appointment.service_request.id).then((response) => {\r\n\t\t\t\tthis.photos = response.data;\r\n\t\t\t\tthis.loading = false;\r\n\t\t\t\tthis.upgradeMdlInputs();\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tsavePhotoDetails() {\r\n\t\t\tthis.photos.forEach(photo => {\r\n\t\t\t\tthis.savingImage = true;\r\n\t\t\t\tthis.AdministrativeService.UpdateServiceRequestPhotos(this.appointment.service_request.id, photo).then(() => {\r\n\t\t\t\t\tthis.DefaultToasts.displaySuccess('File saved');\r\n\t\t\t\t}).finally(() => this.savingImage = false);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tdeleteImage($index: number, image: ServiceRequestPhoto) {\r\n\t\t\tthis.AdministrativeService.DeleteServiceRequestPhoto(this.appointment.service_request.id, image.id).then(() => {\r\n\t\t\t\tthis.photos.splice($index, 1);\r\n\t\t\t});\r\n\t\t};\r\n\r\n\t\tdisplayMaxSizeError() {\r\n\t\t\tthis.DefaultToasts.displayWarning('Reduce File Size and Try Again');\r\n\t\t\tthis.errorFile = {};\r\n\t\t};\r\n\r\n\t\tuploadImage(files: File[]) {\r\n\t\t\tlet count: number = 0,\r\n\t\t\t\tuploadedCount: number = 0,\r\n\t\t\t\tsrId: number = this.appointment.service_request.id;\r\n\r\n\t\t\tfiles.forEach((file) => {\r\n\t\t\t\tlet filetype = file.type.split('/'),\r\n\t\t\t\t\ttime = new Date().getTime(),\r\n\t\t\t\t\tfilename = this.organization.id + '/' + srId + '/' + this.$rootScope.app.generateGuid() +\r\n\t\t\t\t\t\t'.' + time + '.' + file.name.split('.').pop();\r\n\r\n\t\t\t\tcount++;\r\n\t\t\t\tthis.DefaultToasts.displayLoading('File ' + count + '/' + files.length + ' uploading');\r\n\t\t\t\tthis.savingImage = true;\r\n\t\t\t\tthis.UploadService.uploadAWS('service-request-image-uploads', filename, file).then((response: any) => {\r\n\t\t\t\t\tlet data = {\r\n\t\t\t\t\t\turl: response.headers('Location'),\r\n\t\t\t\t\t\tsize: file.size,\r\n\t\t\t\t\t\tfile_type: filetype[0] === 'application' ? filetype[1] : filetype[0]\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tthis.AdministrativeService.addImages(srId, data).then((images) => {\r\n\t\t\t\t\t\tthis.photos.unshift(images.data);\r\n\t\t\t\t\t\tthis.upgradeMdlInputs();\r\n\t\t\t\t\t\tuploadedCount++;\r\n\r\n\t\t\t\t\t\tif (count === uploadedCount) {\r\n\t\t\t\t\t\t\tthis.savingImage = false;\r\n\t\t\t\t\t\t\tthis.DefaultToasts.hideLoading();\r\n\t\t\t\t\t\t\tthis.DefaultToasts.displaySuccess('File ' + count + '/' + files.length + ' uploaded');\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t})\r\n\t\t\t\t.catch((err) => this.DefaultToasts.displayError(err, 'Failed to upload file: '));\r\n\t\t\t});\r\n\t\t};\r\n\r\n\t\tupgradeMdlInputs() {\r\n\t\t\tthis.showMdl = false;\r\n\t\t\tthis.$timeout(() => {\r\n\t\t\t\tthis.showMdl = true;\r\n\t\t\t\tthis.$timeout(() => {\r\n\t\t\t\t\tcomponentHandler.upgradeAllRegistered();\r\n\t\t\t\t})\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n}","/// <reference path=\"../_references.ts\"/>\n\nmodule App.Administrative.VendorInventory {\n    const PAGE_SIZE = 100;\n\n    import Warehouse = App.Administrative.Inventory.Warehouse;\n\n    type FilterMapSection = {\n        [id: number]: boolean;\n    }\n\n    type FilterMap = {\n        tags: {[groupId: number]: FilterMapSection};\n    }\n\n    interface FilterDataBase<Type extends FilterType> {\n        name: string;\n        id: string;\n        type: Type;\n    }\n    interface TagFilterData extends FilterDataBase<FilterType.Tag> {\n        group: number;\n        tag: number;\n    }\n\n    type FilterData = FilterDataBase<any>;\n\n    enum FilterType {\n        Tag,\n    }\n\n    export class VendorInventoryController {\n        protected user: App.User.User;\n        protected warehouses: Warehouse[];\n        protected tagGroups: TagGroup[];\n\n        protected filterMap: FilterMap = {\n            tags: {},\n        };\n        protected filterCollapseMap = {\n            tags: {},\n        };\n        protected filterFavouries: boolean = false;\n        protected inventorySelectionMap: { [warehouseId: number]: { [invId: number]: number } } = {};\n        protected inventorySerializedMap: { [warehouseId: number]: { [invId: number]: number[] } } = {};\n\n        public inventories: VendorInventory[] = [];\n        protected savedInventoryData: {[id: number]: VendorInventory} = {};\n\n        public warehouse: Warehouse;\n        public appointment: App.Appointments.Appointment;\n\n        public searchText: string = '';\n        public page: number = 1;\n        public maxPage: number = 1;\n\n        public isLoading: boolean = true;\n        public isSearching: boolean = false;\n        public isSaving: boolean = false;\n\n        public searchCollapsed: boolean = false;\n        public selectedCollapsed: boolean = false;\n        public expandCollapseToggle: boolean = false;\n\n        static $inject: string[] = [\n            '$q',\n            'InventoryService', 'OfficeService', 'SelectedAppointment', 'TitleBarService', 'ToastService',\n            'UserSession', 'VendorInventoryService',\n        ];\n        constructor(\n            protected $q: ng.IQService,\n            protected InventoryService: App.Administrative.Inventory.InventoryService,\n            protected OfficeService: App.Utils.OfficeService,\n            protected SelectedAppointment: App.Appointments.SelectedAppointment,\n            protected TitleBarService: App.Helpers.TitleBarService,\n            protected ToastService: App.Utils.ToastService,\n            protected UserSession: App.User.UserSession,\n            protected VendorInventoryService: VendorInventoryService\n        ) {\n            TitleBarService.set('Appointment');\n            this.$q.all([\n                this.UserSession.getUser()\n                    .then(user => {\n                        this.user = user;\n                        return this.InventoryService.getWarehouses()\n                            .then((response) => {\n                                this.warehouses = response.data;\n                                this.warehouse = this.warehouses.find(x => {\n                                    return x.user.id === this.user.id;\n                                });\n                            });\n                    })\n                    .catch(err => ToastService.showError('Failed to load user information: ', err)),\n\n                this.getAppointment()\n                    .then(appt => {\n                        this.appointment = appt;\n                    })\n                    .catch(err => ToastService.showError('Failed to load appointment data: ', err)),\n\n                this.VendorInventoryService.getTagGroups({ showTags: 1, 'neq@tag': 'null' })\n                    .then(r => this.tagGroups = r.data)\n                    .catch(err => ToastService.showError('Failed to load filters: ', err)),\n            ]).finally(() => this.isLoading = false);\n        }\n\n        protected filterCache: {[id: string]: FilterData} = {};\n        public getActiveFilters(): FilterData[] {\n            if (this.isLoading) {\n                return [];\n            }\n\n            const filters: FilterData[] = [];\n\n            for (let group in this.filterMap.tags) {\n                Object.keys(this.filterMap.tags[group])\n                    .filter(k => this.filterMap.tags[group][k])\n                    .forEach(tId => {\n                        const id = 't' + tId;\n                        if (!this.filterCache[id]) {\n                            const tagGroup = this.tagGroups.find(g => g.id === Number(group));\n\n                            this.filterCache[id] = <TagFilterData>{\n                                id: id,\n                                name: tagGroup.name + ': ' + tagGroup.tags.find(t => t.id === Number(tId)).name,\n                                type: FilterType.Tag,\n                                group: Number(group),\n                                tag: Number(tId),\n                            };\n                        }\n\n                        filters.push(this.filterCache[id]);\n                    });\n            }\n\n            return filters;\n        }\n        public removeFilter(filter: FilterData) {\n            switch (filter.type) {\n                case FilterType.Tag:\n                    this.filterMap.tags[(<TagFilterData>filter).group][(<TagFilterData>filter).tag] = false;\n                    break;\n            }\n        }\n\n        protected search(page: number = 1) {\n            if (this.isSearching) {\n                return;\n            }\n            this.isSearching = true;\n            const params = {\n                quiet: 1,\n                show_full_counts: 1,\n                size: PAGE_SIZE,\n                page: page,\n                query: this.searchText,\n                orderBy: 'name',\n                sort: 'ASC',\n                show_favourite: 1,\n            };\n\n            if (this.warehouse) {\n                params['warehouses[]'] = this.warehouse.id;\n            }\n            if (this.filterFavouries) {\n            \tparams['favourite'] = 'current';\n            }\n\n            for (let group in this.filterMap.tags) {\n                const tags = Object.keys(this.filterMap.tags[group])\n                    .filter(k => this.filterMap.tags[group][k]);\n\n                if (tags.length) {\n                    params['AND_' + group + '[tags][]'] = tags;\n                }\n            }\n\n            this.VendorInventoryService.getAll(params)\n                .then(r => {\n                    this.inventories = r.data\n                        .map(i => {\n                            const counts: WarehouseCountMap = {};\n                            (<WarehouseCount[]>i.warehouse_counts).forEach(c => {\n                                counts[c.warehouse.id] = c;\n                            });\n                            this.warehouses.forEach(w => {\n                                if (!counts[w.id]) {\n                                    counts[w.id] = {\n                                        id: null,\n                                        count: 0,\n                                        warehouse: w,\n                                        serialized_items: [],\n                                    };\n                                }\n                            });\n                            i.warehouse_counts = counts;\n\n                            return i;\n                        });\n                    this.maxPage = Math.ceil(Number(r.headers('count')) / PAGE_SIZE);\n                })\n                .catch(err => this.ToastService.showError('Failed to load inventory: ', err))\n                .finally(() => this.isSearching = false)\n        }\n\n        protected getAppointment(): ng.IPromise<App.Appointments.Appointment|null> {\n            const defer = this.$q.defer<App.Appointments.Appointment|null>();\n\n            this.OfficeService.getAppointment()\n                .then(r => {\n                    defer.resolve(r.data);\n                })\n                .catch(() => {\n                    this.SelectedAppointment.getAppointment()\n                        .then(appt => {\n                            defer.resolve(appt)\n                        }).catch((response) => {\n                            if (response === this.SelectedAppointment.NO_APPOINTMENT) {\n                                defer.resolve(null);\n                            } else {\n                                defer.reject(response);\n                            }\n                        });\n                });\n\n            return defer.promise;\n        }\n\n\n        public hasFilters(): boolean {\n            for (let group in this.filterMap.tags) {\n                for (let id in this.filterMap.tags[group]) {\n                    if (this.filterMap.tags[group][id]) {\n                        return true;\n                    }\n                }\n            }\n\n            return false;\n        }\n\n        public clearFilters(): void {\n            for (let group in this.filterMap.tags) {\n                this.filterMap.tags[group] = {};\n            }\n        }\n\n        public createReplenishment() {\n            if (this.isSaving || !this.hasInventory()) {\n                return;\n            }\n            this.isSaving = true;\n\n            const data = [];\n            Object.keys(this.inventorySelectionMap).forEach(wId => {\n                Object.keys(this.inventorySelectionMap[wId]).forEach(iId => {\n                    if (this.inventorySelectionMap[wId][iId] > 0) {\n                        data.push({\n                            warehouse: wId,\n                            inventory: iId,\n                            count: this.inventorySelectionMap[wId][iId],\n                            appointment: this.appointment && this.appointment.id || null,\n                            serialized_items: this.inventorySerializedMap[wId] && this.inventorySerializedMap[wId][iId] || null,\n                        });\n                    }\n                });\n            });\n\n            this.VendorInventoryService.createReplenishments(data, { quiet: 1 })\n                .then(r => {\n                    this.ToastService.show('Successfully created replenishment request');\n                    // TODO: Redirect out\n                    Object.keys(this.savedInventoryData).forEach(iId => {\n                        const inv = this.savedInventoryData[iId];\n                        this.warehouses.forEach(w => {\n                            this.removeInventory(w, inv);\n                        });\n                        delete this.savedInventoryData[iId];\n                    })\n                })\n                .catch(err => this.ToastService.showError('Failed to create replenishment: ', err))\n                .finally(() => this.isSaving = false);\n        }\n\n        public hasInventory(warehouse: null|Warehouse = null): boolean {\n            const warehouses = warehouse\n                ? [warehouse]\n                : this.warehouses;\n            for (let w of warehouses) {\n                for (let invId in this.inventorySelectionMap[w.id]) {\n                    if (this.inventorySelectionMap[w.id][invId] > 0) {\n                        return true;\n                    }\n                }\n            }\n            return false;\n        }\n        public getInventory(warehouse: Warehouse): VendorInventory[] {\n            return Object.keys(this.inventorySelectionMap[warehouse.id])\n                .map(id => this.savedInventoryData[id]);\n        }\n        public handleInventoryChange(warehouse: Warehouse, inventory: VendorInventory) {\n            if (this.inventorySelectionMap[warehouse.id][inventory.id] <= 0) {\n                this.removeInventory(warehouse, inventory);\n            } else {\n                this.savedInventoryData[inventory.id] = inventory;\n                if (inventory.serialized) {\n                    this.inventorySelectionMap[warehouse.id][inventory.id] = Math.min(\n                        this.inventorySelectionMap[warehouse.id][inventory.id],\n                        inventory.warehouse_counts[warehouse.id].count\n                    );\n\n                    this.inventorySerializedMap[warehouse.id] =\n                        this.inventorySerializedMap[warehouse.id] || {};\n                    this.inventorySerializedMap[warehouse.id][inventory.id] =\n                        this.inventorySerializedMap[warehouse.id][inventory.id] || [];\n                    while (this.inventorySerializedMap[warehouse.id][inventory.id].length < this.inventorySelectionMap[warehouse.id][inventory.id]) {\n                        this.inventorySerializedMap[warehouse.id][inventory.id].push(null);\n                    }\n                    while (this.inventorySerializedMap[warehouse.id][inventory.id].length > this.inventorySelectionMap[warehouse.id][inventory.id]) {\n                        this.inventorySerializedMap[warehouse.id][inventory.id].pop();\n                    }\n                }\n            }\n        }\n        public removeInventory(warehouse: Warehouse, inventory: VendorInventory) {\n            if (this.inventorySelectionMap[warehouse.id]) {\n                delete this.inventorySelectionMap[warehouse.id][inventory.id];\n            }\n            if (this.inventorySerializedMap[warehouse.id]) {\n                delete this.inventorySerializedMap[warehouse.id][inventory.id];\n            }\n        }\n        public getUnusedSerializedItems(warehouse: Warehouse, inventory: VendorInventory, index: number): SerializedItem[] {\n            return inventory.warehouse_counts[warehouse.id]\n                .serialized_items\n                .filter(i =>\n                    this.inventorySerializedMap[warehouse.id][inventory.id].indexOf(i.id) === -1\n                        || this.inventorySerializedMap[warehouse.id][inventory.id][index] === i.id\n                );\n        }\n        public warnNoSerialized(inv: VendorInventory) {\n            this.ToastService.show(\n                'There are no ' + inv.name + ' serialized items in the warehouse ' + (\n                    this.warehouse\n                        ? this.warehouse.name\n                        : 'selected'\n                )\n            );\n        }\n        public expandCollapseAll(): void {\n        \tthis.expandCollapseToggle = !this.expandCollapseToggle;\n\n        \tfor (const inv of this.inventories) {\n        \t\tinv.expanded = this.expandCollapseToggle;\n        \t}\n        }\n        public favoriteVendorInv(inv: VendorInventory): void {\n        \tif (inv.updating) {\n        \t\treturn;\n        \t}\n        \tinv.updating = true;\n        \tthis.VendorInventoryService.setFavourite(inv.id, !inv.favourite, { quiet: 1, show_favourite: 1 })\n        \t\t.then((r) => inv.favourite = r.data.favourite)\n        \t\t.catch(err => this.ToastService.showError('Failed to mark favourite: ', err))\n        \t\t.finally(() => inv.updating = false);\n        }\n    }\n}","/// <reference path=\"../../_references.ts\"/>\n\nmodule App.History {\n\timport Appointment = App.Appointments.Appointment;\n\timport TitleBarService = App.Helpers.TitleBarService;\n\timport ServiceRequest = App.Customer.ServiceRequest;\n\timport SelectedAppointment = App.Appointments.SelectedAppointment;\n\timport AppRootScope = App.Administrative.AppRootScope;\n\timport OfficeService = App.Utils.OfficeService;\n\n\texport class PhotosController {\n\n\t\tstatic $inject: string[] = ['$rootScope', '$state' ,'TitleBarService', 'SelectedAppointment', 'HistoryService', 'OfficeService', '$window', '$stateParams'];\n\n\t\tserviceRequest: ServiceRequest = null;\n\t\tserviceRequestsWithPhotos: ServiceRequest[];\n\t\tfromOffice: boolean = false;\n\t\tshowBack: boolean = false;\n\n\t\tlightbox: any;\n\t\tlightboxPhoto: any;\n\n\t\tconstructor(\n\t\t\tprivate $rootScope: AppRootScope,\n\t\t\tprivate $state: ng.ui.IStateService,\n\t\t\tprivate TitleBarService: TitleBarService,\n\t\t\tprivate SelectedAppointment: SelectedAppointment,\n\t\t\tprivate HistoryService: HistoryService,\n\t\t\tprivate OfficeService: OfficeService,\n\t\t\tprivate $window: ng.IWindowService,\n\t\t\tprivate $stateParams: ng.ui.IStateParamsService,\n\t\t) {\n\t\t\tTitleBarService.set('History');\n\n\t\t\t$rootScope.app.startAppLoading();\n\n\t\t\tOfficeService.getAppointment().then((response) => {\n\t\t\t\tthis.fromOffice = true;\n\t\t\t\tthis.showBack = this.$state.params.showBack;\n\t\t\t\treturn response.data;\n\t\t\t}).catch(() => SelectedAppointment.getAppointment())\n\t\t\t\t.then((appt: Appointment) => {\n\t\t\t\t\tthis.initialize(\n\t\t\t\t\t\t$state.params.addressId\n\t\t\t\t\t\t\t? $state.params.addressId\n\t\t\t\t\t\t\t: appt.service_request.service_address.id\n\t\t\t\t\t);\n\t\t\t\t})\n\t\t\t\t.catch(() => {\n\t\t\t\t\tthis.initialize($state.params.addressId);\n\t\t\t\t});\n\n\t\t\tthis.lightbox = angular.element(document.querySelector('#lightbox'));\n\t\t\tthis.lightboxPhoto = angular.element(document.querySelector('#lightboxPhoto'));\n\n\t\t\tthis.lightbox.on('click', () => {\n\t\t\t\tthis.lightbox[0].style.opacity = 0;\n\t\t\t\tthis.lightbox[0].style.pointerEvents = 'none';\n\t\t\t\tthis.lightboxPhoto[0].style.opacity = 0;\n\t\t\t\tthis.lightboxPhoto[0].style.pointerEvents = 'none';\n\t\t\t});\n\t\t}\n\n\t\topenLightbox(url) {\n\t\t\tthis.lightbox[0].style.opacity = 0.3;\n\t\t\tthis.lightbox[0].style.pointerEvents = 'auto';\n\t\t\tthis.lightboxPhoto[0].src = url;\n\t\t\tthis.lightboxPhoto[0].style.opacity = 1;\n\t\t\tthis.lightboxPhoto[0].style.pointerEvents = 'auto';\n\t\t};\n\n\t\tgoBack() {\n\t\t\tif (!this.fromOffice) {\n\t\t\t\tthis.$window.history.back();\n\t\t\t} else {\n\t\t\t\tthis.$state.go('zipSolutions.history');\n\t\t\t}\n\t\t}\n\n\t\tinitialize(addressId: number) {\n\t\t\tthis.HistoryService.getServiceRequestPhotosByAddress(addressId)\n\t\t\t\t.then((response) => {\n\t\t\t\t\tthis.serviceRequestsWithPhotos = response.data;\n\t\t\t\t}).finally(() => {\n\t\t\t\t\tthis.$rootScope.app.stopAppLoading();\n\t\t\t});\n\n\t\t}\n\n\t}\n}","/// <reference path=\"../../_references.ts\"/>\n\nmodule App.History {\n\timport AppRootScope = App.Administrative.AppRootScope;\n\timport BannerService = App.WorkOrder.BannerService;\n\timport OfficeService = App.Utils.OfficeService;\n\timport Package = App.PriceGuide.Package;\n\timport ReturnedProduct = App.PriceGuide.ReturnedProduct;\n\timport SelectedAppointment = App.Appointments.SelectedAppointment;\n\timport TitleBarService = App.Helpers.TitleBarService;\n\timport ToastService = App.Utils.ToastService;\n\timport WorkOrderService = App.WorkOrder.WorkOrderService;\n\timport AdministrativeService = App.Administrative.AdministrativeService;\n\timport AppointmentChecklist = App.Administrative.AppointmentChecklist;\n\timport CustomerService = App.Customer.CustomerService;\n\n\texport class RecommendationsDetailController {\n\n\t\tstatic $inject: string[] = [\n\t\t\t'$rootScope', '$state', 'TitleBarService', 'AdministrativeService', 'BannerService', 'HistoryService',\n\t\t\t'SelectedAppointment', '$stateParams', 'OfficeService', '$sce', 'WorkOrderService', 'ToastService', '$window',\n\t\t\t'CustomerService', 'OrganizationService',\n\t\t];\n\n\t\tselectedHistoricalServiceRequest: App.Customer.ServiceRequest;\n\n\t\trecommendations: Package[];\n\t\tinEditMode: boolean = false;\n\t\tfromOffice: boolean = false;\n\t\tshowBack: boolean = false;\n\t\tusesServicePlans: boolean = false;\n\n\t\temail: string = null;\n\t\temailNote: string = '';\n\t\tedittedEmail: string = '';\n\t\teditEmailFlyout: boolean = false;\n\t\tshowNewEmail: boolean = false;\n\t\tnewEmail: string = '';\n\t\temailRecommendation: boolean[];\n\t\tsending: boolean = false;\n\t\tappointmentChecklist: AppointmentChecklist = null;\n\t\tisDeleting?: number = null;\n\t\tisLoadingDeleted: boolean = false;\n\t\tisDeletedOpen: boolean = false;\n\t\tdeletedPackages: Package[];\n\t\tcustomer: App.Customer.ICustomer = null;\n\n\t\tsortableOptions: Object = {\n\t\t\tcontainment: '.packages',\n\t\t\tscrollableContainer: '.work-order-body',\n\t\t\tallowDuplicates: false\n\t\t};\n\n\t\tssp_price_card_text: string = '□□□□ □□□□□□□□□ □□□□□□□□□□□';\n\n\t\tconstructor(\n\t\t\tprivate $rootScope: AppRootScope,\n\t\t\tprivate $state: ng.ui.IStateService,\n\t\t\tprivate TitleBarService: TitleBarService,\n\t\t\tprotected AdministrativeService: AdministrativeService,\n\t\t\tprivate BannerService: BannerService,\n\t\t\tprivate HistoryService: HistoryService,\n\t\t\tprivate SelectedAppointment: SelectedAppointment,\n\t\t\tprivate $stateParams: ng.ui.IStateParamsService,\n\t\t\tprivate OfficeService: OfficeService,\n\t\t\tprivate $sce: ng.ISCEService,\n\t\t\tprivate WorkOrderService: WorkOrderService,\n\t\t\tprotected ToastService: ToastService,\n\t\t\tprivate $window: Window,\n\t\t\tprivate CustomerService: CustomerService,\n\t\t\tprivate OrganizationService: App.Utils.OrganizationService\n\t\t) {\n\t\t\tTitleBarService.set('History');\n\n\t\t\t$rootScope.app.startAppLoading();\n\n\t\t\tOfficeService.getAppointment().then(() => {\n\t\t\t\tthis.fromOffice = true;\n\t\t\t\tthis.showBack = this.$state.params.showBack;\n\t\t\t\tthis.initialize();\n\t\t\t})\n\t\t\t.catch(() => {\n\t\t\t\tSelectedAppointment.getAppointment().then((appointment) => {\n\t\t\t\t\tthis.initialize();\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tOrganizationService.getPriceCardText()\n\t\t\t\t.then((r) => this.ssp_price_card_text = r.data.ssp_price_card_text);\n\t\t}\n\n\t\tinitialize() {\n\t\t\tconst vm = this;\n\n\t\t\tif(vm.$stateParams.id) {\n\t\t\t\tvm.HistoryService.getServiceRequest(vm.$stateParams.id)\n\t\t\t\t\t.then((response) => {\n\t\t\t\t\t\tthis.customer = (<App.Customer.ICustomer>response.data.customer);\n\n\t\t\t\t\t\tvar emails = this.customer.emails,\n\t\t\t\t\t\t\temail = emails.find(function(email) {\n\t\t\t\t\t\t\t\treturn email.marketing;\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\tvm.selectedHistoricalServiceRequest = response.data;\n\n\t\t\t\t\t\temail = email || emails.pop();\n\t\t\t\t\t\tvm.email = email ? email.email : null;\n\n\t\t\t\t\t\tif(vm.selectedHistoricalServiceRequest) {\n\t\t\t\t\t\t\tvm.getRecommendations(vm.selectedHistoricalServiceRequest.id);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tvm.$rootScope.app.stopAppLoading();\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\tvm.AdministrativeService.GetAppointmentChecklist(vm.SelectedAppointment.id).then((response) => {\n\t\t\t\t\tvm.appointmentChecklist = response.data;\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tvm.$rootScope.app.stopAppLoading();\n\t\t\t\tvm.$state.go('zipSolutions.history.recommendations');\n\t\t\t}\n\n\t\t\treturn vm.WorkOrderService.getServicePlans(vm.SelectedAppointment.id).then(response => {\n\t\t\t\tif (response.data.length > 0) {\n\t\t\t\t\tvm.usesServicePlans = true;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\ttoggleDeletedPackages() {\n\t\t\tif (this.deletedPackages) {\n\t\t\t\tthis.isDeletedOpen = !this.isDeletedOpen;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (this.isLoadingDeleted) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.isLoadingDeleted = true;\n\n\t\t\tthis.HistoryService.getRecommendationsByServiceRequest(this.$stateParams.id, { archived: 1 })\n\t\t\t\t.then((response) => {\n\t\t\t\t\tthis.deletedPackages = response.data;\n\t\t\t\t\tthis.isDeletedOpen = true;\n\t\t\t\t})\n\t\t\t\t.catch((err) => {\n\t\t\t\t\tthis.ToastService.showError('Unable to load deleted recommendations: ', err);\n\t\t\t\t})\n\t\t\t\t.finally(() => {\n\t\t\t\t\tthis.isLoadingDeleted = false;\n\t\t\t\t});\n\t\t}\n\n\t\trestorePackage(pkg: Package) {\n\t\t\tif (this.isDeleting !== null) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.isDeleting = pkg.id;\n\n\t\t\tthis.HistoryService.restoreRecommendation(pkg.id)\n\t\t\t\t.then((response) => {\n\t\t\t\t\tthis.deletedPackages.splice(this.deletedPackages.findIndex((cPkg) => cPkg.id === pkg.id), 1);\n\t\t\t\t\tthis.recommendations.push(response.data);\n\t\t\t\t})\n\t\t\t\t.catch((err) => {\n\t\t\t\t\tthis.ToastService.showError('Unable to restore recommendation: ', err);\n\t\t\t\t})\n\t\t\t\t.finally(() => {\n\t\t\t\t\tthis.isDeleting = null;\n\t\t\t\t});\n\t\t}\n\n\t\tdeletePackage(pkg: Package, index: number) {\n\t\t\tif (this.isDeleting !== null) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.isDeleting = pkg.id;\n\n\t\t\tthis.HistoryService.deleteRecommendation(pkg.id)\n\t\t\t\t.then((response) => {\n\t\t\t\t\tthis.emailRecommendation[index] = false;\n\t\t\t\t\tif (this.deletedPackages) {\n\t\t\t\t\t\tthis.deletedPackages.push(response.data);\n\t\t\t\t\t}\n\t\t\t\t\tthis.recommendations.splice(this.recommendations.findIndex((cPkg) => cPkg.id === pkg.id), 1);\n\t\t\t\t})\n\t\t\t\t.catch((err) => {\n\t\t\t\t\tthis.ToastService.showError('Unable to delete recommendation: ', err);\n\t\t\t\t})\n\t\t\t\t.finally(() => {\n\t\t\t\t\tthis.isDeleting = null;\n\t\t\t\t});\n\t\t}\n\n\t\tgoBack() {\n\t\t\tif (!this.fromOffice) {\n\t\t\t\tthis.$window.history.back();\n\t\t\t} else {\n\t\t\t\tthis.$state.go(this.$state.current, this.$stateParams, { reload: true });\n\t\t\t}\n\t\t}\n\n\t\tgetRecommendations(invoiceId: number) {\n\t\t\tconst vm = this;\n\n\t\t\tvm.HistoryService.getRecommendationsByServiceRequest(invoiceId).then((response) => {\n\t\t\t\tvm.recommendations = response.data;\n\t\t\t\tvm.emailRecommendation = new Array(vm.recommendations.length).fill(true);\n\t\t\t\tvm.$rootScope.app.stopAppLoading();\n\t\t\t});\n\t\t}\n\n\t\tconvertToWorkOrder(recommendation: Package) {\n\t\t\tconst vm = this;\n\n\t\t\tif(recommendation) {\n\t\t\t\tvm.$rootScope.app.startAppLoading();\n\t\t\t\tvm.HistoryService.convertRecommendationToWorkOrder(vm.SelectedAppointment.service_request, recommendation.id).then((response) => {\n\t\t\t\t\tvm.getRecommendations(vm.selectedHistoricalServiceRequest.id);\n\t\t\t\t\tvm.$rootScope.app.stopAppLoading();\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tisItemized(pkg: Package) {\n\t\t\treturn pkg.mode === 'itemized';\n\t\t}\n\n\t\tgetItemizedPrice(packageProduct: ReturnedProduct, pkg: Package): string {\n\t\t\treturn '$' + (\n\t\t\t\tthis.showMultiPrice(pkg)\n\t\t\t\t\t? packageProduct.service.while_here_with_out_agreement\n\t\t\t\t\t: packageProduct.service.while_here_with_agreement\n\t\t\t);\n\t\t}\n\n\t\tsecureIframeSrc(videoId: string) {\n\t\t\treturn this.$sce.trustAsResourceUrl(`https://www.youtube.com/embed/${videoId}?autoplay=1`);\n\t\t}\n\n\t\tshowMultiPrice(pkg: Package): boolean {\n\t\t\treturn this.usesServicePlans && !!pkg.can_show_regular_pricing && this.getRegularPricing(pkg) !== this.getMaintenancePricing(pkg);\n\t\t}\n\n\t\tgetSSPCardText(): string {\n\t\t\treturn this.ssp_price_card_text;\n\t\t}\n\n\t\tisWhileHere(pkg: Package): boolean {\n\t\t\treturn pkg.mode === 'whilehere';\n\t\t}\n\n\t\tcanBeFinanced(pkg: Package): boolean {\n\t\t\treturn this.getMaintenanceMonthlyPrice(pkg) != null && this.customer.can_show_financing;\n\t\t}\n\n\t\tgetRegularPricing(pkg: Package): string {\n\t\t\tlet price = '$';\n\n\t\t\tswitch(pkg.mode) {\n\t\t\t\tcase 'admin':\n\t\t\t\t\tprice = 'Admin';\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'regular':\n\t\t\t\tcase 'whilehere':\n\t\t\t\t\tprice += pkg.prices[pkg.mode].regular;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'itemized':\n\t\t\t\t\tprice += pkg.prices[pkg.mode].whilehere;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tprice += pkg.prices.regular.regular;\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\treturn price;\n\t\t}\n\n\t\tgetMaintenancePricing(pkg: Package): string {\n\t\t\tlet price = '$';\n\n\t\t\tswitch(pkg.mode) {\n\t\t\t\tcase 'admin':\n\t\t\t\t\tprice = 'Admin';\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'regular':\n\t\t\t\tcase 'whilehere':\n\t\t\t\t\tprice += pkg.prices[pkg.mode].service;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'itemized':\n\t\t\t\t\tif (this.usesServicePlans || !this.showMultiPrice(pkg)) {\n\t\t\t\t\t\tprice += pkg.prices.itemized.service;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tprice += pkg.prices.itemized.whilehere;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tprice += pkg.prices.regular.service;\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\treturn price;\n\t\t}\n\n\t\tgetMaintenanceMonthlyPrice(pkg: Package): string {\n\t\t\tswitch(pkg.mode) {\n\t\t\t\tcase 'admin':\n\t\t\t\t\treturn null;\n\t\t\t\tcase 'regular':\n\t\t\t\tcase 'whilehere':\n\t\t\t\tcase 'itemized':\n\t\t\t\t\treturn pkg.prices[pkg.mode].servicemonthly;\n\t\t\t\tdefault:\n\t\t\t\t\treturn pkg.prices.regular.servicemonthly;\n\t\t\t}\n\t\t}\n\n\t\tgetMaintenanceMonthlyPricing(pkg: Package): string {\n\t\t\tlet price = this.getMaintenanceMonthlyPrice(pkg);\n\n\t\t\tif(price == null){\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\treturn `${price} / month *`;\n\t\t}\n\n\t\teditEmail() {\n\t\t\tthis.email = this.edittedEmail;\n\t\t\tthis.editEmailFlyout = false;\n\n\t\t\tif (this.showNewEmail) {\n\t\t\t\tthis.CustomerService.createEmail(this.customer.id, this.newEmail).then((email) => {\n\t\t\t\t\tthis.customer.emails.push(email.data);\n\t\t\t\t\tthis.email = this.edittedEmail = email.data.email;\n\t\t\t\t\tthis.newEmail = '';\n\t\t\t\t\tthis.showNewEmail = false;\n\t\t\t\t\tthis.ToastService.show('Email created');\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tgetSelectedRecommendations() {\n\t\t\treturn this.recommendations.filter((r) => {\n\t\t\t\treturn this.emailRecommendation[r.id];\n\t\t\t});\n\t\t}\n\n\t\tshowPackageNote(pkg: Package): boolean {\n\t\t\treturn pkg.description !== null;\n\t\t}\n\n\t\tcanShowProducts(): boolean {\n\t\t\treturn true;\n\t\t}\n\n\t\temailRecommendations() {\n\t\t\tconst vm = this;\n\n\t\t\tvm.sending = true;\n\t\t\tvm.HistoryService.emailRecommendations(\n\t\t\t\tvm.selectedHistoricalServiceRequest.id,\n\t\t\t\tthis.getSelectedRecommendations()\n\t\t\t\t\t.map(r => {\n\t\t\t\t\t\treturn r.id;\n\t\t\t\t\t}),\n\t\t\t\tvm.email,\n\t\t\t\tthis.emailNote\n\t\t\t).then(() => {\n\t\t\t\tvm.appointmentChecklist.email_recommendations = true;\n\t\t\t\tvm.AdministrativeService.UpdateAppointmentChecklist(vm.SelectedAppointment.id, vm.appointmentChecklist).then(()=> {\n\t\t\t\t\tvm.sending = false;\n\t\t\t\t\tvm.ToastService.show(\"Email sent.\");\n\t\t\t\t\tvm.goBack();\n\t\t\t\t}).catch((err) => {\n\t\t\t\t\tthis.ToastService.showError('Unable to send email: ', err);\n\t\t\t\t\tvm.sending = false;\n\t\t\t\t});\n\t\t\t}).catch((err) => {\n\t\t\t\tthis.ToastService.showError('Unable to send email: ', err);\n\t\t\t\tvm.sending = false;\n\t\t\t});\n\t\t}\n\t}\n}\n","/// <reference path=\"../../_references.ts\"/>\n\nmodule App.History {\n\timport Appointment = App.Appointments.Appointment;\n\timport AppRootScope = App.Administrative.AppRootScope;\n\timport OfficeService = App.Utils.OfficeService;\n\timport SelectedAppointment = App.Appointments.SelectedAppointment;\n\timport ServiceRequest = App.Customer.ServiceRequest;\n\timport TitleBarService = App.Helpers.TitleBarService;\n\n\texport class RecommendationsListController {\n\t\tstatic $inject: string[] = ['$rootScope', '$state' ,'TitleBarService', 'SelectedAppointment', 'HistoryService', 'OfficeService', '$window', '$stateParams'];\n\n\t\tserviceRequestHistory: ServiceRequest[];\n\t\tfromOffice: boolean = false;\n\t\tshowBack: boolean = false;\n\t\taddressSearch: boolean = false;\n\n\t\tconstructor(\n\t\t\tprivate $rootScope: AppRootScope,\n\t\t\tprivate $state: ng.ui.IStateService,\n\t\t\tprivate TitleBarService: TitleBarService,\n\t\t\tprivate SelectedAppointment: SelectedAppointment,\n\t\t\tprivate HistoryService: HistoryService,\n\t\t\tprivate OfficeService: OfficeService,\n\t\t\tprivate $window: ng.IWindowService,\n\t\t\tprivate $stateParams: ng.ui.IStateParamsService,\n\t\t) {\n\t\t\tTitleBarService.set('History');\n\n\t\t\tthis.addressSearch = Boolean($state.params.addressId);\n\n\t\t\tOfficeService.getAppointment()\n\t\t\t\t.then(response => {\n\t\t\t\t\tthis.fromOffice = true;\n\t\t\t\t\tthis.showBack = this.$state.params.showBack;\n\t\t\t\t\treturn response.data;\n\t\t\t\t})\n\t\t\t\t.catch(() => SelectedAppointment.getAppointment())\n\t\t\t\t.then((appt: Appointment) => this.initialize(\n\t\t\t\t\tthis.addressSearch\n\t\t\t\t\t\t? $state.params.addressId\n\t\t\t\t\t\t: appt.service_request.service_address.id\n\t\t\t\t));\n\t\t}\n\n\t\tinitialize(addressId: number) {\n\t\t\tconst vm = this;\n\n\t\t\tvm.$rootScope.app.startAppLoading();\n\n\t\t\tvm.HistoryService.getServiceRequestRecommendationsByAddress(addressId)\n\t\t\t\t.then((response) => {\n\t\t\t\t\tvm.serviceRequestHistory = response.data;\n\t\t\t\t}).finally(() => {\n\t\t\t\t\tthis.$rootScope.app.stopAppLoading();\n\t\t\t\t});\n\t\t}\n\n\t\tgoBack() {\n\t\t\tif (!this.fromOffice) {\n\t\t\t\tthis.$window.history.back();\n\t\t\t} else {\n\t\t\t\tthis.$state.go('zipSolutions.history');\n\t\t\t}\n\t\t}\n\n\t\tshowRecommendations(serviceRequest: ServiceRequest) {\n\t\t\tif(serviceRequest) {\n\t\t\t\tconst params = angular.copy(this.$state.params);\n\t\t\t\tparams.id = serviceRequest.id;\n\t\t\t\tparams.showBack = true;\n\t\t\t\tthis.$state.go('zipSolutions.history.recommendations.detail', params);\n\t\t\t}\n\t\t}\n\t}\n}","/// <reference path=\"../../_references.ts\"/>\n\nmodule App.History {\n\timport TitleBarService = App.Helpers.TitleBarService;\n\timport ServiceRequest = App.Customer.ServiceRequest;\n\timport SelectedAppointment = App.Appointments.SelectedAppointment;\n\timport AppRootScope = App.Administrative.AppRootScope;\n\timport OfficeService = App.Utils.OfficeService;\n\n\texport class RecommendationsViewController {\n\t\tstatic $inject: string[] = ['$rootScope', '$state', '$stateParams' ,'TitleBarService', 'HistoryService', 'OfficeService', '$window'];\n\n\t\tserviceRequest: ServiceRequest;\n\t\trecommendations: string;\n\t\thasRecommendations: boolean = false;\n\t\tfromOffice: boolean = false;\n\n\t\tconstructor(\n\t\t\tprivate $rootScope: AppRootScope,\n\t\t\tprivate $state: ng.ui.IStateService,\n\t\t\tprivate $stateParams: ng.ui.IStateParamsService,\n\t\t\tprivate TitleBarService: TitleBarService,\n\t\t\tprivate HistoryService: HistoryService,\n\t\t\tprivate OfficeService: OfficeService,\n\t\t\tprivate $window: ng.IWindowService,\n\t\t) {\n\t\t\tTitleBarService.set('History');\n\n\t\t\tif(this.$stateParams.id) {\n\t\t\t\tthis.$rootScope.app.startAppLoading();\n\n\t\t\t\tOfficeService.getAppointment().then(() => {\n\t\t\t\t\tthis.fromOffice = true;\n\t\t\t\t}).finally(() => {\n\t\t\t\t\tthis.HistoryService.getServiceRequest(this.$stateParams.id).then((response) => {\n\t\t\t\t\t\tthis.serviceRequest = response.data;\n\t\t\t\t\t\tthis.hasRecommendations = Boolean(this.serviceRequest.last_sent_recommendation);\n\n\t\t\t\t\t\tif (this.hasRecommendations) {\n\t\t\t\t\t\t\tthis.getRecommendation(this.serviceRequest.last_sent_recommendation.id);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis.$rootScope.app.stopAppLoading();\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tthis.$state.go('zipSolutions.history.recommendations');\n\t\t\t}\n\t\t}\n\n\t\tgoBack() {\n\t\t\tif (!this.fromOffice) {\n\t\t\t\tthis.$window.history.back();\n\t\t\t} else {\n\t\t\t\tthis.$state.go('zipSolutions.history.recommendations');\n\t\t\t}\n\t\t}\n\n\t\tgetRecommendation(recId: number) {\n\t\t\tthis.HistoryService.getRecommendationHtml(recId).then((response) => {\n\t\t\t\tlet parser = new DOMParser(),\n\t\t\t\t\tbody = parser.parseFromString(response.data, 'text/html'),\n\t\t\t\t\tremoval: Element[] = [].concat(\n\t\t\t\t\t\tArray.from(body.getElementsByClassName('page-header')),\n\t\t\t\t\t\tArray.from(body.getElementsByTagName('script'))\n\t\t\t\t\t);\n\n\t\t\t\tremoval.forEach((e) => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\te.parentNode.removeChild(e);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t// Ignore any errors\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tthis.recommendations = body.body.innerHTML;\n\t\t\t\tthis.$rootScope.app.stopAppLoading();\n\t\t\t});\n\t\t}\n\t}\n}\n","/// <reference path=\"../../_references.ts\"/>\n\nmodule App.History {\n\timport TitleBarService = App.Helpers.TitleBarService;\n\timport ServiceRequest = App.Customer.ServiceRequest;\n\timport SelectedAppointment = App.Appointments.SelectedAppointment;\n\timport AppRootScope = App.Administrative.AppRootScope;\n\timport OfficeService = App.Utils.OfficeService;\n\n\texport class ServiceRequestDetailController {\n\t\tstatic $inject: string[] = ['$rootScope', '$state' ,'TitleBarService', 'HistoryService', 'OfficeService', '$stateParams', '$window'];\n\n\t\tserviceRequest: ServiceRequest;\n\t\tinvoice: string;\n\t\thasInvoice: boolean = true;\n\t\tfromOffice: boolean = false;\n\t\tshowBack: boolean = false;\n\n\t\tconstructor(\n\t\t\tprivate $rootScope: AppRootScope,\n\t\t\tprivate $state: ng.ui.IStateService,\n\t\t\tprivate TitleBarService: TitleBarService,\n\t\t\tprivate HistoryService: HistoryService,\n\t\t\tprivate OfficeService: OfficeService,\n\t\t\tprivate $stateParams: ng.ui.IStateParamsService,\n\t\t\tprivate $window: ng.IWindowService\n\t\t) {\n\t\t\tTitleBarService.set('History');\n\t\t\tthis.$rootScope.app.startAppLoading();\n\n\t\t\tOfficeService.getAppointment()\n\t\t\t\t.then(() => {\n\t\t\t\t\tthis.fromOffice = true;\n\t\t\t\t\tthis.showBack = this.$state.params.showBack;\n\t\t\t\t})\n\t\t\t\t.finally(() => this.initialize());\n\t\t}\n\n\t\tinitialize() {\n\t\t\tif (this.$stateParams.id) {\n\t\t\t\tthis.HistoryService.getServiceRequest(this.$stateParams.id).then((response) => {\n\t\t\t\t\tthis.serviceRequest = response.data;\n\t\t\t\t\tthis.getInvoice();\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tthis.$state.go('zipSolutions.history.servicerequest');\n\t\t\t\tthis.$rootScope.app.stopAppLoading();\n\t\t\t}\n\t\t}\n\n\t\tgoBack() {\n\t\t\tif (!this.fromOffice) {\n\t\t\t\tthis.$window.history.back();\n\t\t\t} else {\n\t\t\t\tthis.$state.go('zipSolutions.history.servicerequest');\n\t\t\t}\n\t\t}\n\n\t\tgetInvoice() {\n\t\t\tthis.HistoryService.getInvoicePreviewHtml(this.serviceRequest.id).then((response) => {\n\t\t\t\tlet parser = new DOMParser(),\n\t\t\t\t\tbody = parser.parseFromString(response.data, 'text/html'),\n\t\t\t\t\tremoval: Element[] = [].concat(\n\t\t\t\t\t\tArray.from(body.getElementsByClassName('page-header')),\n\t\t\t\t\t\tArray.from(body.getElementsByTagName('script'))\n\t\t\t\t\t);\n\n\t\t\t\tremoval.forEach((e) => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\te.parentNode.removeChild(e);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t// Ignore any errors\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tthis.invoice = body.body.innerHTML;\n\t\t\t\tthis.$rootScope.app.stopAppLoading();\n\t\t\t});\n\t\t}\n\t}\n}\n","/// <reference path=\"../../_references.ts\"/>\n\nmodule App.History {\n\timport Appointment = App.Appointments.Appointment;\n\timport TitleBarService = App.Helpers.TitleBarService;\n\timport ServiceRequest = App.Customer.ServiceRequest;\n\timport SelectedAppointment = App.Appointments.SelectedAppointment;\n\timport AppRootScope = App.Administrative.AppRootScope;\n\timport OfficeService = App.Utils.OfficeService;\n\n\texport class ServiceRequestListController {\n\n\t\tstatic $inject: string[] = ['$rootScope', '$state' ,'TitleBarService', 'SelectedAppointment',\n\t\t\t'HistoryService', 'OfficeService', '$q', '$stateParams', '$window'];\n\n\t\tserviceRequestHistory: ServiceRequest[];\n\t\tfromOffice: boolean = false;\n\t\tshowBack: boolean = false;\n\n\t\tconstructor(\n\t\t\tprivate $rootScope: AppRootScope,\n\t\t\tprivate $state: ng.ui.IStateService,\n\t\t\tprivate TitleBarService: TitleBarService,\n\t\t\tprivate SelectedAppointment: SelectedAppointment,\n\t\t\tprivate HistoryService: HistoryService,\n\t\t\tprivate OfficeService: OfficeService,\n\t\t\tprivate $q: ng.IQService,\n\t\t\tprivate $stateParams: ng.ui.IStateParamsService,\n\t\t\tprivate $window: ng.IWindowService,\n\n\t\t) {\n\t\t\tTitleBarService.set('History');\n\n\t\t\t$rootScope.app.startAppLoading();\n\n\t\t\tOfficeService.getAppointment()\n\t\t\t\t.then(response => {\n\t\t\t\t\tthis.fromOffice = true;\n\t\t\t\t\tthis.showBack = this.$state.params.showBack;\n\t\t\t\t\tthis.preInit(response.data);\n\t\t\t\t})\n\t\t\t\t.catch(() => {\n\t\t\t\t\tif (this.$state.params.addressId) {\n\t\t\t\t\t\tthis.preInit(null);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tSelectedAppointment.getAppointment()\n\t\t\t\t\t\t.then(appt => this.preInit(appt));\n\t\t\t\t});\n\t\t}\n\n\t\tpreInit(appt?: Appointment) {\n\t\t\tthis.initialize(\n\t\t\t\t(this.$state.params.addressId || !appt)\n\t\t\t\t\t? this.$state.params.addressId\n\t\t\t\t\t: appt.service_request.service_address.id\n\t\t\t);\n\t\t}\n\n\t\tinitialize(addressId: number) {\n\t\t\tthis.HistoryService.getServiceRequestHistoryByAddress(addressId, { show_note_edits: 1 })\n\t\t\t\t.then((response) => {\n\t\t\t\t\tthis.serviceRequestHistory = response.data;\n\t\t\t\t}).finally(() => {\n\t\t\t\t\tthis.$rootScope.app.stopAppLoading();\n\t\t\t\t});\n\t\t}\n\n\t\tgoBack() {\n\t\t\tif (!this.fromOffice) {\n\t\t\t\tthis.$window.history.back();\n\t\t\t} else {\n\t\t\t\tthis.$state.go('zipSolutions.history');\n\t\t\t}\n\t\t}\n\n\t\tshowDetails(serviceRequest: ServiceRequest) {\n\t\t\tif(serviceRequest) {\n\t\t\t\tlet params = angular.copy(this.$state.params);\n\t\t\t\tparams.id = serviceRequest.id;\n\n\t\t\t\tthis.$state.go('zipSolutions.history.servicerequest.detail', params);\n\t\t\t}\n\t\t}\n\t}\n}","/// <reference path=\"../../_references.ts\"/>\r\n\r\nmodule App.ItemManagement {\r\n\timport Appointment = App.Appointments.Appointment;\r\n\timport Questionnaire = App.Questionnaire.Questionnaire;\r\n\timport QuestionnaireToken = App.Questionnaire.QuestionnaireToken;\r\n\timport QuestionnaireTokenCreate = App.Questionnaire.QuestionnaireTokenCreate;\r\n\timport TitleBarService = App.Helpers.TitleBarService;\r\n\timport UploadService = App.Helpers.UploadService;\r\n\timport OrganizationFileUploadData = App.Utils.OrganizationFileUploadData;\r\n\r\n\texport class ItemDetailsController {\r\n\t\tstatic $inject: string[] = [\r\n\t\t\t'$q', '$scope', '$state', '$timeout',\r\n\t\t\t'FormService', 'ItemManagementService', 'QuestionnaireService', 'SelectedAppointment',\r\n\t\t\t'TitleBarService', 'UploadService', 'OrganizationService', 'DefaultToasts'\r\n\t\t];\r\n\r\n\t\tloading: boolean = true;\r\n\t\tappointment: Appointment = null;\r\n\t\titem: ServiceableItem = null;\r\n\t\titemType: ServiceableItemType = null;\r\n\t\torganization: OrganizationFileUploadData = null;\r\n\r\n\t\tedittedItem: ServiceableItem = null;\r\n\t\teditItemFlyout: boolean = false;\r\n\r\n\t\tedittedNote: ServiceableItemNote = null;\r\n\t\teditNoteFlyout: boolean = false;\r\n\r\n\t\tedittedPhoto: ServiceableItemImage = null;\r\n\t\teditPhotoFlyout: boolean = false;\r\n\t\tisSavingPhoto: boolean = false;\r\n\t\terrorFile: Object = {};\r\n\r\n\t\thasForms: boolean;\r\n\r\n\t\tinstances: App.Forms.FormInstanceList[];\r\n\t\ttags: ServiceableItemTag[] = null;\r\n\t\ttagOptions: TagOption[][] = [];\r\n\r\n\t\tshowMdl: boolean = true;\r\n\r\n\t\tconstructor(\r\n\t\t\tprotected $q: ng.IQService,\r\n\t\t\tprotected $scope: ng.IScope,\r\n\t\t\tprotected $state: ng.ui.IStateService,\r\n\t\t\tprotected $timeout: ng.ITimeoutService,\r\n\t\t\tprotected FormService: App.Forms.FormService,\r\n\t\t\tprotected ItemManagementService: ItemManagementService,\r\n\t\t\tprotected QuestionnaireService: App.Questionnaire.QuestionnaireService,\r\n\t\t\tprotected SelectedAppointment: App.Appointments.SelectedAppointment,\r\n\t\t\tprotected TitleBarService: TitleBarService,\r\n\t\t\tprotected UploadService: UploadService,\r\n\t\t\tprotected OrganizationService: App.Utils.OrganizationService,\r\n\t\t\tprotected DefaultToasts: App.Utils.DefaultToasts,\r\n\t\t) {\r\n\t\t\tTitleBarService.set('Appointment');\r\n\r\n\t\t\tthis.$q.all({\r\n\t\t\t\tappointment: SelectedAppointment.getAppointment(),\r\n\t\t\t\torganization: OrganizationService.getFileUploadDetails(),\r\n\t\t\t\ttags: this.ItemManagementService.GetServiceableItemTags(),\r\n\t\t\t\titem: this.ItemManagementService.GetServiceableItem($state.params.itemId),\r\n\t\t\t\titemType: this.ItemManagementService.getItemTypeForItem($state.params.itemId),\r\n\t\t\t\tinstances: this.FormService.getItemInstances($state.params.itemId),\r\n\t\t\t\tforms: this.FormService.getForms({ for_item: $state.params.itemId, item_form: 1, size: 0 })\r\n\t\t\t}).then((data) => {\r\n\t\t\t\tthis.appointment = data.appointment;\r\n\t\t\t\tthis.organization = data.organization.data;\r\n\t\t\t\tthis.tags = data.tags.data;\r\n\t\t\t\tthis.item = data.item.data;\r\n\t\t\t\tthis.itemType = data.itemType.data;\r\n\t\t\t\tthis.instances = data.instances.data;\r\n\t\t\t\tthis.hasForms = Number(data.forms.headers('count')) > 0;\r\n\r\n\t\t\t\tif (this.item.installed_on != null) {\r\n\t\t\t\t\tthis.item.installed_on = moment(this.item.installed_on).toDate();\r\n\t\t\t\t}\r\n\t\t\t\tthis.edittedItem = angular.copy(this.item);\r\n\r\n\t\t\t\tthis.loading = false;\r\n\t\t\t\tthis.upgradeMdlInputs();\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tgetSelectedValueForTag(tag: ServiceableItemTag): string {\r\n\t\t\tlet item = <TagOption>this.item['tag_' + (tag.tag_group + 1)];\r\n\t\t\treturn item ? tag.options[item.index] : null;\r\n\t\t}\r\n\r\n\t\tgetValuesForTag(tag: ServiceableItemTag): TagOption[] {\r\n\t\t\tif (this.tagOptions[tag.tag_group]) {\r\n\t\t\t\treturn this.tagOptions[tag.tag_group];\r\n\t\t\t}\r\n\r\n\t\t\treturn this.tagOptions[tag.tag_group] = tag.options.filter((value) => {\r\n\t\t\t\treturn value !== null && value !== '';\r\n\t\t\t}).map((value, index) => {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tindex: index,\r\n\t\t\t\t\tvalue: value\r\n\t\t\t\t};\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tcreateForm(form: Questionnaire) {\r\n\t\t\tconst vm = this;\r\n\r\n\t\t\tconst questionnaireToken : QuestionnaireTokenCreate = {\r\n\t\t\t\tservice_request: vm.appointment.service_request.id,\r\n\t\t\t\tquestionnaire: form.id,\r\n\t\t\t\tserviceable_item: vm.edittedItem.id\r\n\t\t\t};\r\n\r\n\t\t\tvm.QuestionnaireService.CreateQuestionnaireToken(questionnaireToken).then((response) => {\r\n\t\t\t\tvm.$state.go('zipSolutions.questionnaire.item', { itemId: vm.item.id, formId: response.data.id });\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\topenOrClosed(questionnaire: QuestionnaireToken) {\r\n\t\t\tconst status = questionnaire.service_request.service_request_status;\r\n\r\n\t\t\tif (status === 'Closed' || status === 'Deleted' || status === 'Cancelled') {\r\n\t\t\t\treturn 'Closed';\r\n\t\t\t}\r\n\r\n\t\t\treturn 'Open';\r\n\t\t}\r\n\r\n\t\teditItemDetails() {\r\n\t\t\tconst vm = this;\r\n\t\t\tvm.editItemFlyout = true;\r\n\t\t}\r\n\r\n\t\tsaveItemDetails() {\r\n\t\t\tconst vm = this;\r\n\r\n\t\t\tvm.ItemManagementService.UpdateServiceableItem(vm.edittedItem).then((response) => {\r\n\t\t\t\tvm.item = new ServiceableItem(response.data);\r\n\t\t\t\tvm.editItemFlyout = false;\r\n\t\t\t\tvm.upgradeMdlInputs();\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\teditNote(note: ServiceableItemNote) {\r\n\t\t\tconst vm = this;\r\n\r\n\t\t\tvm.edittedNote = note;\r\n\t\t\tvm.editNoteFlyout = true;\r\n\t\t}\r\n\r\n\t\tsaveNote(note: ServiceableItemNote) {\r\n\t\t\tconst vm = this;\r\n\r\n\t\t\tif(!note) {\r\n\t\t\t\tvm.editNoteFlyout = false;\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tnote.service_request = this.appointment.service_request.id;\r\n\r\n\t\t\tvar promise: ng.IHttpPromise<ServiceableItemNote> =\r\n\t\t\t\tnote.id ?\r\n\t\t\t\t\tvm.ItemManagementService.UpdateServiceableItemNote(vm.item.id, note)\r\n\t\t\t\t\t: vm.ItemManagementService.CreateServiceableItemNote(vm.item.id, note);\r\n\r\n\t\t\tpromise.then(() => {\r\n\t\t\t\tvm.editNoteFlyout = false;\r\n\t\t\t\tvm.ItemManagementService.GetServiceableItemNotes(vm.item.id).then((response) => {\r\n\t\t\t\t\tvm.item.notes = response.data;\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tclearNote(note: ServiceableItemNote) {\r\n\t\t\tconst vm = this;\r\n\r\n\t\t\tif(!note || !note.id) {\r\n\t\t\t\tvm.editNoteFlyout = false;\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tvm.ItemManagementService.DeleteServiceableItemNote(vm.item.id, note.id).then(() => {\r\n\t\t\t\tvm.ItemManagementService.GetServiceableItemNotes(vm.item.id).then((response) => {\r\n\t\t\t\t\tvm.item.notes = response.data;\r\n\t\t\t\t});\r\n\t\t\t\tvm.editNoteFlyout = false;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\teditPhoto(image: ServiceableItemImage) {\r\n\t\t\tconst vm = this;\r\n\r\n\t\t\tvm.edittedPhoto = image;\r\n\t\t\tvm.editPhotoFlyout = true;\r\n\t\t}\r\n\r\n\t\tdisplayDate(date: Date) {\r\n\t\t\tif(!date) {\r\n\t\t\t\treturn '';\r\n\t\t\t}\r\n\t\t\treturn moment(date).format('YYYY-MM-DD');\r\n\t\t}\r\n\r\n\t\tdisplayMaxSizeError() {\r\n\t\t\tthis.DefaultToasts.displayWarning('Reduce File Size and Try Again');\r\n\t\t\tthis.errorFile = {};\r\n\t\t};\r\n\r\n\t\tuploadImage(files: File[]) {\r\n\t\t\tconst vm = this;\r\n\r\n\t\t\tif (vm.item.id) {\r\n\t\t\t\tif (files && files.length) {\r\n\t\t\t\t\tfor (let i = 0; i < files.length; i++) {\r\n\t\t\t\t\t\tvm.isSavingPhoto = true;\r\n\t\t\t\t\t\tvm.UploadService.upload('serviceableitem/' + vm.item.id + '/image', files[i]).then(function (response: any) {\r\n\t\t\t\t\t\t\tvm.item.images = response.data;\r\n\t\t\t\t\t\t}).finally(() => {\r\n\t\t\t\t\t\t\tvm.isSavingPhoto = false;\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tdeleteImage(image: ServiceableItemImage) {\r\n\t\t\tconst vm = this;\r\n\r\n\t\t\tif (vm.item.id) {\r\n\t\t\t\tvm.ItemManagementService.DeleteServiceableItemImage(vm.item.id, image.id).then((response) => {\r\n\t\t\t\t\tvm.item.images = response.data;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tsetImg() {\r\n\t\t\tangular.element(document.querySelector('#image-upload')).triggerHandler('click');\r\n\t\t};\r\n\r\n\t\tupgradeMdlInputs() {\r\n\t\t\t const vm = this;\r\n\t\t\t vm.showMdl = false;\r\n\t\t\t vm.$timeout(() => {\r\n\t\t\t \tvm.showMdl = true;\r\n\t\t\t\tvm.$timeout(() => {\r\n\t\t\t\t\tcomponentHandler.upgradeAllRegistered();\r\n\t\t\t\t})\r\n\t\t\t });\r\n\t\t}\r\n\t}\r\n}","/// <reference path=\"../../_references.ts\"/>\n\nmodule App.Questionnaire {\n\timport TitleBarService = App.Helpers.TitleBarService;\n\timport ToastService = App.Utils.ToastService;\n\n\texport class ItemQuestionnaireController {\n\t\tstatic $inject: string[] = [\n\t\t\t'$state', '$q', 'Validations', 'TitleBarService', 'QuestionnaireService', 'ToastService'\n\t\t];\n\n\t\ttoken: QuestionnaireToken = null;\n\t\titemId: number;\n\n\t\tloading: boolean = true;\n\n\t\tconstructor(\n\t\t\tprivate $state: ng.ui.IStateService,\n\t\t\tprivate $q: ng.IQService,\n\t\t\tprivate validation: Validations.Validations,\n\t\t\tprivate TitleBarService: TitleBarService,\n\t\t\tprivate QuestionnaireService: QuestionnaireService,\n\t\t\tprivate ToastService: ToastService,\n\t\t) {\n\t\t\tTitleBarService.set('Appointment');\n\t\t\tthis.itemId = $state.params['itemId'];\n\n\t\t\tQuestionnaireService.GetQuestionnaireToken($state.params['formId']).then((response) => {\n\t\t\t\tthis.token = response.data;\n\n\t\t\t\t(this.token.version.questions || []).forEach((question: QuestionnaireQuestion) => {\n\t\t\t\t\t(this.token.responses || []).forEach((response: QuestionnaireResponse) => {\n\t\t\t\t\t\tif (response.question.id === question.id) {\n\t\t\t\t\t\t\tquestion.response = response.response;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t});\n\n\t\t\t\tthis.loading = false;\n\t\t\t});\n\t\t}\n\n\t\tsaveResponse(question: QuestionnaireQuestion, response: string) {\n\t\t\tconst data: QuestionnaireResponseCreate = {\n\t\t\t\t\tquestion: question.id,\n\t\t\t\t\tresponse: response\n\t\t\t\t};\n\n\t\t\tthis.QuestionnaireService.SaveQuestionnaireResponse(this.token.id, data).then(() => {\n\t\t\t\tquestion.response = response;\n\t\t\t\tthis.ToastService.show(\"Saved\");\n\t\t\t});\n\t\t}\n\n\t\tsaveNote() {\n\t\t\tthis.QuestionnaireService.UpdateQuestionnaireToken(this.token).then(() => {\n\t\t\t\tthis.ToastService.show(\"Saved Observations\");\n\t\t\t});\n\t\t}\n\n\t\temailQuestionnaire() {\n\t\t\tconst data: Object = {\n\t\t\t\temail: this.token.service_request.customer.emails[0].email\n\t\t\t};\n\n\t\t\tthis.QuestionnaireService.EmailQuestionnaire(this.token.id, data).then(() => {\n\t\t\t\tthis.ToastService.show(\"Email sent.\");\n\t\t\t\tthis.$state.go('zipSolutions.maintenance.details', { itemId: this.itemId });\n\t\t\t});\n\t\t}\n\t}\n}","/// <reference path=\"../../_references.ts\"/>\n\nmodule App.Questionnaire {\n\timport Appointment = App.Appointments.Appointment;\n\timport OfficeService = App.Utils.OfficeService;\n\n\tinterface Window extends ng.IWindowService {\n\t\tiFrameResizer: iframeResizer.IFrameObject\n\t};\n\n\texport class CustomerSurveyController {\n\t\tstatic $inject: string[] = [\n\t\t\t'$q', '$sce', '$state', '$window',\n\t\t\t'AppointmentService', 'SelectedAppointment', 'TitleBarService', 'ToastService', 'Validations', 'OfficeService'\n\t\t];\n\n\t\tappointment: Appointment = null;\n\t\turl: string = null;\n\t\ttextableNumber: string = null;\n\n\t\tloading: boolean = true;\n\n\t\tconstructor(\n\t\t\tprivate $q: ng.IQService,\n\t\t\tprivate $sce: ng.ISCEService,\n\t\t\tprivate $state: ng.ui.IStateService,\n\t\t\tprivate $window: Window,\n\t\t\tprivate AppointmentService: App.Appointments.AppointmentService,\n\t\t\tprivate SelectedAppointment: App.Appointments.SelectedAppointment,\n\t\t\tprivate TitleBarService: App.Helpers.TitleBarService,\n\t\t\tprivate ToastService: App.Utils.ToastService,\n\t\t\tprivate validation: Validations.Validations,\n\t\t\tprivate OfficeService: OfficeService\n\t\t) {\n\t\t\tTitleBarService.set('Appointment');\n\n\t\t\tOfficeService.getAppointment().then(response => {\n\t\t\t\tthis.setAppointment(response.data);\n\t\t\t})\n\t\t\t.catch(() => {\n\t\t\t\tSelectedAppointment.getAppointment().then((appointment) => {\n\t\t\t\t\tthis.setAppointment(appointment);\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\tsetAppointment(appointment: Appointment) {\n\t\t\tthis.appointment = appointment;\n\t\t\tthis.url = appointment.service_request.questionnaire ? appointment.service_request.questionnaire.short_url : null;\n\n\t\t\tif (this.url === null) {\n\t\t\t\tthis.AppointmentService.createSRQuestionnaire(this.appointment.service_request.id).then((response) => {\n\t\t\t\t\tthis.url = response.data.url;\n\t\t\t\t}).catch(() => {\n\t\t\t\t\tthis.ToastService.show('Unable to find survey.')\n\t\t\t\t});\n\t\t\t}\n\t\t\tthis.textableNumber = this.SelectedAppointment.getPhone(true, true);\n\n\t\t\tif (this.textableNumber === \"No phone found\") {\n\t\t\t\tthis.textableNumber = null;\n\t\t\t}\n\n\t\t\tthis.loading = false;\n\t\t}\n\n\t\tprivate isIOSDevice(): boolean {\n\t\t\treturn true;\n\t\t\t// Currently disabled, as fixing it for iOS devices mangles normal devices\n\t\t\treturn (/iPad|iPhone|iPod/.test(navigator.userAgent) && !(<any>window).MSStream);\n\t\t}\n\n\t\tfixIFrame(selector: string) {\n\t\t\tif (this.isIOSDevice()) {\n\t\t\t\tthis.$window.iFrameResize({\n\t\t\t\t\tlog: false,\n\t\t\t\t\tcheckOrigin: false,\n\t\t\t\t\ttolerance: 5,\n\t\t\t\t}, selector);\n\t\t\t}\n\t\t}\n\n\t\tsecureIframeSrc() {\n\t\t\tlet seperator = this.url.indexOf('?') === -1 ? '?' : '&',\n\t\t\t\tiDevice = this.isIOSDevice() ? 1 : 0;\n\n\t\t\treturn this.$sce.trustAsResourceUrl(\n\t\t\t\tthis.url + seperator + 'iDevice=' + iDevice\n\t\t\t);\n\t\t}\n\n\t\tsendText() {\n\t\t\tthis.AppointmentService.sendCustomerSRText(this.appointment.service_request.id, this.textableNumber, 'resend').then(() => {\n\t\t\t\tthis.ToastService.show('Text Sent.');\n\t\t\t});\n\t\t}\n\t}\n}","(function() {\n\t'use strict';\n\n\tvar telephonyNumbersLoaded = false;\n\tvar telephonyReferenceNumber = null;\n\tvar userPermissionLevel = 0;\n\tvar orgWatcher;\n\tvar userWatcher;\n\n\ttry {\n\t\tangular\n\t\t\t.module('tradeServe.utils.telephony')\n\t\t\t.controller('TelephonyOutboundController', [\n\t\t\t\t'TelephonyOutboundTools',\n\t\t\t\tfunction(TelephonyOutboundTools) {\n\t\t\t\t\treturn TelephonyOutboundTools;\n\t\t\t\t}\n\t\t\t])\n\t\t\t.factory('TelephonyOutboundTools', [\n\t\t\t\t'$rootScope', '$q', '$localStorage', 'DefaultToasts', 'PermissionService', 'TelephonyOutboundService',\n\t\t\t\tfunction($rootScope, $q, $localStorage, DefaultToasts, PermissionService, TelephonyOutboundService) {\n\t\t\t\t\tvar vm = this;\n\n\t\t\t\t\twatchOrg($rootScope, $localStorage, TelephonyOutboundService);\n\t\t\t\t\twatchUser($rootScope, $localStorage, PermissionService);\n\n\t\t\t\t\tvm.getCustomerExtension = function(custId, phone) {\n\t\t\t\t\t\tif (phone.isLoading || phone.telephony_ext) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tphone.isLoading = true;\n\n\t\t\t\t\t\tTelephonyOutboundService.getCustomerExtension(custId, phone.id)\n\t\t\t\t\t\t\t.then(function(resp) {\n\t\t\t\t\t\t\t\tphone.telephony_ext = resp.data.telephony_ext;\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t.catch(function(err) {\n\t\t\t\t\t\t\t\tDefaultToasts.displayError(err, 'Failed to get telephony extension: ');\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t.finally(function() {\n\t\t\t\t\t\t\t\tdelete phone.isLoading;\n\t\t\t\t\t\t\t});\n\t\t\t\t\t};\n\n\t\t\t\t\tvm.getAddressExtension = function(addr) {\n\t\t\t\t\t\tif (addr.isLoading || addr.telephony_ext || !addr.contact_phone) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\taddr.isLoading = true;\n\n\t\t\t\t\t\tTelephonyOutboundService.getAddressExtension(addr.id)\n\t\t\t\t\t\t\t.then(function(resp) {\n\t\t\t\t\t\t\t\taddr.telephony_ext = resp.data.telephony_ext;\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t.catch(function(err) {\n\t\t\t\t\t\t\t\tDefaultToasts.displayError(err, 'Failed to get telephony extension: ');\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t.finally(function() {\n\t\t\t\t\t\t\t\tdelete addr.isLoading;\n\t\t\t\t\t\t\t});\n\t\t\t\t\t};\n\n\t\t\t\t\tvm.showsFullNumber = function(container) {\n\t\t\t\t\t\treturn !vm.showOutboundNumber(container) || userPermissionLevel > 2;\n\t\t\t\t\t};\n\n\t\t\t\t\tvm.getPartialNumber = function(container, number) {\n\t\t\t\t\t\tif (!number || number.length < 1) {\n\t\t\t\t\t\t\treturn '';\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (!vm.showOutboundNumber(container)) {\n\t\t\t\t\t\t\treturn number;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tswitch (userPermissionLevel) {\n\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\treturn number.replace(/[\\d]/g, 'x');\n\t\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\t\treturn number.substr(0, number.length - 4).replace(/[\\d]/g, 'x') + number.substr(-4);\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\treturn number;\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\n\t\t\t\t\tvm.getOutboundNumber = function() {\n\t\t\t\t\t\treturn telephonyReferenceNumber;\n\t\t\t\t\t};\n\n\t\t\t\t\tvm.showOutboundNumber = function(number) {\n\t\t\t\t\t\treturn userPermissionLevel !== 0 && number && number.telephony_ext && telephonyReferenceNumber;\n\t\t\t\t\t};\n\n\t\t\t\t\tvm.isReady = function() {\n\t\t\t\t\t\treturn telephonyNumbersLoaded;\n\t\t\t\t\t};\n\n\t\t\t\t\treturn vm;\n\t\t\t\t}\n\t\t\t])\n\t\t\t.directive('telephonyOutbound', [\n\t\t\t\tfunction() {\n\t\t\t\t\treturn {\n\t\t\t\t\t\trestrict: 'E',\n\t\t\t\t\t\tcontroller: 'TelephonyOutboundController',\n\t\t\t\t\t\tcontrollerAs: 'outbound',\n\t\t\t\t\t\ttransclude: true,\n\t\t\t\t\t\ttemplate: '<div ng-if=\"outbound.isReady()\"><ng-transclude></ng-transclude></div>',\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t]);\n\t} catch(err) {\n\t\treturn;\n\t}\n\n\tfunction watchOrg($rootScope, $localStorage, TelephonyOutboundService) {\n\t\tif (!orgWatcher) {\n\t\t\torgWatcher = $rootScope.$watch(\n\t\t\t\tfunction() {\n\t\t\t\t\treturn $localStorage.selectedOrg && $localStorage.selectedOrg.id;\n\t\t\t\t},\n\t\t\t\tfunction() {\n\t\t\t\t\ttelephonyReferenceNumber = null;\n\t\t\t\t\ttelephonyNumbersLoaded = false;\n\t\t\t\t\tTelephonyOutboundService.getOutboundNumber()\n\t\t\t\t\t\t.then(function(resp) {\n\t\t\t\t\t\t\ttelephonyReferenceNumber = resp.data.reference && resp.data.reference.number;\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.finally(function() {\n\t\t\t\t\t\t\ttelephonyNumbersLoaded = true;\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t}\n\n\tfunction watchUser($rootScope, $localStorage, PermissionService) {\n\t\tif (!userWatcher) {\n\t\t\tuserWatcher = $rootScope.$watch(\n\t\t\t\tfunction() {\n\t\t\t\t\treturn $localStorage.userData && $localStorage.userData.id;\n\t\t\t\t},\n\t\t\t\tfunction() {\n\t\t\t\t\tuserPermissionLevel = !PermissionService.hasPermission('web.telephony.outbound.enabled')\n\t\t\t\t\t\t? 0\n\t\t\t\t\t\t: PermissionService.hasPermission('web.telephony.outbound.full_number')\n\t\t\t\t\t\t\t? 3\n\t\t\t\t\t\t\t: PermissionService.hasPermission('web.telephony.outbound.partial_number')\n\t\t\t\t\t\t\t\t? 2\n\t\t\t\t\t\t\t\t: 1;\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t}\n})();\n","module App.Country {\n\texport type Countries = [{name: string, code: string}];\n\n\tangular.module('helpers.countries', []).constant('Countries', [\n\t\t{name: 'Afghanistan', code: 'AF'},\n\t\t{name: 'Åland Islands', code: 'AX'},\n\t\t{name: 'Albania', code: 'AL'},\n\t\t{name: 'Algeria', code: 'DZ'},\n\t\t{name: 'American Samoa', code: 'AS'},\n\t\t{name: 'AndorrA', code: 'AD'},\n\t\t{name: 'Angola', code: 'AO'},\n\t\t{name: 'Anguilla', code: 'AI'},\n\t\t{name: 'Antarctica', code: 'AQ'},\n\t\t{name: 'Antigua and Barbuda', code: 'AG'},\n\t\t{name: 'Argentina', code: 'AR'},\n\t\t{name: 'Armenia', code: 'AM'},\n\t\t{name: 'Aruba', code: 'AW'},\n\t\t{name: 'Australia', code: 'AU'},\n\t\t{name: 'Austria', code: 'AT'},\n\t\t{name: 'Azerbaijan', code: 'AZ'},\n\t\t{name: 'Bahamas', code: 'BS'},\n\t\t{name: 'Bahrain', code: 'BH'},\n\t\t{name: 'Bangladesh', code: 'BD'},\n\t\t{name: 'Barbados', code: 'BB'},\n\t\t{name: 'Belarus', code: 'BY'},\n\t\t{name: 'Belgium', code: 'BE'},\n\t\t{name: 'Belize', code: 'BZ'},\n\t\t{name: 'Benin', code: 'BJ'},\n\t\t{name: 'Bermuda', code: 'BM'},\n\t\t{name: 'Bhutan', code: 'BT'},\n\t\t{name: 'Bolivia', code: 'BO'},\n\t\t{name: 'Bosnia and Herzegovina', code: 'BA'},\n\t\t{name: 'Botswana', code: 'BW'},\n\t\t{name: 'Bouvet Island', code: 'BV'},\n\t\t{name: 'Brazil', code: 'BR'},\n\t\t{name: 'British Indian Ocean Territory', code: 'IO'},\n\t\t{name: 'Brunei Darussalam', code: 'BN'},\n\t\t{name: 'Bulgaria', code: 'BG'},\n\t\t{name: 'Burkina Faso', code: 'BF'},\n\t\t{name: 'Burundi', code: 'BI'},\n\t\t{name: 'Cambodia', code: 'KH'},\n\t\t{name: 'Cameroon', code: 'CM'},\n\t\t{name: 'Canada', code: 'CA'},\n\t\t{name: 'Cape Verde', code: 'CV'},\n\t\t{name: 'Cayman Islands', code: 'KY'},\n\t\t{name: 'Central African Republic', code: 'CF'},\n\t\t{name: 'Chad', code: 'TD'},\n\t\t{name: 'Chile', code: 'CL'},\n\t\t{name: 'China', code: 'CN'},\n\t\t{name: 'Christmas Island', code: 'CX'},\n\t\t{name: 'Cocos (Keeling) Islands', code: 'CC'},\n\t\t{name: 'Colombia', code: 'CO'},\n\t\t{name: 'Comoros', code: 'KM'},\n\t\t{name: 'Congo', code: 'CG'},\n\t\t{name: 'Congo, The Democratic Republic of the', code: 'CD'},\n\t\t{name: 'Cook Islands', code: 'CK'},\n\t\t{name: 'Costa Rica', code: 'CR'},\n\t\t{name: 'Cote D\\'Ivoire', code: 'CI'},\n\t\t{name: 'Croatia', code: 'HR'},\n\t\t{name: 'Cuba', code: 'CU'},\n\t\t{name: 'Cyprus', code: 'CY'},\n\t\t{name: 'Czech Republic', code: 'CZ'},\n\t\t{name: 'Denmark', code: 'DK'},\n\t\t{name: 'Djibouti', code: 'DJ'},\n\t\t{name: 'Dominica', code: 'DM'},\n\t\t{name: 'Dominican Republic', code: 'DO'},\n\t\t{name: 'Ecuador', code: 'EC'},\n\t\t{name: 'Egypt', code: 'EG'},\n\t\t{name: 'El Salvador', code: 'SV'},\n\t\t{name: 'Equatorial Guinea', code: 'GQ'},\n\t\t{name: 'Eritrea', code: 'ER'},\n\t\t{name: 'Estonia', code: 'EE'},\n\t\t{name: 'Ethiopia', code: 'ET'},\n\t\t{name: 'Falkland Islands (Malvinas)', code: 'FK'},\n\t\t{name: 'Faroe Islands', code: 'FO'},\n\t\t{name: 'Fiji', code: 'FJ'},\n\t\t{name: 'Finland', code: 'FI'},\n\t\t{name: 'France', code: 'FR'},\n\t\t{name: 'French Guiana', code: 'GF'},\n\t\t{name: 'French Polynesia', code: 'PF'},\n\t\t{name: 'French Southern Territories', code: 'TF'},\n\t\t{name: 'Gabon', code: 'GA'},\n\t\t{name: 'Gambia', code: 'GM'},\n\t\t{name: 'Georgia', code: 'GE'},\n\t\t{name: 'Germany', code: 'DE'},\n\t\t{name: 'Ghana', code: 'GH'},\n\t\t{name: 'Gibraltar', code: 'GI'},\n\t\t{name: 'Greece', code: 'GR'},\n\t\t{name: 'Greenland', code: 'GL'},\n\t\t{name: 'Grenada', code: 'GD'},\n\t\t{name: 'Guadeloupe', code: 'GP'},\n\t\t{name: 'Guam', code: 'GU'},\n\t\t{name: 'Guatemala', code: 'GT'},\n\t\t{name: 'Guernsey', code: 'GG'},\n\t\t{name: 'Guinea', code: 'GN'},\n\t\t{name: 'Guinea-Bissau', code: 'GW'},\n\t\t{name: 'Guyana', code: 'GY'},\n\t\t{name: 'Haiti', code: 'HT'},\n\t\t{name: 'Heard Island and Mcdonald Islands', code: 'HM'},\n\t\t{name: 'Holy See (Vatican City State)', code: 'VA'},\n\t\t{name: 'Honduras', code: 'HN'},\n\t\t{name: 'Hong Kong', code: 'HK'},\n\t\t{name: 'Hungary', code: 'HU'},\n\t\t{name: 'Iceland', code: 'IS'},\n\t\t{name: 'India', code: 'IN'},\n\t\t{name: 'Indonesia', code: 'ID'},\n\t\t{name: 'Iran, Islamic Republic Of', code: 'IR'},\n\t\t{name: 'Iraq', code: 'IQ'},\n\t\t{name: 'Ireland', code: 'IE'},\n\t\t{name: 'Isle of Man', code: 'IM'},\n\t\t{name: 'Israel', code: 'IL'},\n\t\t{name: 'Italy', code: 'IT'},\n\t\t{name: 'Jamaica', code: 'JM'},\n\t\t{name: 'Japan', code: 'JP'},\n\t\t{name: 'Jersey', code: 'JE'},\n\t\t{name: 'Jordan', code: 'JO'},\n\t\t{name: 'Kazakhstan', code: 'KZ'},\n\t\t{name: 'Kenya', code: 'KE'},\n\t\t{name: 'Kiribati', code: 'KI'},\n\t\t{name: 'Korea, Democratic People\\'S Republic of', code: 'KP'},\n\t\t{name: 'Korea, Republic of', code: 'KR'},\n\t\t{name: 'Kuwait', code: 'KW'},\n\t\t{name: 'Kyrgyzstan', code: 'KG'},\n\t\t{name: 'Lao People\\'S Democratic Republic', code: 'LA'},\n\t\t{name: 'Latvia', code: 'LV'},\n\t\t{name: 'Lebanon', code: 'LB'},\n\t\t{name: 'Lesotho', code: 'LS'},\n\t\t{name: 'Liberia', code: 'LR'},\n\t\t{name: 'Libyan Arab Jamahiriya', code: 'LY'},\n\t\t{name: 'Liechtenstein', code: 'LI'},\n\t\t{name: 'Lithuania', code: 'LT'},\n\t\t{name: 'Luxembourg', code: 'LU'},\n\t\t{name: 'Macao', code: 'MO'},\n\t\t{name: 'Macedonia, The Former Yugoslav Republic of', code: 'MK'},\n\t\t{name: 'Madagascar', code: 'MG'},\n\t\t{name: 'Malawi', code: 'MW'},\n\t\t{name: 'Malaysia', code: 'MY'},\n\t\t{name: 'Maldives', code: 'MV'},\n\t\t{name: 'Mali', code: 'ML'},\n\t\t{name: 'Malta', code: 'MT'},\n\t\t{name: 'Marshall Islands', code: 'MH'},\n\t\t{name: 'Martinique', code: 'MQ'},\n\t\t{name: 'Mauritania', code: 'MR'},\n\t\t{name: 'Mauritius', code: 'MU'},\n\t\t{name: 'Mayotte', code: 'YT'},\n\t\t{name: 'Mexico', code: 'MX'},\n\t\t{name: 'Micronesia, Federated States of', code: 'FM'},\n\t\t{name: 'Moldova, Republic of', code: 'MD'},\n\t\t{name: 'Monaco', code: 'MC'},\n\t\t{name: 'Mongolia', code: 'MN'},\n\t\t{name: 'Montserrat', code: 'MS'},\n\t\t{name: 'Morocco', code: 'MA'},\n\t\t{name: 'Mozambique', code: 'MZ'},\n\t\t{name: 'Myanmar', code: 'MM'},\n\t\t{name: 'Namibia', code: 'NA'},\n\t\t{name: 'Nauru', code: 'NR'},\n\t\t{name: 'Nepal', code: 'NP'},\n\t\t{name: 'Netherlands', code: 'NL'},\n\t\t{name: 'Netherlands Antilles', code: 'AN'},\n\t\t{name: 'New Caledonia', code: 'NC'},\n\t\t{name: 'New Zealand', code: 'NZ'},\n\t\t{name: 'Nicaragua', code: 'NI'},\n\t\t{name: 'Niger', code: 'NE'},\n\t\t{name: 'Nigeria', code: 'NG'},\n\t\t{name: 'Niue', code: 'NU'},\n\t\t{name: 'Norfolk Island', code: 'NF'},\n\t\t{name: 'Northern Mariana Islands', code: 'MP'},\n\t\t{name: 'Norway', code: 'NO'},\n\t\t{name: 'Oman', code: 'OM'},\n\t\t{name: 'Pakistan', code: 'PK'},\n\t\t{name: 'Palau', code: 'PW'},\n\t\t{name: 'Palestinian Territory, Occupied', code: 'PS'},\n\t\t{name: 'Panama', code: 'PA'},\n\t\t{name: 'Papua New Guinea', code: 'PG'},\n\t\t{name: 'Paraguay', code: 'PY'},\n\t\t{name: 'Peru', code: 'PE'},\n\t\t{name: 'Philippines', code: 'PH'},\n\t\t{name: 'Pitcairn', code: 'PN'},\n\t\t{name: 'Poland', code: 'PL'},\n\t\t{name: 'Portugal', code: 'PT'},\n\t\t{name: 'Puerto Rico', code: 'PR'},\n\t\t{name: 'Qatar', code: 'QA'},\n\t\t{name: 'Reunion', code: 'RE'},\n\t\t{name: 'Romania', code: 'RO'},\n\t\t{name: 'Russian Federation', code: 'RU'},\n\t\t{name: 'RWANDA', code: 'RW'},\n\t\t{name: 'Saint Helena', code: 'SH'},\n\t\t{name: 'Saint Kitts and Nevis', code: 'KN'},\n\t\t{name: 'Saint Lucia', code: 'LC'},\n\t\t{name: 'Saint Pierre and Miquelon', code: 'PM'},\n\t\t{name: 'Saint Vincent and the Grenadines', code: 'VC'},\n\t\t{name: 'Samoa', code: 'WS'},\n\t\t{name: 'San Marino', code: 'SM'},\n\t\t{name: 'Sao Tome and Principe', code: 'ST'},\n\t\t{name: 'Saudi Arabia', code: 'SA'},\n\t\t{name: 'Senegal', code: 'SN'},\n\t\t{name: 'Serbia and Montenegro', code: 'CS'},\n\t\t{name: 'Seychelles', code: 'SC'},\n\t\t{name: 'Sierra Leone', code: 'SL'},\n\t\t{name: 'Singapore', code: 'SG'},\n\t\t{name: 'Slovakia', code: 'SK'},\n\t\t{name: 'Slovenia', code: 'SI'},\n\t\t{name: 'Solomon Islands', code: 'SB'},\n\t\t{name: 'Somalia', code: 'SO'},\n\t\t{name: 'South Africa', code: 'ZA'},\n\t\t{name: 'South Georgia and the South Sandwich Islands', code: 'GS'},\n\t\t{name: 'Spain', code: 'ES'},\n\t\t{name: 'Sri Lanka', code: 'LK'},\n\t\t{name: 'Sudan', code: 'SD'},\n\t\t{name: 'Suriname', code: 'SR'},\n\t\t{name: 'Svalbard and Jan Mayen', code: 'SJ'},\n\t\t{name: 'Swaziland', code: 'SZ'},\n\t\t{name: 'Sweden', code: 'SE'},\n\t\t{name: 'Switzerland', code: 'CH'},\n\t\t{name: 'Syrian Arab Republic', code: 'SY'},\n\t\t{name: 'Taiwan, Province of China', code: 'TW'},\n\t\t{name: 'Tajikistan', code: 'TJ'},\n\t\t{name: 'Tanzania, United Republic of', code: 'TZ'},\n\t\t{name: 'Thailand', code: 'TH'},\n\t\t{name: 'Timor-Leste', code: 'TL'},\n\t\t{name: 'Togo', code: 'TG'},\n\t\t{name: 'Tokelau', code: 'TK'},\n\t\t{name: 'Tonga', code: 'TO'},\n\t\t{name: 'Trinidad and Tobago', code: 'TT'},\n\t\t{name: 'Tunisia', code: 'TN'},\n\t\t{name: 'Turkey', code: 'TR'},\n\t\t{name: 'Turkmenistan', code: 'TM'},\n\t\t{name: 'Turks and Caicos Islands', code: 'TC'},\n\t\t{name: 'Tuvalu', code: 'TV'},\n\t\t{name: 'Uganda', code: 'UG'},\n\t\t{name: 'Ukraine', code: 'UA'},\n\t\t{name: 'United Arab Emirates', code: 'AE'},\n\t\t{name: 'United Kingdom', code: 'GB'},\n\t\t{name: 'United States', code: 'US'},\n\t\t{name: 'United States Minor Outlying Islands', code: 'UM'},\n\t\t{name: 'Uruguay', code: 'UY'},\n\t\t{name: 'Uzbekistan', code: 'UZ'},\n\t\t{name: 'Vanuatu', code: 'VU'},\n\t\t{name: 'Venezuela', code: 'VE'},\n\t\t{name: 'Viet Nam', code: 'VN'},\n\t\t{name: 'Virgin Islands, British', code: 'VG'},\n\t\t{name: 'Virgin Islands, U.S.', code: 'VI'},\n\t\t{name: 'Wallis and Futuna', code: 'WF'},\n\t\t{name: 'Western Sahara', code: 'EH'},\n\t\t{name: 'Yemen', code: 'YE'},\n\t\t{name: 'Zambia', code: 'ZM'},\n\t\t{name: 'Zimbabwe', code: 'ZW'}\n\t]);\n}","/// <reference path=\"../_references.ts\"/>\nmodule App.Helpers {\n\n\tclass States implements States {\n\t\tstatic get getStates() {\n\t\t\treturn new States().states;\n\t\t}\n\n\t\tstates: State[];\n\n\t\tconstructor() {\n\t\t\tthis.states = [\n\t\t\t{\n\t\t\t\tname: 'Alabama',\n\t\t\t\tabbreviation: 'AL'\n\t\t\t}, {\n\t\t\t\tname: 'Alaska',\n\t\t\t\tabbreviation: 'AK'\n\t\t\t}, {\n\t\t\t\tname: 'Alberta',\n\t\t\t\tabbreviation: 'AB'\n\t\t\t}, {\n\t\t\t\tname: 'American Samoa',\n\t\t\t\tabbreviation: 'AS'\n\t\t\t}, {\n\t\t\t\tname: 'Arizona',\n\t\t\t\tabbreviation: 'AZ'\n\t\t\t}, {\n\t\t\t\tname: 'Arkansas',\n\t\t\t\tabbreviation: 'AR'\n\t\t\t}, {\n\t\t\t\tname: 'British Columbia',\n\t\t\t\tabbreviation: 'BC'\n\t\t\t}, {\n\t\t\t\tname: 'California',\n\t\t\t\tabbreviation: 'CA'\n\t\t\t}, {\n\t\t\t\tname: 'Colorado',\n\t\t\t\tabbreviation: 'CO'\n\t\t\t}, {\n\t\t\t\tname: 'Connecticut',\n\t\t\t\tabbreviation: 'CT'\n\t\t\t}, {\n\t\t\t\tname: 'Delaware',\n\t\t\t\tabbreviation: 'DE'\n\t\t\t}, {\n\t\t\t\tname: 'District Of Columbia',\n\t\t\t\tabbreviation: 'DC'\n\t\t\t}, {\n\t\t\t\tname: 'Federated States Of Micronesia',\n\t\t\t\tabbreviation: 'FM'\n\t\t\t}, {\n\t\t\t\tname: 'Florida',\n\t\t\t\tabbreviation: 'FL'\n\t\t\t}, {\n\t\t\t\tname: 'Georgia',\n\t\t\t\tabbreviation: 'GA'\n\t\t\t}, {\n\t\t\t\tname: 'Guam',\n\t\t\t\tabbreviation: 'GU'\n\t\t\t}, {\n\t\t\t\tname: 'Hawaii',\n\t\t\t\tabbreviation: 'HI'\n\t\t\t}, {\n\t\t\t\tname: 'Idaho',\n\t\t\t\tabbreviation: 'ID'\n\t\t\t}, {\n\t\t\t\tname: 'Illinois',\n\t\t\t\tabbreviation: 'IL'\n\t\t\t}, {\n\t\t\t\tname: 'Indiana',\n\t\t\t\tabbreviation: 'IN'\n\t\t\t}, {\n\t\t\t\tname: 'Iowa',\n\t\t\t\tabbreviation: 'IA'\n\t\t\t}, {\n\t\t\t\tname: 'Kansas',\n\t\t\t\tabbreviation: 'KS'\n\t\t\t}, {\n\t\t\t\tname: 'Kentucky',\n\t\t\t\tabbreviation: 'KY'\n\t\t\t}, {\n\t\t\t\tname: 'Louisiana',\n\t\t\t\tabbreviation: 'LA'\n\t\t\t}, {\n\t\t\t\tname: 'Maine',\n\t\t\t\tabbreviation: 'ME'\n\t\t\t}, {\n\t\t\t\tname: 'Manitoba',\n\t\t\t\tabbreviation: 'MB'\n\t\t\t}, {\n\t\t\t\tname: 'Marshall Islands',\n\t\t\t\tabbreviation: 'MH'\n\t\t\t}, {\n\t\t\t\tname: 'Maryland',\n\t\t\t\tabbreviation: 'MD'\n\t\t\t}, {\n\t\t\t\tname: 'Massachusetts',\n\t\t\t\tabbreviation: 'MA'\n\t\t\t}, {\n\t\t\t\tname: 'Michigan',\n\t\t\t\tabbreviation: 'MI'\n\t\t\t}, {\n\t\t\t\tname: 'Minnesota',\n\t\t\t\tabbreviation: 'MN'\n\t\t\t}, {\n\t\t\t\tname: 'Mississippi',\n\t\t\t\tabbreviation: 'MS'\n\t\t\t}, {\n\t\t\t\tname: 'Missouri',\n\t\t\t\tabbreviation: 'MO'\n\t\t\t}, {\n\t\t\t\tname: 'Montana',\n\t\t\t\tabbreviation: 'MT'\n\t\t\t}, {\n\t\t\t\tname: 'Nebraska',\n\t\t\t\tabbreviation: 'NE'\n\t\t\t}, {\n\t\t\t\tname: 'Nevada',\n\t\t\t\tabbreviation: 'NV'\n\t\t\t}, {\n\t\t\t\tname: 'New Brunswick',\n\t\t\t\tabbreviation: 'NB'\n\t\t\t}, {\n\t\t\t\tname: 'New Hampshire',\n\t\t\t\tabbreviation: 'NH'\n\t\t\t}, {\n\t\t\t\tname: 'New Jersey',\n\t\t\t\tabbreviation: 'NJ'\n\t\t\t}, {\n\t\t\t\tname: 'New Mexico',\n\t\t\t\tabbreviation: 'NM'\n\t\t\t}, {\n\t\t\t\tname: 'New York',\n\t\t\t\tabbreviation: 'NY'\n\t\t\t}, {\n\t\t\t\tname: 'Newfoundland and Labrador',\n\t\t\t\tabbreviation: 'NL'\n\t\t\t}, {\n\t\t\t\tname: 'North Carolina',\n\t\t\t\tabbreviation: 'NC'\n\t\t\t}, {\n\t\t\t\tname: 'North Dakota',\n\t\t\t\tabbreviation: 'ND'\n\t\t\t}, {\n\t\t\t\tname: 'Northern Mariana Islands',\n\t\t\t\tabbreviation: 'MP'\n\t\t\t}, {\n\t\t\t\tname: 'Nova Scotia',\n\t\t\t\tabbreviation: 'NS'\n\t\t\t}, {\n\t\t\t\tname: 'Northwest Territories',\n\t\t\t\tabbreviation: 'NT'\n\t\t\t}, {\n\t\t\t\tname: 'Nunavut',\n\t\t\t\tabbreviation: 'NU'\n\t\t\t}, {\n\t\t\t\tname: 'Ohio',\n\t\t\t\tabbreviation: 'OH'\n\t\t\t}, {\n\t\t\t\tname: 'Oklahoma',\n\t\t\t\tabbreviation: 'OK'\n\t\t\t}, {\n\t\t\t\tname: 'Ontario',\n\t\t\t\tabbreviation: 'ON'\n\t\t\t}, {\n\t\t\t\tname: 'Oregon',\n\t\t\t\tabbreviation: 'OR'\n\t\t\t}, {\n\t\t\t\tname: 'Palau',\n\t\t\t\tabbreviation: 'PW'\n\t\t\t}, {\n\t\t\t\tname: 'Pennsylvania',\n\t\t\t\tabbreviation: 'PA'\n\t\t\t}, {\n\t\t\t\tname: 'Prince Edward Island',\n\t\t\t\tabbreviation: 'PE'\n\t\t\t}, {\n\t\t\t\tname: 'Puerto Rico',\n\t\t\t\tabbreviation: 'PR'\n\t\t\t}, {\n\t\t\t\tname: 'Quebec',\n\t\t\t\tabbreviation: 'QC'\n\t\t\t}, {\n\t\t\t\tname: 'Rhode Island',\n\t\t\t\tabbreviation: 'RI'\n\t\t\t}, {\n\t\t\t\tname: 'Saskatchewan',\n\t\t\t\tabbreviation: 'SK'\n\t\t\t}, {\n\t\t\t\tname: 'South Carolina',\n\t\t\t\tabbreviation: 'SC'\n\t\t\t}, {\n\t\t\t\tname: 'South Dakota',\n\t\t\t\tabbreviation: 'SD'\n\t\t\t}, {\n\t\t\t\tname: 'Tennessee',\n\t\t\t\tabbreviation: 'TN'\n\t\t\t}, {\n\t\t\t\tname: 'Texas',\n\t\t\t\tabbreviation: 'TX'\n\t\t\t}, {\n\t\t\t\tname: 'Utah',\n\t\t\t\tabbreviation: 'UT'\n\t\t\t}, {\n\t\t\t\tname: 'Vermont',\n\t\t\t\tabbreviation: 'VT'\n\t\t\t}, {\n\t\t\t\tname: 'Virgin Islands',\n\t\t\t\tabbreviation: 'VI'\n\t\t\t}, {\n\t\t\t\tname: 'Virginia',\n\t\t\t\tabbreviation: 'VA'\n\t\t\t}, {\n\t\t\t\tname: 'Washington',\n\t\t\t\tabbreviation: 'WA'\n\t\t\t}, {\n\t\t\t\tname: 'West Virginia',\n\t\t\t\tabbreviation: 'WV'\n\t\t\t}, {\n\t\t\t\tname: 'Wisconsin',\n\t\t\t\tabbreviation: 'WI'\n\t\t\t}, {\n\t\t\t\tname: 'Wyoming',\n\t\t\t\tabbreviation: 'WY'\n\t\t\t}, {\n\t\t\t\tname: 'Yukon',\n\t\t\t\tabbreviation: 'YT'\n\t\t\t}];\n\t\t}\n\t}\n\n\tangular.module('helpers.states', []).constant('States', States.getStates);\n\n}\n\n","/// <reference path=\"../_references.ts\"/>\nmodule App.Validations {\n\tinterface IValidation {\n\t\tpattern?: RegExp;\n\t\tmessage: string;\n\t}\n\n\texport class Validations {\n\t\tstatic get getValidations() {\n\t\t\treturn new Validations();\n\t\t}\n\n\t\tgeneral: IValidation;\n\t\tname: IValidation;\n\t\tstreet: IValidation;\n\t\tcity: IValidation;\n\t\tstate: IValidation;\n\t\tzip: IValidation;\n\t\tphone: IValidation;\n\t\temail: IValidation;\n\t\tcreditCard: IValidation;\n\t\tnumberOnly: IValidation;\n\t\tdollarAmount: IValidation;\n\t\trequired: IValidation;\n\t\tmin: IValidation;\n\t\tmax: IValidation;\n\n\t\tconstructor() {\n\t\t\tthis.general = {\n\t\t\t\tpattern: /^[0-9a-zA-Z#-\\s,.'&\"$!():;%?]+$/,\n\t\t\t\tmessage: 'Invalid entry. The only special characters allowed are # - , . \\'&\"$!():;%'\n\t\t\t};\n\t\t\tthis.name = {\n\t\t\t\tpattern: /^[0-9a-zA-Z#-\\s,.'&\"$!]+$/,\n\t\t\t\tmessage: 'Invalid entry. The only special characters allowed are , . \\' & \" $ !'\n\t\t\t};\n\t\t\tthis.street = {\n\t\t\t\tpattern: /^[0-9a-zA-Z#-\\s,.]+$/,\n\t\t\t\tmessage: 'Invalid entry. The only special characters allowed are # - , .'\n\t\t\t};\n\t\t\tthis.city = {\n\t\t\t\tpattern: /^[0-9a-zA-Z-'&.\\s]+$/,\n\t\t\t\tmessage: 'Invalid entry. The only special character allowed are - \\' &.'\n\t\t\t};\n\t\t\tthis.state = {\n\t\t\t\tmessage: 'Must be a valid US state or province. Ex: NY'\n\t\t\t};\n\t\t\tthis.zip = {\n\t\t\t\tpattern: /^(\\d{5}(-\\d{4})?$)|(^[ABCEGHJKLMNPRSTVXY]{1}\\d{1}[A-Z]{1} *\\d{1}[A-Z]{1}\\d{1})$/,\n\t\t\t\tmessage: 'Must be a valid US or Canadian Postal Code'\n\t\t\t};\n\t\t\tthis.phone = {\n\t\t\t\tpattern: /(?:\\(\\d{3}\\)|\\d{3})[- ]?\\d{3}[- ]?\\d{4}/,\n\t\t\t\tmessage: 'Must be a valid 10 digit phone number. Ex: (222) 555-1212'\n\t\t\t};\n\t\t\tthis.email = {\n\t\t\t\tpattern: /^(([^<>()\\[\\]\\.,;:\\s@\\\"]+(\\.[^<>()\\[\\]\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@(([^<>()[\\]\\.,;:\\s@\\\"]+\\.)+[^<>()[\\]\\.,;:\\s@\\\"]{2,})$/i,\n\t\t\t\tmessage: 'Must be a valid email address. Ex: someone@anydomain.com'\n\t\t\t};\n\t\t\tthis.creditCard = {\n\t\t\t\tpattern: /^(?:4[0-9]{12}(?:[0-9]{3})?|[25][1-7][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\\d{3})\\d{11})$/i,\n\t\t\t\tmessage: 'Must be a valid credit card.'\n\t\t\t};\n\t\t\tthis.numberOnly = {\n\t\t\t\tpattern: /^[0-9]*$/i,\n\t\t\t\tmessage: 'Only numbers 0-9 are allowed.'\n\t\t\t};\n\t\t\tthis.dollarAmount = {\n\t\t\t\tpattern: /^[0-9]+\\.?[0-9]?[0-9]?$/i,\n\t\t\t\tmessage: 'Invalid entry. Ex: 12.12, 12., 12'\n\t\t\t};\n\t\t\tthis.max = {\n\t\t\t\tmessage: 'Value exceeds maximum allowed.'\n\t\t\t};\n\t\t\tthis.min = {\n\t\t\t\tmessage: 'Value below minimum allowed.'\n\t\t\t};\n\t\t\tthis.required = {\n\t\t\t\tmessage: 'Value is required'\n\t\t\t};\n\t\t}\n\t}\n\n\tangular.module('helpers.validations', []).constant('Validations', Validations.getValidations);\n}\n","/// <reference path=\"./_references.ts\"/>\r\n\r\nmodule App.Administrative {\r\n\tangular\r\n\t\t.module('administrative', [\r\n\t\t\t'chart.js',\r\n\t\t\t'administrative.inventory',\r\n\t\t\t'administrative.purchase-order',\r\n\t\t\t'administrative.reviews',\r\n\t\t\t'administrative.send-invoice',\r\n\t\t\t'administrative.tags',\r\n\t\t\t'administrative.upload-photos',\r\n\t\t\t'administrative.vendor-inventory',\r\n\t\t])\r\n\t\t.config(['$stateProvider', ($stateProvider: ng.ui.IStateProvider) => {\r\n\t\t\t$stateProvider\r\n\t\t\t\t.state('zipSolutions.administrative', {\r\n\t\t\t\t\turl: 'administrative',\r\n\t\t\t\t\tdata: {\r\n\t\t\t\t\t\ttitle: 'Administrative',\r\n\t\t\t\t\t},\r\n\t\t\t\t\tviews: {\r\n\t\t\t\t\t\t'content@': {\r\n\t\t\t\t\t\t\tcontroller: 'AdministrativeController',\r\n\t\t\t\t\t\t\tcontrollerAs: 'ctrl',\r\n\t\t\t\t\t\t\ttemplateUrl: 'html/administrative/administrative.dfc8c0e0.html',\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t},\r\n\t\t\t\t});\r\n\t\t}])\r\n\t\t.service('AdministrativeService', AdministrativeService.Factory())\r\n\t\t.controller('AdministrativeController', AdministrativeController);\r\n}","/// <reference path=\"../_references.ts\"/>\n\nmodule App.Appointments {\n\tangular\n\t\t.module('appointment', [\n\t\t\t'ngMap',\n\t\t\t'user',\n\t\t\t'helpers.bottomDrawer',\n\t\t\t'helpers.locationService',\n\t\t\t'timeEvent',\n\t\t])\n\t\t.config(['$stateProvider', ($stateProvider: ng.ui.IStateProvider) => {\n\t\t\t$stateProvider\n\t\t\t\t.state('zipSolutions.home', {\n\t\t\t\t\turl: 'home',\n\t\t\t\t\tredirectTo: 'zipSolutions.home.appointment',\n\t\t\t\t})\n\t\t\t\t.state('zipSolutions.home.appointment', {\n\t\t\t\t\turl: '/appointment',\n\t\t\t\t\tdata: {\n\t\t\t\t\t\ttitle: 'Appointments',\n\t\t\t\t\t},\n\t\t\t\t\tviews: {\n\t\t\t\t\t\t'content@': {\n\t\t\t\t\t\t\tcontroller: 'AppointmentController',\n\t\t\t\t\t\t\tcontrollerAs: 'ctrl',\n\t\t\t\t\t\t\ttemplateUrl: 'html/appointment/appointment.ea0683d0.html',\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tparams: {\n\t\t\t\t\t\tcompletedApptId: null,\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t\t.state('zipSolutions.home.appointment.overview', {\n\t\t\t\t\turl: '/overview',\n\t\t\t\t\tdata: {\n\t\t\t\t\t\ttitle: 'Appointment Overview',\n\t\t\t\t\t},\n\t\t\t\t\tviews: {\n\t\t\t\t\t\t'content@': {\n\t\t\t\t\t\t\tcontroller: 'AppointmentOverviewController',\n\t\t\t\t\t\t\tcontrollerAs: 'ctrl',\n\t\t\t\t\t\t\ttemplateUrl: 'html/appointment/appointment-overview.70364e62.html',\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t}])\n\t\t.factory('AppointmentService', AppointmentService.factory())\n\t\t.factory('SelectedAppointment', SelectedAppointment.Factory())\n\t\t.controller('AppointmentController', AppointmentController)\n\t\t.controller('AppointmentOverviewController', AppointmentOverviewController)\n\t\t.controller('AppointmentMenuController', AppointmentMenuController)\n\t\t.filter('menuDisplayFilter', ['$state', ($state: ng.ui.IStateService) => {\n\t\t\treturn (items: MenuItem[], appointment: Appointment) => {\n\t\t\t\treturn items.filter((item: MenuItem) => {\n\t\t\t\t\tif (item.displayKeys === false || item.displayKeys === true) {\n\t\t\t\t\t\treturn item.displayKeys;\n\t\t\t\t\t}\n\n\t\t\t\t\tlet keys: string[] = <string[]>item.displayKeys;\n\n\t\t\t\t\tif (appointment === null || appointment.appointment_status === null) {\n\t\t\t\t\t\treturn keys.indexOf(\"Unselected\") >= 0;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn keys.indexOf(appointment.appointment_status) >= 0;\n\t\t\t\t});\n\t\t\t}\n\t\t}]);\n}","/// <reference path=\"_references.ts\"/>\n\nvar chatURL: string;\n\nmodule App.Chat {\n\tangular\n\t\t.module('chat', [\n\t\t\t'vxWamp',\n\t\t])\n\t\t.config(['$wampProvider', 'LoginServiceProvider', function($wampProvider: any, LoginServiceProvider: any) {\n\t\t\tconst LoginService = LoginServiceProvider.$get();\n\n\t\t\t$wampProvider.init({\n\t\t\t\turl: chatURL,\n\t\t\t\trealm: 'ws',\n\t\t\t\tauthid: LoginService.giveToken(),\n\t\t\t\tauthmethods: ['token'],\n\t\t\t\tonchallenge: function(session: any, method: string) {\n\t\t\t\t\tif(method === 'token') {\n\t\t\t\t\t\treturn LoginService.giveToken();\n\t\t\t\t\t}\n\t\t\t\t\tthrow \"NotImplementedError\";\n\t\t\t\t}\n\t\t\t});\n\t\t}])\n\t\t.controller('ChatController', App.DefaultFactory(ChatController))\n\t\t.directive('chat', App.DefaultFactory(ChatDirective))\n\t\t.directive('chatMessagesWrapper', App.DefaultFactory(ChatMessagesWrapperDirective))\n\t\t.factory('ChatService', App.DefaultFactory(ChatService));\n}","/// <reference path=\"../_references.ts\"/>\n\nmodule App.Customer {\n\tangular\n\t\t.module('customer', [\n\t\t\t'helpers.capitalize',\n\t\t\t'helpers.validations',\n\t\t\t'helpers.states',\n\t\t\t'helpers.phone',\n\t\t\t'helpers.googlePlace',\n\t\t\t'field.dispatch',\n\t\t])\n\t\t.factory('CustomerService', CustomerService.factory())\n\t\t.config(['$stateProvider', ($stateProvider: ng.ui.IStateProvider) => {\n\t\t\t$stateProvider\n\t\t\t\t.state('zipSolutions.home.customer', {\n\t\t\t\t\turl : '/customer',\n\t\t\t\t\tdata: {\n\t\t\t\t\t\ttitle: 'Customer Search',\n\t\t\t\t\t},\n\t\t\t\t\tviews: {\n\t\t\t\t\t\t'content@': {\n\t\t\t\t\t\t\tcontroller : 'CustomerSearchController',\n\t\t\t\t\t\t\tcontrollerAs: 'customers',\n\t\t\t\t\t\t\ttemplateUrl : 'html/customer/customer-search.0aa2c6c4.html',\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t\t.state('zipSolutions.home.customer.create', {\n\t\t\t\t\turl: '/create',\n\t\t\t\t\tdata: {\n\t\t\t\t\t\ttitle: 'Customer Create',\n\t\t\t\t\t},\n\t\t\t\t\tviews: {\n\t\t\t\t\t\t'content@': {\n\t\t\t\t\t\t\tcontroller: 'CustomerCreateController',\n\t\t\t\t\t\t\tcontrollerAs: 'customer',\n\t\t\t\t\t\t\ttemplateUrl: 'html/customer/customer-create.de31fc1b.html',\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t\t.state('zipSolutions.home.service-request', {\n\t\t\t\t\turl: '/service-request',\n\t\t\t\t\tdata: {\n\t\t\t\t\t\ttitle: 'Service Request Create',\n\t\t\t\t\t},\n\t\t\t\t\tviews: {\n\t\t\t\t\t\t'content@': {\n\t\t\t\t\t\t\tcontroller: 'CustomerServiceRequestController',\n\t\t\t\t\t\t\tcontrollerAs: 'ctrl',\n\t\t\t\t\t\t\ttemplateUrl: 'html/customer/service-request.83571de4.html',\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t}])\n\t\t.factory('SelectedCustomer', SelectedCustomer.Factory())\n\t\t.controller('CustomerSearchController', CustomerSearchController)\n\t\t.controller('CustomerCreateController', CustomerCreateController)\n\t\t.controller('CustomerServiceRequestController', CustomerServiceRequestController);\n}","module App.Dashboard {\r\n\tangular\r\n\t\t.module('dashboard', [])\r\n\t\t.factory('DashboardService', DashboardService.factory())\r\n\t\t.controller('DashboardController', DashboardController);\r\n}","module App.DispatchSummary {\r\n\tangular\r\n\t\t.module('dispatchSummary', [])\r\n\t\t.factory('DispatchSummaryService', DispatchSummaryService.factory())\r\n\t\t.controller('DispatchSummaryController', DispatchSummaryController);\r\n}","/// <reference path=\"_references.ts\"/>\n\nmodule App.Forms {\n\tangular\n\t\t.module('forms', [])\n\t\t.config(['$stateProvider', ($stateProvider: ng.ui.IStateProvider) => {\n\t\t\t$stateProvider\n\t\t\t\t.state('zipSolutions.forms', {\n\t\t\t\t\turl: 'forms',\n\t\t\t\t\tdata: {\n\t\t\t\t\t\ttitle: 'Forms'\n\t\t\t\t\t},\n\t\t\t\t\tviews: {\n\t\t\t\t\t\t'content@': {\n\t\t\t\t\t\t\tcontroller: 'FormListController',\n\t\t\t\t\t\t\tcontrollerAs: 'ctrl',\n\t\t\t\t\t\t\ttemplateUrl: 'html/forms/form-list.tpl.2efdd27e.html'\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.state('zipSolutions.forms.create', {\n\t\t\t\t\turl: '/new?item',\n\t\t\t\t\tdata: {\n\t\t\t\t\t\ttitle: 'Create Form'\n\t\t\t\t\t},\n\t\t\t\t\tviews: {\n\t\t\t\t\t\t'content@': {\n\t\t\t\t\t\t\tcontroller: 'FormCreateController',\n\t\t\t\t\t\t\tcontrollerAs: 'ctrl',\n\t\t\t\t\t\t\ttemplateUrl: 'html/forms/form-details.tpl.2640b63c.html'\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.state('zipSolutions.forms.edit', {\n\t\t\t\t\turl: '/{id:int}?item',\n\t\t\t\t\tdata: {\n\t\t\t\t\t\ttitle: 'Edit Form'\n\t\t\t\t\t},\n\t\t\t\t\tviews: {\n\t\t\t\t\t\t'content@': {\n\t\t\t\t\t\t\tcontroller: 'FormEditController',\n\t\t\t\t\t\t\tcontrollerAs: 'ctrl',\n\t\t\t\t\t\t\ttemplateUrl: 'html/forms/form-details.tpl.2640b63c.html'\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t}])\n\t\t.service('FormService', FormService)\n\t\t.controller('FormListController', FormListController)\n\t\t.controller('FormCreateController', FormCreateController)\n\t\t.controller('FormEditController', FormEditController)\n\t\t.directive('input', () => {\n\t\t\treturn {\n\t\t        require: '?ngModel',\n\t\t        link: (scope, elem, attrs, ngModel) => {\n\t\t            if (ngModel && attrs.type === 'number') {\n\t\t                ngModel.$formatters.push((value: any) => parseFloat(value));\n\t\t            }\n\t\t        }\n\t\t    };\n\t\t})\n        .filter('htmlLinky', ['$filter', ($filter: ng.IFilterService) => {\n            return (v: string, ...args: any) =>\n                (<(v: string, ...args: any) => string>$filter('linky'))(v.replace(/</g, ' <'), ...args)\n                    .replace(/ &lt;/g, '<')\n                    .replace(/&gt;/g, '>')\n                    .replace(/&amp;/g, '&');\n        }]);\n}\n","/// <reference path='../_references.ts'/>\n\nmodule App.History {\n\tangular\n\t\t.module('history', [])\n\t\t.config([\n\t\t\t'$stateProvider',\n\t\t\t($stateProvider: ng.ui.IStateProvider) => {\n\t\t\t\t$stateProvider\n\t\t\t\t\t.state('zipSolutions.history', {\n\t\t\t\t\t\turl: 'history',\n\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\ttitle: 'History',\n\t\t\t\t\t\t},\n\t\t\t\t\t\tviews: {\n\t\t\t\t\t\t\t'content@': {\n\t\t\t\t\t\t\t\tcontroller: 'HistoryController',\n\t\t\t\t\t\t\t\tcontrollerAs: 'ctrl',\n\t\t\t\t\t\t\t\ttemplateUrl: 'html/history/history.0c6bc5ae.html',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t})\n\t\t\t\t\t.state('zipSolutions.history.recommendations', {\n\t\t\t\t\t\turl: '/recommendations',\n\t\t\t\t\t\tparams: {\n\t\t\t\t\t\t\tshowBack: { dynamic: true, squash: true, value: false, type: 'bool' },\n\t\t\t\t\t\t},\n\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\ttitle: 'Recommendations History'\n\t\t\t\t\t\t},\n\t\t\t\t\t\tviews: {\n\t\t\t\t\t\t\t'content@': {\n\t\t\t\t\t\t\t\tcontroller: 'RecommendationsListController',\n\t\t\t\t\t\t\t\tcontrollerAs: 'ctrl',\n\t\t\t\t\t\t\t\ttemplateUrl: 'html/history/recommendations/recommendations-list.8ed4e054.html'\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t\t.state('zipSolutions.history.recommendations.detail', {\n\t\t\t\t\t\turl: '/:id',\n\t\t\t\t\t\tparams: {\n\t\t\t\t\t\t\tshowBack: { dynamic: true, squash: true, value: false, type: 'bool' },\n\t\t\t\t\t\t},\n\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\ttitle: 'Recommendations',\n\t\t\t\t\t\t},\n\t\t\t\t\t\tviews: {\n\t\t\t\t\t\t\t'content@': {\n\t\t\t\t\t\t\t\tcontroller: 'RecommendationsDetailController',\n\t\t\t\t\t\t\t\tcontrollerAs: 'workOrder',\n\t\t\t\t\t\t\t\ttemplateUrl: 'html/history/recommendations/recommendations-detail.0bb5c318.html'\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t\t.state('zipSolutions.history.recommendations.detail.preview', {\n\t\t\t\t\t\turl: '/view',\n\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\ttitle: 'Recommendation Preview'\n\t\t\t\t\t\t},\n\t\t\t\t\t\tviews: {\n\t\t\t\t\t\t\t'content@': {\n\t\t\t\t\t\t\t\tcontroller: 'RecommendationsViewController',\n\t\t\t\t\t\t\t\tcontrollerAs: 'ctrl',\n\t\t\t\t\t\t\t\ttemplateUrl: 'html/history/recommendations/recommendations-view.654860ac.html'\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t\t.state('zipSolutions.history.servicerequest', {\n\t\t\t\t\t\turl: '/service-requests',\n\t\t\t\t\t\tparams: {\n\t\t\t\t\t\t\tshowBack: { dynamic: true, squash: true, value: false, type: 'bool' },\n\t\t\t\t\t\t},\n\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\ttitle: 'Service Request History'\n\t\t\t\t\t\t},\n\t\t\t\t\t\tviews: {\n\t\t\t\t\t\t\t'content@': {\n\t\t\t\t\t\t\t\tcontroller: 'ServiceRequestListController',\n\t\t\t\t\t\t\t\tcontrollerAs: 'ctrl',\n\t\t\t\t\t\t\t\ttemplateUrl: 'html/history/service-request-history/service-request-list.6bfcdc14.html'\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t\t.state('zipSolutions.history.servicerequest.detail', {\n\t\t\t\t\t\turl: '/:id',\n\t\t\t\t\t\tparams: {\n\t\t\t\t\t\t\tshowBack: { dynamic: true, squash: true, value: false, type: 'bool' },\n\t\t\t\t\t\t},\n\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\ttitle: 'Service Request'\n\t\t\t\t\t\t},\n\t\t\t\t\t\tviews: {\n\t\t\t\t\t\t\t'content@': {\n\t\t\t\t\t\t\t\tcontroller: 'ServiceRequestDetailController',\n\t\t\t\t\t\t\t\tcontrollerAs: 'ctrl',\n\t\t\t\t\t\t\t\ttemplateUrl: 'html/history/service-request-history/service-request-detail.4e5b6a33.html'\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t\t.state('zipSolutions.history.photos', {\n\t\t\t\t\t\turl: '/photos',\n\t\t\t\t\t\tparams: {\n\t\t\t\t\t\t\tshowBack: { dynamic: true, squash: true, value: false, type: 'bool' },\n\t\t\t\t\t\t},\n\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\ttitle: 'Photos History'\n\t\t\t\t\t\t},\n\t\t\t\t\t\tviews: {\n\t\t\t\t\t\t\t'content@': {\n\t\t\t\t\t\t\t\tcontroller: 'PhotosController',\n\t\t\t\t\t\t\t\tcontrollerAs: 'ctrl',\n\t\t\t\t\t\t\t\ttemplateUrl: 'html/history/photos/photos.12f7d6cc.html'\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t\t.state('zipSolutions.history.address', {\n\t\t\t\t\t\turl: '/:addressId',\n\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\ttitle: 'Address History'\n\t\t\t\t\t\t},\n\t\t\t\t\t\tviews: {\n\t\t\t\t\t\t\t'content@': {\n\t\t\t\t\t\t\t\tcontroller: 'HistoryController',\n\t\t\t\t\t\t\t\tcontrollerAs: 'ctrl',\n\t\t\t\t\t\t\t\ttemplateUrl: 'html/history/history.0c6bc5ae.html'\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t\t.state('zipSolutions.history.address.recommendations', {\n\t\t\t\t\t\turl: '/recommendations',\n\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\ttitle: 'Address Recommendations History'\n\t\t\t\t\t\t},\n\t\t\t\t\t\tviews: {\n\t\t\t\t\t\t\t'content@': {\n\t\t\t\t\t\t\t\tcontroller: 'RecommendationsListController',\n\t\t\t\t\t\t\t\tcontrollerAs: 'ctrl',\n\t\t\t\t\t\t\t\ttemplateUrl: 'html/history/recommendations/recommendations-list.8ed4e054.html'\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t\t.state('zipSolutions.history.address.servicerequests', {\n\t\t\t\t\t\turl: '/service-requests',\n\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\ttitle: 'Address Service Request History'\n\t\t\t\t\t\t},\n\t\t\t\t\t\tviews: {\n\t\t\t\t\t\t\t'content@': {\n\t\t\t\t\t\t\t\tcontroller: 'ServiceRequestListController',\n\t\t\t\t\t\t\t\tcontrollerAs: 'ctrl',\n\t\t\t\t\t\t\t\ttemplateUrl: 'html/history/service-request-history/service-request-list.6bfcdc14.html'\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t\t.state('zipSolutions.history.address.photos', {\n\t\t\t\t\t\turl: '/photos',\n\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\ttitle: 'Address Photos History'\n\t\t\t\t\t\t},\n\t\t\t\t\t\tviews: {\n\t\t\t\t\t\t\t'content@': {\n\t\t\t\t\t\t\t\tcontroller: 'PhotosController',\n\t\t\t\t\t\t\t\tcontrollerAs: 'ctrl',\n\t\t\t\t\t\t\t\ttemplateUrl: 'html/history/photos/photos.12f7d6cc.html'\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t}\n\t]).service('HistoryService', HistoryService.Factory())\n\t\t.controller('HistoryController', HistoryController)\n\t\t.controller('ServiceRequestListController', ServiceRequestListController)\n\t\t.controller('ServiceRequestDetailController', ServiceRequestDetailController)\n\t\t.controller('RecommendationsListController', RecommendationsListController)\n\t\t.controller('RecommendationsDetailController', RecommendationsDetailController)\n\t\t.controller('RecommendationsViewController', RecommendationsViewController)\n\t\t.controller('PhotosController', PhotosController);\n}","/// <reference path='../_references.ts'/>\n\nmodule App.HeaderMessages {\n\tangular.module('headerMessages', [])\n\t\t.service('HeaderMessagesService', HeaderMessagesService)\n\t\t.controller('HeaderMessagesController', HeaderMessagesController);\n}\n","/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule App.ItemManagement {\r\n\tangular\r\n\t\t.module('itemManagement', [\r\n\t\t])\r\n\t\t.config(['$stateProvider', ($stateProvider: ng.ui.IStateProvider) => {\r\n\t\t\t$stateProvider\r\n\t\t\t\t.state('zipSolutions.old.itemManagement', {\r\n\t\t\t\t\turl: 'recurring-maintenance',\r\n\t\t\t\t\tredirectTo: 'zipSolutions.maintenance',\r\n\t\t\t\t})\r\n\t\t\t\t.state('zipSolutions.old.itemDetails', {\r\n\t\t\t\t\turl: 'itemDetails/{itemId:int}',\r\n\t\t\t\t\tredirectTo: 'zipSolutions.maintenance.details',\r\n\t\t\t\t})\r\n\t\t\t\t.state('zipSolutions.maintenance', {\r\n\t\t\t\t\turl: 'maintenance',\r\n\t\t\t\t\tdata: {\r\n\t\t\t\t\t\ttitle: 'Recurring Maintenance',\r\n\t\t\t\t\t},\r\n\t\t\t\t\tviews: {\r\n\t\t\t\t\t\t'content@': {\r\n\t\t\t\t\t\t\tcontroller: 'ItemManagementController',\r\n\t\t\t\t\t\t\tcontrollerAs: 'itemMng',\r\n\t\t\t\t\t\t\ttemplateUrl: 'html/item-management/item-management.f5599d57.html',\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t},\r\n\t\t\t\t})\r\n\t\t\t\t.state('zipSolutions.maintenance.details', {\r\n\t\t\t\t\turl: '/{itemId:int}',\r\n\t\t\t\t\tdata: {\r\n\t\t\t\t\t\ttitle: 'Service Item Details',\r\n\t\t\t\t\t},\r\n\t\t\t\t\tviews: {\r\n\t\t\t\t\t\t'content@': {\r\n\t\t\t\t\t\t\tcontroller: 'ItemDetailsController',\r\n\t\t\t\t\t\t\tcontrollerAs: 'ctrl',\r\n\t\t\t\t\t\t\ttemplateUrl: 'html/item-management/item-details/item-details.bee07d60.html',\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t},\r\n\t\t\t\t});\r\n\t\t}])\r\n\t\t.service('ItemManagementService', ItemManagementService.Factory())\r\n\t\t.controller('ItemManagementController', ItemManagementController)\r\n\t\t.controller('ItemDetailsController', ItemDetailsController);\r\n}\r\n","/// <reference path=\"../_references.ts\"/>\n\nmodule App.Payment {\n\tangular\n\t\t.module('payment', [\n\t\t\t'helpers.countries',\n\t\t\t'helpers.signature'\n\t\t])\n\t\t.config(['$stateProvider', ($stateProvider: ng.ui.IStateProvider) => {\n\t\t\t$stateProvider\n\t\t\t\t.state('zipSolutions.payment', {\n\t\t\t\t\turl: 'payment',\n\t\t\t\t\tdata: {\n\t\t\t\t\t\ttitle: 'Payment',\n\t\t\t\t\t},\n\t\t\t\t\tviews: {\n\t\t\t\t\t\t'content@': {\n\t\t\t\t\t\t\tcontroller: 'PaymentController',\n\t\t\t\t\t\t\tcontrollerAs: 'ctrl',\n\t\t\t\t\t\t\ttemplateUrl: 'html/payment/payment.300f3077.html',\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t}])\n\t\t.service('PaymentService', PaymentService.Factory())\n\t\t.controller('PaymentController', PaymentController);\n}","/// <reference path=\"../_references.ts\"/>\n\nmodule App.PriceGuide {\n\tangular\n\t\t.module('priceGuide', [\n\t\t])\n\t\t.config(['$stateProvider', ($stateProvider: ng.ui.IStateProvider) => {\n\t\t\t$stateProvider\n\t\t\t\t.state('zipSolutions.price-guide', {\n\t\t\t\t\turl: 'price-guide',\n\t\t\t\t\tdata: {\n\t\t\t\t\t\ttitle: 'Price Guide',\n\t\t\t\t\t},\n\t\t\t\t\tparams: {\n\t\t\t\t\t\tpackageId: null,\n\t\t\t\t\t},\n\t\t\t\t\tviews: {\n\t\t\t\t\t\t'content@': {\n\t\t\t\t\t\t\tcontroller: 'PriceGuideController',\n\t\t\t\t\t\t\tcontrollerAs: 'ctrl',\n\t\t\t\t\t\t\ttemplateUrl: 'html/price-guide/price-guide.c8f106d0.html',\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t}])\n\t\t.service('ProductService', ProductService.Factory())\n\t\t.controller('PriceGuideController', PriceGuideController);\n}","/// <reference path=\"../_references.ts\"/>\n\nmodule App.Questionnaire {\n\tangular\n\t.module('questionnaire', [])\n\t.config(['$stateProvider', ($stateProvider: ng.ui.IStateProvider) => {\n\t\t$stateProvider\n\t\t\t.state('zipSolutions.old.questionnaire', {\n\t\t\t\turl: 'questionnaire',\n\t\t\t\tredirectTo: 'zipSolutions.questionnaire.service',\n\t\t\t})\n\t\t\t.state('zipSolutions.old.itemQuestionnaire', {\n\t\t\t\turl: 'item-questionnaire/{itemId:int}/item-form/{formId:int}',\n\t\t\t\tredirectTo: 'zipSolutions.questionnaire.item',\n\t\t\t})\n\t\t\t.state('zipSolutions.questionnaire', {\n\t\t\t\turl: 'survey',\n\t\t\t\tredirectTo: 'zipSolutions.questionnaire.service',\n\t\t\t})\n\t\t\t.state('zipSolutions.questionnaire.service', {\n\t\t\t\turl: '/customer',\n\t\t\t\tdata: {\n\t\t\t\t\ttitle: 'Pre-Service Questionnaire',\n\t\t\t\t},\n\t\t\t\tviews: {\n\t\t\t\t\t'content@': {\n\t\t\t\t\t\tcontroller: 'CustomerSurveyController',\n\t\t\t\t\t\tcontrollerAs: 'ctrl',\n\t\t\t\t\t\ttemplateUrl: 'html/questionnaire/survey/customer-survey.f63d9c8d.html',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t})\n\t\t\t.state('zipSolutions.questionnaire.item', {\n\t\t\t\turl: '/maintenance/{itemId:int}/form/{formId:int}',\n\t\t\t\tdata: {\n\t\t\t\t\ttitle: 'Service Item Form',\n\t\t\t\t},\n\t\t\t\tviews: {\n\t\t\t\t\t'content@': {\n\t\t\t\t\t\tcontroller: 'ItemQuestionnaireController',\n\t\t\t\t\t\tcontrollerAs: 'ctrl',\n\t\t\t\t\t\ttemplateUrl: 'html/questionnaire/item/item-questionnaire.05974dac.html',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t});\n\t}])\n\t.service('QuestionnaireService', QuestionnaireService.Factory())\n\t.controller('CustomerSurveyController', CustomerSurveyController)\n\t.controller('ItemQuestionnaireController', ItemQuestionnaireController);\n}","/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule App.TemplateStore {\r\n\tangular\r\n\t\t.module('templateStore', [])\r\n\t\t.config(['$stateProvider', ($stateProvider: ng.ui.IStateProvider) => {\r\n\t\t\t$stateProvider\r\n\t\t\t\t.state('zipSolutions.template-store', {\r\n\t\t\t\t\turl: 'template-store',\r\n\t\t\t\t\tdata: {\r\n\t\t\t\t\t\ttitle: 'Template Store',\r\n\t\t\t\t\t},\r\n\t\t\t\t\tviews: {\r\n\t\t\t\t\t\t'content@': {\r\n\t\t\t\t\t\t\tcontroller: 'TemplateStoreController',\r\n\t\t\t\t\t\t\tcontrollerAs: 'ctrl',\r\n\t\t\t\t\t\t\ttemplateUrl: 'html/template-store/template-store.296a301e.html',\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t},\r\n\t\t\t\t})\r\n\t\t\t\t.state('zipSolutions.template-store.details' , {\r\n\t\t\t\t\turl: '/{id:int}',\r\n\t\t\t\t\tdata: {\r\n\t\t\t\t\t\ttitle: 'Template View',\r\n\t\t\t\t\t},\r\n\t\t\t\t\tviews: {\r\n\t\t\t\t\t\t'content@': {\r\n\t\t\t\t\t\t\tcontroller: 'TemplateViewController',\r\n\t\t\t\t\t\t\tcontrollerAs: 'ctrl',\r\n\t\t\t\t\t\t\ttemplateUrl: 'html/template-store/template-view.1100ffc4.html',\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t},\r\n\t\t\t\t});\r\n\t\t}])\r\n\t\t.service('TemplateStoreService', TemplateStoreService.Factory())\r\n\t\t.controller('TemplateStoreController', TemplateStoreController)\r\n\t\t.controller('TemplateViewController', TemplateViewController);\r\n}","/// <reference path=\"_references.ts\"/>\n\nmodule App.TimeEvent {\n\tangular\n\t\t.module('timeEvent', [])\n\t\t.controller('TimeEventEditController', TimeEventEditController)\n\t\t.controller('TimeEventViewController', TimeEventViewController)\n\t\t.service('TimeEventService', TimeEventService);\n}","module App.Timeclock {\n\tangular\n\t\t.module('timeclock', [\n\t\t\t'helpers.locationService'\n\t\t])\n\t\t.factory('TimeclockService', TimeclockService.factory())\n\t\t.controller('TimeclockController', TimeclockController)\n\t\t.controller('TimeclockButtonController', TimeclockButtonController);\n}","/// <reference path=\"../_references.ts\"/>\n\nmodule App.Utils {\n\tangular.module('utils', [])\n\t\t.directive('slideOut', ['$timeout', SlideOutDirective.Factory()])\n\t\t.factory('ToastService', [ToastService.Factory()])\n\t\t.factory('DefaultToasts', [DefaultToasts.Factory()])\n\t\t.factory('OfficeService', ['$rootScope','$location', 'AppointmentService', 'SelectedAppointment', 'UserSession', '$q', OfficeService.Factory()])\n\t\t.factory('OrganizationService', OrganizationService.Factory());\n}","/// <reference path=\"../_references.ts\"/>\n\nmodule App.User {\n\tangular.module('user', ['login'])\n\t\t.factory('UserSession', UserSessionFactory)\n\t\t.controller('UserMenuController', UserMenuController);\n}\n","/// <reference path=\"../_references.ts\"/>\n\nmodule App.WorkOrder {\n\tangular\n\t\t.module('workOrder', [\n\t\t\t'ngFitText',\n\t\t\t'ngSanitize',\n\t\t\t'angularTrix',\n\t\t\t'helpers.signature',\n\t\t])\n\t\t.config(['$stateProvider', ($stateProvider: ng.ui.IStateProvider) => {\n\t\t\t$stateProvider.state('zipSolutions.workOrder', {\n\t\t\t\turl: 'work-order?deleted',\n\t\t\t\tdata: {\n\t\t\t\t\ttitle: 'Work Order'\n\t\t\t\t},\n\t\t\t\tparams: {\n\t\t\t\t\tdeleted: {\n\t\t\t\t\t\tdynamic: true,\n\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\tvalue: '0',\n\t\t\t\t\t\tsquash: true,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tviews: {\n\t\t\t\t\t'content@': {\n\t\t\t\t\t\tcontroller: 'WorkOrderController',\n\t\t\t\t\t\tcontrollerAs: 'workOrder',\n\t\t\t\t\t\ttemplateUrl: 'html/work-order/work-order.223facf4.html'\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t});\n\t\t}])\n\t\t.service('BannerService', BannerService.Factory())\n\t\t.service('WorkOrderService', WorkOrderService.Factory())\n\t\t.service('PackageActionsService', PackageActionsService.Factory())\n\t\t.controller('WorkOrderController', WorkOrderController)\n\t\t.controller('BannerFlyoutController', BannerFlyoutController);\n}\n","/// <reference path=\"../_references.ts\"/>\n\nmodule App.WorkOrderTemplate {\n\tangular\n\t\t.module('workOrderTemplate', [])\n\t\t.config(['$stateProvider', ($stateProvider: ng.ui.IStateProvider) => {}])\n\t\t.service('WorkOrderTemplateService', WorkOrderTemplateService.Factory());\n}","/// <reference path=\"../_references.ts\"/>\n\nmodule App.Administrative.PurchaseOrder {\n\tangular\n\t\t.module('administrative.purchase-order', [])\n\t\t.config(['$stateProvider', ($stateProvider: ng.ui.IStateProvider) => {\n\t\t\t$stateProvider\n\t\t\t\t.state('zipSolutions.old.purchaseOrder', {\n\t\t\t\t\turl: 'purchase-order',\n\t\t\t\t\tredirectTo: 'zipSolutions.administrative.purchase-order',\n\t\t\t\t})\n\t\t\t\t.state('zipSolutions.administrative.purchase-order', {\n\t\t\t\t\turl: '/purchase-order',\n\t\t\t\t\tdata: {\n\t\t\t\t\t\ttitle: 'Purchase Order',\n\t\t\t\t\t},\n\t\t\t\t\tviews: {\n\t\t\t\t\t\t'content@': {\n\t\t\t\t\t\t\tcontroller: 'PurchaseOrderController',\n\t\t\t\t\t\t\tcontrollerAs: 'ctrl',\n\t\t\t\t\t\t\ttemplateUrl: 'html/administrative/purchase-order/purchase-order.bf0a2263.html',\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t}])\n\t\t.service('PurchaseOrderService', PurchaseOrderService.Factory())\n\t\t.controller('PurchaseOrderController', PurchaseOrderController)\n}","/// <reference path=\"../_references.ts\"/>\n\nmodule App.Administrative.Inventory {\n\tangular\n\t\t.module('administrative.inventory', [])\n\t\t.config(['$stateProvider', ($stateProvider: ng.ui.IStateProvider) => {\n\t\t\t$stateProvider\n\t\t\t\t.state('zipSolutions.old.inventorySummary', {\n\t\t\t\t\turl: 'inventory-summary',\n\t\t\t\t\tredirectTo: 'zipSolutions.administrative.inventory',\n\t\t\t\t})\n\t\t\t\t.state('zipSolutions.old.inventorySelect', {\n\t\t\t\t\turl: 'inventory-select',\n\t\t\t\t\tredirectTo: 'zipSolutions.administrative.inventory.select',\n\t\t\t\t})\n\t\t\t\t.state('zipSolutions.administrative.inventory', {\n\t\t\t\t\turl: '/inventory?standalone',\n\t\t\t\t\tdata: {\n\t\t\t\t\t\ttitle: 'Inventory Summary'\n\t\t\t\t\t},\n\t\t\t\t\tparams: {\n\t\t\t\t\t\tstandalone: {\n\t\t\t\t\t\t\tdynamic: true,\n\t\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\t\tvalue: '',\n\t\t\t\t\t\t\tsquash: true,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tviews: {\n\t\t\t\t\t\t'content@': {\n\t\t\t\t\t\t\tcontroller: 'InventorySummaryController',\n\t\t\t\t\t\t\tcontrollerAs: 'ctrl',\n\t\t\t\t\t\t\ttemplateUrl: 'html/administrative/inventory/inventory-summary.059f59c9.html',\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t\t.state('zipSolutions.administrative.inventory.select', {\n\t\t\t\t\turl: '/select',\n\t\t\t\t\tdata: {\n\t\t\t\t\t\ttitle: 'Inventory Select'\n\t\t\t\t\t},\n\t\t\t\t\tparams: {\n\t\t\t\t\t\tselectedWarehouse: null\n\t\t\t\t\t},\n\t\t\t\t\tviews: {\n\t\t\t\t\t\t'content@': {\n\t\t\t\t\t\t\tcontroller: 'InventorySelectController',\n\t\t\t\t\t\t\tcontrollerAs: 'ctrl',\n\t\t\t\t\t\t\ttemplateUrl: 'html/administrative/inventory/inventory-select.782ce66a.html',\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t}])\n\t\t.service('InventoryService', InventoryService.Factory())\n\t\t.controller('InventorySummaryController', InventorySummaryController)\n\t\t.controller('InventorySelectController', InventorySelectController);\n}","/// <reference path=\"../_references.ts\"/>\n\nmodule App.Administrative.SendInvoice {\n\tangular\n\t.module('administrative.send-invoice', [])\n\t.config(['$stateProvider', ($stateProvider: ng.ui.IStateProvider) => {\n\t\t$stateProvider\n\t\t\t.state('zipSolutions.old.sendInvoice', {\n\t\t\t\turl: 'sendInvoice',\n\t\t\t\tredirectTo: 'zipSolutions.administrative.send-invoice',\n\t\t\t})\n\t\t\t.state('zipSolutions.administrative.send-invoice', {\n\t\t\t\turl: 'send-invoice',\n\t\t\t\tdata: {\n\t\t\t\t\ttitle: 'Send Invoice'\n\t\t\t\t},\n\t\t\t\tviews: {\n\t\t\t\t\t'content@': {\n\t\t\t\t\t\tcontroller: 'SendInvoiceController',\n\t\t\t\t\t\tcontrollerAs: 'ctrl',\n\t\t\t\t\t\ttemplateUrl: 'html/administrative/send-invoice/send-invoice.c329fe29.html'\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t}])\n\t.controller('SendInvoiceController', SendInvoiceController);\n}","/// <reference path=\"../_references.ts\"/>\n\nmodule App.Administrative.Reviews {\n\tangular\n\t\t.module('administrative.reviews', [])\n\t\t.config(['$stateProvider', ($stateProvider: ng.ui.IStateProvider) => {\n\t\t\t$stateProvider\n\t\t\t\t.state('zipSolutions.old.reviewRequest', {\n\t\t\t\t\turl: 'reviewRequest/{review:bool}',\n\t\t\t\t\tredirectTo: 'zipSolutions.reviews.request',\n\t\t\t\t})\n\t\t\t\t.state('zipSolutions.administrative.reviews', {\n\t\t\t\t\turl: '/reviews',\n\t\t\t\t\tredirectTo: 'zipSolutions.reviews.request',\n\t\t\t\t})\n\t\t\t\t.state('zipSolutions.administrative.reviews.request', {\n\t\t\t\t\turl: '/request',\n\t\t\t\t\tdata: {\n\t\t\t\t\t\ttitle: 'Review Request',\n\t\t\t\t\t\treview: 1,\n\t\t\t\t\t},\n\t\t\t\t\tviews: {\n\t\t\t\t\t\t'content@': {\n\t\t\t\t\t\t\tcontroller: 'ReviewRequestController',\n\t\t\t\t\t\t\tcontrollerAs: 'ctrl',\n\t\t\t\t\t\t\ttemplateUrl: 'html/administrative/reviews/reviews.59571625.html',\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t\t.state('zipSolutions.administrative.reviews.call-source', {\n\t\t\t\t\turl: '/call-source',\n\t\t\t\t\tdata: {\n\t\t\t\t\t\ttitle: 'Review Request',\n\t\t\t\t\t\treview: 0,\n\t\t\t\t\t},\n\t\t\t\t\tviews: {\n\t\t\t\t\t\t'content@': {\n\t\t\t\t\t\t\tcontroller: 'ReviewRequestController',\n\t\t\t\t\t\t\tcontrollerAs: 'ctrl',\n\t\t\t\t\t\t\ttemplateUrl: 'html/administrative/reviews/reviews.59571625.html',\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t}])\n\t\t.service('ReviewRequestService', ReviewRequestService.Factory())\n\t\t.controller('ReviewRequestController', ReviewRequestController);\n}","/// <reference path=\"../_references.ts\"/>\n\nmodule App.Administrative.Tags {\n\tangular\n\t\t.module('administrative.tags', [])\n\t\t.config(['$stateProvider', ($stateProvider: ng.ui.IStateProvider) => {\n\t\t\t$stateProvider\n\t\t\t\t.state('zipSolutions.old.tags', {\n\t\t\t\t\turl: 'tags',\n\t\t\t\t\tredirectTo: 'zipSolutions.administrative.tags',\n\t\t\t\t})\n\t\t\t\t.state('zipSolutions.administrative.tags', {\n\t\t\t\t\turl: '/tags',\n\t\t\t\t\tdata: {\n\t\t\t\t\t\ttitle: 'Tagging',\n\t\t\t\t\t},\n\t\t\t\t\tviews: {\n\t\t\t\t\t\t'content@': {\n\t\t\t\t\t\t\tcontroller: 'TagsController',\n\t\t\t\t\t\t\tcontrollerAs: 'ctrl',\n\t\t\t\t\t\t\ttemplateUrl: 'html/administrative/tags/tags.e90b0ddc.html',\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t}])\n\t\t.service('TagsService', TagsService.Factory())\n\t\t.controller('TagsController', TagsController)\n}","/// <reference path=\"../_references.ts\"/>\n\nmodule App.Administrative.UploadPhotos {\n\tangular\n\t\t.module('administrative.upload-photos', [])\n\t\t.config(['$stateProvider', ($stateProvider: ng.ui.IStateProvider) => {\n\t\t\t$stateProvider\n\t\t\t\t.state('zipSolutions.old.uploadPhotos', {\n\t\t\t\t\turl: '/administrative/uploadPhotos',\n\t\t\t\t\tredirectTo: 'zipSolutions.administrative.upload-photos',\n\t\t\t\t})\n\t\t\t\t.state('zipSolutions.administrative.upload-photos', {\n\t\t\t\t\turl: '/upload-photos',\n\t\t\t\t\tdata: {\n\t\t\t\t\t\ttitle: 'Upload Photos',\n\t\t\t\t\t},\n\t\t\t\t\tviews: {\n\t\t\t\t\t\t'content@': {\n\t\t\t\t\t\t\tcontroller: 'UploadPhotosController',\n\t\t\t\t\t\t\tcontrollerAs: 'ctrl',\n\t\t\t\t\t\t\ttemplateUrl: 'html/administrative/upload-photos/upload-photos.20ad5764.html',\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t}])\n\t\t.controller('UploadPhotosController', UploadPhotosController);\n}","/// <reference path=\"../_references.ts\"/>\n\nmodule App.Administrative.VendorInventory {\n\tangular\n\t\t.module('administrative.vendor-inventory', [])\n\t\t.config(['$stateProvider', ($stateProvider: ng.ui.IStateProvider) => {\n\t\t\t$stateProvider\n\t\t\t\t.state('zipSolutions.administrative.vendor-inventory', {\n\t\t\t\t\turl: '/vendorinventory',\n\t\t\t\t\tdata: {\n\t\t\t\t\t\ttitle: 'Inventory Summary'\n\t\t\t\t\t},\n\t\t\t\t\tviews: {\n\t\t\t\t\t\t'content@': {\n\t\t\t\t\t\t\tcontroller: 'VendorInventoryController',\n\t\t\t\t\t\t\tcontrollerAs: 'ctrl',\n\t\t\t\t\t\t\ttemplateUrl: 'html/administrative/vendor-inventory/vendor-inventory.e023794e.html',\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t}])\n\t\t.service('VendorInventoryService', VendorInventoryService)\n\t\t.controller('VendorInventoryController', VendorInventoryController);\n}","/// <reference path=\"_references.ts\"/>\n\nmodule App {\n\timport UserSession = App.User.UserSession;\n\timport AppRootScope = App.Administrative.AppRootScope;\n\n\tconst app = angular.module('field', [\n\t\t'ui.router',\n\t\t'ngCookies',\n\t\t'ngAnimate',\n\t\t'ngMessages',\n\t\t'ngMap',\n\t\t'authInterceptor',\n\t\t'utils',\n\t\t'login',\n\t\t'user',\n\t\t'appointment',\n\t\t'customer',\n\t\t'itemManagement',\n\t\t'priceGuide',\n\t\t'workOrder',\n\t\t'workOrderTemplate',\n\t\t'payment',\n\t\t'history',\n\t\t'timeclock',\n\t\t'forms',\n\t\t'helpers.validations',\n\t\t'tradeServe.utils.login',\n\t\t'helpers.states',\n\t\t'helpers.titleBar',\n\t\t'helpers.googlePlace',\n\t\t'helpers.locationService',\n\t\t'helpers.uploadService',\n\t\t'helpers.permission',\n\t\t'administrative',\n\t\t'templateStore',\n\t\t'questionnaire',\n\t\t'ngFileUpload',\n\t\t'ui.utils.masks',\n\t\t'as.sortable',\n\t\t'dashboard',\n\t\t'vxWamp',\n\t\t'chat',\n\t\t'angularModalService',\n\t\t'headerMessages',\n\t\t'dispatchSummary',\n\t\t'dispatchSummary.table',\n\t\t'tradeServe.utils.telephony',\n\t]);\n\n\tapp.config(['$locationProvider', '$urlRouterProvider', '$compileProvider', '$httpProvider', '$stateProvider',\n\t\t($locationProvider: ng.ILocationProvider, $urlRouterProvider: ng.ui.IUrlRouterProvider,\n\t\t $compileProvider: ng.ICompileProvider, $httpProvider: ng.IHttpProvider, $stateProvider: ng.ui.IStateProvider) => {\n\t\t\t$stateProvider\n\t\t\t\t.state('zipSolutions', {\n\t\t\t\t\turl: '/?officeOrg&apptId&office&redirect',\n\t\t\t\t\tparams: {\n\t\t\t\t\t\tofficeOrg: { dynamic: true, squash: true, value: null,    type: 'int'    },\n\t\t\t\t\t\tapptId:    { dynamic: true, squash: true, value: null,    type: 'int'    },\n\t\t\t\t\t\toffice:    { dynamic: true, squash: true, value: 'false', type: 'string' },\n\t\t\t\t\t\tredirect:  { dynamic: true, squash: true, value: null,    type: 'string' },\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t\t.state('zipSolutions.old', {\n\t\t\t\t\tabstract: true,\n\t\t\t\t});\n\n\t\t\t$compileProvider.debugInfoEnabled(debugInfoEnabled);\n\n\t\t\t$locationProvider.html5Mode({\n\t\t\t\tenabled: true,\n\t\t\t\trequireBase: false,\n\t\t\t\trewriteLinks: false\n\t\t\t});\n\n\t\t\t$httpProvider.defaults.headers.common['Content-Type'] = 'application/json';\n\t\t\t$urlRouterProvider.otherwise('/home/appointment');\n\t\t}]);\n\n\tapp.constant('Constants', {\n\t\tapiUrl: api + 'v1/',\n\t\tdebugInfoEnabled: debugInfoEnabled,\n\t\tversion: version,\n\t\tisMobile: /iPhone|iPad|iPod|Android/i.test(navigator.userAgent)\n\t});\n\n\tapp.run(['$rootScope', '$state', '$http', 'LoginService', 'UserSession', 'PermissionService',\n\t\t($rootScope: AppRootScope, $state: ng.ui.IStateService,\n\t\t \t$http: ng.IHttpProvider, LoginService: App.Login.LoginService,\n\t\t \tUserSession: UserSession, PermissionService: App.Helpers.PermissionService) => {\n\n\t\t$http.defaults.headers.common['API-Key'] = LoginService.giveToken();\n\n\t\t$rootScope.$on('sessionChange', UserSession.checkSession);\n\n\t\t$rootScope.$on('$locationChangeSuccess', () => {\n\t\t\ttry {\n\t\t\t\tdocument.querySelector('main').scrollTop = 0;\n\t\t\t} catch(e) {\n\n\t\t\t}\n\t\t});\n\n\t\t$rootScope.$on('$stateChangeStart', function(evt, to, params) {\n\t\t\tif (to.redirectTo) {\n\t\t\t\tevt.preventDefault();\n\t\t\t\t$state.go(to.redirectTo, params, {location: 'replace'})\n\t\t\t}\n\t\t});\n\n\t\tfunction S4() {\n\t\t\treturn ((1 + Math.random()) * 0x10000 | 0).toString(16).substring(1);\n\t\t}\n\n\t\tfunction generateGuid() {\n\t\t\treturn (S4() + S4() + '-' + S4() + '-4' + S4().substr(0, 3) + '-' + S4() + '-' + S4() + S4() + S4()).toUpperCase();\n\t\t}\n\n\t\t$rootScope.app = {\n\t\t\tstartAppLoading: function() {\n\t\t\t\t$rootScope.app.isAppLoading = true;\n\t\t\t},\n\t\t\tgenerateGuid: generateGuid,\n\t\t\tstopAppLoading: function() {\n\t\t\t\t$rootScope.app.isAppLoading = false;\n\t\t\t},\n\t\t\tsetOrganization: (id) => {\n\t\t\t\tif (!id) {\n\t\t\t\t\tdelete $http.defaults.headers.common['organization'];\n\t\t\t\t} else {\n\t\t\t\t\t$http.defaults.headers.common['organization'] = id;\n\t\t\t\t}\n\t\t\t},\n\t\t\tshowAppHeader: () => {\n\t\t\t\t$rootScope.app.isHeaderShown = true;\n\t\t\t},\n\t\t\thideAppHeader: () => {\n\t\t\t\t$rootScope.app.isHeaderShown = false;\n\t\t\t},\n\t\t\tgetTitle: () => {\n\t\t\t\treturn $state.current.data ? $state.current.data.title + ' - Zip Solutions Field App' : 'Zip Solutions Field App';\n\t\t\t},\n\t\t\tisHeaderShown: true,\n\t\t\tshowTimeEvents: () => {},\n\t\t\tinitElement: (selector: string) => angular.element(document.querySelector(selector)).css('display', ''),\n\t\t\tgetClockedStatusColor: (timeClockStatus: boolean): string => {\n\t\t\t\treturn PermissionService.hasPermission('web.time-clock.field.view')\n\t\t\t\t\t? App.TimeEvent.TimeEventViewController.getStatusColor()\n\t\t\t\t\t: PermissionService.hasAnyPermission(['web.field.right-nav.clock-in', 'web.field.right-nav.time-clock']) && timeClockStatus\n\t\t\t\t\t\t? 'green'\n\t\t\t\t\t\t: 'red';\n\t\t\t},\n\t\t\tgetClockedStatusText: (): string => {\n\t\t\t\treturn PermissionService.hasPermission('web.time-clock.field.view')\n\t\t\t\t\t? App.TimeEvent.TimeEventViewController.getEventTagName()\n\t\t\t\t\t: null;\n\t\t\t},\n\t\t}\n\n\t\tUserSession.checkSession();\n\t}]);\n\n\tangular.bootstrap(document, ['field'], {\n\t\tstrictDi: true\n\t});\n}"]}