예제 #1
0
        public ICommandResult Handle(EmissaoNotaFiscalCommand command)
        {
            if (command == null)
            {
                return(new CommandResult(false, "Não foi possível gravar a Nota Fiscal"));
            }

            //Fail Fast Validation
            command.Validate();
            if (command.Invalid)
            {
                AddNotifications(command);
                return(new CommandResult(false, "Não foi possível gravar a Nota Fiscal"));
            }

            //Emitir a nota fiscal
            NotaFiscal notaFiscal = this.EmitirNotaFiscal(command);

            //Agrupar as Validações
            AddNotifications(notaFiscal, command);

            //Checar as notificações
            if (Invalid)
            {
                return(new CommandResult(false, "Não foi possível gravar a Nota Fiscal"));
            }

            //Gerar XML
            if (_XmlService.Gravar(notaFiscal))
            {
                //Salvar as informações
                _repository.CreateNotaFiscal(notaFiscal);
            }

            //Retornar informações
            return(new CommandResult(true, "Nota Fiscal armazenada com sucesso"));
        }