{"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","question_type","applyTimeZone","val","v","document_saved","document_name","document_description","document_type","locked","document_locked","sub_components","subComponent","conditions_met","component_conditions","results","generatePDFHTML","pdfScope","$new","portalURL","display_changed_answers","element","pdfListener","$on","html","off","remove","$destroy","inspection","previewFormID","preview","saveByForm","page_count","skipLogging","dont_save","tempResponse","Object","assign","the_form","saveResponse","pages","page","index","tab_active","sections","section","components","parsedResults","flat","documentErrors","logFormProgress","generatePDF","response_obj","objectID","getPDFFileContent","populateGroup","dataSetCode","coreID","single","data_set_code","core_id","single_group","clearSignatures","reopen","getServiceApplicationVehicles","licenseRequestIDs","getByPostalCode","postalCode","getPublicSchoolSystems","getPublicSchools","getPublicFireDrills","getPublicYears","auto_number","$timeout","FBResponses","IPComment","checklist","processedResponse","updateBatch","checklists","isUpdate","every","getDocumentsAndComments","documents","listIPCommentAsync","comments","generatingPDF","cancel","timer","inspectionID","visitID","visit_id","number","outcome","signatureTypeInPerson","signature_type_in_person","checkout_log","getAdministrativeCommentsByQuestionId","fbQuestionID","saveAdministrativeComment","comment","questionID","Comment","FBQuestionId","InspectionId","resolveAdministrativeComment","put","toggleShowOnPdf","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","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.1.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 question is of type date, we want to applyTimeZone so that when we save FB_Answer and convert from a JSON Date to a C# String, we cancel out the\r\n // offset\r\n if (question.question_type.code == \"date\") {\r\n if (answer.value) {\r\n answer.value = answer.value.applyTimeZone(); // usually this is used only for display\r\n }\r\n }\r\n\r\n if (angular.isArray(answer.value)) {\r\n var value = null;\r\n\r\n answer.value.forEach(function (val) {\r\n var v = \"\";\r\n if (angular.isObject(val)) {\r\n v = val.id;\r\n } else {\r\n v = val;\r\n }\r\n\r\n if (value == null) {\r\n value = v;\r\n } else {\r\n value += \",\" + v;\r\n }\r\n });\r\n\r\n answer.value = value;\r\n }\r\n\r\n // Document Save\r\n if (\r\n answer.file_updated &&\r\n answer.file_content !== null &&\r\n answer.file_name !== null &&\r\n answer.document_id === null &&\r\n answer.document_saved === undefined\r\n ) {\r\n promises.push(\r\n Documents.upload(\r\n {\r\n file: Upload.dataUrltoBlob(\r\n answer.file_content,\r\n answer.file_name\r\n ),\r\n name: answer.document_name,\r\n description:\r\n answer.document_description,\r\n document_type_id: answer.document_type\r\n },\r\n object_id\r\n ).then(function (document) {\r\n if (document == null) {\r\n //Something errored in the backend\r\n return { error: true, document_name: answer.document_name || answer.file_name };\r\n }\r\n else {\r\n if (answer.document_id) {\r\n // delete the old document\r\n promises.push(\r\n Documents.delete(\r\n angular.copy(answer.document_id)\r\n ).then(function (result) {\r\n console.log(result);\r\n })\r\n );\r\n }\r\n answer.document_id = document.id;\r\n question.answer.document_id = document.id;\r\n answer.document_code = document.code;\r\n question.answer.document_saved = true;\r\n }\r\n })\r\n );\r\n } else if (answer.document_id !== null && answer.document_saved !== true) {\r\n promises.push(\r\n Documents.save(\r\n {\r\n id: answer.document_id,\r\n name: answer.document_name,\r\n description:\r\n answer.document_description,\r\n document_type_id: answer.document_type,\r\n locked: answer.document_locked != null ? answer.document_locked : false\r\n },\r\n false\r\n )\r\n );\r\n question.answer.document_saved = true;\r\n }\r\n\r\n answer.file_content = null;\r\n\r\n saveGroup.answers.push(answer);\r\n\r\n question.sub_components.forEach(function (subComponent) {\r\n getComponentAnswers(\r\n response,\r\n subComponent,\r\n group.id,\r\n component.conditions_met,\r\n component.component_conditions.length > 0,\r\n promises,\r\n object_id\r\n );\r\n });\r\n });\r\n // clear out values of components that didn't meet conditions\r\n if (\r\n !(\r\n (component.component_conditions.length > 0 &&\r\n component.conditions_met == false) ||\r\n (parentHasConditions &&\r\n parentConditionsMet == false)\r\n )\r\n ) {\r\n response.groups.push(saveGroup);\r\n }\r\n });\r\n }\r\n\r\n if (root) {\r\n $q.all(promises).then(function (results) {\r\n d.resolve(results);\r\n }).catch(function (response) {\r\n // handle error\r\n });\r\n } else {\r\n d.resolve();\r\n }\r\n\r\n return d.promise;\r\n };\r\n\r\n var generatePDFHTML = function (form, parameters) {\r\n var d = $q.defer();\r\n var pdfScope = $rootScope.$new(true);\r\n pdfScope.form = form;\r\n pdfScope.form.portalURL = $rootScope.portalURL;\r\n pdfScope.parameters = parameters;\r\n parameters.display_changed_answers = form.display_changed_answers;\r\n\r\n var element = $compile(\r\n ''\r\n )(pdfScope);\r\n\r\n var pdfListener = $rootScope.$on(\"pdf:finish\", function () {\r\n //console.log('3 fb-response-service generatePDFHTML pdf:finish');\r\n pdfListener();\r\n d.resolve(element != null ? element.html() : null);\r\n element.off();\r\n element.remove();\r\n pdfScope.$destroy();\r\n pdfScope = null;\r\n });\r\n\r\n pdfScope.$on(\"$destroy\", function () {\r\n //console.log('4 fb-response-service generatePDFHTML pdfScope $destroy event called')\r\n pdfListener();\r\n if (pdfScope) {\r\n pdfScope.$destroy();\r\n pdfScope.inspection = null;\r\n pdfScope = null;\r\n }\r\n if (element) {\r\n angular.element(element).off();\r\n angular.element(element).remove();\r\n element = null;\r\n }\r\n });\r\n\r\n return d.promise;\r\n };\r\n\r\n return {\r\n getByID: function (id, previewFormID, preview) {\r\n var d = $q.defer();\r\n\r\n $http\r\n .get(apiLocation + \"/api/fbresponses/\" + id, {\r\n params: {\r\n previewFormID: previewFormID,\r\n preview: preview\r\n }\r\n })\r\n .then(function (response) {\r\n d.resolve(response.data);\r\n })\r\n .catch(function (response) {\r\n // handle error\r\n });\r\n\r\n return d.promise;\r\n },\r\n\r\n save: save,\r\n\r\n saveByForm: function (\r\n response,\r\n object_id,\r\n page_count,\r\n getLess,\r\n skipLogging,\r\n dont_save,\r\n 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;"]}