Files
Gready_Poang/Gready_Poang.DataLayer/DataClasses/ParticipantRepository.cs

85 lines
2.2 KiB
C#

using Common.Library;
using Gready_Poang.DataLayer.Database;
using Gready_Poang.EntityLayer;
using Microsoft.EntityFrameworkCore;
namespace Gready_Poang.DataLayer;
public class ParticipantRepository : IRepository<Participant>
{
private readonly DataContext _dataContext;
public ParticipantRepository(DataContext dataContext)
{
_dataContext = dataContext;
}
public async Task<IEnumerable<Participant>> Get()
{
return await _dataContext.Participants.ToListAsync();
}
public async Task<Participant?> Get(int id)
{
// Fix: Use FindAsync with key value array, not a predicate
return await _dataContext.Participants.FindAsync(id);
}
public async Task<int> Save(Participant entity)
{
var res = -1;
if (string.IsNullOrEmpty(entity.FirstName)
|| string.IsNullOrEmpty(entity.LastName))
{
return res; // Validation failed
}
if (entity.ParticipantId == 0)
{
_dataContext.Participants.Add(entity);
await _dataContext.SaveChangesAsync();
res = entity.ParticipantId;
}
else
{
_dataContext.Participants.Update(entity);
await _dataContext.SaveChangesAsync();
res = entity.ParticipantId;
}
return res;
}
public bool Delete(Participant entity)
{
var res = false;
try
{
_dataContext.Participants.Remove(entity);
_dataContext.SaveChanges();
res = true;
}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine($"Error deleting participant: {ex.Message}");
res = false;
}
return res;
}
public async Task<bool> DeleteById(int Id)
{
var ok = false;
var delObject = await this.Get(Id);
if (delObject != null)
{
try
{
ok = this.Delete(delObject);
}
catch (Exception ex)
{
throw new Exception("Unsuccessful remove of Participant: " + ex.Message);
}
}
return ok;
}
}