Exemplo n.º 1
0
        /// <summary>
        /// Creates new hotel meal or edits the hotel meal
        /// </summary>
        /// <param name="hotelMealRequest"></param>
        /// <param name="objectState"></param>
        /// <param name="userName"></param>
        /// <returns>Task<BaseResult<long>></returns>
        public async Task <BaseResult <ChildrenAndExtraBedPolicies> > SaveAndUpdateChildAndExtraBedPolicy(ChildrenAndExtraBedPolicies childrenAndExtraBedPoliciesRequest, ObjectState?objectState)
        {
            BaseResult <ChildrenAndExtraBedPolicies> result = new BaseResult <ChildrenAndExtraBedPolicies>();

            result.Result = new ChildrenAndExtraBedPolicies();
            if (objectState == ObjectState.Added)
            {
                var insertResult = await iChildrenAndExtraBedPoliciesConnectionLibrary.InsertEntity(childrenAndExtraBedPoliciesRequest).ConfigureAwait(false);

                if (insertResult == null)
                {
                    return(result = null);
                }
                else if (insertResult.IsError || insertResult.ExceptionMessage != null)
                {
                    result.IsError          = true;
                    result.ExceptionMessage = insertResult.ExceptionMessage;
                    return(result);
                }

                result.Result.Id = (int)insertResult.Result;
                return(result);
            }
            else if (objectState == ObjectState.Modified)
            {
                var childrenAndExtraBedPoliciesResult = await iChildrenAndExtraBedPoliciesConnectionLibrary.GetListByPredicate(x => x.HotelId == childrenAndExtraBedPoliciesRequest.HotelId && x.IsActive).ConfigureAwait(false);

                if (childrenAndExtraBedPoliciesResult.Result.Count > 0 && childrenAndExtraBedPoliciesResult != null)
                {
                    var updatedChildrenAndExtraBedPolicy = PoliciesRequestMapper.AutoMapperChildrenAndExtraBedPolicy(childrenAndExtraBedPoliciesRequest, childrenAndExtraBedPoliciesResult.Result.First());

                    var updateResult = await iChildrenAndExtraBedPoliciesConnectionLibrary.UpdateEntityByDapper(updatedChildrenAndExtraBedPolicy).ConfigureAwait(false);

                    if (updateResult == null)
                    {
                        return(result = null);
                    }
                    else if (updateResult.IsError || updateResult.ExceptionMessage != null)
                    {
                        result.IsError          = true;
                        result.ExceptionMessage = updateResult.ExceptionMessage;
                        return(result);
                    }
                    else if (updateResult.Result)
                    {
                        result.Result.Id = childrenAndExtraBedPoliciesRequest.Id;
                    }
                    return(result);
                }
                else
                {
                    result.IsError   = true;
                    result.ErrorCode = (int)coreHelper.Constants.ErrorCodes.NoChildrenAndExtraBedPolicyOfID;
                    result.Message   = string.Format(coreHelper.Constants.ErrorMessage.NoChildrenAndExtraBedPolicyOfID, childrenAndExtraBedPoliciesRequest.Id);
                    return(result);
                }
            }
            return(result);
        }
Exemplo n.º 2
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
        }