Exemplo n.º 1
0
        public async Task <ValidationResult> Handle(AdicionarEmpresaCommand message, CancellationToken cancellationToken)
        {
            if (!message.IsValid())
            {
                return(message.ValidationResult);
            }

            Usuario proprietarioEmpresa = await _repository.ObterUsuarioPorId(message.UsuarioProprietarioId);

            if (proprietarioEmpresa is null)
            {
                return(await NotifyAndReturn("Usuário não encontrado."));
            }

            Empresa novaEmpresa = new Empresa(message.RazaoSocial, message.Cnpj, message.HorarioAbertura, message.HorarioFechamento);

            proprietarioEmpresa.AdicionarEmpresa(novaEmpresa);

            _repository.AdicionarEmpresa(novaEmpresa);

            return(await SaveAndPublish(new EmpresaAdicionadaUsuarioEvent(novaEmpresa.Id, message.UsuarioProprietarioId, message.RazaoSocial, message.Cnpj,
                                                                          message.DiasFuncionamento, message.HorarioAbertura, message.HorarioFechamento)));
        }