(function () { 'use strict'; angular .module('app') .controller('CareProviderMainController', careProviderMain); function careProviderMain($scope, $sce, $state, $modal, $http, $location, tableSearcher,careProviderModels, careProviderRepository, errorHandler, uiNotifications, stripeAccountStatus, trustdockStatus, stripeAccountStatusDescription, $translate, localizationHelper) { var vm = this; vm.translationObject = {}; vm.loadTranslation = function(){ $translate(['expired', 'address_is_not_specified', 'blurred', 'contains_individual_number', 'copy_or_scanned_data', 'failed_randomness_check', 'mismatched_data', 'mismatched_face', 'missing_address', 'missing_issuer', 'missing_thickness', 'no_face', 'not_human', 'other', 'out_of_frame', 'partly_hidden', 'wrong_document', 'Info', 'Success', 'PersonalVerification', 'JapaneseProficiencyTest', 'VisaForForeigners', 'CareProviderLocked', 'CareProviderUnlocked', 'CareProviderLicenseActivated', 'CareProviderLicenseDeactivated']).then(function (tr) { vm.translationObject = tr; }); }; vm.unsubscribe = localizationHelper.eventEmitter.subscribe('onLanguageChangedEvent', function (lang) { vm.loadTranslation(); }); vm.loadTranslation(); vm.itemBorder = { Default: "1px solid #ccc", Danger: "2px solid #aa0000" }; // Variables. vm.filters = new careProviderModels.CareProvidersFilters(); vm.data = []; vm.searchValue = ""; vm.orderBy = "createDate"; vm.orderDirection = "desc"; vm.sorterIcon = ""; vm.status = +$state.params.status; vm.method = vm.status == 0 ? "getAllActive" : "getAllBlocked"; vm.selectedCareProvider = null; vm.model = { "text": null }; vm.getStripeStatusName = function(statusNumber){ return stripeAccountStatus.STRIPE_ACCOUNT_STATUS[statusNumber]; } vm.getStripeStatusDescription = function(statusDescriptionNumber){ if(statusDescriptionNumber != null && statusDescriptionNumber != undefined){ return stripeAccountStatusDescription.STRIPE_ACCOUNT_STATUS_DESCRIPTION[statusDescriptionNumber]; } return null; } vm.getTrustdockStatusName = function(trustdockStatusNumber){ var status = trustdockStatus.TRUSTDOCK_STATUS[trustdockStatusNumber]; if(status){ return status; }else{ return "Pending"; } } vm.searchByPhoneNumber = function(phoneNumber){ vm.searchValue = phoneNumber; vm.applyFilters(); } vm.phoneNumberConfirmationStatus = function(isPhoneNumberConfirmed){ return isPhoneNumberConfirmed ? "Confirmed" : "Pending"; } $scope.renderHtml = function(html_code) { return $sce.trustAsHtml(html_code); }; vm.getTrustdockIDStatusMessage = function(trustdockIdVerificationDenyReasons){ if(trustdockIdVerificationDenyReasons){ var message = ""; if('personal Verification (for Japanese)' in trustdockIdVerificationDenyReasons){ message += ""+vm.translationObject["PersonalVerification"] + ": "+ vm.translationObject[trustdockIdVerificationDenyReasons["personal Verification (for Japanese)"]] + "
"; } if('japanese proficiency test' in trustdockIdVerificationDenyReasons){ message += ""+vm.translationObject["JapaneseProficiencyTest"] + ": "+ vm.translationObject[trustdockIdVerificationDenyReasons["japanese proficiency test"]] + "
"; } if('visa for foreigners' in trustdockIdVerificationDenyReasons){ message += ""+vm.translationObject["VisaForForeigners"] + ": "+ vm.translationObject[trustdockIdVerificationDenyReasons["visa for foreigners"]]; } if(message.length){ return message; } } return null; } vm.sortBy = function(key){ $scope.bigCurrentPage = 1; tableSearcher.sortBy(key, vm); }; vm.keyPress = function ($event) { tableSearcher.keypress($event, vm.applyFilters); }; vm.getFullName = function(careProvider){ var fullName = careProvider.firstName + " " + careProvider.lastName; if(careProvider.firstName == null && careProvider.lastName == null){ fullName = '-'; } return fullName; }; vm.manageCareProvider = function(service, action){ var message = new uiNotifications.MessageModel(); if (action == "block") { message.text = vm.translationObject['CareProviderLocked']; } else { message.text = vm.translationObject['CareProviderUnlocked']; message.type = "success"; } careProviderRepository[action](service).success(function(response, status, headers, config){ if (errorHandler.check(response, status, config) == errorHandler.STATUS.SUCCESS) { uiNotifications.inform(message.text, message.type); $state.reload(); } }); }; vm.openCareProviderProfile = function(id){ appLocalStorage.delete("currentTabUrl"); $state.go('careProviders.profile', {"id": id}); }; vm.activateCareProviderLicense = function (careProviderId) { careProviderRepository.activateLicense(careProviderId).success(function (response, status, headers, config) { if (errorHandler.check(response, status, config) == errorHandler.STATUS.SUCCESS) { uiNotifications.inform(vm.translationObject['CareProviderLicenseActivated'], 'info'); vm.changeLicenseStatus(careProviderId, 'activate'); } else if (response && !response.success) { uiNotifications.popup(response.message); } }); } vm.openRejectModal = function (careProvider) { vm.selectedCareProvider = careProvider; var modalInstance = $modal.open({ templateUrl: 'views/modals/approval-reject-care-provider-license.html', controller: 'ApprovalRejectCareProviderLicenseModalController', resolve: { careProvider: function () { return $scope.careProvider; } } }); modalInstance.result.then(function (rejectionMessage) { var annotationData = { text: rejectionMessage }; careProviderRepository.deActivateLicense(vm.selectedCareProvider.id, annotationData).success(function (response, status, headers, config) { if (errorHandler.check(response, status, config) == errorHandler.STATUS.SUCCESS) { uiNotifications.inform(vm.translationObject['CareProviderLicenseDeactivated'], 'info'); vm.changeLicenseStatus(vm.selectedCareProvider.id, 'deactivate'); } else if (response && !response.success) { uiNotifications.popup(response.message); } }); }); }; vm.changeLicenseStatus = function (careProviderId, action) { var certainCareProvider = vm.filteredData.filter(function (careProvider) { return careProvider.id ==careProviderId; }); if(certainCareProvider){ certainCareProvider[0].isLicensed = action == "activate"; } }; // Main. $scope.bigCurrentPage = tableSearcher.CONST.CURRENT_PAGE; $scope.itemsPerPage = tableSearcher.CONST.ITEMS_PER_PAGE; $scope.$watch('bigCurrentPage + itemsPerPage', function () { vm.applyFilters(); }); vm.areFiltersVisible = false; vm.applyFilters = function () { vm.filters.search = vm.searchValue ? encodeURIComponent(vm.searchValue) : vm.searchValue; vm.filters.orderBy = vm.orderBy; vm.filters.orderDirection = vm.orderDirection; careProviderRepository[vm.method]($scope.bigCurrentPage, $scope.itemsPerPage, vm.filters).success(function (response, status, headers, config) { if (errorHandler.check(response, status, config) == errorHandler.STATUS.SUCCESS) { if (response && response.data) { var _data = response.data; tableSearcher.define(_data); $scope.bigTotalItems = JSON.parse(headers("X-Pagination")).TotalCount; vm.filteredData = tableSearcher.getData(); } else { tableSearcher.define([]); $scope.bigTotalItems = 0; vm.filteredData = tableSearcher.getData(); } } }); }; $('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; }); 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 careProviderModels.CareProvidersFilters(); vm.applyFilters(); }; $scope.$on("$destroy", function(){ vm.unsubscribe(); }); } // IoC container. careProviderMain.$inject = [ "$scope", "$sce", '$state', '$modal', '$http', '$location', "appUtils.tableSearcher", "appModels.careProviderModels", "repository.careProvider", "appUtils.errorHandler", "appUtils.uiNotifications", "appConstant.stripeAccountStatus", "appConstant.trustdockStatus", "appConstant.stripeAccountStatusDescription", "$translate", "helpers.localization" ]; })();