Esempio n. 1
0
        public static PAZController GetInstance()
        {
            if (PAZController._controller == null)
            {
                PAZController._controller = new PAZController();
            }

            return(PAZController._controller);
        }
Esempio n. 2
0
        public LetterWindow(List<SessionRow> sessions, LetterTemplate letterTemplate)
        {
            InitializeComponent();

            tbKenmerk.Text = letterTemplate.Kenmerk;
            tbContactpersonen.Text = letterTemplate.Contactpersonen;
            tbTelefoon.Text = letterTemplate.Telefoon;
            tbEmail.Text = letterTemplate.Email;
            tbAvansAdres.Text = letterTemplate.AvansAdres;
            tbAvansLocatie.Text = letterTemplate.AvansLocatie;
            tbBeginKern.Text = letterTemplate.BeginKern;
            tbReisInformatie.Text = letterTemplate.ReisInformatie;
            tbVerdereInformatie.Text = letterTemplate.VerdereInformatie;
            tbAfzenders.Text = letterTemplate.Afzenders;
            tbBijlagen.Text = letterTemplate.Bijlagen;
            tbVoettekstLinks.Text = letterTemplate.VoettekstLinks;
            tbVoettekstMidden.Text = letterTemplate.VoettekstCenter;
            tbVoettekstRechts.Text = letterTemplate.VoettekstRechts;

            _experts = new List<Expert>();
            _receivers = new Dictionary<int, Expert>();
            _sessions = sessions;

            // Note: Dit ziet er misschien klote uit, maar een List.Contains check schijnt niet te werken(mogelijk zijn er dubbele expert objecten?)
            Dictionary<int, Expert> experts = new Dictionary<int, Expert>();

            foreach (SessionRow session in sessions)
            {
                Session sessionModel = session.GetSessionModel();

                foreach (KeyValuePair<int, Expert> keyValuePair in sessionModel.Experts)
                {
                    if(!experts.ContainsKey(keyValuePair.Key))
                        experts.Add(keyValuePair.Key, keyValuePair.Value);
                }
            }

            // En nu weer naar een List omdat Dictionary faalt en niet kan sorten
            foreach (KeyValuePair<int, Expert> keyValuePair in experts)
                _experts.Add(keyValuePair.Value);

            _experts.Sort();

            ExpertsToevoegen();

            _controller = PAZController.GetInstance();
            _ini = _controller.IniReader;
            _letterTemplate = letterTemplate;

            btnSave.IsEnabled = false;
        }
Esempio n. 3
0
        public EmailWindow(List<SessionRow> sessions, EmailTemplate emailTemplate)
        {
            InitializeComponent();

            tbAfzender.Text = emailTemplate.Displayname;
            tbInleiding.Text = emailTemplate.Inleiding;
            tbInformatie.Text = emailTemplate.Informatie;
            tbAfsluiting.Text = emailTemplate.Afsluiting;
            tbAfzenders.Text = emailTemplate.Afzenders;

            _teachers = new List<Teacher>();
            _students = new List<Student>();
            _receivers = new List<User>();
            _sessions = sessions;

            // Note: Dit ziet er misschien klote uit, maar een List.Contains check schijnt niet te werken(mogelijk zijn er dubbele teacher objecten?)
            Dictionary<int, Teacher> teachers = new Dictionary<int, Teacher>();

            foreach (SessionRow session in sessions)
            {
                Session sessionModel = session.GetSessionModel();

                foreach(KeyValuePair<int, Teacher> keyValuePair in sessionModel.Teachers)
                    if (!teachers.ContainsKey(keyValuePair.Key))
                        teachers.Add(keyValuePair.Key, keyValuePair.Value);

                _students.Add(sessionModel.Pair.Student1);
                _students.Add(sessionModel.Pair.Student2);
            }

            // En nu weer naar een List omdat Dictionary faalt en niet kan sorten
            foreach (KeyValuePair<int, Teacher> keyValuePair in teachers)
                _teachers.Add(keyValuePair.Value);

            _students.Sort();
            _teachers.Sort();

            StudentenToevoegen();
            DocentenToevoegen();

            _controller = PAZController.GetInstance();
            _ini = _controller.IniReader;
            _emailTemplate = emailTemplate;

            btnSave.IsEnabled = false;
        }
Esempio n. 4
0
        public KoppelWindow()
        {
            InitializeComponent();

            _controller = PAZController.GetInstance();

            btnSave.IsEnabled = false;

            _pairs = _controller.PairMapper.FindAll();
            _students = _controller.StudentMapper.FindAll();
            _teachers = _controller.TeacherMapper.FindAll();
            _experts = _controller.ExpertMapper.FindAll();

            fillPairs();
            fillStudents();
            fillTeachers();
            fillExperts();
        }
Esempio n. 5
0
        // TO DO: Voor teun, functionaliteit please :)
        public bool VerwijderGegevensBevestigingClicked(List <object> deleteList)
        {
            foreach (object dataItem in deleteList)
            {
                int id;

                if (dataItem is User)
                {
                    id = ((User)dataItem).Id;
                    PAZController.GetInstance().UserMapper.Delete(id);
                }
                else
                {
                    id = ((Classroom)dataItem).Id;
                    PAZController.GetInstance().ClassroomMapper.Delete(id);
                }
            }

            return(true);
        }
Esempio n. 6
0
        public DeleteDataWindow()
        {
            InitializeComponent();

            _controller = PAZController.GetInstance();

            _users = _controller.UserMapper.FindAll();
            _deleteList = new List<object>();

            List<User> _admins = new List<User>();
            foreach (User user in _users)
            {
                if (user.User_type == "admin")
                    _admins.Add(user);
            }

            // Dit moet wel zo, omdat de admins niet direct in de users list kunnen worden verwijderd tijdens een loop
            foreach (User admin in _admins)
                _users.Remove(admin);

            _users.Sort();

            PersonenToevoegen();
        }
Esempio n. 7
0
        public SessionWindow(Session session)
        {
            InitializeComponent();
            _controller = PAZController.GetInstance();
            List<Pair> pairs = _controller.PairMapper.FindAll();
            foreach (Pair pair in pairs)
            {
                cbPairs.Items.Add(pair.ID + ", " + pair.ToString());

            }

            foreach (Teacher teacher in _controller.TeacherMapper.FindAll())
            {
                cbTeacher1.Items.Add(teacher.Id + ", " + teacher.ToString());
                cbTeacher2.Items.Add(teacher.Id + ", " + teacher.ToString());

            }

            foreach (Expert expert in _controller.ExpertMapper.FindAll())
            {
                cbExpert1.Items.Add(expert.Id + ", " + expert.ToString());
                cbExpert2.Items.Add(expert.Id + ", " + expert.ToString());

            }
            List<string> teachers = new List<string>();
            List<string> experts = new List<string>();
            foreach (User user in session.Pair.Attachments)
            {
                if (user.User_type == "teacher")
                {
                    Teacher t = _controller.TeacherMapper.Find(user.Id);
                    teachers.Add(t.Id + ", " + t.ToString());
                }
                else if (user.User_type == "expert")
                {
                    Expert t = _controller.ExpertMapper.Find(user.Id);
                    experts.Add(t.Id + ", " + t.ToString());
                }
            }

            ids[0] = session.Pair.ID;
            string[] temp;

            cbPairs.SelectedIndex = cbPairs.Items.IndexOf(session.Pair.ID  + ", " + session.Pair.ToString());
            if (teachers.Count > 0)
            {
                cbTeacher1.SelectedIndex = cbTeacher1.Items.IndexOf(teachers[0]);
                cbTeacher2.SelectedIndex = cbTeacher2.Items.IndexOf(teachers[1]);
                temp = teachers[0].Split(',');
                ids[1] = Convert.ToInt32(temp[0]);
                temp = teachers[1].Split(',');
                ids[2] = Convert.ToInt32(temp[0]);
            }
            if (experts.Count > 0)
            {
                cbExpert1.SelectedIndex = cbExpert1.Items.IndexOf(experts[0]);
                cbExpert2.SelectedIndex = cbExpert2.Items.IndexOf(experts[1]);
                temp = experts[0].Split(',');
                ids[3] = Convert.ToInt32(temp[0]);
                temp = experts[1].Split(',');
                ids[4] = Convert.ToInt32(temp[0]);
            }
        }
Esempio n. 8
0
        public void createCalendar(Ini.IniFile ini, List<Classroom> classrooms, PAZController controller)
        {
            _controller = controller;
            DateTime startDate = DateTime.Parse(ini["DATES"]["startdate"]);
            DateTime stopDate = DateTime.Parse(ini["DATES"]["enddate"]);
            Brush headerColor = Brushes.LightGray;
            int interval = 1;
            int rows = 0;

            //Firste column color rec
            Rectangle recC = new Rectangle();
            recC.Fill = headerColor;
            Grid.SetColumn(recC, 0);
            Grid.SetRow(recC, 0);
            Children.Add(recC);

            //Defining rowdef & row height
            RowDefinition row = new RowDefinition();
            GridLength height = new GridLength(140);

            for (DateTime dateTime = startDate; dateTime <= stopDate; dateTime += TimeSpan.FromDays(interval))
            {
                if (dateTime.DayOfWeek != DayOfWeek.Sunday && dateTime.DayOfWeek != DayOfWeek.Saturday)
                {
                    //Adding color
                    Rectangle rec = new Rectangle();
                    rec.Fill = headerColor;
                    Grid.SetColumn(rec, 0);
                    Grid.SetRow(rec, rows);
                    Grid.SetColumnSpan(rec, classrooms.Count + 1);
                    Children.Add(rec);
                    //Add labels
                    for (int c = 0; c < classrooms.Count + 1; c++)
                    {
                        if (ColumnDefinitions.Count != classrooms.Count + 1)
                        {
                            //making columns
                            ColumnDefinition column = new ColumnDefinition();
                            GridLength width;
                            if (c == 0)
                                width = new GridLength(75);
                            else
                                width = new GridLength(120);
                            column.Width = width;
                            ColumnDefinitions.Add(column);
                        }
                        //making labels
                        Label header = new Label();
                        if (c == 0)
                            header.Content = dateTime.ToString("dddd",
                      new CultureInfo("nl-NL")) + "\n" + dateTime.ToShortDateString();
                        else
                            header.Content = classrooms[c - 1].Room_number;
                        header.VerticalContentAlignment = System.Windows.VerticalAlignment.Center;
                        header.HorizontalContentAlignment = System.Windows.HorizontalAlignment.Center;
                        Grid.SetColumn(header, c);
                        Grid.SetRow(header, rows);
                        Children.Add(header);
                    }

                    List<Timeslot> timeslots = controller.Timeslots;

                    //Making rows
                    for (int block = 0; block < timeslots.Count ; ++block)
                    {
                        row = new RowDefinition();
                        //blok 0 = row for headers(classrooms,date)
                        if (block == 0)
                            row.Height = new GridLength(60);
                        else
                            row.Height = height;
                        RowDefinitions.Add(row);
                        rows++;

                        Label blk = new Label();
                        blk.Content = timeslots[block].Time;
                        blk.VerticalContentAlignment = System.Windows.VerticalAlignment.Center;
                        blk.HorizontalContentAlignment = System.Windows.HorizontalAlignment.Center;
                        Grid.SetColumn(blk, 0);
                        Grid.SetRow(blk, rows);
                        Children.Add(blk);
                    }

                    //Maken dateGrids
                    Grid dateGrid = new Grid();
                    for (int i = 0; i < ColumnDefinitions.Count - 1; i++)
                    {
                        ColumnDefinition column = new ColumnDefinition();
                        GridLength width = new GridLength(120);
                        column.Width = width;
                        dateGrid.ColumnDefinitions.Add(column);
                    }
                    for (int i = 0; i < 4; i++)
                    {
                        row = new RowDefinition();
                        row.Height = height;
                        dateGrid.RowDefinitions.Add(row);
                    }

                    for (int j = 0; j < 4; j++)
                    {
                        for (int i = 0; i < dateGrid.ColumnDefinitions.Count; i++)
                        {
                            CustomLabel emptySession = new CustomLabel();
                            Grid.SetColumn(emptySession, i);
                            Grid.SetRow(emptySession, j);
                            emptySession.AllowDrop = true;
                            emptySession.Drop += new DragEventHandler(Session_Drop);
                            dateGrid.Children.Add(emptySession);
                        }
                    }
                    Grid.SetColumn(dateGrid, 1);
                    Grid.SetColumnSpan(dateGrid, dateGrid.ColumnDefinitions.Count);
                    Grid.SetRow(dateGrid, rows - 3);
                    Grid.SetRowSpan(dateGrid, dateGrid.RowDefinitions.Count);
                    dateGrid.ShowGridLines = true;
                    dateGrids.Add(dateTime.ToShortDateString(), dateGrid);
                    Children.Add(dateGrid);

                    //row block 4
                    row = new RowDefinition();
                    row.Height = height;
                    RowDefinitions.Add(row);
                    rows++;
                }
            }
            //set first column color over all rows
            Grid.SetRowSpan(recC, rows);
        }
Esempio n. 9
0
        public Planning Plan(List <Pair> pairs)
        {
            IniFile  ini       = PAZController.GetInstance().IniReader;
            int      max_tries = Int32.Parse(ini["AUTOPLANNERSETTINGS"]["max_tries"]);
            Random   r         = new Random();
            Planning result    = new Planning();

            List <Classroom> classrooms = PAZController.GetInstance().ClassroomMapper.FindAll();
            List <Daytime>   daytimes   = PAZController.GetInstance().DaytimeMapper.FindAll();
            Dictionary <Daytime, List <Classroom> > available        = new Dictionary <Daytime, List <Classroom> >();
            Dictionary <Daytime, List <Expert> >    availableExperts = new Dictionary <Daytime, List <Expert> >();

            List <Expert> allExperts = PAZController.GetInstance().ExpertMapper.FindAll();

            foreach (Daytime daytime in daytimes)
            {
                available.Add(daytime, new List <Classroom>(classrooms));//Clone :)
                List <Expert> expertsToAdd = new List <Expert>();
                foreach (Expert expert in allExperts)
                {
                    bool add = true;
                    foreach (Blocked_timeslot bs in expert.BlockedTimeslots)
                    {
                        if (bs.Hardblock && bs.Daytime_id == daytime.Id)
                        {
                            add = false;
                            break;
                        }
                    }
                    if (add)
                    {
                        expertsToAdd.Add(expert);
                    }
                }
                availableExperts.Add(daytime, expertsToAdd);
            }

            foreach (Pair pair in pairs)
            {
                Session session = new Session();
                session.Pair = pair;
                int daytimeI = r.Next(0, available.Count);
                int tries    = 0;
                while (session.Pair.ScoreAt(available.ElementAt(daytimeI).Key) == -1 && available.ElementAt(daytimeI).Value.Count < 1 && tries < max_tries)
                {
                    daytimeI = r.Next(0, available.Count);
                    ++tries;
                }
                session.Daytime = available.ElementAt(daytimeI).Key;

                int classRoomI = r.Next(0, available.ElementAt(daytimeI).Value.Count);
                session.Classroom = available.ElementAt(daytimeI).Value.ElementAt(classRoomI);
                available[session.Daytime].RemoveAt(classRoomI);

                if (!session.Pair.HasExpert())
                {
                    List <Expert> availableThisSlot = availableExperts.ElementAt(daytimeI).Value;
                    if (availableThisSlot.Count > 1)
                    {
                        session.Pair.Attachments.Add(availableThisSlot.ElementAt(0));
                        availableThisSlot.RemoveAt(0);
                        session.Pair.Attachments.Add(availableThisSlot.ElementAt(0));
                        availableThisSlot.RemoveAt(0);
                        PAZController.GetInstance().PairMapper.Save(session.Pair);
                    }
                }

                result.Sessions.Add(session);
            }
            if (result.GetScore() == -1)
            {
                return(this.Plan(pairs));
            }
            return(result);
        }
Esempio n. 10
0
        public MainWindow()
        {
            InitializeComponent();

            _controller = PAZController.GetInstance();
            _controller.Init(this);

            textBoxDeadlineStart.Text = _controller.IniReader["DATES"]["startdate"];
            textBoxDeadlineEind.Text = _controller.IniReader["DATES"]["enddate"];

            List<Session> tempSessions = _controller.SessionMapper.FindAll();
            _master = new List<SessionRow>();
            foreach (Session s in tempSessions)
            {
                _master.Add(new SessionRow(s));
            }

            _teachers = _controller.TeacherMapper.FindAll();
            _students = _controller.StudentMapper.FindAll();

            #region test shit
            /*
            _master = new List<Zitting>
            {
                new Zitting
                (
                    "10-5-2011",
                    "13:30",
                    "OB002",
                    "Piet Jan \nJan Piet",
                    "Ger Saris \nKeesjan hogenboom",
                    "Ad Groot 2 \nAad Klein",
                    12
                ),
                new Zitting
                (
                    "10-5-2011",
                    "14:00",
                    "OB002",
                    "Ibrahim Boven\nJeroen Schipper",
                    "Freek Hogenboom\nSjaak Lauris",
                    "Kees Prof 2 \n Piet Hogensluiter",
                    4
                ),
                new Zitting
                (
                    "10-5-2011",
                    "14:30",
                    "OB002",
                    "Freek Netes\nMark Hos",
                    "Bruno Marks\nMandy Tregis",
                    "Kelly Bruins\nPatricia Kaai",
                    6
                ),
                new Zitting
                (
                    "10-5-2011",
                    "13:30",
                    "OB002",
                    "Piet Jan \nJan Piet",
                    "Ger Saris \nKeesjan hogenboom",
                    "Ad Groot 2 \nAad Klein",
                    10
                ),
                new Zitting
                (
                    "10-5-2011",
                    "14:00",
                    "OB002",
                    "Ibrahim Boven\nJeroen Schipper",
                    "Freek Hogenboom\nSjaak Lauris",
                    "Kees Prof 2 \n Piet Hogensluiter",
                    11
                ),
                new Zitting
                (
                    "10-5-2011",
                    "14:30",
                    "OB002",
                    "Freek Netes\nMark Hos",
                    "Bruno Marks\nMandy Tregis",
                    "Kelly Bruins\nPatricia Kaai",
                    8
                ),
                new Zitting
                (
                    "10-5-2011",
                    "13:30",
                    "OB002",
                    "Piet Jan \nJan Piet",
                    "Ger Saris \nKeesjan hogenboom",
                    "Ad Groot 2 \nAad Klein",
                    12
                ),
                new Zitting
                (
                    "10-5-2011",
                    "14:00",
                    "OB002",
                    "Ibrahim Boven\nJeroen Schipper",
                    "Freek Hogenboom\nSjaak Lauris",
                    "Kees Prof 2 \n Piet Hogensluiter",
                    3
                ),
                new Zitting
                (
                    "10-5-2011",
                    "14:30",
                    "OB002",
                    "Freek Netes\nMark Hos",
                    "Bruno Marks\nMandy Tregis",
                    "Kelly Bruins\nPatricia Kaai",
                    13
                ),
                new Zitting
                (
                    "10-5-2011",
                    "13:30",
                    "OB002",
                    "Piet Jan \nJan Piet",
                    "Ger Saris \nKeesjan hogenboom",
                    "Ad Groot 2 \nAad Klein",
                    7
                ),
                new Zitting
                (
                    "10-5-2011",
                    "14:00",
                    "OB002",
                    "Ibrahim Boven\nJeroen Schipper",
                    "Freek Hogenboom\nSjaak Lauris",
                    "Kees Prof 2 \n Piet Hogensluiter",
                    17
                ),
                new Zitting
                (
                    "10-5-2011",
                    "14:30",
                    "OB002",
                    "Freek Netes\nMark Hos",
                    "Bruno Marks\nMandy Tregis",
                    "Kelly Bruins\nPatricia Kaai",
                    3
                ),
                new Zitting
                (
                    "10-5-2011",
                    "13:30",
                    "OB002",
                    "Piet Jan \nJan Piet",
                    "Ger Saris \nKeesjan hogenboom",
                    "Ad Groot 2 \nAad Klein",
                    9
                ),
                new Zitting
                (
                    "10-5-2011",
                    "14:00",
                    "OB002",
                    "Ibrahim Boven\nJeroen Schipper",
                    "Freek Hogenboom\nSjaak Lauris",
                    "Kees Prof 2 \n Piet Hogensluiter",
                    8
                ),
                new Zitting
                (
                    "10-5-2011",
                    "14:30",
                    "OB002",
                    "Freek Netes\nMark Hos",
                    "Bruno Marks\nMandy Tregis",
                    "Kelly Bruins\nPatricia Kaai",
                    8
                )

            };
             */
            #endregion

            Sessions = CollectionViewSource.GetDefaultView(_master);
            GridOverzichtList.ItemsSource = Sessions;

            _classrooms = _controller.ClassroomMapper.FindAll();
            _pairs = _controller.PairMapper.FindAll();

            _experts = _controller.ExpertMapper.FindAll();

            calendar.createCalendar(_controller.IniReader, _classrooms, _controller);
            calendar.loadAllSessions(tempSessions);
            UnPlannedPairs unPlannedPairs = _controller.toPlanWindow;
            unPlannedPairs.loadAllPairs(_controller.PairMapper);
            unPlannedPairs.Show();
            tabCalender.Focus();

            _classroomTextboxes = new List<TextBox>();

            _classroomTextboxes = new List<TextBox>();

            getAllClassrooms();
        }
Esempio n. 11
0
        public static PAZController GetInstance()
        {
            if (PAZController._controller == null)
            {
                PAZController._controller = new PAZController();
            }

            return PAZController._controller;
        }