< Summary

Information
Class: Services.AiAssistant.AiOrdersFilterBuilder
Assembly: Services
File(s): /home/runner/work/Studio2Prod/Studio2Prod/AppRepository/AiAssistant/AiOrdersFilterBuilder.cs
Line coverage
100%
Covered lines: 45
Uncovered lines: 0
Coverable lines: 45
Total lines: 62
Line coverage: 100%
Branch coverage
100%
Covered branches: 12
Total branches: 12
Branch coverage: 100%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
FromPreset(...)100%88100%
FromOrders(...)100%44100%

File(s)

/home/runner/work/Studio2Prod/Studio2Prod/AppRepository/AiAssistant/AiOrdersFilterBuilder.cs

#LineLine coverage
 1using OServices.FiltersServices.FilterModels;
 2using Services.ApiServices.OpenRouterApi.Models;
 3
 4namespace Services.AiAssistant;
 5
 6public static class AiOrdersFilterBuilder
 7{
 8    public static OrderFilterModel FromPreset(string preset)
 9    {
 1310        var msk = TimeZoneInfo.ConvertTimeFromUtc(
 1311            DateTime.UtcNow,
 1312            TimeZoneInfo.FindSystemTimeZoneById("Russian Standard Time"));
 13
 1314        return preset switch
 1315        {
 116            "orders_today" => new OrderFilterModel
 117            {
 118                ProcessingDate    = msk.Date,
 119                GroupByShipment   = true,
 120                IncludeArchived   = false
 121            },
 122            "cancelled_orders_today" => new OrderFilterModel
 123            {
 124                Status                    = "Отменён",
 125                LastStatusChangeDateFrom  = msk.Date,
 126                LastStatusChangeDateTo    = msk.Date.AddDays(1).AddTicks(-1),
 127                GroupByShipment           = true,
 128                IncludeArchived           = false
 129            },
 130            "unprofitable_orders" => new OrderFilterModel
 131            {
 132                OnlyNegativeProfit = true,
 133                GroupByShipment    = true,
 134                IncludeArchived    = false
 135            },
 136            "no_supplier_orders" => new OrderFilterModel
 137            {
 138                Supplier        = "",
 139                GroupByShipment = true,
 140                IncludeArchived = false
 141            },
 942            _ => new OrderFilterModel { GroupByShipment = true, IncludeArchived = false }
 1343        };
 44    }
 45
 46    public static OrderFilterModel FromOrders(IEnumerable<OrderSummaryDto> orders)
 47    {
 1148        var list = orders.ToList();
 1149        var shipments = list
 2750            .Select(o => o.ShipmentNumber?.Trim())
 2751            .Where(n => !string.IsNullOrWhiteSpace(n))
 1152            .Distinct(StringComparer.OrdinalIgnoreCase)
 1153            .ToList();
 54
 1155        return new OrderFilterModel
 1156        {
 1157            ShipmentNumber  = shipments.Count > 0 ? string.Join(",", shipments) : null,
 1158            GroupByShipment = true,
 2659            IncludeArchived = list.Any(o => o.IsArchived)
 1160        };
 61    }
 62}