206 lines
5.7 KiB
VB.net
206 lines
5.7 KiB
VB.net
Imports System.IO
|
|
Imports MySql.Data.MySqlClient
|
|
|
|
' Weight Class To Generate Weight (Category, Class) From Gender, Weight, Date Of Birth.
|
|
Public Class weight
|
|
|
|
Private _id As Integer ' Weight Profile ID
|
|
Private _age As age ' Age Object (years, monthes, days)
|
|
Private _gender As String ' Weight Filter Gender
|
|
Private _weight As Double ' Weight In KG
|
|
Private _weight_class As String ' Weight Class Name
|
|
Private _weight_category As String ' Weight Category Name
|
|
|
|
Public Sub New(Birthdate As Date, Gender As String, Weight As Double)
|
|
|
|
_age = New age(Birthdate)
|
|
_gender = Gender
|
|
_weight = Weight
|
|
|
|
' Weight Filter That Gets
|
|
WeightFilter(_age.Years, Weight, Gender)
|
|
|
|
End Sub
|
|
|
|
ReadOnly Property WeightFilterID As Integer
|
|
Get
|
|
Return _id
|
|
End Get
|
|
End Property
|
|
|
|
ReadOnly Property Weight As String
|
|
Get
|
|
Return Math.Round(_weight, 1).ToString
|
|
End Get
|
|
End Property
|
|
|
|
ReadOnly Property WeightClass As String
|
|
Get
|
|
Return _weight_class
|
|
End Get
|
|
End Property
|
|
|
|
ReadOnly Property WeightCategory As String
|
|
Get
|
|
Return _weight_category
|
|
End Get
|
|
End Property
|
|
|
|
Private Sub WeightFilter(Age As Integer, Weight As String, Gender As String)
|
|
|
|
Dim QRY As String = ("
|
|
|
|
SELECT
|
|
id,
|
|
Category,
|
|
ClassName
|
|
FROM
|
|
weight_divisions
|
|
WHERE
|
|
('" & Age & "' BETWEEN weight_divisions.minAge AND weight_divisions.maxAge)
|
|
AND
|
|
(weight_divisions.gender = '" & Gender & "')
|
|
AND
|
|
('" & Weight & "' > weight_divisions.minWeight AND '" & Weight & "' <= weight_divisions.maxWeight)
|
|
|
|
")
|
|
|
|
Dim CON As New MySqlConnection(CON_STRING)
|
|
Dim COM As New MySqlCommand(QRY, CON)
|
|
Dim RDR As MySqlDataReader
|
|
|
|
Try
|
|
CON.Open()
|
|
RDR = COM.ExecuteReader
|
|
|
|
If RDR.HasRows = True Then
|
|
While RDR.Read
|
|
_id = RDR("id")
|
|
_weight_category = RDR("Category")
|
|
_weight_class = RDR("ClassName")
|
|
End While
|
|
End If
|
|
|
|
CON.Close()
|
|
Catch ex As MySqlException
|
|
_weight_category = Nothing
|
|
_weight_class = Nothing
|
|
MessageBox.Show(ex.Message)
|
|
Finally
|
|
CON.Dispose()
|
|
End Try
|
|
|
|
End Sub
|
|
|
|
Private Sub GetPersonWeight(PersonID As Integer)
|
|
|
|
Dim QRY As String =
|
|
("
|
|
select
|
|
person.weight,
|
|
person.gender,
|
|
person.date_of_birth,
|
|
FROM
|
|
person
|
|
where
|
|
person.id=" + PersonID.ToString
|
|
)
|
|
|
|
Dim CON As New MySqlConnection(CON_STRING)
|
|
Dim COM As New MySqlCommand(QRY, CON)
|
|
Dim RDR As MySqlDataReader
|
|
|
|
Try
|
|
CON.Open()
|
|
RDR = COM.ExecuteReader
|
|
If RDR.HasRows = True Then
|
|
|
|
While RDR.Read
|
|
|
|
Try
|
|
_age = New age(RDR("date_of_birth"))
|
|
Catch ex As Exception
|
|
|
|
End Try
|
|
|
|
Try
|
|
_weight = RDR("weight")
|
|
Catch ex As Exception
|
|
_weight = 0
|
|
End Try
|
|
|
|
Try
|
|
_gender = RDR("gender")
|
|
Catch ex As Exception
|
|
_gender = Nothing
|
|
End Try
|
|
|
|
End While
|
|
End If
|
|
CON.Close()
|
|
Catch ex As MySqlException
|
|
MessageBox.Show(ex.Message)
|
|
End Try
|
|
|
|
End Sub
|
|
|
|
Public Sub UpdateWeight(PersonID As Integer, NewWeight As Double)
|
|
|
|
' If Person ID = 0 Just Dont Do any Thing
|
|
If PersonID = 0 Then Exit Sub
|
|
|
|
Dim QRY As String = ("
|
|
|
|
/* Take The New Reading */
|
|
|
|
SET @pid = " & PersonID.ToString & "; /* Person ID */
|
|
SET @weight = " & NewWeight.ToString & "; /* New Weight Reading */
|
|
SET SQL_SAFE_UPDATES = 0; /* Disable Safe Mode For Updates */
|
|
|
|
/* Update Person Weight */
|
|
|
|
UPDATE person SET weight = @weight WHERE id = @pid;
|
|
|
|
/* Update Participants Weight Classes */
|
|
|
|
UPDATE
|
|
person
|
|
LEFT JOIN
|
|
weight_divisions
|
|
ON
|
|
(YEAR(CURDATE()) - YEAR(person.date_of_birth) BETWEEN weight_divisions.minAge AND weight_divisions.maxAge) AND
|
|
(weight_divisions.gender = person.gender) AND
|
|
(person.weight > weight_divisions.minWeight AND person.weight <= weight_divisions.maxWeight)
|
|
SET
|
|
person.wp = weight_divisions.id,
|
|
person.category = weight_divisions.category,
|
|
person.weight_Class = weight_divisions.className
|
|
WHERE
|
|
person.id = @pid;
|
|
|
|
/* Take Snap Shot Copy Current Weight To Person Body As A History */
|
|
|
|
INSERT INTO person_body (pid, weight, category, weight_class) SELECT id, weight, category, weight_class FROM person WHERE id = @pid;
|
|
|
|
/* Enable Safe Mode For Updates */
|
|
|
|
SET SQL_SAFE_UPDATES = 1;
|
|
")
|
|
|
|
Dim CON As New MySqlConnection(CON_STRING)
|
|
Dim COM As New MySqlCommand(QRY, CON)
|
|
|
|
Try
|
|
CON.Open()
|
|
COM.ExecuteNonQuery()
|
|
CON.Close()
|
|
Catch ex As MySqlException
|
|
MessageBox.Show(ex.Message)
|
|
Finally
|
|
CON.Dispose()
|
|
End Try
|
|
|
|
End Sub
|
|
|
|
End Class
|