Beispiel #1
0
        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));
            }
        }