public ActionResult DeleteSpeciality(int ApplicationID, int GroupID, int SpecialityApplicationID) { Application Application = db.Applications.Find(ApplicationID); SpecialityApplication specialityApplication = db.SpecialityApplications.Find(SpecialityApplicationID); List <SpecialityApplication> Specialities = Application.SpecialityApplications.Where(sa => sa.GroupedSpeciality.GroupID == GroupID).OrderBy(sa => sa.Priority).ToList(); int indexToDelete = Specialities.IndexOf(specialityApplication); for (int i = 0; i < Specialities.Count(); i++) { if (i > indexToDelete) { Specialities[i].Priority--; db.Entry(Specialities[i]).State = EntityState.Modified; } } db.SpecialityApplications.Remove(specialityApplication); db.SaveChanges(); return(RedirectToAction("SpecialitiesList", new { ApplicationID, GroupID = Application.ApplicationSettings.First().ApplicationGroupID })); }
public ActionResult AddSpeciality(AddedGruopedSpecilityID speciality) { Application Application = db.Applications.Find(speciality.ApplicationID); ApplicationSetting ApplicationSetting = Application.ApplicationSettings.First(); // Create SpecialityApplication SpecialityApplication SpecialityApplication = new SpecialityApplication(); SpecialityApplication.ApplicationID = speciality.ApplicationID; SpecialityApplication.GroupedSpecialityID = speciality.GroupedSpecialityID; // Set main groupid if adding new speciality if (speciality.GroupID == null) { ApplicationSetting.ApplicationGroupID = db.GroupedSpecialities.Find(speciality.GroupedSpecialityID).GroupID; db.Entry(ApplicationSetting).State = EntityState.Modified; db.SaveChanges(); } int NewSpecialityGroupID = db.GroupedSpecialities.Find(speciality.GroupedSpecialityID).GroupID; if (NewSpecialityGroupID == ApplicationSetting.ApplicationGroupID) { SpecialityApplication.Priority = ApplicationSetting.NumberOfMainGroupSpecialities ?? 0; ApplicationSetting.NumberOfMainGroupSpecialities++; db.Entry(ApplicationSetting).State = EntityState.Modified; } else { SpecialityApplication.Priority = Application.SpecialityApplications.Select(sa => sa.GroupedSpeciality.GroupID).Where(gID => gID == NewSpecialityGroupID).Count(); } db.SpecialityApplications.Add(SpecialityApplication); db.SaveChanges(); int GroupID = ApplicationSetting.ApplicationGroupID ?? throw new NotImplementedException(); return(RedirectToAction("SpecialitiesList", new { ApplicationID = Application.ApplicationID, GroupID = ApplicationSetting.ApplicationGroupID })); }
public void ChangePriority(int ApplicationID, int StartPosition, int EndPosition, int GroupID) { if (StartPosition != EndPosition) { Application Application = db.Applications.Find(ApplicationID); List <SpecialityApplication> SpecialityApplications = Application.SpecialityApplications.Where(sa => sa.GroupedSpeciality.GroupID == GroupID).OrderBy(sa => sa.Priority).ToList(); if (StartPosition < EndPosition) { for (int i = StartPosition + 1; i < SpecialityApplications.Count && i <= EndPosition; i++) { SpecialityApplications[i].Priority--; } SpecialityApplication tmp = SpecialityApplications[StartPosition]; tmp.Priority = EndPosition; SpecialityApplications.RemoveAt(StartPosition); SpecialityApplications.Insert(EndPosition, tmp); } else { for (int i = EndPosition; i < SpecialityApplications.Count && i < StartPosition; i++) { SpecialityApplications[i].Priority++; } SpecialityApplication tmp = SpecialityApplications[StartPosition]; tmp.Priority = EndPosition; SpecialityApplications.RemoveAt(StartPosition); SpecialityApplications.Insert(EndPosition, tmp); } foreach (SpecialityApplication sp in SpecialityApplications) { db.Entry(sp).State = EntityState.Modified; } db.SaveChanges(); } }