< Summary

Information
Class: OzonOrdersWeb.Areas.Studio2.Controllers.OrderSessionController
Assembly: OzonOrdersWeb
File(s): /home/runner/work/Studio2Prod/Studio2Prod/OzonOrdersWeb/Areas/Studio2/Controllers/OrderSessionController.cs
Line coverage
0%
Covered lines: 0
Uncovered lines: 30
Coverable lines: 30
Total lines: 94
Line coverage: 0%
Branch coverage
0%
Covered branches: 0
Total branches: 12
Branch coverage: 0%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
AddIdsToSession(...)0%2040%
RemoveIdsFromSession(...)100%210%
AddIdToSession(...)0%620%
RemoveIdFromSession(...)0%620%
GetSelectedIdsFromSession()100%210%
ClearSelectedIdsSession()100%210%
RetrieveSelectedIds()0%2040%

File(s)

/home/runner/work/Studio2Prod/Studio2Prod/OzonOrdersWeb/Areas/Studio2/Controllers/OrderSessionController.cs

#LineLine coverage
 1using Microsoft.AspNetCore.Authorization;
 2using Microsoft.AspNetCore.Mvc;
 3using Newtonsoft.Json;
 4
 5namespace 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        {
 018            var selectedIds = RetrieveSelectedIds();
 019            foreach (var id in ids)
 20            {
 021                if (!selectedIds.Contains(id))
 022                    selectedIds.Add(id);
 23            }
 024            HttpContext.Session.SetString(SessionKey, JsonConvert.SerializeObject(selectedIds));
 025            return Ok();
 26        }
 27
 28        [HttpPost]
 29        [Route("RemoveIdsFromSession")]
 30        public IActionResult RemoveIdsFromSession([FromBody] List<int> ids)
 31        {
 032            var selectedIds = RetrieveSelectedIds();
 033            selectedIds = selectedIds.Where(id => !ids.Contains(id)).ToList();
 034            HttpContext.Session.SetString(SessionKey, JsonConvert.SerializeObject(selectedIds));
 035            return Ok();
 36        }
 37
 38        [HttpPost]
 39        [Route("AddIdToSession")]
 40        public IActionResult AddIdToSession(int id)
 41        {
 042            var selectedIds = RetrieveSelectedIds();
 043            if (!selectedIds.Contains(id))
 44            {
 045                selectedIds.Add(id);
 046                HttpContext.Session.SetString(SessionKey, JsonConvert.SerializeObject(selectedIds));
 47            }
 048            return Ok();
 49        }
 50
 51        [HttpPost]
 52        [Route("RemoveIdFromSession")]
 53        public IActionResult RemoveIdFromSession(int id)
 54        {
 055            var selectedIds = RetrieveSelectedIds();
 056            if (selectedIds.Contains(id))
 57            {
 058                selectedIds.Remove(id);
 059                HttpContext.Session.SetString(SessionKey, JsonConvert.SerializeObject(selectedIds));
 60            }
 061            return Ok();
 62        }
 63
 64        [HttpGet]
 65        [Route("GetSelectedIdsFromSession")]
 66        public IActionResult GetSelectedIdsFromSession()
 67        {
 068            return Json(RetrieveSelectedIds());
 69        }
 70
 71        [HttpPost]
 72        [Route("ClearSelectedIdsSession")]
 73        public IActionResult ClearSelectedIdsSession()
 74        {
 075            HttpContext.Session.SetString(SessionKey, JsonConvert.SerializeObject(new List<int>()));
 076            return Ok();
 77        }
 78
 79        private List<int> RetrieveSelectedIds()
 80        {
 081            var raw = HttpContext.Session.GetString(SessionKey);
 082            if (string.IsNullOrEmpty(raw)) return new List<int>();
 83            try
 84            {
 085                return JsonConvert.DeserializeObject<List<int>>(raw) ?? new List<int>();
 86            }
 087            catch (JsonException)
 88            {
 089                HttpContext.Session.Remove(SessionKey);
 090                return new List<int>();
 91            }
 092        }
 93    }
 94}