/// <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); }
//[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 }