public async Task <List <VMActivityDetails> > GetActivity(int region_id = 0)
        {
            var response = new List <VMActivityDetails>();

            try
            {
                List <Activities> activities = new List <Activities>();
                if (region_id > 0)
                {
                    var activityRegionMap = await dbContext.ActivityRegionMapping.Where(x => x.region_id == region_id).ToListAsync();

                    activities = dbContext.Activities.Join(activityRegionMap, x => x.activity_id, y => y.activity_id, (x, y) => x).ToList();
                }
                else
                {
                    activities = dbContext.Activities.Select(x => x).ToList();
                }


                var booked_activities = dbContext.Bookings.Select(x => x).ToList();

                var activitiesBooked = booked_activities.Join(activities, x => x.activity_id, y => y.activity_id, (x, y) => new { activities = y, booking = x }).ToList();

                var seasonalActivity = activitiesBooked.Select(x => new SeasonalActivity {
                    activities = x.activities, booking_id = x.booking.booking_id, season = GetSeason(x.booking.booking_date)
                }).ToList();

                var currentSeason = GetSeason(DateTime.Now);

                seasonalActivity = seasonalActivity.Where(x => x.season == currentSeason).ToList();

                var seasonalActivitiesgrouped = (from a in seasonalActivity
                                                 group a by new { activityID = a.activities.activity_id, season = a.season } into x
                                                 select new { activityId = x.Key.activityID, activityCount = x.Count(), activitySeason = x.Key.season }).AsEnumerable();

                //  var activitySeason = seasonalActivitiesgrouped.Join(seasonalActivity, x => x.activityId, y => y.activities.activity_id, (x, y) => new { y.activities.activity_name, y.activities.activity_id, y.season, x.activityCount }).ToList();

                var topSeasonalActivity = seasonalActivitiesgrouped.OrderByDescending(x => x.activityCount).Take(3).ToList();

                List <VMActivityDetails> aresult = new List <VMActivityDetails>();
                foreach (var item in topSeasonalActivity)
                {
                    VMActivityDetails activityItem = new VMActivityDetails();
                    activityItem.activity_id   = item.activityId;
                    activityItem.activity_name = activities.Where(x => x.activity_id == item.activityId).FirstOrDefault().activity_name;
                    //activityItem.ActivityAvgRating = item.avgrating;
                    //activityItem.ActivityFee = item.activity_fee;
                    activityItem.activity_season = item.activitySeason;
                    aresult.Add(activityItem);
                }

                response = aresult;
            }
            catch (Exception ex)
            {
                throw ex;
            }

            return(response);
        }
Exemple #2
0
        public async Task <List <VMActivityDetails> > GetActivity(int region_id = 0)
        {
            var response = new List <VMActivityDetails>();

            try
            {
                List <Activities> activities_result = new List <Activities>();
                if (region_id > 0)
                {
                    var activityRegionMap = await dbcontext.ActivityRegionMapping.Where(x => x.region_id == region_id).ToListAsync();

                    activities_result = dbcontext.Activities.Join(activityRegionMap, x => x.activity_id, y => y.activity_id, (x, y) => x).ToList();
                }
                else
                {
                    activities_result = dbcontext.Activities.Select(x => x).ToList();
                }

                var ratings_result = dbcontext.ActivityRatings.Select(x => x);


                #region Most recommended activties
                // List of all activities
                var activityRatingList = activities_result.Join(ratings_result, x => x.activity_id, y => y.activity_id,
                                                                (x, y) => new { x.activity_id, x.activity_name, x.activity_fee, y.activity_rating });


                // groupactivities basis ratings
                var groupedactivities = activityRatingList.Select(x => new { x.activity_id, x.activity_name, x.activity_fee, avgrating = activityRatingList.Where(y => y.activity_id == x.activity_id).Average(y => y.activity_rating) });//).GroupBy(y => y.activity_id);

                // obtain top three/five results
                var recommActivityResult = groupedactivities.Distinct().OrderByDescending(x => x.avgrating).Take(3);

                //var otherActivities = groupedactivities.Except(topActivities);

                //var recommActivityResult = topActivities.Join(groupedactivities, x => x.activity_id, y => y.activity_id, (x, y) => new { x.activity_id, x.avgrating, y.activity_name, y.activity_fee }).ToList();

                List <VMActivityDetails> result = new List <VMActivityDetails>();
                foreach (var item in recommActivityResult)
                {
                    VMActivityDetails activityItem = new VMActivityDetails();
                    activityItem.activity_id   = item.activity_id;
                    activityItem.activity_name = item.activity_name;
                    //activityItem.ActivityAvgRating = item.avgrating;
                    //activityItem.ActivityFee = item.activity_fee;
                    result.Add(activityItem);
                }
                response = result;
            }
            catch (Exception ex)
            {
                throw ex;
            }

            return(response);

            // keep others on stand by (should pop up on click of see more in respective order)
            #endregion
        }
Exemple #3
0
        public async Task <List <VMActivityDetails> > GetActivity(int region_id = 0)
        {
            var response = new List <VMActivityDetails>();

            try
            {
                List <Activities> activities_result = new List <Activities>();
                if (region_id > 0)
                {
                    var activityRegionMap = await dbContext.ActivityRegionMapping.Where(x => x.region_id == region_id).ToListAsync();

                    activities_result = dbContext.Activities.Join(activityRegionMap, x => x.activity_id, y => y.activity_id, (x, y) => x).ToList();
                }
                else
                {
                    activities_result = dbContext.Activities.Select(x => x).ToList();
                }
                var bookings_result = dbContext.Bookings.Select(x => x).ToList();

                var result            = bookings_result.Select(x => new { x.booking_date, x.activity_id });
                var recent_activities = result.OrderByDescending(x => x.booking_date).Select(x => new { x.booking_date, x.activity_id }).Take(3);

                var activityNames = activities_result.Join(recent_activities, x => new { ActivityID = x.activity_id },
                                                           y => new { ActivityID = y.activity_id }, (x, y) => new { x.activity_name, x.activity_id });

                List <VMActivityDetails> aresult = new List <VMActivityDetails>();
                foreach (var item in activityNames)
                {
                    VMActivityDetails activityItem = new VMActivityDetails();
                    activityItem.activity_id   = item.activity_id;
                    activityItem.activity_name = item.activity_name;
                    //activityItem.ActivityAvgRating = item.avgrating;
                    //activityItem.ActivityFee = item.activity_fee;
                    aresult.Add(activityItem);
                }

                response = aresult;
            }
            catch (Exception ex)
            {
                //throw new NotImplementedException();
                throw ex;
            }
            return(response);
        }