private void ButtonLoad_Click(object sender, RoutedEventArgs e) { try { CSelectUserWindow selectUserWindow = new CSelectUserWindow(SelectQuery("SELECT * FROM USER")); selectUserWindow.ShowDialog(); if (selectUserWindow.Accept) { if (_basketUserControls[1].PriorityDirection != null) { _basketUserControls[1].Clear(); } _user = selectUserWindow.GetUser(); textBoxName.Text = _user.ID + " " + _user.Name; textBoxName.IsReadOnly = true; DataTable dataTableDirection = SelectQuery($"SELECT DIRECTION_SELECTION.ID, DIRECTION_SELECTION.PRIORITY, DIRECTION.NAME, DIRECTION.CODE, " + $"DIRECTION.ID AS DIRECTION_ID FROM DIRECTION_SELECTION, DIRECTION WHERE DIRECTION_SELECTION.ID_USER = { _user.ID} AND " + $"DIRECTION.ID = DIRECTION_SELECTION.ID_DIRECTION"); DataTable dataTableProfile = SelectQuery($"SELECT PROFILE_SELECTION.ID, PROFILE_SELECTION.PRIORITY, PROFILE.NAME AS PROFILE_NAME, " + $"FACULTY.NAME AS FACULTY_NAME, PROFILE.ID AS PROFILE_ID, DIRECTION_SELECTION.ID AS DIRECTION_SELECTION_ID FROM DIRECTION_SELECTION, " + $"PROFILE_SELECTION, PROFILE, FACULTY WHERE DIRECTION_SELECTION.ID_USER = { _user.ID} AND DIRECTION_SELECTION.ID = PROFILE_SELECTION.ID_SELECTION AND " + $"PROFILE_SELECTION.ID_PROFILE = PROFILE.ID AND PROFILE.ID_FACULTY = FACULTY.ID"); int iCount = 0; foreach (DataRow dataRow in dataTableDirection.Rows) { CDirection direction = new CDirection((string)dataRow[2], (string)dataRow[3]); DataRow row = dataTableProfile.Rows[iCount]; CProfile profile = new CProfile((string)row[2], (string)row[3], Convert.ToInt32(row[4])); CDirectionWithProfile directionWithProfile = new CDirectionWithProfile(direction, profile, Convert.ToInt32(dataRow[4])); while (iCount < dataTableProfile.Rows.Count - 1) { if (Convert.ToInt32(dataRow[0]) == Convert.ToInt32(dataTableProfile.Rows[iCount + 1].ItemArray[5])) { iCount++; row = dataTableProfile.Rows[iCount]; profile = new CProfile((string)row[2], (string)row[3], Convert.ToInt32(row[4])); directionWithProfile.PriorityProfile.AddProfile(profile); } else { iCount++; break; } } _basketUserControls[1].Add(directionWithProfile, false); } } } catch (Exception ex) { MessageBox.Show(ex.Message); } }
public CDirectoryUserControl(CDirectionWithProfile directionWithProfile, int priority, EMove move, bool added) { InitializeComponent(); Priority = priority; DirectionWithProfile = directionWithProfile; textBoxName.Text = DirectionWithProfile.Direction.Code + " «" + DirectionWithProfile.Direction.Name + "»"; Added = added; Load(DirectionWithProfile.PriorityProfile, Added); Move = move; }
private void TransferDirectionWithProfile(CDirectionWithProfile directionWithProfile) { if (_basketUserControls[1].PriorityDirection != null) { for (int i = 0; i < _basketUserControls[1].PriorityDirection.GetCount(); i++) { if (_basketUserControls[1].PriorityDirection.GetDirectionWithProfile(i + 1).ID == directionWithProfile.ID) { throw new Exception("Данное направление уже лежит в корзине!"); } } } _basketUserControls[1].Add(directionWithProfile, false); }
private void Load() { DataTable dataTableDirection = SelectQuery("SELECT DIRECTION.ID, DIRECTION.NAME, DIRECTION.CODE FROM DIRECTION"); DataTable dataTableProfile = SelectQuery("SELECT DIRECTION.ID, PROFILE.NAME, FACULTY.NAME, PROFILE.ID FROM CATALOG " + "JOIN DIRECTION ON CATALOG.ID_DIRECTION = DIRECTION.ID " + "JOIN PROFILE ON CATALOG.ID_PROFILE = PROFILE.ID " + "JOIN FACULTY ON PROFILE.ID_FACULTY = FACULTY.ID"); CPriorityDirection priorityDirection; List <CDirection> directions = new List <CDirection>(); List <CProfile> profiles = new List <CProfile>(); foreach (DataRow dataRowDirection in dataTableDirection.Rows) { directions.Add(new CDirection((string)dataRowDirection[1], (string)dataRowDirection[2])); } foreach (DataRow dataRowProfile in dataTableProfile.Rows) { profiles.Add(new CProfile((string)dataRowProfile[1], (string)dataRowProfile[2], Convert.ToInt32(dataRowProfile[3]))); } List <CDirectionWithProfile> directionWithProfiles = new List <CDirectionWithProfile>(); for (int i = 0; i < profiles.Count; i++) { if (directionWithProfiles.Count != 0) { if (directionWithProfiles[directionWithProfiles.Count - 1].ID == Convert.ToInt32(dataTableProfile.Rows[i].ItemArray[0])) { directionWithProfiles[directionWithProfiles.Count - 1].PriorityProfile.AddProfile(profiles[i]); continue; } } CDirection direction = directions[Convert.ToInt32(dataTableProfile.Rows[i].ItemArray[0])]; CProfile profile = profiles[i]; int id = Convert.ToInt32(dataTableProfile.Rows[i].ItemArray[0]); CDirectionWithProfile directionWithProfile = new CDirectionWithProfile(direction, profile, id); directionWithProfiles.Add(directionWithProfile); } priorityDirection = new CPriorityDirection(directionWithProfiles[0]); for (int i = 1; i < directionWithProfiles.Count; i++) { priorityDirection.AddDirection(directionWithProfiles[i]); } СBasketUserControl basketUserControl = new СBasketUserControl(priorityDirection, true); basketUserControl.HorizontalAlignment = HorizontalAlignment.Left; basketUserControl.VerticalAlignment = VerticalAlignment.Top; basketUserControl.Margin = new Thickness(0, 79, 0, 0); basketUserControl.SetSizeHorizontsly(390); basketUserControl.SetSizeVerticals(Height - 150); basketUserControl.ButtonAdd += TransferDirectionWithProfile; _basketUserControls.Add(basketUserControl); ((Grid)this.Content).Children.Add(basketUserControl); basketUserControl = new СBasketUserControl(); basketUserControl.HorizontalAlignment = HorizontalAlignment.Left; basketUserControl.VerticalAlignment = VerticalAlignment.Top; basketUserControl.Margin = new Thickness(390, 79, 0, 0); basketUserControl.SetSizeHorizontsly(390); basketUserControl.SetSizeVerticals(Height - 150); basketUserControl.ButtonAdd += TransferDirectionWithProfile; _basketUserControls.Add(basketUserControl); ((Grid)this.Content).Children.Add(basketUserControl); }
public void Add(CDirectionWithProfile directionWithProfile, bool notModify) { _heightDirectoryUserControls = 0; NotModify = notModify; if (PriorityDirection == null) { PriorityDirection = new CPriorityDirection(directionWithProfile); } else { PriorityDirection.AddDirection(directionWithProfile); foreach (CDirectoryUserControl directoryUserControl in _directoryUserControls) { ((Grid)this.Content).Children.Remove(directoryUserControl); } _directoryUserControls.Clear(); } double height = 0; for (int i = 0; i < PriorityDirection.GetCount(); i++) { CDirectionWithProfile localDirectionWithProfile = PriorityDirection.GetDirectionWithProfile(i + 1); CDirectoryUserControl directoryUserControl; if (NotModify) { directoryUserControl = new CDirectoryUserControl(localDirectionWithProfile, -1, EMove.Null, NotModify); } else { if (PriorityDirection.GetCount() == 1) { directoryUserControl = new CDirectoryUserControl(localDirectionWithProfile, i + 1, EMove.Null, NotModify); } else { if (i == 0) { directoryUserControl = new CDirectoryUserControl(localDirectionWithProfile, i + 1, EMove.Down, NotModify); } else if (i == PriorityDirection.GetCount() - 1) { directoryUserControl = new CDirectoryUserControl(localDirectionWithProfile, i + 1, EMove.Up, NotModify); } else { directoryUserControl = new CDirectoryUserControl(localDirectionWithProfile, i + 1, EMove.DownUp, NotModify); } } } directoryUserControl.HorizontalAlignment = HorizontalAlignment.Left; directoryUserControl.VerticalAlignment = VerticalAlignment.Top; directoryUserControl.Margin = new Thickness(0, height, 0, 0); height = height + directoryUserControl.Height; directoryUserControl.ButtonMoveUp += DirectoryUserControlMoveUp; directoryUserControl.ButtonMoveDown += DirectoryUserControlMoveDown; if (Width > 0) { directoryUserControl.SetResizeWidth(Width - scrollBar.Width);; } _directoryUserControls.Add(directoryUserControl); _heightDirectoryUserControls = _heightDirectoryUserControls + directoryUserControl.Height; directoryUserControl.ButtonAdd += AddIntoBasket; ((Grid)this.Content).Children.Add(directoryUserControl); } if (_heightDirectoryUserControls > Height) { scrollBar.Maximum = _heightDirectoryUserControls - Height; } }