Fixed some bugs and added comment to rating
This commit is contained in:
		
							parent
							
								
									95d9913136
								
							
						
					
					
						commit
						0452609381
					
				
					 3 changed files with 283 additions and 55 deletions
				
			
		| 
						 | 
					@ -33,7 +33,8 @@ public class Booking {
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    private Status status;
 | 
					    private Status status;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    int rating; //out of 5
 | 
					    private int rating; //out of 5
 | 
				
			||||||
 | 
					    private String comment;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public Booking(int starth, int startmin, int endh, int endmin, int day, int month, int year,
 | 
					    public Booking(int starth, int startmin, int endh, int endmin, int day, int month, int year,
 | 
				
			||||||
                   ServiceProvider serviceprovider, HomeOwner homeowner, Service service){
 | 
					                   ServiceProvider serviceprovider, HomeOwner homeowner, Service service){
 | 
				
			||||||
| 
						 | 
					@ -143,5 +144,11 @@ public class Booking {
 | 
				
			||||||
        this.rating = rating;
 | 
					        this.rating = rating;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getComment() {
 | 
				
			||||||
 | 
					        return comment;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setComment(String comment) {
 | 
				
			||||||
 | 
					        this.comment = comment;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -27,7 +27,7 @@ import com.uottawa.olympus.olympusservices.Booking.Status;
 | 
				
			||||||
public class DBHelper extends SQLiteOpenHelper {
 | 
					public class DBHelper extends SQLiteOpenHelper {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    //version of db used for update method
 | 
					    //version of db used for update method
 | 
				
			||||||
    private static final int DB_VERSION = 5;
 | 
					    private static final int DB_VERSION = 6;
 | 
				
			||||||
    //name of db in app data
 | 
					    //name of db in app data
 | 
				
			||||||
    private static final String DB_NAME = "UsersDB.db";
 | 
					    private static final String DB_NAME = "UsersDB.db";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -100,6 +100,7 @@ public class DBHelper extends SQLiteOpenHelper {
 | 
				
			||||||
    private static final String COLUMN_BOOKINGEND = "endtime";
 | 
					    private static final String COLUMN_BOOKINGEND = "endtime";
 | 
				
			||||||
    private static final String COLUMN_BOOKINGSTATUS = "status";
 | 
					    private static final String COLUMN_BOOKINGSTATUS = "status";
 | 
				
			||||||
    private static final String COLUMN_RATING = "rating";
 | 
					    private static final String COLUMN_RATING = "rating";
 | 
				
			||||||
 | 
					    private static final String COLUMN_COMMENT = "comment";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Creates an instance of DBHelper to allow activities to access and
 | 
					     * Creates an instance of DBHelper to allow activities to access and
 | 
				
			||||||
| 
						 | 
					@ -191,7 +192,8 @@ public class DBHelper extends SQLiteOpenHelper {
 | 
				
			||||||
                + COLUMN_BOOKINGSTART + " REAL, "
 | 
					                + COLUMN_BOOKINGSTART + " REAL, "
 | 
				
			||||||
                + COLUMN_BOOKINGEND + " REAL, "
 | 
					                + COLUMN_BOOKINGEND + " REAL, "
 | 
				
			||||||
                + COLUMN_BOOKINGSTATUS + " TEXT, "
 | 
					                + COLUMN_BOOKINGSTATUS + " TEXT, "
 | 
				
			||||||
                + COLUMN_RATING + " REAL DEFAULT 0 "
 | 
					                + COLUMN_RATING + " REAL DEFAULT 0, "
 | 
				
			||||||
 | 
					                + COLUMN_COMMENT + " TEXT DEFAULT ''"
 | 
				
			||||||
                + ")";
 | 
					                + ")";
 | 
				
			||||||
        db.execSQL(CREATE_BOOKING_TABLE);
 | 
					        db.execSQL(CREATE_BOOKING_TABLE);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
| 
						 | 
					@ -261,6 +263,9 @@ public class DBHelper extends SQLiteOpenHelper {
 | 
				
			||||||
                        + COLUMN_BOOKINGSTATUS + " TEXT, "
 | 
					                        + COLUMN_BOOKINGSTATUS + " TEXT, "
 | 
				
			||||||
                        + COLUMN_RATING + " REAL DEFAULT 0 "
 | 
					                        + COLUMN_RATING + " REAL DEFAULT 0 "
 | 
				
			||||||
                        + ")");
 | 
					                        + ")");
 | 
				
			||||||
 | 
					            case 5:
 | 
				
			||||||
 | 
					                db.execSQL("ALTER TABLE " + TABLE_BOOKINGS + " ADD COLUMN " + COLUMN_COMMENT + " TEXT DEFAULT ''");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -331,6 +336,19 @@ public class DBHelper extends SQLiteOpenHelper {
 | 
				
			||||||
                values.put(COLUMN_DESCRIPTION, description);
 | 
					                values.put(COLUMN_DESCRIPTION, description);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            ContentValues contentValues = new ContentValues();
 | 
				
			||||||
 | 
					            int[] setToZero = new int[]{0,0,0,0};
 | 
				
			||||||
 | 
					            addAvailabilityToContentValues(contentValues, COLUMN_MONSTART, COLUMN_MONEND, setToZero);
 | 
				
			||||||
 | 
					            addAvailabilityToContentValues(contentValues, COLUMN_TUESTART, COLUMN_TUEEND, setToZero);
 | 
				
			||||||
 | 
					            addAvailabilityToContentValues(contentValues, COLUMN_WEDSTART, COLUMN_WEDEND, setToZero);
 | 
				
			||||||
 | 
					            addAvailabilityToContentValues(contentValues, COLUMN_THUSTART, COLUMN_THUEND, setToZero);
 | 
				
			||||||
 | 
					            addAvailabilityToContentValues(contentValues, COLUMN_FRISTART, COLUMN_FRIEND, setToZero);
 | 
				
			||||||
 | 
					            addAvailabilityToContentValues(contentValues, COLUMN_SATSTART, COLUMN_SATEND, setToZero);
 | 
				
			||||||
 | 
					            addAvailabilityToContentValues(contentValues, COLUMN_SUNSTART, COLUMN_SUNEND, setToZero);
 | 
				
			||||||
 | 
					            contentValues.put(COLUMN_AVAILABILITYNAME, serviceProvider.getUsername());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            writeDB.insert(TABLE_AVAILABILITY, null, contentValues);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        writeDB.insert(TABLE_LOGIN, null, values);
 | 
					        writeDB.insert(TABLE_LOGIN, null, values);
 | 
				
			||||||
| 
						 | 
					@ -1029,18 +1047,18 @@ public class DBHelper extends SQLiteOpenHelper {
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     *
 | 
					     *
 | 
				
			||||||
     * @param username
 | 
					     * @param username
 | 
				
			||||||
     * @return list of booking objects related to specified user
 | 
					     * @return list of booking objects related to specified user.
 | 
				
			||||||
 | 
					     *      Returns an empty list if no bookings found
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public List<Booking> findBookings(String username){
 | 
					    public List<Booking> findBookings(String username){
 | 
				
			||||||
        List<Booking> bookingList = new ArrayList<>();
 | 
					 | 
				
			||||||
        ServiceProvider serviceProvider = null;
 | 
					        ServiceProvider serviceProvider = null;
 | 
				
			||||||
        HomeOwner homeOwner = null;
 | 
					        HomeOwner homeOwner = null;
 | 
				
			||||||
        Cursor cursor = writeDB.rawQuery("SELECT * FROM " + TABLE_LOGIN + " WHERE "
 | 
					        Cursor cursor = writeDB.rawQuery("SELECT " + COLUMN_USERTYPE + " FROM " + TABLE_LOGIN + " WHERE "
 | 
				
			||||||
                        + COLUMN_BOOKINGSERVICEPROVIDER + " = ?",
 | 
					                        + COLUMN_USERNAME + " = ?",
 | 
				
			||||||
                        new String[] {username});
 | 
					                        new String[] {username});
 | 
				
			||||||
        if (!cursor.moveToFirst() || cursor.getString(5).equals("Admin")) return bookingList;
 | 
					        if (!cursor.moveToFirst() || cursor.getString(0).equals("Admin")) return new ArrayList<>();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (cursor.getString(5).equals("ServiceProvider")) {
 | 
					        if (cursor.getString(0).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 + " = ?",
 | 
					                    + COLUMN_BOOKINGSERVICEPROVIDER + " = ?",
 | 
				
			||||||
| 
						 | 
					@ -1052,36 +1070,40 @@ public class DBHelper extends SQLiteOpenHelper {
 | 
				
			||||||
                    new String[]{username});
 | 
					                    new String[]{username});
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (cursor.moveToFirst()){
 | 
					        return getBookings(cursor, serviceProvider, homeOwner);
 | 
				
			||||||
            for (int i=0; i<cursor.getCount(); i++){
 | 
					 | 
				
			||||||
                int startTime = cursor.getInt(6);
 | 
					 | 
				
			||||||
                int endTime = cursor.getInt(7);
 | 
					 | 
				
			||||||
                int starth = startTime / 60;
 | 
					 | 
				
			||||||
                int startmin = startTime % 60;
 | 
					 | 
				
			||||||
                int endh = endTime / 60;
 | 
					 | 
				
			||||||
                int endmin = endTime % 60;
 | 
					 | 
				
			||||||
                int day = cursor.getInt(5);
 | 
					 | 
				
			||||||
                int month = cursor.getInt(4);
 | 
					 | 
				
			||||||
                int year = cursor.getInt(3);
 | 
					 | 
				
			||||||
                String stat = cursor.getString(8);
 | 
					 | 
				
			||||||
                Status status = (stat.equals("Pending")? Status.PENDING :
 | 
					 | 
				
			||||||
                        stat.equals("Confirmed")? Status.CONFIRMED : Status.CANCELLED);
 | 
					 | 
				
			||||||
                ServiceProvider serviceprovider = (serviceProvider == null?
 | 
					 | 
				
			||||||
                        (ServiceProvider)findUserByUsername(cursor.getString(0)):serviceProvider);
 | 
					 | 
				
			||||||
                HomeOwner homeowner = (homeOwner == null?
 | 
					 | 
				
			||||||
                        (HomeOwner) findUserByUsername(cursor.getString(1)):homeOwner);
 | 
					 | 
				
			||||||
                Service service = findService(cursor.getString(3));
 | 
					 | 
				
			||||||
                Booking booking = new Booking(starth, startmin, endh, endmin, day, month, year,
 | 
					 | 
				
			||||||
                        serviceprovider, homeowner, service);
 | 
					 | 
				
			||||||
                booking.setStatus(status);
 | 
					 | 
				
			||||||
                bookingList.add(booking);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                cursor.moveToNext();
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        return bookingList;
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param username
 | 
				
			||||||
 | 
					     * @return list of booking objects related to specified user.
 | 
				
			||||||
 | 
					     *      Returns an empty list if no bookings found
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public List<Booking> findNonCancelledBookings(String username) {
 | 
				
			||||||
 | 
					        List<Booking> bookingList = new ArrayList<>();
 | 
				
			||||||
 | 
					        ServiceProvider serviceProvider = null;
 | 
				
			||||||
 | 
					        HomeOwner homeOwner = null;
 | 
				
			||||||
 | 
					        Cursor cursor = writeDB.rawQuery("SELECT " + COLUMN_USERTYPE + " FROM " + TABLE_LOGIN + " WHERE "
 | 
				
			||||||
 | 
					                        + COLUMN_USERNAME + " = ?",
 | 
				
			||||||
 | 
					                new String[]{username});
 | 
				
			||||||
 | 
					        if (!cursor.moveToFirst() || cursor.getString(0).equals("Admin")) return bookingList;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (cursor.getString(0).equals("ServiceProvider")) {
 | 
				
			||||||
 | 
					            serviceProvider = (ServiceProvider) findUserByUsername(username);
 | 
				
			||||||
 | 
					            cursor = writeDB.rawQuery("SELECT * FROM " + TABLE_BOOKINGS + " WHERE "
 | 
				
			||||||
 | 
					                            + COLUMN_BOOKINGSERVICEPROVIDER + " = ? AND "
 | 
				
			||||||
 | 
					                            + COLUMN_BOOKINGSTATUS + " != ?",
 | 
				
			||||||
 | 
					                            new String[]{username, Status.CANCELLED.toString()});
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					            homeOwner = (HomeOwner) findUserByUsername(username);
 | 
				
			||||||
 | 
					            cursor = writeDB.rawQuery("SELECT * FROM " + TABLE_BOOKINGS + " WHERE "
 | 
				
			||||||
 | 
					                            + COLUMN_BOOKINGHOMEOWNER + " = ? AND "
 | 
				
			||||||
 | 
					                            + COLUMN_BOOKINGSTATUS + " != ?",
 | 
				
			||||||
 | 
					                    new String[]{username, Status.CANCELLED.toString()});
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return getBookings(cursor, serviceProvider, homeOwner);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Sets status of specified booking to cancelled. Returns false if booking
 | 
					     * Sets status of specified booking to cancelled. Returns false if booking
 | 
				
			||||||
| 
						 | 
					@ -1105,6 +1127,17 @@ public class DBHelper extends SQLiteOpenHelper {
 | 
				
			||||||
        return modifyBookingStatus(booking, Status.CANCELLED);
 | 
					        return modifyBookingStatus(booking, Status.CANCELLED);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 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 Booking with rating and comment already included
 | 
				
			||||||
 | 
					     * @return true if adding the rating was successful
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public boolean addRating(Booking booking){
 | 
				
			||||||
 | 
					        return addRating(booking, booking.getRating(), booking.getComment());
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Add a rating for a specific booking, and updates the average rating for the service provider
 | 
					     * Add a rating for a specific booking, and updates the average rating for the service provider
 | 
				
			||||||
| 
						 | 
					@ -1113,9 +1146,24 @@ public class DBHelper extends SQLiteOpenHelper {
 | 
				
			||||||
     *
 | 
					     *
 | 
				
			||||||
     * @param booking
 | 
					     * @param booking
 | 
				
			||||||
     * @param rating
 | 
					     * @param rating
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
     * @return true if adding the rating was successful
 | 
					     * @return true if adding the rating was successful
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public boolean addRating(Booking booking, double rating){
 | 
					    public boolean addRating(Booking booking, double rating){
 | 
				
			||||||
 | 
					        return addRating(booking, rating, "");
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 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
 | 
				
			||||||
 | 
					     * @param comment
 | 
				
			||||||
 | 
					     * @return true if adding the rating was successful
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public boolean addRating(Booking booking, double rating, String comment){
 | 
				
			||||||
        if (booking == null) return false;
 | 
					        if (booking == null) return false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        GregorianCalendar current = new GregorianCalendar();
 | 
					        GregorianCalendar current = new GregorianCalendar();
 | 
				
			||||||
| 
						 | 
					@ -1128,6 +1176,7 @@ public class DBHelper extends SQLiteOpenHelper {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        ContentValues contentValues = new ContentValues();
 | 
					        ContentValues contentValues = new ContentValues();
 | 
				
			||||||
        contentValues.put(COLUMN_RATING, rating);
 | 
					        contentValues.put(COLUMN_RATING, rating);
 | 
				
			||||||
 | 
					        contentValues.put(COLUMN_COMMENT, comment);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        boolean updated =  writeDB.update(TABLE_BOOKINGS, contentValues,
 | 
					        boolean updated =  writeDB.update(TABLE_BOOKINGS, contentValues,
 | 
				
			||||||
| 
						 | 
					@ -1177,8 +1226,8 @@ public class DBHelper extends SQLiteOpenHelper {
 | 
				
			||||||
     * @param service
 | 
					     * @param service
 | 
				
			||||||
     * @return average rating of specified service provider and service combination
 | 
					     * @return average rating of specified service provider and service combination
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public double getRatings(ServiceProvider serviceProvider, Service service){
 | 
					    public double getAverageRating(ServiceProvider serviceProvider, Service service){
 | 
				
			||||||
        return getRatings(serviceProvider.getUsername(), service.getName());
 | 
					        return getAverageRating(serviceProvider.getUsername(), service.getName());
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
| 
						 | 
					@ -1188,7 +1237,7 @@ public class DBHelper extends SQLiteOpenHelper {
 | 
				
			||||||
     * @param serviceName name of service
 | 
					     * @param serviceName name of service
 | 
				
			||||||
     * @return average rating of specified service provider and service combination
 | 
					     * @return average rating of specified service provider and service combination
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public double getRatings(String serviceProviderName, String serviceName){
 | 
					    public double getAverageRating(String serviceProviderName, String serviceName){
 | 
				
			||||||
        serviceName = serviceName.trim().toLowerCase();
 | 
					        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 "
 | 
				
			||||||
| 
						 | 
					@ -1202,6 +1251,56 @@ public class DBHelper extends SQLiteOpenHelper {
 | 
				
			||||||
        return rating;
 | 
					        return rating;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Gets a list of Strings in form [Homeowner username, rating, comment] for a specific
 | 
				
			||||||
 | 
					     * service provider and service combination. Only includes bookings that have been rated.
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param serviceProvider
 | 
				
			||||||
 | 
					     * @param service
 | 
				
			||||||
 | 
					     * @return
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public List<String[]> getAllRatingsAndComments(ServiceProvider serviceProvider, Service service){
 | 
				
			||||||
 | 
					        return getAllRatingsAndComments(serviceProvider.getUsername(), service.getName());
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Gets a list of Strings in form [Homeowner username, rating, comment] for a specific
 | 
				
			||||||
 | 
					     * service provider and service combination. Only includes bookings that have been rated.
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param serviceProviderName
 | 
				
			||||||
 | 
					     * @param serviceName
 | 
				
			||||||
 | 
					     * @return
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public List<String[]> getAllRatingsAndComments(String serviceProviderName, String serviceName){
 | 
				
			||||||
 | 
					        return getAll("SELECT " + COLUMN_BOOKINGHOMEOWNER +", "
 | 
				
			||||||
 | 
					                    + COLUMN_RATING + ", " + COLUMN_COMMENT + " FROM " + TABLE_BOOKINGS
 | 
				
			||||||
 | 
					                    + " WHERE " + COLUMN_BOOKINGSERVICEPROVIDER + " = " + serviceProviderName
 | 
				
			||||||
 | 
					                    + " AND " + COLUMN_BOOKINGSERVICE + " = " + serviceName
 | 
				
			||||||
 | 
					                    + " AND " + COLUMN_RATING + " > 0");
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String[] getSpecificRatingAndComment(String serviceProviderName, String serviceName,
 | 
				
			||||||
 | 
					                                                int year, int month, int day, int starth, int startmin){
 | 
				
			||||||
 | 
					        Cursor cursor = writeDB.query(TABLE_BOOKINGS,
 | 
				
			||||||
 | 
					                new String[]{COLUMN_BOOKINGHOMEOWNER, COLUMN_RATING, COLUMN_COMMENT},
 | 
				
			||||||
 | 
					                COLUMN_BOOKINGSERVICEPROVIDER + " = ? AND "
 | 
				
			||||||
 | 
					                + COLUMN_BOOKINGSERVICE + " = ? AND "
 | 
				
			||||||
 | 
					                + COLUMN_BOOKINGYEAR + " = ? AND "
 | 
				
			||||||
 | 
					                + COLUMN_BOOKINGMONTH + " = ? AND "
 | 
				
			||||||
 | 
					                + COLUMN_BOOKINGDATE + " = ? AND "
 | 
				
			||||||
 | 
					                + COLUMN_BOOKINGSTART + " = ? AND "
 | 
				
			||||||
 | 
					                + COLUMN_RATING + " > 0",
 | 
				
			||||||
 | 
					                new String[]{serviceProviderName, serviceName, String.valueOf(year),
 | 
				
			||||||
 | 
					                        String.valueOf(month), String.valueOf(day), String.valueOf(starth*60+startmin)},
 | 
				
			||||||
 | 
					                null, null, null, null);
 | 
				
			||||||
 | 
					        if (cursor.moveToFirst()){
 | 
				
			||||||
 | 
					            return new String[]{cursor.getString(0),
 | 
				
			||||||
 | 
					                    cursor.getString(1),cursor.getString(2)};
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					            return null;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Returns the number of people who rated a service provider's service
 | 
					     * Returns the number of people who rated a service provider's service
 | 
				
			||||||
     *
 | 
					     *
 | 
				
			||||||
| 
						 | 
					@ -1308,14 +1407,15 @@ public class DBHelper extends SQLiteOpenHelper {
 | 
				
			||||||
        List<String[]> providers = getAll("SELECT " + TABLE_SERVICEPROVIDERS + "." + COLUMN_SERVICEPROVIDERNAME + ", "
 | 
					        List<String[]> providers = getAll("SELECT " + TABLE_SERVICEPROVIDERS + "." + COLUMN_SERVICEPROVIDERNAME + ", "
 | 
				
			||||||
                + TABLE_LOGIN + "." + COLUMN_FIRSTNAME + ", "
 | 
					                + TABLE_LOGIN + "." + COLUMN_FIRSTNAME + ", "
 | 
				
			||||||
                + TABLE_LOGIN + "." + COLUMN_LASTNAME + ", "
 | 
					                + TABLE_LOGIN + "." + COLUMN_LASTNAME + ", "
 | 
				
			||||||
                + TABLE_SERVICEPROVIDERS + "." + COLUMN_AVERAGERATING + " "
 | 
					                + TABLE_SERVICEPROVIDERS + "." + COLUMN_AVERAGERATING
 | 
				
			||||||
                + " FROM " + TABLE_SERVICEPROVIDERS + " JOIN " + TABLE_LOGIN
 | 
					                + " FROM " + TABLE_SERVICEPROVIDERS + " JOIN " + TABLE_LOGIN
 | 
				
			||||||
                + " ON " + TABLE_SERVICEPROVIDERS + "." + COLUMN_SERVICEPROVIDERNAME + " = "
 | 
					                + " ON " + TABLE_SERVICEPROVIDERS + "." + COLUMN_SERVICEPROVIDERNAME + " = "
 | 
				
			||||||
                + TABLE_LOGIN + "." + COLUMN_USERNAME
 | 
					                + TABLE_LOGIN + "." + COLUMN_USERNAME
 | 
				
			||||||
                + " AND " + COLUMN_SERVICEPROVIDERSERVICE + " = '" + serviceName + "'"
 | 
					                + " AND " + COLUMN_SERVICEPROVIDERSERVICE + " = '" + serviceName + "'"
 | 
				
			||||||
                + " AND " + TABLE_SERVICEPROVIDERS + "." + COLUMN_ACTIVE  + " = 'active'"
 | 
					                + " AND " + TABLE_SERVICEPROVIDERS + "." + COLUMN_ACTIVE  + " = 'active'"
 | 
				
			||||||
                + " ORDER BY " + TABLE_SERVICEPROVIDERS + "." + COLUMN_AVERAGERATING + " DESC");
 | 
					                + " ORDER BY " + TABLE_SERVICEPROVIDERS + "." + COLUMN_AVERAGERATING + " DESC");
 | 
				
			||||||
        for (int i = 0; i < providers.size(); i++){
 | 
					
 | 
				
			||||||
 | 
					        for (int i = providers.size()-1; i >= 0; i--){
 | 
				
			||||||
            if (!isProviderAvailable(providers.get(i)[0], year, month, day,
 | 
					            if (!isProviderAvailable(providers.get(i)[0], year, month, day,
 | 
				
			||||||
                    starth, startmin, endh, endmin)){
 | 
					                    starth, startmin, endh, endmin)){
 | 
				
			||||||
                providers.remove(i);
 | 
					                providers.remove(i);
 | 
				
			||||||
| 
						 | 
					@ -1347,7 +1447,7 @@ public class DBHelper extends SQLiteOpenHelper {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Returns list of [username, first name, last name, rating] of service providers
 | 
					     * 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
 | 
					     * available at the specified time and have a rating equal to or above the specified rating.
 | 
				
			||||||
     *
 | 
					     *
 | 
				
			||||||
     * @param serviceName name of service
 | 
					     * @param serviceName name of service
 | 
				
			||||||
     * @param rating minimum rating of filter
 | 
					     * @param rating minimum rating of filter
 | 
				
			||||||
| 
						 | 
					@ -1358,7 +1458,7 @@ public class DBHelper extends SQLiteOpenHelper {
 | 
				
			||||||
     * @param startmin starting minute
 | 
					     * @param startmin starting minute
 | 
				
			||||||
     * @param endh ending hour
 | 
					     * @param endh ending hour
 | 
				
			||||||
     * @param endmin ending minute
 | 
					     * @param endmin ending minute
 | 
				
			||||||
     * @return List of [username, first name, last name, rating] of service providers
 | 
					     * @return List of Strings of [username, first name, last name, rating] of service providers
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public List<String[]> getProvidersByTimeAndRating(String serviceName, double rating, int year, int month, int day,
 | 
					    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){
 | 
				
			||||||
| 
						 | 
					@ -1368,7 +1468,7 @@ public class DBHelper extends SQLiteOpenHelper {
 | 
				
			||||||
        int i = providers.size()-1;
 | 
					        int i = providers.size()-1;
 | 
				
			||||||
        boolean allLowRatingsRemoved = false;
 | 
					        boolean allLowRatingsRemoved = false;
 | 
				
			||||||
        while (i>-1 && !allLowRatingsRemoved){
 | 
					        while (i>-1 && !allLowRatingsRemoved){
 | 
				
			||||||
            if (getRatings(providers.get(i)[0], serviceName)>=rating){
 | 
					            if (getAverageRating(providers.get(i)[0], serviceName)>=rating){
 | 
				
			||||||
                allLowRatingsRemoved = true;
 | 
					                allLowRatingsRemoved = true;
 | 
				
			||||||
            } else {
 | 
					            } else {
 | 
				
			||||||
                providers.remove(i--);
 | 
					                providers.remove(i--);
 | 
				
			||||||
| 
						 | 
					@ -1547,13 +1647,14 @@ public class DBHelper extends SQLiteOpenHelper {
 | 
				
			||||||
                        + COLUMN_BOOKINGMONTH + " = ? AND "
 | 
					                        + COLUMN_BOOKINGMONTH + " = ? AND "
 | 
				
			||||||
                        + COLUMN_BOOKINGDATE + " = ? AND "
 | 
					                        + COLUMN_BOOKINGDATE + " = ? AND "
 | 
				
			||||||
                        + COLUMN_BOOKINGSTART + " = ? AND "
 | 
					                        + COLUMN_BOOKINGSTART + " = ? AND "
 | 
				
			||||||
                        + COLUMN_BOOKINGSTATUS + " != " + Status.CANCELLED.toString() + ")",
 | 
					                        + COLUMN_BOOKINGSTATUS + " != ?",
 | 
				
			||||||
                new String[] {booking.getServiceprovider().getUsername(),
 | 
					                new String[] {booking.getServiceprovider().getUsername(),
 | 
				
			||||||
                        booking.getHomeowner().getUsername(),
 | 
					                        booking.getHomeowner().getUsername(),
 | 
				
			||||||
                        String.valueOf(booking.getYear()),
 | 
					                        String.valueOf(booking.getYear()),
 | 
				
			||||||
                        String.valueOf(booking.getMonth()),
 | 
					                        String.valueOf(booking.getMonth()),
 | 
				
			||||||
                        String.valueOf(booking.getDay()),
 | 
					                        String.valueOf(booking.getDay()),
 | 
				
			||||||
                        String.valueOf(booking.getStarth()*60 + booking.getStartmin())}) > 0;
 | 
					                        String.valueOf(booking.getStarth()*60 + booking.getStartmin()),
 | 
				
			||||||
 | 
					                        Status.CANCELLED.toString()}) > 0;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
| 
						 | 
					@ -1570,7 +1671,7 @@ public class DBHelper extends SQLiteOpenHelper {
 | 
				
			||||||
     * @param endmin
 | 
					     * @param endmin
 | 
				
			||||||
     * @return true if service provider is available for specified time slot
 | 
					     * @return true if service provider is available for specified time slot
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    private boolean isProviderAvailable(String serviceProvider, int year, int month, int day,
 | 
					     private boolean isProviderAvailable(String serviceProvider, int year, int month, int day,
 | 
				
			||||||
                                        int starth, int startmin, int endh, int endmin){
 | 
					                                        int starth, int startmin, int endh, int endmin){
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        int bookingStart = starth*60 + startmin;
 | 
					        int bookingStart = starth*60 + startmin;
 | 
				
			||||||
| 
						 | 
					@ -1585,13 +1686,12 @@ public class DBHelper extends SQLiteOpenHelper {
 | 
				
			||||||
        availabilityStart = cursor.getInt(0);
 | 
					        availabilityStart = cursor.getInt(0);
 | 
				
			||||||
        availabilityEnd = cursor.getInt(1);
 | 
					        availabilityEnd = cursor.getInt(1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        //service provider not available if availability end is 0, if availability starts after booking start,
 | 
					         //service provider not available if availability end is 0, if availability starts after booking start,
 | 
				
			||||||
        // or if availability ends before booking end
 | 
					        // or if availability ends before booking end
 | 
				
			||||||
        if (availabilityEnd == 0 || availabilityStart > bookingStart || availabilityEnd < bookingEnd) {
 | 
					        if (availabilityEnd == 0 || availabilityStart > bookingStart || availabilityEnd < bookingEnd) {
 | 
				
			||||||
            return false;
 | 
					            return false;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
        //now we know for sure that the service provider is available on said day of the week
 | 
					        //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
 | 
					        //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},
 | 
					        cursor = writeDB.query(TABLE_BOOKINGS, new String[] {COLUMN_BOOKINGSTART, COLUMN_BOOKINGEND},
 | 
				
			||||||
| 
						 | 
					@ -1618,5 +1718,38 @@ public class DBHelper extends SQLiteOpenHelper {
 | 
				
			||||||
        return true;
 | 
					        return true;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private List<Booking> getBookings(Cursor cursor, ServiceProvider serviceProvider, HomeOwner homeOwner){
 | 
				
			||||||
 | 
					         List<Booking> bookingList = new ArrayList<>();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					         if (cursor.moveToFirst()) {
 | 
				
			||||||
 | 
					             for (int i = 0; i < cursor.getCount(); i++) {
 | 
				
			||||||
 | 
					                int startTime = cursor.getInt(6);
 | 
				
			||||||
 | 
					                int endTime = cursor.getInt(7);
 | 
				
			||||||
 | 
					                int starth = startTime / 60;
 | 
				
			||||||
 | 
					                int startmin = startTime % 60;
 | 
				
			||||||
 | 
					                int endh = endTime / 60;
 | 
				
			||||||
 | 
					                int endmin = endTime % 60;
 | 
				
			||||||
 | 
					                int day = cursor.getInt(5);
 | 
				
			||||||
 | 
					                int month = cursor.getInt(4);
 | 
				
			||||||
 | 
					                int year = cursor.getInt(3);
 | 
				
			||||||
 | 
					                String stat = cursor.getString(8);
 | 
				
			||||||
 | 
					                Status status = (stat.equals("Pending") ? Status.PENDING :
 | 
				
			||||||
 | 
					                        stat.equals("Confirmed") ? Status.CONFIRMED : Status.CANCELLED);
 | 
				
			||||||
 | 
					                ServiceProvider serviceprovider = (serviceProvider == null ?
 | 
				
			||||||
 | 
					                        (ServiceProvider) findUserByUsername(cursor.getString(0)) : serviceProvider);
 | 
				
			||||||
 | 
					                HomeOwner homeowner = (homeOwner == null ?
 | 
				
			||||||
 | 
					                        (HomeOwner) findUserByUsername(cursor.getString(1)) : homeOwner);
 | 
				
			||||||
 | 
					                Service service = findService(cursor.getString(3));
 | 
				
			||||||
 | 
					                Booking booking = new Booking(starth, startmin, endh, endmin, day, month, year,
 | 
				
			||||||
 | 
					                        serviceprovider, homeowner, service);
 | 
				
			||||||
 | 
					                booking.setStatus(status);
 | 
				
			||||||
 | 
					                bookingList.add(booking);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                cursor.moveToNext();
 | 
				
			||||||
 | 
					             }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        return bookingList;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -12,6 +12,7 @@ import org.robolectric.RuntimeEnvironment;
 | 
				
			||||||
import org.robolectric.annotation.Config;
 | 
					import org.robolectric.annotation.Config;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.util.List;
 | 
					import java.util.List;
 | 
				
			||||||
 | 
					import com.uottawa.olympus.olympusservices.Booking.Status;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import static org.junit.Assert.*;
 | 
					import static org.junit.Assert.*;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -412,9 +413,35 @@ public class DBIntegrationTest {
 | 
				
			||||||
        dbHelper.deleteAll();
 | 
					        dbHelper.deleteAll();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Test
 | 
				
			||||||
 | 
					    public void testGetByTime(){
 | 
				
			||||||
 | 
					        setUp(TestAfter.AVAILABILITY);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        //December 3 2020 is a Thursday
 | 
				
			||||||
 | 
					        List<String[]> providers = dbHelper.getProvidersByTime("Exterminating flatworms", 2020,
 | 
				
			||||||
 | 
					                12, 3, 6, 12, 10, 0);
 | 
				
			||||||
 | 
					        assertEquals(0, providers.size());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        providers = dbHelper.getProvidersByTime("Exterminating flatworms", 2020,
 | 
				
			||||||
 | 
					                12, 3, 7, 12, 10, 0);
 | 
				
			||||||
 | 
					        assertEquals(1, providers.size());
 | 
				
			||||||
 | 
					        String[] firstProvider = providers.get(0);
 | 
				
			||||||
 | 
					        assertEquals("jbO4aBF4dC", firstProvider[0]);
 | 
				
			||||||
 | 
					        assertEquals("Jack", firstProvider[1]);
 | 
				
			||||||
 | 
					        assertEquals("Black", firstProvider[2]);
 | 
				
			||||||
 | 
					        assertEquals(0, Double.parseDouble(firstProvider[3]), 0.0001);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        //December 4 2020 is a Friday
 | 
				
			||||||
 | 
					        providers = dbHelper.getProvidersByTime("Exterminating flatworms", 2020,
 | 
				
			||||||
 | 
					                12, 4, 10, 0, 13, 0);
 | 
				
			||||||
 | 
					        assertEquals(2, providers.size());
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Test
 | 
					    @Test
 | 
				
			||||||
    public void testAddBooking(){
 | 
					    public void testAddBooking(){
 | 
				
			||||||
        setUp(TestAfter.BOOKING);
 | 
					        setUp(TestAfter.AVAILABILITY);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        //December 1, 2020 is a Tuesday. Provider is available from 5:20 to 21:11
 | 
					        //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",
 | 
				
			||||||
| 
						 | 
					@ -425,7 +452,7 @@ public class DBIntegrationTest {
 | 
				
			||||||
                2020, 12, 1, 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
 | 
					        //December 3, 2020 is a Thursday. Provider is available from 7:12 to 15:14
 | 
				
			||||||
        added = dbHelper.addBooking("jbO4aBF4dC", "7MuF1c59XP", "Hitman",
 | 
					        added = dbHelper.addBooking("jbO4aBF4dC", "7MuF1c59XP", "Hitman",
 | 
				
			||||||
                2020, 12, 3, 6, 12, 7, 30);
 | 
					                2020, 12, 3, 6, 12, 7, 30);
 | 
				
			||||||
        assertTrue(!added);
 | 
					        assertTrue(!added);
 | 
				
			||||||
| 
						 | 
					@ -438,9 +465,65 @@ public class DBIntegrationTest {
 | 
				
			||||||
        dbHelper.deleteAll();
 | 
					        dbHelper.deleteAll();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Test
 | 
				
			||||||
 | 
					    public void testViewListOfBookings(){
 | 
				
			||||||
 | 
					        setUp(TestAfter.AVAILABILITY);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        List<Booking> bookings = dbHelper.findBookings("jbO4aBF4dC");
 | 
				
			||||||
 | 
					        assertEquals(0, bookings.size());
 | 
				
			||||||
 | 
					        bookings = dbHelper.findBookings("7MuF1c59XP");
 | 
				
			||||||
 | 
					        assertEquals(0, bookings.size());
 | 
				
			||||||
 | 
					        bookings = dbHelper.findBookings("DW44FkUsX7");
 | 
				
			||||||
 | 
					        assertEquals(0, bookings.size());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        dbHelper.addBooking("jbO4aBF4dC", "7MuF1c59XP", "Hitman",
 | 
				
			||||||
 | 
					                2020, 12, 1, 8, 12, 10, 0);
 | 
				
			||||||
 | 
					        bookings = dbHelper.findBookings("jbO4aBF4dC");
 | 
				
			||||||
 | 
					        assertEquals(1, bookings.size());
 | 
				
			||||||
 | 
					        bookings = dbHelper.findBookings("7MuF1c59XP");
 | 
				
			||||||
 | 
					        assertEquals(1, bookings.size());
 | 
				
			||||||
 | 
					        bookings = dbHelper.findBookings("DW44FkUsX7");
 | 
				
			||||||
 | 
					        assertEquals(0, bookings.size());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        dbHelper.addBooking("DW44FkUsX7", "7MuF1c59XP", "petting cats",
 | 
				
			||||||
 | 
					                2020, 12, 4, 10, 0, 10, 30);
 | 
				
			||||||
 | 
					        bookings = dbHelper.findBookings("jbO4aBF4dC");
 | 
				
			||||||
 | 
					        assertEquals(1, bookings.size());
 | 
				
			||||||
 | 
					        bookings = dbHelper.findBookings("7MuF1c59XP");
 | 
				
			||||||
 | 
					        assertEquals(2, bookings.size());
 | 
				
			||||||
 | 
					        bookings = dbHelper.findBookings("DW44FkUsX7");
 | 
				
			||||||
 | 
					        assertEquals(1, bookings.size());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        dbHelper.deleteAll();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Test
 | 
				
			||||||
 | 
					    public void testConfirmAndCancelBooking(){
 | 
				
			||||||
 | 
					        setUp(TestAfter.AVAILABILITY);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Booking booking = new Booking(8, 12, 10, 0,1,
 | 
				
			||||||
 | 
					                12, 2020, (ServiceProvider)dbHelper.findUserByUsername("jbO4aBF4dC"),
 | 
				
			||||||
 | 
					                (HomeOwner)dbHelper.findUserByUsername("7MuF1c59XP"), dbHelper.findService("Hitman"));
 | 
				
			||||||
 | 
					        dbHelper.addBooking(booking);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        assertTrue(dbHelper.confirmBooking(booking));
 | 
				
			||||||
 | 
					        List<Booking> bookings = dbHelper.findBookings("jbO4aBF4dC");
 | 
				
			||||||
 | 
					        Booking dbBooking = bookings.get(0);
 | 
				
			||||||
 | 
					        assertEquals(Status.CONFIRMED, dbBooking.getStatus());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        assertTrue(dbHelper.cancelBooking(booking));
 | 
				
			||||||
 | 
					        bookings = dbHelper.findBookings("jbO4aBF4dC");
 | 
				
			||||||
 | 
					        dbBooking = bookings.get(0);
 | 
				
			||||||
 | 
					        assertEquals(Status.CANCELLED, dbBooking.getStatus());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        bookings = dbHelper.findNonCancelledBookings("jbO4aBF4dC");
 | 
				
			||||||
 | 
					        assertEquals(0, bookings.size());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        dbHelper.deleteAll();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//    @Test
 | 
					//    @Test
 | 
				
			||||||
//    public void testConfirmBooking(){
 | 
					//    public void testRating(){
 | 
				
			||||||
//        setUp(TestAfter.RATING);
 | 
					 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
//    }
 | 
					//    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -483,6 +566,7 @@ public class DBIntegrationTest {
 | 
				
			||||||
            dbHelper.addServiceProvidedByUser(serviceProvider2, service2);
 | 
					            dbHelper.addServiceProvidedByUser(serviceProvider2, service2);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if (!testAfter.equals(TestAfter.LINK)){
 | 
					            if (!testAfter.equals(TestAfter.LINK)){
 | 
				
			||||||
 | 
					                //serviceProvider1 is available on Monday, Tuesday, Thursday, and Friday
 | 
				
			||||||
                serviceProvider1.setAvailabilities(0, 4, 18, 19, 30);
 | 
					                serviceProvider1.setAvailabilities(0, 4, 18, 19, 30);
 | 
				
			||||||
                serviceProvider1.setAvailabilities(1, 5, 20, 21, 11);
 | 
					                serviceProvider1.setAvailabilities(1, 5, 20, 21, 11);
 | 
				
			||||||
                serviceProvider1.setAvailabilities(3, 7, 12, 15, 14);
 | 
					                serviceProvider1.setAvailabilities(3, 7, 12, 15, 14);
 | 
				
			||||||
| 
						 | 
					@ -490,6 +574,11 @@ public class DBIntegrationTest {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                dbHelper.updateAvailability(serviceProvider1);
 | 
					                dbHelper.updateAvailability(serviceProvider1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                //serviceProvider2 is only available on Friday
 | 
				
			||||||
 | 
					                serviceProvider2.setAvailabilities(4, 10, 0, 23, 29);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                dbHelper.updateAvailability(serviceProvider2);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                if (!testAfter.equals(TestAfter.AVAILABILITY)){
 | 
					                if (!testAfter.equals(TestAfter.AVAILABILITY)){
 | 
				
			||||||
                    Booking booking1 = new Booking(8, 12, 10, 0,1,
 | 
					                    Booking booking1 = new Booking(8, 12, 10, 0,1,
 | 
				
			||||||
                            12, 2020, serviceProvider1, homeOwner1, service1);
 | 
					                            12, 2020, serviceProvider1, homeOwner1, service1);
 | 
				
			||||||
| 
						 | 
					@ -498,6 +587,5 @@ public class DBIntegrationTest {
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue