< Summary

Information
Class: OzonRepositories.Data.EmailRoutingRuleRepository
Assembly: OzonRepositories
File(s): /home/runner/work/Studio2Prod/Studio2Prod/OzonRepositories/Data/EmailRoutingRuleRepository.cs
Line coverage
30%
Covered lines: 9
Uncovered lines: 21
Coverable lines: 30
Total lines: 73
Line coverage: 30%
Branch coverage
50%
Covered branches: 1
Total branches: 2
Branch coverage: 50%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%11100%
Get()100%210%
GetAsync()100%210%
GetAsync()100%210%
Add()100%210%
Update()100%210%
Delete()100%210%
GetActiveRules()50%2270%

File(s)

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

#LineLine coverage
 1using Microsoft.EntityFrameworkCore;
 2using MySqlConnector;
 3using OzonDomains.Models;
 4using OzonRepositories.Context;
 5
 6namespace OzonRepositories.Data;
 7
 8public class EmailRoutingRuleRepository : MainRepository, IRepository<EmailRoutingRule>
 9{
 510    public EmailRoutingRuleRepository(ApplicationDbContext orderContext) : base(orderContext)
 11    {
 512    }
 13
 14    public Task<List<EmailRoutingRule>> Get()
 15    {
 016        return _context.EmailRoutingRules
 017            .OrderBy(x => x.Priority)
 018            .ThenBy(x => x.Name)
 019            .ToListAsync();
 20    }
 21
 22    public async Task<EmailRoutingRule?> GetAsync(int id)
 23    {
 024        return await _context.EmailRoutingRules.FirstOrDefaultAsync(x => x.Id == id);
 025    }
 26
 27    public async Task<EmailRoutingRule?> GetAsync(EmailRoutingRule value)
 28    {
 029        return await _context.EmailRoutingRules.FirstOrDefaultAsync(x => x.Name == value.Name);
 030    }
 31
 32    public async Task<int> Add(EmailRoutingRule value)
 33    {
 034        _context.EmailRoutingRules.Add(value);
 035        return await _context.SaveChangesAsync();
 036    }
 37
 38    public async Task<int> Update(EmailRoutingRule value)
 39    {
 040        value.UpdatedAt = DateTime.UtcNow;
 041        _context.EmailRoutingRules.Update(value);
 042        return await _context.SaveChangesAsync();
 043    }
 44
 45    public async Task<int> Delete(EmailRoutingRule value)
 46    {
 047        _context.EmailRoutingRules.Remove(value);
 048        return await _context.SaveChangesAsync();
 049    }
 50
 51    public async Task<List<EmailRoutingRule>> GetActiveRules()
 52    {
 53        const int maxAttempts = 3;
 1254        for (var attempt = 1; attempt <= maxAttempts; attempt++)
 55        {
 56            try
 57            {
 658                return await _context.EmailRoutingRules
 659                    .AsNoTracking()
 660                    .Where(x => x.IsActive)
 661                    .OrderBy(x => x.Priority)
 662                    .ToListAsync();
 63            }
 064            catch (MySqlEndOfStreamException) when (attempt < maxAttempts)
 65            {
 066                await Task.Delay(TimeSpan.FromMilliseconds(400 * attempt));
 67            }
 68        }
 69
 70        // На эту строку не попадем, но компилятор требует return.
 071        return [];
 672    }
 73}