public ActionResult DeleteConfirmed(int id)
        {
            LinkDoctorCourse linkDoctorCourse = db.LinkDoctorCourses.Find(id);

            db.LinkDoctorCourses.Remove(linkDoctorCourse);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
 public ActionResult Edit([Bind(Include = "ID,Doctor_id,Course_id,hours")] LinkDoctorCourse linkDoctorCourse)
 {
     if (ModelState.IsValid)
     {
         db.Entry(linkDoctorCourse).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     ViewBag.Doctor_id = new SelectList(db.AspNetUsers, "Id", "Email", linkDoctorCourse.Doctor_id);
     ViewBag.Course_id = new SelectList(db.Courses, "ID", "Name", linkDoctorCourse.Course_id);
     return(View(linkDoctorCourse));
 }
        // GET: LinkDoctorCourses/Details/5
        public ActionResult Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            LinkDoctorCourse linkDoctorCourse = db.LinkDoctorCourses.Find(id);

            if (linkDoctorCourse == null)
            {
                return(HttpNotFound());
            }
            return(View(linkDoctorCourse));
        }
        // GET: LinkDoctorCourses/Edit/5
        public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            LinkDoctorCourse linkDoctorCourse = db.LinkDoctorCourses.Find(id);

            if (linkDoctorCourse == null)
            {
                return(HttpNotFound());
            }
            ViewBag.Doctor_id = new SelectList(db.AspNetUsers, "Id", "Email", linkDoctorCourse.Doctor_id);
            ViewBag.Course_id = new SelectList(db.Courses, "ID", "Name", linkDoctorCourse.Course_id);
            return(View(linkDoctorCourse));
        }
Exemple #5
0
        public static void MainAlgo()
        {
            CollegeDatabaseEntities10 db = new CollegeDatabaseEntities10();
            // Declare lists
            List <course>      courseList  = new List <course>();
            List <ta>          taList      = new List <ta>();
            List <TaForCourse> taForCourse = new List <TaForCourse>();
            // load data from database in course List
            var courseListdb = (from x in db.Courses
                                select new { x.ID, x.LabHours, x.SectionHours, x.AcademicYear_id }).ToList();

            for (int i = 0; i < courseListdb.Count(); i++)
            {
                if (courseListdb[i].LabHours != null || courseListdb[i].SectionHours != null)
                {
                    int courseHour = Convert.ToInt32(courseListdb[i].SectionHours);
                    int labHour    = Convert.ToInt32(courseListdb[i].LabHours);
                    int total      = totalHoursForCourse(courseListdb[i].AcademicYear_id, courseHour, labHour);
                    courseList.Add(new course((Convert.ToInt32(courseListdb[i].ID)), courseHour, total, labHour));
                }
            }

            // load data from database in ta list
            var taInfo = (from x in db.AspNetUsers
                          where x.type == "Ta"
                          select new { x.Id, x.Experience }).ToList();

            var tawishesList = (from x in db.Ta_Wishes
                                select new { x.Ta_Id, x.Course_Id, x.Priority }).ToList();

            for (int i = 0; i < taInfo.Count(); i++)
            {
                int wish1 = 0;
                int wish2 = 0;
                for (int j = 0; j < tawishesList.Count(); j++)
                {
                    string ta_info_id  = Convert.ToString(taInfo[i].Id);
                    string ta_wish_id  = Convert.ToString(tawishesList[j].Ta_Id);
                    int    ta_wish_pri = Convert.ToInt32(tawishesList[j].Priority);
                    if (ta_info_id == ta_wish_id)
                    {
                        if (ta_wish_pri == 1)
                        {
                            wish1 = Convert.ToInt32(tawishesList[j].Course_Id);
                        }
                        else if (ta_wish_pri == 2)
                        {
                            //if (wish1 == 0)
                            //{
                            //    j = 0;
                            //    continue;
                            //}
                            wish2 = Convert.ToInt32(tawishesList[j].Course_Id);
                        }
                        else if (ta_wish_pri == 3)
                        {
                            //if (wish2 == 0)
                            //{
                            //    j = 0;
                            //    continue;
                            //}
                            taList.Add(new ta(tawishesList[j].Ta_Id, wish1, wish2, Convert.ToInt32(tawishesList[j].Course_Id), totalHoursForEachTa(), (Convert.ToInt32(taInfo[i].Experience))));
                            break;
                        }
                    }
                    else
                    {
                        continue;
                    }
                }
            }

            // choose victim from list
            List <ta>     victimList    = new List <ta>();
            List <ta>     nonVictimList = new List <ta>();
            List <string> temp          = Victims();

            for (int i = 0; i < taList.Count(); i++)
            {
                bool check = false;
                for (int j = 0; j < temp.Count(); j++)
                {
                    if (temp[j] == taList[i].id)
                    {
                        victimList.Add(new ta(taList[i].id, taList[i].wish1, taList[i].wish2, taList[i].wish3, taList[i].remain_hours, taList[i].experiance));
                        check = true;
                        break;
                    }
                }
                if (check == false)
                {
                    nonVictimList.Add(new ta(taList[i].id, taList[i].wish1, taList[i].wish2, taList[i].wish3, taList[i].remain_hours, taList[i].experiance));
                }
            }
            // sort taList by experiance
            List <ta> sortedTAList = new List <ta>();

            sortedTAList = sortList(victimList);
            // algorithm elawl ll victim
            TaForEachCourse(sortedTAList, courseList, taForCourse);
            // algorithm l sana 4
            List <ta>     remain_ta     = new List <ta>();
            List <course> remain_course = new List <course>();

            for (int i = 0; i < sortedTAList.Count(); i++)
            {
                remain_ta.Add(new ta(sortedTAList[i].id, sortedTAList[i].wish1, sortedTAList[i].wish2, sortedTAList[i].wish3, sortedTAList[i].remain_hours, sortedTAList[i].experiance));
            }
            sortedTAList = new List <ta>();
            sortedTAList = sortList(nonVictimList);
            // choose mwad sana 4
            var academic_4_id = (from x in db.AcademicYears
                                 where x.AcademicYear1 == 4
                                 select x.ID).SingleOrDefault();
            int acad_4     = Convert.ToInt32(academic_4_id);
            var academic_4 = (from x in db.Courses
                              where x.AcademicYear_id == acad_4
                              select x.ID).ToList();
            List <int> academic_list = new List <int>();

            for (int i = 0; i < academic_4.Count(); i++)
            {
                academic_list.Add(academic_4[i]);
            }
            List <course> courses_4    = new List <course>();
            List <course> coursesNot_4 = new List <course>();

            for (int i = 0; i < courseList.Count(); i++)
            {
                bool check = false;
                for (int j = 0; j < academic_list.Count(); j++)
                {
                    if (academic_list[j] == courseList[i].id)
                    {
                        courses_4.Add(new course(courseList[i].id, courseList[i].course_hours, courseList[i].remain_hours, courseList[i].lab_hours));

                        check = true;
                        break;
                    }
                }
                if (check == false)
                {
                    coursesNot_4.Add(new course(courseList[i].id, courseList[i].course_hours, courseList[i].remain_hours, courseList[i].lab_hours));
                }
            }

            TaForEachCourse(sortedTAList, courses_4, taForCourse);
            for (int i = 0; i < courses_4.Count(); i++)
            {
                remain_course.Add(new course(courses_4[i].id, courses_4[i].course_hours, courses_4[i].remain_hours, courses_4[i].lab_hours));
            }
            TaForEachCourse(sortedTAList, coursesNot_4, taForCourse);
            for (int i = 0; i < sortedTAList.Count(); i++)
            {
                remain_ta.Add(new ta(sortedTAList[i].id, sortedTAList[i].wish1, sortedTAList[i].wish2, sortedTAList[i].wish3, sortedTAList[i].remain_hours, sortedTAList[i].experiance));
            }

            for (int i = 0; i < coursesNot_4.Count(); i++)
            {
                remain_course.Add(new course(coursesNot_4[i].id, coursesNot_4[i].course_hours, coursesNot_4[i].remain_hours, coursesNot_4[i].lab_hours));
            }
            // elyear ely ana feha 3shan a add elvictim
            var years = (from x in db.Years
                         select x.ID).ToList();
            List <int> yearss = new List <int>();
            int        year;

            if (years.Count() == 1)
            {
                year = 1;
            }
            else
            {
                for (int i = 0; i < years.Count(); i++)
                {
                    yearss.Add(years[i]);
                }

                year = yearss[years.Count() - 1];
            }

            var victim = (from x in db.VictimHistories
                          where x.Year_id == year
                          select x.Ta_id).ToList();

            for (int i = 0; i < remain_ta.Count(); i++)
            {
                VictimHistory victim1 = new VictimHistory();
                victim1.Ta_id   = remain_ta[i].id;
                victim1.Year_id = year;
                db.VictimHistories.Add(victim1);
                db.SaveChanges();
            }
            remain_ta = sortList(remain_ta);
            // lw remain ta = remain course
            for (int i = 0; i < remain_ta.Count(); i++)
            {
                for (int j = 0; j < remain_course.Count(); j++)
                {
                    if (remain_ta[i].remain_hours == remain_course[j].remain_hours)
                    {
                        if (remain_ta[i].remain_hours != 0)
                        {
                            LinkDoctorCourse link = new LinkDoctorCourse();
                            link.Course_id = remain_course[j].id;
                            link.Doctor_id = remain_ta[i].id;
                            link.hours     = remain_ta[i].remain_hours;

                            db.LinkDoctorCourses.Add(link);
                            db.SaveChanges();
                        }
                        remain_ta.Remove(remain_ta[i]);
                        if (i > 0 && i != remain_ta.Count() - 1)
                        {
                            i--;
                        }
                        else if (i == 0)
                        {
                            i = 0;
                        }
                        remain_course.Remove(remain_course[j]);
                        if (j > 0 && j != remain_course.Count() - 1)
                        {
                            j--;
                        }
                        else if (j == 0)
                        {
                            j = 0;
                        }
                    }
                }
            }
            // lw remain ta >< remain course
            for (int i = 0; i < remain_ta.Count(); i++)
            {
                for (int j = 0; j < remain_course.Count(); j++)
                {
                    if (remain_ta[i].remain_hours > remain_course[j].remain_hours)
                    {
                        if (remain_course[j].course_hours != 0 && remain_ta[i].remain_hours % remain_course[j].course_hours != 0)
                        {
                            while (remain_ta[i].remain_hours % remain_course[j].course_hours != 0)
                            {
                                remain_ta[i].remain_hours--;
                            }
                        }
                        if (remain_course[j].lab_hours != 0 && remain_ta[i].remain_hours % remain_course[j].lab_hours != 0)
                        {
                            while (remain_ta[i].remain_hours % remain_course[j].lab_hours != 0)
                            {
                                remain_ta[i].remain_hours--;
                            }
                        }
                        if (remain_course[j].remain_hours != 0)
                        {
                            LinkDoctorCourse link = new LinkDoctorCourse();
                            link.Course_id = remain_course[j].id;
                            link.Doctor_id = remain_ta[i].id;
                            link.hours     = remain_course[j].remain_hours;
                            db.LinkDoctorCourses.Add(link);
                            db.SaveChanges();
                        }
                        remain_ta[i].remain_hours -= remain_course[j].remain_hours;
                        remain_course.Remove(remain_course[j]);
                        if (j > 0 && j != remain_course.Count() - 1)
                        {
                            j--;
                        }
                        else if (j == 0)
                        {
                            j = 0;
                        }
                    }
                    // lw course hours > ta hours
                    else
                    {
                        if (remain_course[j].course_hours != 0 && remain_ta[i].remain_hours % remain_course[j].course_hours != 0)
                        {
                            while (remain_ta[i].remain_hours % remain_course[j].course_hours != 0)
                            {
                                remain_ta[i].remain_hours++;
                            }
                        }
                        if (remain_course[j].lab_hours != 0 && remain_ta[i].remain_hours % remain_course[j].lab_hours != 0)
                        {
                            while (remain_ta[i].remain_hours % remain_course[j].lab_hours != 0)
                            {
                                remain_ta[i].remain_hours++;
                            }
                        }
                        if (remain_ta[i].remain_hours != 0)
                        {
                            LinkDoctorCourse link = new LinkDoctorCourse();
                            link.Course_id = remain_course[j].id;
                            link.Doctor_id = remain_ta[i].id;
                            link.hours     = remain_ta[i].remain_hours;
                            db.LinkDoctorCourses.Add(link);
                            db.SaveChanges();
                        }
                        remain_course[j].remain_hours -= remain_ta[i].remain_hours;
                        remain_ta.Remove(remain_ta[i]);
                        if (i > 0 && i != remain_ta.Count() - 1)
                        {
                            i--;
                        }
                        else if (i == 0)
                        {
                            i = 0;
                        }
                    }
                }
            }
        }
Exemple #6
0
        public static void TaForEachCourse(List <ta> sortedTAList, List <course> courseList, List <TaForCourse> taForCourse)
        {
            CollegeDatabaseEntities10 db = new CollegeDatabaseEntities10();

            // wish 1
            for (int i = 0; i < sortedTAList.Count(); i++)
            {
                for (int j = 0; j < courseList.Count(); j++)
                {
                    if (courseList[j].id == sortedTAList[i].wish1)
                    {
                        // lw hours elcourse > hours el ta
                        if (courseList[j].remain_hours > sortedTAList[i].remain_hours)
                        {
                            if (courseList[j].course_hours != 0 && sortedTAList[i].remain_hours % courseList[j].course_hours != 0)
                            {
                                while (sortedTAList[i].remain_hours % courseList[j].course_hours != 0)
                                {
                                    sortedTAList[i].remain_hours++;
                                }
                            }
                            if (courseList[j].lab_hours != 0 && sortedTAList[i].remain_hours % courseList[j].lab_hours != 0)
                            {
                                while (sortedTAList[i].remain_hours % courseList[j].lab_hours != 0)
                                {
                                    sortedTAList[i].remain_hours++;
                                }
                            }


                            int x = sortedTAList[i].remain_hours;

                            //  sortedTAList[i].remain_hours = courseList[j].remain_hours - x;
                            courseList[j].remain_hours = courseList[j].remain_hours - x;
                            taForCourse.Add(new TaForCourse(sortedTAList[i].id, courseList[j].id));
                            // insert record in linkDoctorCourse
                            if (x != 0)
                            {
                                LinkDoctorCourse link = new LinkDoctorCourse();
                                link.Course_id = courseList[j].id;
                                link.Doctor_id = sortedTAList[i].id;
                                link.hours     = x;
                                db.LinkDoctorCourses.Add(link);
                                db.SaveChanges();
                            }
                            // lw elta hours b2t zero aw 22l yshelo mn ellist
                            sortedTAList.Remove(sortedTAList[i]);
                            if (i > 0 && i != sortedTAList.Count() - 1)
                            {
                                i--;
                            }
                            else if (i == 0)
                            {
                                i = 0;
                            }

                            if (courseList[j].remain_hours <= 0)
                            {
                                courseList.Remove(courseList[j]);
                                if (j > 0 && j != courseList.Count() - 1)
                                {
                                    j--;
                                }
                                else if (j == 0)
                                {
                                    j = 0;
                                }
                            }
                            break;
                        }
                        // lw hours ellecture <= hours el ta
                        else
                        {
                            if (courseList[j].course_hours != 0 && sortedTAList[i].remain_hours % courseList[j].course_hours != 0)
                            {
                                while (sortedTAList[i].remain_hours % courseList[j].course_hours != 0)
                                {
                                    sortedTAList[i].remain_hours--;
                                }
                            }
                            if (courseList[j].lab_hours != 0 && sortedTAList[i].remain_hours % courseList[j].lab_hours != 0)
                            {
                                while (sortedTAList[i].remain_hours % courseList[j].lab_hours != 0)
                                {
                                    sortedTAList[i].remain_hours--;
                                }
                            }

                            int x = courseList[j].remain_hours;
                            sortedTAList[i].remain_hours = sortedTAList[i].remain_hours - courseList[j].remain_hours;
                            // courseList[j].remain_hours = courseList[j].remain_hours - x;
                            taForCourse.Add(new TaForCourse(sortedTAList[i].id, courseList[j].id));
                            // insert record in linkDoctorCourse
                            if (x != 0)
                            {
                                LinkDoctorCourse link = new LinkDoctorCourse();
                                link.Course_id = courseList[j].id;
                                link.Doctor_id = sortedTAList[i].id;
                                link.hours     = x;
                                db.LinkDoctorCourses.Add(link);
                                db.SaveChanges();
                            }

                            if (sortedTAList[i].remain_hours <= 0)
                            {
                                sortedTAList.Remove(sortedTAList[i]);
                                if (i > 0 && i != sortedTAList.Count() - 1)
                                {
                                    i--;
                                }
                                else if (i == 0)
                                {
                                    i = 0;
                                }
                            }


                            courseList.Remove(courseList[j]);
                            if (j > 0 && i != courseList.Count() - 1)
                            {
                                j--;
                            }
                            else if (j == 0)
                            {
                                j = 0;
                            }
                        }
                    }
                }
            }
            //wish2
            for (int i = 0; i < sortedTAList.Count(); i++)
            {
                for (int j = 0; j < courseList.Count(); j++)
                {
                    if (courseList[j].id == sortedTAList[i].wish2)
                    {
                        // lw hours elcourse > hours el ta
                        if (courseList[j].remain_hours > sortedTAList[i].remain_hours)
                        {
                            if (courseList[j].course_hours != 0 && sortedTAList[i].remain_hours % courseList[j].course_hours != 0)
                            {
                                while (sortedTAList[i].remain_hours % courseList[j].course_hours != 0)
                                {
                                    sortedTAList[i].remain_hours++;
                                }
                            }
                            if (courseList[j].lab_hours != 0 && sortedTAList[i].remain_hours % courseList[j].lab_hours != 0)
                            {
                                while (sortedTAList[i].remain_hours % courseList[j].lab_hours != 0)
                                {
                                    sortedTAList[i].remain_hours++;
                                }
                            }

                            int x = sortedTAList[i].remain_hours;

                            //sortedTAList[i].remain_hours = courseList[j].remain_hours - x;
                            courseList[j].remain_hours = courseList[j].remain_hours - x;
                            taForCourse.Add(new TaForCourse(sortedTAList[i].id, courseList[j].id));
                            // insert record in linkDoctorCourse
                            if (x != 0)
                            {
                                LinkDoctorCourse link = new LinkDoctorCourse();
                                link.Course_id = courseList[j].id;
                                link.Doctor_id = sortedTAList[i].id;
                                link.hours     = x;
                                db.LinkDoctorCourses.Add(link);
                                db.SaveChanges();
                            }
                            // lw elta hours b2t zero aw 22l yshelo mn ellist
                            sortedTAList.Remove(sortedTAList[i]);
                            if (i > 0 && i != sortedTAList.Count() - 1)
                            {
                                i--;
                            }
                            else if (i == 0)
                            {
                                i = 0;
                            }

                            if (courseList[j].remain_hours <= 0)
                            {
                                courseList.Remove(courseList[j]);
                                if (j > 0 && j != courseList.Count() - 1)
                                {
                                    j--;
                                }
                                else if (j == 0)
                                {
                                    j = 0;
                                }
                            }
                            break;
                        }
                        // lw hours ellecture <= hours el ta
                        else
                        {
                            if (courseList[j].course_hours != 0 && sortedTAList[i].remain_hours % courseList[j].course_hours != 0)
                            {
                                while (sortedTAList[i].remain_hours % courseList[j].course_hours != 0)
                                {
                                    sortedTAList[i].remain_hours--;
                                }
                            }
                            if (courseList[j].lab_hours != 0 && sortedTAList[i].remain_hours % courseList[j].lab_hours != 0)
                            {
                                while (sortedTAList[i].remain_hours % courseList[j].lab_hours != 0)
                                {
                                    sortedTAList[i].remain_hours--;
                                }
                            }

                            int x = courseList[j].remain_hours;
                            sortedTAList[i].remain_hours = sortedTAList[i].remain_hours - courseList[j].remain_hours;
                            //  courseList[j].remain_hours = courseList[j].remain_hours - x;
                            taForCourse.Add(new TaForCourse(sortedTAList[i].id, courseList[j].id));
                            // insert record in linkDoctorCourse
                            if (x != 0)
                            {
                                LinkDoctorCourse link = new LinkDoctorCourse();
                                link.Course_id = courseList[j].id;
                                link.Doctor_id = sortedTAList[i].id;
                                link.hours     = x;
                                db.LinkDoctorCourses.Add(link);
                                db.SaveChanges();
                            }

                            if (sortedTAList[i].remain_hours <= 0)
                            {
                                sortedTAList.Remove(sortedTAList[i]);
                                if (i > 0 && i != sortedTAList.Count() - 1)
                                {
                                    i--;
                                }
                                else if (i == 0)
                                {
                                    i = 0;
                                }
                            }


                            courseList.Remove(courseList[j]);
                            if (j > 0 && i != courseList.Count() - 1)
                            {
                                j--;
                            }
                            else if (j == 0)
                            {
                                j = 0;
                            }
                        }
                    }
                }
            }
            // wish 3
            //for (int i = 0; i < sortedTAList.Count(); i++)
            //{

            //    for (int j = 0; j < courseList.Count(); j++)
            //    {
            //        if (courseList[j].id == sortedTAList[i].wish3)
            //        {
            //            if (courseList[j].remain_hours > sortedTAList[i].remain_hours)
            //            {
            //                if (courseList[j].course_hours != 0 && sortedTAList[i].remain_hours % courseList[j].course_hours != 0)
            //                {
            //                    while (sortedTAList[i].remain_hours % courseList[j].course_hours != 0)
            //                        sortedTAList[i].remain_hours++;
            //                }
            //                else if (courseList[j].lab_hours != 0 && sortedTAList[i].remain_hours % courseList[j].lab_hours != 0)
            //                {
            //                    while (sortedTAList[i].remain_hours % courseList[j].lab_hours != 0)
            //                        sortedTAList[i].remain_hours++;
            //                }

            //                int x = sortedTAList[i].remain_hours;
            //                sortedTAList[i].remain_hours = x - sortedTAList[i].remain_hours;
            //                taForCourse.Add(new TaForCourse(sortedTAList[i].id, courseList[j].id));
            //                // insert record in linkDoctorCourse
            //                LinkDoctorCourse link = new LinkDoctorCourse();
            //                link.Course_id = courseList[j].id;
            //                link.Doctor_id = sortedTAList[i].id;
            //                link.hours = x;
            //                db.LinkDoctorCourses.Add(link);
            //                db.SaveChanges();
            //                // lw elta hours b2t zero aw 22l yshelo mn ellist
            //                if (sortedTAList[i].remain_hours <= 0)
            //                {
            //                    sortedTAList.Remove(sortedTAList[i]);
            //                    if (i > 0)
            //                        i--;
            //                    else
            //                        i = 0;
            //                }
            //                courseList[j].remain_hours = courseList[j].remain_hours - x;
            //                if (courseList[j].remain_hours == 0)
            //                {
            //                    courseList.Remove(courseList[j]);
            //                    if (j > 0)
            //                        j--;
            //                    else
            //                        j = 0;
            //                }

            //                break;
            //            }
            //            else
            //            {
            //                int x = courseList[j].remain_hours;
            //                sortedTAList[i].remain_hours = courseList[j].remain_hours - sortedTAList[i].remain_hours;
            //                courseList[j].remain_hours = courseList[j].remain_hours - x;
            //                // insert record in linkDoctorCourse
            //                LinkDoctorCourse link = new LinkDoctorCourse();
            //                link.Course_id = courseList[j].id;
            //                link.Doctor_id = sortedTAList[i].id;
            //                link.hours = x;
            //                db.LinkDoctorCourses.Add(link);
            //                db.SaveChanges();

            //                if (sortedTAList[i].remain_hours <= 0)
            //                {
            //                    sortedTAList.Remove(sortedTAList[i]);
            //                    if (i > 0)
            //                        i--;
            //                    else
            //                        i = 0;
            //                }
            //                courseList[j].remain_hours = courseList[j].remain_hours - x;
            //                if (courseList[j].remain_hours == 0)
            //                {
            //                    courseList.Remove(courseList[j]);
            //                    if (j > 0)
            //                        j--;
            //                    else
            //                        j = 0;
            //                }

            //            }
            //        }
            //    }

            //}
            for (int i = 0; i < sortedTAList.Count(); i++)
            {
                for (int j = 0; j < courseList.Count(); j++)
                {
                    if (courseList[j].id == sortedTAList[i].wish3)
                    {
                        // lw hours elcourse > hours el ta
                        if (courseList[j].remain_hours > sortedTAList[i].remain_hours)
                        {
                            if (courseList[j].course_hours != 0 && sortedTAList[i].remain_hours % courseList[j].course_hours != 0)
                            {
                                while (sortedTAList[i].remain_hours % courseList[j].course_hours != 0)
                                {
                                    sortedTAList[i].remain_hours++;
                                }
                            }
                            if (courseList[j].lab_hours != 0 && sortedTAList[i].remain_hours % courseList[j].lab_hours != 0)
                            {
                                while (sortedTAList[i].remain_hours % courseList[j].lab_hours != 0)
                                {
                                    sortedTAList[i].remain_hours++;
                                }
                            }

                            int x = sortedTAList[i].remain_hours;

                            // sortedTAList[i].remain_hours = courseList[j].remain_hours - x;
                            courseList[j].remain_hours = courseList[j].remain_hours - x;
                            taForCourse.Add(new TaForCourse(sortedTAList[i].id, courseList[j].id));
                            // insert record in linkDoctorCourse
                            LinkDoctorCourse link = new LinkDoctorCourse();
                            link.Course_id = courseList[j].id;
                            link.Doctor_id = sortedTAList[i].id;
                            link.hours     = x;
                            db.LinkDoctorCourses.Add(link);
                            db.SaveChanges();
                            // lw elta hours b2t zero aw 22l yshelo mn ellist
                            sortedTAList.Remove(sortedTAList[i]);
                            if (i > 0 && i != sortedTAList.Count() - 1)
                            {
                                i--;
                            }
                            else if (i == 0)
                            {
                                i = 0;
                            }

                            if (courseList[j].remain_hours <= 0)
                            {
                                courseList.Remove(courseList[j]);
                                if (j > 0 && j != courseList.Count() - 1)
                                {
                                    j--;
                                }
                                else if (j == 0)
                                {
                                    j = 0;
                                }
                            }
                            break;
                        }
                        // lw hours ellecture <= hours el ta
                        else
                        {
                            if (courseList[j].course_hours != 0 && sortedTAList[i].remain_hours % courseList[j].course_hours != 0)
                            {
                                while (sortedTAList[i].remain_hours % courseList[j].course_hours != 0)
                                {
                                    sortedTAList[i].remain_hours--;
                                }
                            }
                            if (courseList[j].lab_hours != 0 && sortedTAList[i].remain_hours % courseList[j].lab_hours != 0)
                            {
                                while (sortedTAList[i].remain_hours % courseList[j].lab_hours != 0)
                                {
                                    sortedTAList[i].remain_hours--;
                                }
                            }

                            int x = courseList[j].remain_hours;
                            sortedTAList[i].remain_hours = sortedTAList[i].remain_hours - courseList[j].remain_hours;
                            courseList[j].remain_hours   = courseList[j].remain_hours - x;
                            taForCourse.Add(new TaForCourse(sortedTAList[i].id, courseList[j].id));
                            // insert record in linkDoctorCourse
                            if (x != 0)
                            {
                                LinkDoctorCourse link = new LinkDoctorCourse();
                                link.Course_id = courseList[j].id;
                                link.Doctor_id = sortedTAList[i].id;
                                link.hours     = x;
                                db.LinkDoctorCourses.Add(link);
                                db.SaveChanges();
                            }

                            if (sortedTAList[i].remain_hours <= 0)
                            {
                                sortedTAList.Remove(sortedTAList[i]);
                                if (i > 0 && i != sortedTAList.Count() - 1)
                                {
                                    i--;
                                }
                                else if (i == 0)
                                {
                                    i = 0;
                                }
                            }


                            courseList.Remove(courseList[j]);
                            if (j > 0 && i != courseList.Count() - 1)
                            {
                                j--;
                            }
                            else if (j == 0)
                            {
                                j = 0;
                            }
                        }
                    }
                }
            }
        }