示例#1
0
        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()));
        }
示例#2
0
        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());
        }
示例#3
0
 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));
     }
 }
示例#4
0
        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);
        }