Exemplo n.º 1
0
        //[ValidateModel]
        public async Task <IActionResult> CreateChildrenAndExtraBedPolicy([FromBody] ChildrenAndExtraBedPoliciesViewModel ChildrenAndExtraBedPoliciesViewModel)
        {
            ChildrenAndExtraBedPolicies childrenAndExtraBedPoliciesResult = null;
            string userName = base.LoggedInUserName;

            if (ChildrenAndExtraBedPoliciesViewModel != null && ChildrenAndExtraBedPoliciesViewModel.HotelId > default(int))
            {
                //Fetch list of room by id
                List <Room> roomListResult = new List <Room>();
                var         maxChildAndExtraBedPerRoomList = ChildrenAndExtraBedPoliciesViewModel.MaxChildAndExtraBedPerRoomList;
                BaseResult <List <Room> > roomsResult      = await iPolicies.GetRoomsById(ChildrenAndExtraBedPoliciesViewModel.MaxChildAndExtraBedPerRoomList).ConfigureAwait(false);

                if (roomsResult.IsError && roomsResult.ExceptionMessage != null)
                {
                    return(new StatusCodeResult(500));
                }
                var roomList = roomsResult.Result;

                //Map and retrieve childrenAndExtraBedPolicy and updated roomlist
                PoliciesRequestMapper.MapChildAndExtraBedPolicy(ref childrenAndExtraBedPoliciesResult, ref roomListResult, roomList, ChildrenAndExtraBedPoliciesViewModel, userName);

                //Save or Update Child and Extra Bed Policy
                BaseResult <ChildrenAndExtraBedPolicies> addOrUpdateChildrenAndExtraBedPoliciesResult = await iPolicies.SaveAndUpdateChildAndExtraBedPolicy(childrenAndExtraBedPoliciesResult, ChildrenAndExtraBedPoliciesViewModel.ObjectState).ConfigureAwait(false);

                if (addOrUpdateChildrenAndExtraBedPoliciesResult.IsError && addOrUpdateChildrenAndExtraBedPoliciesResult.ExceptionMessage != null)
                {
                    return(new StatusCodeResult(500));
                }
                else if (addOrUpdateChildrenAndExtraBedPoliciesResult.Result == null)
                {
                    return(new NoContentResult());
                }
                else if (addOrUpdateChildrenAndExtraBedPoliciesResult.Message != null)
                {
                    return(BadRequest(addOrUpdateChildrenAndExtraBedPoliciesResult));
                }
                //update list of room
                if (roomListResult.Count > 0)
                {
                    BaseResult <bool> updateRoomListResult = await iPolicies.UpdateRoomList(roomListResult).ConfigureAwait(false);

                    if (updateRoomListResult.IsError && updateRoomListResult.ExceptionMessage != null)
                    {
                        return(new StatusCodeResult(500));
                    }
                    else if (!updateRoomListResult.Result)
                    {
                        return(new NotFoundResult());//404
                    }
                }
                return(Ok(addOrUpdateChildrenAndExtraBedPoliciesResult));
            }

            return(BadRequest());//400
        }
        public async Task TestGetRoomsById_positive_Predicate_sample()
        {
            //Arrange
            List <MaxChildAndExtraBedPerRoomViewModel> maxChildAndExtraBedPerRoomViewModelList = new List <MaxChildAndExtraBedPerRoomViewModel>();

            Room room       = new Room();
            var  baseResult = new BaseResult <List <Room> >()
            {
                Result = new List <Room>()
                {
                    room
                }
            };
            var pred = new Func <Room, bool>(x => x.Id == 332 && x.IsActive && !x.IsDeleted);

            iRoomConnectionLibrary.Setup(x => x.GetListByPredicate(It.Is <Func <Room, bool> >(y => y.GetType() == pred.GetType()))).Returns(Task.FromResult(baseResult));
            //Act
            Task <BaseResult <List <Room> > > result = policiesRepository.GetRoomsById(maxChildAndExtraBedPerRoomViewModelList);

            //Assert
            Assert.IsTrue(result.Result != null);
            Assert.IsTrue(result.Result is BaseResult <List <Room> >);
        }