// GET: /Monitoring/SummaryReport/GetCurrentDeviceStatus public ActionResult GetCurrentDeviceStatus(JQueryDataTableParamModel param, int?clientID) { param.iSortColumn = null; try { if (clientID == null) { var ret = new { status = 0, error = "Client ID cannot be null." }; return(Json(ret)); } var serviceClient = new RMS.Centralize.WebSite.Proxy.ClientService().clientService; var clientResult = serviceClient.GetClient(GetClientBy.ClientID, clientID, null, null, true, false); if (clientResult != null && clientResult.IsSuccess && clientID != null) { var service = new RMS.Centralize.WebSite.Proxy.SummaryReportService().summaryReportService; var result = service.SearchSummaryMonitoring(param, null, null, null, null , null, null, "1", clientID); List <DeviceStatus> lDeviceStatuses = new List <DeviceStatus>(); foreach (var monitoringProfileDevice in clientResult.ListMonitoringProfileDevices) { RmsMonitoringProfileDevice device = monitoringProfileDevice; if (result.ListSummaryMonitorings == null) { result.ListSummaryMonitorings = new List <ReportSummaryMonitoring>(); } var summaryMonitorings = result.ListSummaryMonitorings.Where(smg => smg.MonitoringProfileDeviceId == device.MonitoringProfileDeviceId); List <ReportSummaryMonitoring> lReports = new List <ReportSummaryMonitoring>(summaryMonitorings.ToList()); // ถ้าเจอ แสดงว่า ไม่ปกติ if (lReports.Count > 0) { foreach (var report in lReports) { int?deviceTypeID = FindDeviceTypeIDByDeviceID(clientResult.ListDevices, report.DeviceId); var dt = clientResult.ListDeviceType.First(t => t.DeviceTypeId == deviceTypeID); if (dt != null) { DeviceStatus ds = new DeviceStatus(report.Id, dt.DeviceTypeId, dt.DeviceType, dt.DisplayOrder, device.DeviceDescription , report.Status, report.MessageId, report.Message, report.MessageRemark, report.MonitoringProfileDeviceId , report.LastActionDateTime, report.LastActionType, report.LevelName , report.ColorCode, report.ColorTagStart, report.ColorTagEnd, report.MessageDateTime); lDeviceStatuses.Add(ds); } } } // ถ้าไม่พบ แสดงว่า อุปกรณ์ปกติ ให้ใส่ dummy data else { int?deviceTypeID = FindDeviceTypeIDByDeviceID(clientResult.ListDevices, device.DeviceId); var dt = clientResult.ListDeviceType.First(t => t.DeviceTypeId == deviceTypeID); if (dt != null) { DeviceStatus ds = new DeviceStatus(0, dt.DeviceTypeId, dt.DeviceType, dt.DisplayOrder, device.DeviceDescription, 0, 0, "Good", null, device.MonitoringProfileDeviceId, null, null, null, "success", "<span class=\"label label-success\">", "</span>", null); lDeviceStatuses.Add(ds); } } } lDeviceStatuses = new List <DeviceStatus>(lDeviceStatuses.OrderBy(o => o.DisplayOrder).ThenBy(o => o.DeviceDescription).ThenBy(o => o.MessageDateTime)); string deviceName = ""; foreach (var deviceStatus in lDeviceStatuses) { if (deviceStatus.DeviceDescription == deviceName) { deviceStatus.DeviceDescription = ""; continue; } deviceName = deviceStatus.DeviceDescription; } int?totalRecords = 0; totalRecords = lDeviceStatuses.Count; var data = new { sEcho = param.sEcho, iTotalRecords = totalRecords, iTotalDisplayRecords = totalRecords, aaData = lDeviceStatuses, status = (result.IsSuccess) ? 1 : 0, error = result.ErrorMessage }; return(Json(data)); } var data2 = new { status = 0, error = "Client Not Found" }; return(Json(data2)); } catch (Exception ex) { var data = new { status = 0, error = ex.Message }; new RMSWebException(this, "0500", "GetCurrentDeviceStatus failed. " + ex.Message, ex, true); return(Json(data)); } }
public List <DeviceStatus> SelfMonitoring(string clientCode) { /* * * 1. Call Centralize or Local to Get Client & Device Info for Monitoring * 2. Check Device Monitoring * */ try { #region 1. Call Centralize to Get Client & Device Info for Monitoring string localStorage = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) + @"\LocalStorage"; localStorage = (ConfigurationManager.AppSettings["RMS.LocalStorage"] ?? localStorage); string localClientFile = localStorage + @"\clientResult.xml"; string xmlLocalClient = string.Empty; if (File.Exists(localClientFile)) { lock (_lockClientFile) { xmlLocalClient = File.ReadAllText(localClientFile); } } ClientResult clientResult = null; try { if (xmlLocalClient == string.Empty) { throw new Exception("Local Client Data Not Found. Try to call server."); } clientResult = Helper.Serializer.XML.DeserializeObject <ClientResult>(xmlLocalClient); } catch (Exception myEx1) { new RMSAppException(this, "0500", "SelfMonitoring failed. " + myEx1.Message, myEx1, true); Configuration config; ExeConfigurationFileMap configFile = new ExeConfigurationFileMap(); configFile.ExeConfigFilename = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) + @"\Local.config"; config = ConfigurationManager.OpenMappedExeConfiguration(configFile, ConfigurationUserLevel.None); if (config.AppSettings.Settings["RMS.CLIENT_CODE"] != null) { clientCode = config.AppSettings.Settings["RMS.CLIENT_CODE"].Value; } ClientServiceClient cs = new ClientService().clientService; clientResult = cs.GetClient(GetClientBy.ClientCode, null, clientCode, null, true, true); try { var directoryName = Path.GetDirectoryName(localClientFile); if (directoryName != null && !Directory.Exists(directoryName)) { Directory.CreateDirectory(directoryName); } string strResultList = Serializer.XML.SerializeObject(clientResult); lock (_lockClientFile) { using (TextWriter tw = new StreamWriter(localClientFile, false)) // Create & open the file { tw.Write(strResultList); tw.Close(); } } } catch (Exception myEx2) { new RMSAppException(this, "0500", "SelfMonitoring failed. " + myEx2.Message, myEx2, true); } } if (clientResult == null) { throw new Exception("Unable to restore clientResult object."); } int?deviceId = null; int?monitoringProfileDeviceId = null; var rmsMonitoringProfileDevicebyDeviceCode = RMS.Monitoring.Helper.Common.GetRmsMonitoringProfileDevicebyDeviceCode(clientResult, "CLIENT", RMS.Monitoring.Helper.Models.DeviceCode.Client); var rmsMonitoringProfileDevices = rmsMonitoringProfileDevicebyDeviceCode; // for CLIENT code, there are only one rmsMonitoringProfileDevices if (rmsMonitoringProfileDevices.Count > 0) { monitoringProfileDeviceId = rmsMonitoringProfileDevices[0].MonitoringProfileDeviceId; } #endregion List <RmsReportMonitoringRaw> monitoringRaws = new List <RmsReportMonitoringRaw>(); #region 2. Check Device Monitoring try { var monitoringService = new RMS.Monitoring.Core.MonitoringService(); // Performance monitoringRaws.AddRange(monitoringService.Monitoring("performance", clientResult)); // Device monitoringRaws.AddRange(monitoringService.Monitoring("device", clientResult)); //return monitoringRaws; } catch (Exception ex) { throw new RMSAppException(this, "0500", "Check Local Device Monitoring failed. " + ex.Message, ex, false); } #endregion List <DeviceStatus> lDeviceStatuses = new List <DeviceStatus>(); #region Reorder Process foreach (var raw in monitoringRaws) { RmsMonitoringProfileDevice mpd = clientResult.ListMonitoringProfileDevices.FirstOrDefault(a => a.MonitoringProfileDeviceId == raw.MonitoringProfileDeviceId); if (mpd == null) { continue; //Something wrong } RmsDevice rd = clientResult.ListDevices.FirstOrDefault(a => a.DeviceId == mpd.DeviceId); if (rd == null) { continue; //Something wrong } RmsDeviceType rdt = clientResult.ListDeviceType.FirstOrDefault(a => a.DeviceTypeId == rd.DeviceTypeId); if (rdt == null) { continue; //Something wrong } DeviceStatus ds = new DeviceStatus(rdt.DeviceTypeId, rdt.DeviceType, rdt.DisplayOrder, mpd.DeviceDescription, raw.Message, raw.MessageRemark, raw.MonitoringProfileDeviceId, raw.MessageDateTime); lDeviceStatuses.Add(ds); } lDeviceStatuses = new List <DeviceStatus>(lDeviceStatuses.OrderBy(o => o.DisplayOrder).ThenBy(o => o.DeviceDescription).ThenBy(o => o.MessageDateTime)); string deviceName = ""; foreach (var deviceStatus in lDeviceStatuses) { deviceStatus.MonitoringProfileDeviceID = null; if (deviceStatus.DeviceDescription == deviceName) { deviceStatus.DeviceDescription = ""; continue; } deviceName = deviceStatus.DeviceDescription; } #endregion return(lDeviceStatuses); } catch (Exception ex) { throw new RMSAppException(this, "0500", "SelfMonitoring failed. " + ex.Message, ex, true); } }