public EditEventWindow(Project pr, int evnum = 0) { InitializeComponent(); DataGridTextColumn col = new DataGridTextColumn(); col.Header = "Опис штрафу"; col.Width = new DataGridLength(180); col.Binding = new Binding("Description"); PenaltiesGrid.Columns.Add(col); col = new DataGridTextColumn(); col.Header = "Штраф(%)"; col.Width = new DataGridLength(70); col.Binding = new Binding("Mode"); PenaltiesGrid.Columns.Add(col); col = new DataGridTextColumn(); col.Header = "Штраф(бали)"; col.Width = new DataGridLength(85); col.Binding = new Binding("Value"); PenaltiesGrid.Columns.Add(col); PenaltyRow val = new PenaltyRow("Prosto tak", 0.5); PenaltyRow mod = new PenaltyRow("Potomu chto loh", 50); PenaltiesGrid.Items.Add(val); PenaltiesGrid.Items.Add(mod); DeadlineDate.SelectedDate = DateTime.Today; CurPr = pr; SerialNumber.Text = (CurPr.Events.Count + 1).ToString(); EventNumber = evnum; OK.Content = "Зберегти"; DeadlineDate.SelectedDate = CurPr.Events[EventNumber].DeadLine; Name.Text = CurPr.Events[EventNumber].Title; Description.Text = CurPr.Events[EventNumber].Description; SerialNumber.Text = CurPr.Events[EventNumber].SerialNumber.ToString(); }
public AddPenaltyWindow(Project cp, int evnum, CurrentWindow cw) { CurPr = cp; EventNumber = evnum; curWindow = cw; InitializeComponent(); if (curWindow == CurrentWindow.AddPenalty) { this.Title = "Додати штраф"; } else { this.Title = "Редагувати штраф"; } }
public GradeEventWindow(CurrentWindow cw, Project pr, int evnum = 0) { curWindow = cw; InitializeComponent(); DeadlineDate.SelectedDate = DateTime.Today; CurPr = pr; SerialNumber.Text = (CurPr.Events.Count + 1).ToString(); if (cw == CurrentWindow.AddEvent) { OK.Content = "Додати"; FileControl.IsEnabled = false; } else { EventNumber = evnum; OK.Content = "Зберегти"; DeadlineDate.SelectedDate = CurPr.Events[EventNumber].DeadLine; Name.Text = CurPr.Events[EventNumber].Title; Description.Text = CurPr.Events[EventNumber].Description; SerialNumber.Text = CurPr.Events[EventNumber].SerialNumber.ToString(); } }
public AddProjectWindow(CurrentWindow cw, Project pr = null) { InitializeComponent(); _currentWindow = cw; proj = pr; // TODO добавить для курсовіх, діпломніх switch (_currentWindow) { case CurrentWindow.CreateLab: this.Title = "Створення лабораторних робіт"; GreyName.Text = "Назва лабораторної роботи"; break; case CurrentWindow.CreateRgr: this.Title = "Створення РГР"; GreyName.Text = "Назва розрахункової роботи"; break; case CurrentWindow.EditRgr: this.Title = "Редагування РГР"; break; case CurrentWindow.EditLab: this.Title = "Редагування лабораторних робіт"; break; } if(cw == CurrentWindow.CreateLab || cw == CurrentWindow.CreateRgr) treeView1.ItemsSource = TreeViewModel.SetTree(); else if (cw == CurrentWindow.EditLab || cw == CurrentWindow.EditRgr) treeView1.ItemsSource = TreeViewModel.SetTree(true, pr); Configuration config = (App.Current as App).config; TcpClient eClient = new TcpClient(); try { eClient = new TcpClient(config.IP.ToString(), config.Port); using (NetworkStream writerStream = eClient.GetStream()) { MSG message = new MSG(); message.stat = STATUS.GET_SUBJECTS; BinaryFormatter formatter = new BinaryFormatter(); formatter.Serialize(writerStream, message); bool fl = (bool)formatter.Deserialize(writerStream); if (fl) { _subjectsCollection = (Dictionary<string, int>) formatter.Deserialize(writerStream); foreach (var subject in _subjectsCollection) Subject.Items.Add(subject.Key); } else { // TODO возможен баг из-за закрытия в конструкторе MessageBox.Show("Помилка з'єднання з сервером"); this.Close(); } if (_currentWindow == CurrentWindow.EditLab || _currentWindow == CurrentWindow.EditRgr) { try { Subject.SelectedItem = proj.Subject; } catch (Exception) { if(Subject.Items.Count > 0) Subject.SelectedIndex = 0; } Name.Text = proj.Theme; FlowDocument document = new FlowDocument(); Paragraph paragraph = new Paragraph(); paragraph.Inlines.Add(new Bold(new Run(proj.Description))); document.Blocks.Add(paragraph); Description.Document = document; } } } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { eClient.Close(); } }
public static List<TreeViewModel> SetTree(bool IsUpdate = false, Project pr = null) { List<TreeViewModel> treeView = new List<TreeViewModel>(); Configuration config = (App.Current as App).config; TcpClient eClient = new TcpClient(); List<int> stInProj = new List<int>(); try { eClient = new TcpClient(config.IP.ToString(), config.Port); using (NetworkStream writerStream = eClient.GetStream()) { MSG message = new MSG(); message.stat = STATUS.GET_GROUPS; BinaryFormatter formatter = new BinaryFormatter(); formatter.Serialize(writerStream, message); bool fl = (bool)formatter.Deserialize(writerStream); if (fl) { var dic = (Dictionary<string, int>)formatter.Deserialize(writerStream); foreach (var i in dic) { TreeViewModel tv = new TreeViewModel(i.Key, i.Value); treeView.Add(tv); } } } } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { eClient.Close(); } if (IsUpdate) { TcpClient Client1 = new TcpClient(); try { Client1 = new TcpClient(config.IP.ToString(), config.Port); using (NetworkStream writerStream = Client1.GetStream()) { MSG message = new MSG(); message.stat = STATUS.GET_STUDENTS_ID_BY_PARENT; BinaryFormatter formatter = new BinaryFormatter(); formatter.Serialize(writerStream, message); formatter.Serialize(writerStream, pr.ID); stInProj = (List<int>) formatter.Deserialize(writerStream); } } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { Client1.Close(); } } foreach (var i in treeView) { List<TreeViewModel> tvmCollection =new List<TreeViewModel>(); TcpClient Client = new TcpClient(); if (!IsUpdate) { try { Client = new TcpClient(config.IP.ToString(), config.Port); using (NetworkStream writerStream = Client.GetStream()) { MSG message = new MSG(); message.stat = STATUS.GET_STUDENTS_NAME_BY_GROUP; BinaryFormatter formatter = new BinaryFormatter(); formatter.Serialize(writerStream, message); formatter.Serialize(writerStream, i.Name); bool fl = (bool)formatter.Deserialize(writerStream); if (fl) { var dic = (List<StringToInt>)formatter.Deserialize(writerStream); foreach (var j in dic) { TreeViewModel tv = new TreeViewModel(j.Key, j.Value); tvmCollection.Add(tv); } } } } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { Client.Close(); } } else { try { Client = new TcpClient(config.IP.ToString(), config.Port); using (NetworkStream writerStream = Client.GetStream()) { MSG message = new MSG(); message.stat = STATUS.GET_STUDENTS_NAME_BY_GROUP; BinaryFormatter formatter = new BinaryFormatter(); formatter.Serialize(writerStream, message); formatter.Serialize(writerStream, i.Name); bool fl = (bool)formatter.Deserialize(writerStream); if (fl) { var dic = (List<StringToInt>)formatter.Deserialize(writerStream); foreach (var j in dic) { TreeViewModel tv = new TreeViewModel(j.Key, j.Value); // todo поправить ибо не все галочки доставятся ибо они перенты if(stInProj.Contains(j.Value)) tv.SetIsChecked(true, false, false); tvmCollection.Add(tv); } } } } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { Client.Close(); } } i.Children = tvmCollection; } return treeView; }
public static void UpdateProject(Project project) { using (SqlConnection connection = new SqlConnection(ConnectionString)) { connection.Open(); using (SqlTransaction transaction = connection.BeginTransaction()) { try { SqlCommand query = new SqlCommand("UPDATE Project SET Theme = @Theme, ProjectStatus = @ProjectStatus, Description = @Description WHERE ProjectId = @Id", connection, transaction); query.Parameters.Add("@Theme", SqlDbType.VarChar, 100).Value = project.Theme; query.Parameters.Add("@Description", SqlDbType.Text).Value = project.Description; query.Parameters.Add("@ProjectStatus", SqlDbType.Int).Value = (int)project.PStatus; query.Parameters.Add("@Id", SqlDbType.Int).Value = project.ID; query.ExecuteNonQuery(); switch (project.Type) { case EProjectType.DiplomaProject: DiplomaProject diploma = (DiplomaProject)project; //int instructorId = GetInstructorIdByName(diploma.InstroctorName); //if (instructorId < 0) // throw new ArgumentException("не знайдено id викладача", "project"); int normokontrolerId = GetNormokontrolerIdByName(diploma.NormokontrolerName); if (normokontrolerId < 0) throw new ArgumentException("не знайдено id нормоконтролера", "project"); query = new SqlCommand("UPDATE DiplomaProject SET Classification = @Classification, NumberOfPages = @NumberOfPages, NumberOfPictures = @NumberOfPictures, NumberOfTables = @NumberOfTables, NumberOfFormuls = @NumberOfFormuls, NumberOfLiterature = @NumberOfLiterature, NumberOfPosters = @NumberOfPosters, NormokontrolerId = @NormokontrolerId, Defence0 = @Defence0, Defence1 = @Defence1, Defence2 = @Defence2, Defence3 = @Defence3, Defence4 = @Defence4, Defence5 = @Defence5 WHERE DiplomaId = @id", connection, transaction); query.Parameters.Add("@Classification", SqlDbType.VarChar, 50).Value = diploma.Classification; query.Parameters.Add("@NumberOfPages", SqlDbType.Int).Value = diploma.NumberOfPages; query.Parameters.Add("@NumberOfPictures", SqlDbType.Int).Value = diploma.NumberOfPictures; query.Parameters.Add("@NumberOfTables", SqlDbType.Int).Value = diploma.NumberOfTables; query.Parameters.Add("@NumberOfFormuls", SqlDbType.Int).Value = diploma.NumberOfFormuls; query.Parameters.Add("@NumberOfLiterature", SqlDbType.Int).Value = diploma.NumberOfLiterature; query.Parameters.Add("@NumberOfPosters", SqlDbType.Int).Value = diploma.NumberOfPosters; query.Parameters.Add("@NormokontrolerId", SqlDbType.Int).Value = normokontrolerId; query.Parameters.Add("@id", SqlDbType.Int).Value = diploma.ID; DateTime time = new DateTime(); if(diploma.DefenceDate == null) diploma.DefenceDate = new List<string>(){"", "", "", "", "", ""}; while (diploma.DefenceDate.Count < 6) diploma.DefenceDate.Add(""); for (int i = 0; i < 6; i++) if (diploma.DefenceDate[i] == null || !DateTime.TryParse(diploma.DefenceDate[i], out time)) diploma.DefenceDate[i] = ""; for (int i = 0; i < 6; i++) query.Parameters.Add("@Defence" + i, SqlDbType.VarChar, 20).Value = diploma.DefenceDate[i]; query.ExecuteNonQuery(); break; case EProjectType.LabWork: break; case EProjectType.Rgr: break; default: throw new ArgumentException("Wrong project type", "project"); } query.Dispose(); transaction.Commit(); } catch (Exception) { transaction.Rollback(); throw; } } } }
public static void AddProject(Project project) { using (SqlConnection connection = new SqlConnection(ConnectionString)) { connection.Open(); using (SqlTransaction transaction = connection.BeginTransaction()) using (SqlCommand query = new SqlCommand("INSERT INTO Project(Theme, ParentProjectId, InstructorId, SubjectId, ProjectType, ProjectStatus, Description) VALUES(@Theme, @ParentProjectId, @InstructorId, @SubjectId, @ProjectType, @ProjectStatus, @Description); SELECT CAST(scope_identity() AS int)", connection, transaction)) { try { query.Parameters.Add("@InstructorId", SqlDbType.Int).Value = project.InstructorId; query.Parameters.Add("@Theme", SqlDbType.VarChar, 100).Value = project.Theme; query.Parameters.Add("@ProjectStatus", SqlDbType.Int).Value = (int)project.PStatus; query.Parameters.Add("@ParentProjectId", SqlDbType.Int).Value = project.ParentProjectId; query.Parameters.Add("@Description", SqlDbType.Text).Value = project.Description; query.Parameters.Add("@ProjectType", SqlDbType.Int).Value = (int)project.Type; query.Parameters.Add("@SubjectId", SqlDbType.Int).Value = GetSubjectIdByName(project.Subject); project.ID = (int)query.ExecuteScalar(); if (project.Type == EProjectType.DiplomaProject) { DiplomaProject diploma = (DiplomaProject)project; int instructorId = GetInstructorIdByName(diploma.InstroctorName); if (instructorId < 0) throw new ArgumentException("не знайдено id викладача", "project"); int normokontrolerId = GetNormokontrolerIdByName(diploma.NormokontrolerName); if (normokontrolerId < 0) normokontrolerId = 0; SqlCommand diplomaInsert = new SqlCommand("INSERT INTO DiplomaProject(ProjectId, NormokontrolerId, Classification, NumberOfPages, NumberOfPictures, NumberOfTables, NumberOfFormuls, NumberOfLiterature, NumberOfPosters, Defence0, Defence1, Defence2, Defence3, Defence4, Defence5) VALUES(@ProjectId, @NormokontrolerId, @Classification, @NumberOfPages, @NumberOfPictures, @NumberOfTables, @NumberOfFormulas, @NumberOfLiterature, @NumberOfPosters, @Defence0, @Defence1, @Defence2, @Defence3, @Defence4, @Defence5); SELECT CAST(scope_identity() AS int)", connection, transaction); diplomaInsert.Parameters.Add("@ProjectId", SqlDbType.Int).Value = project.ID; diplomaInsert.Parameters.Add("@Classification", SqlDbType.VarChar, 50).Value = (diploma.Classification ?? ""); diplomaInsert.Parameters.Add("@NumberOfPages", SqlDbType.Int).Value = diploma.NumberOfPages; diplomaInsert.Parameters.Add("@NumberOfPictures", SqlDbType.Int).Value = diploma.NumberOfPictures; diplomaInsert.Parameters.Add("@NumberOfTables", SqlDbType.Int).Value = diploma.NumberOfTables; diplomaInsert.Parameters.Add("@NumberOfFormulas", SqlDbType.Int).Value = diploma.NumberOfFormuls; diplomaInsert.Parameters.Add("@NumberOfLiterature", SqlDbType.Int).Value = diploma.NumberOfLiterature; diplomaInsert.Parameters.Add("@NumberOfPosters", SqlDbType.Int).Value = diploma.NumberOfPosters; diplomaInsert.Parameters.Add("@NormokontrolerId", SqlDbType.Int).Value = normokontrolerId; DateTime time = new DateTime(); if(diploma.DefenceDate == null) diploma.DefenceDate = new List<string>(){"", "", "", "", "", ""}; while (diploma.DefenceDate.Count < 6) diploma.DefenceDate.Add(""); for (int i = 0; i < 6; i++) if (diploma.DefenceDate[i] == null || !DateTime.TryParse(diploma.DefenceDate[i], out time)) diploma.DefenceDate[i] = ""; for (int i = 0; i < 6; i++) diplomaInsert.Parameters.Add("@Defence" + i, SqlDbType.VarChar, 20).Value = diploma.DefenceDate[i]; ((DiplomaProject)project).DiplomaId = (int)diplomaInsert.ExecuteScalar(); } } catch (Exception) { transaction.Rollback(); throw; } //TODO: Single Transaction? transaction.Commit(); if (project.Events != null && project.Events.Count > 0) foreach (var @event in project.Events) AddEvent(@event); } } }
public static bool AddParentProject(Project project) { using (SqlConnection connection = new SqlConnection(ConnectionString)) { connection.Open(); using (SqlTransaction transaction = connection.BeginTransaction()) using (SqlCommand query = new SqlCommand("INSERT INTO ParentProject(ParentId, InstructorId, SubjectId) VALUES(@ParentId, @InstructorId, @SubjectId)", connection, transaction)) { try { using (SqlCommand count = new SqlCommand("SELECT COUNT(*) FROM ParentProject WHERE ParentId = @Id", connection, transaction)) { count.Parameters.Add("@Id", SqlDbType.Int).Value = project.ID; if ((int)count.ExecuteScalar() > 0) return false; } project.ParentProjectId = 0; AddProject(project); query.Parameters.Add("ParentId", SqlDbType.Int).Value = project.ID; query.Parameters.Add("@InstructorId", SqlDbType.Int).Value = project.InstructorId; query.Parameters.Add("@SubjectId", SqlDbType.Int).Value = GetSubjectIdByName(project.Subject); query.ExecuteNonQuery(); transaction.Commit(); return true; } catch { transaction.Rollback(); throw; } } } }
public static void UpdateParentProject(Project project) { using (SqlConnection connection = new SqlConnection(ConnectionString)) { connection.Open(); using (SqlTransaction transaction = connection.BeginTransaction()) using (SqlCommand query = new SqlCommand("UPDATE Project SET Theme = @Theme, Description = @Description WHERE ParentProjectId = @ParentId OR ProjectId = @ParentId", connection, transaction)) { try { query.Parameters.Add("@ParentId", SqlDbType.Int).Value = project.ID; query.Parameters.Add("@Description", SqlDbType.Text).Value = project.Description; query.Parameters.Add("@Theme", SqlDbType.Text).Value = project.Theme; query.ExecuteNonQuery(); } catch { transaction.Rollback(); throw; } transaction.Commit(); } } }
private void Projects_SelectionChanged(object sender, SelectionChangedEventArgs e) { EventsGrid.Items.Clear(); GeneralInfoTab.IsSelected = true; EventsTab.IsEnabled = false; UpdateEventsGrid(ProjectCollection[Projects.SelectedIndex].ID); ProjectDescription.Text = ProjectCollection[Projects.SelectedIndex].Description; CurProject = ProjectCollection[Projects.SelectedIndex]; ProjectInfo.Text = "Поточна оцінка: " + (from i in EventCollection select i.RealMark).Sum().ToString(); if(EventCollection.Count != 0) ProjectInfo.Text += "\nКінцевий термін здачі: " + EventCollection[EventCollection.Count - 1].DeadLine.ToShortDateString(); }