using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using Domain; using Service; namespace WebSite.Controllers { public class SysUserGroupController : BaseController { private static log4net.ILog logger = log4net.LogManager.GetLogger(typeof(SysUserGroupController)); private const int AuthorityID = 56; public ISysUserManager SysUserManager { get; set; } public ISysRoleManager SysRoleManager { get; set; } public IGroupManager GroupManager { get; set; } public ISysHotelManager SysHotelManager { get; set; } public ISysHotelGroupManager SysHotelGroupManager { get; set; } #region Action [Authorize] public ActionResult Index() { //ViewData["Account"] = true; switch (User.Identity.Name.ToLower()) { case "admin": case "blw": ViewData["Account"] = true; break; default: ViewData["Account"] = false; break; } return View("SimonIndex"); } [Authorize] public ActionResult Edit(int? id) { if (id.HasValue) { return View(SysUserManager.Get(id)); } var model = new SysUsers { ID = 0, Account = "", Role = null, Group = null, ActiveIndicator = true, Sort = 1, Remark = "" }; return View(model); } public ActionResult ChangePassword(int id) { ViewData["ID"] = id; return View(); } [Authorize] [HttpPost] public ActionResult ChangePassword(int id, string password) { if (String.IsNullOrEmpty(password)) { return Json(new { IsSuccess = false, Message = HttpContext.InnerLanguage("ThePasswordCanNotBeEmptyPleaseReEnter") }); } SysUsers user = SysUserManager.Get(id); if (user != null) { SysUserManager.Update(user, password); SaveSystemLog(AuthorityID, HttpContext.InnerLanguage("ResetPassword"), user.Account); } return Json(new { IsSuccess = true, Message = HttpContext.InnerLanguage("PasswordResetSuccess") }); } [Authorize] public ActionResult LoadAllByPage(string order, string sort, int? groupId)//int page, int rows, { if (groupId.HasValue) { //long total = 0; //IList list = this.SysUserManager.LoadAllByPage(out total, page, rows, order, sort, 0, groupId, CurrentHotelID); SysUsers curUser = this.SysUserManager.Get(User.Identity.Name); IList list = this.SysUserManager.LoadAll().Where(r => r.HotelID == 0 && !r.IsDeleted && r.SysHotelGroup.ID != curUser.SysHotelGroup.ID && (r.SysHotelGroup.ID == groupId || (r.SysHotelGroup.Parent != null && r.SysHotelGroup.Parent.ID == groupId) || (r.SysHotelGroup.Parent != null && r.SysHotelGroup.Parent.Parent != null && r.SysHotelGroup.Parent.Parent.ID == groupId))).ToList(); IList result = new List(); foreach (var user in list) { result.Add(new { ID = user.ID, Account = user.Account, RoleID = user.Role != null ? user.Role.ID.ToString() : "", RoleName = user.Role != null ? user.Role.Name : "", GroupID = user.Group != null ? user.Group.ID.ToString() : "", GroupName = GroupManager.BuildGroupName(user.Group), SysHotelGroupName = SysHotelGroupManager.BuildGroupName(user.SysHotelGroup), ActiveIndicator = user.ActiveIndicator, Sort = user.Sort, Remark = user.Remark, CreatedBy = user.CreatedBy, CreatedDate = user.CreatedDate, ModifiedBy = user.ModifiedBy, ModifiedDate = user.ModifiedDate, HotelID = user.HotelID, Password2 = user.Password2 }); } return Json(new { total = result.Count, rows = result }); } else { return Json(new { total = 0, rows = new List() }); } } [Authorize] public ActionResult AuthorityHotel(int id) { return View(new SysUsers { ID = id }); } [Authorize] public ActionResult LoadAuthorityHotel(int userID) { var user = SysUserManager.Get(userID); switch (user.Account.ToLower()) { case "admin": case "leo": case "blw": user.Hotels = SysHotelManager.LoadAll(); break; } var groupTree = SysHotelGroupManager.CreateGroupTreeWithHotel(user.SysHotelGroup, user.Hotels); IList result = new List(); result.Add(new { id = 1, text = HttpContext.InnerLanguage("Hotel"), iconCls = "tree-node-no-icon", children = groupTree, attributes = new { isHotel = false } }); return Json(result, JsonRequestBehavior.AllowGet); } /// /// 保存授权酒店 /// /// /// /// [Authorize] public ActionResult SaveAuthorityHotel(int userID, string hotelIDs) { var user = SysUserManager.Get(userID); user.Hotels.Clear(); IList ids = Newtonsoft.Json.JsonConvert.DeserializeObject>(hotelIDs); foreach (int id in ids) { user.Hotels.Add(SysHotelManager.Get(id)); } SysUserManager.SaveOrUpdate(user); return Json(new { IsSuccess = true, Message = HttpContext.InnerLanguage("SaveSuccess") }); } [Authorize] public ActionResult Save(string jsonData) { var user = Newtonsoft.Json.JsonConvert.DeserializeObject(jsonData); try { //var curUser = SysUserManager.Get(User.Identity.Name); //if (user.SysHotelGroup.ID == curUser.SysHotelGroup.ID) //{ // return Json(new { IsSuccess = false, Message = HttpContext.InnerLanguage("Flag") }); //} var existUser = SysUserManager.Get(user.Account); IList hotels = new List(); var visitHotel = SysHotelManager.LoadAll().Where(r => r.SysHotelGroup.ID == user.SysHotelGroup.ID || (r.SysHotelGroup.Parent != null && r.SysHotelGroup.Parent.ID == user.SysHotelGroup.ID) || (r.SysHotelGroup.Parent != null && r.SysHotelGroup.Parent.Parent != null && r.SysHotelGroup.Parent.Parent.ID == user.SysHotelGroup.ID)).FirstOrDefault(); if (visitHotel == null) { return Json(new { IsSuccess = false, Message = "该用户默认访问酒店不能为空" }); } hotels.Add(visitHotel); if (user.ID == 0) { if (null != existUser) { return Json(new { IsSuccess = false, Message = HttpContext.InnerLanguage("Account") + "【" + user.Account + "】" + HttpContext.InnerLanguage("AlreadyExist") }); } user.Name = user.Account; user.CreatedBy = user.ModifiedBy = this.User.Identity.Name; user.CreatedDate = user.ModifiedDate = DateTime.Now; user.Hotels = hotels; user.Group = GroupManager.LoadAll().Where(r => r.HotelID == visitHotel.ID).FirstOrDefault(); user.HotelID = 0;//0表示组角色,跟酒店无关 SysUserManager.Save(user); SaveSystemLog(AuthorityID, HttpContext.InnerLanguage("New"), user.Account); } else { var currentUser = SysUserManager.Get(user.ID); if (existUser != null && existUser.ID != currentUser.ID) { return Json(new { IsSuccess = false, Message = HttpContext.InnerLanguage("Account") + "【" + user.Account + "】" + HttpContext.InnerLanguage("AlreadyExist") }); } currentUser.Account = user.Account; currentUser.Role = user.Role; //currentUser.Group = user.Group; currentUser.SysHotelGroup = user.SysHotelGroup; currentUser.ActiveIndicator = user.ActiveIndicator; currentUser.Sort = user.Sort; currentUser.Remark = user.Remark; currentUser.ModifiedBy = User.Identity.Name; currentUser.ModifiedDate = DateTime.Now; //currentUser.HotelID = CurrentHotelID; SysUserManager.Update(currentUser); SaveSystemLog(AuthorityID, HttpContext.InnerLanguage("Edit"), user.Account); } return Json(new { IsSuccess = true, Message = HttpContext.InnerLanguage("SaveSuccess") }); } catch (Exception ex) { logger.Error(ex); return Json(new { IsSuccess = false, Message = HttpContext.InnerLanguage("SaveFailedBecause") + ex.Message }); } } [Authorize] public ActionResult Delete(IList idList, IList nameList) { //SysUserManager.Delete(idList.Cast().ToList()); foreach (int id in idList) { SysUsers user = SysUserManager.Get(id); user.IsDeleted = true; SysUserManager.Update(user); } SaveSystemLog(AuthorityID, HttpContext.InnerLanguage("Delete"), string.Join(",", nameList)); return Json(new { IsSuccess = true, Message = HttpContext.InnerLanguage("DeleteSuccess") }); } private IList GetHotels(IList hotelIDs) { IList hotels = new List(); if (hotelIDs != null) { foreach (int hotelID in hotelIDs) { var hotel = SysHotelManager.Get(hotelID); if (hotel != null && !hotels.Contains(hotel)) { hotels.Add(hotel); } } } return hotels; } #endregion } }