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."))); }
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); }
/// <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); }
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); }
/// <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); }
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); }
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); }
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); }
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); }