You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
122 lines
4.3 KiB
122 lines
4.3 KiB
|
|
using BowlingEF.Context;
|
|
using BowlingEF.Entities;
|
|
using BowlingLib.Model;
|
|
using Business;
|
|
using Microsoft.EntityFrameworkCore;
|
|
|
|
namespace BowlingService
|
|
{
|
|
public class EquipeDbDataManager : IDataManager<Equipe>
|
|
{
|
|
private readonly BowlingContext _context;
|
|
|
|
public EquipeDbDataManager(BowlingContext context)
|
|
{
|
|
_context = context;
|
|
}
|
|
|
|
#region Méthodes
|
|
public async Task<bool> Add(Equipe _equipe)
|
|
{
|
|
bool result = false;
|
|
EquipeEntity entity = new EquipeEntity
|
|
{
|
|
Id = _equipe.Id,
|
|
Nom = _equipe.Nom,
|
|
|
|
};
|
|
|
|
for (int i = 0; i < _equipe.Joueurs.Count; i++)
|
|
{
|
|
//Mapping entre la classe joueur et la classe joueurEntity
|
|
JoueurEntity joueurEntity = new JoueurEntity
|
|
{
|
|
Id = _equipe.Joueurs[i].Id,
|
|
Pseudo = _equipe.Joueurs[i].Pseudo,
|
|
};
|
|
|
|
//Parcourt de la liste des parties d'un joueur
|
|
for (int j = 0; j < _equipe.Joueurs[i].Parties.Count; j++)
|
|
{
|
|
//Mapping entre les parties d'un joueur et les partieEntity d'une partieEntity
|
|
PartieEntity partieEntity = new PartieEntity
|
|
{
|
|
Joueur = joueurEntity,
|
|
Date = _equipe.Joueurs[i].Parties[j].Date,
|
|
Score = _equipe.Joueurs[i].Parties[j].Score
|
|
|
|
};
|
|
|
|
//Parcourt de la liste des frames d'une partie
|
|
for (int k = 0; k < _equipe.Joueurs[i].Parties[j].Frames.Count; k++)
|
|
{
|
|
//Mapping entre les frames d'une partie et les frameEntity d'une partieEntity
|
|
FrameEntity frameEntity = new FrameEntity
|
|
{
|
|
Id = _equipe.Joueurs[i].Parties[j].Frames[k].Id,
|
|
Lancer1 = _equipe.Joueurs[i].Parties[j].Frames[k].Lancer1.QuillesTombees,
|
|
Lancer2 = _equipe.Joueurs[i].Parties[j].Frames[k].Lancer2.QuillesTombees,
|
|
Lancer3 = _equipe.Joueurs[i].Parties[j].Frames[k].Lancer3.QuillesTombees,
|
|
Partie = partieEntity
|
|
};
|
|
partieEntity.Frames.Add(frameEntity);
|
|
}
|
|
joueurEntity.PartieEntities.Add(partieEntity);
|
|
}
|
|
entity.Joueurs.Add(joueurEntity);
|
|
|
|
|
|
}
|
|
_context.Equipes.Add(entity);
|
|
await _context.SaveChangesAsync();
|
|
result = true;
|
|
return result;
|
|
}
|
|
|
|
public async Task<bool> Delete(Equipe _equipe)
|
|
{
|
|
bool result = false;
|
|
EquipeEntity entity = _context.Equipes.Find(_equipe.Id);
|
|
_context.Equipes.Remove(entity);
|
|
result = await _context.SaveChangesAsync() > 0;
|
|
return result;
|
|
}
|
|
|
|
public async Task<IEnumerable<Equipe>> GetAll()
|
|
{
|
|
return await _context.Equipes.Select(e => new Equipe
|
|
(
|
|
e.Id,
|
|
e.Nom,
|
|
e.Joueurs.Select(j => new Joueur(j.Id, j.Pseudo)).ToArray()
|
|
)).ToListAsync();
|
|
}
|
|
|
|
public async Task<Equipe> GetDataWithName(string name)
|
|
{
|
|
return await _context.Equipes.Where(e => e.Nom == name).Select(e => new Equipe
|
|
(
|
|
e.Id,
|
|
e.Nom,
|
|
e.Joueurs.Select(j => new Joueur(j.Id, j.Pseudo)).ToArray()
|
|
)).FirstOrDefaultAsync();
|
|
}
|
|
|
|
public async Task< bool> Update(Equipe data)
|
|
{
|
|
bool result = false;
|
|
EquipeEntity entity = _context.Equipes.Find(data.Id);
|
|
entity.Nom = data.Nom;
|
|
entity.Joueurs = data.Joueurs.Select(j => new JoueurEntity
|
|
{
|
|
Id = j.Id,
|
|
Pseudo = j.Pseudo
|
|
}).ToList();
|
|
result = await _context.SaveChangesAsync() > 0;
|
|
return result;
|
|
}
|
|
#endregion
|
|
}
|
|
}
|