< Summary

Information
Class: OzonOrdersWeb.WebServices.Orders.OrderCreateFormService
Assembly: OzonOrdersWeb
File(s): /home/runner/work/Studio2Prod/Studio2Prod/OzonOrdersWeb/WebServices/Orders/OrderCreateFormService.cs
Line coverage
0%
Covered lines: 0
Uncovered lines: 58
Coverable lines: 58
Total lines: 123
Line coverage: 0%
Branch coverage
0%
Covered branches: 0
Total branches: 8
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%
BuildForCreatePageAsync()100%210%
ReloadListsAsync()0%4260%
FilterEtProducers(...)0%620%

File(s)

/home/runner/work/Studio2Prod/Studio2Prod/OzonOrdersWeb/WebServices/Orders/OrderCreateFormService.cs

#LineLine coverage
 1using Microsoft.AspNetCore.Mvc.Rendering;
 2using Microsoft.EntityFrameworkCore;
 3using OzonDomains;
 4using OzonDomains.Models;
 5using OzonDomains.Models.AccessControl;
 6using OzonOrdersWeb.ViewModels.OrderViewModels;
 7using OzonRepositories.Context;
 8using OzonRepositories.Context.Identity;
 9using Services.DataServices;
 10using OzonOrdersWeb.WebServices.Currency;
 11
 12namespace OzonOrdersWeb.WebServices.Orders;
 13
 14public sealed class OrderCreateFormService : IOrderCreateFormService
 15{
 16    private readonly ApplicationDbContext _context;
 17    private readonly SupplierDataServices _supplierDataServices;
 18    private readonly AppStatusDataServices _appStatusServices;
 19    private readonly WarehouseDataServices _warehouseDataServices;
 20    private readonly OzonClientServices _ozonClientServices;
 21    private readonly DeliveryDataServices _deliveryDataServices;
 22    private readonly EtProducerDataServices _etProducerDataServices;
 23    private readonly ICurrencyRatesViewBagService _currencyRatesViewBagService;
 24
 025    public OrderCreateFormService(
 026        ApplicationDbContext context,
 027        SupplierDataServices supplierDataServices,
 028        AppStatusDataServices appStatusServices,
 029        WarehouseDataServices warehouseDataServices,
 030        OzonClientServices ozonClientServices,
 031        DeliveryDataServices deliveryDataServices,
 032        EtProducerDataServices etProducerDataServices,
 033        ICurrencyRatesViewBagService currencyRatesViewBagService)
 34    {
 035        _context = context;
 036        _supplierDataServices = supplierDataServices;
 037        _appStatusServices = appStatusServices;
 038        _warehouseDataServices = warehouseDataServices;
 039        _ozonClientServices = ozonClientServices;
 040        _deliveryDataServices = deliveryDataServices;
 041        _etProducerDataServices = etProducerDataServices;
 042        _currencyRatesViewBagService = currencyRatesViewBagService;
 043    }
 44
 45    public async Task<CreateOrderViewModel> BuildForCreatePageAsync(
 46        CustomIdentityUser user,
 47        AccessProfile? accessProfile,
 48        CancellationToken cancellationToken = default)
 49    {
 050        var viewModel = new CreateOrderViewModel { User = user };
 051        await ReloadListsAsync(viewModel, accessProfile, cancellationToken);
 052        return viewModel;
 053    }
 54
 55    public async Task ReloadListsAsync(
 56        CreateOrderViewModel viewModel,
 57        AccessProfile? accessProfile,
 58        CancellationToken cancellationToken = default)
 59    {
 060        var suppliers = (await _supplierDataServices.GetSuppliers()).ToList();
 061        var appStatuses = (await _appStatusServices.GetAppStatuses()).ToList();
 062        var warehouses = (await _warehouseDataServices.GetWarehouses()).ToList();
 063        var ozonClients = (await _ozonClientServices.GetOzonClients()).ToList();
 064        var deliveries = (await _deliveryDataServices.GetDeliveriesAsync()).ToList();
 065        var currencies = await _context.Currencys.ToListAsync(cancellationToken);
 066        var etProducers = FilterEtProducers(await _etProducerDataServices.GetEtProducers());
 67
 068        if (accessProfile != null)
 69        {
 070            var supplierIds = accessProfile.ScopeItems
 71                .Where(x => x.ScopeType == DataScopeType.Supplier)
 72                .Select(x => x.ReferenceId)
 073                .ToList();
 74
 075            if (supplierIds.Count > 0)
 76            {
 077                suppliers = suppliers.Where(s => supplierIds.Contains(s.Id)).ToList();
 78            }
 79
 080            var statusIds = accessProfile.ScopeItems
 81                .Where(x => x.ScopeType == DataScopeType.AppStatus)
 82                .Select(x => x.ReferenceId)
 083                .ToList();
 84
 085            if (statusIds.Count > 0)
 86            {
 087                appStatuses = appStatuses.Where(s => statusIds.Contains(s.Id)).ToList();
 88            }
 89        }
 90
 91        var orderedSuppliers = suppliers.OrderBy(s => s.Name).ToList();
 92        var orderedAppStatuses = appStatuses.OrderBy(a => a.Name).ToList();
 93        var orderedWarehouses = warehouses.OrderBy(w => w.Name).ToList();
 94        var orderedOzonClients = ozonClients.OrderBy(c => c.Name).ToList();
 95        var orderedDeliveries = deliveries.OrderBy(d => d.Name).ToList();
 96        var orderedCurrencies = currencies.OrderBy(c => c.Name).ToList();
 97        var orderedEtProducers = etProducers.OrderBy(e => e.Name).ToList();
 98
 099        viewModel.Suppliers = orderedSuppliers;
 0100        viewModel.AppStatuses = orderedAppStatuses;
 0101        viewModel.Warehouses = orderedWarehouses;
 0102        viewModel.OzonClients = orderedOzonClients;
 0103        viewModel.Deliveries = orderedDeliveries;
 0104        viewModel.Currencies = orderedCurrencies;
 0105        viewModel.EtProducers = orderedEtProducers;
 106
 0107        viewModel.SuppliersSelectList = new SelectList(orderedSuppliers, "Id", "Name");
 0108        viewModel.AppStatusesSelectList = new SelectList(orderedAppStatuses, "Id", "Name");
 0109        viewModel.WarehousesSelectList = new SelectList(orderedWarehouses, "Id", "Name");
 0110        viewModel.OzonClientsSelectList = new SelectList(orderedOzonClients, "Id", "Name");
 0111        viewModel.DeliveriesSelectList = new SelectList(orderedDeliveries, "Id", "Name");
 0112        viewModel.CurrenciesSelectList = new SelectList(orderedCurrencies, "Id", "Name");
 0113        viewModel.EtProducersSelectList = new SelectList(orderedEtProducers, "Id", "Name");
 114
 0115        var rates = await _currencyRatesViewBagService.GetRatesAsync(cancellationToken);
 0116        viewModel.ApplyCurrencyRates(rates);
 0117    }
 118
 119    private static List<EtProducer> FilterEtProducers(IEnumerable<EtProducer> allEtProducers) =>
 0120        allEtProducers
 0121            .Where(e => e.Id == e.RealId && !string.IsNullOrEmpty(e.MarketPrefix))
 0122            .ToList();
 123}