(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"
];
})();