using System; using System.Collections.Generic; using System.Drawing; using System.Linq; using System.Threading; using System.Windows.Forms; using DevExpress.XtraEditors; using GCAS.Code; using GCAS.Dto; using GCAS.Localization; using GCAS.Model; namespace GCAS { public partial class TeamForm : XtraForm { private List L; private TeamRepository teamRepository; public OperatorModel currentUser; private readonly ActionsRepository actionsRepository; public TeamForm() { InitializeComponent(); actionsRepository = new ActionsRepository(); L = LocalizationHelper.GetSource(Thread.CurrentThread.CurrentUICulture); } private void EntranceForm_Load(object sender, System.EventArgs e) { teamRepository = new TeamRepository(); InitDataView(); if (currentUser.Role == 1) { contextMenuStrip1.Enabled = false; } } private void InitDataView(bool isPageLoad = true) { gridView1.LoadingPanelVisible = true; var list = teamRepository.GetList(); gridControl1.DataSource = list; gridView1.LoadingPanelVisible = false; if (!isPageLoad) { var realForm = MdiParent.MdiChildren.FirstOrDefault(c => c.Name == "RealTimeForm") as RealTimeForm; realForm.ChangeTeamInfo(); } } private async void contextMenuStrip1_ItemClicked(object sender, ToolStripItemClickedEventArgs e) { TeamModel rowData; switch (e.ClickedItem.Name) { case "menu_new": using (NewTeamForm form = new NewTeamForm()) { form.Text = L.GetString("new"); form.currentUser = currentUser; if (form.ShowDialog() == DialogResult.OK) InitDataView(false); } break; case "menu_edit": rowData = gridView1.GetFocusedRow() as TeamModel; if (rowData != null) { using (NewTeamForm form = new NewTeamForm()) { form.currentUser = currentUser; form.Text = L.GetString("edit"); form.teamModel = rowData; if (form.ShowDialog() == DialogResult.OK) InitDataView(false); } } break; case "menu_delete": rowData = gridView1.GetFocusedRow() as TeamModel; if (rowData != null) { if (XtraMessageBox.Show(string.Format(L.GetString("deleteTeamMessage"), rowData.Name), L.GetString("notification"), MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK) { if (await teamRepository.Delete(rowData.Id) > 0) { await actionsRepository.Insert(new ActionsModel { Info = string.Format(L.GetString("deleteTeamLog"), rowData.Name), Operator = currentUser.Name, RoleName = currentUser.RoleName, Time = DateTime.Now }); InitDataView(false); } } } break; } } private void gridView1_PopupMenuShowing(object sender, DevExpress.XtraGrid.Views.Grid.PopupMenuShowingEventArgs e) { if (e.HitInfo.InRow) { int index = gridView1.FocusedRowHandle; if (index >= 0) { menu_delete.Enabled = true; menu_edit.Enabled = true; } else { menu_delete.Enabled = false; menu_edit.Enabled = false; } } else { menu_delete.Enabled = false; menu_edit.Enabled = false; } } private void gridView1_MouseDown(object sender, MouseEventArgs e) { if (currentUser.Role == 1) { return; } if (e.Clicks != 2 || e.Button != MouseButtons.Left) return; if (gridView1.CalcHitInfo(new Point(e.X, e.Y)).InRow == false) { using (NewTeamForm form = new NewTeamForm()) { form.Text = L.GetString("new"); form.currentUser = currentUser; if (form.ShowDialog() == DialogResult.OK) InitDataView(false); } } var rowData = gridView1.GetRow(gridView1.CalcHitInfo(new Point(e.X, e.Y)).RowHandle) as TeamModel; if (rowData != null) { using (NewTeamForm form = new NewTeamForm()) { form.Text = L.GetString("edit"); form.teamModel = rowData; form.currentUser = currentUser; if (form.ShowDialog() == DialogResult.OK) { InitDataView(false); } } } } } }