public async Task <IngresoDiarioDTO> Actualizar(IngresoDiarioDTO funcionarioDTO)
        {
            try
            {
                if (funcionarioDTO != null)
                {
                    IngresoDiario ingDiarioBD = await db.IngresosDiarios.FindAsync(funcionarioDTO.Id);

                    IngresoDiario ingresoDiario       = mapper.Map <IngresoDiarioDTO, IngresoDiario>(funcionarioDTO, ingDiarioBD);
                    var           updateIngresoDiario = db.IngresosDiarios.Update(ingresoDiario);
                    await db.SaveChangesAsync();

                    return(mapper.Map <IngresoDiario, IngresoDiarioDTO>(updateIngresoDiario.Entity));
                }
                else
                {
                    return(null);
                }
            }
            catch (Exception e)
            {
                return(null);
            }
        }
        public async Task <int> Agregar(IngresoDTO ingresoDTO)
        {
            try
            {
                Proveedor proveedor = await db.Proveedores.FindAsync(ingresoDTO.Proveedor.Id);

                Funcionario funcionario = await db.Funcionarios.FindAsync(ingresoDTO.Funcionario.Id);

                IngresoDiarioDTO ingDiarioDTO = mapper.Map <IngresoDTO, IngresoDiarioDTO>(ingresoDTO);

                if (ingresoDTO.FechaInicio == ingresoDTO.FechaFin)
                {
                    IngresoDiario ingDiarioBD = mapper.Map <IngresoDiarioDTO, IngresoDiario>(ingDiarioDTO);

                    IngresoDiario ingresoDiarioUno = new IngresoDiario()
                    {
                        Proveedor          = proveedor,
                        Funcionario        = funcionario,
                        Fecha              = ingresoDTO.FechaInicio.Value,
                        EntradaPlanificada = ingDiarioBD.EntradaPlanificada,
                        SalidaPlanificada  = ingDiarioBD.SalidaPlanificada
                    };
                    db.Entry(ingresoDiarioUno.Proveedor).State   = EntityState.Unchanged;
                    db.Entry(ingresoDiarioUno.Funcionario).State = EntityState.Unchanged;

                    await db.IngresosDiarios.AddAsync(ingresoDiarioUno);

                    return(await db.SaveChangesAsync());
                }


                if (ingresoDTO.FechaInicio < ingresoDTO.FechaFin)
                {
                    var           diffFechas   = ingresoDTO.FechaFin - ingresoDTO.FechaInicio;
                    int           cantidadDias = diffFechas.Value.Days + 1;
                    DateTime      fechaInicio  = ingresoDTO.FechaInicio.Value;
                    IngresoDiario ingDiarioBD  = mapper.Map <IngresoDiarioDTO, IngresoDiario>(ingDiarioDTO);

                    for (int i = 0; i < cantidadDias; i++)
                    {
                        IngresoDiario ingresoDiarioMuchos = new IngresoDiario()
                        {
                            Proveedor          = proveedor,
                            Funcionario        = funcionario,
                            Fecha              = fechaInicio.AddDays(i),
                            EntradaPlanificada = ingDiarioBD.EntradaPlanificada,
                            SalidaPlanificada  = ingDiarioBD.SalidaPlanificada
                        };
                        db.Entry(ingresoDiarioMuchos.Proveedor).State   = EntityState.Unchanged;
                        db.Entry(ingresoDiarioMuchos.Funcionario).State = EntityState.Unchanged;
                        await db.IngresosDiarios.AddAsync(ingresoDiarioMuchos);
                    }
                    return(await db.SaveChangesAsync());
                }
                return(-1);
            }
            catch (Exception e)
            {
                return(-1);
            }
        }