BinaryStudio.ClientManager.WebUi.Controllers.InquiriesController.Week C# (CSharp) 메소드

Week() 공개 메소드

public Week ( ) : System.Web.Mvc.ViewResult
리턴 System.Web.Mvc.ViewResult
        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()
            });
        }

Usage Example

        public void Should_ReturnListOfInquiriesForCurrentBusinessWeekAndFullListOfEmployees_WhenWeekRequested()
        {
            // arrange
            var mock = new Mock<IRepository>();
            mock.Setup(z => z.Query<Inquiry>(x => x.Client)).Returns(inquiries.AsQueryable());
            mock.Setup(x => x.Query<Person>()).Returns(
                Builder<Person>.CreateListOfSize(10)
                .All()
                .With(x => x.Role = PersonRole.Client)
                .Random(7)
                .With(x => x.Role = PersonRole.Employee)
                .Build()
                .AsQueryable());
            var inquiriesController = new InquiriesController(mock.Object);

            // act
            var viewModel = inquiriesController.Week().Model as WeekViewModel;
            var inquiriesList = viewModel.Days;

            // assert
            var inquiriesCount = inquiriesList.Sum(day => day.Inquiries.Count());

            inquiriesCount.Should().Be(10);

            var employeesList = viewModel.Employees;
            employeesList.Count.Should().Be(7);
        }