예제 #1
0
        public void SaveBankAccountMovement(string userId, long bankAccountId, BankAccountMovement bankAccountMovement)
        {
            bankAccountMovement.BankAccount = this.context.BankAccounts.Single(x => x.Id == bankAccountId && x.ApplicationUser.Id == userId);
            this.context.Entry(bankAccountMovement.BankAccount).State = EntityState.Unchanged;

            if (bankAccountMovement.Categories != null && bankAccountMovement.Categories.Any())
            {
                bankAccountMovement.Categories.ForEach(x =>
                {
                    x.BankAccountMovement = bankAccountMovement;
                    x.Category            = x.Category ?? context.Categories.First(q => q.Id == x.CategoryId);
                });
            }

            if (bankAccountMovement.Id == 0 &&
                bankAccountMovement.TotalBalanceAfterMovement == 0)
            {
                var lstMov = this.GetBankAccountMovements(userId, bankAccountId, 1, SortOrder.Ascending).FirstOrDefault();

                if (lstMov != null)
                {
                    bankAccountMovement.TotalBalanceAfterMovement = lstMov.TotalBalanceAfterMovement;
                }

                bankAccountMovement.TotalBalanceAfterMovement += bankAccountMovement.Amount;
            }
            this.context.Entry(bankAccountMovement).State = bankAccountMovement.Id == 0 ? EntityState.Added : EntityState.Modified;
        }
예제 #2
0
 public void SaveBankAccountMovement(string userId, long bankAccountId, BankAccountMovement bankAccountMovement)
 {
     if (myFinanceRepo.ExistsBankAccount(bankAccountId, userId))
     {
         myFinanceRepo.SaveBankAccountMovement(userId, bankAccountId, bankAccountMovement);
         myFinanceRepo.CommitChanges();
     }
 }
예제 #3
0
        public IActionResult SetCategoriesToBankAccount(int bankAccountId, int id)
        {
            BankAccountMovement movement = _myFinanceService.GetBankAccountMovement(User.GetUserId(), bankAccountId, id);
            CategoriesAccountMovementViewModel viewModel = Mapper.Map <CategoriesAccountMovementViewModel>(movement);
            List <Category> categories = _myFinanceService.GetCategories(User.GetUserId());

            viewModel.SetAvailableCategories(Mapper.Map <List <Category>, List <CategoryViewModel> >(categories));

            return(View(viewModel));
        }
예제 #4
0
        public IActionResult SetBankAccountMovementsToCategory(int bankAccountId, CategoriesAccountMovementViewModel lvm)
        {
            if (ModelState.IsValid)
            {
                BankAccountMovement bankAccountMovement = Mapper.Map <BankAccountMovement>(lvm);

                _myFinanceService.SetCategoriesToBankAccountMovement(User.GetUserId(), bankAccountMovement.Id, lvm.SelectedCategories);
            }

            return(new JsonResult(""));
        }
예제 #5
0
        public IActionResult SetCategoriesToBankAccount(int bankAccountId, CategoriesAccountMovementViewModel lvm)
        {
            if (ModelState.IsValid)
            {
                BankAccountMovement bankAccountMovement = Mapper.Map <BankAccountMovement>(lvm);

                _myFinanceService.SetCategoriesToBankAccountMovement(User.GetUserId(), bankAccountMovement.Id, lvm.SelectedCategories);

                return(RedirectToAction(nameof(ListMovements), new { bankAccountId }));
            }

            return(View(lvm));
        }
예제 #6
0
 public bool ExistsBankAccountMovements(long bankAccountId, BankAccountMovement item)
 {
     return(this.context.BankAccountMovements.Include(x => x.BankAccount).Any(x => x.GetHashCode() == item.GetHashCode() && x.BankAccount.Id == bankAccountId));
 }
예제 #7
0
        public void DeleteBankAccountMovement(string userId, long bankAccountId, BankAccountMovement bankAccountMovement)
        {
            var elementsToRemove = this.context.BankAccountMovements.Where(x => x.BankAccount.Id == bankAccountId && x.BankAccount.ApplicationUser.Id == userId && x.Id == bankAccountMovement.Id);

            this.context.BankAccountMovements.RemoveRange(elementsToRemove);
        }
예제 #8
0
        private decimal UpdateLastKnownValue(BankAccount bankAccount, decimal lastKnownValue, BankAccountMovement movement)
        {
            if (movement != default(BankAccountMovement))
            {
                lastKnownValue = movement.TotalBalanceAfterMovement;
            }
            else if (bankAccount.Movements.Count > 0 && lastKnownValue == 0)
            {
                lastKnownValue = bankAccount.Movements.OrderBy(m => m.ValueDate.Date).First().TotalBalanceAfterMovement;
            }

            return(lastKnownValue);
        }
예제 #9
0
        public IActionResult AddOrEditMovement(int bankAccountId, int?id)
        {
            BankAccountMovement movement = id.HasValue ? _myFinanceService.GetBankAccountMovement(User.GetUserId(), bankAccountId, id.Value) : _myFinanceService.GetBankAccountMovementDefault(User.GetUserId(), bankAccountId);

            return(View(Mapper.Map <AccountMovementViewModel>(movement)));
        }
예제 #10
0
        public IActionResult DeleteMovement(int bankAccountId, int?id)
        {
            BankAccountMovement movement = _myFinanceService.GetBankAccountMovement(User.GetUserId(), bankAccountId, id.Value);

            return(View(Mapper.Map <AccountMovementViewModel>(movement)));
        }
예제 #11
0
 public void DeleteBankAccountMovement(string userId, long bankAccountId, BankAccountMovement bankAccountMovement)
 {
     myFinanceRepo.DeleteBankAccountMovement(userId, bankAccountId, bankAccountMovement);
     myFinanceRepo.CommitChanges();
 }