public ActionResult SearchAccomodation(SearchAccomodationViewModel model, bool tableview = false) { ViewBag.view = tableview; //HomeViewModel model = new HomeViewModel(); List <AccomodationPackageCountViewModel> accomodationPackageCountViewModels = new List <AccomodationPackageCountViewModel>(); model.AccomodationTypes = accomodationTypesService.GetAllAccomodationTypes().ToList(); var accomodationPacakges = accomodationService.CheckAccomodationsAvailability(null, model.CheckIn, model.CheckOut); foreach (var item in accomodationPacakges.DistinctBy(a => a.AccomodationPackage.Id)) { //var count = accomodationService.CountAccomodationByPackage(item.AccomodationPackage.Id); var count = accomodationPacakges.Count(b => b.AccomodationPackage.Id == item.AccomodationPackage.Id); if (count > 0) { AccomodationPackageCountViewModel obj = new AccomodationPackageCountViewModel(); obj.AccomodationPackages = item.AccomodationPackage; obj.RoomCount = count; accomodationPackageCountViewModels.Add(obj); } } model.AccomodationPackageCountViewModels = accomodationPackageCountViewModels; return(View(model)); }
public JsonResult CheckAccomodationAvailibility(BookingGetViewModel bookingViewModel) { JsonResult result = new JsonResult(); // var model = accomodationService.SearchAccomodationsAvailability(bookingViewModel.AccomodationPackageId); var model = accomodationService.CheckAccomodationsAvailability(bookingViewModel.AccomodationPackageId, bookingViewModel.CheckIn, bookingViewModel.CheckOut); //var bdate = model.Select(a => a.Bookings.Select(b => b.FromDate)); //lock (Lock) //{ bool state = true; if (model != null && model.Count() >= bookingViewModel.NoOfAccomodation) { //Session["Key"] = "Key"; var roomNos = model.Select(a => a.Id).Take(bookingViewModel.NoOfAccomodation).ToList(); var ids = string.Join(",", roomNos); //bookingService.UpdateState(roomNos , state); result.Data = new { success = true, message = "Rooms Availabale", data = ids }; } else if (model.Count() < bookingViewModel.NoOfAccomodation) { result.Data = new { success = false, message = "You Asked for " + bookingViewModel.NoOfAccomodation + " Accomodations but " + model.Count() + " Accomodation Availabale Only , plz Try Again" }; } else { result.Data = new { success = false, message = "NO Room(s) Availabale at the moment try again later!" }; } //} // ccheck here wheteher room available or not return(result); }