public void Handle(AtualizarEventoCommand message) { //TODO: Obter duas vezes o evento???????? if (!EventoExistente(message.Id, message.MessageType)) { return; } var eventoAtual = _eventoRepository.ObterPorId(message.Id); if (eventoAtual.OrganizadorId != _user.GetUserId()) { _bus.RaiseEvent(new DomainNotification(message.MessageType, "Evento não pertence ao organizador.")); return; } var evento = EventoFactory.NovoEventoCompleto(message.Id, message.Nome, message.DataInicio, message.DateFinal, message.Gratuito, message.Valor, message.Online, message.NomeEmpresa, message.OrganizadorId, eventoAtual.Endereco, message.CategoriaId); //TODO: pq não está na entity do evento? Nãi é ele a responsavel por saber o que é obrigatorio por ela ou não? if (!evento.Online && evento.Endereco is null) //TODO: == NULL RETORNO SEMPRE TRUE { _bus.RaiseEvent(new DomainNotification(message.MessageType, "Não é possível atualizar um evento sem informar o endereço")); return; } if (!EventoValido(evento)) { return; } _eventoRepository.Atualizar(evento); if (Commit()) { //Notificar processo concluido _bus.RaiseEvent(new EventoAtualizadoEvent( evento.Id, evento.Nome, evento.DescricaoCurta, evento.DescricaoLonga, evento.DataInicio, evento.DateFinal, evento.Gratuito, evento.Valor, evento.Online, evento.NomeEmpresa)); } }