/// <summary> /// 获取阅览室可预约的座位 /// </summary> /// <param name="bespeakDate"></param> /// <param name="RoomId"></param> /// <returns></returns> public List <ClassModel.Seat> GetBookSeatList(DateTime bespeakDate, string RoomId) { List <ClassModel.Seat> canBespeakSeat = new List <Seat>(); List <string> roomNums = new List <string>(); roomNums.Add(RoomId); List <ReadingRoomInfo> rooms = seatManage.GetReadingRoomInfo(roomNums); { if (!timeCanBespeak(rooms[0].Setting.SeatBespeak, DateTime.Now)) { throw new SeatBespeakException.BespeakSeatFailed(string.Format("预约时间为:{0}到{1}", rooms[0].Setting.SeatBespeak.CanBespeatTimeSpace.BeginTime, rooms[0].Setting.SeatBespeak.CanBespeatTimeSpace.EndTime)); } } SeatLayout bespeakSeatLayout = seatManage.GetBeseakSeatLayout(RoomId, bespeakDate); foreach (Seat seat in bespeakSeatLayout.Seats.Values) { if (rooms[0].Setting.SeatBespeak.CanBookMultiSpan && rooms[0].Setting.SeatBespeak.SpecifiedTime) { if (seat.CanBeBespeak && seat.CanBespeakSpan.Count > 0 && !seat.IsSuspended) { canBespeakSeat.Add(seat); } } else { if (seat.CanBeBespeak && seat.SeatUsedState != EnumType.EnterOutLogType.BookingConfirmation && !seat.IsSuspended) { canBespeakSeat.Add(seat); } } } return(canBespeakSeat); }
/// <summary> /// Updates the seat layout. /// </summary> /// <param name="from">From.</param> /// <param name="to">To.</param> public static void UpdateSeatLayout(SeatLayout from, ref SeatLayout to) { to.Rows = from.Rows; to.Columns = from.Columns; to.Layout = from.Layout; to.Active = from.Active; }
public void Part2Test() { // Given var layout = SeatLayout.Parse(Input.Get(11)); // When var step1 = layout.StepPart2(); var step2 = step1.StepPart2(); var step3 = step2.StepPart2(); var step4 = step3.StepPart2(); var step5 = step4.StepPart2(); var step6 = step5.StepPart2(); var stable = layout.StabalizePart2(); var count = stable.Count(SeatLayoutTile.OccupiedSeat); // Then Assert.Equal(step1, SeatLayout.Parse(Input.Get(11, "Part2Step1"))); Assert.Equal(step2, SeatLayout.Parse(Input.Get(11, "Part2Step2"))); Assert.Equal(step3, SeatLayout.Parse(Input.Get(11, "Part2Step3"))); Assert.Equal(step4, SeatLayout.Parse(Input.Get(11, "Part2Step4"))); Assert.Equal(step5, SeatLayout.Parse(Input.Get(11, "Part2Step5"))); Assert.Equal(step6, SeatLayout.Parse(Input.Get(11, "Part2Step6"))); Assert.Equal(step6, step6.StepPart2()); Assert.Equal(step6, stable); Assert.Equal(26, count); }
public List <ClassModel.Seat> GetReadingRoomSeatList(string RoomId) { try { List <ClassModel.Seat> canBespeakSeat = new List <Seat>(); List <string> roomNums = new List <string>(); roomNums.Add(RoomId); List <ReadingRoomInfo> rooms = seatManage.GetReadingRoomInfo(roomNums); SeatLayout bespeakSeatLayout = seatManage.GetBeseakSeatLayout(RoomId, DateTime.Now); SeatLayout useSeatLayout = seatManage.GetRoomSeatLayOut(RoomId); foreach (KeyValuePair <string, Seat> uSeat in useSeatLayout.Seats) { if (uSeat.Value.SeatUsedState == EnterOutLogType.BespeakWaiting) { continue; } if ((uSeat.Value.SeatUsedState == EnterOutLogType.Leave || uSeat.Value.SeatUsedState == EnterOutLogType.None) && !uSeat.Value.IsSuspended) { canBespeakSeat.Add(uSeat.Value); } } return(canBespeakSeat); } catch (Exception ex) { throw new Exception("获取可选座位失败" + ex.Message); } }
/// <summary> /// 更新座位布局 /// </summary> /// <param name="seatLayout"></param> /// <returns></returns> public static SeatManage.EnumType.HandleResult UpdateSeatLayout(SeatLayout seatLayout) { IWCFService.ISeatManageService SeatService = WcfAccessProxy.ServiceProxy.CreateChannelSeatManageService(); bool error = false; try { return(SeatService.UpdateSeatLayout(seatLayout)); } catch (Exception ex) { error = true; WriteLog.Write("查询阅览室失败:" + ex.Message); return(EnumType.HandleResult.Failed); } finally { ICommunicationObject ICommObjectService = SeatService as ICommunicationObject; try { if (ICommObjectService.State == CommunicationState.Faulted) { ICommObjectService.Abort(); } else { ICommObjectService.Close(); } } catch { ICommObjectService.Abort(); } } }
/// <summary> /// 随机分配座位编号 /// </summary> /// <param name="reandingRoom">阅览室编号</param> /// <returns></returns> public string RandomAllotSeat(string readingRoomNum) { SeatLayout seatLayout = GetRoomSeatLayOut(readingRoomNum); List <string> seatList = (from seat in seatLayout.Seats.Values where !seat.IsSuspended && seat.SeatUsedState == EnterOutLogType.Leave select seat.SeatNo).ToList(); if (seatList.Count > 0) { Random rNum = new Random(); return(seatList[rNum.Next(0, seatList.Count - 1)]); } else { return(""); } //DataSet ds = t_sm_seat.RandomAllotSeat(readingRoomNum, GetServerDateTime()); //if (ds.Tables[0].Rows.Count > 0) //{ // return ds.Tables[0].Rows[0]["SeatNo"].ToString(); //} //else //{ // return ""; //} }
public void ToStringTest(string input, string _) { var layout = new SeatLayout(input); var result = layout.ToString(); Assert.Equal(input, result); }
public void GenTest2(string input, string expected) { var layout = new SeatLayout(input); var result = layout.Process2(); Assert.Equal(expected, result); }
public void TestVehicles() { var databaseService = this.container.Resolve <IDatabaseService>(); var layout = new SeatLayout { Rows = 10, Columns = 4, Layout = "A1:B1;A2:B2;A3,B3:C3,D3", Active = true }; layout = databaseService.CreateSeatLayout(layout); var vehicle1 = new Vehicle { SeatLayoutId = layout.Id, VehicleType = "Premium Volvo", Manufacturer = "Volvo", DriveType = "Automatic", Model = "V2110", RegistrationNumber = "BA 2233", RegistrationState = "Dhaka Metro", RegistrationExpiry = new DateTime(2021, 9, 12), VIN = "V5263YY83784", Year = 2017, BaseStation = "Dhaka", TotalSeats = 24, Active = true }; vehicle1 = databaseService.CreateVehicle(vehicle1); var vehicle2 = new Vehicle { SeatLayoutId = layout.Id, VehicleType = "Non A/C", Manufacturer = "Tata", DriveType = "Manual", Model = "TT334", RegistrationNumber = "BA 1211", RegistrationState = "Dhaka Metro", RegistrationExpiry = new DateTime(2022, 8, 12), VIN = "V5263YY86254", Year = 2017, BaseStation = "Dhaka", TotalSeats = 36, Active = true }; vehicle2 = databaseService.CreateVehicle(vehicle2); var newVehicle1 = databaseService.GetVehicle(vehicle1.Id); Assert.IsTrue(newVehicle1 != null); Assert.AreEqual(newVehicle1.VehicleType, vehicle1.VehicleType); Assert.AreEqual(newVehicle1.DriveType, vehicle1.DriveType); Assert.AreEqual(newVehicle1.RegistrationExpiry, vehicle1.RegistrationExpiry); Assert.AreEqual(newVehicle1.TotalSeats, vehicle1.TotalSeats); var newVehicle2 = databaseService.GetVehicle(vehicle2.Id); Assert.IsTrue(newVehicle2 != null); Assert.AreEqual(newVehicle2.Manufacturer, vehicle2.Manufacturer); Assert.AreEqual(newVehicle2.RegistrationNumber, vehicle2.RegistrationNumber); Assert.AreEqual(newVehicle2.VIN, vehicle2.VIN); Assert.AreEqual(newVehicle2.Year, vehicle2.Year); newVehicle1.Model = "VA 4566"; newVehicle1.BaseStation = "Rajshahi"; databaseService.UpdateVehicle(newVehicle1); var updatedVehicle1 = databaseService.GetVehicle(newVehicle1.Id); Assert.IsTrue(updatedVehicle1 != null); Assert.AreEqual(updatedVehicle1.Model, newVehicle1.Model); Assert.AreEqual(updatedVehicle1.BaseStation, newVehicle1.BaseStation); databaseService.DeleteVehicle(vehicle1.Id); databaseService.DeleteVehicle(vehicle2.Id); Assert.AreEqual(databaseService.GetVehicle(vehicle1.Id), null); Assert.AreEqual(databaseService.GetVehicle(newVehicle1.Id), null); Assert.AreEqual(databaseService.GetVehicle(updatedVehicle1.Id), null); Assert.AreEqual(databaseService.GetVehicle(vehicle2.Id), null); databaseService.DeleteSeatLayout(layout.Id); }
public void SeenTest(string input, int x, int y, int eX, int eY) { var layout = new SeatLayout(input); var result = layout.SeenFrom(x, y); Assert.Equal(eX, result.X); Assert.Equal(eY, result.Y); }
public void LayoutEqualityReflexive() { // Given var layout1 = SeatLayout.Parse(Input.Get(11)); var layout2 = SeatLayout.Parse(Input.Get(11)); // Then Assert.True(layout1 == layout2); }
public async Task <IHttpActionResult> PutSeatLayout(SeatLayout seatLayout) { if (seatLayout == null) { return(BadRequest()); } _unitOfWork.SeatLayout.Update(seatLayout); await _unitOfWork.Complete(); return(Ok(seatLayout)); }
public void Part2CountTest(int i, int x, int y, int count) { // Given var layout = SeatLayout.Parse(Input.Get(11, $"Part2Count{i}")); // When var actual = layout.CountAdjacentPart2(x, y); // Then Assert.Equal(count, actual); }
/// <summary> /// Updates the seat layout. /// </summary> /// <param name="seatLayout">The seat layout.</param> /// <returns>The updated seat layout.</returns> public SeatLayout UpdateSeatLayout(SeatLayout seatLayout) { var existingSeatLayout = this.GetSeatLayout(seatLayout.Id); if (existingSeatLayout != null) { DataModelUpdater.UpdateSeatLayout(seatLayout, ref existingSeatLayout); this.context.Update(existingSeatLayout); this.context.SaveChanges(); } return(existingSeatLayout); }
public string GetSeatLayoutListJson() { List <SeatLayout> list = new List <SeatLayout>(); ISeatManageService seatManage = new WcfServiceForSeatManage.SeatManageDateService(); List <ReadingRoomInfo> rooms = seatManage.GetReadingRoomInfo(null); foreach (var item in rooms) { SeatLayout layOut = seatManage.GetRoomSeatLayOut(item.No); list.Add(layOut); } string s = Newtonsoft.Json.JsonConvert.SerializeObject(list); return(s); }
public override string Part1(string input) { var layout = new SeatLayout(input); var seen = new HashSet <string>(); var status = layout.ToString(); while (seen.Add(status)) { status = layout.Process(); } return(layout.OccupiedCount().ToString()); }
/// <summary> /// 根据阅览室编号、座位状态获取对应的座位 /// </summary> /// <param name="roomNum">阅览室编号</param> /// <param name="seatState">座位状态</param> /// <returns></returns> public string GetRoomSeats(string roomNum, string seatState) { try { List <JM_Seat> jm_list = new List <JM_Seat>(); SeatLayout seatList = seatDataService.GetRoomSeatLayOut(roomNum); //获取阅览室座位 foreach (Seat seat in seatList.Seats.Values) { JM_Seat jmSeat = new JM_Seat(); jmSeat.SeatNo = seat.SeatNo; jmSeat.ShortSeatNo = seat.ShortSeatNo; jmSeat.SeatState = seat.SeatUsedState.ToString(); jmSeat.ReadingRoomNum = seat.ReadingRoomNum; jmSeat.UserName = seat.UserName; jmSeat.UserCardNo = seat.UserCardNo; jmSeat.MarkTime = seat.MarkTime.ToString(); jmSeat.BeginUsedTime = seat.BeginUsedTime.ToString(); if (seat.SeatUsedState.ToString() == seatState) { jm_list.Add(jmSeat); } } if (jm_list.Count > 0) { JM_HandleResultObject result = new JM_HandleResultObject(); result.Result = true; result.Msg = jm_list; return(SeatManage.SeatManageComm.JSONSerializer.Serialize(result)); } else { JM_HandleResultObject result = new JM_HandleResultObject(); result.Result = false; result.Msg = string.Format("没有查询到{0}状态下的座位", seatState); return(SeatManage.SeatManageComm.JSONSerializer.Serialize(result)); } } catch (Exception ex) { SeatManage.SeatManageComm.WriteLog.Write("根据阅览室编号获座位者信息遇到异常:" + ex.Message); JM_HandleResultObject result = new JM_HandleResultObject(); result.Result = false; result.Msg = "执行遇到异常!"; return(SeatManage.SeatManageComm.JSONSerializer.Serialize(result)); } }
/// <summary> /// 更新座位布局 /// </summary> /// <param name="seatLayout"></param> /// <returns></returns> public static SeatManage.EnumType.HandleResult UpdateSeatLayout(SeatLayout seatLayout) { IWCFService.ISeatManageService SeatService = new WcfServiceForSeatManage.SeatManageDateService(); bool error = false; try { return(SeatService.UpdateSeatLayout(seatLayout)); } catch (Exception ex) { error = true; WriteLog.Write("查询阅览室失败:" + ex.Message); return(EnumType.HandleResult.Failed); } }
/// <summary> /// 获取阅览室中的座位分布以及使用情况 /// </summary> /// <param name="roomNum">阅览室编号</param> /// <returns></returns> public static SeatLayout GetRoomSeatLayOut(string roomNum) { IWCFService.ISeatManageService seatService = new WcfServiceForSeatManage.SeatManageDateService(); bool error = false; try { SeatLayout layout = seatService.GetRoomSeatLayOut(roomNum); return(layout); } catch (Exception ex) { error = true; WriteLog.Write("获取阅览室座位分布遇到错误:" + ex.Message); return(null); } }
/// <summary> /// 根据阅览室编号获取当前座位使用情况的布局图(包括预约)。 /// </summary> /// <param name="roomNum">阅览室编号</param> /// <returns></returns> public string GetSeatsUsedInfoByRoomNum(string roomNum) { try { if (string.IsNullOrEmpty(roomNum)) { JM_HandleResult result = new JM_HandleResult(); result.Result = false; result.Msg = "阅览室编号不能为空!"; return(SeatManage.SeatManageComm.JSONSerializer.Serialize(result)); } List <JM_Seat> seats = new List <JM_Seat>(); SeatLayout bespeakSeatLayout = seatDataService.GetRoomSeatLayOut(roomNum); foreach (Seat seat in bespeakSeatLayout.Seats.Values) { if (!seat.IsSuspended) { JM_Seat jm_seat = new JM_Seat(); jm_seat.CanBeBespeak = true; jm_seat.HavePower = seat.HavePower; jm_seat.IsSuspended = seat.IsSuspended; jm_seat.ReadingRoomNum = seat.ReadingRoom.No; jm_seat.ReadingRoomName = seat.ReadingRoom.Name; jm_seat.SeatNo = seat.SeatNo; jm_seat.SeatUsedState = seat.SeatUsedState.ToString(); jm_seat.ShortSeatNo = seat.ShortSeatNo; jm_seat.BaseHeight = seat.BaseHeight; jm_seat.BaseWidth = seat.BaseWidth; jm_seat.PositionX = seat.PositionX; jm_seat.PositionY = seat.PositionY; jm_seat.RotationAngle = seat.RotationAngle; seats.Add(jm_seat); } } return(SeatManageComm.JSONSerializer.Serialize(seats)); } catch (Exception ex) { SeatManage.SeatManageComm.WriteLog.Write("获取阅览室座位使用情况布局图遇到异常:" + ex.Message); JM_HandleResult result = new JM_HandleResult(); result.Result = false; result.Msg = "执行遇到异常!"; return(SeatManage.SeatManageComm.JSONSerializer.Serialize(result)); } }
private ReadingRoomSeatUsedState_Ex DataRowToReadingRoomSeatUsedState(DataRow dr) { ReadingRoomSeatUsedState_Ex state = new ReadingRoomSeatUsedState_Ex(); state.ReadingRoom = new ReadingRoomInfo(); state.ReadingRoom.No = dr["ReadingRoomNo"].ToString(); state.ReadingRoom.Name = dr["ReadingRoomName"].ToString(); if (!String.IsNullOrEmpty(dr["ReadingSetting"].ToString())) { state.ReadingRoom.Setting = new ReadingRoomSetting(dr["ReadingSetting"].ToString()); } else { state.ReadingRoom.Setting = new ReadingRoomSetting(); } if (!string.IsNullOrEmpty(dr["RoomSeat"].ToString())) { state.ReadingRoom.SeatList = SeatLayout.GetSeatLayout(dr["RoomSeat"].ToString()); } else { state.ReadingRoom.SeatList = new SeatLayout(); } state.ReadingRoom.Libaray.No = dr["LibraryNo"].ToString(); state.ReadingRoom.Libaray.Name = dr["LibraryName"].ToString(); state.ReadingRoom.Libaray.School.No = dr["SchoolNo"].ToString(); state.ReadingRoom.Libaray.School.Name = dr["SchoolName"].ToString(); state.ReadingRoom.Libaray.AreaList = state.ReadingRoom.Libaray.ToList(dr["AreaInfo"].ToString()); if (dr["AreaName"] != null && !string.IsNullOrEmpty(dr["AreaName"].ToString())) { foreach (AreaInfo item in state.ReadingRoom.Libaray.AreaList) { if (dr["AreaName"].ToString() == item.AreaName) { state.ReadingRoom.Area = item; break; } } } state.SeatAmountUsed = int.Parse(dr["UsingCount"].ToString()); state.SeatBookingCount = int.Parse(dr["BespeakCount"].ToString()); return(state); }
///// <summary> ///// 批量删除数据 ///// </summary> //public bool DeleteList(string ReadingRoomNolist ) //{ // StringBuilder strSql=new StringBuilder(); // strSql.Append("delete from T_SM_ReadingRoom "); // strSql.Append(" where ReadingRoomNo in ("+ReadingRoomNolist + ") "); // int rows=DbHelperSQL.ExecuteSql(strSql.ToString()); // if (rows > 0) // { // return true; // } // else // { // return false; // } //} ///// <summary> ///// 得到一个对象实体 ///// </summary> //public SeatManage.Model.T_SM_ReadingRoom GetModel(string ReadingRoomNo) //{ // StringBuilder strSql=new StringBuilder(); // strSql.Append("select top 1 ReadingRoomNo,ReadingRoomName,LibraryNo,ReadingSetting,RoomSeat from T_SM_ReadingRoom "); // strSql.Append(" where ReadingRoomNo=@ReadingRoomNo "); // SqlParameter[] parameters = { // new SqlParameter("@ReadingRoomNo", SqlDbType.NVarChar,50)}; // parameters[0].Value = ReadingRoomNo; // SeatManage.Model.T_SM_ReadingRoom model=new SeatManage.Model.T_SM_ReadingRoom(); // DataSet ds=DbHelperSQL.Query(strSql.ToString(),parameters); // if(ds.Tables[0].Rows.Count>0) // { // if(ds.Tables[0].Rows[0]["ReadingRoomNo"]!=null && ds.Tables[0].Rows[0]["ReadingRoomNo"].ToString()!="") // { // model.ReadingRoomNo=ds.Tables[0].Rows[0]["ReadingRoomNo"].ToString(); // } // if(ds.Tables[0].Rows[0]["ReadingRoomName"]!=null && ds.Tables[0].Rows[0]["ReadingRoomName"].ToString()!="") // { // model.ReadingRoomName=ds.Tables[0].Rows[0]["ReadingRoomName"].ToString(); // } // if(ds.Tables[0].Rows[0]["LibraryNo"]!=null && ds.Tables[0].Rows[0]["LibraryNo"].ToString()!="") // { // model.LibraryNo=int.Parse(ds.Tables[0].Rows[0]["LibraryNo"].ToString()); // } // if(ds.Tables[0].Rows[0]["ReadingSetting"]!=null && ds.Tables[0].Rows[0]["ReadingSetting"].ToString()!="") // { // model.ReadingSetting=ds.Tables[0].Rows[0]["ReadingSetting"].ToString(); // } // if(ds.Tables[0].Rows[0]["RoomSeat"]!=null && ds.Tables[0].Rows[0]["RoomSeat"].ToString()!="") // { // model.RoomSeat=ds.Tables[0].Rows[0]["RoomSeat"].ToString(); // } // return model; // } // else // { // return null; // } //} /* * /// <summary> * /// 分页获取数据列表 * /// </summary> * public DataSet GetList(int PageSize,int PageIndex,string strWhere) * { * SqlParameter[] parameters = { * new SqlParameter("@tblName", SqlDbType.VarChar, 255), * new SqlParameter("@fldName", SqlDbType.VarChar, 255), * new SqlParameter("@PageSize", SqlDbType.Int), * new SqlParameter("@PageIndex", SqlDbType.Int), * new SqlParameter("@IsReCount", SqlDbType.Bit), * new SqlParameter("@OrderType", SqlDbType.Bit), * new SqlParameter("@strWhere", SqlDbType.VarChar,1000), * }; * parameters[0].Value = "T_SM_ReadingRoom"; * parameters[1].Value = "ReadingRoomNo"; * parameters[2].Value = PageSize; * parameters[3].Value = PageIndex; * parameters[4].Value = 0; * parameters[5].Value = 0; * parameters[6].Value = strWhere; * return DbHelperSQL.RunProcedure("UP_GetRecordByPage",parameters,"ds"); * }*/ public ReadingRoomInfo DataRowToReadingRoomInfo(DataRow dr) { ReadingRoomInfo roomInfo = new ReadingRoomInfo(); roomInfo.No = dr["ReadingRoomNo"].ToString(); roomInfo.Name = dr["ReadingRoomName"].ToString(); if (!String.IsNullOrEmpty(dr["ReadingSetting"].ToString())) { roomInfo.Setting = new ReadingRoomSetting(dr["ReadingSetting"].ToString()); } else { roomInfo.Setting = new ReadingRoomSetting(); } if (!string.IsNullOrEmpty(dr["RoomSeat"].ToString())) { roomInfo.SeatList = SeatLayout.GetSeatLayout(dr["RoomSeat"].ToString()); } else { roomInfo.SeatList = new SeatLayout(); } roomInfo.Libaray.No = dr["LibraryNo"].ToString(); roomInfo.Libaray.Name = dr["LibraryName"].ToString(); roomInfo.Libaray.School.No = dr["SchoolNo"].ToString(); roomInfo.Libaray.School.Name = dr["SchoolName"].ToString(); roomInfo.Libaray.AreaList = roomInfo.Libaray.ToList(dr["AreaInfo"].ToString()); if (dr["AreaName"] != null && !string.IsNullOrEmpty(dr["AreaName"].ToString())) { foreach (AreaInfo item in roomInfo.Libaray.AreaList) { if (dr["AreaName"].ToString() == item.AreaName) { roomInfo.Area = item; break; } } } return(roomInfo); }
public void TestSeatLayouts() { var databaseService = this.container.Resolve <IDatabaseService>(); var layout1 = new SeatLayout { Rows = 10, Columns = 4, Layout = "A1:B1;A2:B2;A3,B3:C3,D3", Active = true }; layout1 = databaseService.CreateSeatLayout(layout1); var layout2 = new SeatLayout { Rows = 8, Columns = 4, Layout = "A1,B1:C1,C2;", Active = true }; layout2 = databaseService.CreateSeatLayout(layout2); var newLayout1 = databaseService.GetSeatLayout(layout1.Id); Assert.IsTrue(newLayout1 != null); Assert.AreEqual(newLayout1.Rows, layout1.Rows); Assert.AreEqual(newLayout1.Columns, layout1.Columns); newLayout1.Layout = "A1,B1:C1,D1;A2,B2:C2,D2;"; newLayout1.Active = false; newLayout1 = databaseService.UpdateSeatLayout(newLayout1); var updatedLayout1 = databaseService.GetSeatLayout(newLayout1.Id); Assert.IsTrue(updatedLayout1 != null); Assert.AreEqual(updatedLayout1.Layout, newLayout1.Layout); Assert.AreEqual(updatedLayout1.Active, newLayout1.Active); Assert.AreEqual(updatedLayout1.Rows, newLayout1.Rows); databaseService.DeleteSeatLayout(layout1.Id); databaseService.DeleteSeatLayout(layout2.Id); Assert.AreEqual(databaseService.GetSeatLayout(layout1.Id), null); Assert.AreEqual(databaseService.GetSeatLayout(newLayout1.Id), null); Assert.AreEqual(databaseService.GetSeatLayout(updatedLayout1.Id), null); Assert.AreEqual(databaseService.GetSeatLayout(layout2.Id), null); }
/// <summary> /// 更新阅览室座位布局 /// </summary> /// <param name="seatLayout"></param> /// <returns></returns> public SeatManage.EnumType.HandleResult UpdateSeatLayout(SeatLayout seatLayout) { try { List <string> roomNums = new List <string>(); roomNums.Add(seatLayout.RoomNo); List <ReadingRoomInfo> roomInfos = GetReadingRoomInfo(roomNums); if (roomInfos.Count > 0) { string delSeatWhere = string.Format(" ReadingRoomNo=@ReadingRoomNo"); SqlParameter[] parameters = { new SqlParameter("@ReadingRoomNo", SqlDbType.NVarChar, 50) }; parameters[0].Value = seatLayout.RoomNo; //删除原来的座位 t_sm_seat.Delete(delSeatWhere.ToString(), parameters); //添加新的座位 foreach (Seat seat in seatLayout.Seats.Values) { seat.ReadingRoomNum = seatLayout.RoomNo; t_sm_seat.Add(seat); } roomInfos[0].SeatList = seatLayout; t_sm_readingRoom_DAL.Update(roomInfos[0]); return(SeatManage.EnumType.HandleResult.Successed); } else { throw new Exception("阅览室编号不存在"); } } catch (Exception ex) { throw ex; } }
/// <summary> /// 获取当天预约座位列表 /// </summary> /// <param name="RoomId"></param> /// <returns></returns> public List <Seat> GetNowBookSeatList(string RoomId) { List <ClassModel.Seat> canBespeakSeat = new List <Seat>(); List <string> roomNums = new List <string>(); roomNums.Add(RoomId); List <ReadingRoomInfo> rooms = seatManage.GetReadingRooms(roomNums, null, null); SeatLayout bespeakSeatLayout = seatManage.GetBeseakSeatLayout(RoomId, DateTime.Now); SeatLayout useSeatLayout = seatManage.GetRoomSeatLayOut(RoomId); foreach (KeyValuePair <string, Seat> uSeat in useSeatLayout.Seats) { if (uSeat.Value.SeatUsedState == EnterOutLogType.BespeakWaiting) { if (rooms[0].Setting.SeatBespeak.CanBookMultiSpan && rooms[0].Setting.SeatBespeak.SpecifiedTime) { if (!bespeakSeatLayout.Seats[uSeat.Key].IsSuspended) { canBespeakSeat.Add(bespeakSeatLayout.Seats[uSeat.Key]); } } continue; } if ((uSeat.Value.SeatUsedState == EnterOutLogType.Leave || uSeat.Value.SeatUsedState == EnterOutLogType.None) && !uSeat.Value.IsSuspended) { if (rooms[0].Setting.SeatBespeak.CanBookMultiSpan && rooms[0].Setting.SeatBespeak.SpecifiedTime) { canBespeakSeat.Add(bespeakSeatLayout.Seats[uSeat.Key]); } else { canBespeakSeat.Add(uSeat.Value); } } } return(canBespeakSeat); }
/// <summary> /// 获取阅览室中的座位分布以及使用情况 /// </summary> /// <param name="roomNum">阅览室编号</param> /// <returns></returns> public static SeatLayout GetRoomSeatLayOut(string roomNum) { IWCFService.ISeatManageService seatService = WcfAccessProxy.ServiceProxy.CreateChannelSeatManageService(); bool error = false; try { SeatLayout layout = seatService.GetRoomSeatLayOut(roomNum); return(layout); } catch (Exception ex) { error = true; WriteLog.Write("获取阅览室座位分布遇到错误:" + ex.Message); return(null); } finally { ICommunicationObject ICommObjectService = seatService as ICommunicationObject; try { if (ICommObjectService.State == CommunicationState.Faulted) { ICommObjectService.Abort(); } else { ICommObjectService.Close(); } } catch { ICommObjectService.Abort(); } } }
/// <summary> /// 布局座位列表 /// </summary> /// <param name="roomNum"></param> protected void GetSeatList(string roomNum, string state) { SeatLayout _SeatLayout = EnterOutOperate.GetRoomSeatLayOut(roomNum); StringBuilder seatHtml = new StringBuilder(); foreach (Seat seat in _SeatLayout.Seats.Values) { if (seat.IsSuspended) { continue; } string seatStyle = "";//座位样式 string tipContent = ""; string used = ""; string onTime = ""; switch (seat.SeatUsedState) { case EnterOutLogType.Leave: seatStyle = "RealSeatFree"; tipContent = "座位空闲"; used = "空闲"; onTime = "0"; break; case EnterOutLogType.SelectSeat: case EnterOutLogType.ReselectSeat: case EnterOutLogType.ComeBack: case EnterOutLogType.ContinuedTime: case EnterOutLogType.BookingConfirmation: string time = String.Format("{0:HH:mm:ss}", seat.BeginUsedTime); used = "在座"; if (!string.IsNullOrEmpty(seat.MarkTime.ToString()) && seat.MarkTime.CompareTo(DateTime.Parse("1900/1/1")) != 0) { onTime = "1"; TimeSpan ts = ServiceDateTime.Now.Subtract(seat.MarkTime); string ontime = ts.Hours + "小时" + ts.Minutes + "分钟" + ts.Seconds + "秒"; seatStyle = "RealSeatOnTime"; tipContent = string.Format("学号:{0}<br />姓名:{1}<br />入座时间:{2}<br />已计时:{3}", seat.UserCardNo, seat.UserName, time, ontime); } else { onTime = "0"; seatStyle = "RealSeatBusy"; tipContent = string.Format("学号:{0}<br />姓名:{1}<br />入座时间:{2}", seat.UserCardNo, seat.UserName, time); } break; case EnterOutLogType.ShortLeave: onTime = "0"; seatStyle = "RealSeatLeave"; time = String.Format("{0:HH:mm:ss}", seat.BeginUsedTime); tipContent = string.Format("学号:{0}<br />姓名:{1}<br />暂离时间:{2}", seat.UserCardNo, seat.UserName, time); used = "暂离"; break; case EnterOutLogType.BespeakWaiting: onTime = "0"; seatStyle = "RealSeatBusy"; tipContent = "等待预约读者确认入座"; used = "在座"; break; } switch (state) { case "seated": if (used == "在座") { //seatHtml.AppendFormat("<div data-inline='true' class='{0}' data-transition='none' data-role='button' onclick='tipShow(this,\"{1}\");checkSeat({2})'><input id='{3}' type='checkbox' name='ckbSeat' value='{4}' onclick='checkSeat({5})' Style=\"position:static\" /><span Style=\"font-size: 90%;\">{6}</span><br /><span Style=\"font-size: 90%;\">{7}</span></div>", seatStyle, tipContent, seat.SeatNo, seat.SeatNo, seat.SeatNo, seat.SeatNo, seat.ShortSeatNo, used); seatHtml.AppendFormat("<div class='{0}' onclick='tipShowPad(this,\"{1}\");checkSeat({2})' style='float: left; width: 75px;height: 70px;background-image: url('../Images/Pad/pink.png');background-repeat: no-repeat;vertical-align: middle;'><br/><input id='{3}' type='checkbox' name='ckbSeat' value='{4}' onclick='checkSeat({5})' Style=\"position:static\" /><span Style=\"font-size: 90%;\">{6}</span><br /><span Style=\"font-size: 90%;\">{7}</span></div>", seatStyle, tipContent, seat.SeatNo, seat.SeatNo, seat.SeatNo, seat.SeatNo, seat.ShortSeatNo, used); } break; case "shortLeave": if (used == "暂离") { seatHtml.AppendFormat("<div class='{0}' onclick='tipShowPad(this,\"{1}\");checkSeat({2})' style='float: left; width: 75px;height: 70px;background-image: url('../Images/Pad/blue.png');background-repeat: no-repeat;vertical-align: middle;'><br/><input id='{3}' type='checkbox' name='ckbSeat' value='{4}' onclick='checkSeat({5})' Style=\"position:static\"/><span Style=\"font-size: 90%;\">{6}</span><br /><span Style=\"font-size: 90%;\">{7}</span></div>", seatStyle, tipContent, seat.SeatNo, seat.SeatNo, seat.SeatNo, seat.SeatNo, seat.ShortSeatNo, used); } break; case "onTime": if (onTime == "1") { seatHtml.AppendFormat("<div class='{0}' onclick='tipShowPad(this,\"{1}\");checkSeat({2})' style='float: left; width: 75px;height: 70px;vertical-align: middle;background-image: url('../Images/Pad/onTime.png');background-repeat: no-repeat;'><br/><input id='{3}' type='checkbox' name='ckbSeat' value='{4}' onclick='checkSeat({5})' Style=\"position:static\" /><span Style=\"font-size: 90%;\">{6}</span><br /><span Style=\"font-size: 90%;\">{7}</span></div>", seatStyle, tipContent, seat.SeatNo, seat.SeatNo, seat.SeatNo, seat.SeatNo, seat.ShortSeatNo, used); } break; case "allSeat": seatHtml.AppendFormat("<div class='{0}' onclick='tipShowPad(this,\"{1}\");checkSeat({2})' style='float: left; width: 75px;height: 70px;background-image: url('../Images/Pad/gray.png');background-repeat: no-repeat;vertical-align: middle;'><br/><input id='{3}' type='checkbox' name='ckbSeat' value='{4}' onclick='checkSeat({5})' Style=\"position:static\"/><span Style=\"font-size: 90%;\">{6}</span><br /><span Style=\"font-size: 90%;\">{7}</span></div>", seatStyle, tipContent, seat.SeatNo, seat.SeatNo, seat.SeatNo, seat.SeatNo, seat.ShortSeatNo, used); break; } } seatContent.InnerHtml = seatHtml.ToString(); }
public SeatsInfo getTripDetails(String tripId, String URL, String ConsumerKey, String ConsumerSecret) { SeatsInfo objSeatsLayout = null; try { String strResponse = objService.getTripDetails(tripId, URL, ConsumerKey, ConsumerSecret); DataSet ds = convertJsonStringToDataSet(strResponse); if (ds != null && ds.Tables.Count > 0 && ds.Tables["seats"].Rows.Count > 0) { objSeatsLayout = new SeatsInfo(); objSeatsLayout.Seats = new List<SeatLayout>(); #region Loop each seat and add seat details to objSeatsLayout foreach (DataRow item in ds.Tables["seats"].Rows) { SeatLayout objSeat = new SeatLayout(); objSeat.column = Int16.Parse(item["column"].ToString()); objSeat.fare = item["fare"].ToString(); objSeat.id = tripId; objSeat.isAvailableSeat = item["available"].ToString(); objSeat.isLadiesSeat = item["ladiesSeat"].ToString(); objSeat.length = Int16.Parse(item["length"].ToString()); objSeat.number = item["name"].ToString(); objSeat.row = Int16.Parse(item["row"].ToString()); objSeat.width = Int16.Parse(item["width"].ToString()); objSeat.zIndex = Int16.Parse(item["zIndex"].ToString()); objSeatsLayout.Seats.Add(objSeat); } #endregion } } catch (Exception ex) { // to do } return objSeatsLayout; }
/// <summary> /// 获取座位使用状态 /// </summary> /// <param name="seatNum"></param> /// <param name="readingRoomNum"></param> /// <returns></returns> public SeatBookUsingInfo GetSeatBookUsingStatus(string seatNum, string readingRoomNum) { SeatBookUsingInfo seatInfo = new SeatBookUsingInfo(); List <ReadingRoomInfo> rooms = seatManage.GetReadingRoomInfo(new List <string>() { readingRoomNum }); if (rooms.Count > 0) { seatInfo.InReadingRoom = rooms[0]; } else { throw new SeatBespeakException.BespeakSeatFailed("此阅览室不存在!"); } seatInfo.SeatInfo = seatManage.GetSeatInfoBySeatNum(seatNum); if (seatInfo.SeatInfo == null) { throw new SeatBespeakException.BespeakSeatFailed("此座位不存在!"); } //获取可预约座位 if (seatInfo.InReadingRoom.Setting.SeatBespeak.Used) { if (seatInfo.InReadingRoom.Setting.SeatBespeak.NowDayBespeak) { //当天预约信息 SeatLayout bespeakSeatLayout = seatManage.GetBeseakSeatLayout(readingRoomNum, DateTime.Now); SeatLayout useSeatLayout = seatManage.GetRoomSeatLayOut(readingRoomNum); foreach (KeyValuePair <string, Seat> uSeat in useSeatLayout.Seats) { if (uSeat.Value.SeatUsedState == EnterOutLogType.BespeakWaiting) { if (rooms[0].Setting.SeatBespeak.CanBookMultiSpan && rooms[0].Setting.SeatBespeak.SpecifiedTime) { if (!bespeakSeatLayout.Seats[uSeat.Key].IsSuspended) { if (bespeakSeatLayout.Seats[uSeat.Key].SeatNo == seatNum) { seatInfo.BookSeatInfo.Add(DateTime.Now, bespeakSeatLayout.Seats[uSeat.Key]); break; } } } continue; } if ((uSeat.Value.SeatUsedState == EnterOutLogType.Leave || uSeat.Value.SeatUsedState == EnterOutLogType.None) && !uSeat.Value.IsSuspended) { if (rooms[0].Setting.SeatBespeak.CanBookMultiSpan && rooms[0].Setting.SeatBespeak.SpecifiedTime) { if (bespeakSeatLayout.Seats[uSeat.Key].SeatNo == seatNum) { seatInfo.BookSeatInfo.Add(DateTime.Now, bespeakSeatLayout.Seats[uSeat.Key]); break; } } else { if (uSeat.Value.SeatNo == seatNum) { seatInfo.BookSeatInfo.Add(DateTime.Now, uSeat.Value); break; } } } } } //隔天预约信息 for (int i = 1; i <= seatInfo.InReadingRoom.Setting.SeatBespeak.BespeakBeforeDays; i++) { SeatLayout bespeakSeatLayout = seatManage.GetBeseakSeatLayout(readingRoomNum, DateTime.Now.AddDays(i)); foreach (Seat seat in bespeakSeatLayout.Seats.Values) { if (rooms[0].Setting.SeatBespeak.CanBookMultiSpan && rooms[0].Setting.SeatBespeak.SpecifiedTime) { if (seat.CanBeBespeak && seat.CanBespeakSpan.Count > 0 && !seat.IsSuspended) { if (seat.SeatNo == seatNum) { seatInfo.BookSeatInfo.Add(DateTime.Now.AddDays(i), seat); break; } } } else { if (seat.CanBeBespeak && seat.SeatUsedState != EnumType.EnterOutLogType.BookingConfirmation && !seat.IsSuspended) { if (seat.SeatNo == seatNum) { seatInfo.BookSeatInfo.Add(DateTime.Now.AddDays(i), seat); break; } } } } } } return(seatInfo); }
/// <summary> /// 根据阅览室编号获取阅览室布局 /// </summary> /// <param name="roomNum">阅览室编号</param> /// <returns></returns> public string GetRoomSeatLayout(string roomNum) { AJM_HandleResult result = new AJM_HandleResult(); try { if (string.IsNullOrEmpty(roomNum)) { result.Result = false; result.Msg = "阅览室编号不能为空!"; return(JSONSerializer.Serialize(result)); } AJM_SeatLayout ajmSeatLayout = new AJM_SeatLayout(); List <ReadingRoomInfo> roomInfos = SeatManageDateService.GetReadingRoomInfo(new List <string> { roomNum }); if (roomInfos.Count < 0) { result.Result = false; result.Msg = string.Format("编号为{0}的阅览室不存在!", roomNum); return(JSONSerializer.Serialize(result)); } SeatLayout seatLayout = roomInfos[0].SeatList; ajmSeatLayout.ColumsCount = seatLayout.SeatCol; ajmSeatLayout.RowsCount = seatLayout.SeatRow; ajmSeatLayout.IsUpdate = false; foreach (var seat in seatLayout.Seats.Values) { AJM_Element ajmElement = new AJM_Element(); ajmElement.Angle = seat.RotationAngle; ajmElement.BaseHeight = seat.BaseHeight; ajmElement.BaseWidth = seat.BaseWidth; ajmElement.SeatNo = seat.SeatNo; ajmElement.ElementType = "Seat"; ajmElement.HasPower = seat.HavePower; ajmElement.X = seat.PositionX; ajmElement.Y = seat.PositionY; ajmElement.Remark = seat.ShortSeatNo; ajmSeatLayout.ElementList.Add(ajmElement); } foreach (AJM_Element ajmElement in seatLayout.Notes.Select(note => new AJM_Element { Angle = note.RotationAngle, BaseHeight = note.BaseHeight, BaseWidth = note.BaseWidth, ElementType = note.Type.ToString(), X = note.PositionX, Y = note.PositionY, Remark = note.Remark })) { ajmSeatLayout.ElementList.Add(ajmElement); } result.Result = true; result.Msg = JSONSerializer.Serialize(ajmSeatLayout); return(JSONSerializer.Serialize(result)); } catch (Exception ex) { WriteLog.Write(string.Format("获取阅览室布局图遇到异常:{0}", ex.Message)); result.Result = false; result.Msg = "获取阅览室布局执行遇到异常!"; return(JSONSerializer.Serialize(result)); } }
/// <summary> /// 获取阅览室可预约的座位 /// </summary> /// <param name="roomNo">阅览室编号</param> /// <param name="bespeakTime"></param> /// <returns></returns> public string GetRoomBesapeakState(string roomNo, string bespeakTime) { AJM_HandleResult result = new AJM_HandleResult(); try { if (string.IsNullOrEmpty(roomNo) || string.IsNullOrEmpty(bespeakTime)) { result.Result = false; result.Msg = "阅览室编号或预约时间不能为空!"; return(JSONSerializer.Serialize(result)); } //如果预约日期是当天,获取当天可用座位(排除已被预约座位) DateTime besppeakDate; if (!DateTime.TryParse(bespeakTime, out besppeakDate)) { result.Result = false; result.Msg = "日期格式不正确!"; return(JSONSerializer.Serialize(result)); } if (besppeakDate.Date < DateTime.Now.Date) { result.Result = false; result.Msg = "查询日期不能早于当天日期!"; return(JSONSerializer.Serialize(result)); } List <ReadingRoomInfo> readingRoomInfos = SeatManageDateService.GetReadingRoomInfo(new List <string> { roomNo }); if (readingRoomInfos.Count < 1) { result.Result = false; result.Msg = "阅览室不存在!"; return(JSONSerializer.Serialize(result)); } if (!readingRoomInfos[0].Setting.SeatBespeak.Used) { result.Result = false; result.Msg = "当前阅览室不提供预约!"; return(JSONSerializer.Serialize(result)); } if ((besppeakDate.Date - DateTime.Now.Date).Days > readingRoomInfos[0].Setting.SeatBespeak.BespeakBeforeDays) { result.Result = false; result.Msg = "您选择的日期尚未开放预约!"; return(JSONSerializer.Serialize(result)); } if (besppeakDate.Date == DateTime.Now.Date && !readingRoomInfos[0].Setting.SeatBespeak.NowDayBespeak) { result.Result = false; result.Msg = "当前阅览室未开放当天预约!"; return(JSONSerializer.Serialize(result)); } if (besppeakDate.Date != DateTime.Now.Date && !readingRoomInfos[0].Setting.IsCanBespeakSeat(besppeakDate)) { result.Result = false; result.Msg = "当前时间暂未开放预约!"; return(JSONSerializer.Serialize(result)); } List <AJM_BespeakSeat> ajmSeats = new List <AJM_BespeakSeat>(); //获取当天可预约座位 if (besppeakDate.Date == DateTime.Now.Date) { SeatLayout seatLayout = SeatManageDateService.GetRoomSeatLayOut(roomNo); foreach (Seat seat in seatLayout.Seats.Values) { if (!seat.IsSuspended && seat.SeatUsedState == EnterOutLogType.Leave) { AJM_BespeakSeat ajmSeat = new AJM_BespeakSeat(); ajmSeat.SeatNo = seat.SeatNo; ajmSeat.SeatShortNo = seat.ShortSeatNo; ajmSeats.Add(ajmSeat); } } } else { //获取选择日期提供预约的座位 SeatLayout seats = SeatManageDateService.GetBeseakSeatLayout(roomNo, besppeakDate); foreach (Seat seat in seats.Seats.Values) { if (seat.CanBeBespeak && seat.SeatUsedState != EnterOutLogType.BookingConfirmation && !seat.IsSuspended) { AJM_BespeakSeat ajmSeat = new AJM_BespeakSeat(); ajmSeat.SeatNo = seat.SeatNo; ajmSeat.SeatShortNo = seat.ShortSeatNo; ajmSeats.Add(ajmSeat); } } } if (ajmSeats.Count < 1) { result.Result = false; result.Msg = "当前时间没有可预约的座位!"; return(JSONSerializer.Serialize(result)); } AJM_BesapeakRoom ajmroom = new AJM_BesapeakRoom(); ajmroom.RoomNo = readingRoomInfos[0].No; ajmroom.RoomName = readingRoomInfos[0].Name; ajmroom.BespeakDate = besppeakDate.ToShortDateString(); ajmroom.SeatList = ajmSeats; ajmroom.IsCanSelectTime = readingRoomInfos[0].Setting.SeatBespeak.SpecifiedBespeak || besppeakDate.Date != DateTime.Now.Date; ajmroom.CheckBeforeTime = int.Parse(readingRoomInfos[0].Setting.SeatBespeak.ConfirmTime.BeginTime); ajmroom.CheckLastTime = int.Parse(readingRoomInfos[0].Setting.SeatBespeak.ConfirmTime.EndTime); ajmroom.CheckKeepTime = (int)readingRoomInfos[0].Setting.SeatBespeak.SeatKeepTime; //if (!ajmroom.IsCanSelectTime) //{ // ajmroom.CheckBeforeTime = 0; // ajmroom.CheckLastTime = (int)readingRoomInfos[0].Setting.SeatBespeak.SeatKeepTime; //} if (readingRoomInfos[0].Setting.SeatBespeak.SpecifiedBespeak) { List <DateTime> timeSpans = readingRoomInfos[0].Setting.GetSelectTimeList(besppeakDate); foreach (var time in timeSpans) { ajmroom.TimeList.Add(time.ToShortTimeString()); } } else { ajmroom.TimeList.Add(readingRoomInfos[0].Setting.DateOpenTime(besppeakDate).ToShortTimeString()); } result.Result = true; result.Msg = JSONSerializer.Serialize(ajmroom); return(JSONSerializer.Serialize(result)); } catch (Exception ex) { WriteLog.Write(string.Format("获取当前可预约座位列表遇到异常:{0}", ex.Message)); result.Result = false; result.Msg = "获取当前阅览室可预约座位执行越到异常!"; return(JSONSerializer.Serialize(result)); } }