Exemplo n.º 1
0
        private async Task <bool> CheckBudget(ProjectBudgetViewModel view)
        {
            Area area = await context.Areas
                        .Include(p => p.Projects)
                        .Where(p => p.ID == view.AreaID)
                        .FirstOrDefaultAsync();

            decimal budgetAmount = (decimal)area.Projects
                                   .Select(p => p.BudgetAmount)
                                   .DefaultIfEmpty()
                                   .Sum();

            var budget = await context.Budgets
                         .Where(b => b.Year == DateTime.Now.Year && b.AreaID == area.ID)
                         .FirstOrDefaultAsync();

            if (budget == null)
            {
                throw new Exception($"No hay presupuesto asignado en el área para este año.");
            }

            if (budgetAmount + view.Amount <= budget.Amount)
            {
                return(true);
            }
            else
            {
                throw new Exception($"Presupuesto excedido. El monto asigado al area es de ${budget.Amount}");
            }
        }
Exemplo n.º 2
0
        public async Task <IActionResult> Budget(int id, ProjectBudgetViewModel view)
        {
            if (id != view.ProjectID)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    if (await CheckBudget(view))
                    {
                        Project project = await context.Projects.FindAsync(view.ProjectID);

                        project.BudgetAmount        = view.Amount;
                        project.BudgetDescription   = view.BudgetDescription;
                        project.ResponsableBudgetID = view.ResponsableBudgetID;

                        context.Update(project);
                        await context.SaveChangesAsync();

                        return(RedirectToAction(nameof(PaymentPlan), new { id }));
                    }
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!ProjectExists(view.ProjectID))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                catch (Exception ex)
                {
                    ModelState.AddModelError(string.Empty, ex.Message);
                }
            }

            view.Users = combosHelper.GetComboUsers();

            return(View(view));
        }
Exemplo n.º 3
0
        private ProjectBudgetViewModel ToProjectBudgetViewModel(Project project)
        {
            var model = new ProjectBudgetViewModel()
            {
                ProjectID           = project.ID,
                ProjectName         = project.Name,
                AreaID              = project.AreaID,
                BudgetDescription   = project.BudgetDescription,
                ResponsableBudgetID = project.ResponsableBudgetID,
                Users = combosHelper.GetComboUsers()
            };

            if (project.BudgetAmount == null)
            {
                model.Amount = 0;
            }
            else
            {
                model.Amount = (decimal)project.BudgetAmount;
            }

            return(model);
        }