using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Web; using System.Web.Mvc; using Domain; using Service; using Newtonsoft.Json; using Newtonsoft.Json.Converters; namespace WebSite.Controllers { public class HostRoomCardController : BaseController { private static log4net.ILog logger = log4net.LogManager.GetLogger(typeof(HostRoomCardController)); private const int AUTHORITY_HostRoomCard = 1004; public IHostRoomCardManager HostRoomCardManager { get; set; } public IRoomCardManager RoomCardManager { get; set; } public IRoomCardTypeManager RoomCardTypeManager { get; set; } public ISysUserManager SysUserManager { get; set; } public ActionResult Index() { ViewData["EnableDelData"] = SysUserManager.HasAuthority(User.Identity.Name, AUTHORITY_HostRoomCard); #if SIMON return View("SimonIndex"); #else return View(); #endif } /// /// 加载刷卡记录数据 /// /// /// /// /// /// /// /// /// public ActionResult LoadAllByPage(int page, int rows, string order, string sort, string roomNumber = "", string cardTypeID = "", string cardNumber = "", string startDate = "", string endDate = "") { long total = 0; var lists = HostRoomCardManager.LoadAllByPage(out total, page, rows, order, sort, CurrentHotelID, roomNumber, Convert.ToInt16(cardTypeID), cardNumber, "", Convert.ToDateTime(startDate), Convert.ToDateTime(endDate)); var result = lists.Select(r => new { r.ID, r.RoomNumber, CardType = ReturnNameByLanguage(r.CardType.Name, r.CardType.EName, r.CardType.TWName), r.CardNumber, r.UserNumber, r.UserName, InCardTime = Convert.ToDateTime(r.InCardTime).ToString("yyyy-MM-dd HH:mm:ss"), OutCardTime = Convert.ToDateTime(r.OutCardTime).ToString("yyyy-MM-dd HH:mm:ss"), r.Duration }).ToList(); //var table = HostRoomCardManager.LoadHostRoomCard(out total, page, rows, order, sort, CurrentHotelID, CardType, RoomNumber, UserName, CardNumber, StartDate, EndDate); //IList services = new List(); //if (lists != null) //{ // foreach (System.Data.DataRow row in table.Rows) // { // services.Add(new // { // ID = row[0], // RoomNumber = row[1], // CardNumber = row[2], // CardType = ReturnNameByLanguage(row[3].ToString(), row[4].ToString(), row[5].ToString()), // UserNumber = row[6], // UserName = row[7], // InCardTime = Convert.ToDateTime(row[8]).ToString("yyyy-MM-dd HH:mm:ss"), // OutCardTime = Convert.ToDateTime(row[9]).ToString("yyyy-MM-dd HH:mm:ss"), // Duration = row[10] // }); // } //} return Json(new { total = total, rows = result }, JsonRequestBehavior.AllowGet); } /// /// 删除多条数据 /// /// /// [Authorize] public ActionResult Delete(IList idList) { HostRoomCardManager.Delete(idList.Cast().ToList()); SaveSystemLog(AUTHORITY_HostRoomCard, HttpContext.InnerLanguage("Delete"), "【" + String.Join(",", CurrentHotelID) + "】"); return Json(new { IsSuccess = true, Message = HttpContext.InnerLanguage("DeleteSuccess") }); } /// /// 清空数据 /// /// [Authorize] public ActionResult DeleteAll() { HostRoomCardManager.DeleteAll(CurrentHotelID); SaveSystemLog(AUTHORITY_HostRoomCard, HttpContext.InnerLanguage("Delete"), "【" + String.Join(",", CurrentHotelID) + "】"); return Json(new { IsSuccess = true, Message = HttpContext.InnerLanguage("EmptySuccess") }); } /// ///导出刷卡记录信息 /// /// /// /// [Authorize] public ActionResult Export(string roomNumber, string userName) { var list = HostRoomCardManager.LoadAll(CurrentHotelID, roomNumber, userName); NPOI.HSSF.UserModel.HSSFWorkbook book = new NPOI.HSSF.UserModel.HSSFWorkbook(); NPOI.SS.UserModel.ISheet sheet1 = book.CreateSheet("Sheet1"); sheet1.SetColumnWidth(0, 10 * 256); sheet1.SetColumnWidth(1, 10 * 256); sheet1.SetColumnWidth(2, 10 * 256); sheet1.SetColumnWidth(3, 10 * 256); sheet1.SetColumnWidth(4, 10 * 256); sheet1.SetColumnWidth(5, 20 * 256); sheet1.SetColumnWidth(6, 20 * 256); sheet1.SetColumnWidth(7, 10 * 256); NPOI.SS.UserModel.IRow row1 = sheet1.CreateRow(0); row1.CreateCell(0).SetCellValue(HttpContext.InnerLanguage("RoomNumber")); row1.CreateCell(1).SetCellValue(HttpContext.InnerLanguage("CardNumber")); row1.CreateCell(2).SetCellValue(HttpContext.InnerLanguage("CardType")); row1.CreateCell(3).SetCellValue(HttpContext.InnerLanguage("UserNumber")); row1.CreateCell(4).SetCellValue(HttpContext.InnerLanguage("UserName")); row1.CreateCell(5).SetCellValue(HttpContext.InnerLanguage("InCardTime")); row1.CreateCell(6).SetCellValue(HttpContext.InnerLanguage("OutCardTime")); row1.CreateCell(7).SetCellValue(HttpContext.InnerLanguage("DurationMinute")); for (int i = 0; i < list.Count; i++) { NPOI.SS.UserModel.IRow row = sheet1.CreateRow(i + 1); row.CreateCell(0).SetCellValue(list[i].RoomNumber); row.CreateCell(1).SetCellValue(list[i].CardNumber); row.CreateCell(2).SetCellValue(list[i].CardType != null ? list[i].CardType.Name : ""); row.CreateCell(3).SetCellValue(list[i].UserNumber); row.CreateCell(4).SetCellValue(list[i].UserName); row.CreateCell(5).SetCellValue(list[i].InCardTime.Value.ToString("yyyy-MM-dd HH:mm:ss")); row.CreateCell(6).SetCellValue(list[i].OutCardTime.HasValue ? list[i].OutCardTime.Value.ToString("yyyy-MM-dd HH:mm:ss") : ""); row.CreateCell(7).SetCellValue(list[i].Duration); } using (MemoryStream stream = new MemoryStream()) { book.Write(stream); stream.Seek(0, SeekOrigin.Begin); return File(stream, "application/vnd.ms-excel", "刷卡记录.xls"); } } #region 加载控件数据 /// /// 房卡类型 /// /// [Authorize] public ActionResult LoadDataForCardTypeCombobox() { var cardType = RoomCardTypeManager.LoadAll(); var result = cardType.Select(r => new { r.ID, CardType = ReturnNameByLanguage(r.Name,r.EName,r.TWName) }).ToList(); result.Insert(0, new { ID = -1, CardType = HttpContext.InnerLanguage("Choice") }); return Json(result); } /// /// 房卡编号 /// /// [Authorize] public ActionResult LoadDataForCardNumberCombobox() { var cardNumber = RoomCardManager.LoadAll().Where(r => r.HotelID == CurrentHotelID && r.RoomCardType != null).ToList(); var result = cardNumber.Select(r => new { r.ID, CardNumber = r.CardNumber, Name = r.CardNumber + "(" + ReturnNameByLanguage(r.RoomCardType.Name, r.RoomCardType.EName, r.RoomCardType.TWName) + "|" + r.UserName + ")" }).ToList(); result.Insert(0, new { ID = 0, CardNumber = "", Name = HttpContext.InnerLanguage("CheckAll") }); return Json(result); } /// /// 员工姓名 /// /// [Authorize] public ActionResult LoadDataForUserNameCombobox() { var userName = RoomCardManager.LoadAll().Where(r => r.HotelID == CurrentHotelID).ToList(); var result = userName.Select(r => new { r.ID, UserName = r.UserName }).ToList(); result.Insert(0, new { ID = 0, UserName = HttpContext.InnerLanguage("CheckAll") }); return Json(result); } #endregion } }