public OutPutRemoveContratoEquipeTecnica RemoveContratoEquipeTecnicaId(int id)
        {
            var retorno = new OutPutRemoveContratoEquipeTecnica();

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

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

                            db.Database.CommitTransaction();
                        }
                        catch (Exception ex)
                        {
                            new bEmail(db).EnviarEmailTratamentoErro(ex, "ContratoEquipeTecnicaController-RemoveContratoEquipeTecnicaId");
                            throw;
                        }
                    }

                    return(retorno);
                });
                return(retorno);
            }
        }
        public OutPutAddContratoEquipeTecnica Add([FromBody] InputAddContratoEquipeTecnica item)
        {
            var retorno = new OutPutAddContratoEquipeTecnica();

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

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


                            var addRetorno = new bContratoEquipeTecnica(db).Add(item);

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

                            retorno = addRetorno;

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


                            retorno.Result = false;
                        }

                        return(retorno);
                    }
                });
                return(retorno);
            }
        }
        public OutPutGetContratoEquipeTecnica BuscaContratoEquipeTecnicaId(int id)
        {
            using (var db = new FIPEContratosContext())
            {
                try
                {
                    var retornoContratoEquipeTecnica = new OutPutGetContratoEquipeTecnica();
                    var contratoEquipeTecnica        = new bContratoEquipeTecnica(db).BuscaContratoEquipeTecnicaId(id);

                    if (contratoEquipeTecnica != null)
                    {
                        //retornoContratoEquipeTecnica. = frente.CdFrente;
                    }

                    return(retornoContratoEquipeTecnica);
                }
                catch (Exception ex)
                {
                    new bEmail(db).EnviarEmailTratamentoErro(ex, "ContratoEquipeTecnicaController-BuscaContratoEquipeTecnicaId");
                    throw;
                }
            }
        }
        public OutPutGridGetContratoEquipeTecnica ListaContratoEquipeTecnicaIdContrato(int id)
        {
            using (var db = new FIPEContratosContext())
            {
                try
                {
                    var retorno = new OutPutGridGetContratoEquipeTecnica();
                    var listaContratoEquipeTecnica = new List <OutPutGridGetContratoEquipeTecnicaDados>();
                    var contratosEquipeTecnica     = new bContratoEquipeTecnica(db).BuscaContratoEquipeTecnicaIdContrato(id);
                    retorno.ValorSomas        = new OutPutGridGetContratoEquipeTecnicaSomas();
                    retorno.ListEquipeTecnica = new List <OutPutGridGetContratoEquipeTecnicaDados>();

                    if (contratosEquipeTecnica.Count > 0)
                    {
                        retorno.ValorSomas.ValorTaxaSoma       = 0;
                        retorno.ValorSomas.VlCustoProjetoSoma  = 0;
                        retorno.ValorSomas.VlTotalAReceberSoma = 0;
                        foreach (var contratoEquipeTecnica in contratosEquipeTecnica)
                        {
                            var contratoEquipeTecnicaGrid = new OutPutGridGetContratoEquipeTecnicaDados();
                            var pessoa = new bPessoaFisica(db).GetById(contratoEquipeTecnica.IdPessoaFisica);
                            var formacaoProfissional = db.FormacaoProfissional.Where(w => w.IdFormacaoProfissional == contratoEquipeTecnica.IdFormacaoProfissional).FirstOrDefault();
                            var taxaUsp = db.TaxaInstitucional.Where(w => w.IdTaxaInstitucional == contratoEquipeTecnica.IdTaxaInstitucional).FirstOrDefault();
                            contratoEquipeTecnicaGrid.IdContratoEquipeTecnica = contratoEquipeTecnica.IdContratoEquipeTecnica;
                            contratoEquipeTecnicaGrid.CdEmail  = pessoa.CdEmail;
                            contratoEquipeTecnicaGrid.NmPessoa = pessoa.NmPessoa;
                            //EGS 30.08.2020 Estava dando erro, dai verifica se a vriavel existe antes de usar..
                            if (formacaoProfissional != null)
                            {
                                contratoEquipeTecnicaGrid.DsFormacaoProfissional = formacaoProfissional.DsFormacaoProfissional;
                            }
                            contratoEquipeTecnicaGrid.DsAtividadeDesempenhada = contratoEquipeTecnica.DsAtividadeDesempenhada;
                            if (contratoEquipeTecnica.IdPessoaJuridica != null)
                            {
                                var pessoaJuridica = new bPessoaJuridica(db).BuscarPessoaJuridicaId(contratoEquipeTecnica.IdPessoaJuridica.Value);
                                contratoEquipeTecnicaGrid.DsRazaoSocial = pessoaJuridica.RazaoSocial;
                            }
                            contratoEquipeTecnicaGrid.VlTotalAReceber     = contratoEquipeTecnica.VlTotalAreceber;
                            contratoEquipeTecnicaGrid.DsTaxaInstitucional = taxaUsp.DsTaxaInstitucional;
                            var valorTotal             = contratoEquipeTecnica.VlTotalAreceber;
                            var percentual             = taxaUsp.PcTaxaInstitucional / 100;
                            var valorTaxaInstitucional = percentual * valorTotal;
                            contratoEquipeTecnicaGrid.ValorTaxa      = valorTaxaInstitucional;
                            contratoEquipeTecnicaGrid.VlCustoProjeto = valorTaxaInstitucional + valorTotal;

                            // Somas do Grid
                            retorno.ValorSomas.ValorTaxaSoma       += valorTaxaInstitucional;
                            retorno.ValorSomas.VlTotalAReceberSoma += contratoEquipeTecnica.VlTotalAreceber;
                            retorno.ValorSomas.VlCustoProjetoSoma  += contratoEquipeTecnicaGrid.VlCustoProjeto;

                            listaContratoEquipeTecnica.Add(contratoEquipeTecnicaGrid);
                        }
                        retorno.ListEquipeTecnica = listaContratoEquipeTecnica;
                    }

                    return(retorno);
                }
                catch (Exception ex)
                {
                    new bEmail(db).EnviarEmailTratamentoErro(ex, "ContratoEquipeTecnicaController-ListaContratoEquipeTecnicaIdContrato");
                    throw;
                }
            }
        }