Пример #1
0
        public ActionResult <SkrillaGenericResponse> ModifyCategoryBudget(BudgetItemRequest request)
        {
            string loggedUser = User.FindFirstValue("userId");

            if (loggedUser == null)
            {
                return(Unauthorized());
            }

            /*ValidationResult result = validator.Validate(request);
             *
             * if (!result.IsValid)
             * {
             *  return BadRequest(new ValidationSummary(result));
             * }*/
            BudgetItem item;

            try
            {
                item = budgetService.ModifyCategoryBudget(request);
            }
            catch (SkrillaApiException e)
            {
                if (e.Code == "404")
                {
                    return(NotFound());
                }
                else
                {
                    return(BadRequest(new SkrillaGenericResponse(e.Code, e.Message)));
                }
            }

            return(Ok(new SkrillaGenericResponse("success", "Item de categoria actualizado exitosamente.")));
        }
Пример #2
0
        public BudgetItem ModifyCategoryBudget(BudgetItemRequest request)
        {
            string loggedUser = _httpContextAccessor.HttpContext.User.FindFirstValue("userId");

            Budget budget = dbContext.Budgets
                            .Where(b => b.PersonId.Equals(loggedUser) && b.BudgetId.Equals(request.budgetId))
                            .Include(b => b.BudgetItems)
                            .ThenInclude(i => i.Category)
                            .AsEnumerable()
                            .FirstOrDefault();

            if (budget == null)
            {
                throw new SkrillaApiException("not_found", "El presupuesto indicado no fue encontrada.");
            }
            if (budget.EndDate.CompareTo(LocalDate.FromDateTime(DateTime.Today)) < 0)
            {
                throw new SkrillaApiException("invalid_request", "No se puede alterar presupuestos pasados.");
            }

            Category category = dbContext.Categories
                                .Where(c => c.PersonId.Equals(loggedUser) && c.CategoryId.Equals(request.category))
                                .FirstOrDefault();

            if (category == null)
            {
                throw new SkrillaApiException("not_found", "La categoria indicada no fue encontrada. ");
            }

            BudgetItem item = budget.BudgetItems
                              .Where(i => category.Equals(i.Category))
                              .FirstOrDefault();

            double totalCategoryBudget = budget.BudgetItems.Sum(b => b.BudgetedAmount) -
                                         item.BudgetedAmount + request.amount;

            if (!request.ForceRequest && totalCategoryBudget > budget.Amount)
            {
                throw new SkrillaApiException("budget_overflow", "El monto presupuestado total de las categorias no puede superar el moto general del presupuesto. ");
            }


            if (item != null)
            {
                if (request.ForceRequest)
                {
                    budget.Amount = totalCategoryBudget;
                }

                item.BudgetedAmount = request.amount;
                dbContext.SaveChanges();
                return(item);
            }

            item = new BudgetItem(budget, category, request.amount);
            dbContext.Add(item);
            dbContext.SaveChanges();
            return(item);
        }
Пример #3
0
        /// <summary>
        /// Sets the accounts.
        /// </summary>
        /// <param name="request">The request.</param>
        /// <returns>BudgetItemResponse.</returns>
        public BudgetItemResponse SetBudgetItems(BudgetItemRequest request)
        {
            var response = new BudgetItemResponse();

            var budgetItemEntity = request.BudgetItem;

            if (request.Action != PersistType.Delete)
            {
                if (!budgetItemEntity.Validate())
                {
                    foreach (string error in budgetItemEntity.ValidationErrors)
                    {
                        response.Message += error + Environment.NewLine;
                    }
                    response.Acknowledge = AcknowledgeType.Failure;
                    return(response);
                }
            }
            try
            {
                if (request.Action == PersistType.Insert)
                {
                    var budgetitems = BudgetItemDao.GetBudgetItemsByCode(budgetItemEntity.BudgetItemCode);
                    if (budgetitems.Count > 0)
                    {
                        response.Acknowledge = AcknowledgeType.Failure;
                        response.Message     = @"Mã mục lục ngân sách " + budgetItemEntity.BudgetItemCode + @" đã tồn tại !";
                        return(response);
                    }
                    budgetItemEntity.BudgetItemId = BudgetItemDao.InsertBudgetItem(budgetItemEntity);
                    response.Message = null;
                }
                else if (request.Action == PersistType.Update)
                {
                    response.Message = BudgetItemDao.UpdateBudgetItem(budgetItemEntity);
                }
                else
                {
                    var budgetItemEntityForDelete = BudgetItemDao.GetBudgetItem(request.BudgetItemId);
                    response.Message = BudgetItemDao.DeleteBudgetItem(budgetItemEntityForDelete);
                }
            }
            catch (Exception ex)
            {
                response.Acknowledge = AcknowledgeType.Failure;
                response.Message     = ex.Message;
                return(response);
            }

            response.BudgetItemId = budgetItemEntity != null ? budgetItemEntity.BudgetItemId : 0;
            response.Acknowledge  = response.Message != null ? AcknowledgeType.Failure : AcknowledgeType.Success;
            return(response);
        }
Пример #4
0
        public void BudgetItemRequestIsCreatedSuccessfully()
        {
            BudgetItemRequest item = new BudgetItemRequest
            {
                budgetId = 123,
                category = 1,
                amount   = 123.5
            };

            Assert.Equal(123, item.budgetId);
            Assert.Equal(1, item.category);
            Assert.Equal(123.5, item.amount);
        }
Пример #5
0
        /// <summary>
        /// Gets the accounts.
        /// </summary>
        /// <param name="request">The request.</param>
        /// <returns>BudgetItemResponse.</returns>
        public BudgetItemResponse GetBudgetItems(BudgetItemRequest request)
        {
            var response = new BudgetItemResponse();

            if (request.LoadOptions.Contains("BudgetItems"))
            {
                if (request.LoadOptions.Contains("IsActive"))
                {
                    if (request.LoadOptions.Contains("ItemAndSubItem"))
                    {
                        response.BudgetItems = BudgetItemDao.GetBudgetItemAndSubItems(request.BudgetItemType, request.IsActive);
                    }
                    else
                    {
                        response.BudgetItems = BudgetItemDao.GetBudgetItemsActive();
                    }
                }
                else if (request.LoadOptions.Contains("Detail"))
                {
                    response.BudgetItems = BudgetItemDao.GetBudgetItems(request.BudgetItemType);
                }
                else if (request.LoadOptions.Contains("Receipt"))
                {
                    response.BudgetItems = BudgetItemDao.GetBudgetItemsByIsReceipt(request.IsReceipt);
                }
                else if (request.LoadOptions.Contains("ReceiptForEstimate"))
                {
                    response.BudgetItems = BudgetItemDao.GetBudgetItemsByIsReceiptForEstimate(request.IsReceipt);
                }
                else if (request.LoadOptions.Contains("PayVoucher"))
                {
                    response.BudgetItems = BudgetItemDao.GetBudgetItemsByPayVoucher();
                }
                else if (request.LoadOptions.Contains("CapitalAllocate"))
                {
                    response.BudgetItems = BudgetItemDao.GetBudgetItemsByCapitalAllocate();
                }
                else
                {
                    response.BudgetItems = BudgetItemDao.GetBudgetItems();
                }
            }
            if (request.LoadOptions.Contains("BudgetItem"))
            {
                response.BudgetItem = BudgetItemDao.GetBudgetItem(request.BudgetItemId);
            }
            return(response);
        }
Пример #6
0
        public void ModifyBudgetFailsDueToMissingCategory()
        {
            Budget            budget      = budgetService.CreateBudget(budgetRequest);
            BudgetItemRequest itemRequest = new BudgetItemRequest();

            itemRequest.category     = 123456;
            itemRequest.budgetId     = budget.BudgetId;
            itemRequest.amount       = 10005.5;
            itemRequest.ForceRequest = false;

            var result = controller.ModifyCategoryBudget(itemRequest).Result as ObjectResult;
            SkrillaGenericResponse resultValue = (SkrillaGenericResponse)result.Value;

            Assert.Equal("not_found", resultValue.Code);
            Assert.Equal("La categoria indicada no fue encontrada. ", resultValue.Message);
        }
Пример #7
0
        public void ModifyBudgetFailsDueToBudgetOverflow()
        {
            Budget            budget      = budgetService.CreateBudget(budgetRequest);
            BudgetItemRequest itemRequest = new BudgetItemRequest();

            itemRequest.category     = category.CategoryId;
            itemRequest.budgetId     = budget.BudgetId;
            itemRequest.amount       = 10005.5;
            itemRequest.ForceRequest = false;

            var result = controller.ModifyCategoryBudget(itemRequest).Result as ObjectResult;
            SkrillaGenericResponse resultValue = (SkrillaGenericResponse)result.Value;

            Assert.Equal("budget_overflow", resultValue.Code);
            Assert.Equal("El monto presupuestado total de las categorias no puede superar el moto general del presupuesto. ", resultValue.Message);
        }
Пример #8
0
        public void ModifyBudgetSuccessful()
        {
            Budget            budget      = budgetService.CreateBudget(budgetRequest);
            BudgetItemRequest itemRequest = new BudgetItemRequest();

            itemRequest.category     = category.CategoryId;
            itemRequest.budgetId     = budget.BudgetId;
            itemRequest.amount       = 5.5;
            itemRequest.ForceRequest = false;

            var result = controller.ModifyCategoryBudget(itemRequest).Result as ObjectResult;
            SkrillaGenericResponse resultValue = (SkrillaGenericResponse)result.Value;

            Assert.Equal("success", resultValue.Code);
            Assert.Equal("Item de categoria actualizado exitosamente.", resultValue.Message);
        }
Пример #9
0
        public void ModifyBudgetFailsDueToOldBudget()
        {
            BudgetRequest oldBudgetRequest = new BudgetRequest
            {
                StartDate   = new DateTime(2019, 05, 06),
                EndDate     = new DateTime(2019, 08, 17),
                Amount      = 123.5,
                BudgetItems = new List <BudgetItemRequest>()
            };

            Budget            budget      = budgetService.CreateBudget(oldBudgetRequest);
            BudgetItemRequest itemRequest = new BudgetItemRequest();

            itemRequest.category     = 123456;
            itemRequest.budgetId     = budget.BudgetId;
            itemRequest.amount       = 10005.5;
            itemRequest.ForceRequest = false;

            var result = controller.ModifyCategoryBudget(itemRequest).Result as ObjectResult;
            SkrillaGenericResponse resultValue = (SkrillaGenericResponse)result.Value;

            Assert.Equal("invalid_request", resultValue.Code);
            Assert.Equal("No se puede alterar presupuestos pasados.", resultValue.Message);
        }