/// <summary> /// Display meetings for the specified committee. /// </summary> /// <param name="committeeId">CommitteeId.</param> /// <returns>View.</returns> public async Task <IActionResult> Index(Guid committeeId) { IWho who = this.Who(); this.logger.ReportEntry( who, new { CommitteeId = committeeId }); ICommitteeWithMeetings committee = await this.service .GetCommitteeByIdWithMeetingsAsync( who : who, committeeId : committeeId) .ConfigureAwait(false); IndexViewModel model = IndexViewModel.Create(committee); ViewResult view = this.View(model); this.logger.ReportExitView( who, view.ViewName, view.Model, view.StatusCode); return(view); }
public void Test_With_Valid_List_Of_Meetings() { // ARRANGE Guid paramId = Guid.NewGuid(); const string paramName = "TSC"; const string paramDescription = "Tournament Sub-Committee"; OrganisationDto organisationDto = new OrganisationDto( id: Guid.NewGuid(), code: "CBC", name: "County Bridge Club", bgColour: "000000"); CommitteeDto committeeDto = new CommitteeDto( id: paramId, organisationId: organisationDto.Id, name: paramName, description: paramDescription, organisation: organisationDto); IList <MeetingDto> paramMeetings = new List <MeetingDto> { new MeetingDto( id: Guid.NewGuid(), committeeId: committeeDto.Id, meetingDateTime: DateTime.Now, committee: committeeDto) }; committeeDto.SetPrivatePropertyValue( propName: nameof(CommitteeDto.Meetings), value: paramMeetings); // ACT ICommitteeWithMeetings committeeWithMeetings = committeeDto.ToDomainWithMeetings(); // ASSERT Assert.AreEqual(paramId, committeeWithMeetings.Id); Assert.AreEqual(paramName, committeeWithMeetings.Name); Assert.AreEqual(paramDescription, committeeWithMeetings.Description); Assert.IsNotNull(committeeWithMeetings.Organisation); Assert.AreEqual(organisationDto.Id, committeeWithMeetings.Organisation.Id); Assert.IsNotNull(committeeWithMeetings.Meetings); Assert.AreEqual(1, committeeWithMeetings.Meetings.Count); IMeeting meeting = committeeWithMeetings.Meetings[0]; Assert.IsNotNull(meeting); Assert.IsNotNull(meeting.Committee); Assert.AreEqual(paramId, meeting.Committee.Id); Assert.IsNotNull(meeting.Committee.Organisation); Assert.AreEqual(organisationDto.Id, meeting.Committee.Organisation.Id); }
/// <summary> /// Creates the Index view model. /// </summary> /// <param name="committee">The committee.</param> /// <returns>Index view model.</returns> public static IndexViewModel Create(ICommitteeWithMeetings committee) { if (committee == null) { throw new ArgumentNullException(nameof(committee)); } return(new IndexViewModel( committeeId: committee.Id, committeeName: committee.Name, organisationId: committee.Organisation.Id, organisationName: committee.Organisation.Name, meetingViewModels: committee.Meetings.Select(MeetingViewModel.Create).ToList())); }
/// <summary> /// Creates the Index view model. /// </summary> /// <param name="committee">Committee.</param> /// <returns>View model.</returns> public static IndexViewModel Create( ICommitteeWithMeetings committee) { if (committee == null) { throw new ArgumentNullException(nameof(committee)); } return(new IndexViewModel( committeeId: committee.Id, organisationId: committee.Organisation.Id, organisationName: committee.Organisation.Name, name: committee.Name, description: committee.Description, meetingViewModels: committee.Meetings .OrderByDescending(m => m.MeetingDateTime) .Select(MeetingViewModel.Create) .ToList())); }
/// <inheritdoc/> public async Task <ICommitteeWithMeetings> GetCommitteeByIdWithMeetingsAsync( IWho who, Guid committeeId) { this.logger.ReportEntry( who, new { CommitteeId = committeeId }); ICommitteeWithMeetings committeeWithMeetings = await this.data .GetCommitteeByIdWithMeetingsAsync( who : who, committeeId : committeeId) .ConfigureAwait(false); this.logger.ReportExit( who, new { CommitteeWithMeetings = committeeWithMeetings }); return(committeeWithMeetings); }
/// <inheritdoc /> public async Task <ICommitteeWithMeetings> GetCommitteeByIdWithMeetingsAsync( IWho who, Guid committeeId) { this.logger.ReportEntry( who, new { CommitteeId = committeeId }); ICommitteeWithMeetings committeeWithMeetings = (await this.context.Committees .AsNoTracking() .TagWith(this.Tag(who)) .Include(c => c.Organisation) .Include(c => c.Meetings) .FirstOrDefaultAsync(c => c.Id == committeeId) .ConfigureAwait(false)) .ToDomainWithMeetings(); this.logger.ReportExit( who, new { CommitteeWithMeetings = committeeWithMeetings }); return(committeeWithMeetings); }