public IActionResult Edit(InsertJournalEntryViewModel viewModel)
        {
            ValidateNewEntry(viewModel);

            if (!ModelState.IsValid)
            {
                viewModel.Accounts = GetAllAccounts();
                return(View("Edit", viewModel));
            }

            _journalEntryGroupRepository.InsertDebitCreditEntries(new LedgerEntry
            {
                AccountId  = viewModel.DebitAccountId,
                EntryDate  = DateTime.Now,
                Remarks    = viewModel.Remarks,
                EntryValue = viewModel.EntryAmount
            }, new LedgerEntry
            {
                AccountId  = viewModel.CreditAccountId,
                EntryDate  = DateTime.Now,
                Remarks    = viewModel.Remarks,
                EntryValue = -viewModel.EntryAmount
            });

            return(Index());
        }
 private void ValidateNewEntry(InsertJournalEntryViewModel viewModel)
 {
     if (viewModel.EntryAmount <= 0m)
     {
         ModelState.AddModelError(nameof(viewModel.EntryAmount), "La cantidad debe ser mayor que 0");
     }
     if (viewModel.DebitAccountId == viewModel.CreditAccountId)
     {
         ModelState.AddModelError(nameof(viewModel.DebitAccountId),
                                  "No se puede cargar y abonar la misma cuenta.");
     }
 }