public ActionResult Index() { // If this is the users first time accessing the system, // make a default activity and set it to current if (activityRepo.Activities().Count() == 0) { return(RedirectToAction("Initial")); } return(View(model: activityRepo.Activities())); }
/// <summary> /// Validates the requested date, throws exceptions if the request is for the /// current day or in the future. /// Returns ContentResult i.e. a Json string, for at most, current date less four. /// </summary> public ActionResult Index(int year, int month, int day) { DateTime dateParam = new DateTime(year, month, day); // This should be done when activityRepo is initialized in Home Controller, not here: DateTime userMidnightInUtc = TimeZoneInfo.ConvertTimeToUtc(dateParam, Extensions.GetUserTimeZone()); activityRepo.UpdateStartUptoLastMidnight(userMidnightInUtc.AddDays(4)); // NOTE: No checking for dates! // Directly tries to retrieve 10 days before and after // The checking needs to be done at the client-side; DateTime startDate = userMidnightInUtc.AddDays(-10); DateTime endDate = userMidnightInUtc.AddDays(10); var activities = daysViewModelRepository.Days(startDate, endDate); string contentJson = JsonConvert.SerializeObject(new { // this is annoying especially as now, budgets are contained in each activity; budgets = activityRepo.Activities() .Where(a => a.BudgetInTicks != null) .ToDictionary(a => a.Id, b => b.BudgetInTicks), activities = activities }); return(Content(contentJson, "application/json")); }
public IEnumerable <ActivityViewModel> Activities(DateTime from, DateTime to) => (from duration in durationRepo.Durations join activity in activityRepo.Activities() on duration.ActivityId equals activity.Id select new { Activity = activity, Duration = duration }) .ToList() .Where(vm => vm.Duration.From >= from && vm.Duration.To <= to) .OrderBy(vm => vm.Duration.From) .Select(vm => new ActivityViewModel { Activity = vm.Activity.Id, Duration = vm.Duration.Id, Name = vm.Activity.Name, Description = vm.Activity.Description, From = vm.Duration.From.ConvertToUserTimeZone().ToString("HH:mm:ss", CultureInfo.InvariantCulture), To = vm.Duration.To.ConvertToUserTimeZone().ToString("HH:mm:ss"), Color = vm.Activity.Color });