Imports Jinisys.Hotel.BusinessSharedClasses
Imports MySql.Data.MySqlClient
Namespace DataAccessLayer
Public Class RoomDAO
Public Sub New()
End Sub
Private connectionStr As String
Public Sub New(ByVal connectionString As String)
connectionStr = connectionString
End Sub
Private oDataSetConverter As New DataReaderToDatasetConverter
Private oRoom As New Jinisys.Hotel.Configuration.BusinessLayer.Room
Public Function GetRooms() As Jinisys.Hotel.Configuration.BusinessLayer.Room
Dim Connection As New MySqlConnection(connectionStr)
Connection.Open()
oRoom = New Jinisys.Hotel.Configuration.BusinessLayer.Room
Try
Dim selectCommand As New MySqlCommand("spSelectRooms", Connection)
selectCommand.CommandType = CommandType.StoredProcedure
Dim dataReader As MySqlDataReader = selectCommand.ExecuteReader
oDataSetConverter.convertDataReaderToDataSet(dataReader, "Rooms", oRoom)
Dim primaryKey(0) As DataColumn
primaryKey(0) = oRoom.Tables("Rooms").Columns("RoomId")
oRoom.Tables("Rooms").PrimaryKey = primaryKey
If Not IsNothing(oRoom) Then
Return oRoom
Else
Return Nothing
End If
Catch ex As Exception
MsgBox("roomtype error: " & ex.Message())
Throw ex
Finally
If Connection.State = ConnectionState.Open Then
Connection.Close()
Connection.Dispose()
End If
If Not IsNothing(oRoom) Then _
oRoom.Dispose()
End Try
End Function
Public Function GetRoomIDs() As ArrayList
Dim Connection As New MySqlConnection(connectionStr)
Connection.Open()
oRoom = New Jinisys.Hotel.Configuration.BusinessLayer.Room
Dim RoomIDs As New ArrayList
Try
Dim selectCommand As New MySqlCommand("spSelectRoomID", Connection)
selectCommand.CommandType = CommandType.StoredProcedure
Dim dataReader As MySqlDataReader = selectCommand.ExecuteReader
Do While (dataReader.Read())
RoomIDs.Add(dataReader.GetValue(0))
Loop
dataReader.Close()
If Not IsNothing(RoomIDs) Then
Return RoomIDs
Else
Return Nothing
End If
Catch ex As Exception
MsgBox("roomtype error: " & ex.Message())
Throw ex
Finally
If Connection.State = ConnectionState.Open Then
Connection.Close()
Connection.Dispose()
End If
If Not IsNothing(oRoom) Then _
oRoom.Dispose()
End Try
End Function
Public Function GetRoomIDs(ByVal RoomTypeCode As String) As ArrayList
Dim Connection As New MySqlConnection(connectionStr)
Connection.Open()
oRoom = New Jinisys.Hotel.Configuration.BusinessLayer.Room
Dim RoomIDs As New ArrayList
Try
Dim selectCommand As New MySqlCommand("spSelectRoomIDByRoomType", Connection)
selectCommand.CommandType = CommandType.StoredProcedure
Dim param As New MySqlParameter
param.ParameterName = "pRoomTypeCode"
param.Direction = ParameterDirection.Input
param.DbType = DbType.String
param.SourceColumn = "RoomTypeCode"
param.Value = RoomTypeCode
selectCommand.Parameters.Add(param)
Dim dataReader As MySqlDataReader = selectCommand.ExecuteReader
Do While (dataReader.Read())
RoomIDs.Add(dataReader.GetValue(0))
Loop
dataReader.Close()
If Not IsNothing(RoomIDs) Then
Return RoomIDs
Else
Return Nothing
End If
Catch ex As Exception
MsgBox("roomtype error: " & ex.Message())
Throw ex
Finally
If Connection.State = ConnectionState.Open Then
Connection.Close()
Connection.Dispose()
End If
If Not IsNothing(oRoom) Then _
oRoom.Dispose()
End Try
End Function
Public Sub InsertRoom(ByRef Room As Jinisys.Hotel.Configuration.BusinessLayer.Room)
Dim Connection As New MySqlConnection(connectionStr)
'Try
Connection.Open()
Dim sqlStatement As String = "spInsertRoom"
Dim InsertCommand As New MySqlCommand(sqlStatement, Connection)
InsertCommand.CommandType = CommandType.StoredProcedure
Dim exemptedFields As New ArrayList
exemptedFields.Add("maxoccupants")
exemptedFields.Add("noofbeds")
exemptedFields.Add("noofadult")
exemptedFields.Add("noofchild")
exemptedFields.Add("sharetype")
exemptedFields.Add("stateflag")
ParameterHelper.AddParameters(Room, exemptedFields, InsertCommand, "Rooms")
MsgBox(InsertCommand.ExecuteNonQuery() & " record(s) inserted!")
Dim D As DataRow = Room.Tables("Rooms").NewRow()
D("HotelID") = Room.HotelID
D("RoomId") = Room.RoomId
D("RoomTypecode") = Room.RoomTypecode
D("MaxOccupants") = Room.MaxOccupants
D("NoOfBeds") = Room.NoOfBeds
D("NoOfAdult") = Room.NoOfAdult
D("Floor") = Room.Floor
D("DirFacing") = Room.DirFacing
D("AdjLeft") = Room.AdjLeft
D("AdjRight") = Room.AdjRight
D("RoomImage") = Room.RoomImage
Room.Tables("Rooms").Rows.Add(D)
Room.Tables("Rooms").AcceptChanges()
If Connection.State = ConnectionState.Open Then
Connection.Close()
Connection.Dispose()
End If
End Sub
Public Sub DeleteRoom(ByVal RoomId As Integer, ByVal Room As Jinisys.Hotel.Configuration.BusinessLayer.Room)
Dim Connection As MySqlConnection
Try
Connection = New MySqlConnection(connectionStr)
Connection.Open()
Dim DeleteCommand As New MySqlCommand("spDeleteRoom", Connection)
DeleteCommand.CommandType = CommandType.StoredProcedure
Dim param As New MySqlParameter
param.ParameterName = "proomid"
param.Direction = ParameterDirection.Input
param.DbType = DbType.Int64
param.SourceColumn = "roomid"
param.Value = RoomId
DeleteCommand.Parameters.Add(param)
DeleteCommand.ExecuteNonQuery()
Dim primaryKeyVal As New Object
primaryKeyVal = RoomId
Dim row As DataRow = Room.Tables("Rooms").Rows.Find(primaryKeyVal)
Room.Tables("Rooms").Rows.Remove(row)
Room.AcceptChanges()
Catch ex As Exception
MsgBox("err:" & ex.Message())
Finally
If Connection.State = ConnectionState.Open Then
Connection.Close()
Connection.Dispose()
End If
End Try
End Sub
Public Sub UpdateRoom(ByRef Room As Jinisys.Hotel.Configuration.BusinessLayer.Room, ByVal primaryKeyVal As Object)
Dim Connection As New MySqlConnection(connectionStr)
'Try
Connection.Open()
Dim sqlStatement As String = "spUpdateRoom"
Dim updateCommand As New MySqlCommand(sqlStatement, Connection)
updateCommand.CommandType = CommandType.StoredProcedure
Dim exemptedFields As New ArrayList
exemptedFields.Add("stateflag")
ParameterHelper.AddParameters(Room, exemptedFields, updateCommand, "Rooms")
MsgBox(updateCommand.ExecuteNonQuery() & " row(s) affected!")
Dim D As DataRow = Room.Tables("Rooms").Rows.Find(primaryKeyVal)
D.BeginEdit()
D("HotelId") = Room.HotelID
D("RoomTypeCode") = Room.RoomTypecode
D("MaxOccupants") = Room.MaxOccupants
D("NoOfBeds") = Room.NoOfBeds
D("NoOfAdult") = Room.NoOfAdult
D("NoOfChild") = Room.NoOfChild
D("Floor") = Room.Floor
D("DirFacing") = Room.DirFacing
D("AdjLeft") = Room.AdjLeft
D("AdjRight") = Room.AdjRight
D("RoomImage") = Room.RoomImage
D.EndEdit()
D.AcceptChanges()
Room.Tables("Rooms").AcceptChanges()
If Connection.State = ConnectionState.Open Then
Connection.Close()
Connection.Dispose()
End If
End Sub
Private ParameterHelper As New ParameterHelper
Public Sub UpdateRoomCoordinates(ByVal roomId As String, ByVal xCoordinate As Integer, ByVal yCoordinate As Integer)
Dim CONNECTION As New MySqlConnection(connectionStr)
CONNECTION.Open()
Dim updateCommand As New MySqlCommand("spUpdateRoomCoordinates", CONNECTION)
updateCommand.CommandType = CommandType.StoredProcedure
Dim pRoomId As New MySqlParameter
Dim pXCoordinate As New MySqlParameter
Dim pYCoordinate As New MySqlParameter
ParameterHelper.AddParameters(pRoomId, "pRoomId", ParameterDirection.Input, DbType.String, roomId, updateCommand)
ParameterHelper.AddParameters(pXCoordinate, "pXCoordinate", ParameterDirection.Input, DbType.Int32, xCoordinate, updateCommand)
ParameterHelper.AddParameters(pYCoordinate, "pYCoordinate", ParameterDirection.Input, DbType.Int32, yCoordinate, updateCommand)
MsgBox(updateCommand.ExecuteNonQuery() & " record/s affected")
If CONNECTION.State = ConnectionState.Open Then
CONNECTION.Close()
CONNECTION.Dispose()
End If
End Sub
Public Sub DeleteRoomAmenity(ByRef RoomId As String, ByRef AmenityId As Integer)
Dim Connection As MySqlConnection
Try
Connection = New MySqlConnection(connectionStr)
Connection.Open()
Dim DeleteCommand As New MySqlCommand("spDeleteRoomAmenity", Connection)
DeleteCommand.CommandType = CommandType.StoredProcedure
Dim paramRoomId As New MySqlParameter
paramRoomId.ParameterName = "proomid"
paramRoomId.Direction = ParameterDirection.Input
paramRoomId.DbType = DbType.Int64
paramRoomId.SourceColumn = "roomid"
paramRoomId.Value = RoomId
DeleteCommand.Parameters.Add(paramRoomId)
Dim paramAmenityId As New MySqlParameter
paramAmenityId.ParameterName = "pamenityid"
paramAmenityId.Direction = ParameterDirection.Input
paramAmenityId.DbType = DbType.Int64
paramAmenityId.SourceColumn = "amenityid"
paramAmenityId.Value = AmenityId
DeleteCommand.Parameters.Add(paramAmenityId)
DeleteCommand.ExecuteNonQuery()
Catch ex As Exception
MsgBox("err:" & ex.Message())
Finally
If Connection.State = ConnectionState.Open Then
Connection.Close()
Connection.Dispose()
End If
End Try
End Sub
Public Sub AddRoomAmenity(ByRef RoomId As Integer, ByRef AmenityId As Integer)
Dim Connection As MySqlConnection
Try
Connection = New MySqlConnection(connectionStr)
Connection.Open()
Dim InsertCommand As New MySqlCommand("spAddRoomAmenity", Connection)
InsertCommand.CommandType = CommandType.StoredProcedure
Dim paramRoomId As New MySqlParameter
paramRoomId.ParameterName = "proomid"
paramRoomId.Direction = ParameterDirection.Input
paramRoomId.DbType = DbType.Int64
paramRoomId.SourceColumn = "roomid"
paramRoomId.Value = RoomId
InsertCommand.Parameters.Add(paramRoomId)
Dim paramAmenityId As New MySqlParameter
paramAmenityId.ParameterName = "pamenityid"
paramAmenityId.Direction = ParameterDirection.Input
paramAmenityId.DbType = DbType.Int64
paramAmenityId.SourceColumn = "amenityid"
paramAmenityId.Value = AmenityId
InsertCommand.Parameters.Add(paramAmenityId)
InsertCommand.ExecuteNonQuery()
Catch ex As Exception
MsgBox("err:" & ex.Message())
Finally
If Connection.State = ConnectionState.Open Then
Connection.Close()
Connection.Dispose()
End If
End Try
End Sub
Public Sub SetRoomStatus(ByRef roomID As Integer, ByVal stateFlag As String)
Dim CONNECTION As New MySqlConnection(connectionStr)
CONNECTION.Open()
Dim setStatusCommand As New MySqlCommand("spSetRoomStateFlag", CONNECTION)
setStatusCommand.CommandType = CommandType.StoredProcedure
Dim paramRoomID As New MySqlParameter, paramStateFlag As New MySqlParameter
ParameterHelper.AddParameters(paramRoomID, "pRoomID", ParameterDirection.Input, DbType.Int64, roomID, setStatusCommand)
ParameterHelper.AddParameters(paramStateFlag, "pStateFlag", ParameterDirection.Input, DbType.String, stateFlag, setStatusCommand)
setStatusCommand.ExecuteNonQuery()
If CONNECTION.State = ConnectionState.Open Then
CONNECTION.Close()
CONNECTION.Dispose()
End If
End Sub
End Class
End Namespace