public async Task <bool> Update(InitiatedLinkRequest linkRequest)
 {
     try
     {
         linkPatientContext.InitiatedLinkRequest.Update(linkRequest);
         return(true);
     }
     catch (Exception exception)
     {
         Log.Fatal(exception, exception.StackTrace);
         return(false);
     }
 }
예제 #2
0
        private async void ShouldReturnLinkReferenceResponse()
        {
            const string linkReferenceNumber = "linkreference";
            const string authType            = "MEDIATED";
            const string programRefNo        = "129";
            const string medium = "MOBILE";

            IEnumerable <CareContextEnquiry> careContexts = new[] { new CareContextEnquiry(programRefNo) };
            var patient = new LinkEnquiry(TestBuilders.Faker().Random.Hash(),
                                          TestBuilders.Faker().Random.Hash(), testPatient.Identifier, careContexts);
            var patientReferenceRequest = new PatientLinkEnquiry(TestBuilders.Faker().Random.Hash(),
                                                                 TestBuilders.Faker().Random.Hash(), patient);

            guidGenerator.Setup(x => x.NewGuid()).Returns(linkReferenceNumber);
            patientVerification.Setup(x => x.SendTokenFor(new Session(linkReferenceNumber
                                                                      , new Communication(CommunicationMode.MOBILE, testPatient.PhoneNumber)
                                                                      , new OtpGenerationDetail(TestBuilder.Faker().Random.Word(), OtpAction.LINK_PATIENT_CARECONTEXT.ToString()))))
            .ReturnsAsync((OtpMessage)null);
            var initiatedLinkRequest = new InitiatedLinkRequest(patientReferenceRequest.RequestId,
                                                                patientReferenceRequest.TransactionId,
                                                                linkReferenceNumber,
                                                                false,
                                                                It.IsAny <string>());

            linkRepository.Setup(x => x.SaveRequestWith(linkReferenceNumber,
                                                        patientReferenceRequest.Patient.ConsentManagerId,
                                                        patientReferenceRequest.Patient.ConsentManagerUserId,
                                                        patientReferenceRequest.Patient.ReferenceNumber, new[] { programRefNo }))
            .ReturnsAsync(new Tuple <LinkEnquires, Exception>(null, null));
            linkRepository.Setup(x => x.Save(patientReferenceRequest.RequestId,
                                             patientReferenceRequest.TransactionId,
                                             linkReferenceNumber))
            .ReturnsAsync(Option.Some(initiatedLinkRequest));

            patientRepository.Setup(x => x.PatientWith(testPatient.Identifier))
            .Returns(Option.Some(testPatient));

            var(response, _) = await linkPatient.LinkPatients(patientReferenceRequest);

            patientVerification.Verify();
            linkRepository.Verify();
            guidGenerator.Verify();
            discoveryRequestRepository.Verify(x => x.Delete(patientReferenceRequest.TransactionId,
                                                            patientReferenceRequest.Patient.ConsentManagerUserId));
            response.Link.ReferenceNumber.Should().Be(linkReferenceNumber);
            response.Link.AuthenticationType.Should().Be(authType);
            response.Link.Meta.CommunicationHint.Should().Be(testPatient.PhoneNumber);
            response.Link.Meta.CommunicationMedium.Should().Be(medium);
            response.Link.Should().NotBeNull();
        }
        public async Task <Option <InitiatedLinkRequest> > Save(string requestId,
                                                                string transactionId,
                                                                string linkReferenceNumber)
        {
            try
            {
                var initiatedLinkRequest = new InitiatedLinkRequest(requestId,
                                                                    transactionId,
                                                                    linkReferenceNumber,
                                                                    false,
                                                                    DateTime.Now.ToUniversalTime().ToString(Constants.DateTimeFormat));
                await linkPatientContext.InitiatedLinkRequest.AddAsync(initiatedLinkRequest).ConfigureAwait(false);

                await linkPatientContext.SaveChangesAsync();

                return(Option.Some(initiatedLinkRequest));
            }
            catch (Exception exception)
            {
                Log.Fatal(exception, exception.StackTrace);
                return(Option.None <InitiatedLinkRequest>());
            }
        }