Merge pull request 'Final EF #40' (#43) from EF0031 into master
continuous-integration/drone/push Build is passing Details

Reviewed-on: #43
pull/51/head
Victor Perez NGOUNOU 3 years ago
commit 45b88b6c75

@ -22,6 +22,10 @@ namespace BowlingEF.Entities
public bool IsStrike { get; set; }
[Required]
public bool IsSpare { get; set; }
[ForeignKey("PartieId")]
[Required]
public long PartieId { get; set; }
public PartieEntity Partie { get; set; }
}
}

@ -17,8 +17,15 @@ namespace BowlingEF.Entities
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public long Id { get; set; }
public JoueurEntity Joueur { get; set; }
[ForeignKey("JoueurId")]
[Required]
public long JoueurId { get; set; }
[Required]
public DateTime Date { get; set; }
public ICollection<FrameEntity> Frames { get; set; }
public int Score { get; set; }
[Required]
public int? Score { get; set; }
public PartieEntity()
{

@ -44,7 +44,7 @@ namespace BowlingLib.Model
this.nom = nom;
}
public Equipe(string nom, long id, List<Joueur> joueurs, int numero)
public Equipe(long id, string nom, List<Joueur> joueurs)
{
this.id = id;
Joueurs = joueurs;

@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Diagnostics.CodeAnalysis;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
@ -142,15 +143,14 @@ namespace BowlingLib.Model
/// <param name="lancer1"></param>
/// <param name="lancer2"></param>
/// <param name="lancer3"></param>
public Frame(int numero, long id, bool isStrike, bool isSpare, bool isPark, bool isFinished, Lancer lancer1, Lancer lancer2, Lancer? lancer3) : this(numero)
public Frame(long id, int numero, bool isStrike, bool isSpare, int lancer1, int lancer2, [AllowNull] int lancer3) : this(numero)
{
this.id = id;
IsStrike = isStrike;
IsSpare = isSpare;
IsFinished = isFinished;
Lancer1 = lancer1;
Lancer2 = lancer2;
Lancer3 = lancer3;
Lancer1 = new Lancer(lancer1);
Lancer2 = new Lancer(lancer2);
Lancer3 = new Lancer(lancer3);
}
/// <summary>

@ -20,7 +20,7 @@ namespace BowlingLib.Model
this.Pseudo = pseudo;
}
public Joueur(string pseudo, long id) : this(pseudo)
public Joueur(long id,string pseudo) : this(pseudo)
{
this.id = id;
}

@ -12,6 +12,19 @@ namespace BowlingLib.Model
public ReadOnlyCollection<Frame> Frames { get; }
public Joueur Joueur { get; private set; }
private readonly long id;
private DateTime date;
public int? Score {
get
{
return GetScore();
}
private set { }
}
public DateTime Date
{
get { return date; }
private set { date = value; }
}
public long Id => id;
private readonly List<Frame> frames=new();
@ -23,13 +36,16 @@ namespace BowlingLib.Model
public Partie(Joueur joueur)
{
this.Joueur = joueur;
Frames = new ReadOnlyCollection<Frame>(frames);
}
public Partie(Joueur joueur, long id, List<Frame> frames) : this(joueur)
public Partie(long id, Joueur joueur, List<Frame> frames,DateTime date, int? score) : this(joueur)
{
this.id = id;
this.frames = frames;
this.date = date;
this.Score = score;
}
/// <summary>

@ -1,38 +0,0 @@
using BowlingEF.Context;
using Business;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace BowlingMaping
{
//public class DbDataManager : IDataManager
//{
// private readonly BowlingContext context;
// public DbDataManager(BowlingContext context)
// {
// this.context = context;
// }
// public void Add(Manager data)
// {
// context.Add(data);
// context.SaveChanges();
// }
// public void Delete(Manager data)
// {
// context.Remove(data);
// context.SaveChanges();
// }
// public void Update(Manager data)
// {
// context.Update(data);
// context.SaveChanges();
// }
//}
}

@ -0,0 +1,91 @@
using BowlingEF.Context;
using BowlingEF.Entities;
using BowlingLib.Model;
using Business;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace BowlingMaping
{
public class EquipeDbDataManager : IDataManager<Equipe>
{
public bool Add(Equipe _equipe)
{
bool result = false;
using (var context = new BowlingContext())
{
EquipeEntity entity = new EquipeEntity
{
Id = _equipe.Id,
Nom = _equipe.Nom,
Joueurs = _equipe.Joueurs.Select(j => new JoueurEntity
{
Id = j.Id,
Pseudo = j.Pseudo
}).ToList()
};
context.Equipes.Add(entity);
result = context.SaveChanges() == 1;
}
return result;
}
public bool Delete(Equipe _equipe)
{
bool result = false;
using (var context = new BowlingContext())
{
EquipeEntity entity = context.Equipes.Find(_equipe.Id);
context.Equipes.Remove(entity);
result = context.SaveChanges() == 1;
}
return result;
}
public IEnumerable<Equipe> GetAll()
{
using (var context = new BowlingContext())
{
return context.Equipes.Select(e => new Equipe
(
e.Id,
e.Nom,
e.Joueurs.Select(j => new Joueur(j.Id, j.Pseudo)).ToList()
)).ToList();
}
}
public Equipe GetDataWithName(string name)
{
using (var context = new BowlingContext())
{
return 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)).ToList()
)).FirstOrDefault();
}
}
public bool Update(Equipe data)
{
bool result = false;
using (var context = new BowlingContext())
{
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 = context.SaveChanges() == 1;
}
return result;
}
}
}

@ -0,0 +1,101 @@
using BowlingEF.Context;
using BowlingEF.Entities;
using BowlingLib.Model;
using Business;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace BowlingMaping
{
public class JoueurDbDataManager : IDataManager<Joueur>
{
/// <summary>
/// Ajoute un joueur à la liste des joueurs
/// </summary>
/// <param name="_joueur"></param>
/// <returns></returns>
public bool Add(Joueur _joueur)
{
bool result = false;
using (var context = new BowlingContext())
{
JoueurEntity entity=new JoueurEntity
{
Id = _joueur.Id,
Pseudo = _joueur.Pseudo,
};
context.Joueurs.Add(entity);
result = context.SaveChanges() == 1;
}
return result;
}
/// <summary>
/// Supprime un joueur de la liste des joueurs
/// </summary>
/// <param name="_joueur"></param>
/// <returns></returns>
public bool Delete(Joueur _joueur)
{
bool result = false;
using (var context = new BowlingContext())
{
JoueurEntity entity = context.Joueurs.Find(_joueur.Id);
context.Joueurs.Remove(entity);
result = context.SaveChanges() == 1;
}
return result;
}
/// <summary>
/// recupère tous les joueurs de la Base de données
/// </summary>
/// <returns></returns>
public IEnumerable<Joueur> GetAll()
{
using (var context = new BowlingContext())
{
List<Joueur> joueurs = new List<Joueur>();
foreach (var item in context.Joueurs)
joueurs.Add(new Joueur(item.Id, item.Pseudo));
return joueurs;
}
}
/// <summary>
/// recupère un joueur de la Base de données par son pseudo
/// </summary>
/// <param name="name"></param>
/// <returns></returns>
public Joueur GetDataWithName(string name)
{
using (var context = new BowlingContext())
{
Joueur _joueur = null;
var query = from joueur in context.Joueurs
where joueur.Pseudo == name
select joueur;
foreach (var item in query)
_joueur = new Joueur(item.Id, item.Pseudo);
return _joueur;
}
}
public bool Update(Joueur _joueur)
{
bool result = false;
using (var context = new BowlingContext())
{
JoueurEntity entity = context.Joueurs?.Find(_joueur.Id);
entity.Pseudo = _joueur.Pseudo;
result = context.SaveChanges() == 1;
}
return result;
}
}
}

@ -0,0 +1,147 @@
using BowlingEF.Context;
using BowlingEF.Entities;
using BowlingLib.Model;
using Business;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace BowlingMaping
{
public class PartieDbDataManager : IPartieDbDataManager
{
/// <summary>
/// Ajoute une partie Dans la base de données
/// </summary>
/// <param name="_partie"></param>
/// <returns></returns>
public bool Add(Partie _partie)
{
bool result = false;
using (var context = new BowlingContext())
{
PartieEntity entity = new PartieEntity
{
Id = _partie.Id,
Date = _partie.Date,
JoueurId = _partie.Joueur.Id,
Score = _partie.Score
};
context.Parties.Add(entity);
result = context.SaveChanges() == 1;
}
return result;
}
/// <summary>
/// Supprime une partie de la base de données
/// </summary>
/// <param name="_partie"></param>
/// <returns></returns>
public bool Delete(Partie _partie)
{
bool result = false;
using (var context = new BowlingContext())
{
PartieEntity entity = context.Parties.Find(_partie.Id);
context.Parties.Remove(entity);
result = context.SaveChanges() == 1;
}
return result;
}
/// <summary>
/// Modifie une partie dans la base de données
/// </summary>
/// <param name="_partie"></param>
/// <returns></returns>
public bool Update(Partie _partie)
{
bool result = false;
using (var context = new BowlingContext())
{
PartieEntity entity = context.Parties.Find(_partie.Id);
entity.Date = _partie.Date;
entity.JoueurId = _partie.Joueur.Id;
entity.Score = _partie.Score;
result = context.SaveChanges() == 1;
}
return result;
}
/// <summary>
/// Retourne une partie de la base de données en fonction de son nom
/// </summary>
/// <param name="_partie"></param>
/// <returns></returns>
public Partie GetDataWithName(string name)
{
Partie result = null;
using (var context = new BowlingContext())
{
PartieEntity entity = context.Parties.Find(name);
Joueur joueur = new Joueur(entity.Joueur.Id,entity.Joueur.Pseudo);
List<Frame> frames = new List<Frame>();
foreach (FrameEntity frameEntity in entity.Frames)
{
Frame frame = new Frame(frameEntity.Id, frameEntity.Numero, frameEntity.IsStrike, frameEntity.IsSpare,frameEntity.Lancer1,frameEntity.Lancer2,frameEntity.Lancer3);
frames.Add(frame);
}
result = new Partie(entity.Id, joueur,frames, entity.Date, entity.Score);
}
return result;
}
/// <summary>
/// Retourne Toutes les parties en base de donné
/// </summary>
/// <returns></returns>
public IEnumerable<Partie> GetAll()
{
List<Partie> result = new List<Partie>();
using (var context = new BowlingContext())
{
foreach (PartieEntity entity in context.Parties.OrderBy(item=>item.Date))
{
Joueur joueur = new Joueur(entity.Joueur.Id, entity.Joueur.Pseudo);
List<Frame> frames = new List<Frame>();
foreach (FrameEntity frameEntity in entity.Frames)
{
Frame frame = new Frame(frameEntity.Id, frameEntity.Numero, frameEntity.IsStrike, frameEntity.IsSpare, frameEntity.Lancer1, frameEntity.Lancer2, frameEntity.Lancer3);
frames.Add(frame);
}
result.Add(new Partie(entity.Id, joueur, frames, entity.Date, entity.Score));
}
}
return result;
}
public IEnumerable<Partie> GetAllWithDate(DateTime date)
{
List<Partie> result = new List<Partie>();
using (var context = new BowlingContext())
{
foreach (PartieEntity entity in context.Parties.OrderBy(item=>item.Date))
{
if (entity.Date == date)
{
Joueur joueur = new Joueur(entity.Joueur.Id, entity.Joueur.Pseudo);
List<Frame> frames = new List<Frame>();
foreach (FrameEntity frameEntity in entity.Frames)
{
Frame frame = new Frame(frameEntity.Id, frameEntity.Numero, frameEntity.IsStrike, frameEntity.IsSpare, frameEntity.Lancer1, frameEntity.Lancer2, frameEntity.Lancer3);
frames.Add(frame);
}
result.Add(new Partie(entity.Id, joueur, frames, entity.Date, entity.Score));
}
}
}
return result;
}
}
}

@ -7,6 +7,7 @@ namespace BowlingStub
public class StubEquipe : IDataManager<Equipe>
{
private List<Equipe> listEquipes = new List<Equipe>();
public int nbrJ = 10,nbrE = 2;
public StubEquipe()
{
//listEquipes.Add(new Equipe("Equipe 1", new Joueur("Joueur 1"), new Joueur("Joueur 2")));
@ -34,23 +35,24 @@ namespace BowlingStub
return false;
}
public IEnumerable<Equipe> GetAll(int n = 10, int j = 2)
public void Load()
{
for (int i = 0; i < n; i++)
for (int i = 0; i < nbrJ; i++)
{
this.Add(new Equipe("Equipe " + i + 1));
for (int k = 0; k < j; k++)
for (int k = 0; k < nbrE; k++)
{
listEquipes.ElementAt(i).AjouterJoueur(new Joueur("Joueur " + i + 1 + "-" + k + 1));
}
}
return listEquipes;
}
public IEnumerable<Equipe> GetAll()
{
Load();
return listEquipes;
}
@ -68,13 +70,14 @@ namespace BowlingStub
}
public Equipe GetDataWithId(int id)
public Equipe GetDataWithName(string name)
{
throw new NotImplementedException();
}
public Equipe GetDataWithName(string name)
public IEnumerable<Equipe> GetAllWithDate(DateTime date)
{
throw new NotImplementedException();
}

@ -12,9 +12,7 @@ namespace Business
bool Add(Data data);
bool Delete(Data data);
bool Update(Data data);
Data GetDataWithId(int id);
Data GetDataWithName(string name);
IEnumerable<Data> GetAll();
IEnumerable<Data> GetAll(int n, int j);
}
}

@ -0,0 +1,14 @@
using BowlingLib.Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Business
{
public interface IPartieDbDataManager : IDataManager<Partie>
{
IEnumerable<Partie> GetAllWithDate(DateTime date);
}
}

@ -192,23 +192,5 @@ namespace Business
return equipeDataManager.GetAll();
}
//retourne le joueur avec l'id
public Joueur GetJoueurWithId(int id)
{
return JoueurDataManager.GetDataWithId(id);
}
//retourne la partie avec l'id
public Partie GetPartieWithId(int id)
{
return partieDataManager.GetDataWithId(id);
}
//retourne l'équipe avec l'id
public Equipe GetEquipeWithId(int id)
{
return equipeDataManager.GetDataWithId(id);
}
}
}

Loading…
Cancel
Save