< Summary

Information
Class: OzonRepositories.Data.EmailAttachmentProcessingResultRepository
Assembly: OzonRepositories
File(s): /home/runner/work/Studio2Prod/Studio2Prod/OzonRepositories/Data/EmailAttachmentProcessingResultRepository.cs
Line coverage
6%
Covered lines: 5
Uncovered lines: 71
Coverable lines: 76
Total lines: 144
Line coverage: 6.5%
Branch coverage
0%
Covered branches: 0
Total branches: 12
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%11100%
Get()100%210%
GetAsync()100%210%
GetAsync()100%210%
Add()100%11100%
Update()100%210%
Delete()100%210%
GetPaged(...)100%210%
GetCount()100%210%
GetUploadedFiles(...)100%210%
GetFiltered(...)100%210%
GetFilteredCount(...)100%210%
GetStatusCounts()100%210%
BuildFilterQuery(...)0%156120%

File(s)

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

#LineLine coverage
 1using Microsoft.EntityFrameworkCore;
 2using OzonDomains.Models;
 3using OzonRepositories.Context;
 4
 5namespace OzonRepositories.Data;
 6
 7public class EmailAttachmentProcessingResultRepository : MainRepository, IRepository<EmailAttachmentProcessingResult>
 8{
 59    public EmailAttachmentProcessingResultRepository(ApplicationDbContext orderContext) : base(orderContext)
 10    {
 511    }
 12
 13    public Task<List<EmailAttachmentProcessingResult>> Get()
 14    {
 015        return _context.EmailAttachmentProcessingResults
 016            .Include(x => x.Rule)
 017            .Include(x => x.EmailMessage)
 018            .Include(x => x.Attachment)
 019            .OrderByDescending(x => x.CreatedAt)
 020            .ToListAsync();
 21    }
 22
 23    public async Task<EmailAttachmentProcessingResult?> GetAsync(int id)
 24    {
 025        return await _context.EmailAttachmentProcessingResults
 026            .Include(x => x.Rule)
 027            .Include(x => x.EmailMessage)
 028            .Include(x => x.Attachment)
 029            .FirstOrDefaultAsync(x => x.Id == id);
 030    }
 31
 32    public async Task<EmailAttachmentProcessingResult?> GetAsync(EmailAttachmentProcessingResult value)
 33    {
 034        return await _context.EmailAttachmentProcessingResults
 035            .FirstOrDefaultAsync(x => x.EmailAttachmentInboxId == value.EmailAttachmentInboxId && x.Status == value.Stat
 036    }
 37
 38    public async Task<int> Add(EmailAttachmentProcessingResult value)
 39    {
 240        _context.EmailAttachmentProcessingResults.Add(value);
 241        return await _context.SaveChangesAsync();
 242    }
 43
 44    public async Task<int> Update(EmailAttachmentProcessingResult value)
 45    {
 046        _context.EmailAttachmentProcessingResults.Update(value);
 047        return await _context.SaveChangesAsync();
 048    }
 49
 50    public async Task<int> Delete(EmailAttachmentProcessingResult value)
 51    {
 052        _context.EmailAttachmentProcessingResults.Remove(value);
 053        return await _context.SaveChangesAsync();
 054    }
 55
 56    public Task<List<EmailAttachmentProcessingResult>> GetPaged(int page, int pageSize)
 57    {
 058        return _context.EmailAttachmentProcessingResults
 059            .Include(x => x.Rule)
 060            .Include(x => x.EmailMessage)
 061            .Include(x => x.Attachment)
 062            .OrderByDescending(x => x.CreatedAt)
 063            .Skip((page - 1) * pageSize)
 064            .Take(pageSize)
 065            .ToListAsync();
 66    }
 67
 68    public Task<int> GetCount()
 69    {
 070        return _context.EmailAttachmentProcessingResults.CountAsync();
 71    }
 72
 73    public Task<List<EmailAttachmentProcessingResult>> GetUploadedFiles(int page, int pageSize)
 74    {
 075        return _context.EmailAttachmentProcessingResults
 076            .Include(x => x.Rule)
 077            .Include(x => x.EmailMessage)
 078            .Include(x => x.Attachment)
 079            .Where(x => x.Status == EmailAttachmentProcessingStatus.Uploaded)
 080            .OrderByDescending(x => x.CreatedAt)
 081            .Skip((page - 1) * pageSize)
 082            .Take(pageSize)
 083            .ToListAsync();
 84    }
 85
 86    public Task<List<EmailAttachmentProcessingResult>> GetFiltered(
 87        int? ruleId, EmailAttachmentProcessingStatus? status,
 88        string? senderFilter, string? fileNameFilter,
 89        DateTime? dateFrom, DateTime? dateTo,
 90        int page, int pageSize)
 91    {
 092        var query = BuildFilterQuery(ruleId, status, senderFilter, fileNameFilter, dateFrom, dateTo);
 093        return query
 094            .OrderByDescending(x => x.CreatedAt)
 095            .Skip((page - 1) * pageSize)
 096            .Take(pageSize)
 097            .ToListAsync();
 98    }
 99
 100    public Task<int> GetFilteredCount(
 101        int? ruleId, EmailAttachmentProcessingStatus? status,
 102        string? senderFilter, string? fileNameFilter,
 103        DateTime? dateFrom, DateTime? dateTo)
 104    {
 0105        return BuildFilterQuery(ruleId, status, senderFilter, fileNameFilter, dateFrom, dateTo).CountAsync();
 106    }
 107
 108    public async Task<Dictionary<EmailAttachmentProcessingStatus, int>> GetStatusCounts()
 109    {
 0110        return await _context.EmailAttachmentProcessingResults
 0111            .GroupBy(x => x.Status)
 0112            .Select(g => new { g.Key, Count = g.Count() })
 0113            .ToDictionaryAsync(x => x.Key, x => x.Count);
 0114    }
 115
 116    private IQueryable<EmailAttachmentProcessingResult> BuildFilterQuery(
 117        int? ruleId, EmailAttachmentProcessingStatus? status,
 118        string? senderFilter, string? fileNameFilter,
 119        DateTime? dateFrom, DateTime? dateTo)
 120    {
 0121        var query = _context.EmailAttachmentProcessingResults
 0122            .Include(x => x.Rule)
 0123            .Include(x => x.EmailMessage)
 0124            .Include(x => x.Attachment)
 0125            .AsQueryable();
 126
 0127        if (ruleId.HasValue)
 0128            query = query.Where(x => x.EmailRoutingRuleId == ruleId.Value);
 0129        if (status.HasValue)
 0130            query = query.Where(x => x.Status == status.Value);
 0131        if (!string.IsNullOrWhiteSpace(senderFilter))
 0132            query = query.Where(x => x.EmailMessage != null && x.EmailMessage.SenderEmail != null
 0133                && x.EmailMessage.SenderEmail.Contains(senderFilter));
 0134        if (!string.IsNullOrWhiteSpace(fileNameFilter))
 0135            query = query.Where(x => (x.Attachment != null && x.Attachment.FileName.Contains(fileNameFilter))
 0136                || (x.DropboxFileName != null && x.DropboxFileName.Contains(fileNameFilter)));
 0137        if (dateFrom.HasValue)
 0138            query = query.Where(x => x.CreatedAt >= dateFrom.Value);
 0139        if (dateTo.HasValue)
 0140            query = query.Where(x => x.CreatedAt <= dateTo.Value.AddDays(1));
 141
 0142        return query;
 143    }
 144}