The goal of this project is to create a basic application, written in PHP with a MySQL database backend, to track Travel Proposals internally. The proposals are comprised of several different fields for each parent record, and multiple fields and records for each of 2 subcategories.
There is not much logic involved in this project, aside from some basic relational lookups.
## Deliverables
A basic walkthrough of how I envision the site's functionality:
**Authentication**
Authentication can be handled by a table in the database.
**End-User**
* Logs In
* Creates a new travel proposal, or updates/cancels an existing one
* Can view when/if a proposal has been reviewed and approved by manager(s).
* An email should be generated to the end-user's direct manager, the end-user, and the system administrator when a new proposal is filed or canceled and on-demand (i.e. via a button on the edit/details page)
**Special End-User (i.e. managers, VPs, etc)**
* Same functionality as users
* After login they should see any proposals awaiting their review/approval.
* Should be able to edit/cancel proposals on behalf of their staff.
* Should be able to generate a report for a specific date/time and see what (proposed) travel, if any, is taking or due to take place.
* If approving a travel proposal, an e-mail should be sent to the original end-user and the approving user's manager (if there is one) for verification.
* If verifying a travel proposal, an e-mail should be sent to the approving user, the original user and the verifying user stating that the travel proposal is complete and approved.
**Fields**
All records should have entry and update timestamps, with entered-by and updated-by fields that are automatically populated.
*Users*
* User name
* User ID
* Email
* Manager's ID
*Travel Proposals
*
* User name
* Proposal title
* Travel reason
*Travel Details
*Users should be able to add as many 'travel details' items as they want to each travel proposal.
* Travel date
* Mode (i.e. air, train, car, boat, etc)
* Carrier
* Carrier ID (i.e. flight number, etc)
* Departure city
* Departure time
* Arrival city
* Arrival time
*Lodging Details*
Users should be able to add as many 'lodging details' items as they want to each travel proposal.
* Location
* Start date
* End date
* Hotel name
* Hotel address
* Hotel phone number