public void StartRunning(string eventName, string distance) { try { var now = DateTime.Now; List <RunnerInfo> runners = new List <RunnerInfo>(); using (RunnerDataContext db = new RunnerDataContext()) { runners = db.RunnerInfos.Where(x => x.Event == eventName && x.Distance == distance).ToList(); List <RunnerScanDateTime> insertingList = new List <RunnerScanDateTime>(); foreach (var runner in runners) { RunnerScanDateTime record = new RunnerScanDateTime() { RunnerIdentification = runner.RunnerBIB, ScannedDateTime = now }; insertingList.Add(record); } db.RunnerScanDateTimes.InsertAllOnSubmit(insertingList); db.SubmitChanges(); } MessageBox.Show($"Start {eventName} {distance} successfully"); } catch (Exception e) { MessageBox.Show(e.Message); } }
public void ClearRunningRecord(string eventName, string distance) { MessageBoxResult messageBoxResult = MessageBox.Show($"Confirm clearing {eventName} {distance} runner record?", "Delete Confirmation", MessageBoxButton.YesNo); if (messageBoxResult == MessageBoxResult.Yes) { try { using (RunnerDataContext db = new RunnerDataContext()) { var runnerInfos = db.RunnerInfos.Where(x => x.Event == eventName && x.Distance == distance); var runnerScans = db.RunnerScanDateTimes.Where(x => runnerInfos.Select(y => y.RunnerBIB).Contains(x.RunnerIdentification)); if (runnerScans.Any()) { db.RunnerScanDateTimes.DeleteAllOnSubmit(runnerScans); db.SubmitChanges(); MessageBox.Show($"Remove {eventName} {distance} successfully"); } else { MessageBox.Show($"{eventName} {distance} found no record"); } } } catch (Exception e) { MessageBox.Show(e.Message); } } }
public List <RunnerResult> SearchResult(string eventName, string distance) { _eventName = eventName; _distance = distance; string dateTimeFormat = "HH : mm : ss.fff"; CultureInfo thaiCulture = new CultureInfo("th-TH"); List <RunnerResult> result = new List <RunnerResult>(); using (RunnerDataContext db = new RunnerDataContext()) { var runnerInfos = db.RunnerInfos.Where(x => x.Event == eventName && x.Distance == distance).ToList(); var runnerScans = db.RunnerScanDateTimes.Where(x => runnerInfos.Select(y => y.RunnerBIB).Contains(x.RunnerIdentification)).GroupBy(x => x.RunnerIdentification).ToList(); foreach (var group in runnerScans) { var runnerMaxScannedTime = group.Max(x => x.ScannedDateTime); var runnerMinScannedTime = group.Min(x => x.ScannedDateTime); if (runnerMaxScannedTime > runnerMinScannedTime) { RunnerResult runnerStatus = new RunnerResult(); runnerStatus.RunnerIdentification = group.Key; var runnerInfo = runnerInfos.SingleOrDefault(x => x.RunnerBIB == group.Key); runnerStatus.Name = string.Concat(runnerInfo.FirstName, " ", runnerInfo.LastName); runnerStatus.Distance = runnerInfo.Distance; runnerStatus.StartTimeString = $"ที่เวลา {runnerMinScannedTime.ToString(dateTimeFormat, thaiCulture)}"; runnerStatus.EndTimeString = $"ที่เวลา {runnerMaxScannedTime.ToString(dateTimeFormat, thaiCulture)}"; var diffTime = (runnerMaxScannedTime - runnerMinScannedTime); var dateTimeTimeDiff = new DateTime(Math.Abs(diffTime.Ticks)); runnerStatus.Duration = dateTimeTimeDiff; runnerStatus.DurationString = $"{dateTimeTimeDiff.Hour} ชั่วโมง {dateTimeTimeDiff.Minute} นาที {dateTimeTimeDiff.Second}.{dateTimeTimeDiff.Millisecond} วินาที"; result.Add(runnerStatus); } } } return(result.OrderBy(x => x.Duration).ToList()); }
private void ClearDBRecords_Click(object sender, RoutedEventArgs e) { MessageBoxResult messageBoxResult = MessageBox.Show("Confirm clearing WHOLE runner record?", "Delete Confirmation", MessageBoxButton.YesNo); if (messageBoxResult == MessageBoxResult.Yes) { try { using (RunnerDataContext db = new RunnerDataContext()) { if (db.RunnerScanDateTimes.Any()) { db.RunnerScanDateTimes.DeleteAllOnSubmit(db.RunnerScanDateTimes); db.SubmitChanges(); } } MessageBox.Show("Clear Whole record successfully"); } catch (Exception ex) { MessageBox.Show(ex.Message); } } }