public FileContentResult HojaRutaMantenedoresPrevia()
        {

            LocalReport reporte_local = new LocalReport();
            RentaMaq.DAL.Context db = new RentaMaq.DAL.Context();
            reporte_local.ReportPath = Server.MapPath("~/Report/hojaRutaMantenedoresPrevia.rdlc");
            ReportDataSource conjunto_datos = new ReportDataSource();
            conjunto_datos.Name = "DataSet1";

            List<int> idsPendientes = equipos.obtenerIDsLubricacionesPendientes();

            List<hojaRutaMantenedores> pendientes = new List<hojaRutaMantenedores>();

            foreach (int idPendiente in idsPendientes) 
            {
                hojaRutaMantenedores nueva = new hojaRutaMantenedores();

                nueva.equipoID = idPendiente;

                pendientes.Add(nueva);
            }

            List<hojaRutaMantenedoresReporte> datos = hojaRutaMantenedoresReporte.convertirDatosAntesDeRegistro(pendientes);

            conjunto_datos.Value = datos;
            reporte_local.DataSources.Add(conjunto_datos);
            string reportType = "PDF";
            string mimeType;
            string encoding;
            string fileNameExtension;
            string deviceInfo = "<DeviceInfo>" +
                 "  <OutputFormat>jpeg</OutputFormat>" +
                 "  <PageWidth>10in</PageWidth>" +
                 "  <PageHeight>13in</PageHeight>" +
                 "  <MarginTop>0.5in</MarginTop>" +
                 "  <MarginLeft>1in</MarginLeft>" +
                 "  <MarginRight>1in</MarginRight>" +
                 "  <MarginBottom>0.5in</MarginBottom>" +
                 "</DeviceInfo>";
            Warning[] warnings;
            string[] streams;
            byte[] renderedBytes;

            renderedBytes = reporte_local.Render(reportType, deviceInfo, out mimeType, out encoding, out fileNameExtension, out streams, out warnings);
            return File(renderedBytes, mimeType);
        }
        public ActionResult Create([Bind(Include = "hojaRutaMantenedoresID,fecha,nombreMantenedor")] hojaRutaMantenedores HojaRutaMantenedores,
            FormCollection post)
        {
            if (Session["ID"] == null || !roles.tienePermiso(numeroPermiso, int.Parse(Session["ID"].ToString())))
            {

                return RedirectToAction("Index", "Home");
            }

            HojaRutaMantenedores.fecha = Formateador.fechaFormatoGuardar(post["fecha"]);
            HojaRutaMantenedores.numero = hojaRutaMantenedores.obtenerNuevoNumero();

            //Se guarda el detalle:
            string[] equipoID = Request.Form.GetValues("equipoID");
            string[] lugar = Request.Form.GetValues("lugar");
            string[] horometro = Request.Form.GetValues("horometro");
            string[] trabajoRealizado = Request.Form.GetValues("trabajoRealizado");

            for (int i = 0; i < equipoID.Length; i++)
            {
                hojaRutaMantenedores nueva = new hojaRutaMantenedores();
                nueva.fecha = HojaRutaMantenedores.fecha;
                nueva.numero = HojaRutaMantenedores.numero;
                nueva.nombreMantenedor = HojaRutaMantenedores.nombreMantenedor;
                nueva.equipoID = int.Parse(equipoID[i]);
                nueva.lugar = lugar[i];
                nueva.horometro = int.Parse(horometro[i]);
                nueva.trabajoRealizado = trabajoRealizado[i];

                db.hojaRutaMantenedores.Add(nueva);

                registrokmhm nuevoRegistro = new registrokmhm();
                nuevoRegistro.equipoID = nueva.equipoID;
                nuevoRegistro.fecha = nueva.fecha;
                nuevoRegistro.horometro = nueva.horometro;
                nuevoRegistro.kilometraje = equipos.obtenerUltimoKilometraje(nueva.equipoID);
                //db.registrokmhms.Add(nuevoRegistro);
                registrokmhm.actualizarRegistroKmHm(nuevoRegistro);
            }

            registro Registro = new registro();
            Registro.fecha = DateTime.Now;
            Registro.tipoAccion = "Crear";
            Registro.tipoDato = "hojaRutaMantenedores";
            Registro.usuario = db.Usuarios.Find(int.Parse(Session["ID"].ToString())).nombreUsuario + " / " + db.Usuarios.Find(int.Parse(Session["ID"].ToString())).nombreCompleto;
            Registro.usuarioID = int.Parse(Session["ID"].ToString());
            Registro.descripcion = Registro.usuario+" Crea nueva Hoja de Ruta de Mantenedores: " + HojaRutaMantenedores.numero;            
            db.Registros.Add(Registro);

            db.SaveChanges();
            return RedirectToAction("Index");
        }
        public ActionResult Edit([Bind(Include = "hojaRutaMantenedoresID,fecha,nombreMantenedor, numero")] hojaRutaMantenedores HojaRutaMantenedores,
            FormCollection post)
        {
            if (Session["ID"] == null || !roles.tienePermiso(numeroPermiso, int.Parse(Session["ID"].ToString())))
            {

                return RedirectToAction("Index", "Home");
            }

            HojaRutaMantenedores.fecha = Formateador.fechaFormatoGuardar(post["fecha"]);
            
            //Se elimina el detalle:
            hojaRutaMantenedores.eliminar(HojaRutaMantenedores.numero);

            //Se guarda el detalle:
            string[] equipoID = Request.Form.GetValues("equipoID");
            string[] lugar = Request.Form.GetValues("lugar");
            string[] horometro = Request.Form.GetValues("horometro");
            string[] trabajoRealizado = Request.Form.GetValues("trabajoRealizado");

            for (int i = 0; i < equipoID.Length; i++)
            {
                hojaRutaMantenedores nueva = new hojaRutaMantenedores();
                nueva.fecha = HojaRutaMantenedores.fecha;
                nueva.numero = HojaRutaMantenedores.numero;
                nueva.nombreMantenedor = HojaRutaMantenedores.nombreMantenedor;
                nueva.equipoID = int.Parse(equipoID[i]);
                nueva.lugar = lugar[i];
                nueva.horometro = int.Parse(horometro[i]);
                nueva.trabajoRealizado = trabajoRealizado[i];

                db.hojaRutaMantenedores.Add(nueva);

                registrokmhm nuevoRegistro = new registrokmhm();
                nuevoRegistro.equipoID = nueva.equipoID;
                nuevoRegistro.fecha = nueva.fecha;
                nuevoRegistro.horometro = nueva.horometro;
                nuevoRegistro.kilometraje = equipos.obtenerUltimoKilometraje(nueva.equipoID);
                //db.registrokmhms.Add(nuevoRegistro);
                registrokmhm.actualizarRegistroKmHm(nuevoRegistro);
            }

            db.SaveChanges();
            return RedirectToAction("Index");
        }