Files
2026-04-20 14:47:24 -05:00

66 lines
2.2 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using LCU.Shared.Collections.RepoApiLib.Exceptions;
using LCU.Shared.Collections.RepoApiLib.Models;
using LCU.Shared.Collections.RepoApiLib.Persistence;
using Microsoft.EntityFrameworkCore;
namespace LCU.Shared.Collections.RepoApiLib.Repositories
{
public class RepoManualStatusRepository : BaseRepository, IRepoManualStatusRepository
{
public RepoManualStatusRepository(AppDbContext context) : base(context)
{
}
public async Task<IReadOnlyCollection<RepoManualStatus>> ListAllAsync()
{
return await _context.RepoManualStatuses.ToListAsync();
}
public async Task<IReadOnlyCollection<string>> ListWatchStatusesAsync()
{
var statusSet = await (from status in _context.RepoManualStatuses
where status.WatchForStatusChanges == true
select status).ToListAsync();
return statusSet.Select(x => x.Description).ToList() as IReadOnlyCollection<string>;
}
public async Task AddAsync(RepoManualStatus repoManualStatus)
{
// Only Create the Alert if an identical one doesn't already exist
var duplicateStatus = (
from status in _context.RepoManualStatuses
where status.Description.ToUpper().Trim() == repoManualStatus.Description.ToUpper().Trim()
select status
);
if (!duplicateStatus.Any())
{
await _context.RepoManualStatuses.AddAsync(repoManualStatus);
}
else
{
throw new DuplicateResourceException("RepoManualStatus");
}
}
public async Task<RepoManualStatus> FindByIdAsync(int id)
{
return await _context.RepoManualStatuses.FindAsync(id);
}
public void Update(RepoManualStatus repoManualStatus)
{
_context.RepoManualStatuses.Update(repoManualStatus);
}
public void Remove(RepoManualStatus repoManualStatus)
{
_context.RepoManualStatuses.Remove(repoManualStatus);
}
}
}