public ActionResult Create([Bind(Include = "BodegasID,nombre,ubicacion")] Bodegas bodegas)
        {
            if (Session["ID"] == null || !roles.tienePermiso(1, int.Parse(Session["ID"].ToString())))
            {
                return RedirectToAction("Index", "Home");
            }
            if (ModelState.IsValid)
            {
                db.bodegas.Add(bodegas);
                
                registro Registro = new registro();
                
                Registro.fecha = DateTime.Now;
                Registro.tipoAccion = "Crear";
                Registro.tipoDato = "Bodega";
                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 Bodega: " + bodegas.nombre;
                db.Registros.Add(Registro);

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

            return View(bodegas);
        }
        public ActionResult Create([Bind(Include = "cotizacionServiciosID,numeroCotizacion,datosClienteEmpresa,datosClienteRut,datosClienteDomicilio,datosClienteSolicitadoPor,fecha,encabezado,descripcionServicio,valorTotal,nota,faena,tiempo")] cotizacionServicios cotizacionServicios, FormCollection form)
        {
            if (Session["ID"] == null || !roles.tienePermiso(numeroPermiso, int.Parse(Session["ID"].ToString())))
            {

                return RedirectToAction("Index", "Home");
            }
            cotizacionServicios.fecha = Formateador.fechaFormatoGuardar(form["fecha"].ToString());
            //cotizacionServicios.fechaEscrita = cotizacionServicios.fecha.ToString("D").Split(',')[1];
            cotizacionServicios.fechaEscrita = formatearString.fechaPalabras(cotizacionServicios.fecha);
            
            cotizacionServicios.anio = cotizacionServicios.fecha.Year;
            db.cotizacionesServicios.Add(cotizacionServicios);
            db.SaveChanges();

            //Se obtiene el detalle de categorias

            int cantidadCategorias = int.Parse(form["cantidadCategorias"].ToString());

            for (int i = 1; i <= cantidadCategorias; i++)
            {
                if (Request.Form.GetValues("categoria" + i) != null)
                {
                    string[] categoria = Request.Form.GetValues("categoria" + i);
                    string[] cargo = Request.Form.GetValues("cargoGeneral" + i);
                    string[] turno = Request.Form.GetValues("turnoGeneral" + i);
                    string[] cantidad = Request.Form.GetValues("cantidadGeneral" + i);

                    for (int j = 0; j < cargo.Length; j++)
                    {
                        detalleServicioCotizacionServicios nuevo = new detalleServicioCotizacionServicios();

                        nuevo.categoria = categoria[0];
                        nuevo.cargo = cargo[j];
                        nuevo.turno = turno[j];
                        nuevo.numeroPersonas = int.Parse(cantidad[j]);
                        nuevo.CotizacionServiciosID = cotizacionServicios.cotizacionServiciosID;

                        db.detalleServiciosCotizacionServicios.Add(nuevo);
                    }
                }
            }

            //Se obtiene el detalle de equipos

            string[] equipo = Request.Form.GetValues("equipoEquipo");
            string[] cantidadEquipo = Request.Form.GetValues("cantidadEquipo");

            for (int i = 0; i < equipo.Length; i++)
            {
                detalleEquiposCotizacionServicios nuevo = new detalleEquiposCotizacionServicios();

                nuevo.equipo=equipo[i];
                nuevo.cantidad = int.Parse(cantidadEquipo[i]);
                nuevo.CotizacionServiciosID = cotizacionServicios.cotizacionServiciosID;

                db.detalleEquiposCotizacionServicios.Add(nuevo);
            }

            registro Registro = new registro();            
            Registro.fecha = DateTime.Now;
            Registro.tipoAccion = "Crear";
            Registro.tipoDato = "cotizacionServicios";
            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 Cotizacion de Servicios: " + cotizacionServicios.numeroCotizacion;
            db.Registros.Add(Registro);

            db.SaveChanges();

            return RedirectToAction("Index");
        }
        public ActionResult DeleteConfirmed(int id)
        {
            if (Session["ID"] == null || !roles.tienePermiso(numeroPermiso, int.Parse(Session["ID"].ToString())))
            {

                return RedirectToAction("Index", "Home");
            }
            cotizacionServicios cotizacionServicios = db.cotizacionesServicios.Find(id);
            db.cotizacionesServicios.Remove(cotizacionServicios);
            
            registro Registro = new registro();            
            Registro.fecha = DateTime.Now;
            Registro.tipoAccion = "Eliminar";
            Registro.tipoDato = "cotizacionServicios";
            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+" Elimina Cotizacion de Servicios: " + cotizacionServicios.numeroCotizacion;
            db.Registros.Add(Registro);

            db.SaveChanges();
            return RedirectToAction("Index");
        }
        public ActionResult Create([Bind(Include = "solicitudDeCotizacionID,numeroSolicitudDeCotizacion,fecha,proveedor,emitidoPor,escritoPor,escritoPorCargo")] solicitudDeCotizacion solicitudDeCotizacion, FormCollection form)
        {

            if (Session["ID"] == null || !roles.tienePermiso(5, int.Parse(Session["ID"].ToString())))
            {
                return RedirectToAction("Index", "Home");
            }

            solicitudDeCotizacion.fecha = Formateador.fechaFormatoGuardar(form["fecha"].ToString());
            int solicitudDeCotizacionID = solicitudDeCotizacion.solicitudDeCotizacionID;

            
            string[] descripcionProducto = Request.Form.GetValues("descripcionProducto");
            string[] productos = Request.Form.GetValues("productos");
            string[] cantidad = Request.Form.GetValues("cantidad");
            string[] codigoInternoRentamaq = Request.Form.GetValues("codigoInternoRentamaq");
            string[] lugarDeFaena = Request.Form.GetValues("lugarDeFaena");
            string[] tipoCompra = Request.Form.GetValues("tipoCompra");


            for (int i = 0; i < descripcionProducto.Length; i++)
            {
                detalleSolicitudDeCotizacion detalle = new detalleSolicitudDeCotizacion();

                detalle.cantidad = Convert.ToDouble(cantidad[i]);
                detalle.codigoInterno = codigoInternoRentamaq[i];
                detalle.codigoProducto = productos[i];
                detalle.descripcionItem = descripcionProducto[i];
                detalle.solicitudDeCotizacionID = solicitudDeCotizacionID;
                detalle.lugarDeFaena = lugarDeFaena[i];
                detalle.tipoCompra = tipoCompra[i];
                detalle.numeroItem = i + 1;

                db.detalleSolicitudDeCotizaciones.Add(detalle);

            }
            db.solicitudesDeCotizaciones.Add(solicitudDeCotizacion);


            string IPED=(string)form["idPedido"];
            if (!IPED.Equals(""))
            {
                //"EN COTIZACION";
                int idPedido = Convert.ToInt32(IPED);
                pedidos pedidos = db.pedidos.Find(idPedido);                
                pedidos.estado = "EN COTIZACION";
                db.Entry(pedidos).State = EntityState.Modified;
            }


            registro Registro = new registro();
            Registro.fecha = DateTime.Now;
            Registro.tipoAccion = "Crear";
            Registro.tipoDato = "solicitudDeCotizacion";
            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 Solicitud de Cotizacion " + solicitudDeCotizacion.numeroSolicitudDeCotizacion;
            db.Registros.Add(Registro);

            db.SaveChanges();
            return RedirectToAction("Index");
        }
        public ActionResult Edit([Bind(Include = "ProductoID,numeroDeParte,precioUnitario,descripcion,descripcion2,stockMinimo,stockActual,unidadDeMedida,ubicacion,codigo,idBodega")] Producto producto, FormCollection form)
        {
            if (Session["ID"] == null || !roles.tienePermiso(1, int.Parse(Session["ID"].ToString())))
            {
                return RedirectToAction("Index", "Home");
            }           
            
            double stockActual = Convert.ToDouble((string)form["stockActual"].Replace(".",","));
            producto.stockActual = stockActual;
            //if (ModelState.IsValid)
            //{
                db.Entry(producto).State = EntityState.Modified;

                registro Registro = new registro();
                Registro.fecha = DateTime.Now;
                Registro.tipoAccion = "Editar";
                Registro.tipoDato = "Producto";
                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 + " Edita Producto" + producto.numeroDeParte;
                db.Registros.Add(Registro);

                db.SaveChanges();
                return RedirectToAction("Index");
            //}
            //return View(producto);
        }
        public ActionResult DeleteConfirmed(int id)
        {
            if (Session["ID"] == null || !roles.tienePermiso(numeroPermiso, int.Parse(Session["ID"].ToString())))
            {

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

            hojaRutaMantenedores.eliminar(id);
            registro Registro = new registro();            
            Registro.fecha = DateTime.Now;
            Registro.tipoAccion = "Eliminar";
            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+" Elimina Hoja de Ruta de Mantenedores id:" + id;

            db.Registros.Add(Registro);
            return RedirectToAction("Index");
        }
        public ActionResult DeleteConfirmed(int id)
        {
            if (Session["ID"] == null || !roles.tienePermiso(numeroPermiso, int.Parse(Session["ID"].ToString())))
            {
                return RedirectToAction("Index", "registrokmhm");
            }
            registrokmhm registrokmhm = db.registrokmhms.Find(id);
            db.registrokmhms.Remove(registrokmhm);

            registro Registro = new registro();
            Registro.fecha = DateTime.Now;
            Registro.tipoAccion = "Eliminar";
            Registro.tipoDato = "registrokmhm";
            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 + " Elimina registrohmkm " + registrokmhm.registrokmhmID;
            db.Registros.Add(Registro);

            db.SaveChanges();
            return RedirectToAction("Index");
        }
        public ActionResult DeleteConfirmed(int id)
        {
            if (Session["ID"] == null || !roles.tienePermiso(numeroPermiso, int.Parse(Session["ID"].ToString())))
            {
                return RedirectToAction("Index", "mantencionPreventiva");
            }

            mantencionPreventiva mantencionPreventiva = db.mantencionPreventivas.Find(id);
            db.mantencionPreventivas.Remove(mantencionPreventiva);
            registro Registro = new registro();
            Registro.fecha = DateTime.Now;
            Registro.tipoAccion = "Eliminar";
            Registro.tipoDato = "mantencionPreventiva";
            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 + " Elimina mantencion Preventiva " + mantencionPreventiva.kilometrajeProximaMantencion + " de Equipo " + mantencionPreventiva.equipoID;

            db.SaveChanges();
            return RedirectToAction("Index");
        }
        public ActionResult Edit([Bind(Include = "ordenDeTrabajoGeneralID,fechaOTAbierta,fechaOTCerrada,operador,faena,turno,idEquipo,horometro,kilometraje,tipoMantenimientoARealizar,horasMantenimientoNivelCombustible,horasMantenimientoFecha,horasMantenimientoHRInicio,horasMantenimientoHRTermino,horasMantenimientoHRSDetenido,trabajoRealizar,conclusionesTrabajoRealizado,estadoEquipo,trabajosPendientesPorRealizar,fechaTrabajosPendientesPorRealizar,numeroFolio,area,nombreMantenedor,nombreOperador,nombreSupervisor,tipoOTSegunMantenimiento, IDOTAnterior, verificarTrabajoPendiente")] ordenDeTrabajoGeneral ordenDeTrabajoGeneral, 
            FormCollection form, HttpPostedFileBase file)
        {
            if (Session["ID"] == null || !roles.tienePermiso(numeroPermiso, int.Parse(Session["ID"].ToString())))
            {
                return RedirectToAction("Index", "Home");
            }
            int idOT = ordenDeTrabajoGeneral.ordenDeTrabajoGeneralID;

            var ejecutantesTrabajo = db.ejecutanteTrabajoOTs.Where(s => s.ordenDeTrabajoGeneralID == idOT).ToList();
            var materialesRequeridos = db.materialesRequeridosOTs.Where(s => s.ordenDeTrabajoGeneralID == idOT).ToList();
            var materialesUtilizados = db.materialesUtilizadosOTs.Where(s => s.ordenDeTrabajoGeneralID == idOT).ToList();
            pedidos pedido = db.pedidos.SingleOrDefault(s => s.idOT==idOT);
            var detallesPedidos = db.detallePedidos.Where(s => s.pedidosID == pedido.pedidosID);


            ordenDeTrabajoGeneral.fechaOTAbierta = Formateador.fechaFormatoGuardar((string)form["fechaOTAbierta"]);
            ordenDeTrabajoGeneral.fechaOTCerrada = Formateador.fechaFormatoGuardar((string)form["fechaOTCerrada"]);
            ordenDeTrabajoGeneral.horasMantenimientoFecha = Formateador.fechaFormatoGuardar((string)form["horasMantenimientoFecha"]);
            ordenDeTrabajoGeneral.fechaTrabajosPendientesPorRealizar = Formateador.fechaFormatoGuardar((string)form["fechaTrabajosPendientesPorRealizar"]);
            ordenDeTrabajoGeneral.horasMantenimientoHRSDetenido = double.Parse((string)form["horasMantenimientoHRSDetenido"].Replace(',', '.'));
               
                

            if (!Object.ReferenceEquals(null, pedido))
            {
                foreach (var detallePed in detallesPedidos)
                {
                    db.detallePedidos.Remove(detallePed);
                }
            }
            foreach (var ejecutante in ejecutantesTrabajo)
            {
                db.ejecutanteTrabajoOTs.Remove(ejecutante);
            }

            foreach (var matReq in materialesRequeridos)
            {
                db.materialesRequeridosOTs.Remove(matReq);
            }

            foreach (var matUT in materialesUtilizados)
            {
                db.materialesUtilizadosOTs.Remove(matUT);
            }


            string[] ejecutantesDelTrabajo = Request.Form.GetValues("ejecutanteDelTrabajo");
            string[] cargo = Request.Form.GetValues("cargo");
            string[] HH = Request.Form.GetValues("HH");
            for (int i = 0; i < ejecutantesDelTrabajo.Length; i++)
            {
                ejecutanteTrabajoOT ejecutanteTrabajoOT = new ejecutanteTrabajoOT();
                ejecutanteTrabajoOT.ordenDeTrabajoGeneralID = idOT;
                ejecutanteTrabajoOT.nombreTrabajador = ejecutantesDelTrabajo[i];
                ejecutanteTrabajoOT.cargo = cargo[i];
                if (HH[i].Equals(""))
                {
                    ejecutanteTrabajoOT.HH = 0;
                }
                else
                {
                    ejecutanteTrabajoOT.HH = Convert.ToDouble(HH[i]);
                } 
                
                db.ejecutanteTrabajoOTs.Add(ejecutanteTrabajoOT);
            }


            string[] materialUtilizado = Request.Form.GetValues("materialUtilizado");
            string[] matUtcantidad = Request.Form.GetValues("matUtcantidad");
            string[] matUtNumeroParte = Request.Form.GetValues("matUtNumeroParte");


            var maestrosExistentes = db.Maestros.Where(s => s.idOT == idOT).ToList();
            foreach (Maestro maestroExist in maestrosExistentes) {
                bool encontrado = false;
                for (int i = 0; i < materialUtilizado.Length; i++)
                {
                    if (!materialUtilizado[i].Equals(""))
                    {
                        materialesUtilizadosOT materialesUtilizadosOT = new materialesUtilizadosOT();
                        materialesUtilizadosOT.ordenDeTrabajoGeneralID = idOT;
                        materialesUtilizadosOT.nombreMaterial = materialUtilizado[i];
                        materialesUtilizadosOT.cantidad = Convert.ToDouble(matUtcantidad[i]);
                        materialesUtilizadosOT.materialID = Convert.ToInt32(matUtNumeroParte[i]);
                        materialesUtilizadosOT.precioActual = db.Productos.Find(Convert.ToInt32(matUtNumeroParte[i])).precioUnitario;


                        if (int.Parse(maestroExist.ProductoID) == Convert.ToInt32(matUtNumeroParte[i]))
                        {
                            encontrado = true;
                            double diferencia = maestroExist.cantidadSaliente - materialesUtilizadosOT.cantidad;
                            if (diferencia != 0)
                            {
                                maestroExist.cantidadSaliente = materialesUtilizadosOT.cantidad;
                                Producto producto = db.Productos.Find(materialesUtilizadosOT.materialID);
                                producto.stockActual = producto.stockActual + diferencia;
                                db.Entry(producto).State = EntityState.Modified;
                            }


                        }
                    }

                }
                if (encontrado == false) {
                    Producto producto = db.Productos.Find(Convert.ToInt32(maestroExist.ProductoID));
                    producto.stockActual = producto.stockActual + maestroExist.cantidadSaliente;
                    db.Entry(producto).State = EntityState.Modified;
                    db.Maestros.Remove(maestroExist);
                    
                }
            }

            if (!materialUtilizado[0].Equals(""))
            {
                for (int i = 0; i < materialUtilizado.Length; i++)
                {
                    materialesUtilizadosOT materialesUtilizadosOT = new materialesUtilizadosOT();
                    materialesUtilizadosOT.ordenDeTrabajoGeneralID = idOT;
                    materialesUtilizadosOT.nombreMaterial = materialUtilizado[i];
                    materialesUtilizadosOT.cantidad = Convert.ToDouble(matUtcantidad[i]);
                    materialesUtilizadosOT.materialID = Convert.ToInt32(matUtNumeroParte[i]);
                    materialesUtilizadosOT.precioActual = db.Productos.Find(Convert.ToInt32(matUtNumeroParte[i])).precioUnitario;
                    db.materialesUtilizadosOTs.Add(materialesUtilizadosOT);
                    bool encontrado=false;
                    foreach (Maestro maestroExist in maestrosExistentes) {
                        if (int.Parse(maestroExist.ProductoID) == materialesUtilizadosOT.materialID) {
                            encontrado = true;
                        }
                    }
                    if(encontrado==false){
                        Maestro maestro = new Maestro();
                        maestro.afiEquipo = db.Equipos.Find(int.Parse(ordenDeTrabajoGeneral.idEquipo)).numeroAFI;
                        maestro.fecha = ordenDeTrabajoGeneral.horasMantenimientoFecha;
                        maestro.descripcionProducto = materialUtilizado[i];
                        maestro.cantidadEntrante = 0;
                        maestro.cantidadSaliente = Convert.ToDouble(matUtcantidad[i]);
                        maestro.idOT = idOT;
                        maestro.ProductoID = matUtNumeroParte[i];
                        maestro.observaciones="Agregada Automaticamente de OT:"+ordenDeTrabajoGeneral.numeroFolio;

                        Producto prod = db.Productos.Find(Convert.ToInt32(maestro.ProductoID));
                        prod.stockActual = prod.stockActual - maestro.cantidadSaliente;
                        db.Entry(prod).State = EntityState.Modified;
                        db.Maestros.Add(maestro);
                        db.SaveChanges();
                    }
                    


                }
            }
            //save

            string[] materialRequerido = Request.Form.GetValues("materialRequerido");
            string[] matReqCantidad = Request.Form.GetValues("matReqCantidad");
            string[] matReqNumeroParte = Request.Form.GetValues("matReqNumeroParte");
            if (!materialRequerido[0].Equals(""))
            {
                if (Object.ReferenceEquals(null, pedido))
                {
                    pedido = new pedidos();                    
                    pedido.fecha = Formateador.formatearFechaCompleta(DateTime.Now);
                    pedido.estado = "NUEVA";
                    pedido.nota = "Agregado Automaticamente desde OT:" + ordenDeTrabajoGeneral.numeroFolio;
                    pedido.idOT = idOT;
                    db.pedidos.Add(pedido);
                    db.SaveChanges();
                    
                }
                for (int i = 0; i < materialRequerido.Length; i++)
                {
                    materialesRequeridosOT materialesRequeridosOT = new materialesRequeridosOT();
                    materialesRequeridosOT.ordenDeTrabajoGeneralID = idOT;
                    materialesRequeridosOT.nombreMaterial = materialRequerido[i];
                    materialesRequeridosOT.cantidad = Convert.ToDouble(matReqCantidad[i]);
                    materialesRequeridosOT.materialID = Convert.ToInt32(matReqNumeroParte[i]);
                    materialesRequeridosOT.precioActual = db.Productos.Find(Convert.ToInt32(matReqNumeroParte[i])).precioUnitario;
                    db.materialesRequeridosOTs.Add(materialesRequeridosOT);


                    detallePedido detallePedido = new detallePedido();
                    detallePedido.cantidad = Convert.ToDouble(materialesRequeridosOT.cantidad);
                    detallePedido.descripcion = materialesRequeridosOT.nombreMaterial;
                    detallePedido.numeroParte = db.Productos.Find(materialesRequeridosOT.materialID).numeroDeParte;
                    detallePedido.pedidosID = pedido.pedidosID;
                    detallePedido.tipoPedido = "DIRECTA";
                    detallePedido.detalleTipoPedido = db.Equipos.Find(Convert.ToInt32(ordenDeTrabajoGeneral.idEquipo)).numeroAFI.ToString();
                    db.detallePedidos.Add(detallePedido);
                }
            }
            //if (ModelState.IsValid)
            //{
            equipos equipo = equipos.ObtenerConTipo(Convert.ToInt32(ordenDeTrabajoGeneral.idEquipo));
            ordenDeTrabajoGeneral.patenteEquipo = equipo.patenteEquipo;
            ordenDeTrabajoGeneral.tipoEquipo = equipo.tipoEquipo;                  
            
            db.Entry(ordenDeTrabajoGeneral).State = EntityState.Modified;
               

                crearCarpetaSiNoExiste();
                string extImage = Convert.ToString(Request.Files["file"].ContentType);
                string[] infoImage = extImage.Split('/');
                string fileExtension = System.IO.Path.GetExtension(Request.Files["file"].FileName);
                string fileLocation = Server.MapPath("~/Images/OrdenTrabajo/") + ordenDeTrabajoGeneral.numeroFolio + "." + infoImage[1];
                if (!fileExtension.Equals(""))
                {
                    Request.Files["file"].SaveAs(fileLocation);
                    ordenDeTrabajoGeneral.rutaImagen = "Images/OrdenTrabajo/" + ordenDeTrabajoGeneral.numeroFolio + "." + infoImage[1];

                }
                registrokmhm registro = new registrokmhm();
                registro.equipoID = Convert.ToInt32(ordenDeTrabajoGeneral.idEquipo);
                registro.fecha = Formateador.fechaFormatoGuardar((string)form["fechaOTAbierta"]);
                registro.horometro = ordenDeTrabajoGeneral.horometro;
                registro.kilometraje = ordenDeTrabajoGeneral.kilometraje;
                //db.registrokmhms.Add(registro);
                registrokmhm.actualizarRegistroKmHm(registro);


                mantencionPreventiva mantecionPreventiva = new mantencionPreventiva();
                mantecionPreventiva.equipoID = Convert.ToInt32(ordenDeTrabajoGeneral.idEquipo);
                mantecionPreventiva.fecha = ordenDeTrabajoGeneral.horasMantenimientoFecha;
                mantecionPreventiva.horometroActual = ordenDeTrabajoGeneral.horometro;
                mantecionPreventiva.kilometrajeActual = ordenDeTrabajoGeneral.kilometraje;

                if (ordenDeTrabajoGeneral.horometro == 0)
                {
                    mantecionPreventiva.horometroProximaMantencion = 0;
                }
                else
                {
                    mantecionPreventiva.horometroProximaMantencion = ordenDeTrabajoGeneral.horometro + 400;
                }

                if (ordenDeTrabajoGeneral.kilometraje == 0)
                {
                    mantecionPreventiva.kilometrajeProximaMantencion = 0;
                }
                else
                {
                    mantecionPreventiva.kilometrajeProximaMantencion = ordenDeTrabajoGeneral.kilometraje + 10000;
                }

                mantecionPreventiva.nota = "Agregado Automaticamente desde OT N°:" + ordenDeTrabajoGeneral.numeroFolio;
                RentaMaq.Models.mantencionPreventiva.reemplazar(mantecionPreventiva);

                registro Registro = new registro();
                Registro.fecha = DateTime.Now;
                Registro.tipoAccion = "Editar";
                Registro.tipoDato = "ordenDeTrabajoGeneral";
                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 + " Edita orden de trabajo general " + ordenDeTrabajoGeneral.numeroFolio;
                db.Registros.Add(Registro);

                db.SaveChanges();
                return RedirectToAction("Index");          
        }
        public ActionResult Create([Bind(Include = "chequeoPreventivoID,codigoEquipo,numeroChequeoPreventivo,fecha,hora,observacionesGenerales,nivelCombustible,nombreResponsableEntrega,nombreResponsableRecepcion,refrigerante,aceiteMotor,sistemaRefrigeracion,sistemaHidraulico,codigosTestigos,frenoServicio,frenoEstacionamiento,frenoEmergencia,direccion,correaVentiladores,lubricacionGeneral,fugasAguaAceite,elementoDesgaste,cadenaZapatillaRodillo,baldePala,pasadores,neumaticos,pernos,manguerasOrrings,cilindrosHidraulicos,baterias,instalacionElectrica,alzavidrios,asientos,cinturonSeguridad,aireAcondicionado,limpiaParabrisas,vidrios,balizas,cintasReflextantes,cunas,cortaCorriente,bocina,lucesPrincipales,intermitentes,alarmaDeRetroceso,pertiga,extintor,botiquin,neumaticosDeRespuesto")] chequeoPreventivo chequeoPreventivo, FormCollection form)
        {
            if (Session["ID"] == null || !roles.tienePermiso(numeroPermiso, int.Parse(Session["ID"].ToString())))
            {

                return RedirectToAction("Index", "Home");
            }
            chequeoPreventivo.fecha = Formateador.fechaFormatoGuardar((string)form["fecha"]);
            //if (ModelState.IsValid)
            //{   
                db.chequeoPreventivos.Add(chequeoPreventivo);

                registro Registro = new registro();                
                Registro.fecha = DateTime.Now;
                Registro.tipoAccion = "Crear";
                Registro.tipoDato = "chequeoPreventivo";
                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 Chequeo Preventivo de Equipo " + chequeoPreventivo.codigoEquipo;
                db.Registros.Add(Registro);

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

            //return View(chequeoPreventivo);
        }
        public ActionResult DeleteConfirmed(int id)
        {
            if (Session["ID"] == null || !roles.tienePermiso(numeroPermiso, int.Parse(Session["ID"].ToString())))
            {

                return RedirectToAction("Index", "Home");
            }
            chequeoPreventivo chequeoPreventivo = db.chequeoPreventivos.Find(id);
            db.chequeoPreventivos.Remove(chequeoPreventivo);

            registro Registro = new registro();
            Registro.fecha = DateTime.Now;
            Registro.tipoAccion = "Eliminar";
            Registro.tipoDato = "chequeoPreventivo";
            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+" elimina Chequeo Preventivo de Equipo " + chequeoPreventivo.codigoEquipo;           
            db.Registros.Add(Registro);
            db.SaveChanges();
            return RedirectToAction("Index");
        }
        public ActionResult Cancelar(FormCollection form)
        {
            if (Session["ID"] == null || !roles.tienePermiso(numeroPermiso, int.Parse(Session["ID"].ToString())))
            {

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

            int id = int.Parse(form["ordenDeCompraArriendoEquipoID"].ToString());
            ordenDeCompraArriendoEquipo ordenCompraArriendoEquipo = db.ordenDeCompraArriendoEquipoes.Find(id);
            ordenCompraArriendoEquipo.estado = "CANCELAR";
            db.Entry(ordenCompraArriendoEquipo).State = EntityState.Modified;

            registro Registro = new registro();
            Registro.fecha = DateTime.Now;
            Registro.tipoAccion = "Cancelar";
            Registro.tipoDato = "ordenDeCompraArriendoEquipo";
            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 + " Cancela orden de compra de arriendo de equipos " + ordenCompraArriendoEquipo.numeroOrdenCompraArriendoEquipo;
            db.Registros.Add(Registro);

            db.SaveChanges();

            return RedirectToAction("Index");
        }
        public ActionResult DeleteConfirmed(int id)
        {

            if (Session["ID"] == null || !roles.tienePermiso(numeroPermiso, int.Parse(Session["ID"].ToString())))
            {

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

            var detalles = db.detalleOrdenCompraArriendoEquipos.Where(u => u.ordenDeCompraArriendoEquipoID == id);

            foreach (var detalle in detalles)
            {
                db.detalleOrdenCompraArriendoEquipos.Remove(detalle);
            }
            db.SaveChanges();

            ordenDeCompraArriendoEquipo ordenDeCompraArriendoEquipo = db.ordenDeCompraArriendoEquipoes.Find(id);
            db.ordenDeCompraArriendoEquipoes.Remove(ordenDeCompraArriendoEquipo);

            registro Registro = new registro();
            Registro.fecha = DateTime.Now;
            Registro.tipoAccion = "Eliminar";
            Registro.tipoDato = "ordenDeCompraArriendoEquipo";
            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 + " Elimino orden de compra de arriendo de equipos " + ordenDeCompraArriendoEquipo.numeroOrdenCompraArriendoEquipo;
            db.Registros.Add(Registro);

            db.SaveChanges();
            return RedirectToAction("Index");
        }
        public ActionResult Edit([Bind(Include = "ordenDeCompraArriendoEquipoID,numeroOrdenCompraArriendoEquipo,ProveedorID,estado,anio,texto1,texto2,plazoEntrega,personaRetira,formaPago,fecha,tipoHorasMinimas,noIncluye")] ordenDeCompraArriendoEquipo ordenDeCompraArriendoEquipo, FormCollection form)
        {

            if (Session["ID"] == null || !roles.tienePermiso(numeroPermiso, int.Parse(Session["ID"].ToString())))
            {

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

            int ordenDeCompraArriendoEquipoID = ordenDeCompraArriendoEquipo.ordenDeCompraArriendoEquipoID;
            var detalles = db.detalleOrdenCompraArriendoEquipos.Where(u => u.ordenDeCompraArriendoEquipoID == ordenDeCompraArriendoEquipoID);

            foreach (var detalle in detalles)
            {
                db.detalleOrdenCompraArriendoEquipos.Remove(detalle);
            }
            //db.SaveChanges();

            string[] descripcionProducto = Request.Form.GetValues("descripcionProducto");
            string[] valorHora = Request.Form.GetValues("valorHora");
            string[] horasMinimasMensuales = Request.Form.GetValues("horasMinimasMensuales");
            string[] duracionDelArriendo = Request.Form.GetValues("duracionDelArriendo");
            string[] lugarFaena = Request.Form.GetValues("lugarFaena");
            string[] condicionesPago = Request.Form.GetValues("condicionesPago");


            for (int i = 0; i < descripcionProducto.Length; i++)
            {
                detalleOrdenDeCompraArriendoEquipo detalle = new detalleOrdenDeCompraArriendoEquipo();

                detalle.ordenDeCompraArriendoEquipoID = ordenDeCompraArriendoEquipoID;
                detalle.horasMinimasMensuales = Convert.ToInt32(horasMinimasMensuales[i]);
                detalle.condicionesDePago = condicionesPago[i];
                detalle.descripcionEquipo = descripcionProducto[i];
                detalle.duracionArriendo = duracionDelArriendo[i];
                detalle.lugarDeFaena = lugarFaena[i];
                detalle.numeroItem = i + 1;
                detalle.valorHora = valorHora[i];

                db.detalleOrdenCompraArriendoEquipos.Add(detalle);

            }

            //EDITAR FECHAS
            if (!string.IsNullOrEmpty(form["plazoEntrega"]))
            {
                ordenDeCompraArriendoEquipo.plazoEntrega = Formateador.fechaFormatoGuardar(form["plazoEntrega"]);
            }
            else
            {
                ordenDeCompraArriendoEquipo.plazoEntrega = new DateTime(2000, 1, 1);
            }
            ordenDeCompraArriendoEquipo.fecha = Formateador.fechaFormatoGuardar(form["fecha"].ToString());
            ordenDeCompraArriendoEquipo.fechaLlegadaReal = new DateTime(2000, 1, 1);

            ordenDeCompraArriendoEquipo.dirigidoA = 
                db.Proveedores.Find(ordenDeCompraArriendoEquipo.ProveedorID).personaContacto1;

            //if (ModelState.IsValid)
            //{
                db.Entry(ordenDeCompraArriendoEquipo).State = EntityState.Modified;

                registro Registro = new registro();
                Registro.fecha = DateTime.Now;
                Registro.tipoAccion = "Editar";
                Registro.tipoDato = "ordenDeCompraArriendoEquipo";
                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 + " Edita orden de compra de arriendo de equipos " + ordenDeCompraArriendoEquipo.numeroOrdenCompraArriendoEquipo;
                db.Registros.Add(Registro);

                db.SaveChanges();
                return RedirectToAction("Index");
            //}
            //return View(ordenDeCompraArriendoEquipo);
        }
        public ActionResult DeleteConfirmed(int id)
        {
            if (Session["ID"] == null || !roles.tienePermiso(1, int.Parse(Session["ID"].ToString())))
            {
                return RedirectToAction("Index", "Home");
            }
            Producto producto = db.Productos.Find(id);            

            string productoID = producto.ProductoID.ToString();

            db.Maestros.RemoveRange(db.Maestros.Where(s => s.ProductoID == productoID));

            db.Productos.Remove(producto);

            registro Registro = new registro();
            Registro.fecha = DateTime.Now;
            Registro.tipoAccion = "Eliminar";
            Registro.tipoDato = "Producto";
            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 + " Elimina nuevo Producto" + producto.numeroDeParte;
            db.Registros.Add(Registro);

            db.SaveChanges();
            return RedirectToAction("Index");
        }
        public ActionResult DeleteConfirmed(int id)
        {
            if (Session["ID"] == null || !roles.tienePermiso(1, int.Parse(Session["ID"].ToString())))
            {
                return RedirectToAction("Index", "Home");
            }
            Bodegas bodegas = db.bodegas.Find(id);
            db.bodegas.Remove(bodegas);

            registro Registro = new registro();           
            Registro.fecha = DateTime.Now;
            Registro.tipoAccion = "Eliminar";
            Registro.tipoDato = "Bodega";
            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+" Elimina Bodega: " + bodegas.nombre;
            db.Registros.Add(Registro);


            db.SaveChanges();
            return RedirectToAction("Index");
        }
        public ActionResult DeleteConfirmed(int id)
        {
            if (Session["ID"] == null || !roles.tienePermiso(numeroPermiso, int.Parse(Session["ID"].ToString())))
            {
                return RedirectToAction("Index", "Home");
            }
            ordenDeTrabajoGeneral ordenDeTrabajoGeneral = db.ordenDeTrabajoGenerals.Find(id);
            db.ordenDeTrabajoGenerals.Remove(ordenDeTrabajoGeneral);            

            var ejecutantesTrabajo = db.ejecutanteTrabajoOTs.Where(s => s.ordenDeTrabajoGeneralID == id).ToList();
            var materialesRequeridos = db.materialesRequeridosOTs.Where(s => s.ordenDeTrabajoGeneralID == id).ToList();
            var materialesUtilizados = db.materialesUtilizadosOTs.Where(s => s.ordenDeTrabajoGeneralID == id).ToList();

            foreach (var ejecutante in ejecutantesTrabajo)
            {
                db.ejecutanteTrabajoOTs.Remove(ejecutante);
            }

            foreach (var matReq in materialesRequeridos)
            {
                db.materialesRequeridosOTs.Remove(matReq);
            }

            foreach (var matUT in materialesUtilizados)
            {
                db.materialesUtilizadosOTs.Remove(matUT);
            }


            if (!Object.ReferenceEquals(ordenDeTrabajoGeneral.rutaImagen,null)) {
                string rutaImagen = Server.MapPath("~/") + ordenDeTrabajoGeneral.rutaImagen;
                System.IO.File.Delete(rutaImagen);
            }

            registro Registro = new registro();
            Registro.fecha = DateTime.Now;
            Registro.tipoAccion = "Eliminar";
            Registro.tipoDato = "ordenDeTrabajoGeneral";
            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 + " Elimina orden de trabajo general " + ordenDeTrabajoGeneral.numeroFolio;
            db.Registros.Add(Registro);
            
            db.SaveChanges();
            
            return RedirectToAction("Index");
        }
        public ActionResult DeleteConfirmed(int id)
        {
            if (Session["ID"] == null || !roles.tienePermiso(numeroPermiso, int.Parse(Session["ID"].ToString())))
            {

                return RedirectToAction("Index", "Home");
            }
            cotizacionArriendoEquipo cotizacionArriendoEquipo = db.cotizacionArriendoEquipos.Find(id);

            var detallesCotizacion = db.detalleCotizacionArriendoEquipo.Where(u => u.cotizacionArriendoEquipoID == id);

            foreach (var detalleCot in detallesCotizacion)
            {
                db.detalleCotizacionArriendoEquipo.Remove(detalleCot);
            }
            db.cotizacionArriendoEquipos.Remove(cotizacionArriendoEquipo);

            registro Registro = new registro();            
            Registro.fecha = DateTime.Now;
            Registro.tipoAccion = "Elimina";
            Registro.tipoDato = "cotizacionArriendoEquipos";
            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+" Elimina Cotizacion de arriendo de equipos: " + cotizacionArriendoEquipo.numeroCotizacionArriendo;
            db.Registros.Add(Registro);


            db.SaveChanges();
            return RedirectToAction("Index");
        }
        public ActionResult Create([Bind(Include = "mantencionPreventivaID,equipoID,fecha,horometroActual,kilometrajeActual,horometroProximaMantencion,kilometrajeProximaMantencion,nota")] mantencionPreventiva mantencionPreventiva,
            FormCollection post)
        {
            if (Session["ID"] == null || !roles.tienePermiso(numeroPermiso, int.Parse(Session["ID"].ToString())))
            {
                return RedirectToAction("Index", "mantencionPreventiva");
            }

            mantencionPreventiva.fecha = Formateador.fechaFormatoGuardar(post["fecha"]);

            db.mantencionPreventivas.Add(mantencionPreventiva);

            registrokmhm nuevo = new registrokmhm();
            nuevo.equipoID = mantencionPreventiva.equipoID;
            nuevo.fecha = mantencionPreventiva.fecha;
            nuevo.horometro = mantencionPreventiva.horometroActual;
            nuevo.kilometraje = mantencionPreventiva.kilometrajeActual;

            //db.registrokmhms.Add(nuevo);
            registrokmhm.actualizarRegistroKmHm(nuevo.equipoID, nuevo.fecha, nuevo.horometro, nuevo.kilometraje);
            registro Registro = new registro();
            Registro.fecha = DateTime.Now;
            Registro.tipoAccion = "Crear";
            Registro.tipoDato = "mantencionPreventiva";
            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 mantencion Preventiva "+mantencionPreventiva.kilometrajeProximaMantencion+" de Equipo "+mantencionPreventiva.equipoID;

            db.SaveChanges();
            return RedirectToAction("Index");
        }
        public ActionResult Create([Bind(Include = "cotizacionArriendoEquipoID,numeroCotizacionArriendo,tipoCotizacion,referencia,fecha,datosClienteEmpresa,datosClienteRut,datosClienteDireccion,datosClienteFecha,datosClienteSolicitado,datosClienteEmail,encabezado,incluye,noIncluye,tiempoArriendo,faena,tipoHorasMinimas")] cotizacionArriendoEquipo cotizacionArriendoEquipo, FormCollection form)
        {
            if (Session["ID"] == null || !roles.tienePermiso(numeroPermiso, int.Parse(Session["ID"].ToString())))
            {

                return RedirectToAction("Index", "Home");
            }
            string[] detalle = Request.Form.GetValues("detalle");
            string[] horasMinimas = Request.Form.GetValues("horasMinimas");
            string[] valorHoraMaquina = Request.Form.GetValues("valorHoraMaquina");           

            cotizacionArriendoEquipo.fecha = Formateador.fechaFormatoGuardar(form["fecha"].ToString());
            cotizacionArriendoEquipo.datosClienteFecha = Formateador.fechaFormatoGuardar(form["datosClienteFecha"].ToString());

            for (int i = 0; i < detalle.Length; i++)
            {
                detalleCotizacionArriendoEquipo detalleCotizacion = new detalleCotizacionArriendoEquipo();
                detalleCotizacion.horasMinimas = Convert.ToInt32(horasMinimas[i]);
                detalleCotizacion.detalle = detalle[i];
                detalleCotizacion.valorHoraMaquina = valorHoraMaquina[i];               
                db.detalleCotizacionArriendoEquipo.Add(detalleCotizacion);
            }
          
            if (ModelState.IsValid)
            {
                db.cotizacionArriendoEquipos.Add(cotizacionArriendoEquipo);

                registro Registro = new registro();                
                Registro.fecha = DateTime.Now;
                Registro.tipoAccion = "Crear";
                Registro.tipoDato = "cotizacionArriendoEquipos";
                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 Cotizacion de arriendo de equipos: " + cotizacionArriendoEquipo.numeroCotizacionArriendo;
                db.Registros.Add(Registro);

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

            return View(cotizacionArriendoEquipo);
        }
        public ActionResult Create([Bind(Include = "registrokmhmID,equipoID,kilometraje,horometro,fecha")] registrokmhm registrokmhm,
            FormCollection post)
        {
            if (Session["ID"] == null || !roles.tienePermiso(numeroPermiso, int.Parse(Session["ID"].ToString())))
            {
                return RedirectToAction("Index", "registrokmhm");
            }
            registrokmhm.fecha = Formateador.fechaFormatoGuardar(post["fecha"]);
            db.registrokmhms.Add(registrokmhm);

            registro Registro = new registro();
            Registro.fecha = DateTime.Now;
            Registro.tipoAccion = "Crear";
            Registro.tipoDato = "registrokmhm";
            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 nuevo registrohmkm" + registrokmhm.registrokmhmID;
            db.Registros.Add(Registro);

            db.SaveChanges();
            return RedirectToAction("Index");
        }
        public ActionResult DeleteConfirmed(int id)
        {
            if (Session["ID"] == null || !roles.tienePermiso(5, int.Parse(Session["ID"].ToString())))
            {
                return RedirectToAction("Index", "Home");
            }
            solicitudDeCotizacion solicitudDeCotizacion = db.solicitudesDeCotizaciones.Find(id);
            db.solicitudesDeCotizaciones.Remove(solicitudDeCotizacion);
            
            var detalles = db.detalleSolicitudDeCotizaciones.Where(u => u.solicitudDeCotizacionID == id);
            foreach (var detalle in detalles)
            {
                db.detalleSolicitudDeCotizaciones.Remove(detalle);
            }

            registro Registro = new registro();
            Registro.fecha = DateTime.Now;
            Registro.tipoAccion = "Eliminar";
            Registro.tipoDato = "solicitudDeCotizacion";
            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 + " Elimina Solicitud de Cotizacion " + solicitudDeCotizacion.numeroSolicitudDeCotizacion;
            db.Registros.Add(Registro);

            db.SaveChanges();
            return RedirectToAction("Index");
        }
        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 Create([Bind(Include = "ProductoID,numeroDeParte,precioUnitario,descripcion,descripcion2,stockMinimo,unidadDeMedida,ubicacion,codigo,idBodega")] Producto producto)
        {
            if (Session["ID"] == null || !roles.tienePermiso(1, int.Parse(Session["ID"].ToString())))
            {
                return RedirectToAction("Index", "Home");
            }
            if (ModelState.IsValid)
            {
                producto.stockActual = 0;
                db.Productos.Add(producto);

                registro Registro = new registro();
                Registro.fecha = DateTime.Now;
                Registro.tipoAccion = "Crear";
                Registro.tipoDato = "Producto";
                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 nuevo Producto"+ producto.numeroDeParte;
                db.Registros.Add(Registro);


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

            return View(producto);
        }