"use strict"; (function () { 'use strict'; angular.module('templateModule').service('ticketTemplateService', ['$resource', function ($resource) { var smartRecorderResource = $resource('/smartit/rest/smartrecord/templates', {}, { getTemplates: { method: 'POST', isArray: true } }), incidentTemplateResource = $resource('', {}, { GetIncidentTemplateList: { url: '/smartit/rest/incident/templates', method: 'GET', isArray: true }, GetIncidentTemplateTierOptions: { url: '/smartit/rest/category/incidentTemplate/template/templateCategoryTier:id', method: 'GET', isArray: true }, GetIncidentTemplateListByCategory: { url: '/smartit/rest/incident/templates/category', method: 'GET', isArray: true } }), servicerequestTemplateResource = $resource('', {}, { GetServicerequestTemplateList: { url: '/smartit/rest/request/templates', method: 'GET', isArray: true }, GetServicerequestDynamicOptions: { url: '/smartit/rest/request/:srdId/questionoptions/:questionId', method: 'GET', isArray: true } }), taskTemplateResource = $resource('', {}, { GetTaskTemplateMetadata: { url: '/smartit/rest/task/template/metadata', method: 'GET', isArray: true }, GetTaskTemplateList: { url: '/smartit/rest/task/templates', method: 'GET', isArray: true }, GetTaskGroupPreview: { url: '/smartit/rest/task/templates/preview/:groupId', method: 'GET', isArray: true } }), workorderTemplateResource = $resource('', {}, { GetWorkorderTemplateList: { url: '/smartit/rest/workorder/templates', method: 'GET', isArray: true } }), changeTemplateResource = $resource('', {}, { GetChangeTemplateList: { url: '/smartit/rest/change/templates', method: 'GET', isArray: true } }), releaseTemplateResource = $resource('', {}, { GetReleaseTemplateList: { url: '/smartit/rest/release/templates', method: 'GET', isArray: true } }), activityTemplateResource = $resource('', {}, { GetActivityTemplateList: { url: '/smartit/rest/activity/templates', method: 'GET', isArray: true } }); this.getTemplatesForSmartRecorder = function (params) { return smartRecorderResource.getTemplates(params, {}).$promise.then(function (result) { return _.chain(result[0].items[0].objects) .sortBy('type') .map(function (template) { return new SmartRecorderTemplateVO().build(template); }).value(); }); }; this.getIncidentTemplateList = function (searchQuery, companyName) { return incidentTemplateResource.GetIncidentTemplateList({ input: searchQuery, companyName: companyName, isName: true }).$promise.then(function (result) { return result[0].items[0]; }); }; // params = { // 'incidentTemplateCategoryTierX' : 'tierName', // where X in (1,2,3) // 'incidentTemplateCompanyName' : 'companyName', // 'searchText' : 'templateName' // } this.getIncidentTemplateListByCategory = function (params) { // filter empty params var queryArgs = _.transform(params, function (res, v, k) { if (k && v) { res[k] = v; } }); return incidentTemplateResource.GetIncidentTemplateListByCategory(queryArgs) .$promise.then(function (result) { return result[0].items[0]; }); }; this.getIncidentTemplateTierOptions = function (tier, dependency) { var params = { id: tier }; if (!_.isUndefined(dependency)) { params.criteria = dependency; } return incidentTemplateResource.GetIncidentTemplateTierOptions(params).$promise; }; this.getServicerequestTemplateList = function (searchQuery, companyName, customerId) { return servicerequestTemplateResource.GetServicerequestTemplateList({ input: searchQuery, companyName: companyName, user: customerId }).$promise.then(function (result) { return result[0].items[0]; }); }; this.getServicerequestDynamicOptions = function (queryParams) { return servicerequestTemplateResource.GetServicerequestDynamicOptions(queryParams).$promise.then(function (result) { return result[0].items[0]; }); }; this.getTaskTemplateMetadata = function () { return taskTemplateResource.GetTaskTemplateMetadata().$promise; }; this.getTaskTemplateList = function (term, companyName) { return taskTemplateResource.GetTaskTemplateList({ input: term, companyName: companyName }).$promise; }; this.getTaskGroupPreview = function (groupId) { return taskTemplateResource.GetTaskGroupPreview({ groupId: groupId }).$promise; }; this.getWorkorderTemplateList = function (searchQuery, companyName) { return workorderTemplateResource.GetWorkorderTemplateList({ input: searchQuery, companyName: companyName, isName: true }).$promise.then(function (result) { return result[0].items[0]; }); }; this.getAllWorkorderTemplateList = function (company) { return workorderTemplateResource.GetWorkorderTemplateList({ input: '%', companyName: (company && company.name) ? company.name : (_.isString(company) ? company : ''), chunkInfo: { startIndex: 0, chunkSize: 200 } }).$promise.then(function (result) { return result[0].items[0]; }); }; this.getChangeTemplateList = function (searchQuery, companyName) { return changeTemplateResource.GetChangeTemplateList({ input: searchQuery, companyName: companyName, isName: true }).$promise.then(function (result) { return result[0].items[0]; }); }; this.getReleaseTemplateList = function (searchQuery, companyName) { return releaseTemplateResource.GetReleaseTemplateList({ input: searchQuery, companyName: companyName, isName: true }).$promise.then(function (result) { return result[0].items[0]; }); }; this.getActivityTemplateList = function (searchQuery, companyName) { return activityTemplateResource.GetActivityTemplateList({ input: searchQuery, companyName: companyName }).$promise.then(function (result) { return result[0].items[0]; }); }; this.getAllActivityTemplateList = function (company) { return activityTemplateResource.GetActivityTemplateList({ input: '%', companyName: company.name || '', chunkInfo: { startIndex: 0, chunkSize: 200 } }).$promise.then(function (result) { return result[0].items[0]; }); }; }]); }());