public async Task <Response> Handle(EditarTicket request, CancellationToken cancellationToken) { if (request == null) { return(new Response(false, "Informe os dados do ticket que deseja alterar", request)); } Usuario usuario = await _repositorioUsuario.CarregarObjetoPeloID(request.UsuarioId); Categoria categoria = await _repositorioCategoria.CarregarObjetoPeloID(request.CategoriaId); Ticket ticket = await _repositorioTicket.CarregarObjetoPeloID(request.IdTicket); AddNotifications(new Contract() .Requires() .IsNotNull(usuario, "Usuario", "Usuário não foi encontrado") .IsNotNull(categoria, "Categoria", "Categoria não encontrada") .IsNotNull(ticket, "Ticket", "Ticket não encontrado") ); switch (request.Prioridade) { case 1: ticket.AlterarPrioridade(PrioridadeEnum.Baixo); break; case 2: ticket.AlterarPrioridade(PrioridadeEnum.Normal); break; case 3: ticket.AlterarPrioridade(PrioridadeEnum.Alto); break; case 4: ticket.AlterarPrioridade(PrioridadeEnum.Urgente); break; default: AddNotification("Prioridade", "Tipos de prioridades: 1=Baixo | 2=Normal | 3=Alto | 4=Urgente"); break; } switch (request.Status) { case 1: ticket.AlterarStatus(StatusEnum.Aberto); break; case 2: ticket.AlterarStatus(StatusEnum.EmAndamento); break; case 3: ticket.AlterarStatus(StatusEnum.Concluido); break; case 4: ticket.AlterarStatus(StatusEnum.Cancelado); break; default: AddNotification("Status", "Tipos de status: 1=Aberto | 2=Em andamento | 3=Concluído | 4=Cancelado"); break; } if (Invalid) { return(new Response(false, "Verifique os dados informados e tente novamente", Notifications)); } ticket.Editar(request.Titulo, request.Descricao, categoria); if (ticket.Invalid) { return(new Response(false, "Ticket inválido", ticket.Notifications)); } _repositorioTicket.Editar(ticket); Response result = new Response(true, "Ticket alterado com sucesso!", null); return(await Task.FromResult(result)); }