public IEntrega ConverteParaEntrega(IEntregaBD entregaModeloBanco)
        {
            if (entregaModeloBanco is EntregaFixaBD)
            {
                EntregaFixaBD entregaDeFixo = (EntregaFixaBD)entregaModeloBanco;

                EntregaFixa entFixa = new EntregaFixa()
                {
                    Id = entregaDeFixo.Id,
                    DataDaEfetivacao     = entregaDeFixo.DataDaEfetivacao,
                    Executor             = new Profissional(entregaDeFixo.IdProfissional, null, null),
                    Fechada              = false,
                    IdProfissional       = entregaDeFixo.IdProfissional,
                    IdRegra              = entregaDeFixo.IdRegra,
                    PercentualDisponivel = 100,
                    Procedimentos        = null,
                    SalvaNoBanco         = true,
                    Vinculacao           = entregaDeFixo.Vinculacao,
                    Serie = entregaDeFixo.nrSerie
                };

                return(entFixa);
            }
            throw new InvalidOperationException("Conversão de entrega fixa chamada para converter entrega que não é fixa");
        }
        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");
        }
        public IEntrega ConverteParaEntrega(IEntregaBD entregaModeloBanco)
        {
            //TODO: Não está convertendo a entrega de verdade, apenas igualando id
            //Em regra tem ParametrosDeRegraDeRemuneracaoPorHora, criado a partir do argumento do método, provavelmente será assim com entrega também
            if (entregaModeloBanco is EntregaDeHorasBD)
            {
                EntregaDeHorasBD entregaDeHorasDoBanco = (EntregaDeHorasBD)entregaModeloBanco;

                EntregaDeHora entregaHora = new EntregaDeHora()
                {
                    Id = entregaDeHorasDoBanco.Id,
                    DataDaEfetivacao     = entregaDeHorasDoBanco.DataDaEfetivacao,
                    Executor             = new Profissional(entregaDeHorasDoBanco.IdDoFuncionarioExecutor, null, null),
                    Vinculacao           = entregaDeHorasDoBanco.Vinculacao,
                    PercentualDisponivel = entregaDeHorasDoBanco.Percentual,
                    QuantidadeDeMinutos  = entregaDeHorasDoBanco.Quantidade_De_Minutos,
                    Procedimentos        = entregaDeHorasDoBanco.Procedimentos.Select(proc => proc.ConverteParaModelo()).ToArray()
                };

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