< Summary

Information
Class: OzonRepositories.Data.StatusTransitionRepository
Assembly: OzonRepositories
File(s): /home/runner/work/Studio2Prod/Studio2Prod/OzonRepositories/Data/StatusTransitionRepository.cs
Line coverage
17%
Covered lines: 12
Uncovered lines: 57
Coverable lines: 69
Total lines: 112
Line coverage: 17.3%
Branch coverage
N/A
Covered branches: 0
Total branches: 0
Branch coverage: N/A
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%11100%
Add()100%210%
Delete()100%210%
Get()100%210%
GetActive()100%11100%
GetAsync()100%210%
GetAsync()100%210%
GetByFromStatusId()100%210%
GetByTransactionType()100%210%
Update()100%210%

File(s)

/home/runner/work/Studio2Prod/Studio2Prod/OzonRepositories/Data/StatusTransitionRepository.cs

#LineLine coverage
 1using Microsoft.EntityFrameworkCore;
 2using OzonDomains;
 3using OzonDomains.Models;
 4using OzonRepositories.Context;
 5
 6namespace OzonRepositories.Data
 7{
 8    public class StatusTransitionRepository : MainRepository, IRepository<StatusTransition>
 9    {
 110        public StatusTransitionRepository(ApplicationDbContext orderContext) : base(orderContext)
 11        {
 112        }
 13
 14        public async Task<int> Add(StatusTransition value)
 15        {
 016            value.CreatedAt = DateTime.UtcNow;
 017            await _context.StatusTransitions.AddAsync(value);
 018            return await _context.SaveChangesAsync();
 019        }
 20
 21        public async Task<int> Delete(StatusTransition value)
 22        {
 023            _context.StatusTransitions.Remove(value);
 024            return await _context.SaveChangesAsync();
 025        }
 26
 27        public async Task<List<StatusTransition>> Get()
 28        {
 029            return await _context.StatusTransitions
 030                .Include(st => st.FromStatus!)
 031                .ThenInclude(s => s!.StatusColor)
 032                .Include(st => st.ToStatus!)
 033                .ThenInclude(s => s!.StatusColor)
 034                .OrderBy(st => st.DisplayOrder)
 035                .ThenBy(st => st.Id)
 036                .ToListAsync();
 037        }
 38
 39        public async Task<List<StatusTransition>> GetActive()
 40        {
 141            return await _context.StatusTransitions
 142                .Where(st => st.IsActive)
 143                .Include(st => st.FromStatus!)
 144                .ThenInclude(s => s!.StatusColor)
 145                .Include(st => st.ToStatus!)
 146                .ThenInclude(s => s!.StatusColor)
 147                .OrderBy(st => st.DisplayOrder)
 148                .ThenBy(st => st.Id)
 149                .ToListAsync();
 150        }
 51
 52        public async Task<StatusTransition?> GetAsync(int id)
 53        {
 054            return await _context.StatusTransitions
 055                .Include(st => st.FromStatus!)
 056                .ThenInclude(s => s!.StatusColor)
 057                .Include(st => st.ToStatus!)
 058                .ThenInclude(s => s!.StatusColor)
 059                .FirstOrDefaultAsync(st => st.Id == id);
 060        }
 61
 62        public async Task<StatusTransition?> GetAsync(StatusTransition value)
 63        {
 064            return (await _context.StatusTransitions
 065                .Include(st => st.FromStatus!)
 066                .ThenInclude(s => s!.StatusColor)
 067                .Include(st => st.ToStatus!)
 068                .ThenInclude(s => s!.StatusColor)
 069                .FirstOrDefaultAsync(st =>
 070                    st.FromStatusId == value.FromStatusId &&
 071                    st.ToStatusId == value.ToStatusId &&
 072                    st.TransactionType == value.TransactionType))!;
 073        }
 74
 75        public async Task<List<StatusTransition>> GetByFromStatusId(int fromStatusId)
 76        {
 077            return await _context.StatusTransitions
 078                .Where(st => st.IsActive && st.FromStatusId == fromStatusId)
 079                .Include(st => st.FromStatus!)
 080                .ThenInclude(s => s!.StatusColor)
 081                .Include(st => st.ToStatus!)
 082                .ThenInclude(s => s!.StatusColor)
 083                .OrderBy(st => st.DisplayOrder)
 084                .ThenBy(st => st.Id)
 085                .ToListAsync();
 086        }
 87
 88        /// <summary>
 89        /// Получает активные переходы по типу транзакции.
 90        /// Используется для динамического определения допустимых исходных и целевых статусов.
 91        /// </summary>
 92        public async Task<List<StatusTransition>> GetByTransactionType(TransactionType transactionType)
 93        {
 094            return await _context.StatusTransitions
 095                .Where(st => st.IsActive && st.TransactionType == transactionType)
 096                .Include(st => st.FromStatus!)
 097                .ThenInclude(s => s!.StatusColor)
 098                .Include(st => st.ToStatus!)
 099                .ThenInclude(s => s!.StatusColor)
 0100                .OrderBy(st => st.DisplayOrder)
 0101                .ThenBy(st => st.Id)
 0102                .ToListAsync();
 0103        }
 104
 105        public async Task<int> Update(StatusTransition value)
 106        {
 0107            value.UpdatedAt = DateTime.UtcNow;
 0108            _context.StatusTransitions.Update(value);
 0109            return await _context.SaveChangesAsync();
 0110        }
 111    }
 112}