< Summary

Information
Class: OzonOrdersWeb.Areas.Studio2.Controllers.Directories.ExpenseTypeController
Assembly: OzonOrdersWeb
File(s): /home/runner/work/Studio2Prod/Studio2Prod/OzonOrdersWeb/Areas/Studio2/Controllers/Directories/ExpenseTypeController.cs
Line coverage
0%
Covered lines: 0
Uncovered lines: 46
Coverable lines: 46
Total lines: 118
Line coverage: 0%
Branch coverage
0%
Covered branches: 0
Total branches: 16
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()100%210%
Create()100%210%
Create()0%2040%
Delete()0%2040%
Edit()0%620%
Edit()0%4260%

File(s)

/home/runner/work/Studio2Prod/Studio2Prod/OzonOrdersWeb/Areas/Studio2/Controllers/Directories/ExpenseTypeController.cs

#LineLine coverage
 1using Microsoft.AspNetCore.Authorization;
 2using Microsoft.AspNetCore.Mvc;
 3using Microsoft.EntityFrameworkCore;
 4using OzonDomains.Models;
 5using Services.DataServices;
 6
 7namespace OzonOrdersWeb.Areas.Studio2.Controllers.Directories
 8{
 9    [Authorize(Roles = "Admin")]
 10    [Area("Studio2")]
 11    public class ExpenseTypeController : Controller
 12    {
 13        private readonly ExpenseTypeDataServices _servcies;
 14
 015        public ExpenseTypeController(
 016            ExpenseTypeDataServices servcies)
 17        {
 018            _servcies = servcies;
 019        }
 20
 21        /// <summary>Весь справочник для грида AG Grid: фильтры и сортировка — на клиенте.</summary>
 22        public async Task<IActionResult> Index()
 23        {
 024            var expenseTypes = (await _servcies.GetExpenseTypes()).OrderBy(e => e.Name).ToList();
 025            return View(expenseTypes);
 026        }
 27
 28        public async Task<IActionResult> Create()
 29        {
 030            string? result = TempData["StatusResult"] as string;
 031            ViewData["StatusResult"] = result;
 32
 033            var expenseTypeList = await _servcies.GetExpenseTypes();
 034            ViewData["ExpenseTypeList"] = expenseTypeList;
 35
 036            return View();
 037        }
 38
 39        [HttpPost]
 40        [ValidateAntiForgeryToken]
 41        public async Task<IActionResult> Create([Bind("Id,Name,Description,IsActive")] ExpenseType expenseType)
 42        {
 043            if (ModelState.IsValid)
 44            {
 045                var existingExpenseType = await _servcies.GetExpenseTypeAsync(expenseType);
 046                if (existingExpenseType != null)
 47                {
 048                    TempData["StatusResult"] = $"Не удалось добавить тип расхода '{expenseType.Name}'";
 049                    return RedirectToAction(nameof(Create));
 50                }
 51
 052                await _servcies.AddExpenseType(expenseType);
 53
 054                return RedirectToAction("Index");
 55            }
 56
 057            return View(expenseType);
 058        }
 59
 60        public async Task<IActionResult> Delete(int? id)
 61        {
 062            if (!id.HasValue)
 063                return RedirectToAction("Index");
 64
 065            var expenseType = await _servcies.GetExpenseTypeAsync(id.Value);
 066            if (expenseType != null)
 67            {
 068                await _servcies.DeleteExpenseType(expenseType);
 69            }
 70
 071            return RedirectToAction("Index");
 072        }
 73
 74        public async Task<IActionResult> Edit(int id)
 75        {
 076            var expenseType = await _servcies.GetExpenseTypeAsync(id);
 077            if (expenseType == null)
 78            {
 079                return NotFound();
 80            }
 81
 082            return View(expenseType);
 083        }
 84
 85        [HttpPost]
 86        [ValidateAntiForgeryToken]
 87        public async Task<IActionResult> Edit(int id, ExpenseType expenseType)
 88        {
 089            if (id != expenseType.Id)
 90            {
 091                return NotFound();
 92            }
 93
 094            if (ModelState.IsValid)
 95            {
 96                try
 97                {
 098                    await _servcies.UpdateExpenseType(expenseType);
 099                }
 0100                catch (DbUpdateConcurrencyException)
 101                {
 0102                    if (await _servcies.GetExpenseTypeAsync(id) == null)
 103                    {
 0104                        return NotFound();
 105                    }
 106                    else
 107                    {
 0108                        throw;
 109                    }
 110                }
 111
 0112                return RedirectToAction(nameof(Index));
 113            }
 114
 0115            return View(expenseType);
 0116        }
 117    }
 118}