public async Task <ActionResult> Upload() { var visitsAsText = new StreamReader(Request.InputStream).ReadToEnd(); var visitsDictionary = JsonConvert.DeserializeObject <Dictionary <string, DateTime> >(visitsAsText); var userId = User.Identity.GetUserId(); var visits = new List <Visit>(); var slides = courseManager.GetCourses().SelectMany(course => course.Slides.Select(slide => new { courseId = course.Id, slideId = slide.Id })).ToDictionary(arg => arg.slideId, arg => arg.courseId); foreach (var visit in visitsDictionary) { var slideId = visit.Key; string courseId; if (!slides.TryGetValue(slideId, out courseId)) { continue; } visits.Add(new Visit { UserId = userId, CourseId = courseId, SlideId = slideId, Timestamp = visit.Value }); } await visitsRepo.AddVisits(visits); return(null); }
public async Task <ActionResult> Upload() { var visitsAsText = new StreamReader(Request.InputStream).ReadToEnd(); var visitsDictionary = JsonConvert.DeserializeObject <Dictionary <string, DateTime> >(visitsAsText); var userId = User.Identity.GetUserId(); var visits = new List <Visit>(); foreach (var visit in visitsDictionary) { /* visit.Key is "<courseId> <slideId>" */ var splittedVisit = visit.Key.Split(' '); var courseId = splittedVisit[0]; var slideId = Guid.Parse(splittedVisit.Length > 1 ? splittedVisit[1] : splittedVisit[0]); visits.Add(new Visit { UserId = userId, CourseId = courseId, SlideId = slideId, Timestamp = visit.Value }); } await visitsRepo.AddVisits(visits); return(null); }