using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Shapes; using System.Collections.ObjectModel; using System.Data.SqlClient; using System.Data; namespace WpfApplication19 { /// /// Interaction logic for DailyCheck.xaml /// public partial class DailyCheck : Window { ObservableCollection _dailyChecks = new ObservableCollection(); DataGridCellInfo _cell; DataGridColumn _col; DailyChecker _item; SqlConnection _proConn; DateTime _now, _tomorrow; string _shift; public DailyCheck() { InitializeComponent(); //nowLabel.Content = String.Format("{0:dd/MM/yyyy}", DateTime.Now); //var test = DateTime.Now + 1; _now = DateTime.Now.Date; _tomorrow = _now.AddDays(1); var c = DateTime.Now.AddDays(1); var hr = DateTime.Now.TimeOfDay.Hours; //shiftCB.SelectionChanged -= shiftCB_SelectionChanged; if(hr >= 8 && hr <= 19){ _shift = "day"; shiftCB.SelectedIndex = 0; }else{ _shift = "night"; shiftCB.SelectedIndex = 1; } datePicker.SelectedDateChanged -= datePicker_SelectedDateChanged; datePicker.SelectedDate =_now; datePicker.SelectedDateChanged += datePicker_SelectedDateChanged; shiftCB.SelectionChanged += shiftCB_SelectionChanged; try { _proConn = Utils.createSqlConnection("productionDbCS"); } catch (SqlException se) { MessageBox.Show("productionDbCS : ", se.Message); } //var w = (MainWindow)Application.Current.MainWindow; //_proConn = w.proConn; initDataGrid(); //dailyCheckGrid.Focus(); } void initDataGrid(){ setGrid(_now, _tomorrow, _shift); } private void setGrid(DateTime from, DateTime to, string shift) { var id = Utils.getSetting("currentMachine"); var sql = string.Format("select * from daily_checks where created_at >= '{0:yyyy-MM-dd}' and created_at < '{1:yyyy-MM-dd}' and machine_id = {2} and shift = '{3}'" , from,to, id, shift); var reader = Utils.Query(_proConn, sql); dailyCheckGrid.ItemsSource = null; _dailyChecks.Clear(); if (reader.HasRows) { while (reader.Read()) { _dailyChecks.Add(new DailyChecker() { header = reader["header"].ToString().ToUpper(), p1 = Math.Round(Convert.ToDouble(reader["p1"]), 2), p2 = Math.Round(Convert.ToDouble(reader["p2"]), 2), p3 = Math.Round(Convert.ToDouble(reader["p3"]), 2), avg = Math.Round(Convert.ToDouble(reader["avg"]), 2), result = reader["result"].ToString() }); } } else { _dailyChecks.Add(new DailyChecker() { header = "OB", p1 = 0, p2 = 0, p3 = 0, avg = 0 }); _dailyChecks.Add(new DailyChecker() { header = "OC", p1 = 0, p2 = 0, p3 = 0, avg = 0 }); _dailyChecks.Add(new DailyChecker() { header = "RH", p1 = 0, p2 = 0, p3 = 0, avg = 0 }); } reader.Close(); dailyCheckGrid.Items.Clear(); dailyCheckGrid.ItemsSource = _dailyChecks; } private void saveBtn_Click(object sender, RoutedEventArgs e) { int row, col; string header; //dailyCheckGrid.Focus(); try{ header = _cell.Column.Header.ToString(); row = _dailyChecks.IndexOf((_cell.Item as DailyChecker)); col = _col.DisplayIndex; }catch{ dailyCheckGrid.Focus(); dailyCheckGrid.CurrentCell = new DataGridCellInfo( dailyCheckGrid.Items[0], dailyCheckGrid.Columns[1]); dailyCheckGrid.BeginEdit(); header = "P1"; row = 0; col = 1; _item = _dailyChecks[0]; } switch(header){ case "P1": //var c = dailyCheckGrid.CurrentItem as DailyChecker; _item.p1 = Convert.ToDouble(measureBlock.Text); break; case "P2": _item.p2 = Convert.ToDouble(measureBlock.Text); break; case "P3": _item.p3 = Convert.ToDouble(measureBlock.Text); break; } _item.avg = Math.Round((_item.p1 + _item.p2 + _item.p3)/3, 2); if(_item.header == "OB"){ if(_item.avg >= 0.59 && _item.avg <= 0.70){ _item.result = "OK"; }else { _item.result = "NG"; } } if(_item.header == "OC"){ if (_item.avg >= 0.28 && _item.avg <= 0.37) { _item.result = "OK"; } else { _item.result = "NG"; } } dailyCheckGrid.Items.Refresh(); dailyCheckGrid.Focus(); if(header != "Header" && header != "Avg" && header != "P3"){ dailyCheckGrid.CurrentCell = new DataGridCellInfo( dailyCheckGrid.Items[row], dailyCheckGrid.Columns[col + 1]); dailyCheckGrid.BeginEdit(); } if(header == "P3"){ try{ dailyCheckGrid.CurrentCell = new DataGridCellInfo( dailyCheckGrid.Items[row+1], dailyCheckGrid.Columns[1]); dailyCheckGrid.SelectedItem = dailyCheckGrid.Items[row + 1]; dailyCheckGrid.BeginEdit(); }catch{ dailyCheckGrid.CurrentCell = new DataGridCellInfo( dailyCheckGrid.Items[0], dailyCheckGrid.Columns[1]); dailyCheckGrid.SelectedItem = dailyCheckGrid.Items[0]; dailyCheckGrid.BeginEdit(); } } } private void dailyCheckGrid_GotFocus(object sender, RoutedEventArgs e) { _cell = dailyCheckGrid.CurrentCell; _col = dailyCheckGrid.CurrentColumn; _item = dailyCheckGrid.CurrentItem as DailyChecker; } private void dailyCheckGrid_Loaded(object sender, RoutedEventArgs e) { dailyCheckGrid.Focus(); dailyCheckGrid.CurrentCell = new DataGridCellInfo( dailyCheckGrid.Items[0], dailyCheckGrid.Columns[1]); dailyCheckGrid.BeginEdit(); } private void commitBtn_Click(object sender, RoutedEventArgs e) { commitData(); MessageBox.Show("Commit Daily Check Complete"); Close(); } private void commitData() { var id = Utils.getSetting("currentMachine"); var sql = string.Format("delete daily_checks where machine_id = {0} and created_at >= '{1:yyyy-MM-dd}' and created_at < '{2:yyyy-MM-dd}' and shift = '{3}'", id, _now, _tomorrow, _shift); var reader = Utils.Query(_proConn, sql); reader.Close(); string empid = GlobalVars.user.empid; foreach (var item in _dailyChecks) { sql = string.Format("insert into daily_checks(header, p1, p2, p3, avg, created_at, updated_at,machine_id, empid, shift, result) values('{0}', {1}, {2}, {3}, {4}, '{5}', '{6}', {7}, '{8}', '{9}', '{10}')" , item.header.ToUpper(), item.p1, item.p2, item.p3, item.avg, _now, DateTime.Now, id, empid, _shift, item.result); reader = Utils.Query(_proConn, sql); reader.Close(); } } private void datePicker_SelectedDateChanged(object sender, SelectionChangedEventArgs e) { //MessageBox.Show("change date"); if (commitBtn.IsEnabled == true) commitData(); var d = (DateTime)datePicker.SelectedDate; var shift = (shiftCB.SelectedItem as ComboBoxItem).Tag.ToString(); if (d.Date == DateTime.Now.Date && shift == _shift) { saveBtn.IsEnabled = true; commitBtn.IsEnabled = true; } else { saveBtn.IsEnabled = false; commitBtn.IsEnabled = false; } var from = (DateTime)datePicker.SelectedDate; setGrid(from.Date, from.Date.AddDays(1), shift); } private void shiftCB_SelectionChanged(object sender, SelectionChangedEventArgs e) { //var d = (DateTime)datePicker.SelectedDate; if( commitBtn.IsEnabled == true) commitData(); var d = (DateTime)datePicker.SelectedDate; var shift = (shiftCB.SelectedItem as ComboBoxItem).Tag.ToString(); if (d.Date == DateTime.Now.Date && shift == _shift) { saveBtn.IsEnabled = true; commitBtn.IsEnabled = true; } else { saveBtn.IsEnabled = false; commitBtn.IsEnabled = false; } var from = (DateTime)datePicker.SelectedDate; setGrid(from.Date, from.Date.AddDays(1), shift); } private void Window_Closed(object sender, EventArgs e) { if (commitBtn.IsEnabled == true) commitData(); } } }