/// <summary>
 /// Create a new home
 /// </summary>
 /// <param name="home">The home to create</param>
 /// <param name="user">The user creating the home</param>
 /// <returns></returns>
 async Task <Home> IHomeLayer.CreateHome(Home home, Guid user)
 {
     return(await this.connectionManager.ExecuteSql(
                "hub.createhome",
                collection =>
     {
         collection.AddWithValue("name", home.Name);
         collection.AddWithValue("user", user);
     },
                reader =>
     {
         reader.Read();
         return SqlDataLayer.ReadHome(reader);
     },
                this.tokenSource.Token));
 }
 /// <summary>
 /// Get the homes for a user
 /// </summary>
 /// <param name="user">The user id</param>
 /// <returns>A list of all homes for this user</returns>
 async Task <IEnumerable <Home> > IHomeLayer.GetHomes(Guid user)
 {
     return(await this.connectionManager.ExecuteSql(
                "hub.gethomes",
                collection =>
     {
         collection.AddWithValue("user", user);
     },
                reader =>
     {
         var result = new List <Home>();
         while (reader.Read())
         {
             result.Add(SqlDataLayer.ReadHome(reader));
         }
         return result;
     },
                this.tokenSource.Token));
 }
Exemple #3
0
        /// <summary>
        /// Get all devices for a home
        /// </summary>
        /// <param name="user">The user to get for</param>
        /// <param name="home">The home</param>
        /// <returns>The list of all devices attached to a home</returns>
        async Task <IEnumerable <Device> > IDeviceLayer.GetAllDevices(Guid user, Guid home)
        {
            return(await this.connectionManager.ExecuteSql(
                       "hub.getdevices",
                       parameters =>
            {
                parameters.AddWithValue("home", home);
                parameters.AddWithValue("user", user);
            },
                       reader =>
            {
                var functions = SqlDataLayer.GetDeviceFunctions(reader);

                reader.NextResult();

                var devices = new List <Device>();
                while (reader.Read())
                {
                    var deviceDefinitionGuid = (Guid)reader["devicedefinition"];

                    var definition = new DeviceDefinition(
                        deviceDefinitionGuid,
                        (string)reader["manufacturer"],
                        (string)reader["product"],
                        (DeviceType)reader["type"],
                        functions[deviceDefinitionGuid]);

                    var device = new Device(
                        (Guid)reader["id"],
                        home,
                        (string)reader["name"],
                        (string)reader["description"],
                        definition,
                        (string)reader["meta"]);
                    devices.Add(device);
                }

                return devices;
            },
                       this.tokenSource.Token));
        }
Exemple #4
0
        /// <summary>
        /// Get the device definitions
        /// </summary>
        /// <returns>The dictionary of device definitions</returns>
        async Task <Dictionary <string, IEnumerable <DeviceDefinition> > > IDeviceDefinitions.GetDefinitions()
        {
            var devices = await this.connectionManager.ExecuteSql(
                "hub.getdefinitions",
                collection => { },
                reader =>
            {
                var func = SqlDataLayer.GetDeviceFunctions(reader);

                reader.NextResult();


                var definitions = new Dictionary <string, IEnumerable <DeviceDefinition> >();
                while (reader.Read())
                {
                    var id           = (Guid)reader["id"];
                    var manufacturer = (string)reader["name"];
                    var definition   = new DeviceDefinition(
                        id,
                        manufacturer,
                        (string)reader["product"],
                        (DeviceType)reader["type"],
                        func[id]);

                    if (false == definitions.ContainsKey(manufacturer))
                    {
                        definitions.Add(manufacturer, new List <DeviceDefinition>());
                    }

                    ((List <DeviceDefinition>)definitions[manufacturer]).Add(definition);
                }

                return(definitions);
            },
                this.tokenSource.Token);

            return(devices);
        }
Exemple #5
0
        /// <summary>
        /// Create a new device
        /// </summary>
        /// <param name="name">The name</param>
        /// <param name="home">The home</param>
        /// <param name="description">The description</param>
        /// <param name="definition">The definition</param>
        /// <param name="meta">The metadata about the device</param>
        /// <returns>The new device</returns>
        async Task <Device> IDeviceLayer.CreateDevice(string name, Guid home, string description, Guid definition, string meta)
        {
            return(await this.connectionManager.ExecuteSql(
                       "hub.adddevice",
                       collection =>
            {
                collection.AddWithValue("name", name);
                collection.AddWithValue("home", home);
                collection.AddWithValue("description", description);
                collection.AddWithValue("definition", definition);
                collection.AddWithValue("meta", meta);
            },
                       reader =>
            {
                // Get the guid for the new device
                reader.Read();
                var id = (Guid)reader["id"];

                reader.NextResult();

                // Read the functions
                var functions = SqlDataLayer.GetDeviceFunctions(reader);

                reader.NextResult();

                // read the device definition
                reader.Read();
                var defintion = new DeviceDefinition(
                    definition,
                    (string)reader["manufacturer"],
                    (string)reader["product"],
                    (DeviceType)reader["type"],
                    functions[definition]);

                return new Device(id, home, name, description, defintion, meta);
            },
                       this.tokenSource.Token));
        }