< Summary

Information
Class: Services.DataServices.TransactionTypeSettingDataServices
Assembly: Services
File(s): /home/runner/work/Studio2Prod/Studio2Prod/AppRepository/DataServices/TransactionTypeSettingDataServices.cs
Line coverage
100%
Covered lines: 33
Uncovered lines: 0
Coverable lines: 33
Total lines: 87
Line coverage: 100%
Branch coverage
100%
Covered branches: 6
Total branches: 6
Branch coverage: 100%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%11100%
GetAllAsync(...)100%11100%
GetAsync(...)100%11100%
UpsertAsync()100%22100%
ResetAsync()100%22100%
Trim(...)100%22100%

File(s)

/home/runner/work/Studio2Prod/Studio2Prod/AppRepository/DataServices/TransactionTypeSettingDataServices.cs

#LineLine coverage
 1using Microsoft.EntityFrameworkCore;
 2using OzonDomains;
 3using OzonDomains.Models;
 4using OzonRepositories.Context;
 5
 6namespace Services.DataServices;
 7
 8public interface ITransactionTypeSettingDataServices
 9{
 10    /// <summary>Все сохранённые настройки типов (строк меньше или равно числу типов).</summary>
 11    Task<List<TransactionTypeSetting>> GetAllAsync(CancellationToken cancellationToken = default);
 12
 13    Task<TransactionTypeSetting?> GetAsync(TransactionType type, CancellationToken cancellationToken = default);
 14
 15    /// <summary>Создать или обновить строку типа; <paramref name="updatedBy"/> — имя пользователя админки.</summary>
 16    Task UpsertAsync(TransactionTypeSetting setting, string? updatedBy, CancellationToken cancellationToken = default);
 17
 18    /// <summary>Сбросить тип к дефолтам каталога (удалить строку).</summary>
 19    Task ResetAsync(TransactionType type, CancellationToken cancellationToken = default);
 20}
 21
 22/// <summary>
 23/// Хранение <see cref="TransactionTypeSetting"/>: одна строка на тип транзакции, отсутствие строки — дефолты каталога.
 24/// </summary>
 25public sealed class TransactionTypeSettingDataServices : ITransactionTypeSettingDataServices
 26{
 27    private readonly ApplicationDbContext _context;
 28
 2429    public TransactionTypeSettingDataServices(ApplicationDbContext context)
 30    {
 2431        _context = context;
 2432    }
 33
 34    public Task<List<TransactionTypeSetting>> GetAllAsync(CancellationToken cancellationToken = default)
 35    {
 936        return _context.TransactionTypeSettings.AsNoTracking().ToListAsync(cancellationToken);
 37    }
 38
 39    public Task<TransactionTypeSetting?> GetAsync(TransactionType type, CancellationToken cancellationToken = default)
 40    {
 641        return _context.TransactionTypeSettings.AsNoTracking()
 642            .FirstOrDefaultAsync(s => s.TransactionType == type, cancellationToken);
 43    }
 44
 45    public async Task UpsertAsync(TransactionTypeSetting setting, string? updatedBy, CancellationToken cancellationToken
 46    {
 1347        var existing = await _context.TransactionTypeSettings
 1348            .FirstOrDefaultAsync(s => s.TransactionType == setting.TransactionType, cancellationToken);
 49
 1250        if (existing == null)
 51        {
 952            existing = new TransactionTypeSetting { TransactionType = setting.TransactionType };
 953            _context.TransactionTypeSettings.Add(existing);
 54        }
 55
 1256        existing.Title = Trim(setting.Title);
 1257        existing.ShortName = Trim(setting.ShortName);
 1258        existing.Icon = Trim(setting.Icon);
 1259        existing.Color = Trim(setting.Color);
 1260        existing.Group = Trim(setting.Group);
 1261        existing.Hint = Trim(setting.Hint);
 1262        existing.UseGrid = setting.UseGrid;
 1263        existing.IsEnabled = setting.IsEnabled;
 1264        existing.DisplayOrder = setting.DisplayOrder;
 1265        existing.DefaultsJson = Trim(setting.DefaultsJson);
 1266        existing.UpdatedAt = DateTime.UtcNow;
 1267        existing.UpdatedBy = updatedBy;
 68
 1269        await _context.SaveChangesAsync(cancellationToken);
 1270    }
 71
 72    public async Task ResetAsync(TransactionType type, CancellationToken cancellationToken = default)
 73    {
 474        var existing = await _context.TransactionTypeSettings
 475            .FirstOrDefaultAsync(s => s.TransactionType == type, cancellationToken);
 376        if (existing == null)
 77        {
 178            return;
 79        }
 80
 281        _context.TransactionTypeSettings.Remove(existing);
 282        await _context.SaveChangesAsync(cancellationToken);
 383    }
 84
 85    private static string? Trim(string? value)
 8486        => string.IsNullOrWhiteSpace(value) ? null : value.Trim();
 87}