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.

119 lines
4.8 KiB

using Entity_Framework;
using Entity_Framework.Entity;
using Entity_Framework.Entity.Relations;
using Entity_Framework.Factories;
using Modele.Classe;
using System.Collections.Generic;
namespace Extraction_Donnees.Extraction
{
public partial class Extraction
{
public Task<IEnumerable<Ecurie>> GetEcuries()
{
IEnumerable<Ecuries> result = new List<Ecuries>();
IEnumerable<Ecurie> list = new List<Ecurie>();
using (BDDContext db = new BDDContext())
{
result = db.Ecuries.ToList();
foreach (Ecuries ecu in result)
{
Ecurie ecurie = new Ecurie("Inconnu !");
ecurie.name = ecu.Name;
ecurie.Owner = (from pilote in db.Pilotes
from relation in db.RelationEcuriePilote
from ecuTMP in db.Ecuries
where ecuTMP.Id == relation.IdEcurie && relation.IdPilote == pilote.Id && relation.Grade == "Owner" && ecu.Id == ecuTMP.Id
select pilote).Select( e => e.EntityToModele()).First();
ecurie.Members = (from relation in db.RelationEcuriePilote
from pilotes in db.Pilotes
where relation.IdPilote == pilotes.Id && relation.IdEcurie == ecu.Id && relation.Grade == "Member"
select pilotes).ToList().Select(e => e.EntityToModele()).ToList();
ecurie.WaitingMembers = (from relation in db.RelationEcuriePilote
from pilotes in db.Pilotes
where relation.IdPilote == pilotes.Id && relation.IdEcurie == ecu.Id && relation.Grade == "WaitingMember"
select pilotes).ToList().Select(e => e.EntityToModele()).ToList();
list.ToList().Add(ecurie);
}
}
return Task.FromResult<IEnumerable<Ecurie>>(list);
}
public Task<Ecurie> GetOneEcurie(string name)
{
Ecuries ecurie = new Ecuries();
using (BDDContext db = new BDDContext())
{
ecurie = db.Ecuries.Where(e => e.Name == name).FirstOrDefault();
}
if(ecurie == null)
{
return Task.FromResult<Ecurie>(null);
}
return Task.FromResult<Ecurie>(ecurie.EntityToModele());
}
public Task<List<int>> AddEcurie(Ecurie ecurie, string pseudo)
{
// IEnumerable<int>
//Indice 0 : Réussi ou pas -> value : 0 ok / 1 erreur
//Indice 1 : L'erreur -> Value : 2 nom ecurie / 3 pilote introuvable / 4 fait déjà partie d'une ecurie
List<int> result = new List<int>();
Ecuries ecurieEntity = ecurie.ModeleToEntity();
Relation_Pilote_Ecurie relation = new Relation_Pilote_Ecurie();
using (BDDContext db = new BDDContext())
{
bool checkEcurieName = db.Ecuries.Any(e => e.Name == ecurie.name);
if (checkEcurieName == true)
{
result.Add(1);
result.Add(2);
return Task.FromResult<List<int>>(result);
}
bool chackPilotePseudo = db.Pilotes.Any(e => e.Pseudo == pseudo);
if ( chackPilotePseudo == false )
{
result.Add(1);
result.Add(3);
return Task.FromResult<List<int>>(result);
}
int idPilote = db.Pilotes.Where(e => e.Pseudo == pseudo).First().Id;
bool checkPiloteWithEcurie = db.Ecuries.Any( e => e.IdPiloteProprietaire == idPilote);
if (checkPiloteWithEcurie == true )
{
result.Add(1);
result.Add(4);
return Task.FromResult<List<int>>(result);
}
ecurieEntity.IdPiloteProprietaire = idPilote;
relation.IdPilote = idPilote;
db.Add(ecurieEntity);
db.SaveChanges();
}
using (BDDContext db = new BDDContext())
{
Ecuries ecurieRelation = new Ecuries();
int idEcurie = db.Ecuries.Where(e => e.Name == ecurie.name).First().Id;
relation.IdEcurie = idEcurie;
relation.Grade = "Owner";
db.Add(ecurieRelation);
db.SaveChanges();
}
result.Add(0);
return Task.FromResult<List<int>>(result);
}
}
}