(function () { 'use strict'; angular .module('app') .controller('ApprovalServicesController', approvalServices); function approvalServices($scope, $state, $modal, tableSearcher, approvalRepository, careProviderRepository, errorHandler, uiNotifications, approvalModels, webApiConstants, $translate, localizationHelper) { /* jshint validthis:true */ var vm = this; vm.translationObject = {}; vm.loadTranslation = function(){ $translate(['Info', 'ServiceApproved', 'ServiceApproveConfirmation', 'ServiceRejected', 'All', 'Unknown', 'Pending', 'Approved', 'Rejected']).then(function (tr) { vm.translationObject = tr; getStatuses(); }); }; vm.unsubscribe = localizationHelper.eventEmitter.subscribe('onLanguageChangedEvent', function (lang) { if(vm.filters.selectedStatus){ vm.stgFilterStatusId = vm.filters.selectedStatus.id; } if(vm.filters.selectedCareProvider){ vm.stgFilterCareProviderId = vm.filters.selectedCareProvider.id; } vm.loadTranslation(); getAllCareProviders(); vm.applyFilters(); }); vm.loadTranslation(); // Variables. vm.data = []; vm.searchValue = ""; vm.orderBy = "serviceName"; vm.orderDirection = "desc"; vm.orderParam = "CreateDateDesc"; vm.sorterIcon = ""; vm.status = +$state.params.status; vm.areFiltersVisible = false; vm.filters = new approvalModels.ServicesFilter(); vm.destinations = []; vm.careProviders = []; vm.selectedService = null; vm.statuses = []; vm.applyFilters = function () { approvalRepository.getAllServices($scope.bigCurrentPage, vm.searchValue, vm.filters.selectedCareProvider.id, vm.filters.startDate, vm.filters.endDate, vm.filters.selectedStatus.id, vm.orderParam).success(function (response, status, headers, config) { if (errorHandler.check(response, status, config) == errorHandler.STATUS.SUCCESS) { if (response && response.data) { tableSearcher.define(response ? response.data : []); $scope.bigTotalItems = JSON.parse(headers("X-Pagination")).TotalCount; vm.filteredData = tableSearcher.getData(); } else { tableSearcher.define([]); $scope.bigTotalItems = 0; vm.filteredData = tableSearcher.getData(); } } }); }; vm.getAllServices = function () { vm.applyFilters(); }; vm.sortBy = function(key){ $scope.bigCurrentPage = 1; tableSearcher.sortByFilters(key, vm); }; vm.keyPress = function ($event) { tableSearcher.keypress($event, vm.getAllServices); }; vm.cleanFilters = function () { $('#datefilter').val(''); $('#datefilter').data('daterangepicker').setStartDate(moment().format("MM-DD-YYYY")); $('#datefilter').data('daterangepicker').setEndDate(moment().format("MM-DD-YYYY")); vm.filters.startDate = null; vm.filters.endDate = null; vm.searchValue = null; vm.filters = new approvalModels.ServicesFilter(); vm.filters.selectedStatus = vm.statuses[0]; vm.filters.selectedCareProvider = vm.careProviders[0]; setTimeout(function(){ $("#selectCareProvider").selectpicker("refresh"); }, 1); vm.applyFilters(); }; vm.serviceApproveConfirmation = function (id) { uiNotifications.confirm(function(){ vm.approveService(id) }, vm.translationObject['ServiceApproveConfirmation']); }; vm.approveService = function (id) { approvalRepository.approveServiceById(id).success(function (response, status, headers, config) { if (errorHandler.check(response, status, config) == errorHandler.STATUS.SUCCESS) { uiNotifications.inform(vm.translationObject['ServiceApproved'], 'info'); $state.reload(); } }); }; vm.openServicePreviewPage = function(service){ //var domain = webApiConstants.DOMAIN; var clientSite = webApiConstants.CLIENT_SITE; var route = '#/services/details/'; var id = service.id; var tokenKey = '?token='; var tokenValue = service.token; var url = [clientSite, route, id, tokenKey, tokenValue].join(''); console.log(url); window.open(url); }; vm.openRejectModal = function (service) { vm.selectedService = service; var modalInstance = $modal.open({ templateUrl: 'views/modals/approval-reject.html', controller: 'ApprovalRejectServiceModalController', resolve: { service: function () { return $scope.service; } } }); modalInstance.result.then(function (rejectionMessage) { var annotationData = { text: rejectionMessage }; approvalRepository.rejectServiceById(vm.selectedService.id, annotationData).success(function (response, status, headers, config) { if (errorHandler.check(response, status, config) == errorHandler.STATUS.SUCCESS) { uiNotifications.inform(vm.translationObject['ServiceRejected'], 'info'); $state.reload(); } }); }); }; vm.keyPress = function ($event) { tableSearcher.keypress($event, vm.applyFilters); }; function getStatuses(){ vm.statuses = new StatusList(); vm.statuses.unshift({id: null, name: vm.translationObject['All']}); if(vm.stgFilterStatusId){ vm.filters.selectedStatus = vm.statuses.find(function(s){ return s.id == vm.stgFilterStatusId; }); }else{ vm.filters.selectedStatus = vm.statuses[0]; } } function StatusList(){ return [ new approvalModels.Status('-1', vm.translationObject['Unknown']), new approvalModels.Status('0', vm.translationObject['Pending']), new approvalModels.Status('1', vm.translationObject['Approved']), new approvalModels.Status('2', vm.translationObject['Rejected']) ]; } function getAllCareProviders() { careProviderRepository.getAll().success(function (response, status, headers, config) { if (errorHandler.check(response, status, config) == errorHandler.STATUS.SUCCESS) { vm.careProviders = response.data; vm.careProviders.unshift({id: null, name: vm.translationObject['All'] }); vm.filters.selectedCareProvider = vm.careProviders[0]; if(vm.stgFilterCareProviderId){ vm.filters.selectedCareProvider = vm.careProviders.find(function(p){ return p.id == vm.stgFilterCareProviderId; }); }else{ vm.filters.selectedCareProvider = vm.careProviders[0]; setTimeout(function(){ $('.selectpicker').selectpicker('refresh'); },1) } } }); } $('input[name="datefilter"]').daterangepicker({ autoUpdateInput: false, locale: { cancelLabel: 'Clear' } }); $('input[name="datefilter"]').on('apply.daterangepicker', function(ev, picker) { var startDate = picker.startDate.format('MM/DD/YYYY'); var endDate = picker.endDate.format('MM/DD/YYYY'); $(this).val(startDate + ' - ' + endDate); vm.filters.startDate = startDate; vm.filters.endDate = endDate; }); $('input[name="datefilter"]').on('cancel.daterangepicker', function(ev, picker) { $(this).val(''); $(this).data('daterangepicker').setStartDate(moment().format("MM-DD-YYYY")); $(this).data('daterangepicker').setEndDate(moment().format("MM-DD-YYYY")); vm.filters.startDate = null; vm.filters.endDate = null; }); // Main. $scope.bigCurrentPage = tableSearcher.CONST.CURRENT_PAGE; $scope.itemsPerPage = tableSearcher.CONST.ITEMS_PER_PAGE; $scope.$watch('bigCurrentPage + itemsPerPage', function () { vm.getAllServices(); }); $scope.$on("$destroy", function(){ vm.unsubscribe(); }); getAllCareProviders(); window.APPROVAL_SERVICES = vm; } // IoC container. approvalServices.$inject = [ "$scope", '$state', '$modal', "appUtils.tableSearcher", "repository.approval", "repository.careProvider", "appUtils.errorHandler", "appUtils.uiNotifications", "appModels.approval", "webApi.constants", "$translate", "helpers.localization" ]; })();