public ActionResult DeleteConfirmed(int id)
        {
            Doctor_Available_Time doctor_Available_Time = db.Doctor_Available_Time.Find(id);

            db.Doctor_Available_Time.Remove(doctor_Available_Time);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
Exemple #2
0
        private static bool isConsistent(int roomid, Doctor_Available_Time doctor_Available_Time, List <Assignement> assignment, GroupModel GrpTable, List <string> doc_ids)
        {
            CollegeDatabaseEntities10 _db = new CollegeDatabaseEntities10();

            //var s = _db.lin
            // var num = _db.doctor_Available_Time.Course_id;
            foreach (var item in assignment)
            {
                for (int i = 0; i < doc_ids.Count; i++)
                {
                    if ((doctor_Available_Time.DayOfWeek == item.Day) && ((doctor_Available_Time.StartHour >= item.StartHour && doctor_Available_Time.StartHour < item.EndHour) ||
                                                                          (doctor_Available_Time.StartHour + doctor_Available_Time.Course.Hours > item.StartHour &&
                                                                           doctor_Available_Time.StartHour + doctor_Available_Time.Course.Hours <= item.EndHour) ||
                                                                          (item.StartHour >= doctor_Available_Time.StartHour && item.StartHour < doctor_Available_Time.StartHour + doctor_Available_Time.Course.Hours) ||
                                                                          (item.EndHour > doctor_Available_Time.StartHour && item.EndHour <= doctor_Available_Time.StartHour + doctor_Available_Time.Course.Hours)) &&
                        (item.RoomId == roomid || item.Doc_ids.Contains(doc_ids[i]) || GrpTable.GrpId == item.GrpId))
                    {
                        return(false);
                    }
                }
            }
            GrpTable.Week[doctor_Available_Time.DayOfWeek - 1].addinterval(doctor_Available_Time.Course.ID, roomid, doctor_Available_Time.StartHour,
                                                                           doctor_Available_Time.StartHour + doctor_Available_Time.Course.Hours);
            //CollegeDatabaseEntities2 _db = new CollegeDatabaseEntities2();

            //var adminConstraints = _db.AcademicYears.Where(x => x.ID == doctor_Available_Time.Course.AcademicYear_id).Single();
            if (GrpTable.FreeDaysCount() < 1)
            {
                GrpTable.Week[doctor_Available_Time.DayOfWeek - 1].Removeinterval(doctor_Available_Time.Course.ID);
                return(false);
            }


            /*if (GrpTable.Week[doctor_Available_Time.DayOfWeek - 1].NumfHours > doctor_Available_Time.Course.AcademicYear.DayWorkHours)
             * {
             *  GrpTable.Week[doctor_Available_Time.DayOfWeek - 1].Removeinterval(doctor_Available_Time.Course.ID);
             *  return false;
             * }*/

            var TempSecHours = _db.Courses.OrderBy(x => x.SectionHours).Select(x => x.SectionHours).Where(x => x.HasValue).Take(1).Single();/* Select(x=>x.SectionHours).Take(1).Last();*/
            var TempLabHours = _db.Courses.OrderBy(x => x.LabHours).Select(x => x.LabHours).Where(x => x.HasValue).Take(1).Single();


            if (GrpTable.Week[doctor_Available_Time.DayOfWeek - 1].Gap > doctor_Available_Time.Course.AcademicYear.AllowedGapHours)
            {
                var GapAfterSecs = GrpTable.Week[doctor_Available_Time.DayOfWeek - 1].Gap % TempSecHours;
                var GapAfterLabs = GrpTable.Week[doctor_Available_Time.DayOfWeek - 1].Gap % TempLabHours;
                if (GapAfterSecs > doctor_Available_Time.Course.AcademicYear.AllowedGapHours && GapAfterLabs > doctor_Available_Time.Course.AcademicYear.AllowedGapHours)
                {
                    GrpTable.Week[doctor_Available_Time.DayOfWeek - 1].Removeinterval(doctor_Available_Time.Course.ID);
                    return(false);
                }
            }
            return(true);
        }
        public ActionResult Delete(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Doctor_Available_Time doctor_Available_Time = db.Doctor_Available_Time.Find(id);

            if (doctor_Available_Time == null)
            {
                return(HttpNotFound());
            }
            return(View(doctor_Available_Time));
        }
        public ActionResult Index(List <Doctor_Available_Time> Doctor_Available_Time)
        {
            Doctor_Available_Time doctor_Available_Time = new Doctor_Available_Time();


            //var docId = (from c in db.AspNetUsers
            //             where
            //             c.Email == s
            //             select c.Id).Single();

            var docId = User.Identity.GetUserId();

            if (ModelState.IsValid) // m7tgen l dcotor id
            {
                foreach (var i in Doctor_Available_Time)
                {
                    if (i.DayOfWeek != 0)
                    {
                        db.Doctor_Available_Time.Add(i);
                    }
                }
                db.SaveChanges();
                // ModelState.Clear();

                Doctor_Available_Time = new List <Doctor_Available_Time>();
                for (int i = 0; i < 98; i++)
                {
                    Doctor_Available_Time.Add(new Doctor_Available_Time {
                        ID = 0, Course_id = 0, StartHour = 0, DayOfWeek = 0
                    });
                }
            }
            var courses = (from c in db.Courses
                           join doc in db.LinkDoctorCourses on c.ID equals doc.Course_id
                           where doc.Doctor_id == docId
                           select c).ToList();

            //   ViewBag.Doctor_Id = new SelectList(db.AspNetUsers, "Id", "Email", doctor_Available_Time.Doctor_Id);
            ViewBag.Doctor_Id   = new SelectList(db.AspNetUsers, "Id", "Email");
            ViewBag.Course_id   = new SelectList(courses, "ID", "Name");
            ViewBag.course_hour = db.Courses.OrderBy(x => x.ID).Select(x => x.Hours).ToArray();
            ViewBag.course_name = db.Courses.OrderBy(x => x.ID).Select(x => x.Name).ToArray();

            ViewBag.course__id = db.Courses.OrderBy(x => x.ID).Select(x => x.ID).ToArray();
            return(View(Doctor_Available_Time));
        }
Exemple #5
0
        private static bool isConsistentForDepts(int roomid, Doctor_Available_Time doctor_Available_Time, List <Assignement> assignment, List <GroupModel> GrpTable, List <Group> allGrps, List <string> doc_ids)
        {
            CollegeDatabaseEntities10 _db = new CollegeDatabaseEntities10();

            //var s = _db.lin
            // var num = _db.doctor_Available_Time.Course_id;
            foreach (var item in assignment)
            {
                /*if ((doctor_Available_Time.DayOfWeek == item.Day) && (doctor_Available_Time.StartHour >= item.StartHour || doctor_Available_Time.StartHour <= item.EndHour) && item.RoomId == roomid)
                 * {
                 *  return false;
                 *
                 * }*/
                for (int j = 0; j < allGrps.Count; j++)
                {
                    for (int i = 0; i < doc_ids.Count; i++)
                    {
                        if ((doctor_Available_Time.DayOfWeek == item.Day) && ((doctor_Available_Time.StartHour >= item.StartHour && doctor_Available_Time.StartHour < item.EndHour) ||
                                                                              (doctor_Available_Time.StartHour + doctor_Available_Time.Course.Hours > item.StartHour &&
                                                                               doctor_Available_Time.StartHour + doctor_Available_Time.Course.Hours <= item.EndHour) ||
                                                                              (item.StartHour >= doctor_Available_Time.StartHour && item.StartHour < doctor_Available_Time.StartHour + doctor_Available_Time.Course.Hours) ||
                                                                              (item.EndHour > doctor_Available_Time.StartHour && item.EndHour <= doctor_Available_Time.StartHour + doctor_Available_Time.Course.Hours)) &&
                            (item.RoomId == roomid || item.Doc_ids.Contains(doc_ids[i]) || allGrps[j].ID == item.GrpId))
                        {
                            return(false);
                        }
                    }
                }
            }

            List <GroupModel> grps = new List <GroupModel>();

            for (int i = 0; i < allGrps.Count; i++)
            {
                GrpTable.Where(x => x.GrpId == allGrps[i].ID).Single().Week[doctor_Available_Time.DayOfWeek - 1].addinterval(doctor_Available_Time.Course.ID, roomid,
                                                                                                                             doctor_Available_Time.StartHour, doctor_Available_Time.StartHour + doctor_Available_Time.Course.Hours);

                grps.Add(GrpTable.Where(x => x.GrpId == allGrps[i].ID).Single());
                //
            }

            for (int j = 0; j < grps.Count; j++)
            {
                if (grps[j].FreeDaysCount() < 1)
                {
                    foreach (var item in grps)
                    {
                        GrpTable.Where(x => x.GrpId == item.GrpId).Single().Week[doctor_Available_Time.DayOfWeek - 1].Removeinterval(doctor_Available_Time.Course.ID);
                    }
                    return(false);
                }


                if (grps[j].Week[doctor_Available_Time.DayOfWeek - 1].NumfHours > doctor_Available_Time.Course.AcademicYear.DayWorkHours)
                {
                    foreach (var item in grps)
                    {
                        GrpTable.Where(x => x.GrpId == item.GrpId).Single().Week[doctor_Available_Time.DayOfWeek - 1].Removeinterval(doctor_Available_Time.Course.ID);
                    }
                    return(false);
                }

                var TempSecHours = _db.Courses.OrderBy(x => x.SectionHours).Select(x => x.SectionHours).Take(1).Single();/* Select(x=>x.SectionHours).Take(1).Last();*/
                var TempLabHours = _db.Courses.OrderBy(x => x.LabHours).Select(x => x.LabHours).Take(1).Single();


                if (grps[j].Week[doctor_Available_Time.DayOfWeek - 1].Gap > doctor_Available_Time.Course.AcademicYear.AllowedGapHours)
                {
                    var GapAfterSecs = grps[j].Week[doctor_Available_Time.DayOfWeek - 1].Gap % TempSecHours;
                    var GapAfterLabs = grps[j].Week[doctor_Available_Time.DayOfWeek - 1].Gap % TempLabHours;
                    if (GapAfterSecs > doctor_Available_Time.Course.AcademicYear.AllowedGapHours && GapAfterLabs > doctor_Available_Time.Course.AcademicYear.AllowedGapHours)
                    {
                        foreach (var item in grps)
                        {
                            GrpTable.Where(x => x.GrpId == item.GrpId).Single().Week[doctor_Available_Time.DayOfWeek - 1].Removeinterval(doctor_Available_Time.Course.ID);
                        }

                        return(false);
                    }
                }
            }
            return(true);
        }