private void CreateSchoolList1(GetEventsResult ger) { if (ger.OutData.Regions != null && ger.OutData.Regions.Length > 0) { ArrayOfRegionRegion region = ger.OutData.Regions[0]; if (region != null && region.RegionEvents.Length > 0) { SchoolList.Items.Clear(); for (int i = 0; i < region.RegionEvents.Length; i++) { ArrayOfEventEvent anEvent = region.RegionEvents[i]; SchoolList.Items.Add(new ListItem(anEvent.SchoolName, anEvent.SchoolId)); } } } }
public static Event ToEvent(this GetEventsResult result) { if (result == null) { return(null); } var newEvent = new Event { Id = result.Id, Time = ((double)result.Timestamp).JsonUnixTicksToDateTime().ToLocalTime(), Hosts = result.Hosts != null?result.Hosts.Select(hostResult => hostResult.ToHost()).Where(h => h != null).ToList() : new List <Host>(), Trigger = result.Triggers != null?result.Triggers.Select(triggerResult => triggerResult.ToTrigger()).FirstOrDefault() : new Trigger() }; if (result.State != 2) { newEvent.IsOk = result.State == 0; } return(newEvent); }
public async Task <IActionResult> GetEvents(GetEventsParameter data) { var result = new GetEventsResult(); // TODO: get GlobalVerification & GlobalPayment from settings bool globalVerification = false; // Events should verified first by admin bool globalPayment = false; // Events should pay specified fee var q = context.Events.Where(a => a.Visible && (!globalVerification || a.Verified) && (!globalPayment || a.Payed)); // TODO: Move query to repository if (data.From.HasValue) { q = q.Where(a => a.HoldingDate >= data.From.Value.ToLocalTime()); } else if (data.To.HasValue) { var to = data.To.Value.ToLocalTime().AddDays(1); q = q.Where(a => a.HoldingDate <= to); } else { // Do not return past events at first q = q.Where(a => a.HoldingDate >= DateTime.Now); } if (!string.IsNullOrEmpty(data.Str)) { q = q.Where(a => a.Title.Contains(data.Str)); } if (data.Tags.Count > 0) { // TODO: Check generated query and execution plan q = q.Where(a => a.EventTags.Any(b => data.Tags.Contains(b.TagId))); } if (!string.IsNullOrEmpty(data.UserId)) { q = q.Where(a => a.UserId == data.UserId); } const int distance = 10000; if (data.Latitude.HasValue && data.Longitude.HasValue) { q = q.Where(a => DataContext.GetDistance(data.Latitude.Value, data.Longitude.Value, a.Latitude, a.Longitude) <= distance); } switch (data.Sort) { case GetEventsSort.Latest: q = q.OrderBy(a => a.HoldingDate); break; case GetEventsSort.Popular: q = q.OrderByDescending(a => a.Activities.Count); break; case GetEventsSort.Nearest: // TODO: create a database function which take a geo location as input and sort the events by distance break; default: break; } var count = q.Count(); var events = await q.Skip(data.Count *data.Page).Take(data.Count) .Select(a => new EventSummury() { Capacity = a.Capacity, HoldingDate = a.HoldingDate, Id = a.Id, Joined = a.Joined, Tags = a.EventTags.Select(b => b.TagId), Photo = a.Photos.DefaultIfEmpty().First().FileName, Title = a.Title, Latitude = a.Latitude, Longitude = a.Longitude }).ToListAsync(); result.Events = events; result.TotalCount = count; return(Ok(result)); }