{"version":3,"sources":["services.js","accounts-service.js","alert-types-service.js","alerts-service.js","application-types-service.js","attendee-status-service.js","auto-numbers-service.js","background-checks-service.js","census-tracts-service.js","certification-fields-service.js","certification-levels-service.js","clinicians-service.js","cms-pages-service.js","cms-sites-service.js","complaint-activity-tracking-service.js","complaint-activity-types-service.js","complaint-auto-numbers-service.js","complaint-monitoring-actions-service.js","complaint-monitoring-service.js","complaint-statuses-service.js","complaints-service.js","completion-date-service.js","correspondences-service.js","countries-service.js","data-change-log-service.js","data-elements-service.js","data-sets-service.js","date-types-service.js","document-types-service.js","documents-service.js","enterprise-integrations-service.js","enterprise-links-service.js","enterprise-login-criteria-service.js","enterprise-merge-fields-service.js","enterprise-public-lookup-service.js","enterprise-service.js","entities-service.js","entity-enterprise-fields-service.js","exam-alert-types-service.js","exam-auto-num-service.js","exam-candidate-service.js","exam-forms-service.js","exam-function-as-service.js","exam-location-service.js","exam-lookup-column-service.js","exam-packets-service.js","exam-result-service.js","exam-session-coordinators-service.js","exam-session-examiners-service.js","exam-session-status-service.js","exam-sessions-service.js","exam-skill-category-service.js","exam-skill-option-service.js","exam-skills-service.js","exam-type-service.js","fb-conditions-service.js","fb-elements-service.js","fb-form-position-permissions-service.js","fb-form-types-service.js","fb-forms-service.js","fb-packages-service.js","fb-question-criteria-service.js","fb-question-types-service.js","fb-questions-service.js","fb-response-service.js","file-types-service.js","fips-lookup-service.js","fire-drill-service.js","gnis-county-codes-service.js","gnis-postal-codes-service.js","gnis-service.js","gnis-state-codes-service.js","hospitals-service.js","inspection-auto-numbers-service.js","integration-methods-service.js","ip-checklists-service.js","ip-checkout-logs-service.js","ip-comment-service.js","ip-deficiencies-service.js","ip-deficiency-categories-service.js","ip-extra-fees-service.js","ip-inspections-service.js","ip-result-sets-service.js","ip-statuses-service.js","ip-templates-service.js","ip-visits-service.js","levels-service.js","license-categories-service.js","license-category-certification-attributes-service.js","license-category-certification-fields-service.js","license-category-certification-statuses-service.js","license-category-levels-service.js","license-charge-calculated-fields-service.js","license-charge-types-service.js","license-charges-service.js","license-level-configurations-service.js","license-request-application-types-service.js","license-request-charges-service.js","license-request-fb-responses-service.js","license-request-levels-service.js","license-request-process-status-service.js","license-request-statuses-service.js","license-request-supplemental-training-training-service.js","license-requests-service.js","license-rules-service.js","license-scheduled-task-logs-service.js","license-scheduled-tasks-service.js","license-statuses-service.js","licenses-service.js","logger-service.js","merge-contact-groups-service.js","merge-fields-service.js","merge-objects-service.js","merge-templates-service.js","national-registry-integration-data-service.js","notes-service.js","nremt-levels-service.js","nremt-statuses-service.js","page-service.js","payments-service.js","policy-classifications-service.js","policy-statuses-service.js","policy-types-service.js","portal-pages-service.js","positions-service.js","process-enterprises-service.js","process-licenses-service.js","process-service.js","process-statuses-service.js","query-service.js","regions-service.js","saml-service.js","sb-regions-service.js","security-template-permissions-service.js","service-area-census-tracts-service.js","service-area-cities-service.js","service-area-counties-service.js","service-area-postal-codes-service.js","service-areas-service.js","service-stations-service.js","service-user-longevities-service.js","service-user-longevity-credits-service.js","service-user-trainings-service.js","services-service.js","session-service.js","status-service.js","supplemental-training-fields-service.js","tg-trigger-configurations-service.js","tg-trigger-functions-service.js","tg-trigger-groups-service.js","tg-triggers-service.js","topics-service.js","training-locations-service.js","training-users-service.js","trainings-service.js","transaction-statuses-service.js","trigger-categories-service.js","trigger-configuration-triggers-service.js","trigger-configurations-service.js","trigger-functions-service.js","triggers-service.js","user-exam-coordinator-list-service.js","user-exam-coordinator-service.js","user-exam-examiners-list-service.js","user-exam-examiners-service.js","user-inspectors-service.js","user-investigators-service.js","user-statuses-service.js","users-service.js","utils-service.js","validation-types-service.js","vehicle-specialties-service.js","vehicle-types-service.js","vehicles-service.js","viewed-licenses-service.js","voucher-pay-service.js","xslt-stylesheets-service.js"],"names":["angular","module","factory","$http","$q","$rootScope","Cache","get","args","d","defer","offline","then","account","resolve","apiLocation","params","response","data","PRODUCTNAME","save","reject","promise","getApplicationCounts","newUserAccount","copy","userAccount","counts_retrieved","continue_count","review_count","checkout_count","validate","password","user_name","post","console","log","getByID","id","getAlerts","getDashboardAlerts","getAlertsCount","alert","value","method","url","isUndefined","application_type","license_id","label","license_category_levels","licenseID","licenseCategoryID","getByUserID","Documents","Upload","importClinicians","document_id","service_id","saveFileUpload","response_id","getDocumentByResponseID","responseID","downloadExcel","serviceID","saveElement","fileUpload","licenseRequestId","responseId","formCompleted","file_updated","file_content","file_name","saved","upload","file","dataUrltoBlob","name","document","documentId","getMenu","getByEnterprise","enterpriseID","site","Enterprise_ID","complaint_activity","delete","getActivityTrackingHistoryByComplaintID","complaintId","getActivityTrackingHistoryByID","activityTrackingHistoryId","deleteActivityTrackingHistory","complaint_action","getFilter","filter","timeout","getCount","user_id","detail","enterprise_id","complaint","users","services","vehicles","alcohol_substances_mental_health","bulkAction","complaintIDs","code","getAlcoholSubstancesMentalHealthFields","getDomesticViolenceFields","checkCategoryAutoNumber","categoryId","getEnterpriseInvestigationSettings","printInvestigation","printInvestigationModel","prepareArrayField","obj","result","i","l","length","correspondence","correspondenceData","extend","mergeEntityID","merge_entity_id","message","subject","from_address","to_address","cc_address","bcc_address","replyTo_address","replyto_address","userDocumentIDs","include_documents","mergeTemplateID","merge_template_id","save_correspondence_object","sendTemplate","saveDataObjects","initiatedByID","userID","respondEmail","internalURL","getServiceLocations","getTriggerConfigurationLog","getGenders","data_section_name","getRaces","getHairColors","getEyeColors","getHeights","getEducationOptions","getStudyOptions","getTopicOptions","records","getForeignLanguages","getVehicleLicenseTypes","getVehicleSpecialties","getVehicleTypes","getEngineTypes","getVehiclePermitStatuses","getOrganizationTypes","getOrganizationStatuses","getOrganizationalTaxStatuses","getOwnershipTypes","getMutualAidRelationships","getDaylightSavingsTimeUse","getTimeZones","getServiceAreaTypes","getTrainingLevels","getComplaintSources","getDispositions","getCategories","getCompliances","getVehicleMakes","getMutualAidResponseTypes","getResourceCategoryTypes","getFireApparatusTypes","getFireApparatusPrimaryUses","getEMSPersonnelsPrimaryEMSJobRole","getEMSPersonnelsOtherJobResponsibilities","getEmploymentTypes","getEmploymentStatuses","getACLSSponsor","getCPRSponsor","getStructureTypes","getPALSSponsor","getServicePermitLevels","getOtherTypeOfService","getPrimaryTypeOfService","getLengthOfService","getEmergencyPreparednessTrainingCourses","getWorkInOtherFields","getWorkRelatedInjuryLength","getReasonsForPracticingOptions","getNumberOfEMSJobs","getServiceLocationType","getShiftLength","getVolunteerCompensation","getVolunteerLocation","getOutOfState","getNationallyRegistered","getTrainingBasis","getLicenseBasis","getCourseLevel","getTrainingType","getServiceLicenseType","getProfessionalLicenseType","getTrainingRegionApproving","getExamVerificationStatus","getUserClassifications","getPersonnelsEmploymentStatus","getChargesPending","getCriminalOffense","getIllegalDrugs","getActionTaken","getCellProviders","getCriminalHistoryStatus","statuses","combined","shared","j","push","concat","getConvictionType","argsCopy","getLevelOfConviction","getCategoryOfOffenceCharge","getServiceType","getVoucherAmounts","getServiceClassification","getEmergencyMedicalDispatches","getOtherDocuments","getDisplayApplicant","display_applicant","getForForm","display_form","saveAll","description","document_type_id","undefined","candidate_id","candidateID","expiration_date","object_id","fromComplaint","data_object_id","resp","evt","progressPercentage","parseInt","loaded","total","config","logAccess","downloadZip","documentIds","JSON","stringify","toString","getByUserForQuestionID","parameters","question_id","getDocumentsByInspection","inspection_id","createDocumentObject","documentID","data_object","enterprise_integration","getLink","getEnterpriseDisablePasswordLogin","getEducationReportLookupPermission","userId","processData","userLabels","serviceLabels","vehicleLabels","entities","forEach","entity","user","service","vehicle","categories","category","fields","field","enterprise","getByAddress","address","getlogoutSettings","getUserVoiceLink","getDuplicatePreventionText","listPublicEnterpriseIdentityProvider","getEnterpriseUserPublicAddresses","getRecaptchaResponse","action","token","enterpriseId","getByCategory","getCategoryQuestions","getalerttype","alertype","exam_alert_type","getActiveAutoNums","getautonum","examAutoNum","getCandidateBySession","getformCount","getform","getPacketListById","ExamFormId","updateStatus","ids","status","examFormIDs","SaveExamFormSkills","skillID","formID","sortOrder","saveFormToExam","examID","FormID","examForm","exam_form","ExamFormIDInfo","copyID","getfilter","getlocation","examLocation","getenterpriselookupcolumns","enterpriseExamLookup","getPassingRequirments","newPassingRequirment","newName","minCount","minPassedForms","examPacketId","exceptionMessage","indexOf","error","exam_packet","active","maxFailedAttempts","activeStatus","ExamPacketForms","examPacketForms","licenseCategoryLevelId","ExamPacketPassingRequirementGroups","passingRequirments","returnID","exceptionType","updateStatuses","packets","examPacketIDs","errorMessage","getbysession","getsessionstatus","session_status","getsession","getsessionsummary","getcorrespondence","getdocuments","getcandidatesessionresults","examSession","getcategory","skill_category","getskilloptions","skill_id","getActive","checkActive","getskill","updateActive","examSkillIDs","updateCritical","updateCategory","skill","options","gettype","examType","Triggers","FBQuestionCriteria","condition","evaluate","licenseRequestID","conditions","success","hitCondition","evaluateCondition","fire","trigger_name","triggerID","trigger_id","permission","form_position_permission","getByCode","types","getAccess","attachments","promises","form","attachment","document_code","all","saveAccess","access","form_id","applicant_access","createView","getReimbursementRules","form_package","forms","isNumeric","n","isNaN","parseFloat","isFinite","escapeString","str","replace","equation","cIndex","question_criteria","criterion","and_flag","left_parenthesis","question","answerStatement","answers","aIndex","answer","validDate","show_value","Date","isValidDate","setHours","result_set_id","operator","toLowerCase","includes","isString","split","a","isObject","aiIndex","right_parenthesis","eval","e","$compile","LicenseRequestApplicationTypes","LicenseRequestSupplementalTrainingTrainings","ServiceUserTrainings","ServiceUserLongevities","Logger","Clinicians","VoucherPay","checklistID","saveAnswers","getLess","fbFormId","logAngularApiErrors","saveApplicationTypeID","applicationTypeID","application_type_id","license_request_id","getComponentAnswers","component","parentGroupID","parentConditionsMet","parentHasConditions","root","component_type","element_code","elementAnswer","completed_on","progress","logSupplementalDates","isArray","sort_order","groups","group","gIndex","parent_group_id","saveGroup","questions","data_point_code","question_type","applyTimeZone","val","v","document_saved","document_name","document_description","document_type","locked","document_locked","sub_components","subComponent","conditions_met","component_conditions","results","generatePDFHTML","pdfScope","$new","portalURL","display_changed_answers","element","pdfListener","$on","html","off","remove","$destroy","inspection","previewFormID","preview","saveByForm","page_count","skipLogging","dont_save","tempResponse","Object","assign","the_form","saveResponse","pages","page","index","tab_active","sections","section","components","parsedResults","flat","documentErrors","logFormProgress","generatePDF","response_obj","objectID","getPDFFileContent","populateGroup","dataSetCode","coreID","single","data_set_code","core_id","single_group","clearSignatures","reopen","getServiceApplicationVehicles","licenseRequestIDs","getByPostalCode","postalCode","getPublicSchoolSystems","getPublicSchools","getPublicFireDrills","getPublicYears","auto_number","$timeout","FBResponses","IPComment","checklist","processedResponse","updateBatch","checklists","isUpdate","every","getDocumentsAndComments","documents","listIPCommentAsync","comments","generatingPDF","cancel","timer","inspectionID","visitID","visit_id","number","outcome","signatureTypeInPerson","signature_type_in_person","checkout_log","getAdministrativeCommentsByQuestionId","fbQuestionID","saveAdministrativeComment","comment","questionID","Comment","FBQuestionId","InspectionId","resolveAdministrativeComment","put","toggleShowOnPdf","inspectionId","deficiency","deficiency_category","createFee","fee","updateFee","deleteFee","IPChecklists","TGTriggers","isSubmit","handleChecklist","inspectionWithoutChecklist","saveBatch","inspections","map","saveIPChecklist","submit","arr","savedChecklist","savedInspection","submitBatch","pdfPromises","saveByFormPromises","copyInspections","savedResponses","idx","savedChecklists","savedInspections","getIDByVisitID","inspectionIDs","getAll","getService","service_only","getVehicle","vehicle_only","template","result_set","getDocumentData","template_id","saveDocumentData","getInspectionLicenseLevelOptions","templateId","getInspectionLicenseLevels","userOnly","month","year","getList","getYears","yearObject","years","MODULENAME","visit","inspectors","service_template","vehicle_template","postSpotCheckInspection","spotCheckInfo","getUserLevelProgress","getEducationVerificationDates","license_category","certification_fields","updateAllowMultipleLevels","allow_multiple_levels","license_category_id","license_category_certification_attribute","license_category_certification_field","getVehicleCategoryStatuses","license_category_certification_status","Licenses","getCheckCategory","license","provider","dispatcher","instructor","getProvider","getLookupProvider","lookup","getLookupService","getUserLevels","entity_id","license_category_level","getCalculatedValue","chargeValue","getCountFromQuery","chargeTypeId","$filter","LicenseChargeTypes","LicenseRequestCharges","LicenseChargeCalculatedFields","calculateChargeType","charge","count","amount","record_count","threshold","additional_charge","applicationCharge","license_charge_id","c","license_charge","datapointAnswers","charges","flat_fee","license_charge_type","data_point_id","allAnswers","matchingAnswers","datapoint","column_values","calculatedValue","returnedPromise","calculated_field_question_id","lrat","license_request_application_type","clearElement","key","hasOwnProperty","typeID","levelID","isValidGuid","license_request_level_id","checked","license_request_charge","licenseRequestResponse","license_request_response","updateProcess","note","statusID","status_id","processID","process_id","manual_trigger_id","manual_trigger_name","link_trigger_id","link_trigger_name","Trainings","saveTraining","training","savedTraining","trainingIDs","trainings","savedTrainingIDs","training_location","training_location_id","applicationTypeId","FBConditions","LicenseCharges","fireFormSubmissionFailed","system","vehicleID","vehicle_id","getXML","formatted","reg","pad","array","indent","match","padding","getTrainingValidationDates","license_request","application","validationError","pdfResponseCopy","getDocumentIDs","savedResponse","validationerror","$broadcast","pdfResponse","completedPromises","complete_trigger_id","complete_trigger_name","package_complete_trigger_id","package_complete_trigger_name","reason","setCurrentTriggerCount","buildField","rule","usedFields","columns","service_entity","license_rule_field_values","lrfv","license_rule_field","alias","table_name","field_name","type","format","revertTimeZone","buildClause","clauses","left","dbField","totalMonths","totalYears","right","sort","sortObjectArray","today","dd","getDate","mm","getMonth","yyyy","getFullYear","date","substring","setMonth","daysInMonth","newDay","valueOf","build","rules","numOfClauses","Enterprise","getCertificationIDs","scheduled_task_id","getCertifications","certsArray","license_scheduled_task","timeString","frequency_begin_time","begin_time_hours","substr","begin_time_minutes","begin_date_time_string","date_string","toLocaleString","frequency_begin_date","prototype","subtractHours","h","this","setTime","getTime","server_spec","utc_to_server_hours","toLocaleTimeString","license_scheduled_task_criteria_statuses","license_scheduled_task_criteria_levels","license_scheduled_task_merge_templates","license_scheduled_task_createalerts","license_scheduled_task_retirealerts","saveStatuses","saveLevels","run","license_rules","license_request_statuses","license_category_certification_statuses","license_category_certification_attributes","processes","modified_processes","text","fb_response_id","errorText","headers","getInspectionTemplates","getInvestigationTemplates","getInspectionVisitTemplates","getExamsTemplates","getbyid","merge_template","national_registry_integration_data","GetSessionDataForPayment","getLicenseRequestTotals","items","getAttributes","getPaymentMethods","getCheckingAccountTypes","getCreditCardTypes","getDebitCardTypes","sign","directPayment","payment","preSaveCyberSource","payElavon","getPolicy","getProtocol","getServicePositions","getServiceDesignation","service_designation","process_license","process_statuses","GetApplicationProcesses","ProcessTypeID","state","availableOnly","getColumns","getFilters","getAdvancedFilters","getFields","getField","getSecurityGroups","query","default_view","query_column_values","filters","query_filter_values","advanced_filters","query_advanced_filter_values","criteria","query_criteria","view_groups","query_security_group_viewers","edit_groups","query_security_group_editors","GetAbbreviation","$stateParams","idpSignIn","entityId","messages","idpSignOut","returnUrl","encodeURIComponent","userPermissions","getByStateCode","stateCode","service_user_longevity","manualRedemption","longevities","approve","saveAnswer","service_user_longevities","service_user_longevity_credit","service_user_training","reimbursements","reimburse","training_id","service_user_trainings","getExpiring","serviceClassification","rangeLength","inactiveVehicle","inactiveService","activeVehicle","activeService","hideEmptyExpireDate","activeOnly","getLessActive","getWithHierarchy","hierarchy","allUsers","allServices","children","child","getPotentialChildren","search","getCounties","getServiceAffiliationCounties","getSponsors","sponsor","getTopLevelRegionList","PublicLookupService","newArgs","primaryCertificationNumber","primary_license_number","serviceName","service_name","primaryCertificationLevel","primary_license_level","certLevel","certification_level_id","trainingLevel","training_levels","permitLevel","service_permit_level","classificationLevel","classification","city","county","records_offset","records_total","sort_fields","sort_direction","getServiceLookupCount","certificationLevel","getServiceAlerts","getServiceCertifications","getServiceVehicles","getServicesFromVehicleId","vehicleId","checkIn","CheckSession","expireSession","isPortal","IsSessionAlive","sessionId","getProcessStatuses","ProcessID","trigger_configuration","$injector","configID","checkObjectTriggers","trigger","objectTriggers","objects","object","objectTrigger","trigger_object_id","trigger_object_name","trigger_action_values","tav","previous_actions","getConfiguration","triggers","config_id","trigger_config_id","trigger_configuration_id","getTrainingsForReimbursement","checkPrerequisites","courseid","userid","postCourseUserSummary","course","getForRegistration","forRegistration","training_topics","removeAttendeeFromCourse","attendees","attachNoCategory","noCategory","getByTriggerID","getLogs","triggerArray","getActions","tct","infiniteCheck","infiniteFound","actions","user_status_id","user_status_name","next_trigger","attendee_status_id","attendee_status_name","certification_statuses","category_name","createalerts","getNextTrigger","nextTrigger","retirealerts","policy_status_id","policy_status_name","license_request_status_id","license_request_status_name","processStatus","process_name","status_name","form_packages","formPackage","merge_templates","mergeTemplate","trigger_functions","triggerFunction","nextTriggers","Array","license_status_id","license_status_name","transaction_status_id","transaction_status_name","getByIDWithActions","foundInfinite","check","tctActions","getByObjectWithActions","getByObject","new_tcts","singleTct","trigger_configuration_trigger","license_category_certification_statues","removed","license_status","license_request_status","getForFormCondition","currentPage","numPerPage","reverse","sortBy","alphaFilter","internal","user_inspector","getUserStatusLockedMessage","statusId","getPublicSearchUser","getForService","forService","getNewUser","getUserObject","lookupUsername","last_name","account_identifier","birth_date","phone","email","ssn","street","getUserbyEmail","saveEmail","new_email","forgotPassword","is_public","getResetToken","getPasswordRequirements","getPasswordHistory","checkPasswordHistory","pass","top","resetPassword","username","searchByService","searchUsersNotInService","validateUsername","userInfo","eliteLookup","publicLookupUser","first_name","suffix","primaryCertification","applicationCertificationId","application_certification_id","applicationLevel","application_level_id","date_of_birth","from_search","service_affiliation_county","national_ems_id","getUserLookupCount","getUserAlerts","getUserCertifications","getUserEMSLevels","getUserEndorsements","getUserInstructorLevels","getUserEvaluatorLevels","getUserInstructingTopics","getUserByServicePersonnelID","personnelID","getUserAddressInfo","getServiceUsersForReimbursement","serviceId","GetCookieName","DeleteSessionCookie","getCertificationByNumber","isVehicle","getVehicleBySerialNumber","searchVehiclesNotInService","getVehiclesTypesWithTypeRestriction","limit_vehicle_type_ids","show_vehicles_without_type","saveLicenseVoucherCharge","getExistingVouchersByLicenseRequestID","getStylesheetContent"],"mappings":"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","file":"services-24.12.2.2.min.js","sourcesContent":["'use strict';\r\n\r\nangular.module('licensure.services', [\r\n\r\n])","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('Account', ['$http', '$q', '$rootScope', 'Cache', function ($http, $q, $rootScope, Cache) {\r\n return {\r\n get: function (args) {\r\n var d = $q.defer();\r\n\r\n if ($rootScope.offline) {\r\n Cache.get('account', 'LICENSURE').then(function (account) {\r\n d.resolve(account);\r\n });\r\n }\r\n else {\r\n $http.get(apiLocation + '/api/account', {\r\n params: args\r\n })\r\n .then(function (response) {\r\n if (response.data != null) {\r\n response.data.PRODUCTNAME = 'LICENSURE';\r\n Cache.save('account', response.data, 'PRODUCTNAME').then(function () {\r\n d.resolve(response.data);\r\n }).catch(function (response) {\r\n d.reject(response.data);\r\n });\r\n }\r\n else {\r\n d.resolve(null);\r\n }\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n }\r\n\r\n return d.promise;\r\n },\r\n\r\n getApplicationCounts: function (args) {\r\n var d = $q.defer();\r\n\r\n $http.get(apiLocation + '/api/account/preview', {\r\n params: args\r\n })\r\n .then(function (response) {\r\n if (response.data != null) {\r\n var newUserAccount = angular.copy($rootScope.userAccount);\r\n newUserAccount.counts_retrieved = response.data.counts_retrieved;\r\n newUserAccount.continue_count = response.data.continue_count;\r\n newUserAccount.review_count = response.data.review_count;\r\n newUserAccount.checkout_count = response.data.checkout_count;\r\n newUserAccount.PRODUCTNAME = 'LICENSURE';\r\n Cache.save('account', newUserAccount, 'PRODUCTNAME').then(function () {\r\n d.resolve(response.data);\r\n });\r\n }\r\n else {\r\n d.resolve(null);\r\n }\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n validate: function (password, user_name) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .post(apiLocation + '/api/account/validate', {\r\n password: password,\r\n user_name: user_name\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n d.reject(response.data);\r\n });\r\n\r\n return d.promise;\r\n }\r\n }\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('AlertTypes', ['$http', '$q', function ($http, $q) {\r\n return {\r\n get: function () {\r\n var d = $q.defer();\r\n $http\r\n .get(apiLocation + '/api/alerttypes', {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n d.reject(response.data);\r\n });\r\n\r\n return d.promise;\r\n }\r\n }\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('Alerts', ['$http', '$q', function ($http, $q) {\r\n return {\r\n getByID: function (id) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/Alerts/' + id, {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n d.reject(response.data);\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getAlerts: function (args) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/alerts/getalerts', {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n d.reject(response.data);\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getDashboardAlerts: function (args) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/alerts/getDashboardAlerts', {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n d.reject(response.data);\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getAlertsCount: function (args) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/alerts/getAlertsCount', {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n d.reject(response.data);\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n save: function (alert, value) {\r\n var d = $q.defer();\r\n var method = 'POST';\r\n var url = apiLocation + '/api/Alerts/';\r\n if (!isUndefined(alert.id)) {\r\n method = 'PUT'\r\n url += alert.id\r\n }\r\n\r\n $http({\r\n method: method,\r\n url: url,\r\n data: {\r\n alert: alert,\r\n value: value\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n d.reject(response.data);\r\n });\r\n\r\n return d.promise;\r\n }\r\n }\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('ApplicationTypes', ['$http', '$q', function ($http, $q) {\r\n return {\r\n get: function (args) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/ApplicationTypes', {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n save: function (application_type, license_id) {\r\n var d = $q.defer();\r\n var method = 'POST';\r\n var url = apiLocation + '/api/ApplicationTypes/';\r\n if (!isUndefined(application_type.id)) {\r\n method = 'PUT'\r\n url += application_type.id;\r\n }\r\n else { // no post method\r\n return $q.resolve(false);\r\n }\r\n\r\n $http({\r\n method: method,\r\n url: url,\r\n data: {\r\n application_type: application_type,\r\n label: application_type.label,\r\n license_id: license_id,\r\n license_category_levels: application_type.license_category_levels\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n d.reject(response.data);\r\n });\r\n\r\n return d.promise;\r\n }\r\n }\r\n }])\r\n;","\"use strict\";\r\n\r\nangular.module(\"licensure.services\").factory(\"AttendeeStatus\", [\r\n \"$http\",\r\n \"$q\",\r\n function($http, $q) {\r\n return {\r\n get: function() {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + \"/api/AttendeeStatus\", {\r\n params: {}\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n };\r\n }\r\n]);\r\n","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('AutoNumbers', ['$http', '$q', function ($http, $q) {\r\n return {\r\n get: function (licenseID, licenseCategoryID) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/autonumbers', {\r\n params: {\r\n licenseID: licenseID,\r\n licenseCategoryID: licenseCategoryID\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getByID: function (id) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/autonumbers/' + id, {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n d.reject(response.data);\r\n });\r\n\r\n return d.promise;\r\n }\r\n }\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('BackgroundChecks', ['$http', '$q', function ($http, $q) {\r\n return {\r\n getByUserID: function (args) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/BackgroundCheck', {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n d.reject(response.data);\r\n });\r\n\r\n return d.promise;\r\n },\r\n \r\n }\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('CensusTracts', ['$http', '$q', function ($http, $q) {\r\n return {\r\n get: function () {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/censustracts', {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n d.reject(response.data);\r\n });\r\n\r\n return d.promise;\r\n }\r\n }\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('CertificationFields', ['$http', '$q', function ($http, $q) {\r\n return {\r\n get: function () {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/certificationfields', {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n d.reject(response.data);\r\n });\r\n\r\n return d.promise;\r\n }\r\n }\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('CertificationLevels', ['$http', '$q', function ($http, $q) {\r\n return {\r\n get: function (args) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/CertificationLevels', {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n d.reject(response.data);\r\n });\r\n\r\n return d.promise;\r\n }\r\n }\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('Clinicians', ['$http', '$q', 'Documents', 'Upload', function ($http, $q, Documents, Upload) {\r\n var importClinicians = function (document_id, service_id) {\r\n var d = $q.defer();\r\n\r\n $http.post(apiLocation + '/api/clinicians/importClinicians/' + document_id + '/' + service_id)\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n d.reject(response.data);\r\n });\r\n\r\n return d.promise;\r\n }\r\n\r\n var saveFileUpload = function (document_id, response_id) {\r\n var d = $q.defer();\r\n\r\n $http.post(apiLocation + '/api/clinicians/saveFileUpload/' + document_id + '/' + response_id)\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n d.reject(response.data);\r\n });\r\n\r\n return d.promise;\r\n }\r\n\r\n var getDocumentByResponseID = function (responseID) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/clinicians/getDocumentByResponseID', {\r\n params: {\r\n responseID: responseID\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n d.reject(response.data);\r\n });\r\n\r\n return d.promise;\r\n }\r\n\r\n return {\r\n downloadExcel: function (id) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/clinicians/getExcel', {\r\n params: {\r\n serviceID: id\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n d.reject(response.data);\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n saveElement: function (fileUpload, licenseRequestId, responseId, formCompleted) {\r\n var d = $q.defer();\r\n\r\n if (fileUpload[0] != null && fileUpload[0].file_updated && fileUpload[0].file_content != null && fileUpload[0].file_name != null && !fileUpload[0].saved) {\r\n //Upload document\r\n Documents.upload({\r\n file: Upload.dataUrltoBlob(fileUpload[0].file_content, fileUpload[0].file_name),\r\n name: fileUpload[0].file_name\r\n }, licenseRequestId).then(function (document) {\r\n if (document != null) {\r\n saveFileUpload(document.id, responseId).then(function () {\r\n if (formCompleted) {\r\n //Form submitted - import clinicians\r\n importClinicians(document.id, fileUpload[0].service_id).then(function () {\r\n d.resolve();\r\n })\r\n } else {\r\n d.resolve();\r\n }\r\n })\r\n }\r\n })\r\n }\r\n else if (fileUpload[0] != null && fileUpload[0].saved && fileUpload[0].document_id == null && fileUpload[0].service_id != null && formCompleted)\r\n {\r\n //Document already uploaded and form submitted, but form does not have document id\r\n getDocumentByResponseID(responseId).then(function (documentId) {\r\n if (documentId != null) {\r\n importClinicians(documentId, fileUpload[0].service_id).then(function () {\r\n d.resolve();\r\n })\r\n } else {\r\n d.resolve();\r\n }\r\n })\r\n }\r\n else if (fileUpload[0] != null && fileUpload[0].document_id != null && fileUpload[0].service_id != null && formCompleted)\r\n {\r\n //Document already uploaded, form submitted - import clinicians\r\n importClinicians(fileUpload[0].document_id, fileUpload[0].service_id).then(function () {\r\n d.resolve();\r\n })\r\n }\r\n else {\r\n //No document uploaded or document uploaded already but form not submitted\r\n d.resolve();\r\n }\r\n \r\n return d.promise;\r\n },\r\n\r\n getDocumentByResponseID: function (responseID) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/clinicians/getDocumentByResponseID', {\r\n params: {\r\n responseID: responseID\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n d.reject(response.data);\r\n });\r\n\r\n return d.promise;\r\n },\r\n }\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('CMSPages', ['$http', '$q', function ($http, $q) {\r\n return {\r\n get: function (args) {\r\n var d = $q.defer();\r\n\r\n $http.get(apiLocation + '/api/CMSPages', {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getMenu: function (args) {\r\n var d = $q.defer();\r\n\r\n $http.get(apiLocation + '/api/CMSPages/getmenu', {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n\r\n }\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('CMSSites', ['$http', '$q', '$rootScope', function ($http, $q, $rootScope) {\r\n return {\r\n get: function () {\r\n var d = $q.defer();\r\n\r\n $http.get(apiLocation + '/api/CMSSites', {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getByEnterprise: function (id) {\r\n var d = $q.defer();\r\n\r\n $http.get(apiLocation + '/api/CMSSites', {\r\n params: {\r\n enterpriseID: id\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n save: function (site) {\r\n var d = $q.defer();\r\n\r\n var method = 'PUT';\r\n var url = apiLocation + '/api/CMSSites/' + site.id;\r\n\r\n site.Enterprise_ID = $rootScope.enterpriseID;\r\n\r\n $http({\r\n method: method,\r\n url: url,\r\n data: {\r\n site: site\r\n }\r\n }).then(function (response) {\r\n d.resolve(response.data);\r\n }).catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n }\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('ComplaintActivityTracking', ['$http', '$q', function ($http, $q) {\r\n return {\r\n getByID: function (id) {\r\n var d = $q.defer();\r\n\r\n $http.get(apiLocation + '/api/ComplaintActivityTracking/' + id, {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n save: function (complaint_activity) {\r\n var d = $q.defer();\r\n\r\n var method = 'POST';\r\n var url = apiLocation + '/api/ComplaintActivityTracking/';\r\n if (!isUndefined(complaint_activity.id)) {\r\n method = 'PUT'\r\n url += complaint_activity.id\r\n }\r\n\r\n $http({\r\n method: method,\r\n url: url,\r\n data: {\r\n complaint_activity: complaint_activity\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n delete: function (id) {\r\n var d = $q.defer();\r\n\r\n $http.delete(apiLocation + '/api/ComplaintActivityTracking/' + id, {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getActivityTrackingHistoryByComplaintID: function (complaintId) {\r\n var d = $q.defer();\r\n\r\n $http.get(apiLocation + '/api/InvestigationsModule/InvestigationActivityTrackingHistory/Investigation/' + complaintId, {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n d.resolve(null);\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getActivityTrackingHistoryByID: function (activityTrackingHistoryId) {\r\n var d = $q.defer();\r\n\r\n $http.get(apiLocation + '/api/InvestigationsModule/InvestigationActivityTrackingHistory/' + activityTrackingHistoryId, {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n d.resolve(null);\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n deleteActivityTrackingHistory: function (activityTrackingHistoryId) {\r\n var d = $q.defer();\r\n\r\n $http.delete(apiLocation + '/api/InvestigationsModule/InvestigationActivityTrackingHistory/' + activityTrackingHistoryId, {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n d.resolve(null);\r\n });\r\n\r\n return d.promise;\r\n },\r\n }\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('ComplaintActivityTypes', ['$http', '$q', function ($http, $q) {\r\n return {\r\n get: function () {\r\n var d = $q.defer();\r\n\r\n $http.get(apiLocation + '/api/ComplaintActivityTypes', {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n })\r\n\r\n return d.promise;\r\n }\r\n }\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('ComplaintAutoNumbers', ['$http', '$q', function ($http, $q) {\r\n return {\r\n get: function () {\r\n var d = $q.defer();\r\n\r\n $http.get(apiLocation + '/api/ComplaintAutoNumbers', {\r\n params: {\r\n \r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n })\r\n\r\n return d.promise;\r\n }\r\n }\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('ComplaintMonitoringActions', ['$http', '$q', function ($http, $q) {\r\n \treturn {\r\n \t\tget: function () {\r\n \t\t\tvar d = $q.defer();\r\n\r\n \t\t\t$http.get(apiLocation + '/api/ComplaintMonitoringActions', {\r\n \t\t\t\tparams: {\r\n\r\n \t\t\t\t}\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n })\r\n\r\n \t\t\treturn d.promise;\r\n \t\t}\r\n \t}\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('ComplaintMonitoring', ['$http', '$q', function ($http, $q) {\r\n \treturn {\r\n \t\tsave: function (complaint_action) {\r\n \t\t var d = $q.defer();\r\n\r\n \t\t\tvar method = 'POST';\r\n \t\t\tvar url = apiLocation + '/api/ComplaintMonitoring/';\r\n \t\t\tif (!isUndefined(complaint_action.id)) {\r\n \t\t\t\tmethod = 'PUT'\r\n \t\t\t\turl += complaint_action.id\r\n \t\t\t}\r\n\r\n \t\t\t$http({\r\n \t\t\t\tmethod: method,\r\n \t\t\t\turl: url,\r\n \t\t\t\tdata: {\r\n \t\t\t\t\tcomplaint_action: complaint_action\r\n \t\t\t\t}\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n \t\t\treturn d.promise;\r\n \t\t},\r\n\r\n \t\tdelete: function (id) {\r\n \t\t\tvar d = $q.defer();\r\n\r\n \t\t\t$http.delete(apiLocation + '/api/ComplaintMonitoring/' + id, {\r\n \t\t\t\tparams: {\r\n\r\n \t\t\t\t}\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n \t\t\treturn d.promise;\r\n \t\t},\r\n \t}\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('ComplaintStatuses', ['$http', '$q', function ($http, $q) {\r\n return {\r\n get: function () {\r\n var d = $q.defer();\r\n\r\n $http.get(apiLocation + '/api/ComplaintStatuses', {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n }\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('Complaints', ['$http', '$q', function ($http, $q) {\r\n return {\r\n get: function (args) {\r\n var d = $q.defer();\r\n\r\n $http.get(apiLocation + '/api/Complaints', {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getFilter: function (filter, timeout) {\r\n var d = $q.defer();\r\n\r\n $http.post(apiLocation + '/api/Complaints/getFilter', filter, {\r\n timeout: (timeout != null ? timeout.promise : null)\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getCount: function (filter, timeout) {\r\n var d = $q.defer();\r\n\r\n $http.post(apiLocation + '/api/Complaints/getCount', filter, {\r\n timeout: (timeout != null ? timeout.promise : null)\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getByID: function (id) {\r\n var d = $q.defer();\r\n\r\n $http.get(apiLocation + '/api/Complaints/' + id, {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getByUserID: function(user_id, detail, enterprise_id) {\r\n var d = $q.defer();\r\n\r\n $http.get(apiLocation + '/api/Complaints/getByUserID', {\r\n params: {\r\n user_id: user_id,\r\n detail: detail,\r\n enterprise_id: enterprise_id\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n save: function (complaint) {\r\n var d = $q.defer();\r\n\r\n var method = 'POST';\r\n var url = apiLocation + '/api/Complaints/';\r\n if (!isUndefined(complaint.id)) {\r\n method = 'PUT'\r\n url += complaint.id\r\n }\r\n\r\n $http({\r\n method: method,\r\n url: url,\r\n data: {\r\n complaint: complaint,\r\n users: complaint.users,\r\n services: complaint.services,\r\n vehicles: complaint.vehicles,\r\n alcohol_substances_mental_health: complaint.alcohol_substances_mental_health\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n delete: function (id) {\r\n var d = $q.defer();\r\n\r\n $http.delete(apiLocation + '/api/Complaints/' + id, {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n bulkAction: function (complaintIDs, value, code) {\r\n var d = $q.defer();\r\n\r\n $http.post(apiLocation + '/api/Complaints/bulkAction', {\r\n complaintIDs: complaintIDs,\r\n value: value,\r\n code: code\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getAlcoholSubstancesMentalHealthFields: function () {\r\n var d = $q.defer();\r\n\r\n $http.get(apiLocation + '/api/complaints/getAlcoholSubstancesMentalHealthFields', {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getDomesticViolenceFields: function () {\r\n var d = $q.defer();\r\n\r\n $http.get(apiLocation + '/api/complaints/getDomesticViolenceFields', {\r\n params: {\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n checkCategoryAutoNumber: function (categoryId) {\r\n var d = $q.defer();\r\n\r\n $http.get(apiLocation + '/api/complaints/categoryAutoNumber/' + categoryId, {\r\n params: {\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n \r\n getEnterpriseInvestigationSettings: function () {\r\n var d = $q.defer();\r\n\r\n $http.get(apiLocation + '/api/complaints/getEnterpriseInvestigationSettings', {\r\n params: {\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n printInvestigation: function (printInvestigationModel) {\r\n var d = $q.defer();\r\n\r\n $http.get(apiLocation + '/api/InvestigationsModule/Investigation/print', {\r\n params: printInvestigationModel\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n }\r\n }])\r\n;","\"use strict\";\r\n\r\nangular.module(\"licensure.services\").factory(\"CompletionDate\", [\r\n \"$http\",\r\n \"$q\",\r\n function($http, $q) {\r\n return {\r\n get: function() {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + \"/api/CompletionDate\", {\r\n params: {}\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n };\r\n }\r\n]);\r\n","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('Correspondences', ['$http', '$q', '$rootScope', function ($http, $q, $rootScope) {\r\n var prepareArrayField = function (obj) {\r\n var result = '';\r\n if (obj != null) {\r\n for (var i = 0, l = obj.length; i < l; i++) {\r\n if (i > 0) {\r\n result = result + ',' + obj[i].id;\r\n } else {\r\n result = obj[i].id;\r\n }\r\n }\r\n }\r\n return result;\r\n };\r\n\r\n return {\r\n getByID: function (id) {\r\n var d = $q.defer();\r\n\r\n $http.get(apiLocation + '/api/Correspondences/' + id, {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n save: function (correspondence, args) {\r\n var d = $q.defer();\r\n\r\n var correspondenceData = angular.extend({}, {\r\n mergeEntityID: correspondence.merge_entity_id,\r\n message: correspondence.message,\r\n subject: correspondence.subject,\r\n from_address: prepareArrayField(correspondence.from_address),\r\n to_address: prepareArrayField(correspondence.to_address),\r\n cc_address: prepareArrayField(correspondence.cc_address),\r\n bcc_address: prepareArrayField(correspondence.bcc_address),\r\n replyTo_address: prepareArrayField(correspondence.replyto_address),\r\n userDocumentIDs: prepareArrayField(correspondence.include_documents),\r\n mergeTemplateID: correspondence.merge_template_id,\r\n save_correspondence_object: true,\r\n sendTemplate: 0,\r\n saveDataObjects: true,\r\n enterpriseID: $rootScope.enterpriseID,\r\n initiatedByID: $rootScope.userID,\r\n respondEmail: false\r\n }, args);\r\n\r\n $http({\r\n method: 'POST',\r\n url: $rootScope.internalURL + 'controller.cfm?method=CorrespondenceService.sendCorrespondenceAngularJS&returnFormat=json',\r\n data: correspondenceData\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n }\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('Countries', ['$http', '$q', function ($http, $q) {\r\n return {\r\n get: function () {\r\n var d = $q.defer();\r\n\r\n $http.get(apiLocation + '/api/countries', {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getByID: function (id) {\r\n var d = $q.defer();\r\n\r\n $http.get(apiLocation + '/api/countries/' + id, {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n }\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('DataChangeLog', ['$http', '$q', function ($http, $q) {\r\n\r\n return {\r\n get: function (args) {\r\n var d = $q.defer();\r\n\r\n $http.get(apiLocation + '/api/DataChangeLog', {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getServiceLocations: function (args) {\r\n var d = $q.defer();\r\n\r\n $http.get(apiLocation + '/api/DataChangeLog/ServiceLocations', {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getTriggerConfigurationLog: function (args) {\r\n var d = $q.defer();\r\n\r\n $http.get(apiLocation + '/api/TriggerConfigurationTriggerChangeLog', {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n }\r\n }])\r\n;","\"use strict\";\r\n\r\nangular.module(\"licensure.services\").factory(\"DataElements\", [\r\n \"$http\",\r\n \"$q\",\r\n function ($http, $q) {\r\n return {\r\n get: function (args) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + \"/api/dataelements\", {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getByID: function (id) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + \"/api/dataelements/\" + id, {\r\n params: {}\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getGenders: function (args) {\r\n var d = $q.defer();\r\n args.data_section_name = \"gender\";\r\n\r\n $http\r\n .get(apiLocation + \"/api/dataelements\", {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getRaces: function (args) {\r\n var d = $q.defer();\r\n args.data_section_name = \"race\";\r\n\r\n $http\r\n .get(apiLocation + \"/api/dataelements\", {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getHairColors: function (args) {\r\n var d = $q.defer();\r\n args.data_section_name = \"hair\";\r\n\r\n $http\r\n .get(apiLocation + \"/api/dataelements\", {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getEyeColors: function (args) {\r\n var d = $q.defer();\r\n args.data_section_name = \"eye color\";\r\n\r\n $http\r\n .get(apiLocation + \"/api/dataelements\", {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getHeights: function (args) {\r\n var d = $q.defer();\r\n args.data_section_name = \"height\";\r\n\r\n $http\r\n .get(apiLocation + \"/api/dataelements\", {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getEducationOptions: function (args) {\r\n var d = $q.defer();\r\n args.data_section_name = \"Highest Level of Education\";\r\n\r\n $http\r\n .get(apiLocation + \"/api/dataelements\", {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getStudyOptions: function (args) {\r\n var d = $q.defer();\r\n args.data_section_name =\r\n \"EMS Personnel's Degree Subject/Field of Study\";\r\n\r\n $http\r\n .get(apiLocation + \"/api/dataelements\", {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getTopicOptions: function (args) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + \"/api/EducationModule/Topics\", {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data.records);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getForeignLanguages: function (args) {\r\n var d = $q.defer();\r\n args.data_section_name = \"Foreign Language Ability\";\r\n\r\n $http\r\n .get(apiLocation + \"/api/dataelements\", {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getVehicleLicenseTypes: function (args) {\r\n var d = $q.defer();\r\n args.data_section_name = \"Vehicle License Type\";\r\n\r\n $http\r\n .get(apiLocation + \"/api/dataelements\", {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getVehicleSpecialties: function (args) {\r\n var d = $q.defer();\r\n args.data_section_name = \"Vehicle Specialty\";\r\n\r\n $http\r\n .get(apiLocation + \"/api/dataelements\", {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getVehicleTypes: function (args) {\r\n var d = $q.defer();\r\n args.data_section_name = \"Vehicle Type\";\r\n\r\n $http\r\n .get(apiLocation + \"/api/dataelements\", {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getEngineTypes: function (args) {\r\n var d = $q.defer();\r\n args.data_section_name = \"Engine Type\";\r\n\r\n $http\r\n .get(apiLocation + \"/api/dataelements\", {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getVehiclePermitStatuses: function (args) {\r\n var d = $q.defer();\r\n args.data_section_name = \"Vehicle Permit Status\";\r\n\r\n $http\r\n .get(apiLocation + \"/api/dataelements\", {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getOrganizationTypes: function (args) {\r\n var d = $q.defer();\r\n args.data_section_name = \"Organization Type\";\r\n\r\n $http\r\n .get(apiLocation + \"/api/dataelements\", {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getOrganizationStatuses: function (args) {\r\n var d = $q.defer();\r\n args.data_section_name = \"Organization Status\";\r\n\r\n $http\r\n .get(apiLocation + \"/api/dataelements\", {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getOrganizationalTaxStatuses: function (args) {\r\n var d = $q.defer();\r\n args.data_section_name = \"Organizational Tax Status\";\r\n\r\n $http\r\n .get(apiLocation + \"/api/dataelements\", {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getOwnershipTypes: function (args) {\r\n var d = $q.defer();\r\n args.data_section_name = \"Ownership Type\";\r\n\r\n $http\r\n .get(apiLocation + \"/api/dataelements\", {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getMutualAidRelationships: function (args) {\r\n var d = $q.defer();\r\n args.data_section_name = \"Mutual Aid Agreement Relationship\";\r\n\r\n $http\r\n .get(apiLocation + \"/api/dataelements\", {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getDaylightSavingsTimeUse: function (args) {\r\n var d = $q.defer();\r\n args.data_section_name = \"Daylight Savings Time Use\";\r\n\r\n $http\r\n .get(apiLocation + \"/api/dataelements\", {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getTimeZones: function (args) {\r\n var d = $q.defer();\r\n args.data_section_name = \"Time Zone\";\r\n\r\n $http\r\n .get(apiLocation + \"/api/dataelements\", {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n });\r\n\r\n return d.promise;\r\n },\r\n getServiceAreaTypes: function (args) {\r\n var d = $q.defer();\r\n args.data_section_name = \"Service Area Type\";\r\n\r\n $http\r\n .get(apiLocation + \"/api/dataelements\", {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getTrainingLevels: function (args) {\r\n var d = $q.defer();\r\n args.data_section_name = \"Training Level\";\r\n\r\n $http\r\n .get(apiLocation + \"/api/dataelements\", {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getComplaintSources: function (args) {\r\n var d = $q.defer();\r\n args.data_section_name = \"Complaint Source\";\r\n\r\n $http\r\n .get(apiLocation + \"/api/dataelements\", {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getDispositions: function (args) {\r\n var d = $q.defer();\r\n args.data_section_name = \"Disposition\";\r\n\r\n $http\r\n .get(apiLocation + \"/api/dataelements\", {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getCategories: function (args) {\r\n var d = $q.defer();\r\n args.data_section_name = \"Category\";\r\n\r\n $http\r\n .get(apiLocation + \"/api/dataelements\", {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getCompliances: function (args) {\r\n var d = $q.defer();\r\n args.data_section_name = \"Compliance\";\r\n\r\n $http\r\n .get(apiLocation + \"/api/dataelements\", {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getVehicleMakes: function (args) {\r\n var d = $q.defer();\r\n args.data_section_name = \"Vehicle Make\";\r\n\r\n $http\r\n .get(apiLocation + \"/api/dataelements\", {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getMutualAidResponseTypes: function (args) {\r\n var d = $q.defer();\r\n args.data_section_name = \"Mutual Aid Response Type\";\r\n\r\n $http\r\n .get(apiLocation + \"/api/dataelements\", {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getResourceCategoryTypes: function (args) {\r\n var d = $q.defer();\r\n args.data_section_name = \"Resource Category Type\";\r\n\r\n $http\r\n .get(apiLocation + \"/api/dataelements\", {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getFireApparatusTypes: function (args) {\r\n var d = $q.defer();\r\n args.data_section_name = \"Fire Apparatus Type\";\r\n\r\n $http\r\n .get(apiLocation + \"/api/dataelements\", {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getFireApparatusPrimaryUses: function (args) {\r\n var d = $q.defer();\r\n args.data_section_name = \"Fire Apparatus Primary Use\";\r\n\r\n $http\r\n .get(apiLocation + \"/api/dataelements\", {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getEMSPersonnelsPrimaryEMSJobRole: function (args) {\r\n var d = $q.defer();\r\n args.data_section_name = \"EMS Personnel's Primary EMS Job Role\";\r\n\r\n $http\r\n .get(apiLocation + \"/api/dataelements\", {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getEMSPersonnelsOtherJobResponsibilities: function (args) {\r\n var d = $q.defer();\r\n args.data_section_name =\r\n \"EMS Personnel's Other Job Responsibilities\";\r\n\r\n $http\r\n .get(apiLocation + \"/api/dataelements\", {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getEmploymentTypes: function (args) {\r\n var d = $q.defer();\r\n args.data_section_name = \"Employment Type\";\r\n\r\n $http\r\n .get(apiLocation + \"/api/dataelements\", {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getEmploymentStatuses: function (args) {\r\n var d = $q.defer();\r\n args.data_section_name = \"Personnel's Employment Status\";\r\n\r\n $http\r\n .get(apiLocation + \"/api/dataelements\", {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getACLSSponsor: function (args) {\r\n var d = $q.defer();\r\n args.data_section_name = \"Sponsor - ACLS\";\r\n\r\n $http\r\n .get(apiLocation + \"/api/dataelements\", {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getCPRSponsor: function (args) {\r\n var d = $q.defer();\r\n args.data_section_name = \"Sponsor - CPR\";\r\n\r\n $http\r\n .get(apiLocation + \"/api/dataelements\", {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getStructureTypes: function (args) {\r\n var d = $q.defer();\r\n args.data_section_name = \"Structure Type\";\r\n\r\n $http\r\n .get(apiLocation + \"/api/dataelements\", {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getPALSSponsor: function (args) {\r\n var d = $q.defer();\r\n args.data_section_name = \"Sponsor - PALS\";\r\n\r\n $http\r\n .get(apiLocation + \"/api/dataelements\", {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getServicePermitLevels: function (args) {\r\n var d = $q.defer();\r\n args.data_section_name = \"Service Permit Level\";\r\n\r\n $http\r\n .get(apiLocation + \"/api/dataelements\", {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getOtherTypeOfService: function (args) {\r\n var d = $q.defer();\r\n args.data_section_name = \"Other Type of Service\";\r\n\r\n $http\r\n .get(apiLocation + \"/api/dataelements\", {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getPrimaryTypeOfService: function (args) {\r\n var d = $q.defer();\r\n args.data_section_name = \"Primary Type of Service\";\r\n\r\n $http\r\n .get(apiLocation + \"/api/dataelements\", {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getLengthOfService: function (args) {\r\n var d = $q.defer();\r\n args.data_section_name = \"Length of Service\";\r\n\r\n $http\r\n .get(apiLocation + \"/api/dataelements\", {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getEmergencyPreparednessTrainingCourses: function (args) {\r\n var d = $q.defer();\r\n args.data_section_name =\r\n \"Emergency Preparedness Training Courses\";\r\n\r\n $http\r\n .get(apiLocation + \"/api/dataelements\", {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getWorkInOtherFields: function (args) {\r\n var d = $q.defer();\r\n args.data_section_name = \"Work in Other Fields\";\r\n\r\n $http\r\n .get(apiLocation + \"/api/dataelements\", {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getWorkRelatedInjuryLength: function (args) {\r\n var d = $q.defer();\r\n args.data_section_name = \"Work Related Injury Length\";\r\n\r\n $http\r\n .get(apiLocation + \"/api/dataelements\", {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getReasonsForPracticingOptions: function (args) {\r\n var d = $q.defer();\r\n\r\n d.resolve([\r\n { id: \"Very Satisfied\", name: \"Very Satisfied\" },\r\n { id: \"Somewhat Satisfied\", name: \"Somewhat Satisfied\" },\r\n { id: \"Neutral\", name: \"Neutral\" },\r\n {\r\n id: \"Somewhat Unsatisfied\",\r\n name: \"Somewhat Unsatisfied\"\r\n },\r\n { id: \"Very Unsatisfied\", name: \"Very Unsatisfied\" }\r\n ]);\r\n\r\n return d.promise;\r\n },\r\n\r\n getNumberOfEMSJobs: function (args) {\r\n var d = $q.defer();\r\n args.data_section_name = \"Number of EMS Jobs\";\r\n\r\n $http\r\n .get(apiLocation + \"/api/dataelements\", {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getServiceLocationType: function (args) {\r\n var d = $q.defer();\r\n args.data_section_name = \"Service Location Type\";\r\n\r\n $http\r\n .get(apiLocation + \"/api/dataelements\", {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getShiftLength: function (args) {\r\n var d = $q.defer();\r\n args.data_section_name = \"Shift Length\";\r\n\r\n $http\r\n .get(apiLocation + \"/api/dataelements\", {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getVolunteerCompensation: function (args) {\r\n var d = $q.defer();\r\n args.data_section_name = \"Volunteer Compensation\";\r\n\r\n $http\r\n .get(apiLocation + \"/api/dataelements\", {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getVolunteerLocation: function (args) {\r\n var d = $q.defer();\r\n args.data_section_name = \"Volunteer Location\";\r\n\r\n $http\r\n .get(apiLocation + \"/api/dataelements\", {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getOutOfState: function (args) {\r\n var d = $q.defer();\r\n args.data_section_name = \"Out Of State\";\r\n\r\n $http\r\n .get(apiLocation + \"/api/dataelements\", {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getNationallyRegistered: function (args) {\r\n var d = $q.defer();\r\n args.data_section_name = \"Nationally Registered\";\r\n\r\n $http\r\n .get(apiLocation + \"/api/dataelements\", {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getTrainingBasis: function (args) {\r\n var d = $q.defer();\r\n args.data_section_name = \"Training Basis\";\r\n\r\n $http\r\n .get(apiLocation + \"/api/dataelements\", {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getLicenseBasis: function (args) {\r\n var d = $q.defer();\r\n args.data_section_name = \"License Basis\";\r\n\r\n $http\r\n .get(apiLocation + \"/api/dataelements\", {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getCourseLevel: function (args) {\r\n var d = $q.defer();\r\n args.data_section_name = \"Course Level\";\r\n\r\n $http\r\n .get(apiLocation + \"/api/dataelements\", {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getTrainingType: function (args) {\r\n var d = $q.defer();\r\n args.data_section_name = \"Training Type\";\r\n\r\n $http\r\n .get(apiLocation + \"/api/dataelements\", {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getServiceLicenseType: function (args) {\r\n var d = $q.defer();\r\n args.data_section_name = \"Service License Type\";\r\n\r\n $http\r\n .get(apiLocation + \"/api/dataelements\", {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getProfessionalLicenseType: function (args) {\r\n var d = $q.defer();\r\n args.data_section_name = \"Professional License Type\";\r\n\r\n $http\r\n .get(apiLocation + \"/api/dataelements\", {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getTrainingRegionApproving: function (args) {\r\n var d = $q.defer();\r\n args.data_section_name = \"Training Region Approving\";\r\n\r\n $http\r\n .get(apiLocation + \"/api/dataelements\", {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getExamVerificationStatus: function (args) {\r\n var d = $q.defer();\r\n args.data_section_name = \"Exam Verification Status\";\r\n\r\n $http\r\n .get(apiLocation + \"/api/dataelements\", {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getUserClassifications: function (args) {\r\n var d = $q.defer();\r\n args.data_section_name = \"User Classification\";\r\n\r\n $http\r\n .get(apiLocation + \"/api/dataelements\", {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getPersonnelsEmploymentStatus: function (args) {\r\n var d = $q.defer();\r\n args.data_section_name = \"Personnel's Employment Status\";\r\n\r\n $http\r\n .get(apiLocation + \"/api/dataelements\", {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getChargesPending: function (args) {\r\n var d = $q.defer();\r\n args.data_section_name = \"Charges Pending\";\r\n\r\n $http\r\n .get(apiLocation + \"/api/dataelements\", {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getCriminalOffense: function (args) {\r\n var d = $q.defer();\r\n args.data_section_name = \"Criminal Offense\";\r\n\r\n $http\r\n .get(apiLocation + \"/api/dataelements\", {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getIllegalDrugs: function (args) {\r\n var d = $q.defer();\r\n args.data_section_name = \"Illegal Drugs\";\r\n\r\n $http\r\n .get(apiLocation + \"/api/dataelements\", {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getActionTaken: function (args) {\r\n var d = $q.defer();\r\n args.data_section_name = \"Action Taken\";\r\n\r\n $http\r\n .get(apiLocation + \"/api/dataelements\", {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getCellProviders: function (args) {\r\n var d = $q.defer();\r\n args.data_section_name = \"Cell Provider\";\r\n\r\n $http\r\n .get(apiLocation + \"/api/dataelements\", {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getCriminalHistoryStatus: function (args) {\r\n var d = $q.defer();\r\n args.data_section_name = \"\";\r\n var statuses = [\r\n { id: \"Pending\", name: \"Pending\" },\r\n { id: \"Conviction\", name: \"Conviction\" },\r\n { id: \"Absolved\", name: \"Absolved\" }\r\n ];\r\n\r\n $http\r\n .get(apiLocation + \"/api/criminalhistory/getuserstatuses\", {\r\n params: {}\r\n })\r\n .then(function (response) {\r\n if (response.data != null && response.data.length > 0) {\r\n var combined = [];\r\n for (var i = 0; i < statuses.length; i++) {\r\n var shared = false;\r\n for (var j = 0; j < response.data.length; j++) {\r\n if (response.data[j].name == statuses[i].name) {\r\n shared = true;\r\n break;\r\n }\r\n }\r\n if (!shared) combined.push(statuses[i]);\r\n }\r\n statuses = combined.concat(response.data);\r\n d.resolve(statuses);\r\n } else {\r\n d.resolve(statuses);\r\n }\r\n })\r\n .catch(function (response) {\r\n d.resolve(statuses);\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getConvictionType: function (args) {\r\n var d = $q.defer();\r\n var argsCopy = angular.copy(args);\r\n argsCopy.data_section_name = \"Conviction Type\";\r\n\r\n $http\r\n .get(apiLocation + \"/api/dataelements\", {\r\n params: argsCopy\r\n })\r\n .then(function (response) {\r\n argsCopy = null;\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n argsCopy = null;\r\n console.log(response.data);\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getLevelOfConviction: function (args) {\r\n var d = $q.defer();\r\n var argsCopy = angular.copy(args);\r\n argsCopy.data_section_name = \"Level of Conviction\";\r\n\r\n $http\r\n .get(apiLocation + \"/api/dataelements\", {\r\n params: argsCopy\r\n })\r\n .then(function (response) {\r\n argsCopy = null;\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n argsCopy = null;\r\n console.log(response.data);\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getCategoryOfOffenceCharge: function (args) {\r\n var d = $q.defer();\r\n var argsCopy = angular.copy(args);\r\n argsCopy.data_section_name = \"Category of Offense/Charge\";\r\n\r\n $http\r\n .get(apiLocation + \"/api/dataelements\", {\r\n params: argsCopy\r\n })\r\n .then(function (response) {\r\n argsCopy = null;\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n argsCopy = null;\r\n console.log(response.data);\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getServiceType: function (args) {\r\n var d = $q.defer();\r\n var argsCopy = angular.copy(args);\r\n argsCopy.data_section_name = \"Service Type\";\r\n $http\r\n .get(apiLocation + '/api/dataelements', {\r\n params: argsCopy\r\n })\r\n .then(function (response) {\r\n argsCopy = null;\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n argsCopy = null;\r\n console.log(response.data);\r\n });\r\n return d.promise;\r\n },\r\n\r\n getVoucherAmounts: function (args) {\r\n var d = $q.defer();\r\n var argsCopy = angular.copy(args);\r\n argsCopy.data_section_name = \"Voucher Amounts\";\r\n $http\r\n .get(apiLocation + '/api/dataelements', {\r\n params: argsCopy\r\n })\r\n .then(function (response) {\r\n argsCopy = null;\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n argsCopy = null;\r\n console.log(response.data);\r\n });\r\n return d.promise;\r\n },\r\n\r\n getServiceClassification: function (args) {\r\n var d = $q.defer();\r\n var argsCopy = angular.copy(args);\r\n argsCopy.data_section_name = \"Service Classification\";\r\n $http\r\n .get(apiLocation + '/api/dataelements', {\r\n params: argsCopy\r\n })\r\n .then(function (response) {\r\n argsCopy = null;\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n argsCopy = null;\r\n console.log(response.data);\r\n });\r\n return d.promise;\r\n },\r\n\r\n getEmergencyMedicalDispatches: function (args) {\r\n var d = $q.defer();\r\n var argsCopy = angular.copy(args);\r\n argsCopy.data_section_name = \"Emergency Medical Dispatch\";\r\n $http\r\n .get(apiLocation + '/api/dataelements', {\r\n params: argsCopy\r\n })\r\n .then(function (response) {\r\n argsCopy = null;\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n argsCopy = null;\r\n console.log(response.data);\r\n });\r\n return d.promise;\r\n }\r\n };\r\n }\r\n]);\r\n","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('DataSets', ['$http', '$q', function ($http, $q) {\r\n return {\r\n get: function (license_id) {\r\n var d = $q.defer();\r\n\r\n $http.get(apiLocation + '/api/datasets', {\r\n params: {\r\n license_id: license_id\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n }\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('DateTypes', ['$http', '$q', function ($http, $q) {\r\n return {\r\n get: function () {\r\n var d = $q.defer();\r\n\r\n $http.get(apiLocation + '/api/datetypes', {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getByID: function (id) {\r\n var d = $q.defer();\r\n\r\n $http.get(apiLocation + '/api/datetypes/' + id, {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n\r\n }\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('DocumentTypes', ['$http', '$q', function ($http, $q) {\r\n var get = function (args) {\r\n var d = $q.defer();\r\n\r\n $http.get(apiLocation + '/api/documenttypes', {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n\r\n var getOtherDocuments = function (args) {\r\n var d = $q.defer();\r\n\r\n $http.get(apiLocation + '/api/Core/OtherDocumentTypes', {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n\r\n return {\r\n get: get,\r\n\r\n getOtherDocuments: getOtherDocuments,\r\n\r\n getDisplayApplicant: function () {\r\n return get({ display_applicant: true })\r\n },\r\n\r\n getForForm: function () {\r\n return get({ display_form: true });\r\n }\r\n }\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('Documents', ['$http', '$q', 'Upload', function ($http, $q, Upload) {\r\n return {\r\n getByID: function (id) {\r\n var d = $q.defer();\r\n\r\n $http.get(apiLocation + '/api/Documents/' + id, {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n save: function (document, saveAll, value) {\r\n var d = $q.defer();\r\n\r\n var method = 'POST';\r\n var url = apiLocation + '/api/Documents/';\r\n if (!isUndefined(document.id)) {\r\n method = 'PUT'\r\n url += document.id\r\n }\r\n\r\n $http({\r\n method: method,\r\n url: url,\r\n data: {\r\n document: document,\r\n saveAll: saveAll,\r\n value: value\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n delete: function (id) {\r\n var d = $q.defer();\r\n\r\n $http.delete(apiLocation + '/api/Documents/' + id, {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n upload: function (document, value) {\r\n var d = $q.defer();\r\n\r\n Upload.upload({\r\n url: apiLocation + '/api/Documents/upload',\r\n data: {\r\n file: document.file, \r\n name: document.name,\r\n description: document.description,\r\n document_type_id: document.document_type_id == null ? undefined : document.document_type_id,\r\n candidate_id: document.candidateID,\r\n expiration_date: document.expiration_date,\r\n object_id: value,\r\n fromComplaint: document.fromComplaint == null ? undefined : document.fromComplaint,\r\n data_object_id: document.data_object_id == null ? undefined : document.data_object_id,\r\n }\r\n }).then(function (resp) {\r\n d.resolve(resp.data);\r\n }, function (resp) {\r\n console.log('Error status: ', resp);\r\n d.resolve(null);\r\n }, function (evt) {\r\n var progressPercentage = parseInt(100.0 * evt.loaded / evt.total);\r\n console.log('progress: ' + progressPercentage + '% ' + evt.config.data.file.name);\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n logAccess: function (id) {\r\n var d = $q.defer();\r\n\r\n $http({\r\n method: 'POST',\r\n url: apiLocation + '/api/Documents/LogDocumentAccess',\r\n data: {\r\n document_id: id\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n downloadZip: function (documentIds) {\r\n var d = $q.defer();\r\n\r\n $http({\r\n method: 'POST',\r\n url: apiLocation + '/api/Core/Zip',\r\n data: JSON.stringify({\r\n documentIds: documentIds.toString()\r\n }),\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n d.resolve(null);\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getByUserForQuestionID: function (parameters) {\r\n var d = $q.defer();\r\n\r\n $http.get(apiLocation + '/api/Core/DocumentsByUser/' + parameters.user_id + '/' + parameters.question_id, {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getDocumentsByInspection: function (inspection_id) {\r\n var d = $q.defer();\r\n\r\n $http.get(apiLocation + '/api/Core/DocumentsByInspection/' + inspection_id, {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n d.resolve(null);\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n createDocumentObject: function (documentID, value, data_object) {\r\n var d = $q.defer();\r\n\r\n $http.post(apiLocation + \"/api/Documents/createDocumentObject\", {\r\n documentID: documentID,\r\n value: value,\r\n data_object: data_object\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n d.resolve(null);\r\n });\r\n\r\n return d.promise;\r\n },\r\n }\r\n }])\r\n;","'use strict'\r\n\r\nangular.module('licensure.services')\r\n .factory('EnterpriseIntegrations', ['$http', '$q', function ($http, $q) {\r\n return {\r\n get: function (args) {\r\n var d = $q.defer();\r\n\r\n $http.get(apiLocation + '/api/enterpriseintegrations/', {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getByID: function (id) {\r\n var d = $q.defer();\r\n\r\n $http.get(apiLocation + '/api/enterpriseintegrations/' + id, {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n save: function (enterprise_integration) {\r\n var d = $q.defer();\r\n\r\n var method = 'POST';\r\n var url = apiLocation + '/api/enterpriseintegrations/';\r\n if (!isUndefined(enterprise_integration.id)) {\r\n method = 'PUT';\r\n url += enterprise_integration.id;\r\n }\r\n\r\n $http({\r\n method: method,\r\n url: url,\r\n data: {\r\n enterprise_integration: enterprise_integration\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n delete: function (id) {\r\n var d = $q.defer();\r\n\r\n $http.delete(apiLocation + '/api/enterpriseintegrations/' + id, {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n }\r\n }])\r\n;","\"use strict\";\r\n\r\nangular.module(\"licensure.services\").factory(\"EnterpriseLinkService\", [\r\n \"$http\",\r\n \"$q\",\r\n function ($http, $q) {\r\n return {\r\n get: function () {\r\n var d = $q.defer();\r\n\r\n $http.get(apiLocation + '/api/EntityEnterpriseLink', {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getLink: function (id) {\r\n var d = $q.defer();\r\n\r\n $http.get(apiLocation + '/api/EntityEnterpriseLink/' + id, {\r\n params: {\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n };\r\n }\r\n]);\r\n","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('EnterpriseLoginCriteria', ['$http', '$q', '$rootScope', 'Cache', function ($http, $q, $rootScope, Cache) {\r\n return {\r\n get: function (args) {\r\n var d = $q.defer();\r\n\r\n $http.get(apiLocation + '/api/enterpriselogincriteria', {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n getEnterpriseDisablePasswordLogin: function (args) {\r\n var d = $q.defer();\r\n\r\n $http.get(apiLocation + '/api/Core/EnterpriseDisablePasswordLogin', {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n }\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('EnterpriseMergeFields', ['$http', '$q', function ($http, $q) {\r\n return {\r\n get: function (code) {\r\n var d = $q.defer();\r\n\r\n $http.get(apiLocation + '/api/EnterpriseMergeFields', {\r\n params: {\r\n code: code\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n });\r\n\r\n return d.promise;\r\n }\r\n }\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('EnterprisePublicLookup', ['$http', '$q', function ($http, $q) {\r\n return {\r\n get: function (args) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/enterprisepubliclookup', {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getEducationReportLookupPermission: function (userId) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + \"/api/EducationModule/EducationReportLookupPermission/\" + userId, {\r\n params: {}\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n }\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('Enterprise', ['$http', '$q', '$rootScope', 'Cache', function ($http, $q, $rootScope, Cache) {\r\n var processData = function(data) {\r\n data.PRODUCTNAME = 'LICENSURE';\r\n data.userLabels = [];\r\n data.serviceLabels = [];\r\n data.vehicleLabels = [];\r\n\r\n data.entities.forEach(function (entity) {\r\n if (entity.user) {\r\n data.userLabels[\"USER\"] = entity.label;\r\n }\r\n else if (entity.service) {\r\n data.serviceLabels[\"SERVICE\"] = entity.label;\r\n }\r\n else if (entity.vehicle) {\r\n data.vehicleLabels[\"VEHICLE\"] = entity.label;\r\n }\r\n\r\n entity.categories.forEach(function (category) {\r\n if (entity.user) {\r\n data.userLabels[category.name] = category.label;\r\n }\r\n else if (entity.service) {\r\n data.serviceLabels[category.name] = category.label;\r\n }\r\n else if (entity.vehicle) {\r\n data.vehicleLabels[category.name] = category.label;\r\n }\r\n category.fields.forEach(function (field) {\r\n if (entity.user) {\r\n data.userLabels[field.name] = field.label;\r\n }\r\n else if (entity.service) {\r\n data.serviceLabels[field.name] = field.label;\r\n }\r\n else if (entity.vehicle) {\r\n data.vehicleLabels[field.name] = field.label;\r\n }\r\n })\r\n })\r\n })\r\n }\r\n\r\n return {\r\n get: function (args) {\r\n var d = $q.defer();\r\n\r\n if ($rootScope.offline) {\r\n Cache.get('enterprise', 'LICENSURE').then(function (enterprise) {\r\n d.resolve(enterprise);\r\n }).catch(function (response) {\r\n d.reject(response.data);\r\n });\r\n }\r\n else {\r\n $http\r\n .get(apiLocation + '/api/enterprise', {\r\n params: args\r\n })\r\n .then(function (response) {\r\n if (response.data != null) {\r\n processData(response.data)\r\n\r\n Cache.save('enterprise', response.data, 'PRODUCTNAME').then(function () {\r\n d.resolve(response.data);\r\n }).catch(function (response) {\r\n d.reject(response.data);\r\n });\r\n }\r\n else {\r\n d.resolve(null);\r\n }\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n },\r\n getByAddress: function (address) {\r\n var d = $q.defer();\r\n\r\n if ($rootScope.offline) {\r\n Cache.get('enterprise', 'LICENSURE').then(function (enterprise) {\r\n d.resolve(enterprise);\r\n })\r\n }\r\n else {\r\n $http\r\n .get(apiLocation + '/api/enterprise/getbyaddress', {\r\n params: { address: address }\r\n })\r\n .then(function (response) {\r\n if (response.data != null) {\r\n processData(response.data)\r\n\r\n Cache.save('enterprise', response.data, 'PRODUCTNAME').then(function () {\r\n d.resolve(response.data);\r\n })\r\n }\r\n else {\r\n d.resolve(null);\r\n }\r\n })\r\n .catch(function () {\r\n d.reject(response.data);\r\n });\r\n\r\n return d.promise;\r\n }\r\n },\r\n getlogoutSettings: function (id) {\r\n var d = $q.defer();\r\n \r\n $http.get(apiLocation + '/api/enterprise/getLogoutCriteria', {\r\n params: { enterpriseID: id }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n getUserVoiceLink: function () {\r\n var d = $q.defer();\r\n\r\n $http.get(apiLocation + '/api/Core/GetUserVoiceLink', {\r\n params: {}\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getDuplicatePreventionText: function () {\r\n var d = $q.defer();\r\n\r\n $http.get(apiLocation + '/api/Core/DuplicatePreventionText', {\r\n params: {}\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n return d.promise;\r\n },\r\n\r\n listPublicEnterpriseIdentityProvider: function () {\r\n var d = $q.defer();\r\n $http.get(apiLocation + '/api/AdminModule/ListPublicIdentityProvider', {\r\n params: {}\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n return d.promise;\r\n },\r\n\r\n getEnterpriseUserPublicAddresses: function () {\r\n var d = $q.defer();\r\n $http.get(apiLocation + '/api/Core/EnterpriseShowUserPublicAddresses', {\r\n params: {}\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n return d.promise;\r\n },\r\n\r\n getRecaptchaResponse: function (action, token) {\r\n var d = $q.defer();\r\n var enterpriseId = $rootScope.enterpriseID ? $rootScope.enterpriseID : \"00000000-0000-0000-0000-000000000000\";\r\n\r\n $http.get(apiLocation + '/api/enterprise/recaptchaTokenResponse', {\r\n params: { action: action, token: token, enterpriseId: enterpriseId }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n }\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('Entities', ['$http', '$q', function ($http, $q) {\r\n return {\r\n get: function () {\r\n var d = $q.defer();\r\n\r\n $http.get(apiLocation + '/api/entities', {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n }\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('EntityEnterpriseFields', ['$http', '$q', function ($http, $q) {\r\n return {\r\n get: function (args) {\r\n var d = $q.defer();\r\n\r\n $http.get(apiLocation + '/api/entityenterprisefields', {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n getByCategory: function (args) {\r\n var d = $q.defer();\r\n\r\n $http.get(apiLocation + '/api/entityenterprisefields', {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n getCategoryQuestions: function (category) {\r\n var d = $q.defer();\r\n\r\n $http.get(apiLocation + '/api/entityenterprisefields/getcategoryquestions', {\r\n params: {\r\n category: category\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n }\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('EXAlertTypes', ['$http', '$q', function ($http, $q) {\r\n return {\r\n get: function () {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/EXAlertTypes', {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n\r\n getalerttype: function (id) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + \"/api/EXAlertTypes/\" + id, {\r\n params: {}\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n save: function (alertype) {\r\n var d = $q.defer();\r\n\r\n var method = \"POST\";\r\n var url = apiLocation + \"/api/EXAlertTypes/\";\r\n if (!isUndefined(alertype.id)) {\r\n method = \"PUT\";\r\n url += alertype.id;\r\n }\r\n\r\n $http({\r\n method: method,\r\n url: url,\r\n data: {\r\n exam_alert_type: alertype,\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n delete: function (id) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .delete(apiLocation + \"/api/EXAlertTypes/\" + id, {\r\n params: {}\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n }\r\n }])\r\n ;","\"use strict\";\r\n\r\nangular.module(\"licensure.services\").factory(\"EXAutoNum\", [\r\n \"$http\",\r\n \"$q\",\r\n function($http, $q) {\r\n return {\r\n get: function() {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + \"/api/ExamModule/ExamAutoNums\", {\r\n params: {}\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getActiveAutoNums: function () {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + \"/api/ExamModule/ExamAutoNums/AutoNumberActive\", {\r\n params: {}\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getautonum: function(id) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + \"/api/ExamModule/ExamAutoNums/\" + id, {\r\n params: {}\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n save: function (examAutoNum) {\r\n\r\n var d = $q.defer();\r\n\r\n var method = \"POST\";\r\n var url = apiLocation + \"/api/ExamModule/ExamAutoNums/\";\r\n\r\n if (!isUndefined(examAutoNum.id)) {\r\n method = \"PUT\";\r\n url += examAutoNum.id;\r\n }\r\n\r\n $http({\r\n method: method,\r\n url: url,\r\n data: examAutoNum\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n delete: function(id) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .delete(apiLocation + \"/api/ExamModule/ExamAutoNums/\" + id, {\r\n params: {}\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n };\r\n }\r\n]);\r\n","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('EXCandidates', ['$http', '$q', function ($http, $q) {\r\n return {\r\n getCandidateBySession: function (id) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + \"/api/ExamModule/ExamSessions/\" + id + \"/CandidateSummaries\", {\r\n params: {}\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n }\r\n }])\r\n ;","\"use strict\";\r\n\r\nangular.module(\"licensure.services\").factory(\"EXForms\", [\r\n \"$http\",\r\n \"$q\",\r\n function($http, $q) {\r\n return {\r\n get: function() {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + \"/api/ExamModule/GetAllExamForms\", {\r\n params: {}\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getformCount: function (id) {\r\n var d = $q.defer();\r\n $http\r\n .get(apiLocation + \"/api/ExamModule/ExamFormFBCount/\" + id, {\r\n params: {}\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getform: function(id) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + \"/api/EXForms/\" + id, {\r\n params: {}\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getPacketListById: function(id) {\r\n var d = $q.defer();\r\n $http\r\n .get(apiLocation + \"/api/ExamModule/ExamPackets/\", {\r\n params: {ExamFormId: id},\r\n }) \r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n updateStatus: function(ids, status) {\r\n var d = $q.defer();\r\n $http\r\n .post(\r\n apiLocation + \"/api/ExamModule/UpdateExamFormStatuses/\",\r\n {\r\n examFormIDs: ids,\r\n status: status\r\n }\r\n )\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n SaveExamFormSkills: function (skillID, formID, sortOrder) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .post(\r\n apiLocation +\r\n \"/api/ExamModule/ExamFormSaveSkills/\" +\r\n skillID +\r\n \"/\" +\r\n formID +\r\n \"/\" +\r\n sortOrder,\r\n {\r\n params: {}\r\n }\r\n )\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n saveFormToExam: function(examID, FormID) {\r\n var d = $q.defer();\r\n $http\r\n .post(\r\n apiLocation +\r\n \"/api/ExamModule/ExamFormsSaveForm/\" +\r\n examID +\r\n \"/\" +\r\n FormID,\r\n {\r\n params: {}\r\n }\r\n )\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n save: function(examForm) {\r\n var d = $q.defer();\r\n\r\n var method = \"POST\";\r\n var url = apiLocation + \"/api/EXForms/\";\r\n\r\n if (!isUndefined(examForm.id)) {\r\n method = \"PUT\";\r\n url += examForm.id;\r\n }\r\n\r\n $http({\r\n method: method,\r\n url: url,\r\n data: {\r\n exam_form: examForm\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n delete: function(id) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .delete(apiLocation + \"/api/EXForms/\" + id, {\r\n params: {}\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n copy: function(ExamFormIDInfo) {\r\n var d = $q.defer();\r\n $http\r\n .post(apiLocation + \"/api/exams/copyForm\", {\r\n copyID: ExamFormIDInfo\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n };\r\n }\r\n]);\r\n","\"use strict\";\r\n\r\nangular.module(\"licensure.services\").factory(\"EXFunctionAs\", [\r\n \"$http\",\r\n \"$q\",\r\n function($http, $q) {\r\n return {\r\n get: function() {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + \"/api/EXFunctionAs\", {\r\n params: {}\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n };\r\n }\r\n]);\r\n","\"use strict\";\r\n\r\nangular.module(\"licensure.services\").factory(\"EXLocation\", [\r\n \"$http\",\r\n \"$q\",\r\n function($http, $q) {\r\n return {\r\n get: function() {\r\n var d = $q.defer();\r\n $http\r\n .get(apiLocation + \"/api/ExamModule/ExamLocations\", {\r\n params: {}\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getfilter: function () {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + \"/api/ExamModule/ExamLocationsFilter\", {\r\n params: {}\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getlocation: function(id) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + \"/api/ExamModule/ExamLocations/\" + id, {\r\n params: {}\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n save: function (examLocation) {\r\n\r\n var d = $q.defer();\r\n\r\n var method = \"POST\";\r\n var url = apiLocation + \"/api/ExamModule/ExamLocations/\";\r\n\r\n if (!isUndefined(examLocation.id)) {\r\n method = \"PUT\";\r\n url += examLocation.id;\r\n }\r\n\r\n $http({\r\n method: method,\r\n url: url,\r\n data: examLocation\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n delete: function(id) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .delete(apiLocation + \"/api/ExamModule/ExamLocations/\" + id, {\r\n params: {}\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n };\r\n }\r\n]);\r\n","\"use strict\";\r\n\r\nangular.module(\"licensure.services\").factory(\"EXLookupColumn\", [\r\n \"$http\",\r\n \"$q\",\r\n function($http, $q) {\r\n return {\r\n get: function() {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + \"/api/ExamModule/ExamLookupColumns\", {\r\n params: {}\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getenterpriselookupcolumns: function () {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + \"/api/ExamModule/EnterpriseExamLookupColumns\", {\r\n params: {}\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n save: function (enterpriseExamLookup) {\r\n\r\n var d = $q.defer();\r\n\r\n var method = \"POST\";\r\n var url = apiLocation + \"/api/ExamModule/ExamLookupColumns/\";\r\n\r\n $http({\r\n method: method,\r\n url: url,\r\n data: enterpriseExamLookup\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n };\r\n }\r\n]);\r\n","\"use strict\";\r\n\r\nangular.module(\"licensure.services\").factory(\"EXPackets\", [\r\n \"$http\",\r\n \"$q\",\r\n function ($http, $q) {\r\n return {\r\n get: function () {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + \"/api/ExamModule/ExamPackets\", {\r\n params: {}\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getByID: function (id) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + \"/api/ExamModule/ExamPackets/\" + id, {\r\n params: {}\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getPassingRequirments: function (id) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + \"/api/ExamModule/PassingRequirments/\" + id, {\r\n params: {}\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n newPassingRequirment: function (newName, minCount, id) {\r\n var d = $q.defer();\r\n\r\n var method = \"POST\";\r\n var url = apiLocation + \"/api/ExamModule/PassingRequirment/\";\r\n\r\n $http({\r\n method: method,\r\n url: url,\r\n data: {\r\n name: newName,\r\n minPassedForms: minCount,\r\n examPacketId: id\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n if (response.data.exceptionMessage.indexOf(\"UNIQUE KEY constraint\") > 0)\r\n d.resolve({ error: \"A Group already exists with that name.\" })\r\n else\r\n d.resolve({ error: \"An error has occurred. Please contact support.\" })\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n save: function (exam_packet) {\r\n var d = $q.defer();\r\n var method = \"POST\";\r\n var url = apiLocation + \"/api/ExamModule/ExamPackets/\";\r\n\r\n if (!isUndefined(exam_packet.id)) {\r\n method = \"PUT\";\r\n url += exam_packet.id;\r\n }\r\n $http({\r\n method: method,\r\n url: url,\r\n data: {\r\n name: exam_packet.name,\r\n id: exam_packet.id,\r\n active: exam_packet.active,\r\n description: exam_packet.description,\r\n maxFailedAttempts: exam_packet.maxFailedAttempts,\r\n activeStatus: exam_packet.activeStatus,\r\n ExamPacketForms: exam_packet.examPacketForms,\r\n licenseCategoryLevelId: exam_packet.licenseCategoryLevelId,\r\n ExamPacketPassingRequirementGroups: exam_packet.passingRequirments \r\n }\r\n })\r\n .then(function (response) {\r\n var returnID = response.data.id;\r\n if (!isUndefined(exam_packet.id))\r\n returnID = exam_packet.id;\r\n\r\n d.resolve({ id: returnID});\r\n })\r\n .catch(function (response) {\r\n if (response.data.exceptionMessage.indexOf('insert duplicate key row in object') > 0) {\r\n d.resolve({ id: null, message: \"There is already a packet with that name. Please user a different packet name.\" });\r\n }\r\n else\r\n d.resolve({ id: null, message: \"There was an issue saving your packet. Please contact support: \" + response.data.exceptionType });\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n delete: function (id) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .delete(apiLocation + \"/api/ExamModule/ExamPackets/\" + id, {\r\n params: {}\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n updateStatuses: function (packets, status) {\r\n var d = $q.defer();\r\n $http\r\n .post(\r\n apiLocation + \"/api/ExamModule/ExamPackets/UpdateStatuses/\",\r\n {\r\n examPacketIDs: packets,\r\n status: status\r\n }\r\n )\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n copy: function (id) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .post(apiLocation + \"/api/ExamModule/CopyExamPacket/\" + id, {\r\n params: {}\r\n })\r\n .then(function (response) {\r\n if (response.data.errorMessage.indexOf('insert duplicate key row in object') > 0) {\r\n d.resolve({ id: null, message: \"Issue copying the current packet. There is already a packet with the name:\" });\r\n }\r\n d.resolve({ id: response.data.id, message: \"Record copied successfully\" });\r\n })\r\n .catch(function (response) {\r\n if (response.data.errorMessage.indexOf('insert duplicate key row in object') > 0) {\r\n d.resolve({ id: null, message: \"Issue copying the current packet. There is already a packet with the name:\" });\r\n }\r\n else\r\n d.resolve({ id: null, message: \"There was an issue saving your packet. Please contact support: \" + response.data.exceptionType });\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n };\r\n }\r\n]);\r\n","\"use strict\";\r\n\r\nangular.module(\"licensure.services\").factory(\"EXResult\", [\r\n \"$http\",\r\n \"$q\",\r\n function ($http, $q) {\r\n return {\r\n getbysession: function (id) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + \"/api/ExamModule/ExamSessions/\" + id + \"/ExamResultSummaries\", {\r\n params: {}\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n };\r\n }\r\n]);\r\n","\"use strict\";\r\n\r\nangular.module(\"licensure.services\").factory(\"EXSessionCoordinators\", [\r\n \"$http\",\r\n \"$q\",\r\n function ($http, $q) {\r\n return {\r\n getbysession: function (id) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + \"/api/ExamModule/ExamSessions/\" + id + \"/Coordinators\", {\r\n params: {}\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n };\r\n }\r\n]);\r\n","\"use strict\";\r\n\r\nangular.module(\"licensure.services\").factory(\"EXSessionExaminers\", [\r\n \"$http\",\r\n \"$q\",\r\n function ($http, $q) {\r\n return {\r\n getbysession: function (id) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + \"/api/ExamModule/ExamSessions/\" + id + \"/Examiners\", {\r\n params: {}\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n };\r\n }\r\n]);\r\n","\"use strict\";\r\n\r\nangular.module(\"licensure.services\").factory(\"EXSessionStatus\", [\r\n \"$http\",\r\n \"$q\",\r\n function($http, $q) {\r\n return {\r\n get: function() {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + \"/api/EXSessionStatus\", {\r\n params: {}\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getsessionstatus: function(id) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + \"/api/EXSessionStatus/\" + id, {\r\n params: {}\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n save: function(session_status) {\r\n var d = $q.defer();\r\n\r\n var method = \"POST\";\r\n var url = apiLocation + \"/api/EXSessionStatus/\";\r\n if (!isUndefined(session_status.id)) {\r\n method = \"PUT\";\r\n url += session_status.id;\r\n }\r\n\r\n $http({\r\n method: method,\r\n url: url,\r\n data: {\r\n session_status: session_status\r\n }\r\n }).then(function (response) {\r\n d.resolve(response.data);\r\n }).catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n delete: function(id) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .delete(apiLocation + \"/api/EXSessionStatus/\" + id, {\r\n params: {}\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n };\r\n }\r\n]);\r\n","\"use strict\";\r\n\r\nangular.module(\"licensure.services\").factory(\"EXSessions\", [\r\n \"$http\",\r\n \"$q\",\r\n function($http, $q) {\r\n return {\r\n get: function() {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + \"/api/ExamModule/ExamSessionSummaries\", {\r\n params: {}\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getsession: function(id) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + \"/api/ExamModule/ExamSessions/\" + id, {\r\n params: {}\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getsessionsummary: function (id) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + \"/api/ExamModule/ExamSessions/\" + id + '/Summary', {\r\n params: {}\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getcorrespondence: function (id) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + \"/api/ExamModule/ExamSessions/Correspondence/\" + id, {\r\n params: {}\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getdocuments: function (id) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + \"/api/ExamModule/ExamSessions/\" + id + \"/Documents\", {\r\n params: {}\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getcandidatesessionresults: function (id) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + \"/api/ExamModule/ExamSessions/CandidateSessionResults/\" + id, {\r\n params: {}\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n save: function (examSession) {\r\n\r\n var d = $q.defer();\r\n\r\n var method = \"POST\";\r\n var url = apiLocation + \"/api/ExamModule/ExamSessions/\";\r\n\r\n if (!isUndefined(examSession.id)) {\r\n method = \"PUT\";\r\n url += examSession.id;\r\n }\r\n\r\n console.log(\"method \", method)\r\n\r\n $http({\r\n method: method,\r\n url: url,\r\n data: examSession\r\n }).then(function (response) {\r\n d.resolve(response.data);\r\n }).catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n delete: function(id) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .delete(apiLocation + \"/api/ExamModule/ExamSessions/\" + id, {\r\n params: {}\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n };\r\n }\r\n]);\r\n","\"use strict\";\r\n\r\nangular.module(\"licensure.services\").factory(\"EXSkillCategory\", [\r\n \"$http\",\r\n \"$q\",\r\n function($http, $q) {\r\n return {\r\n get: function() {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + \"/api/EXSkillCategory\", {\r\n params: {}\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getcategory: function (id) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + \"/api/EXSkillCategory/\" + id, {\r\n params: {}\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n save: function(skill_category) {\r\n var d = $q.defer();\r\n\r\n var method = \"POST\";\r\n var url = apiLocation + \"/api/EXSkillCategory/\";\r\n if (!isUndefined(skill_category.id)) {\r\n method = \"PUT\";\r\n url += skill_category.id;\r\n }\r\n\r\n $http({\r\n method: method,\r\n url: url,\r\n data: {\r\n skill_category: skill_category\r\n }\r\n }).then(function (response) {\r\n d.resolve(response.data);\r\n }).catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n delete: function(id) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .delete(apiLocation + \"/api/EXSkillCategory/\" + id, {\r\n params: {}\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n };\r\n }\r\n]);\r\n","\"use strict\";\r\n\r\nangular.module(\"licensure.services\").factory(\"EXSkillOption\", [\r\n \"$http\",\r\n \"$q\",\r\n function ($http, $q) {\r\n return {\r\n get: function () {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + \"/api/EXSkillOption\", {\r\n params: {}\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getskilloptions: function (skill_id) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + \"/api/EXSkillOption/GetSkillOptions/\", {\r\n params: { skill_id: skill_id}\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n };\r\n }\r\n]);\r\n","\"use strict\";\r\n\r\nangular.module(\"licensure.services\").factory(\"EXSkill\", [\r\n \"$http\",\r\n \"$q\",\r\n function ($http, $q) {\r\n return {\r\n get: function () {\r\n var d = $q.defer();\r\n $http\r\n .get(apiLocation + \"/api/EXSkill\", {\r\n params: {}\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getActive: function () {\r\n var d = $q.defer();\r\n $http\r\n .get(apiLocation + \"/api/EXSkill/\", {\r\n params: { checkActive: true}\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getskill: function (id) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + \"/api/EXSkill/\" + id, {\r\n params: {}\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n updateActive: function (examSkillIDs, status) {\r\n var d = $q.defer();\r\n $http\r\n .post(\r\n apiLocation + \"/api/ExamModule/ExamSkills/BatchActive\",\r\n {\r\n examSkillIDs: examSkillIDs,\r\n status: status\r\n }\r\n )\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n updateCritical: function (ids, status) {\r\n var d = $q.defer();\r\n $http\r\n .post(\r\n apiLocation + \"/api/ExamModule/ExamSkills/BatchCritical\",\r\n {\r\n examSkillIDs: ids,\r\n status: status\r\n }\r\n )\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n updateCategory: function (ids, category) {\r\n var d = $q.defer();\r\n $http\r\n .post(\r\n apiLocation + \"/api/ExamModule/ExamSkills/BatchCategory\",\r\n {\r\n examSkillIDs: ids,\r\n category: category\r\n }\r\n )\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n save: function (skill, options) {\r\n var d = $q.defer();\r\n\r\n var method = \"POST\";\r\n var url = apiLocation + \"/api/EXSkill/\";\r\n if (!isUndefined(skill.id)) {\r\n method = \"PUT\";\r\n url += skill.id;\r\n }\r\n\r\n $http({\r\n method: method,\r\n url: url,\r\n data: {\r\n skill: skill,\r\n options: options\r\n }\r\n }).then(function (response) {\r\n d.resolve(response.data);\r\n }).catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n delete: function (id) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .delete(apiLocation + \"/api/EXSkill/\" + id, {\r\n params: {}\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n };\r\n }\r\n]);\r\n","\"use strict\";\r\n\r\nangular.module(\"licensure.services\").factory(\"EXType\", [\r\n \"$http\",\r\n \"$q\",\r\n function($http, $q) {\r\n return {\r\n get: function() {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + \"/api/ExamModule/ExamTypes\", {\r\n params: {}\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getfilter: function () {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + \"/api/ExamModule/ExamTypesFilter\", {\r\n params: {}\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n gettype: function(id) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + \"/api/ExamModule/ExamTypes/\" + id, {\r\n params: {}\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n save: function (examType) {\r\n\r\n var d = $q.defer();\r\n\r\n var method = \"POST\";\r\n var url = apiLocation + \"/api/ExamModule/ExamTypes/\";\r\n\r\n if (!isUndefined(examType.id)) {\r\n method = \"PUT\";\r\n url += examType.id;\r\n }\r\n\r\n $http({\r\n method: method,\r\n url: url,\r\n data: examType\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n delete: function(id) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .delete(apiLocation + \"/api/ExamModule/ExamTypes/\" + id, {\r\n params: {}\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n };\r\n }\r\n]);\r\n","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('FBConditions', ['$http', '$q', 'Triggers', 'FBQuestionCriteria', function ($http, $q, Triggers, FBQuestionCriteria) {\r\n var get = function (args) {\r\n var d = $q.defer();\r\n\r\n $http.get(apiLocation + '/api/fbconditions/', {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n d.resolve(null);\r\n });\r\n\r\n return d.promise;\r\n }\r\n\r\n return {\r\n get: get,\r\n\r\n getByID: function (id) {\r\n var d = $q.defer();\r\n\r\n $http.get(apiLocation + '/api/fbconditions/' + id, {\r\n params: {\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n d.resolve(null);\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n save: function (condition) {\r\n var d = $q.defer();\r\n\r\n var method = 'POST';\r\n var url = apiLocation + '/api/fbconditions/';\r\n if (!isUndefined(condition.id)) {\r\n method = 'PUT';\r\n url += condition.id;\r\n }\r\n\r\n $http({\r\n method: method,\r\n url: url,\r\n data: {\r\n condition: condition\r\n }\r\n }).then(function (response) {\r\n d.resolve(response.data);\r\n }).catch(function (response) {\r\n // handle error\r\n d.resolve(null);\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n delete: function (id) {\r\n var d = $q.defer();\r\n\r\n $http.delete(apiLocation + '/api/fbconditions/' + id, {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n evaluate: function (formID, responseID, licenseRequestID) {\r\n var d = $q.defer();\r\n\r\n get({ formID: formID, responseID: responseID }).then(function (conditions) {\r\n if (conditions != null) {\r\n var success = true;\r\n var hitCondition = false;\r\n conditions.forEach(function(condition) {\r\n var result = FBQuestionCriteria.evaluateCondition(condition);\r\n if (result != null) {\r\n if (result) {\r\n hitCondition = true;\r\n Triggers.fire({\r\n name: condition.trigger_name,\r\n licenseRequestID: licenseRequestID,\r\n triggerID: condition.trigger_id\r\n });\r\n }\r\n } else {\r\n success = false;\r\n }\r\n });\r\n if (!hitCondition) {\r\n // Fired if no conditions are met\r\n Triggers.fire({\r\n name: \"Form Conditions Passed Successfully\",\r\n licenseRequestID: licenseRequestID\r\n });\r\n }\r\n d.resolve(success);\r\n }\r\n else {\r\n d.resolve(false);\r\n }\r\n })\r\n\r\n return d.promise;\r\n }\r\n }\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('FBElements', ['$http', '$q', function ($http, $q) {\r\n return {\r\n get: function (args) {\r\n var d = $q.defer();\r\n\r\n $http.get(apiLocation + '/api/FBElements', {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n }\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('FBFormPositionPermissions', ['$http', '$q', function ($http, $q) {\r\n var get = function (id) {\r\n var d = $q.defer();\r\n\r\n $http.get(apiLocation + '/api/fbformpositionpermissions', {\r\n params: {\r\n formID: id\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n\r\n var save = function (formID, permission) {\r\n var d = $q.defer();\r\n\r\n var method = 'POST';\r\n var url = apiLocation + '/api/fbformpositionpermissions/';\r\n if (!isUndefined(permission.id)) {\r\n method = 'PUT';\r\n url += permission.id;\r\n }\r\n\r\n $http({\r\n method: method,\r\n url: url,\r\n data: {\r\n formID: formID,\r\n form_position_permission: permission\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n\r\n return {\r\n get: get,\r\n\r\n getByCode: function (code) {\r\n var d = $q.defer();\r\n \r\n get(code).then(function (types) {\r\n if (types.length > 0) {\r\n d.resolve(types[0]);\r\n }\r\n else {\r\n d.resolve(null);\r\n }\r\n })\r\n\r\n return d.promise;\r\n },\r\n\r\n save: save\r\n }\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('FBFormTypes', ['$http', '$q', function ($http, $q) {\r\n var get = function (code) {\r\n var d = $q.defer();\r\n\r\n $http.get(apiLocation + '/api/fbformtypes', {\r\n params: {\r\n code: code\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n\r\n return {\r\n get: get,\r\n\r\n getByCode: function (code) {\r\n var d = $q.defer();\r\n \r\n get(code).then(function (types) {\r\n if (types.length > 0) {\r\n d.resolve(types[0]);\r\n }\r\n else {\r\n d.resolve(null);\r\n }\r\n })\r\n\r\n return d.promise;\r\n }\r\n }\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('FBForms', ['$http', '$q', 'Documents', function ($http, $q, Documents) {\r\n return {\r\n get: function (args) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/fbforms', {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getByID: function (id) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/fbforms/' + id, {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getAccess: function (id) {\r\n var d = $q.defer();\r\n\r\n $http.get(apiLocation + '/api/fbforms/getAccess', {\r\n params: {\r\n formID: id\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n save: function (args, attachments) {\r\n var d = $q.defer();\r\n var promises = [];\r\n\r\n if (args.form == null) {\r\n d.resolve(null);\r\n }\r\n\r\n if (attachments != null) {\r\n attachments.forEach(function (attachment) {\r\n promises.push(Documents.upload(attachment).then(function (document) {\r\n if (document != null) {\r\n attachment.document_id = document.id;\r\n attachment.document_code = document.code;\r\n attachment.file = null;\r\n }\r\n }))\r\n })\r\n }\r\n\r\n var method = 'POST';\r\n var url = apiLocation + '/api/fbforms/';\r\n if (!isUndefined(args.form.id) && !args.copy) {\r\n method = 'PUT'\r\n url += args.form.id\r\n }\r\n\r\n $q.all(promises).then(function () {\r\n $http({\r\n method: method,\r\n url: url,\r\n data: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n }).catch(function (response) {\r\n // handle error\r\n }); \r\n\r\n return d.promise;\r\n },\r\n\r\n saveAccess: function (formID, access) {\r\n var d = $q.defer();\r\n\r\n var url = apiLocation + '/api/fbforms/saveAccess';\r\n $http({\r\n method: 'POST',\r\n url: url,\r\n data: {\r\n form_id: formID,\r\n applicant_access: access.applicant_access\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n delete: function (id) {\r\n var d = $q.defer();\r\n\r\n $http.delete(apiLocation + '/api/fbforms/' + id, {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n createView: function (id) {\r\n var d = $q.defer();\r\n\r\n var data = {\r\n formID: id\r\n };\r\n\r\n $http({\r\n method: 'POST',\r\n url: apiLocation + '/api/fbforms/createview',\r\n data: data\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n d.resolve(null);\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getReimbursementRules: function (form_id) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/fbforms/reimbursementrules/' + form_id, {\r\n\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n }\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('FBPackages', ['$http', '$q', function ($http, $q) {\r\n return {\r\n get: function (args) {\r\n var d = $q.defer();\r\n\r\n $http.get(apiLocation + '/api/FBPackages', {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getByID: function (id) {\r\n var d = $q.defer();\r\n\r\n $http.get(apiLocation + '/api/FBPackages/' + id, {\r\n params: {\r\n \r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n save: function (args) {\r\n var d = $q.defer();\r\n\r\n if (args.form_package == null) {\r\n d.resolve(null);\r\n }\r\n else {\r\n args.forms = args.form_package.forms\r\n }\r\n\r\n var method = 'POST';\r\n var url = apiLocation + '/api/FBPackages/';\r\n if (!isUndefined(args.form_package.id)) {\r\n method = 'PUT'\r\n url += args.form_package.id\r\n }\r\n\r\n $http({\r\n method: method,\r\n url: url,\r\n data: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n delete: function (id) {\r\n var d = $q.defer();\r\n\r\n $http.delete(apiLocation + '/api/FBPackages/' + id, {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n }\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('FBQuestionCriteria', [function () {\r\n var isNumeric = function (n) {\r\n return !isNaN(parseFloat(n)) && isFinite(n);\r\n }\r\n\r\n var escapeString = function (str) {\r\n var result = \"\";\r\n if (str == null) {\r\n return result;\r\n }\r\n result = str.replace(/'/g, \"'\");\r\n result = result.replace(/\\\\/g, \"\\\\\\\\\");\r\n result = result.replace(/\"/g, \""\");\r\n return result;\r\n }\r\n\r\n return {\r\n evaluateCondition: function (condition) {\r\n // Evaluate the condition\r\n var equation = \"\";\r\n var cIndex = 0;\r\n condition.question_criteria.forEach(function (criterion) {\r\n if (cIndex > 0) {\r\n if (criterion.and_flag) {\r\n equation += ' && ';\r\n } else {\r\n equation += ' || ';\r\n }\r\n }\r\n\r\n for (var i = 0; i < criterion.left_parenthesis; i++) {\r\n equation += '(';\r\n }\r\n\r\n if (criterion.question != null) {\r\n var answerStatement = '';\r\n if (criterion.question.answers == null || criterion.question.answers.length == 0) {\r\n //No answers, create one with null value. \r\n //Mostly likely scenario is when the criterion is looking at a conditional question that isn't \"enabled\"\r\n //Work Item 159245, we also see this when the condition is from a question on an form that has not been filled out\r\n criterion.question.answers = [];\r\n criterion.question.answers.push({ value: null });\r\n }\r\n var aIndex = 0;\r\n\r\n // build answers (could be multiple)\r\n criterion.question.answers.forEach(function (answer) {\r\n var validDate = false;\r\n var value = answer.value;\r\n var show_value = answer.show_value;\r\n\r\n if (criterion.value == '@today') {\r\n criterion.value = new Date();\r\n }\r\n\r\n if (isValidDate(criterion.value)) {\r\n validDate = true;\r\n criterion.value = criterion.value.setHours(0, 0, 0, 0);\r\n }\r\n\r\n if (isValidDate(value)) {\r\n value = value.setHours(0, 0, 0, 0);\r\n }\r\n\r\n if (value == null && answer.result_set_id != null) {\r\n value = answer.result_set_id;\r\n }\r\n\r\n if (aIndex > 0) {\r\n answerStatement += ' || ';\r\n }\r\n\r\n //Work Item 159245: the scenario where we are comparing @today to a form question that has not been answered\r\n //can end of looking like ('1591851600000'>null)\r\n //and since a non-null String value is always greater than a null value\r\n //this evaluates to true, resulting in getting a charge based on not filling out a qustion\r\n //As a solution, check if the criterion.value is a valid date and the value to compare on is null, return false\r\n //This is the most surgical/non-invasive solution at this time\r\n if (validDate == true && value == null) {\r\n answerStatement = 'false';\r\n } else {\r\n if (criterion.question.name != null && criterion.value != null && criterion.question.name == \"Course\" && criterion.operator == 'like' && show_value != null) {\r\n\r\n if (show_value.toString().toLowerCase().includes(criterion.value.toString().toLowerCase())) {\r\n answerStatement += 'true';\r\n } else {\r\n answerStatement += 'false';\r\n }\r\n } else {\r\n answerStatement += ((criterion.value != null && criterion.value != 'null') ? \"'\" + escapeString(criterion.value.toString().toLowerCase()) + \"'\" : 'null');\r\n if (criterion.operator == '=') {\r\n answerStatement += '==';\r\n } else if (criterion.operator == '<>') {\r\n answerStatement += '!=';\r\n } else if (criterion.operator == '>') { // setup field > value. we are doing value < field. so need to flip\r\n answerStatement += '<';\r\n } else if (criterion.operator == '<') {\r\n answerStatement += '>';\r\n } else {\r\n answerStatement += criterion.operator;\r\n }\r\n answerStatement += ((value != null && value != 'null') ? \"'\" + escapeString(value.toString().toLowerCase()) + \"'\" : 'null');\r\n }\r\n }\r\n\r\n // handle comma string answer\r\n if (value != null && angular.isString(value) && value.indexOf(',') > 0) {\r\n value.split(',').forEach(function (a) {\r\n answerStatement += ' || ';\r\n\r\n answerStatement += (criterion.value != null ? \"'\" + escapeString(criterion.value.toString().toLowerCase()) + \"'\" : 'null');\r\n if (criterion.operator == '=') {\r\n answerStatement += '==';\r\n } else if (criterion.operator == '<>') {\r\n answerStatement += '!=';\r\n } else if (criterion.operator == '>') { // setup field > value. we are doing value < field. so need to flip\r\n answerStatement += '<';\r\n } else if (criterion.operator == '<') {\r\n answerStatement += '>';\r\n } else {\r\n answerStatement += criterion.operator;\r\n }\r\n\r\n if (angular.isObject(a)) {\r\n answerStatement += (a != null ? \"'\" + a.id.toString().toLowerCase() + \"'\" : 'null');\r\n } else {\r\n answerStatement += (a != null ? \"'\" + escapeString(a.toString().toLowerCase()) + \"'\" : 'null');\r\n }\r\n })\r\n }\r\n\r\n // check null/empty string\r\n if (answerStatement == '') {\r\n [null, ''].forEach(function (a, aiIndex) {\r\n if (aIndex > 0 || aiIndex > 0) {\r\n answerStatement += ' || ';\r\n }\r\n\r\n answerStatement += (criterion.value != null ? \"'\" + escapeString(criterion.value.toString().toLowerCase()) + \"'\" : 'null');\r\n if (criterion.operator == '=') {\r\n answerStatement += '==';\r\n } else if (criterion.operator == '<>') {\r\n answerStatement += '!=';\r\n } else if (criterion.operator == '>') { // setup field > value. we are doing value < field. so need to flip\r\n answerStatement += '<';\r\n } else if (criterion.operator == '<') {\r\n answerStatement += '>';\r\n } else {\r\n answerStatement += criterion.operator;\r\n }\r\n\r\n answerStatement += (a != null ? \"'\" + a + \"'\" : 'null');\r\n })\r\n }\r\n\r\n aIndex++;\r\n })\r\n } else {\r\n answerStatement = 'false';\r\n }\r\n\r\n if (answerStatement != '') {\r\n equation += '(' + answerStatement + ')';\r\n }\r\n\r\n for (var i = 0; i < criterion.right_parenthesis; i++) {\r\n equation += ')';\r\n }\r\n\r\n cIndex++;\r\n });\r\n if (equation.indexOf(\" && \") == 0) {\r\n equation = equation.replace(\" && \", \"\");\r\n }\r\n if (equation.indexOf(\" || \") == 0) {\r\n equation = equation.replace(\" || \", \"\");\r\n }\r\n\r\n try {\r\n var result = equation != '' && eval(equation);\r\n return result;\r\n } catch (e) {\r\n console.log(e);\r\n return null;\r\n }\r\n }\r\n }\r\n }])\r\n ;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('FBQuestionTypes', ['$http', '$q', function ($http, $q) {\r\n return {\r\n get: function (formID) {\r\n var d = $q.defer();\r\n\r\n $http.get(apiLocation + '/api/FBQuestionTypes', {\r\n params: {\r\n formID: formID\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n \r\n return d.promise;\r\n }\r\n }\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('FBQuestions', ['$http', '$q', function ($http, $q) {\r\n return {\r\n get: function (args) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/fbquestions/', {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getByID: function (id) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/fbquestions/' + id, {\r\n params: {\r\n \r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n }\r\n }])\r\n;","\"use strict\";\r\n\r\nangular.module(\"licensure.services\").factory(\"FBResponses\", [\r\n \"$http\",\r\n \"$q\",\r\n \"$rootScope\",\r\n \"$compile\",\r\n \"Documents\",\r\n \"Upload\",\r\n \"LicenseRequestApplicationTypes\",\r\n \"LicenseRequestSupplementalTrainingTrainings\",\r\n \"ServiceUserTrainings\",\r\n \"ServiceUserLongevities\",\r\n \"Logger\",\r\n \"Clinicians\",\r\n \"VoucherPay\",\r\n function (\r\n $http,\r\n $q,\r\n $rootScope,\r\n $compile,\r\n Documents,\r\n Upload,\r\n LicenseRequestApplicationTypes,\r\n LicenseRequestSupplementalTrainingTrainings,\r\n ServiceUserTrainings,\r\n ServiceUserLongevities,\r\n Logger,\r\n Clinicians,\r\n VoucherPay\r\n ) {\r\n var save = function (response, checklistID, saveAnswers, getLess) {\r\n var d = $q.defer();\r\n\r\n var method = \"POST\";\r\n var url = apiLocation + \"/api/fbresponses/\";\r\n if (!isUndefined(response.id)) {\r\n method = \"PUT\";\r\n url += response.id;\r\n }\r\n\r\n if (!isUndefined(response.fbFormId)) {\r\n response.form_id = response.fbFormId;\r\n }\r\n\r\n $http({\r\n method: method,\r\n url: url,\r\n data: {\r\n response: response,\r\n checklistID: checklistID,\r\n saveAnswers: saveAnswers,\r\n getLess: getLess\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n Logger.logAngularApiErrors(response.data, response.status, response.config);\r\n d.resolve(null);\r\n });\r\n\r\n return d.promise;\r\n };\r\n\r\n var saveApplicationTypeID = function (\r\n applicationTypeID,\r\n licenseRequestID\r\n ) {\r\n var d = $q.defer();\r\n\r\n var url =\r\n apiLocation + \"/api/LicenseRequests/saveApplicationTypeID\";\r\n $http({\r\n method: \"POST\",\r\n url: url,\r\n data: {\r\n application_type_id: applicationTypeID,\r\n license_request_id: licenseRequestID\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n d.resolve(null);\r\n });\r\n\r\n return d.promise;\r\n };\r\n\r\n var getComponentAnswers = function (\r\n response,\r\n component,\r\n parentGroupID,\r\n parentConditionsMet,\r\n parentHasConditions,\r\n promises,\r\n object_id\r\n ) {\r\n var d = $q.defer();\r\n var root = false;\r\n if (promises == null) {\r\n promises = [];\r\n root = true;\r\n }\r\n\r\n if (\r\n component.component_type != null &&\r\n component.component_type.code == \"form_element\"\r\n ) {\r\n if (\r\n component.element_code == \"application_type\" &&\r\n component.elementAnswer != null &&\r\n typeof component.elementAnswer === \"object\"\r\n ) {\r\n promises.push(\r\n LicenseRequestApplicationTypes.saveElement(\r\n component.elementAnswer,\r\n object_id\r\n )\r\n );\r\n } else if (\r\n component.element_code == \"supplemental_training\" &&\r\n response.completed_on != null &&\r\n response.progress == 2\r\n ) {\r\n //When submitting the form, log the current dates used for education verification\r\n promises.push(\r\n LicenseRequestSupplementalTrainingTrainings.logSupplementalDates(\r\n component.response_id,\r\n response.license_id,\r\n response.user_id\r\n )\r\n );\r\n } else if (\r\n component.element_code == \"training_reimbursement\" &&\r\n component.elementAnswer != null &&\r\n angular.isArray(component.elementAnswer)\r\n ) {\r\n promises.push(\r\n ServiceUserTrainings.saveElement(\r\n component.elementAnswer,\r\n object_id\r\n )\r\n );\r\n } else if (\r\n component.element_code == \"longevity_credits_approval\" &&\r\n component.elementAnswer != null &&\r\n angular.isArray(component.elementAnswer)\r\n ) {\r\n promises.push(\r\n ServiceUserLongevities.saveElement(\r\n component.elementAnswer,\r\n object_id\r\n )\r\n );\r\n } else if (\r\n component.element_code == \"clinicians_import\" &&\r\n component.elementAnswer != null &&\r\n angular.isArray(component.elementAnswer)\r\n ) {\r\n promises.push(\r\n Clinicians.saveElement(\r\n component.elementAnswer,\r\n object_id,\r\n response.id,\r\n response.completed_on != null ? true : false\r\n )\r\n );\r\n component.elementAnswer[0].saved = true;\r\n } else if (\r\n component.element_code == \"voucher_pay\" &&\r\n component.elementAnswer != null &&\r\n angular.isArray(component.elementAnswer)\r\n ) {\r\n promises.push(\r\n VoucherPay.saveElement(\r\n component.elementAnswer,\r\n response.license_request_id,\r\n response.completed_on != null ? true : false\r\n )\r\n );\r\n }\r\n } else {\r\n var sort_order = 1;\r\n component.groups.forEach(function (group, gIndex) {\r\n group.sort_order = sort_order++;\r\n group.parent_group_id = parentGroupID;\r\n\r\n var saveGroup = angular.copy(group);\r\n saveGroup.questions = null;\r\n saveGroup.answers = [];\r\n group.questions.forEach(function (question) {\r\n if (\r\n question.data_point_code ==\r\n \"certification_application_type\" &&\r\n question.answer != null &&\r\n question.answer.value != null\r\n ) {\r\n promises.push(\r\n saveApplicationTypeID(\r\n question.answer.value,\r\n object_id\r\n )\r\n );\r\n }\r\n\r\n var answer = angular.copy(question.answer);\r\n\r\n // if question is of type date, we want to applyTimeZone so that when we save FB_Answer and convert from a JSON Date to a C# String, we cancel out the\r\n // offset\r\n if (question.question_type.code == \"date\") {\r\n if (answer.value) {\r\n answer.value = answer.value.applyTimeZone(); // usually this is used only for display\r\n }\r\n }\r\n\r\n if (angular.isArray(answer.value)) {\r\n var value = null;\r\n\r\n answer.value.forEach(function (val) {\r\n var v = \"\";\r\n if (angular.isObject(val)) {\r\n v = val.id;\r\n } else {\r\n v = val;\r\n }\r\n\r\n if (value == null) {\r\n value = v;\r\n } else {\r\n value += \",\" + v;\r\n }\r\n });\r\n\r\n answer.value = value;\r\n }\r\n\r\n // Document Save\r\n if (\r\n answer.file_updated &&\r\n answer.file_content !== null &&\r\n answer.file_name !== null &&\r\n answer.document_id === null &&\r\n answer.document_saved === undefined\r\n ) {\r\n promises.push(\r\n Documents.upload(\r\n {\r\n file: Upload.dataUrltoBlob(\r\n answer.file_content,\r\n answer.file_name\r\n ),\r\n name: answer.document_name,\r\n description:\r\n answer.document_description,\r\n document_type_id: answer.document_type\r\n },\r\n object_id\r\n ).then(function (document) {\r\n if (document == null) {\r\n //Something errored in the backend\r\n return { error: true, document_name: answer.document_name || answer.file_name };\r\n }\r\n else {\r\n if (answer.document_id) {\r\n // delete the old document\r\n promises.push(\r\n Documents.delete(\r\n angular.copy(answer.document_id)\r\n ).then(function (result) {\r\n console.log(result);\r\n })\r\n );\r\n }\r\n answer.document_id = document.id;\r\n question.answer.document_id = document.id;\r\n answer.document_code = document.code;\r\n question.answer.document_saved = true;\r\n }\r\n })\r\n );\r\n } else if (answer.document_id !== null && answer.document_saved !== true) {\r\n promises.push(\r\n Documents.save(\r\n {\r\n id: answer.document_id,\r\n name: answer.document_name,\r\n description:\r\n answer.document_description,\r\n document_type_id: answer.document_type,\r\n locked: answer.document_locked != null ? answer.document_locked : false\r\n },\r\n false\r\n )\r\n );\r\n question.answer.document_saved = true;\r\n }\r\n\r\n answer.file_content = null;\r\n\r\n saveGroup.answers.push(answer);\r\n\r\n question.sub_components.forEach(function (subComponent) {\r\n getComponentAnswers(\r\n response,\r\n subComponent,\r\n group.id,\r\n component.conditions_met,\r\n component.component_conditions.length > 0,\r\n promises,\r\n object_id\r\n );\r\n });\r\n });\r\n // clear out values of components that didn't meet conditions\r\n if (\r\n !(\r\n (component.component_conditions.length > 0 &&\r\n component.conditions_met == false) ||\r\n (parentHasConditions &&\r\n parentConditionsMet == false)\r\n )\r\n ) {\r\n response.groups.push(saveGroup);\r\n }\r\n });\r\n }\r\n\r\n if (root) {\r\n $q.all(promises).then(function (results) {\r\n d.resolve(results);\r\n }).catch(function (response) {\r\n // handle error\r\n });\r\n } else {\r\n d.resolve();\r\n }\r\n\r\n return d.promise;\r\n };\r\n\r\n var generatePDFHTML = function (form, parameters) {\r\n var d = $q.defer();\r\n var pdfScope = $rootScope.$new(true);\r\n pdfScope.form = form;\r\n pdfScope.form.portalURL = $rootScope.portalURL;\r\n pdfScope.parameters = parameters;\r\n parameters.display_changed_answers = form.display_changed_answers;\r\n\r\n var element = $compile(\r\n ''\r\n )(pdfScope);\r\n\r\n var pdfListener = $rootScope.$on(\"pdf:finish\", function () {\r\n //console.log('3 fb-response-service generatePDFHTML pdf:finish');\r\n pdfListener();\r\n d.resolve(element != null ? element.html() : null);\r\n element.off();\r\n element.remove();\r\n pdfScope.$destroy();\r\n pdfScope = null;\r\n });\r\n\r\n pdfScope.$on(\"$destroy\", function () {\r\n //console.log('4 fb-response-service generatePDFHTML pdfScope $destroy event called')\r\n pdfListener();\r\n if (pdfScope) {\r\n pdfScope.$destroy();\r\n pdfScope.inspection = null;\r\n pdfScope = null;\r\n }\r\n if (element) {\r\n angular.element(element).off();\r\n angular.element(element).remove();\r\n element = null;\r\n }\r\n });\r\n\r\n return d.promise;\r\n };\r\n\r\n return {\r\n getByID: function (id, previewFormID, preview) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + \"/api/fbresponses/\" + id, {\r\n params: {\r\n previewFormID: previewFormID,\r\n preview: preview\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n save: save,\r\n\r\n saveByForm: function (\r\n response,\r\n object_id,\r\n page_count,\r\n getLess,\r\n skipLogging,\r\n dont_save\r\n ) {\r\n var d = $q.defer();\r\n var promises = [];\r\n\r\n var tempResponse = Object.assign({}, response); // Soft copy\r\n delete tempResponse.form.the_form; // This object has scope vars & cannot be copied, delete that object to be copied\r\n var saveResponse = angular.copy(tempResponse);\r\n\r\n saveResponse.form = null;\r\n saveResponse.groups = [];\r\n saveResponse.pages = [];\r\n response.form.pages.forEach(function (page, index) {\r\n if (page_count == null || index <= page_count) {\r\n saveResponse.pages.push({ id: page.id, active: page.tab_active });\r\n page.sections.forEach(function (section) {\r\n section.components.forEach(function (component) {\r\n promises.push(\r\n getComponentAnswers(\r\n saveResponse,\r\n component,\r\n null,\r\n true,\r\n false,\r\n null,\r\n object_id\r\n )\r\n );\r\n });\r\n });\r\n }\r\n });\r\n\r\n $q.all(promises).then(function (results) {\r\n\r\n if (dont_save) {\r\n d.resolve(saveResponse);\r\n } else {\r\n save(saveResponse, null, null, getLess).then(function (\r\n data\r\n ) {\r\n saveResponse = null;\r\n var parsedResults = results != null ? results.filter(function (result) { return (result != null); }).flat() : null;\r\n if (parsedResults != null && parsedResults.length > 0 && data != null && data != false) {\r\n data.documentErrors = parsedResults.filter(function (result) { return (result != null && result.error == true) });\r\n }\r\n\r\n if (skipLogging || data == false) {\r\n d.resolve(data);\r\n } else {\r\n Logger.logFormProgress(\r\n \"Saved Form\",\r\n response.id\r\n );\r\n d.resolve(data);\r\n }\r\n });\r\n }\r\n }).catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n generatePDF: function (\r\n response_obj,\r\n object_id,\r\n parameters,\r\n skipLogging\r\n ) {\r\n var d = $q.defer();\r\n\r\n generatePDFHTML(response_obj.form, parameters).then(function (html) {\r\n $http\r\n .post(apiLocation + \"/api/FBResponses/generatepdf\", {\r\n html: html,\r\n objectID: object_id,\r\n responseID: response_obj.id,\r\n licenseRequestID: response_obj.license_request_id,\r\n formID: response_obj.form_id\r\n })\r\n .then(function (response) {\r\n if (skipLogging) {\r\n d.resolve(response.data);\r\n } else {\r\n //console.log('7 fb-response-serivce generatePDF success');\r\n Logger.logFormProgress(\r\n \"Generated PDF\",\r\n response_obj.id\r\n );\r\n d.resolve(response.data);\r\n }\r\n })\r\n .catch(function (response) {\r\n if (skipLogging) {\r\n console.log(response.data);\r\n d.resolve(null);\r\n } else {\r\n Logger.logFormProgress(\r\n \"Error Generating PDF\" + response.data,\r\n response_obj.id\r\n );\r\n console.log(data);\r\n d.resolve(null);\r\n }\r\n });\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getPDFFileContent: function (form, parameters) {\r\n var d = $q.defer();\r\n\r\n generatePDFHTML(form, parameters).then(function (html) {\r\n $http\r\n .post(\r\n apiLocation + \"/api/FBResponses/getPDFFileContent\",\r\n {\r\n html: html,\r\n responseID: parameters.response_id,\r\n licenseRequestID: parameters.license_request_id,\r\n name: parameters.document_name,\r\n formID: form.id\r\n }\r\n )\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n populateGroup: function (dataSetCode, coreID, serviceID, single) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + \"/api/FBResponses/populateGroup\", {\r\n params: {\r\n data_set_code: dataSetCode,\r\n core_id: coreID,\r\n service_id: serviceID,\r\n single_group: single\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n d.resolve(null);\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n clearSignatures: function (id) {\r\n var d = $q.defer();\r\n\r\n var data = {\r\n responseID: id\r\n };\r\n\r\n $http({\r\n method: \"POST\",\r\n url: apiLocation + \"/api/fbresponses/clearsignatures\",\r\n data: data\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n d.resolve(null);\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n reopen: function (id, licenseRequestID, skipLogging) {\r\n var d = $q.defer();\r\n\r\n var data = {\r\n responseID: id,\r\n licenseRequestID: licenseRequestID\r\n };\r\n\r\n $http({\r\n method: \"POST\",\r\n url: apiLocation + \"/api/fbresponses/reopen\",\r\n data: data\r\n })\r\n .then(function (response) {\r\n if (skipLogging) {\r\n d.resolve(response.data);\r\n } else {\r\n Logger.logFormProgress(\"Reopened form\", id);\r\n d.resolve(response.data);\r\n }\r\n })\r\n .catch(function (response) {\r\n if (skipLogging) {\r\n d.resolve(null);\r\n } else {\r\n Logger.logFormProgress(\r\n \"Error Reopening form: \" + response.data,\r\n id\r\n );\r\n d.resolve(null);\r\n }\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n delete: function (id, skipLogging) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .delete(apiLocation + \"/api/fbresponses/\" + id, {\r\n params: {}\r\n })\r\n .then(function (response) {\r\n if (skipLogging) {\r\n d.resolve(response.data);\r\n } else {\r\n Logger.logFormProgress(\"Deleted\", id);\r\n d.resolve(response.data);\r\n }\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n d.resolve(null);\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getServiceApplicationVehicles: function (licenseRequestIDs) {\r\n var d = $q.defer();\r\n\r\n $http.post(apiLocation + \"/api/fbresponses/GetServiceApplicationVehicles\", {\r\n licenseRequestIDs: licenseRequestIDs\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n d.resolve(null);\r\n });\r\n\r\n return d.promise;\r\n },\r\n };\r\n }\r\n]);","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('FileTypes', ['$http', '$q', function ($http, $q) {\r\n var get = function (enterprise) {\r\n var d = $q.defer();\r\n\r\n $http.get(apiLocation + '/api/FileTypes', {\r\n params: {\r\n enterprise: enterprise\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n\r\n return {\r\n get: get,\r\n\r\n getByEnterprise: function () {\r\n return get(true);\r\n }\r\n }\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('FIPSLookup', ['$http', '$q', function ($http, $q) {\r\n return {\r\n get: function (args) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/fipslookup', {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getByPostalCode: function (postalCode) {\r\n var d = $q.defer();\r\n\r\n if (postalCode.length > 0) {\r\n $http\r\n .get(apiLocation + '/api/fipslookup', {\r\n params: {\r\n postalCode: postalCode\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n } else {\r\n d.resolve([]);\r\n }\r\n\r\n return d.promise;\r\n }\r\n }\r\n }])\r\n;","\"use strict\";\r\n\r\nangular.module(\"licensure.services\").factory(\"FireDrill\", [\r\n \"$http\",\r\n \"$q\",\r\n function ($http, $q) {\r\n return {\r\n getPublicSchoolSystems: function () {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + \"/api/Core/PublicFireDrillSchoolSystems\", {\r\n params: {}\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getPublicSchools: function (params) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + \"/api/Core/PublicFireDrillSchools\", {\r\n params: params\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getPublicFireDrills: function (params) {\r\n var d = $q.defer();\r\n $http\r\n .get(apiLocation + \"/api/Core/PublicFireDrills\", {\r\n params: params\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getPublicYears: function (params) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + \"/api/Core/PublicFireDrillYears\", {\r\n params: params\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n };\r\n }\r\n]);\r\n","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('GNISCountyCodes', ['$http', '$q', function ($http, $q) {\r\n return {\r\n get: function () {\r\n var d = $q.defer();\r\n\r\n $http.get(apiLocation + '/api/gniscountycodes', {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n }\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('GNISPostalCodes', ['$http', '$q', function ($http, $q) {\r\n return {\r\n get: function () {\r\n var d = $q.defer();\r\n\r\n $http.get(apiLocation + '/api/gnispostalcodes', {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n }\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('GNIS', ['$http', '$q', function ($http, $q) {\r\n return {\r\n get: function () {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/gnis', {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n }\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('GNISStateCodes', ['$http', '$q', function ($http, $q) {\r\n return {\r\n get: function (args) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/gnisstatecodes', {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n }\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('Hospitals', ['$http', '$q', function ($http, $q) {\r\n return {\r\n get: function () {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/hospitals', {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n }\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('InspectionAutoNumbers', ['$http', '$q', function ($http, $q) {\r\n return {\r\n get: function () {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/InspectionAutoNumbers', {\r\n params: {\r\n \r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n save: function (auto_number) {\r\n var d = $q.defer();\r\n\r\n var method = 'POST';\r\n var url = apiLocation + '/api/InspectionAutoNumbers/';\r\n if (!isUndefined(auto_number.id)) {\r\n method = 'PUT'\r\n url += auto_number.id\r\n }\r\n\r\n $http({\r\n method: method,\r\n url: url,\r\n data: {\r\n auto_number: auto_number\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n }\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('IntegrationMethods', ['$http', '$q', function ($http, $q) {\r\n return {\r\n get: function (args) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/integrationmethods', {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n }\r\n }])\r\n;\r\n","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('IPChecklists', ['$http', '$q', '$rootScope', '$timeout', '$compile', 'FBResponses', 'Documents', 'IPComment', 'Logger', function ($http, $q, $rootScope, $timeout, $compile, FBResponses, Documents, IPComment, Logger) {\r\n\r\n return {\r\n getByID: function (id) {\r\n var d = $q.defer();\r\n\r\n $http.get(apiLocation + '/api/IPChecklists/' + id, {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n save: function (checklist, inspection_id) {\r\n var d = $q.defer();\r\n\r\n var method = 'POST';\r\n var url = apiLocation + '/api/IPChecklists/';\r\n if (!isUndefined(checklist.id)) {\r\n method = 'PUT';\r\n url += checklist.id;\r\n }\r\n\r\n // need to run the saveByForm function to do some processing to the form answers, but don't want it to actually save in the process (set dont_save to true)\r\n FBResponses.saveByForm(checklist.response, inspection_id, null, null, true, true).then(function (processedResponse) {\r\n if (processedResponse != null) {\r\n checklist.response = processedResponse;\r\n\r\n $http({\r\n method: method,\r\n url: url,\r\n data: {\r\n checklist: checklist,\r\n inspection_id: inspection_id\r\n }\r\n }).then(function (response) {\r\n d.resolve(response.data);\r\n }).catch(function (response) {\r\n Logger.logAngularApiErrors(response.data, response.status, response.config);\r\n d.resolve(null);\r\n });\r\n }\r\n else {\r\n d.resolve(null);\r\n }\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n updateBatch: function (checklists) {\r\n var d = $q.defer();\r\n\r\n var promises = [];\r\n\r\n var method = 'POST';\r\n var url = apiLocation + '/api/IPChecklists/saveBatch';\r\n\r\n // shouldn't do it this way, try going back to the start of the batch function and handling the creates and updates separately\r\n var isUpdate = checklists.every(function (checklist) {\r\n return !isUndefined(checklist.id);\r\n });\r\n\r\n if (isUpdate) {\r\n method = 'PUT';\r\n url = apiLocation + '/api/IPChecklists/updateBatch';\r\n }\r\n\r\n $http({\r\n method: method,\r\n url: url,\r\n data: {\r\n checklists: checklists\r\n }\r\n }).then(function (response) {\r\n d.resolve(response.data);\r\n }).catch(function (response) {\r\n Logger.logAngularApiErrors(response.data, response.status, response.config);\r\n d.resolve(null);\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getDocumentsAndComments: function (inspection) {\r\n var d = $q.defer();\r\n\r\n Documents.getDocumentsByInspection(inspection.id).then(function (documents) {\r\n if (document != null) {\r\n inspection.documents = documents;\r\n\r\n IPComment.listIPCommentAsync(inspection.id).then(function (comments) {\r\n if (comments != null) {\r\n inspection.comments = comments;\r\n d.resolve(inspection);\r\n }\r\n else {\r\n d.resolve(null);\r\n }\r\n });\r\n\r\n }\r\n else {\r\n d.resolve(null);\r\n }\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n generatingPDF: function (inspection) {\r\n var d = $q.defer();\r\n var pdfScope = $rootScope.$new(true, $rootScope);\r\n pdfScope.inspection = angular.copy(inspection);\r\n var element = $compile('')(pdfScope);\r\n\r\n; pdfScope.$on('$destroy', function () {\r\n inspection = null;\r\n $timeout.cancel(timer);\r\n if (pdfScope) {\r\n pdfScope.$destroy();\r\n pdfScope.inspection = null;\r\n pdfScope = null;\r\n }\r\n if (element) {\r\n angular.element(element).off();\r\n angular.element(element).remove();\r\n element = null;\r\n }\r\n });\r\n var timer = $timeout(function () {\r\n $http.post(apiLocation + '/api/IPChecklists/generatepdf', {\r\n html: element.html(),\r\n checklistID: inspection.checklist.id,\r\n inspectionID: inspection.id,\r\n visitID: inspection.visit_id,\r\n name: inspection.number,\r\n outcome: inspection.outcome,\r\n signatureTypeInPerson: inspection.checklist.signature_type_in_person\r\n })\r\n .then(function (response) {\r\n pdfScope.inspection = null;\r\n angular.element(element).off();\r\n angular.element(element).remove();\r\n pdfScope.$destroy();\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error:\r\n pdfScope.inspection = null;\r\n angular.element(element).off();\r\n angular.element(element).remove();\r\n pdfScope.$destroy();\r\n d.resolve(false);\r\n\r\n });\r\n }, 50); //Delayed 50 milliseconds before excuting the function. \r\n\r\n return d.promise;\r\n },\r\n\r\n //The `generatePDF` method is still used by the submission of checklists in the public portal.\r\n generatePDF: function (inspection) {\r\n var d = $q.defer();\r\n\r\n Documents.getDocumentsByInspection(inspection.id).then(function (documents) {\r\n inspection.documents = documents;\r\n\r\n IPComment.listIPCommentAsync(inspection.id).then(function (comments) {\r\n inspection.comments = comments;\r\n\r\n var pdfScope = $rootScope.$new(true, $rootScope);\r\n pdfScope.inspection = angular.copy(inspection);\r\n var element = $compile('')(pdfScope);\r\n\r\n pdfScope.$on('$destroy', function () {\r\n inspection = null;\r\n $timeout.cancel(timer);\r\n if (pdfScope) {\r\n pdfScope.$destroy();\r\n pdfScope.inspection = null;\r\n pdfScope = null;\r\n }\r\n if (element) {\r\n angular.element(element).off();\r\n angular.element(element).remove();\r\n element = null;\r\n }\r\n });\r\n var timer = $timeout(function () {\r\n $http.post(apiLocation + '/api/IPChecklists/generatepdf', {\r\n html: element.html(),\r\n checklistID: inspection.checklist.id,\r\n inspectionID: inspection.id,\r\n visitID: inspection.visit_id,\r\n name: inspection.number,\r\n outcome: inspection.outcome,\r\n signatureTypeInPerson: inspection.checklist.signature_type_in_person\r\n }).\r\n then(function (response) {\r\n pdfScope.inspection = null;\r\n angular.element(element).off();\r\n angular.element(element).remove();\r\n pdfScope.$destroy();\r\n d.resolve();\r\n }).\r\n catch(function (response) {\r\n pdfScope.inspection = null;\r\n angular.element(element).off();\r\n angular.element(element).remove();\r\n pdfScope.$destroy();\r\n // handle error\r\n });\r\n }, 50);\r\n });\r\n });\r\n\r\n return d.promise;\r\n }\r\n };\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('IPCheckoutLogs', ['$http', '$q', function ($http, $q) {\r\n\r\n return {\r\n get: function () {\r\n var d = $q.defer();\r\n\r\n $http.get(apiLocation + '/api/IPCheckoutLogs', {\r\n params: {\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getByID: function (id) {\r\n var d = $q.defer();\r\n\r\n $http.get(apiLocation + '/api/IPCheckoutLogs/' + id, {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n save: function (checkout_log) {\r\n var d = $q.defer();\r\n\r\n var method = 'POST';\r\n var url = apiLocation + '/api/IPCheckoutLogs/';\r\n if (!isUndefined(checkout_log.id)) {\r\n method = 'PUT'\r\n url += checkout_log.id\r\n }\r\n\r\n $http({\r\n method: method,\r\n url: url,\r\n data: {\r\n checkout_log: checkout_log\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n };\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('IPComment', ['$http', '$q', function ($http, $q) {\r\n return {\r\n getAdministrativeCommentsByQuestionId: function (fbQuestionID, inspectionID) {\r\n var d = $q.defer();\r\n $http.get(apiLocation + '/api/Core/IPComment/AdministrativeComments', {\r\n params: {\r\n fbQuestionID: fbQuestionID,\r\n inspectionID: inspectionID\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n saveAdministrativeComment: function (comment, questionID, inspectionID) {\r\n var d = $q.defer();\r\n\r\n $http.post(apiLocation + '/api/Core/IPComment/AdministrativeComment/', {\r\n Comment: comment,\r\n FBQuestionId: questionID,\r\n InspectionId: inspectionID\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n resolveAdministrativeComment: function (id, comment) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .put(apiLocation + '/api/Core/IPComment/ResolveAdministrativeComment/' + id, comment)\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n toggleShowOnPdf: function (id, comment) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .put(apiLocation + '/api/Core/IPComment/ToggleShowOnPdf/' + id, comment)\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n listIPCommentAsync: function (inspectionId) {\r\n var d = $q.defer();\r\n $http.get(apiLocation + '/api/Core/IPComment/ListIPCommentById/' + inspectionId, {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n d.resolve(null);\r\n });\r\n\r\n return d.promise;\r\n },\r\n }\r\n }])\r\n ;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('IPDeficiencies', ['$http', '$q', function ($http, $q) {\r\n\r\n return {\r\n\r\n get: function () {\r\n var d = $q.defer();\r\n\r\n $http.get(apiLocation + '/api/IPDeficiencies', {\r\n params: {\r\n \r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getByID: function (id) {\r\n var d = $q.defer();\r\n\r\n $http.get(apiLocation + '/api/IPDeficiencies/' + id, {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n save: function (deficiency) {\r\n var d = $q.defer();\r\n\r\n var method = 'POST';\r\n var url = apiLocation + '/api/IPDeficiencies/';\r\n if (!isUndefined(deficiency.id)) {\r\n method = 'PUT'\r\n url += deficiency.id\r\n }\r\n\r\n $http({\r\n method: method,\r\n url: url,\r\n data: {\r\n deficiency: deficiency\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n delete: function (id) {\r\n var d = $q.defer();\r\n\r\n $http.delete(apiLocation + '/api/IPDeficiencies/' + id, {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n };\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('IPDeficiencyCategories', ['$http', '$q', function ($http, $q) {\r\n\r\n return {\r\n get: function () {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/IPDeficiencyCategories', {\r\n params: {\r\n \r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getByID: function (id) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/IPDeficiencyCategories/' + id, {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n save: function (deficiency_category) {\r\n var d = $q.defer();\r\n\r\n var method = 'POST';\r\n var url = apiLocation + '/api/IPDeficiencyCategories/';\r\n if (!isUndefined(deficiency_category.id)) {\r\n method = 'PUT'\r\n url += deficiency_category.id\r\n }\r\n\r\n $http({\r\n method: method,\r\n url: url,\r\n data: {\r\n deficiency_category: deficiency_category\r\n }\r\n }).then(function (response) {\r\n d.resolve(response.data);\r\n }).catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n };\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('IPExtraFees', ['$http', '$q', function ($http, $q) {\r\n\r\n return {\r\n getByID: function (id) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/Core/IPExtraFees/' + id, {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n createFee: function (fee) {\r\n var d = $q.defer();\r\n\r\n $http.post(apiLocation + '/api/Core/IPExtraFees/', fee)\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n updateFee: function (fee) {\r\n var d = $q.defer();\r\n\r\n $http.put(apiLocation + '/api/Core/IPExtraFees/' + fee.id, fee)\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n deleteFee: function (id) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .delete(apiLocation + \"/api/Core/IPExtraFees/\" + id, {\r\n params: {}\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n };\r\n }])\r\n ;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('IPInspections', ['$http', '$q', 'IPChecklists', 'FBResponses', 'TGTriggers', 'Logger', function ($http, $q, IPChecklists, FBResponses, TGTriggers, Logger) {\r\n var getByID = function (id, getLess) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/IPInspections/' + id, {\r\n params: {\r\n getLess: getLess\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n\r\n var save = function (inspection, isSubmit, handleChecklist) {\r\n var d = $q.defer();\r\n\r\n var method = 'POST';\r\n var url = apiLocation + '/api/IPInspections/';\r\n if (!isUndefined(inspection.id)) {\r\n method = 'PUT'\r\n url += inspection.id\r\n }\r\n\r\n // don't pass in huge response\r\n var inspectionWithoutChecklist = angular.copy(inspection);\r\n if (inspectionWithoutChecklist != null) {\r\n inspectionWithoutChecklist.checklist = null;\r\n }\r\n\r\n $http({\r\n method: method,\r\n url: url,\r\n data: {\r\n inspection: inspectionWithoutChecklist,\r\n isSubmit: isSubmit,\r\n handleChecklist: handleChecklist\r\n }\r\n }).then(function (response) {\r\n d.resolve(response.data);\r\n }).catch(function (response) {\r\n Logger.logAngularApiErrors(response.data, response.status, response.config);\r\n d.resolve(null);\r\n });\r\n\r\n return d.promise;\r\n }\r\n\r\n var saveBatch = function (inspections, isSubmit, handleChecklist) {\r\n var d = $q.defer();\r\n\r\n var method = 'POST';\r\n var url = apiLocation + '/api/IPInspections/saveBatch';\r\n\r\n // shouldn't do it this way\r\n var isUpdate = inspections.every(function (inspection) {\r\n return !isUndefined(inspection.id);\r\n });\r\n\r\n if (isUpdate) {\r\n method = 'PUT';\r\n url = apiLocation + '/api/IPInspections/updateBatch';\r\n }\r\n\r\n inspections = inspections.map(function (inspection) {\r\n if (inspection != null) {\r\n inspection.checklist = null;\r\n }\r\n\r\n return inspection;\r\n });\r\n\r\n $http({\r\n method: method,\r\n url: url,\r\n data: {\r\n inspections: inspections,\r\n isSubmit: isSubmit,\r\n handleChecklist: handleChecklist\r\n }\r\n })\r\n .then(function (response) {\r\n inspections = [];\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n inspections = [];\r\n Logger.logAngularApiErrors(response.data, response.status, response.config);\r\n });\r\n\r\n return d.promise;\r\n }\r\n\r\n var saveIPChecklist = function (checklist, inspectionId) {\r\n return IPChecklists.save(angular.copy(checklist), inspectionId);\r\n }\r\n\r\n var submit = function (inspection, isSubmit) {\r\n var d = $q.defer();\r\n\r\n var promises = [];\r\n\r\n promises.push(saveIPChecklist(inspection.checklist, inspection.id));\r\n\r\n $q.all(promises).then(function (arr) {\r\n var savedChecklist = arr[0];\r\n if (isSubmit) {\r\n // could we move pdf generation into the batch call to inspections, kick off an async pdf generation, and return the document data when inspections return?\r\n IPChecklists.generatePDF(inspection).then(function () {\r\n if (savedChecklist != null) {\r\n save(inspection, isSubmit, false).then(function (savedInspection) {\r\n if (savedInspection != null) {\r\n savedChecklist = null;\r\n savedInspection = null;\r\n arr = [];\r\n promises = [];\r\n d.resolve(true);\r\n }\r\n else {\r\n savedChecklist = null;\r\n savedInspection = null;\r\n arr = [];\r\n promises = [];\r\n d.resolve(false);\r\n }\r\n });\r\n }\r\n else {\r\n arr = [];\r\n d.resolve(false);\r\n }\r\n });\r\n }\r\n else {\r\n if (savedChecklist != null) {\r\n save(inspection, isSubmit, false).then(function (savedInspection) {\r\n if (savedInspection != null) {\r\n savedChecklist = null;\r\n savedInspection = null;\r\n arr = [];\r\n promises = [];\r\n d.resolve(true);\r\n }\r\n else {\r\n savedChecklist = null;\r\n savedInspection = null;\r\n arr = [];\r\n promises = [];\r\n d.resolve(false);\r\n }\r\n });\r\n }\r\n else {\r\n arr = [];\r\n d.resolve(false);\r\n }\r\n }\r\n }).catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n\r\n var submitBatch = function (inspections, isSubmit) {\r\n var d = $q.defer();\r\n\r\n var promises = [];\r\n var pdfPromises = [];\r\n var saveByFormPromises = [];\r\n\r\n var checklists = inspections.map(function (inspection) {\r\n inspection.checklist.inspection_id = angular.copy(inspection.id); // need to do this because going from single to batch requests\r\n return inspection.checklist;\r\n });\r\n\r\n var copyInspections = angular.copy(inspections);\r\n\r\n checklists.forEach(function (checklist) {\r\n saveByFormPromises.push(FBResponses.saveByForm(checklist.response, checklist.inspection_id, null, null, true, true));\r\n });\r\n\r\n $q.all(saveByFormPromises).then(function (savedResponses) {\r\n if (savedResponses != null) {\r\n checklists.forEach(function (checklist, idx) {\r\n checklist.response = angular.copy(savedResponses[idx]);\r\n inspections[idx].checklist = angular.copy(checklist);\r\n });\r\n\r\n IPChecklists.updateBatch(angular.copy(checklists)).then(function (savedChecklists) {\r\n if (savedChecklists != null) {\r\n saveBatch(angular.copy(inspections), isSubmit, false).then(function (savedInspections) {\r\n copyInspections.forEach(function (inspection) {\r\n if (isSubmit) {\r\n pdfPromises.push(IPChecklists.generatePDF(inspection));\r\n }\r\n });\r\n copyInspections = [];\r\n\r\n $q.all(pdfPromises).then(function (arr) {\r\n if (savedChecklists != null && savedInspections != null) {\r\n promises = [];\r\n pdfPromises = [];\r\n saveByFormPromises = [];\r\n arr = [];\r\n checklists = [];\r\n inspections = [];\r\n copyInspections = []\r\n savedChecklists = [];\r\n savedInspections = [];\r\n d.resolve(true);\r\n }\r\n else {\r\n promises = [];\r\n pdfPromises = [];\r\n saveByFormPromises = [];\r\n arr = [];\r\n checklists = [];\r\n copyInspections = []\r\n inspections = [];\r\n savedChecklists = [];\r\n savedInspections = [];\r\n d.resolve(false);\r\n }\r\n }).catch(function (response) {\r\n // handle error\r\n });\r\n });\r\n }\r\n else {\r\n promises = [];\r\n pdfPromises = [];\r\n saveByFormPromises = [];\r\n checklists = [];\r\n inspections = [];\r\n savedChecklists = [];\r\n d.resolve(false);\r\n }\r\n });\r\n }\r\n }).catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n\r\n var getIDByVisitID = function (visit_id) {\r\n var d = $q.defer();\r\n\r\n $http.get(apiLocation + '/api/IPInspectionsVisitID/', {\r\n params: {\r\n visit_id: visit_id\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n\r\n return {\r\n getByID: getByID,\r\n\r\n submit: submit,\r\n\r\n submitBatch: submitBatch,\r\n\r\n save: save,\r\n\r\n saveBatch: saveBatch,\r\n\r\n getIDByVisitID: getIDByVisitID,\r\n\r\n saveIPChecklist: saveIPChecklist,\r\n\r\n bulkAction: function (inspectionIDs, value, code) {\r\n var d = $q.defer();\r\n\r\n $http.post(apiLocation + '/api/IPInspections/bulkAction', {\r\n inspectionIDs: inspectionIDs,\r\n value: value,\r\n code: code\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n };\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('IPResultSets', ['$http', '$q', function ($http, $q) {\r\n\r\n return {\r\n get: function (args) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/IPResultSets', {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n };\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('IPStatuses', ['$http', '$q', '$rootScope', 'Cache', function ($http, $q, $rootScope, Cache) {\r\n\r\n return {\r\n get: function () {\r\n var d = $q.defer();\r\n\r\n if ($rootScope.offline) {\r\n Cache.getAll('inspection_status').then(function (statuses) {\r\n d.resolve(statuses);\r\n })\r\n }\r\n else {\r\n $http.get(apiLocation + '/api/IPStatuses', {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n var promises = [];\r\n\r\n response.data.forEach(function (status) {\r\n promises.push(Cache.save('inspection_status', status));\r\n }) \r\n\r\n $q.all(promises).then(function () {\r\n d.resolve(response.data);\r\n }).catch(function (response) {\r\n // handle error\r\n });\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n })\r\n }\r\n\r\n return d.promise;\r\n },\r\n\r\n getByID: function (id) {\r\n var d = $q.defer();\r\n\r\n $http.get(apiLocation + '/api/IPStatuses/' + id, {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n save: function (status) {\r\n var d = $q.defer();\r\n\r\n var method = 'POST';\r\n var url = apiLocation + '/api/IPStatuses/';\r\n if (!isUndefined(status.id)) {\r\n method = 'PUT'\r\n url += status.id\r\n }\r\n\r\n $http({\r\n method: method,\r\n url: url,\r\n data: {\r\n status: status\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n delete: function (id) {\r\n var d = $q.defer();\r\n\r\n $http.delete(apiLocation + '/api/IPStatuses/' + id, {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n };\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('IPTemplates', ['$http', '$q', function ($http, $q) {\r\n var get = function (args) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/IPTemplates', {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n\r\n return {\r\n get: get,\r\n\r\n getService: function() {\r\n return get({ service_only: true });\r\n },\r\n\r\n getVehicle: function () {\r\n return get({ vehicle_only: true });\r\n },\r\n\r\n getByID: function (id) {\r\n var d = $q.defer();\r\n\r\n $http.get(apiLocation + '/api/IPTemplates/' + id, {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n save: function (template) {\r\n var d = $q.defer();\r\n\r\n var method = 'POST';\r\n var url = apiLocation + '/api/IPTemplates/';\r\n if (!isUndefined(template.id)) {\r\n method = 'PUT'\r\n url += template.id\r\n }\r\n\r\n $http({\r\n method: method,\r\n url: url,\r\n data: {\r\n template: template,\r\n result_set: template.result_set\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n delete: function (id) {\r\n var d = $q.defer();\r\n\r\n $http.delete(apiLocation + '/api/IPTemplates/' + id, {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getDocumentData: function (template_id) {\r\n var d = $q.defer();\r\n\r\n $http.get(apiLocation + '/api/IPTemplates/getDocumentData/' + template_id, {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n d.resolve(null);\r\n });\r\n return d.promise;\r\n },\r\n\r\n saveDocumentData: function (template_id, document_id, code) {\r\n var d = $q.defer();\r\n\r\n $http.put(apiLocation + '/api/IPTemplates/saveDocumentData', {\r\n template_id: template_id,\r\n document_id: document_id,\r\n document_code: code\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n d.resolve(null);\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getInspectionLicenseLevelOptions: function (templateId) {\r\n var d = $q.defer();\r\n $http.get(apiLocation + '/api/IPTemplates/getInspectionLicenseLevelOptions/' + templateId, {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getInspectionLicenseLevels: function (template_id) {\r\n var d = $q.defer();\r\n\r\n $http.get(apiLocation + '/api/IPTemplates/getInspectionLicenseLevels/' + template_id, {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n };\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('IPVisits', ['$http', '$q', '$rootScope', 'Cache', function ($http, $q, $rootScope, Cache) {\r\n\r\n return {\r\n get: function (userOnly, month, year, service_id) {\r\n var d = $q.defer();\r\n\r\n $http.get(apiLocation + '/api/IPVisits', {\r\n params: {\r\n userOnly: userOnly,\r\n month: month,\r\n year: year,\r\n service_id: service_id\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getList: function (month, year) {\r\n var d = $q.defer();\r\n\r\n $http.get(apiLocation + '/api/IPVisits/getlist', {\r\n params: {\r\n month: month,\r\n year: year\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getYears: function () {\r\n var d = $q.defer();\r\n\r\n if ($rootScope.offline) {\r\n Cache.get('year', 'INSPECTIONS').then(function (yearObject) {\r\n d.resolve(yearObject.years);\r\n })\r\n }\r\n else {\r\n $http.get(apiLocation + '/api/IPVisits/getyears', {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n var yearObject = {};\r\n yearObject.MODULENAME = 'INSPECTIONS';\r\n yearObject.years = response.data;\r\n\r\n Cache.save('year', yearObject, 'MODULENAME').then(function () {\r\n d.resolve(response.data);\r\n })\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n }\r\n\r\n return d.promise;\r\n },\r\n\r\n getByID: function (id) {\r\n var d = $q.defer();\r\n\r\n $http.get(apiLocation + '/api/IPVisits/' + id, {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n save: function (visit) {\r\n var d = $q.defer();\r\n\r\n var method = 'POST';\r\n var url = apiLocation + '/api/IPVisits/';\r\n if (!isUndefined(visit.id)) {\r\n method = 'PUT'\r\n url += visit.id\r\n }\r\n\r\n $http({\r\n method: method,\r\n url: url,\r\n data: {\r\n visit: visit,\r\n inspections: visit.inspections,\r\n inspectors: visit.inspectors,\r\n service_template: visit.service_template,\r\n vehicle_template: visit.vehicle_template\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n postSpotCheckInspection: function (spotCheckInfo) {\r\n var d = $q.defer();\r\n $http.post(apiLocation + '/api/IPVisits/spotCheckInspection', spotCheckInfo)\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n };\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('Levels', ['$http', '$q', function ($http, $q) {\r\n return {\r\n get: function (args) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/Levels', {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getUserLevelProgress: function (args) {\r\n var d = $q.defer();\r\n $http\r\n .get(apiLocation + '/api/EducationModule/UserLevelProgressByApplicationType/', {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getEducationVerificationDates: function (args) {\r\n var d = $q.defer();\r\n $http\r\n .get(apiLocation + '/api/EducationModule/EducationVerificationDates/', {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n }\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('LicenseCategories', ['$http', '$q', function ($http, $q) {\r\n return {\r\n get: function (args) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/licensecategories', {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getByID: function (id) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/licensecategories/' + id, {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n save: function (license_category) {\r\n var d = $q.defer();\r\n\r\n var method = 'POST';\r\n var url = apiLocation + '/api/licensecategories/';\r\n if (!isUndefined(license_category.id)) {\r\n method = 'PUT'\r\n url += license_category.id\r\n }\r\n\r\n $http({\r\n method: method,\r\n url: url,\r\n data: {\r\n license_category: license_category,\r\n certification_fields: license_category.certification_fields\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n updateAllowMultipleLevels: function (license_category) {\r\n var d = $q.defer();\r\n\r\n var method = 'PUT';\r\n var url = apiLocation + '/api/licensecategories/updateAllowMultipleLevels/' + license_category.id;\r\n\r\n if (isUndefined(license_category.allow_multiple_levels) || license_category.allow_multiple_levels == null) {\r\n license_category.allow_multiple_levels = false;\r\n }\r\n\r\n $http({\r\n method: method,\r\n url: url,\r\n data: {\r\n license_category: license_category,\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n }\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('LicenseCategoryCertificationAttributes', ['$http', '$q', function ($http, $q) {\r\n return {\r\n get: function (license_category_id) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/licensecategorycertificationattributes', {\r\n params: {\r\n license_category_id: license_category_id\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n save: function (license_category_certification_attribute, license_id) {\r\n var d = $q.defer();\r\n\r\n var method = 'POST';\r\n var url = apiLocation + '/api/licensecategorycertificationattributes/';\r\n if (!isUndefined(license_category_certification_attribute.id)) {\r\n method = 'PUT'\r\n url += license_category_certification_attribute.id\r\n }\r\n\r\n $http({\r\n method: method,\r\n url: url,\r\n data: {\r\n license_category_certification_attribute: license_category_certification_attribute,\r\n license_id: license_id\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n }\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('LicenseCategoryCertificationFields', ['$http', '$q', function ($http, $q) {\r\n return {\r\n get: function (license_category_id) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/licensecategorycertificationfields', {\r\n params: {\r\n license_category_id: license_category_id\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n save: function (license_category_certification_field) {\r\n var d = $q.defer();\r\n\r\n var method = 'POST';\r\n var url = apiLocation + '/api/licensecategorycertificationfields/';\r\n if (!isUndefined(license_category_certification_field.id)) {\r\n method = 'PUT'\r\n url += license_category_certification_field.id\r\n }\r\n\r\n $http({\r\n method: method,\r\n url: url,\r\n data: {\r\n license_category_certification_field: license_category_certification_field\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n }\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('LicenseCategoryCertificationStatuses', ['$http', '$q', function ($http, $q) {\r\n return {\r\n get: function (args) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/licensecategorycertificationstatuses', {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getVehicleCategoryStatuses: function (args) {\r\n var d = $q.defer();\r\n args.license_id = null;\r\n args.license_category_id = null;\r\n args.vehicle = true;\r\n $http\r\n .get(apiLocation + '/api/licensecategorycertificationstatuses', {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getByID: function (id) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/licensecategorycertificationstatuses/' + id, {\r\n params: {}\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n save: function (license_category_certification_status, license_id) {\r\n var d = $q.defer();\r\n\r\n var method = 'POST';\r\n var url = apiLocation + '/api/licensecategorycertificationstatuses/';\r\n if (!isUndefined(license_category_certification_status.id)) {\r\n method = 'PUT'\r\n url += license_category_certification_status.id\r\n }\r\n\r\n $http({\r\n method: method,\r\n url: url,\r\n data: {\r\n license_category_certification_status: license_category_certification_status,\r\n license_id: license_id\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n }\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('LicenseCategoryLevels', ['$http', '$q', 'Licenses', function ($http, $q, Licenses) {\r\n var get = function (args) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/licensecategorylevels', {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n\r\n return {\r\n get: get,\r\n\r\n getCheckCategory: function (licenseID, code) {\r\n var d = $q.defer();\r\n\r\n Licenses.getByID(licenseID).then(function (license) {\r\n if (code == 'ProviderLicenseHistory' && !license.license_category.provider) {\r\n d.resolve(get({ provider: true }));\r\n }\r\n else if (code == 'DispatcherLicenseHistory' && !license.license_category.dispatcher) {\r\n d.resolve(get({ dispatcher: true }));\r\n }\r\n else if (code == 'InstructorLicenseHistory' && !license.license_category.instructor) {\r\n d.resolve(get({ instructor: true }));\r\n }\r\n else if (code == 'ServiceLicenseLevel' && !license.license_category.service) {\r\n d.resolve(get({ service: true }));\r\n }\r\n else {\r\n d.resolve(get({ license_id: licenseID }));\r\n }\r\n })\r\n\r\n return d.promise;\r\n },\r\n\r\n getProvider: function (args) {\r\n args.provider = true;\r\n return get(args);\r\n },\r\n\r\n getLookupProvider: function (args) {\r\n args.provider = true;\r\n args.lookup = true;\r\n return get(args);\r\n },\r\n\r\n getVehicle: function (args) {\r\n args.vehicle = true;\r\n return get(args);\r\n },\r\n\r\n getService: function (args) {\r\n args.service = true;\r\n return get(args);\r\n },\r\n\r\n getLookupService: function (args) {\r\n args.service = true;\r\n args.lookup = true;\r\n return get(args);\r\n },\r\n\r\n getUserLevels: function () {\r\n return get({ entity_id: '5384A3C9-A244-41CC-92C1-6423E4561B83' });\r\n },\r\n\r\n getByID: function (id) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/licensecategorylevels/' + id, {\r\n params: {}\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n save: function (license_category_level, license_id) {\r\n var d = $q.defer();\r\n\r\n var method = 'POST';\r\n var url = apiLocation + '/api/licensecategorylevels/';\r\n if (!isUndefined(license_category_level.id)) {\r\n method = 'PUT'\r\n url += license_category_level.id\r\n }\r\n\r\n $http({\r\n method: method,\r\n url: url,\r\n data: {\r\n license_category_level: license_category_level,\r\n license_id: license_id\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n }\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('LicenseChargeCalculatedFields', ['$http', '$q', function ($http, $q) {\r\n return {\r\n get: function (licenseID) {\r\n var d = $q.defer();\r\n $http\r\n .get(apiLocation + '/api/LicensingModule/LicenseChargeCalculatedFields', {\r\n params: { licenseID: licenseID }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getCalculatedValue: function (questionID, chargeValue, responseID) {\r\n var d = $q.defer();\r\n $http\r\n .get(apiLocation + '/api/LicensingModule/CalculatedValue', {\r\n params: { questionID: questionID, chargeValue: chargeValue, responseID: responseID }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n }\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('LicenseChargeTypes', ['$http', '$q', function ($http, $q) {\r\n return {\r\n get: function () {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/licensechargetypes', {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getCountFromQuery: function (chargeTypeId, licenseRequestId) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/licensechargetypes/getcountfromquery', {\r\n params: {\r\n chargeTypeId: chargeTypeId,\r\n licenseRequestId: licenseRequestId\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n }\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('LicenseCharges', ['$http', '$q', '$filter', 'LicenseChargeTypes', 'LicenseRequestCharges', 'FBQuestionCriteria', 'Logger', 'LicenseChargeCalculatedFields', function ($http, $q, $filter, LicenseChargeTypes, LicenseRequestCharges, FBQuestionCriteria, Logger, LicenseChargeCalculatedFields) {\r\n var get = function (args) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/licensecharges/', {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n\r\n var calculateChargeType = function (chargeTypeId, charge, licenseRequestID) {\r\n var d = $q.defer();\r\n\r\n LicenseChargeTypes.getCountFromQuery(chargeTypeId, licenseRequestID).then(function (count) {\r\n var amount = 0.0;\r\n\r\n if (count != null) {\r\n count = count.record_count;\r\n if (count >= 0 && count <= charge.threshold) {\r\n amount = charge.value;\r\n } else if (count > charge.threshold) {\r\n amount = charge.value + ((count - charge.threshold) * charge.additional_charge);\r\n }\r\n }\r\n // Save the charge to the license_request_charges table. The save function handles duplicate prevention\r\n if (amount != 0.0) {\r\n var applicationCharge = {\r\n name: charge.name,\r\n value: amount,\r\n license_request_id: licenseRequestID,\r\n license_charge_id: charge.id\r\n }\r\n LicenseRequestCharges.save(applicationCharge).then(function (c) {\r\n d.resolve(c != null);\r\n });\r\n }\r\n else {\r\n d.resolve(true);\r\n }\r\n })\r\n\r\n return d.promise;\r\n }\r\n\r\n return {\r\n get: get,\r\n\r\n getByID: function (id) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/licensecharges/' + id, {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n save: function (license_charge) {\r\n var d = $q.defer();\r\n\r\n var method = 'POST';\r\n var url = apiLocation + '/api/licensecharges/';\r\n if (!isUndefined(license_charge.id)) {\r\n method = 'PUT';\r\n url += license_charge.id;\r\n }\r\n\r\n $http({\r\n method: method,\r\n url: url,\r\n data: {\r\n license_charge: license_charge\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n delete: function (id) {\r\n var d = $q.defer();\r\n\r\n $http.delete(apiLocation + '/api/licensecharges/' + id, {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n evaluate: function (licenseID, responseID, licenseRequestID, datapointAnswers) {\r\n var d = $q.defer();\r\n\r\n get({ licenseID: licenseID, licenseRequestID: licenseRequestID }).then(function (charges) {\r\n if (charges != null) {\r\n var success = true;\r\n var promises = [];\r\n\r\n charges.forEach(function (charge) {\r\n if (charge.flat_fee == 0) {\r\n // Type\r\n if (charge.license_charge_type != null) {\r\n\r\n if (charge.license_charge_type.data_point_id == null) {\r\n promises.push(calculateChargeType(charge.license_charge_type.id, charge, licenseRequestID).then(function (result) {\r\n if (!result) {\r\n success = false;\r\n }\r\n }));\r\n\r\n } else {\r\n var allAnswers = [];\r\n var matchingAnswers = [];\r\n if (datapointAnswers != null && datapointAnswers[charge.license_charge_type.datapoint.code] != null) {\r\n allAnswers = datapointAnswers[charge.license_charge_type.datapoint.code];\r\n // filter out answers with null values, they don't count\r\n allAnswers = $filter('filter')(allAnswers, function(answer) {return answer.value != null});\r\n }\r\n if (charge.license_charge_type.column_values != null) {\r\n charge.license_charge_type.column_values = charge.license_charge_type.column_values.toLowerCase().split(',');\r\n if (charge.license_charge_type.column_values.indexOf(\"1\") > -1) {\r\n charge.license_charge_type.column_values.push(\"true\");\r\n }\r\n if (charge.license_charge_type.column_values.indexOf(\"0\") > -1) {\r\n charge.license_charge_type.column_values.push(\"false\");\r\n }\r\n // count up the answers that match one of the values\r\n allAnswers.forEach(function (answer) {\r\n if (answer != null && answer.value != null && charge.license_charge_type.column_values.indexOf(answer.value.toString().toLowerCase()) > -1) {\r\n matchingAnswers.push(answer);\r\n }\r\n });\r\n } else {\r\n matchingAnswers = allAnswers;\r\n }\r\n\r\n var amount = 0.0;\r\n var count = matchingAnswers.length;\r\n if (count > 0 && count <= charge.threshold) {\r\n amount = charge.value;\r\n } else if (count > 0) {\r\n amount = charge.value + ((count - charge.threshold) * charge.additional_charge);\r\n }\r\n // Save the charge to the license_request_charges table. The save function handles duplicate prevention\r\n if (amount != 0.0) {\r\n var applicationCharge = {\r\n name: charge.name,\r\n value: amount,\r\n license_request_id: licenseRequestID,\r\n license_charge_id: charge.id\r\n }\r\n promises.push(LicenseRequestCharges.save(applicationCharge).then(function (c) {\r\n if (c == null) {\r\n success = false;\r\n }\r\n }));\r\n }\r\n }\r\n }\r\n\r\n } else if (charge.flat_fee == 1) {\r\n // Flat\r\n // flat doesn't need any special logic here - they're pulled in directly on checkout\r\n } else if (charge.flat_fee == 2) {\r\n // Conditional\r\n var result = FBQuestionCriteria.evaluateCondition(charge);\r\n if (result != null) {\r\n if (result) {\r\n // Save the charge to the license_request_charges table. The save function handles duplicate prevention\r\n if (charge.value != 0.0) {\r\n var applicationCharge = {\r\n name: charge.name,\r\n value: charge.value,\r\n license_request_id: licenseRequestID,\r\n license_charge_id: charge.id\r\n }\r\n promises.push(LicenseRequestCharges.save(applicationCharge).then(function (c) {\r\n if (c == null) {\r\n success = false;\r\n }\r\n }));\r\n }\r\n }\r\n }\r\n else {\r\n success = false;\r\n }\r\n } else if (charge.flat_fee == 3) {\r\n //Calculated Field\r\n var calculatedValue = 0.0;\r\n var returnedPromise = LicenseChargeCalculatedFields.getCalculatedValue(charge.calculated_field_question_id, charge.value, responseID);\r\n returnedPromise.then(function (value) {\r\n calculatedValue = value;\r\n if (calculatedValue != 0.0) {\r\n var applicationCharge = {\r\n name: charge.name,\r\n value: calculatedValue,\r\n license_request_id: licenseRequestID,\r\n license_charge_id: charge.id\r\n }\r\n promises.push(LicenseRequestCharges.save(applicationCharge).then(function (charge) {\r\n if (charge == null) {\r\n success = false;\r\n }\r\n }));\r\n }\r\n });\r\n }\r\n })\r\n\r\n $q.all(promises).then(function () {\r\n Logger.logFormProgress(\"Calculated Charges\", responseID);\r\n d.resolve(success);\r\n }).catch(function (response) {\r\n // handle error\r\n });\r\n }\r\n else {\r\n Logger.logFormProgress(\"Calculated Charges (none)\", responseID);\r\n d.resolve(false);\r\n }\r\n })\r\n\r\n return d.promise;\r\n }\r\n }\r\n }])\r\n ;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('LicenseLevelConfigurations', ['$http', '$q', function ($http, $q) {\r\n return {\r\n get: function (args) {\r\n var d = $q.defer();\r\n\r\n $http.get(apiLocation + '/api/LicenseLevelConfigurations', {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n }\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('LicenseRequestApplicationTypes', ['$http', '$q', function ($http, $q) {\r\n var save = function (lrat) {\r\n var d = $q.defer();\r\n\r\n var method = 'POST';\r\n var url = apiLocation + '/api/LicenseRequestApplicationTypes/';\r\n if (!isUndefined(lrat.id)) {\r\n method = 'PUT'\r\n url += lrat.id\r\n }\r\n\r\n $http({\r\n method: method,\r\n url: url,\r\n data: {\r\n license_request_application_type: lrat\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n\r\n var clearElement = function (licenseRequestID) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .post(apiLocation + '/api/LicenseRequestApplicationTypes/clearElement', {\r\n license_request_id: licenseRequestID\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n\r\n return {\r\n get: function (args) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/LicenseRequestApplicationTypes', {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n save: save,\r\n\r\n saveElement: function (answer, licenseRequestID) {\r\n var d = $q.defer();\r\n var promises = [];\r\n\r\n clearElement(licenseRequestID).then(function () {\r\n for (var key in answer) {\r\n // skip loop if the property is from prototype\r\n if (!answer.hasOwnProperty(key)) continue;\r\n\r\n var ids = key.split('%');\r\n if (ids.length == 2) {\r\n var typeID = ids[0];\r\n var levelID = ids[1];\r\n if (isValidGuid(typeID) && isValidGuid(levelID)) {\r\n promises.push(save({\r\n license_request_id: licenseRequestID,\r\n application_type_id: typeID,\r\n license_request_level_id: levelID,\r\n checked: answer[key]\r\n }))\r\n }\r\n }\r\n }\r\n\r\n $q.all(promises).then(function () {\r\n d.resolve();\r\n }).catch(function (response) {\r\n // handle error\r\n });\r\n }) \r\n\r\n return d.promise;\r\n }\r\n }\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('LicenseRequestCharges', ['$http', '$q', function ($http, $q) {\r\n return {\r\n get: function () {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/licenserequestcharges', {\r\n params: {\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getByID: function (id) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/licenserequestcharges/' + id, {\r\n params: {\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n save: function (license_request_charge) {\r\n var d = $q.defer();\r\n\r\n var method = 'POST';\r\n var url = apiLocation + '/api/licenserequestcharges/';\r\n\r\n $http({\r\n method: method,\r\n url: url,\r\n data: {\r\n license_request_charge: license_request_charge\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n delete: function (id) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .delete(apiLocation + '/api/licenserequestcharges/' + id, {\r\n params: {\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n\r\n }\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('LicenseRequestFBResponses', ['$http', '$q', function ($http, $q) {\r\n\r\n return {\r\n save: function (licenseRequestResponse, formID) {\r\n var d = $q.defer();\r\n\r\n var method = 'POST';\r\n var url = apiLocation + '/api/LicenseRequestFBResponses/';\r\n if (!isUndefined(licenseRequestResponse.id)) {\r\n method = 'PUT'\r\n url += licenseRequestResponse.id\r\n }\r\n\r\n $http({\r\n method: method,\r\n url: url,\r\n data: {\r\n license_request_response: licenseRequestResponse,\r\n form_id: formID\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n };\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('LicenseRequestLevels', ['$http', '$q', function ($http, $q) {\r\n return {\r\n get: function (args) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/LicenseRequestLevels', {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n }\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('LicenseRequestProcess', ['$http', '$q', 'FBResponses', 'Triggers', function ($http, $q, FBResponses, Triggers) {\r\n return {\r\n updateProcess: function (license_request_id, status, note) {\r\n var d = $q.defer();\r\n\r\n var method = 'POST';\r\n var url = apiLocation + '/api/licenserequestprocessstatuses/processchange/';\r\n\r\n $http({\r\n method: method,\r\n url: url,\r\n data: {\r\n licenseRequestID: license_request_id,\r\n statusID: status.status_id,\r\n processID: status.process_id,\r\n note: note\r\n }\r\n })\r\n .then(function (response) {\r\n var promises = [];\r\n\r\n // fire triggers if need be\r\n if (status.manual_trigger_id != null && status.manual_trigger_name != null && status.manual_trigger_name != \"\") {\r\n promises.push(Triggers.fire({\r\n name: status.manual_trigger_name,\r\n licenseRequestID: license_request_id,\r\n triggerID: status.manual_trigger_id\r\n }));\r\n }\r\n if (status.link_trigger_id != null && status.link_trigger_name != null && status.link_trigger_name != \"\") {\r\n promises.push(Triggers.fire({\r\n name: status.link_trigger_name,\r\n licenseRequestID: license_request_id,\r\n triggerID: status.link_trigger_id\r\n }));\r\n }\r\n\r\n // resolve\r\n $q.all(promises).then(function () {\r\n d.resolve(status);\r\n }).catch(function (response) {\r\n // handle error\r\n });\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n })\r\n\r\n return d.promise;\r\n }\r\n \r\n }\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('LicenseRequestStatuses', ['$http', '$q', function ($http, $q) {\r\n return {\r\n get: function (args) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/licenserequeststatuses', {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getByID: function (id) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/licenserequeststatuses/' + id, {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n\r\n }\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('LicenseRequestSupplementalTrainingTrainings', ['$http', '$q', 'Trainings', 'Documents', 'Upload', function ($http, $q, Trainings, Documents, Upload) {\r\n var saveTraining = function (training, licenseRequestID) {\r\n var d = $q.defer();\r\n var promises = [];\r\n\r\n if (training.file_updated && training.file_content != null && training.file_name != null) {\r\n promises.push(Documents.upload({\r\n file: Upload.dataUrltoBlob(training.file_content, training.file_name),\r\n name: training.document_name\r\n }, licenseRequestID).then(function (document) {\r\n if (document != null) {\r\n training.document_id = document.id;\r\n training.document_code = document.code;\r\n }\r\n }))\r\n }\r\n\r\n $q.all(promises).then(function () {\r\n training.file_content = null;\r\n Trainings.save(training, licenseRequestID).then(function (savedTraining) {\r\n d.resolve(savedTraining);\r\n }); \r\n }).catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n\r\n var clearElement = function (licenseRequestID, trainingIDs) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .post(apiLocation + '/api/LicenseRequestSupplementalTrainingTrainings/clearElement', {\r\n license_request_id: licenseRequestID,\r\n trainingIDs: trainingIDs\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n\r\n return {\r\n get: function (args) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/LicenseRequestSupplementalTrainingTrainings', {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n saveElement: function (trainings, licenseRequestID) {\r\n var d = $q.defer();\r\n var promises = [];\r\n\r\n var savedTrainingIDs = null;\r\n\r\n trainings.forEach(function (training) {\r\n if (training.training_location != null && (!isValidGuid(training.training_location.id) || !isValidGuid(training.training_location_id))) {\r\n training.training_location = null;\r\n training.training_location_id = null;\r\n }\r\n promises.push(saveTraining(training, licenseRequestID).then(function(savedTraining) {\r\n if (savedTraining.id != null) {\r\n if (savedTrainingIDs == null) {\r\n savedTrainingIDs = savedTraining.id;\r\n }\r\n else {\r\n savedTrainingIDs += ',' + savedTraining.id;\r\n }\r\n }\r\n })); \r\n })\r\n\r\n $q.all(promises).then(function () {\r\n clearElement(licenseRequestID, savedTrainingIDs).then(function () {\r\n d.resolve();\r\n })\r\n }) \r\n\r\n return d.promise;\r\n },\r\n\r\n logSupplementalDates: function (responseId, applicationTypeId, userId) {\r\n var d = $q.defer();\r\n\r\n var data = {\r\n responseID: responseId,\r\n applicationTypeID: applicationTypeId,\r\n userID: userId\r\n };\r\n\r\n $http({\r\n method: \"POST\",\r\n url: apiLocation + \"/api/EducationModule/LogSupplementalDates\",\r\n data: data\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n d.resolve(null);\r\n });\r\n\r\n return d.promise;\r\n },\r\n }\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('LicenseRequests', ['$http', '$q', 'FBResponses', 'FBConditions', 'LicenseCharges', 'Triggers', 'Logger', '$rootScope', function ($http, $q, FBResponses, FBConditions, LicenseCharges, Triggers, Logger, $rootScope) {\r\n var fireFormSubmissionFailed = function (response) {\r\n Triggers.fire({\r\n name: 'Form Submission Failed',\r\n system: \"true\",\r\n licenseRequestID: response.license_request_id,\r\n userID: response.user_id,\r\n serviceID: response.service_id,\r\n vehicleID: response.vehicle_id\r\n });\r\n };\r\n\r\n return {\r\n get: function (args) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/LicensingModule/LicenseRequest', {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n d.resolve(null);\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getByUserID: function (user_id, detail, enterprise_id) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/LicenseRequests/getByUserID/', {\r\n params: {\r\n user_id: user_id,\r\n detail: detail,\r\n enterprise_id: enterprise_id\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n d.resolve(null);\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getByID: function (id) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/LicenseRequests/' + id, {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getXML: function (id) {\r\n var d = $q.defer();\r\n\r\n $http.get(apiLocation + '/api/LicenseRequests/getXML', {\r\n params: {\r\n licenseRequestID: id\r\n }\r\n }).\r\n then(function (response) {\r\n var formatted = '';\r\n if (response.data != null) {\r\n var reg = /(>)(<)(\\/*)/g;\r\n response.data = response.data.replace(reg, '$1\\r\\n$2$3');\r\n var pad = 0;\r\n var array = response.data.split('\\r\\n');\r\n for (var index = 0; index < array.length; index++) {\r\n var indent = 0;\r\n if (array[index].match(/.+<\\/\\w[^>]*>$/)) {\r\n indent = 0;\r\n } else if (array[index].match(/^<\\/\\w/)) {\r\n if (pad != 0) {\r\n pad -= 1;\r\n }\r\n } else if (array[index].match(/^<\\w[^>]*[^\\/]>.*$/)) {\r\n indent = 1;\r\n } else {\r\n indent = 0;\r\n }\r\n\r\n var padding = '';\r\n for (var i = 0; i < pad; i++) {\r\n padding += ' ';\r\n }\r\n\r\n formatted += padding + array[index] + '\\r\\n';\r\n pad += indent;\r\n }\r\n }\r\n d.resolve(formatted);\r\n }).\r\n catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getTrainingValidationDates: function (args) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/LicenseRequests/getTrainingValidationDates', {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n save: function (license_request) {\r\n var d = $q.defer();\r\n\r\n var method = 'POST';\r\n var url = apiLocation + '/api/LicenseRequests/';\r\n if (!isUndefined(license_request.id)) {\r\n method = 'PUT'\r\n url += license_request.id\r\n }\r\n\r\n $http({\r\n method: method,\r\n url: url,\r\n data: {\r\n license_request: license_request\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n Logger.logAngularApiErrors(response.data, response.status, response.config);\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n submit: function (application, response, parameters, datapointAnswers) {\r\n var d = $q.defer();\r\n var result = {\r\n success: true,\r\n error: null,\r\n validationError: false\r\n }\r\n\r\n try {\r\n response.completed_on = new Date();\r\n response.progress = 2;\r\n\r\n // copy for pdf because it already has all the options loaded in\r\n var pdfResponseCopy = angular.copy(response);\r\n\r\n var getDocumentIDs = false;\r\n\r\n pdfResponseCopy.form.pages.forEach(function (page) {\r\n if (getDocumentIDs == false) {\r\n page.sections.forEach(function (section) {\r\n if (getDocumentIDs == false) {\r\n section.components.forEach(function (component) {\r\n if (getDocumentIDs == false) {\r\n component.groups.forEach(function (group) {\r\n if (getDocumentIDs == false) {\r\n group.questions.forEach(function (question) {\r\n if (getDocumentIDs == false) {\r\n if (question.question_type.code == 'file_upload') {\r\n getDocumentIDs = true;\r\n }\r\n }\r\n });\r\n }\r\n });\r\n }\r\n });\r\n }\r\n });\r\n }\r\n });\r\n\r\n // save form\r\n FBResponses.saveByForm(response, application.id, null, true, false, false).then(function (savedResponse) {\r\n if (savedResponse != null) {\r\n if (savedResponse == false) {\r\n // server-side validation failed\r\n result.success = false;\r\n result.validationerror = true;\r\n d.resolve(result);\r\n }\r\n else {\r\n var promises = [];\r\n // we need to go get response because pdfResponseCopy will not have document IDs tied to file Upload documents\r\n $rootScope.$broadcast('generate:pdf');\r\n\r\n if (getDocumentIDs == true || pdfResponseCopy.form.display_changed_answers) {\r\n promises.push(FBResponses.getByID(savedResponse.id).then(function (pdfResponse) {\r\n if (pdfResponse != null) {\r\n // generate pdf \r\n return FBResponses.generatePDF(pdfResponse, application.id, parameters).then(function () {\r\n $rootScope.$broadcast('reset:application');\r\n });\r\n }\r\n }));\r\n } else {\r\n // generate pdf\r\n promises.push(FBResponses.generatePDF(pdfResponseCopy, application.id, parameters).then(function () {\r\n //console.log('8 license-request-service generatePDF broadcast');\r\n $rootScope.$broadcast('reset:application');\r\n }));\r\n }\r\n\r\n // calculate license charges\r\n promises.push(LicenseCharges.evaluate(application.license_id, savedResponse.id, application.id, datapointAnswers).then(function (success) {\r\n $rootScope.$broadcast('calculate:charges');\r\n result.success = success;\r\n if (!success) {\r\n fireFormSubmissionFailed(response);\r\n }\r\n }));\r\n\r\n $q.all(promises).then(function () {\r\n var completedPromises = [];\r\n\r\n // fire form complete trigger\r\n if (savedResponse.complete_trigger_id != null && savedResponse.complete_trigger_name != null && savedResponse.complete_trigger_name != \"\") {\r\n $rootScope.$broadcast('form:triggers');\r\n try {\r\n completedPromises.push(Triggers.fire({\r\n name: savedResponse.complete_trigger_name,\r\n licenseRequestID: application.id,\r\n triggerID: savedResponse.complete_trigger_id,\r\n responseID: savedResponse.id\r\n }).then(function (result) {\r\n if (result != null) {\r\n Logger.logFormProgress(\"Form Complete Trigger Fired: \" + savedResponse.complete_trigger_name, savedResponse.id);\r\n } else {\r\n Logger.logFormProgress(\"Form Complete Trigger Failed!: \" + savedResponse.complete_trigger_name, savedResponse.id);\r\n fireFormSubmissionFailed(response);\r\n }\r\n }));\r\n }\r\n catch (e) {\r\n Logger.logFormProgress(\"Form Complete Trigger Failed: \" + savedResponse.complete_trigger_name, savedResponse.id);\r\n result.success = false;\r\n fireFormSubmissionFailed(response);\r\n console.log(e);\r\n console.log(savedResponse.complete_trigger_name);\r\n }\r\n }\r\n\r\n // fire form package complete trigger\r\n if (savedResponse.package_complete_trigger_id != null && savedResponse.package_complete_trigger_name != null && savedResponse.package_complete_trigger_name != \"\") {\r\n try {\r\n $rootScope.$broadcast('package:complete');\r\n completedPromises.push(Triggers.fire({\r\n name: savedResponse.package_complete_trigger_name,\r\n licenseRequestID: application.id,\r\n triggerID: savedResponse.package_complete_trigger_id\r\n }).then(function (result) {\r\n if (result != null) {\r\n Logger.logFormProgress(\"Package Complete Trigger Fired: \" + savedResponse.package_complete_trigger_name, savedResponse.id);\r\n } else {\r\n Logger.logFormProgress(\"Package Complete Trigger Failed!: \" + savedResponse.package_complete_trigger_name, savedResponse.id);\r\n fireFormSubmissionFailed(response);\r\n }\r\n }));\r\n }\r\n catch (e) {\r\n Logger.logFormProgress(\"Package Complete Trigger Failed: \" + savedResponse.package_complete_trigger_name, savedResponse.id);\r\n result.success = false;\r\n fireFormSubmissionFailed(response);\r\n console.log(e);\r\n console.log(savedResponse.package_complete_trigger_name);\r\n }\r\n }\r\n\r\n $q.all(completedPromises).then(function () {\r\n $rootScope.$broadcast('form:conditions');\r\n // fire form conditions\r\n FBConditions.evaluate(savedResponse.form_id, savedResponse.id, application.id).then(function (success) {\r\n if (success) {\r\n Logger.logFormProgress(\"Form Conditions Evaluated\", savedResponse.id);\r\n } else {\r\n Logger.logFormProgress(\"Form Conditions Errored\", savedResponse.id);\r\n fireFormSubmissionFailed(response);\r\n }\r\n result.success = success;\r\n d.resolve(result);\r\n });\r\n }).catch(function (response) {\r\n // handle error\r\n });\r\n }).catch(function (response) {\r\n // handle error\r\n });\r\n }\r\n }\r\n else {\r\n result.success = false;\r\n d.resolve(result);\r\n fireFormSubmissionFailed(response);\r\n }\r\n });\r\n }\r\n catch (e) {\r\n result.success = false;\r\n result.error = e;\r\n d.resolve(result);\r\n }\r\n\r\n return d.promise;\r\n },\r\n\r\n delete: function (id, reason) {\r\n var d = $q.defer();\r\n\r\n $http.delete(apiLocation + '/api/LicenseRequests/' + id, {\r\n params: {\r\n reason: reason\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n setCurrentTriggerCount: function (licenseRequestID, count) {\r\n var d = $q.defer();\r\n\r\n if (count == null) {\r\n count = 0;\r\n }\r\n\r\n var data = {\r\n licenseRequestID: licenseRequestID,\r\n count: count\r\n }\r\n\r\n $http({\r\n method: 'POST',\r\n url: apiLocation + '/api/LicenseRequests/setCurrentTriggerCount',\r\n data: data\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n d.resolve(null);\r\n });\r\n\r\n return d.promise;\r\n },\r\n }\r\n }])\r\n ;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('LicenseRules', ['$http', '$q', function ($http, $q) {\r\n var buildField = function (rule, usedFields, columns) {\r\n var fields = '';\r\n var service_entity = false;\r\n\r\n rule.license_rule_field_values.forEach(function (lrfv) {\r\n var field = '';\r\n\r\n if (!isUndefined(lrfv.license_rule_field.alias)) {\r\n field = lrfv.license_rule_field.alias + ' as ' + lrfv.license_rule_field.field_name;\r\n }\r\n else {\r\n field = lrfv.license_rule_field.table_name + '.' + lrfv.license_rule_field.field_name;\r\n }\r\n\r\n if (fields.indexOf(field) < 0) {\r\n if (fields == '') {\r\n fields = field;\r\n }\r\n else {\r\n fields += ',' + field;\r\n }\r\n }\r\n\r\n columns.push({\r\n label: lrfv.license_rule_field.name,\r\n field: lrfv.license_rule_field.field_name,\r\n type: lrfv.license_rule_field.format,\r\n revertTimeZone: true\r\n })\r\n\r\n if (!service_entity && lrfv.license_rule_field.entity.toLowerCase() == 'service'\r\n && usedFields.indexOf('services.id as serviceID,services.name as service_name') < 0) {\r\n service_entity = true;\r\n if (fields == '') {\r\n fields = 'services.id as serviceID,services.name as service_name';\r\n }\r\n else {\r\n fields += ',services.id as serviceID,services.name as service_name';\r\n }\r\n columns.push({\r\n label: 'Service Name',\r\n field: 'service_name'\r\n })\r\n }\r\n })\r\n\r\n return fields;\r\n }\r\n\r\n var buildClause = function (rule) {\r\n var clauses = '';\r\n var left = '';\r\n var dbField = '';\r\n var operator = '';\r\n var totalMonths = '';\r\n var totalYears = '';\r\n var value = '';\r\n var right = '';\r\n\r\n rule.license_rule_field_values.sort(sortObjectArray('sort_order')).forEach(function (field) {\r\n if (field.and_flag) {\r\n left = ' and ';\r\n }\r\n else {\r\n left = ' or ';\r\n }\r\n\r\n if (field.left_parenthesis != null) {\r\n left += field.left_parenthesis;\r\n }\r\n\r\n if (field.license_rule_field.format.toLowerCase() == 'age' && field.license_rule_field.alias != null && field.license_rule_field.alias != '') {\r\n dbField = field.license_rule_field.alias;\r\n }\r\n else if (field.license_rule_field.format.toLowerCase() == 'date' && field.value.includes(\" date\")) {\r\n dbField = ' CONVERT(VARCHAR(25),' + field.license_rule_field.table_name + '.' + field.license_rule_field.field_name + ',126) ';\r\n }\r\n else if (field.license_rule_field.format.toLowerCase() == 'date' && field.value.toLowerCase().indexOf('month') >= 0) {\r\n dbField = ' ' + field.license_rule_field.table_name + '.' + field.license_rule_field.field_name + ' ';\r\n }\r\n else if (field.license_rule_field.format.toLowerCase() == 'date' && field.value.toLowerCase().indexOf('year') >= 0) {\r\n dbField = ' ' + field.license_rule_field.table_name + '.' + field.license_rule_field.field_name + ' ';\r\n }\r\n else if (field.license_rule_field.format.toLowerCase() == 'date' && !isNaN(field.value)) {\r\n dbField = ' datediff(day,getDate(), ' + field.license_rule_field.table_name + '.' + field.license_rule_field.field_name + ') ';\r\n }\r\n else if (field.license_rule_field.table_name.toLowerCase() == 'service_user_position') {\r\n dbField = ' V_Service_user_position.PID_' + field.value.replace(/-/g, \"_\") + ' ';\r\n }\r\n else {\r\n dbField = ' ' + field.license_rule_field.table_name + '.' + field.license_rule_field.field_name + ' ';\r\n }\r\n\r\n if (!isUndefined(field.value)) {\r\n if (field.operator.toLowerCase() == 'starting' || field.operator.toLowerCase() == 'ending' || field.value.includes(\" date\")) {\r\n dbField = dbField + ' like ';\r\n }\r\n else {\r\n dbField = dbField + ' ' + field.operator + ' ';\r\n }\r\n }\r\n else {\r\n if (field.operator.toLowerCase() == '=') {\r\n dbField = '(' + dbField + ' is null ';\r\n if (field.license_rule_field.format.toLowerCase() == 'string') {\r\n dbField += 'or ' + field.license_rule_field.table_name + '.' + field.license_rule_field.field_name + \" = '')\";\r\n }\r\n else {\r\n dbField += ')';\r\n }\r\n }\r\n else {\r\n dbField = ' ' + dbField + ' is not null ';\r\n if (field.license_rule_field.format.toLowerCase() == 'string') {\r\n dbField += 'and ' + field.license_rule_field.table_name + '.' + field.license_rule_field.field_name + \" <> ''\";\r\n }\r\n }\r\n }\r\n var today = new Date();\r\n var dd = today.getDate();\r\n var mm = today.getMonth() + 1;\r\n var yyyy = today.getFullYear();\r\n\r\n if (!isUndefined(field.value) && field.license_rule_field.format.toLowerCase() == 'date') {\r\n if (!isNaN(field.value)) {\r\n value = field.value;\r\n }\r\n else if (field.value.includes(\" date\")) {\r\n var date = field.value.substring(6, 10) + '-' + field.value.substring(0, 2) + '-' + field.value.substring(3, 5);\r\n value = \"'\" + date + \"%'\";\r\n }\r\n else if (field.value.toLowerCase().indexOf('month') >= 0) {\r\n totalMonths = field.value.replace(/ months/g, \"\");\r\n today.setMonth(today.getMonth() + parseInt(totalMonths));\r\n mm = today.getMonth() + 1;\r\n yyyy = today.getFullYear();\r\n //Find out how many days are valid in this month\r\n var daysInMonth = new Date(yyyy, mm, 0).getDate();\r\n if (daysInMonth < dd) {\r\n dd = daysInMonth;\r\n }\r\n today = mm + '/' + dd + '/' + yyyy;\r\n value = \"'\" + today + \"'\";\r\n }\r\n else if (field.value.toLowerCase().indexOf('year') >= 0) {\r\n totalYears = field.value.replace(/ years/g, \"\");\r\n yyyy = yyyy + parseInt(totalYears, 10);\r\n\r\n var daysInMonth = new Date(yyyy, mm, 0).getDate();\r\n if (daysInMonth < dd) {\r\n dd = daysInMonth;\r\n }\r\n var newDay = mm + '/' + dd + '/' + yyyy;\r\n\r\n value = \"'\" + newDay + \"'\";\r\n }\r\n else if (field.value instanceof Date && !isNaN(date.valueOf())) {\r\n value = \"'\" + field.value + \"'\";\r\n }\r\n else {\r\n value = \"''\";\r\n }\r\n }\r\n else if (field.license_rule_field.table_name.toLowerCase() == 'service_user_position') {\r\n value = 1;\r\n }\r\n else if (!isUndefined(field.value)) {\r\n if (field.operator.toLowerCase() == 'like') {\r\n value = \"'%\" + field.value + \"%'\";\r\n }\r\n else if (field.operator.toLowerCase() == 'starting') {\r\n value = \"'\" + field.value + \"%'\";\r\n }\r\n else if (field.operator.toLowerCase() == 'ending') {\r\n value = \"'%\" + field.value + \"'\";\r\n }\r\n else {\r\n value = \"'\" + field.value + \"'\";\r\n }\r\n }\r\n else {\r\n value = '';\r\n }\r\n\r\n if (field.right_parenthesis != null) {\r\n right = field.right_parenthesis;\r\n }\r\n\r\n clauses += left + dbField + value + right + '\\n';\r\n })\r\n\r\n return clauses;\r\n }\r\n\r\n return {\r\n get: function (licenseID) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/licenserules', {\r\n params: {\r\n licenseID: licenseID,\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getByID: function (id) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/licenserules/' + id, {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n // This function will return the fields, criteria, list columns, and number of clauses the rules create.\r\n build: function (rules) {\r\n var clauses = '';\r\n var fields = '';\r\n var numOfClauses = 3;\r\n var columns = [];\r\n rules.forEach(function (rule) {\r\n if (rule != null && rule.license_rule_field_values != null && rule.license_rule_field_values.length > 0) {\r\n numOfClauses += rule.license_rule_field_values.length;\r\n\r\n clauses += buildClause(rule);\r\n\r\n if (fields == '') {\r\n fields = buildField(rule, fields, columns);\r\n }\r\n else {\r\n fields += ',' + buildField(rule, fields, columns);\r\n }\r\n }\r\n })\r\n if (numOfClauses > 6) {\r\n numOfClauses -= 3;\r\n }\r\n\r\n return {\r\n clauses: clauses,\r\n fields: fields,\r\n columns: columns,\r\n numOfClauses: numOfClauses\r\n }\r\n }\r\n }\r\n }])\r\n ;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('LicenseScheduledTaskLogs', ['$http', '$q', function ($http, $q) {\r\n\r\n return {\r\n\r\n get: function (args) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/licenseScheduledTaskLogs/', {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getByID: function (id) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/licenseScheduledTaskLogs/' + id, {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n }\r\n }])\r\n ;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('LicenseScheduledTasks', ['$http', '$q', 'Enterprise', function ($http, $q, Enterprise) {\r\n\r\n return {\r\n\r\n get: function (args) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/licenseScheduledTasks/', {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n return d.promise;\r\n },\r\n\r\n getCertificationIDs: function (scheduled_task_id) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/licenseScheduledTasks/getCertificationIDs', {\r\n params: {\r\n scheduled_task_id: scheduled_task_id\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getCertifications: function (certsArray) {\r\n var d = $q.defer();\r\n\r\n var method = 'POST';\r\n var url = apiLocation + '/api/licenseScheduledTasks/getCertifications';\r\n\r\n $http({\r\n method: method,\r\n url: url,\r\n data: {\r\n certsArray: certsArray\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n save: function (license_scheduled_task) {\r\n var d = $q.defer();\r\n\r\n var method = 'POST';\r\n var url = apiLocation + '/api/licenseScheduledTasks/';\r\n if (!isUndefined(license_scheduled_task.id)) {\r\n method = 'PUT';\r\n url += license_scheduled_task.id;\r\n }\r\n\r\n Enterprise.get({ enterpriseID: license_scheduled_task.enterprise_id }).then(function (enterprise) {\r\n var timeString = license_scheduled_task.frequency_begin_time == null ? \"12:00:00\" : license_scheduled_task.frequency_begin_time.toString();\r\n var begin_time_hours = timeString.substr(0, 2);\r\n var begin_time_minutes = timeString.substr(timeString.indexOf(\":\") + 1, 2);\r\n var begin_date_time_string = new Date(1900, 0, 1, parseInt(begin_time_hours), parseInt(begin_time_minutes)).toString();\r\n var date_string = new Date(begin_date_time_string).toLocaleString();\r\n var frequency_begin_date = new Date(date_string);\r\n\r\n Date.prototype.subtractHours = function (h) {\r\n this.setTime(this.getTime() - (h * 60 * 60 * 1000));\r\n return this;\r\n }\r\n\r\n frequency_begin_date.subtractHours(enterprise.server_spec.utc_to_server_hours);\r\n // British English uses 24-hour time without AM/PM\r\n var frequency_begin_time = frequency_begin_date.toLocaleTimeString('en-GB');\r\n license_scheduled_task.frequency_begin_time = frequency_begin_time;\r\n\r\n $http({\r\n method: method,\r\n url: url,\r\n data: {\r\n license_scheduled_task: license_scheduled_task,\r\n license_scheduled_task_criteria_statuses: license_scheduled_task.license_scheduled_task_criteria_statuses,\r\n license_scheduled_task_criteria_levels: license_scheduled_task.license_scheduled_task_criteria_levels,\r\n license_scheduled_task_merge_templates: license_scheduled_task.license_scheduled_task_merge_templates,\r\n license_scheduled_task_createalerts: license_scheduled_task.license_scheduled_task_createalerts,\r\n license_scheduled_task_retirealerts: license_scheduled_task.license_scheduled_task_retirealerts\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n saveStatuses: function (license_category_id, license_id) {\r\n var d = $q.defer();\r\n\r\n $http.get(apiLocation + '/api/licenseScheduledTasks/saveStatuses', {\r\n params: {\r\n license_category_id: license_category_id,\r\n license_id: license_id\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n saveLevels: function (license_category_id, license_id) {\r\n var d = $q.defer();\r\n\r\n $http.get(apiLocation + '/api/licenseScheduledTasks/saveLevels', {\r\n params: {\r\n license_category_id: license_category_id,\r\n license_id: license_id\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n delete: function (id) {\r\n var d = $q.defer();\r\n\r\n $http.delete(apiLocation + '/api/licenseScheduledTasks/' + id, {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n run: function (scheduled_task_id) {\r\n var d = $q.defer();\r\n\r\n $http.get(apiLocation + '/api/licenseScheduledTasks/run', {\r\n params: {\r\n scheduled_task_id: scheduled_task_id\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n return d.promise;\r\n }\r\n }\r\n }])\r\n ;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('LicenseStatuses', ['$http', '$q', function ($http, $q) {\r\n return {\r\n get: function () {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/licensestatuses', {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getByID: function (id) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/licensestatuses/' + id, {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n\r\n }\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('Licenses', ['$http', '$q', function ($http, $q) {\r\n return {\r\n get: function (args) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/licenses', {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getByID: function (id) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/licenses/' + id, {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n save: function (license) {\r\n var d = $q.defer();\r\n\r\n var method = 'POST';\r\n var url = apiLocation + '/api/licenses/';\r\n if (!isUndefined(license.id)) {\r\n method = 'PUT'\r\n url += license.id\r\n }\r\n\r\n $http({\r\n method: method,\r\n url: url,\r\n data: {\r\n license: license,\r\n license_rules: license.license_rules,\r\n license_request_statuses: license.license_request_statuses,\r\n license_category_certification_statuses: license.license_category_certification_statuses,\r\n license_category_levels: license.license_category_levels,\r\n license_category_certification_attributes: license.license_category_certification_attributes,\r\n processes: license.modified_processes\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n delete: function (id) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .delete(apiLocation + '/api/licenses/' + id, {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n }\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('Logger', ['$http', '$q', function ($http, $q) {\r\n return {\r\n logAccess: function (user_id, field) {\r\n var d = $q.defer();\r\n\r\n $http({\r\n method: 'POST',\r\n url: apiLocation + '/api/Logger/LogAccess',\r\n data: {\r\n user_id: user_id,\r\n field: field\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n logFormProgress: function (text, fb_response_id) {\r\n var d = $q.defer();\r\n\r\n $http({\r\n method: 'POST',\r\n url: apiLocation + '/api/Logger/LogFormProgress',\r\n data: {\r\n text: text,\r\n fb_response_id: fb_response_id\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n logAngularApiErrors: function (data, status, config) {\r\n var d = $q.defer();\r\n\r\n var message = 'Message: ' + data.message + ' Method: ' + config.method + ' URL: ' + config.url + ' Status: ' + status;\r\n\r\n $http({\r\n method: 'POST',\r\n url: apiLocation + '/api/Logger/LogAngularApiErrors',\r\n data: {\r\n errorText: message\r\n }\r\n }).\r\n then(function (data, status, headers, config) {\r\n d.resolve(data);\r\n }).\r\n catch(function (data, status, headers, config) {\r\n\r\n })\r\n\r\n return d.promise;\r\n }\r\n }\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('MergeContactGroups', ['$http', '$q', function ($http, $q) {\r\n return {\r\n get: function (code) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/MergeContactGroups', {\r\n params: {\r\n code: code\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getByID: function (id) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/MergeContactGroups/' + id, {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n }\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('MergeFields', ['$http', '$q', function ($http, $q) {\r\n return {\r\n get: function (code) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/MergeFields', {\r\n params: {\r\n code: code\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n }\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('MergeObjects', ['$http', '$q', function ($http, $q) {\r\n return {\r\n get: function (code) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/MergeObjects', {\r\n params: {\r\n code: code\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n }\r\n }])\r\n;","\"use strict\";\r\n\r\nangular.module(\"licensure.services\").factory(\"MergeTemplates\", [\r\n \"$http\",\r\n \"$q\",\r\n function($http, $q) {\r\n var get = function(code) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + \"/api/mergetemplates\", {\r\n params: {\r\n code: code\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n };\r\n\r\n return {\r\n get: get,\r\n\r\n getInspectionTemplates: function() {\r\n return get(\"Inspections\");\r\n },\r\n\r\n getInvestigationTemplates: function() {\r\n return get(\"Investigations\");\r\n },\r\n\r\n getInspectionVisitTemplates: function() {\r\n return get(\"Inspection Visits\");\r\n },\r\n\r\n getExamsTemplates: function() {\r\n return get(\"Exams\");\r\n },\r\n\r\n getbyid: function(id) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + \"/api/mergetemplates/\" + id, {\r\n params: {}\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n save: function(merge_template) {\r\n var d = $q.defer();\r\n\r\n var method = \"POST\";\r\n var url = apiLocation + \"/api/mergetemplates/\";\r\n if (!isUndefined(merge_template.id)) {\r\n method = \"PUT\";\r\n url += merge_template.id;\r\n }\r\n\r\n $http({\r\n method: method,\r\n url: url,\r\n data: {\r\n merge_template: merge_template\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n delete: function(id) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .delete(apiLocation + \"/api/mergetemplates/\" + id, {\r\n params: {}\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n };\r\n }\r\n]);\r\n","'use strict';\n\nangular.module('licensure.services')\n .factory('NationalRegistryIntegrationData', ['$http', '$q', function ($http, $q) {\n return {\n save: function (national_registry_integration_data) {\n var d = $q.defer();\n\n var method = 'POST';\n var url = apiLocation + '/api/NationalRegistryIntegrationData/';\n\n $http({\n method: method,\n url: url,\n data: {\n national_registry_integration_data: national_registry_integration_data\n }\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\n\n return d.promise;\n }\n }\n }])\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('Notes', ['$http', '$q', function ($http, $q) {\r\n return {\r\n getByID: function (id) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/Notes/' + id, {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n save: function (note, value) {\r\n var d = $q.defer();\r\n\r\n var method = 'POST';\r\n var url = apiLocation + '/api/Notes/';\r\n if (!isUndefined(note.id)) {\r\n method = 'PUT'\r\n url += note.id\r\n }\r\n\r\n $http({\r\n method: method,\r\n url: url,\r\n data: {\r\n note: note,\r\n value: value\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n delete: function (id) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .delete(apiLocation + '/api/Notes/' + id, {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n }\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('NREMTLevels', ['$http', '$q', function ($http, $q) {\r\n return {\r\n get: function () {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/nremtlevels', {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n }\r\n }])\r\n;","'use strict';\n\nangular.module('licensure.services')\n .factory('NREMTStatuses', ['$http', '$q', function ($http, $q) {\n return {\n get: function () {\n var d = $q.defer();\n\n $http\r\n .get(apiLocation + '/api/nremtstatuses', {\n params: {\n\n }\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\n\n return d.promise;\n }\n }\n }])\n ;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('InternalPage', ['$http', '$q', '$rootScope', 'Cache', function ($http, $q, $rootScope, Cache) {\r\n return {\r\n get: function (args) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/Core/PageObjects', {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n return null;\r\n });\r\n\r\n return d.promise;\r\n }\r\n }\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('Payments', ['$http', '$q', function ($http, $q) {\r\n return {\r\n\r\n GetSessionDataForPayment: function () {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/payments/GetSessionDataForPayment', {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getLicenseRequestTotals: function (items) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/payments/GetLicenseRequestTotals', {\r\n params: {\r\n items: items\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getAttributes: function () {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/payments/getAttributes', {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getPaymentMethods: function () {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/payments/getPaymentMethods', {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getCheckingAccountTypes: function () {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/payments/getCheckingAccountTypes', {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getCreditCardTypes: function () {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/payments/getCreditCardTypes', {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getDebitCardTypes: function () {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/payments/getDebitCardTypes', {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n sign: function (fields) {\r\n var d = $q.defer();\r\n\r\n $http.post(apiLocation + '/api/payments/sign', fields)\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n return d.promise;\r\n },\r\n\r\n directPayment: function (payment) {\r\n var d = $q.defer();\r\n\r\n $http.post(apiLocation + '/api/payments/directPayment', payment)\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n preSaveCyberSource: function (fields, args) {\r\n var d = $q.defer();\r\n\r\n var data = {\r\n fields: fields,\r\n args: args\r\n }\r\n\r\n $http({\r\n method: 'POST',\r\n url: apiLocation + '/api/payments/preSaveCyberSource',\r\n data: data\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n d.resolve(null);\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n payElavon: function (args) {\r\n var d = $q.defer();\r\n\r\n $http({\r\n method: 'POST',\r\n url: apiLocation + '/api/elavon/pay',\r\n data: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n d.resolve(null);\r\n });\r\n\r\n return d.promise;\r\n }\r\n }\r\n }])\r\n ;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('PolicyClassifications', ['$http', '$q', function ($http, $q) {\r\n\r\n var get = function (type) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/policyclassifications', {\r\n params: {\r\n type: type\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n\r\n return {\r\n get: function() {\r\n return get(null);\r\n },\r\n\r\n getPolicy: function () {\r\n return get('Policy');\r\n },\r\n\r\n getProtocol: function () {\r\n return get('Protocol');\r\n },\r\n\r\n getByID: function (id) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/policyclassifications/' + id, {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n\r\n }\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('PolicyStatuses', ['$http', '$q', function ($http, $q) {\r\n return {\r\n get: function () {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/policystatuses', {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n }\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('PolicyTypes', ['$http', '$q', function ($http, $q) {\r\n return {\r\n get: function () {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/policytypes', {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getByID: function (id) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/policytypes/' + id, {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n }\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('PortalPages', ['$http', '$q', function ($http, $q) {\r\n return {\r\n get: function (args) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/PortalPages', {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n }\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('Positions', ['$http', '$q', function ($http, $q) {\r\n var get = function (args) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/positions', {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n\r\n var getServicePositions = function (args) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/positions/servicePositions', {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n\r\n return {\r\n get: get,\r\n\r\n getServicePositions: getServicePositions,\r\n\r\n getByID: function (id) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/positions/' + id, {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getServiceDesignation: function (args) {\r\n if (args == null) {\r\n args = {};\r\n }\r\n\r\n if (args.service_id === undefined || args.service_id === null) {\r\n return get(angular.extend({}, args, { service_designation: true }));\r\n }\r\n else {\r\n return getServicePositions(angular.extend({}, args, { service_designation: true }));\r\n }\r\n },\r\n }\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('ProcessEnterprises', ['$http', '$q', function ($http, $q ) {\r\n return {\r\n get: function () {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/processenterprises', {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n \r\n }\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('ProcessLicenses', ['$http', '$q', function ($http, $q) {\r\n return {\r\n get: function (license_id) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/processlicenses', {\r\n params: {\r\n license_id: license_id\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n save: function (process_license) {\r\n var d = $q.defer();\r\n\r\n var method = 'POST';\r\n var url = apiLocation + '/api/processlicenses/';\r\n if (!isUndefined(process_license.id)) {\r\n method = 'PUT'\r\n url += process_license.id\r\n }\r\n\r\n $http({\r\n method: method,\r\n url: url,\r\n data: {\r\n process_license: process_license,\r\n process_statuses: process_license.process_statuses\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n delete: function (id) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .delete(apiLocation + '/api/processlicenses/' + id, {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n }\r\n }])\r\n;","\"use strict\";\r\n\r\nangular.module(\"licensure.services\").factory(\"Process\", [\r\n \"$http\",\r\n \"$q\",\r\n function($http, $q) {\r\n return {\r\n get: function() {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + \"/api/Process\", {\r\n params: {}\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n GetApplicationProcesses: function () {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + \"/api/Process\", {\r\n params: {\r\n ProcessTypeID: \"0491A896-8D28-4C76-9716-FC466C985B7A\",\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n };\r\n }\r\n]);\r\n","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('ProcessStatuses', ['$http', '$q', function ($http, $q) {\r\n return {\r\n get: function (license_id) {\r\n var d = $q.defer();\r\n\r\n $http.get(apiLocation + '/api/processstatuses', {\r\n params: {\r\n license_id: license_id\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n delete: function (id) {\r\n var d = $q.defer();\r\n\r\n $http.delete(apiLocation + '/api/processstatuses/' + id, {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n }\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('Queries', ['$http', '$q', function ($http, $q) {\r\n return {\r\n get: function (state, availableOnly) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/queries/getqueries', {\r\n params: {\r\n state: state,\r\n availableOnly: availableOnly\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getByID: function (id) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/queries/getquery/' + id, {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getColumns: function (page) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/queries/getcolumns/' + page, {\r\n params: {\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getFilters: function (page) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/queries/getfilters/' + page, {\r\n params: {\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getAdvancedFilters: function (page) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/queries/getadvancedfilters/' + page, {\r\n params: {\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getFields: function (page) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/queries/getfields/' + page, {\r\n params: {\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getField: function (id) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/queries/getfield/' + id, {\r\n params: {\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getSecurityGroups: function () {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/queries/getsecuritygroups/', {\r\n params: {\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n save: function (query, default_view) {\r\n var d = $q.defer();\r\n\r\n var method = \"POST\";\r\n var url = apiLocation + \"/api/queries/\";\r\n if (!isUndefined(query.id)) {\r\n method = \"PUT\";\r\n url += query.id;\r\n }\r\n\r\n $http({\r\n method: method,\r\n url: url,\r\n data: {\r\n query: query,\r\n default_view: default_view,\r\n columns: query.query_column_values,\r\n filters: query.query_filter_values,\r\n advanced_filters: query.query_advanced_filter_values,\r\n criteria: query.query_criteria,\r\n view_groups: query.query_security_group_viewers,\r\n edit_groups: query.query_security_group_editors,\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n delete: function (id) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .delete(apiLocation + \"/api/queries/\" + id, {\r\n params: {}\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n\r\n }\r\n }])\r\n ;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('Regions', ['$http', '$q', function ($http, $q) {\r\n return {\r\n get: function () {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/regions', {\r\n params: {\r\n \r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n GetAbbreviation: function () {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/regions/getAbbreviation', {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getByID: function (id) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/regions/' + id, {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n }\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('Saml', ['$http', '$q', '$stateParams', function ($http, $q, $stateParams) {\r\n return {\r\n idpSignIn: function (entityId) {\r\n var d = $q.defer();\r\n $http\r\n .get(apiLocation + \"/api/Saml20/SignIn?idp=\" + entityId, {\r\n params: {}\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n if (!$stateParams.messages) {\r\n $stateParams.messages = [];\r\n }\r\n $stateParams.messages[0] = \"There was an unexpected issue with the sign-in process. Please try again later.\";\r\n d.resolve(null);\r\n })\r\n return d.promise;\r\n },\r\n idpSignOut: function (returnUrl) {\r\n var d = $q.defer();\r\n $http\r\n .get(apiLocation + \"/api/Saml20/Logout?redirect=false&ReturnUrl=\" + encodeURIComponent(returnUrl), {\r\n params: {}\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n return d.promise;\r\n },\r\n }\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('SBRegions', ['$http', '$q', function ($http, $q) {\r\n return {\r\n get: function () {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/sbregions', {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n }\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('SecurityTemplatePermissions', ['$http', '$q', function ($http, $q) {\r\n return {\r\n get: function (userPermissions) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/securitytemplatepermissions', {\r\n params: {\r\n userPermissions: userPermissions\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n }\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('ServiceAreaCensusTracts', ['$http', '$q', function ($http, $q) {\r\n var get = function (args) {\r\n var d = $q.defer();\r\n \r\n $http\r\n .get(apiLocation + '/api/serviceareacensustracts', {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n\r\n var getByID = function (id) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/serviceareacensustracts/getbyid/' + id, {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n\r\n\r\n var getByStateCode = function (stateCode) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/serviceareacensustracts/getbystatecode', {\r\n params: {\r\n stateCode: stateCode\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n\r\n\r\n return {\r\n get: get,\r\n\r\n getByID: getByID,\r\n\r\n getByStateCode: getByStateCode\r\n }\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('ServiceAreaCities', ['$http', '$q', function ($http, $q) {\r\n var get = function (args) {\r\n var d = $q.defer();\r\n \r\n $http\r\n .get(apiLocation + '/api/serviceareacities', {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n\r\n var getByID = function (id) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/serviceareacities/getbyid/' + id, {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n\r\n\r\n var getByStateCode = function (stateCode) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/serviceareacities/getbystatecode', {\r\n params: {\r\n stateCode: stateCode\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n\r\n \r\n return {\r\n get: get,\r\n\r\n getByID: getByID,\r\n\r\n getByStateCode: getByStateCode\r\n }\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('ServiceAreaCounties', ['$http', '$q', function ($http, $q) {\r\n var get = function (args) {\r\n var d = $q.defer();\r\n \r\n $http\r\n .get(apiLocation + '/api/serviceareacounties', {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n\r\n var getByID = function (id) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/serviceareacounties/getbyid/' + id, {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n\r\n\r\n var getByStateCode = function (stateCode) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/serviceareacounties/getbystatecode', {\r\n params: {\r\n stateCode: stateCode\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n\r\n\r\n return {\r\n get: get,\r\n\r\n getByID: getByID,\r\n\r\n getByStateCode: getByStateCode\r\n }\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('ServiceAreaPostalCodes', ['$http', '$q', function ($http, $q) {\r\n var get = function (args) {\r\n var d = $q.defer();\r\n \r\n $http\r\n .get(apiLocation + '/api/serviceareapostalcodes', {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n\r\n var getByID = function (id) {\r\n var d = $q.defer();\r\n\r\n $http.get(apiLocation + '/api/serviceareapostalcodes/getbyid/' + id, {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n\r\n var getByStateCode = function (stateCode) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/serviceareapostalcodes/getbystatecode', {\r\n params: {\r\n stateCode: stateCode\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n\r\n\r\n return {\r\n get: get,\r\n\r\n getByID: getByID,\r\n\r\n getByStateCode: getByStateCode\r\n }\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('ServiceAreas', ['$http', '$q', function ($http, $q) {\r\n var get = function (args) {\r\n var d = $q.defer();\r\n \r\n $http\r\n .get(apiLocation + '/api/serviceareas', {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n\r\n var getByID = function (id) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/serviceareas/' + id, {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n\r\n return {\r\n get: get,\r\n\r\n getByID: getByID\r\n }\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('ServiceStations', ['$http', '$q', function ($http, $q) {\r\n var get = function (args) {\r\n var d = $q.defer();\r\n \r\n $http.get(apiLocation + '/api/servicestations', {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n\r\n var getByID = function (id) {\r\n var d = $q.defer();\r\n\r\n $http.get(apiLocation + '/api/servicestations/' + id, {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n\r\n return {\r\n get: get,\r\n\r\n getByID: getByID\r\n }\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('ServiceUserLongevities', ['$http', '$q', function ($http, $q) {\r\n var save = function (service_user_longevity) {\r\n var d = $q.defer();\r\n\r\n var method = 'POST';\r\n var url = apiLocation + '/api/ServiceUserLongevities/';\r\n if (!isUndefined(service_user_longevity.id)) {\r\n method = 'PUT'\r\n url += service_user_longevity.id\r\n }\r\n\r\n $http({\r\n method: method,\r\n url: url,\r\n data: {\r\n service_user_longevity: service_user_longevity\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n\r\n return {\r\n get: function (args) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/ServiceUserLongevities', {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getByID: function (id) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/ServiceUserLongevities/' + id, {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getCount: function (args) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/ServiceUserLongevities/GetCount', {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n save: save,\r\n\r\n delete: function (id) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .delete(apiLocation + '/api/ServiceUserLongevities/' + id, {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n manualRedemption: function (userID) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .post(apiLocation + '/api/ServiceUserLongevities/ManualRedemption', {\r\n user_id: userID\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n saveElement: function (answers, licenseRequestID) {\r\n var d = $q.defer();\r\n var longevities = [];\r\n\r\n answers.forEach(function (answer) {\r\n if (answer.license_request_id != null && answer.service_id != null && answer.user_id != null && answer.approve) {\r\n var saveAnswer = angular.copy(answer);\r\n longevities.push(saveAnswer);\r\n }\r\n });\r\n\r\n $http({\r\n method: 'POST',\r\n url: apiLocation + '/api/ServiceUserLongevities/saveElement',\r\n data: {\r\n service_user_longevities: longevities,\r\n license_request_id: licenseRequestID\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n console.log(response.data);\r\n });\r\n\r\n return d.promise;\r\n }\r\n }\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('ServiceUserLongevityCredits', ['$http', '$q', function ($http, $q) {\r\n var save = function (service_user_longevity_credit) {\r\n var d = $q.defer();\r\n\r\n var method = 'POST';\r\n var url = apiLocation + '/api/ServiceUserLongevityCredits/';\r\n if (!isUndefined(service_user_longevity_credit.id)) {\r\n method = 'PUT'\r\n url += service_user_longevity_credit.id\r\n }\r\n\r\n $http({\r\n method: method,\r\n url: url,\r\n data: {\r\n service_user_longevity_credit: service_user_longevity_credit\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n\r\n return {\r\n get: function (args) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/ServiceUserLongevityCredits', {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getCount: function(args) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/ServiceUserLongevityCredits/getcount', {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise; \r\n },\r\n\r\n save: save,\r\n\r\n delete: function (id) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .delete(apiLocation + '/api/ServiceUserLongevityCredits/' + id, {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n }\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('ServiceUserTrainings', ['$http', '$q', function ($http, $q) {\r\n var save = function (service_user_training) {\r\n var d = $q.defer();\r\n\r\n var method = 'POST';\r\n var url = apiLocation + '/api/ServiceUserTrainings/';\r\n if (!isUndefined(service_user_training.id)) {\r\n method = 'PUT'\r\n url += service_user_training.id\r\n }\r\n\r\n $http({\r\n method: method,\r\n url: url,\r\n data: {\r\n service_user_training: service_user_training\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n\r\n return {\r\n get: function (args) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/ServiceUserTrainings', {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getByID: function (id) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/ServiceUserTrainings/' + id, {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n save: save,\r\n\r\n delete: function (id) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .delete(apiLocation + '/api/ServiceUserTrainings/' + id, {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n saveElement: function (answers, licenseRequestID) {\r\n var d = $q.defer();\r\n var reimbursements = [];\r\n\r\n answers.forEach(function (answer) {\r\n if (answer.reimburse && answer.license_request_id != null && answer.service_id != null && answer.user_id != null && answer.training_id != null) {\r\n var saveAnswer = angular.copy(answer);\r\n saveAnswer.training = null;\r\n saveAnswer.trainings = null;\r\n reimbursements.push(saveAnswer);\r\n }\r\n });\r\n\r\n $http({\r\n method: 'POST',\r\n url: apiLocation + '/api/ServiceUserTrainings/saveElement',\r\n data: {\r\n service_user_trainings: reimbursements,\r\n license_request_id: licenseRequestID\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n }\r\n }])\r\n;","\"use strict\";\r\n\r\nangular.module(\"licensure.services\").factory(\"Services\", [\r\n \"$http\",\r\n \"$q\",\r\n function ($http, $q) {\r\n var get = function (args) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + \"/api/services\", {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n };\r\n\r\n var getByID = function (id, getLess) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + \"/api/services/\" + id, {\r\n params: {\r\n getLess: getLess\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n };\r\n\r\n var getExpiring = function (serviceClassification, rangeLength, length, inactiveVehicle, inactiveService, activeVehicle, activeService, hideEmptyExpireDate) {\r\n var d = $q.defer();\r\n if (isUndefined(serviceClassification) || serviceClassification == null) {\r\n serviceClassification = \"none\"\r\n }\r\n\r\n $http\r\n .get(apiLocation + \"/api/services/getexpiring\", {\r\n params: {\r\n serviceClassification: serviceClassification,\r\n rangeLength: rangeLength,\r\n length: length,\r\n inactiveVehicle: inactiveVehicle,\r\n inactiveService: inactiveService,\r\n activeVehicle: activeVehicle,\r\n activeService: activeService,\r\n hideEmptyExpireDate: hideEmptyExpireDate\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n };\r\n\r\n var getLess = function (args) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + \"/api/services/getless\", {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n };\r\n\r\n return {\r\n get: get,\r\n getByID: getByID,\r\n getExpiring: getExpiring,\r\n getLess: getLess,\r\n\r\n getActive: function (args) {\r\n if (args == null) {\r\n args = {};\r\n }\r\n args.activeOnly = true;\r\n return get(args);\r\n },\r\n\r\n getLessActive: function (args) {\r\n if (args == null) {\r\n args = {};\r\n }\r\n args.activeOnly = true;\r\n return getLess(args);\r\n },\r\n\r\n getWithHierarchy: function (args) {\r\n var d = $q.defer();\r\n\r\n if (args == null) {\r\n args = {};\r\n }\r\n args.activeOnly = false;\r\n args.hierarchy = true;\r\n args.allUsers = true;\r\n\r\n get(args).then(function (services) {\r\n if (services != null) {\r\n var allServices = [];\r\n services.forEach(function (service) {\r\n allServices.push(service);\r\n if (service.children != null) {\r\n service.children.forEach(function (child) {\r\n allServices.push(child);\r\n });\r\n }\r\n });\r\n d.resolve(allServices);\r\n } else {\r\n d.resolve(services);\r\n }\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getPotentialChildren: function (args) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + \"/api/services/getchildchoices\", {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n d.resolve(response.data);\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n search: function (args, timeout) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + \"/api/services/search\", {\r\n params: args,\r\n timeout: timeout != null ? timeout.promise : null\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n d.resolve(response.data);\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n // for the user lookup\r\n getByUserID: function (user_id, detail, enterprise_id) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + \"/api/Services/getbyuserid\", {\r\n params: {\r\n user_id: user_id,\r\n detail: detail,\r\n enterprise_id: enterprise_id\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getCounties: function () {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + \"/api/services/getcounties\", {\r\n params: {}\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getServiceAffiliationCounties: function () {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + \"/api/core/service/serviceaffiliationcounties\", {\r\n params: {}\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getSponsors: function () {\r\n var args = {\r\n activeOnly: true,\r\n sponsor: true\r\n };\r\n return get(args);\r\n },\r\n\r\n getTopLevelRegionList: function (args) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + \"/api/services/gettoplevelregionlist\", {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n d.resolve(response.data);\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n PublicLookupService: function (args) {\r\n var d = $q.defer();\r\n\r\n var newArgs = {\r\n enterprise_id: args.enterprise_id,\r\n primaryCertificationNumber: args.primary_license_number,\r\n serviceName: args.service_name,\r\n primaryCertificationLevel: args.primary_license_level,\r\n certLevel: args.certification_level_id,\r\n trainingLevel: args.training_levels,\r\n permitLevel: args.service_permit_level,\r\n classificationLevel: args.classification,\r\n city: args.city,\r\n county: args.county,\r\n records_offset: args.records_offset,\r\n records_total: args.records_total,\r\n sort_fields: args.sort_fields,\r\n sort_direction: args.sort_direction,\r\n serviceID: args.serviceID\r\n };\r\n\r\n $http\r\n .post(apiLocation + \"/api/services/PublicLookupService\", newArgs)\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getServiceLookupCount: function (args) {\r\n var d = $q.defer();\r\n\r\n var newArgs = {\r\n enterprise_id: args.enterprise_id,\r\n primaryCertificationNumber: args.primary_license_number,\r\n serviceName: args.service_name,\r\n primaryCertificationLevel: args.primary_license_level,\r\n trainingLevel: args.training_levels,\r\n permitLevel: args.service_permit_level,\r\n classificationLevel: args.classification,\r\n city: args.city,\r\n county: args.county,\r\n certificationLevel: args.certification_level_id\r\n };\r\n\r\n $http\r\n .post(\r\n apiLocation + \"/api/services/getservicelookupcount\",\r\n newArgs\r\n )\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getServiceAlerts: function (args) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + \"/api/services/getservicealerts\", {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getServiceCertifications: function (service_id, detail, enterprise_id) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + \"/api/services/getservicecertifications\", {\r\n params: {\r\n service_id: service_id,\r\n detail: detail,\r\n enterprise_id: enterprise_id\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n return d.promise;\r\n },\r\n\r\n getServiceVehicles: function (args) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + \"/api/services/serviceVehicles\", {\r\n params: {\r\n search: args.search\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getServicesFromVehicleId: function (vehicleId) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + \"/api/services/servicesFromVehicleId/\" + vehicleId, {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n };\r\n }\r\n]);\r\n","\"use strict\";\r\n\r\nangular.module(\"licensure.services\").factory(\"Session\", [\r\n \"$http\",\r\n \"$q\",\r\n function ($http, $q) {\r\n return {\r\n checkIn: function () {\r\n var d = $q.defer();\r\n\r\n $http({\r\n method: \"PUT\",\r\n url: apiLocation + \"/api/session/checkin\",\r\n data: {}\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n CheckSession: function () {\r\n var d = $q.defer();\r\n\r\n $http({\r\n method: \"GET\",\r\n url: apiLocation + \"/api/session/CheckSession\",\r\n data: {}\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n\r\n expireSession: function (isPortal) {\r\n var d = $q.defer();\r\n\r\n $http({\r\n method: \"PUT\",\r\n url: apiLocation + \"/api/session/expireSession\",\r\n params: { isPortal: isPortal }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n IsSessionAlive: function (sessionId) {\r\n var d = $q.defer();\r\n\r\n $http({\r\n method: \"GET\",\r\n url: apiLocation + \"/api/session/IsSessionAlive\",\r\n data: {}\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n d.resolve(null);\r\n });\r\n\r\n return d.promise;\r\n },\r\n };\r\n }\r\n]);\r\n","\"use strict\";\r\n\r\nangular.module(\"licensure.services\").factory(\"Statuses\", [\r\n \"$http\",\r\n \"$q\",\r\n function($http, $q) {\r\n return {\r\n get: function() {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + \"/api/Statuses\", {\r\n params: {}\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n getProcessStatuses: function (ProcessID) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/Statuses', {\r\n params: {\r\n ProcessID: ProcessID\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n };\r\n }\r\n]);\r\n","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('TrainingFields', ['$http', '$q', function ($http, $q) {\r\n return {\r\n get: function () {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/EducationModule/GetSelfEnteredCourseFields', {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n }\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('TGTriggerConfigurations', ['$http', '$q', function ($http, $q) {\r\n return {\r\n get: function () {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/TGTriggerConfigurations', {\r\n params: {\r\n \r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n save: function (trigger_configuration) {\r\n var d = $q.defer();\r\n\r\n var method = 'POST';\r\n var url = apiLocation + '/api/TGTriggerConfigurations/';\r\n if (!isUndefined(trigger_configuration.id)) {\r\n method = 'PUT'\r\n url += trigger_configuration.id\r\n }\r\n\r\n $http({\r\n method: method,\r\n url: url,\r\n data: {\r\n trigger_configuration: trigger_configuration\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n };\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('TGTriggerFunctions', ['$http', '$q', function ($http, $q) {\r\n return {\r\n get: function () {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/TGTriggerFunctions', {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n };\r\n }])\r\n;","\"use strict\";\r\n\r\nangular.module(\"licensure.services\").factory(\"TGTriggerGroups\", [\r\n \"$http\",\r\n \"$q\",\r\n \"$injector\",\r\n function($http, $q, $injector) {\r\n var get = function(code, configID) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + \"/api/TGTriggerGroups\", {\r\n params: {\r\n code: code,\r\n configID: configID\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n };\r\n\r\n var checkObjectTriggers = function(trigger) {\r\n var d = $q.defer();\r\n\r\n if (trigger.service != null) {\r\n trigger.objectTriggers = [];\r\n var service = $injector.get(trigger.service);\r\n var method = \"get\";\r\n\r\n if (trigger.method != null) {\r\n method = trigger.method;\r\n }\r\n service[method]().then(function(objects) {\r\n if (objects != null) {\r\n objects.forEach(function(object) {\r\n var objectTrigger = angular.copy(trigger);\r\n objectTrigger.trigger_object_id = object.id;\r\n objectTrigger.trigger_object_name = object.name;\r\n objectTrigger.trigger_action_values = [];\r\n\r\n trigger.trigger_action_values.forEach(function(\r\n tav\r\n ) {\r\n if (tav.trigger_object_id == object.id) {\r\n objectTrigger.trigger_action_values.push(\r\n tav\r\n );\r\n }\r\n });\r\n\r\n objectTrigger.previous_actions = angular.copy(\r\n objectTrigger.trigger_action_values\r\n );\r\n trigger.objectTriggers.push(objectTrigger);\r\n });\r\n }\r\n\r\n d.resolve();\r\n });\r\n } else {\r\n trigger.previous_actions = angular.copy(\r\n trigger.trigger_action_values\r\n );\r\n d.resolve();\r\n }\r\n\r\n return d.promise;\r\n };\r\n\r\n return {\r\n get: get,\r\n\r\n getConfiguration: function(code, configID) {\r\n var d = $q.defer();\r\n var promises = [];\r\n\r\n get(code, configID).then(function(groups) {\r\n groups.forEach(function(group) {\r\n group.triggers.forEach(function(trigger) {\r\n promises.push(checkObjectTriggers(trigger));\r\n });\r\n });\r\n\r\n $q.all(promises).then(function() {\r\n d.resolve(groups);\r\n }).catch(function (response) {\r\n // handle error\r\n });\r\n });\r\n\r\n return d.promise;\r\n }\r\n };\r\n }\r\n]);\r\n","\"use strict\";\r\n\r\nangular.module(\"licensure.services\").factory(\"TGTriggers\", [\r\n \"$http\",\r\n \"$q\",\r\n function($http, $q) {\r\n return {\r\n get: function() {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + \"/api/TGTriggers/\", {\r\n params: {}\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getByID: function(id, trigger_object_id, config_id) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + \"/api/TGTriggers/\" + id, {\r\n params: {\r\n trigger_object_id: trigger_object_id,\r\n config_id: config_id\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n save: function (trigger, trigger_object_id, trigger_config_id) {\r\n var d = $q.defer();\r\n\r\n\r\n if (isUndefined(trigger.id)) {\r\n d.resolve(null);\r\n } else {\r\n var url = apiLocation + \"/api/TGTriggers/\" + trigger.id;\r\n\r\n $http({\r\n method: \"PUT\",\r\n url: url,\r\n data: {\r\n trigger: trigger,\r\n trigger_action_values: trigger.trigger_action_values,\r\n trigger_object_id: trigger_object_id,\r\n trigger_configuration_id: trigger_config_id\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n }\r\n\r\n return d.promise;\r\n },\r\n\r\n fire: function(code, object_id) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .post(apiLocation + \"/api/TGTriggers/fire\", {\r\n code: code,\r\n object_id: object_id\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n };\r\n }\r\n]);\r\n","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('Topics', ['$http', '$q', function ($http, $q) {\r\n var get = function (args) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/Topics', {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n\r\n return {\r\n get: get\r\n }\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('TrainingLocations', ['$http', '$q', function ($http, $q) {\r\n return {\r\n get: function () {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/traininglocations', {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getByID: function (id) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/traininglocations/' + id, {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n }\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('TrainingUsers', ['$http', '$q', function ($http, $q) {\r\n \tvar get = function (args) {\r\n \t\tvar d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/trainingusers', {\r\n \t\t\t params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n \t\treturn d.promise;\r\n }\r\n\r\n \tvar getTrainingsForReimbursement = function (args) {\r\n \t\tvar d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/TrainingUsersReimbursement', {\r\n \t\t\t params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n \t\treturn d.promise;\r\n \t}\r\n\r\n \treturn {\r\n get: get,\r\n\r\n getTrainingsForReimbursement: getTrainingsForReimbursement,\r\n \t}\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('Trainings', ['$http', '$q', function ($http, $q) {\r\n var get = function (args) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/trainings', {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n\r\n return {\r\n get: get,\r\n\r\n getByID: function (id) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/trainings/' + id, {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n return d.promise;\r\n },\r\n\r\n checkPrerequisites: function (courseid, userid) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/EducationModule/CourseAttendeeFailedPreReqs/' + courseid + '/' + userid, {\r\n params: {\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n postCourseUserSummary: function (course) {\r\n var d = $q.defer();\r\n\r\n $http.post(apiLocation + '/api/EducationModule/CourseUserSummary', course)\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getForRegistration: function (args) {\r\n if (args == null) {\r\n args = {};\r\n }\r\n args.forRegistration = true;\r\n return get(args);\r\n },\r\n\r\n save: function (training, license_request_id) {\r\n var d = $q.defer();\r\n\r\n var method = 'POST';\r\n var url = apiLocation + '/api/trainings/';\r\n if (!isUndefined(training.id)) {\r\n method = 'PUT'\r\n url += training.id\r\n }\r\n\r\n $http({\r\n method: method,\r\n url: url,\r\n data: {\r\n training: training,\r\n training_topics: training.training_topics,\r\n license_request_id: license_request_id,\r\n document_id: training.document_id\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n removeAttendeeFromCourse: function (id, attendees) {\r\n var d = $q.defer();\r\n\r\n $http.post(apiLocation + '/api/EducationModule/BulkRemoveAttendees/' + id, attendees)\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n }\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('TransactionStatuses', ['$http', '$q', function ($http, $q) {\r\n return {\r\n get: function () {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/transactionstatuses', {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n }\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('TriggerCategories', ['$http', '$q', function ($http, $q) {\r\n return {\r\n get: function (trigger_configuration_id) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/triggercategories', {\r\n params: {\r\n trigger_configuration_id: trigger_configuration_id\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getByID: function (id, attachNoCategory, licenseID) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/triggercategories/' + id, {\r\n params: {\r\n attachNoCategory: attachNoCategory,\r\n licenseID: licenseID\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n }\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('TriggerConfigurationTriggers', ['$http', '$q', function ($http, $q) {\r\n var get = function (trigger_configuration_id, noCategory) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/triggerconfigurationtriggers', {\r\n params: {\r\n trigger_configuration_id: trigger_configuration_id,\r\n noCategory: noCategory\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n\r\n var getByID = function (id, license_id) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/triggerconfigurationtriggers/' + id, {\r\n params: {\r\n license_id: license_id\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n\r\n var getByTriggerID = function (id, license_id) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/triggerconfigurationtriggers/getbytriggerid', {\r\n params: {\r\n trigger_id: id,\r\n license_id: license_id\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n\r\n var getLogs = function (triggerArray) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/triggerconfigurationtriggers/getlogs', {\r\n params: {\r\n lookup: JSON.stringify(triggerArray)\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n\r\n var getActions = function (tct, infiniteCheck, license_id) {\r\n var d = $q.defer();\r\n var promises = [];\r\n tct.infiniteFound = false;\r\n tct.actions = [];\r\n\r\n if (tct.user_status_id != null) {\r\n var action = {};\r\n action.name = 'User Status';\r\n action.value = tct.user_status_name;\r\n action.next_trigger = null;\r\n action.sort_order = 1;\r\n tct.actions.push(action);\r\n }\r\n if (tct.attendee_status_id != null) {\r\n var action = {};\r\n action.name = 'Course Attendee Status';\r\n action.value = tct.attendee_status_name;\r\n action.next_trigger = null;\r\n action.sort_order = 2;\r\n tct.actions.push(action);\r\n }\r\n if (typeof tct.certification_statuses !== 'undefined') {\r\n tct.certification_statuses.forEach(function (status) {\r\n var action = {};\r\n action.name = status.category_name;\r\n action.value = status.name;\r\n action.next_trigger = null;\r\n action.sort_order = 3;\r\n tct.actions.push(action);\r\n })\r\n }\r\n if (typeof tct.createalerts !== 'undefined') {\r\n tct.createalerts.forEach(function (alert) {\r\n promises.push(getNextTrigger(alert.id, tct.trigger_configuration_id, infiniteCheck, license_id).then(function (nextTrigger) {\r\n if (nextTrigger != null) {\r\n if (nextTrigger.infiniteFound) {\r\n tct.infiniteFound = true;\r\n }\r\n }\r\n\r\n var action = {};\r\n action.name = 'Create Alert';\r\n action.value = alert.name;\r\n action.next_trigger = nextTrigger;\r\n action.sort_order = 4;\r\n tct.actions.push(action);\r\n }));\r\n })\r\n }\r\n if (typeof tct.retirealerts !== 'undefined') {\r\n tct.retirealerts.forEach(function (alert) {\r\n var action = {};\r\n action.name = 'Retire Alert';\r\n action.value = alert.name;\r\n action.next_trigger = null;\r\n action.sort_order = 5;\r\n tct.actions.push(action);\r\n })\r\n }\r\n if (tct.policy_status_id != null) {\r\n var action = {};\r\n action.name = 'Policy Status';\r\n action.value = tct.policy_status_name;\r\n action.next_trigger = null;\r\n action.sort_order = 6;\r\n tct.actions.push(action);\r\n }\r\n if (tct.license_request_status_id != null) {\r\n promises.push(getNextTrigger(tct.license_request_status_id, tct.trigger_configuration_id, infiniteCheck, license_id).then(function (nextTrigger) {\r\n if (nextTrigger != null) {\r\n if (nextTrigger.infiniteFound) {\r\n tct.infiniteFound = true;\r\n }\r\n }\r\n\r\n var action = {};\r\n action.name = 'Application Status';\r\n action.value = tct.license_request_status_name;\r\n action.next_trigger = nextTrigger;\r\n action.sort_order = 7;\r\n tct.actions.push(action);\r\n }));\r\n }\r\n if (typeof tct.process_statuses !== 'undefined') {\r\n tct.process_statuses.forEach(function (processStatus) {\r\n if (processStatus.id != null && processStatus.status_id != null) {\r\n promises.push(getNextTrigger(processStatus.id, tct.trigger_configuration_id, infiniteCheck, license_id).then(function (nextTrigger) {\r\n if (nextTrigger != null) {\r\n if (nextTrigger.infiniteFound) {\r\n tct.infiniteFound = true;\r\n }\r\n }\r\n\r\n var action = {};\r\n action.name = 'Process';\r\n action.value = processStatus.process_name + '-' + processStatus.status_name;\r\n action.next_trigger = nextTrigger;\r\n action.sort_order = 8;\r\n tct.actions.push(action);\r\n }));\r\n }\r\n })\r\n }\r\n if (typeof tct.form_packages !== 'undefined') {\r\n tct.form_packages.forEach(function (formPackage) {\r\n promises.push(getNextTrigger(formPackage.id, tct.trigger_configuration_id, infiniteCheck, license_id).then(function (nextTrigger) {\r\n if (nextTrigger != null) {\r\n if (nextTrigger.infiniteFound) {\r\n tct.infiniteFound = true;\r\n }\r\n }\r\n\r\n var action = {};\r\n action.name = 'Form Package';\r\n action.value = formPackage.name + ' (Forms: ';\r\n formPackage.forms.forEach(function (form, index) {\r\n if (index > 0) {\r\n action.value += ', ';\r\n }\r\n action.value += form.name;\r\n })\r\n action.value += ')';\r\n action.next_trigger = nextTrigger;\r\n action.sort_order = 9;\r\n tct.actions.push(action);\r\n }));\r\n })\r\n }\r\n if (typeof tct.forms !== 'undefined') {\r\n tct.forms.forEach(function (form) {\r\n var action = {};\r\n action.name = 'Form';\r\n action.value = form.name;\r\n action.next_trigger = null;\r\n action.sort_order = 10;\r\n tct.actions.push(action);\r\n })\r\n }\r\n if (typeof tct.merge_templates !== 'undefined') {\r\n tct.merge_templates.forEach(function (mergeTemplate) {\r\n promises.push(getNextTrigger(mergeTemplate.id, tct.trigger_configuration_id, infiniteCheck, license_id).then(function (nextTrigger) {\r\n if (nextTrigger != null) {\r\n if (nextTrigger.infiniteFound) {\r\n tct.infiniteFound = true;\r\n }\r\n }\r\n\r\n var action = {};\r\n action.name = 'Merge Template';\r\n action.value = mergeTemplate.name;\r\n action.next_trigger = nextTrigger;\r\n action.sort_order = 11;\r\n tct.actions.push(action);\r\n }));\r\n })\r\n }\r\n if (typeof tct.trigger_functions !== 'undefined') {\r\n tct.trigger_functions.forEach(function (triggerFunction, index) {\r\n promises.push(getNextTrigger(triggerFunction.id, tct.trigger_configuration_id, infiniteCheck, license_id).then(function (nextTriggers) {\r\n var action = {};\r\n\r\n if (nextTriggers != null) {\r\n //if 'nextTriggers' is an array, then it contains more than one new triggers (Case in a configuration, there exists multiple triggers that is initiated by a trigger function).\r\n if (Array.isArray(nextTriggers)) {\r\n nextTriggers.forEach(function (trigger) {\r\n if (trigger.infiniteFound) {\r\n tct.infiniteFound = true;\r\n }\r\n });\r\n // At the moment, 'action.next_trigger' can hold only one next trigger, not multiple next triggers; hence, let set it to 'null' in this case. \r\n action.next_trigger = null;\r\n }\r\n else {\r\n if (nextTriggers != null) {\r\n if (nextTriggers.infiniteFound) {\r\n tct.infiniteFound = true;\r\n }\r\n }\r\n\r\n action.next_trigger = nextTriggers;\r\n }\r\n }\r\n else // case when nextTriggers == null:\r\n {\r\n action.next_trigger = null;\r\n }\r\n\r\n action.name = 'Trigger Function';\r\n action.value = triggerFunction.name;\r\n action.sort_order = 12 + index;\r\n tct.actions.push(action);\r\n }));\r\n })\r\n }\r\n if (tct.license_status_id != null) {\r\n promises.push(getNextTrigger(tct.license_status_id, tct.trigger_configuration_id, infiniteCheck, license_id).then(function (nextTrigger) {\r\n if (nextTrigger != null) {\r\n if (nextTrigger.infiniteFound) {\r\n tct.infiniteFound = true;\r\n }\r\n }\r\n\r\n var action = {};\r\n action.name = 'License Status';\r\n action.value = tct.license_status_name;\r\n action.next_trigger = nextTrigger;\r\n action.sort_order = 13;\r\n tct.actions.push(action);\r\n }));\r\n }\r\n if (tct.transaction_status_id != null) {\r\n promises.push(getNextTrigger(tct.transaction_status_id, tct.trigger_configuration_id, infiniteCheck, license_id).then(function (nextTrigger) {\r\n if (nextTrigger != null) {\r\n if (nextTrigger.infiniteFound) {\r\n tct.infiniteFound = true;\r\n }\r\n }\r\n\r\n var action = {};\r\n action.name = 'Transaction Status';\r\n action.value = tct.transaction_status_name;\r\n action.next_trigger = nextTrigger;\r\n action.sort_order = 14;\r\n tct.actions.push(action);\r\n }));\r\n }\r\n\r\n $q.all(promises).then(function () {\r\n d.resolve(tct);\r\n }).catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n\r\n /**\r\n * The method returns 'trigger_configuration_triggers' object by id and license id and set 'foundInfinite' to true if id matches with an element in 'infiniteCheck' array.\r\n * @param id - Trigger configuration trigger's id.\r\n * @param infiniteCheck - An array consists of trigger_configuration_triggers ids used to detect infinite loop.\r\n * @param license_id - Licence id.\r\n * @returns An object of trigger_configuration_triggers for specific id and license id.\r\n */\r\n var getByIDWithActions = function (id, infiniteCheck, license_id) {\r\n var d = $q.defer();\r\n\r\n if (infiniteCheck == null) {\r\n infiniteCheck = [];\r\n }\r\n\r\n var foundInfinite = false;\r\n infiniteCheck.forEach(function (check) {\r\n if (check == id) {\r\n foundInfinite = true;\r\n }\r\n });\r\n\r\n if (!foundInfinite) {\r\n infiniteCheck.push(id);\r\n\r\n getByID(id, license_id).then(function (tct) {\r\n getActions(tct, infiniteCheck, license_id).then(function (tctActions) {\r\n d.resolve(tctActions);\r\n });\r\n });\r\n }\r\n else {\r\n getByID(id, license_id).then(function (tct) {\r\n tct.actions = [];\r\n tct.infiniteFound = true;\r\n d.resolve(tct);\r\n });\r\n }\r\n\r\n return d.promise;\r\n }\r\n\r\n var getByObjectWithActions = function (tct, infiniteCheck, license_id) {\r\n var d = $q.defer();\r\n\r\n if (infiniteCheck == null) {\r\n infiniteCheck = [];\r\n }\r\n\r\n var foundInfinite = false;\r\n infiniteCheck.forEach(function (check) {\r\n if (check == tct.id) {\r\n foundInfinite = true;\r\n }\r\n });\r\n\r\n if (!foundInfinite) {\r\n infiniteCheck.push(tct.id);\r\n getActions(tct, infiniteCheck, license_id).then(function (tctActions) {\r\n d.resolve(tctActions);\r\n });\r\n }\r\n else {\r\n tct.actions = [];\r\n tct.infiniteFound = true;\r\n d.resolve(tct);\r\n }\r\n\r\n return d.promise;\r\n }\r\n\r\n /**\r\n * The method returns 'trigger_configuration_triggers' object by object id and trigger configuration id.\r\n * @param object_id - An object id (typically, it is the id associated with a trigger action).\r\n * @param trigger_configuration_id - A trigger configuration id.\r\n * @returns An object of trigger_configuration_triggers for specific object id and trigger configuration id.\r\n */\r\n var getByObject = function (object_id, trigger_configuration_id) {\r\n var d = $q.defer();\r\n $http\r\n .get(apiLocation + '/api/triggerconfigurationtriggers/getbyobject', {\r\n params: {\r\n object_id: object_id,\r\n trigger_configuration_id: trigger_configuration_id\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n\r\n /**\r\n * The method returns next trigger configuration triggers associated with the trigger action in the current trigger configuration trigger.\r\n * @param object_id - An object id (typically, it is the id associated with a trigger action).\r\n * @param trigger_configuration_id - A trigger configuration id.\r\n * @param infiniteCheck - An array consists of trigger_configuration_triggers ids used to detect infinite loop.\r\n * @param license_id - A license id.\r\n * @returns An object of trigger_configuration_triggers for specific object id and trigger configuration id.\r\n */\r\n var getNextTrigger = function (object_id, trigger_configuration_id, infiniteCheck, license_id) {\r\n var d = $q.defer();\r\n\r\n getByObject(object_id, trigger_configuration_id).then(function (new_tcts) {\r\n if (new_tcts != null && new_tcts.length === 1) {\r\n var singleTct = new_tcts[0];\r\n if (singleTct != null && singleTct.id != null) {\r\n getByIDWithActions(singleTct.id, infiniteCheck, license_id).then(function (trigger) {\r\n d.resolve(trigger);\r\n });\r\n } else {\r\n d.resolve(null);\r\n }\r\n }\r\n //Verification trigger can initiates multiple triggers; therefore, new_tcts could contains 2 ids.\r\n else if (new_tcts != null && new_tcts.length > 1) {\r\n // If there are multiple ntcts, call getByIDWithActions for each id.\r\n var promises = new_tcts.map(function (tct) {\r\n if (tct != null && tct.id != null) {\r\n return getByIDWithActions(tct.id, infiniteCheck, license_id);\r\n } else {\r\n return $q.resolve(null);\r\n }\r\n });\r\n\r\n // Wait for all promises to resolve\r\n $q.all(promises).then(function (triggers) {\r\n d.resolve(triggers);\r\n }).catch(function (response) {\r\n // handle error\r\n });\r\n } else {\r\n d.resolve(null);\r\n }\r\n });\r\n\r\n return d.promise;\r\n }\r\n\r\n var save = function (tct, license_id) {\r\n var d = $q.defer();\r\n\r\n var method = 'POST';\r\n var url = apiLocation + '/api/triggerconfigurationtriggers/';\r\n if (!isUndefined(tct.id)) {\r\n method = 'PUT';\r\n url += tct.id;\r\n }\r\n\r\n $http({\r\n method: method,\r\n url: url,\r\n data: {\r\n trigger_configuration_trigger: tct,\r\n merge_templates: tct.merge_templates,\r\n form_packages: tct.form_packages,\r\n forms: tct.forms,\r\n license_category_certification_statues: tct.certification_statuses,\r\n process_statuses: tct.process_statuses,\r\n createalerts: tct.createalerts,\r\n retirealerts: tct.retirealerts,\r\n trigger_functions: tct.trigger_functions,\r\n license_id: license_id,\r\n removed: false\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n\r\n var remove = function (tct) {\r\n var d = $q.defer();\r\n\r\n var method = 'PUT';\r\n var url = apiLocation + '/api/triggerconfigurationtriggers/' + tct.id;\r\n\r\n tct.license_status = null;\r\n tct.license_status_id = null;\r\n tct.license_request_status = null;\r\n tct.license_request_status_id = null;\r\n tct.user_status_id = null;\r\n tct.policy_status_id = null;\r\n tct.transaction_status_id = null;\r\n\r\n $http({\r\n method: method,\r\n url: url,\r\n data: {\r\n trigger_configuration_trigger: tct,\r\n merge_templates: [],\r\n form_packages: [],\r\n forms: [],\r\n license_category_certification_statues: [],\r\n process_statuses: [],\r\n createalerts: [],\r\n retirealerts: [],\r\n trigger_functions: [],\r\n removed: true\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n\r\n return {\r\n getByObjectWithActions: getByObjectWithActions,\r\n\r\n get: get,\r\n\r\n getByID: getByID,\r\n\r\n getActions: getActions,\r\n\r\n getByTriggerID: getByTriggerID,\r\n\r\n getByIDWithActions: getByIDWithActions,\r\n\r\n getLogs: getLogs,\r\n\r\n save: save,\r\n\r\n remove: remove\r\n }\r\n }])\r\n ;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('TriggerConfigurations', ['$http', '$q', function ($http, $q) {\r\n return {\r\n get: function () {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/triggerconfigurations', {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getByID: function (id) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/triggerconfigurations/' + id, {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n save: function (trigger_configuration) {\r\n var d = $q.defer();\r\n\r\n var method = 'POST';\r\n var url = apiLocation + '/api/triggerconfigurations/';\r\n if (!isUndefined(trigger_configuration.id)) {\r\n method = 'PUT';\r\n url += trigger_configuration.id;\r\n }\r\n\r\n $http({\r\n method: method,\r\n url: url,\r\n data: {\r\n trigger_configuration: trigger_configuration\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n\r\n }\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('TriggerFunctions', ['$http', '$q', function ($http, $q) {\r\n return {\r\n get: function () {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/triggerfunctions', {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n }\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('Triggers', ['$http', '$q', function ($http, $q) {\r\n return {\r\n get: function () {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/triggers', {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n d.resolve(null);\r\n });\r\n\r\n return d.promise;\r\n },\r\n \r\n getForFormCondition: function () {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/triggers/getForFormCondition', {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n d.resolve(null);\r\n });\r\n\r\n\r\n return d.promise;\r\n },\r\n\r\n fire: function (args) {\r\n var d = $q.defer();\r\n\r\n $http.post(apiLocation + '/api/triggers/fire', args)\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n d.resolve(null);\r\n });\r\n\r\n return d.promise;\r\n }\r\n }\r\n }])\r\n;","\"use strict\";\r\n\r\nangular.module(\"licensure.services\").factory(\"EXCoordinatorsList\", [\r\n \"$http\",\r\n \"$q\",\r\n function ($http, $q) {\r\n return {\r\n getFilter: function (filter) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + \"/api/ExamModule/ExamCoordinatorsFilter\", {\r\n params: {\r\n currentPage: filter.currentPage,\r\n numPerPage: filter.numPerPage,\r\n reverse: filter.reverse,\r\n sortBy: filter.sortBy,\r\n search: filter.search,\r\n alphaFilter: filter.alphaFilter,\r\n internal: (filter.filters && filter.filters.length > 0 && filter.filters[0].value != undefined && filter.filters[0].value != null) ? filter.filters[0].value : null,\r\n licenseCategoryLevelId: (filter.filters && filter.filters.length > 1 && filter.filters[1].value != undefined && filter.filters[1].value != null) ? filter.filters[1].value : null,\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data.records);\r\n })\r\n .catch(function (response) {\r\n d.resolve(null);\r\n });\r\n return d.promise;\r\n },\r\n\r\n getCount: function (filter) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/ExamModule/ExamCoordinatorsFilter/getCount', {\r\n params: {\r\n search: filter.search,\r\n alphaFilter: filter.alphaFilter,\r\n internal: (filter.filters && filter.filters.length > 0 && filter.filters[0].value != undefined && filter.filters[0].value != null) ? filter.filters[0].value : null,\r\n licenseCategoryLevelId: (filter.filters && filter.filters.length > 1 && filter.filters[1].value != undefined && filter.filters[1].value != null) ? filter.filters[1].value : null,\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n d.resolve(null);\r\n });\r\n\r\n return d.promise;\r\n },\r\n };\r\n }\r\n]);\r\n","\"use strict\";\r\n\r\nangular.module(\"licensure.services\").factory(\"EXCoordinators\", [\r\n \"$http\",\r\n \"$q\",\r\n function ($http, $q) {\r\n return {\r\n get: function () {\r\n var d = $q.defer();\r\n $http\r\n .get(apiLocation + \"/api/ExamModule/ExamCoordinators\", {\r\n params: {}\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getFilter: function (filter) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + \"/api/ExamModule/AvailableExamCoordinators\", {\r\n params: {\r\n currentPage: filter.currentPage,\r\n numPerPage: filter.numPerPage,\r\n reverse: filter.reverse,\r\n sortBy: filter.sortBy,\r\n search: filter.search,\r\n alphaFilter: filter.alphaFilter,\r\n internal: (filter.filters && filter.filters.length > 0 && filter.filters[0].value != undefined && filter.filters[0].value != null) ? filter.filters[0].value : null,\r\n licenseCategoryLevelId: (filter.filters && filter.filters.length > 1 && filter.filters[1].value != undefined && filter.filters[1].value != null) ? filter.filters[1].value : null,\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data.records);\r\n })\r\n .catch(function (response) {\r\n d.resolve(null);\r\n });\r\n return d.promise;\r\n },\r\n\r\n getCount: function (filter) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/ExamModule/AvailableExamCoordinators/getCount', {\r\n params: {\r\n search: filter.search,\r\n alphaFilter: filter.alphaFilter,\r\n internal: (filter.filters && filter.filters.length > 0 && filter.filters[0].value != undefined && filter.filters[0].value != null) ? filter.filters[0].value : null,\r\n licenseCategoryLevelId: (filter.filters && filter.filters.length > 1 && filter.filters[1].value != undefined && filter.filters[1].value != null) ? filter.filters[1].value : null,\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n d.resolve(null);\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n save: function (id) {\r\n var d = $q.defer();\r\n\r\n $http({\r\n method: \"POST\",\r\n url: apiLocation + \"/api/ExamModule/ExamCoordinators/\",\r\n data: id\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n delete: function (id) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .delete(apiLocation + \"/api/ExamModule/ExamCoordinators/\" + id, {\r\n params: {}\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n };\r\n }\r\n]);\r\n","\"use strict\";\r\n\r\nangular.module(\"licensure.services\").factory(\"EXExaminersList\", [\r\n \"$http\",\r\n \"$q\",\r\n function ($http, $q) {\r\n return {\r\n getFilter: function (filter) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + \"/api/ExamModule/ExamExaminersFilter\", {\r\n params: {\r\n currentPage: filter.currentPage,\r\n numPerPage: filter.numPerPage,\r\n reverse: filter.reverse,\r\n sortBy: filter.sortBy,\r\n search: filter.search,\r\n alphaFilter: filter.alphaFilter,\r\n internal: (filter.filters && filter.filters.length > 0 && filter.filters[0].value != undefined && filter.filters[0].value != null) ? filter.filters[0].value : null,\r\n licenseCategoryLevelId: (filter.filters && filter.filters.length > 1 && filter.filters[1].value != undefined && filter.filters[1].value != null) ? filter.filters[1].value : null,\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data.records);\r\n })\r\n .catch(function (response) {\r\n d.resolve(null);\r\n });\r\n return d.promise;\r\n },\r\n\r\n getCount: function (filter) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/ExamModule/ExamExaminersFilter/getCount', {\r\n params: {\r\n search: filter.search,\r\n alphaFilter: filter.alphaFilter,\r\n internal: (filter.filters && filter.filters.length > 0 && filter.filters[0].value != undefined && filter.filters[0].value != null) ? filter.filters[0].value : null,\r\n licenseCategoryLevelId: (filter.filters && filter.filters.length > 1 && filter.filters[1].value != undefined && filter.filters[1].value != null) ? filter.filters[1].value : null,\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n d.resolve(null);\r\n });\r\n\r\n return d.promise;\r\n },\r\n };\r\n }\r\n]);\r\n","\"use strict\";\r\n\r\nangular.module(\"licensure.services\").factory(\"EXExaminers\", [\r\n \"$http\",\r\n \"$q\",\r\n function ($http, $q) {\r\n return {\r\n get: function () {\r\n var d = $q.defer();\r\n $http\r\n .get(apiLocation + \"/api/ExamModule/ExamExaminers\", {\r\n params: {}\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n return d.promise;\r\n },\r\n\r\n getFilter: function (filter) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + \"/api/ExamModule/AvailableExamExaminers\", {\r\n params: {\r\n currentPage: filter.currentPage,\r\n numPerPage: filter.numPerPage,\r\n reverse: filter.reverse,\r\n sortBy: filter.sortBy,\r\n search: filter.search,\r\n alphaFilter: filter.alphaFilter,\r\n internal: (filter.filters && filter.filters.length > 0 && filter.filters[0].value != undefined && filter.filters[0].value != null) ? filter.filters[0].value : null,\r\n licenseCategoryLevelId: (filter.filters && filter.filters.length > 1 && filter.filters[1].value != undefined && filter.filters[1].value != null) ? filter.filters[1].value : null,\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data.records);\r\n })\r\n .catch(function (response) {\r\n d.resolve(null);\r\n });\r\n return d.promise;\r\n },\r\n\r\n getCount: function (filter) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/ExamModule/AvailableExamExaminers/getCount', {\r\n params: {\r\n search: filter.search,\r\n alphaFilter: filter.alphaFilter,\r\n internal: (filter.filters && filter.filters.length > 0 && filter.filters[0].value != undefined && filter.filters[0].value != null) ? filter.filters[0].value : null,\r\n licenseCategoryLevelId: (filter.filters && filter.filters.length > 1 && filter.filters[1].value != undefined && filter.filters[1].value != null) ? filter.filters[1].value : null,\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n d.resolve(null);\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n save: function (id) {\r\n var d = $q.defer();\r\n\r\n $http({\r\n method: \"POST\",\r\n url: apiLocation + \"/api/ExamModule/ExamExaminers/\",\r\n data: id\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n delete: function (id) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .delete(apiLocation + \"/api/ExamModule/ExamExaminers/\" + id, {\r\n params: {}\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n };\r\n }\r\n]);\r\n","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('UserInspectors', ['$http', '$q', function ($http, $q) {\r\n return {\r\n get: function () {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/UserInspectors', {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n save: function (user_inspector) {\r\n var d = $q.defer();\r\n\r\n var method = 'POST';\r\n var url = apiLocation + '/api/UserInspectors/';\r\n if (!isUndefined(user_inspector.id)) {\r\n method = 'PUT'\r\n url += user_inspector.id\r\n }\r\n\r\n $http({\r\n method: method,\r\n url: url,\r\n data: {\r\n user_inspector: user_inspector\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n delete: function (id) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .delete(apiLocation + '/api/UserInspectors/' + id, {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n }\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('UserInvestigators', ['$http', '$q', function ($http, $q) {\r\n return {\r\n get: function () {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/UserInvestigators', {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n }\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('UserStatuses', ['$http', '$q', function ($http, $q) {\r\n return {\r\n get: function () {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/userstatuses', {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getUserStatusLockedMessage: function (statusId) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/Core/UserStatus/' + statusId + '/LockedMessage', {\r\n params: {\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n }\r\n }])\r\n;","\"use strict\";\r\n\r\nangular.module(\"licensure.services\").factory(\"Users\", [\r\n \"$http\",\r\n \"$q\",\r\n \"$rootScope\",\r\n function($http, $q, $rootScope) {\r\n return {\r\n get: function(args) {\r\n var d = $q.defer();\r\n $http\r\n .get(apiLocation + \"/api/users\", {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getPublicSearchUser: function (args) {\r\n var d = $q.defer();\r\n $http\r\n .get(apiLocation + \"/api/users/getPublicSearchUser\", {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getForService: function(args) {\r\n var d = $q.defer();\r\n args.forService = true;\r\n $http\r\n .get(apiLocation + \"/api/users\", {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getNewUser: function() {\r\n var d = $q.defer();\r\n $http\r\n .get(apiLocation + \"/api/users/getnew\", {})\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getUserObject: function(args) {\r\n var d = $q.defer();\r\n $http\r\n .get(apiLocation + \"/api/users/getobject\", {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n lookupUsername: function(args) {\r\n var d = $q.defer();\r\n $http\r\n .post(apiLocation + \"/api/users/lookupUsername\", {\r\n last_name: args.last_name,\r\n account_identifier: args.account_identifier,\r\n birth_date: args.birth_date,\r\n password: args.password,\r\n phone: args.phone,\r\n email: args.email,\r\n ssn: args.ssn,\r\n street: args.street,\r\n enterprise_id: args.enterprise_id\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getUserbyEmail: function (email, userID) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/users/emailCheck', {\r\n params: {\r\n userID: userID,\r\n email: email\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n saveEmail: function (args) {\r\n var d = $q.defer();\r\n $http\r\n .post(apiLocation + \"/api/users/saveemail\", {\r\n user_id: args.user_id,\r\n email: args.new_email,\r\n enterprise_id: args.enterprise_id\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n forgotPassword: function(args) {\r\n var d = $q.defer();\r\n $http\r\n .post(apiLocation + \"/api/users/forgotpassword\", {\r\n last_name: args.last_name,\r\n user_name: args.user_name,\r\n email: args.email,\r\n enterprise_id: args.enterprise_id,\r\n is_public: args.is_public\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getResetToken: function(args) {\r\n var d = $q.defer();\r\n $http\r\n .get(apiLocation + \"/api/users/getresettoken\", {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getPasswordRequirements: function(args) {\r\n var d = $q.defer();\r\n $http\r\n .get(apiLocation + \"/api/users/getpasswordrequirements\", {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getPasswordHistory: function(args) {\r\n var d = $q.defer();\r\n $http\r\n .get(apiLocation + \"/api/userpasswordhistory\", {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n checkPasswordHistory: function(args) {\r\n var d = $q.defer();\r\n $http\r\n .post(apiLocation + \"/api/userpasswordhistory/check\", {\r\n user_id: args.user_id,\r\n pass: args.pass,\r\n top: args.top\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n resetPassword: function(args) {\r\n var d = $q.defer();\r\n $http\r\n .post(apiLocation + \"/api/users/resetpassword\", {\r\n user_id: args.user_id,\r\n username: args.username,\r\n password: args.password,\r\n enterprise_id: args.enterprise_id,\r\n is_public: args.is_public\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n query: function(fields, criteria) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .post(apiLocation + \"/api/users/query\", {\r\n fields: fields,\r\n criteria: criteria\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n search: function(args, timeout) {\r\n var d = $q.defer();\r\n\r\n if (args.search == null || args.search == undefined) {\r\n //There should be a search, since this is only used by typeaheads\r\n //So avoid unnecessary calls to the backend\r\n d.resolve(null);\r\n }\r\n else {\r\n $http\r\n .get(apiLocation + \"/api/users/search\", {\r\n params: args,\r\n timeout: timeout != null ? timeout.promise : null\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n d.resolve(response.data);\r\n });\r\n }\r\n\r\n return d.promise;\r\n },\r\n\r\n searchByService: function (args, timeout) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/users/searchByService', {\r\n params: args,\r\n timeout: (timeout != null ? timeout.promise : null)\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n d.resolve(response.data);\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n searchUsersNotInService: function (args, timeout) {\r\n var d = $q.defer();\r\n\r\n if (args.search == null || args.search == undefined) {\r\n //If there is no search, it will return null anyway.\r\n //So avoid unnecessary calls to the backend\r\n d.resolve(null);\r\n }\r\n else {\r\n $http\r\n .get(apiLocation + '/api/users/searchUsersNotInService', {\r\n params: args,\r\n timeout: (timeout != null ? timeout.promise : null)\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n d.resolve(response.data);\r\n });\r\n }\r\n\r\n return d.promise;\r\n },\r\n\r\n validateUsername: function(args) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + \"/api/users/validateusername\", {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getByID: function(id, getLess, userInfo) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + \"/api/users/\" + id, {\r\n params: {\r\n getLess: getLess,\r\n userInfo: userInfo\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n save: function(user, enterpriseID) {\r\n var d = $q.defer();\r\n\r\n var method = \"POST\";\r\n var url = apiLocation + \"/api/Users/\";\r\n if (!isUndefined(user.id) && user.id != null) {\r\n method = \"PUT\";\r\n url += user.id;\r\n }\r\n\r\n $http({\r\n method: method,\r\n url: url,\r\n data: {\r\n user: user,\r\n enterpriseID: enterpriseID\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n eliteLookup: function(args) {\r\n var d = $q.defer();\r\n args.enterpriseID = $rootScope.enterpriseID;\r\n\r\n $http\r\n .get(apiLocation + \"/api/elite/userlookup\", {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n publicLookupUser: function(args) {\r\n var d = $q.defer();\r\n\r\n var newArgs = {\r\n enterprise_id: args.enterprise_id,\r\n first_name: args.first_name,\r\n last_name: args.last_name,\r\n suffix: args.suffix,\r\n primaryCertification: args.primary_license_number,\r\n applicationCertificationId:\r\n args.application_certification_id,\r\n applicationLevel: args.application_level_id,\r\n certLevel: args.certification_level_id,\r\n birth_date: args.date_of_birth,\r\n records_offset: args.records_offset,\r\n records_total: args.records_total,\r\n sort_fields: args.sort_fields,\r\n sort_direction: args.sort_direction,\r\n userID: args.userID,\r\n from_search: args.from_search,\r\n account_identifier: args.account_identifier,\r\n service_affiliation_county: args.service_affiliation_county,\r\n national_ems_id: args.national_ems_id\r\n };\r\n\r\n $http\r\n .post(apiLocation + \"/api/users/PublicLookupUser\", newArgs)\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getUserLookupCount: function(args) {\r\n var d = $q.defer();\r\n\r\n var newArgs = {\r\n enterprise_id: args.enterprise_id,\r\n first_name: args.first_name,\r\n last_name: args.last_name,\r\n suffix: args.suffix,\r\n primaryCertification: args.primary_license_number,\r\n applicationCertificationId:\r\n args.application_certification_id,\r\n applicationLevel: args.application_level_id,\r\n certLevel: args.certification_level_id,\r\n birth_date: args.date_of_birth,\r\n account_identifier: args.account_identifier,\r\n service_affiliation_county: args.service_affiliation_county,\r\n national_ems_id: args.national_ems_id\r\n };\r\n\r\n $http\r\n .post(\r\n apiLocation + \"/api/users/getuserlookupcount\",\r\n newArgs\r\n )\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getUserAlerts: function(args) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + \"/api/users/getuseralerts\", {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getUserCertifications: function (user_id, detail, enterprise_id) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + \"/api/users/getusercertifications\", {\r\n params: {\r\n user_id: user_id,\r\n detail: detail,\r\n enterprise_id: enterprise_id\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function () {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getUserEMSLevels: function(args) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(\r\n apiLocation +\r\n \"/api/users/getuseremslevels/\" +\r\n args.userID\r\n )\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getUserEndorsements: function(args) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(\r\n apiLocation +\r\n \"/api/users/getuserendorsements/\" +\r\n args.userID\r\n )\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getUserInstructorLevels: function(args) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(\r\n apiLocation +\r\n \"/api/users/getuserinstructorlevels/\" +\r\n args.userID\r\n )\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getUserEvaluatorLevels: function(args) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(\r\n apiLocation +\r\n \"/api/users/getuserevaluatorlevels/\" +\r\n args.userID\r\n )\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getUserInstructingTopics: function(args) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(\r\n apiLocation +\r\n \"/api/users/getuserinstructingtopics/\" +\r\n args.userID\r\n )\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getUserByServicePersonnelID: function (personnelID, serviceID) {\r\n var d = $q.defer();\r\n $http\r\n .get(apiLocation + '/api/users/getUsersByServicePersonnelID', {\r\n params: {\r\n serviceID: serviceID,\r\n personnelID: personnelID\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n return d.promise;\r\n },\r\n\r\n getUserAddressInfo: function (userId) {\r\n var d = $q.defer();\r\n $http\r\n .get(apiLocation + '/api/User/AddressInfo/' + userId, {\r\n params: {}\r\n }).then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n return d.promise;\r\n },\r\n\r\n getServiceUsersForReimbursement: function (serviceId) {\r\n var d = $q.defer();\r\n $http\r\n .get(apiLocation + '/api/users/serviceUsersReimbursement', {\r\n params: {\r\n serviceID: serviceId\r\n }\r\n }).then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n return d.promise;\r\n },\r\n };\r\n }\r\n]);\r\n","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('Utils', ['$http', '$q', function ($http, $q) {\r\n return {\r\n GetCookieName: function (isPortal) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/utils/getcookiename', {\r\n params: {\r\n isPortal: isPortal\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n DeleteSessionCookie: function (isPortal) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .delete(apiLocation + '/api/Core/Auth/Sessioncookie', {\r\n params: {\r\n isPortal: isPortal\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n\r\n }\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('ValidationTypes', ['$http', '$q', function ($http, $q) {\r\n return {\r\n get: function () {\r\n var d = $q.defer();\r\n\r\n $http.get(apiLocation + '/api/validationtypes', {\r\n params: {\r\n\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise; \r\n }\r\n }\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('VehicleSpecialties', ['$http', '$q', function ($http, $q) {\r\n return {\r\n get: function () {\r\n var d = $q.defer();\r\n\r\n $http.get(apiLocation + '/api/vehiclespecialties', {\r\n params: {\r\n \r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise; \r\n }\r\n }\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('VehicleTypes', ['$http', '$q', function ($http, $q) {\r\n return {\r\n get: function () {\r\n var d = $q.defer();\r\n\r\n $http.get(apiLocation + '/api/vehicletypes', {\r\n params: {\r\n \r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n }\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('Vehicles', ['$http', '$q', function ($http, $q) {\r\n var get = function (args) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/vehicles', {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n\r\n var getByID = function (id, getLess) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/vehicles/' + id, {\r\n params: {\r\n getLess: getLess\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n\r\n var getCertificationByNumber = function (number, vehicleID) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/certifications', {\r\n params: {\r\n isVehicle: true,\r\n vehicleID: vehicleID,\r\n number: number\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n\r\n var getVehicleBySerialNumber = function (number, vehicleID) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/vehicles/serialNumberCheck', {\r\n params: {\r\n vehicleID: vehicleID,\r\n number: number\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n\r\n\r\n return {\r\n get: get,\r\n\r\n getByID: getByID,\r\n\r\n getCertificationByNumber: getCertificationByNumber,\r\n\r\n getVehicleBySerialNumber: getVehicleBySerialNumber,\r\n\r\n search: function (args, timeout) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/vehicles/search', {\r\n params: args,\r\n timeout: (timeout != null ? timeout.promise : null)\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n d.resolve(response.data);\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n\r\n searchVehiclesNotInService: function (args, timeout) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/vehicles/searchVehiclesNotInService', {\r\n params: args,\r\n timeout: (timeout != null ? timeout.promise : null)\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n d.resolve(response.data);\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n searchByService: function (args, timeout) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/vehicles/searchByService', {\r\n params: args,\r\n timeout: (timeout != null ? timeout.promise : null)\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n d.resolve(response.data);\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getVehiclesTypesWithTypeRestriction: function (args) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/vehicles/getVehiclesTypesWithTypeRestriction', {\r\n params: {\r\n limit_vehicle_type_ids: args.limit_vehicle_type_ids,\r\n show_vehicles_without_type: args.show_vehicles_without_type\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n d.resolve(response.data);\r\n });\r\n\r\n return d.promise;\r\n },\r\n }\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('ViewedLicenses', ['$http', '$q', function ($http, $q) {\r\n \treturn {\r\n \t\tsave: function (license_id) {\r\n \t\t\tvar d = $q.defer();\r\n\r\n \t\t\tvar method = 'POST';\r\n \t\t\tvar url = apiLocation + '/api/viewedlicenses/';\r\n\r\n \t\t\t$http({\r\n \t\t\t\tmethod: method,\r\n \t\t\t\turl: url,\r\n \t\t\t\tdata: {\r\n \t\t\t\t\tlicense_id: license_id\r\n \t\t\t\t}\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n \t\t\treturn d.promise;\r\n \t\t}\r\n \t}\r\n }])\r\n;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('VoucherPay', ['$http', '$q', function ($http, $q) {\r\n var saveLicenseVoucherCharge = function (licenseRequestID) {\r\n var d = $q.defer();\r\n\r\n $http.post(apiLocation + '/api/VoucherPay/LicenseVoucherCharge/' + licenseRequestID)\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n d.resolve(null);\r\n });\r\n\r\n return d.promise;\r\n }\r\n\r\n return {\r\n saveElement: function (answer, licenseRequestID, formCompleted) {\r\n var d = $q.defer();\r\n\r\n $http.post(apiLocation + '/api/VoucherPay/SaveElement/' + licenseRequestID, answer, formCompleted)\r\n .then(function (response) {\r\n if (formCompleted) {\r\n saveLicenseVoucherCharge(licenseRequestID).then(function () {\r\n d.resolve();\r\n })\r\n }\r\n else {\r\n d.resolve(response.data);\r\n }\r\n })\r\n .catch(function (response) {\r\n d.resolve(null);\r\n })\r\n\r\n return d.promise;\r\n },\r\n\r\n getExistingVouchersByLicenseRequestID: function (licenseRequestID) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/VoucherPay/ExistingVouchers', {\r\n params: {\r\n licenseRequestID: licenseRequestID\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n d.resolve(null);\r\n });\r\n\r\n return d.promise;\r\n }\r\n }\r\n }])\r\n ;","'use strict';\r\n\r\nangular.module('licensure.services')\r\n .factory('XSLTStylesheets', ['$http', '$q', function ($http, $q) {\r\n return {\r\n get: function () {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/XSLTStylesheets', {\r\n params: {\r\n \r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n getStylesheetContent: function (args) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + '/api/XSLTStylesheets/GetStylesheetContent', {\r\n params: args\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n console.log(response.data);\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n }\r\n }\r\n }])\r\n;"]}