/// <summary>
        /// Maps to room facility view model
        /// </summary>
        /// <param name="facilityList"></param>
        /// <param name="roomForHotel"></param>
        /// <returns>List<RoomFacilityViewModel></returns>
        public static List <RoomFacilityViewModel> MapRoomFacilitiesToRoomFacilityViewModel(List <RoomFacility> facilityList, List <Room> roomForHotel = null)
        {
            var modelList = new List <RoomFacilityViewModel>();

            foreach (var item in facilityList)
            {
                var roomFacility = AutoMapper.Mapper.Map <RoomFacility, RoomFacilityViewModel>(item);
                roomFacility.IsSelected = false;
                if (roomForHotel != null)
                {
                    foreach (var room in roomForHotel)
                    {
                        FacilitiesRoomList facilitiesRoomList = new FacilitiesRoomList
                        {
                            RoomTypeId = room.Id,
                            RoomName   = room.Name,
                            IsSelected = false
                        };
                        roomFacility.FacilitiesRoomList.Add(facilitiesRoomList);
                    }
                }
                modelList.Add(roomFacility);
            }
            return(modelList);
        }
        public async Task TestCreateRoomFacilityRelationEdit_SuccessOkResponse()
        {
            var id = 1;
            //Arrange
            RoomFacilityGroupListViewModel roomFacilities = new RoomFacilityGroupListViewModel()
            {
                HotelId     = 1,
                ObjectState = ObjectState.Added,
            };
            RoomFacilityGroupViewModel facilityGroup = new RoomFacilityGroupViewModel()
            {
                Id   = 1,
                Name = "Group1",
            };
            RoomFacilityTypeViewModel facilityType = new RoomFacilityTypeViewModel()
            {
                FacilityGroupId = 1,
            };
            RoomFacilityViewModel facility = new RoomFacilityViewModel()
            {
                Id              = 1,
                Name            = "facility1",
                ObjectState     = ObjectState.Deleted,
                FacilityGroupId = 1,
                IsSelected      = true
            };
            FacilitiesRoomList facilityRoom = new FacilitiesRoomList()
            {
                RoomTypeId  = 1,
                RoomName    = "Room1",
                IsSelected  = true,
                ObjectState = ObjectState.Deleted
            };

            facility.FacilitiesRoomList.Add(facilityRoom);
            facilityType.FacilityList.Add(facility);
            facilityGroup.RoomFacilityTypes.Add(facilityType);
            roomFacilities.FacilityGroupList.Add(facilityGroup);
            mockAmenitiesRepository.Setup(a => a.InsertAndUpdateRoomFacilityRelation(It.IsAny <RoomFacilityGroupListViewModel>(), It.IsAny <string>())).Returns(Task.FromResult(new BaseResult <long>()
            {
                Result = 1
            }));
            //Act
            IActionResult result = await mockAmenitiesController.CreateRoomFacilityRelation(roomFacilities);

            BaseResult <long> finalResult = (result as Microsoft.AspNetCore.Mvc.OkObjectResult).Value as BaseResult <long>;

            //Assert
            Assert.AreEqual(((Microsoft.AspNetCore.Mvc.ObjectResult)result).StatusCode, 200);
            Assert.IsNotNull(finalResult);
            Assert.IsTrue(!finalResult.IsError);
            Assert.IsTrue(finalResult.Result == id);
        }
        public void TestInsertAndUpdateRoomFacilityRelation_SaveRoomFacilities_Success()
        {
            var    id       = 1;
            string userName = "******";

            //Arrange
            RoomFacilityGroupListViewModel roomFacilities = new RoomFacilityGroupListViewModel()
            {
                HotelId     = 1,
                ObjectState = ObjectState.Added,
            };
            RoomFacilityGroupViewModel facilityGroup = new RoomFacilityGroupViewModel()
            {
                Id   = 1,
                Name = "Group1",
            };
            RoomFacilityTypeViewModel facilityType = new RoomFacilityTypeViewModel()
            {
                FacilityGroupId = 1,
            };
            RoomFacilityViewModel facility = new RoomFacilityViewModel()
            {
                Id              = 1,
                Name            = "facility1",
                ObjectState     = ObjectState.Added,
                FacilityGroupId = 1,
                IsSelected      = true
            };
            FacilitiesRoomList facilityRoom = new FacilitiesRoomList()
            {
                RoomTypeId  = 1,
                RoomName    = "Room1",
                IsSelected  = true,
                ObjectState = ObjectState.Added
            };

            facility.FacilitiesRoomList.Add(facilityRoom);
            facilityType.FacilityList.Add(facility);
            facilityGroup.RoomFacilityTypes.Add(facilityType);
            roomFacilities.FacilityGroupList.Add(facilityGroup);
            iRoomFacilityRelationLibrary.Setup(a => a.InsertEntityList(It.IsAny <List <RoomFacilityRelation> >())).Returns(Task.FromResult(new BaseResult <long>()
            {
                Result = id
            })).Verifiable();
            //Act
            var result = amenitiesRepository.InsertAndUpdateRoomFacilityRelation(roomFacilities, userName);

            //Assert
            iRoomFacilityTypeLibrary.Verify();
            Assert.IsNotNull(result);
            Assert.IsTrue(result.Result.Result == id);
        }
        public async Task TestCreateRoomFacilityRelation_Failed_Error()
        {
            //Arrange
            RoomFacilityGroupListViewModel roomFacilities = new RoomFacilityGroupListViewModel()
            {
                HotelId     = 1,
                ObjectState = ObjectState.Added,
            };
            RoomFacilityGroupViewModel facilityGroup = new RoomFacilityGroupViewModel()
            {
                Id   = 1,
                Name = "Group1",
            };
            RoomFacilityTypeViewModel facilityType = new RoomFacilityTypeViewModel()
            {
                FacilityGroupId = 1,
            };
            RoomFacilityViewModel facility = new RoomFacilityViewModel()
            {
                Id   = 1,
                Name = "facility1",
            };
            FacilitiesRoomList facilityRoom = new FacilitiesRoomList()
            {
                RoomTypeId = 1,
                RoomName   = "Room1",
                IsSelected = true,
            };

            facility.FacilitiesRoomList.Add(facilityRoom);
            facilityType.FacilityList.Add(facility);
            facilityGroup.RoomFacilityTypes.Add(facilityType);
            roomFacilities.FacilityGroupList.Add(facilityGroup);
            mockAmenitiesRepository.Setup(a => a.InsertAndUpdateRoomFacilityRelation(It.IsAny <RoomFacilityGroupListViewModel>(), It.IsAny <string>())).Returns(Task.FromResult(new BaseResult <long>()
            {
                IsError          = true,
                ExceptionMessage = Helper.Common.GetMockException(),
            })).Verifiable();
            //Act

            IActionResult result = await mockAmenitiesController.CreateRoomFacilityRelation(roomFacilities);

            //Assert
            mockAmenitiesRepository.Verify();
            Assert.AreEqual(((Microsoft.AspNetCore.Mvc.ObjectResult)result).StatusCode, 500);
        }
        public async Task TestCreateRoomFacilityRelation_Failed_BadRequest1()
        {
            //Arrange
            RoomFacilityGroupListViewModel roomFacilities = new RoomFacilityGroupListViewModel()
            {
                HotelId     = 1,
                ObjectState = ObjectState.Added,
            };
            RoomFacilityGroupViewModel facilityGroup = new RoomFacilityGroupViewModel()
            {
                Id   = 1,
                Name = "Group1",
            };
            RoomFacilityTypeViewModel facilityType = new RoomFacilityTypeViewModel()
            {
                FacilityGroupId = 1,
            };
            RoomFacilityViewModel facility = new RoomFacilityViewModel()
            {
                Id   = 1,
                Name = "facility1",
            };
            FacilitiesRoomList facilityRoom = null;

            facility.FacilitiesRoomList.Add(facilityRoom);
            facilityType.FacilityList.Add(facility);
            facilityGroup.RoomFacilityTypes.Add(facilityType);
            roomFacilities.FacilityGroupList.Add(facilityGroup);
            mockAmenitiesRepository.Setup(a => a.InsertAndUpdateRoomFacilityRelation(It.IsAny <RoomFacilityGroupListViewModel>(), It.IsAny <string>())).Returns(Task.FromResult(new BaseResult <long>()
            {
                Message = "Room must be selected"
            }));
            //Act
            var result = await mockAmenitiesController.CreateRoomFacilityRelation(roomFacilities);

            //Assert
            Assert.AreEqual(((BadRequestObjectResult)result).StatusCode, 400);
        }
        public void TestInsertAndUpdateRoomFacilityRelation_DeleteRoomFacilities_Success()
        {
            var    id       = 1;
            string userName = "******";
            //Arrange
            RoomFacilityGroupListViewModel roomFacilities = new RoomFacilityGroupListViewModel()
            {
                HotelId     = 1,
                ObjectState = ObjectState.Added,
            };
            RoomFacilityGroupViewModel facilityGroup = new RoomFacilityGroupViewModel()
            {
                Id   = 1,
                Name = "Group1",
            };
            RoomFacilityTypeViewModel facilityType = new RoomFacilityTypeViewModel()
            {
                FacilityGroupId = 1,
            };
            RoomFacilityViewModel facility = new RoomFacilityViewModel()
            {
                Id              = 1,
                Name            = "facility1",
                ObjectState     = ObjectState.Deleted,
                FacilityGroupId = 1,
                IsSelected      = true
            };
            FacilitiesRoomList facilityRoom = new FacilitiesRoomList()
            {
                RoomTypeId  = 1,
                RoomName    = "Room1",
                IsSelected  = true,
                ObjectState = ObjectState.Unchanged
            };

            facility.FacilitiesRoomList.Add(facilityRoom);
            facilityType.FacilityList.Add(facility);
            facilityGroup.RoomFacilityTypes.Add(facilityType);
            roomFacilities.FacilityGroupList.Add(facilityGroup);
            iRoomFacilityRelationLibrary.Setup(a => a.UpdateEntityList(It.IsAny <List <RoomFacilityRelation> >())).Returns(Task.FromResult(new BaseResult <bool>()
            {
                Result = true
            })).Verifiable();
            var baseResult = new BaseResult <List <RoomFacilityRelation> >()
            {
                Result = new List <RoomFacilityRelation>()
                {
                    new RoomFacilityRelation()
                    {
                        Id = 1, IsDeleted = false, FacilityId = 1
                    }
                }
            };
            var pred = new Func <RoomFacilityRelation, bool>(x => x.FacilityId == id && x.IsDeleted == false);

            iRoomFacilityRelationLibrary.Setup(a => a.GetListByPredicate(It.Is <Func <RoomFacilityRelation, bool> >(x => x.GetType() == pred.GetType()))).Returns(Task.FromResult(baseResult)).Verifiable();
            //Act
            var result = amenitiesRepository.InsertAndUpdateRoomFacilityRelation(roomFacilities, userName);

            //Assert
            iRoomFacilityTypeLibrary.Verify();
            Assert.IsNotNull(result);
            Assert.IsTrue(result.Result.Result == 1);
        }