コード例 #1
0
        public List <schedulingDTO> GetShibutsForParents(string id)
        {
            List <scheduling> parentsList = perentsDAL.GetShibutsForParents(id);

            if (parentsList == null)
            {
                return(new List <schedulingDTO>());
            }
            List <schedulingDTO> parentsDTOList = new List <schedulingDTO>();

            parentsList.ForEach(x =>
            {
                schedulingDTO s = new schedulingDTO();
                s.code          = x.code;
                s.code_class    = x.code_class;
                s.hour_         = x.hour_;
                s.hour_enter    = x.hour_enter;
                s.hour_exit     = x.hour_exit;
                s.hour_reach    = x.hour_reach;
                s.id_student    = x.id_student;
                var v           = new PARENTSEntities();
                s.nameStudent   = v.studens.Where(o => o.id == s.id_student).Select(r => r.first_name + " " + r.last_name).FirstOrDefault();
                parentsDTOList.Add(s);
            });
            return(parentsDTOList);
        }
コード例 #2
0
        public List <schedulingDTO> Get_parents_that_wait_to_class(int id)
        {
            var v = new PARENTSEntities();
            List <scheduling> schedulingList = schedulingDAL.GetParentsThatWaitToClass(id);

            if (schedulingList == null)
            {
                return(new List <schedulingDTO>());
            }
            List <schedulingDTO> schedulingDTOList = new List <schedulingDTO>();

            schedulingList.ForEach(x =>
            {
                perentsBL p     = new perentsBL();
                parents parents = new parents();
                schedulingDTO s = new schedulingDTO();
                parents         = p.GetParentByIdStudent(x.id_student);
                s.code          = x.code;
                s.code_class    = x.code_class;
                s.hour_         = x.hour_;
                s.hour_enter    = x.hour_enter;
                s.hour_exit     = x.hour_exit;
                s.disableEnter  = false;
                s.disableExit   = false;
                s.nameMother    = parents.first_name + " " + parents.last_name;
                s.idMother      = parents.id;
                s.hour_reach    = x.hour_reach;
                s.id_student    = x.id_student;
                schedulingDTOList.Add(s);
            });
            return(schedulingDTOList);
        }
コード例 #3
0
        //עדכון כניסה
        public List <schedulingDTO> updateEnter(string id)
        {
            var context = new PARENTSEntities();
            List <scheduling> schedulingList = schedulingDAL.updateEnter(id);;

            if (schedulingList == null)
            {
                return(new List <schedulingDTO>());
            }
            List <schedulingDTO> schedulingListDTO = new List <schedulingDTO>();

            schedulingList.ForEach(x =>
            {
                schedulingDTO s = new schedulingDTO();
                s.code          = x.code;
                s.code_class    = x.code_class;
                s.hour_         = x.hour_;
                s.id_student    = x.id_student;
                s.hour_enter    = x.hour_enter;
                s.nameMother    = context.parents.Where(p => p.id == id).Select(o => o.first_name + " " + o.last_name).FirstOrDefault();
                s.disableExit   = false;
                s.hour_exit     = x.hour_exit;
                s.hour_reach    = x.hour_reach;
                schedulingListDTO.Add(s);
            });
            foreach (var item in schedulingListDTO)
            {
                if (item.id_student == id)
                {
                    item.disableEnter = true;
                }
            }

            return(schedulingListDTO);
        }
コード例 #4
0
        //פונקצית החלפת שיבוץ לשעה אחרת באם מתאפשר
        //מחזירה אמת אם החליפה ושקר אם לא
        private bool Replace(List <scheduling> l, scheduling sc, TimeSpan t)
        {
            var            context = new PARENTSEntities();
            scheduling     scd     = l.Where(ss => ss.code_class == sc.code_class && ss.hour_.Equals(t)).FirstOrDefault();
            List <studens> sis     = new List <studens>();
            List <studens> lst_sis = allStudents
                                     .Where(a => a.id_parent == scd.studens.id_parent).ToList();
            //שיבוצים של האחיות
            List <scheduling> lstSis = new List <scheduling>();

            foreach (studens item in lst_sis)
            {
                scheduling scd1 = lstscheduling
                                  .Where(u => u.id_student == item.id)
                                  .FirstOrDefault();
                if (scd1 != null)
                {
                    lstSis.Add(scd1);
                }
            }
            //אם אף אחות לא משובצת בשעה המבוקשת להחלפה
            if (lstSis.Where(ssc => ssc.hour_.Equals(sc.hour_)).FirstOrDefault() == null)
            {
                //ביצוע החלפה בפועל והחזרת ערך אמת
                scd.hour_ = sc.hour_;
                sc.hour_  = t;
                return(true);
            }
            return(false);
        }
コード例 #5
0
        //מחזירה רשימה של הכתות של הבנות
        public static List <classes> get_classes(string id)
        {
            var PARENTSEntities1 = new PARENTSEntities();
            //שליפת ילדים
            List <studens> s = PARENTSEntities1.studens.Where(ss => ss.id_parent == id).ToList();
            List <classes> c = new List <classes>();

            foreach (studens item in s)
            {
                c.Add(PARENTSEntities1.classes.Where(o => o.code == item.code_class).FirstOrDefault());
            }

            return(c);
        }
コード例 #6
0
        //מקבלת רשימת כיתות
        //מחזירה את הכיתה עם התור הקצר ביותר
        public static classes getShortClass(List <classes> list)
        {
            var parents = new PARENTSEntities();
            int min = 100000, i_min = 0;

            foreach (classes item in list)
            {
                int v = parents.scheduling.Where(x => x.hour_reach != null &&
                                                 x.hour_exit == null && x.code_class == item.code).Count();
                if (v < min)
                {
                    i_min = list.IndexOf(item);
                    min   = v;
                }
            }

            return(list[i_min]);
        }
コード例 #7
0
        // בלחיצה על כפתור שבץ יופעל פונקציה של השיבוצים השונים ותגדיר רשימה של שיבוצים והפונקציה תפעיל על כל שיבוץ ברשימה פונקצית הערכה ותבחר את השיבוץ הטוב ביותר ואותו תשמור בפונקצית השיבוצים
        //ברגע שהאמא הגיע הוא בודק מה התור הקרוב ביותר ומעדכן את השיבוץ של הכיתות השונות
        //לשקול בהמשך אם כדאי להוסיף פונקציה לשיפור של שיבוץ קיים



        //פונקצית זמן אמת מקבלת קוד הורה ןבודקת האם כדאי לשנות את התור
        public schedulingDTO FuncRealTime(string id)
        {
            List <scheduling> s      = new List <scheduling>();
            schedulingDTO     sn     = new schedulingDTO();
            List <classes>    c      = new List <classes>();
            classes           shortQ = new classes();
            var p = new PARENTSEntities();

            //שליפה ל כל השיבוצים של הבנות שהאמא עדיין לא נכנסה ומיון לפי שעה
            s = p.scheduling.Where(x => x.studens.id_parent == id && x.hour_exit == null)
                .OrderBy(f => f.hour_).ToList();
            c = get_classes(id);
            //אם להורה יש יותר מילד אחד יש לבדוק באיזה כיתה התור קצר יותר ואם צריך להחליף
            if (s.Count() > 1)
            {
                for (int i = 0; i < s.Count; i++)
                {
                    //עדכון שעת הגעה
                    if (s[i].hour_reach == null)
                    {
                        s[i].hour_reach = DateTime.Now.TimeOfDay;
                    }
                    schedulingDAL.UpdateScheduling(s[i]);
                }

                shortQ = getShortClass(c);

                if (s[0].code_class != shortQ.code)
                {
                    scheduling        n = new scheduling();
                    List <scheduling> l = new List <scheduling>();
                    n = s.Where(f => f.code_class == shortQ.code).FirstOrDefault();
                    //תור ההורים שהגיעו ממוין לפי שעות
                    l = p.scheduling.Where(x => x.hour_reach != null && x.hour_enter == null &&
                                           x.studens.code_class == shortQ.code).OrderBy(v => v.hour_).ToList();
                    //אם הגיע ראשון
                    if (l.Count == 1)
                    {
                        sn.idMother    = id;
                        sn.nameMother  = s.First().studens.parents.first_name;
                        sn.code_class  = shortQ.code;
                        sn.nameStudent = s.First().studens.first_name + " " + s.First().studens.last_name;
                        sn.class_      = shortQ.class_ + " " + shortQ.num_class;
                        return(sn);
                    }
                    //בדיקה האם הגיעה השעה בכיתה אחרת

                    foreach (scheduling item in s)
                    {
                        if (item.hour_.Hours == DateTime.Now.Hour && item.hour_.Minutes == DateTime.Now.Minute)
                        {
                            if (l.Count == 1)
                            {
                                var     f    = new PARENTSEntities();
                                classes clas = f.classes.Where(j => j.code == item.code_class).FirstOrDefault();
                                sn.nameMother  = s.First().studens.parents.first_name;
                                sn.idMother    = id;
                                sn.code_class  = item.code_class;
                                sn.nameStudent = s.First().studens.first_name + " " + s.First().studens.last_name;
                                sn.class_      = clas.class_ + " " + clas.num_class;
                                return(sn);
                            }
                        }
                    }
                    scheduling b = l.Where(u => u.hour_ == l.Max(t => t.hour_)).First();
                    TimeSpan   a = new TimeSpan(b.hour_.Hours, b.hour_.Minutes + 10, 00);
                    n.hour_ = a;
                    schedulingDAL.UpdateScheduling(n);
                    sn.hour_       = n.hour_;
                    sn.nameStudent = s.First().studens.first_name + " " + s.First().studens.last_name;
                    sn.class_      = shortQ.class_ + " " + shortQ.num_class;
                    return(sn);
                }
            }
            else
            {
                //עדכון שעת הגעה לשעה הנוכחית אם יש ילד אחד להורה
                if (s.First().hour_reach == null)
                {
                    s.First().hour_reach = DateTime.Now.TimeOfDay;
                }
                schedulingDAL.UpdateScheduling(s.First());
                sn.nameMother  = s.First().studens.parents.first_name;
                sn.idMother    = id;
                sn.nameStudent = s.First().studens.first_name + " " + s.First().studens.last_name;
                sn.class_      = c.First().class_ + " " + c.First().num_class;
                return(sn);
            }

            return(sn);
        }
コード例 #8
0
        public Boolean ShibutzAndMark(int idMosad)
        {
            var context = new PARENTSEntities();

            allStudents  = context.studens.ToList();
            allTimes     = context.times.ToList();
            allParents   = context.parents.ToList();
            allClasses   = context.classes.ToList();
            allRquest    = context.request.ToList();
            this.idMosad = idMosad;
            lst_studens  = SortByClasses(allStudents.Where(o => o.parents.code_instation == idMosad).ToList());
            func_shibutz();
            all_sceduling.Add(lstscheduling);
            lstscheduling = new List <scheduling>();
            lst_studens   = SortByName(allStudents.Where(o => o.parents.code_instation == idMosad).ToList());
            func_shibutz();
            all_sceduling.Add(lstscheduling);
            lstscheduling = new List <scheduling>();
            lst_studens   = SortByNumGirles(allStudents.Where(o => o.parents.code_instation == idMosad).ToList());
            func_shibutz();
            all_sceduling.Add(lstscheduling);
            lstscheduling = new List <scheduling>();
            lst_studens   = SortByNameDesc(allStudents.Where(o => o.parents.code_instation == idMosad).ToList());
            func_shibutz();
            all_sceduling.Add(lstscheduling);
            lstscheduling = new List <scheduling>();
            lst_studens   = SortByLastName(allStudents.Where(o => o.parents.code_instation == idMosad).ToList());
            func_shibutz();
            all_sceduling.Add(lstscheduling);
            lstscheduling = new List <scheduling>();
            lst_studens   = SortByLastNameDesc(allStudents.Where(o => o.parents.code_instation == idMosad).ToList());
            func_shibutz();
            all_sceduling.Add(lstscheduling);
            lstscheduling = new List <scheduling>();
            lst_studens   = SortByidParentDesc(allStudents.Where(o => o.parents.code_instation == idMosad).ToList());
            func_shibutz();
            all_sceduling.Add(lstscheduling);
            //lstscheduling = new List<scheduling>();
            //lst_studens = SortByhour(studensDAL.GetStudentsByCodeInstation(idMosad));
            //func_shibutz();
            //all_sceduling.Add(lstscheduling);
            lstscheduling = new List <scheduling>();
            lst_studens   = SortByidParent(allStudents.Where(o => o.parents.code_instation == idMosad).ToList());
            func_shibutz();
            all_sceduling.Add(lstscheduling);
            //lstscheduling = new List<scheduling>();
            //lst_studens = SortByEmail(studensDAL.GetStudentsByCodeInstation(idMosad));
            //func_shibutz();
            //all_sceduling.Add(lstscheduling);
            double x, max = 0;
            int    imax = 0;

            //הלולאה תעבוד עד שהציון הגבוה יהיה מעל 80
            while (max < 90)
            {
                //חיפוש השיבוץ הטוב ביותר
                for (int i = 0; i < all_sceduling.Count; i++)
                {
                    x = mark(all_sceduling[i]);
                    if (x > max)
                    {
                        max  = x;
                        imax = i;
                    }
                }
                shipur(all_sceduling[imax]); //שיפור של הטוב ביותר
                shipur(all_sceduling[0]);    //שיפור של איבר קבוע שוב ושוב
                Random rnd = new Random();
                int    p   = rnd.Next(all_sceduling.Count);
                shipur(all_sceduling[p]);//שיפור של איבר אקראי
            }
            //אחרי שהגענו למיון מ 80 ומעלה - עדכון במסד הנתונים
            foreach (scheduling item in all_sceduling[imax])
            {
                schedulingDAL.AddScheduling(item);
            }

            return(true);
        }