< Summary

Information
Class: OzonRepositories.Data.FidStatRepository
Assembly: OzonRepositories
File(s): /home/runner/work/Studio2Prod/Studio2Prod/OzonRepositories/Data/FidStatRepository.cs
Line coverage
0%
Covered lines: 0
Uncovered lines: 46
Coverable lines: 46
Total lines: 94
Line coverage: 0%
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%210%
Add()100%210%
GetAll()100%210%
GetFiltered()0%4260%
GetFilteredCount()0%4260%
GetByIdWithItems()100%210%
GetDistinctFidNames()100%210%
GetLatest()100%210%

File(s)

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

#LineLine coverage
 1using Microsoft.EntityFrameworkCore;
 2using OzonDomains.Models;
 3using OzonRepositories.Context;
 4using System;
 5using System.Collections.Generic;
 6using System.Linq;
 7using System.Threading.Tasks;
 8
 9namespace OzonRepositories.Data
 10{
 11    public class FidStatRepository : MainRepository
 12    {
 013        public FidStatRepository(ApplicationDbContext orderContext) : base(orderContext) { }
 14
 15        public async Task<int> Add(FidStatSnapshot snapshot)
 16        {
 017            await _context.FidStatSnapshots.AddAsync(snapshot);
 018            return await SaveChanges();
 019        }
 20
 21        public async Task<List<FidStatSnapshot>> GetAll()
 22        {
 023            return await _context.FidStatSnapshots
 024                .OrderByDescending(s => s.PostTime)
 025                .ToListAsync();
 026        }
 27
 28        public async Task<List<FidStatSnapshot>> GetFiltered(
 29            string? fidName,
 30            DateTime? dateFrom,
 31            DateTime? dateTo,
 32            int skip,
 33            int take)
 34        {
 035            var query = _context.FidStatSnapshots.AsQueryable();
 36
 037            if (!string.IsNullOrWhiteSpace(fidName))
 038                query = query.Where(s => s.FidName == fidName);
 39
 040            if (dateFrom.HasValue)
 041                query = query.Where(s => s.PostTime >= new DateTimeOffset(dateFrom.Value));
 42
 043            if (dateTo.HasValue)
 044                query = query.Where(s => s.PostTime <= new DateTimeOffset(dateTo.Value.AddDays(1)));
 45
 046            return await query
 047                .OrderByDescending(s => s.PostTime)
 048                .Skip(skip)
 049                .Take(take)
 050                .ToListAsync();
 051        }
 52
 53        public async Task<int> GetFilteredCount(string? fidName, DateTime? dateFrom, DateTime? dateTo)
 54        {
 055            var query = _context.FidStatSnapshots.AsQueryable();
 56
 057            if (!string.IsNullOrWhiteSpace(fidName))
 058                query = query.Where(s => s.FidName == fidName);
 59
 060            if (dateFrom.HasValue)
 061                query = query.Where(s => s.PostTime >= new DateTimeOffset(dateFrom.Value));
 62
 063            if (dateTo.HasValue)
 064                query = query.Where(s => s.PostTime <= new DateTimeOffset(dateTo.Value.AddDays(1)));
 65
 066            return await query.CountAsync();
 067        }
 68
 69        public async Task<FidStatSnapshot?> GetByIdWithItems(int id)
 70        {
 071            return await _context.FidStatSnapshots
 072                .Include(s => s.Items)
 073                .FirstOrDefaultAsync(s => s.Id == id);
 074        }
 75
 76        public async Task<List<string>> GetDistinctFidNames()
 77        {
 078            return await _context.FidStatSnapshots
 079                .Select(s => s.FidName)
 080                .Distinct()
 081                .OrderBy(n => n)
 082                .ToListAsync();
 083        }
 84
 85        public async Task<FidStatSnapshot?> GetLatest(string fidName)
 86        {
 087            return await _context.FidStatSnapshots
 088                .Include(s => s.Items)
 089                .Where(s => s.FidName == fidName)
 090                .OrderByDescending(s => s.PostTime)
 091                .FirstOrDefaultAsync();
 092        }
 93    }
 94}