public static async Task <int> UpdateDbWithNewLogEvents(DateTime trgDate, A0DbModel db) //todo: remove the dupes into central space { int rowsAddedSaved = 0; try { var t1 = trgDate; var t2 = trgDate.AddDays(.99999); await Task.Run(() => EvLogHelper.GetAllUpDnEvents(t1, t2)).ContinueWith(_ => { try { var dailyEvents = _.Result; if (dailyEvents.Count < 1) { Debug.WriteLine($"==>{trgDate:MMM-dd, ddd}: No events registered for the day."); } else { rowsAddedSaved = DbLogHelper.FindNewEventsToSaveToDb(_.Result, Environment.MachineName, $"Db.EvLog.Explr {trgDate}", db); } } catch (Exception ex) { ex.Log(); rowsAddedSaved = -5; } }, TaskScheduler.FromCurrentSynchronizationContext()); } catch (Exception ex) { ex.Log(); rowsAddedSaved = -1; } return(rowsAddedSaved); }
public RODBView(string dbfile) { InitializeComponent(); KeyDown += (s, ves) => { switch (ves.Key) { case Key.Escape: Close(); break; } }; _localdb = dbfile; FileAttributeHelper.RmvAttribute(_localdb, FileAttributes.ReadOnly); _db = A0DbModel.GetLclFl(dbfile); Loaded += onLoaded; samePC.IsEnabled = _localdb.Contains(Environment.MachineName); } // using AsLink.UI;
async void onLoaded(object s, RoutedEventArgs e) { vizroot.IsEnabled = false; try { tbInfo.Text = $"Loading ... "; tbCurVer.Text = $"{VerHelper.CurVerStr(".NET 5.0")}"; var itemsSrc = await DbLogHelper.AllPCsAsync(); tbInfo.Text = $"Loading {itemsSrc.Count} PCs... "; var _localdb = OneDrive.Folder($@"{DbLogHelper._dbSubP}LocalDb({Environment.MachineName}).mdf"); FileAttributeHelper.RmvAttribute(_localdb, FileAttributes.ReadOnly); var _db = A0DbModel.GetLclFl(_localdb); await _db.PcLogics.LoadAsync(); await _db.EvOfInts.LoadAsync(); //foreach (PcLogic item in ((List<PcLogic>)pcLogicDataGridRO.ItemsSource).Where(r => !r.MachineName.Equals(Environment.MachineName, StringComparison.OrdinalIgnoreCase))) _db.PcLogics.Local.Add(item); ((CollectionViewSource)(FindResource("pcLogicViewSource"))).Source = _db.PcLogics.Local; ((CollectionViewSource)(FindResource("evOfIntViewSource"))).Source = _db.EvOfInts.Local; tbInfo.Text = $"{_db.PcLogics.Local.Count} PCs with {_db.EvOfInts.Local.Count} events."; pcLogicDataGridRO.ItemsSource = itemsSrc; foreach (var item in itemsSrc) { if (item.MachineName.Equals(Environment.MachineName, StringComparison.OrdinalIgnoreCase)) { pcLogicDataGridRO.SelectedItem = item; } } pcLogicDataGridRO.Focus(); } catch (Exception ex) { ex.Pop();; } finally { vizroot.IsEnabled = true; } }
public (int newRows, string report, Stopwatch swstopwatch) CopyChunkyAzureSync(A0DbModel src, A0DbModel trg) { var rowsAdded = 0; var sw = Stopwatch.StartNew(); var srcSvrDb = src.ServerDatabase(); var trgSvrDb = trg.ServerDatabase(); foreach (var u in src.PcLogics) { if (!trg.PcLogics.Any(r => u.MachineName.Equals(r.MachineName, StringComparison.OrdinalIgnoreCase))) { trg.PcLogics.Add(new PcLogic { MachineName = u.MachineName, ColorRGB = u.ColorRGB, CreatedAt = u.CreatedAt ?? _now, Note = u.Note ?? $"data transfer from '{srcSvrDb}'.", Info = u.Info, LogReadAt = u.LogReadAt }); rowsAdded++; } } trg.EvOfInts.Load(); // chunky vs chattee var thisPcEvents = src.EvOfInts.Where(r => Environment.MachineName.Equals(r.MachineName, StringComparison.OrdinalIgnoreCase)); foreach (var s in thisPcEvents) { if (trg.EvOfInts.Local.Any(r => s.TimeID == r.TimeID && s.MachineName.Equals(r.MachineName, StringComparison.OrdinalIgnoreCase))) { Debug.WriteLine($" **> skipping match: {s.TimeID} {s.MachineName} "); } else { trg.EvOfInts.Local.Add(new EvOfInt { MachineName = s.MachineName, TimeID = s.TimeID, EvOfIntFlag = s.EvOfIntFlag }); rowsAdded++; } } var rowsSaved = trg.SaveChanges(); Debug.Assert(rowsAdded == rowsSaved, "ap: rowsChanged != rowsSaved"); return(rowsSaved, $"Success: {thisPcEvents.Count()} this PC rows found, {rowsAdded} copied from \n {srcSvrDb} to \n {trgSvrDb} in {sw.Elapsed:mm\\:ss} => {trg.EvOfInts.Count()} rows now.", sw); }