示例#1
0
        /// <summary>
        /// Map the basic fields for the Room table to the Room model object
        /// </summary>
        /// <param name="record">The SqlDataReader with the executed query result</param>
        /// <param name="prefix">a prefix used to identify fields for the Room model  in the resultset if required</param>        
        /// <returns>An instance of Model.Room.Room</returns>
        internal static Model.Room.Room MapRecord(IDataRecord record, string prefix = "")
        {
            var room = new Model.Room.Room
            {
                Id = DbHelper.ConvertValue<int>(record[prefix + Parameters.Id]),
                BusinessId = DbHelper.ConvertValue<long>(record[prefix + Parameters.BusinessId]),
                Name = DbHelper.ConvertValue<string>(record[prefix + Parameters.Name]),
                RoomStatus = EnumEntityMapper.MapRecord<RoomStatus>(record, Parameters.RoomStatus.ToString()),
                IsAvailableOnline = DbHelper.ConvertValue<bool>(record[prefix + Parameters.IsAvailableOnline]),
                SellingPriority = DbHelper.ConvertValue<int?>(record[prefix + Parameters.SellingPriority]),
                DisplayOrder = DbHelper.ConvertValue<int?>(record[prefix + Parameters.DisplayOrder]),
                IsCombined = DbHelper.ConvertValue<bool>(record[prefix + Parameters.IsCombined]),
                RoomTypeId = DbHelper.ConvertValue<int>(record[prefix + Parameters.RoomTypeId]),
                RoomStatusCode = DbHelper.ConvertValue<string>(record[prefix + Parameters.RoomStatusCode])
            };

            return AuditFieldsHelper.MapRecord(room, record, prefix);
        }
示例#2
0
        /// <summary>
        /// Create Room with the name, type id and business id
        /// </summary>
        /// <param name="roomName">Room Name</param>
        /// <param name="roomTypeId">Room Type Id</param>
        /// <param name="businessId">Business Id</param>
        /// <returns>Room</returns>
        public int CreateRoom(string roomName, int roomTypeId, long businessId)
        {
            if (string.IsNullOrEmpty(roomName))
            {
                throw new ValidationException(ErrorFactory.CreateAndLogError(Errors.SRVEX30086, "RoomManager.CreateRoom",
                                                                                 additionalDescriptionParameters: (new object[] { businessId })));
            }

            Model.Room.Room existingRoom = roomDao.GetByName(roomName, businessId);

            if (existingRoom != null)
            {
                // check status, if in delete status just modify to active state
                if (existingRoom.RoomStatusCode == RoomStatusCodes.DELETED)
                {
                    existingRoom.RoomTypeId = roomTypeId;
                    existingRoom.RoomStatusCode = RoomStatusCodes.ACTIVE;
                    Modify(existingRoom);
                    return existingRoom.Id;
                }

                // Otherwise throw validation exception
                throw new ValidationException(ErrorFactory.CreateAndLogError(Errors.SRVEX30085, "RoomManager.CreateRoom",
                                                                             additionalDescriptionParameters: (new object[] { businessId })));
            }

            int displayOrder = roomDao.GetNextDisplayOrder(businessId);
            int sellingPriority = roomDao.GetNextSellingPriority(businessId);
            var room = new Model.Room.Room
                {
                    Name = roomName,
                    BusinessId = businessId,
                    IsAvailableOnline = true,
                    IsCombined = false,
                    RoomStatusCode = RoomStatusCodes.ACTIVE,
                    RoomTypeId = roomTypeId,
                    SellingPriority = sellingPriority,
                    DisplayOrder = displayOrder,
                };

            using (var businessTransaction = new BusinessTransaction())
            {
                 
                roomDao.Create(room);

                businessTransaction.Commit();
            }

            eventTrackingManager.CreateBusinessEventAsync(businessId,
                                                              BusinessEventTypesEnum.RoomAdded,
                                                              room.Id.ToString());

            return room.Id;

        }
示例#3
0
            public void CreateRoomOfDeletedRoomUpdatesStatusAndRoomType()
            {
                // Arrange
                const string EXISTING_ROOM_NAME = "Room A";
                const int BUSINESS_ID = 1003;
                const int ROOM_TYPE_ID = 234;
                const int UPDATED_ROOM_TYPE_ID = 345;
                const int ROOM_ID = 5;

                var roomManager = new RoomManager();
                var mockRoom = new Model.Room.Room
                                   {
                                       Id = ROOM_ID,
                                       BusinessId = BUSINESS_ID,
                                       RoomTypeId = ROOM_TYPE_ID,
                                       Name = EXISTING_ROOM_NAME,
                                       RoomStatusCode = RoomStatusCodes.DELETED
                                   };

                var roomDao = MockRepository.GenerateStub<IRoomDao>();
                roomDao.Stub(r => r.GetByName(EXISTING_ROOM_NAME, BUSINESS_ID)).Return(mockRoom).Repeat.Twice();
                roomDao.Stub(r => r.Modify(Arg<Model.Room.Room>.Matches(rm => rm.Id == ROOM_ID &&
                                                                              rm.BusinessId == BUSINESS_ID &&
                                                                              rm.RoomTypeId == UPDATED_ROOM_TYPE_ID &&
                                                                              rm.Name == EXISTING_ROOM_NAME))).Return(true).Repeat.Once();
                roomManager.RoomDao = roomDao;
                
                var bookingManagerMock = MockRepository.GenerateMock<IBookingManager>();
                bookingManagerMock.Expect(bm => bm.GetByRoom(Arg<int>.Is.Equal(ROOM_ID), Arg<string>.Is.Anything)).Return(new List<Booking>()).Repeat.Once();
                roomManager.BookingManager = bookingManagerMock;

                var businessEventDao = MockRepository.GenerateStub<IEventTrackingManager>();
                businessEventDao.Expect(b => b.CreateBusinessEventAsync(Arg<long>.Is.Equal(BUSINESS_ID), Arg<BusinessEventTypesEnum>.Is.Equal(BusinessEventTypesEnum.RoomModified), Arg<string>.Is.Anything, Arg<string>.Is.Anything));
                roomManager.EventTrackingManager = businessEventDao;

                // Act
                int createdRoomId = roomManager.CreateRoom(EXISTING_ROOM_NAME, UPDATED_ROOM_TYPE_ID, BUSINESS_ID);

                // Assert
                Assert.AreEqual(ROOM_ID, createdRoomId, "Created room id of deleted room should have been returned");
                businessEventDao.VerifyAllExpectations();
                roomDao.VerifyAllExpectations();
                bookingManagerMock.VerifyAllExpectations();
            }