public JsonResult UpdateFinance(FinancialModel model) { var status = true; decimal actualTotalRepayment = 0; var message = "Record added successfully"; var data = model; // AddTenantToPropertyModel tenant = new AddTenantToPropertyModel(); //*********** AddNewProperty var user = User.Identity.Name; var login = AccountService.GetLoginByEmail(user); //var newProp = PropertyOwnerService.AddOnboardProperty(login, model); ////*********** AddRepayments var newRepayment = new PropertyRepayment(); newRepayment = PropertyOwnerService.AddOnboardRepayment(login, model.Repayments, model.PropId); decimal _totalRepayment = 0; int _nosWeeks = 0; int _nosFortnights = 0; int _nosMonthly = 0; if (newRepayment != null) { foreach (Service.Models.RepaymentViewModel repayment in model.Repayments) { switch (repayment.FrequencyType) { case 1: // Weekly // find the nos of weeks in datediff(StartDate, EndDate) _nosWeeks = ((newRepayment.EndDate - newRepayment.StartDate) ?? TimeSpan.Zero).Days / 7; // _totalAmount = nos weeks * amount _totalRepayment = _nosWeeks * newRepayment.Amount; break; case 2: // Fortnightly // find the nos of Fortnights in datediff(StartDate, EndDate) _nosFortnights = ((newRepayment.EndDate - newRepayment.StartDate) ?? TimeSpan.Zero).Days / 14; // _totalAmount = nos weeks * amount _totalRepayment = _nosFortnights * newRepayment.Amount; break; case 3: //Monthly // find the nos of Monthls in datediff(StartDate, EndDate) _nosMonthly = ((newRepayment.EndDate - newRepayment.StartDate) ?? TimeSpan.Zero).Days / 30; _totalRepayment = _nosMonthly * newRepayment.Amount; // _totalAmount = nos Monthls * amount break; } actualTotalRepayment += _totalRepayment; } //*****AddExpenses var newExpense = new PropertyExpense(); newExpense = PropertyOwnerService.AddOnboardExpense(login, model.Expenses, model.PropId); //******AddFinancial var newFinancial = new PropertyFinance(); newFinancial = PropertyOwnerService.AddPropertyFinance(login, model, model.PropId, actualTotalRepayment); var newRentalPayment = new PropertyRentalPayment(); // newRentalPayment = PropertyOwnerService.AddOnboardRentalPayment(login, model.RentalPayments, model.PropId); } return(Json(new { success = status, message = message })); }
public async Task <JsonResult> AddNewProperty(PropertyMyOnboardModel model) { var files = Request.Files; var status = true; var message = "Record added successfully"; var data = model; AddTenantToPropertyModel tenant = new AddTenantToPropertyModel(); var user = User.Identity.Name; var login = AccountService.GetLoginByEmail(user); var newProp = PropertyOwnerService.AddOnboardProperty(login, model); var newRepayment = new PropertyRepayment(); if (newProp == null) { return(Json(new { Success = false, message = "Cannot add the property!" })); } else { newRepayment = PropertyOwnerService.AddOnboardRepayment(login, model.Repayments, newProp.Id); decimal _totalRepayment = 0; int _nosWeeks = 0; int _nosFortnights = 0; int _nosMonthly = 0; if (newRepayment != null) { foreach (Service.Models.RepaymentViewModel repayment in model.Repayments) { switch (repayment.FrequencyType) { case 1: // Weekly // find the nos of weeks in datediff(StartDate, EndDate) _nosWeeks = ((newRepayment.EndDate - newRepayment.StartDate) ?? TimeSpan.Zero).Days / 7; // _totalAmount = nos weeks * amount _totalRepayment = _nosWeeks * newRepayment.Amount; break; case 2: // Fortnightly // find the nos of Fortnights in datediff(StartDate, EndDate) _nosFortnights = ((newRepayment.EndDate - newRepayment.StartDate) ?? TimeSpan.Zero).Days / 14; // _totalAmount = nos weeks * amount _totalRepayment = _nosFortnights * newRepayment.Amount; break; case 3: //Monthly // find the nos of Monthls in datediff(StartDate, EndDate) _nosMonthly = ((newRepayment.EndDate - newRepayment.StartDate) ?? TimeSpan.Zero).Days / 30; _totalRepayment = _nosMonthly * newRepayment.Amount; // _totalAmount = nos Monthls * amount break; } actualTotalRepayment += _totalRepayment; } } //*****AddExpenses var newExpense = new PropertyExpense(); newExpense = PropertyOwnerService.AddOnboardExpense(login, model.Expenses, newProp.Id); //******AddFinancial var newFinancial = new PropertyFinance(); newFinancial = PropertyOwnerService.AddOnboardFinance(login, model, newProp.Id, actualTotalRepayment); var ownerPerson = AccountService.GetPersonByLoginId(login.Id); if (!model.IsOwnerOccupied) { var ten = AccountService.GetExistingLogin(model.TenantToPropertyModel.TenantEmail); if (ten == null) { var sendEmail = false; var temPass = UtilService.GeneraterRandomKey(8); var createRes = AccountService.CreateTenantAccount(model.TenantToPropertyModel, login, temPass); if (createRes.IsSuccess) { ten = createRes.NewObject as Login; sendEmail = true; } if (sendEmail) { var emailRes = await EmailService.SendCreateAccountToTenant(model, temPass, ownerPerson); } else { return(Json(new { Success = false, NewPropId = newProp.Id })); } //return Json(new { Success = false, NewPropId = newProp.Id, Todo = "Send email", ErrorMsg = "Cannot find person in login table!" }); } else // ten not null { if (!ten.IsActive) { var resultTenantActive = PropertyService.ActivateTenant(login, ten.Id); if (resultTenantActive.IsSuccess) { await EmailService.SendActivationEmailToTenant(model, ownerPerson); } } } var person = AccountService.GetPersonByLoginId(ten.Id); //var result = PropertyService.AddTenantToProperty(login, person.Id, newProp.Id, model.TenantToPropertyModel.StartDate, // model.TenantToPropertyModel.EndDate, model.TenantToPropertyModel.PaymentFrequencyId, model.TenantToPropertyModel.PaymentAmount); model.TenantToPropertyModel.Liabilities = model.LiabilityValues; model.TenantToPropertyModel.PropertyId = newProp.Id; var result = PropertyService.AddTenant(login, ten.Id, model.TenantToPropertyModel); if (result.IsSuccess) { return(Json(new { Sucess = true, Msg = "Added!", NewPropId = newProp.Id, result = "Redirect", url = Url.Action("Index", "PropertyOwners") })); } else { return(Json(new { Sucess = false, NewPropId = newProp.Id, Msg = result.ErrorMessage, redirect = "Redirect", url = Url.Action("Index", "PropertyOwners") })); } } } return(Json(new { Success = status, NewPropId = newProp.Id, message = message, data = tenant })); }