public async Task <ICollection <CargaObligacionDto> > ObtenerListaCargaObligacionArchivoCabecera(int usuarioId, string estado, int pciId) { var fechaLimitePago = _holiday.GetNextWorkingDay(System.DateTime.Now, 2); // DateTime dateValue = new DateTime(2021, 10, 29); // var fechaLimitePago = _holiday.GetNextWorkingDay(dateValue, 2); var usuario = (from u in _context.Usuario join c in _context.Cargo on u.CargoId equals c.CargoId where u.UsuarioId == usuarioId select new { Nombres = u.Nombres, Apellidos = u.Apellidos, CargoDescripcion = c.Nombre, } ).FirstOrDefault(); var pci = (from p in _context.Pci where p.PciId == pciId select p).FirstOrDefault(); var lista = await(from co in _context.CargaObligacion join rp in _context.RubroPresupuestal on co.RubroPresupuestalId equals rp.RubroPresupuestalId join ff in _context.FuenteFinanciacion on co.FuenteFinanciacionId equals ff.FuenteFinanciacionId join sf in _context.SituacionFondo on co.SituacionFondoId equals sf.SituacionFondoId join re in _context.RecursoPresupuestal on co.RecursoPresupuestalId equals re.RecursoPresupuestalId join td in _context.TipoDocumentoIdentidad on co.TipoDocumentoIdentidadId equals td.TipoDocumentoIdentidadId join tds in _context.TipoDocumentoSoporte on co.TipoDocumentoSoporteId equals tds.TipoDocumentoSoporteId join nap in _context.NivelAgrupacionPac on new { RubroPresupuestalId = rp.PadreRubroId.Value, SituacionFondoId = co.SituacionFondoId.Value, FuenteFinanciacionId = co.FuenteFinanciacionId.Value, RecursoPresupuestalId = co.RecursoPresupuestalId.Value, pci = co.PciId } equals new { RubroPresupuestalId = nap.RubroPresupuestalId, SituacionFondoId = nap.SituacionFondoId, FuenteFinanciacionId = nap.FuenteFinanciacionId, RecursoPresupuestalId = nap.RecursoPresupuestalId, pci = nap.PciId } where co.PciId == pciId where co.Estado.ToLower() == estado.ToLower() select new CargaObligacionDto() { FechaRegistro = System.DateTime.Now, FechaPago = co.FechaRegistro, FechaLimitePago = (co.ValorActual - co.ValorDeduccion > 0) ? fechaLimitePago : System.DateTime.Now, Obligacion = co.Obligacion, ValorActual = co.ValorActual, CodigoTipoBeneficiario = (pci.Nit == co.NumeroIdentificacion) ? "P" : "B", MedioPago = (co.MedioPago.ToLower() == "abono en cuenta") ? ("AC") : (((co.MedioPago.ToLower() == "giro") ? ("GR") : (((co.MedioPago.ToLower() == "cheque") ? ("CH") : (((co.MedioPago.ToLower() == "efectivo") ? ("EF") : (string.Empty))))))), CodigoPosicionPac = nap.Identificacion, CodigoDependenciaAfectacionPac = nap.DependenciaAfectacionPAC, CodigoPciTesoreria = nap.IdentificacionTesoreria, Tercero = new TerceroDto() { TipoDocumentoIdentidad = td.Codigo, NumeroIdentificacion = co.NumeroIdentificacion, Nombre = co.NombreRazonSocial }, Pci = new Pci() { Identificacion = pci.Identificacion, }, NumeroCuenta = co.NumeroCuenta, TipoCuenta = co.TipoCuenta.ToLower() == "ahorro" ? "AHR" : "CRR", TipoDocSoporteCompromiso = tds.Codigo, NumeroDocSoporteCompromiso = co.NumeroDocSoporteCompromiso, FechaDocSoporteCompromiso = co.FechaDocSoporteCompromiso, NombreFuncionario = usuario.Nombres + " " + usuario.Apellidos, CargoFuncionario = usuario.CargoDescripcion, Concepto = co.Concepto.Length > 200 ? co.Concepto.Substring(0, 200) : co.Concepto, }) .Distinct() .ToListAsync(); return(lista); }