using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Web; using System.Web.Mvc; using Service; using Domain; namespace WebSite.Controllers { public class MobileAppController : BaseController { private const int AUTHORITY_MobileApp = 33; public IAppMenuManager AppMenuManager { get; set; } public IAppHotelManager AppHotelManager { get; set; } public IAlarmSettingManager AlarmSettingManager { get; set; } public IRoomTypeModalManager RoomTypeModalManager { get; set; } public IRoomTypeSceneManager RoomTypeSceneManager { get; set; } public IAppRoomManager AppRoomManager { get; set; } public ActionResult Index() { #if SIMON return View("SimonIndex"); #else return View(); #endif } #region 菜单 /// /// /// /// 0app,1微信 /// [Authorize] public ActionResult LoadMenus(int type) { var list = this.AppMenuManager.LoadAll(type, CurrentHotelID); return Json(new { total = list.Count, rows = list }); } [Authorize] public ActionResult LoadAppMenusByPage(int page, int rows, string order, string sort) { long total = 0; var list = this.AppMenuManager.LoadAllByPage(out total, page, rows, order, sort).Where(r => r.Type == 0); return Json(new { total = total, rows = list }); } [Authorize] public ActionResult SaveAppMenu(int id, string name, HttpPostedFileBase icon, int sort, bool activeIndicator) { try { var menu = AppMenuManager.Get(id); if (menu == null) { throw new ApplicationException(HttpContext.InnerLanguage("InvalidMenu")); } if (String.IsNullOrWhiteSpace(name)) { throw new ApplicationException(HttpContext.InnerLanguage("TheMenuNameCanNotBeEmpty")); } if (icon != null) { if (icon.ContentLength == 0) { throw new ApplicationException(HttpContext.InnerLanguage("InvalidMenuIcon")); } if (icon.ContentType != "image/png" && icon.ContentType != "image/jpeg" && icon.ContentType != "image/gif") { throw new ApplicationException(HttpContext.InnerLanguage("InvalidFormatMenuIconMenuIconFormatCanOnlyBe") + "png、jpg/jpeg、gif。"); } string filePath = Server.MapPath("~/Uploads/AppIcons/"); if (!Directory.Exists(filePath)) { Directory.CreateDirectory(filePath); } string fileName = Path.GetFileName(icon.FileName); filePath += fileName; if (System.IO.File.Exists(filePath)) { throw new ApplicationException(HttpContext.InnerLanguage("IconFiles") + "【" + fileName + "】" + HttpContext.InnerLanguage("AlreadyExistsRenameAndThenUpload")); } icon.SaveAs(filePath); menu.Icon = "Uploads/AppIcons/" + fileName; } menu.Name = name; menu.Sort = sort; menu.ActiveIndicator = activeIndicator; AppMenuManager.Update(menu); SaveSystemLog(AUTHORITY_MobileApp, HttpContext.InnerLanguage("EditMenu"), Language == Domain.Language.CN ? menu.Name : menu.EnglishName); return Json(new { IsSuccess = true, Message = HttpContext.InnerLanguage("SaveSuccess") }, "text/html"); } catch (Exception ex) { SaveSystemLog(AUTHORITY_MobileApp, HttpContext.InnerLanguage("EditMenu"), ex.Message, false); return Json(new { IsSuccess = true, Message = HttpContext.InnerLanguage("SaveFailedBecause") + ex.Message }, "text/html"); } } [Authorize] public ActionResult SaveWXMenu(int id, bool activeIndicator) { try { var menu = AppMenuManager.Get(id); if (menu == null) { throw new ApplicationException(HttpContext.InnerLanguage("InvalidMenu")); } menu.ActiveIndicator = activeIndicator; AppMenuManager.Update(menu); SaveSystemLog(AUTHORITY_MobileApp, HttpContext.InnerLanguage("EditMenu"), Language == Domain.Language.CN ? menu.Name : menu.Name); return Json(new { IsSuccess = true, Message = HttpContext.InnerLanguage("SaveSuccess") }, "text/html"); } catch (Exception ex) { SaveSystemLog(AUTHORITY_MobileApp, HttpContext.InnerLanguage("EditMenu"), ex.Message, false); return Json(new { IsSuccess = false, Message = HttpContext.InnerLanguage("SaveFailedBecause") + ex.Message }, "text/html"); } } #endregion #region 酒店介绍 [Authorize] public ActionResult LoadAppHotel() { var result = new Dictionary(); foreach (var item in AppHotelManager.LoadAll()) { result.Add(item.Code, item.Value); } return Json(result, JsonRequestBehavior.AllowGet); } [Authorize] public ActionResult SaveAppHotel(string jsonData) { try { var list = Newtonsoft.Json.JsonConvert.DeserializeObject>(jsonData); foreach (KeyValuePair item in list) { var entity = AppHotelManager.Get(item.Key); if (entity != null) { entity.Value = item.Value; AppHotelManager.Update(entity); } } SaveSystemLog(AUTHORITY_MobileApp, HttpContext.InnerLanguage("EditHotelIntroduce"), ""); return Json(new { IsSuccess = true, Message = HttpContext.InnerLanguage("SaveSuccess") }); } catch (Exception ex) { SaveSystemLog(AUTHORITY_MobileApp, HttpContext.InnerLanguage("EditHotelIntroduce"), ex.Message, false); return Json(new { IsSuccess = true, Message = HttpContext.InnerLanguage("SaveFailedBecause") + ex.Message }); } } #endregion #region 服务 [HttpPost] [Authorize] public ActionResult LoadServices() { var list = AlarmSettingManager.LoadAll('B').Where(r => r.HotelID == CurrentHotelID); return Json(new { total = list.Count(), rows = list }); } [HttpPost] [Authorize] public ActionResult SaveService(char type, string code, bool appApply) { try { var serviceSetting = AlarmSettingManager.Get(CurrentHotelID, type, code); if (serviceSetting == null) { throw new ApplicationException(HttpContext.InnerLanguage("InvalidService")); } serviceSetting.AppApply = appApply; AlarmSettingManager.Update(serviceSetting); string logDetail = serviceSetting.AppApply ? HttpContext.InnerLanguage("Show") : HttpContext.InnerLanguage("Hide"); logDetail += "【" + (Language == Language.CN ? serviceSetting.Name : serviceSetting.EName) + "】"; SaveSystemLog(AUTHORITY_MobileApp, HttpContext.InnerLanguage("EditService"), logDetail); return Json(new { IsSuccess = true, Message = HttpContext.InnerLanguage("SettingSuccess") }); } catch (Exception ex) { SaveSystemLog(AUTHORITY_MobileApp, HttpContext.InnerLanguage("EditService"), ex.Message, false); return Json(new { IsSuccess = false, Message = HttpContext.InnerLanguage("SetFailedbecause") + ex.Message }); } } #endregion #region 灯光 [Authorize] public ActionResult LoadLightsByPage(int page, int rows, string order, string sort, int roomTypeId) { long total = 0; var list = RoomTypeModalManager.LoadAllByPage(out total, page, rows, order, sort, roomTypeId); var result = list.Select(r => new { r.ID, r.Outlet, r.Name, Type = HttpContext.InnerLanguage(r.Type.ToString()), r.AppApply, r.EnglishName }); return Json(new { total = total, rows = result }); } [HttpPost] [Authorize] public ActionResult SaveLight(int id, bool appApply) { try { var light = RoomTypeModalManager.Get(id); if (light == null) { throw new ApplicationException(HttpContext.InnerLanguage("InvalidLight")); } light.AppApply = appApply; RoomTypeModalManager.Update(light); string logDetail = light.AppApply ? HttpContext.InnerLanguage("Show") : HttpContext.InnerLanguage("Hide"); logDetail += "【" + light.RoomType.Name + "】"; logDetail += "【" + (Language == Language.CN ? light.Name : light.EnglishName) + "】"; SaveSystemLog(AUTHORITY_MobileApp, HttpContext.InnerLanguage("EditLight"), logDetail); return Json(new { IsSuccess = true, Message = HttpContext.InnerLanguage("SettingSuccess") }); } catch (Exception ex) { SaveSystemLog(AUTHORITY_MobileApp, HttpContext.InnerLanguage("EditLight"), ex.Message, false); return Json(new { IsSuccess = false, Message = HttpContext.InnerLanguage("SetFailedbecause") + ex.Message }); } } #endregion #region 场景 [Authorize] public ActionResult LoadScenesByPage(int page, int rows, string order, string sort, int roomTypeId) { long total = 0; var list = RoomTypeSceneManager.LoadAllByPage(out total, page, rows, order, sort, CurrentHotelID, roomTypeId); var result = list.Select(r => new { r.ID, r.Name, r.AppApply, r.EnglishName, r.Icon }); return Json(new { total = total, rows = result }); } public ActionResult SaveScene(int id, bool appApply) { try { var scene = RoomTypeSceneManager.Get(id); if (scene == null) { throw new ApplicationException(HttpContext.InnerLanguage("InvalidScene")); } scene.AppApply = appApply; RoomTypeSceneManager.Update(scene); string logDetail = scene.AppApply ? HttpContext.InnerLanguage("Show") : HttpContext.InnerLanguage("Hide"); logDetail += "【" + scene.RoomType.Name + "】"; logDetail += "【" + (Language == Language.CN ? scene.Name : scene.EnglishName) + "】"; SaveSystemLog(AUTHORITY_MobileApp, HttpContext.InnerLanguage("EditScene"), logDetail); return Json(new { IsSuccess = true, Message = HttpContext.InnerLanguage("SettingSuccess") }); } catch (Exception ex) { SaveSystemLog(AUTHORITY_MobileApp, HttpContext.InnerLanguage("EditScene"), ex.Message, false); return Json(new { IsSuccess = false, Message = HttpContext.InnerLanguage("SetFailedbecause") + ex.Message }); } } public ActionResult SaveEditScene(int id, string name, string engshilname, HttpPostedFileBase icon, bool appapply) { try { var scene = RoomTypeSceneManager.Get(id); if (scene == null) { throw new ApplicationException(HttpContext.InnerLanguage("InvalidScene")); } if (icon != null) { if (icon.ContentLength == 0) { throw new ApplicationException(HttpContext.InnerLanguage("InvalidSceneIcon")); } if (icon.ContentType != "image/png" && icon.ContentType != "image/jpeg" && icon.ContentType != "image/gif") { throw new ApplicationException(HttpContext.InnerLanguage("InvalidSceneIconFormatSceneIconFormatCanOnlyBe") + "png、jpg/jpeg、gif。"); } string filePath = Server.MapPath("~/Uploads/AppIcons/"); if (!Directory.Exists(filePath)) { Directory.CreateDirectory(filePath); } string fileName = Path.GetFileName(icon.FileName); filePath += fileName; if (System.IO.File.Exists(filePath)) { throw new ApplicationException(HttpContext.InnerLanguage("IconFiles") + "【" + fileName + "】" + HttpContext.InnerLanguage("AlreadyExistsRenameAndThenUpload")); } icon.SaveAs(filePath); scene.Icon = "Uploads/AppIcons/" + fileName; } scene.AppApply = appapply; RoomTypeSceneManager.Update(scene); string logDetail = scene.AppApply ? HttpContext.InnerLanguage("Show") : HttpContext.InnerLanguage("Hide"); logDetail += "【" + scene.RoomType.Name + "】"; logDetail += "【" + (Language == Language.CN ? scene.Name : scene.EnglishName) + "】"; SaveSystemLog(AUTHORITY_MobileApp, HttpContext.InnerLanguage("EditScene"), logDetail); return Json(new { IsSuccess = true, Message = HttpContext.InnerLanguage("SettingSuccess") }, "text/html"); } catch (Exception ex) { SaveSystemLog(AUTHORITY_MobileApp, HttpContext.InnerLanguage("EditScene"), ex.Message, false); return Json(new { IsSuccess = false, Message = HttpContext.InnerLanguage("SetFailedbecause") + ex.Message }, "text/html"); } } #endregion #region PAD房号设置 [Authorize] public ActionResult LoadAppRoomsByPage(int page, int rows, string order, string sort) { long total = 0; var list = this.AppRoomManager.LoadAllByPage(out total, page, rows, order, sort); return Json(new { total = total, rows = list }); } [Authorize] public ActionResult SaveAppRoom(int id, string mac, string roomNumber) { try { AppRoom existAppRoom = AppRoomManager.Get(id); AppRoom appRoom = null; if (id == 0) { if (!AppRoomManager.isExistMac(mac)) { //新增 appRoom = new AppRoom(); appRoom.ID = id; appRoom.MAC = mac; appRoom.RoomNumber = roomNumber; if (existAppRoom != null) { return Json(new { IsSuccess = false, Message = String.Format("【{0}】【{1}】" + HttpContext.InnerLanguage("PADRoomNumberSetupInformationAlreadyExists"), appRoom.MAC, appRoom.RoomNumber) }); } AppRoomManager.Save(appRoom); string logDetail = HttpContext.InnerLanguage("New") + "【" + appRoom.MAC + "," + appRoom.RoomNumber + "】"; SaveSystemLog(AUTHORITY_MobileApp, HttpContext.InnerLanguage("PADRoomNumberSetting"), logDetail); } else { return Json(new { IsSuccess = false, Message = String.Format("【{0}】" + HttpContext.InnerLanguage("AlreadyExist"), mac) }); } } else { //更新 if (existAppRoom != null && existAppRoom.ID != id) { return Json(new { IsSuccess = false, Message = String.Format("【{0}】【{1}】" + HttpContext.InnerLanguage("PADRoomNumberSetupInformationAlreadyExists"), appRoom.MAC, appRoom.RoomNumber) }); } else { appRoom = existAppRoom; } appRoom.MAC = mac; appRoom.RoomNumber = roomNumber; AppRoomManager.Update(appRoom); string logDetail = HttpContext.InnerLanguage("Edit") + "【" + appRoom.MAC + "," + appRoom.RoomNumber + "】"; SaveSystemLog(AUTHORITY_MobileApp, HttpContext.InnerLanguage("PADRoomNumberSetting"), logDetail); } return Json(new { IsSuccess = true, Message = HttpContext.InnerLanguage("SaveSuccess") }); } catch (Exception ex) { return Json(new { IsSuccess = false, Message = HttpContext.InnerLanguage("SaveFailedBecause") + ex.Message }); } } [Authorize] public ActionResult DeleteAppRoom(IList idList) { try { IList appRoomList = new List(); foreach (int id in idList) { var appRoom = AppRoomManager.Get(id); if (appRoom != null) { AppRoomManager.Delete(appRoom.ID); appRoomList.Add("【" + appRoom.MAC + "," + appRoom.RoomNumber + "】"); } } string logDetail = HttpContext.InnerLanguage("Delete") + String.Join(",", appRoomList.ToArray()); SaveSystemLog(AUTHORITY_MobileApp, HttpContext.InnerLanguage("PADRoomNumberSetting"), logDetail); return Json(new { IsSuccess = true, Message = HttpContext.InnerLanguage("DeleteSuccess") }); } catch (Exception ex) { SaveSystemLog(AUTHORITY_MobileApp, HttpContext.InnerLanguage("PADRoomNumberSetting"), ex.Message, false); return Json(new { IsSuccess = false, Message = HttpContext.InnerLanguage("DeleteFailedBecause") + ex.Message }); } } #endregion } }