(function () { 'use strict'; angular .module('app') .controller('ApprovalMomentsController', approvalMoments); function approvalMoments($scope, $state, $modal, tableSearcher, approvalRepository, careProviderRepository, errorHandler, uiNotifications, approvalModels,approvalStatus, webApiConstants, $translate, localizationHelper) { var vm = this; vm.translationObject = {}; vm.stgFilterDestinationId = null; vm.stgFilterCareProviderId = null; vm.stgFilterStatusId = null; vm.loadTranslation = function(){ $translate(['Info', 'VideoApproved', 'VideoRejected', '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 = "UpdateDateDesc"; vm.sorterIcon = ""; vm.status = +$state.params.status; vm.areFiltersVisible = false; vm.filters = new approvalModels.MomentsFilters(); vm.destinations = []; vm.careProviders = []; vm.selectedService = null; vm.statuses = []; vm.applyFilters = function () { approvalRepository.getAllMoments($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.getApprovalStatusNameByNumber = function(statusNumber){ return vm.translationObject[approvalStatus.APPROVAL_STATUS[statusNumber]]; } 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.MomentsFilters(); vm.filters.selectedCareProvider = vm.careProviders[0]; vm.filters.selectedStatus = vm.statuses[0]; setTimeout(function(){ $("#selectCareProvider").selectpicker("refresh"); }, 1); vm.applyFilters(); }; vm.momentApproveConfirmation = function (id) { uiNotifications.confirm(function(){ vm.approveMoment(id) }); }; vm.approveMoment = function (id) { approvalRepository.approveMomentById(id).success(function (response, status, headers, config) { if (errorHandler.check(response, status, config) == errorHandler.STATUS.SUCCESS) { uiNotifications.inform(vm.translationObject['VideoApproved'], 'info'); $state.reload(); } }); }; vm.openMomentModal = function (moment) { vm.selectedService = moment; var modalInstance = $modal.open({ templateUrl: 'views/modals/video-player.html', controller: 'VideoPlayerModalController', resolve: { moment: function () { return moment; } } }); }; vm.openRejectModal = function (moment) { vm.selectedService = moment; var modalInstance = $modal.open({ templateUrl: 'views/modals/approval-reject-moment.html', controller: 'ApprovalRejectMomentModalController', resolve: { moment: function () { return moment; } } }); modalInstance.result.then(function (rejectionMessage) { var annotationData = { text: rejectionMessage }; approvalRepository.rejectMomentById(vm.selectedService.id, annotationData).success(function (response, status, headers, config) { if (errorHandler.check(response, status, config) == errorHandler.STATUS.SUCCESS) { uiNotifications.inform(vm.translationObject['VideoRejected'], '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'] }); 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. approvalMoments.$inject = [ "$scope", '$state', '$modal', "appUtils.tableSearcher", "repository.approval", "repository.careProvider", "appUtils.errorHandler", "appUtils.uiNotifications", "appModels.approval", "appConstant.approvalStatus", "webApi.constants", "$translate", "helpers.localization" ]; })();