From 9c81666b384aa6903283bdc3977a63b7427c52bb Mon Sep 17 00:00:00 2001 From: rockstardev <5191402+rockstardev@users.noreply.github.com> Date: Thu, 3 Jul 2025 00:00:43 +0200 Subject: [PATCH] Simplifying implementation of status switch --- .../Controllers/UIPaymentRequestController.cs | 35 +++++-------------- .../GetPaymentRequests.cshtml | 14 ++++---- BTCPayServer/wwwroot/main/site.js | 33 +++++------------ 3 files changed, 23 insertions(+), 59 deletions(-) diff --git a/BTCPayServer/Controllers/UIPaymentRequestController.cs b/BTCPayServer/Controllers/UIPaymentRequestController.cs index 88253eeae..76d0425d1 100644 --- a/BTCPayServer/Controllers/UIPaymentRequestController.cs +++ b/BTCPayServer/Controllers/UIPaymentRequestController.cs @@ -465,48 +465,31 @@ namespace BTCPayServer.Controllers return NotFound(); } - [HttpPost("{payReqId}/changestate/{newState}")] + [HttpPost("{payReqId}/complete")] [Authorize(AuthenticationSchemes = AuthenticationSchemes.Cookie, Policy = Policies.CanModifyPaymentRequests)] - public async Task ChangePaymentRequestState(string payReqId, string newState) + public async Task TogglePaymentRequestCompleted(string payReqId) { - if (string.IsNullOrWhiteSpace(payReqId) || string.IsNullOrWhiteSpace(newState)) + if (string.IsNullOrWhiteSpace(payReqId)) { return BadRequest("Invalid parameters"); } var paymentRequest = await _PaymentRequestRepository.FindPaymentRequest(payReqId, GetUserId()); - var model = new PaymentRequestStateChangeModel(); if (paymentRequest == null) { - model.NotFound = true; - return NotFound(model); + return NotFound(); } - if (newState == "completed") + if (paymentRequest.Status != PaymentRequestStatus.Pending) { - await _PaymentRequestRepository.UpdatePaymentRequestStatus(payReqId, PaymentRequestStatus.Completed); - model.StatusString = "Settled"; - } - else if (newState == "expired") - { - await _PaymentRequestRepository.UpdatePaymentRequestStatus(payReqId, PaymentRequestStatus.Expired); - model.StatusString = "Expired"; - } - else - { - return BadRequest($"Invalid state: {newState}"); + return BadRequest("Invalid payment request status. Only pending payment requests can be marked as completed."); } - return Json(model); + await _PaymentRequestRepository.UpdatePaymentRequestStatus(payReqId, PaymentRequestStatus.Completed); + + return RedirectToAction("GetPaymentRequests", new { storeId = paymentRequest.StoreDataId }); } - public class PaymentRequestStateChangeModel - { - public bool NotFound { get; set; } - public string? StatusString { get; set; } - } - - private string GetUserId() => _UserManager.GetUserId(User); private StoreData GetCurrentStore() => HttpContext.GetStoreData(); diff --git a/BTCPayServer/Views/UIPaymentRequest/GetPaymentRequests.cshtml b/BTCPayServer/Views/UIPaymentRequest/GetPaymentRequests.cshtml index e7036a147..f9f998a1e 100644 --- a/BTCPayServer/Views/UIPaymentRequest/GetPaymentRequests.cshtml +++ b/BTCPayServer/Views/UIPaymentRequest/GetPaymentRequests.cshtml @@ -18,7 +18,7 @@ { private int CountArrayFilter(string type) => Model.Search.ContainsFilter(type) ? Model.Search.GetFilterArray(type).Length : 0; - + private bool HasArrayFilter(string type, string key = null) => Model.Search.ContainsFilter(type) && (key is null || Model.Search.GetFilterArray(type).Contains(key)); @@ -121,7 +121,9 @@ @item.Status } @@ -136,14 +138,14 @@
View -