aboutsummaryrefslogtreecommitdiff
path: root/VB.Net Projects/Kartoteka/Kartoteka/Form1.vb
blob: be6fc4a16dcaafd0f2316dfc7710a32198b48559 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
Imports Newtonsoft.Json

Public Class Form1
    ' The "C:\" directory is protected, only administrator priviledges can write to it,
    ' so instead I save the file to the desktop (of the current user)
    ReadOnly filePath As String = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile) + "\Desktop\data.json"

    ReadOnly people As List(Of Person) = New List(Of Person)

    Private Sub btnInput_Click(sender As Object, e As EventArgs) Handles btnInput.Click
        Dim newPerson = New Person(txtFirstName.Text, txtMiddleName.Text, txtLastName.Text, txtPhoneNumber.Text, txtEmail.Text, dtBirth.Value)

        people.Add(newPerson)
        cbNames.Items.Add($"{people.Count() - 1} || {newPerson.GetFullName()}")

        changeStatus("Въведено!")
    End Sub

    Private Sub btnClear_Click(sender As Object, e As EventArgs) Handles btnClear.Click, MyBase.Load
        txtFirstName.ResetText()
        txtMiddleName.ResetText()
        txtLastName.ResetText()
        txtPhoneNumber.ResetText()
        txtEmail.ResetText()
        dtBirth.Value = Date.Now
        changeStatus(String.Empty)
    End Sub

    Private Sub resetReportTab(sender As Object, e As EventArgs) Handles MyBase.Load
        cbNames.Items.Clear()
        cbNames.ResetText()
        lblPersonData.Text = "Изберете потребител!"
    End Sub

    Private Sub btnSave_Click(sender As Object, e As EventArgs) Handles btnSave.Click
        FileOpen(1, filePath, OpenMode.Output)

        ' Json Serialization, as it's an easier and a more universal way to serialize data
        Print(1, JsonConvert.SerializeObject(people))

        FileClose(1)
        changeStatus("Данните са запазени във файла успешно!")
    End Sub

    Private Sub btnLoad_Click(sender As Object, e As EventArgs) Handles btnLoad.Click
        FileOpen(1, filePath, OpenMode.Input)

        people.Clear()
        people.AddRange(JsonConvert.DeserializeObject(LineInput(1), GetType(List(Of Person))))

        resetReportTab(sender, e)
        cbNames.Items.AddRange(people.Select(Function(p, i) $"{i} || {p.GetFullName()}").ToArray())

        FileClose(1)
        changeStatus("Данните са заредени от файла успешно!")
    End Sub

    Private Sub cbNames_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cbNames.SelectedIndexChanged
        lblPersonData.Text = $"Информация за:{Environment.NewLine}{Environment.NewLine}" + people(cbNames.SelectedIndex).ToString()
    End Sub

    Private Sub changeStatus(message As String)
        lblStatus.ForeColor = Color.Green
        lblStatus.Text = message
    End Sub
End Class

Public Class Person
    Public FirstName As String
    Public MiddleName As String
    Public LastName As String
    Public PhoneNumber As String
    Public Email As String
    Public BirthDay As Date

    Public Sub New(firstName As String, middleName As String, lastName As String, phoneNumber As String, email As String, birthDay As Date)
        Me.FirstName = firstName
        Me.MiddleName = middleName
        Me.LastName = lastName
        Me.PhoneNumber = phoneNumber
        Me.Email = email
        Me.BirthDay = birthDay
    End Sub

    Public Function GetFullName()
        Return $"{Me.FirstName} {Me.MiddleName} {Me.LastName}"
    End Function

    Public Overrides Function ToString() As String
        Return $"Имена: {Me.FirstName} {Me.MiddleName} {Me.LastName}{Environment.NewLine}" +
               $"Телефон: {Me.PhoneNumber}{Environment.NewLine}" +
               $"E-mail: {Me.Email}{Environment.NewLine}" +
               $"Рожденна дата: {Me.BirthDay}{Environment.NewLine}"
    End Function
End Class