示例#1
0
        public JsonResult GetDeviceTypes(int start, int limit)
        {
            var data = new AjaxDataModel <List <ComboItem <int, string> > > {
                success = true,
                message = "No data",
                total   = 0,
                data    = new List <ComboItem <int, string> >()
            };

            try {
                var models = _deviceService.GetTypes();
                if (models.Count > 0)
                {
                    data.message = "200 Ok";
                    data.total   = models.Count;
                    data.data.AddRange(models.Select(d => new ComboItem <int, string> {
                        id = d.Key, text = d.Value
                    }));
                }
            } catch (Exception exc) {
                data.success = false;
                data.message = exc.Message;
            }

            return(Json(data, JsonRequestBehavior.AllowGet));
        }
示例#2
0
        public JsonResult GetProject(string id, int action)
        {
            var data = new AjaxDataModel <ProjectModel> {
                success = true,
                message = "200 Ok",
                total   = 0,
                data    = new ProjectModel {
                    index       = 1,
                    id          = Guid.NewGuid().ToString(),
                    name        = "",
                    start       = CommonHelper.DateConverter(DateTime.Today),
                    end         = CommonHelper.DateConverter(DateTime.Today.AddDays(7)),
                    responsible = "",
                    contact     = "",
                    company     = "",
                    creator     = _workContext.Employee() != null?_workContext.Employee().Name : _workContext.User().Uid,
                    createdtime = CommonHelper.DateConverter(DateTime.Now),
                    comment     = "",
                    enabled     = true
                }
            };

            try {
                if (action == (int)EnmAction.Add)
                {
                    return(Json(data, JsonRequestBehavior.AllowGet));
                }

                if (string.IsNullOrWhiteSpace(id))
                {
                    throw new ArgumentException("id");
                }

                if (action != (int)EnmAction.Edit)
                {
                    throw new ArgumentException("action");
                }

                var project = _projectService.GetProject(id);
                if (project == null)
                {
                    throw new iPemException("未找到数据对象");
                }

                data.data.id          = project.Id;
                data.data.name        = project.Name;
                data.data.start       = CommonHelper.DateConverter(project.StartTime);
                data.data.end         = CommonHelper.DateConverter(project.EndTime);
                data.data.responsible = project.Responsible;
                data.data.contact     = project.ContactPhone;
                data.data.company     = project.Company;
                data.data.comment     = project.Comment;
                data.data.enabled     = project.Enabled;
                return(Json(data, JsonRequestBehavior.AllowGet));
            } catch (Exception exc) {
                _webLogger.Error(EnmEventType.Other, exc.Message, _workContext.User().Id, exc);
                data.success = false; data.message = exc.Message;
                return(Json(data, JsonRequestBehavior.AllowGet));
            }
        }
示例#3
0
        public JsonResult GetAlarmLevels(int start, int limit)
        {
            var data = new AjaxDataModel <List <ComboItem <int, string> > > {
                success = true,
                message = "No data",
                total   = 0,
                data    = new List <ComboItem <int, string> >()
            };

            try {
                foreach (EnmAlarmLevel level in Enum.GetValues(typeof(EnmAlarmLevel)))
                {
                    if (level == EnmAlarmLevel.NoAlarm)
                    {
                        continue;
                    }
                    data.data.Add(new ComboItem <int, string>()
                    {
                        id = (int)level, text = Common.GetAlarmDisplay(level)
                    });
                }

                if (data.data.Count > 0)
                {
                    data.total   = data.data.Count;
                    data.message = "200 Ok";
                }
            } catch (Exception exc) {
                data.success = false;
                data.message = exc.Message;
            }

            return(Json(data, JsonRequestBehavior.AllowGet));
        }
示例#4
0
        public JsonResult GetFiles(int start, int limit, string key, string name, bool cache)
        {
            var data = new AjaxDataModel <List <FileModel> > {
                success = true,
                message = "无数据",
                total   = 0,
                data    = new List <FileModel>()
            };

            try {
                var files = this.GetFtpFiles(key, name, cache);
                if (files != null && files.Count > 0)
                {
                    data.message = "200 OK";
                    data.total   = files.Count;

                    var end = start + limit;
                    if (end > files.Count)
                    {
                        end = files.Count;
                    }

                    for (int i = start; i < end; i++)
                    {
                        data.data.Add(files[i]);
                    }
                }
            } catch (Exception exc) {
                data.success = false; data.message = exc.Message;
            }

            return(Json(data, JsonRequestBehavior.AllowGet));
        }
示例#5
0
        public JsonResult GetComboProjects(int start, int limit)
        {
            var data = new AjaxDataModel <List <ComboItem <string, string> > > {
                success = true,
                message = "无数据",
                total   = 0,
                data    = new List <ComboItem <string, string> >()
            };

            try {
                var models = _projectService.GetValidProjects().OrderByDescending(p => p.CreatedTime).Select(p => new ComboItem <string, string> {
                    id = p.Id.ToString(), text = p.Name
                });
                var result = new PagedList <ComboItem <string, string> >(models, start / limit, limit, models.Count());
                if (result.Count > 0)
                {
                    data.message = "200 Ok";
                    data.total   = result.TotalCount;
                    for (var i = 0; i < result.Count; i++)
                    {
                        data.data.Add(result[i]);
                    }
                }
            } catch (Exception exc) {
                _webLogger.Error(EnmEventType.Other, exc.Message, _workContext.User().Id, exc);
                data.success = false;
                data.message = exc.Message;
            }

            return(Json(data, JsonRequestBehavior.AllowGet));
        }
示例#6
0
        public JsonResult RequestPoints(string node, int[] types)
        {
            var data = new AjaxDataModel <List <PointModel> > {
                success = true,
                message = "无数据",
                total   = 0,
                data    = new List <PointModel>()
            };

            try {
                if (types != null && types.Length > 0)
                {
                    var keys = Common.SplitKeys(node);
                    if (keys.Length == 2)
                    {
                        var type     = int.Parse(keys[0]);
                        var id       = int.Parse(keys[1]);
                        var gid      = Common.GroupId;
                        var nodeType = Enum.IsDefined(typeof(EnmScType), type) ? (EnmScType)type : EnmScType.None;
                        if (nodeType == EnmScType.Device)
                        {
                            var points = _pointService.GetPoints(id, types.Contains((int)EnmScType.Aic), types.Contains((int)EnmScType.Aoc), types.Contains((int)EnmScType.Dic), types.Contains((int)EnmScType.Doc));
                            var values = _valueService.GetValues(id, types.Contains((int)EnmScType.Aic), types.Contains((int)EnmScType.Aoc), types.Contains((int)EnmScType.Dic), types.Contains((int)EnmScType.Doc));
                            var pWv    = from point in points
                                         join value in values on new { Id = point.Id, Type = point.Type } equals new { Id = value.NodeId, Type = value.NodeType } into temp
                            from pv in temp.DefaultIfEmpty()
                            select new {
                                Point = point,
                                Value = pv
                            };

                            foreach (var pv in pWv)
                            {
                                data.data.Add(new PointModel {
                                    id            = pv.Point.Id,
                                    name          = pv.Point.Name,
                                    type          = (int)pv.Point.Type,
                                    typeDisplay   = Common.GetScTypeDisplay(pv.Point.Type),
                                    value         = pv.Value != null ? pv.Value.Value : 0f,
                                    valueDisplay  = pv.Value != null ? Common.GetValueDisplay(pv.Point, pv.Value.Value) : Common.GetValueDisplay(pv.Point, 0),
                                    status        = pv.Value != null ? (int)pv.Value.State : (int)EnmPointStatus.Invalid,
                                    statusDisplay = pv.Value != null ? Common.GetPointStatusDisplay(pv.Value.State) : Common.GetPointStatusDisplay(EnmPointStatus.Invalid),
                                    timestamp     = pv.Value != null ? CommonHelper.DateTimeConverter(pv.Value.UpdateTime) : CommonHelper.DateTimeConverter(DateTime.Now),
                                    shortTime     = pv.Value != null ? CommonHelper.ShortTimeConverter(pv.Value.UpdateTime) : CommonHelper.ShortTimeConverter(DateTime.Now)
                                });
                            }

                            data.total   = data.data.Count;
                            data.message = "200 Ok";
                        }
                    }
                }
            } catch (Exception exc) {
                data.success = false;
                data.message = exc.Message;
            }

            return(Json(data, JsonRequestBehavior.AllowGet));
        }
示例#7
0
        public JsonResult GetWpfCtrlObj(string node)
        {
            var data = new AjaxDataModel <GviewCtrlModel> {
                success = false,
                message = "No data",
                total   = 0,
                data    = null
            };

            try {
                if (string.IsNullOrWhiteSpace(node))
                {
                    throw new ArgumentNullException("node");
                }

                var ids = Common.SplitKeys(node);
                if (ids.Length != 2)
                {
                    throw new ArgumentException("node");
                }

                var device = _workContext.Devices().Find(r => r.Current.Id.Equals(ids[0]));
                if (device == null)
                {
                    throw new iPemException("未找到设备信息");
                }

                var point = _workContext.Points().Find(p => p.Id.Equals(ids[1]));
                if (point == null)
                {
                    throw new iPemException("未找到信号信息");
                }

                if (point.Type != EnmPoint.AO && point.Type != EnmPoint.DO)
                {
                    throw new iPemException("信号类型错误");
                }

                data.success         = true;
                data.message         = "200 Ok";
                data.total           = 1;
                data.data            = new GviewCtrlModel();
                data.data.deviceId   = device.Current.Id;
                data.data.deviceName = device.Current.Name;
                data.data.pointId    = point.Id;
                data.data.pointName  = point.Name;
                data.data.pointType  = (int)point.Type;
            } catch (Exception exc) {
                data.success = false;
                data.message = exc.Message;
            }

            return(Json(data, JsonRequestBehavior.AllowGet));
        }
示例#8
0
        public JsonResult RequestHisAlarms(string node, int[] stationtypes, int[] devicetypes, int[] alarmlevels, DateTime startdate, DateTime enddate, double interval, int start, int limit)
        {
            var data = new AjaxDataModel <List <HisAlarmModel> > {
                success = true,
                message = "无数据",
                total   = 0,
                data    = new List <HisAlarmModel>()
            };

            try {
                var models = this.GetHisAlarms(node, stationtypes, devicetypes, alarmlevels, startdate, enddate, interval);
                if (models.Count > 0)
                {
                    data.message = "200 Ok";
                    data.total   = models.Count;

                    var end = start + limit;
                    if (end > models.Count)
                    {
                        end = models.Count;
                    }

                    for (int i = start; i < end; i++)
                    {
                        data.data.Add(new HisAlarmModel {
                            index         = i + 1,
                            id            = models[i].Id,
                            level         = (int)models[i].AlarmLevel,
                            levelDisplay  = Common.GetAlarmDisplay(models[i].AlarmLevel),
                            area          = models[i].AreaName,
                            station       = models[i].StationName,
                            device        = models[i].DeviceName,
                            point         = models[i].PointName,
                            comment       = models[i].AlarmDesc,
                            alarmValue    = models[i].AlarmValue,
                            endValue      = models[i].EndValue,
                            startTime     = CommonHelper.DateTimeConverter(models[i].StartTime),
                            endTime       = CommonHelper.DateTimeConverter(models[i].EndTime),
                            confirmer     = models[i].ConfirmName,
                            confirmedTime = CommonHelper.DateTimeConverter(models[i].ConfirmTime),
                            interval      = CommonHelper.IntervalConverter(models[i].StartTime, models[i].EndTime),
                            endType       = Common.GetAlarmEndDisplay(models[i].EndType),
                            background    = Common.GetAlarmColor(models[i].AlarmLevel)
                        });
                    }
                }
            } catch (Exception exc) {
                data.success = false;
                data.message = exc.Message;
            }

            return(Json(data, JsonRequestBehavior.AllowGet));
        }
示例#9
0
        public string GetDevices(string token, int node, int start = 0, int limit = int.MaxValue)
        {
            var data = new AjaxDataModel <List <DeviceModel> > {
                success = false,
                message = "无数据",
                total   = 0,
                data    = new List <DeviceModel>()
            };

            try {
                if (string.IsNullOrWhiteSpace(token))
                {
                    throw new Exception("无效的令牌");
                }

                if (!_cacheManager.IsSet(token))
                {
                    throw new Exception("无效的令牌");
                }

                var user    = _cacheManager.Get <User>(token);
                var devices = node == -1 ? _deviceService.GetAllDevices(user.GroupId) : _deviceService.GetDevices(node);
                data.success = true;
                data.message = "200 Ok";
                data.total   = devices.Count;

                var end = start + limit;
                if (end > devices.Count)
                {
                    end = devices.Count;
                }

                for (int i = start; i < end; i++)
                {
                    data.data.Add(new DeviceModel {
                        id   = devices[i].Id,
                        name = devices[i].Name,
                        type = devices[i].DeviceTypeName
                    });
                }
            } catch (Exception exc) {
                data.message = exc.Message;
            }

            return(JsonConvert.SerializeObject(data, new JsonSerializerSettings {
                DefaultValueHandling = DefaultValueHandling.Include
            }));
        }
示例#10
0
        public JsonResult GetProjects(int start, int limit, string name, DateTime startDate, DateTime endDate)
        {
            var data = new AjaxDataModel <List <ProjectModel> > {
                success = true,
                message = "无数据",
                total   = 0,
                data    = new List <ProjectModel>()
            };

            try {
                startDate = startDate.Date;
                endDate   = endDate.Date.AddSeconds(86399);

                var names    = Common.SplitCondition(name);
                var projects = names.Length > 0 ?
                               _projectService.GetPagedProjectsInNames(names, startDate, endDate, start / limit, limit) :
                               _projectService.GetPagedProjectsInSpan(startDate, endDate, start / limit, limit);

                if (projects.TotalCount > 0)
                {
                    data.message = "200 Ok";
                    data.total   = projects.TotalCount;
                    for (var i = 0; i < projects.Count; i++)
                    {
                        data.data.Add(new ProjectModel {
                            index       = start + i + 1,
                            id          = projects[i].Id,
                            name        = projects[i].Name,
                            start       = CommonHelper.DateConverter(projects[i].StartTime),
                            end         = CommonHelper.DateConverter(projects[i].EndTime),
                            responsible = projects[i].Responsible,
                            contact     = projects[i].ContactPhone,
                            company     = projects[i].Company,
                            creator     = projects[i].Creator,
                            createdtime = CommonHelper.DateTimeConverter(projects[i].CreatedTime),
                            comment     = projects[i].Comment,
                            enabled     = projects[i].Enabled
                        });
                    }
                }
            } catch (Exception exc) {
                _webLogger.Error(EnmEventType.Other, exc.Message, _workContext.User().Id, exc);
                data.success = false; data.message = exc.Message;
            }
            return(Json(data, JsonRequestBehavior.AllowGet));
        }
示例#11
0
        public string GetVideoPoints(string token)
        {
            var data = new AjaxDataModel <List <GVideoModel> > {
                success = true,
                message = "无数据",
                total   = 0,
                data    = new List <GVideoModel>()
            };

            try {
                if (string.IsNullOrWhiteSpace(token) || !_cacheManager.IsSet(token))
                {
                    throw new Exception("无效令牌");
                }

                var models = _gvideoService.GetEntities();
                if (models.Count > 0)
                {
                    data.message = "200 OK";
                    data.total   = models.Count;
                    foreach (var model in models)
                    {
                        data.data.Add(new GVideoModel {
                            id      = model.Id,
                            enabled = model.Enabled,
                            name    = model.Name,
                            type    = model.Type,
                            ip      = model.Ip,
                            port    = model.Port,
                            uid     = model.Uid,
                            pwd     = model.Pwd,
                            auxSet  = model.AuxSet,
                            imgPort = model.ImgPort,
                            portId  = model.PortId
                        });
                    }
                }
            } catch (Exception exc) {
                data.success = false;
                data.message = exc.Message;
            }
            return(JsonConvert.SerializeObject(data, new JsonSerializerSettings {
                DefaultValueHandling = DefaultValueHandling.Include
            }));
        }
示例#12
0
        public JsonResult SearchOrganization(string text)
        {
            var data = new AjaxDataModel <List <string[]> > {
                success = true,
                message = "No data",
                total   = 0,
                data    = new List <string[]>()
            };

            try {
                if (!string.IsNullOrWhiteSpace(text))
                {
                    text = text.Trim().ToLower();

                    var gid        = Common.GroupId;
                    var areas      = _areaService.GetAreas(gid);
                    var areaMatchs = areas.FindAll(a => a.Name.ToLower().Contains(text));
                    foreach (var match in areaMatchs)
                    {
                        var paths = GetAreaPath(areas, match);
                        if (paths.Count > 0)
                        {
                            data.data.Add(paths.ToArray());
                        }
                    }

                    var stations  = _stationService.GetStations(gid);
                    var staMatchs = stations.FindAll(s => s.Name.ToLower().Contains(text));
                    foreach (var match in staMatchs)
                    {
                        var paths = GetAreaPath(areas, match.AreaId);
                        paths.Add(Common.JoinKeys((int)EnmScType.Station, match.Id));
                        data.data.Add(paths.ToArray());
                    }

                    data.message = "200 Ok";
                    data.total   = data.data.Count;
                }
            } catch (Exception exc) {
                data.success = false;
                data.message = exc.Message;
            }

            return(Json(data, JsonRequestBehavior.AllowGet));
        }
示例#13
0
        public JsonResult GetUpgradeFiles(int start, int limit)
        {
            var data = new AjaxDataModel <List <ComboItem <string, string> > > {
                success = true,
                message = "No data",
                total   = 0,
                data    = new List <ComboItem <string, string> >()
            };

            try {
                var ftp = _ftpService.GetFtps(EnmFtp.Master).FirstOrDefault();
                if (ftp != null)
                {
                    ftp.Directory = "Update";
                    var files = this.GetFtpFiles(ftp);
                    foreach (var file in files.OrderByDescending(f => f.date))
                    {
                        data.data.Add(new ComboItem <string, string>()
                        {
                            id = file.name, text = file.name, comment = file.date
                        });
                    }
                }

                if (data.data.Count > 0)
                {
                    data.total   = data.data.Count;
                    data.message = "200 Ok";
                }
            } catch (Exception exc) {
                data.success = false;
                data.message = exc.Message;
            }

            return(Json(data, JsonRequestBehavior.AllowGet));
        }
示例#14
0
        public string GetStations(string token, int node, int start = 0, int limit = int.MaxValue)
        {
            var data = new AjaxDataModel <List <StationModel> > {
                success = false,
                message = "无数据",
                total   = 0,
                data    = new List <StationModel>()
            };

            try {
                if (string.IsNullOrWhiteSpace(token))
                {
                    throw new Exception("无效的令牌");
                }

                if (!_cacheManager.IsSet(token))
                {
                    throw new Exception("无效的令牌");
                }

                var user     = _cacheManager.Get <User>(token);
                var stations = node == -1 ? _stationService.GetStations(user.GroupId) : _stationService.GetStations(user.GroupId, node);
                var areas    = _areaService.GetAreas(user.GroupId);
                data.success = true;
                data.message = "200 Ok";
                data.total   = stations.Count;

                var end = start + limit;
                if (end > stations.Count)
                {
                    end = stations.Count;
                }

                for (int i = start; i < end; i++)
                {
                    var current  = stations[i];
                    var county   = string.Empty;
                    var city     = string.Empty;
                    var province = string.Empty;

                    var area = areas.Find(a => a.Id == current.AreaId);
                    if (area != null)
                    {
                        county = area.Name;
                        var parea = areas.Find(a => a.Id == area.LastId);
                        if (parea != null)
                        {
                            city = parea.Name;
                            var pparea = areas.Find(a => a.Id == parea.LastId);
                            if (pparea != null)
                            {
                                province = pparea.Name;
                            }
                        }
                    }

                    data.data.Add(new StationModel {
                        id       = current.Id,
                        name     = current.Name,
                        type     = current.StationTypeName,
                        county   = county,
                        city     = city,
                        province = province
                    });
                }
            } catch (Exception exc) {
                data.message = exc.Message;
            }

            return(JsonConvert.SerializeObject(data, new JsonSerializerSettings {
                DefaultValueHandling = DefaultValueHandling.Include
            }));
        }
示例#15
0
        public string GetOrganization(string token, string node)
        {
            var data = new AjaxDataModel <List <TreeModel> > {
                success = false,
                message = "无数据",
                total   = 0,
                data    = new List <TreeModel>()
            };

            try {
                if (string.IsNullOrWhiteSpace(token))
                {
                    throw new Exception("无效的令牌");
                }

                if (!_cacheManager.IsSet(token))
                {
                    throw new Exception("无效的令牌");
                }

                if (string.IsNullOrWhiteSpace(node))
                {
                    throw new Exception("无效的节点");
                }

                var user = _cacheManager.Get <User>(token);
                if (node == "root")
                {
                    #region root
                    var roots = _areaService.GetAreas(user.GroupId).FindAll(a => a.LastId == 0);
                    data.success = true;
                    data.message = "200 Ok";
                    data.total   = roots.Count;
                    for (var i = 0; i < roots.Count; i++)
                    {
                        var root = new TreeModel {
                            id       = roots[i].Id.ToString(),
                            text     = roots[i].Name,
                            selected = false,
                            icon     = "Area",
                            expanded = false,
                            leaf     = false
                        };

                        data.data.Add(root);
                    }
                    #endregion
                }
                else
                {
                    data.message = "无效的节点";
                    var keys = Common.SplitKeys(node);
                    if (keys.Length == 2)
                    {
                        var type     = int.Parse(keys[0]);
                        var id       = int.Parse(keys[1]);
                        var gid      = user.GroupId;
                        var nodeType = Enum.IsDefined(typeof(EnmScType), type) ? (EnmScType)type : EnmScType.None;
                        if (nodeType == EnmScType.Area)
                        {
                            #region area organization
                            var areas    = _areaService.GetAreas(gid);
                            var children = areas.FindAll(a => a.LastId == id);
                            if (children.Count > 0)
                            {
                                data.success = true;
                                data.message = "200 Ok";
                                data.total   = children.Count;
                                for (var i = 0; i < children.Count; i++)
                                {
                                    var root = new TreeModel {
                                        id       = children[i].Id.ToString(),
                                        text     = children[i].Name,
                                        selected = false,
                                        icon     = "Area",
                                        expanded = false,
                                        leaf     = false
                                    };

                                    data.data.Add(root);
                                }
                            }
                            else
                            {
                                var stations = _stationService.GetStations(gid, id);
                                if (stations.Count > 0)
                                {
                                    data.success = true;
                                    data.message = "200 Ok";
                                    data.total   = stations.Count;
                                    for (var i = 0; i < stations.Count; i++)
                                    {
                                        var root = new TreeModel {
                                            id       = stations[i].Id.ToString(),
                                            text     = stations[i].Name,
                                            selected = false,
                                            icon     = "Station",
                                            expanded = false,
                                            leaf     = false
                                        };

                                        data.data.Add(root);
                                    }
                                }
                            }
                            #endregion
                        }
                        else if (nodeType == EnmScType.Station)
                        {
                            #region station organization
                            var devices = _deviceService.GetDevices(id);
                            if (devices.Count > 0)
                            {
                                data.success = true;
                                data.message = "200 Ok";
                                data.total   = devices.Count;
                                for (var i = 0; i < devices.Count; i++)
                                {
                                    var root = new TreeModel {
                                        id       = devices[i].Id.ToString(),
                                        text     = devices[i].Name,
                                        selected = false,
                                        icon     = "Device",
                                        expanded = false,
                                        leaf     = true
                                    };

                                    data.data.Add(root);
                                }
                            }
                            #endregion
                        }
                        else if (nodeType == EnmScType.Device)
                        {
                            #region device organization

                            data.success = true;
                            data.message = "No Data";
                            data.total   = 0;

                            #endregion
                        }
                    }
                }
            } catch (Exception exc) {
                data.message = exc.Message;
            }

            return(JsonConvert.SerializeObject(data, new JsonSerializerSettings {
                DefaultValueHandling = DefaultValueHandling.Include
            }));
        }
示例#16
0
        public JsonResult GetMarkers(double minlng, double minlat, double maxlng, double maxlat)
        {
            var data = new AjaxDataModel <List <MarkerModel> > {
                success = true,
                message = "No data",
                total   = 0,
                data    = new List <MarkerModel>()
            };

            try {
                var currentGroupId = Common.GroupId;
                var stations       = _stationService.GetStations(currentGroupId).FindAll(s => {
                    return(s.Longitude >= minlng && s.Longitude <= maxlng && s.Latitude >= minlat && s.Latitude <= maxlat);
                });

                if (stations.Count > 0)
                {
                    if (stations.Count > 100)
                    {
                        stations = stations.Take(100).ToList();
                    }

                    data.message = "200 Ok";
                    data.total   = stations.Count;

                    var alarms  = _alarmService.GetAllActAlarms();
                    var devices = _deviceService.GetAllDevices(currentGroupId);
                    var almWDev = from alarm in alarms
                                  join device in devices on alarm.DeviceId equals device.Id
                                  select new {
                        Alarm  = alarm,
                        Device = device
                    };

                    var almsInSta = from awd in almWDev
                                    group awd by awd.Device.PId into g
                                    select new {
                        Id     = g.Key,
                        Alarms = g.Select(a => a.Alarm)
                    };

                    foreach (var station in stations)
                    {
                        var model = new MarkerModel()
                        {
                            id   = station.Id.ToString(),
                            name = station.Name,
                            type = station.StationTypeName,
                            lng  = station.Longitude,
                            lat  = station.Latitude
                        };

                        var eachSta = almsInSta.FirstOrDefault(s => s.Id == station.Id);
                        if (eachSta != null)
                        {
                            model.alm1 = eachSta.Alarms.Count(a => a.AlarmLevel == EnmAlarmLevel.Level1);
                            model.alm2 = eachSta.Alarms.Count(a => a.AlarmLevel == EnmAlarmLevel.Level2);
                            model.alm3 = eachSta.Alarms.Count(a => a.AlarmLevel == EnmAlarmLevel.Level3);
                            model.alm4 = eachSta.Alarms.Count(a => a.AlarmLevel == EnmAlarmLevel.Level4);

                            if (model.alm1 > 0)
                            {
                                model.level = (int)EnmAlarmLevel.Level1;
                            }
                            else if (model.alm2 > 0)
                            {
                                model.level = (int)EnmAlarmLevel.Level2;
                            }
                            else if (model.alm3 > 0)
                            {
                                model.level = (int)EnmAlarmLevel.Level3;
                            }
                            else if (model.alm4 > 0)
                            {
                                model.level = (int)EnmAlarmLevel.Level4;
                            }
                            else
                            {
                                model.level = (int)EnmAlarmLevel.NoAlarm;
                            }
                        }
                        else
                        {
                            model.level = (int)EnmAlarmLevel.NoAlarm;
                            model.alm1  = 0;
                            model.alm2  = 0;
                            model.alm3  = 0;
                            model.alm4  = 0;
                        }

                        data.data.Add(model);
                    }
                }
            } catch (Exception exc) {
                data.success = false;
                data.message = exc.Message;
            }

            return(Json(data, JsonRequestBehavior.AllowGet));
        }
示例#17
0
        public JsonResult GetMarkers(double minlng, double minlat, double maxlng, double maxlat)
        {
            var data = new AjaxDataModel <List <MarkerModel> > {
                success = true,
                message = "No data",
                total   = 0,
                data    = new List <MarkerModel>()
            };

            try {
                var stations = _workContext.Stations().FindAll(s => {
                    if (string.IsNullOrWhiteSpace(s.Current.Longitude))
                    {
                        return(false);
                    }

                    if (string.IsNullOrWhiteSpace(s.Current.Latitude))
                    {
                        return(false);
                    }

                    double lng, lat;
                    if (!double.TryParse(s.Current.Longitude, out lng))
                    {
                        return(false);
                    }

                    if (!double.TryParse(s.Current.Latitude, out lat))
                    {
                        return(false);
                    }

                    return(lng >= minlng && lng <= maxlng && lat >= minlat && lat <= maxlat);
                });

                if (stations.Count > 0)
                {
                    if (stations.Count > 100)
                    {
                        stations = stations.Take(100).ToList();
                    }
                    data.message = "200 Ok";
                    data.total   = stations.Count;

                    var almsInSta = from alarm in _workContext.ActAlarms()
                                    group alarm by alarm.Current.StationId into g
                                    select new { Id = g.Key, Alarms = g.Select(a => a.Current) };

                    foreach (var station in stations)
                    {
                        var model = new MarkerModel()
                        {
                            id   = station.Current.Id,
                            name = station.Current.Name,
                            type = station.Current.Type.Name,
                            lng  = double.Parse(station.Current.Longitude),
                            lat  = double.Parse(station.Current.Latitude)
                        };

                        var eachSta = almsInSta.FirstOrDefault(s => s.Id == station.Current.Id);
                        if (eachSta != null)
                        {
                            model.alm1 = eachSta.Alarms.Count(a => a.AlarmLevel == EnmAlarm.Level1);
                            model.alm2 = eachSta.Alarms.Count(a => a.AlarmLevel == EnmAlarm.Level2);
                            model.alm3 = eachSta.Alarms.Count(a => a.AlarmLevel == EnmAlarm.Level3);
                            model.alm4 = eachSta.Alarms.Count(a => a.AlarmLevel == EnmAlarm.Level4);

                            if (model.alm1 > 0)
                            {
                                model.level = (int)EnmAlarm.Level1;
                            }
                            else if (model.alm2 > 0)
                            {
                                model.level = (int)EnmAlarm.Level2;
                            }
                            else if (model.alm3 > 0)
                            {
                                model.level = (int)EnmAlarm.Level3;
                            }
                            else if (model.alm4 > 0)
                            {
                                model.level = (int)EnmAlarm.Level4;
                            }
                            else
                            {
                                model.level = (int)EnmAlarm.Level0;
                            }
                        }
                        else
                        {
                            model.level = (int)EnmAlarm.Level0;
                            model.alm1  = 0;
                            model.alm2  = 0;
                            model.alm3  = 0;
                            model.alm4  = 0;
                        }

                        data.data.Add(model);
                    }
                }
            } catch (Exception exc) {
                data.success = false;
                data.message = exc.Message;
            }

            return(Json(data, JsonRequestBehavior.AllowGet));
        }
示例#18
0
        public JsonResult GetOrganization(string node)
        {
            var data = new AjaxDataModel <List <TreeModel> > {
                success = true,
                message = "No data",
                total   = 0,
                data    = new List <TreeModel>()
            };

            try {
                if (!string.IsNullOrWhiteSpace(node))
                {
                    if (node == "root")
                    {
                        #region root

                        var roots = _areaService.GetAreas(Common.GroupId).FindAll(a => a.LastId == 0);
                        for (var i = 0; i < roots.Count; i++)
                        {
                            var root = new TreeModel {
                                id       = Common.JoinKeys((int)EnmScType.Area, roots[i].Id),
                                text     = roots[i].Name,
                                selected = false,
                                icon     = Icons.Diqiu,
                                expanded = false,
                                leaf     = false
                            };

                            data.data.Add(root);
                        }

                        #endregion
                    }
                    else
                    {
                        var keys = Common.SplitKeys(node);
                        if (keys.Length == 2)
                        {
                            var type     = int.Parse(keys[0]);
                            var id       = int.Parse(keys[1]);
                            var gid      = Common.GroupId;
                            var nodeType = Enum.IsDefined(typeof(EnmScType), type) ? (EnmScType)type : EnmScType.None;
                            if (nodeType == EnmScType.Area)
                            {
                                #region area organization
                                var areas    = _areaService.GetAreas(gid);
                                var children = areas.FindAll(a => a.LastId == id);
                                if (children.Count > 0)
                                {
                                    data.success = true;
                                    data.message = "200 Ok";
                                    data.total   = children.Count;
                                    for (var i = 0; i < children.Count; i++)
                                    {
                                        var root = new TreeModel {
                                            id       = Common.JoinKeys((int)EnmScType.Area, children[i].Id),
                                            text     = children[i].Name,
                                            selected = false,
                                            icon     = Icons.Diqiu,
                                            expanded = false,
                                            leaf     = false
                                        };

                                        data.data.Add(root);
                                    }
                                }
                                else
                                {
                                    var stations = _stationService.GetStations(gid, id);
                                    if (stations.Count > 0)
                                    {
                                        data.success = true;
                                        data.message = "200 Ok";
                                        data.total   = stations.Count;
                                        for (var i = 0; i < stations.Count; i++)
                                        {
                                            var root = new TreeModel {
                                                id       = Common.JoinKeys((int)EnmScType.Station, stations[i].Id),
                                                text     = stations[i].Name,
                                                selected = false,
                                                icon     = Icons.Juzhan,
                                                expanded = false,
                                                leaf     = false
                                            };

                                            data.data.Add(root);
                                        }
                                    }
                                }
                                #endregion
                            }
                            else if (nodeType == EnmScType.Station)
                            {
                                #region station organization
                                var devices = _deviceService.GetDevices(id);
                                if (devices.Count > 0)
                                {
                                    data.success = true;
                                    data.message = "200 Ok";
                                    data.total   = devices.Count;
                                    for (var i = 0; i < devices.Count; i++)
                                    {
                                        var root = new TreeModel {
                                            id       = Common.JoinKeys((int)EnmScType.Device, devices[i].Id),
                                            text     = devices[i].Name,
                                            selected = false,
                                            icon     = Icons.Shebei,
                                            expanded = false,
                                            leaf     = true
                                        };

                                        data.data.Add(root);
                                    }
                                }
                                #endregion
                            }
                        }
                    }
                }
            } catch (Exception exc) {
                data.success = false;
                data.message = exc.Message;
            }

            return(Json(data, JsonRequestBehavior.AllowGet));
        }
示例#19
0
        public JsonResult GetReservations(int start, int limit, DateTime startDate, DateTime endDate, int type, string keyWord)
        {
            var data = new AjaxDataModel <List <ReservationModel> > {
                success = true,
                message = "无数据",
                total   = 0,
                data    = new List <ReservationModel>()
            };

            try {
                startDate = startDate.Date;
                endDate   = endDate.Date.AddSeconds(86399);
                var reservations = _reservationService.GetReservationsInSpan(startDate, endDate);
                var projects     = _projectService.GetProjects();
                var result       = (from res in reservations
                                    join pro in projects on res.ProjectId equals pro.Id
                                    select new { Reservation = res, Project = pro }).ToList();

                if (!string.IsNullOrWhiteSpace(keyWord))
                {
                    var keyWords = Common.SplitCondition(keyWord.Trim());
                    if (type == (int)EnmSSH.Area)
                    {
                        var nodes  = _nodesInReservationService.GetNodesInReservationsInType(EnmSSH.Area);
                        var areas  = _workContext.Areas().FindAll(a => CommonHelper.ConditionContain(a.Current.Name, keyWords));
                        var matchs = from node in nodes
                                     join area in areas on node.NodeId equals area.Current.Id
                                     select node;

                        var ids = (from node in matchs
                                   group node by node.ReservationId into g
                                   select g.Key).ToArray();

                        result = result.FindAll(a => ids.Contains(a.Reservation.Id));
                    }
                    else if (type == (int)EnmSSH.Device)
                    {
                        var nodes   = _nodesInReservationService.GetNodesInReservationsInType(EnmSSH.Device);
                        var devices = _workContext.Devices().FindAll(a => CommonHelper.ConditionContain(a.Current.Name, keyWords));
                        var matchs  = from node in nodes
                                      join device in devices on node.NodeId equals device.Current.Id
                                      select node;

                        var ids = (from node in matchs
                                   group node by node.ReservationId into g
                                   select g.Key).ToArray();

                        result = result.FindAll(a => ids.Contains(a.Reservation.Id));
                    }
                    else if (type == (int)EnmSSH.Room)
                    {
                        var nodes  = _nodesInReservationService.GetNodesInReservationsInType(EnmSSH.Room);
                        var rooms  = _workContext.Rooms().FindAll(a => CommonHelper.ConditionContain(a.Current.Name, keyWords));
                        var matchs = from node in nodes
                                     join room in rooms on node.NodeId equals room.Current.Id
                                     select node;

                        var ids = (from node in matchs
                                   group node by node.ReservationId into g
                                   select g.Key).ToArray();

                        result = result.FindAll(a => ids.Contains(a.Reservation.Id));
                    }
                    else if (type == (int)EnmSSH.Station)
                    {
                        var nodes    = _nodesInReservationService.GetNodesInReservationsInType(EnmSSH.Station);
                        var stations = _workContext.Stations().FindAll(a => CommonHelper.ConditionContain(a.Current.Name, keyWords));
                        var matchs   = from node in nodes
                                       join station in stations on node.NodeId equals station.Current.Id
                                       select node;

                        var ids = (from node in matchs
                                   group node by node.ReservationId into g
                                   select g.Key).ToArray();

                        result = result.FindAll(a => ids.Contains(a.Reservation.Id));
                    }
                    else
                    {
                        result = result.FindAll(a => CommonHelper.ConditionContain(a.Project.Name, keyWords));
                    }
                }

                if (result.Count > 0)
                {
                    data.message = "200 Ok";
                    data.total   = result.Count;

                    var end = start + limit;
                    if (end > result.Count)
                    {
                        end = result.Count;
                    }

                    var users = _userService.GetPagedUsers().ToDictionary(k => k.Id, v => v.Uid);

                    for (int i = start; i < end; i++)
                    {
                        data.data.Add(new ReservationModel {
                            index        = i + 1,
                            id           = result[i].Reservation.Id,
                            name         = result[i].Reservation.Name,
                            expStartDate = CommonHelper.DateTimeConverter(result[i].Reservation.ExpStartTime),
                            startDate    = CommonHelper.DateTimeConverter(result[i].Reservation.StartTime),
                            endDate      = CommonHelper.DateTimeConverter(result[i].Reservation.EndTime),
                            projectId    = result[i].Project.Id,
                            projectName  = result[i].Project.Name,
                            creator      = result[i].Reservation.Creator,
                            user         = users[result[i].Reservation.UserId],
                            createdTime  = CommonHelper.DateTimeConverter(result[i].Reservation.CreatedTime),
                            comment      = result[i].Reservation.Comment,
                            enabled      = result[i].Reservation.Enabled,
                            statusId     = ((int)result[i].Reservation.Status),
                            status       = Common.GetResStatusDisplay(result[i].Reservation.Status)
                        });
                    }
                }
            } catch (Exception exc) {
                _webLogger.Error(EnmEventType.Other, exc.Message, _workContext.User().Id, exc);
                data.success = false; data.message = exc.Message;
            }
            return(Json(data, JsonRequestBehavior.AllowGet));
        }
示例#20
0
        public string GetHisAlarms(string token, int node, int type, int[] level, DateTime startDate, DateTime endDate, int start = 0, int limit = int.MaxValue)
        {
            var data = new AjaxDataModel <List <HisAlarmModel> > {
                success = true,
                message = "无数据",
                total   = 0,
                data    = new List <HisAlarmModel>()
            };

            try {
                if (string.IsNullOrWhiteSpace(token))
                {
                    throw new Exception("无效的令牌");
                }

                if (!_cacheManager.IsSet(token))
                {
                    throw new Exception("无效的令牌");
                }

                var user   = _cacheManager.Get <User>(token);
                var models = RequestHisAlarms(user.GroupId, node, type, level, startDate, endDate);
                if (models.Count > 0)
                {
                    data.message = "200 Ok";
                    data.total   = models.Count;

                    var end = start + limit;
                    if (end > models.Count)
                    {
                        end = models.Count;
                    }

                    for (int i = start; i < end; i++)
                    {
                        data.data.Add(new HisAlarmModel {
                            index         = i + 1,
                            id            = models[i].Id,
                            level         = (int)models[i].AlarmLevel,
                            levelDisplay  = Common.GetAlarmDisplay(models[i].AlarmLevel),
                            area          = models[i].AreaName,
                            station       = models[i].StationName,
                            device        = models[i].DeviceName,
                            point         = models[i].PointName,
                            comment       = models[i].AlarmDesc,
                            alarmValue    = models[i].AlarmValue,
                            endValue      = models[i].EndValue,
                            startTime     = CommonHelper.DateTimeConverter(models[i].StartTime),
                            endTime       = CommonHelper.DateTimeConverter(models[i].EndTime),
                            confirmer     = models[i].ConfirmName,
                            confirmedTime = CommonHelper.DateTimeConverter(models[i].ConfirmTime),
                            interval      = CommonHelper.IntervalConverter(models[i].StartTime, models[i].EndTime),
                            endType       = Common.GetAlarmEndDisplay(models[i].EndType),
                            background    = Common.GetAlarmColor(models[i].AlarmLevel)
                        });
                    }
                }
            } catch (Exception exc) {
                data.success = false;
                data.message = exc.Message;
            }

            return(JsonConvert.SerializeObject(data, new JsonSerializerSettings {
                DefaultValueHandling = DefaultValueHandling.Include
            }));
        }
示例#21
0
        public string GetPoints(string token, int node, int[] types = null)
        {
            var data = new AjaxDataModel <List <PointModel> > {
                success = true,
                message = "无数据",
                total   = 0,
                data    = new List <PointModel>()
            };

            try {
                if (string.IsNullOrWhiteSpace(token))
                {
                    throw new Exception("无效的令牌");
                }

                if (!_cacheManager.IsSet(token))
                {
                    throw new Exception("无效的令牌");
                }

                var user = _cacheManager.Get <User>(token);

                if (types == null || types.Length == 0)
                {
                    types = new int[] { (int)EnmScType.Aic, (int)EnmScType.Aoc, (int)EnmScType.Dic, (int)EnmScType.Doc }
                }
                ;

                var gid    = user.GroupId;
                var points = _pointService.GetPoints(node, types.Contains((int)EnmScType.Aic), types.Contains((int)EnmScType.Aoc), types.Contains((int)EnmScType.Dic), types.Contains((int)EnmScType.Doc));
                var values = _valueService.GetValues(node, types.Contains((int)EnmScType.Aic), types.Contains((int)EnmScType.Aoc), types.Contains((int)EnmScType.Dic), types.Contains((int)EnmScType.Doc));
                var pWv    = from point in points
                             join value in values on new { Id = point.Id, Type = point.Type } equals new { Id = value.NodeId, Type = value.NodeType } into temp
                from pv in temp.DefaultIfEmpty()
                select new {
                    Point = point,
                    Value = pv
                };

                foreach (var pv in pWv)
                {
                    data.data.Add(new PointModel {
                        id            = pv.Point.Id,
                        name          = pv.Point.Name,
                        type          = (int)pv.Point.Type,
                        typeDisplay   = Common.GetScTypeDisplay(pv.Point.Type),
                        value         = pv.Value != null ? pv.Value.Value : 0d,
                        valueDisplay  = pv.Value != null ? Common.GetValueDisplay(pv.Point, pv.Value.Value) : Common.GetValueDisplay(pv.Point, 0),
                        status        = pv.Value != null ? (int)pv.Value.State : (int)EnmPointStatus.Invalid,
                        statusDisplay = pv.Value != null ? Common.GetPointStatusDisplay(pv.Value.State) : Common.GetPointStatusDisplay(EnmPointStatus.Invalid),
                        timestamp     = pv.Value != null ? CommonHelper.DateTimeConverter(pv.Value.UpdateTime) : CommonHelper.DateTimeConverter(DateTime.Now),
                        shortTime     = pv.Value != null ? CommonHelper.ShortTimeConverter(pv.Value.UpdateTime) : CommonHelper.ShortTimeConverter(DateTime.Now)
                    });
                }

                data.total   = data.data.Count;
                data.message = "200 Ok";
            } catch (Exception exc) {
                data.success = false;
                data.message = exc.Message;
            }

            return(JsonConvert.SerializeObject(data, new JsonSerializerSettings {
                DefaultValueHandling = DefaultValueHandling.Include
            }));
        }
示例#22
0
        public JsonResult GetReservation(string id, int action)
        {
            var data = new AjaxDataModel <ReservationModel> {
                success = true,
                message = "200 OK",
                total   = 0,
                data    = new ReservationModel {
                    index        = 1,
                    id           = Guid.NewGuid().ToString(),
                    name         = "",
                    expStartDate = CommonHelper.DateTimeConverter(DateTime.Now.AddSeconds(2100)),
                    endDate      = CommonHelper.DateTimeConverter(DateTime.Now.AddSeconds(88500)),
                    projectId    = "",
                    projectName  = "",
                    creator      = _workContext.Employee() != null?_workContext.Employee().Name : _workContext.User().Uid,
                    //user = _workContext.User().Uid,
                    createdTime = CommonHelper.DateTimeConverter(DateTime.Now),
                    comment     = "",
                    enabled     = true,
                    nodes       = new string[0]
                }
            };

            try {
                if (action == (int)EnmAction.Add)
                {
                    return(Json(data, JsonRequestBehavior.AllowGet));
                }

                if (string.IsNullOrWhiteSpace(id))
                {
                    throw new ArgumentException("id");
                }

                if (action != (int)EnmAction.Edit)
                {
                    throw new ArgumentException("action");
                }

                var reservation = _reservationService.GetReservation(id);
                if (reservation == null)
                {
                    throw new iPemException("未找到数据对象");
                }

                var nodes = _nodesInReservationService.GetNodesInReservationsInReservation(reservation.Id);
                data.data.id           = reservation.Id;
                data.data.name         = reservation.Name;
                data.data.expStartDate = CommonHelper.DateTimeConverter(reservation.ExpStartTime);
                data.data.startDate    = CommonHelper.DateTimeConverter(reservation.StartTime);
                data.data.endDate      = CommonHelper.DateTimeConverter(reservation.EndTime);
                data.data.projectId    = reservation.ProjectId;
                data.data.creator      = reservation.Creator;
                data.data.createdTime  = CommonHelper.DateTimeConverter(reservation.CreatedTime);
                data.data.comment      = reservation.Comment;
                data.data.enabled      = reservation.Enabled;
                data.data.nodes        = nodes.Select(m => Common.JoinKeys((int)m.NodeType, m.NodeId)).ToArray();
                return(Json(data, JsonRequestBehavior.AllowGet));
            } catch (Exception exc) {
                _webLogger.Error(EnmEventType.Other, exc.Message, _workContext.User().Id, exc);
                data.success = false; data.message = exc.Message;
                return(Json(data, JsonRequestBehavior.AllowGet));
            }
        }
示例#23
0
        public JsonResult GetReservationDetails(string id)
        {
            var data = new AjaxDataModel <ReservationDetailModel> {
                success = true,
                message = "200 OK",
                total   = 0,
                data    = new ReservationDetailModel()
                {
                    id       = "",
                    name     = "",
                    areas    = "",
                    stations = "",
                    rooms    = "",
                    devices  = ""
                }
            };

            try {
                if (string.IsNullOrWhiteSpace(id))
                {
                    throw new ArgumentException("id");
                }
                var current = _reservationService.GetReservation(id);
                if (current == null)
                {
                    throw new iPemException("未找到对象");
                }

                data.data.id   = current.Id;
                data.data.name = current.Name;
                var nodes = _nodesInReservationService.GetNodesInReservationsInReservation(current.Id);

                //预约区域
                var areaNodes  = nodes.FindAll(a => a.NodeType == EnmSSH.Area);
                var areaMatchs = from node in areaNodes
                                 join area in _workContext.Areas() on node.NodeId equals area.Current.Id
                                 select area.Current;

                data.data.areas = areaMatchs.Any() ? string.Join(",", areaMatchs.Select(a => a.Name)) : "无区域";

                //预约站点
                var stationNodes  = nodes.FindAll(a => a.NodeType == EnmSSH.Station);
                var stationMatchs = from node in stationNodes
                                    join station in _workContext.Stations() on node.NodeId equals station.Current.Id
                                    select station.Current;

                data.data.stations = stationMatchs.Any() ? string.Join(",", stationMatchs.Select(a => a.Name)) : "无站点";

                //预约机房
                var roomNodes  = nodes.FindAll(a => a.NodeType == EnmSSH.Room);
                var roomMatchs = from node in roomNodes
                                 join room in _workContext.Rooms() on node.NodeId equals room.Current.Id
                                 select room.Current;

                data.data.rooms = roomMatchs.Any() ? string.Join(",", roomMatchs.Select(a => a.Name)) : "无机房";

                //预约设备
                var deviceNodes  = nodes.FindAll(a => a.NodeType == EnmSSH.Device);
                var deviceMatchs = from node in deviceNodes
                                   join device in _workContext.Devices() on node.NodeId equals device.Current.Id
                                   select device.Current;

                data.data.devices = deviceMatchs.Any() ? string.Join(",", deviceMatchs.Select(a => a.Name)) : "无设备";
                return(Json(data, JsonRequestBehavior.AllowGet));
            } catch (Exception exc) {
                _webLogger.Error(EnmEventType.Other, exc.Message, _workContext.User().Id, exc);
                data.success = false; data.message = exc.Message;
                return(Json(data, JsonRequestBehavior.AllowGet));
            }
        }
示例#24
0
        public JsonResult GetWpfObj(string node)
        {
            var data = new AjaxDataModel <GviewModel> {
                success = false,
                message = "No data",
                total   = 0,
                data    = null
            };

            try {
                if (string.IsNullOrWhiteSpace(node))
                {
                    throw new ArgumentNullException("node");
                }

                var nodeKey = Common.ParseNode(node);
                if (nodeKey.Key == EnmSSH.Area)
                {
                    var current = _workContext.Areas().Find(a => a.Current.Id.Equals(nodeKey.Value));
                    if (current != null)
                    {
                        data.success          = true;
                        data.message          = "200 Ok";
                        data.total            = 1;
                        data.data             = new GviewModel();
                        data.data.currentId   = current.Current.Id;
                        data.data.currentType = (int)EnmAPISCObj.Area;
                        data.data.currentName = current.Current.Name;
                        if (current.HasParents)
                        {
                            var parent = current.Parents.Last();
                            data.data.parentId   = parent.Id;
                            data.data.parentType = (int)EnmAPISCObj.Area;
                            data.data.parentName = parent.Name;
                        }
                    }
                }
                else if (nodeKey.Key == EnmSSH.Station)
                {
                    var current = _workContext.Stations().Find(s => s.Current.Id.Equals(nodeKey.Value));
                    if (current != null)
                    {
                        data.success          = true;
                        data.message          = "200 Ok";
                        data.total            = 1;
                        data.data             = new GviewModel();
                        data.data.currentId   = current.Current.Id;
                        data.data.currentType = (int)EnmAPISCObj.Station;
                        data.data.currentName = current.Current.Name;
                        data.data.parentId    = current.Current.AreaId;
                        data.data.parentType  = (int)EnmAPISCObj.Area;

                        var parent = _workContext.Areas().Find(a => a.Current.Id.Equals(current.Current.AreaId));
                        if (parent != null)
                        {
                            data.data.parentName = parent.Current.Name;
                        }
                    }
                }
                else if (nodeKey.Key == EnmSSH.Room)
                {
                    var current = _workContext.Rooms().Find(r => r.Current.Id.Equals(nodeKey.Value));
                    if (current != null)
                    {
                        data.success          = true;
                        data.message          = "200 Ok";
                        data.total            = 1;
                        data.data             = new GviewModel();
                        data.data.currentId   = current.Current.Id;
                        data.data.currentType = (int)EnmAPISCObj.Room;
                        data.data.currentName = current.Current.Name;
                        data.data.parentId    = current.Current.StationId;
                        data.data.parentType  = (int)EnmAPISCObj.Station;
                        data.data.parentName  = current.Current.StationName;
                    }
                }
                else if (nodeKey.Key == EnmSSH.Device)
                {
                    var current = _workContext.Devices().Find(r => r.Current.Id.Equals(nodeKey.Value));
                    if (current != null)
                    {
                        data.success          = true;
                        data.message          = "200 Ok";
                        data.total            = 1;
                        data.data             = new GviewModel();
                        data.data.currentId   = current.Current.Id;
                        data.data.currentType = (int)EnmAPISCObj.Device;
                        data.data.currentName = current.Current.Name;
                        data.data.parentId    = current.Current.RoomId;
                        data.data.parentType  = (int)EnmAPISCObj.Room;
                        data.data.parentName  = current.Current.RoomName;
                    }
                }
            } catch (Exception exc) {
                data.success = false;
                data.message = exc.Message;
            }

            return(Json(data, JsonRequestBehavior.AllowGet));
        }