public ActionResult Edit(HotelRoomTypeManageModel model, SubmitTypeEnums submit)
 {
     if (ModelState.IsValid)
     {
         var response = _hotelRoomTypeServices.SaveHotelRoomTypeManageModel(model);
         if (response.Success)
         {
             SetSuccessMessage(response.Message);
             switch (submit)
             {
                 case SubmitTypeEnums.Save:
                     return RedirectToAction("Index");
                 default:
                     return RedirectToAction("Edit", new { id = model.Id });
             }
         }
         SetErrorMessage(response.Message);
     }
     model.HotelRoomTypeServices = _hotelServiceServices.GetHotelRoomServices(model.Id);
     return View(model);
 }
        /// <summary>
        /// Save HotelRoomType manage model
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public ResponseModel SaveHotelRoomTypeManageModel(HotelRoomTypeManageModel model)
        {
            ResponseModel response;
            var hotelRoomType = GetById(model.Id);

            #region Edit HotelRoomType
            if (hotelRoomType != null)
            {
                hotelRoomType.Name = model.Name;
                hotelRoomType.Description = model.Description;
                hotelRoomType.Price = model.Price;
                hotelRoomType.RecordOrder = model.RecordOrder;

                var currentServices = hotelRoomType.HotelRoomServices.Select(rs => rs.ServiceId).ToList();
                foreach (var id in currentServices)
                {
                    if (!model.HotelRoomTypeServiceIds.Contains(id))
                    {
                        _hotelRoomServiceRepository.Delete(id);
                    }
                }
                foreach (var serviceId in model.HotelRoomTypeServiceIds)
                {
                    if (currentServices.All(n => n != serviceId))
                    {
                        var hotelRoomTypeHotelRoomTypeCategory = new HotelRoomService
                        {
                            RoomTypeId = hotelRoomType.Id,
                            ServiceId = serviceId
                        };
                        _hotelRoomServiceRepository.Insert(hotelRoomTypeHotelRoomTypeCategory);
                    }
                }

                //Get page record order
                response = Update(hotelRoomType);
                return response.SetMessage(response.Success ?
                    _localizedResourceServices.T("AdminModule:::HotelRoomTypes:::Messages:::UpdateSuccessfully:::Update HotelRoomType successfully.")
                    : _localizedResourceServices.T("AdminModule:::HotelRoomTypes:::Messages:::UpdateFailure:::Update HotelRoomType failed. Please try again later."));
            }
            #endregion

            hotelRoomType = new HotelRoomType
            {
                Name = model.Name,
                Description = model.Description,
                Price = model.Price,
            };

            response = Insert(hotelRoomType);
            foreach (var serviceId in model.HotelRoomTypeServiceIds)
            {
                var hotelRoomTypeHotelRoomTypeCategory = new HotelRoomService
                {
                    RoomTypeId = hotelRoomType.Id,
                    ServiceId = serviceId
                };
                _hotelRoomServiceRepository.Insert(hotelRoomTypeHotelRoomTypeCategory);
            }
            return response.SetMessage(response.Success ?
                _localizedResourceServices.T("AdminModule:::HotelRoomTypes:::Messages:::CreateSuccessfully:::Create HotelRoomType successfully.")
                : _localizedResourceServices.T("AdminModule:::HotelRoomTypes:::Messages:::CreateFailure:::Create HotelRoomType failed. Please try again later."));
        }