/// <summary>
        /// Toggles a device from inactive to active.
        /// </summary>
        /// <param name="account"></param>
        /// <param name="device"></param>
        /// <returns></returns>
        public IDeviceActivationResult ActivateDevice(IAccount account, IDevice device)
        {
            IDeviceActivationResult result = null;

            var deviceValidationResult = ValidateDevice(device);

            if (deviceValidationResult is DeviceFailureResult)
            {
                result = new DeviceActivationFailureResult()
                {
                    Item = device, Data = deviceValidationResult.Data
                };
            }
            else
            {
                if (ValidateAccount(account))
                {
                    var deviceResult = _deviceRepository.GetItem(device.DeviceId);

                    if (deviceResult is DeviceSuccessResult)
                    {
                        deviceResult.Item.IsActive = true;
                        var updateResult = _deviceRepository.UpdateItem(deviceResult.Item);

                        if (updateResult is DeviceSuccessResult)
                        {
                            result = new DeviceActivationSuccessResult();
                        }
                        else
                        {
                            result = new DeviceActivationFailureResult()
                            {
                                Data = updateResult.Data
                            };
                        }
                    }
                    else
                    {
                        result = new DeviceActivationFailureResult();
                        result.AddData(new List <string>()
                        {
                            "Unable to retrieve device."
                        });
                    }
                }
                else
                {
                    result = new DeviceActivationFailureResult()
                    {
                        Item = device
                    };
                    result.AddData(new List <string>()
                    {
                        "The account is not valid."
                    });
                }
            }

            return(result);
        }
        /// <summary>
        /// Toggles a device from active to inactive
        /// </summary>
        /// <param name="account"></param>
        /// <param name="device"></param>
        /// <returns></returns>
        public IDeviceActivationResult DeactivateDevice(IAccount account, IDevice device)
        {
            IDeviceActivationResult result = null;

            //Verify that the account is valid.
            if (ValidateAccount(account))
            {
                device.IsActive = false;
                var deactivationResult = _deviceRepository.UpdateItem(device);

                if (deactivationResult is DeviceSuccessResult)
                {
                    result = new DeviceActivationSuccessResult();
                }
                else
                {
                    result = new DeviceActivationFailureResult()
                    {
                        Item = device, Data = deactivationResult.Data
                    };
                }
            }
            else
            {
                result = new DeviceActivationFailureResult()
                {
                    Item = device
                };
                result.AddData(new List <string>()
                {
                    "The account is not valid."
                });
            }

            return(result);
        }