public async Task UpdateStatusesAsync() { // Всички в EServicePaymentRequest, който имат Id от регистрация в сустемата на ел.плащане // и имат статус различен от ERROR, PAID, CANCELED, EXPIRED, SUSPENDED var exceptHash = new HashSet <string>(new List <string> { "ERROR", "PAID", "CANCELED", "EXPIRED", "SUSPENDED" }); var entities = await _context.EservicePaymentRequest .AsNoTracking() .Where(x => x.AisPaymentId != null && x.StatusCode != null && !exceptHash.Contains(x.StatusCode)) .Select(x => new { x.AisPaymentId, x.StatusCode }) .ToListAsync(); var ids = new HashSet <int>(entities.Where(x => x.AisPaymentId.HasValue).Select(x => x.AisPaymentId.Value)); PaymentRequestStatusCheckResultModel checkResults = await _ePaymentService.PaymentRequestsStatusCheckAsync(ids.ToList()); if (checkResults?.Statuses != null) { var toChage = checkResults.Statuses.Where(x => !entities.Any(e => e.AisPaymentId == x.Id && e.StatusCode.Equals(x.Status, StringComparison.OrdinalIgnoreCase))); foreach (PaymentRequestStatusChangeModel item in toChage) { await _ePaymentService.ChangePaymentRequestStatusAsync(item); } } }
public async Task <IActionResult> PaymentRequestStatusChanged([FromBody] PaymentRequestStatusChangeModel model) { try { if (model == null) { Log.Information($"IntegrationController/paymentRequestStatusChanged - empty model"); return(BadRequest("Empty model")); } await paymentService.ChangePaymentRequestStatusAsync(model); Log.Information($"IntegrationController/paymentRequestStatusChanged - changed request with Id: {model.Id} / {model.Status} / {model.ChangeTime}"); return(Ok(new { success = true })); } catch (Exception ex) { Log.Error(ex, $"ERROR changing payment request status"); return(BadRequest("Error changing payment request status")); } }