public static PAZController GetInstance() { if (PAZController._controller == null) { PAZController._controller = new PAZController(); } return(PAZController._controller); }
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; }
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; }
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(); }
// 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); }
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(); }
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]); } }
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); }
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); }
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(); }
public static PAZController GetInstance() { if (PAZController._controller == null) { PAZController._controller = new PAZController(); } return PAZController._controller; }