public static HearingsByUsernameForDeletionResponse MapToDeletionResponse(Hearing hearing)
        {
            var leadCase = hearing.GetCases().FirstOrDefault(x => x.IsLeadCase) ?? hearing.GetCases().FirstOrDefault();

            return(new HearingsByUsernameForDeletionResponse
            {
                HearingId = hearing.Id,
                CaseName = leadCase?.Name,
                CaseNumber = leadCase?.Number,
                ScheduledDateTime = hearing.ScheduledDateTime,
                Venue = hearing.HearingVenueName
            });
        }
コード例 #2
0
        /// <summary>
        /// Map an existing hearing to a CreateVideoHearingCommand for the purpose of multi-booking days
        /// </summary>
        /// <param name="hearing">Original hearing</param>
        /// <param name="newDate">New hearing date</param>
        /// <param name="randomGenerator">generator for unique sips</param>
        /// <param name="sipAddressStem">sip address stem</param>
        /// <param name="totalDays">Total number of days of multi-booking hearing</param>
        /// <param name="hearingDay">Day number of multi-booking hearing</param>
        /// <returns>command to create a new video hearing</returns>
        public static CreateVideoHearingCommand CloneToCommand(Hearing hearing, DateTime newDate,
                                                               IRandomGenerator randomGenerator, string sipAddressStem, int totalDays, int hearingDay)
        {
            var reps = hearing.GetParticipants().Where(x => x.HearingRole.UserRole.IsRepresentative)
                       .Cast <Representative>().ToList();
            var nonReps      = hearing.GetParticipants().Where(x => !x.HearingRole.UserRole.IsRepresentative).ToList();
            var participants = new List <NewParticipant>();

            participants.AddRange(reps.Select(r => new NewParticipant
            {
                Person      = r.Person,
                Representee = r.Representee,
                CaseRole    = r.CaseRole,
                DisplayName = r.DisplayName,
                HearingRole = r.HearingRole
            }));
            participants.AddRange(nonReps.Select(r => new NewParticipant
            {
                Person      = r.Person,
                CaseRole    = r.CaseRole,
                DisplayName = r.DisplayName,
                HearingRole = r.HearingRole
            }));

            var cases = hearing.GetCases().Select(c => new Case(c.Number, $"{c.Name} Day {hearingDay} of {totalDays}")
            {
                IsLeadCase = c.IsLeadCase
            }).ToList();

            var newEndpoints = hearing.GetEndpoints().Select(x =>
            {
                var sip = randomGenerator.GetWeakDeterministic(DateTime.UtcNow.Ticks, 1, 10);
                var pin = randomGenerator.GetWeakDeterministic(DateTime.UtcNow.Ticks, 1, 4);
                return(new NewEndpoint
                {
                    Pin = pin,
                    Sip = $"{sip}{sipAddressStem}",
                    DisplayName = x.DisplayName,
                    DefenceAdvocateUsername = x.DefenceAdvocate?.Person?.Username
                });
            }).ToList();

            var linkedParticipantDtos = GetLinkedParticipantDtos(hearing);

            var duration = 480;
            var command  = new CreateVideoHearingCommand(hearing.CaseType, hearing.HearingType, newDate,
                                                         duration, hearing.HearingVenue, participants, cases, true,
                                                         hearing.AudioRecordingRequired, newEndpoints, linkedParticipantDtos)
            {
                HearingRoomName  = hearing.HearingRoomName,
                OtherInformation = hearing.OtherInformation,
                CreatedBy        = hearing.CreatedBy,
                SourceId         = hearing.Id
            };

            return(command);
        }
コード例 #3
0
        private void AssertHearingByCaseNumberResponse(AudioRecordedHearingsBySearchResponse model, Hearing seededHearing)
        {
            var @case = seededHearing.GetCases()[0];

            model.CaseNumber.Should().Be(@case.Number);
            model.CaseName.Should().Be(@case.Name);
            model.HearingVenueName.Should().Be(seededHearing.HearingVenueName);
            model.ScheduledDateTime.Should().Be(seededHearing.ScheduledDateTime);
        }
コード例 #4
0
        public static HearingDto MapToDto(Hearing hearing)
        {
            var @case = hearing.GetCases().First(); // Does this need to be a lead case?

            return(new HearingDto
            {
                HearingId = hearing.Id,
                ScheduledDateTime = hearing.ScheduledDateTime,
                ScheduledDuration = hearing.ScheduledDuration,
                CaseType = hearing.CaseType.Name,
                CaseNumber = @case.Number,
                CaseName = @case.Name,
                HearingVenueName = hearing.HearingVenueName,
                RecordAudio = hearing.AudioRecordingRequired
            });
        }
        public HearingDetailsResponse MapHearingToDetailedResponse(Hearing videoHearing)
        {
            var caseMapper        = new CaseToResponseMapper();
            var participantMapper = new ParticipantToResponseMapper();

            var cases = videoHearing.GetCases()
                        .Select(x => caseMapper.MapCaseToResponse(x))
                        .ToList();

            var participants = videoHearing.GetParticipants()
                               .Select(x => participantMapper.MapParticipantToResponse(x))
                               .ToList();

            var endpoints = videoHearing.GetEndpoints()
                            .Select(EndpointToResponseMapper.MapEndpointToResponse)
                            .ToList();

            var response = new HearingDetailsResponse
            {
                Id = videoHearing.Id,
                ScheduledDuration        = videoHearing.ScheduledDuration,
                ScheduledDateTime        = videoHearing.ScheduledDateTime,
                HearingTypeName          = videoHearing.HearingType.Name,
                CaseTypeName             = videoHearing.CaseType.Name,
                HearingVenueName         = videoHearing.HearingVenueName,
                Cases                    = cases,
                Participants             = participants,
                HearingRoomName          = videoHearing.HearingRoomName,
                OtherInformation         = videoHearing.OtherInformation,
                CreatedBy                = videoHearing.CreatedBy,
                CreatedDate              = videoHearing.CreatedDate,
                UpdatedBy                = videoHearing.UpdatedBy,
                UpdatedDate              = videoHearing.UpdatedDate,
                ConfirmedBy              = videoHearing.ConfirmedBy,
                ConfirmedDate            = videoHearing.ConfirmedDate,
                Status                   = videoHearing.Status.MapToContractEnum(),
                QuestionnaireNotRequired = videoHearing.QuestionnaireNotRequired,
                AudioRecordingRequired   = videoHearing.AudioRecordingRequired,
                CancelReason             = videoHearing.CancelReason,
                GroupId                  = videoHearing.SourceId,
                Endpoints                = endpoints
            };

            return(response);
        }
        public HearingDetailsUpdatedIntegrationEvent(Hearing hearing)
        {
            var @case = hearing.GetCases().First(); // Does this need to be a lead case? Leadcase prop needs to be set on the domain

            Hearing = HearingDtoMapper.MapToDto(hearing);
        }