Exemplo n.º 1
0
 public IActionResult Criar([FromBody] ViewLote oferta)
 {
     try
     {
         return(ResultadoComRetorno <Lote>(_servico.Inserir(oferta)));
     }
     catch (Exception ex)
     {
         return(InternalServerError(ex));
     }
 }
Exemplo n.º 2
0
        public Retorno Inserir(ViewLote viewLote)
        {
            try
            {
                var lote            = viewLote.ObterLoteInclusao(this.Identificacao.Id);
                var alterarEndereco = false;
                var endereco        = null as Endereco;
                var notificacao     = null as Notificacao;
                var retorno         = null as Retorno;

                if (lote.Endereco.Id > 0)
                {
                    endereco = this.GetOne <Endereco>(lote.Endereco.Id);

                    if (endereco == null)
                    {
                        lote.Endereco.Id        = 0;
                        lote.EnderecoId         = 0;
                        lote.Endereco.UsuarioId = lote.UsuarioIdVendedor;
                    }
                    else
                    {
                        alterarEndereco = true;

                        endereco.Nome                = lote.Endereco.Nome;
                        endereco.Logradouro          = lote.Endereco.Logradouro;
                        endereco.Numero              = lote.Endereco.Numero;
                        endereco.Complemento         = lote.Endereco.Complemento;
                        endereco.CidadeId            = lote.Endereco.CidadeId;
                        endereco.EstadoId            = lote.Endereco.EstadoId;
                        endereco.Coordenadas         = lote.Endereco.Coordenadas;
                        endereco.CoordenadasEndereco = lote.Endereco.CoordenadasEndereco;

                        lote.EnderecoId = endereco.Id;
                        lote.Endereco   = null;
                    }
                }


                if (alterarEndereco)
                {
                    this.Update <Endereco>(endereco);
                }

                this.Insert <Lote>(lote);

                if (lote.Tipo == (int)ETipoLote.Frigorificos)
                {
                    retorno = _notificacaoServico.CriarNotificacaoNovaOfertaLoteParaFrigorificos(lote);
                }
                else
                {
                    retorno = _notificacaoServico.CriarNotificacaoNovaOfertaLoteParaProdutores(lote);
                }

                if (retorno.Sucesso)
                {
                    notificacao = retorno.ObterDados <Notificacao>();

                    if (notificacao != null)
                    {
                        this.Insert <Notificacao>(notificacao);
                    }
                }

                this.Save();


                if (notificacao != null && notificacao.EnviaPush)
                {
                    _pushServico.Enviar(notificacao, false);
                }


                return(Sucesso((ViewLote)lote, "Oferta do lote realizada com sucesso."));
            }
            catch (Exception ex)
            {
                return(Erro(ex));
            }
        }