using CD67.FicheCollege.Entity; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data.Entity; namespace CD67.FicheCollege.Factory { public partial class RestaurationTypeRepaFactory : Internal.BaseFactory { public override IQueryable getAll() { return base.getAll("Ordre"); } public IQueryable getAllValid() { return base.getAll("Ordre").Where(i => i.Valid == true); } public IQueryable getAllValid(RestaurationParametre param) { if (param.RestaurationTypeRepas.Count == 0) this.dbContext.Entry(param).Collection(i => i.RestaurationTypeRepas).Load(); IQueryable typeRepas = param.RestaurationTypeRepas.AsQueryable(); return typeRepas.Where(i => i.Valid == true).OrderBy(i => i.Ordre); } public void Up(ref Entity.RestaurationTypeRepa item) { int ordre = item.Ordre; //Cas de sortie immédiate if (item.Ordre == 1) return; Entity.RestaurationTypeRepa itemToSubstitute = dbContext.RestaurationTypeRepas.Where(i => i.Ordre == ordre - 1).First(); itemToSubstitute.Ordre += 1; item.Ordre -= 1; dbContext.SaveChanges(); } public void Down(ref Entity.RestaurationTypeRepa item) { int ordre = item.Ordre; //Cas de sortie immédiate if (item.Ordre == dbContext.RestaurationTypes.Max(i => i.Ordre)) return; Entity.RestaurationTypeRepa itemToSubstitute = dbContext.RestaurationTypeRepas.Where(i => i.Ordre == ordre + 1).First(); itemToSubstitute.Ordre -= 1; item.Ordre += 1; dbContext.SaveChanges(); } private void Sort() { int ordre = 1; foreach (Entity.RestaurationTypeRepa statut in dbContext.RestaurationTypeRepas.OrderBy(i => i.Ordre)) { statut.Ordre = ordre++; } dbContext.SaveChanges(); } public override void add(ref Entity.RestaurationTypeRepa entity) { //Initialisation de l'ordre if (dbContext.RestaurationTypeRepas.Count() == 0) entity.Ordre = 1; else entity.Ordre = dbContext.RestaurationTypeRepas.Max(i => i.Ordre) + 1; base.add(ref entity); } public override void delete(ref Entity.RestaurationTypeRepa entity) { base.delete(ref entity); Sort(); } } }