public IActionResult SearchYachtTour([FromQuery] YachtTourSearchModel model) { var result = _yachtTourService.SearchYachtTour(model); var response = new BaseResponse <IPagedList <YachtTourViewModel> >(); if (result != null) { response = BaseResponse <IPagedList <YachtTourViewModel> > .Success(result); return(Ok(response)); } return(Ok(BaseResponse <IPagedList <YachtTourViewModel> > .BadRequest())); }
public IActionResult Search(string merChantEncryptedId, [FromBody] YachtTourSearchModel model) { var merchantId = DecryptValue(merChantEncryptedId); if (merchantId == 0) { return(BadRequest()); } var baseresponse = _yachtToursServices.Search(merchantId, model); if (baseresponse.IsSuccessStatusCode) { return(Ok(baseresponse)); } return(BadRequest()); }
public BaseResponse <PagedList <YachTourDetailModel> > Search(int merchantId, YachtTourSearchModel model) { try { if (model == null) { return(BaseResponse <PagedList <YachTourDetailModel> > .BadRequest()); } var pageSize = model.PageSize > 0 ? model.PageSize : 10; var pageIndex = model.PageIndex > 0 ? model.PageIndex : 1; var sortColumn = !string.IsNullOrEmpty(model.SortColumn) ? model.SortColumn : "TourName"; var sortType = !string.IsNullOrEmpty(model.SortType) ? model.SortType : "ASC"; var sortString = $"{sortColumn} {sortType}"; DateTime effStartDate; DateTime effEndDate; var tourName = !string.IsNullOrEmpty(model.TourName) ? model.TourName.ToUpper() : string.Empty; var effStartDateIsValid = DateTime.TryParse(model.EffectiveStartDate, out effStartDate); var effEndDateIsValid = DateTime.TryParse(model.EffectiveEndDate, out effEndDate); var query = _db.YachtTours .AsNoTracking() .Where(k => !k.Deleted && k.MerchantFid == merchantId && (string.IsNullOrEmpty(tourName) || k.TourName.ToUpper().Contains(tourName)) && (!effStartDateIsValid || k.EffectiveDate.Date >= effStartDate) && (!effEndDateIsValid || k.EffectiveEndDate <= effEndDate)); var totalItems = query.Count(); var listTour = query .Skip(pageSize * (pageIndex - 1)) .Take(pageSize) .OrderBy(sortString) .ToList() .Select(k => new YachTourDetailModel() { Tour = _mapper.Map <YachtTours, YachTourViewModel>(k), ListYachts = GetListYachtByTourId(k.Id) }) .ToList(); var pagedList = new PagedList <YachTourDetailModel>(listTour, totalItems, pageIndex, pageSize); return(BaseResponse <PagedList <YachTourDetailModel> > .Success(pagedList)); } catch (Exception ex) { return(BaseResponse <PagedList <YachTourDetailModel> > .InternalServerError(message : ex.Message, fullMsg : ex.StackTrace)); } }
public IPagedList <YachtTourViewModel> SearchYachtTour(YachtTourSearchModel searchModel) { var yachtTourSearchResult = new PagedList <YachtTourViewModel>(); var departTimeSearch = searchModel.DepartTime != null ? searchModel.DepartTime : DateTime.Now; var returnTimeSearch = searchModel.ReturnTime != null ? searchModel.ReturnTime : DateTime.Now; var durationSearch = (returnTimeSearch - departTimeSearch).TotalDays; var sortString = string.IsNullOrEmpty(searchModel.SortString) ? "CreatedDate DESC" : searchModel.SortString; //Get all yacht tour and yacht model by searchmodel var query = (from yo in _yachtDbContext.YachtTourOperationDetails.AsNoTracking() join yt in _yachtDbContext.YachtTours.AsNoTracking() on yo.TourFid equals yt.Id join y in _yachtDbContext.Yachts.AsNoTracking() on yo.YachtFid equals y.Id where yo.Deleted == false && yt.Deleted == false && DateTime.Now >= yo.EffectiveDate && DateTime.Now <= yo.EffectiveEndDate && (searchModel.LocationId == 0 || yt.LocationFid == searchModel.LocationId) && (searchModel.CityFid == 0 || yt.CityFid == searchModel.CityFid) && (string.IsNullOrEmpty(searchModel.CityName) || yt.City.Contains(searchModel.CityName)) && (durationSearch == 0 || yt.TourDurationValue <= durationSearch) let tdv = yt.TourDurationValue select new YachtTourViewModel { TourId = yt.Id, TourName = yt.TourName, MerchantFid = yo.MerchantFid, Duration = TimeSpan.FromHours(tdv).TotalHours.ToString(), TourDurationUnitTypeFid = yt.TourDurationUnitTypeFid, TourDurationUnitResKey = yt.TourDurationUnitResKey, TourDurationValue = yt.TourDurationValue, YachtFid = y.Id, YachtModel = y.Name, }); //Get default picture by yacht tour query = (from ytd in query join f in _yachtDbContext.YachtTourFileStreams.AsNoTracking() .GroupBy(x => x.YachtTourFid) .Select(x => x.FirstOrDefault()) on ytd.TourId equals f.YachtTourFid select new YachtTourViewModel { TourId = ytd.TourId, TourName = ytd.TourName, MerchantFid = ytd.MerchantFid, Duration = ytd.Duration, TourDurationUnitTypeFid = ytd.TourDurationUnitTypeFid, TourDurationUnitResKey = ytd.TourDurationUnitResKey, TourDurationValue = ytd.TourDurationValue, YachtFid = ytd.YachtFid, YachtModel = ytd.YachtModel, TourImageFileFid = f.FileStreamFid, }); //Get yacht tour counter and pricing query = (from ytd in query join ytp in _yachtDbContext.YachtTourPricings.AsNoTracking() .Where(p => p.EffectiveDate <= DateTime.Now && DateTime.Now <= p.EffectiveEndDate) .GroupBy(g => g.TourFid) .Select(p => p.FirstOrDefault()).OrderBy("EffectiveDate DESC") on ytd.TourId equals ytp.TourFid join ytc in _yachtDbContext.YachtTourCounters.AsNoTracking() on ytd.TourId equals ytc.YachtTourId select new YachtTourViewModel { TourId = ytd.TourId, TourName = ytd.TourName, MerchantFid = ytd.MerchantFid, Duration = ytd.Duration, TourDurationUnitTypeFid = ytd.TourDurationUnitTypeFid, TourDurationUnitResKey = ytd.TourDurationUnitResKey, TourDurationValue = ytd.TourDurationValue, YachtFid = ytd.YachtFid, YachtModel = ytd.YachtModel, TourImageFileFid = ytd.TourImageFileFid, TotalView = ytc.TotalViews, TotalSuccessBooking = ytc.TotalSuccessBookings, CurrencyCode = ytp.CurrencyCode, CultureCode = ytp.CultureCode, TourFee = TourPriceEstimate((TourPricingTypeEnum)ytp.TourPricingTypeFid, ytp.TourFee, ytp.MinimumPaxToGo, searchModel.Passenger) }).OrderBy(sortString); //Get yacht tour counter var checkItems = query.ToList(); if (query.Count() > 0) { yachtTourSearchResult = new PagedList <YachtTourViewModel>(query, searchModel.PageIndex, searchModel.PageSize); } return(yachtTourSearchResult); }