Requirements
Overview of types:
Seller
Buyer
Location / Map
Garage Sale
Garage Sale Rank
Product
Product Type
Executable:
UWOGarage
Must accept an '-admin' option indicating admin mode.
When the program is opened:
Ability to quit anytime/where
Start screen
Allows user to log into seller/buyer mode
Admin Mode:
Create Users
Unique user-id chosen by admin /[0-9a-z]{4}/i, case insensitive
Password /[a-zA-Z]{3}/, case sensitive, default: 'aaa'
First Name /[a-zA-Z]{1, 20}/i
Last Name /[a-zA-Z-]{1, 20}/i
Phone Number /[0-9]{10}/
Default start latitude /-?([0-9]{1,3})\.([0-9]{3,6})/
Default start longitude /-?([0-9]{1,3})\.([0-9]{3,6})/
Default zoom level, 1 <= zoom-level <= 23, default highest = 18
Edit users
Ability to reset password to default
Can Change
first name
last name
phone number
default latitude
default longitude
default zoom level
Can't change:
user id
List Users
Sorted by:
user id
first name
last name
Delete users
Remove all associated posted garage sales
Remove all garage sale rankings
Add Product Category
Unique Category Name /[a-zA-Z0-9 ]{1, 50}/
Delete Category
Seller Mode:
First log in / When the password has been reset to default:
Supply default 'aaa' password
Supply a new password /[a-zA-Z]{3}/
Update password
After first log in:
Three log in attempts, upon failure the program will stop
Add/Edit Garage Sale
Latitude /-?([0-9]{1,3})\.([0-9]{3,6})/
Longitude /-?([0-9]{1,3})\.([0-9]{3,6})/
Address corresponding to latitude/longitude:
Street /.{1, 50}/
City or Closest Town /.{1, 20}/
Province
Date of the sale
Time of the sale
Categories of products offered (cardinality: zero or more)
Note (optional input), /.{0, 200}/
Bulk Add/Load Garage Sale
Option to
Remove all existing garage sales and start anew with the bulk load file
Add bulk load sales to existing sales
File Format (assume one large regexp, order is important):
/area: -?([0-9]{1,3})\.([0-9]{3,6}) -?([0-9]{1,3})\.([0-9]{3,6})/
/stre: .{1, 50}/ (truncate if too long)
/city: .{1, 20}/ (truncate if too long)
/prov: (AB|BC|MB|NB|NL|NS|ON|PE|QC|SK)/
/date: ((0?[1-9])|[12][0-9]|3[01])\/((0?[1-9])|10|11|12)\/([12][0-9]{3})/ (day / month / year)
/time: ((0?[1-9])|1[0-9]|2[0-4]):((0[1-9])|[1-5][1-9])
Formatting error messages (include line number):
If lat/long are incorrect / out-of-bounds
If the province is incorrectly formatted
If the date is incorrectly formatted, in the past
If time is incorrectly formatted
If there are any blank lines
Notes
Order is important
On finding an incorrectly formatted file:
Print error message
Line, file
Allow bulk undo (optional add-in feature, makes sense)
Delete Garage Sale
Total Rank
The average of all rankings of a given seller's garage sales
Buyer Mode:
First log in / When the password has been reset to default:
Supply default 'aaa' password
Supply a new password /[a-zA-Z]{3}/
Update password
After first log in:
Three log in attempts, upon failure the program will stop
Rank Garage Sale
Ranking bad(1) <= rank <= excellent(5)
Max one ranking per sale
Ranks can be changed/updated
View Garage Sale
Search (allows composition)
Criteria
Find sales within a given radius, in kilometers, of a given lat/long
User id
Date, sales on that date
Date Range, sales within the range
Category, one or more
Ranking
Seller ranking (overall average of sales)
<=
=
>=
Sale ranking
<=
=
>=
Results
Map showing way-points of all sales
Uses default latitude and longitude for the given user
Clicking a way-point shows sale info
Sales info includes: seller first/last name, phone number
Info can be printed
Export to HTML and open up IE, if not, the default browser
Themes
Three available themes