private void OnDBChanged(object source, RestEventArgs args) { switch (args.message) { case "Read DB Success": Console.WriteLine(args.TimeStamp.ToString() + " : Read Database Success"); break; case "Read DB Fail": Console.WriteLine(args.TimeStamp.ToString() + " : Read Database Fail"); break; case "Reset": Console.WriteLine(args.TimeStamp.ToString() + " : Reset DB"); break; case "Connected": //UpdateActivityMonitor(args, "Activity"); _dBStatus = true; UpdateConnectionStatus(args, "DBStatus", _dBStatus); //Update CSV File Status break; case "Disconnected": //UpdateActivityMonitor(args, "Activity"); _dBStatus = false; UpdateConnectionStatus(args, "DBStatus", _dBStatus); //Update Database File Status break; default: Console.WriteLine(DateTime.Now.ToString() + " : Main Alarm List No Msg. match"); break; } }
private void UpdateConnectionStatus(RestEventArgs args, string _target, bool state) { //EventChangedEventArgs LogArg = new EventChangedEventArgs(); var LastCsvItem = _mAlarmList.ListAlarm.LastOrDefault(); //Get First CSV Item if (_target == "CSVStatus") { CSVLastModify = _mAlarmList.CSVLastModify; strCSVStatus = state ? "Connection OK" : "Connection Fail"; CSVFile = this._connCfg.CsvFile; CSVLastAlarm = LastCsvItem != null ? (LastCsvItem.Time.ToString() + " : " + LastCsvItem.PointName) : "Non"; CSVBackgroundColor = state ? Brushes.Green : Brushes.Red; } else if (_target == "DBStatus") { //var db = new RestorationAlarmDbContext(); DBLastAccess = args.TimeStamp; strDBStatus = state ? "Database Connected" : "Can't Connect to Database"; DBName = this._connCfg.Server + ": " + this._connCfg.Database; DBSLastRec = LastRestAlarmPoint != null ? (LastRestAlarmPoint.DateTime.ToString() + " : " + LastRestAlarmPoint.ShortName) : "Non"; DBBackgroundColor = state ? Brushes.Green : Brushes.Red; } }
private void UpdateActivityMonitor(RestEventArgs args, string _target) { EventChangedEventArgs LogArg = new EventChangedEventArgs(); LogArg.TimeStamp = args.TimeStamp; LogArg.Message = args.message; LogArg.Target = _target; onUpdateActivityMonitor(LogArg); }
private async void OnAlarmListChanged(object source, RestEventArgs args) { // throw new NotImplementedException(); EventChangedEventArgs LogArg = new EventChangedEventArgs(); switch (args.message) { case "Read CSV Success": Console.WriteLine(args.TimeStamp.ToString() + " : Read AlarmList.csv Success"); onCheckCSVData(); UpdateConnectionStatus(args, "CSVStatus", true); //Update CSV File Status break; case "Read CSV Fail": Console.WriteLine(args.TimeStamp.ToString() + " : Read AlarmList.csv Fail"); //updateLogConsole((int)EventLogPosition.CSV_STATUS , "Read CSV Fail"); UpdateActivityMonitor(args, "Activity"); UpdateConnectionStatus(args, "CSVStatus", false); //Update CSV File Status break; case "Has New Alarm": Console.WriteLine(args.TimeStamp.ToString() + " : " + (_mAlarmList.ListAlarm.Count - _mAlarmList.nStartIndex - 1).ToString() + " New Alarm(s)"); await this.onHasNewAlarm(args); break; case "No New Alarm": Console.WriteLine(args.TimeStamp.ToString() + " : No New Alarm"); UpdateActivityMonitor(args, "Activity"); break; case "Start Process": Console.WriteLine(args.TimeStamp.ToString() + " : Start Data Processing"); await this.onStartProcess(args); //UpdateActivityMonitor(args, "Activity"); break; default: Console.WriteLine(DateTime.Now.ToString() + " : Main Alarm List No Msg. match"); //UpdateActivityMonitor(args, "Activity"); break; } }
private async Task <bool> onHasNewAlarm(RestEventArgs args) { if (!isDBConnected()) { Console.WriteLine("DBConnection Error"); _mAlarmList.nLastAlarmRecIndex = -1; // Reset to Ready State for Start Next time when DB Connected UpdateConnectionStatus(args, "DBStatus", false); //Update Database File Status return(false); } //Refresh Point from Database _DigitalPointInfoList = await _mRestorationAlarmList.GetAllDigitalPointInfoAsync(); if (_DigitalPointInfoList == null) { return(false); //Can't Access Database } //UpdateConnectionStatus(args, "DBStatus", true);//Update Database File Status return(await ProcessPoint(_mAlarmList.nStartIndex, args)); }
private async Task <bool> ProcessPoint(int StartIndex, RestEventArgs args) { this._nNewRestPoint = 0; this.RestAlarmList.Clear(); if (_flgMatchingInProgress == true) { return(false); } _flgMatchingInProgress = true; for (int iIndex = StartIndex + 1; iIndex < _mAlarmList.ListAlarm.Count; iIndex++) { AlarmList al = _mAlarmList.ListAlarm[iIndex]; if (al.pointType != PointType.Digital) { continue; } var groupByStations = _DigitalPointInfoList.Where(c => c.StationName.Trim() == al.StationName.Trim()); // Grouping Station before Mapping RestorationAlarmList point = _mAlarmList.GetRestorationAlarmPoint(al, groupByStations); //Mapping CSV Point --> DigitalPointInfo Table if (point != null) { try { this.RestAlarmList.Add(point); _nNewRestPoint++; } catch (Exception e) { Console.WriteLine(e.ToString()); } } } //_mAlarmList.nStartIndex = _mAlarmList.ListAlarm.Count - 1; // Index start with 0 //this.nLastAlarmRecIndex = _mAlarmList.nLastAlarmRecIndex; //Update LastAlarmRecIndex Display try { _mRestorationAlarmList.RestAlarmContext.RestorationAlarmList.AddRange(this.RestAlarmList); _mRestorationAlarmList.Complete(); var RestAlarmPointList = await Task.Run(() => _mRestorationAlarmList.GetRestorationAlarmListTimeDscAsync()); //Read RestorationAlarmList Table from DB if (RestAlarmPointList != null) { LastRestAlarmPoint = RestAlarmPointList.FirstOrDefault(); //Get Last Record } args.message = args.message + " " + (_mAlarmList.ListAlarm.Count - StartIndex - 1).ToString() + $" Alarm(s),:=> { _nNewRestPoint} Restoration Alarm(s)"; _mAlarmList.nStartIndex = _mAlarmList.ListAlarm.Count - 1; // Index start with 0 _mAlarmList.nLastAlarmRecIndex = (int)_mAlarmList.ListAlarm[_mAlarmList.ListAlarm.Count - 1].RecIndex; //Update LastAlarm Index this.nLastAlarmRecIndex = _mAlarmList.nLastAlarmRecIndex; //Update LastAlarmRecIndex Display Console.WriteLine("Current Index : " + nLastAlarmRecIndex); Console.WriteLine($"{DateTime.Now.ToString()} : Finish Matching--> Has {_nNewRestPoint} Restoration Alarm(s)"); UpdateActivityMonitor(args, "Activity"); //Upadte Activity after Dataprocessing UpdateConnectionStatus(args, "DBStatus", true); //Update Database Status //_mAlarmList.ListAlarm.Clear(); //Clear Data after using } catch { Console.WriteLine("Error while Inser to DB"); args.message = "Error while inser to DB"; UpdateActivityMonitor(args, "Activity"); return(true); } finally { _flgMatchingInProgress = false; } //updateLogConsole((int)EventLogPosition.REST_NEW_POINT, $"Has {_nNewRestPoint} Restoration Alarm(s)"); return(true); }
private async Task <bool> onStartProcess(RestEventArgs args) { this._nNewRestPoint = 0; this.RestAlarmList.Clear(); if (!isDBConnected()) { Console.WriteLine("DBConnection Error"); _mAlarmList.nLastAlarmRecIndex = -1; // Reset to Ready State for Start Next time when DB Connected UpdateConnectionStatus(args, "DBStatus", false); //Update Database File Status return(false); } var RestAlarmPointList = await _mRestorationAlarmList.GetRestorationAlarmListTimeDscAsync(); //Read RestorationAlarmList Table from DB if (RestAlarmPointList != null) { LastRestAlarmPoint = RestAlarmPointList.FirstOrDefault(); //Get Last Record } var LastCsvItem = _mAlarmList.ListAlarm.FirstOrDefault(); //Get First CSV Item this.nLastAlarmRecIndex = _mAlarmList.nLastAlarmRecIndex; //Update LastAlarmRecIndex Display if (RestAlarmPointList.Count == 0 || LastRestAlarmPoint.DateTime < LastCsvItem.Time) //Empty Database { //Refresh Point from Database _DigitalPointInfoList = await _mRestorationAlarmList.GetAllDigitalPointInfoAsync(); if (_DigitalPointInfoList == null) { return(false); //Can't Access Database } return(await ProcessPoint(_mAlarmList.nStartIndex, args)); } //Step 1 Compare Last DigitalPointInfoList Point int StartIndex = 0; AlarmList StartPoint = null; foreach (var item in _mAlarmList.ListAlarm) { StartIndex++; if (item.StationName.Trim() != LastRestAlarmPoint.StationName.Trim()) { continue; } if (item.PointName.Trim() != LastRestAlarmPoint.PointName.Trim()) { continue; } if (item.Time == LastRestAlarmPoint.DateTime) { StartPoint = item; //Start Position break; } } if (StartPoint == null) //No Match point { StartIndex = -1; } //Refresh Point from Database _DigitalPointInfoList = await _mRestorationAlarmList.GetAllDigitalPointInfoAsync(); if (_DigitalPointInfoList == null) { return(false); //Can't Access Database } // UpdateConnectionStatus(args, "DBStatus", true);//Update Database File Status return(await ProcessPoint(StartIndex, args)); }