示例#1
0
        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);
        }
示例#2
0
 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; }
        }
示例#4
0
        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);
        }