Esempio n. 1
0
        public async Task <List <SendMpiResponse> > SendPatientMnchsAsync(SendManifestPackageDTO sendTo,
                                                                          MnchMessageBag messageBag)
        {
            var responses = new List <SendMpiResponse>();
            var client    = Client ?? new HttpClient();
            int sendCound = 0;
            int count     = 0;
            int total     = messageBag.Messages.Count;

            DomainEvents.Dispatch(new MnchStatusNotification(sendTo.ExtractId, ExtractStatus.Sending));
            foreach (var message in messageBag.Messages)
            {
                count++;
                try
                {
                    var msg      = JsonConvert.SerializeObject(message);
                    var response = await client.PostAsJsonAsync(sendTo.GetUrl($"{_endPoint.HasToEndsWith("/")}PatientMnch"), message);

                    if (response.IsSuccessStatusCode)
                    {
                        var content = await response.Content.ReadAsJsonAsync <SendMpiResponse>();

                        responses.Add(content);
                        var sentIds = message.PatientMnchExtracts.Select(x => x.Id).ToList();
                        sendCound += sentIds.Count;
                        DomainEvents.Dispatch(new MnchExtractSentEvent(sentIds, SendStatus.Sent, sendTo.ExtractName));
                    }
                    else
                    {
                        var error = await response.Content.ReadAsStringAsync();

                        DomainEvents.Dispatch(new MnchExtractSentEvent(message.PatientMnchExtracts.Select(x => x.Id).ToList(), SendStatus.Failed, sendTo.ExtractName, error));
                        throw new Exception(error);
                    }
                }
                catch (Exception e)
                {
                    Log.Error(e, $"Send Manifest Error");
                    throw;
                }
                DomainEvents.Dispatch(new MnchSendNotification(new SendProgress(nameof(PatientMnchExtract), Common.GetProgress(count, total), sendCound)));
            }
            DomainEvents.Dispatch(new MnchSendNotification(new SendProgress(nameof(PatientMnchExtract), Common.GetProgress(count, total), sendCound, true)));
            DomainEvents.Dispatch(new MnchStatusNotification(sendTo.ExtractId, ExtractStatus.Sent, sendCound));
            return(responses);
        }
Esempio n. 2
0
 public Task <List <SendMpiResponse> > SendPatientMnchsAsync(SendManifestPackageDTO sendTo)
 {
     return(SendPatientMnchsAsync(sendTo, MnchMessageBag.Create(_packager.GeneratePatientMnchs().ToList())));
 }
Esempio n. 3
0
 public Task <List <SendMpiResponse> > SendMotherBabyPairsAsync(SendManifestPackageDTO sendTo)
 {
     return(SendMotherBabyPairsAsync(sendTo,
                                     MnchMessageBag.Create(_packager.GenerateMotherBabyPairs().ToList())));
 }