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");
        }
        private async Task <EntregaFixaProcessada> TransformaEntregaBancoEmFixaPreProcessada(IEntrega ent)
        {
            if (ent is IEntregaFixa)
            {
                EntregaFixa entFixa = (EntregaFixa)ent;

                string YYYY = entFixa.DataDaEfetivacao.Year.ToString();
                while (YYYY.Length < 4)
                {
                    YYYY = "0" + YYYY;
                }
                string MM = entFixa.DataDaEfetivacao.Month.ToString();
                while (MM.Length < 2)
                {
                    MM = "0" + MM;
                }
                string        competencia = YYYY + MM;
                Competencia[] comp        = await _gerenciadoFinanceiro.ConverteStringEmCompetenciasAsync(new string[] { competencia });

                EntregaFixaProcessada converted = new EntregaFixaProcessada(entFixa.DataDaEfetivacao, comp[0], entFixa.Executor);

                converted.Id           = entFixa.Id;
                converted.IdRegra      = entFixa.IdRegra;
                converted.SalvaNoBanco = entFixa.SalvaNoBanco;
                converted.Vinculacao   = entFixa.Vinculacao;
                converted.Serie        = entFixa.Serie;

                return(converted);
            }
            throw new InvalidOperationException("Tentativa de converter entrega nao fixa em entrega fixa");
        }
        public IEntregaBD ConverteDe(IEntrega entrega)
        {
            if (!(entrega is IEntregaFixa))
            {
                throw new ArgumentException("Necessário entrada de entregas fixas para este conversor");
            }

            EntregaFixaBD entregaConvertida = new EntregaFixaBD(TipoDeEntregaModeloBD.Fixa);

            EntregaFixa entregaFixa = entrega as EntregaFixa;

            entregaConvertida.Id = entregaFixa.Id;
            entregaConvertida.DataDaEfetivacao = entregaFixa.DataDaEfetivacao;
            entregaConvertida.IdProfissional   = entregaFixa.IdProfissional;
            entregaConvertida.IdRegra          = entregaFixa.IdRegra;
            entregaConvertida.nrSerie          = entregaFixa.Serie;

            entregaConvertida.Vinculacao = entregaFixa.Vinculacao;
            return(entregaConvertida);
        }