Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Web;
- using mCMS.Controllers.Helpers;
- using Newtonsoft.Json;
- namespace Models.JSON
- {
- public static class FacebookEvent
- {
- private class AttendingCollection
- {
- public List<Attending> data { get; set; }
- }
- private class Attending
- {
- public String name { get; set; }
- public String id { get; set; }
- public String attending { get; set; }
- }
- private class LightEventCollection
- {
- public List<LightEvent> data { get; set; }
- }
- private class LightEvent
- {
- public String name { get; set; }
- public String start_time { get; set; }
- public String end_time { get; set; }
- public String location { get; set; }
- public String id { get; set; }
- }
- private class Event
- {
- public String id { get; set; }
- public String name { get; set; }
- public String description { get; set; }
- public String start_time { get; set; }
- public String end_time { get; set; }
- public String location { get; set; }
- public String ImageURL { get; set; }
- public Venue venue { get; set; }
- public int Attendees { get; set; }
- }
- private class Venue
- {
- public String latitude { get; set; }
- public String longitude { get; set; }
- public String id { get; set; }
- }
- private class EventViewModel
- {
- public String ID { get; set; }
- public String Description { get; set; }
- public String StartTime { get; set; }
- public String EndTime { get; set; }
- public String ImageURL { get; set; }
- public String Name { get; set; }
- public Venue Venue { get; set; }
- public int Attendees { get; set; }
- }
- private class EventViewModelCollection
- {
- public List<EventViewModel> events { get; set; }
- }
- public static String GetEventViewModels(String stream, String authToken)
- {
- var lightWeightEvents = JsonConvert.DeserializeObject<LightEventCollection>(stream);
- var events = GetEventsGraph(lightWeightEvents.data.ToList(), authToken);
- var viewModels = events.Select(item => new EventViewModel()
- {
- ID = item.id,
- Description = item.description,
- StartTime = item.start_time,
- EndTime = item.end_time,
- Name = item.name,
- ImageURL = item.ImageURL,
- Venue = item.venue,
- Attendees = item.Attendees
- }).ToList();
- viewModels.Sort((x, y) => DateTime.Parse(x.StartTime).CompareTo(DateTime.Parse(y.StartTime)));
- var col = new EventViewModelCollection()
- {
- events = viewModels
- };
- return JsonConvert.SerializeObject(col);
- }
- private static IEnumerable<Event> GetEventsGraph(IEnumerable<LightEvent> lightEvents, String authToken)
- {
- var events = new List<Event>();
- foreach (var lightEvent in lightEvents)
- {
- var stream = WebStream.GetWebStream("https://graph.facebook.com/" + lightEvent.id + "&" + authToken);
- var detailedEvent = JsonConvert.DeserializeObject<Event>(stream);
- detailedEvent.ImageURL = WebStream.GetFacebookImage("https://graph.facebook.com/" + lightEvent.id + "/picture&" + authToken);
- //Get the amount of people signed up for the event
- var attendee = WebStream.GetWebStream("https://graph.facebook.com/" + lightEvent.id + "/attending?limit=999999&" + authToken);
- var attendees = JsonConvert.DeserializeObject<AttendingCollection>(attendee);
- detailedEvent.Attendees = attendees.data.Select(m => m.attending == "attending").Count();
- events.Add(detailedEvent);
- }
- return events;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement