示例#1
0
 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()));
 }
示例#2
0
        /// <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
 });