public async Task <List <LinkRoomDto> > GetLinkRoomListAsync(string token, int guestId) { var guestList = await GuestRepository.GetLinkRoomListByGuestIdAsync(token, guestId); string[] roomArray = guestList.Select(x => x.RoomNo).Distinct().ToArray(); var roomList = await RoomCodeRep.GetRoomInfoListByNoAsync(token, roomArray); string[] sysCodeArray = roomList.Select(x => x.RoomTypeCode).Distinct().ToArray(); var roomTypeList = await SysCodeRep.GetCodeListByMutliTypesAsync(token, new string[] { SystemCodeTypes.ROOM_CATEGORY }); roomTypeList = roomTypeList.Where(x => sysCodeArray.Contains(x.SysCode)).ToList(); List <LinkRoomDto> list = new List <LinkRoomDto>(); foreach (var item in roomList) { LinkRoomDto roomDto = new LinkRoomDto(); roomDto.GuestList = guestList.Where(x => x.RoomNo == item.RoomNo) .Select(x => new LinkGuestDto { GuestId = x.Id, GuestName = x.ChineseName, RoomNo = x.RoomNo }).ToList(); roomDto.RoomName = roomTypeList.Where(x => x.SysCode == item.RoomNo).Select(x => x.SysCodeName).FirstOrDefault(); roomDto.RoomNo = item.RoomNo; list.Add(roomDto); } return(list); }
public async Task <RoomListDto> LoadRoomListAsync(string token) { var roomCodeList = await RoomCodeRep.LoadRoomSymbolListAsync(token); var sysCodeList = await SysCodeRep.GetCodeListByMutliTypesAsync(token, new string[] { SystemCodeTypes.ROOM_CATEGORY, SystemCodeTypes.ROOM_GALLERY_CODE, SystemCodeTypes.ROOM_FLOOR_CODE, SystemCodeTypes.ROOM_STATE_TYPE }); var guestList = await GuestRepository.GetListByStatusAsync(token, GuestInfoState.I); //在住客人列表 var customerNOArray = guestList.Select(x => x.Id).ToArray(); //在住客人账号列表 var guestAccList = await AccRepository.GetListByGuestIdsAsync(token, customerNOArray); var guestBookingList = await GuestRepository.GetListByStatusAsync(token, GuestInfoState.N); guestBookingList = guestBookingList.Where(x => (x.CheckInDate.HasValue && x.CheckInDate == DateTime.Today) && !x.RoomNo.IsEmpty()).ToList();//今日预低客人信息 RoomListDto roomListGuiDto = new RoomListDto(); roomListGuiDto.RoomList = BuildRoomList(sysCodeList, roomCodeList, guestAccList, guestList, guestBookingList); roomListGuiDto.GalleryList = BuildGalleryList(sysCodeList, roomCodeList); roomListGuiDto.RoomTypeList = BuildRoomTypeList(sysCodeList); roomListGuiDto.RoomStateList = BuildRoomStateList(sysCodeList); roomListGuiDto.RoomStatistic = BuildRoomStatisticInfo(roomCodeList); return(roomListGuiDto); }
public async Task <bool> ApplyCheckinAsync(string token, SumbitCheckInDto checkinObj) { bool result = false; //if (1 == 1) // return result; string[] openRoomList = new string[] { checkinObj.RoomNo }; var routineRoomList = await RoomRoutineRep.GetRoomNoListByStatusAndDateAsync(token, new string[] { RoomRoutineTypes.B, RoomRoutineTypes.I }, checkinObj.CheckinDate, checkinObj.CheckoutDate); var guestRoomList = await GuestRepository.GetRoomNoListByStatusAndDateAsync(token, new string[] { GuestInfoState.I, GuestInfoState.N }, checkinObj.CheckinDate, checkinObj.CheckoutDate); var roomList = await RoomCodeRep.LoadRoomSymbolListAsync(token); var roomCodeList = roomList.Select(y => y.RoomNo).Where(x => !x.IsEmpty()).ToList(); //从现有的房号列表中取对应的客人房号 var limitedGuestRooms = guestRoomList.Select(x => x.RoomNo).Where(x => roomCodeList.Contains(x)).ToList(); //从现有的房号列表中取对应的房务房号 var limitedRoutineRooms = routineRoomList.Select(x => x.RoomNo).Where(x => roomCodeList.Contains(x)).ToList(); var existsGuestRooms = limitedGuestRooms.Where(x => openRoomList.Contains(x)); var existsRoutineRooms = limitedRoutineRooms.Where(x => openRoomList.Contains(x)); var invalidRooms = existsGuestRooms.Union(existsRoutineRooms).ToList(); if ((invalidRooms != null && invalidRooms.Count() > 0)) { throw new Exception(string.Format("所选房间({0})已被占用,请重新选择!", invalidRooms.Join())); } //事务(工作单元)操作 using (IUnitOfWork uow = RoomFactory.Create <IUnitOfWork, ISession>(token, IsolationLevel.ReadCommitted)) { foreach (var guest in checkinObj.GuestList) { result = await GuestRepository.AddNewGuestAsync(token, guest, uow); if (!result) { break; } } int chummageId = checkinObj.GuestList.Where(x => x.AccountType == 1).Select(x => x.Id).FirstOrDefault();// 主结人帐号 foreach (var guest in checkinObj.GuestList) { guest.ChummageId = chummageId; result = await GuestRepository.UpdateGuestAsync(token, guest, uow); if (!result) { break; } } //OperateLogInfo logInfo = new OperateLogInfo(); //logInfo.OperateType = "Z_2"; //logInfo.OperateTime = DateTime.Now; //logInfo.UserCode = ""; //logInfo.Remark = "于" + DateTime.Now.ToString() + "登陆,电脑名称-" + Net.Host + ",登陆IP地址-" + Net.Ip; ; //logInfo.OperateRemark = "登录"; //logInfo.ActionName = "系统登录-" + user.UserName; //await LogRepository.SaveLog(token, logInfo);//写入操作日志记录 } return(result); }