< Summary

Information
Class: OzonOrdersWeb.Areas.Studio2.Controllers.OrderStatusFlowController
Assembly: OzonOrdersWeb
File(s): /home/runner/work/Studio2Prod/Studio2Prod/OzonOrdersWeb/Areas/Studio2/Controllers/OrderStatusFlowController.cs
Line coverage
0%
Covered lines: 0
Uncovered lines: 38
Coverable lines: 38
Total lines: 67
Line coverage: 0%
Branch coverage
0%
Covered branches: 0
Total branches: 38
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%
OrderStatus()0%272160%

File(s)

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

#LineLine coverage
 1using Microsoft.AspNetCore.Mvc;
 2using OzonDomains.Models;
 3using Services.DataServices;
 4using System.Linq;
 5using System.Text.Json;
 6using System.Threading.Tasks;
 7
 8namespace OzonOrdersWeb.Areas.Studio2.Controllers
 9{
 10    [Area("Studio2")]
 11    public class OrderStatusFlowController : Controller
 12    {
 13        private readonly OrdersDataServices _orderServices;
 14        private readonly AppStatusDataServices _appStatusServices;
 15        private readonly StatusTransitionDataServices _statusTransitionDataServices;
 16
 017        public OrderStatusFlowController(
 018            OrdersDataServices orderServices,
 019            AppStatusDataServices appStatusServices,
 020            StatusTransitionDataServices statusTransitionDataServices)
 21        {
 022            _orderServices = orderServices;
 023            _appStatusServices = appStatusServices;
 024            _statusTransitionDataServices = statusTransitionDataServices;
 025        }
 26
 27        [HttpGet]
 28        public async Task<IActionResult> OrderStatus(int id)
 29        {
 030            var order = await _orderServices.GetOrder(id);
 031            if (order == null)
 32            {
 033                return NotFound();
 34            }
 35
 036            var appStatuses = await _appStatusServices.GetAppStatuses();
 037            var statusColors = appStatuses
 038                .Where(s => !string.IsNullOrWhiteSpace(s.Name))
 039                .GroupBy(s => s.Name)
 040                .ToDictionary(
 041                    g => g.Key!,
 042                    g => g.First().StatusColor?.ColorCode ?? "#d9d9d9");
 43
 044            var transitions = await _statusTransitionDataServices.GetActive();
 045            var transitionsJson = JsonSerializer.Serialize(transitions.Select(t => new
 046            {
 047                fromStatusId = t.FromStatusId,
 048                fromStatusName = t.FromStatus?.Name ?? "—",
 049                fromStatusColor = t.FromStatus?.GetStatusColor() ?? "#e9ecef",
 050                toStatusId = t.ToStatusId,
 051                toStatusName = t.ToStatus?.Name ?? "—",
 052                toStatusColor = t.ToStatus?.GetStatusColor() ?? "#e9ecef",
 053                displayName = t.DisplayName ?? t.TransactionType.ToString(),
 054                transactionCssClass = "link-primary",
 055                transactionType = (int)t.TransactionType
 056            }));
 57
 058            ViewBag.StatusColors = statusColors;
 059            ViewBag.CurrentStatus = order.AppStatus?.Name ?? "Не указан";
 060            ViewBag.CurrentStatusId = order.AppStatusId;
 061            ViewBag.Order = order;
 062            ViewBag.TransitionsJson = transitionsJson;
 63
 064            return View("OrderStatus", order);
 065        }
 66    }
 67}