public void TestMethod1() { var reviewerProvider = new ReviewerProvider(); var workingDays = new DayOfWeek[] { DayOfWeek.Monday, DayOfWeek.Tuesday, DayOfWeek.Wednesday, DayOfWeek.Thursday, DayOfWeek.Friday, DayOfWeek.Saturday, DayOfWeek.Sunday }; var fromTime = new TimeSpan(0, 0, 0); var toTime = new TimeSpan(24, 0, 0); var allReviwers = reviewerProvider.GetList(); foreach (var rvr in allReviwers) { var isInWorkingHours = rvr.IsInWorkingHours(fromTime, toTime, workingDays); Console.WriteLine("{0}: {1}", rvr.Name, isInWorkingHours); } }
public ActionResult Index() { var reviewers = new ReviewerProvider(); var jobApplicants = new JobApplicationProvider(); var avgDurations = jobApplicants.GetList() .GroupBy(rvw => rvw.ReviewerId) .Select(g => new { g.Key, AvgDuration = g.Average( x => ((x.RejectedOrAcceptedAt ?? DateTime.UtcNow) - x.AssignedToReviewerAt).HasValue ? Math.Max( ((x.RejectedOrAcceptedAt ?? DateTime.UtcNow) - x.AssignedToReviewerAt).Value .TotalSeconds / 3600, 0) : 0) }); //var results = reviewers.GetList() // .Join(avgDurations, rvw => rvw.Id, ad => ad.Key, (rvw, ad) => new ReviewerViewModel { Reviewer = rvw, AvgTime = ad.AvgDuration }); var results = reviewers.GetList() .GroupJoin(avgDurations, rvw => rvw.Id, ad => ad.Key, (rvw, ms) => new { rvw, ms = ms.DefaultIfEmpty() }) .SelectMany( z => z.ms.Select(ad => new { rvw = z.rvw, ad })) .Select(x => new ReviewerViewModel() { Reviewer = x.rvw, AvgTime = x.ad == null? 0 : Math.Round(x.ad.AvgDuration, 2) }); return(View(results.ToList())); }
public ActionResult Get() { var service = new ReviewerProvider(); return(Json(service.GetList(), JsonRequestBehavior.AllowGet)); }