public async Task <IEnumerable <EntregaDeSaldoFuncionario> > ObterEntregasDeSaldoDosFuncionariosDaRegra(ParametrosDeRegraDeRemuneracao modelo)
        {
            var tipoDaRegra = TipoDeRegraBD.Get(modelo.Tipo.Id);
            RegraDeRemuneracaoBD      regra = tipoDaRegra.ConverterDe(modelo);
            ParametrosDeFavorecimento fav   = new ParametrosDeFavorecimento();

            using (var context = _fabricaDeContextos.CriaContextoDe <RemuneracaoContext>(TipoDeConexao.Remuneracao))
            {
                ContratoDeRemuneracaoBD contrato = await context.Contratos
                                                   .Include(c => c.Favorecimento)
                                                   .Where(x => x.Id == regra.IdContrato).FirstOrDefaultAsync();

                if (contrato.Favorecimento == null)
                {
                    return(new List <EntregaDeSaldoFuncionario>());
                }

                fav = contrato.Favorecimento.ConverterPara();
            }



            using (var context = _fabricaDeContextos.CriaContextoDe <EntregaContext>(TipoDeConexao.Entrega))
            {
                IEnumerable <EntregaDeSaldoFuncionarioBD> entregas = await context.EntregasSaldoFuncionario
                                                                     //.Include(c=>c.Regra)
                                                                     .Where(x => fav.IdsDasEntidadesFavorecidas.Contains(x.IdFuncionario)).ToArrayAsync();

                IEnumerable <EntregaDeSaldoFuncionario> retorno = ConversorEntregaBSFuncionario.ConverteParaDominio(entregas);
                return(retorno);
            }
        }
        public async Task <IEnumerable <EntregaDeSaldoFuncionario> > ObterEntregasDeFuncionario()
        {
            using (var context = _fabricaDeContextos.CriaContextoDe <EntregaContext>(TipoDeConexao.Entrega))
            {
                IEnumerable <EntregaDeSaldoFuncionarioBD> entregas = await context.EntregasSaldoFuncionario.Where(ent => ent.IdRegra != null).ToArrayAsync();

                IEnumerable <EntregaDeSaldoFuncionario> retorno = ConversorEntregaBSFuncionario.ConverteParaDominio(entregas);

                return(retorno);
            }
        }
        public async Task <IEnumerable <EntregaDeSaldoFuncionario> > ObtemEntregasDeFuncionarioPorIds(IEnumerable <int> idsEntregasBSFuncionario)
        {
            using (var context = _fabricaDeContextos.CriaContextoDe <EntregaContext>(TipoDeConexao.Entrega))
            {
                IEnumerable <EntregaDeSaldoFuncionarioBD> entregas = await context.EntregasSaldoFuncionario.Where(x => idsEntregasBSFuncionario.Contains(x.Id)).ToArrayAsync();

                IEnumerable <EntregaDeSaldoFuncionario> retorno = ConversorEntregaBSFuncionario.ConverteParaDominio(entregas);

                return(retorno);
            }
        }
        public async Task <int> InserirSaldoFuncionarioAsync(EntregaDeSaldoFuncionario modelo)
        {
            EntregaDeSaldoFuncionarioBD entregaBSFuncionarioBD = ConversorEntregaBSFuncionario.ConverteDoDominio(modelo);

            using (var context = _fabricaDeContextos.CriaContextoDe <EntregaContext>(TipoDeConexao.Entrega))
            {
                EntityEntry <EntregaDeSaldoFuncionarioBD> insertedObject = await context.EntregasSaldoFuncionario.AddAsync(entregaBSFuncionarioBD);

                await context.SaveChangesAsync();

                return(insertedObject.Entity.Id);
            }
        }