public HttpResponseMessage Save(HttpRequestMessage request, ChangeExpenseStatusDto entity) { return(CreateHttpResponse(request, () => { HttpResponseMessage response = null; var status = this.expenseAppService.ChangeStatus(entity); if (status.Success) { response = request.CreateResponse(HttpStatusCode.OK, new { success = true }); } else { response = request.CreateResponse(HttpStatusCode.Forbidden, new { success = false, message = status.Message }); } return response; })); }
public ChangeExpenseStatusResult ChangeStatus(ChangeExpenseStatusDto entity) { var result = new ChangeExpenseStatusResult(); var currentUser = this.userRepository.GetAllIncluding(x => x.Role). Where(x => x.Id == (int)this.CurrentUserId). FirstOrDefault(); var expense = this.entityRepository.GetAllIncluding(x => x.SyncStatus, x => x.Provider, x => x.Category, x => x.Payment). Where(x => x.Id == entity.Id). FirstOrDefault(); if (expense != null) { /// Previus SyncStatus == "Editar" var newStatusLogEntry = new ExpenseStatusLog() { Id = 0, Change = expense.SyncStatus.Description + " 🡆 " + entity.SyncStatus.Description, ExpenseId = entity.Id, Notes = "N/A", UserId = (int)this.CurrentUserId, ReasonOfChange = "Solucionar errores en datos." }; if (currentUser.Role.Description != "Usuario") { if (string.IsNullOrEmpty(entity.ChangeStatusNote)) { newStatusLogEntry.Notes = "N/A"; } else { newStatusLogEntry.Notes = entity.ChangeStatusNote; } if (string.IsNullOrEmpty(entity.ChangeStatusReason)) { newStatusLogEntry.ReasonOfChange = "N/A"; } else { newStatusLogEntry.ReasonOfChange = entity.ChangeStatusReason; } } this.expenseStatusLogRepository.Add(newStatusLogEntry); this.unitOfWork.Commit(); expense.SyncStatus = Mapper.Map <SyncStatusDto, SyncStatus>(entity.SyncStatus); expense.SyncStatusId = entity.SyncStatus.Id; expense.UpdatedBy = (int)this.CurrentUserId; if (entity.SyncStatus != null && entity.SyncStatus.Description == "Rechazado") { this.notificationAppService.CreateNewForExpense(expense, newStatusLogEntry); } this.entityRepository.Edit(expense); this.unitOfWork.Commit(); result.Success = true; result.Message = "Éxito"; } else { result.Success = false; result.Message = "No se encontró el gasto que se intenta editar."; } return(result); }