This repository has been archived by the owner on Mar 28, 2021. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathplanning.txt
210 lines (148 loc) · 5.71 KB
/
planning.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
EquipmentObjects:
name + serial
serial not visible to normal users
Checkout
procedures
text for now, maybe checkboxes later
type in netid
Emails
from admin_email
options
send me all emails
send me all overdue emails
different from address?
email notification to next reserver if someone hasn't returned the equipment
EquipmentObject
tracking who had what when
EquipmentModels:
users can't destroy documentation and images :P
AppConfig:
- default (admin) email address to send notifications
- custom email bodies for overdue/due notifications
- maybe just institution name inserted into template?
- for now, checkouts will be BY THE DAY
- as long as I code well, we can go back and add more granularity later
total # active reservations?
(# of) overlapping reservations
allow anyone with a netid? allow only certain netids?
NO PARTIAL CHECK-IN!
do weekends count? saturdays and/or sundays? (app-wide)
hourly fines? / start and end hours
Emails!
Set from address and AdminCC
restrictions
- # of equipment
- length of time
Users:
- can we assume CAS?
- if so, use RubyCAS + User model with additional attributes
- if not, use Authlogic
- affiliation?
- three fields (affil + college + class year)
- however, should be presented to end users as one "compound" field
- nice dropdowns, etc.
- User has many Equipment Objects through (checked out) Reservations
- let us know what equipment this user currently has
Reservations:
- has_many (habtm?) Equipment Objects
- belongs_to reserver (User)
- belongs_to checkout_handler (User)
- belongs_to checkin_handler (User)
- start_date (date)
- due_date (date)
- checked_out (datetime)
- checked_in (datetime)
- must have at least one object
- /can/ start and end on the same day (same day rental)
- requires renter to 'sign' before it is finalized
- not checked out until user has signed
Categories
- name
- max_per_user (optional?)
- max_checkout_length (optional?)
- min_checkout_length? orbis
- default "Accessory" category
Equipment Model
- belongs_to Category (optionally)
- name
- make? model? (combine these?)
- description
-short description (shown in list view) + long description
- checkout procedures? checkin procedures?
- late fee
- replacement value
- max_per_user (defaults to category max)
- cannot be greater than category max
- max_checkout_length? (defaults to category max)
- cannot be greater than category max
- MAYBE NOT on model level
Equipment Objects (instances of Equipment Models)
- belongs_to Equipment Model
- (habtm Documents)
- (habtm Photos)
- name
- serial no/identifier (optional)
- current_owner (who currently has this item? doubles as 'checked out' bool)
- through (checked out) Reservation
(Documents
- habtm Equipment Models
- use Paperclip)
(Photos
- subset of Documents?)
Issue #1: how to handle a reservation for Joe User
There are two ways to make a reservation: based on time or based on equipment.
How do we handle these two cases from a UI perspective?
Solution:
Most users want to rent 1 main thing (or 1 main thing + accessories)
So: allow them to browse the collection and select their first item
(Availability tables show availability for the next week)
[Alternately, if the user wants to make a reservation for a specific time frame,
and is not specific about equipment, provide a box in the sidebar that says:
"Want to rent equipment for a specific date? Narrow down your search:"]
[Maybe include a category selection here? QuickPick?]
When first item is added to cart, ask what time period they would like to rent it for
THIS IS THE LENGTH OF THE RESERVATION
Next, ask whether they would like to proceed directly to finalizing the reservation
or whether they would like to add more equipment/accessories first
(Update all availability tables to show data for the reservation period)
After each additional item, prompt whether to continue or to go to finalization
Issue #2: changing reservation details during finalization
If the user wants to change the dates of the reservation
Allow them to change the dates, then show them which items conflict with that timeframe
(For conflicts, suggest similar items/items in the same category?)
If the user wants to change items to reserve
Removing items is fine
Adding items => dump them back to the catalog search screen
The end user:
may or may not be logged in to begin with
wants to make a reservation
browses catalog
- views information on individual items
- specs
- availability
- adds/removes items in cart (session variables)
- if possible, update cart to show
- if not possible, give useful feedback
- e.g. not available, exceed max size of reservation, etc.
goes to finalize ("make" reservation)
- prompt to log in if not yet logged in
-
There are only three different roles => We don't need a role system.
Joe User needs to:
- view equipment
- model information, availability, etc.
- documentation
- reserve equipment
- view past/current/upcoming reservations
- receive email reminders
- upcoming reservations, due dates, overdue notices
Checkout Person needs to:
- check in/check out equipment
- pull up a reservation for a given user
- search by login, then list reservations
Admin needs to
- view all reservations
- view all checkouts
- what equipment is currently out? who has what?
- manage equipment
- Categories have many Equipment Models have many Equipment Objects