Пример #1
0
        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));
        }