private async Task <(bool, string)> ProceedToParticipationSyncRetryProcess(ParticipationDto participation, CrmData crmData, Configurations configuration) { var success = false; var consumerId = string.Empty; // Store locally var failed = new FailedTransactionDto { Id = Guid.NewGuid(), ParticipationId = participation.Id, TermsConsent = true, NewsletterOptin = participation.NewsletterOptin, CreatedDate = DateTimeOffset.UtcNow }; _failedTransactionService.Create(failed); // Another attempt var reSyncResponse = await _scheduler.RetryParticipationSyncImmediately(crmData, configuration, true); var typedResponse = (CrmResponse)reSyncResponse; success = typedResponse.Data.Success; if (success) { var currentParticipation = _participationService.GetParticipation(participation.Id); currentParticipation.Status = ParticipationStatus.PARTICIPATION_RETRY_SUCCESS.ToString(); currentParticipation.ApiStatus = typedResponse.Data.ApiStatus.ToString(); currentParticipation.ConsumerId = typedResponse.Data.Data.ConsumerId; currentParticipation.ApiMessage = typedResponse.Data.ApiMessage; currentParticipation.ModifiedDate = DateTimeOffset.UtcNow; _participationService.UpdateParticipation(currentParticipation); _failedTransactionService.Delete(failed.Id); consumerId = typedResponse.Data.Data.ConsumerId; } else { var currentParticipation = _participationService.GetParticipation(participation.Id); currentParticipation.Status = ParticipationStatus.PARTICIPATION_RETRY_FAILED.ToString(); currentParticipation.ModifiedDate = DateTimeOffset.UtcNow; _participationService.UpdateParticipation(currentParticipation); } return(success, consumerId); }
public bool Create(FailedTransactionDto transaction) { return(_failedRepository.Add(transaction)); }