public async Task <IActionResult> Edit(int id, [Bind("IdAsistencia,Nombre,Profesor,Grupos")] Asistencia_Disponible asistencia_Disponible) { if (id != asistencia_Disponible.IdAsistencia) { return(NotFound()); } if (ModelState.IsValid) { try { _context.Update(asistencia_Disponible); await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!Asistencia_DisponibleExists(asistencia_Disponible.IdAsistencia)) { return(NotFound()); } else { throw; } } return(RedirectToAction(nameof(Index))); } return(View(asistencia_Disponible)); }
public async Task <IActionResult> Create([Bind("IdAsistencia,Nombre,Profesor,Grupos")] Asistencia_Disponible asistencia_Disponible) { if (ModelState.IsValid) { _context.Add(asistencia_Disponible); await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Index))); } return(View(asistencia_Disponible)); }
public async Task <IActionResult> Descargar(int?id) { if (id == null) { return(NotFound()); } Asistencia_Disponible asistencia = await _context.Asistencia_Disponible .FirstOrDefaultAsync(a => a.IdAsistencia == id); var listaSolicitudes = await _context.Solicitud.Where(s => s.Asistencia == asistencia.IdAsistencia) .OrderByDescending(a => a.Promedio).ToListAsync(); List <int> listaPDFs = new List <int>(); List <string> listaCarnes = new List <string>(); string csv = "Carné, Nombre, Primer Apellido, Segundo Apellido, Promedio, Cédula, Teléfono 1, Teléfono 2, Correo, Carrera, Nivel, Número " + "de créditos, Promedia, Cuenta Bancaria, Número de Cuenta, Banco, Asistenca, Tiene Horas Asistente en otra unidad, Cantidad de Horas Asistente, " + "Tiene Horas Asistente en otra unidad, Cantidad de Horas Asistente\n"; foreach (var item in listaSolicitudes) { csv += item.Carne + "," + item.Nombre + "," + item.Apellido1 + "," + item.Apellido2 + "," + item.Promedio + "," + item.Cedula + "," + item.Telefono1 + "," + item.Telefono2 + "," + item.CorreoSolicitante + "," + item.CarreraQueCursa + "," + item.Nivel + "," + item.NumeroDeCreditos + "," + item.Promedio + "," + item.CuentaBancaria + "," + item.Banco + "," + item.NumeroDeCuenta + "," + item.Asistencia + "," + item.TieneHA + "," + item.CantidadHA + "," + item.TieneHE + "," + item.CantidadHE + "\n"; if (!listaPDFs.Contains((int)item.InformeDeMatricula)) { listaPDFs.Add((int)item.InformeDeMatricula); listaCarnes.Add(item.Carne); } if (!listaPDFs.Contains((int)item.ExpedienteAcademico)) { listaPDFs.Add((int)item.ExpedienteAcademico); } if (!listaPDFs.Contains((int)item.FotocopiaCedula)) { listaPDFs.Add((int)item.FotocopiaCedula); } } List <ZipItem> archivos = new List <ZipItem>(); int index = 0; for (int i = 0; i < listaPDFs.Count(); i += 3) { var matricula = await _context.PDF .FirstOrDefaultAsync(m => m.ID_PDF == listaPDFs[i]); var expediente = await _context.PDF .FirstOrDefaultAsync(m => m.ID_PDF == listaPDFs[i + 1]); var fotocopia = await _context.PDF .FirstOrDefaultAsync(m => m.ID_PDF == listaPDFs[i + 2]); archivos.Add(new ZipItem(listaCarnes[index] + " matricula.pdf", matricula.PDF_File)); archivos.Add(new ZipItem(listaCarnes[index] + " expediente.pdf", expediente.PDF_File)); archivos.Add(new ZipItem(listaCarnes[index] + " fotocopia.pdf", fotocopia.PDF_File)); index++; } Encoding encoding = Encoding.ASCII; archivos.Add(new ZipItem("Lista de solicitudes " + asistencia.Nombre + ".csv", csv, encoding)); var zipStream = new MemoryStream(); using (var zip = new ZipArchive(zipStream, ZipArchiveMode.Create, true)) { foreach (var zipItem in archivos) { var entry = zip.CreateEntry(zipItem.Name); using (var entryStream = entry.Open()) { zipItem.Content.CopyTo(entryStream); } } } zipStream.Position = 0; FileStreamResult file = File(zipStream, "application/octet-stream"); file.FileDownloadName = asistencia.Nombre + ".zip"; return(file); }