public OutPutRemoveFrente RemoveFrenteId(int id)
        {
            var retorno = new OutPutRemoveFrente();

            using (var db = new FIPEContratosContext())
            {
                var strategy = db.Database.CreateExecutionStrategy();

                strategy.Execute(() =>
                {
                    using (var transaction = db.Database.BeginTransaction())
                    {
                        try
                        {
                            retorno = new bFrente(db).RemoveFrenteId(id);

                            db.Database.CommitTransaction();
                        }
                        catch (Exception ex)
                        {
                            new bEmail(db).EnviarEmailTratamentoErro(ex, "FrenteController-RemoveFrenteId");


                            throw;
                        }
                    }

                    return(retorno);
                });
                return(retorno);
            }
        }
        public OutPutUpdateFrente UpdateFrente([FromBody] InputUpdateFrente item)
        {
            var retorno      = new OutPutUpdateFrente();
            var pessoaFisica = new PessoaFisica();

            using (var db = new FIPEContratosContext())
            {
                var strategy = db.Database.CreateExecutionStrategy();

                strategy.Execute(() =>
                {
                    using (var transaction = db.Database.BeginTransaction())
                    {
                        try
                        {
                            // Inicia transação


                            var updateRetorno = new bFrente(db).UpdateFrente(item);

                            // Confirma operações
                            db.Database.CommitTransaction();

                            retorno = updateRetorno;

                            return(retorno);
                        }
                        catch (Exception ex)
                        {
                            new bEmail(db).EnviarEmailTratamentoErro(ex, "FrenteController-UpdateFrente");

                            retorno.Result = false;
                        }

                        return(retorno);
                    }
                });
                return(retorno);
            }
        }
        public OutPutGetFrente BuscaFrenteId(int id)
        {
            using (var db = new FIPEContratosContext())
            {
                try
                {
                    var retornoFrente = new OutPutGetFrente();
                    var frente        = new bFrente(db).BuscaFrenteId(id);

                    if (frente != null)
                    {
                        retornoFrente.CdFrente      = frente.CdFrente;
                        retornoFrente.CdFrenteTexto = frente.CdFrenteTexto;
                        retornoFrente.NmFrente      = frente.NmFrente;
                        retornoFrente.coordenadores = new List <OutPutGetFrentePessoaFisica>();

                        List <FrenteCoordenador> lstFrenteCoordenador = new bFrenteCoordenador(db).BuscaFrenteCoordenadorIdFrente(frente.IdFrente);
                        foreach (var frenteCoord in lstFrenteCoordenador)
                        {
                            var retornoCoord = new OutPutGetFrentePessoaFisica();
                            retornoCoord.IdPessoa = frenteCoord.IdPessoaFisica;

                            var pessoaFisica = new bPessoaFisica(db).BuscarPessoaId(retornoCoord.IdPessoa);
                            retornoCoord.NmPessoa = pessoaFisica.NmPessoa;

                            retornoFrente.coordenadores.Add(retornoCoord);
                        }
                    }

                    return(retornoFrente);
                }
                catch (Exception ex)
                {
                    new bEmail(db).EnviarEmailTratamentoErro(ex, "FrenteController-BuscaFrenteId");

                    throw;
                }
            }
        }
        public List <OutPutGridGetFrente> ListaFrenteIdContrato(int id)
        {
            using (var db = new FIPEContratosContext())
            {
                var listaFrentes = new List <OutPutGridGetFrente>();
                var strategy     = db.Database.CreateExecutionStrategy();

                strategy.Execute(() =>
                {
                    using (var transaction = db.Database.BeginTransaction())
                    {
                        try
                        {
                            var frentes = new bFrente(db).BuscaFrenteIdContrato(id);

                            if (frentes.Count > 0)
                            {
                                foreach (var f in frentes)
                                {
                                    var frente = new OutPutGridGetFrente();

                                    frente.IdFrente      = f.IdFrente;
                                    frente.NmFrente      = f.NmFrente;
                                    frente.CdFrenteTexto = f.CdFrenteTexto;
                                    frente.CdFrente      = f.CdFrente;

                                    var lstFrenteCoord = new bFrenteCoordenador(db).BuscaFrenteCoordenadorIdFrente(f.IdFrente);
                                    if (lstFrenteCoord.Count > 0)
                                    {
                                        frente.coordenadores = new List <OutPutGetFrentePessoaFisica>();
                                        foreach (var frenteCoordenador in lstFrenteCoord)
                                        {
                                            var pessoaFisica             = new bPessoaFisica(db).BuscarPessoaId(frenteCoordenador.IdPessoaFisica);
                                            var pessoaFisicaRetorno      = new OutPutGetFrentePessoaFisica();
                                            pessoaFisicaRetorno.IdPessoa = pessoaFisica.IdPessoaFisica;
                                            pessoaFisicaRetorno.NmPessoa = pessoaFisica.NmPessoa;

                                            frente.coordenadoresTexto += " " + pessoaFisica.NmPessoa;
                                            frente.coordenadores.Add(pessoaFisicaRetorno);
                                        }
                                    }

                                    listaFrentes.Add(frente);
                                }
                            }
                            else
                            {
                                var contrato = new bContrato(db).GetContratoById(id);

                                if (contrato.IcFrenteUnica != null)
                                {
                                    if (contrato.IcFrenteUnica.Value)
                                    {
                                        var frente = new OutPutGridGetFrente();

                                        var f = new Frente();

                                        f.NmFrente      = "Frente 01";
                                        f.IdContrato    = id;
                                        f.CdFrente      = 1;
                                        f.CdFrenteTexto = "01";

                                        db.Frente.Add(f);
                                        db.SaveChanges();

                                        var coordenadoresContrato = new bContratoCoordenador(db).BuscarCoordenador(id);
                                        foreach (var coordContrato in coordenadoresContrato)
                                        {
                                            var inputAddFrenteCoordenador      = new InputAddFrenteCoordenador();
                                            inputAddFrenteCoordenador.IdFrente = f.IdFrente;
                                            inputAddFrenteCoordenador.IdPessoa = coordContrato.IdPessoa;

                                            new bFrenteCoordenador(db).AddFrenteCoordenador(inputAddFrenteCoordenador);
                                        }
                                        db.Database.CommitTransaction();

                                        frente.IdFrente      = f.IdFrente;
                                        frente.NmFrente      = f.NmFrente;
                                        frente.CdFrenteTexto = f.CdFrenteTexto;
                                        frente.CdFrente      = f.CdFrente;

                                        var lstFrenteCoord = new bFrenteCoordenador(db).BuscaFrenteCoordenadorIdFrente(f.IdFrente);
                                        if (lstFrenteCoord.Count > 0)
                                        {
                                            frente.coordenadores = new List <OutPutGetFrentePessoaFisica>();
                                            foreach (var frenteCoordenador in lstFrenteCoord)
                                            {
                                                var pessoaFisica             = new bPessoaFisica(db).BuscarPessoaId(frenteCoordenador.IdPessoaFisica);
                                                var pessoaFisicaRetorno      = new OutPutGetFrentePessoaFisica();
                                                pessoaFisicaRetorno.IdPessoa = pessoaFisica.IdPessoaFisica;
                                                pessoaFisicaRetorno.NmPessoa = pessoaFisica.NmPessoa;

                                                frente.coordenadoresTexto += " " + pessoaFisica.NmPessoa;
                                                frente.coordenadores.Add(pessoaFisicaRetorno);
                                            }
                                        }

                                        listaFrentes.Add(frente);
                                    }
                                }
                            }

                            return(listaFrentes);
                        }
                        catch (Exception ex)
                        {
                            new bEmail(db).EnviarEmailTratamentoErro(ex, "FrenteController-ListaFrenteIdContrato");

                            throw;
                        }
                    }
                });
                return(listaFrentes);
            }
        }