// GET: Proyectos public ActionResult Proyectos(int? areaId, int? tipoId) { ApplicationUser usuario = (ApplicationUser)db.Users.FirstOrDefault(item => item.UserName == User.Identity.Name); int periodId = (int)Session["SelectedPeriod"]; Periodo period = db.Periodos.Find(periodId); Area area; TipoProyecto tipo; if (areaId == null) { if (usuario.TienePermiso(26) && usuario.TieneNivel(2)) { area = db.Areas.Where(item => item.Nivel.ID == 3 && item.AreaPadre.ID == usuario.UsuarioArea.ID).First(); } if (usuario.TienePermiso(1) || (usuario.TienePermiso(26) && (usuario.TieneNivel(1)))) // Administrador y Presidente { area = db.Areas.Where(item => item.Nivel.ID == 3).First(); } else if (usuario.TieneNivel(3) && usuario.TienePermiso(6)) { area = usuario.UsuarioArea; } else { area = usuario.UsuarioArea; } areaId = area.ID; } else { area = db.Areas.Where(item => item.Nivel.ID == 3).FirstOrDefault(item => item.ID == areaId); } if (tipoId == null) { tipo = db.TipoProyecto.FirstOrDefault(); tipoId = tipo.ID; } else { tipo = db.TipoProyecto.Find(tipoId); } ViewBag.CurrentTipo = tipo; ViewBag.CurrentArea = area; if (usuario.TienePermiso(26) && usuario.TieneNivel(2)) { List<Area> Areas = new List<Area>(); List<int> areasId = new List<int>(); Areas = db.Areas.Where(item => item.Nivel.ID == 3 && item.AreaPadre.ID == usuario.UsuarioArea.ID).ToList(); areasId = (from a in Areas select a.ID).ToList(); Areas.AddRange(db.Areas.Where(item => item.Nivel.ID == 3 && areasId.Any(p => item.AreaPadre.ID == p)).ToList()); areasId = (from a in Areas select a.ID).ToList(); Areas.AddRange(db.Areas.Where(item => item.Nivel.ID == 3 && areasId.Any(p => item.AreaPadre.ID == p)).ToList()); ViewBag.Areas = Areas.Distinct().OrderBy(item => item.ID); } if (usuario.TienePermiso(1) || (usuario.TienePermiso(26) && (usuario.TieneNivel(1)))) // Administrador y Presidente { ViewBag.Areas = db.Areas.Where(item => item.Nivel.ID == 3).ToList(); } if (usuario.TienePermiso(6) && usuario.TieneNivel(3)) { List<Area> Areas = new List<Area>(); Areas.Add(usuario.UsuarioArea); Areas.AddRange(usuario.UsuarioArea.AreasHijas.ToList()); ViewBag.Areas = Areas.OrderBy(item => item.AreaPadre.ID); } ViewBag.Tipos = db.TipoProyecto.ToList(); ViewBag.usuario = usuario; ViewBag.PeriodoSeleccionado = period; return View(db.Proyectos.Where(item => item.Tipo.ID == tipoId && item.Area.ID == areaId && item.Periodos.Any(p => p.ID == periodId)).ToList()); }
// GET: Tablero public ActionResult Tablero(string lvl, int? areaId) { ApplicationUser usuario = (ApplicationUser)db.Users.FirstOrDefault(item => item.UserName == User.Identity.Name); int periodId = (int)Session["SelectedPeriod"]; Periodo period = db.Periodos.Find(periodId); int nivel; Area area; if (lvl == null) { nivel = usuario.UsuarioArea.Nivel.ID; } else { nivel = int.Parse(lvl); } // Area if (areaId == null) { if (usuario.TienePermiso(1)) // Administrador { area = db.Areas.First(); } else { area = usuario.UsuarioArea; } areaId = area.ID; } else { area = db.Areas.FirstOrDefault(item => item.ID == areaId); } ViewBag.CurrentArea = area; // Areas if (usuario.TieneNivel(1) || usuario.TienePermiso(1)) { ViewBag.Areas = db.Areas.Where(item => item.Nivel.ID == nivel).ToList(); } else if (usuario.TieneNivel(2)) { if (nivel == 2) { ViewBag.Areas = db.Areas.Where(item => item.ID == usuario.UsuarioArea.ID).ToList(); } else if (nivel == 3) { List<Area> Areas = new List<Area>(); List<int> areasId = new List<int>(); Areas = db.Areas.Where(item => item.Nivel.ID == nivel && item.AreaPadre.ID == usuario.UsuarioArea.ID).ToList(); areasId = (from a in Areas select a.ID).ToList(); Areas.AddRange(db.Areas.Where(item => item.Nivel.ID == nivel && areasId.Any(p => item.AreaPadre.ID == p)).ToList()); areasId = (from a in Areas select a.ID).ToList(); Areas.AddRange(db.Areas.Where(item => item.Nivel.ID == nivel && areasId.Any(p => item.AreaPadre.ID == p)).ToList()); ViewBag.Areas = Areas.Distinct().OrderBy(item => item.ID); } } else if (usuario.TienePermiso(6)) { List<Area> Areas = new List<Area>(); Areas.Add(usuario.UsuarioArea); Areas.AddRange(usuario.UsuarioArea.AreasHijas.ToList()); ViewBag.Areas = Areas.OrderBy(item => item.AreaPadre.ID); } lvl = nivel.ToString(); ViewBag.usuario = usuario; ViewBag.Nivel = lvl; ViewBag.PeriodoSeleccionado = period; /* int _nivel = 3; if (usuario.TieneNivel(1)) { _nivel = 1; } if (usuario.TieneNivel(2)) { _nivel = 2; } if (usuario.TieneNivel(3)) { _nivel = 3; }*/ List<NivelOrganizacional> Niveles = new List<NivelOrganizacional>(); NivelOrganizacional Nivel_01 = db.NivelesOrganizacionales.Find(1); Niveles.Add(Nivel_01); NivelOrganizacional Nivel_02 = db.NivelesOrganizacionales.Find(2); Niveles.Add(Nivel_02); NivelOrganizacional Nivel_03 = db.NivelesOrganizacionales.Find(3); Niveles.Add(Nivel_03); ViewBag.Niveles = Niveles; //if (usuario.TieneNivel(1) || usuario.TienePermiso(1)) //{ // return View(db.Indicadores.Where(item => item.Tipo.Nivel.ID == nivel && item.Periodos.Any(p => p.ID == periodId)).ToList()); //} //if ((usuario.TieneNivel(2) && nivel == 2) || (usuario.TieneNivel(3) && nivel == 3)) //{ // return View(db.Indicadores.Where(item => item.Tipo.Nivel.ID == nivel && item.Area.ID == usuario.UsuarioArea.ID && item.Periodos.Any(p => p.ID == periodId)).ToList()); //} //if ((usuario.TieneNivel(3) && usuario.TienePermiso(8) && nivel == 2) || (usuario.TieneNivel(2) && usuario.TienePermiso(5) && nivel == 1)) //{ // return View(db.Indicadores.Where(item => item.Tipo.Nivel.ID == nivel && item.Area.ID == usuario.UsuarioArea.AreaPadre.ID && item.Periodos.Any(p => p.ID == periodId)).ToList()); //} return View(db.Indicadores.Where(item => item.Area.ID == areaId && item.Periodos.Any(p => p.ID == periodId)).ToList()); }
public ActionResult nuevopdf2(string formcollection) { if (Session["COD_USUARIO"] == null) { return RedirectToAction("Login", "Home"); } else { List<string> listaFiltros = Session["Filtros"] as List<string>; List<string> list = formcollection.Split(',').ToList(); int largo = list.Count; DateTime FechaI = DateTime.Parse(list[largo - 2]); DateTime FechaF = DateTime.Parse(list[largo - 1]); largo = largo - 3; int largo_aux = largo; var reservaciones = db.DSRIFRESERVACION; var inmuebles = db.DSRIFINMUEBLE; var _query0 = from reserva in reservaciones where ((reserva.FEC_INICIALRESERVACION >= FechaI && reserva.FEC_INICIALRESERVACION <= FechaF && reserva.TXT_ESTADO != "Rechazada" && reserva.TXT_ESTADO != "En Proceso")) select reserva; var listaTemporal1 = _query0.ToList(); foreach (var reserva in _query0.ToList()) { bool eliminar = true; for (int a = 0; a <= largo; a++) { if (reserva.ID_INMUEBLE == Convert.ToInt32(list[a])) { eliminar = false; break; } } if (eliminar) { for (int i = 0; i < listaTemporal1.Count; i++) { if (listaTemporal1.ElementAt(i).ID_INMUEBLE == reserva.ID_INMUEBLE) { listaTemporal1.Remove(listaTemporal1.ElementAt(i)); eliminar = true; break; } } } } // Eliminar con los filtros las reservas que no esten foreach (var filtro in listaFiltros) { for (int i = 0; i < listaTemporal1.Count; i++) { if ((listaTemporal1.ElementAt(i).DSRIFTIPOSACTIVIDAD.NOM_TIPOACTIVIDAD == "Alquiler Instalaciones" && filtro == "alquiler") || (listaTemporal1.ElementAt(i).DSRIFTIPOSACTIVIDAD.NOM_TIPOACTIVIDAD == "Actividad Interna" && filtro == "actividad") || ((listaTemporal1.ElementAt(i).DSRIFTIPOSACTIVIDAD.NOM_TIPOACTIVIDAD == "Transferencia Tecnológica" || listaTemporal1.ElementAt(i).DSRIFTIPOSACTIVIDAD.NOM_TIPOACTIVIDAD == "Vinculación Empresarial" || listaTemporal1.ElementAt(i).DSRIFTIPOSACTIVIDAD.NOM_TIPOACTIVIDAD == "Educación Continua") && filtro == "ejes")) { listaTemporal1.Remove(listaTemporal1.ElementAt(i)); i--; } } } var _query1 = listaTemporal1.ToList().OrderBy(ll => ll.FEC_INICIALRESERVACION.Year); var _query2 = _query1.ToList().OrderBy(ll => ll.FEC_INICIALRESERVACION.Month); var _query3 = _query2.ToList().OrderBy(ll => ll.FEC_INICIALRESERVACION.Date); // quitar los valores repetidos de la lista para que quede listo la busqueda y el pdf Document pdfDoc = new Document(PageSize.A4, 10, 10, 10, 10); try { PdfWriter.GetInstance(pdfDoc, System.Web.HttpContext.Current.Response.OutputStream); pdfDoc.Open(); string url = "http://3.bp.blogspot.com/-qZcs1DZ8Wys/TWU1PrkuMzI/AAAAAAAAAXM/u85hsQzQc_w/s320/image002.jpg"; Image jpg = Image.GetInstance(new Uri(url)); jpg.SpacingBefore = 7f; jpg.ScalePercent(35f); pdfDoc.Add(jpg); Chunk Titulo = new Chunk("Sistema de Reservas de Inmuebles, TEC-SSC", FontFactory.GetFont(FontFactory.TIMES_BOLD, 16)); Paragraph p = new Paragraph(); p.Alignment = Element.ALIGN_LEFT; p.Add(Titulo); pdfDoc.Add(p); Chunk subtitulo = new Chunk("Centro de Transferencia Tecnológica y Educación Continua.", FontFactory.GetFont(FontFactory.TIMES, 12)); Paragraph p1 = new Paragraph(); p1.Alignment = Element.ALIGN_LEFT; p1.Add(subtitulo); pdfDoc.Add(p1); Chunk extrainfo = new Chunk("Informe Generado Por: " + @Session["NOM_USUARIO"], FontFactory.GetFont(FontFactory.TIMES, 10)); Paragraph pextra = new Paragraph(); pextra.Alignment = Element.ALIGN_LEFT; pextra.Add(extrainfo); pdfDoc.Add(pextra); Chunk extrainfo1 = new Chunk("El día: " + @DateTime.Now.ToShortDateString(), FontFactory.GetFont(FontFactory.TIMES, 10)); Paragraph pextra1 = new Paragraph(); pextra1.SpacingAfter = 7f; pextra1.Alignment = Element.ALIGN_LEFT; pextra1.Add(extrainfo1); pdfDoc.Add(pextra1); PdfPTable table = new PdfPTable(3); table.WidthPercentage = 100; float[] widths = new float[] { 20f, 20f, 60f }; table.SetWidths(widths); table.HorizontalAlignment = 0; table.SpacingAfter = 10; PdfPCell cellFI = new PdfPCell(new Phrase("Fecha Inicio", FontFactory.GetFont(FontFactory.TIMES_BOLD, 11))); cellFI.Colspan = 1; cellFI.BackgroundColor = new iTextSharp.text.BaseColor(204, 204, 204); cellFI.HorizontalAlignment = 1; //0=Left, 1=Centre, 2=Right PdfPCell cellFF = new PdfPCell(new Phrase("Fecha Finalización", FontFactory.GetFont(FontFactory.TIMES_BOLD, 11))); cellFF.Colspan = 1; cellFF.BackgroundColor = new iTextSharp.text.BaseColor(204, 204, 204); cellFF.HorizontalAlignment = 1; //0=Left, 1=Centre, 2=Right PdfPCell cellN = new PdfPCell(new Phrase("Informe de la reserva", FontFactory.GetFont(FontFactory.TIMES_BOLD, 11))); cellN.Colspan = 1; cellN.BackgroundColor = new iTextSharp.text.BaseColor(204, 204, 204); cellN.HorizontalAlignment = 1; //0=Left, 1=Centre, 2=Right table.AddCell(cellFI); table.AddCell(cellFF); table.AddCell(cellN); var listaOrdenada = _query3.ToList(); for (int i = 0; i < listaOrdenada.Count; i++) { table.AddCell(new Phrase(listaOrdenada.ElementAt(i).FEC_INICIALRESERVACION.ToShortDateString(), FontFactory.GetFont(FontFactory.HELVETICA, 10))); table.AddCell(new Phrase(listaOrdenada.ElementAt(i).FEC_FINALRESERVACION.ToShortDateString(), FontFactory.GetFont(FontFactory.HELVETICA, 10))); DateTime horaI = new DateTime(); horaI = DateTime.Today.Add(listaOrdenada.ElementAt(i).HOR_INICIO); DateTime HoraF = new DateTime(); HoraF = DateTime.Today.Add(listaOrdenada.ElementAt(i).HOR_FINAL); string hor_inicio = horaI.ToString("h:mm"); string hor_final = HoraF.ToString("h:mm"); if (listaOrdenada.ElementAt(i).HOR_INICIO.Hours <= 11) { hor_inicio = hor_inicio + " am"; } else { hor_inicio = hor_inicio + " pm"; } if (listaOrdenada.ElementAt(i).HOR_FINAL.Hours <= 11) { hor_final = hor_final + " am"; } else { hor_final = hor_final + " pm"; } int? costo = 0; if (listaOrdenada.ElementAt(i).DSRIFINMUEBLE.DSRIFCLASIFINMUEBLE.NOM_CLASIFINMUEBLE == "CTEC") // Aqui se cobro por hora { while (listaOrdenada.ElementAt(i).FEC_INICIALRESERVACION <= listaOrdenada.ElementAt(i).FEC_FINALRESERVACION) { while (listaOrdenada.ElementAt(i).HOR_INICIO < listaOrdenada.ElementAt(i).HOR_FINAL) { TimeSpan mediaHora = TimeSpan.FromHours(1); // Agregar Media hora a la hora de inicio costo += listaOrdenada.ElementAt(i).DSRIFINMUEBLE.COS_INMUEBLE; listaOrdenada.ElementAt(i).HOR_INICIO = listaOrdenada.ElementAt(i).HOR_INICIO.Add(mediaHora); } if (listaOrdenada.ElementAt(i).DSRIFINMUEBLE.NOM_INMUEBLE == "Tecnoaula 1") { costo += 20000; } DateTime nuevaFecha = listaOrdenada.ElementAt(i).FEC_INICIALRESERVACION.AddDays(1); listaOrdenada.ElementAt(i).FEC_INICIALRESERVACION = nuevaFecha; } PdfPCell celda = new PdfPCell(); Phrase texto = new Phrase("ACTIVIDAD: " + listaOrdenada.ElementAt(i).NOM_ACTIVIDAD + "\nINMUEBLE: " + listaOrdenada.ElementAt(i).DSRIFINMUEBLE.NOM_INMUEBLE + "\nINICIO: " + hor_inicio + "\nFIN: " + hor_final + "\nCOSTO POR HORA ¢: " + listaOrdenada.ElementAt(i).DSRIFINMUEBLE.COS_INMUEBLE + "\nCOSTO TOTAL ¢: " + costo, FontFactory.GetFont(FontFactory.HELVETICA, 8)); celda.AddElement(texto); table.AddCell(celda); } else if (listaOrdenada.ElementAt(i).DSRIFINMUEBLE.DSRIFCLASIFINMUEBLE.NOM_CLASIFINMUEBLE == "ECOTEC") // Aqui se cobra por Día { while (listaOrdenada.ElementAt(i).FEC_INICIALRESERVACION <= listaOrdenada.ElementAt(i).FEC_FINALRESERVACION) { costo += listaOrdenada.ElementAt(i).DSRIFINMUEBLE.COS_INMUEBLE; DateTime nuevaFecha = listaOrdenada.ElementAt(i).FEC_INICIALRESERVACION.AddDays(1); listaOrdenada.ElementAt(i).FEC_INICIALRESERVACION = nuevaFecha; } PdfPCell celda = new PdfPCell(); Phrase texto = new Phrase("ACTIVIDAD: " + listaOrdenada.ElementAt(i).NOM_ACTIVIDAD + "\nINMUEBLE: " + listaOrdenada.ElementAt(i).DSRIFINMUEBLE.NOM_INMUEBLE + "\nINICIO: " + hor_inicio + "\nFIN: " + hor_final + "\nCOSTO POR DÍA ¢: " + listaOrdenada.ElementAt(i).DSRIFINMUEBLE.COS_INMUEBLE + "\nCOSTO TOTAL ¢: " + costo, FontFactory.GetFont(FontFactory.HELVETICA, 8)); celda.AddElement(texto); table.AddCell(celda); } } // Hasta Aqui llega la tabla // Se Crea una nueva instancia para que no se vea afectaba sobre la otra consulta DSRIEntities nn = new DSRIEntities(); var res = nn.DSRIFRESERVACION; var todasReservas = from r in res where ((r.FEC_INICIALRESERVACION >= FechaI && r.FEC_INICIALRESERVACION <= FechaF && r.TXT_ESTADO != "Rechazada" && r.TXT_ESTADO != "En Proceso")) select r; var lTemporal1 = todasReservas.ToList(); foreach (var reser in todasReservas.ToList()) { bool eli = true; for (int a = 0; a <= largo; a++) { if (reser.ID_INMUEBLE == Convert.ToInt32(list[a])) { eli = false; break; } } if (eli) { for (int i = 0; i < lTemporal1.Count; i++) { if (lTemporal1.ElementAt(i).ID_INMUEBLE == reser.ID_INMUEBLE) { lTemporal1.Remove(lTemporal1.ElementAt(i)); eli = true; break; } } } } // Eliminar con los filtros las reservas que no esten foreach (var filtro in listaFiltros) { for (int i = 0; i < listaTemporal1.Count; i++) { if ((lTemporal1.ElementAt(i).DSRIFTIPOSACTIVIDAD.NOM_TIPOACTIVIDAD == "Alquiler Instalaciones" && filtro == "alquiler") || (lTemporal1.ElementAt(i).DSRIFTIPOSACTIVIDAD.NOM_TIPOACTIVIDAD == "Actividad Interna" && filtro == "actividad") || ((lTemporal1.ElementAt(i).DSRIFTIPOSACTIVIDAD.NOM_TIPOACTIVIDAD == "Transferencia Tecnológica" || lTemporal1.ElementAt(i).DSRIFTIPOSACTIVIDAD.NOM_TIPOACTIVIDAD == "Vinculación Empresarial" || lTemporal1.ElementAt(i).DSRIFTIPOSACTIVIDAD.NOM_TIPOACTIVIDAD == "Educación Continua") && filtro == "ejes")) { lTemporal1.Remove(lTemporal1.ElementAt(i)); i--; } } } pdfDoc.Add(table); // Hasta aqui toda la tabla var lista1 = lTemporal1.ToList().OrderBy(aa => aa.FEC_INICIALRESERVACION.Year); var lista2 = lista1.ToList().OrderBy(aa => aa.FEC_INICIALRESERVACION.Month); var lista3 = lista2.ToList().OrderBy(aa => aa.FEC_INICIALRESERVACION.Date); ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// var listaInmuebles = lista3.ToList(); List<int> UnicosInmuebles = new List<int>();// Dejar solo un inmueble de cada clase foreach (var inmue in listaInmuebles) { UnicosInmuebles.Add(inmue.DSRIFINMUEBLE.ID_INMUEBLE); } UnicosInmuebles = UnicosInmuebles.Distinct().ToList(); /////////// // Agregamos Un Titulo Para la descripción de todo el costo general de los inmuebles para que no se vea feo XD Chunk factura = new Chunk("COSTO TOTAL DE CADA INMUEBLE", FontFactory.GetFont(FontFactory.TIMES_BOLD, 11)); Paragraph pfactura = new Paragraph(); pfactura.Alignment = Element.ALIGN_CENTER; pfactura.Add(factura); pdfDoc.Add(pfactura); for (int a = 0; a < UnicosInmuebles.Count; a++) // recorre la lista de inmuebles unicos de la lista previamente llenada { int? costoGeneral = 0; int? costoUnitario = 0; foreach (var reserva in listaInmuebles) // recorre la lista en donde estan todas las reservas que se encuentran en el modelo { if (reserva.ID_INMUEBLE == UnicosInmuebles.ElementAt(a)) // se compara si el id de la lista es igual a la de la reserva para empezar a sumar { ////////////////////////////////////////////////////////////////////// if (reserva.DSRIFINMUEBLE.DSRIFCLASIFINMUEBLE.NOM_CLASIFINMUEBLE == "CTEC") // Aqui se cobro por hora para los del CTEC { while (reserva.FEC_INICIALRESERVACION <= reserva.FEC_FINALRESERVACION) { while (reserva.HOR_INICIO < reserva.HOR_FINAL) { TimeSpan mediaHora = TimeSpan.FromHours(1); // Agregar Media hora a la hora de inicio costoUnitario += reserva.DSRIFINMUEBLE.COS_INMUEBLE; reserva.HOR_INICIO = reserva.HOR_INICIO.Add(mediaHora); } if (reserva.DSRIFINMUEBLE.NOM_INMUEBLE == "Tecnoaula 1") { costoUnitario += 20000; } DateTime nuevaFecha = reserva.FEC_INICIALRESERVACION.AddDays(1); reserva.FEC_INICIALRESERVACION = nuevaFecha; } } ////////////////////////////////////////////////////////////////////// else if (reserva.DSRIFINMUEBLE.DSRIFCLASIFINMUEBLE.NOM_CLASIFINMUEBLE == "ECOTEC") // Aqui se cobra por Día para los del ECOTEC { while (reserva.FEC_INICIALRESERVACION <= reserva.FEC_FINALRESERVACION) { costoUnitario += reserva.DSRIFINMUEBLE.COS_INMUEBLE; DateTime nuevaFecha = reserva.FEC_INICIALRESERVACION.AddDays(1); reserva.FEC_INICIALRESERVACION = nuevaFecha; } } } } costoGeneral += costoUnitario; DSRIFINMUEBLE inmuebleUnico = db.DSRIFINMUEBLE.Find(UnicosInmuebles.ElementAt(a)); Chunk nuevoParrafo = new Chunk(inmuebleUnico.NOM_INMUEBLE + ": ¢" + costoGeneral, FontFactory.GetFont(FontFactory.TIMES, 10)); Paragraph nuevoP = new Paragraph(); nuevoP.Alignment = Element.ALIGN_CENTER; nuevoP.Add(nuevoParrafo); pdfDoc.Add(nuevoP); costoUnitario = 0; costoGeneral = 0; } pdfDoc.Close(); Response.ContentType = "application/pdf"; Response.AddHeader("content-disposition", "attachment; filename= Informe de Reservas.pdf"); System.Web.HttpContext.Current.Response.Write(pdfDoc); Response.Flush(); Response.End(); System.Web.HttpContext.Current.ApplicationInstance.CompleteRequest(); } catch (DocumentException de) { System.Web.HttpContext.Current.Response.Write(de.Message); } catch (IOException ioEx) { System.Web.HttpContext.Current.Response.Write(ioEx.Message); } catch (Exception ex) { System.Web.HttpContext.Current.Response.Write(ex.Message); } return View(); } }
public JsonResult GetCostosGenerales(string lista) { /*Obtiene la fecha para realizar las comparaciones*/ var _res = Json(new[] { new { id="", name=""}, }, JsonRequestBehavior.AllowGet); List<string> list = lista.Split(',').ToList(); int largo = list.Count; DateTime FechaI = DateTime.Parse(list[largo - 2]); DateTime FechaF = DateTime.Parse(list[largo - 1]); largo = largo - 3; var res = db.DSRIFRESERVACION; var todasReservas = from r in res where ((r.FEC_INICIALRESERVACION >= FechaI && r.FEC_INICIALRESERVACION <= FechaF && r.TXT_ESTADO != "Rechazada" && r.TXT_ESTADO != "En Proceso")) select r; var lTemporal1 = todasReservas.ToList(); foreach (var reser in todasReservas.ToList()) { bool eli = true; for (int a = 0; a <= largo; a++) { if (reser.ID_INMUEBLE == Convert.ToInt32(list[a])) { eli = false; break; } } if (eli) { for (int i = 0; i < lTemporal1.Count; i++) { if (lTemporal1.ElementAt(i).ID_INMUEBLE == reser.ID_INMUEBLE) { lTemporal1.Remove(lTemporal1.ElementAt(i)); eli = true; break; } } } } var lista1 = lTemporal1.ToList().OrderBy(aa => aa.FEC_INICIALRESERVACION.Year); var lista2 = lista1.ToList().OrderBy(aa => aa.FEC_INICIALRESERVACION.Month); var lista3 = lista2.ToList().OrderBy(aa => aa.FEC_INICIALRESERVACION.Date); ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// var listaInmuebles = lista3.ToList(); List<int> UnicosInmuebles = new List<int>();// Dejar solo un inmueble de cada clase foreach (var inmue in listaInmuebles) { UnicosInmuebles.Add(inmue.DSRIFINMUEBLE.ID_INMUEBLE); } UnicosInmuebles = UnicosInmuebles.Distinct().ToList(); /////////// for (int a = 0; a < UnicosInmuebles.Count; a++) // recorre la lista de inmuebles unicos de la lista previamente llenada { int? costoGeneral = 0; int? costoUnitario = 0; foreach (var reserva in listaInmuebles) // recorre la lista en donde estan todas las reservas que se encuentran en el modelo { if (reserva.ID_INMUEBLE == UnicosInmuebles.ElementAt(a)) // se compara si el id de la lista es igual a la de la reserva para empezar a sumar { ////////////////////////////////////////////////////////////////////// if (reserva.DSRIFINMUEBLE.DSRIFCLASIFINMUEBLE.NOM_CLASIFINMUEBLE == "CTEC") // Aqui se cobro por hora para los del CTEC { while (reserva.FEC_INICIALRESERVACION <= reserva.FEC_FINALRESERVACION) { while (reserva.HOR_INICIO < reserva.HOR_FINAL) { TimeSpan mediaHora = TimeSpan.FromMinutes(30); // Agregar Media hora a la hora de inicio costoUnitario += reserva.DSRIFINMUEBLE.COS_INMUEBLE / 2; reserva.HOR_INICIO = reserva.HOR_INICIO.Add(mediaHora); } if (reserva.DSRIFINMUEBLE.NOM_INMUEBLE == "Tecnoaula 1") { costoUnitario += 20000; } DateTime nuevaFecha = reserva.FEC_INICIALRESERVACION.AddDays(1); reserva.FEC_INICIALRESERVACION = nuevaFecha; } } ////////////////////////////////////////////////////////////////////// else if (reserva.DSRIFINMUEBLE.DSRIFCLASIFINMUEBLE.NOM_CLASIFINMUEBLE == "ECOTEC") // Aqui se cobra por Día para los del ECOTEC { while (reserva.FEC_INICIALRESERVACION <= reserva.FEC_FINALRESERVACION) { costoUnitario += reserva.DSRIFINMUEBLE.COS_INMUEBLE; DateTime nuevaFecha = reserva.FEC_INICIALRESERVACION.AddDays(1); reserva.FEC_INICIALRESERVACION = nuevaFecha; } } } } costoGeneral += costoUnitario; } JsonObject _resultado = new JsonObject(); return _res; }
//parse arguments /// <summary> /// parses all arguments and configures the program, returns true if we should exit /// </summary> /// <returns> /// true if help or version or no args were specified and we should exit /// </returns> public bool ParseArguments(string[] args) { //if no args output short help if (args.Length == 0) { Konsole.WriteLine(CC.WHITE, Help.basic); return true; } //temp list to collect inputs var inputsList = new List<string>(); //keep track of if files/folders are found to determine "mode" bool inputFolders = false; bool inputFiles = false; //parse command line var argq = args.ToQueue(); //using a queue so we can easily grab the next arg at any point while (argq.Count != 0) { string a = argq.Dequeue(); //check if a is last, matches *.pdf and is not a folder //NOTE: in rare case img2pdf folder1 folder2 folder.pdf where folder.pdf is a folder but the user wanted it as the output, they can use -o folder.pdf if (argq.IsEmpty() && a.EndsWith(".pdf") && ! Directory.Exists(a)) { output = a; continue; } //switches if (a.StartsWith("-") && ! a.StartsWith("--")) { //we use a character array and a for loop so we can tell if we are at the end of a -abcd group //for switches that take a parameter like -o output.pdf so ensure they are the last in the group var carray = a.RemoveFromStart("-").ToLower().ToCharArray(); for (int i = 0; i < carray.Length; i++ ) { char c = carray[i]; switch (c) { case 'v': var vinfo = FileVersionInfo.GetVersionInfo(Assembly.GetEntryAssembly().Location).ProductVersion; //TODO add some color Konsole.WriteLine(CC.WHITE, appname + ".exe " + vinfo); Konsole.WriteLine(CC.WHITE, "Copyright (c) 2014 [email protected] @ " + homepage); return true; case 'h': var v = FileVersionInfo.GetVersionInfo(Assembly.GetEntryAssembly().Location).FileVersion; Konsole.WriteLine(CC.GRAY, Help.full.FormatIt(v)); return true; case 'o': if (i != carray.Length - 1) { throw new Exception("-o can only be used at the end of a switch group. example -tso c:\\output.pdf"); } if (argq.IsEmpty()) { throw new Exception("-o used without a output folder/file"); } //check for .pdf ending? output = argq.Dequeue(); break; case 'l': embiggen = true; break; case 's': ensmallen = true; break; default: throw new Exception("unknown switch '"+c+"'"); } } continue; } //is an input, ensure it exists if (Directory.Exists(a)) { inputFolders = true; } else if (File.Exists(a)) { inputFiles = true; } else { throw new Exception("input file/folder '" + a + "' doesn't exist."); } inputsList.Add(KPath.EnsureRooted(a)); } //remove duplicates and convert to array because why not paths = inputsList.Distinct(StringComparer.OrdinalIgnoreCase).ToArray(); //check sanity //can't do both... or can we ;) if (ensmallen && embiggen) { throw new Exception("can not use switches -s and -l at the same time"); } //ensure we are configured for a single output when both files and folders are inputs if ((inputFiles && inputFolders) || (inputFiles && ! inputFolders)) { if (output == null) { //if they all are in the same directory use that //quick hack to grab the first n chars that are the same over all inputs //TODO HACKALERT optimize/google a better solution string start = "" + paths[0][0]; for (int i = 0; i < paths[0].Length && paths.Any(input => input.StartsWith(start)); start = paths[0].Substring(0, ++i)) {} //TODO HACKALERT this does have the possibility to place the pdf in strange places //maybe force the user to pick a location instead of trying to be smart? var dir = Path.GetDirectoryName(start); if (dir == null || ! Directory.Exists(dir)) { throw new Exception("Unable to determine common directory to place PDF, please specify a path"); //make error clearer TODO } output = dir + "\\" + Path.GetFileName(dir) + ".pdf"; Konsole.WriteLine(CT.N("WARNING: ", CC.YELLOW), CT.N("found only files or both file and folder inputs without an output pdf file specified, using '" + output + "'", CC.GREEN)); Konsole.WriteLine(); } } return false; }
public ActionResult ICS109(Guid id) { var mission = this.db.Missions.Include("Log").Single(f => f.Id == id); string pdfTemplate = Server.MapPath(Url.Content("~/Content/forms/ics109-log.pdf")); using (MemoryStream result = new MemoryStream()) { iTextSharp.text.Document resultDoc = new iTextSharp.text.Document(); PdfCopy copy = new PdfCopy(resultDoc, result); resultDoc.Open(); Queue<Tuple<string, string, string>> rows = null; int numPages = -1; int totalRows = 0; int page = 1; List<string> operators = new List<string>(); do { using (MemoryStream filledForm = new MemoryStream()) { iTextSharp.text.pdf.PdfReader pdfReader = new iTextSharp.text.pdf.PdfReader(pdfTemplate); //// create and populate a string builder with each of the //// field names available in the subject PDF //StringBuilder sb = new StringBuilder(); //foreach (var de in pdfReader.AcroFields.Fields) //{ // sb.Append(de.Key.ToString() + Environment.NewLine); //} //// Write the string builder's content to the form's textbox using (MemoryStream buf = new MemoryStream()) { PdfStamper stamper = new PdfStamper(pdfReader, buf); var fields = stamper.AcroFields; if (rows == null) { rows = Fill109Rows(mission.Log.OrderBy(f => f.Time), fields, "topmostSubform[0].Page1[0].SUBJECTRow1[0]"); totalRows = rows.Count; } foreach (var field in fields.Fields) { fields.SetField(field.Key, ""); } int currentRow = 1; operators.Clear(); while (rows.Count > 0 && fields.GetField("topmostSubform[0].Page1[0].SUBJECTRow" + currentRow.ToString() + "[0]") != null) { var row = rows.Dequeue(); fields.SetField("topmostSubform[0].Page1[0].TIMERow" + currentRow.ToString() + "[0]", row.Item1); fields.SetField("topmostSubform[0].Page1[0].SUBJECTRow" + currentRow.ToString() + "[0]", row.Item2); if (!operators.Contains(row.Item3)) operators.Add(row.Item3); currentRow++; } // Now we know how many rows on a page. Figure out how many pages we need for all rows. if (numPages < 0) { int rowsPerPage = currentRow - 1; int remainder = totalRows % currentRow; numPages = ((remainder == 0) ? 0 : 1) + (totalRows / currentRow); } if (numPages > 0) { fields.SetField("topmostSubform[0].Page1[0]._1_Incident_Name[0]", " " + mission.Title); fields.SetField("topmostSubform[0].Page1[0]._3_DEM_KCSO[0]", " " + mission.StateNumber); fields.SetField("topmostSubform[0].Page1[0]._5_RADIO_OPERATOR_NAME_LOGISTICS[0]", string.Join(",", operators.Distinct())); fields.SetField("topmostSubform[0].Page1[0].Text30[0]", string.Format("{0:yyyy-MM-dd}", mission.Log.DefaultIfEmpty().Min(f => (f == null) ? (DateTime?)null : f.Time))); fields.SetField("topmostSubform[0].Page1[0].Text31[0]", string.Format("{0:yyyy-MM-dd}", mission.Log.DefaultIfEmpty().Max(f => (f == null) ? (DateTime?)null : f.Time))); fields.SetField("topmostSubform[0].Page1[0].Text28[0]", page.ToString()); fields.SetField("topmostSubform[0].Page1[0].Text29[0]", numPages.ToString()); fields.SetField("topmostSubform[0].Page1[0].DateTime[0]", DateTime.Now.ToString(" MMM d, yyyy HH:mm")); fields.SetField("topmostSubform[0].Page1[0]._8_Prepared_by_Name[0]", Strings.DatabaseName); fields.RemoveField("topmostSubform[0].Page1[0].PrintButton1[0]"); } stamper.FormFlattening = false; stamper.Close(); pdfReader = new PdfReader(buf.ToArray()); copy.AddPage(copy.GetImportedPage(pdfReader, 1)); page++; } } //copy.Close(); } while (rows != null && rows.Count > 0); resultDoc.Close(); return File(result.ToArray(), "application/pdf", mission.StateNumber + "_ICS109_CommLog.pdf"); } }
public ActionResult Index() { var user = userRepository.GetUserByUsername(User.Identity.Name); var allPolls = new List<Poll>(); allPolls.AddRange(user.ManagedPolls); allPolls.AddRange(user.CreatedPolls); allPolls.AddRange(pollRepository.GetPollsMasteredBy(user)); return View(allPolls.Distinct().OrderByDescending(p => p.pollID).ToList()); }