public void Init() { var config = new ConfigurationBuilder() .AddJsonFile("appsettings.json") .Build(); var connectionString = config["ConnectionStrings:DwapiConnection"]; _serviceProvider = new ServiceCollection() .AddDbContext <UploadContext>(o => o.UseSqlServer(connectionString)) .AddTransient <IHtsSendService, HtsSendService>() .AddTransient <IHtsPackager, HtsPackager>() .AddTransient <IEmrMetricReader, EmrMetricReader>() .AddTransient <IHtsExtractReader, HtsExtractReader>() .BuildServiceProvider(); /* * 22704|TOGONYE DISPENSARY|KIRINYAGA * 22696|HERTLANDS MEDICAL CENTRE|NAROK */ _bag = TestDataFactory.ManifestMessageBag(2, 10001, 10002); _clientBag = TestDataFactory.HtsMessageBag(5, 10001, 10002); }
public async Task <List <SendMpiResponse> > SendClientsAsync(SendManifestPackageDTO sendTo, HtsMessageBag messageBag) { var responses = new List <SendMpiResponse>(); var client = new HttpClient(); int sendCound = 0; int count = 0; int total = messageBag.Messages.Count; DomainEvents.Dispatch(new HtsStatusNotification(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("/")}Clients"), message); if (response.IsSuccessStatusCode) { var content = await response.Content.ReadAsJsonAsync <SendMpiResponse>(); responses.Add(content); var sentIds = message.Clients.Select(x => x.Id).ToList(); sendCound += sentIds.Count; DomainEvents.Dispatch(new HtsExtractSentEvent(sentIds, SendStatus.Sent, sendTo.ExtractName)); } else { var error = await response.Content.ReadAsStringAsync(); DomainEvents.Dispatch(new HtsExtractSentEvent(message.Clients.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 HtsSendNotification(new SendProgress(nameof(HTSClientExtract), Common.GetProgress(count, total)))); } DomainEvents.Dispatch(new HtsSendNotification(new SendProgress(nameof(HTSClientExtract), Common.GetProgress(count, total), true))); DomainEvents.Dispatch(new HtsStatusNotification(sendTo.ExtractId, ExtractStatus.Sent, sendCound)); return(responses); }
public Task <List <SendMpiResponse> > SendPartnerNotificationServicesAsync(SendManifestPackageDTO sendTo) { return(SendPartnerNotificationServicesAsync(sendTo, HtsMessageBag.Create(_packager.GeneratePartnerNotificationServices().ToList()))); }
public Task <List <SendMpiResponse> > SendClientsAsync(SendManifestPackageDTO sendTo) { return(SendClientsAsync(sendTo, HtsMessageBag.Create(_packager.GenerateClients().ToList()))); }
public Task <List <SendMpiResponse> > SendPartnerTracingAsync(SendManifestPackageDTO sendTo) { return(SendPartnerTracingAsync(sendTo, HtsMessageBag.Create(_packager.GeneratePartnerTracing().ToList()))); }