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 ActionEduAxeFactory : Internal.BaseFactory { public override IQueryable getAll() { return base.getAll("Ordre"); } public void Up(ref Entity.ActionEduAxe item) { int ordre = item.Ordre; //Cas de sortie immédiate if (item.Ordre == 1) return; Entity.ActionEduAxe itemToSubstitute = dbContext.ActionEduAxes.Where(i => i.Ordre == ordre - 1).First(); itemToSubstitute.Ordre += 1; item.Ordre -= 1; dbContext.SaveChanges(); } public void Down(ref Entity.ActionEduAxe item) { int ordre = item.Ordre; //Cas de sortie immédiate if (item.Ordre == dbContext.ActionEduAxes.Max(i => i.Ordre)) return; Entity.ActionEduAxe itemToSubstitute = dbContext.ActionEduAxes.Where(i => i.Ordre == ordre + 1).First(); itemToSubstitute.Ordre -= 1; item.Ordre += 1; dbContext.SaveChanges(); } private void Sort() { int ordre = 1; foreach (Entity.ActionEduAxe statut in dbContext.ActionEduAxes.OrderBy(i => i.Ordre)) { statut.Ordre = ordre++; } dbContext.SaveChanges(); } public override void add(ref Entity.ActionEduAxe entity) { //Initialisation de l'ordre if (dbContext.ActionEduAxes.Count() == 0) entity.Ordre = 1; else entity.Ordre = dbContext.ActionEduAxes.Max(i => i.Ordre) + 1; base.add(ref entity); } public override void delete(ref Entity.ActionEduAxe entity) { base.delete(ref entity); Sort(); } } }