BinaryStudio.ClientManager.WebUi.Controllers.InquiriesController.Admin C# (CSharp) Method

Admin() public method

public Admin ( ) : System.Web.Mvc.ViewResult
return System.Web.Mvc.ViewResult
        public ViewResult Admin()
        {
            var inquiries = repository
                .Query<Inquiry>(x => x.Client, x => x.Assignee)
                .Where(x => x.ReferenceDate == null)
                .OrderBy(x => x.Client.FirstName)
                .ThenBy(x => x.Client.LastName)
                .ToList();

            var tags = repository.Query<Tag>()
                .OrderBy(x => x.Name)
                .ToList();
            foreach (var tag in tags)
            {
                tag.Owner = null;
            }

            return View(
                new AdminViewModel
                    {
                        Inquiries = inquiries
                            .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 = tags

                    });
        }

Usage Example

        public void Should_ReturnOnlyInquiriesWhereReferenceDateEqualNull_WhenAdminRequested()
        {
            // arrange
            var repository = Substitute.For<IRepository>();
            repository.Query<Inquiry>().ReturnsForAnyArgs(inquiries.AsQueryable());
            repository.Query<Person>().ReturnsForAnyArgs(new List<Person>().AsQueryable());
            repository.Query<Tag>().ReturnsForAnyArgs(new List<Tag>().AsQueryable());

            // act
            var controller = new InquiriesController(repository);
            var viewResult = (AdminViewModel)controller.Admin().Model;

            // assert
            viewResult.Inquiries.Count().Should().Be(10);
        }