예제 #1
0
        public async Task <ExpensesViewModel> AddExpenses(UserProfile user, ExpensesRequestViewModel model)
        {
            var expenses = new Expense
            {
                business_id     = user.business_id.Value,
                shop_id         = model.shopId,
                sum             = model.totalSum,
                report_date     = model.reportDate,
                ExpensesDetails = model.expenses.Select(p => new ExpensesDetail
                {
                    expenses_type_id = Convert.ToInt32(p.id), sum = p.value
                }).ToList()
            };


            var exId = 0;

            try
            {
                exId = await _expRepo.AddExpenses(expenses);

                model.id = exId;
            }
            catch (Exception)
            {
                throw new Exception("Добавление расхода не удалось.");
            }

            var expensesDal = await _expRepo.GetByIdAsync(exId);

            var expensesVm = new ExpensesViewModel
            {
                id         = expensesDal.id,
                shopId     = expensesDal.shop_id,
                reportDate = expensesDal.report_date,
                totalSum   = expensesDal.sum,
                expenses   = new List <ExpensesValueViewModel>(),
            };

            foreach (var expD in expensesDal.ExpensesDetails)
            {
                expensesVm.expenses.Add(new ExpensesValueViewModel
                {
                    key   = expD.ExpensesType.type,
                    value = expD.sum
                });
            }

            return(expensesVm);
        }