Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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);
        }