// GET: Usuarios
        public ActionResult Index(string Sorting_Order, string q, int page = 1, int pageSize = 3)
        {
            if (Session["Login"] == null)
            {
                if (Session["rut"] != null)
                {
                    string rut = Session["rut"] as string;
                    return(RedirectToAction("Login", "Usuarios", new { rut = rut }));
                }
                return(RedirectToAction("Login", "Usuarios"));
            }

            var UsuarioView = new ViewModels.UsuarioView();

            UsuarioView.Usuario  = new Models.Usuario();
            UsuarioView.Usuarios = new List <Models.Usuario>();
            var usuarios = db.Usuarios.Include(u => u.Cliente);

            UsuarioView.Usuarios = usuarios.ToList();

            ViewBag.SortingNombreUsuario = string.IsNullOrEmpty(Sorting_Order) ? "NombreUsuario_Description" : "";
            ViewBag.CurrentSort          = Sorting_Order;


            usuarios = from pro in db.Usuarios select pro;
            switch (Sorting_Order)
            {
            case "NombreUsuario_Description":
                usuarios = usuarios.OrderByDescending(u => u.NombreUsuario);
                break;

            default:
                usuarios = usuarios.OrderBy(u => u.NombreUsuario);
                break;
            }

            var list = db.Clientes.ToList();

            list.Add(new Cliente {
                ClienteID = 0, Rut = "[Seleccione un cliente...]"
            });
            list = list.OrderBy(c => c.Nombre).ToList();
            ViewBag.ClienteID = new SelectList(list, "ClienteID", "Rut");


            UsuarioView.PageNumber = page;
            UsuarioView.PageCount  = pageSize;

            UsuarioView.Usuarios = usuarios.ToPagedList(UsuarioView.PageNumber, UsuarioView.PageCount).ToList();

            UsuarioView.PageUsuario = usuarios.ToPagedList(UsuarioView.PageNumber, UsuarioView.PageCount);

            Session["UsuarioView"] = UsuarioView;
            return(View(UsuarioView));
        }
        // GET: Usuarios/Edit/5
        public ActionResult Edit(int?id, string Sorting_Order, string q, int page = 1, int pageSize = 3)
        {
            var UsuarioView = new ViewModels.UsuarioView();

            UsuarioView.Usuario  = new Models.Usuario();
            UsuarioView.Usuarios = new List <Models.Usuario>();
            var usuarios = db.Usuarios.Include(u => u.Cliente);

            UsuarioView.Usuarios = usuarios.ToList();

            ViewBag.SortingNombreUsuario = string.IsNullOrEmpty(Sorting_Order) ? "NombreUsuario_Description" : "";
            ViewBag.CurrentSort          = Sorting_Order;


            usuarios = from pro in db.Usuarios select pro;
            switch (Sorting_Order)
            {
            case "NombreUsuario_Description":
                usuarios = usuarios.OrderByDescending(u => u.NombreUsuario);
                break;

            default:
                usuarios = usuarios.OrderBy(u => u.NombreUsuario);
                break;
            }

            //var list = db.Clientes.ToList();
            //list.Add(new Cliente { ClienteID = 0, Rut = "[Seleccione un cliente...]" });
            //list = list.OrderBy(c => c.Nombre).ToList();
            //ViewBag.ClienteID = new SelectList(list, "ClienteID", "Rut");

            ViewBag.ClienteID = new SelectList(db.Clientes, "ClienteID", "Rut", id);


            UsuarioView.PageNumber = page;
            UsuarioView.PageCount  = pageSize;

            UsuarioView.Usuarios = usuarios.ToPagedList(UsuarioView.PageNumber, UsuarioView.PageCount).ToList();

            UsuarioView.PageUsuario = usuarios.ToPagedList(UsuarioView.PageNumber, UsuarioView.PageCount);
            UsuarioView.Usuario     = db.Usuarios.Find(id);
            if (UsuarioView.Usuario == null)
            {
                return(HttpNotFound());
            }

            Session["IdUsuario"] = id;
            return(View("Index", UsuarioView));
        }
        public ActionResult RolCrear()
        {
            var UsuarioView = new ViewModels.UsuarioView();

            UsuarioView.Usuario  = new Models.Usuario();
            UsuarioView.Usuarios = new List <Models.Usuario>();
            var usuarios = db.Usuarios.Include(u => u.Cliente);

            UsuarioView.Usuarios = usuarios.ToList();

            UsuarioView.RolUsuario  = new RolUsuario();
            UsuarioView.RolUsuarios = new List <RolUsuario>();
            UsuarioView.RolUsuarios = db.RolUsuarios.ToList();

            return(View(UsuarioView));
        }
        // GET: Usuarios/Create
        public ActionResult Create(int?id)
        {
            var UsuarioView = new ViewModels.UsuarioView();

            UsuarioView.Usuario  = new Models.Usuario();
            UsuarioView.Usuarios = new List <Models.Usuario>();
            var usuarios = db.Usuarios.Include(u => u.Cliente);

            UsuarioView.Usuarios = usuarios.ToList();

            var    customerID = int.Parse(Request["ClienteID"]);
            string rut        = Request["rut"].ToString();
            var    list       = db.Clientes.ToList();

            list.Add(new Cliente {
                ClienteID = 0, Nombre = "[Seleccione un cliente...]"
            });
            list = list.OrderBy(c => c.Nombre).ToList();
            ViewBag.ClienteID = new SelectList(list, "ClienteID", "Rut");


            return(View("Index", UsuarioView));
        }
        public ActionResult Create([Bind(Include = "UsuarioID,NombreUsuario,EmailUsuario,PassUsuario,TipoUsuario,ClienteID")] Usuario usuario)
        {
            var UsuarioView = new ViewModels.UsuarioView();

            UsuarioView.Usuario  = usuario;
            UsuarioView.Usuarios = new List <Models.Usuario>();
            var usuarios = db.Usuarios.Include(u => u.Cliente);

            UsuarioView.Usuarios = usuarios.ToList();
            Login        login        = new Models.Login();
            UsuarioLogin usuariologin = new UsuarioLogin();
            //string rut = Request["rut"].ToString();
            //var usuarioView = Session["UsuarioView"] as ViewModels.UsuarioView;
            int customerID = int.Parse(Request["ClienteID"]);

            UsuarioView.Usuario.ClienteID = customerID;
            usuario.ClienteID             = customerID;


            if (ModelState.IsValid)
            {
                if (Session["IdUsuario"] != null)
                {
                    int     iduser          = (int)Session["IdUsuario"];
                    Usuario BuscarusuarioDB = db.Usuarios.Find(iduser);
                    if (BuscarusuarioDB != null)
                    {
                        if (BuscarusuarioDB.UsuarioID == iduser)
                        {
                            Login BuscarLoginDB = db.logins.FirstOrDefault(l => l.EmailUsuario == BuscarusuarioDB.EmailUsuario && l.PassUsuario == BuscarusuarioDB.PassUsuario);
                            if (BuscarLoginDB != null)
                            {
                                BuscarLoginDB.EmailUsuario = usuario.EmailUsuario;
                                BuscarLoginDB.PassUsuario  = usuario.PassUsuario;

                                db.Entry(BuscarLoginDB).State = EntityState.Modified;
                                db.SaveChanges();

                                BuscarusuarioDB.NombreUsuario = usuario.NombreUsuario;
                                BuscarusuarioDB.PassUsuario   = usuario.PassUsuario;
                                BuscarusuarioDB.EmailUsuario  = usuario.EmailUsuario;
                                BuscarusuarioDB.TipoUsuario   = usuario.TipoUsuario;

                                db.Entry(BuscarusuarioDB).State = EntityState.Modified;
                                db.SaveChanges();

                                UsuarioLogin BuscarUsuarioLoginDB = db.UsuarioLogins.FirstOrDefault(l => l.UsuarioID == BuscarusuarioDB.UsuarioID && l.loginID == BuscarLoginDB.loginID);
                                if (BuscarUsuarioLoginDB != null)
                                {
                                    BuscarUsuarioLoginDB.Login   = BuscarLoginDB;
                                    BuscarUsuarioLoginDB.Usuario = BuscarusuarioDB;

                                    db.Entry(BuscarUsuarioLoginDB).State = EntityState.Modified;
                                    db.SaveChanges();
                                }
                            }


                            Session["IdUsuario"] = null;
                            return(RedirectToAction("Index"));
                        }
                    }
                }
                db.Usuarios.Add(usuario);
                db.Entry(usuario).State = EntityState.Added;
                db.SaveChanges();


                login.EmailUsuario = usuario.EmailUsuario;
                login.PassUsuario  = usuario.PassUsuario;
                db.logins.Add(login);
                db.Entry(login).State = EntityState.Added;
                db.SaveChanges();

                usuariologin.Login   = login;
                usuariologin.Usuario = usuario;
                db.UsuarioLogins.Add(usuariologin);
                db.Entry(usuariologin).State = EntityState.Added;
                db.SaveChanges();

                FormatearCorreo(usuario);

                return(RedirectToAction("Index"));
            }

            //ViewBag.ClienteID = new SelectList(db.Clientes, "ClienteID", "Rut", usuario.ClienteID);
            return(View(usuario));
        }