0% found this document useful (0 votes)
8 views

Code 6import Sqlite3

This document defines classes for guests, reservations, and a guest tracker to manage guest data using an SQLite database. The guest tracker class initializes a database connection and defines methods for creating tables, adding and retrieving guest and reservation data, and managing guest service requests. Sample code demonstrates using the tracker to add guests and service requests, retrieve guests by date range, and remove a service request.

Uploaded by

Harrison Adom
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
8 views

Code 6import Sqlite3

This document defines classes for guests, reservations, and a guest tracker to manage guest data using an SQLite database. The guest tracker class initializes a database connection and defines methods for creating tables, adding and retrieving guest and reservation data, and managing guest service requests. Sample code demonstrates using the tracker to add guests and service requests, retrieve guests by date range, and remove a service request.

Uploaded by

Harrison Adom
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 6

import sqlite3

class Guest:

def __init__(self, guest_id, name, email, reservation):

self.guest_id = guest_id

self.name = name

self.email = email

self.reservation = reservation

self.service_requests = []

def add_service_request(self, service_request):

self.service_requests.append(service_request)

def remove_service_request(self, service_request):

self.service_requests.remove(service_request)

class Reservation:

def __init__(self, reservation_id, room_type, check_in_date, check_out_date):

self.reservation_id = reservation_id

self.room_type = room_type

self.check_in_date = check_in_date

self.check_out_date = check_out_date

class GuestTracker:

def __init__(self, database_file):

self.database_file = database_file

self.connection = sqlite3.connect(database_file)

self.cursor = self.connection.cursor()
def create_tables(self):

self.cursor.execute('''

CREATE TABLE IF NOT EXISTS guests (

guest_id INTEGER PRIMARY KEY AUTOINCREMENT,

name TEXT,

email TEXT UNIQUE,

reservation_id INTEGER

''')

self.cursor.execute('''

CREATE TABLE IF NOT EXISTS reservations (

reservation_id INTEGER PRIMARY KEY AUTOINCREMENT,

room_type TEXT,

check_in_date TEXT,

check_out_date TEXT

''')

self.cursor.execute('''

CREATE TABLE IF NOT EXISTS service_requests (

request_id INTEGER PRIMARY KEY AUTOINCREMENT,

guest_id INTEGER,

request TEXT,

FOREIGN KEY (guest_id) REFERENCES guests (guest_id)

''')

self.connection.commit()
def add_guest(self, guest):

self.cursor.execute('INSERT INTO guests (name, email, reservation_id) VALUES (?, ?, ?)',

(guest.name, guest.email, guest.reservation.reservation_id))

self.connection.commit()

guest.guest_id = self.cursor.lastrowid

def remove_guest(self, guest):

self.cursor.execute('DELETE FROM guests WHERE guest_id = ?', (guest.guest_id,))

self.connection.commit()

def get_guest_by_email(self, email):

self.cursor.execute('SELECT * FROM guests WHERE email = ?', (email,))

guest_data = self.cursor.fetchone()

if guest_data:

guest_id, name, email, reservation_id = guest_data

reservation = self.get_reservation_by_id(reservation_id)

return Guest(guest_id, name, email, reservation)

return None

def get_reservation_by_id(self, reservation_id):

self.cursor.execute('SELECT * FROM reservations WHERE reservation_id = ?', (reservation_id,))

reservation_data = self.cursor.fetchone()

if reservation_data:

reservation_id, room_type, check_in_date, check_out_date = reservation_data

return Reservation(reservation_id, room_type, check_in_date, check_out_date)

return None

def get_guests_by_date_range(self, start_date, end_date):


self.cursor.execute('''

SELECT * FROM guests

JOIN reservations ON guests.reservation_id = reservations.reservation_id

WHERE check_in_date >= ? AND check_out_date <= ?

''', (start_date, end_date))

guest_data = self.cursor.fetchall()

guests = []

for guest_row in guest_data:

guest_id, name, email, reservation_id, _, _, _, _ = guest_row

reservation = self.get_reservation_by_id(reservation_id)

guests.append(Guest(guest_id, name, email, reservation))

return guests

def add_service_request(self, guest_email, service_request):

guest = self.get_guest_by_email(guest_email)

if guest:

self.cursor.execute('INSERT INTO service_requests (guest_id, request) VALUES (?, ?)',

(guest.guest_id, service_request))

self.connection.commit()

guest.add_service_request(service_request)

else:

print('Guest not found.')

def remove_service_request(self, guest_email, service_request):

guest = self.get_guest_by_email(guest_email)

if guest:

self.cursor.execute('DELETE FROM service_requests WHERE guest_id = ? AND request = ?',

(guest.guest_id, service_request))

self.connection.commit()
guest.remove_service_request(service_request)

else:

print('Guest not found.')

def close_connection(self):

self.cursor.close()

self.connection.close()

# Example usage

reservation1 = Reservation(None, 'Standard', '2023-07-10', '2023-07-15')

guest1 = Guest(None, 'Harrison Adom', '[email protected]', reservation1)

reservation2 = Reservation(None, 'Deluxe', '2023-07-12', '2023-07-17')

guest2 = Guest(None, 'Robert Zigah', '[email protected]', reservation2)

tracker = GuestTracker('guests.db')

tracker.create_tables()

tracker.add_guest(guest1)

tracker.add_guest(guest2)

# Add service requests for a guest

tracker.add_service_request('[email protected]', 'Extra towels')

tracker.add_service_request('[email protected]', 'Room cleaning')

# Remove a service request for a guest

tracker.remove_service_request('[email protected]', 'Extra towels')

# Retrieve guests by date range


guests = tracker.get_guests_by_date_range('2023-07-11', '2023-07-14')

print('Guests in date range:')

for guest in guests:

print(guest.name)

tracker.close_connection()

You might also like