コード例 #1
0
        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"));
            }
        }
コード例 #2
0
        public async Task ChangePaymentRequestStatusAsync(PaymentRequestStatusChangeModel request)
        {
            int?paymentRequestId          = request?.Id;
            EservicePaymentRequest entity = await _context.EservicePaymentRequest
                                            .Include(x => x.PaymentRequest)
                                            .Include(x => x.SeizedPropertyCertificateRequest)
                                            .Include(x => x.SeizedPropertyReportRequest).ThenInclude(x => x.RequestorUser)
                                            .Include(x => x.SeizedPropertyReportRequest).ThenInclude(x => x.RequestorPerson)
                                            .Include(x => x.SeizedPropertyReportRequest).ThenInclude(x => x.RequesterCompany)
                                            .Where(x => x.AisPaymentId == paymentRequestId)
                                            .FirstOrDefaultAsync();

            if (entity == null)
            {
                throw new ArgumentNullException(nameof(EservicePaymentRequest), $"EservicePaymentRequest not found for status update! (id:{paymentRequestId})");
            }

            string newStatus = (request?.Status ?? "").Trim().ToUpper();

            DateTime serviceTimestamp = request.ChangeTime.HasValue ? DateTime.SpecifyKind(request.ChangeTime.Value, DateTimeKind.Utc) : DateTime.SpecifyKind(DateTime.UtcNow, DateTimeKind.Utc);
            DateTime timestamp        = DateTime.SpecifyKind(DateTime.Now, DateTimeKind.Utc);

            entity.UpdatedAt  = timestamp;
            entity.StatusCode = newStatus;

            _context.EservicePaymentRequest.Update(entity);
            await _context.SaveChangesAsync();

            await AddEServicePaymentRequestStatusHistory(entity.Id, newStatus, timestamp, serviceTimestamp, null);

            //Изпрашане на email
            string email = entity.SeizedPropertyCertificateRequestId.HasValue
                ? entity.SeizedPropertyCertificateRequest.Email
                : (entity.SeizedPropertyReportRequestId.HasValue
                    ? (string.IsNullOrWhiteSpace(entity.SeizedPropertyReportRequest.RequestorUserId) == false
                        ? entity.SeizedPropertyReportRequest.RequestorUser.Email
                        : (entity.SeizedPropertyReportRequest.RequestorPersonId.HasValue
                            ? entity.SeizedPropertyReportRequest.RequestorPerson.Email
                            : (entity.SeizedPropertyReportRequest.RequesterCompanyId.HasValue
                                ? "" // Как ще се вземе email
                                : ""
                               ))
                       )
                    : ""
                   );

            if (!string.IsNullOrWhiteSpace(email))
            {
                string subject = $"Промяна на статуса на заявка с ИД №: {paymentRequestId} в системата за електронно плащане";
                string body    = $"Статусът на заявка с ИД №: {paymentRequestId} в системата за електронно плащане е променен на '{newStatus}'.{Environment.NewLine}" +
                                 $"За детайли посетете платформата за електронно плащане на адрес: {(_settings.UseTestEnv ? "https://pay-test.egov.bg/" : "https://pay.egov.bg/")} .";

                if (newStatus.Equals(Shared.Enums.PaymentRequestStatus.PAID.ToString(), StringComparison.OrdinalIgnoreCase))
                {
                    // Платено да се мисли как ще си получи услугата
                    if (!string.IsNullOrWhiteSpace(entity.PaymentRequest?.PaymentReferenceNumber))
                    {
                        body += $"{Environment.NewLine} Връзка за получване на услугата: {_settings.AdministrativeServiceSupplierUri}#/seizedPropertyAvailability/paidReport?id={entity.PaymentRequest.PaymentReferenceNumber}";
                    }
                }

                _emailService.SendEmail(email, null, null, subject, body);
            }
        }