• Tidak ada hasil yang ditemukan

Sistem Informasi Pengingat Jadwal Pengembalian Buku Di Perpustakaan Fmipa Usu Berbasis Sms Gateway

N/A
N/A
Protected

Academic year: 2017

Membagikan "Sistem Informasi Pengingat Jadwal Pengembalian Buku Di Perpustakaan Fmipa Usu Berbasis Sms Gateway"

Copied!
36
0
0

Teks penuh

(1)
(2)
(3)
(4)
(5)

LAMPIRAN

Listing Program

FormUtama.vb

Public Class FormUtama

Dim ucHome As UcHome

Dim ucConnection As UcConnection

Dim ucBook As UcBook

Dim ucAnggota As UcAnggota

Dim ucPeminjaman As UcPeminjaman

Dim ucPengembalian As UcPengembalian

Public smsBackgroundProcess As SMSBackgroundProcess

Public Sub New()

' This call is required by the designer.

InitializeComponent()

' Add any initialization after the InitializeComponent() call.

smsBackgroundProcess = New SMSBackgroundProcess() smsBackgroundProcess.RunSMSBackgroundProcess() End Sub

Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load

ucConnection = New UcConnection() ucConnection.Dock = DockStyle.Fill ucConnection.Location = New Point(0, 0) ucConnection.Visible = True

panelContent.Controls.Add(ucConnection)

ucBook = New UcBook()

ucBook.Dock = DockStyle.Fill ucBook.Location = New Point(0, 0) ucBook.Visible = True

panelContent.Controls.Add(ucBook)

ucAnggota = New UcAnggota() ucAnggota.Dock = DockStyle.Fill ucAnggota.Location = New Point(0, 0) ucAnggota.Visible = True

panelContent.Controls.Add(ucAnggota)

ucPeminjaman = New UcPeminjaman() ucPeminjaman.Dock = DockStyle.Fill ucPeminjaman.Location = New Point(0, 0) ucPeminjaman.Visible = True

panelContent.Controls.Add(ucPeminjaman)

(6)

ucPengembalian.Visible = True

panelContent.Controls.Add(ucPengembalian)

RemoveUC()

ucConnection.Visible = True End Sub

Private Sub RemoveUC()

For Each item As Control In panelContent.Controls If

item.GetType().BaseType.FullName.Equals("System.Windows.Forms.UserControl") Then

Dim uc As UserControl

uc = CType(item, UserControl) uc.Visible = False

End If Next End Sub

Private Sub tsbConnection_Click(sender As System.Object, e As System.EventArgs) Handles tsbConnection.Click

If Not ucConnection.Visible Then RemoveUC()

ucConnection.Visible = True End If

End Sub

Private Sub tsbHome_Click(sender As System.Object, e As System.EventArgs) Handles tsbHome.Click

If Not ucHome.Visible Then RemoveUC()

ucHome.Visible = True End If

End Sub

Private Sub tsbBuku_Click(sender As System.Object, e As System.EventArgs) Handles tsbBuku.Click

If Not ucBook.Visible Then RemoveUC()

ucBook.Visible = True ucBook.LoadData() End If

End Sub

Private Sub tsbAnggota_Click(sender As System.Object, e As System.EventArgs) Handles tsbAnggota.Click

If Not ucAnggota.Visible Then RemoveUC()

ucAnggota.Visible = True ucAnggota.LoadData() End If

End Sub

Private Sub tsbPeminjaman_Click(sender As System.Object, e As System.EventArgs) Handles tsbPeminjaman.Click

If Not ucPeminjaman.Visible Then RemoveUC()

ucPeminjaman.Visible = True ucPeminjaman.LoadData() End If

(7)

Private Sub tsbPengembalian_Click(sender As System.Object, e As System.EventArgs) Handles tsbPengembalian.Click

If Not ucPengembalian.Visible Then RemoveUC()

ucPengembalian.Visible = True ucPengembalian.LoadData() End If

End Sub

Private Sub FormUtama_FormClosed(sender As System.Object, e As System.Windows.Forms.FormClosedEventArgs) Handles MyBase.FormClosed If Not IsNothing(smsBackgroundProcess.port) Then

smsBackgroundProcess.ClosePort() End If

End Sub End Class

FrmAddAnggota.vb

Public Class FrmAddAnggota

Dim database As DatabaseEntities

Public Sub New()

' This call is required by the designer.

InitializeComponent()

' Add any initialization after the InitializeComponent() call.

database = New DatabaseEntities() End Sub

Private Sub btnSave_Click(sender As System.Object, e As System.EventArgs) Handles btnSave.Click

If txtNama.Text = "" Then

General.ErrorMessage("Nama tidak boleh kosong!") Return

End If

If txtNIM.Text = "" Then

General.ErrorMessage("Nim tidak boleh kosong!") Return

End If

If cmbFakultas.SelectedIndex < 0 Then

General.ErrorMessage("Silahkan pilih Fakultas Anda!") Return

End If

If cmbProdi.SelectedIndex < 0 Then

General.ErrorMessage("Silahkan pilih Program Studi Anda!") Return

End If

If txtTmpLahir.Text = "" Then

General.ErrorMessage("Tempat lahir tidak boleh kosong!") Return

End If

If txtNoHp.Text = "" Then

(8)

Return End If

Try

Dim prodi As prodi = cmbProdi.SelectedItem

Dim anggota As anggota = New anggota() anggota.nama = txtNama.Text

anggota.nim = txtNIM.Text

anggota.id_prodi = prodi.id_prodi anggota.tempat_lahir = txtTmpLahir.Text anggota.tanggal_lahir = dtpTanggalLahir.Value anggota.no_hp = txtNoHp.Text

database.anggota.AddObject(anggota) database.SaveChanges()

Me.DialogResult = Windows.Forms.DialogResult.OK Catch ex As Exception

General.ErrorMessage(ex.Message) End Try

End Sub

Private Sub btnBatal_Click(sender As System.Object, e As System.EventArgs) Handles btnBatal.Click

Me.DialogResult = Windows.Forms.DialogResult.Cancel End Sub

Private Sub FrmAddAnggota_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load

Dim fakultas = (From f In database.fakultas Select f).ToList()

cmbFakultas.DataSource = fakultas cmbFakultas.ValueMember = "nama" End Sub

Private Sub cmbFakultas_SelectedValueChanged(sender As System.Object, e As System.EventArgs) Handles cmbFakultas.SelectedValueChanged

Dim selectedFakultas As fakultas = cmbFakultas.SelectedItem

Dim prodi = (From p In database.prodi

Where p.id_fakultas = selectedFakultas.id_fakultas Select p).ToList()

cmbProdi.DataSource = prodi cmbProdi.ValueMember = "nama" End If

End Sub

Private Sub txtNama_TextChanged(sender As System.Object, e As System.EventArgs) Handles txtNama.TextChanged

End Sub End Class

FrmAddBook.vb

Public Class FrmAddBook

(9)

Private Sub FrmAddBook_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load

database = New DatabaseEntities() End Sub

Private Sub btnBatal_Click(sender As System.Object, e As System.EventArgs) Handles btnBatal.Click

Me.DialogResult = Windows.Forms.DialogResult.Cancel End Sub

Private Sub btnSave_Click(sender As System.Object, e As System.EventArgs) Handles btnSave.Click

If txtISBN.Text = "" Then

General.ErrorMessage("ISBN buku tidak boleh kosong!") Return

End If

If txtCode.Text = "" Then

General.ErrorMessage("Kode buku tidak boleh kosong!") Return

End If

If txtJudul.Text = "" Then

General.ErrorMessage("Judul buku tidak boleh kosong!") Return

End If

If txtPengarang.Text = "" Then

General.ErrorMessage("Pengarang buku tidak boleh kosong!") Return

End If

If txtPenerbit.Text = "" Then

General.ErrorMessage("Penerbit buku tidak boleh kosong!") Return

End If

Dim jumlah As Integer

If txtJumlah.Text = "" Or Not Integer.TryParse(txtJumlah.Text, jumlah) Then

General.ErrorMessage("Jumlah buku tidak valid!") Return

End If

For i As Integer = 1 To jumlah Dim book As buku = New buku() book.isbn = txtISBN.Text

book.code = txtCode.Text.ToUpper() & i book.judul_buku = txtJudul.Text

book.pengarang = txtPengarang.Text book.penerbit = txtPenerbit.Text book.unit = i

book.status = True

database.AddTobuku(book) Next

database.SaveChanges()

(10)

Private Sub txtISBN_TextChanged(sender As System.Object, e As System.EventArgs) Handles txtISBN.TextChanged

End Sub End Class

FrmAddPeminjaman.vb

Public Class FrmAddPeminjaman

Dim database As DatabaseEntities

Dim book As buku

Dim anggota As anggota

Public Sub New()

' This call is required by the designer.

InitializeComponent()

' Add any initialization after the InitializeComponent() call.

database = New DatabaseEntities() End Sub

Private Sub btnBatal_Click(sender As System.Object, e As System.EventArgs) Handles btnBatal.Click

Me.DialogResult = Windows.Forms.DialogResult.Cancel End Sub

Private Sub btnSave_Click(sender As System.Object, e As System.EventArgs) Handles btnSave.Click

If IsNothing(book) Then

General.ErrorMessage("Silihkan pilih buku yang akan dipinjam!") Return

End If

If IsNothing(anggota) Then

General.ErrorMessage("Silahkan pilih anggota yang meminjam buku!") Return

End If

If book.status = False Then

General.ErrorMessage("Buku tidak tersedia") Return

End If

Dim peminjaman As peminjaman = New peminjaman() peminjaman.code = txtCode.Text

peminjaman.tanggal = dtpTanggal.Value peminjaman.id_anggota = anggota.id_anggota peminjaman.id_buku = book.id_buku

peminjaman.no_hp = txtAnggotaHp.Text peminjaman.konfirmasi = False

database.peminjaman.AddObject(peminjaman)

book.status = False

database.ObjectStateManager.ChangeObjectState(book,

EntityState.Modified)

database.SaveChanges()

(11)

Private Sub FrmAddPeminjaman_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load

Dim code As String = "P" & DateTime.Now.ToString("MM")

Dim data = (From p In database.peminjaman

Where p.code.ToLower.StartsWith(code.ToLower) Order By p.code Descending

Select p).FirstOrDefault() txtCode.Text = code

End Sub

Private Sub pctSearchBuku_Click(sender As System.Object, e As System.EventArgs) Handles pctSearchBuku.Click

Dim frmSearchBook As FrmSearchBook = New FrmSearchBook() Dim result As DialogResult = frmSearchBook.ShowDialog()

If result = Windows.Forms.DialogResult.OK Then book = (From b In database.buku

Where b.id_buku = frmSearchBook.book.id_buku Select b).FirstOrDefault()

txtBukuJudul.Text = book.judul_buku txtBukuPengarang.Text = book.pengarang() txtBukuPenerbit.Text = book.penerbit txtBukuUnit.Text = book.unit

End If End Sub

Private Sub pctSearchAnggota_Click(sender As System.Object, e As System.EventArgs) Handles pctSearchAnggota.Click

Dim frmSearchAnggota As FrmSearchAnggota = New FrmSearchAnggota() Dim result As DialogResult = frmSearchAnggota.ShowDialog()

If result = Windows.Forms.DialogResult.OK Then anggota = frmSearchAnggota.anggota

txtAnggotaNim.Text = anggota.nim txtAnggotaNama.Text = anggota.nama

txtAnggotaFakultas.Text = anggota.prodi.fakultas.nama txtAnggotaProdi.Text = anggota.prodi.nama

txtAnggotaHp.Text = anggota.no_hp End If

End Sub

Private Sub txtCode_TextChanged(sender As System.Object, e As System.EventArgs) Handles txtCode.TextChanged

End Sub End Class

FrmEditAnggota.vb

Public Class FrmEditAnggota

Dim database As DatabaseEntities

Dim IsEdit As Boolean

Public anggota As anggota

Public Sub New()

' This call is required by the designer.

(12)

' Add any initialization after the InitializeComponent() call.

database = New DatabaseEntities() IsEdit = False

anggota = New anggota() End Sub

Private Sub FrmEditAnggota_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load

Dim fakultas = (From f In database.fakultas Select f).ToList()

cmbFakultas.DataSource = fakultas cmbFakultas.ValueMember = "nama"

Dim prodi = (From p In database.prodi

Where p.id_fakultas = anggota.prodi.id_fakultas Select p).ToList()

cmbProdi.DataSource = prodi cmbProdi.ValueMember = "nama"

txtNama.Text = anggota.nama txtNIM.Text = anggota.nim

cmbFakultas.SelectedValue = anggota.prodi.fakultas.nama cmbProdi.SelectedValue = anggota.prodi.nama

txtTmpLahir.Text = anggota.tempat_lahir dtpTanggalLahir.Value = anggota.tanggal_lahir txtNoHp.Text = anggota.no_hp

txtNama.Enabled = IsEdit txtNIM.Enabled = IsEdit cmbFakultas.Enabled = IsEdit cmbProdi.Enabled = IsEdit txtTmpLahir.Enabled = IsEdit dtpTanggalLahir.Enabled = IsEdit txtNoHp.Enabled = IsEdit

btnSave.Text = "&Edit" End Sub

Private Sub btnBatal_Click(sender As System.Object, e As System.EventArgs) Handles btnBatal.Click

Me.DialogResult = Windows.Forms.DialogResult.Cancel End Sub

Private Sub btnSave_Click(sender As System.Object, e As System.EventArgs) Handles btnSave.Click

If IsEdit Then

If txtNama.Text = "" Then

General.ErrorMessage("Nama tidak boleh kosong!") Return

End If

If txtNIM.Text = "" Then

General.ErrorMessage("Nim tidak boleh kosong!") Return

End If

(13)

General.ErrorMessage("Silahkan pilih Fakultas Anda!") Return

End If

If cmbProdi.SelectedIndex < 0 Then

General.ErrorMessage("Silahkan pilih Program Studi Anda!") Return

End If

If txtTmpLahir.Text = "" Then

General.ErrorMessage("Tempat lahir tidak boleh kosong!") Return

End If

If txtNoHp.Text = "" Then

General.ErrorMessage("No hp tidak boleh kosong!") Return

End If

Dim prodi As prodi = cmbProdi.SelectedItem

Dim temp As anggota = (From a In database.anggota

Where a.id_anggota = anggota.id_anggota Select a).First()

temp.nama = txtNama.Text temp.nim = txtNIM.Text

temp.id_prodi = prodi.id_prodi temp.tempat_lahir = txtTmpLahir.Text temp.tanggal_lahir = dtpTanggalLahir.Value temp.no_hp = txtNoHp.Text

If IsNothing(temp.EntityKey) Or temp.EntityKey.IsTemporary Then database.anggota.AddObject(temp)

End If

database.ObjectStateManager.ChangeObjectState(temp,

EntityState.Modified)

database.SaveChanges()

Me.DialogResult = Windows.Forms.DialogResult.OK Else

IsEdit = True

txtNama.Enabled = IsEdit txtNIM.Enabled = IsEdit cmbFakultas.Enabled = IsEdit cmbProdi.Enabled = IsEdit txtTmpLahir.Enabled = IsEdit dtpTanggalLahir.Enabled = IsEdit txtNoHp.Enabled = IsEdit

btnSave.Text = "&Simpan" End If

End Sub

Private Sub cmbFakultas_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles cmbFakultas.SelectedIndexChanged

Dim selectedFakultas As fakultas = cmbFakultas.SelectedItem

Dim prodi = (From p In database.prodi

(14)

cmbProdi.DataSource = prodi End Sub

Private Sub txtNama_TextChanged(sender As System.Object, e As System.EventArgs) Handles txtNama.TextChanged

End Sub End Class

FrmEditBook.vb

Public Class FrmEditBook

Public book As buku

Dim database As DatabaseEntities

Public Sub New()

' This call is required by the designer.

InitializeComponent()

' Add any initialization after the InitializeComponent() call.

book = New buku

database = New DatabaseEntities() End Sub

Private Sub FrmEditBook_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load

txtISBN.Text = book.isbn txtCode.Text = book.code

txtJudul.Text = book.judul_buku txtPengarang.Text = book.pengarang txtPenerbit.Text = book.penerbit

cmbStatus.SelectedItem = IIf(book.status = True, "tersedia", "tidak tersedia")

End Sub

Private Sub btnSave_Click(sender As System.Object, e As System.EventArgs) Handles btnSave.Click

If txtISBN.Text = "" Then

General.ErrorMessage("ISBN buku tidak boleh kosong!") Return

End If

If txtCode.Text = "" Then

General.ErrorMessage("Kode buku tidak boleh kosong!") Return

End If

If txtJudul.Text = "" Then

General.ErrorMessage("Judul buku tidak boleh kosong!") Return

End If

If txtPengarang.Text = "" Then

General.ErrorMessage("Pengarang buku tidak boleh kosong!") Return

End If

If txtPenerbit.Text = "" Then

(15)

End If

Dim buku As buku = (From b In database.buku Where b.id_buku = book.id_buku Select b).FirstOrDefault() buku.isbn = txtISBN.Text

buku.code = txtCode.Text.ToUpper() buku.judul_buku = txtJudul.Text buku.pengarang = txtPengarang.Text buku.penerbit = txtPenerbit.Text

buku.status = If(cmbStatus.Text.Equals("tersedia"), True, False)

database.SaveChanges()

Me.DialogResult = Windows.Forms.DialogResult.OK

End Sub

Private Sub btnBatal_Click(sender As System.Object, e As System.EventArgs) Handles btnBatal.Click

Me.DialogResult = Windows.Forms.DialogResult.Cancel End Sub

Private Sub txtISBN_TextChanged(sender As System.Object, e As System.EventArgs) Handles txtISBN.TextChanged

End Sub End Class

FrmPengembalian.vb

ublic Class FrmPengembalian

Dim database As DatabaseEntities

Dim peminjaman As peminjaman

Public Sub New()

' This call is required by the designer.

InitializeComponent()

' Add any initialization after the InitializeComponent() call.

database = New DatabaseEntities() End Sub

Private Sub FrmPengembalian_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load

Dim listCode = (From p In database.peminjaman Where p.pengembalian.Count = 0 Select p).ToList()

cmbCode.DataSource = listCode cmbCode.ValueMember = "code"

txtTanggalPeminjaman.Text = "" txtDenda.Text = ""

(16)

txtAnggotaNim.Text = "" txtAnggotaNama.Text = "" txtAnggotaFakultas.Text = "" txtAnggotaProdi.Text = "" txtAnggotaHp.Text = "" End Sub

Private Sub cmbCode_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles cmbCode.SelectedIndexChanged

If Not IsNothing(peminjaman) Then Dim settingTime As Integer =

General.GetSetting("lama_peminjaman")

Dim settingDenda As Decimal =

General.GetSetting("denda_per_hari")

Dim denda As Integer

Dim dateNow As DateTime = DateTime.Now Dim pDate As DateTime =

DateTime.Parse(peminjaman.tanggal.ToString()).AddDays(1)

Dim range As Integer = (dateNow - pDate).TotalDays If (range > settingTime) Then

denda = (range - settingTime) * settingDenda Else

denda = 0 End If

txtTanggalPeminjaman.Text = pDate.ToShortDateString() txtDenda.Text = denda

txtBukuJudul.Text = peminjaman.buku.judul_buku txtBukuPengarang.Text = peminjaman.buku.pengarang txtBukuPenerbit.Text = peminjaman.buku.penerbit txtBukuUnit.Text = peminjaman.buku.unit

txtAnggotaNim.Text = peminjaman.anggota.nim txtAnggotaNama.Text = peminjaman.anggota.nama txtAnggotaFakultas.Text =

peminjaman.anggota.prodi.fakultas.nama

txtAnggotaProdi.Text = peminjaman.anggota.prodi.nama txtAnggotaHp.Text = peminjaman.anggota.no_hp

End If

End If End Sub

Private Sub btnBatal_Click(sender As System.Object, e As System.EventArgs) Handles btnBatal.Click

Me.DialogResult = Windows.Forms.DialogResult.Cancel End Sub

Private Sub btnSave_Click(sender As System.Object, e As System.EventArgs) Handles btnSave.Click

If IsNothing(peminjaman) Then

General.ErrorMessage("Silahkan pilih code peminjaman!") Return

End If

Dim book = (From b In database.buku

(17)

book.status = True

database.SaveChanges()

Me.DialogResult = Windows.Forms.DialogResult.OK End Sub

Private Sub pctSearchPeminjaman_Click(sender As System.Object, e As System.EventArgs) Handles pctSearchPeminjaman.Click

Dim frmSearchPeminjaman As FrmSearchPeminjaman = New

FrmSearchPeminjaman()

Dim result As DialogResult = frmSearchPeminjaman.ShowDialog() If result = Windows.Forms.DialogResult.OK Then

peminjaman = (From p In database.peminjaman Where p.id_peminjaman = frmSearchPeminjaman.peminjaman.id_peminjaman

Select p).FirstOrDefault() cmbCode.SelectedItem = peminjaman

End If End Sub End Class

FrmSearchAnggota.vb

Public Class FrmSearchAnggota

Dim database As DatabaseEntities

Public anggota As anggota

Public Sub New()

' This call is required by the designer.

InitializeComponent()

' Add any initialization after the InitializeComponent() call.

database = New DatabaseEntities() anggota = New anggota()

End Sub

Private Sub LoadData()

Dim search As String = txtCari.Text Dim data

If search = "" Then

data = (From a In database.anggota Select id_anggota = a.id_anggota, nim = a.nim,

nama = a.nama,

fakultas = a.prodi.fakultas.nama, prodi = a.prodi.nama,

tempat_lahir = a.tempat_lahir, tanggal_lahir = a.tanggal_lahir, no_hp = a.no_hp).ToList()

Else

data = (From a In database.anggota

Where a.nama.ToLower().Contains(search.ToLower()) Select id_anggota = a.id_anggota,

nim = a.nim, nama = a.nama,

fakultas = a.prodi.fakultas.nama, prodi = a.prodi.nama,

(18)

tanggal_lahir = a.tanggal_lahir, no_hp = a.no_hp).ToList()

End If

dataGrid.DataSource = data End Sub

Private Sub btnCancel_Click(sender As System.Object, e As System.EventArgs) Handles btnCancel.Click

Me.DialogResult = Windows.Forms.DialogResult.Cancel End Sub

Private Sub BtnCari_Click(sender As System.Object, e As System.EventArgs) Handles BtnCari.Click

LoadData() End Sub

Private Sub FrmSearchAnggota_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load

LoadData() End Sub

Private Sub txtCari_TextChanged(sender As System.Object, e As System.EventArgs) Handles txtCari.TextChanged

End Sub End Class

FrmSearchBook.vb

Public Class FrmSearchBook

Dim database As DatabaseEntities

Public book As buku

Public Sub New()

' This call is required by the designer.

InitializeComponent()

' Add any initialization after the InitializeComponent() call.

database = New DatabaseEntities() book = New buku()

LoadData() End Sub

Private Sub LoadData()

Dim search As String = txtCari.Text Dim data

If search = "" Then

data = (From b In database.buku Select id_buku = b.id_buku, judul_buku = b.judul_buku, pengarang = b.pengarang, penerbit = b.penerbit, unit = b.unit,

status = If(b.status = True, "tersedia", "tidak

tersedia")).ToList()

Else

data = (From b In database.buku

Where b.judul_buku.ToLower().Contains(search.ToLower()) Or b.pengarang.ToLower().Contains(search.ToLower())

(19)

judul_buku = b.judul_buku, pengarang = b.pengarang, penerbit = b.penerbit, unit = b.unit,

status = If(b.status = True, "tersedia", "tidak

tersedia")).ToList()

End If End Sub

Private Sub BtnCari_Click(sender As System.Object, e As System.EventArgs) Handles BtnCari.Click

LoadData() End Sub

Private Sub btnCancel_Click(sender As System.Object, e As System.EventArgs) Handles btnCancel.Click

Me.DialogResult = Windows.Forms.DialogResult.Cancel End Sub

Private Sub txtCari_TextChanged(sender As System.Object, e As System.EventArgs) Handles txtCari.TextChanged

End Sub End Class

FrmSearchPeminjaman.vb

Public Class FrmSearchPeminjaman

Dim database As DatabaseEntities

Public peminjaman As peminjaman

Public Sub New()

' This call is required by the designer.

InitializeComponent()

' Add any initialization after the InitializeComponent() call.

database = New DatabaseEntities() peminjaman = New peminjaman() End Sub

Public Sub LoadData()

Dim search As String = txtCari.Text Dim data

If search = "" Then

data = (From p In database.peminjaman Where p.pengembalian.Count = 0

Select id_peminjaman = p.id_peminjaman, code = p.code,

tanggal = p.tanggal,

judul_buku = p.buku.judul_buku, pengarang = p.buku.pengarang, penerbit = p.buku.penerbit, nama = p.anggota.nama,

nim = p.anggota.nim).ToList() Else

data = (From p In database.peminjaman

Where (p.code.ToLower.Contains(search.ToLower()) Or

p.anggota.nama.ToLower.Contains(search.ToLower)) And p.pengembalian.Count = 0 Select id_peminjaman = p.id_peminjaman,

(20)

tanggal = p.tanggal,

judul_buku = p.buku.judul_buku, pengarang = p.buku.pengarang, penerbit = p.buku.penerbit, nama = p.anggota.nama,

nim = p.anggota.nim).ToList() End If

End Sub

Private Sub BtnCari_Click(sender As System.Object, e As System.EventArgs) Handles BtnCari.Click

LoadData() End Sub

Private Sub FrmSearchPeminjaman_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load

LoadData() End Sub

Private Sub btnCancel_Click(sender As System.Object, e As System.EventArgs) Handles btnCancel.Click

Me.DialogResult = Windows.Forms.DialogResult.Cancel End Sub

Private Sub txtCari_TextChanged(sender As System.Object, e As System.EventArgs) Handles txtCari.TextChanged

End Sub End Class

FrmSearchPeminjaman.vb

Public Class FrmSearchPeminjaman

Dim database As DatabaseEntities

Public peminjaman As peminjaman

Public Sub New()

' This call is required by the designer.

InitializeComponent()

' Add any initialization after the InitializeComponent() call.

database = New DatabaseEntities() peminjaman = New peminjaman() End Sub

Public Sub LoadData()

Dim search As String = txtCari.Text Dim data

If search = "" Then

data = (From p In database.peminjaman Where p.pengembalian.Count = 0

Select id_peminjaman = p.id_peminjaman, code = p.code,

tanggal = p.tanggal,

judul_buku = p.buku.judul_buku, pengarang = p.buku.pengarang, penerbit = p.buku.penerbit, nama = p.anggota.nama,

(21)

data = (From p In database.peminjaman

Where (p.code.ToLower.Contains(search.ToLower()) Or

p.anggota.nama.ToLower.Contains(search.ToLower)) And p.pengembalian.Count = 0 Select id_peminjaman = p.id_peminjaman,

code = p.code, tanggal = p.tanggal,

judul_buku = p.buku.judul_buku, pengarang = p.buku.pengarang, penerbit = p.buku.penerbit, nama = p.anggota.nama,

nim = p.anggota.nim).ToList() End If

End Sub

Private Sub BtnCari_Click(sender As System.Object, e As System.EventArgs) Handles BtnCari.Click

LoadData() End Sub

Private Sub FrmSearchPeminjaman_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load

LoadData() End Sub

FrmUcAnggota.vb

Public Class UcAnggota

Dim database As DatabaseEntities

Public Sub New()

' This call is required by the designer.

InitializeComponent()

' Add any initialization after the InitializeComponent() call.

database = New DatabaseEntities() End Sub

Public Sub LoadData()

Dim search As String = txtCari.Text Dim data

If search = "" Then

data = (From a In database.anggota Order By a.nim Ascending

Select id_anggota = a.id_anggota, nim = a.nim,

nama = a.nama,

fakultas = a.prodi.fakultas.nama, prodi = a.prodi.nama,

tempat_lahir = a.tempat_lahir, tanggal_lahir = a.tanggal_lahir, no_hp = a.no_hp).ToList()

Else

data = (From a In database.anggota Order By a.nim Ascending

Where a.nama.ToLower().Contains(search.ToLower()) Or a.nim.ToLower().Contains(search.ToLower())

Select id_anggota = a.id_anggota, nim = a.nim,

(22)

fakultas = a.prodi.fakultas.nama, prodi = a.prodi.nama,

tempat_lahir = a.tempat_lahir, tanggal_lahir = a.tanggal_lahir, no_hp = a.no_hp).ToList()

End If

dataGrid.DataSource = data End Sub

Private Sub UcAnggota_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load

LoadData() End Sub

Private Sub btnCari_Click(sender As System.Object, e As System.EventArgs) Handles btnCari.Click

LoadData() End Sub

Private Sub btnAdd_Click(sender As System.Object, e As System.EventArgs) Handles btnAdd.Click

Dim frmAddAnggota As FrmAddAnggota = New FrmAddAnggota() Dim result As DialogResult = frmAddAnggota.ShowDialog()

If result = DialogResult.OK Then LoadData()

End If End Sub

Private Sub dataGrid_CellContentDoubleClick(sender As System.Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles

dataGrid.CellContentDoubleClick

Dim id_anggota As Integer = dataGrid.Rows(e.RowIndex).Cells(0).Value Dim anggota As anggota = (From a In database.anggota

Where a.id_anggota = id_anggota Select a).FirstOrDefault()

Dim frmEditAnggota As FrmEditAnggota = New FrmEditAnggota() Dim result As DialogResult

frmEditAnggota.anggota = anggota result = frmEditAnggota.ShowDialog()

If result = DialogResult.OK Then LoadData()

End If End Sub

Private Sub btnDelete_Click(sender As System.Object, e As System.EventArgs) Handles btnDelete.Click

Dim id As Integer =

dataGrid.Rows(dataGrid.SelectedCells(0).RowIndex).Cells(0).Value Dim name As String =

dataGrid.Rows(dataGrid.SelectedCells(0).RowIndex).Cells(2).Value

Dim result As DialogResult = MessageBox.Show(String.Format("Apakah Anda ingin menghapus data anggota {0}", name), "Konfirmasi",

MessageBoxButtons.YesNo, MessageBoxIcon.Information)

If result = DialogResult.Yes Then

Dim anggota = (From a In database.anggota

(23)

database.anggota.DeleteObject(anggota) database.SaveChanges()

LoadData()

End If End Sub

Private Sub txtCari_TextChanged(sender As System.Object, e As System.EventArgs) Handles txtCari.TextChanged

End Sub End Class

FrmUcBook.vb

Public Class UcBook

Dim database As DatabaseEntities

Private Sub UcBook_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load

database = New DatabaseEntities() End Sub

Public Sub LoadData()

Dim search As String = txtCari.Text Dim data

If search = "" Then

data = (From b In database.buku

Order By b.judul_buku Ascending Select id_buku = b.id_buku, judul_buku = b.judul_buku, pengarang = b.pengarang, penerbit = b.penerbit, unit = b.unit,

isbn = b.isbn, code = b.code,

status = If(b.status = True, "tersedia", "tidak

tersedia")).ToList()

Else

data = (From b In database.buku

Order By b.judul_buku Ascending

Where b.judul_buku.ToLower().Contains(search.ToLower()) Or b.pengarang.ToLower().Contains(search.ToLower())

Select id_buku = b.id_buku, judul_buku = b.judul_buku, pengarang = b.pengarang, penerbit = b.penerbit, unit = b.unit,

isbn = b.isbn, code = b.code,

status = If(b.status = True, "tersedia", "tidak

tersedia")).ToList()

End If

dataGrid.DataSource = data End Sub

Private Sub btnAdd_Click(sender As System.Object, e As System.EventArgs) Handles btnAdd.Click

(24)

result = frmAddBook.ShowDialog()

If result = DialogResult.OK Then LoadData()

End If End Sub

Private Sub dataGrid_CellDoubleClick(sender As System.Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles

dataGrid.CellDoubleClick

Dim frmEdit As FrmEditBook = New FrmEditBook()

Dim id_buku As Integer = dataGrid.Rows(e.RowIndex).Cells(0).Value frmEdit.book = (From b In database.buku

Where b.id_buku = id_buku Select b).FirstOrDefault()

Dim result As DialogResult

result = frmEdit.ShowDialog() If result = DialogResult.OK Then LoadData()

End If End Sub

Private Sub btnCari_Click(sender As System.Object, e As System.EventArgs) Handles btnCari.Click

LoadData() End Sub

Private Sub txtCari_TextChanged(sender As System.Object, e As System.EventArgs) Handles txtCari.TextChanged

End Sub End Class

FrmUcConnection.vb

Imports System.IO.Ports Imports System.Management

Public Class UcConnection

Dim port As SerialPort

Dim SMSGateway As SMSLib

Dim formUtama As FormUtama

Public Sub New()

' This call is required by the designer.

InitializeComponent()

' Add any initialization after the InitializeComponent() call.

SMSGateway = New SMSLib() formUtama = New FormUtama() End Sub

Private Sub UcConnection_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load

Try

formUtama = Me.Parent.Parent Next

(25)

Catch err As ManagementException

MessageBox.Show("An error occurred while querying for WMI data: " & err.Message)

End Try

port = formUtama.smsBackgroundProcess.port

rdbSIM.Checked = True

formUtama.smsBackgroundProcess.SIM_STORAGE = True Catch ex As Exception

General.ErrorLog(ex.Message) End Try

End Sub

Private Sub rdbSIM_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles rdbSIM.CheckedChanged

formUtama.smsBackgroundProcess.SIM_STORAGE = True End Sub

Private Sub rdbDevice_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles rdbDevice.CheckedChanged

formUtama.smsBackgroundProcess.SIM_STORAGE = False End Sub

Private Sub btnConnect_Click(sender As System.Object, e As System.EventArgs) Handles btnConnect.Click

Try

If btnConnect.Text.Equals("Connect") Then Me.port =

formUtama.smsBackgroundProcess.smsLib.OpenPort(port.Port, baundRate, dataBits, readTimeout, writeTimeout)

If Not IsNothing(Me.port) Then

formUtama.statusBar.Text = "Status : Connected to " + cmbPort.Text

Else

formUtama.statusBar.Text = "Status : Invalid port settings" End If

formUtama.smsBackgroundProcess.port = Me.port btnConnect.Text = "Disconnect"

gboPortSetting.Enabled = False Else

formUtama.smsBackgroundProcess.ClosePort() btnConnect.Text = "Connect"

gboPortSetting.Enabled = True End If

Catch ex As Exception

formUtama.statusBar.Text = "Status : " & ex.Message End Try

End Sub

Private Sub cmbPort_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles cmbPort.SelectedIndexChanged

End Sub End Class

Public Class PortName

(26)

FrmUcHome.vb

Public Class UcHome

Private Sub Label1_Click(sender As System.Object, e As System.EventArgs) Handles Label1.Click

End Sub End Class

FrmUcPeminjaman.vb

Public Class UcPeminjaman

Dim database As DatabaseEntities

Public Sub New()

' This call is required by the designer.

InitializeComponent()

' Add any initialization after the InitializeComponent() call.

database = New DatabaseEntities() End Sub

Private Sub UcPeminjaman_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load

End Sub

Public Sub LoadData()

Dim search As String = txtCari.Text Dim data

If search = "" Then

data = (From p In database.peminjaman Where p.pengembalian.Count = 0

Select id_peminjaman = p.id_peminjaman, code = p.code,

tanggal = p.tanggal,

judul_buku = p.buku.judul_buku, pengarang = p.buku.pengarang, penerbit = p.buku.penerbit, nama = p.anggota.nama,

nim = p.anggota.nim).ToList() Else

data = (From p In database.peminjaman

Where p.code.ToLower.Contains(search.ToLower()) Or

p.anggota.nama.ToLower.Contains(search.ToLower) And p.pengembalian.Count = 0 Select id_peminjaman = p.id_peminjaman,

code = p.code, tanggal = p.tanggal,

judul_buku = p.buku.judul_buku, pengarang = p.buku.pengarang, penerbit = p.buku.penerbit, nama = p.anggota.nama,

nim = p.anggota.nim).ToList() End If

End Sub

(27)

LoadData() End Sub

Private Sub btnAdd_Click(sender As System.Object, e As System.EventArgs) Handles btnAdd.Click

Dim frmAddPeminjaman As FrmAddPeminjaman = New FrmAddPeminjaman() Dim result As DialogResult = frmAddPeminjaman.ShowDialog()

If result = DialogResult.OK Then LoadData()

End If End Sub

Private Sub txtCari_TextChanged(sender As System.Object, e As System.EventArgs) Handles txtCari.TextChanged

End Sub End Class

FrmUcPengembalian.vb

Public Class UcPengembalian

Dim database As DatabaseEntities

Public Sub New()

' This call is required by the designer.

InitializeComponent()

' Add any initialization after the InitializeComponent() call.

database = New DatabaseEntities() End Sub

Public Sub LoadData()

Dim search As String = txtCari.Text Dim data

If search = "" Then

data = (From p In database.pengembalian

Select id_pengembalian = p.id_pengembalian, code = p.peminjaman.code,

tanggal_peminjaman = p.peminjaman.tanggal, tanggal_pengembalian = p.tanggal,

judul_buku = p.peminjaman.buku.judul_buku, pengarang = p.peminjaman.buku.pengarang, penerbit = p.peminjaman.buku.penerbit, nama = p.peminjaman.anggota.nama, nim = p.peminjaman.anggota.nim, denda = p.denda).ToList() Else

data = (From p In database.pengembalian

Where p.peminjaman.code.ToLower.Contains(search.ToLower()) Or p.peminjaman.anggota.nama.ToLower.Contains(search.ToLower)

Select id_pengembalian = p.id_pengembalian, code = p.peminjaman.code,

tanggal_peminjaman = p.peminjaman.tanggal, tanggal_pengembalian = p.tanggal,

(28)

nim = p.peminjaman.anggota.nim, denda = p.denda).ToList() End If

End Sub

Private Sub btnAdd_Click(sender As System.Object, e As System.EventArgs) Handles btnAdd.Click

Dim frmPengembalian As FrmPengembalian = New FrmPengembalian() Dim result As DialogResult = frmPengembalian.ShowDialog()

If result = DialogResult.OK Then LoadData()

End If End Sub

Private Sub txtCari_TextChanged(sender As System.Object, e As System.EventArgs) Handles txtCari.TextChanged

End Sub End Class

ShortMessage.vb

Public Class ShortMessage

Public Property Index As Integer Public Property Status As String Public Property Sender As String Public Property Alphabet As String Public Property Sent As String Public Property Message As String End Class

SMSBackgroundProcess.vb

Imports System.IO.Ports

Imports System.Text.RegularExpressions Imports System.Threading

Public Class SMSBackgroundProcess

Public port As SerialPort

Public smsLib As ATLib.SMSLib

Public SIM_STORAGE As Boolean

Dim database As DatabaseEntities

Public Sub New()

smsLib = New ATLib.SMSLib() SIM_STORAGE = True

database = New DatabaseEntities() End Sub

Public Sub ClosePort()

smsLib.ClosePort(Me.port) End Sub

Public Function SendMultiPageSMS(sender As String, message As String) While message.Length > 160

Dim part As String = message.Substring(0, 160) message = message.Substring(160)

(29)

Return False End If

End While

Return smsLib.SendMessage(Me.port, sender, message) End Function

Public Sub RunSMSBackgroundProcess()

Dim bgProcess = New Thread(New ThreadStart(AddressOf SMSGateway)) bgProcess.IsBackground = True

bgProcess.Start() End Sub

Public Sub SMSGateway() While True

ConfirmationProcess() ReadSMS()

Thread.Sleep(3000) End While

End Sub

Private Sub ConfirmationProcess() 'While True

Try

If Not IsNothing(Me.port) Then

'mengirim sms konfirmasi telah melakukan peminjaman buku

smsLib.log_file = "ConfirmationProcess_"

General.LogActivity(smsLib.log_file, "Start Confirmation Process")

Dim listPeminjaman As List(Of peminjaman) = (From p In database.peminjaman

Where p.konfirmasi = False

Select p).ToList() General.LogActivity(smsLib.log_file, String.Format("{0} data

peminjaman ditemukan", listPeminjaman.Count))

For Each item In listPeminjaman

General.LogActivity(smsLib.log_file,

String.Format("Receiver : {0}, NIM : {1}, No : {2},

Code Pemesanan : {3}",

item.anggota.nama, item.anggota.nim, item.no_hp, item.code))

Dim tanggalTenggang As DateTime =

DateTime.Parse(item.tanggal.ToString).AddDays(General.GetSetting("lama_peminjam an"))

Dim message As String = String.Format("Terima kasih telah

melakukan peminjaman. Kode peminjaman Anda {0}. Tenggang waktu peminjaman {1}",

item.code, tanggalTenggang.ToShortDateString())

If smsLib.SendMessage(Me.port, item.no_hp, message) Then item.konfirmasi = True

database.SaveChanges()

General.LogActivity(smsLib.log_file, "Success") Else

General.LogActivity(smsLib.log_file, "Failed") End If

Next

General.LogActivity(smsLib.log_file,

"=================================")

(30)

smsLib.log_file = "RemainderProcess_"

General.LogActivity(smsLib.log_file, "Start Reminder Process") listPeminjaman = (From p In database.peminjaman

Where p.konfirmasi = True And p.pengembalian.Count = 0 And p.denda = False

Select p).ToList()

General.LogActivity(smsLib.log_file, String.Format("{0} data

peminjaman", listPeminjaman.Count))

For Each item In listPeminjaman

If Not (item.sent_date = DateTime.Now.Date) Or IsNothing(item.sent_date) Then

General.LogActivity(smsLib.log_file,

String.Format("code {0}, tanggal {1}", item.code, item.tanggal.ToString())) Dim currentDate As DateTime = DateTime.Now

Dim settingTime As Integer =

General.GetSetting("lama_peminjaman")

Dim pDate As DateTime =

DateTime.Parse(item.tanggal.ToString()).AddDays(1)

Dim range As Integer = (currentDate - pDate).TotalDays 'pengecekan waktu tenggang -1

If (settingTime - range) = 1 Then

General.LogActivity(smsLib.log_file,

String.Format("Receiver : {0}, NIM : {1}, No :

{2}, Code Pemesanan : {3}",

item.anggota.nama, item.anggota.nim, item.no_hp, item.code))

Dim message As String = String.Format("Masa

peminjaman Anda dengan kode {0}," &

"judul {1},

akan berakhir pada tanggal {2}. " &

"Silahkan

lakukan pengembalian buku.",

item.code, item.buku.judul_buku, pDate.AddDays(settingTime - 1).ToShortDateString())

If SendMultiPageSMS(item.no_hp, message) Then item.sent_date = Date.Now

database.SaveChanges()

General.LogActivity(smsLib.log_file, "Success") Else

General.LogActivity(smsLib.log_file, "Failed") End If

'pengecekan waktu tenggang pada hari ini

ElseIf (range - settingTime) = 0 Then General.LogActivity(smsLib.log_file,

String.Format("Receiver : {0}, NIM : {1}, No :

{2}, Code Pemesanan : {3}",

item.anggota.nama, item.anggota.nim, item.no_hp, item.code))

Dim message As String = String.Format("Masa

peminjaman Anda dengan kode {0}," &

"judul {1},

akan berakhir pada hari ini {2}. " &

"Silahkan

lakukan pengembalian buku.",

(31)

If SendMultiPageSMS(item.no_hp, message) Then item.sent_date = Date.Now

database.SaveChanges()

General.LogActivity(smsLib.log_file, "Success") Else

General.LogActivity(smsLib.log_file, "Failed") End If

'pengecekan waktu tenggang telah habis dan dikenakan denda

ElseIf (range - settingTime) > 0 Then Dim settingDenda As Decimal =

General.GetSetting("denda_per_hari")

Dim denda As Integer = (range - settingTime) * settingDenda

General.LogActivity(smsLib.log_file,

String.Format("Receiver : {0}, NIM : {1}, No :

{2}, Code Pemesanan : {3}",

item.anggota.nama, item.anggota.nim, item.no_hp, item.code))

Dim message As String = String.Format("Masa

peminjaman Anda dengan kode {0}," &

"judul {1},

telah berakhir pada tanggal {2}, dengan denda {3}. " &

"Silahkan

lakukan pengembalian buku.",

item.code, item.buku.judul_buku, pDate.AddDays(settingTime - 1).ToShortDateString(), denda)

If SendMultiPageSMS(item.no_hp, message) Then item.sent_date = Date.Now

item.denda = True database.SaveChanges()

General.LogActivity(smsLib.log_file, "Success") Else

General.LogActivity(smsLib.log_file, "Failed") End If

End If End If

database.Refresh(Objects.RefreshMode.ClientWins, item) Next

General.LogActivity(smsLib.log_file,

"=================================")

End If

Catch ex As Exception

General.ErrorLog(ex.Message) End Try

'Thread.Sleep(2000)

'End While

End Sub

Private Sub ReadSMS() 'While True

Dim messages As List(Of ATLib.ShortMessage) = Nothing Try

(32)

General.LogActivity(smsLib.log_file, "Start Read SMS Process") Dim input As String = smsLib.ReadSMS(port, SIM_STORAGE)

messages = ParseMessages(input)

General.LogActivity(smsLib.log_file, String.Format("Diterima

{0} sms.", messages.Count))

If messages.Count > 0 Then For Each msg In messages Dim cmd As Integer = 0 If ValidateSMS(msg, cmd) Then If cmd = CMD_DENDA Then

General.LogActivity(smsLib.log_file, "REQUEST DENDA")

Console.WriteLine("DENDA")

Dim pesan As String() = msg.Message.Split(New Char() {" "c})

General.LogActivity(smsLib.log_file,

String.Format("Sender : {0}, message : {1}",

msg.Sender, msg.Message))

If pesan.Length = 2 Then

Dim code As String = pesan(1)

Dim peminjaman As peminjaman = (From p In database.peminjaman

Where p.code.ToLower().Equals(code.ToLower())

Select p).FirstOrDefault()

If Not IsNothing(peminjaman) Then

If peminjaman.pengembalian.Count <= 0 Then

Dim currentDate As DateTime =

DateTime.Now

Dim settingTime As Integer =

General.GetSetting("lama_peminjaman")

Dim pDate As DateTime =

DateTime.Parse(peminjaman.tanggal.ToString()).AddDays(1)

Dim range As Integer = (currentDate - pDate).TotalDays

General.LogActivity(smsLib.log_file,

String.Format("Code : {0}, Tanggal : {1}",

peminjaman.code, peminjaman.tanggal))

If (range - settingTime) > 0 Then Dim settingDenda As Decimal =

General.GetSetting("denda_per_hari")

Dim denda As Integer = (range - settingTime) * settingDenda

Dim message As String = String.Format("Denda Anda untuk peminjaman {0} sebesar Rp. {1}",

peminjaman.code, denda)

(33)

String.Format("Message : {0}", message))

If smsLib.SendMessage(Me.port, msg.Sender, message) Then

General.LogActivity(smsLib.log_file, "Success") Else

General.LogActivity(smsLib.log_file, "Failed")

End If Else

Dim message As String = String.Format("Peminjaman Anda belum melewati tenggang waktu. " &

"Batas akhir pengembalian {0}", pDate.AddDays(settingTime).ToShortDateString())

General.LogActivity(smsLib.log_file,

String.Format("Message : {0}", message))

If smsLib.SendMessage(Me.port, msg.Sender, message) Then

General.LogActivity(smsLib.log_file, "Success") Else

General.LogActivity(smsLib.log_file, "Failed")

End If End If Else

General.LogActivity(smsLib.log_file, String.Format("Kode {0} sudah di

kembalikan", code))

smsLib.SendMessage(port, msg.Sender, "Pengembalian sudah dilakukan")

End If Else

General.LogActivity(smsLib.log_file, String.Format("Kode {0} tidak ditemukan", code))

smsLib.SendMessage(port, msg.Sender,

"Code peminjaman tidak ditemukan")

End If Else

General.LogActivity(smsLib.log_file, String.Format("Format tidak benar. {0}", msg.Message))

smsLib.SendMessage(port, msg.Sender,

"Format SMS Anda salah. Format yang benar DENDA<spasi>KODE")

End If End If End If Next End If

General.LogActivity(smsLib.log_file,

"=================================")

End If

Catch ex As Exception

General.ErrorLog(ex.Message) End Try

'Thread.Sleep(2000)

(34)

End Sub

Private Function ValidateSMS(message As ATLib.ShortMessage, ByRef cmdType As Integer)

Dim check As Boolean = False

Dim pesan As String() = message.Message.Split(New Char() {" "c}) Dim cmd As String = pesan(0).ToUpper()

If (cmd = "DENDA") Then check = True

cmdType = CMD_DENDA End If

Return check End Function End Class

SMSLib.vb

Imports System.IO.Ports Imports System.Threading Imports System.Text

Public Class SMSLib

Public receiveNow As AutoResetEvent

Public log_file As String

Shared readNow As AutoResetEvent = New AutoResetEvent(False)

Public Sub New()

Me.log_file = "SMSLib_" End Sub

Public Function OpenPort(portName As String, baudRate As Integer, dataBits As Integer,

readTimeout As Integer, writeTimeout As Integer) receiveNow = New AutoResetEvent(True)

Dim port As System.IO.Ports.SerialPort = New SerialPort() Try

port.PortName = portName port.BaudRate = baudRate port.DataBits = dataBits port.ReadTimeout = readTimeout port.WriteTimeout = writeTimeout

port.StopBits = StopBits.One port.Parity = Parity.None

port.Encoding = Encoding.GetEncoding("iso-8859-1")

AddHandler port.DataReceived, AddressOf port_DataReceived port.Open()

port.DtrEnable = True port.RtsEnable = True Catch ex As Exception

General.ErrorMessage(ex.Message) Throw ex

End Try

Return port End Function

Public Sub port_DataReceived(sender As Object, e As

(35)

Try

If e.EventType = SerialData.Chars Then receiveNow.Set()

End If

Catch ex As Exception

Throw ex End Try End Sub

Public Function ReadResponse(port As SerialPort, timeout As Integer) Dim buffer As String = String.Empty

Try Do

If receiveNow.WaitOne(timeout, False) Then Dim t As String = port.ReadExisting() buffer &= t

Else

If buffer.Length > 0 Then

Throw New ApplicationException("Response received is incomplete.")

Else

Throw New ApplicationException("No data received from phone.")

End If End If

Loop While (Not buffer.EndsWith("\r\nOK\r\n") And Not buffer.EndsWith("\r\n> ") And Not buffer.EndsWith("\r\nERROR\r\n")) Catch ex As Exception

Throw ex End Try

Return buffer End Function

Public Function ExecCommand(port As SerialPort, command As String, responseTimeout As Integer, errorMessage As String)

Try

port.DiscardOutBuffer() port.DiscardInBuffer() receiveNow.Reset()

port.Write(command & "\r")

Dim input As String = ReadResponse(port, responseTimeout) If ((input.Length = 0) Or Not (input.EndsWith("\r\nOK\r\n") Or input.EndsWith("\r\n> "))) Then

Throw New ApplicationException("No success message was received.")

End If

Return input Catch ex As Exception

Throw New ApplicationException(errorMessage, ex) End Try

End Function

Public Function SendMessage(port As SerialPort, PhoneNo As String, Message As String)

Dim isSend As Boolean = False Try

(36)

recievedData = ExecCommand(port, "AT+CMGF=1", 1000, "Failed to set message format.")

Dim command As String = "AT+CMGS=\"" + PhoneNo + " \ ""

recievedData = ExecCommand(port, command, 1000, "Failed to accept phoneNo")

command = Message & Char.ConvertFromUtf32(26) & "\r"

recievedData = ExecCommand(port, command, 20000, "Failed to send message")

If recievedData.EndsWith("\r\nOK\r\n") Then isSend = True

ElseIf recievedData.Contains("ERROR") Then isSend = False

End If

General.LogActivity(Me.log_file, String.Format("{0} {1} {2}", PhoneNo, Message, isSend))

Return isSend

Catch ex As Exception

General.LogActivity(Me.log_file, String.Format("{0} {1} {2}

{3}", PhoneNo, Message, isSend, ex.Message))

Throw ex End Try End Function

Public Function ReadSMS(port As SerialPort, sim_storage As Boolean) Try

General.LogActivity(Me.log_file, "Read SMS") 'Check connection

ExecCommand(port, "AT", 1000, "No phone connected") 'Use message format "Text mode"

ExecCommand(port, "AT+CMGF=1", 1000, "Failed to set message format.")

If sim_storage Then

ExecCommand(port, "AT+CPMS=""SM""", 1000, "Failed to select message storage")

Else

ExecCommand(port, "AT+CPMS=""ME""", 1000, "Failed to select message storage")

End If

'Read the messages

Dim input As String = ExecCommand(port, "AT+CMGL=""REC UNREAD""", 5000, "Failed to read the messages.")

Return input Catch ex As Exception

General.LogActivity(Me.log_file, ex.Message) Return Nothing

End Try End Function

Public Sub ClosePort(ByRef port As SerialPort) Try

port.Close()

RemoveHandler port.DataReceived, AddressOf port_DataReceived port = Nothing

Catch ex As Exception

Referensi

Dokumen terkait

Sistem yang berlaku dalam penentuan proyek kepada Kaum Pulican adalah sistem tender, dimana Kaum Publican memberikan penawaran harga kepada pemerintah. Sebagai contoh

Pola ~lahan tanaman Tabu di  Jawe. Perban~ produkl;ivitas beberapa pabrik

Dari beberapa pengertian diatas dapat disimpulkan dan dapat dipahami bahwa kognitif atau pemikiran adalah istilah yang digunakan oleh ahli psikologi untuk

Dari tabel 6 diatas dapat dilihat bahwa kabupaten Mandailing Natal memiliki sektor- sektor yang memiliki nilai negatif yaitu sektor peranian, pertambangan dan

Pendekatan kualitatif dalam penelitian ini dilakukan dalam bentuk r eview audit dengan menggunakan metode t r iangulat ion t est atas audit manajemen fungsi

Kegiatan penelitian mendukung pengembangan ilmu serta terapannya. Dalarn ha1 ini, Lembaga Penelitian Universitas Negeri Padang berusaha mendorong dosen untuk melakukan

Ikatan kovalen terjadi karena adanya penggunaan elektron secara bersama dari atom yang satu ke atom yang lainnya. Ikatan logam, interaksi terjadi karena adanya

The quality of ethanol is influenced by starch and glucose content, acidity degree (pH), ratio between waste and Bacillus volume, the amount of Saccharomyces