示例#1
0
        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;
            }));
        }
示例#2
0
        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);
        }