Open jlu344 opened 8 years ago
app.controller("HomePageController", [ "$rootScope", "$scope", "dataFactoryConcession", "dataFactoryUser", "$location", "$filter", "$uibModal", "UserType", function ($rootScope, $scope, dataFactoryConcession, dataFactoryUser, $location, $filter, $uibModal, UserType) {
$scope.tabs = { active: 0 };
$scope.selectTabs = function (systemId) {
$rootScope.systemId = systemId;
resetLocalScopeVariables();
};
var trimStart = function (character, string) {
var startIndex = 0;
while (string[startIndex] === character) {
startIndex++;
}
return string.substr(startIndex);
};
var trimEnd = function (character, string) {
var startIndex = 0;
var endIndex = string.length;
while (string[endIndex] === character) {
endIndex--;
}
return string.substr(startIndex, endIndex);
};
var openDeleteConfirmation = function (size) {
var textInPopup = "<p>Are you sure you want to delete?</p>";
var modalInstance = $uibModal.open({
animation: true,
templateUrl: "HomePagePopup.html",
controller: "HomePagePopup",
windowClass: "modal-popup",
size: size,
resolve: {
param: function () {
return { popuptext: textInPopup, proceedtext: "OK", popupheader: "Confirm" }
}
}
});
modalInstance.result.then(deleteRequest, function () {
});
};
var openAssignMLConfirmation = function (size) {
$scope.modal = { AssignMLNumber: "" };
var textInPopup = "<p>Enter ML number below</p>";
var modalInstance = $uibModal.open({
animation: true,
templateUrl: "HomePageAssignMLPopup.html",
controller: "AssignMLNumberPopup",
windowClass: "modal-popup",
size: size,
scope: $scope,
resolve: {
param: function () {
return { popuptext: textInPopup, proceedtext: "Assign", prospectNumber: $scope.AssignMLNumberFor.ProspectNumber, statusId: $scope.AssignMLNumberFor.StatusId, purposeIndicator: $scope.AssignMLNumberFor.PurposeIndicator }
},
dataFactoryConcession: dataFactoryConcession,
rootScope: $rootScope
}
});
modalInstance.result.then(function () {
}, function () {
});
};
var changeApproverForm = function (acctNumber, faMLID, oldApproverMLID, size) {
$scope.modal = { AssignMLNumber: "" };
var modalInstance = $uibModal.open({
animation: true,
templateUrl: "ChangeApproverPopup.html",
controller: "ChangeApproverPopup",
windowClass: "modal-popup",
size: size,
scope: $scope,
resolve: {
param: function () {
return { acctNumber: acctNumber, faMLID: faMLID, oldApproverMLID: oldApproverMLID }
},
dataFactoryConcession: dataFactoryConcession,
rootScope: $rootScope
}
});
modalInstance.result.then(function () {
}, function () {
});
};
//Store all approver data into $scope
var loadApproverData = function () {
if (!angular.isUndefined($scope.CASelectedRow)) {
$scope.SelectedChangeApprover = null;
$scope.ComplexApprovers = [];
$scope.MarketApprovers = [];
$scope.SBLApprovers = [];
var data = $scope.CASelectedRow;
var currentApproverStep = data.Step1StatusID == 1 ? 1 :
data.Step2StatusID == 1 ? 2 :
data.Step3StatusID == 1 ? 3 : 0;
var acctNumber = data.AccountNumber;
var faMLID = data.SubmittedFA_MLID
var oldApproverMLID = currentApproverStep == 1 ? data.Step1Approver_MLID :
currentApproverStep == 2 ? data.Step2Approver_MLID :
currentApproverStep == 3 ? data.Step3Approver_MLID : null;
dataFactoryConcession.LoadApprover(faMLID).then(function (response) {
$scope.ApproverList = response.data;
var nAppCount = $scope.ApproverList.length;
for (var i = 0; i < nAppCount; i++) {
if ($scope.ApproverList[i].SBLTitleCode == 1) {
$scope.ComplexApprovers.push($scope.ApproverList[i]);
}
if ($scope.ApproverList[i].SBLTitleCode == 2) {
$scope.MarketApprovers.push($scope.ApproverList[i]);
}
if ($scope.ApproverList[i].SBLTitleCode == 3) {
$scope.SBLApprovers.push($scope.ApproverList[i]);
}
}
$scope.SBLApprovers = $filter("orderBy")($scope.SBLApprovers, 'FullName');
//No complex level approver
if ($scope.ComplexApprovers.length == 0) {
$scope.MissingComplexAdmin = true;
} else {
$scope.ComplexApprovers = $filter("orderBy")($scope.ComplexApprovers, 'FullName');
}
if ($scope.MarketApprovers.length > 0) $scope.MarketApprovers = $filter("orderBy")($scope.MarketApprovers, 'FullName');
if ($scope.SBLApprovers.length > 0) $scope.SBLApprovers = $filter("orderBy")($scope.SBLApprovers, 'FullName');
$scope.PopUpApproversList = currentApproverStep == 1 ? $scope.ComplexApprovers :
currentApproverStep == 2 ? $scope.MarketApprovers :
currentApproverStep == 3 ? $scope.SBLApprovers : [];
changeApproverForm(acctNumber, faMLID, oldApproverMLID);
});
}
};
var doAfterIndirectEmulation = {
ViewRequest: function () {
var account = angular.isUndefined($scope.tempValue.accountNumber) ? "" : $scope.tempValue.accountNumber;
var statusId = angular.isUndefined($scope.tempValue.statusId) ? "" : $scope.tempValue.statusId;
$scope.tempValue = {};
viewRequest(account, statusId);
},
StartRequest: function () {
var account = angular.isUndefined($scope.tempValue.accountNumber) ? "" : $scope.tempValue.accountNumber;
$scope.tempValue = {};
$rootScope.request.AccountNumber = account;
$scope.request.AccountNumber = account;
if ($rootScope.systemId === 1) {
$scope.loadAccountStatus();
} else {
$scope.loadMarginAccountStatus();
}
},
StartProspectRequest: function () {
if ($rootScope.systemId === 1) {
$scope.loadProspectDisclaimer();
} else {
$scope.loadMarginProspectDisclaimer();
}
}
};
var openIndirectEmulationConfirmation = function (producerName, producerId, mlId, account, pointofContactFA) {
var textInPopup = "<p>This account is managed by Producer " + producerName + " (" + producerId + "). If you proceed with this request, you will be acting as that Producer within Pricing Portal.</p><p>Do you wish to proceed?</p>";
var showPointOfContactFA = false;
if (!angular.isUndefined(pointofContactFA)) {
textInPopup = "<p>This account is managed by Pool Producer (" + producerId + "). If you proceed with this request, you will be acting as that Producer within Pricing Portal and will need to select a point of contact FA from within the pool.</p><p>Do you wish to proceed?</p>";
showPointOfContactFA = true;
}
var modalInstance = $uibModal.open({
animation: true,
templateUrl: "IndirectEmulationPopup.html",
controller: "IndirectEmulationPopup",
windowClass: "modal-popup",
size: 'md',
resolve: {
param: function () {
return {
popuptext: textInPopup, proceedtext: "Proceed", popupheader: "Proceed as Producer?",
PointOfContactFAEmulateUsers: pointofContactFA, showPointOfContactFA: showPointOfContactFA,
MlId: mlId, selectedPointOfContactFA: "0"
}
}
},
scope: $scope
});
modalInstance.result.then(function () {
$scope.tempValue.accountNumber = account;
doAfterIndirectEmulation.StartRequest();
}, function () {
});
};
var openProspectEmulationConfirmation = function () {
var textInPopup = "<p>Please put a Producer in-context in order to enter a Prospect Request on his or her behalf.</p>";
$rootScope.indirectDisplayUserPopup = true;
var modalInstance = $uibModal.open({
animation: true,
templateUrl: "UserContextPopup.html",
controller: "UserContextPopup",
windowClass: "modal-popup",
size: 'md',
resolve: {
param: function () {
return { popuptext: textInPopup, proceedtext: "Login As", doAfterEmulation: doAfterIndirectEmulation.StartProspectRequest }
}
},
scope: $scope
});
modalInstance.result.then(function () {
//doIndirectEmulation(mlId);
$rootScope.indirectDisplayUserPopup = false;
$scope.displayUserPopup = false;
}, function () {
$rootScope.indirectDisplayUserPopup = false;
$scope.displayUserPopup = false;
});
};
var openIsActiveACBSConcessionPopUp = function (data) {
var modalInstance = $uibModal.open({
animation: true,
templateUrl: "IsActiveACBSConcessionPopUp.html",
controller: "IsActiveACBSConcessionPopUp",
windowClass: "modal-popup",
size: 'md',
resolve: {
param: function () {
return { data: data }
}
},
scope: $scope
});
modalInstance.result.then(function () {
}, function () {
$scope.withdraw(data.AccountNumber);
});
};
$scope.openIsActiveACBSConcessionPopUp = openIsActiveACBSConcessionPopUp;
var openIsLMANotActivatedStateinACBSPopUp = function (data) {
var modalInstance = $uibModal.open({
animation: true,
templateUrl: "IsLMANotActivatedStateinACBSPopUp.html",
controller: "IsLMANotActivatedStateinACBSPopUp",
windowClass: "modal-popup",
size: 'md',
resolve: {
param: function () {
return { data: data }
}
},
scope: $scope
});
};
$scope.openIsLMANotActivatedStateinACBSPopUp = openIsLMANotActivatedStateinACBSPopUp;
var getIdentity = function (faId, account, isPool) {
if (isPool) {
dataFactoryUser.GetUsersToEmulate($scope.UserContext.MlId, faId, 7).then(function (response) {
var pointOfContactFAEmulateUsers = response.data;
if (angular.isUndefined(pointOfContactFAEmulateUsers) || pointOfContactFAEmulateUsers.length === 0) {
$scope.AccountStatusMessage = "You do not have permission to take action against this account.";
return;
} else {
$scope.AccountStatusMessage = "";
openIndirectEmulationConfirmation("", faId, faId, account, pointOfContactFAEmulateUsers);
}
}, function () {
$scope.PointOfContactFAEmulateUsers = "";
});
} else {
$scope.showPointOfContactFA = false;
$scope.PointOfContactFAEmulateUsers = "";
dataFactoryUser.GetUsersToEmulate($scope.LoginUserContext.MlId, faId, 5).then(function (response) {
var userData = response.data;
if (angular.isUndefined(userData) || userData.length === 0) {
$scope.AccountStatusMessage = "You do not have permission to take action against this account.";
return;
} else {
userData = userData[0];
$scope.AccountStatusMessage = "";
openIndirectEmulationConfirmation(userData.Name, faId, userData.Mlid, account);
}
});
}
};
$scope.loadProspectUserEmulation = function () {
$rootScope.request.IsProspectRequest = true;
$rootScope.request.AccountNumber = ""; //Prospect Doesnt require Account number
$scope.userPopupMode = true;
openProspectEmulationConfirmation();
};
$scope.loadIndirectEmulation = function () {
if (!angular.isUndefined($scope.LoginUserContext)) {
dataFactoryConcession.checkFaIdForIndirectEmulation($scope.request.AccountNumber, $rootScope.systemId).then(function (response) {
var faInfo = response.data;
if (angular.isUndefined(faInfo.FAID) || (faInfo.FAID === "" && !faInfo.IsPool)) {
$scope.AccountStatusMessage = "Account not found";
return;
}
$scope.AccountStatusMessage = "";
//For CA Login only
if ($scope.LoginUserContext.Identity !== UserType.CA) return;
getIdentity(faInfo.FAID, $scope.request.AccountNumber, faInfo.IsPool);
});
}
};
var withdraw = function (acct) {
var requestMlId = $scope.SelectedInProgressMLID;
dataFactoryConcession.recallRequest((!angular.isUndefined(acct) || acct != null) ? acct : $scope.SelectedInProgressAccount, requestMlId).then(function (response) {
$scope.SelectedInProgressAccount = "";
$scope.WithdrawMessage = response.data;
if (response.data.indexOf("Error") > -1 || response.data.indexOf("Invalid") > -1)
$scope.errorWithdraw = true;
else {
//TODO fix below message
$scope.WithdrawMessage = (acct != null && acct != 0) ? null : "Request Withdrawn Successfully";
$scope.errorWithdraw = false;
if ($rootScope.systemId === 1) {
LmaRequest.LoadRequestsInRouting();
LmaRequest.LoadRequestsInDraft();
} else {
MarginRequest.LoadRequestsInRouting();
MarginRequest.LoadRequestsInDraft();
}
}
});
};
$scope.withdraw = withdraw;
var notifyMailClient = function () {
//alert($scope.SelectedMailTo);
window.location = $scope.SelectedMailTo;
};
var LmaRequest = {
SystemId: 1,
LoadRequestsInDraft: function () {
dataFactoryConcession.loadRequestInDraft($scope.LoginUserContext, this.SystemId).then(function (response) {
var columns = $scope.Role === UserType.CA ? ["Account Number", "Producer", "Account Name", "Current Pricing Value", "Status", "Requested Spread", "Last Updated Date"]
: ["Account Number", "Account Name", "Current Pricing Value", "Status", "Requested Spread", "Last Updated Date"];
var dataBind = $scope.Role === UserType.CA ? ["AccountNumber", "ProducerName", "AccountName", "LoanBalance", "StatusDesc", "CurrentNetSpreadAfterConcession", "UpdatedDate"]
: ["AccountNumber", "AccountName", "LoanBalance", "StatusDesc", "CurrentNetSpreadAfterConcession", "UpdatedDate"];
var gridData = {
data: response.data,
columns: columns,
databind: dataBind,
filter: { LoanBalance: "currency", CurrentNetSpreadAfterConcession: "percentage:3", UpdatedDate: 'datetime:"MM/dd/yyyy"' },
customBinding: { AccountNumber: '<a ng-click="click({account:\'_VALUE_\'})">_VALUE_</a>' },
sort: { column: "UpdatedDate", descending: true },
errMessage: "There are currently no draft requests"
};
$scope.LmaInDraftRequests = gridData;
});
},
LoadRequestsInRouting: function () {
dataFactoryConcession.loadRequestInRouting($scope.LoginUserContext, this.SystemId).then(function (response) {
var columns = $scope.Role === UserType.CA ? ["Account Number", "Producer", "Account Name", "Current Pricing Value", "Status", "Requested Spread", "Approvers", "Waiting For", "Since"]
: ["Account Number", "Account Name", "Current Pricing Value", "Status", "Requested Spread", "Approvers", "Waiting For", "Since"];
var dataBind = $scope.Role === UserType.CA ? ["AccountNumber", "ProducerName", "AccountName", "LoanBalance", "StatusDesc", "CurrentNetSpreadAfterConcession", "ApproversDirective", "WaitingForDirective", "UpdatedDate"]
: ["AccountNumber", "AccountName", "LoanBalance", "StatusDesc", "CurrentNetSpreadAfterConcession", "ApproversDirective", "WaitingForDirective", "UpdatedDate"];
var gridData = {
data: response.data,
columns: columns,
databind: dataBind,
filter: { LoanBalance: "currency", CurrentNetSpreadAfterConcession: "percentage:3", UpdatedDate: 'datetime:"MM/dd/yyyy"' },
customBinding: { AccountNumber: '<a ng-click="click({account:\'_VALUE_\'})">_VALUE_</a>' },
errMessage: "There are currently no requests in progress",
sort: { column: "UpdatedDate", descending: true }
};
$scope.LmaInProgressRequests = gridData;
});
},
LoadApprovedRequests: function () {
dataFactoryConcession.loadApprovedRequest($scope.LoginUserContext, this.SystemId).then(function (response) {
var columns = $scope.Role === UserType.CA ? ["Account Number", "Producer", "Account Name", "Approved Pricing Value", "Status", "Approved Spread", "Approvers"]
: ["Account Number", "Account Name", "Approved Pricing Value", "Status", "Approved Spread", "Approvers"];
var dataBind = $scope.Role === UserType.CA ? ["AccountNumber", "ProducerName", "AccountName", "PricingValueApproved", "StatusDesc", "CurrentNetSpreadAfterConcession", "ApproversDirective"]
: ["AccountNumber", "AccountName", "PricingValueApproved", "StatusDesc", "CurrentNetSpreadAfterConcession", "ApproversDirective"];
var gridData = {
data: response.data,
columns: columns,
databind: dataBind,
customBinding: { AccountNumber: '<a ng-click="click({account:\'_VALUE_\'})">_VALUE_</a>' },
filter: { PricingValueApproved: "currency", CurrentNetSpreadAfterConcession: "percentage:3" },
errMessage: "There are currently no approved requests"
};
$scope.LmaApprovedRequests = gridData;
});
},
LoadApprovedRequestsForApproverHome: function () {
dataFactoryConcession.loadApprovedRequest($scope.LoginUserContext, this.SystemId).then(function (response) {
var gridData = {
data: response.data,
columns: ["Account Number", "Account Name", "Approved Pricing Value", "Status", "Approved Spread", "Approvers"],
databind: ["AccountNumber", "AccountName", "PricingValueApproved", "StatusDesc", "CurrentNetSpreadAfterConcession", "ApproversDirective"],
filter: { PricingValueApproved: "currency", CurrentNetSpreadAfterConcession: "percentage:3" },
customBinding: { AccountNumber: '<a ng-click="click({account:\'_VALUE_\'})">_VALUE_</a>' },
errMessage: "There are currently no approved requests"
};
$scope.LmaApprovedRequests = gridData;
});
},
LoadUploadedRequests: function () {
dataFactoryConcession.loadUploadedRequest($scope.LoginUserContext, this.SystemId).then(function (response) {
var columns = $scope.Role === UserType.CA ? ["Account Number", "Producer", "Account Name", "Approved Pricing Value", "Status", "Approved Spread", "Approved Date", "Uploaded Date"]
: ["Account Number", "Account Name", "Approved Pricing Value", "Status", "Approved Spread", "Approved Date", "Uploaded Date"];
var dataBind = $scope.Role === UserType.CA ? ["AccountNumber", "ProducerName", "AccountName", "PricingValueApproved", "StatusDesc", "CurrentNetSpreadAfterConcession", "UpdatedDate", "RequestArchiveDate"]
: ["AccountNumber", "AccountName", "PricingValueApproved", "StatusDesc", "CurrentNetSpreadAfterConcession", "UpdatedDate", "RequestArchiveDate"];
var gridData = {
data: response.data,
columns: columns,
databind: dataBind,
filter: { PricingValueApproved: "currency", CurrentNetSpreadAfterConcession: "percentage:3", UpdatedDate: 'datetime:"MM/dd/yyyy"', RequestArchiveDate: 'datetime:"MM/dd/yyyy"' },
customBinding: { AccountNumber: '<a ng-click="click({account:\'_VALUE_\',index: \'_INDEX_\'})">_VALUE_</a>' },
errMessage: "There are currently no requests that are already in place",
sort: { column: "RequestArchiveDate", descending: true }
};
$scope.LmaUploadedRequests = gridData;
});
},
LoadFAHomeTables: function () {
this.LoadRequestsInDraft();
this.LoadRequestsInRouting();
this.LoadApprovedRequests();
this.LoadUploadedRequests();
},
LoadCAHomeTables: function () {
this.LoadRequestsInDraft();
this.LoadRequestsInRouting();
this.LoadApprovedRequests();
this.LoadUploadedRequests();
},
LoadApproverHomeTables: function () {
this.LoadRequestsInRouting();
this.LoadApprovedRequestsForApproverHome();
}
};
$scope.LMARequest = LmaRequest;
var homePageActions = {
draftActions: [
{ l: "Action..", fn: false },
{ l: "Assign ML #", fn: openAssignMLConfirmation },
{ l: "Delete", fn: openDeleteConfirmation }
],
inProgressActions: [
{ l: "Action..", fn: false },
{ l: "Assign ML #", fn: openAssignMLConfirmation },
{ l: "Change Approver", fn: loadApproverData },
{ l: "Notify Approver", fn: notifyMailClient },
{ l: "Withdraw", fn: withdraw }
],
approvedActions: [
{ l: "Action..", fn: false },
{ l: "Assign ML #", fn: openAssignMLConfirmation }
],
inRoutingActions: [
{ l: "Action..", fn: false },
{ l: "Change Approver", fn: loadApproverData },
{ l: "Notify FA", fn: notifyMailClient }
],
approverApprovedActions: [
{ l: "Action..", fn: false },
{ l: "Notify FA", fn: notifyMailClient }
]
};
$scope.LMAActions = {
draftRequest: homePageActions.draftActions,
progressRequest: homePageActions.inProgressActions,
approvedRequest: homePageActions.approvedActions,
routingRequest: homePageActions.inRoutingActions,
approverApprovedActions: homePageActions.approverApprovedActions
}
var MarginRequest = {
SystemId: 0,
LoadRequestsInDraft: function () {
dataFactoryConcession.loadRequestInDraft($scope.LoginUserContext, this.SystemId).then(function (response) {
var columns = $scope.Role === UserType.CA ? ["Account Number", "Producer", "Account Name", "Margin Debit Balance", "Status", "Requested Discount", "Last Updated Date"]
: ["Account Number", "Account Name", "Margin Debit Balance", "Status", "Requested Discount", "Last Updated Date"];
var dataBind = $scope.Role === UserType.CA ? ["AccountNumber", "ProducerName", "AccountName", "LoanBalance", "StatusDesc", "ConcessionRequested", "UpdatedDate"]
: ["AccountNumber", "AccountName", "LoanBalance", "StatusDesc", "ConcessionRequested", "UpdatedDate"];
var gridData = {
data: response.data,
columns: columns,
databind: dataBind,
filter: { LoanBalance: "currency", ConcessionRequested: "percentage:3", UpdatedDate: 'datetime:"MM/dd/yyyy"' },
customBinding: { AccountNumber: '<a ng-click="click({account:\'_VALUE_\'})">_VALUE_</a>' },
sort: { column: "UpdatedDate", descending: true },
errMessage: "There are currently no draft requests"
};
$scope.MarginInDraftRequests = gridData;
});
},
LoadRequestsInRouting: function () {
dataFactoryConcession.loadRequestInRouting($scope.LoginUserContext, this.SystemId).then(function (response) {
var columns = $scope.Role === UserType.CA ? ["Account Number", "Producer", "Account Name", "Margin Debit Balance", "Status", "Requested Discount", "Approvers", "Waiting For", "Since"]
: ["Account Number", "Account Name", "Margin Debit Balance", "Status", "Requested Discount", "Approvers", "Waiting For", "Since"];
var dataBind = $scope.Role === UserType.CA ? ["AccountNumber", "ProducerName", "AccountName", "LoanBalance", "StatusDesc", "ConcessionRequested", "ApproversDirective", "WaitingForDirective", "UpdatedDate"]
: ["AccountNumber", "AccountName", "LoanBalance", "StatusDesc", "ConcessionRequested", "ApproversDirective", "WaitingForDirective", "UpdatedDate"];
var gridData = {
data: response.data,
columns: columns,
databind: dataBind,
filter: { LoanBalance: "currency", ConcessionRequested: "percentage:3", UpdatedDate: 'datetime:"MM/dd/yyyy"' },
customBinding: { AccountNumber: '<a ng-click="click({account:\'_VALUE_\'})">_VALUE_</a>' },
errMessage: "There are currently no requests in progress",
sort: { column: "UpdatedDate", descending: true }
};
$scope.MarginInProgressRequests = gridData;
});
},
LoadApprovedRequests: function () {
dataFactoryConcession.loadApprovedRequest($scope.LoginUserContext, this.SystemId).then(function (response) {
var columns = $scope.Role === UserType.CA ? ["Account Number", "Producer", "Account Name", "Margin Debit Balance", "Status", "Approved Discount", "Approvers"]
: ["Account Number", "Account Name", "Margin Debit Balance", "Status", "Approved Discount", "Approvers"];
var dataBind = $scope.Role === UserType.CA ? ["AccountNumber", "ProducerName", "AccountName", "LoanBalance", "StatusDesc", "ConcessionRequested", "ApproversDirective"]
: ["AccountNumber", "AccountName", "LoanBalance", "StatusDesc", "ConcessionRequested", "ApproversDirective"];
var gridData = {
data: response.data,
columns: columns,
databind: dataBind,
filter: { LoanBalance: "currency", ConcessionRequested: "percentage:3" },
customBinding: { AccountNumber: '<a ng-click="click({account:\'_VALUE_\'})">_VALUE_</a>' },
errMessage: "There are currently no approved requests"
};
$scope.MarginApprovedRequests = gridData;
});
},
LoadApprovedRequestsForApproverHome: function () {
dataFactoryConcession.loadApprovedRequest($scope.LoginUserContext, this.SystemId).then(function (response) {
var gridData = {
data: response.data,
columns: ["Account Number", "Account Name", "Margin Debit Balance", "Status", "Approved Discount", "Approvers"],
databind: ["AccountNumber", "AccountName", "LoanBalance", "StatusDesc", "ConcessionRequested", "ApproversDirective"],
filter: { LoanBalance: "currency", ConcessionRequested: "percentage:3" },
customBinding: { AccountNumber: '<a ng-click="click({account:\'_VALUE_\'})">_VALUE_</a>' },
errMessage: "There are currently no approved requests"
};
$scope.MarginApprovedRequests = gridData;
});
},
LoadUploadedRequests: function () {
dataFactoryConcession.loadUploadedRequest($scope.LoginUserContext, this.SystemId).then(function (response) {
var columns = $scope.Role === UserType.CA ? ["Account Number", "Producer", "Account Name", "Margin Debit Balance", "Status", "Approved Discount", "Approved Date", "Uploaded Date"]
: ["Account Number", "Account Name", "Margin Debit Balance", "Status", "Approved Discount", "Approved Date", "Uploaded Date"];
var dataBind = $scope.Role === UserType.CA ? ["AccountNumber", "ProducerName", "AccountName", "PricingValueApproved", "StatusDesc", "ConcessionRequested", "UpdatedDate", "RequestArchiveDate"]
: ["AccountNumber", "AccountName", "PricingValueApproved", "StatusDesc", "ConcessionRequested", "UpdatedDate", "RequestArchiveDate"];
var gridData = {
data: response.data,
columns: columns,
databind: dataBind,
filter: { PricingValueApproved: "currency", ConcessionRequested: "percentage:3", UpdatedDate: 'datetime:"MM/dd/yyyy"', RequestArchiveDate: 'datetime:"MM/dd/yyyy"' },
customBinding: { AccountNumber: '<a ng-click="click({account:\'_VALUE_\'})">_VALUE_</a>' },
errMessage: "There are currently no requests that are already in place",
sort: { column: "RequestArchiveDate", descending: true }
};
$scope.MarginUploadedRequests = gridData;
});
},
LoadFAHomeTables: function () {
this.LoadRequestsInDraft();
this.LoadRequestsInRouting();
this.LoadApprovedRequests();
this.LoadUploadedRequests();
},
LoadCAHomeTables: function () {
this.LoadRequestsInDraft();
this.LoadRequestsInRouting();
this.LoadApprovedRequests();
this.LoadUploadedRequests();
},
LoadApproverHomeTables: function () {
this.LoadRequestsInRouting();
this.LoadApprovedRequestsForApproverHome();
}
};
$scope.MarginRequest = MarginRequest;
$scope.MarginActions = {
draftRequest: homePageActions.draftActions,
progressRequest: homePageActions.inProgressActions,
approvedRequest: homePageActions.approvedActions,
routingRequest: homePageActions.inRoutingActions,
approverApprovedActions: homePageActions.approverApprovedActions
};
var deleteRequest = function () {
var requestMlId = $scope.SelectDraftMLID;
dataFactoryConcession.deleteRequest($scope.SelectedDraftAccount, requestMlId).then(function (response) {
$scope.SelectedDraftAccount = "";
$scope.DeleteMessage = response.data;
if (response.data.indexOf("Error") > -1 || response.data.indexOf("Invalid") > -1)
$scope.errorDeleting = true;
else {
$scope.errorDeleting = false;
if ($rootScope.systemId === 1)
LmaRequest.LoadRequestsInDraft();
else
MarginRequest.LoadRequestsInDraft();
}
});
};
var reloadSpecificTable = function (systemId, statusId) {
if (systemId == 1 && statusId == 0) {
LmaRequest.LoadRequestsInDraft();
} else if (systemId == 1 && statusId == 1) {
LmaRequest.LoadRequestsInRouting();
} else if (systemId == 1 && statusId == 4) {
LmaRequest.LoadApprovedRequests();
} else if (systemId == 0 && statusId == 0) {
MarginRequest.LoadRequestsInDraft();
} else if (systemId == 0 && statusId == 1) {
MarginRequest.LoadRequestsInRouting();
} else if (systemId == 0 && statusId == 4) {
MarginRequest.LoadApprovedRequests();
}
}
$scope.ReloadSpecificTable = reloadSpecificTable;
var loadFAHomeTables = function () {
LmaRequest.LoadFAHomeTables();
MarginRequest.LoadFAHomeTables();
};
var loadCAHomeTables = function () {
LmaRequest.LoadCAHomeTables();
MarginRequest.LoadCAHomeTables();
};
var loadApproverHomeTables = function () {
$scope.Role = "A";
LmaRequest.LoadApproverHomeTables();
MarginRequest.LoadApproverHomeTables();
};
var loadFAHomePage = function () {
if (!angular.isUndefined($scope.LoginUserContext)) {
$rootScope.request.AccountNumber = "";
$scope.Role = "FA";
loadFAHomeTables();
}
}
var loadCAHomePage = function () {
if (!angular.isUndefined($scope.LoginUserContext)) {
$rootScope.request.AccountNumber = "";
$scope.Role = UserType.CA;
$scope.$on("LoadCAHomePage", function () {
var faMlId = "";
for (var i = 0; i < $scope.EmulateUsers.length; i++) {
faMlId += $scope.EmulateUsers[i].Mlid;
if (i !== $scope.EmulateUsers.length - 1)
faMlId += ",";
}
$scope.LoginUserContext.FaMlIds = faMlId;
loadCAHomeTables();
});
}
};
var loadApproverHomePage = function () {
if (!angular.isUndefined($scope.LoginUserContext)) {
$rootScope.request.AccountNumber = "";
loadApproverHomeTables();
}
};
var resetLocalScopeVariables = function () {
$scope.SelectedDraftAccount = ""; // Set default
$scope.SelectedInProgressAccount = ""; // Set default
$scope.SelectedApprovedAccount = ""; // Set default
$scope.DeleteMessage = "";
$scope.AssignMLMessage = "";
$scope.WithdrawMessage = "";
$scope.SelectedMailTo = "";
$scope.AccountStatusMessage = "";
$scope.AssignMLNumberFor = {
ProspectNumber: "",
PurposeIndicator: "",
StatusId: ""
};
$scope.SelectDraftMLID = "";
$scope.SelectedInProgressMLID = "";
$scope.CASelectedRow = {};
$scope.tempValue = {};
if (!angular.isUndefined($rootScope.request)) {
$rootScope.request.AccountNumber = "";
}
};
var loadRespectiveHomePage = function () {
resetLocalScopeVariables();
$scope.tabs.active = $rootScope.systemId === 0 ? 1 : 0;
var requestedHomePage = $location.path();
if (requestedHomePage.indexOf("FAHomePage") > -1)
loadFAHomePage();
else if (requestedHomePage.indexOf("CAHomePage") > -1)
loadCAHomePage();
else if (requestedHomePage.indexOf("Approver") > -1)
loadApproverHomePage();
};
var determinLmaState = function () {
dataFactoryConcession.DeterminLmaState($scope.request.AccountNumber).then(function (response) {
if (!angular.isUndefined(response.data)) {
$scope.CurrentLMAState = response.data;
if (!angular.isUndefined($scope.CurrentLMAState) && $scope.CurrentLMAState != 'Activated') {
$scope.openIsLMANotActivatedStateinACBSPopUp({ AccountNumber: $scope.request.AccountNumber, LMAState: $scope.CurrentLMAState });
}
else {
$rootScope.request.AccountNumber = $scope.request.AccountNumber;
$location.path("Request");
}
}
});
};
var validateAccountStatus = function () {
if (!angular.isUndefined($scope.LoginUserContext)) {
dataFactoryConcession.validateAccountStatus($scope.request.AccountNumber, $scope.LoginUserContext, $rootScope.systemId, "").then(function (response) {
if (!angular.isUndefined(response.data)) {
if (response.data === "SUCCESS") {
determinLmaState();
} else {
$scope.AccountStatusMessage = response.data;
}
}
});
}
};
var validateMarginAccountStatus = function () {
if (!angular.isUndefined($scope.LoginUserContext)) {
dataFactoryConcession.validateAccountStatus($scope.request.AccountNumber, $scope.LoginUserContext, $rootScope.systemId, "").then(function (response) {
if (!angular.isUndefined(response.data)) {
if (response.data === "SUCCESS") {
$rootScope.request.AccountNumber = $scope.request.AccountNumber;
$location.path("MarginRequest");
} else {
$scope.AccountStatusMessage = response.data;
}
}
});
}
};
$scope.$on("UserContextLoaded", function () {
if (!angular.isUndefined($scope.LoginUserContext)) {
if ($scope.InitialValues.LMTPost != null && $scope.InitialValues.LMTPost != '') {
$scope.loadProspectDisclaimer()
return;
}
loadRespectiveHomePage();
}
});
$scope.status = {
isDraftOpen: true,
isProgressOpen: true,
isApprovedOpen: true,
isUploadedOpen: true,
open: true
};
$scope.loadAccountStatus = function () {
$rootScope.request.IsProspectRequest = false;
validateAccountStatus();
};
$scope.loadMarginAccountStatus = function () {
$rootScope.request.IsProspectRequest = false;
validateMarginAccountStatus();
}
$scope.loadProspectDisclaimer = function () {
$rootScope.request.IsProspectRequest = true;
$rootScope.request.AccountNumber = ""; //Prospect Doesnt require Account number
$location.path("Request");
};
$scope.loadMarginProspectDisclaimer = function () {
$rootScope.request.IsProspectRequest = true;
$rootScope.request.AccountNumber = ""; //Prospect Doesnt require Account number
$location.path("MarginRequest");
};
var getObjectFromJsonGridObject = function (gridData, accountNumber, columnName) {
if (angular.isUndefined(gridData)) return "";
for (var i = 0, numData = gridData.length; i < numData; i++) {
if (gridData[i].AccountNumber === accountNumber) {
return gridData[i][columnName];
}
}
return "";
};
var viewRequest = function (account, statusId) {
statusId = angular.isUndefined(statusId) ? 0 : statusId;
$rootScope.LoadInProgressRequest = true;
$rootScope.LoadRequestStatusId = statusId;
var lastLetter = account.substring(7, 8);
if (lastLetter === "P") {
$rootScope.request.IsProspectRequest = true;
} else
$rootScope.request.IsProspectRequest = false;
$rootScope.request.AccountNumber = account; //Prospect Doesnt require Account number
//3-Uploaded,2-Rejected,5-Purged,6-Deleted
if (statusId === 3 || statusId === 2 || statusId === 5 || statusId === 6) {
var d;
if ($rootScope.systemId === 1) {
d = getObjectFromJsonGridObject($scope.LmaUploadedRequests.data, account, "RequestArchiveDate");
$rootScope.request.ArchiveDate = $filter("datetime")(d, "yyyy-MM-dd HH:mm:ss.sss");
} else {
d = getObjectFromJsonGridObject($scope.MarginUploadedRequests.data, account, "RequestArchiveDate");
$rootScope.request.ArchiveDate = $filter("datetime")(d, "yyyy-MM-dd HH:mm:ss.sss");
}
}
if ($rootScope.systemId === 1) {
$location.path("Request");
} else {
$location.path("MarginRequest");
}
}
$scope.ViewUploadedRequest = function (account, index) {
var requests = $rootScope.systemId === 1 ? $scope.LmaUploadedRequests : $scope.MarginUploadedRequests.data;
var sortedGrid = $filter("orderBy")(requests.data, requests.sort.column, requests.sort.descending);
$rootScope.LoadInProgressRequest = true;
$rootScope.LoadRequestStatusId = 3;
var lastLetter = account.substring(7, 8);
if (lastLetter === "P")
$rootScope.request.IsProspectRequest = true;
else
$rootScope.request.IsProspectRequest = false;
$rootScope.request.AccountNumber = account; //Prospect Doesnt require Account number
var d = sortedGrid[index].RequestArchiveDate;
$rootScope.request.ArchiveDate = $filter("datetime")(d, "yyyy-MM-dd HH:mm:ss.sss");
if ($rootScope.systemId === 1) {
$location.path("Request");
} else {
$location.path("MarginRequest");
}
}
$scope.ViewRequest = function (account, statusId) {
viewRequest(account, statusId);
};
$scope.ViewCARequest = function (account, statusId) {
if ($scope.LoginUserContext.Identity === UserType.CA) {
var mlId;
if ($rootScope.systemId === 1) {
mlId = getObjectFromJsonGridObject($scope.LmaInDraftRequests.data, account, "SubmittedFA_MLID");
} else {
mlId = getObjectFromJsonGridObject($scope.MarginInDraftRequests.data, account, "SubmittedFA_MLID");
}
if (mlId.length > 0) {
$scope.tempValue.accountNumber = account;
$scope.tempValue.statusId = statusId;
$scope.emulateUser(mlId, doAfterIndirectEmulation.ViewRequest);
}
}
};
$scope.ViewApproverPage = function (account) {
$rootScope.LoadInProgressRequest = true;
$rootScope.request.AccountNumber = account;
$rootScope.CanApproverEdit = true;
$location.path("Approver");
};
$scope.ViewApproverRequest = function (account) {
$rootScope.LoadInProgressRequest = true;
$rootScope.request.AccountNumber = account;
$rootScope.CanApproverEdit = false;
$location.path("Approver");
};
var toggleApp = function () {
$scope.status.isDraftOpen = $scope.status.open;
$scope.status.isProgressOpen = $scope.status.open;
$scope.status.isApprovedOpen = $scope.status.open;
$scope.status.isUploadedOpen = $scope.status.open;
};
$scope.$watch("status.open", function (oldvalue, newvalue) {
if (oldvalue !== newvalue)
toggleApp();
});
$scope.refresh = function () {
loadRespectiveHomePage();
};
var createApproverNotifyFAMailTo = function (row) {
var accountNumber = row.AccountNumber;
var approverEmail = "";
if ((row.Step1StatusID == "1") || (row.Step1StatusID == "4"))
approverEmail = approverEmail + row.Step1ApproverEMailID + ";";
if ((row.Step2StatusID == "1") || (row.Step2StatusID == "4"))
approverEmail = approverEmail + row.Step2ApproverEMailID + ";";
if ((row.Step3StatusID == "1") || (row.Step3StatusID == "4"))
approverEmail = approverEmail + row.Step3ApproverEMailID + ";";
approverEmail = trimStart(";", approverEmail);
approverEmail = trimEnd(";", approverEmail);
var faEmail = row.SubmittedFAEmailID;
if (row.SubmittedFAEmailID !== row.CreatedByEmailID) faEmail = faEmail + ";" + row.CreatedByEmailID;
var accountName = row.AccountName;
accountName = accountName.replace(/&/g, "and");
accountName = accountName.replace(/'/g, " ");
var systemName = $rootScope.systemId === 1 ? "LMA" : "Margin";
var mailString = "mailto:" + faEmail + "?cc=" + approverEmail + "&subject=" + systemName + " Discount Request for " + accountNumber + " (" + accountName + ")";
$scope.SelectedMailTo = mailString;
};
$scope.SelectInRoutingGrid = function (row) {
var accountNumber = row.AccountNumber;
$scope.SelectedRoutingAccount = accountNumber;
$scope.CASelectedRow = row;
createApproverNotifyFAMailTo(row);
};
$scope.SelectInDraftGrid = function (row) {
var accountNumber = row.AccountNumber;
$scope.DeleteMessage = "";
$scope.AssignMLMessage = "";
$scope.SelectedDraftAccount = accountNumber;
$scope.AssignMLNumberFor = {
ProspectNumber: accountNumber,
PurposeIndicator: row.Purpose,
StatusId: row.StatusID
};
$scope.SelectDraftMLID = row.SubmittedFA_MLID;
};
var createFANotifyApproverMailTo = function (row) {
var accountNumber = row.AccountNumber;
var email = "";
if (row.Step1ApproverName && row.Step1ApproverName.length > 0 && row.Step1StatusID == 1)
email = row.Step1ApproverEMailID;
if (row.Step2ApproverName && row.Step2ApproverName.length > 0 && row.Step2StatusID == 1)
email = row.Step2ApproverEMailID;
if (row.Step3ApproverName && row.Step3ApproverName.length > 0 && row.Step3StatusID == 1)
email = row.Step3ApproverEMailID;
var accountName = row.AccountName;
accountName = accountName.replace(/&/g, "and");
accountName = accountName.replace(/'/g, " ");
var systemName = $rootScope.systemId === 1 ? "LMA" : "Margin";
var mailString = "mailto:" + email + "&subject=" + systemName + " Discount Request for " + accountNumber + " (" + accountName + ")";
$scope.SelectedMailTo = mailString;
};
$scope.SelectInProgressRequests = function (row) {
if (angular.isObject(row)) {
var accountNumber = row.AccountNumber;
$scope.WithdrawMessage = "";
$scope.SelectedInProgressAccount = accountNumber;
$scope.AssignMLNumberFor = {
ProspectNumber: accountNumber,
PurposeIndicator: row.Purpose,
StatusId: row.StatusID
};
$scope.CASelectedRow = row;
$scope.SelectedInProgressMLID = row.SubmittedFA_MLID;
createFANotifyApproverMailTo(row);
}
};
$scope.SelectApprovedGrid = function (row) {
var accountNumber = row.AccountNumber;
$scope.SelectedApprovedAccount = accountNumber;
$scope.AssignMLNumberFor = {
ProspectNumber: accountNumber,
PurposeIndicator: row.Purpose,
StatusId: row.StatusID
};
createApproverNotifyFAMailTo(row);
};
loadRespectiveHomePage(); // Load after route to FA Home Page
}
]);
app.controller("HomePagePopup", [ "$scope", "$uibModalInstance", "param", function ($scope, $uibModalInstance, param) {
$scope.param = param;
$scope.ok = function () {
$uibModalInstance.close();
};
$scope.cancel = function () {
$uibModalInstance.dismiss("cancel");
};
}
]);
app.controller("IndirectEmulationPopup", [ "$scope", "$uibModalInstance", "param", function ($scope, $uibModalInstance, param) {
$scope.param = param;
var isPool = param.showPointOfContactFA;
var closePopup = function () {
$uibModalInstance.close();
};
$scope.ok = function () {
if (!angular.isUndefined($scope.param.selectedPointOfContactFA) && $scope.param.selectedPointOfContactFA.length > 0 && isPool)
$scope.selectedUser = $scope.param.MlId + "|" + isPool + "|" + $scope.param.selectedPointOfContactFA;
else {
$scope.selectedUser = $scope.param.MlId;
}
$scope.emulateUser($scope.selectedUser, closePopup);
};
$scope.cancel = function () {
$uibModalInstance.dismiss("cancel");
};
}
]);
app.controller("UserContextPopup", [ "$scope", "$uibModalInstance", "param", "dataFactoryUser", function ($scope, $uibModalInstance, param, dataFactoryUser) {
$scope.param = param;
$scope.UserSelectedInDropDown = function () {
if ($scope.selectedUser.length > 0 && $scope.selectedUser.indexOf("|") > -1) {
var arSelectedUser = $scope.selectedUser.split("|");
var mlId = arSelectedUser[0];
var isPool = arSelectedUser[1].toLowerCase() === "true";
if (isPool) {
dataFactoryUser.GetUsersToEmulate($scope.UserContext.MlId, mlId, 7).then(function (response) {
$scope.PointOfContactFAEmulateUsers = response.data;
$scope.selectedPointOfContactFA = "0";
$scope.showPointOfContactFA = true;
}, function () {
$scope.PointOfContactFAEmulateUsers = "";
});
} else {
$scope.showPointOfContactFA = false;
$scope.PointOfContactFAEmulateUsers = "";
}
} else {
$scope.showPointOfContactFA = false;
$scope.PointOfContactFAEmulateUsers = "";
}
};
$scope.ok = function () {
if (!angular.isUndefined($scope.selectedPointOfContactFA) && $scope.selectedPointOfContactFA.length > 0 && $scope.showPointOfContactFA)
$scope.selectedUser = $scope.selectedUser + "|" + $scope.selectedPointOfContactFA;
$scope.emulateUser($scope.selectedUser, param.doAfterEmulation);
$uibModalInstance.close();
};
$scope.cancel = function () {
$uibModalInstance.dismiss("cancel");
};
}
]);
app.controller("AssignMLNumberPopup", [ "$scope", "$uibModalInstance", "param", "dataFactoryConcession", "$rootScope", function ($scope, $uibModalInstance, param, dataFactoryConcession, $rootScope) {
$scope.AccountStatusMessage = "";
$scope.param = param;
var doAssignMLAccountNumber = function (accountNumber, prospectNumber, statusId) {
dataFactoryConcession.AssignAccountNumber(accountNumber, prospectNumber, $scope.LoginUserContext, $rootScope.systemId).then(function (response) {
if (response.data.StatusCode == 0) {
if (statusId > 0 && $rootScope.systemId == 1) {
dataFactoryConcession.GetACBSAccountDetail(accountNumber).then(function (response) {
if (response.data != '' && response.data.CurrentConcession > 0) {
$scope.openIsActiveACBSConcessionPopUp(response.data);
}
});
}
$scope.ReloadSpecificTable($rootScope.systemId, statusId);
$uibModalInstance.close();
} else {
$scope.AccountStatusMessage = response.data.StatusDescription;
}
}, function () {
$scope.AccountStatusMessage = "Error Assigning ML Number";
});
};
var validateMlAccountNumber = function (accountNumber) {
if (!angular.isUndefined($scope.LoginUserContext)) {
dataFactoryConcession.validateAccountStatus(accountNumber, $scope.LoginUserContext, $rootScope.systemId, param.purposeIndicator).then(function (response) {
if (!angular.isUndefined(response.data)) {
if (response.data === "SUCCESS") {
doAssignMLAccountNumber(accountNumber, param.prospectNumber, param.statusId);
} else {
$scope.AccountStatusMessage = response.data;
}
}
});
}
};
$scope.ok = function () {
validateMlAccountNumber($scope.modal.AssignMLNumber);
};
$scope.cancel = function () {
$uibModalInstance.dismiss("cancel");
};
}
]);
app.controller("IsActiveACBSConcessionPopUp", [ "$rootScope", "$scope", "$uibModalInstance", "param", "$filter", function ($rootScope, $scope, $uibModalInstance, param, $filter) { $scope.ok = function () { $uibModalInstance.dismiss("cancel"); }; $scope.AccountNumber = param.data.AccountNumber; $scope.CurrentConcession = $filter("percentage")(param.data.CurrentConcession, 3); } ]);
app.controller("ChangeApproverPopup", [ "$rootScope", "$scope", "$uibModalInstance", "dataFactoryConcession", "param", function ($rootScope, $scope, $uibModalInstance, dataFactoryConcession, param) { $scope.acctNumber = param.acctNumber; $scope.faMLID = param.faMLID; $scope.oldApproverMLID = param.oldApproverMLID;
$scope.ok = function () {
ChangeApprover();
};
$scope.cancel = function () {
$uibModalInstance.dismiss("cancel");
};
var ChangeApprover = function () {
var selApprover = $scope.SelectedChangeApprover;
var newApproverMLID = selApprover.MLID;
dataFactoryConcession.ChangeApprover($scope.acctNumber, $scope.faMLID, $scope.oldApproverMLID, newApproverMLID).then(function (response) {
if (!angular.isUndefined(response.data)) {
if (response.data.StatusCode === "SUCCESS") {
$rootScope.systemId === 1 ? $scope.LMARequest.LoadRequestsInRouting() : $rootScope.systemId === 0 ? $scope.MarginRequest.LoadRequestsInRouting() : null;
$scope.ChangeApproverMessage = "";
$uibModalInstance.dismiss("cancel");
}
else if (response.data.StatusDescription) {
$scope.ChangeApproverMessage = response.data.StatusDescription;
}
else{
$scope.ChangeApproverMessage="Change Approver Failed!";
}
}
});
}
}
]);
app.controller("IsLMANotActivatedStateinACBSPopUp", [ "$rootScope", "$scope", "$uibModalInstance", "param", "$filter", function ($rootScope, $scope, $uibModalInstance, param, $filter) { $scope.cancel = function () { $uibModalInstance.dismiss("cancel"); }; $scope.proceed = function () { $scope.loadProspectDisclaimer(); }; $scope.AccountNumber = param.data.AccountNumber; $scope.LMAState = param.data.LMAState; } ]);