community-app/app/scripts/controllers/client/CreateClientController.js

368 lines
16 KiB
JavaScript
Executable File

(function (module) {
mifosX.controllers = _.extend(module, {
CreateClientController: function (scope, resourceFactory, location, http, dateFilter, API_VERSION, $upload, $rootScope, routeParams, WizardHandler) {
scope.offices = [];
scope.staffs = [];
scope.savingproducts = [];
scope.first = {};
scope.first.date = new Date();
scope.first.submitondate = new Date ();
scope.formData = {};
scope.formDat = {};
scope.clientNonPersonDetails = {};
scope.restrictDate = new Date();
scope.showSavingOptions = false;
scope.savings = {};
scope.savings.opensavingsproduct = false;
scope.forceOffice = null;
scope.showNonPersonOptions = false;
scope.clientPersonId = 1;
//address
scope.addressTypes=[];
scope.countryOptions=[];
scope.stateOptions=[];
scope.addressTypeId={};
entityname="ADDRESS";
scope.addressArray=[];
scope.formData.address=[];
scope.datatables = [];
scope.noOfTabs = 1;
scope.step = '-';
scope.formData.datatables = [];
scope.formDat.datatables = [];
scope.tf = "HH:mm";
var requestParams = {staffInSelectedOfficeOnly:true};
if (routeParams.groupId) {
requestParams.groupId = routeParams.groupId;
}
if (routeParams.officeId) {
requestParams.officeId = routeParams.officeId;
}
resourceFactory.clientTemplateResource.get(requestParams, function (data) {
scope.offices = data.officeOptions;
scope.staffs = data.staffOptions;
scope.formData.officeId = scope.offices[0].id;
scope.savingproducts = data.savingProductOptions;
scope.genderOptions = data.genderOptions;
scope.clienttypeOptions = data.clientTypeOptions;
scope.clientClassificationOptions = data.clientClassificationOptions;
scope.clientNonPersonConstitutionOptions = data.clientNonPersonConstitutionOptions;
scope.clientNonPersonMainBusinessLineOptions = data.clientNonPersonMainBusinessLineOptions;
scope.clientLegalFormOptions = data.clientLegalFormOptions;
scope.datatables = data.datatables;
if (!_.isUndefined(scope.datatables) && scope.datatables.length > 0) {
scope.noOfTabs = scope.datatables.length + 1;
angular.forEach(scope.datatables, function (datatable, index) {
scope.updateColumnHeaders(datatable.columnHeaderData);
angular.forEach(datatable.columnHeaderData, function (colHeader, i) {
if (_.isEmpty(scope.formDat.datatables[index])) {
scope.formDat.datatables[index] = {data: {}};
}
if (_.isEmpty(scope.formData.datatables[index])) {
scope.formData.datatables[index] = {
registeredTableName: datatable.registeredTableName,
data: {locale: scope.optlang.code}
};
}
if (datatable.columnHeaderData[i].columnDisplayType == 'DATETIME') {
scope.formDat.datatables[index].data[datatable.columnHeaderData[i].columnName] = {};
}
});
});
}
if (data.savingProductOptions.length > 0) {
scope.showSavingOptions = true;
}
if(routeParams.officeId) {
scope.formData.officeId = routeParams.officeId;
for(var i in data.officeOptions) {
if(data.officeOptions[i].id == routeParams.officeId) {
scope.forceOffice = data.officeOptions[i];
break;
}
}
}
if(routeParams.groupId) {
if(typeof data.staffId !== "undefined") {
scope.formData.staffId = data.staffId;
}
}
scope.enableAddress=data.isAddressEnabled;
if(scope.enableAddress===true)
{
scope.addressTypes=data.address.addressTypeIdOptions;
scope.countryOptions=data.address.countryIdOptions;
scope.stateOptions=data.address.stateProvinceIdOptions;
resourceFactory.addressFieldConfiguration.get({entity:entityname},function(data){
for(var i=0;i<data.length;i++)
{
data[i].field='scope.'+data[i].field;
eval(data[i].field+"="+data[i].is_enabled);
}
})
}
});
scope.updateColumnHeaders = function(columnHeaderData) {
var colName = columnHeaderData[0].columnName;
if (colName == 'id') {
columnHeaderData.splice(0, 1);
}
colName = columnHeaderData[0].columnName;
if (colName == 'client_id' || colName == 'office_id' || colName == 'group_id' || colName == 'center_id' || colName == 'loan_id' || colName == 'savings_account_id') {
columnHeaderData.splice(0, 1);
}
};
// address
scope.addAddress=function()
{
scope.addressArray.push({});
}
scope.removeAddress=function(index)
{
scope.addressArray.splice(index,1);
}
// end of address
scope.displayPersonOrNonPersonOptions = function (legalFormId) {
if(legalFormId == scope.clientPersonId || legalFormId == null) {
scope.showNonPersonOptions = false;
}else {
scope.showNonPersonOptions = true;
}
};
scope.changeOffice = function (officeId) {
resourceFactory.clientTemplateResource.get({staffInSelectedOfficeOnly:true, officeId: officeId
}, function (data) {
scope.staffs = data.staffOptions;
scope.savingproducts = data.savingProductOptions;
});
};
scope.setChoice = function () {
if (this.formData.active) {
scope.choice = 1;
}
else if (!this.formData.active) {
scope.choice = 0;
}
};
if(routeParams.groupId) {
scope.cancel = '#/viewgroup/' + routeParams.groupId
scope.groupid = routeParams.groupId;
}else {
scope.cancel = "#/clients"
}
//return input type
//return input type
scope.fieldType = function (type) {
var fieldType = "";
if (type) {
if (type == 'CODELOOKUP' || type == 'CODEVALUE') {
fieldType = 'SELECT';
} else if (type == 'DATE') {
fieldType = 'DATE';
} else if (type == 'DATETIME') {
fieldType = 'DATETIME';
} else if (type == 'BOOLEAN') {
fieldType = 'BOOLEAN';
} else {
fieldType = 'TEXT';
}
}
return fieldType;
};
scope.dateTimeFormat = function (colHeaders) {
angular.forEach(colHeaders, function (colHeader, i) {
if (colHeaders[i].columnDisplayType == 'DATETIME') {
return scope.df + " " + scope.tf;
}
});
return scope.df;
};
scope.submit = function () {
if (WizardHandler.wizard().getCurrentStep() != scope.noOfTabs) {
WizardHandler.wizard().next();
return;
}
var reqDate = dateFilter(scope.first.date, scope.df);
this.formData.locale = scope.optlang.code;
this.formData.active = this.formData.active || false;
this.formData.dateFormat = scope.df;
this.formData.activationDate = reqDate;
if (!_.isUndefined(scope.datatables) && scope.datatables.length > 0) {
angular.forEach(scope.datatables, function (datatable, index) {
scope.columnHeaders = datatable.columnHeaderData;
angular.forEach(scope.columnHeaders, function (colHeader, i) {
scope.dateFormat = scope.df + " " + scope.tf
if (scope.columnHeaders[i].columnDisplayType == 'DATE') {
if (!_.isUndefined(scope.formDat.datatables[index].data[scope.columnHeaders[i].columnName])) {
scope.formData.datatables[index].data[scope.columnHeaders[i].columnName] = dateFilter(scope.formDat.datatables[index].data[scope.columnHeaders[i].columnName],
scope.dateFormat);
scope.formData.datatables[index].data.dateFormat = scope.dateFormat;
}
} else if (scope.columnHeaders[i].columnDisplayType == 'DATETIME') {
if (!_.isUndefined(scope.formDat.datatables[index].data[scope.columnHeaders[i].columnName].date) && !_.isUndefined(scope.formDat.datatables[index].data[scope.columnHeaders[i].columnName].time)) {
scope.formData.datatables[index].data[scope.columnHeaders[i].columnName] = dateFilter(scope.formDat.datatables[index].data[scope.columnHeaders[i].columnName].date, scope.df)
+ " " + dateFilter(scope.formDat.datatables[index].data[scope.columnHeaders[i].columnName].time, scope.tf);
scope.formData.datatables[index].data.dateFormat = scope.dateFormat;
}
}
});
});
} else {
delete scope.formData.datatables;
}
if (routeParams.groupId) {
this.formData.groupId = routeParams.groupId;
}
if (routeParams.officeId) {
this.formData.officeId = routeParams.officeId;
}
if (scope.first.submitondate) {
reqDate = dateFilter(scope.first.submitondate, scope.df);
this.formData.submittedOnDate = reqDate;
}
if (scope.first.dateOfBirth) {
this.formData.dateOfBirth = dateFilter(scope.first.dateOfBirth, scope.df);
}
if (this.formData.legalFormId == scope.clientPersonId || this.formData.legalFormId == null) {
delete this.formData.fullname;
} else {
delete this.formData.firstname;
delete this.formData.middlename;
delete this.formData.lastname;
}
if(scope.first.incorpValidityTillDate) {
this.formData.clientNonPersonDetails.locale = scope.optlang.code;
this.formData.clientNonPersonDetails.dateFormat = scope.df;
this.formData.clientNonPersonDetails.incorpValidityTillDate = dateFilter(scope.first.incorpValidityTillDate, scope.df);
}
if (!scope.savings.opensavingsproduct) {
this.formData.savingsProductId = null;
}
if(scope.enableAddress===true)
{
for(var i=0;i<scope.addressArray.length;i++)
{
var temp=new Object();
if(scope.addressArray[i].addressTypeId)
{
temp.addressTypeId=scope.addressArray[i].addressTypeId;
}
if(scope.addressArray[i].street)
{
temp.street=scope.addressArray[i].street;
}
if(scope.addressArray[i].addressLine1)
{
temp.addressLine1=scope.addressArray[i].addressLine1;
}
if(scope.addressArray[i].addressLine2)
{
temp.addressLine2=scope.addressArray[i].addressLine2;
}
if(scope.addressArray[i].addressLine3)
{
temp.addressLine3=scope.addressArray[i].addressLine3;
}
if(scope.addressArray[i].townVillage)
{
temp.townVlage=scope.addressArray[i].townVillage;
}
if(scope.addressArray[i].city)
{
temp.city=scope.addressArray[i].city;
}
if(scope.addressArray[i].countyDistrict)
{
temp.countyDistrict=scope.addressArray[i].countyDistrict;
}
if(scope.addressArray[i].countryId)
{
temp.countryId=scope.addressArray[i].countryId;
}
if(scope.addressArray[i].stateProvinceId)
{
temp.stateProvinceId=scope.addressArray[i].stateProvinceId;
}
if(scope.addressArray[i].postalCode)
{
temp.postalCode=scope.addressArray[i].postalCode;
}
if(scope.addressArray[i].latitude)
{
temp.latitude=scope.addressArray[i].latitude;
}
if(scope.addressArray[i].longitude)
{
temp.longitude=scope.addressArray[i].longitude;
}
if(scope.addressArray[i].isActive)
{
temp.isActive=scope.addressArray[i].isActive;
}
scope.formData.address.push(temp);
}
}
resourceFactory.clientResource.save(this.formData, function (data) {
location.path('/viewclient/' + data.clientId);
});
};
}
});
mifosX.ng.application.controller('CreateClientController', ['$scope', 'ResourceFactory', '$location', '$http', 'dateFilter', 'API_VERSION', '$upload', '$rootScope', '$routeParams', 'WizardHandler', mifosX.controllers.CreateClientController]).run(function ($log) {
$log.info("CreateClientController initialized");
});
}(mifosX.controllers || {}));