1 using Newtonsoft.Json;
4 using System.Collections.Generic;
9 using System.Net.Http.Headers;
10 using System.Threading.Tasks;
11 using System.Web.Http;
13 namespace Projects.Controllers.api
16 public class ActivityController : ApiController
18 private ProjectsDBEntities db = new ProjectsDBEntities();
21 public HttpResponseMessage GetActivity()
23 var results = (from pt in db.ProjectTasks
24 join ts in db.TaskStatuses on pt.task_status_id equals ts.id
25 where ts.status == "Done"
26 group pt.User by pt.User.id into g
27 join u in db.Users on g.Key equals u.id
28 select new ActivityResult { user = u.login, count = g.Count() })
30 return new HttpResponseMessage() {
31 Content = new JsonContent(results)
36 public class JsonContent : HttpContent
39 private readonly MemoryStream _Stream = new MemoryStream();
40 public JsonContent(object value)
43 Headers.ContentType = new MediaTypeHeaderValue("application/json");
44 var jw = new JsonTextWriter(new StreamWriter(_Stream));
45 jw.Formatting = Formatting.Indented;
46 var serializer = new JsonSerializer();
47 serializer.Serialize(jw, value);
52 protected override Task SerializeToStreamAsync(Stream stream, TransportContext context)
54 return _Stream.CopyToAsync(stream);
57 protected override bool TryComputeLength(out long length)
59 length = _Stream.Length;