<?php
/**
* Copyright (c) Microsoft Corporation.  All Rights Reserved.  Licensed under the MIT License.  See License in the project root for license information.
* 
* WindowsMalwareInformation File
* PHP version 7
*
* @category  Library
* @package   Microsoft.Graph
* @copyright (c) Microsoft Corporation. All rights reserved.
* @license   https://opensource.org/licenses/MIT MIT License
* @link      https://graph.microsoft.com
*/
namespace Microsoft\Graph\Model;

/**
* WindowsMalwareInformation class
*
* @category  Model
* @package   Microsoft.Graph
* @copyright (c) Microsoft Corporation. All rights reserved.
* @license   https://opensource.org/licenses/MIT MIT License
* @link      https://graph.microsoft.com
*/
class WindowsMalwareInformation extends Entity
{
    /**
    * Gets the additionalInformationUrl
    * Indicates an informational URL to learn more about the malware
    *
    * @return string|null The additionalInformationUrl
    */
    public function getAdditionalInformationUrl()
    {
        if (array_key_exists("additionalInformationUrl", $this->_propDict)) {
            return $this->_propDict["additionalInformationUrl"];
        } else {
            return null;
        }
    }

    /**
    * Sets the additionalInformationUrl
    * Indicates an informational URL to learn more about the malware
    *
    * @param string $val The additionalInformationUrl
    *
    * @return WindowsMalwareInformation
    */
    public function setAdditionalInformationUrl($val)
    {
        $this->_propDict["additionalInformationUrl"] = $val;
        return $this;
    }

    /**
    * Gets the category
    * Category of the malware. Possible values are: invalid, adware, spyware, passwordStealer, trojanDownloader, worm, backdoor, remoteAccessTrojan, trojan, emailFlooder, keylogger, dialer, monitoringSoftware, browserModifier, cookie, browserPlugin, aolExploit, nuker, securityDisabler, jokeProgram, hostileActiveXControl, softwareBundler, stealthNotifier, settingsModifier, toolBar, remoteControlSoftware, trojanFtp, potentialUnwantedSoftware, icqExploit, trojanTelnet, exploit, filesharingProgram, malwareCreationTool, remoteControlSoftware, tool, trojanDenialOfService, trojanDropper, trojanMassMailer, trojanMonitoringSoftware, trojanProxyServer, virus, known, unknown, spp, behavior, vulnerability, policy, enterpriseUnwantedSoftware, ransom, hipsRule. default value is invalid. Possible values are: invalid, adware, spyware, passwordStealer, trojanDownloader, worm, backdoor, remoteAccessTrojan, trojan, emailFlooder, keylogger, dialer, monitoringSoftware, browserModifier, cookie, browserPlugin, aolExploit, nuker, securityDisabler, jokeProgram, hostileActiveXControl, softwareBundler, stealthNotifier, settingsModifier, toolBar, remoteControlSoftware, trojanFtp, potentialUnwantedSoftware, icqExploit, trojanTelnet, exploit, filesharingProgram, malwareCreationTool, remoteControlSoftware, tool, trojanDenialOfService, trojanDropper, trojanMassMailer, trojanMonitoringSoftware, trojanProxyServer, virus, known, unknown, spp, behavior, vulnerability, policy, enterpriseUnwantedSoftware, ransom, hipsRule.
    *
    * @return WindowsMalwareCategory|null The category
    */
    public function getCategory()
    {
        if (array_key_exists("category", $this->_propDict)) {
            if (is_a($this->_propDict["category"], "\Microsoft\Graph\Model\WindowsMalwareCategory") || is_null($this->_propDict["category"])) {
                return $this->_propDict["category"];
            } else {
                $this->_propDict["category"] = new WindowsMalwareCategory($this->_propDict["category"]);
                return $this->_propDict["category"];
            }
        }
        return null;
    }

    /**
    * Sets the category
    * Category of the malware. Possible values are: invalid, adware, spyware, passwordStealer, trojanDownloader, worm, backdoor, remoteAccessTrojan, trojan, emailFlooder, keylogger, dialer, monitoringSoftware, browserModifier, cookie, browserPlugin, aolExploit, nuker, securityDisabler, jokeProgram, hostileActiveXControl, softwareBundler, stealthNotifier, settingsModifier, toolBar, remoteControlSoftware, trojanFtp, potentialUnwantedSoftware, icqExploit, trojanTelnet, exploit, filesharingProgram, malwareCreationTool, remoteControlSoftware, tool, trojanDenialOfService, trojanDropper, trojanMassMailer, trojanMonitoringSoftware, trojanProxyServer, virus, known, unknown, spp, behavior, vulnerability, policy, enterpriseUnwantedSoftware, ransom, hipsRule. default value is invalid. Possible values are: invalid, adware, spyware, passwordStealer, trojanDownloader, worm, backdoor, remoteAccessTrojan, trojan, emailFlooder, keylogger, dialer, monitoringSoftware, browserModifier, cookie, browserPlugin, aolExploit, nuker, securityDisabler, jokeProgram, hostileActiveXControl, softwareBundler, stealthNotifier, settingsModifier, toolBar, remoteControlSoftware, trojanFtp, potentialUnwantedSoftware, icqExploit, trojanTelnet, exploit, filesharingProgram, malwareCreationTool, remoteControlSoftware, tool, trojanDenialOfService, trojanDropper, trojanMassMailer, trojanMonitoringSoftware, trojanProxyServer, virus, known, unknown, spp, behavior, vulnerability, policy, enterpriseUnwantedSoftware, ransom, hipsRule.
    *
    * @param WindowsMalwareCategory $val The category
    *
    * @return WindowsMalwareInformation
    */
    public function setCategory($val)
    {
        $this->_propDict["category"] = $val;
        return $this;
    }

    /**
    * Gets the displayName
    * Indicates the name of the malware
    *
    * @return string|null The displayName
    */
    public function getDisplayName()
    {
        if (array_key_exists("displayName", $this->_propDict)) {
            return $this->_propDict["displayName"];
        } else {
            return null;
        }
    }

    /**
    * Sets the displayName
    * Indicates the name of the malware
    *
    * @param string $val The displayName
    *
    * @return WindowsMalwareInformation
    */
    public function setDisplayName($val)
    {
        $this->_propDict["displayName"] = $val;
        return $this;
    }

    /**
    * Gets the lastDetectionDateTime
    * Indicates the last time the malware was detected in UTC
    *
    * @return \DateTime|null The lastDetectionDateTime
    */
    public function getLastDetectionDateTime()
    {
        if (array_key_exists("lastDetectionDateTime", $this->_propDict)) {
            if (is_a($this->_propDict["lastDetectionDateTime"], "\DateTime") || is_null($this->_propDict["lastDetectionDateTime"])) {
                return $this->_propDict["lastDetectionDateTime"];
            } else {
                $this->_propDict["lastDetectionDateTime"] = new \DateTime($this->_propDict["lastDetectionDateTime"]);
                return $this->_propDict["lastDetectionDateTime"];
            }
        }
        return null;
    }

    /**
    * Sets the lastDetectionDateTime
    * Indicates the last time the malware was detected in UTC
    *
    * @param \DateTime $val The lastDetectionDateTime
    *
    * @return WindowsMalwareInformation
    */
    public function setLastDetectionDateTime($val)
    {
        $this->_propDict["lastDetectionDateTime"] = $val;
        return $this;
    }

    /**
    * Gets the severity
    * Severity of the malware. Possible values are: unknown, low, moderate, high, severe. default is unknown. Possible values are: unknown, low, moderate, high, severe.
    *
    * @return WindowsMalwareSeverity|null The severity
    */
    public function getSeverity()
    {
        if (array_key_exists("severity", $this->_propDict)) {
            if (is_a($this->_propDict["severity"], "\Microsoft\Graph\Model\WindowsMalwareSeverity") || is_null($this->_propDict["severity"])) {
                return $this->_propDict["severity"];
            } else {
                $this->_propDict["severity"] = new WindowsMalwareSeverity($this->_propDict["severity"]);
                return $this->_propDict["severity"];
            }
        }
        return null;
    }

    /**
    * Sets the severity
    * Severity of the malware. Possible values are: unknown, low, moderate, high, severe. default is unknown. Possible values are: unknown, low, moderate, high, severe.
    *
    * @param WindowsMalwareSeverity $val The severity
    *
    * @return WindowsMalwareInformation
    */
    public function setSeverity($val)
    {
        $this->_propDict["severity"] = $val;
        return $this;
    }


     /**
     * Gets the deviceMalwareStates
    * List of devices affected by current malware with the malware state on each device
     *
     * @return array|null The deviceMalwareStates
     */
    public function getDeviceMalwareStates()
    {
        if (array_key_exists("deviceMalwareStates", $this->_propDict)) {
           return $this->_propDict["deviceMalwareStates"];
        } else {
            return null;
        }
    }

    /**
    * Sets the deviceMalwareStates
    * List of devices affected by current malware with the malware state on each device
    *
    * @param MalwareStateForWindowsDevice[] $val The deviceMalwareStates
    *
    * @return WindowsMalwareInformation
    */
    public function setDeviceMalwareStates($val)
    {
        $this->_propDict["deviceMalwareStates"] = $val;
        return $this;
    }

}
