public async Task <IActionResult> MarkInvoiceStatus(string storeId, string invoiceId, MarkInvoiceStatusRequest request) { var store = HttpContext.GetStoreData(); if (store == null) { return(InvoiceNotFound()); } var invoice = await _invoiceRepository.GetInvoice(invoiceId, true); if (invoice.StoreId != store.Id) { return(InvoiceNotFound()); } if (!await _invoiceRepository.MarkInvoiceStatus(invoice.Id, request.Status)) { ModelState.AddModelError(nameof(request.Status), "Status can only be marked to invalid or settled within certain conditions."); } if (!ModelState.IsValid) { return(this.CreateValidationError(ModelState)); } return(await GetInvoice(storeId, invoiceId)); }
public virtual async Task <InvoiceData> MarkInvoiceStatus(string storeId, string invoiceId, MarkInvoiceStatusRequest request, CancellationToken token = default) { if (request == null) { throw new ArgumentNullException(nameof(request)); } if (request.Status != InvoiceStatus.Settled && request.Status != InvoiceStatus.Invalid) { throw new ArgumentOutOfRangeException(nameof(request.Status), "Status can only be Invalid or Complete"); } var response = await _httpClient.SendAsync( CreateHttpRequest($"api/v1/stores/{storeId}/invoices/{invoiceId}/status", bodyPayload : request, method : HttpMethod.Post), token); return(await HandleResponse <InvoiceData>(response)); }