using Back.Program.Common.Data; using Back.Program.Models.Entities; using Back.Program.Repositories.V1.Interfaces; using Microsoft.EntityFrameworkCore; namespace Back.Program.Repositories.V1; public class PushRepository: IPushRepository { private readonly AppDbContext _context; public PushRepository(AppDbContext context) { _context = context; } public async Task FindAcademy(string bid) { return await _context.Academy.AnyAsync(a => a.bid == bid); } public async Task> FindPushList(string bid, string? pid, string? category) { var pushQuery = _context.DBPayload.Where(p => p.bid == bid); if (pid != null) pushQuery = pushQuery.Where(p => p.pid == pid); if (category != null) pushQuery = pushQuery.Where(p=>p.category == category); return await pushQuery.ToListAsync(); } public async Task FindPushPayload(string bid, string pid) { return await _context.DBPayload.FirstOrDefaultAsync(p => p.bid == bid && p.pid == pid); } public async Task FindUserAcademy(string uid, string bid) { return await _context.UserAcademy.AnyAsync(ua => ua.uid == uid && ua.bid == bid); } public async Task CountBadge(string uid) { return await _context.PushCabinet.CountAsync(c => c.uid == uid && c.check_yn == false); } public async Task FindPushToken(string uid) { return await _context.User .Where(u => u.uid == uid) .Select(u => u.push_token) .FirstOrDefaultAsync(); } public async Task FindPushCabinet(int id) { return await _context.PushCabinet.FirstOrDefaultAsync(c => c.id == id); } }