package org.wso2.carbon.device.mgt.ios.payload.beans;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import org.wso2.carbon.device.mgt.ios.payload.exception.ProfileConfigurationException;

@ApiModel(value = "PasscodePolicy",
        description = "This class represents the information of setting up password policy")
public class PasscodePolicy extends PayloadOperation {

    @ApiModelProperty(name = "allowSimple",
            value = "Allow/Disallow simple Passcode.", required = true)
    private Boolean allowSimple;
    @ApiModelProperty(name = "forcePIN",
            value = "Allow/Disallow PIN code.", required = true)
    private Boolean forcePIN;
    @ApiModelProperty(name = "maxFailedAttempts", value = "The maximum number of times the end-user can enter"
            + " his/her device passcode incorrectly. EMM will take different courses of action based on the"
            + " OS when  the failed attempts exceed the maximum failed attempts.  Android devices will be "
            + "automatically reset to the original factory settings", required = true)
    private Integer maxFailedAttempts;
    @ApiModelProperty(name = "maxInactivity",
            value = "Maximum number of inactivity.", required = true)
    private Integer maxInactivity;
    @ApiModelProperty(name = "maxPINAgeInDays", value = "The number of days after which the device owner has"
            + " to change his/her passcode", required = true)
    private Integer maxPINAgeInDays;
    @ApiModelProperty(name = "minComplexChars",
            value = "List of device Ids to be need to execute VPN operation.", required = true)
    private Integer minComplexChars;
    @ApiModelProperty(name = "minLength", value = "The minimum number of alphanumerical values that the "
            + "end-user can enter as his/her passcode", required = true)
    private Integer minLength;
    @ApiModelProperty(name = "requireAlphanumeric", value = "Whether or not it is mandatory for the end-user"
            + " to have a mix of digits and characters in his/her passcode", required = true)
    private Boolean requireAlphanumeric;
    @ApiModelProperty(name = "pinHistory", value = "The end-user will not be allowed to reuse a passcode that"
            + " he/she previously entered until he/she exceeds the set pin history length", required = true)
    private Integer pinHistory;
    @ApiModelProperty(name = "maxGracePeriod", value = "The minimum number of Grace time period.", required = true)
    private Integer maxGracePeriod;

    @Override
    public void validateRequest() throws ProfileConfigurationException {

    }

    public Boolean getAllowSimple() {
        return allowSimple;
    }

    public void setAllowSimple(Boolean allowSimple) {
        this.allowSimple = allowSimple;
    }

    public Boolean getForcePIN() {
        return forcePIN;
    }

    public void setForcePIN(Boolean forcePIN) {
        this.forcePIN = forcePIN;
    }

    public Integer getMaxFailedAttempts() {
        return maxFailedAttempts;
    }

    public void setMaxFailedAttempts(Integer maxFailedAttempts) {
        this.maxFailedAttempts = maxFailedAttempts;
    }

    public Integer getMaxInactivity() {
        return maxInactivity;
    }

    public void setMaxInactivity(Integer maxInactivity) {
        this.maxInactivity = maxInactivity;
    }

    public Integer getMaxPINAgeInDays() {
        return maxPINAgeInDays;
    }

    public void setMaxPINAgeInDays(Integer maxPINAgeInDays) {
        this.maxPINAgeInDays = maxPINAgeInDays;
    }

    public Integer getMinComplexChars() {
        return minComplexChars;
    }

    public void setMinComplexChars(Integer minComplexChars) {
        this.minComplexChars = minComplexChars;
    }

    public Integer getMinLength() {
        return minLength;
    }

    public void setMinLength(Integer minLength) {
        this.minLength = minLength;
    }

    public Boolean getRequireAlphanumeric() {
        return requireAlphanumeric;
    }

    public void setRequireAlphanumeric(Boolean requireAlphanumeric) {
        this.requireAlphanumeric = requireAlphanumeric;
    }

    public Integer getPinHistory() {
        return pinHistory;
    }

    public void setPinHistory(Integer pinHistory) {
        this.pinHistory = pinHistory;
    }

    public Integer getMaxGracePeriod() {
        return maxGracePeriod;
    }

    public void setMaxGracePeriod(Integer maxGracePeriod) {
        this.maxGracePeriod = maxGracePeriod;
    }
}
