예제 #1
0
        // 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());
        }
예제 #2
0
        // 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;
        }
예제 #5
0
파일: Program.cs 프로젝트: katbyte/img2pdf
        //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");
              }
        }
예제 #7
0
 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());
 }