{"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","actionString","token","enterpriseId","getByCategory","getCategoryQuestions","getalerttype","alertype","exam_alert_type","getActiveAutoNums","getautonum","examAutoNum","getCandidateBySession","getformCount","getform","getPacketListById","ExamFormId","updateStatus","ids","status","examFormIDs","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","formID","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","signature","signature_photo_source","toDataURL","data_point_id","_isEmpty","required","signatureError","required_message","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","showOnPdf","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","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","question_type","savedResponse","$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","includeInactive","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","action","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","licenseRuleIds","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-25.3.0.0.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 (actionString, 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: { actionString: actionString, 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 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 // Check for required signature on forms before save\r\n if (question.signature !== undefined) {\r\n question.answer.signature_photo_source = question.signature.toDataURL();\r\n if (question.data_point_id === null && question.signature && question.signature._isEmpty && question.required) {\r\n response.signatureError = (question.required_message) ? question.required_message : \"Required information is missing. Please sign the signature box.\";\r\n question.answer.signature_photo_source = null;\r\n d.resolve(response);\r\n return d.promise;\r\n }\r\n } else {\r\n question.answer.signature_photo_source = null;\r\n }\r\n\r\n var answer = angular.copy(question.answer);\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 saveAnswers\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 if (dont_save || saveResponse.signatureError) {\r\n d.resolve(saveResponse);\r\n } else {\r\n save(saveResponse, null, saveAnswers, 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(response.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, { id: comment.id })\r\n .then(function (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, { id: comment.id, showOnPdf: comment.showOnPdf })\r\n .then(function (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, 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 else {\r\n right = '';\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 getByID: function (id) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(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 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, includeInactive) {\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 includeInactive: includeInactive\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(includeInactive) {\r\n return get(\"Exams\", includeInactive);\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(licenseRuleIds) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .post(apiLocation + \"/api/users/query\", {\r\n licenseRuleIds: licenseRuleIds\r\n })\r\n .then(function (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 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/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\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;"]}