public ActionResult CreateEdit(RegistroActividad registro)
        {
            if (ModelState.IsValid && ValidarRegistro(registro))
            {
                if (registro.IdRegistro == 0)
                {
                    registro.Activo = true;
                    db.RegistroActividad.Add(registro);
                    db.SaveChanges();
                    return(RedirectToAction("CreateEdit", new { id = registro.IdRegistro }));
                }
                else
                {
                    RegistroActividad reg = db.RegistroActividad.First(x => x.IdRegistro == registro.IdRegistro);

                    reg.Idvehiculo = registro.Idvehiculo;
                    reg.IdChofer   = registro.IdChofer;
                    reg.Fecha      = registro.Fecha;
                    reg.KmInicial  = registro.KmInicial;
                    reg.KmFinal    = registro.KmFinal;

                    db.SaveChanges();
                    return(RedirectToAction("CreateEdit", new { id = reg.IdRegistro }));
                }
            }
            Usuario usu = (Usuario)Session["Usuario"];

            ViewBag.IdChofer   = new SelectList(db.Usuario.Where(x => x.IdUsuario == usu.IdUsuario), "IdUsuario", "Nombres", registro.IdChofer);
            ViewBag.IdVehiculo = new SelectList(db.VehiculoChofer.Where(x => x.IdChofer == usu.IdUsuario && x.Activo == true).Select(x => new { idVehiculo = x.Vehiculo.idVehiculo, placa = x.Vehiculo.placaLetras + x.Vehiculo.placaNumeros }), "idVehiculo", "placa", registro.Idvehiculo);
            return(View(registro));

            //return RedirectToAction("Index");
        }
        public ActionResult CreateEdit(int?id = null)
        {
            if (Session["Notificacion"] != null)
            {
                ViewBag.Notificacion    = Session["Notificacion"];
                Session["Notificacion"] = null;
            }

            Usuario usu = (Usuario)Session["Usuario"];

            if (id == null)
            {
                ViewBag.IdChofer   = new SelectList(db.Usuario.Where(x => x.IdUsuario == usu.IdUsuario), "IdUsuario", "Nombres");
                ViewBag.IdVehiculo = new SelectList(db.VehiculoChofer.Where(x => x.IdChofer == usu.IdUsuario && x.Activo == true).Select(x => new { idVehiculo = x.Vehiculo.idVehiculo, placa = x.Vehiculo.placaLetras + x.Vehiculo.placaNumeros }), "idVehiculo", "placa");
                RegistroActividad nuevo = new RegistroActividad();
                nuevo.Fecha = DateTime.Today;

                return(View(nuevo));
            }
            else
            {
                RegistroActividad registroActividad = db.RegistroActividad.Where(x => x.IdRegistro == id).Include(x => x.RegistroActividadDetalle).First();
                if (registroActividad == null)
                {
                    return(HttpNotFound());
                }
                ViewBag.IdChofer   = new SelectList(db.Usuario.Where(x => x.IdUsuario == usu.IdUsuario), "IdUsuario", "Nombres", registroActividad.IdChofer);
                ViewBag.IdVehiculo = new SelectList(db.VehiculoChofer.Where(x => x.IdChofer == usu.IdUsuario && x.Activo == true).Select(x => new { idVehiculo = x.Vehiculo.idVehiculo, placa = x.Vehiculo.placaLetras + x.Vehiculo.placaNumeros }), "idVehiculo", "placa", registroActividad.Idvehiculo);
                return(View(registroActividad));
            }
        }
        public async Task <ActionResult> DeleteConfirmed(int id)
        {
            RegistroActividad registroActividad = await db.RegistroActividad.FindAsync(id);

            //db.RegistroActividad.Remove(registroActividad);
            registroActividad.Activo = false;
            await db.SaveChangesAsync();

            return(RedirectToAction("Index"));
        }
        public async Task <ActionResult> Delete(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            RegistroActividad registroActividad = await db.RegistroActividad.FindAsync(id);

            if (registroActividad == null)
            {
                return(HttpNotFound());
            }
            return(View(registroActividad));
        }
        bool ValidarRegistro(RegistroActividad registro)
        {
            bool resp = false;

            if (registro.IdRegistro == 0)
            {
                resp = db.RegistroActividad
                       .Where(x => x.IdChofer == registro.IdChofer &&
                              x.Idvehiculo == registro.Idvehiculo &&
                              x.Fecha == registro.Fecha &&
                              x.Activo == true
                              ).Any();
            }
            else
            {
                resp = db.RegistroActividad
                       .Where(x => x.IdChofer == registro.IdChofer &&
                              x.Idvehiculo == registro.Idvehiculo &&
                              x.Fecha == registro.Fecha &&
                              x.Activo == true &&
                              x.IdRegistro != registro.IdRegistro
                              ).Any();
            }

            if (!resp)
            {
                if (registro.KmInicial <= registro.KmFinal)
                {
                    return(true);
                }
                else
                {
                    ModelState.AddModelError("KmInicial", "El Km inicial no puede ser mayor al final.");
                    return(false);
                }
            }
            else
            {
                ModelState.AddModelError("Fecha", "Ya existe un registro activo con la misma fecha.");
                return(false);
            }
        }