| | | 1 | | using Microsoft.AspNetCore.Authorization; |
| | | 2 | | using Microsoft.AspNetCore.Mvc; |
| | | 3 | | using Newtonsoft.Json; |
| | | 4 | | |
| | | 5 | | namespace OzonOrdersWeb.Areas.Studio2.Controllers |
| | | 6 | | { |
| | | 7 | | [Authorize(Roles = "User,Admin")] |
| | | 8 | | [Area("Studio2")] |
| | | 9 | | [Route("Studio2/Orders")] |
| | | 10 | | public class OrderSessionController : Controller |
| | | 11 | | { |
| | | 12 | | private const string SessionKey = "selectedIds"; |
| | | 13 | | |
| | | 14 | | [HttpPost] |
| | | 15 | | [Route("AddIdsToSession")] |
| | | 16 | | public IActionResult AddIdsToSession([FromBody] List<int> ids) |
| | | 17 | | { |
| | 0 | 18 | | var selectedIds = RetrieveSelectedIds(); |
| | 0 | 19 | | foreach (var id in ids) |
| | | 20 | | { |
| | 0 | 21 | | if (!selectedIds.Contains(id)) |
| | 0 | 22 | | selectedIds.Add(id); |
| | | 23 | | } |
| | 0 | 24 | | HttpContext.Session.SetString(SessionKey, JsonConvert.SerializeObject(selectedIds)); |
| | 0 | 25 | | return Ok(); |
| | | 26 | | } |
| | | 27 | | |
| | | 28 | | [HttpPost] |
| | | 29 | | [Route("RemoveIdsFromSession")] |
| | | 30 | | public IActionResult RemoveIdsFromSession([FromBody] List<int> ids) |
| | | 31 | | { |
| | 0 | 32 | | var selectedIds = RetrieveSelectedIds(); |
| | 0 | 33 | | selectedIds = selectedIds.Where(id => !ids.Contains(id)).ToList(); |
| | 0 | 34 | | HttpContext.Session.SetString(SessionKey, JsonConvert.SerializeObject(selectedIds)); |
| | 0 | 35 | | return Ok(); |
| | | 36 | | } |
| | | 37 | | |
| | | 38 | | [HttpPost] |
| | | 39 | | [Route("AddIdToSession")] |
| | | 40 | | public IActionResult AddIdToSession(int id) |
| | | 41 | | { |
| | 0 | 42 | | var selectedIds = RetrieveSelectedIds(); |
| | 0 | 43 | | if (!selectedIds.Contains(id)) |
| | | 44 | | { |
| | 0 | 45 | | selectedIds.Add(id); |
| | 0 | 46 | | HttpContext.Session.SetString(SessionKey, JsonConvert.SerializeObject(selectedIds)); |
| | | 47 | | } |
| | 0 | 48 | | return Ok(); |
| | | 49 | | } |
| | | 50 | | |
| | | 51 | | [HttpPost] |
| | | 52 | | [Route("RemoveIdFromSession")] |
| | | 53 | | public IActionResult RemoveIdFromSession(int id) |
| | | 54 | | { |
| | 0 | 55 | | var selectedIds = RetrieveSelectedIds(); |
| | 0 | 56 | | if (selectedIds.Contains(id)) |
| | | 57 | | { |
| | 0 | 58 | | selectedIds.Remove(id); |
| | 0 | 59 | | HttpContext.Session.SetString(SessionKey, JsonConvert.SerializeObject(selectedIds)); |
| | | 60 | | } |
| | 0 | 61 | | return Ok(); |
| | | 62 | | } |
| | | 63 | | |
| | | 64 | | [HttpGet] |
| | | 65 | | [Route("GetSelectedIdsFromSession")] |
| | | 66 | | public IActionResult GetSelectedIdsFromSession() |
| | | 67 | | { |
| | 0 | 68 | | return Json(RetrieveSelectedIds()); |
| | | 69 | | } |
| | | 70 | | |
| | | 71 | | [HttpPost] |
| | | 72 | | [Route("ClearSelectedIdsSession")] |
| | | 73 | | public IActionResult ClearSelectedIdsSession() |
| | | 74 | | { |
| | 0 | 75 | | HttpContext.Session.SetString(SessionKey, JsonConvert.SerializeObject(new List<int>())); |
| | 0 | 76 | | return Ok(); |
| | | 77 | | } |
| | | 78 | | |
| | | 79 | | private List<int> RetrieveSelectedIds() |
| | | 80 | | { |
| | 0 | 81 | | var raw = HttpContext.Session.GetString(SessionKey); |
| | 0 | 82 | | if (string.IsNullOrEmpty(raw)) return new List<int>(); |
| | | 83 | | try |
| | | 84 | | { |
| | 0 | 85 | | return JsonConvert.DeserializeObject<List<int>>(raw) ?? new List<int>(); |
| | | 86 | | } |
| | 0 | 87 | | catch (JsonException) |
| | | 88 | | { |
| | 0 | 89 | | HttpContext.Session.Remove(SessionKey); |
| | 0 | 90 | | return new List<int>(); |
| | | 91 | | } |
| | 0 | 92 | | } |
| | | 93 | | } |
| | | 94 | | } |