private async Task AddEServicePaymentRequestStatusHistory(int requestId, string status, DateTime date, DateTime?serviceTime, string errors) { EservicePaymentRequestStatusHistory entity = new EservicePaymentRequestStatusHistory(); entity.RequestId = requestId; entity.StatusCode = status; entity.UpdatedAt = DateTime.SpecifyKind(date, DateTimeKind.Utc); entity.EserviceTime = serviceTime; entity.Errors = errors; await _context.EservicePaymentRequestStatusHistory.AddAsync(entity); await _context.SaveChangesAsync(); }
public static EServicePaymentStatusHistoryModel ToModel(this EservicePaymentRequestStatusHistory entity) { if (entity == null) { return(null); } var model = new EServicePaymentStatusHistoryModel { Id = entity.Id, RequestId = entity.RequestId, StatusCode = entity.StatusCode, StatusCodeName = entity.StatusCodeNavigation?.Name, StatusCodeNameEn = entity.StatusCodeNavigation?.NameEn, UpdatedAt = entity.UpdatedAt, EServiceTime = entity.EserviceTime.HasValue ? entity.EserviceTime.Value : default(DateTime), Errors = entity.Errors, }; return(model); }
public async Task <(bool hasToPay, PaymentRequestSendResultModel paymentRequestModel, RequestForCertificateOfDistraintOfProperty request)> CreateAsync(RequestModel model, string currentUserId) { using (var tran = _context.Database.BeginTransaction()) { try { RequestForCertificateOfDistraintOfProperty entry = await SaveRequestForCertificateOfDistraintOfProperty(model); bool hasToPay = HasToPay(model, currentUserId); if (!HasToPay(model, currentUserId)) { // Не се изисква плащане. Връщаме резултат return(hasToPay, paymentRequestModel : null, entry); } PaymentRequestSendResultModel paymentRequestModel = await CreateTaxMeRequest(entry.Id); if (paymentRequestModel == null) { // Неуспешено изпращане на заявка за ел.плащане в системата за ел.плащане. await tran.RollbackAsync(); return(hasToPay, paymentRequestModel, entry); } var eservicePaymentRequest = await _context.EservicePaymentRequest.Where(x => x.SeizedPropertyCertificateRequestId == entry.Id).FirstOrDefaultAsync(); if (eservicePaymentRequest != null) { // Запис на резултат от изпращането на заявка за ел.плащане. DateTime utcNow = DateTime.UtcNow; EservicePaymentRequestStatusHistory historyRecord = new EservicePaymentRequestStatusHistory { RequestId = eservicePaymentRequest.Id, UpdatedAt = utcNow }; eservicePaymentRequest.UpdatedAt = utcNow; if (!paymentRequestModel.IsSuccessStatusCode) { eservicePaymentRequest.StatusCode = Shared.Enums.PaymentRequestStatus.ERROR.ToString(); historyRecord.StatusCode = Shared.Enums.PaymentRequestStatus.ERROR.ToString(); historyRecord.Errors = paymentRequestModel.ErrorMessage; } else { if (paymentRequestModel.UnacceptedReceipt != null) { eservicePaymentRequest.StatusCode = Shared.Enums.PaymentRequestStatus.REJECTED.ToString(); historyRecord.StatusCode = Shared.Enums.PaymentRequestStatus.REJECTED.ToString(); historyRecord.EserviceTime = paymentRequestModel.UnacceptedReceipt.ValidationTime; } else { eservicePaymentRequest.StatusCode = Shared.Enums.PaymentRequestStatus.PENDING.ToString(); eservicePaymentRequest.AisPaymentId = paymentRequestModel.AcceptedReceipt.Id; historyRecord.StatusCode = Shared.Enums.PaymentRequestStatus.PENDING.ToString(); historyRecord.EserviceTime = paymentRequestModel.AcceptedReceipt.RegistrationTime; } } _context.EservicePaymentRequestStatusHistory.Add(historyRecord); await _context.SaveChangesAsync(); } await tran.CommitAsync(); return(hasToPay, paymentRequestModel, entry); } catch (Exception e) { await tran.RollbackAsync(); throw e; } } }