/// <summary>
 /// Loads the given SerialKey object from the given database data reader.
 /// </summary>
 /// <param name="serialKey">The SerialKey object to load.</param>
 /// <param name="dr">The database data reader to read data from.</param>
 public static void LoadDataReader(SerialKey serialKey, IDataReader dr)
 {
     //SET FIELDS FROM ROW DATA
     serialKey.SerialKeyId   = dr.GetInt32(0);
     serialKey.DigitalGoodId = dr.GetInt32(1);
     serialKey.SerialKeyData = dr.GetString(2);
     serialKey.IsDirty       = false;
 }
 /// <summary>
 /// Returns a serial key back to the provider store
 /// </summary>
 /// <param name="keyData">The key to return</param>
 public override void ReturnSerialKey(string keyData)
 {
     if (!string.IsNullOrEmpty(keyData))
     {
         SerialKey skey = new SerialKey();
         skey.SerialKeyData = keyData;
         skey.DigitalGoodId = DigitalGood_.DigitalGoodId;
         skey.Save();
     }
 }
        /// <summary>
        /// Acquires a new serial key from provider
        /// </summary>
        /// <returns>Serial key acquisition response</returns>
        public override AcquireSerialKeyResponse AcquireSerialKey()
        {
            AcquireSerialKeyResponse response = new AcquireSerialKeyResponse();

            if (DigitalGood_.SerialKeys.Count > 0)
            {
                SerialKey key = DigitalGood_.SerialKeys[0];
                DigitalGood_.SerialKeys.RemoveAt(0);
                string keyData = key.SerialKeyData;
                key.Delete();
                response.Successful = true;
                response.SerialKey  = keyData;
                return(response);
            }
            else
            {
                response.ErrorMessage = "There are no serial keys available for the digital good '" + DigitalGood_.Name + "'";
                return(response);
            }
        }