public ActionResult UpdateBalance(UpdateBalanceViewModel ubvm)
        {
            using (var fo = new FinancialOperations())
                using (var fq = new FinancialQueries())
                {
                    var fundBal = fq.GetBalance(ubvm.Date, User.Identity.Name, ubvm.SelectedFundId);
                    fo.UpdateBalance(ubvm.Value - fundBal, ubvm.SelectedFundId, ubvm.Date, User.Identity.Name);
                }

            return(SavingsAccountPartial());
        }
        public ActionResult Update(int id, decimal amount, int weekId = 0)
        {
            var updateBalance = new UpdateBalanceViewModel()
            {
                Client    = db.Clients.Find(id),
                Balance   = db.ClientBalances.Find(id),
                NewAmount = amount,
                WeekId    = weekId
            };

            return(View(updateBalance));
        }
        public ActionResult Update(UpdateBalanceViewModel viewModel)
        {
            var balance = db.ClientBalances.Find(viewModel.Balance.Id);

            balance.Add(viewModel.NewAmount);

            /* if(viewModel.WeekId > 0)
             * {
             * db.ClientWeeks.Find(viewModel.WeekId).OnBalance = true;
             *   db.SaveChanges();
             * }*/
            db.SaveChanges();
            return(RedirectToAction("Details", "Clients", new { id = viewModel.Balance.Id, redirect = "balance-btn" }));
        }
        public HttpResponseMessage RefillBalance(HttpRequestMessage request,
                                                 [FromBody] UpdateBalanceViewModel updateBalanceViewModel)
        {
            try
            {
                var user = _membershipService.GetUserByEmail(updateBalanceViewModel.Email);

                _dealService.UpdateUserBalance(user, updateBalanceViewModel.Amount, false);

                return(request.CreateResponse(HttpStatusCode.OK,
                                              new { success = true, amount = updateBalanceViewModel.Amount, add = true }));
            }
            catch (Exception e)
            {
                _logger.Error(e);

                return(ReturnFalseResponse(request, Messages.CantRefillBalance));
            }
        }
        //
        // GET: /Manager/
        public PartialViewResult SavingsAccountPartial()
        {
            var tvm = new TransactionViewModel();

            using (FinancialQueries queries = new FinancialQueries())
            {
                List <Fund>           fundList              = queries.GetFunds(User.Identity.Name);
                List <Reserve>        reserveList           = queries.GetReserves(User.Identity.Name);
                List <SelectListItem> distributionRuleItems = Helper.GetListItem(queries.GetDistributionRules(User.Identity.Name));

                tvm.TransactionList = queries.GetTransactions(null, null, DateTime.Today, User.Identity.Name);

                var ops     = tvm.TransactionList.GroupBy(t => t.Operation);
                var opsList = new List <OperationVM>();

                foreach (var op in ops)
                {
                    var opVW = new OperationVM()
                    {
                        Date        = op.Key.Date,
                        Description = op.Key.Type != EOperationType.BalanceUpdate ? op.Key.Description : "Rendimento",
                        Value       = op.Key.TotalValue,
                        Reserves    = op.Select(o => o.ReserveID).Distinct().Count() == 1
                            ? op.FirstOrDefault().Reserve.Name
                            : String.Concat(op.Select(o => o.Reserve.NameAbbreviation + "/").Distinct()).Trim('/'),
                        Funds = op.Select(o => o.FundID).Distinct().Count() == 1
                            ? op.FirstOrDefault().Fund.Name
                            : String.Concat(op.Select(o => o.Fund.NameAbbreviation + "/").Distinct()).Trim('/')
                    };
                    opsList.Add(opVW);
                }
                tvm.OperationList = opsList;
                tvm.FundList      = Helper.GetListItem(fundList, "TODOS");
                tvm.ReserveList   = Helper.GetListItem(reserveList, "TODOS");
                tvm.Balance       = tvm.TransactionList.Sum(t => t.Value);

                List <UpdateFundToDepositViewModel> fundsBalanceList = new List <UpdateFundToDepositViewModel>();
                fundsBalanceList.AddRange(
                    fundList.Select(
                        f => new UpdateFundToDepositViewModel()
                {
                    FundId = f.ID, FundName = f.Name, CurrentBalance = queries.GetBalance(DateTime.Today, User.Identity.Name, f.ID).ToString("0.00")
                }
                        )
                    );

                DepositViewModel dvm = new DepositViewModel()
                {
                    FundList             = Helper.GetListItem(fundList, "NENHUM"),
                    ReserveList          = Helper.GetListItem(reserveList, "NENHUM"),
                    DistributionRuleList = distributionRuleItems,
                    Date             = DateTime.Today,
                    fundsBalanceList = fundsBalanceList
                };
                tvm.DepositViewModel = dvm;

                WithdrawViewModel wvm = new WithdrawViewModel()
                {
                    FundList    = Helper.GetListItem(fundList),
                    ReserveList = Helper.GetListItem(reserveList),
                    Date        = DateTime.Today
                };
                tvm.WithdrawViewModel = wvm;

                UpdateBalanceViewModel ubvm = new UpdateBalanceViewModel()
                {
                    FundList = Helper.GetListItem(fundList),
                    Date     = DateTime.Today
                };
                tvm.UpdateBalanceViewModel = ubvm;
            }
            ModelState.Clear();
            return(PartialView("SavingsAccountPartial", tvm));
        }