Esempio n. 1
0
        public Device ToRepositoryType(IRepositoryModelCache cache, INetworkRepository networkRepository, IScriptRepository scriptRepository, ITaskRepository taskRepository)
        {
            IDeviceState state = null;

            if (!string.IsNullOrEmpty(Notes))
            {
                var element = XElement.Parse(Notes);
                state = element.ToDeviceState();
            }

            var result = new Device(
                address: Address,
                lastPing: LastPing,
                id: Id,
                name: Name,
                network: NetworkModel.ToRepositoryType(cache, Network_Id, networkRepository),
                scripts: scriptRepository,
                state: state,
                tasks: taskRepository,
                type: DeviceType.GetTypeFromString(Type_Name)
                );

            cache?.Set(result.Id, result);

            return(result);
        }
        public Device Get(User user, int id, IRepositoryModelCache cache = null)
        {
            var result = Get(id, cache);

            if (result == null)
            {
                return(null);
            }

            if (result.Network == null)
            {
                throw new Exception("Network not set");
            }

            if (result.Network.Owner == null)
            {
                throw new Exception("Owner not set");
            }

            if (result.Network.Owner.Id != user.Id)
            {
                var guest = _guests.Check(result.Network, user);

                if (!guest)
                {
                    result = null;
                }
            }

            return(result);
        }
        public Network[] Get(User user, IRepositoryModelCache cache = null)
        {
            var primaryNetworks = _networks.Get(user, cache);
            var guestNetworks   = _guests.Get(user);
            var result          = primaryNetworks.Concat(guestNetworks).ToArray();

            return(result);
        }
Esempio n. 4
0
        public Device Get(User user, int id, IRepositoryModelCache cache = null)
        {
            var userModel = UserModel.FromRepositoryType(user);
            var result    = Get(id, cache);

            if (result?.Network?.Owner?.Id != userModel?.Id)
            {
                return(null);
            }

            return(result);
        }
        public Network Get(User user, string address, IRepositoryModelCache cache = null)
        {
            var result = _networks.Get(user, address, cache);

            if (result == null)
            {
                var guestNetworks = _guests.Get(user);
                result = guestNetworks.FirstOrDefault(x => string.Equals(x, address));
            }

            return(result);
        }
Esempio n. 6
0
        public Task Get(User user, int id, IRepositoryModelCache cache = null)
        {
            var userModel = UserModel.FromRepositoryType(user);
            var result    = Get(id);

            if (result?.Owner?.Id != user.Id)
            {
                return(null);
            }

            return(result);
        }
Esempio n. 7
0
        public WebHookSession ToRepositoryType(IRepositoryModelCache cache, IComputerRepository computerRepository)
        {
            var result = new WebHookSession(
                computer: ComputerModel.ToRepositoryType(cache, Computer_Id, computerRepository),
                id: Id,
                lastPing: LastPing,
                token: Token
                );

            cache?.Set(result.Id, result);

            return(result);
        }
Esempio n. 8
0
        public UserSession ToRepositoryType(IRepositoryModelCache cache, IUserRepository userRepository)
        {
            var result = new UserSession(
                creationTimeStamp: CreationTimeStamp,
                id: Id,
                lastContactTimeStamp: LastContactTimeStamp,
                token: Token,
                user: UserModel.ToRepositoryType(cache, User_Id, userRepository)
                );

            cache?.Set(result.Id, result);

            return(result);
        }
Esempio n. 9
0
        public Page <WebHookSession> List(User user, ListFilter filter, IRepositoryModelCache cache = null)
        {
            var model      = UserModel.FromRepositoryType(user);
            var sql        = $@"
                SELECT COUNT(*)
                FROM WebHookSessionModels
                JOIN ComputerModels
                  ON ComputerModels.Id = WebHookSessionModels.Computer_Id
                WHERE ComputerModels.Owner_Id = @User_Id

                SELECT *
                FROM WebHookSessionModels
                JOIN ComputerModels
                  ON ComputerModels.Id = WebHookSessionModels.Computer_Id
                WHERE ComputerModels.Owner_Id = @User_Id
                ORDER BY CreationTimestamp {SqlUtilities.OrderByDirection(filter.SortDirection)}
                OFFSET @Start ROWS
                FETCH NEXT @Count ROWS ONLY
            ";
            var parameters = new
            {
                Count   = filter.Count,
                Start   = filter.Start,
                User_Id = user.Id,
            };

            int total;

            WebHookSessionModel[] models;

            using (var multiQuery = _connection.QueryMultiple(sql, parameters))
            {
                total  = multiQuery.ReadSingle <int>();
                models = multiQuery.Read <WebHookSessionModel>().ToArray();
            }

            var result = new Page <WebHookSession>
            {
                Count = filter.Count,
                Sort  = filter.SortDirection,
                Items = models
                        .Select(x => x.ToRepositoryType(cache, _computerRepository))
                        .ToArray(),
                Start = filter.Start,
                Total = total,
            };

            return(result);
        }
Esempio n. 10
0
        public Script ToRepositoryType(IRepositoryModelCache cache)
        {
            var result = new Script(
                creationTimestamp: CreationTimestamp,
                id: Id,
                lastRunTimestamp: LastRunTimestamp,
                mutable: Mutable,
                runCount: RunCount,
                text: Text
                );

            cache?.Set(result.Id, result);

            return(result);
        }
Esempio n. 11
0
        public User ToRepositoryType(IRepositoryModelCache cache)
        {
            var result = new User(
                alias: Alias,
                email: Email,
                id: Id,
                registeredTimestamp: RegisteredTimestamp,
                secret: SecretExtensions.Parse(Secret),
                token: Token
                );

            cache?.Set(result.Id, result);

            return(result);
        }
Esempio n. 12
0
        public Network ToRepositoryType(IRepositoryModelCache cache, IComputerRepository computerRepository, IUserRepository userRepository)
        {
            var result = new Network(
                address: Address,
                attatchedComputer: ComputerModel.ToRepositoryType(cache, AttatchedComputer_Id, computerRepository),
                devices: null,
                id: Id,
                lastPing: LastPing,
                name: Name,
                owner: UserModel.ToRepositoryType(cache, Owner_Id, userRepository)
                );

            cache?.Set(result.Id, result);

            return(result);
        }
Esempio n. 13
0
        public Device Get(int id, IRepositoryModelCache cache = null)
        {
            var sql        = @"
                SELECT *
                FROM DeviceModels
                WHERE Id = @Id
            ";
            var parameters = new
            {
                Id = id,
            };

            var model  = _connection.QuerySingle <DeviceModel>(sql, parameters);
            var result = model.ToRepositoryType(cache, _networkRepository, _scriptRepository, _taskRepository);

            return(result);
        }
Esempio n. 14
0
        public WebHookSession Get(string token, IRepositoryModelCache cache = null)
        {
            var sql        = @"
                SELECT *
                FROM WebHookSessionModels
                WHERE Token = @Token
            ";
            var parameters = new
            {
                Token = token,
            };

            var model  = _connection.QuerySingle <WebHookSessionModel>(sql, parameters);
            var result = model.ToRepositoryType(cache, _computerRepository);

            return(result);
        }
Esempio n. 15
0
        public Computer ToRepositoryType(IRepositoryModelCache cache, IScriptRepository scriptRepository, IUserRepository userRepository)
        {
            var result = new Computer(
                accessKey: AccessKey,
                address: Address,
                encryptionKey: EncryptionKey,
                id: Id,
                lastPing: LastPing,
                lastScript: ScriptModel.ToRepositoryType(cache, LastScript_Id, scriptRepository),
                name: Name,
                owner: UserModel.ToRepositoryType(cache, Owner_Id, userRepository)
                );

            cache?.Set(result.Id, result);

            return(result);
        }
Esempio n. 16
0
        public Computer Get(string accessKey, IRepositoryModelCache cache = null)
        {
            var sql        = @"
                SELECT *
                FROM ComputerModels
                WHERE AccessKey = @AccessKey
            ";
            var parameters = new
            {
                AccessKey = accessKey,
            };

            var model  = _connection.QuerySingle <ComputerModel>(sql, parameters);
            var result = model.ToRepositoryType(cache, _scriptRepository, _userRepository);

            return(result);
        }
Esempio n. 17
0
        public Task Get(int id, IRepositoryModelCache cache = null)
        {
            var sql        = @"
                SELECT *
                FROM TaskModels
                WHERE Id = @Id
            ";
            var parameters = new
            {
                Id = id,
            };

            var model  = _connection.QuerySingle <TaskModel>(sql, parameters);
            var result = model.ToRepositoryType(cache, _computerRepository, _scriptRepository, _userRepository);

            return(result);
        }
Esempio n. 18
0
        public Script Get(int id, IRepositoryModelCache cache = null)
        {
            var sql        = @"
                SELECT *
                FROM ScriptModels
                WHERE Id = @Id
            ";
            var parameters = new
            {
                Id = id,
            };

            var model  = _connection.QuerySingle <ScriptModel>(sql, parameters);
            var result = model.ToRepositoryType(cache);

            return(result);
        }
Esempio n. 19
0
        public User Get(string token, IRepositoryModelCache cache = null)
        {
            var sql        = @"
                SELECT *
                FROM UserModels
                WHERE Token = @Token
            ";
            var parameters = new
            {
                Token = token
            };

            var model  = _connection.QuerySingle <UserModel>(sql, parameters);
            var result = model.ToRepositoryType(cache);

            return(result);
        }
Esempio n. 20
0
        public Page <Task> List(User user, ListFilter filter, IRepositoryModelCache cache = null)
        {
            var userModel  = UserModel.FromRepositoryType(user);
            var sql        = $@"
                SELECT COUNT(*)
                FROM TaskModels
                WHERE Owner_Id = @Owner_Id

                SELECT *
                FROM TaskModels
                WHERE Owner_Id = @Owner_Id
                ORDER BY Id {SqlUtilities.OrderByDirection(filter.SortDirection)}
                OFFSET @Start ROWS
                FETCH NEXT @Count ROWS ONLY
            ";
            var parameters = new
            {
                Count    = filter.Count,
                Owner_Id = userModel.Id,
                Start    = filter.Start,
            };

            int total;

            TaskModel[] models;

            using (var multiQuery = _connection.QueryMultiple(sql, parameters))
            {
                total  = multiQuery.ReadSingle <int>();
                models = multiQuery.Read <TaskModel>().ToArray();
            }

            var result = new Page <Task>
            {
                Count = filter.Count,
                Sort  = filter.SortDirection,
                Items = models
                        .Select(x => x.ToRepositoryType(cache, _computerRepository, _scriptRepository, _userRepository))
                        .ToArray(),
                Start = filter.Start,
                Total = total,
            };

            return(result);
        }
Esempio n. 21
0
        public Computer Get(User user, int id, IRepositoryModelCache cache = null)
        {
            var sql        = @"
                SELECT *
                FROM ComputerModels
                WHERE Owner_Id = @Owner_Id
                  AND Id = @Id
            ";
            var parameters = new
            {
                Owner_Id = user.Id,
                Id       = id,
            };

            var model  = _connection.QuerySingle <ComputerModel>(sql, parameters);
            var result = model.ToRepositoryType(cache, _scriptRepository, _userRepository);

            return(result);
        }
Esempio n. 22
0
        public Computer[] Get(Script script, IRepositoryModelCache cache = null)
        {
            var sql        = @"
                SELECT *
                FROM ComputerModels
                WHERE LastScript_Id = @LastScript_Id
            ";
            var parameters = new
            {
                LastScript_Id = script.Id,
            };

            var models = _connection.Query <ComputerModel>(sql, parameters);
            var result = models
                         .Select(x => x.ToRepositoryType(cache, _scriptRepository, _userRepository))
                         .ToArray();

            return(result);
        }
Esempio n. 23
0
        public Network[] Get(User user, IRepositoryModelCache cache = null)
        {
            var userModel  = UserModel.FromRepositoryType(user);
            var sql        = @"
                SELECT Network_Id
                FROM NetworkGuestModels
                WHERE User_Id = @User_Id
            ";
            var parameters = new
            {
                User_Id = userModel.Id,
            };

            var networkIds = _connection.Query <int>(sql, parameters).ToArray();
            var result     = networkIds
                             .Select((id) => _networkRepository.Get(id, cache))
                             .ToArray();

            return(result);
        }
Esempio n. 24
0
        public User[] Get(Network network, IRepositoryModelCache cache = null)
        {
            var networkModel = NetworkModel.FromRepositoryType(network);
            var sql          = @"
                SELECT User_Id
                FROM NetworkGuestModels
                WHERE Network_Id = @Network_Id
            ";
            var parameters   = new
            {
                Network_Id = networkModel.Id,
            };

            var userIds = _connection.Query <int>(sql, parameters).ToArray();
            var result  = userIds
                          .Select((id) => _userRepository.Get(id, cache))
                          .ToArray();

            return(result);
        }
Esempio n. 25
0
        public Device[] Get(Network network, IRepositoryModelCache cache = null)
        {
            var networkModel = NetworkModel.FromRepositoryType(network);
            var sql          = @"
                SELECT *
                FROM DeviceModels
                WHERE Network_Id = @Network_Id
            ";
            var parameters   = new
            {
                Network_Id = networkModel.Id,
            };

            var models = _connection.Query <DeviceModel>(sql, parameters).ToArray();
            var result = models
                         .Select(x => x.ToRepositoryType(cache, _networkRepository, _scriptRepository, _taskRepository))
                         .ToArray();

            return(result);
        }
Esempio n. 26
0
        public Network[] Get(User user, IRepositoryModelCache cache = null)
        {
            var userModel  = UserModel.FromRepositoryType(user);
            var sql        = @"
                SELECT *
                FROM NetworkModels
                WHERE Owner_Id = @Owner_Id
            ";
            var parameters = new
            {
                Owner_Id = userModel.Id,
            };

            var models = _connection.Query <NetworkModel>(sql, parameters).ToArray();
            var result = models
                         .Select(x => x.ToRepositoryType(cache, _computerRepository, _userRepository))
                         .ToArray();

            return(result);
        }
Esempio n. 27
0
        public Network Get(User user, string address, IRepositoryModelCache cache = null)
        {
            var userModel  = UserModel.FromRepositoryType(user);
            var sql        = @"
                SELECT *
                FROM NetworkModels
                WHERE Address = @Address
                  AND Owner_Id = @Owner_Id
            ";
            var parameters = new
            {
                Address  = address,
                Owner_Id = userModel.Id,
            };

            var model  = _connection.QuerySingle <NetworkModel>(sql, parameters);
            var result = model.ToRepositoryType(cache, _computerRepository, _userRepository);

            return(result);
        }
Esempio n. 28
0
        public Task[] Get(Script script, IRepositoryModelCache cache = null)
        {
            var scriptModel = ScriptModel.FromRepositoryType(script);
            var sql         = @"
                SELECT *
                FROM TaskModels
                WHERE Script_Id = @Script_Id
            ";
            var parameters  = new
            {
                Script_Id = scriptModel.Id,
            };

            var models = _connection.Query <TaskModel>(sql, parameters).ToArray();
            var result = models
                         .Select(x => x.ToRepositoryType(cache, _computerRepository, _scriptRepository, _userRepository))
                         .ToArray();

            return(result);
        }
Esempio n. 29
0
        public Page <Script> List(ListFilter filter, IRepositoryModelCache cache = null)
        {
            var sql        = $@"
                SELECT COUNT(*)
                FROM ScriptModels

                SELECT *
                FROM ScriptModels
                ORDER BY CreationTimestamp {SqlUtilities.OrderByDirection(filter.SortDirection)}
                OFFSET @Start ROWS
                FETCH NEXT @Count ROWS ONLY
            ";
            var parameters = new
            {
                Count = filter.Count,
                Start = filter.Start,
            };

            int total;

            ScriptModel[] models;

            using (var multiQuery = _connection.QueryMultiple(sql, parameters))
            {
                total  = multiQuery.ReadSingle <int>();
                models = multiQuery.Read <ScriptModel>().ToArray();
            }

            var result = new Page <Script>
            {
                Count = filter.Count,
                Sort  = filter.SortDirection,
                Items = models
                        .Select(x => x.ToRepositoryType(cache))
                        .ToArray(),
                Start = filter.Start,
                Total = total,
            };

            return(result);
        }
Esempio n. 30
0
        public Task[] ForComputer(Computer computer, DateTime now, IRepositoryModelCache cache = null)
        {
            var computerModel = ComputerModel.FromRepositoryType(computer);
            var sql           = @"
                SELECT *
                FROM TaskModels
                WHERE Target_Id = @Target_Id
                  AND ReceivedTimestamp IS NULL
                  AND Expiration > @Now
            ";
            var parameters    = new
            {
                Now       = now,
                Target_Id = computerModel.Id,
            };

            var models = _connection.Query <TaskModel>(sql, parameters).ToArray();
            var result = models
                         .Select(x => x.ToRepositoryType(cache, _computerRepository, _scriptRepository, _userRepository))
                         .ToArray();

            return(result);
        }