public SingleRideAndRandomRideViewModel PopulateSingleRideModel(int RideId, string UserId) { Ride _Ride = repository.GetRideByIDIncludeGroup(RideId); SingleRideAndRandomRideViewModel _SingleRideRandomRideViewModel = new SingleRideAndRandomRideViewModel { Ride = _Ride, RideDate = _Ride.RideDate, RideTime = _Ride.RideTime, MapUrl = _Ride.Group.MapUrl }; _SingleRideRandomRideViewModel.CommentCount = repository.GetCommentCountForRide(RideId); _SingleRideRandomRideViewModel.IsOwner = repository.IsGroupCreator(_Ride.Group.id, UserId); if (_SingleRideRandomRideViewModel.MapUrl != null) { _SingleRideRandomRideViewModel.MapUrl = string.Concat("<iframe id=mapmyfitness_route src=https://maps.google.com/maps?f=q&source=s_q&hl=en&geocode=&q=http://veloroutes.org/k/%3Fr%3D", _Ride.Group.MapUrl, "&output=embed height=300px width=300px frameborder=0></iframe>"); //https://maps.google.com/maps?f=q&source=s_q&hl=en&geocode=&q=http://veloroutes.org/k/%3Fr%3D108681 } CultureHelper _CultureHelper = new CultureHelper(repository); Group _Group = repository.GetGroupByID(_Ride.Group.id); TimeZoneInfo TZone = _CultureHelper.GetTimeZoneInfo(_Group.Location.id); Ride ClosestRide = repository.GetClosestNextRide(_Ride.Group, TZone); _SingleRideRandomRideViewModel.PusherChannel = ClosestRide.id; _SingleRideRandomRideViewModel.Riders = repository.GetRidersForRide(RideId, TZone); _SingleRideRandomRideViewModel.KeenCount = repository.GetKeenCountForRide(RideId); _SingleRideRandomRideViewModel.Comments = repository.GetTop2CommentsForRide(RideId); return(_SingleRideRandomRideViewModel); }
public GroupModel PopulateGroupModel(string UserId, Location _Location, string searchString, string Email) { GroupModel _GroupModel = new GroupModel(); if (!String.IsNullOrEmpty(searchString)) { _GroupModel._Groups = repository.GetGroupsByLocationWithSearch(_Location.id, searchString).ToList(); _GroupModel.Title = "All bunches"; } else { _GroupModel._Groups = repository.GetGroupsByLocation(_Location.id).ToList(); _GroupModel.Title = "All bunches"; } _GroupModel.PrivateBunches = repository.GetPrivateGroupsByUserID(UserId, _Location); _GroupModel._Groups.AddRange(_GroupModel.PrivateBunches); _GroupModel._NextRideDetails = new List <NextRideDetails>(); _GroupModel._NextRideDetailsOneWeekAway = new List <NextRideDetails>(); _GroupModel.UserLocation = _Location.Name; CultureHelper _CultureHelper = new CultureHelper(repository); TimeZoneInfo TZone = _CultureHelper.GetTimeZoneInfo(_Location.id); DateTime LocalNow = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, TZone); _GroupModel._OwnerGroupList = new List <int>(); _GroupModel.lat = _Location.Lat; _GroupModel.lng = _Location.Lng; foreach (Group item in _GroupModel._Groups.Where(o => o.OneOff == true)) { if (item.RideDate <= LocalNow.AddDays(7) && item.RideDate >= DateTime.Now.AddHours(-2)) { Ride NextRide = repository.GetOneOffRideByGroupID(item.id); if (NextRide != null) { _GroupModel._NextRideDetails.Add(new NextRideDetails { Date = NextRide.RideDate, GroupId = item.id, NumberofKeenRiders = NextRide.Riders.Where(i => i.PercentKeen == "In").Count() }); } } } foreach (Group item in _GroupModel._Groups.Where(o => o.OneOff == true)) { if (item.RideDate > LocalNow.AddDays(7)) { Ride NextRide = repository.GetOneOffRideByGroupID(item.id); if (NextRide != null) { _GroupModel._NextRideDetailsOneWeekAway.Add(new NextRideDetails { Date = NextRide.RideDate, GroupId = item.id, NumberofKeenRiders = NextRide.Riders.Where(i => i.PercentKeen == "In").Count() }); } } if (repository.IsGroupCreator(item.id, UserId)) { _GroupModel._OwnerGroupList.Add(item.id); } } _GroupModel._NextRideDetailsOneWeekAway = _GroupModel._NextRideDetailsOneWeekAway.OrderBy(o => o.Date).ToList(); foreach (Group item in _GroupModel._Groups.Where(o => o.OneOff == false)) { int RideCount = item.Rides.Count(); //If Ride count does not equal rides greater than now then there are old ride so //call delete rides and populate new from latest ride date, note this should have been done by console app if (item.Rides.Where(t => t.RideDate >= LocalNow).Count() != RideCount) { repository.DeleteOldRides(item.id, TZone); //If no ride is greater than localtime then just need to set as current date to use. DateTime _NextDateTime = item.Rides.OrderByDescending(g => g.RideDate).Select(h => h.RideDate).FirstOrDefault(); if (_NextDateTime == DateTime.MinValue) { _NextDateTime = DateTime.Now; } repository.PopulateRideDatesFromDate(item, _NextDateTime, TZone); } item.Rides = item.Rides.Where(t => t.RideDate >= LocalNow).ToList(); Ride NextRide = repository.GetClosestNextRide(item, TZone); if (NextRide != null) { _GroupModel._NextRideDetails.Add(new NextRideDetails { Date = NextRide.RideDate, GroupId = item.id, NumberofKeenRiders = NextRide.Riders.Where(i => i.PercentKeen == "In").Count() }); } else { if (item.RideDays != null) { repository.PopulateRideDates(item, TZone); repository.Save(); NextRide = repository.GetClosestNextRide(item, TZone); _GroupModel._NextRideDetails.Add(new NextRideDetails { Date = NextRide.RideDate, GroupId = item.id, NumberofKeenRiders = NextRide.Riders.Where(i => i.PercentKeen == "In").Count() }); } } if (repository.IsGroupCreator(item.id, UserId)) { _GroupModel._OwnerGroupList.Add(item.id); } } if (_GroupModel._NextRideDetails != null) { _GroupModel._NextRideGroupbyDayOfWeek = _GroupModel._NextRideDetails.GroupBy(g => g.Date.DayOfWeek, g => g.GroupId, (key, p) => new NextRideGroupbyDayOfWeek { Thedayofweek = key, Groupids = p.ToList() }).OrderBy(i => i.Thedayofweek); } if (_GroupModel._NextRideDetailsPrivate != null) { _GroupModel._NextRideGroupbyDayOfWeekPrivate = _GroupModel._NextRideDetailsPrivate.GroupBy(g => g.Date.DayOfWeek, g => g.GroupId, (key, p) => new NextRideGroupbyDayOfWeekPrivate { Thedayofweek = key, Groupids = p.ToList() }).OrderBy(i => i.Thedayofweek); } //Show private first. //_GroupModel._Groups.OrderByDescending(g => g.IsPrivate); _GroupModel.CurrentGroupMembership = repository.CurrentGroupsForUser(UserId); return(_GroupModel); }