< Summary

Information
Class: OzonOrdersWeb.Controllers.CartController
Assembly: OzonOrdersWeb
File(s): /home/runner/work/Studio2Prod/Studio2Prod/OzonOrdersWeb/Areas/Studio2/Controllers/CartController.cs
Line coverage
0%
Covered lines: 0
Uncovered lines: 45
Coverable lines: 45
Total lines: 110
Line coverage: 0%
Branch coverage
0%
Covered branches: 0
Total branches: 18
Branch coverage: 0%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%210%
Index()0%4260%
UpdateCache()100%210%
Details()0%620%
Create()100%210%
Create()0%620%
Edit()0%620%
Edit()0%2040%
Delete()0%620%
DeleteConfirmed()100%210%

File(s)

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

#LineLine coverage
 1using Microsoft.AspNetCore.Authorization;
 2using Microsoft.AspNetCore.Mvc;
 3using OzonDomains.Models.OrderCarts;
 4using OzonRepositories.Data;
 5using Services.CacheServices.Cache.CartCache;
 6
 7namespace  OzonOrdersWeb.Controllers
 8{
 9    [Area("Studio2")]
 10    [Authorize(Roles = "User,Admin")]
 11    public class CartController : Controller
 12    {
 13        private readonly OrderCartRepository _orderCartRepository;
 14        private readonly CartCache _cartCache;
 15
 016        public CartController(OrderCartRepository orderCartRepository,
 017                              CartCache cartCache)
 18        {
 019            _orderCartRepository = orderCartRepository;
 020            _cartCache = cartCache;
 021        }
 22
 23        public async Task<IActionResult> Index(int page = 1)
 24        {
 025            var pagedCarts = await _cartCache.Get(page);
 026            var nextPageData = await _cartCache.Get(page + 1);
 27
 028            ViewBag.CurrentPage = page;
 029            ViewBag.HasNextPage = nextPageData.Count == _cartCache.GetIncrementCount();
 30
 031            int totalItems = await _cartCache.GetTotalCount();
 032            int itemsPerPage = _cartCache.GetIncrementCount();
 033            ViewBag.TotalPages = (int)Math.Ceiling((double)totalItems / itemsPerPage);
 34
 035            return View(pagedCarts);
 036        }
 37
 38
 39
 40
 41        [HttpPost]
 42        public async Task<IActionResult> UpdateCache()
 43        {
 044            await _cartCache.Update();
 045            return RedirectToAction("Index");
 046        }
 47
 48        public async Task<IActionResult> Details(int id)
 49        {
 050            var cart = await _orderCartRepository.GetAsync(id);
 051            if (cart == null) return NotFound();
 52
 053            return View(cart);
 054        }
 55
 56        public IActionResult Create()
 57        {
 058            return View(new OrderCart());
 59        }
 60
 61        [HttpPost]
 62        [ValidateAntiForgeryToken]
 63        public async Task<IActionResult> Create(OrderCart cart)
 64        {
 065            if (!ModelState.IsValid)
 066                return View(cart);
 67
 068            await _orderCartRepository.Add(cart);
 069            return RedirectToAction(nameof(Index));
 070        }
 71
 72        public async Task<IActionResult> Edit(int id)
 73        {
 074            var cart = await _orderCartRepository.GetAsync(id);
 075            if (cart == null) return NotFound();
 76
 077            return View(cart);
 078        }
 79
 80        [HttpPost]
 81        [ValidateAntiForgeryToken]
 82        public async Task<IActionResult> Edit(int id, OrderCart cart)
 83        {
 084            if (id != cart.Id) return NotFound();
 85
 086            if (!ModelState.IsValid)
 087                return View(cart);
 88
 089            await _orderCartRepository.Update(cart);
 090            return RedirectToAction(nameof(Index));
 091        }
 92
 93        public async Task<IActionResult> Delete(int id)
 94        {
 095            var cart = await _orderCartRepository.GetAsync(id);
 096            if (cart == null) return NotFound();
 97
 098            return View(cart);
 099        }
 100
 101        [HttpPost, ActionName("Delete")]
 102        [ValidateAntiForgeryToken]
 103        public async Task<IActionResult> DeleteConfirmed(int id)
 104        {
 0105            await _orderCartRepository.DeleteAsync(id);
 0106            await _cartCache.Update();
 0107            return RedirectToAction(nameof(Index));
 0108        }
 109    }
 110}