public async Task <bool> UpdatePlannedRevenueAsync(PlannedRevenue plannedRevenue)
        {
            if (plannedRevenue == null)
            {
                return(false);
            }
            _dataContext.PlannedRevenues.Update(plannedRevenue);
            var updated = await _dataContext.SaveChangesAsync();

            return(updated > 0);
        }
        public async Task <IActionResult> UpdatePlannedRevenue(int?plannedRevenueId)
        {
            if (plannedRevenueId == null)
            {
                return(NotFound());
            }

            PlannedRevenue plannedRevenue = await _budgetService.GetPlannedRevenueByIdAsync((int)plannedRevenueId);

            if (plannedRevenue == null)
            {
                return(NotFound());
            }

            return(View(plannedRevenue));
        }
        public async Task <IActionResult> UpdatePlannedRevenue([Bind("Id,Amount,Kind,Date,IsReceived,ReceivedDate,BudgetId")] PlannedRevenue plannedRevenue)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    if ((plannedRevenue.IsReceived && plannedRevenue.ReceivedDate == null) || (plannedRevenue.IsReceived == false && plannedRevenue.ReceivedDate != null))
                    {
                        return(View(plannedRevenue));
                    }
                    await _budgetService.UpdatePlannedRevenueAsync(plannedRevenue);

                    return(RedirectToAction("Details", "Budget", new { budgetId = plannedRevenue.BudgetId }));
                }
                catch (Exception)
                {
                    return(NotFound());
                }
            }
            return(View(plannedRevenue));
        }
        public async Task <bool> CreateBudgetRevenueAsync(int budgetId, PlannedRevenue plannedRevenue)
        {
            if (plannedRevenue == null)
            {
                return(false);
            }
            var createdRevenue = 0;

            using (var trans = await _dataContext.Database.BeginTransactionAsync())
            {
                var budget = _dataContext.Budgets.FirstOrDefault(x => x.Id == budgetId);
                plannedRevenue.Budget = budget;

                _dataContext.PlannedRevenues.Add(plannedRevenue);
                budget.Revenues.Add(plannedRevenue);

                createdRevenue = await _dataContext.SaveChangesAsync();

                trans.Commit();
            }
            return(createdRevenue > 0);
        }
        public async Task <IActionResult> CreatePlannedRevenue(int budgetId, [Bind("Id,Amount,Kind,Date,IsReceived,ReceivedDate")] PlannedRevenue plannedRevenue)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    plannedRevenue.Amount = (decimal)plannedRevenue.Amount;
                    if (!plannedRevenue.IsReceived)
                    {
                        plannedRevenue.ReceivedDate = null;
                    }
                    await _budgetService.CreateBudgetRevenueAsync(budgetId, plannedRevenue);

                    return(RedirectToAction("Details", "Budget", new { budgetId = budgetId }));
                }
                catch (Exception)
                {
                    return(NotFound());
                }
            }
            return(View(plannedRevenue));
        }