public async Task <IActionResult> Run([FromBody] RunMailMergeOptions options, CancellationToken cancellationToken = default(CancellationToken)) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } if (string.IsNullOrWhiteSpace(options.MergeTemplateId)) { return(BadRequest("MergeTemplateId cannot be null")); } var mergeTemplate = await _mergeTemplateRepository.GetMergeTemplate(options.MergeTemplateId); if (mergeTemplate == null) { return(NotFound($"MergeTemplate with id {options.MergeTemplateId} was not found")); } Task notifyProgressUpdatedTask = Task.CompletedTask; var result = await _mergeTemplateService.RunMergeTemplateAsync(mergeTemplate, progress => { // only notify is the last one is done already. if (!string.IsNullOrWhiteSpace(options.ConnectionId) && notifyProgressUpdatedTask.IsCompleted) { notifyProgressUpdatedTask = _servicesProxy .NotifyMailMergeUpdatedAsync( options.MergeTemplateId, options.ConnectionId, progress, cancellationToken); } }, cancellationToken); if (!string.IsNullOrWhiteSpace(options.ConnectionId)) { await _servicesProxy .NotifyMailMergeCompletedAsync(options.MergeTemplateId, options.ConnectionId, result, cancellationToken); } return(Ok(result)); }
public async Task <IActionResult> RunMailMerge(RunMailMergeOptions options, CancellationToken cancellationToken = default(CancellationToken)) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var mergeTemplate = await _mergeTemplateRepository.GetMergeTemplate(options.MergeTemplateId); if (mergeTemplate == null) { return(NotFound($"Merge template with id {options.MergeTemplateId} not found")); } var result = await _servicesProxy.RunMailMergeAsync(options, cancellationToken); return(Ok(result)); }