Exemplo n.º 1
0
        public async Task ProcessarAtualizacoesOrdemCompra()
        {
            while (true)
            {
                var ordemCompra = _mensageria.ReceberMensagem <OrdemCompra>(Dominio.Entidades.Mensageria.TopicosMensageria.SolicitacaoEnvioOrdem);
                if (ordemCompra != null)
                {
                    await _orderCompraRepositorio.AlterarOrdemCompra(ordemCompra.Id, ordemCompra.Status);

                    if (ordemCompra.Status == OrdemCompraStatus.EmAnalise)
                    {
                        var ordemCompra = _mensageria.EnviarMensagem <OrdemCompra>(Dominio.Entidades.Mensageria.TopicosMensageria.EnvioOrdemParaBolsa, ordemCompra);
                    }
                }
            }
        }
Exemplo n.º 2
0
        public async Task <ResultadoBase <bool> > SolicitarRegistroOrdemCompra(OrdemCompraDTO ordemCompraDTO)
        {
            var novaOrdemCompra = ordemCompraDTO.Mapear();

            if (!novaOrdemCompra.Valida())
            {
                return new ResultadoBase <bool>()
                       {
                           CodigoErro = MensagemErro.OMS_010, Resultado = false, TipoErro = TipoErro.Validacao
                       }
            }
            ;

            var cliente = await _clienteRepositorio.ConsultarPorId(novaOrdemCompra.IdCliente);

            if (cliente == null)
            {
                return new ResultadoBase <bool>()
                       {
                           CodigoErro = MensagemErro.OMS_001, Resultado = false, TipoErro = TipoErro.Validacao
                       }
            }
            ;

            var produto = await _produtoRepositorio.ConsultarPorId(novaOrdemCompra.IdProduto);

            if (produto == null)
            {
                return new ResultadoBase <bool>()
                       {
                           CodigoErro = MensagemErro.OMS_002, Resultado = false, TipoErro = TipoErro.Validacao
                       }
            }
            ;

            var contaCorrente = await _contaCorrenteRepositorio.ObterPorId(novaOrdemCompra.IdCliente);

            if (contaCorrente == null)
            {
                return new ResultadoBase <bool>()
                       {
                           CodigoErro = MensagemErro.OMS_003, Resultado = false, TipoErro = TipoErro.Validacao
                       }
            }
            ;

            var resultado = await _ordemCompraDominoServico.PermiteRegistroDeOrdemCompra(cliente, produto, contaCorrente, novaOrdemCompra);

            if (resultado.Resultado)
            {
                //faz a solictacao de registro
                await _mensageriaRepoSitorio.EnviarMensagem <OrdemCompra>(TopicosMensageria.SolicitacaoRegistroOrdem, novaOrdemCompra);
            }


            return(resultado);
        }
    }
}