Ejemplo n.º 1
0
 public static PropertyExpense AddOnboardExpense(Login user, List <ExpenseViewModel> model, int PropertyId)
 {
     using (var db = new KeysEntities())
     {
         try
         {
             var newExpense = new PropertyExpense();
             foreach (ExpenseViewModel expense in model)
             {
                 newExpense.PropertyId  = PropertyId;
                 newExpense.Amount      = expense.Amount;
                 newExpense.Date        = expense.ExpenseDate;
                 newExpense.Description = expense.Description;;
                 newExpense.CreatedBy   = user.UserName;
                 newExpense.CreatedOn   = DateTime.Today;
                 db.PropertyExpense.Add(newExpense);
                 db.SaveChanges();
             }
             return(newExpense);
         }
         catch (Exception ex)
         {
             return(null);
         }
     }
 }
Ejemplo n.º 2
0
 public async Task AddAsync(PropertyExpense expense)
 {
     context.PropertiesExpenses.Add(
         new PropertiesExpenses()
     {
         CreationDate = DateTime.UtcNow, Expense = expense.Expense, PropertyId = expense.Property.Id
     });
     await context.SaveChangesAsync();
 }
Ejemplo n.º 3
0
 public async Task AddAsync(PropertyExpense expense)
 {
     this.context.PropertiesExpenses.Add(
         new PropertiesExpenses()
     {
         DueDate    = DateTime.UtcNow,
         Expense    = expense.Expense,
         ExpenseId  = expense.Expense.Id,
         Property   = expense.Property,
         PropertyId = expense.Property.Id
     });
     await this.context.SaveChangesAsync();
 }
Ejemplo n.º 4
0
 public ActionResult SaveExspense(ExpenseViewModel model)
 {
     if (ModelState.IsValid)
     {
         if (model.Id > 0)
         {
             var expense = db.PropertyExpense.FirstOrDefault(x => x.Id == model.Id);
             if (expense == null)
             {
                 return(Json(new { Success = false }));
             }
             expense.Amount      = model.Amount;
             expense.Description = model.Description;
             expense.Date        = model.ExpenseDate;
             db.SaveChanges();
             return(Json(new { Success = true }));
         }
         else
         {
             var newExpense = new PropertyExpense
             {
                 PropertyId  = model.PropertyId,
                 Amount      = model.Amount,
                 Description = model.Description,
                 Date        = model.ExpenseDate,
             };
             db.PropertyExpense.Add(newExpense);
             db.SaveChanges();
             return(Json(new { Success = true, NewId = newExpense.Id }));
         }
     }
     else
     {
         return(Json(new { Success = false }));
     }
 }
Ejemplo n.º 5
0
        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 }));
        }
Ejemplo n.º 6
0
        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 }));
        }