public ActionResult Edit(AccountingTransactionAccountViewModel accountingTransactionAccountViewModel)
        {
            if (ModelState.IsValid)
            {
                accountingTransactionAccountViewModel.AccountingTransactionAccount.AccountingTransactionAccountClassification = null;
                unitOfWork.context.AccountingTransactionAccounts.Attach(accountingTransactionAccountViewModel.AccountingTransactionAccount);
                unitOfWork.context.Entry(accountingTransactionAccountViewModel.AccountingTransactionAccount).Collection(x => x.TagInfoes).Load();

                int[] selectedTags = accountingTransactionAccountViewModel.AvailableTags.Where(x => x.Selected).Select(x => Convert.ToInt32(x.Value)).ToArray<int>();

                IEnumerable<TagInfo> selectedTagInfos = unitOfWork.TagInfoRepository.Get(x => selectedTags.Contains(x.TagInfoID)).ToArray();

                accountingTransactionAccountViewModel.AccountingTransactionAccount.TagInfoes.Clear();

                foreach (var selectedTagInfo in selectedTagInfos)
                {
                    accountingTransactionAccountViewModel.AccountingTransactionAccount.TagInfoes.Add(selectedTagInfo);
                }

               // TrySetupDonationAccountingTransactionAccount(accountingTransactionAccountViewModel.AccountingTransactionAccount, accountingTransactionAccountViewModel);

                unitOfWork.AccountingTransactionAccountRepository.Update(accountingTransactionAccountViewModel.AccountingTransactionAccount);
                unitOfWork.Save();

                return RedirectToAction("Index");
            }

            return View(SetupAccountingTransactionAccountViewModel(accountingTransactionAccountViewModel));
        }
        public ActionResult Edit(int accountTransactionAccountID)
        {
            AccountingTransactionAccountViewModel accountingTransactionAccountViewModel = new AccountingTransactionAccountViewModel();

            accountingTransactionAccountViewModel.AccountingTransactionAccount = unitOfWork.AccountingTransactionAccountRepository.GetByID(accountTransactionAccountID);

            return View(SetupAccountingTransactionAccountViewModel(accountingTransactionAccountViewModel));
        }
        public ActionResult Create(int accountTransactionAccountClassificationID, string accountTransactionAccountClassificationTitle)
        {
            AccountingTransactionAccountViewModel accountingTransactionAccountViewModel = new AccountingTransactionAccountViewModel();

            AccountingTransactionAccount accountingTransactionAccount = new AccountingTransactionAccount();
            accountingTransactionAccount.AccountTransactionAccountClassificationID = accountTransactionAccountClassificationID;

            AccountingTransactionAccountClassification accountingTransactionAccountClassification = new AccountingTransactionAccountClassification();
            accountingTransactionAccountClassification.Title = accountTransactionAccountClassificationTitle;

            accountingTransactionAccount.AccountTransactionAccountClassificationID = accountTransactionAccountClassificationID;
            accountingTransactionAccount.AccountingTransactionAccountClassification = accountingTransactionAccountClassification;
            accountingTransactionAccount.Active = true;

            accountingTransactionAccountViewModel.AccountingTransactionAccount = accountingTransactionAccount;

            return View(SetupAccountingTransactionAccountViewModel(accountingTransactionAccountViewModel));
        }
        public ActionResult Create(AccountingTransactionAccountViewModel accountingTransactionAccountViewModel)
        {
            if (ModelState.IsValid)
            {
                AccountingTransactionAccount accountingTransactionAccount = new AccountingTransactionAccount();
                accountingTransactionAccount = accountingTransactionAccountViewModel.AccountingTransactionAccount;

                accountingTransactionAccount.AccountingTransactionAccountClassification = null;

                SetupTagInfosForAccount(ref accountingTransactionAccount, accountingTransactionAccountViewModel);

               // TrySetupDonationAccountingTransactionAccount(accountingTransactionAccount, accountingTransactionAccountViewModel);

                unitOfWork.AccountingTransactionAccountRepository.Insert(accountingTransactionAccount);
                unitOfWork.Save();

                return RedirectToAction("Index");
            }

            return View(SetupAccountingTransactionAccountViewModel(accountingTransactionAccountViewModel));
        }
        private AccountingTransactionAccountViewModel SetupAccountingTransactionAccountViewModel(AccountingTransactionAccountViewModel accountingTransactionAccountViewModel)
        {
            //if (accountingTransactionAccountViewModel.AccountingTransactionAccount.DonationAccountingTransactionAccount != null)
            //{
            //    accountingTransactionAccountViewModel.IsDonationAccount = true;
            //    accountingTransactionAccountViewModel.IsDonationAccountDefaultCredit = accountingTransactionAccountViewModel.AccountingTransactionAccount.DonationAccountingTransactionAccount.IsDefaultCredit;
            //    accountingTransactionAccountViewModel.IsDonationAccountDefaultDebit = accountingTransactionAccountViewModel.AccountingTransactionAccount.DonationAccountingTransactionAccount.IsDefaultDebit;
            //}
            //else
            //{
            //    accountingTransactionAccountViewModel.AccountingTransactionAccount.DonationAccountingTransactionAccount = new DonationAccountingTransactionAccount()
            //    {
            //        AccountTransactionAccountID = accountingTransactionAccountViewModel.AccountingTransactionAccount.AccountTransactionAccountID
            //    };
            //}

            accountingTransactionAccountViewModel = SetupTagsForSelection(accountingTransactionAccountViewModel);
            return accountingTransactionAccountViewModel;
        }
 private AccountingTransactionAccountViewModel SetupTagsForSelection(AccountingTransactionAccountViewModel accountingTransactionAccountViewModel)
 {
     accountingTransactionAccountViewModel.AvailableTags = unitOfWork.TagInfoRepository.TagInfoMultiSelectList(accountingTransactionAccountViewModel.AccountingTransactionAccount.TagInfoes);
     return accountingTransactionAccountViewModel;
 }
        private void SetupTagInfosForAccount(ref AccountingTransactionAccount accountingTransactionAccount, AccountingTransactionAccountViewModel accountingTransactionAccountViewModel)
        {
            int[] selectedTags = accountingTransactionAccountViewModel.AvailableTags.Where(x => x.Selected).Select(x => Convert.ToInt32(x.Value)).ToArray<int>();

            IEnumerable<TagInfo> selectedTagInfos = unitOfWork.TagInfoRepository.Get(x => selectedTags.Contains(x.TagInfoID)).ToArray();

            accountingTransactionAccount.TagInfoes.Clear();

            foreach (var selectedTagInfo in selectedTagInfos)
            {
                accountingTransactionAccount.TagInfoes.Add(selectedTagInfo);
            }
        }