Exemplo n.º 1
0
        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));
 }