コード例 #1
0
        public virtual object Users([FromServices] IQueryParams param)
        {
            using (var dbConnection = new SysDB())
            {
                var query = from user in dbConnection.SysUser
                            select new { UserID    = user.UserID,
                                         UserName  = user.UserName,
                                         StatusID  = user.StatusID,
                                         LastName  = user.LastName,
                                         FirstName = user.FirstName,
                                         Email     = user.Email,

                                         //As Rodrigo said user company has to be separate varchar of user - 07.24.2017
                                         //Company = dbConnection.SysCompany
                                         //               .First(company => company.CompanyID == user.CompanyID)
                                         //                   .CompanyName,

                                         Company   = user.Company,
                                         CreatedOn = user.CreatedOn,
                                         Role      = dbConnection.SysRole
                                                     .First(role => role.RoleID ==
                                                            (dbConnection.SysUserrole
                                                             .First(userRole => userRole.UserID == user.UserID)
                                                             .RoleID))
                                                     .RoleName };
                var data = DataHelper.GetData(query, param);
                return(data.Data);
            }
        }
コード例 #2
0
 public virtual object User(int userId, [FromServices] IQueryParams param)
 {
     using (var dbConnection = new SysDB())
     {
         var query = from user in dbConnection.SysUser
                     where user.UserID == userId
                     select new
         {
             UserID   = user.UserID,
             UserName = user.UserName,
             Status   = dbConnection.SysStatus
                        .First(status => status.StatusID == user.StatusID)
                        .Description,
             LastName  = user.LastName,
             FirstName = user.FirstName,
             Email     = user.Email,
             Company   = dbConnection.SysCompany
                         .First(company => company.CompanyID == user.CompanyID)
                         .CompanyName,
             CreatedOn = user.CreatedOn,
             Role      = dbConnection.SysRole
                         .First(role => role.RoleID ==
                                (dbConnection.SysUserrole
                                 .First(userRole => userRole.UserID == user.UserID)
                                 .RoleID))
                         .RoleName
         };
         var data = DataHelper.GetData(query, param);
         return(data.Data);
     }
 }
コード例 #3
0
        public void GetRoles(SysDB db)
        {
            var query = from ur in db.SysUserrole
                        where ur.UserID == UserID
                        select ur;

            UserRoles = query.Select(x => x.RoleID).ToList();
        }
コード例 #4
0
 public virtual object Auth0User(int userId, [FromServices] IQueryParams param)
 {
     using (var dbConnection = new SysDB())
     {
         var targetUserEmail = dbConnection.SysUser.First(user => user.UserID == userId).Email;
         return(new ManagementApiClient().GetUserByEmail(targetUserEmail));
     }
 }
コード例 #5
0
        protected override void OnUnLoad()
        {
            if (_db != null)
            {
                _db.Dispose();
                _db = null;
            }
            base.OnUnLoad();

        }
コード例 #6
0
        public virtual object CheckUserExists([FromBody] NewUser newUser, [FromServices] IQueryParams param)
        {
            bool isUserExistant = false;

            using (var dbConnection = new SysDB())
            {
                isUserExistant = dbConnection.SysUser.Any(user => user.Email == newUser.Email);
            }
            return(new { userExistant = isUserExistant });
        }
コード例 #7
0
        public static List <T> GetList <T>(string filter) where T : class
        {
            using (var db = new SysDB())
            {
                var query = from x in db.GetTable <T>()
                            select x;

                if (filter.Length > 0)
                {
                    query = query.Where(filter);
                }

                return(query.ToList <T>());
            }
        }
コード例 #8
0
        public static T GetModel <T>(string filter) where T : class
        {
            using (var db = new SysDB())
            {
                var query = from x in db.GetTable <T>()
                            select x;

                if (filter.Length > 0)
                {
                    query = query.Where(filter);
                }

                return(query.FirstOrDefault <T>());
            }
        }
コード例 #9
0
 public bool IsInRole(string role)
 {
     using (var db = new SysDB())
     {
         var query = from ur in db.SysUserrole
                     join r in db.SysRole on ur.RoleID equals r.RoleID
                     where ur.UserID == CurrentUser.UserID && r.RoleName == role
                     select r.RoleID;
         try
         {
             return(query.Count() > 0);
         }
         catch { return(false); }
     }
 }
コード例 #10
0
        public virtual object NewUser([FromBody] NewUser newUser)
        {
            using (var dbConnection = new SysDB())
            {
                dbConnection.Insert <SysUser>(new SysUser
                {
                    UserName  = newUser.firstName + newUser.lastName,
                    FirstName = newUser.firstName,
                    LastName  = newUser.lastName,

                    //TBD
                    StatusID  = 0,
                    CompanyID = 1,
                    //Role = newUser.role,
                    //Clients = newUser.clients,

                    Email = newUser.Email,

                    //Need to find a way to not initialize property that have default values
                    CreatedOn = DateTime.Now,
                    UpdatedOn = DateTime.Now,

                    //TBD
                    CreatedBy = "dev",
                    UpdatedBy = "dev",
                });

                dbConnection.Insert <SysUserrole>(new SysUserrole
                {
                    UserID = dbConnection.SysUser.First(user => user.Email == newUser.Email).UserID,
                    RoleID = dbConnection.SysRole.First(role => role.RoleName == newUser.role).RoleID,

                    //Need to find a way to not initialize property that have default values
                    CreatedOn = DateTime.Now,
                    UpdatedOn = DateTime.Now,

                    //!!!
                    CreatedBy = "dev",
                    UpdatedBy = "dev",
                });
            }

            new ManagementApiClient().CreateUser(newUser);

            //new AuthenticationApiClient().RequestChangePassword(newUser.email);
            return(new OkObjectResult("User created"));
        }
コード例 #11
0
 static HistoryAutoRec()
 {
     //检查历史记录剩余空间
     Task.Run(() =>
     {
         while (true)
         {
             try
             {
                 using (SysDB db = new SysDB())
                 {
                     var info = (from m in db.SystemSetting
                                 select new { path = m.HistoryPath, g = m.HistoryStoreAlarm }).FirstOrDefault();
                     if (info == null || string.IsNullOrEmpty(info.path) || info.path.Length < 2 || info.g == null || info.g == 0 || info.path[1] != ':')
                     {
                         continue;
                     }
                     System.IO.DriveInfo[] drives = System.IO.DriveInfo.GetDrives();
                     foreach (System.IO.DriveInfo drive in drives)
                     {
                         if (drive.Name.ToLower()[0] == info.path.ToLower()[0])
                         {
                             var gb = Math.Round(drive.TotalFreeSpace / (double)(1024 * 1024 * 1024), 2);
                             if (gb <= info.g.GetValueOrDefault())
                             {
                                 SystemHelper.AddAlarm(new Alarm()
                                 {
                                     Content = $"历史路径{info.path}剩余空间只有{gb}GB了,请尽快扩展磁盘!",
                                 });
                             }
                             break;
                         }
                     }
                 }
             }
             catch (Exception ex)
             {
                 using (Way.Lib.CLog log = new Way.Lib.CLog("HistoryAutoRec 检查磁盘剩余空间 error "))
                 {
                     log.Log(ex.ToString());
                 }
             }
             Thread.Sleep(1000 * 60);
         }
     });
 }
コード例 #12
0
 public virtual object EditUser([FromBody] NewUser editedUser)
 {
     //Need to set clients somehow
     using (var dbConnection = new SysDB())
     {
         var targetUserId = dbConnection.GetTable <SysUser>().First(user => user.Email == editedUser.Email).UserID;
         dbConnection.GetTable <SysUser>().Where(user => user.UserID == targetUserId)
         .Set(user => user.FirstName, user => editedUser.firstName)
         .Set(user => user.LastName, user => editedUser.lastName)
         .Set(user => user.UpdatedOn, user => DateTime.Now)
         .Update();
         dbConnection.GetTable <SysUserrole>().Where(userrole => userrole.UserID == targetUserId)
         .Set(userrole => userrole.RoleID, userrole => dbConnection.SysRole
              .First(role => role.RoleName == editedUser.role).RoleID)
         .Set(userrole => userrole.UpdatedOn, userrole => DateTime.Now)
         .Update();
     }
     return(new OkObjectResult("User updated"));
 }
コード例 #13
0
        public virtual object DeleteUser(int userId)
        {
            string targetUserEmail = null;

            using (var dbConnection = new SysDB())
            {
                targetUserEmail = dbConnection.GetTable <SysUser>().First(user => user.UserID == userId).Email;
                dbConnection.GetTable <SysUserrole>()
                .Where(userrole => userrole.UserID == userId)
                .Delete();
                dbConnection.GetTable <SysUser>()
                .Where(user => user.UserID == userId)
                .Delete();
            }

            var targetAuth0UserId = new ManagementApiClient().GetUsers().First(auth0User => auth0User.Email == targetUserEmail).UserId;

            new ManagementApiClient().DeleteUser(targetAuth0UserId);
            return(new OkObjectResult("User deleted"));
        }
コード例 #14
0
        /// <summary>
        /// 添加数据监控客户端
        /// </summary>
        /// <param name="groupName"></param>
        /// <param name="db"></param>
        /// <param name="points"></param>
        public static void AddClient(string groupName, SysDB db, DevicePoint[] points)
        {
            List <WatchGroup> watches = new List <WatchGroup>();

            foreach (var point in points)
            {
                var watch = watches.FirstOrDefault(m => m.DeviceId == point.DeviceId);
                if (watch == null)
                {
                    var device  = db.Device.FirstOrDefault(m => m.id == point.DeviceId);
                    var gateway = db.CommunicationDriver.FirstOrDefault(m => m.id == device.DriverID);

                    watch = new WatchGroup();
                    watch.MessageGroupName = groupName;
                    watch.DeviceAddress    = device.Address;
                    watch.Client           = new SunRizDriver.SunRizDriverClient(gateway.Address, gateway.Port.Value);
                    watch.DeviceId         = point.DeviceId.Value;
                    watches.Add(watch);
                }
                watch.PointAddress.Add(point.Address);
            }

            RunningWatches[groupName] = watches.ToArray();
        }
コード例 #15
0
        static void start()
        {
            try
            {
                if (hisDB != null)
                {
                    lock (hisDB)
                    {
                        hisDB.CommitTransaction();
                        hisDB.Dispose();
                    }
                    hisDB = null;
                }
                using (SysDB db = new SysDB())
                {
                    var sysSetting = db.SystemSetting.FirstOrDefault();
                    if (string.IsNullOrEmpty(sysSetting.HistoryPath))
                    {
                        return;
                    }
                    try
                    {
                        //目录不存在,创建目录
                        if (System.IO.Directory.Exists(sysSetting.HistoryPath) == false)
                        {
                            System.IO.Directory.CreateDirectory(sysSetting.HistoryPath);
                        }
                        HistoryDataPath = $"data source=\"{sysSetting.HistoryPath.Replace("\\", "/")}/history_data.db\"";
                        hisDB           = new DB.SunRiz(HistoryDataPath, Way.EntityDB.DatabaseType.Sqlite);
                        LastHisTime     = DateTime.Now;
                        hisDB.BeginTransaction();
                    }
                    catch
                    {
                        return;
                    }


                    var pointGroups = from m in db.DevicePoint
                                      where m.ValueRelativeChange == true || m.ValueAbsoluteChange == true || m.ValueOnTimeChange == true || m.IsAlarm == true
                                      group m by m.DeviceId into g
                                      select g;
                    foreach (var pointArr in pointGroups)
                    {
                        var deviceId = pointArr.Key.GetValueOrDefault();
                        var device   = db.Device.AsTracking().FirstOrDefault(m => m.id == deviceId);
                        var driver   = db.CommunicationDriver.AsTracking().FirstOrDefault(m => m.id == device.DriverID);

                        MyDriverClient client = new MyDriverClient(driver.Address, driver.Port.Value);
                        client.Points = (from m in pointArr
                                         select new MyDevicePoint(m)).ToArray();
                        AllClients.Add(client);
                        string[] pointAddrs = new string[client.Points.Length];
                        for (int i = 0; i < client.Points.Length; i++)
                        {
                            pointAddrs[i] = client.Points[i].DevicePoint.Address;
                            if (client.Points[i].DevicePoint.ValueOnTimeChange == true)
                            {
                                client.SaveOnTimeInfos.Add(new SaveOnTimeInfo()
                                {
                                    PointObj = client.Points[i],
                                    PointId  = client.Points[i].DevicePoint.id.Value,
                                    Interval = client.Points[i].DevicePoint.ValueOnTimeChangeSetting.GetValueOrDefault(),
                                });
                            }
                        }
                        watchClient(client, device, pointAddrs);
                        //启动定时保存的线程
                        saveValueOnTime_Thread(client, device);
                    }
                }
            }
            catch (Exception ex)
            {
                using (Way.Lib.CLog log = new Way.Lib.CLog("HistoryAutoRec error "))
                {
                    log.Log(ex.ToString());
                }
            }
        }