Пример #1
0
        public List <SubCategory> GetSubCategories(FeelUserJourneyQuery query, List <FIL.Contracts.Models.PlaceDetail> placeDetails,
                                                   List <FIL.Contracts.DataModels.EventCategory> eventCategories, PageDetail pageDetail)
        {
            List <SubCategory> allSubCategories = new List <SubCategory>();

            foreach (var currectSubCategory in eventCategories)
            {
                SubCategory subCategory = new SubCategory();
                subCategory.DisplayName    = currectSubCategory.DisplayName;
                subCategory.Slug           = currectSubCategory.Slug;
                subCategory.Id             = currectSubCategory.Id;
                subCategory.IsMainCategory = currectSubCategory.EventCategoryId == 0 ? true : false;
                subCategory.Url            = query.PagePath + "/" + currectSubCategory.Slug;
                subCategory.Order          = currectSubCategory.Order;
                subCategory.Query          = GetQuery(query, currectSubCategory, placeDetails.First(),
                                                      currectSubCategory.MasterEventTypeId == Contracts.Enums.MasterEventType.Online ? currectSubCategory.Id : placeDetails.First().ParentCategoryId, pageDetail);
                allSubCategories.Add(subCategory);
            }
            return(allSubCategories);
        }
Пример #2
0
 public string GetQuery(FeelUserJourneyQuery query, FIL.Contracts.DataModels.EventCategory eventCategory, PlaceDetail placeDetail,
                        int ParentEventCategoryId, PageDetail pageDetail)
 {
     if (eventCategory.MasterEventTypeId == Contracts.Enums.MasterEventType.Online || eventCategory.MasterEventTypeId == Contracts.Enums.MasterEventType.InRealLife)
     {
         return("?category=" + ParentEventCategoryId +
                (pageDetail.IsCountryLevel ? "&country=" + placeDetail.CountryId : pageDetail.IsStateLevel ? "&state=" + placeDetail.StateId :
                 pageDetail.IsCityLevel ? "&city=" + placeDetail.CityId : ""));
     }
     else if (query.PageType == Contracts.Enums.PageType.Category)
     {
         return("?category=" + ParentEventCategoryId + "&subcategory=" + eventCategory.Id +
                (pageDetail.IsCountryLevel ? "&country=" + placeDetail.CountryId : pageDetail.IsStateLevel ? "&state=" + placeDetail.StateId :
                 pageDetail.IsCityLevel ? "&city=" + placeDetail.CityId : ""));
     }
     else
     {
         return("?country=" + placeDetail.CountryId + (eventCategory.EventCategoryId == 0 ? "&category=" + eventCategory.Id : "&category=" + ParentEventCategoryId + "&subcategory=" + eventCategory.Id) +
                (pageDetail.IsStateLevel ? "&state=" + placeDetail.StateId :
                 pageDetail.IsCityLevel ? "&city=" + placeDetail.CityId : ""));
     }
 }
Пример #3
0
        public List <PlaceDetail> GetAllPlaces(FeelUserJourneyQuery query,
                                               List <FIL.Contracts.DataModels.EventCategory> subCategories,
                                               FIL.Contracts.DataModels.EventCategory eventCategory,
                                               FIL.Contracts.Enums.MasterEventType masterEventType,
                                               bool isCountryLevel = false,
                                               bool isStateLevel   = false,
                                               bool isCityLevel    = false)
        {
            List <PlaceDetail> placeDetails = new List <PlaceDetail>();

            // If it's all Online or IRL experience
            if (query.MasterEventType == Contracts.Enums.MasterEventType.Online || query.MasterEventType == Contracts.Enums.MasterEventType.InRealLife)
            {
                placeDetails = _eventRepository.GetAllPlaceDetailsByCategoryPage(subCategories.Select(s => s.Id).ToList()).ToList();
            }
            // If Global Category
            if (query.CityId == 0 && query.StateId == 0 && query.CountryId == 0 && query.PageType == Contracts.Enums.PageType.Category)
            {
                var subCat = subCategories.Take(4);
                if (eventCategory.MasterEventTypeId == Contracts.Enums.MasterEventType.Online)
                {
                    subCat = subCategories;
                }
                placeDetails = _eventRepository.GetAllPlaceDetailsByCategoryPage(subCat.Select(s => s.Id).ToList()).ToList();
            }
            // If Category or Subcategory country
            else if (isCountryLevel && query.PageType == Contracts.Enums.PageType.Category ||
                     (isCountryLevel && !isStateLevel && !isCityLevel && query.PageType == Contracts.Enums.PageType.Country && (query.CategoryId != 0 || query.SubCategoryId != 0)))
            {
                placeDetails = _eventRepository.GetAllPlaceDetailsByCountry(subCategories.Select(s => s.Id).ToList(), query.CountryId).ToList();
            }
            // If Category or Subcategory state
            else if ((isStateLevel && query.PageType == Contracts.Enums.PageType.Category) ||
                     (isStateLevel && query.PageType == Contracts.Enums.PageType.Country && (query.CategoryId != 0 || query.SubCategoryId != 0)))
            {
                placeDetails = _eventRepository.GetAllPlaceDetailsByState(subCategories.Select(s => s.Id).ToList(), query.StateId).ToList();
            }
            // If Category or Subcategory city
            else if ((isCityLevel && query.PageType == Contracts.Enums.PageType.Category) ||
                     (isCityLevel && query.PageType == Contracts.Enums.PageType.Country && (query.CategoryId != 0 || query.SubCategoryId != 0)))
            {
                placeDetails = _eventRepository.GetAllPlaceDetailsByCity(subCategories.Select(s => s.Id).ToList(), query.CityId).ToList();
            }
            // If Global Country
            else if (query.PageType == Contracts.Enums.PageType.Country && query.CategoryId == 0 && query.SubCategoryId == 0 && !isStateLevel && !isCityLevel)
            {
                placeDetails = _eventRepository.GetAllPlaceDetailsByCountry(query.CountryId).ToList();
            }
            // If Global State
            else if (query.PageType == Contracts.Enums.PageType.Country && query.CategoryId == 0 && query.SubCategoryId == 0 && isStateLevel && !isCityLevel)
            {
                placeDetails = _eventRepository.GetAllPlaceDetailsByState(query.StateId).ToList();
            }
            // If Global City
            else if (query.PageType == Contracts.Enums.PageType.Country && query.CategoryId == 0 && query.SubCategoryId == 0 && !isStateLevel && isCityLevel)
            {
                placeDetails = _eventRepository.GetAllPlaceDetailsByCity(query.CityId).ToList();
            }
            //For Live Online Events Duration
            if (eventCategory != null && eventCategory.MasterEventTypeId == Contracts.Enums.MasterEventType.Online && placeDetails.Count > 0)
            {
                foreach (var item in placeDetails)
                {
                    try
                    {
                        if (item.InteractivityStartDateTime != null && item.EventFrequencyType == EventFrequencyType.OnDemand)
                        {
                            var    timediff = RoundUp((DateTime)item.InteractivityStartDateTime, TimeSpan.FromMinutes(10)).Subtract(RoundUp(item.EventStartDateTime, TimeSpan.FromMinutes(10)));
                            string duration = string.Format("{0}:{1}", timediff.Hours, timediff.Minutes);
                            item.Duration = duration;
                        }
                        else
                        {
                            var    timediff = RoundUp(item.EventEndDateTime, TimeSpan.FromMinutes(10)).Subtract(RoundUp(item.EventStartDateTime, TimeSpan.FromMinutes(10)));
                            string duration = string.Format("{0}:{1}", timediff.Hours, timediff.Minutes);
                            item.Duration = duration;
                        }
                    }
                    catch (Exception e)
                    {
                        var    timediff = RoundUp(item.EventEndDateTime, TimeSpan.FromMinutes(10)).Subtract(RoundUp(item.EventStartDateTime, TimeSpan.FromMinutes(10)));
                        string duration = string.Format("{0}:{1}", timediff.Hours, timediff.Minutes);
                        item.Duration = duration;
                    }
                }
            }
            return(placeDetails);
        }