示例#1
0
        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 }));
        }
示例#2
0
        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 }));
        }
示例#3
0
        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();
            }
        }