public void should_map_to_lip_hearing_amendment_notification()
        {
            var expectedNotificationType = NotificationType.HearingAmendmentLip;
            var oldDate     = new DateTime(2020, 2, 10, 11, 30, 0, DateTimeKind.Utc);
            var newDate     = new DateTime(2020, 10, 12, 13, 10, 0, DateTimeKind.Utc);
            var caseName    = "cse test";
            var caseNumber  = "MBFY/17364";
            var participant = InitParticipant("Individual");

            var expectedParameters = new Dictionary <string, string>
            {
                { "case name", caseName },
                { "case number", caseNumber },
                { "name", $"{participant.FirstName} {participant.LastName}" },
                { "Old time", "11:30 AM" },
                { "New time", "2:10 PM" },
                { "Old Day Month Year", "10 February 2020" },
                { "New Day Month Year", "12 October 2020" }
            };

            var result =
                AddNotificationRequestMapper.MapToHearingAmendmentNotification(_hearing, participant, caseName,
                                                                               caseNumber, oldDate, newDate);

            result.Should().NotBeNull();
            result.HearingId.Should().Be(_hearing.Id);
            result.ParticipantId.Should().Be(participant.Id);
            result.ContactEmail.Should().Be(participant.ContactEmail);
            result.NotificationType.Should().Be(expectedNotificationType);
            result.MessageType.Should().Be(MessageType.Email);
            result.PhoneNumber.Should().Be(participant.TelephoneNumber);
            result.Parameters.Should().BeEquivalentTo(expectedParameters);
        }
        public async Task SendHearingUpdateEmail(HearingDetailsResponse originalHearing, HearingDetailsResponse updatedHearing, List <ParticipantResponse> participants = null)
        {
            if (updatedHearing.IsGenericHearing())
            {
                return;
            }

            var @case      = updatedHearing.Cases.First();
            var caseName   = @case.Name;
            var caseNumber = @case.Number;

            var participantsToEmail = participants ?? updatedHearing.Participants;

            if (!updatedHearing.DoesJudgeEmailExist() || originalHearing.ConfirmedDate == null || originalHearing.GroupId != originalHearing.Id)
            {
                participantsToEmail = participantsToEmail
                                      .Where(x => !x.UserRoleName.Contains("Judge", StringComparison.CurrentCultureIgnoreCase))
                                      .ToList();
            }

            var requests = participantsToEmail
                           .Select(participant =>
                                   AddNotificationRequestMapper.MapToHearingAmendmentNotification(updatedHearing, participant,
                                                                                                  caseName, caseNumber, originalHearing.ScheduledDateTime, updatedHearing.ScheduledDateTime))
                           .ToList();

            foreach (var request in requests)
            {
                await _notificationApiClient.CreateNewNotificationAsync(request);
            }
        }
        public void should_map_to_judge_hearing_amendment_notification()
        {
            var expectedNotificationType = NotificationType.HearingAmendmentJudge;
            var oldDate     = new DateTime(2020, 2, 10, 11, 30, 0, DateTimeKind.Utc);
            var newDate     = new DateTime(2020, 10, 12, 13, 10, 0, DateTimeKind.Utc);
            var caseName    = "cse test";
            var caseNumber  = "MBFY/17364";
            var participant = InitParticipant("Judge");

            _hearing.OtherInformation = JsonConvert.SerializeObject(new OtherInformationDetails
            {
                JudgeEmail = "*****@*****.**", JudgePhone = "123456789"
            });

            var expectedParameters = new Dictionary <string, string>
            {
                { "case name", caseName },
                { "case number", caseNumber },
                { "judge", participant.DisplayName },
                { "courtroom account username", participant.Username },
                { "Old time", "11:30 AM" },
                { "New time", "2:10 PM" },
                { "Old Day Month Year", "10 February 2020" },
                { "New Day Month Year", "12 October 2020" }
            };

            var result =
                AddNotificationRequestMapper.MapToHearingAmendmentNotification(_hearing, participant, caseName,
                                                                               caseNumber, oldDate, newDate);

            result.Should().NotBeNull();
            result.HearingId.Should().Be(_hearing.Id);
            result.ParticipantId.Should().Be(participant.Id);
            result.ContactEmail.Should().Be(participant.ContactEmail);
            result.NotificationType.Should().Be(expectedNotificationType);
            result.MessageType.Should().Be(MessageType.Email);
            result.PhoneNumber.Should().Be(participant.TelephoneNumber);
            result.Parameters.Should().BeEquivalentTo(expectedParameters);
        }