Imports System.Xml
Imports System.Xml.Serialization.XmlSerializer
Imports System.IO
Imports Microsoft.VisualBasic


<Serializable()> _
<Xml.Serialization.XmlRoot("PersonalProfile", Namespace:="")> _
Public Class PersonalProfile
    'Name, Contact information
    Private m_FirstName As String
    Private m_LastName As String
    Private m_PhoneNumber As Long
    Private m_Street As String
    Private m_City As String
    Private m_Zip As Long
    Private m_State As String

    'Personal Data
    Private m_BirthDate As Date
    Private m_Weight As Double
    Private m_Height As Integer
    Private m_Gender As enumGender
    Private m_HairColor As enumHairColor
    Private m_EyeColor As enumEyeColor
    Private m_MedicalConditions As String
    Private m_BloodType As enumBloodType

    Public Enum enumBloodType
        <Xml.Serialization.XmlEnum(Name:="O Positive")> _
        Opositive
        <Xml.Serialization.XmlEnum(Name:="O Negative")> _
        Onegative
        <Xml.Serialization.XmlEnum(Name:="A Positive")> _
        Apositive
        <Xml.Serialization.XmlEnum(Name:="A Negative")> _
        Anegative
        <Xml.Serialization.XmlEnum(Name:="B Positive")> _
        Bpositive
        <Xml.Serialization.XmlEnum(Name:="B Negative")> _
        Bnegative
        <Xml.Serialization.XmlEnum(Name:="AB Positive")> _
        ABpositive
        <Xml.Serialization.XmlEnum(Name:="AB Negative")> _
        ABnegative
        <Xml.Serialization.XmlEnum(Name:="Dont Know")> _
        DontKnow
        <Xml.Serialization.XmlEnum(Name:="Other")> _
        Other
    End Enum

    Public Enum enumGender
        <Xml.Serialization.XmlEnum(Name:="Male")> _
        Male
        <Xml.Serialization.XmlEnum(Name:="Female")> _
        Female
    End Enum

    Public Enum enumHairColor
        <Xml.Serialization.XmlEnum(Name:="Black")> _
        Black
        <Xml.Serialization.XmlEnum(Name:="Blonde")> _
        Blonde
        <Xml.Serialization.XmlEnum(Name:="Brown")> _
        Brown
        <Xml.Serialization.XmlEnum(Name:="Brunette")> _
        Brunette
        <Xml.Serialization.XmlEnum(Name:="Gray")> _
        Gray
        <Xml.Serialization.XmlEnum(Name:="Red")> _
        Red
        <Xml.Serialization.XmlEnum(Name:="Other")> _
        Other
    End Enum

    Public Enum enumEyeColor
        <Xml.Serialization.XmlEnum(Name:="Blue")> _
        Blue
        <Xml.Serialization.XmlEnum(Name:="Brown")> _
        Brown
        <Xml.Serialization.XmlEnum(Name:="Green")> _
        Green
        <Xml.Serialization.XmlEnum(Name:="Hazel")> _
        Hazel
        <Xml.Serialization.XmlEnum(Name:="Other")> _
        Other
    End Enum

    <Xml.Serialization.XmlElement(ElementName:="FirstName")> _
    Public Property FirstName() As String
        Get
            Return m_FirstName
        End Get
        Set(ByVal Value As String)
            m_FirstName = Value
        End Set
    End Property

    <Xml.Serialization.XmlElement(ElementName:="LastName")> _
    Property LastName() As String
        Get
            Return m_LastName
        End Get
        Set(ByVal Value As String)
            m_LastName = Value
        End Set
    End Property

    <Xml.Serialization.XmlElement(ElementName:="BirthDate", DataType:="date")> _
    Property BirthDate() As Date
        Get
            Return m_BirthDate
        End Get
        Set(ByVal Value As Date)
            m_BirthDate = Value
        End Set
    End Property

    <Xml.Serialization.XmlElement(ElementName:="Weight")> _
    Property Weight() As Double
        Get
            Return m_Weight
        End Get
        Set(ByVal Value As Double)
            m_Weight = Value
        End Set
    End Property

    <Xml.Serialization.XmlElement(ElementName:="Height")> _
    Property Height() As Integer
        Get
            Return m_Height
        End Get
        Set(ByVal Value As Integer)
            m_Height = Value
        End Set
    End Property

    <Xml.Serialization.XmlElement(ElementName:="Gender")> _
    Property Gender() As enumGender
        Get
            Return m_Gender
        End Get
        Set(ByVal Value As enumGender)
            m_Gender = Value
        End Set
    End Property

    <Xml.Serialization.XmlElement(ElementName:="EyeColor")> _
    Property EyeColor() As enumEyeColor
        Get
            Return m_EyeColor
        End Get
        Set(ByVal Value As enumEyeColor)
            m_EyeColor = Value
        End Set
    End Property

    <Xml.Serialization.XmlElement(ElementName:="BloodType")> _
    Property BloodType() As enumBloodType
        Get
            Return m_BloodType
        End Get
        Set(ByVal Value As enumBloodType)
            m_BloodType = Value
        End Set
    End Property

    <Xml.Serialization.XmlElement(ElementName:="HairColor")> _
    Property HairColor() As enumHairColor
        Get
            Return m_HairColor
        End Get
        Set(ByVal Value As enumHairColor)
            m_HairColor = Value
        End Set
    End Property

    <Xml.Serialization.XmlElement(ElementName:="StreetAddress")> _
    Property StreetAddress() As String
        Get
            Return m_Street
        End Get
        Set(ByVal Value As String)
            m_Street = Value
        End Set
    End Property

    <Xml.Serialization.XmlElement(ElementName:="City")> _
    Property City() As String
        Get
            Return m_City
        End Get
        Set(ByVal Value As String)
            m_City = Value
        End Set
    End Property

    <Xml.Serialization.XmlElement(ElementName:="ZipCode")> _
    Property ZipCode() As Long
        Get
            Return m_Zip
        End Get
        Set(ByVal Value As Long)
            m_Zip = Value
        End Set
    End Property

    <Xml.Serialization.XmlElement(ElementName:="State")> _
    Property State() As String
        Get
            Return m_State
        End Get
        Set(ByVal Value As String)
            m_State = Value
        End Set
    End Property

    <Xml.Serialization.XmlElement(ElementName:="PhoneNumber")> _
    Property PhoneNumber() As Long
        Get
            Return m_PhoneNumber
        End Get
        Set(ByVal Value As Long)
            m_PhoneNumber = Value
        End Set
    End Property

    <Xml.Serialization.XmlElement(ElementName:="MedicalConditions")> _
    Property MedicalConditions() As String
        Get
            Return m_MedicalConditions
        End Get
        Set(ByVal Value As String)
            m_MedicalConditions = Value
        End Set
    End Property

    Sub New(ByVal firstName As String, ByVal lastName As String)
        MyClass.FirstName = firstName
        MyClass.LastName = lastName
    End Sub

    Sub New()

    End Sub


    Public Function GetFullName() As String
        Return MyClass.FirstName + " " + MyClass.LastName
    End Function
    Public Function GetFullAddress() As String
        Return MyClass.StreetAddress + " " + MyClass.City + " " + MyClass.ZipCode + " " + MyClass.State
    End Function
End Class
