/// <summary> /// Get voters count for specific Event /// </summary> /// <param name="eventId">Event Id</param> /// <returns>Voters count</returns> public async Task <int> GetTotalNumberOfVotersForEvent(Guid eventId) { var places = await _eventDetailsService.GetPlacesWithVotes(eventId); var timeSlots = await _eventDetailsService.GetDatesWithVotes(eventId); var placesTotalVoters = places.Where(p => p.VotesForPlace != null).SelectMany(p => p.VotesForPlace?.Select(v => v.UserId).ToList()).Distinct(); var datesTotalVoters = timeSlots.Where(p => p.VotesForDate != null).SelectMany(p => p.VotesForDate?.Select(v => v.UserId).ToList()).Distinct(); return(placesTotalVoters.Union(datesTotalVoters).Distinct().Count()); }
public async Task <JsonResult> GetVoteForDateModel(Guid eventId) { var totalNumberOfVoters = await _votingService.GetTotalNumberOfVotersForEvent(eventId); var timeSlots = await _eventDetailsService.GetDatesWithVotes(eventId); var optionsVm = timeSlots .OrderBy(ts => ts.DateTime) .Select((ts) => MappingHelper.MapToOptionViewModel(ts, User.Identity.GetUserId())) .ToList(); return(Json(new { Options = optionsVm, TotalNumberOfVoters = totalNumberOfVoters }, JsonRequestBehavior.AllowGet)); }