Changed fetch service providers to include first and last name
This commit is contained in:
parent
44a2fe402e
commit
ee4bc0e409
2 changed files with 612 additions and 303 deletions
|
@ -675,7 +675,7 @@ public class DBHelper extends SQLiteOpenHelper {
|
||||||
null, null, null,
|
null, null, null,
|
||||||
"1");
|
"1");
|
||||||
//If cursor has 1+ elements in it, username/service combination already exists in table
|
//If cursor has 1+ elements in it, username/service combination already exists in table
|
||||||
if (cursor != null && cursor.getCount() > 0){
|
if (cursor.moveToFirst()){
|
||||||
if (cursor.getString(0).equals("active")){
|
if (cursor.getString(0).equals("active")){
|
||||||
cursor.close();
|
cursor.close();
|
||||||
return false;
|
return false;
|
||||||
|
@ -711,11 +711,27 @@ public class DBHelper extends SQLiteOpenHelper {
|
||||||
return deleteServiceProvidedByUser(serviceProvider.getUsername(), service.getName());
|
return deleteServiceProvidedByUser(serviceProvider.getUsername(), service.getName());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Removes service from service provider. Provider no longer offers this service.
|
||||||
|
*
|
||||||
|
* @param serviceProvider service provider who once offered service
|
||||||
|
* @param serviceName service to be removed
|
||||||
|
*
|
||||||
|
* @return true if service provider's status for this service is now inactive
|
||||||
|
*/
|
||||||
public boolean deleteServiceProvidedByUser(ServiceProvider serviceProvider, String serviceName){
|
public boolean deleteServiceProvidedByUser(ServiceProvider serviceProvider, String serviceName){
|
||||||
if (serviceProvider == null || serviceName == null) return false;
|
if (serviceProvider == null || serviceName == null) return false;
|
||||||
return deleteServiceProvidedByUser(serviceProvider.getUsername(), serviceName);
|
return deleteServiceProvidedByUser(serviceProvider.getUsername(), serviceName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Removes service from service provider. Provider no longer offers this service.
|
||||||
|
*
|
||||||
|
* @param serviceProviderUsername service provider who once offered service
|
||||||
|
* @param serviceName service to be removed
|
||||||
|
*
|
||||||
|
* @return true if service provider's status for this service is now inactive
|
||||||
|
*/
|
||||||
public boolean deleteServiceProvidedByUser(String serviceProviderUsername, String serviceName){
|
public boolean deleteServiceProvidedByUser(String serviceProviderUsername, String serviceName){
|
||||||
if (serviceProviderUsername == null || serviceName == null) return false;
|
if (serviceProviderUsername == null || serviceName == null) return false;
|
||||||
serviceName = serviceName.toLowerCase().trim();
|
serviceName = serviceName.toLowerCase().trim();
|
||||||
|
@ -729,19 +745,30 @@ public class DBHelper extends SQLiteOpenHelper {
|
||||||
new String[]{serviceProviderUsername, serviceName}) > 0;
|
new String[]{serviceProviderUsername, serviceName}) > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fetches all services provided by a service provider
|
||||||
|
*
|
||||||
|
* @param serviceProvider
|
||||||
|
* @return a list of [service, rate]
|
||||||
|
*/
|
||||||
public List<String[]> getAllServicesProvidedByUser(ServiceProvider serviceProvider){
|
public List<String[]> getAllServicesProvidedByUser(ServiceProvider serviceProvider){
|
||||||
if (serviceProvider == null) return new ArrayList<>();
|
if (serviceProvider == null) return new ArrayList<>();
|
||||||
|
|
||||||
return getAllServicesProvidedByUser(serviceProvider.getUsername());
|
return getAllServicesProvidedByUser(serviceProvider.getUsername());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fetches all services provided by a service provider
|
||||||
|
*
|
||||||
|
* @param serviceProviderName
|
||||||
|
* @return a list of [service, rate]
|
||||||
|
*/
|
||||||
public List<String[]> getAllServicesProvidedByUser(String serviceProviderName){
|
public List<String[]> getAllServicesProvidedByUser(String serviceProviderName){
|
||||||
if (serviceProviderName == null) return new ArrayList<>();
|
if (serviceProviderName == null) return new ArrayList<>();
|
||||||
|
|
||||||
return getAll("SELECT " + TABLE_SERVICES + "." + COLUMN_SERVICE + ", "
|
return getAll("SELECT " + TABLE_SERVICES + "." + COLUMN_SERVICE + ", "
|
||||||
+ TABLE_SERVICES + "." + COLUMN_RATE
|
+ TABLE_SERVICES + "." + COLUMN_RATE
|
||||||
+ " FROM " + TABLE_SERVICES
|
+ " FROM " + TABLE_SERVICES + " JOIN " + TABLE_SERVICEPROVIDERS
|
||||||
+ " JOIN " + TABLE_SERVICEPROVIDERS
|
|
||||||
+ " ON " + TABLE_SERVICEPROVIDERS + "." + COLUMN_SERVICEPROVIDERSERVICE + " = "
|
+ " ON " + TABLE_SERVICEPROVIDERS + "." + COLUMN_SERVICEPROVIDERSERVICE + " = "
|
||||||
+ TABLE_SERVICES + "." + COLUMN_SERVICE
|
+ TABLE_SERVICES + "." + COLUMN_SERVICE
|
||||||
+ " AND " + TABLE_SERVICEPROVIDERS + "." + COLUMN_SERVICEPROVIDERNAME
|
+ " AND " + TABLE_SERVICEPROVIDERS + "." + COLUMN_SERVICEPROVIDERNAME
|
||||||
|
@ -749,29 +776,47 @@ public class DBHelper extends SQLiteOpenHelper {
|
||||||
+ " AND " + TABLE_SERVICEPROVIDERS + "." + COLUMN_ACTIVE + " = 'active'");
|
+ " AND " + TABLE_SERVICEPROVIDERS + "." + COLUMN_ACTIVE + " = 'active'");
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<String> getAllProvidersByService(Service service){
|
/**
|
||||||
|
* Fetches all service providers who provide a specified service
|
||||||
|
*
|
||||||
|
* @param service name of service
|
||||||
|
* @return a list of [username, first name, last name, average rating] sorted by rating
|
||||||
|
*/
|
||||||
|
public List<String[]> getAllProvidersByService(Service service){
|
||||||
if (service == null) return new ArrayList<>();
|
if (service == null) return new ArrayList<>();
|
||||||
|
|
||||||
return getAllProvidersByService(service.getName());
|
return getAllProvidersByService(service.getName());
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<String> getAllProvidersByService(String serviceName){
|
/**
|
||||||
|
* Fetches all service providers who provide a specified service
|
||||||
|
*
|
||||||
|
* @param serviceName name of service
|
||||||
|
* @return a list of [username, first name, last name, average rating] sorted by rating
|
||||||
|
*/
|
||||||
|
public List<String[]> getAllProvidersByService(String serviceName){
|
||||||
if (serviceName == null) return new ArrayList<>();
|
if (serviceName == null) return new ArrayList<>();
|
||||||
|
|
||||||
serviceName = serviceName.toLowerCase().trim();
|
serviceName = serviceName.toLowerCase().trim();
|
||||||
List<String[]> providers = getAll("SELECT " + COLUMN_SERVICEPROVIDERNAME
|
return getAll(
|
||||||
+ " FROM " + TABLE_SERVICEPROVIDERS
|
"SELECT " + TABLE_SERVICEPROVIDERS + "." + COLUMN_SERVICEPROVIDERNAME + ", "
|
||||||
+ " WHERE " + COLUMN_SERVICEPROVIDERSERVICE + " = '"
|
+ TABLE_LOGIN + "." + COLUMN_FIRSTNAME + ", "
|
||||||
+ serviceName + "'"
|
+ TABLE_LOGIN + "." + COLUMN_LASTNAME + ", "
|
||||||
+ " AND " + TABLE_SERVICEPROVIDERS + "." + COLUMN_ACTIVE + " = 'active'");
|
+ TABLE_SERVICEPROVIDERS + "." + COLUMN_AVERAGERATING
|
||||||
|
+ " FROM " + TABLE_SERVICEPROVIDERS + " JOIN " + TABLE_LOGIN
|
||||||
List<String> providerList = new ArrayList<>();
|
+ " ON " + TABLE_SERVICEPROVIDERS + "." + COLUMN_SERVICEPROVIDERNAME + " = "
|
||||||
for (String[] provider : providers){
|
+ TABLE_LOGIN + "." + COLUMN_USERNAME
|
||||||
providerList.add(provider[0]);
|
+ " AND " + COLUMN_SERVICEPROVIDERSERVICE + " = '" + serviceName + "'"
|
||||||
}
|
+ " AND " + TABLE_SERVICEPROVIDERS + "." + COLUMN_ACTIVE + " = 'active'"
|
||||||
return providerList;
|
+ " ORDER BY " + TABLE_SERVICEPROVIDERS + "." + COLUMN_AVERAGERATING + " DESC");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Updates a service provider's availabilities based on ServiceProvider object provided
|
||||||
|
*
|
||||||
|
* @param serviceProvider
|
||||||
|
* @return true if availability was updated successfully
|
||||||
|
*/
|
||||||
public boolean updateAvailability(ServiceProvider serviceProvider){
|
public boolean updateAvailability(ServiceProvider serviceProvider){
|
||||||
//availability is stored as number of minutes from 00:00
|
//availability is stored as number of minutes from 00:00
|
||||||
if (serviceProvider == null) return false;
|
if (serviceProvider == null) return false;
|
||||||
|
@ -801,27 +846,6 @@ public class DBHelper extends SQLiteOpenHelper {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void addAvailabilityToContentValues(ContentValues contentValues,
|
|
||||||
String startColumn, String endColumn,
|
|
||||||
int[] startAndEndTimes){
|
|
||||||
if (startAndEndTimes == null){
|
|
||||||
contentValues.put(startColumn, 0);
|
|
||||||
contentValues.put(endColumn, 0);
|
|
||||||
} else {
|
|
||||||
int startTime = startAndEndTimes[0]*60+startAndEndTimes[1];
|
|
||||||
int endTime = startAndEndTimes[2]*60+startAndEndTimes[3];
|
|
||||||
if (endTime - startTime <=0 || startTime > 1439 || startTime < 0
|
|
||||||
|| endTime > 1439 || endTime <= 0) {
|
|
||||||
contentValues.put(startColumn, 0);
|
|
||||||
contentValues.put(endColumn, 0);
|
|
||||||
} else {
|
|
||||||
contentValues.put(startColumn, startTime);
|
|
||||||
contentValues.put(endColumn, endTime);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//note that this method overwrites serviceProvider's availability if it exists
|
//note that this method overwrites serviceProvider's availability if it exists
|
||||||
public int[][] getAvailabilities(ServiceProvider serviceProvider){
|
public int[][] getAvailabilities(ServiceProvider serviceProvider){
|
||||||
|
@ -860,6 +884,53 @@ public class DBHelper extends SQLiteOpenHelper {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public List<int[]> getAvailabilityByDate(ServiceProvider serviceProvider, int year, int month, int day){
|
||||||
|
return getAvailabilityByDate(serviceProvider.getUsername(), year, month, day);
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<int[]> getAvailabilityByDate(String serviceProvider, int year, int month, int day){
|
||||||
|
|
||||||
|
List<int[]> availabilities = new ArrayList<>();
|
||||||
|
|
||||||
|
Cursor bookings = writeDB.query(TABLE_BOOKINGS, new String[] {COLUMN_BOOKINGSTART, COLUMN_BOOKINGEND},
|
||||||
|
COLUMN_BOOKINGSERVICEPROVIDER+ " = ?"
|
||||||
|
+ " AND " + COLUMN_BOOKINGYEAR + " = ?"
|
||||||
|
+ " AND " + COLUMN_BOOKINGMONTH + " = ?"
|
||||||
|
+ " AND " + COLUMN_BOOKINGDATE + " = ?",
|
||||||
|
new String[]{serviceProvider, String.valueOf(year),
|
||||||
|
String.valueOf(month),String.valueOf(day)},
|
||||||
|
null, null, COLUMN_BOOKINGSTART, null);
|
||||||
|
|
||||||
|
Cursor availability = getAvailabilityByDayOfWeek(serviceProvider, year, month, day);
|
||||||
|
if (availability.moveToFirst()) {
|
||||||
|
int previousEnd = availability.getInt(0);
|
||||||
|
int currentStart;
|
||||||
|
int currentEnd;
|
||||||
|
if (bookings.moveToFirst()) {
|
||||||
|
for (int i = 0; i < bookings.getCount(); i++) {
|
||||||
|
currentStart = bookings.getInt(0);
|
||||||
|
if (currentStart - previousEnd >= 30){
|
||||||
|
availabilities.add(new int[]{previousEnd/60, previousEnd%60,
|
||||||
|
currentStart/60, currentStart%60});
|
||||||
|
}
|
||||||
|
previousEnd = bookings.getInt(1);
|
||||||
|
bookings.moveToNext();
|
||||||
|
}
|
||||||
|
currentStart = availability.getInt(1);
|
||||||
|
if (currentStart - previousEnd >= 30){
|
||||||
|
availabilities.add(new int[]{previousEnd/60, previousEnd%60,
|
||||||
|
currentStart/60, currentStart%60});
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
currentStart = availability.getInt(0);
|
||||||
|
currentEnd = availability.getInt(1);
|
||||||
|
availabilities.add(new int[]{currentStart/60, currentStart%60,
|
||||||
|
currentEnd/60, currentEnd%60});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return availabilities;
|
||||||
|
}
|
||||||
|
|
||||||
public boolean addBooking(Booking booking){
|
public boolean addBooking(Booking booking){
|
||||||
if (booking == null) return false;
|
if (booking == null) return false;
|
||||||
|
|
||||||
|
@ -879,17 +950,44 @@ public class DBHelper extends SQLiteOpenHelper {
|
||||||
starth, startmin, endh, endmin);
|
starth, startmin, endh, endmin);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param serviceProvider
|
||||||
|
* @param homeOwner
|
||||||
|
* @param service
|
||||||
|
* @param year
|
||||||
|
* @param month
|
||||||
|
* @param day
|
||||||
|
* @param starth
|
||||||
|
* @param startmin
|
||||||
|
* @param endh
|
||||||
|
* @param endmin
|
||||||
|
* @return true if booking was successfully added
|
||||||
|
*/
|
||||||
public boolean addBooking(String serviceProvider, String homeOwner, String service,
|
public boolean addBooking(String serviceProvider, String homeOwner, String service,
|
||||||
int year, int month, int day,
|
int year, int month, int day,
|
||||||
int starth, int startmin, int endh, int endmin){
|
int starth, int startmin, int endh, int endmin){
|
||||||
|
|
||||||
GregorianCalendar current = new GregorianCalendar();
|
GregorianCalendar current = new GregorianCalendar();
|
||||||
current.setTimeInMillis(System.currentTimeMillis());
|
current.setTimeInMillis(System.currentTimeMillis());
|
||||||
GregorianCalendar bookDate = new GregorianCalendar(year, month, day, starth, startmin);
|
GregorianCalendar bookDate = new GregorianCalendar(year, month-1, day, starth, startmin);
|
||||||
|
|
||||||
//check if time of booking is after this time
|
//check if time of booking is after this time
|
||||||
if (current.compareTo(bookDate) > 0) return false;
|
if (current.compareTo(bookDate) > 0) return false;
|
||||||
|
|
||||||
|
service = service.trim().toLowerCase();
|
||||||
|
|
||||||
|
Cursor cursor = writeDB.query(TABLE_SERVICEPROVIDERS, new String[]{COLUMN_SERVICEPROVIDERNAME},
|
||||||
|
COLUMN_SERVICEPROVIDERNAME + " = ? AND "
|
||||||
|
+ COLUMN_SERVICEPROVIDERSERVICE + " = ?",
|
||||||
|
new String[] {serviceProvider, service},
|
||||||
|
null, null, null, "1");
|
||||||
|
if (!cursor.moveToFirst()) {
|
||||||
|
cursor.close();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
cursor.close();
|
||||||
|
|
||||||
if (isProviderAvailable(serviceProvider, year, month, day, starth, startmin,
|
if (isProviderAvailable(serviceProvider, year, month, day, starth, startmin,
|
||||||
endh, endmin)){
|
endh, endmin)){
|
||||||
|
|
||||||
|
@ -912,6 +1010,11 @@ public class DBHelper extends SQLiteOpenHelper {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param username
|
||||||
|
* @return list of booking objects related to specified user
|
||||||
|
*/
|
||||||
public List<Booking> findBookings(String username){
|
public List<Booking> findBookings(String username){
|
||||||
List<Booking> bookingList = new ArrayList<>();
|
List<Booking> bookingList = new ArrayList<>();
|
||||||
ServiceProvider serviceProvider = null;
|
ServiceProvider serviceProvider = null;
|
||||||
|
@ -924,13 +1027,13 @@ public class DBHelper extends SQLiteOpenHelper {
|
||||||
if (cursor.getString(5).equals("ServiceProvider")) {
|
if (cursor.getString(5).equals("ServiceProvider")) {
|
||||||
serviceProvider = (ServiceProvider)findUserByUsername(username);
|
serviceProvider = (ServiceProvider)findUserByUsername(username);
|
||||||
cursor = writeDB.rawQuery("SELECT * FROM " + TABLE_BOOKINGS + " WHERE "
|
cursor = writeDB.rawQuery("SELECT * FROM " + TABLE_BOOKINGS + " WHERE "
|
||||||
+ COLUMN_BOOKINGSERVICEPROVIDER + " = ? AND "
|
+ COLUMN_BOOKINGSERVICEPROVIDER + " = ?",
|
||||||
+ COLUMN_BOOKINGSTATUS + " != ?", new String[]{username, Status.CANCELLED.toString()});
|
new String[]{username});
|
||||||
} else {
|
} else {
|
||||||
homeOwner = (HomeOwner)findUserByUsername(username);
|
homeOwner = (HomeOwner)findUserByUsername(username);
|
||||||
cursor = writeDB.rawQuery("SELECT * FROM " + TABLE_BOOKINGS + " WHERE "
|
cursor = writeDB.rawQuery("SELECT * FROM " + TABLE_BOOKINGS + " WHERE "
|
||||||
+ COLUMN_BOOKINGHOMEOWNER + " = ? AND "
|
+ COLUMN_BOOKINGHOMEOWNER + " = ?",
|
||||||
+ COLUMN_BOOKINGSTATUS + " != ?", new String[]{username, Status.CANCELLED.toString()});
|
new String[]{username});
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cursor.moveToFirst()){
|
if (cursor.moveToFirst()){
|
||||||
|
@ -945,7 +1048,8 @@ public class DBHelper extends SQLiteOpenHelper {
|
||||||
int month = cursor.getInt(4);
|
int month = cursor.getInt(4);
|
||||||
int year = cursor.getInt(3);
|
int year = cursor.getInt(3);
|
||||||
String stat = cursor.getString(8);
|
String stat = cursor.getString(8);
|
||||||
Status status = (stat.equals("Pending")? Status.PENDING : Status.CONFIRMED);
|
Status status = (stat.equals("Pending")? Status.PENDING :
|
||||||
|
stat.equals("Confirmed")? Status.CONFIRMED : Status.CANCELLED);
|
||||||
ServiceProvider serviceprovider = (serviceProvider == null?
|
ServiceProvider serviceprovider = (serviceProvider == null?
|
||||||
(ServiceProvider)findUserByUsername(cursor.getString(0)):serviceProvider);
|
(ServiceProvider)findUserByUsername(cursor.getString(0)):serviceProvider);
|
||||||
HomeOwner homeowner = (homeOwner == null?
|
HomeOwner homeowner = (homeOwner == null?
|
||||||
|
@ -963,185 +1067,44 @@ public class DBHelper extends SQLiteOpenHelper {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public boolean isProviderAvailable(String serviceProvider, String monthDayYear,
|
/**
|
||||||
int starth, int startmin, int endh, int endmin) {
|
* Sets status of specified booking to cancelled. Returns false if booking
|
||||||
String[] date = monthDayYear.split("/");
|
* does not exist in database, or date of booking has already passed.
|
||||||
return isProviderAvailable(serviceProvider, Integer.parseInt(date[2]),
|
*
|
||||||
Integer.parseInt(date[0]), Integer.parseInt(date[1]),
|
* @param booking
|
||||||
starth, startmin, endh, endmin);
|
* @return true if booking was successfully cancelled
|
||||||
|
*/
|
||||||
|
public boolean confirmBooking(Booking booking){
|
||||||
|
return modifyBookingStatus(booking, Status.CONFIRMED);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns false if end time before start time, or service provider not available on that day
|
* Sets status of specified booking to cancelled. Returns false if booking was already cancelled,
|
||||||
|
* booking does not exist in database, or date of booking has already passed.
|
||||||
*
|
*
|
||||||
* @param serviceProvider
|
* @param booking
|
||||||
* @param year
|
* @return true if booking was successfully cancelled
|
||||||
* @param month
|
|
||||||
* @param day
|
|
||||||
* @param starth
|
|
||||||
* @param startmin
|
|
||||||
* @param endh
|
|
||||||
* @param endmin
|
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
public boolean isProviderAvailable(String serviceProvider, int year, int month, int day,
|
|
||||||
int starth, int startmin, int endh, int endmin){
|
|
||||||
|
|
||||||
int bookingStart = starth*60 + startmin;
|
|
||||||
int bookingEnd = endh*60 + endmin;
|
|
||||||
|
|
||||||
if (bookingEnd < bookingStart) return false;
|
|
||||||
|
|
||||||
GregorianCalendar start = new GregorianCalendar(year, month-1, day);
|
|
||||||
//Calendar.DAY_OF_WEEK starts with 1 for Sunday, and onwards
|
|
||||||
int dayOfWeek = start.get(Calendar.DAY_OF_WEEK);
|
|
||||||
Cursor cursor = null;
|
|
||||||
int availabilityStart, availabilityEnd;
|
|
||||||
|
|
||||||
//Check availabilities on day of week
|
|
||||||
switch (dayOfWeek){
|
|
||||||
case 1: //Sunday
|
|
||||||
cursor = writeDB.query(TABLE_AVAILABILITY, new String[] {COLUMN_SUNSTART, COLUMN_SUNEND},
|
|
||||||
COLUMN_AVAILABILITYNAME + " = ?", new String[] {serviceProvider}, null,
|
|
||||||
null, null, null);
|
|
||||||
break;
|
|
||||||
case 2: //Monday
|
|
||||||
cursor = writeDB.query(TABLE_AVAILABILITY, new String[] {COLUMN_MONSTART, COLUMN_MONEND},
|
|
||||||
COLUMN_AVAILABILITYNAME + " = ?", new String[] {serviceProvider}, null,
|
|
||||||
null, null, null);
|
|
||||||
break;
|
|
||||||
case 3: //Tuesday
|
|
||||||
cursor = writeDB.query(TABLE_AVAILABILITY, new String[] {COLUMN_TUESTART, COLUMN_TUEEND},
|
|
||||||
COLUMN_AVAILABILITYNAME + " = ?", new String[] {serviceProvider}, null,
|
|
||||||
null, null, null);
|
|
||||||
break;
|
|
||||||
case 4: //Wednesday
|
|
||||||
cursor = writeDB.query(TABLE_AVAILABILITY, new String[] {COLUMN_WEDSTART, COLUMN_WEDEND},
|
|
||||||
COLUMN_AVAILABILITYNAME + " = ?", new String[] {serviceProvider}, null,
|
|
||||||
null, null, null);
|
|
||||||
break;
|
|
||||||
case 5: //Thursday
|
|
||||||
cursor = writeDB.query(TABLE_AVAILABILITY, new String[] {COLUMN_THUSTART, COLUMN_THUEND},
|
|
||||||
COLUMN_AVAILABILITYNAME + " = ?", new String[] {serviceProvider}, null,
|
|
||||||
null, null, null);
|
|
||||||
break;
|
|
||||||
case 6: //Friday
|
|
||||||
cursor = writeDB.query(TABLE_AVAILABILITY, new String[] {COLUMN_FRISTART, COLUMN_FRIEND},
|
|
||||||
COLUMN_AVAILABILITYNAME + " = ?", new String[] {serviceProvider}, null,
|
|
||||||
null, null, null);
|
|
||||||
break;
|
|
||||||
case 7: //Saturday
|
|
||||||
cursor = writeDB.query(TABLE_AVAILABILITY, new String[] {COLUMN_SATSTART, COLUMN_SATEND},
|
|
||||||
COLUMN_AVAILABILITYNAME + " = ?", new String[] {serviceProvider}, null,
|
|
||||||
null, null, null);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
cursor.moveToFirst();
|
|
||||||
availabilityStart = cursor.getInt(0);
|
|
||||||
availabilityEnd = cursor.getInt(1);
|
|
||||||
|
|
||||||
//service provider not available if availability end is 0, if availability starts after booking start,
|
|
||||||
// or if availability ends before booking end
|
|
||||||
if (availabilityEnd == 0 || availabilityStart > bookingStart || availabilityEnd < bookingEnd) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//now we know for sure that the service provider is available on said day of the week
|
|
||||||
//we check to see if any of the bookings overlap on this time slot
|
|
||||||
cursor = writeDB.query(TABLE_BOOKINGS, new String[] {COLUMN_BOOKINGSTART, COLUMN_BOOKINGEND},
|
|
||||||
COLUMN_BOOKINGSERVICEPROVIDER + " = ? AND "
|
|
||||||
+ COLUMN_BOOKINGYEAR + " = ? AND "
|
|
||||||
+ COLUMN_BOOKINGMONTH + " = ? AND "
|
|
||||||
+ COLUMN_BOOKINGDATE + " = ? AND "
|
|
||||||
+ COLUMN_BOOKINGSTATUS + " != ?",
|
|
||||||
new String[] {serviceProvider, String.valueOf(year),
|
|
||||||
String.valueOf(month), String.valueOf(day), Status.CANCELLED.toString()},
|
|
||||||
null, null, COLUMN_BOOKINGSTART, null);
|
|
||||||
if (cursor.moveToFirst()){
|
|
||||||
for (int i = 0; i<cursor.getCount(); i++){
|
|
||||||
availabilityStart = cursor.getInt(0);
|
|
||||||
availabilityEnd = cursor.getInt(1);
|
|
||||||
|
|
||||||
if ((availabilityStart < bookingStart && availabilityEnd > bookingStart)||
|
|
||||||
(availabilityStart < bookingEnd && availabilityEnd > bookingEnd) ||
|
|
||||||
(availabilityStart > bookingStart && availabilityEnd < bookingEnd)) return false;
|
|
||||||
|
|
||||||
cursor.moveToNext();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public boolean confirmBooking(Booking booking){
|
|
||||||
if (booking == null) return false;
|
|
||||||
|
|
||||||
ContentValues contentValues = new ContentValues();
|
|
||||||
contentValues.put(COLUMN_BOOKINGSTATUS, Status.CONFIRMED.toString());
|
|
||||||
|
|
||||||
GregorianCalendar current = new GregorianCalendar();
|
|
||||||
current.setTimeInMillis(System.currentTimeMillis());
|
|
||||||
GregorianCalendar bookDate = new GregorianCalendar(booking.getYear(), booking.getMonth(),
|
|
||||||
booking.getDay(), booking.getStarth(), booking.getStartmin());
|
|
||||||
|
|
||||||
//check if time of booking is before this time
|
|
||||||
if (current.compareTo(bookDate) > 0) return false;
|
|
||||||
|
|
||||||
return writeDB.update(TABLE_BOOKINGS, contentValues,
|
|
||||||
COLUMN_BOOKINGSERVICEPROVIDER + " = ? AND "
|
|
||||||
+ COLUMN_BOOKINGHOMEOWNER + " = ? AND "
|
|
||||||
+ COLUMN_BOOKINGYEAR + " = ? AND "
|
|
||||||
+ COLUMN_BOOKINGMONTH + " = ? AND "
|
|
||||||
+ COLUMN_BOOKINGDATE + " = ? AND "
|
|
||||||
+ COLUMN_BOOKINGSTART + " = ? AND "
|
|
||||||
+ COLUMN_BOOKINGSTATUS + " = ?)",
|
|
||||||
new String[] {booking.getServiceprovider().getUsername(),
|
|
||||||
booking.getHomeowner().getUsername(),
|
|
||||||
String.valueOf(booking.getYear()),
|
|
||||||
String.valueOf(booking.getMonth()),
|
|
||||||
String.valueOf(booking.getDay()),
|
|
||||||
String.valueOf(booking.getStarth()*60 + booking.getStartmin()),
|
|
||||||
Status.PENDING.toString()}) > 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean cancelBooking(Booking booking){
|
public boolean cancelBooking(Booking booking){
|
||||||
if (booking == null) return false;
|
return modifyBookingStatus(booking, Status.CANCELLED);
|
||||||
|
|
||||||
ContentValues contentValues = new ContentValues();
|
|
||||||
contentValues.put(COLUMN_BOOKINGSTATUS, Status.CANCELLED.toString());
|
|
||||||
|
|
||||||
GregorianCalendar current = new GregorianCalendar();
|
|
||||||
current.setTimeInMillis(System.currentTimeMillis());
|
|
||||||
GregorianCalendar bookDate = new GregorianCalendar(booking.getYear(), booking.getMonth(),
|
|
||||||
booking.getDay(), booking.getStarth(), booking.getStartmin());
|
|
||||||
|
|
||||||
//check if time of booking has passed
|
|
||||||
if (current.compareTo(bookDate) > 0) return false;
|
|
||||||
|
|
||||||
return writeDB.update(TABLE_BOOKINGS, contentValues,
|
|
||||||
COLUMN_BOOKINGSERVICEPROVIDER + " = ? AND "
|
|
||||||
+ COLUMN_BOOKINGHOMEOWNER + " = ? AND "
|
|
||||||
+ COLUMN_BOOKINGYEAR + " = ? AND "
|
|
||||||
+ COLUMN_BOOKINGMONTH + " = ? AND "
|
|
||||||
+ COLUMN_BOOKINGDATE + " = ? AND "
|
|
||||||
+ COLUMN_BOOKINGSTART + " = ?)",
|
|
||||||
new String[] {booking.getServiceprovider().getUsername(),
|
|
||||||
booking.getHomeowner().getUsername(),
|
|
||||||
String.valueOf(booking.getYear()),
|
|
||||||
String.valueOf(booking.getMonth()),
|
|
||||||
String.valueOf(booking.getDay()),
|
|
||||||
String.valueOf(booking.getStarth()*60 + booking.getStartmin())}) > 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add a rating for a specific booking, and updates the average rating for the service provider
|
||||||
|
* and service combination. The booking must have passed before a rating can be added.
|
||||||
|
* Note that the rating is final.
|
||||||
|
*
|
||||||
|
* @param booking
|
||||||
|
* @param rating
|
||||||
|
* @return true if adding the rating was successful
|
||||||
|
*/
|
||||||
public boolean addRating(Booking booking, double rating){
|
public boolean addRating(Booking booking, double rating){
|
||||||
if (booking == null) return false;
|
if (booking == null) return false;
|
||||||
|
|
||||||
GregorianCalendar current = new GregorianCalendar();
|
GregorianCalendar current = new GregorianCalendar();
|
||||||
current.setTimeInMillis(System.currentTimeMillis());
|
current.setTimeInMillis(System.currentTimeMillis());
|
||||||
GregorianCalendar bookDate = new GregorianCalendar(booking.getYear(), booking.getMonth(),
|
GregorianCalendar bookDate = new GregorianCalendar(booking.getYear(), booking.getMonth()-1,
|
||||||
booking.getDay(), booking.getEndh(), booking.getEndmin());
|
booking.getDay(), booking.getEndh(), booking.getEndmin());
|
||||||
|
|
||||||
//check if time of booking is before this time
|
//check if time of booking is before this time
|
||||||
|
@ -1191,11 +1154,26 @@ public class DBHelper extends SQLiteOpenHelper {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the average rating for a service provider's service
|
||||||
|
*
|
||||||
|
* @param serviceProvider
|
||||||
|
* @param service
|
||||||
|
* @return average rating of specified service provider and service combination
|
||||||
|
*/
|
||||||
public double getRatings(ServiceProvider serviceProvider, Service service){
|
public double getRatings(ServiceProvider serviceProvider, Service service){
|
||||||
return getRatings(serviceProvider.getUsername(), service.getName());
|
return getRatings(serviceProvider.getUsername(), service.getName());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the average rating for a service provider's service
|
||||||
|
*
|
||||||
|
* @param serviceProviderName name of service provider
|
||||||
|
* @param serviceName name of service
|
||||||
|
* @return average rating of specified service provider and service combination
|
||||||
|
*/
|
||||||
public double getRatings(String serviceProviderName, String serviceName){
|
public double getRatings(String serviceProviderName, String serviceName){
|
||||||
|
serviceName = serviceName.trim().toLowerCase();
|
||||||
Cursor cursor = writeDB.query(TABLE_SERVICEPROVIDERS, new String[]{COLUMN_AVERAGERATING},
|
Cursor cursor = writeDB.query(TABLE_SERVICEPROVIDERS, new String[]{COLUMN_AVERAGERATING},
|
||||||
COLUMN_SERVICEPROVIDERNAME + " = ? AND "
|
COLUMN_SERVICEPROVIDERNAME + " = ? AND "
|
||||||
+ COLUMN_SERVICEPROVIDERSERVICE + " = ?",
|
+ COLUMN_SERVICEPROVIDERSERVICE + " = ?",
|
||||||
|
@ -1208,12 +1186,27 @@ public class DBHelper extends SQLiteOpenHelper {
|
||||||
return rating;
|
return rating;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the number of people who rated a service provider's service
|
||||||
|
*
|
||||||
|
* @param serviceProvider name of service provider
|
||||||
|
* @param service name of service
|
||||||
|
* @return number of raters for specified service provider and service combination
|
||||||
|
*/
|
||||||
public int getRaters(ServiceProvider serviceProvider, Service service){
|
public int getRaters(ServiceProvider serviceProvider, Service service){
|
||||||
return getRaters(serviceProvider.getUsername(), service.getName());
|
return getRaters(serviceProvider.getUsername(), service.getName());
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the number of people who rated a service provider's service
|
||||||
|
*
|
||||||
|
* @param serviceProviderName name of service provider
|
||||||
|
* @param serviceName name of service
|
||||||
|
* @return number of raters for specified service provider and service combination
|
||||||
|
*/
|
||||||
public int getRaters(String serviceProviderName, String serviceName){
|
public int getRaters(String serviceProviderName, String serviceName){
|
||||||
|
serviceName = serviceName.trim().toLowerCase();
|
||||||
Cursor cursor = writeDB.query(TABLE_SERVICEPROVIDERS, new String[]{COLUMN_RATERS},
|
Cursor cursor = writeDB.query(TABLE_SERVICEPROVIDERS, new String[]{COLUMN_RATERS},
|
||||||
COLUMN_SERVICEPROVIDERNAME + " = ? AND "
|
COLUMN_SERVICEPROVIDERNAME + " = ? AND "
|
||||||
+ COLUMN_SERVICEPROVIDERSERVICE + " = ?",
|
+ COLUMN_SERVICEPROVIDERSERVICE + " = ?",
|
||||||
|
@ -1225,54 +1218,150 @@ public class DBHelper extends SQLiteOpenHelper {
|
||||||
return cursor.getInt(0);
|
return cursor.getInt(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<String> getProvidersAboveRating(Service service, double rating){
|
/**
|
||||||
|
* Returns list of [username, first name, last name, rating] of service providers that
|
||||||
|
* have a rating equal to or above the specified rating
|
||||||
|
*
|
||||||
|
* @param service
|
||||||
|
* @param rating minimum rating
|
||||||
|
* @return a List of [username, first name, last name, rating] of service providers
|
||||||
|
*/
|
||||||
|
public List<String[]> getProvidersAboveRating(Service service, double rating){
|
||||||
return getProvidersAboveRating(service.getName(), rating);
|
return getProvidersAboveRating(service.getName(), rating);
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<String> getProvidersAboveRating(String serviceName, double rating){
|
/**
|
||||||
List<String[]> providers = getAll("SELECT " + COLUMN_SERVICEPROVIDERNAME + " FROM " + TABLE_SERVICEPROVIDERS
|
* Returns list of [username, first name, last name, rating] of service providers that
|
||||||
+ " WHERE " + COLUMN_SERVICE + " = " + serviceName + " AND "
|
* have a rating equal to or above the specified rating
|
||||||
+ COLUMN_AVERAGERATING + " >= " + rating);
|
*
|
||||||
List<String> providerList = new ArrayList<>();
|
* @param serviceName name of service
|
||||||
for (String[] provider : providers){
|
* @param rating minimum rating
|
||||||
providerList.add(provider[0]);
|
* @return a List of [username, first name, last name, rating] of service providers
|
||||||
}
|
*/
|
||||||
return providerList;
|
public List<String[]> getProvidersAboveRating(String serviceName, double rating){
|
||||||
|
serviceName = serviceName.trim().toLowerCase();
|
||||||
|
return getAll("SELECT " + TABLE_SERVICEPROVIDERS + "." + COLUMN_SERVICEPROVIDERNAME + ", "
|
||||||
|
+ TABLE_LOGIN + "." + COLUMN_FIRSTNAME + ", "
|
||||||
|
+ TABLE_LOGIN + "." + COLUMN_LASTNAME + ", "
|
||||||
|
+ TABLE_SERVICEPROVIDERS + "." + COLUMN_AVERAGERATING
|
||||||
|
+ " FROM " + TABLE_SERVICEPROVIDERS + " JOIN " + TABLE_LOGIN
|
||||||
|
+ " ON " + TABLE_SERVICEPROVIDERS + "." + COLUMN_SERVICEPROVIDERNAME + " = "
|
||||||
|
+ TABLE_LOGIN + "." + COLUMN_USERNAME
|
||||||
|
+ " AND " + COLUMN_SERVICEPROVIDERSERVICE + " = '" + serviceName + "'"
|
||||||
|
+ " AND " + TABLE_SERVICEPROVIDERS + "." + COLUMN_ACTIVE + " = 'active'"
|
||||||
|
+ " AND " + TABLE_SERVICEPROVIDERS + "." + COLUMN_AVERAGERATING + " >= " + rating
|
||||||
|
+ " ORDER BY " + TABLE_SERVICEPROVIDERS + "." + COLUMN_AVERAGERATING + " DESC");
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<String> getProvidersByTime(Service service, int year, int month, int day,
|
/**
|
||||||
|
* Returns list of [username, first name, last name, rating] of service providers
|
||||||
|
* available at the specified time
|
||||||
|
*
|
||||||
|
* @param service
|
||||||
|
* @param year
|
||||||
|
* @param month
|
||||||
|
* @param day
|
||||||
|
* @param starth starting hour
|
||||||
|
* @param startmin starting minute
|
||||||
|
* @param endh ending hour
|
||||||
|
* @param endmin ending minute
|
||||||
|
* @return a List of [username, first name, last name, rating] of service providers
|
||||||
|
*/
|
||||||
|
public List<String[]> getProvidersByTime(Service service, int year, int month, int day,
|
||||||
int starth, int startmin, int endh, int endmin){
|
int starth, int startmin, int endh, int endmin){
|
||||||
return getProvidersByTime(service.getName(), year, month, day, starth, startmin, endh, endmin);
|
return getProvidersByTime(service.getName(), year, month, day, starth, startmin, endh, endmin);
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<String> getProvidersByTime(String serviceName, int year, int month, int day,
|
/**
|
||||||
|
* Returns list of [username, first name, last name, rating] of service providers
|
||||||
|
* available at the specified time
|
||||||
|
*
|
||||||
|
* @param serviceName name of service
|
||||||
|
* @param year
|
||||||
|
* @param month
|
||||||
|
* @param day
|
||||||
|
* @param starth starting hour
|
||||||
|
* @param startmin starting minute
|
||||||
|
* @param endh ending hour
|
||||||
|
* @param endmin ending minute
|
||||||
|
* @return a List of [username, first name, last name, rating] of service providers
|
||||||
|
*/
|
||||||
|
public List<String[]> getProvidersByTime(String serviceName, int year, int month, int day,
|
||||||
int starth, int startmin, int endh, int endmin){
|
int starth, int startmin, int endh, int endmin){
|
||||||
List<String> providers = getAllProvidersByService(serviceName);
|
serviceName = serviceName.trim().toLowerCase();
|
||||||
|
List<String[]> providers = getAll("SELECT " + TABLE_SERVICEPROVIDERS + "." + COLUMN_SERVICEPROVIDERNAME + ", "
|
||||||
|
+ TABLE_LOGIN + "." + COLUMN_FIRSTNAME + ", "
|
||||||
|
+ TABLE_LOGIN + "." + COLUMN_LASTNAME + ", "
|
||||||
|
+ TABLE_SERVICEPROVIDERS + "." + COLUMN_AVERAGERATING + ", "
|
||||||
|
+ " FROM " + TABLE_SERVICEPROVIDERS + " JOIN " + TABLE_LOGIN
|
||||||
|
+ " ON " + TABLE_SERVICEPROVIDERS + "." + COLUMN_SERVICEPROVIDERNAME + " = "
|
||||||
|
+ TABLE_LOGIN + "." + COLUMN_USERNAME
|
||||||
|
+ " AND " + COLUMN_SERVICEPROVIDERSERVICE + " = '" + serviceName + "'"
|
||||||
|
+ " AND " + TABLE_SERVICEPROVIDERS + "." + COLUMN_ACTIVE + " = 'active'"
|
||||||
|
+ " ORDER BY " + TABLE_SERVICEPROVIDERS + "." + COLUMN_AVERAGERATING + " DESC");
|
||||||
for (int i = 0; i < providers.size(); i++){
|
for (int i = 0; i < providers.size(); i++){
|
||||||
String username = providers.get(i);
|
if (!isProviderAvailable(providers.get(i)[0], year, month, day,
|
||||||
if (!isProviderAvailable(username, year, month, day, starth, startmin, endh, endmin)){
|
starth, startmin, endh, endmin)){
|
||||||
providers.remove(i);
|
providers.remove(i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return providers;
|
return providers;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<String> getProvidersByTimeAndRating(String serviceName, double rating, int year, int month, int day,
|
/**
|
||||||
|
* Returns list of [username, first name, last name, rating] of service providers
|
||||||
|
* available at the specified time and have a rating equal to or above the specified rating
|
||||||
|
*
|
||||||
|
* @param service
|
||||||
|
* @param rating minimum rating of filter
|
||||||
|
* @param year
|
||||||
|
* @param month
|
||||||
|
* @param day
|
||||||
|
* @param starth starting hour
|
||||||
|
* @param startmin starting minute
|
||||||
|
* @param endh ending hour
|
||||||
|
* @param endmin ending minute
|
||||||
|
* @return List of [username, first name, last name, rating] of service providers
|
||||||
|
*/
|
||||||
|
public List<String[]> getProvidersByTimeAndRating(Service service, double rating, int year, int month, int day,
|
||||||
|
int starth, int startmin, int endh, int endmin){
|
||||||
|
return getProvidersByTimeAndRating(service.getName(), rating, year, month, day,
|
||||||
|
starth, startmin, endh, endmin);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns list of [username, first name, last name, rating] of service providers
|
||||||
|
* available at the specified time and have a rating equal to or above the specified rating
|
||||||
|
*
|
||||||
|
* @param serviceName name of service
|
||||||
|
* @param rating minimum rating of filter
|
||||||
|
* @param year
|
||||||
|
* @param month
|
||||||
|
* @param day
|
||||||
|
* @param starth starting hour
|
||||||
|
* @param startmin starting minute
|
||||||
|
* @param endh ending hour
|
||||||
|
* @param endmin ending minute
|
||||||
|
* @return List of [username, first name, last name, rating] of service providers
|
||||||
|
*/
|
||||||
|
public List<String[]> getProvidersByTimeAndRating(String serviceName, double rating, int year, int month, int day,
|
||||||
int starth, int startmin, int endh, int endmin){
|
int starth, int startmin, int endh, int endmin){
|
||||||
List<String> providers = getProvidersByTime(serviceName, year, month, day, starth, startmin, endh, endmin);
|
serviceName = serviceName.trim().toLowerCase();
|
||||||
for (int i = 0; i < providers.size(); i++){
|
List<String[]> providers = getProvidersByTime(serviceName, year, month, day, starth, startmin, endh, endmin);
|
||||||
String provider = providers.get(i);
|
|
||||||
if (getRatings(provider, serviceName)<rating){
|
int i = providers.size()-1;
|
||||||
providers.remove(i);
|
boolean allLowRatingsRemoved = false;
|
||||||
|
while (i>-1 && !allLowRatingsRemoved){
|
||||||
|
if (getRatings(providers.get(i)[0], serviceName)>=rating){
|
||||||
|
allLowRatingsRemoved = true;
|
||||||
|
} else {
|
||||||
|
providers.remove(i--);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return providers;
|
return providers;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Prints all entries of table. One row is printed per line. Columns are
|
* Prints all entries of table. One row is printed per line. Columns are
|
||||||
* separated by spaces.
|
* separated by spaces.
|
||||||
|
@ -1293,6 +1382,17 @@ public class DBHelper extends SQLiteOpenHelper {
|
||||||
cursor.close();
|
cursor.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Deletes all data from database. It's used for testing when
|
||||||
|
* DB needs to be cleared. Please don't call this anywhere else.
|
||||||
|
*/
|
||||||
|
void deleteAll(){
|
||||||
|
writeDB.execSQL("DELETE FROM " + TABLE_LOGIN);
|
||||||
|
writeDB.execSQL("DELETE FROM " + TABLE_SERVICES);
|
||||||
|
writeDB.execSQL("DELETE FROM " + TABLE_SERVICEPROVIDERS);
|
||||||
|
writeDB.execSQL("DELETE FROM " + TABLE_AVAILABILITY);
|
||||||
|
writeDB.execSQL("DELETE FROM " + TABLE_BOOKINGS);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets all items in a table
|
* Gets all items in a table
|
||||||
|
@ -1319,15 +1419,187 @@ public class DBHelper extends SQLiteOpenHelper {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Deletes all data from database. It's used for testing when
|
* Adds a service provider's availabilities for a specific day to content values
|
||||||
* DB needs to be cleared. Please don't call this anywhere else.
|
* @param contentValues
|
||||||
|
* @param startColumn
|
||||||
|
* @param endColumn
|
||||||
|
* @param startAndEndTimes
|
||||||
*/
|
*/
|
||||||
void deleteAll(){
|
private void addAvailabilityToContentValues(ContentValues contentValues,
|
||||||
writeDB.execSQL("DELETE FROM " + TABLE_LOGIN);
|
String startColumn, String endColumn,
|
||||||
writeDB.execSQL("DELETE FROM " + TABLE_SERVICES);
|
int[] startAndEndTimes){
|
||||||
writeDB.execSQL("DELETE FROM " + TABLE_SERVICEPROVIDERS);
|
if (startAndEndTimes == null){
|
||||||
writeDB.execSQL("DELETE FROM " + TABLE_AVAILABILITY);
|
contentValues.put(startColumn, 0);
|
||||||
writeDB.execSQL("DELETE FROM " + TABLE_BOOKINGS);
|
contentValues.put(endColumn, 0);
|
||||||
|
} else {
|
||||||
|
int startTime = startAndEndTimes[0]*60+startAndEndTimes[1];
|
||||||
|
int endTime = startAndEndTimes[2]*60+startAndEndTimes[3];
|
||||||
|
if (endTime - startTime <=0 || startTime > 1439 || startTime < 0
|
||||||
|
|| endTime > 1439 || endTime <= 0) {
|
||||||
|
contentValues.put(startColumn, 0);
|
||||||
|
contentValues.put(endColumn, 0);
|
||||||
|
} else {
|
||||||
|
contentValues.put(startColumn, startTime);
|
||||||
|
contentValues.put(endColumn, endTime);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Helper method to get a service provider's availability by day of week
|
||||||
|
*
|
||||||
|
* @param serviceProvider username of service provider
|
||||||
|
* @param year
|
||||||
|
* @param month
|
||||||
|
* @param day
|
||||||
|
* @return Cursor containing the start and end of the service provider's availabilities
|
||||||
|
* on selected day of the week
|
||||||
|
*/
|
||||||
|
private Cursor getAvailabilityByDayOfWeek(String serviceProvider, int year, int month, int day){
|
||||||
|
GregorianCalendar start = new GregorianCalendar(year, month-1, day);
|
||||||
|
//Calendar.DAY_OF_WEEK starts with 1 for Sunday, and onwards
|
||||||
|
int dayOfWeek = start.get(Calendar.DAY_OF_WEEK);
|
||||||
|
Cursor cursor = null;
|
||||||
|
|
||||||
|
//Check availabilities on day of week
|
||||||
|
switch (dayOfWeek){
|
||||||
|
case 1: //Sunday
|
||||||
|
cursor = writeDB.query(TABLE_AVAILABILITY, new String[] {COLUMN_SUNSTART, COLUMN_SUNEND},
|
||||||
|
COLUMN_AVAILABILITYNAME + " = ?", new String[] {serviceProvider}, null,
|
||||||
|
null, null, null);
|
||||||
|
break;
|
||||||
|
case 2: //Monday
|
||||||
|
cursor = writeDB.query(TABLE_AVAILABILITY, new String[] {COLUMN_MONSTART, COLUMN_MONEND},
|
||||||
|
COLUMN_AVAILABILITYNAME + " = ?", new String[] {serviceProvider}, null,
|
||||||
|
null, null, null);
|
||||||
|
break;
|
||||||
|
case 3: //Tuesday
|
||||||
|
cursor = writeDB.query(TABLE_AVAILABILITY, new String[] {COLUMN_TUESTART, COLUMN_TUEEND},
|
||||||
|
COLUMN_AVAILABILITYNAME + " = ?", new String[] {serviceProvider}, null,
|
||||||
|
null, null, null);
|
||||||
|
break;
|
||||||
|
case 4: //Wednesday
|
||||||
|
cursor = writeDB.query(TABLE_AVAILABILITY, new String[] {COLUMN_WEDSTART, COLUMN_WEDEND},
|
||||||
|
COLUMN_AVAILABILITYNAME + " = ?", new String[] {serviceProvider}, null,
|
||||||
|
null, null, null);
|
||||||
|
break;
|
||||||
|
case 5: //Thursday
|
||||||
|
cursor = writeDB.query(TABLE_AVAILABILITY, new String[] {COLUMN_THUSTART, COLUMN_THUEND},
|
||||||
|
COLUMN_AVAILABILITYNAME + " = ?", new String[] {serviceProvider}, null,
|
||||||
|
null, null, null);
|
||||||
|
break;
|
||||||
|
case 6: //Friday
|
||||||
|
cursor = writeDB.query(TABLE_AVAILABILITY, new String[] {COLUMN_FRISTART, COLUMN_FRIEND},
|
||||||
|
COLUMN_AVAILABILITYNAME + " = ?", new String[] {serviceProvider}, null,
|
||||||
|
null, null, null);
|
||||||
|
break;
|
||||||
|
case 7: //Saturday
|
||||||
|
cursor = writeDB.query(TABLE_AVAILABILITY, new String[] {COLUMN_SATSTART, COLUMN_SATEND},
|
||||||
|
COLUMN_AVAILABILITYNAME + " = ?", new String[] {serviceProvider}, null,
|
||||||
|
null, null, null);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return cursor;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Helper method to change booking status
|
||||||
|
* @param booking
|
||||||
|
* @param status status to update
|
||||||
|
* @return true if modification was successful
|
||||||
|
*/
|
||||||
|
private boolean modifyBookingStatus(Booking booking, Status status){
|
||||||
|
if (booking == null) return false;
|
||||||
|
|
||||||
|
GregorianCalendar current = new GregorianCalendar();
|
||||||
|
current.setTimeInMillis(System.currentTimeMillis());
|
||||||
|
GregorianCalendar bookDate = new GregorianCalendar(booking.getYear(), booking.getMonth()-1,
|
||||||
|
booking.getDay(), booking.getStarth(), booking.getStartmin());
|
||||||
|
|
||||||
|
//check if time of booking has passed
|
||||||
|
if (current.compareTo(bookDate) > 0) return false;
|
||||||
|
|
||||||
|
ContentValues contentValues = new ContentValues();
|
||||||
|
contentValues.put(COLUMN_BOOKINGSTATUS, status.toString());
|
||||||
|
|
||||||
|
return writeDB.update(TABLE_BOOKINGS, contentValues,
|
||||||
|
COLUMN_BOOKINGSERVICEPROVIDER + " = ? AND "
|
||||||
|
+ COLUMN_BOOKINGHOMEOWNER + " = ? AND "
|
||||||
|
+ COLUMN_BOOKINGYEAR + " = ? AND "
|
||||||
|
+ COLUMN_BOOKINGMONTH + " = ? AND "
|
||||||
|
+ COLUMN_BOOKINGDATE + " = ? AND "
|
||||||
|
+ COLUMN_BOOKINGSTART + " = ? AND "
|
||||||
|
+ COLUMN_BOOKINGSTATUS + " != " + Status.CANCELLED.toString() + ")",
|
||||||
|
new String[] {booking.getServiceprovider().getUsername(),
|
||||||
|
booking.getHomeowner().getUsername(),
|
||||||
|
String.valueOf(booking.getYear()),
|
||||||
|
String.valueOf(booking.getMonth()),
|
||||||
|
String.valueOf(booking.getDay()),
|
||||||
|
String.valueOf(booking.getStarth()*60 + booking.getStartmin())}) > 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Helper method to determine whether service provider is available at specified date and time.
|
||||||
|
* Returns false if end time before start time, or service provider not available
|
||||||
|
*
|
||||||
|
* @param serviceProvider
|
||||||
|
* @param year
|
||||||
|
* @param month
|
||||||
|
* @param day
|
||||||
|
* @param starth
|
||||||
|
* @param startmin
|
||||||
|
* @param endh
|
||||||
|
* @param endmin
|
||||||
|
* @return true if service provider is available for specified time slot
|
||||||
|
*/
|
||||||
|
private boolean isProviderAvailable(String serviceProvider, int year, int month, int day,
|
||||||
|
int starth, int startmin, int endh, int endmin){
|
||||||
|
|
||||||
|
int bookingStart = starth*60 + startmin;
|
||||||
|
int bookingEnd = endh*60 + endmin;
|
||||||
|
int availabilityStart, availabilityEnd;
|
||||||
|
|
||||||
|
if (bookingEnd < bookingStart) return false;
|
||||||
|
|
||||||
|
Cursor cursor = getAvailabilityByDayOfWeek(serviceProvider, year, month, day);
|
||||||
|
|
||||||
|
cursor.moveToFirst();
|
||||||
|
availabilityStart = cursor.getInt(0);
|
||||||
|
availabilityEnd = cursor.getInt(1);
|
||||||
|
|
||||||
|
//service provider not available if availability end is 0, if availability starts after booking start,
|
||||||
|
// or if availability ends before booking end
|
||||||
|
if (availabilityEnd == 0 || availabilityStart > bookingStart || availabilityEnd < bookingEnd) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//now we know for sure that the service provider is available on said day of the week
|
||||||
|
//we check to see if any of the bookings overlap on this time slot
|
||||||
|
cursor = writeDB.query(TABLE_BOOKINGS, new String[] {COLUMN_BOOKINGSTART, COLUMN_BOOKINGEND},
|
||||||
|
COLUMN_BOOKINGSERVICEPROVIDER + " = ? AND "
|
||||||
|
+ COLUMN_BOOKINGYEAR + " = ? AND "
|
||||||
|
+ COLUMN_BOOKINGMONTH + " = ? AND "
|
||||||
|
+ COLUMN_BOOKINGDATE + " = ? AND "
|
||||||
|
+ COLUMN_BOOKINGSTATUS + " != ?",
|
||||||
|
new String[] {serviceProvider, String.valueOf(year),
|
||||||
|
String.valueOf(month), String.valueOf(day), Status.CANCELLED.toString()},
|
||||||
|
null, null, COLUMN_BOOKINGSTART, null);
|
||||||
|
if (cursor.moveToFirst()){
|
||||||
|
for (int i = 0; i<cursor.getCount(); i++){
|
||||||
|
availabilityStart = cursor.getInt(0);
|
||||||
|
availabilityEnd = cursor.getInt(1);
|
||||||
|
|
||||||
|
if ((availabilityStart < bookingStart && availabilityEnd > bookingStart)||
|
||||||
|
(availabilityStart < bookingEnd && availabilityEnd > bookingEnd) ||
|
||||||
|
(availabilityStart > bookingStart && availabilityEnd < bookingEnd)) return false;
|
||||||
|
|
||||||
|
cursor.moveToNext();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,6 +18,15 @@ import static org.junit.Assert.*;
|
||||||
@RunWith(RobolectricTestRunner.class)
|
@RunWith(RobolectricTestRunner.class)
|
||||||
@Config(packageName = "com.uottawa.olympus.olympusservices")
|
@Config(packageName = "com.uottawa.olympus.olympusservices")
|
||||||
public class DBIntegrationTest {
|
public class DBIntegrationTest {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Enum for setting up before a test
|
||||||
|
*/
|
||||||
|
private enum TestAfter{
|
||||||
|
USER, SERVICE, LINK, AVAILABILITY, BOOKING, RATING;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
private DBHelper dbHelper = new DBHelper(RuntimeEnvironment.application);
|
private DBHelper dbHelper = new DBHelper(RuntimeEnvironment.application);
|
||||||
|
|
||||||
//testing user login table
|
//testing user login table
|
||||||
|
@ -121,7 +130,7 @@ public class DBIntegrationTest {
|
||||||
|
|
||||||
dbHelper.deleteUser("jbO4aBF4dC");
|
dbHelper.deleteUser("jbO4aBF4dC");
|
||||||
|
|
||||||
List<String> providersList = dbHelper.getAllProvidersByService("hitman");
|
List<String[]> providersList = dbHelper.getAllProvidersByService("hitman");
|
||||||
assertEquals(0, providersList.size());
|
assertEquals(0, providersList.size());
|
||||||
providersList = dbHelper.getAllProvidersByService("hitman");
|
providersList = dbHelper.getAllProvidersByService("hitman");
|
||||||
assertEquals(0, providersList.size());
|
assertEquals(0, providersList.size());
|
||||||
|
@ -174,9 +183,10 @@ public class DBIntegrationTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testGetAllUsers(){
|
public void testGetAllUsers(){
|
||||||
dbHelper.addUser(new HomeOwner("jbO4aBF4dC", "soccer", "Miguel", "Garzon"));
|
setUp(TestAfter.USER);
|
||||||
|
|
||||||
List<String[]> allUsers = dbHelper.getAllUsers();
|
List<String[]> allUsers = dbHelper.getAllUsers();
|
||||||
|
assertEquals(allUsers.size(), 5);
|
||||||
|
|
||||||
for (String[] user : allUsers){
|
for (String[] user : allUsers){
|
||||||
/* for (String s : user){
|
/* for (String s : user){
|
||||||
|
@ -260,15 +270,12 @@ public class DBIntegrationTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testGetAllServices(){
|
public void testGetAllServices(){
|
||||||
dbHelper.addService(new Service("Exterminating flatworms", 20.00));
|
setUp(TestAfter.SERVICE);
|
||||||
|
|
||||||
List<String[]> allServices = dbHelper.getAllServices();
|
List<String[]> allServices = dbHelper.getAllServices();
|
||||||
|
assertTrue(allServices.size() == 3);
|
||||||
|
|
||||||
for (String[] service : allServices){
|
for (String[] service : allServices){
|
||||||
/* for (String s : user){
|
|
||||||
System.out.print(s + " ");
|
|
||||||
}
|
|
||||||
System.out.println();*/
|
|
||||||
Service dbService = dbHelper.findService(service[0]);
|
Service dbService = dbHelper.findService(service[0]);
|
||||||
assertEquals(dbService.getRate(), Double.parseDouble(service[1]), 0.001);
|
assertEquals(dbService.getRate(), Double.parseDouble(service[1]), 0.001);
|
||||||
}
|
}
|
||||||
|
@ -278,9 +285,8 @@ public class DBIntegrationTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testAddAndDeleteServiceProvidedByUser(){
|
public void testAddAndDeleteServiceProvidedByUser(){
|
||||||
dbHelper.addUser(new ServiceProvider("jbO4aBF4dC", null, null, null,
|
setUp(TestAfter.SERVICE);
|
||||||
"testaddress", "8888888888", "companydotcom", true));
|
|
||||||
dbHelper.addService(new Service("Hitman", 12358));
|
|
||||||
boolean added = dbHelper.addServiceProvidedByUser("jbO4aBF4dC", "hitman");
|
boolean added = dbHelper.addServiceProvidedByUser("jbO4aBF4dC", "hitman");
|
||||||
assertTrue(added);
|
assertTrue(added);
|
||||||
boolean deleted = dbHelper.deleteServiceProvidedByUser("jbO4aBF4dC", "Hitman");
|
boolean deleted = dbHelper.deleteServiceProvidedByUser("jbO4aBF4dC", "Hitman");
|
||||||
|
@ -291,19 +297,9 @@ public class DBIntegrationTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testGetAllServicesProvidedByUserAndDeleteService(){
|
public void testGetAllServicesProvidedByUserAndDeleteService(){
|
||||||
ServiceProvider serviceProvider = new ServiceProvider("jbO4aBF4dC", null, null, null,
|
setUp(TestAfter.LINK);
|
||||||
"testaddress", "8888888888", "companydotcom", true);
|
|
||||||
dbHelper.addUser(serviceProvider);
|
|
||||||
|
|
||||||
Service service1 = new Service("Hitman", 12358);
|
List<String[]> servicesProvidedByUser = dbHelper.getAllServicesProvidedByUser("jbO4aBF4dC");
|
||||||
Service service2 = new Service("Exterminating flatworms", 392.457);
|
|
||||||
dbHelper.addService(service1);
|
|
||||||
dbHelper.addService(service2);
|
|
||||||
|
|
||||||
dbHelper.addServiceProvidedByUser(serviceProvider, service1);
|
|
||||||
dbHelper.addServiceProvidedByUser(serviceProvider, service2);
|
|
||||||
|
|
||||||
List<String[]> servicesProvidedByUser = dbHelper.getAllServicesProvidedByUser(serviceProvider);
|
|
||||||
assertEquals(2, servicesProvidedByUser.size());
|
assertEquals(2, servicesProvidedByUser.size());
|
||||||
assertEquals("hitman", servicesProvidedByUser.get(0)[0]);
|
assertEquals("hitman", servicesProvidedByUser.get(0)[0]);
|
||||||
assertEquals(12358, Double.parseDouble(servicesProvidedByUser.get(0)[1]), 0.00001);
|
assertEquals(12358, Double.parseDouble(servicesProvidedByUser.get(0)[1]), 0.00001);
|
||||||
|
@ -323,20 +319,13 @@ public class DBIntegrationTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testGetAllProvidersByService(){
|
public void testGetAllProvidersByService(){
|
||||||
dbHelper.addService(new Service("Exterminating flatworms", 392.457));
|
setUp(TestAfter.LINK);
|
||||||
dbHelper.addUser(new ServiceProvider("jbO4aBF4dC", null, null, null,
|
|
||||||
"testaddress", "8888888888", "companydotcom", true));
|
|
||||||
dbHelper.addUser(new ServiceProvider("7MuF1c59XP", null, null, null,
|
|
||||||
"testaddress", "8888888888", "companydotcom", true));
|
|
||||||
|
|
||||||
dbHelper.addServiceProvidedByUser("jbO4aBF4dC", "exterminating flatworms");
|
List<String[]> providersByService = dbHelper.getAllProvidersByService("exterminating flatworms");
|
||||||
dbHelper.addServiceProvidedByUser("7MuF1c59XP", "exterminating flatworms");
|
|
||||||
|
|
||||||
List<String> providersByService = dbHelper.getAllProvidersByService("exterminating flatworms");
|
|
||||||
|
|
||||||
assertEquals(2, providersByService.size());
|
assertEquals(2, providersByService.size());
|
||||||
assertEquals("jbO4aBF4dC", providersByService.get(0));
|
assertEquals("jbO4aBF4dC", providersByService.get(0)[0]);
|
||||||
assertEquals("7MuF1c59XP", providersByService.get(1));
|
assertEquals("DW44FkUsX7", providersByService.get(1)[0]);
|
||||||
|
|
||||||
dbHelper.deleteAll();
|
dbHelper.deleteAll();
|
||||||
}
|
}
|
||||||
|
@ -344,19 +333,9 @@ public class DBIntegrationTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testDeleteServiceProvidedByUser(){
|
public void testDeleteServiceProvidedByUser(){
|
||||||
ServiceProvider serviceProvider = new ServiceProvider("jbO4aBF4dC", null, null, null,
|
setUp(TestAfter.LINK);
|
||||||
"testaddress", "8888888888", "companydotcom", true);
|
|
||||||
dbHelper.addUser(serviceProvider);
|
|
||||||
|
|
||||||
Service service1 = new Service("Hitman", 12358);
|
List<String[]> servicesProvidedByUser = dbHelper.getAllServicesProvidedByUser("jbO4aBF4dC");
|
||||||
Service service2 = new Service("Exterminating flatworms", 392.457);
|
|
||||||
dbHelper.addService(service1);
|
|
||||||
dbHelper.addService(service2);
|
|
||||||
|
|
||||||
dbHelper.addServiceProvidedByUser(serviceProvider, service1);
|
|
||||||
dbHelper.addServiceProvidedByUser(serviceProvider, service2);
|
|
||||||
|
|
||||||
List<String[]> servicesProvidedByUser = dbHelper.getAllServicesProvidedByUser(serviceProvider);
|
|
||||||
assertEquals(2, servicesProvidedByUser.size());
|
assertEquals(2, servicesProvidedByUser.size());
|
||||||
|
|
||||||
dbHelper.deleteServiceProvidedByUser("jbO4aBF4dC","hitman");
|
dbHelper.deleteServiceProvidedByUser("jbO4aBF4dC","hitman");
|
||||||
|
@ -435,32 +414,90 @@ public class DBIntegrationTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testAddBooking(){
|
public void testAddBooking(){
|
||||||
ServiceProvider serviceProvider = new ServiceProvider("jbO4aBF4dC", null, null, null,
|
setUp(TestAfter.BOOKING);
|
||||||
"testaddress", "8888888888", "companydotcom", true);
|
|
||||||
serviceProvider.setAvailabilities(0, 4, 18, 19, 30);
|
|
||||||
serviceProvider.setAvailabilities(1, 5, 20, 21, 11);
|
|
||||||
serviceProvider.setAvailabilities(3, 7, 12, 15, 14);
|
|
||||||
serviceProvider.setAvailabilities(4, 0, 0, 23, 29);
|
|
||||||
|
|
||||||
dbHelper.addUser(serviceProvider);
|
|
||||||
dbHelper.updateAvailability(serviceProvider);
|
|
||||||
|
|
||||||
dbHelper.addUser(new HomeOwner("7MuF1c59XP", null, null, null));
|
|
||||||
|
|
||||||
dbHelper.addService(new Service("Hitman", 12358));
|
|
||||||
dbHelper.addServiceProvidedByUser("jbO4aBF4dC", "Hitman");
|
|
||||||
|
|
||||||
|
//December 1, 2020 is a Tuesday. Provider is available from 5:20 to 21:11
|
||||||
boolean added = dbHelper.addBooking("jbO4aBF4dC", "7MuF1c59XP", "Hitman",
|
boolean added = dbHelper.addBooking("jbO4aBF4dC", "7MuF1c59XP", "Hitman",
|
||||||
2018, 11, 20, 8, 12, 10, 0);
|
2020, 12, 1, 8, 12, 10, 0);
|
||||||
assertTrue(added);
|
assertTrue(added);
|
||||||
|
//Provider is available from 5:20 to 21:11, but has a booking from 8:12 to 10:00
|
||||||
added = dbHelper.addBooking("jbO4aBF4dC", "7MuF1c59XP", "Hitman",
|
added = dbHelper.addBooking("jbO4aBF4dC", "7MuF1c59XP", "Hitman",
|
||||||
2018, 11, 20, 9, 12, 12, 0);
|
2020, 12, 1, 9, 12, 12, 0);
|
||||||
assertTrue(!added);
|
assertTrue(!added);
|
||||||
|
|
||||||
|
//December 3, 2020 is was a Thursday. Provider is available from 7:12 to 15:14
|
||||||
added = dbHelper.addBooking("jbO4aBF4dC", "7MuF1c59XP", "Hitman",
|
added = dbHelper.addBooking("jbO4aBF4dC", "7MuF1c59XP", "Hitman",
|
||||||
2018, 11, 22, 6, 12, 7, 30);
|
2020, 12, 3, 6, 12, 7, 30);
|
||||||
|
assertTrue(!added);
|
||||||
|
|
||||||
|
//November 20, 2018 is in the past. Should not be able to add booking
|
||||||
|
added = dbHelper.addBooking("jbO4aBF4dC", "7MuF1c59XP", "Hitman",
|
||||||
|
2018, 11, 20, 8, 12, 10, 0);
|
||||||
assertTrue(!added);
|
assertTrue(!added);
|
||||||
|
|
||||||
dbHelper.deleteAll();
|
dbHelper.deleteAll();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// @Test
|
||||||
|
// public void testConfirmBooking(){
|
||||||
|
// setUp(TestAfter.RATING);
|
||||||
|
//
|
||||||
|
// }
|
||||||
|
|
||||||
|
// Ever gotten tired of adding things at the start of a test just to delete it all again?
|
||||||
|
// I have.
|
||||||
|
// This is a work in progress
|
||||||
|
private void setUp(TestAfter testAfter){
|
||||||
|
dbHelper.deleteAll();
|
||||||
|
|
||||||
|
dbHelper.addUser(new Admin());
|
||||||
|
|
||||||
|
ServiceProvider serviceProvider1 = new ServiceProvider("jbO4aBF4dC", null, "Jack", "Black",
|
||||||
|
"testaddress", "8888888888", "companydotcom", true);
|
||||||
|
dbHelper.addUser(serviceProvider1);
|
||||||
|
|
||||||
|
ServiceProvider serviceProvider2 = new ServiceProvider("DW44FkUsX7", null, "Dwayne", "Johnson",
|
||||||
|
"testaddress", "1248921742", "companydotcom", false);
|
||||||
|
dbHelper.addUser(serviceProvider2);
|
||||||
|
|
||||||
|
HomeOwner homeOwner1 = new HomeOwner("7MuF1c59XP", null, "Mufasa", "Died");
|
||||||
|
dbHelper.addUser(homeOwner1);
|
||||||
|
|
||||||
|
HomeOwner homeOwner2 = new HomeOwner("wRV3phzpl5", null, "Wren", "Phillips");
|
||||||
|
dbHelper.addUser(homeOwner2);
|
||||||
|
|
||||||
|
Service service1 = new Service("Hitman", 12358);
|
||||||
|
dbHelper.addService(service1);
|
||||||
|
|
||||||
|
Service service2 = new Service("Exterminating flatworms", 392.457);
|
||||||
|
dbHelper.addService(service2);
|
||||||
|
|
||||||
|
Service service3 = new Service("Petting cats", 0);
|
||||||
|
dbHelper.addService(service3);
|
||||||
|
|
||||||
|
if (!(testAfter.equals(TestAfter.USER) || testAfter.equals(TestAfter.SERVICE))){
|
||||||
|
dbHelper.addServiceProvidedByUser(serviceProvider1, service1);
|
||||||
|
dbHelper.addServiceProvidedByUser(serviceProvider1, service2);
|
||||||
|
|
||||||
|
dbHelper.addServiceProvidedByUser(serviceProvider2, service3);
|
||||||
|
dbHelper.addServiceProvidedByUser(serviceProvider2, service2);
|
||||||
|
|
||||||
|
if (!testAfter.equals(TestAfter.LINK)){
|
||||||
|
serviceProvider1.setAvailabilities(0, 4, 18, 19, 30);
|
||||||
|
serviceProvider1.setAvailabilities(1, 5, 20, 21, 11);
|
||||||
|
serviceProvider1.setAvailabilities(3, 7, 12, 15, 14);
|
||||||
|
serviceProvider1.setAvailabilities(4, 0, 0, 23, 29);
|
||||||
|
|
||||||
|
dbHelper.updateAvailability(serviceProvider1);
|
||||||
|
|
||||||
|
if (!testAfter.equals(TestAfter.AVAILABILITY)){
|
||||||
|
Booking booking1 = new Booking(8, 12, 10, 0,1,
|
||||||
|
12, 2020, serviceProvider1, homeOwner1, service1);
|
||||||
|
dbHelper.addBooking(booking1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue