public EntregaDeHoraRecebida ConverterDe(EntregaDeHorasRecebidasBD entrega)
        {
            EntregaDeHoraRecebida entregaHora = new EntregaDeHoraRecebida()
            {
                Id = entrega.Id,
                DataDaEfetivacao     = entrega.DataDaEfetivacao,
                Executor             = new Profissional(entrega.IdFuncionario, null, null),
                Vinculacao           = entrega.Vinculacao,
                PercentualDisponivel = entrega.Percentual,
                QuantidadeDeMinutos  = entrega.QtdtMinutos,
                Procedimentos        = entrega.Procedimentos == null ?  new List <ProcedimentoBD>().Select(proc => proc.ConverteParaModelo()).ToArray() : entrega.Procedimentos.Select(proc => proc.ConverteParaModelo()).ToArray(),
                //Competencia = _gerenciadorFinanceiro.ConverteStringEmCompetenciasAsync(new string[] { entrega.Competencia.ToString() }).Result.First(),

                //instanciar objetos
                Categoria = new Categoria()
                {
                    IdCategoria = entrega.IdCategoria
                },
                //Faturamento = ConverterDe(entrega.Faturamento),
                //IdRecebimento = new Recebimento(){},
                IdTabelaPreco = entrega.IdTabelaPreco,
                TipoDeEvento  = entrega.TipoDeEvento,
                valorHora     = entrega.valorHora,
                valorRecebido = entrega.valorRecebido
            };


            return(entregaHora);
        }
        //private IGerenciadorDeRequisicoesFinanceiras _gerenciadorFinanceiro;

        //public ConversorDeEntregaDeHoraRecebida(IGerenciadorDeRequisicoesFinanceiras gerenciadorFinanceiro)
        //{
        //    _gerenciadorFinanceiro = gerenciadorFinanceiro;
        //}

        public IEntregaBD ConverteDe(IEntrega entrega)
        {
            if (!(entrega is EntregaDeHoraRecebida))
            {
                throw new ArgumentException("Necessário entrada de regras por hora recebida para este conversor");
            }

            EntregaDeHorasRecebidasBD entregaConvertida = new EntregaDeHorasRecebidasBD(TipoDeEntregaModeloBD.HoraRecebida);
            EntregaDeHoraRecebida     entragaHora       = entrega as EntregaDeHoraRecebida;

            entregaConvertida.Id = entragaHora.Id;

            entregaConvertida.DataDaEfetivacao = entragaHora.DataDaEfetivacao;

            throw new NotImplementedException();

            return(entregaConvertida);
        }
        public IEntrega ConverteParaEntrega(IEntregaBD entregaModeloBanco)
        {
            //Em regra tem ParametrosDeRegraDeRemuneracaoPorHora, criado a partir do argumento do método, provavelmente será assim com entrega também
            if (entregaModeloBanco is EntregaDeHorasRecebidasBD)
            {
                EntregaDeHorasRecebidasBD entregaDeHorasDoBanco = (EntregaDeHorasRecebidasBD)entregaModeloBanco;

                EntregaDeHoraRecebida entregaHora = new EntregaDeHoraRecebida()
                {
                    Id = entregaDeHorasDoBanco.Id,
                    DataDaEfetivacao     = entregaDeHorasDoBanco.DataDaEfetivacao,
                    Executor             = new Profissional(entregaDeHorasDoBanco.IdFuncionario, null, null),
                    Vinculacao           = entregaDeHorasDoBanco.Vinculacao,
                    PercentualDisponivel = entregaDeHorasDoBanco.Percentual,
                    QuantidadeDeMinutos  = entregaDeHorasDoBanco.QtdtMinutos,
                    Procedimentos        = entregaDeHorasDoBanco.Procedimentos == null ? new List <ProcedimentoBD>().Select(proc => proc.ConverteParaModelo()).ToArray() : entregaDeHorasDoBanco.Procedimentos.Select(proc => proc.ConverteParaModelo()).ToArray(),
                    //Competencia = _gerenciadorFinanceiro.ConverteStringEmCompetenciasAsync(new string[] { entregaDeHorasDoBanco.Competencia.ToString() }).Result.First(),
                    Categoria = new Categoria()
                    {
                        IdCategoria = entregaDeHorasDoBanco.IdCategoria
                    },
                    Faturamento = ConverterDe(entregaDeHorasDoBanco.Faturamento),
                    Recebimento = new Recebimento()
                    {
                        IdRecebimento = entregaDeHorasDoBanco.IdRecebimento, ValorRecebido = entregaDeHorasDoBanco.valorRecebido
                    },
                    IdTabelaPreco        = entregaDeHorasDoBanco.IdTabelaPreco,
                    TipoDeEvento         = entregaDeHorasDoBanco.TipoDeEvento,
                    HistoricoPagamento   = entregaDeHorasDoBanco.HistoricoPagamento,
                    IdHistoricoPagamento = entregaDeHorasDoBanco.IdHistoricoPagamento,
                    valorHora            = entregaDeHorasDoBanco.valorHora,
                    valorRecebido        = entregaDeHorasDoBanco.valorRecebido,
                    ValorMaximoRegra     = entregaDeHorasDoBanco.ValorMaximoRegra,
                    ValorMinimoRegra     = entregaDeHorasDoBanco.ValorMinimoRegra
                };

                return(entregaHora);
            }
            throw new InvalidOperationException("Conversão de entrega de horas recebida chamada para converter entrega que não é de horas recebidas");
        }