| | | 1 | | using Microsoft.AspNetCore.Authorization; |
| | | 2 | | using Microsoft.AspNetCore.Mvc; |
| | | 3 | | using OzonOrdersWeb.Filters; |
| | | 4 | | using OzonOrdersWeb.TransactionServices; |
| | | 5 | | |
| | | 6 | | namespace OzonOrdersWeb.Areas.Studio2.Controllers; |
| | | 7 | | |
| | | 8 | | [Area("Studio2")] |
| | | 9 | | [Authorize(Roles = "User,Admin")] |
| | 0 | 10 | | public sealed class ArmtekCartController(ArmtekCartService cartService) : Controller |
| | | 11 | | { |
| | | 12 | | [HttpGet] |
| | | 13 | | public async Task<IActionResult> Index(string provider = "Armtek", string tab = "cart", CancellationToken ct = defau |
| | | 14 | | { |
| | 0 | 15 | | if (!IsProvider(provider)) return NotFound(); |
| | 0 | 16 | | ViewBag.Provider = provider; |
| | 0 | 17 | | ViewBag.Tab = tab == "orders" ? "orders" : "cart"; |
| | 0 | 18 | | ViewBag.CartItems = await cartService.GetActiveAsync(provider, ct); |
| | 0 | 19 | | ViewBag.Orders = await cartService.GetOrdersAsync(provider, ct); |
| | 0 | 20 | | return View(); |
| | 0 | 21 | | } |
| | | 22 | | |
| | | 23 | | [HttpPost, ValidateAntiForgeryToken] |
| | | 24 | | public async Task<IActionResult> Test(string provider, CancellationToken ct) |
| | | 25 | | { |
| | 0 | 26 | | if (!IsProvider(provider)) return NotFound(); |
| | 0 | 27 | | TempData["ArmtekCartResult"] = string.Join(" ", (await cartService.TestAsync(provider, User.Identity?.Name ?? "u |
| | 0 | 28 | | return RedirectToAction(nameof(Index), new { provider }); |
| | 0 | 29 | | } |
| | | 30 | | |
| | | 31 | | [HttpPost, ValidateAntiForgeryToken] |
| | | 32 | | [SupplierOrderGuard] |
| | | 33 | | public async Task<IActionResult> Checkout(string provider, CancellationToken ct) |
| | | 34 | | { |
| | 0 | 35 | | if (!IsProvider(provider)) return NotFound(); |
| | 0 | 36 | | TempData["ArmtekCartResult"] = string.Join(" ", (await cartService.CheckoutAsync(provider, User.Identity?.Name ? |
| | 0 | 37 | | return RedirectToAction(nameof(Index), new { provider }); |
| | 0 | 38 | | } |
| | | 39 | | |
| | | 40 | | [HttpPost, ValidateAntiForgeryToken] |
| | | 41 | | public async Task<IActionResult> Remove(string provider, long id, CancellationToken ct) |
| | | 42 | | { |
| | 0 | 43 | | if (!IsProvider(provider)) return NotFound(); |
| | 0 | 44 | | await cartService.RemoveAsync(id, provider, ct); |
| | 0 | 45 | | return RedirectToAction(nameof(Index), new { provider }); |
| | 0 | 46 | | } |
| | | 47 | | |
| | 0 | 48 | | private static bool IsProvider(string provider) => provider is "Armtek" or "ArmtekBy"; |
| | | 49 | | } |