/// <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);
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        /// <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()));
        }
Exemple #4
0
        /// <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);
        }
Exemple #6
0
        /// <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);
        }