package pwc.taxtech.atms.dto.user;

import com.fasterxml.jackson.annotation.JsonProperty;

import java.util.List;

/**
 * @see PwC.Tax.Tech.Atms.Application.Dto\TaxAdminDto\UserRoleDto.cs
 */
public class UserRoleDto {
    @JsonProperty("ID")
    private String id;
    @JsonProperty("userID")
    private String userId;
    private String userName;
    @JsonProperty("roleID")
    private String roleId;
    private String roleName;
    @JsonProperty("projectID")
    private String projectId;
    private String projectName;
    @JsonProperty("serviceTypeID")
    private String serviceTypeId;
    private String serviceTypeName;
    private List<UserRoleDto> subItems;
    private Boolean isActive;
    @JsonProperty("roleCategoryID")
    private String roleCategoryId;
    private String roleCategoryName;
    @JsonProperty("orgID")
    private String orgId;
    private String orgName;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getUserId() {
        return userId;
    }

    public void setUserId(String userId) {
        this.userId = userId;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getRoleId() {
        return roleId;
    }

    public void setRoleId(String roleId) {
        this.roleId = roleId;
    }

    public String getRoleName() {
        return roleName;
    }

    public void setRoleName(String roleName) {
        this.roleName = roleName;
    }

    public String getProjectId() {
        return projectId;
    }

    public void setProjectId(String projectId) {
        this.projectId = projectId;
    }

    public String getProjectName() {
        return projectName;
    }

    public void setProjectName(String projectName) {
        this.projectName = projectName;
    }

    public String getServiceTypeId() {
        return serviceTypeId;
    }

    public void setServiceTypeId(String serviceTypeId) {
        this.serviceTypeId = serviceTypeId;
    }

    public String getServiceTypeName() {
        return serviceTypeName;
    }

    public void setServiceTypeName(String serviceTypeName) {
        this.serviceTypeName = serviceTypeName;
    }

    public List<UserRoleDto> getSubItems() {
        return subItems;
    }

    public void setSubItems(List<UserRoleDto> subItems) {
        this.subItems = subItems;
    }

    public Boolean getIsActive() {
        return isActive;
    }

    public void setIsActive(Boolean isActive) {
        this.isActive = isActive;
    }

    public String getRoleCategoryId() {
        return roleCategoryId;
    }

    public void setRoleCategoryId(String roleCategoryId) {
        this.roleCategoryId = roleCategoryId;
    }

    public String getRoleCategoryName() {
        return roleCategoryName;
    }

    public void setRoleCategoryName(String roleCategoryName) {
        this.roleCategoryName = roleCategoryName;
    }

    public String getOrgId() {
        return orgId;
    }

    public void setOrgId(String orgId) {
        this.orgId = orgId;
    }

    public String getOrgName() {
        return orgName;
    }

    public void setOrgName(String orgName) {
        this.orgName = orgName;
    }

    /* (non-Javadoc)
     * @see java.lang.Object#hashCode()
     */
    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + ((id == null) ? 0 : id.hashCode());
        result = prime * result + ((isActive == null) ? 0 : isActive.hashCode());
        result = prime * result + ((orgId == null) ? 0 : orgId.hashCode());
        result = prime * result + ((orgName == null) ? 0 : orgName.hashCode());
        result = prime * result + ((projectId == null) ? 0 : projectId.hashCode());
        result = prime * result + ((projectName == null) ? 0 : projectName.hashCode());
        result = prime * result + ((roleCategoryId == null) ? 0 : roleCategoryId.hashCode());
        result = prime * result + ((roleCategoryName == null) ? 0 : roleCategoryName.hashCode());
        result = prime * result + ((roleId == null) ? 0 : roleId.hashCode());
        result = prime * result + ((roleName == null) ? 0 : roleName.hashCode());
        result = prime * result + ((serviceTypeId == null) ? 0 : serviceTypeId.hashCode());
        result = prime * result + ((serviceTypeName == null) ? 0 : serviceTypeName.hashCode());
        result = prime * result + ((subItems == null) ? 0 : subItems.hashCode());
        result = prime * result + ((userId == null) ? 0 : userId.hashCode());
        result = prime * result + ((userName == null) ? 0 : userName.hashCode());
        return result;
    }

    /* (non-Javadoc)
     * @see java.lang.Object#equals(java.lang.Object)
     */
    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (getClass() != obj.getClass())
            return false;
        UserRoleDto other = (UserRoleDto) obj;
        if (id == null) {
            if (other.id != null)
                return false;
        } else if (!id.equals(other.id))
            return false;
        if (isActive == null) {
            if (other.isActive != null)
                return false;
        } else if (!isActive.equals(other.isActive))
            return false;
        if (orgId == null) {
            if (other.orgId != null)
                return false;
        } else if (!orgId.equals(other.orgId))
            return false;
        if (orgName == null) {
            if (other.orgName != null)
                return false;
        } else if (!orgName.equals(other.orgName))
            return false;
        if (projectId == null) {
            if (other.projectId != null)
                return false;
        } else if (!projectId.equals(other.projectId))
            return false;
        if (projectName == null) {
            if (other.projectName != null)
                return false;
        } else if (!projectName.equals(other.projectName))
            return false;
        if (roleCategoryId == null) {
            if (other.roleCategoryId != null)
                return false;
        } else if (!roleCategoryId.equals(other.roleCategoryId))
            return false;
        if (roleCategoryName == null) {
            if (other.roleCategoryName != null)
                return false;
        } else if (!roleCategoryName.equals(other.roleCategoryName))
            return false;
        if (roleId == null) {
            if (other.roleId != null)
                return false;
        } else if (!roleId.equals(other.roleId))
            return false;
        if (roleName == null) {
            if (other.roleName != null)
                return false;
        } else if (!roleName.equals(other.roleName))
            return false;
        if (serviceTypeId == null) {
            if (other.serviceTypeId != null)
                return false;
        } else if (!serviceTypeId.equals(other.serviceTypeId))
            return false;
        if (serviceTypeName == null) {
            if (other.serviceTypeName != null)
                return false;
        } else if (!serviceTypeName.equals(other.serviceTypeName))
            return false;
        if (subItems == null) {
            if (other.subItems != null)
                return false;
        } else if (!subItems.equals(other.subItems))
            return false;
        if (userId == null) {
            if (other.userId != null)
                return false;
        } else if (!userId.equals(other.userId))
            return false;
        if (userName == null) {
            if (other.userName != null)
                return false;
        } else if (!userName.equals(other.userName))
            return false;
        return true;
    }


}