public ViewResult Week()
{
var today = Clock.Now.Date;
var start = today.GetStartOfBusinessWeek();
var end = today.GetEndOfBusinessWeek().AddDays(1);
var thisWeekInquiries = repository.Query<Inquiry>(x => x.Client)
.Where(x => x.ReferenceDate >= start && x.ReferenceDate < end)
.ToList();
return View(new WeekViewModel
{
Days =
from index in Enumerable.Range(0, 5)
let date = start.AddDays(index)
select new WeekItemViewModel
{
Name = "{0} ({1})".Fill(date.ToString("ddd"), date.ToString("dd.MM")),
Date = date,
Inquiries = thisWeekInquiries
.Where(x => x.ReferenceDate.Value.Date == date)
.OrderBy(x => x.ReferenceDate)
.Select(x => new InquiryViewModel
{
Id = x.Id,
Name = x.Client.FullName,
Subject = x.Subject,
Email = x.Client.Email,
Assignee = x.SafeGet(z => z.Assignee.FullName),
Phone = x.Client.Phone,
PhotoUri = x.Client.PhotoUri
})
},
Employees = repository.Query<Person>()
.Where(x => x.Role == PersonRole.Employee)
.OrderBy(x => x.FirstName)
.ThenBy(x => x.LastName)
.ToList(),
Tags = repository.Query<Tag>().ToList()
});
}