You have been asked to develop a website for a company that specialises in the repair of domestic white goods such as washing machines and cookers.
The system should include the data for at least 10 real issues and include the correct details for each. The customer details should also be valid.
You are required to create the following accounts to allow the system to be tested. All accounts should have the password p455w0rd
:
customer1
customer2
technician1
technician2
If a user is logged in they should see a New issue link or button on the home screen, which takes them to a screen to report a new issue. They should be prompted for the following information:
- The type of appliance (from a fixed list).
- A slider where they can select the age of the appliance in years (max age 10).
- The appliance manufacturer (from a fixed list).
- A short one line summary of the fault (max 100 characters).
- A multi-line description of the fault that supports the use of markdown syntax.
- A slider where they can state how much they will pay for the work (max £200).
The system should also store the following data without the user needing to enter it:
- The location of the user (longitude and latitude).
- The date and time the issue was logged.
- The username of the person logging the issue.
- The status which should be set to unassigned.
- The assigned technician field which should be left blank.
To demonstrate this feature and to prove that the form works correctly you will need to show that the data is being persisted correctly, either by running a database query or an API call depending on the platform and technology you are using.
If the user is logged in their home page should list a summary of athe jobs they have added to the system. Only the following information should be displayed:
- The type of appliance.
- The summary.
- The date the issue was added (but not the time).
- The status (at this stage it should be set as unassigned).
When a customer is logged in they should see a Work available button or link. This should take them to a screen that shows a summary of every unassigned job in the system ordered by distance from the current location. Each summary should display the following only:
- The approximate distance away (in Km).
- The Type of appliance.
- The summary.
- The amount the person is willing to pay.
Each of the summaries on the Work Available screen should have a Details button or link. This should take the user to a screen that displays the full details of the job. There should be three buttons:
- Clicking on the Accept button allocates the user to that job. The job status is now assigned and the user added as the assigned technician. The user is returned to the Work Available screen.
- Clicking on the Decline button returns the user to the Work Available screen but hides that job.
- Clicking on the Cancel button just returns the user to the Work Available Screen.
If the user has allocated themselves any jobs there should be a My jobs link or button on the home screen that displays summaries of the jobs the user has allocated themselves.
In some assignment briefs you are given marks for the appropriate use of media and using sensors built into the user's device.
In some assignment briefs you are given marks for the appropriate use of sensors and sensor data. You should be implementing:
- When a user adds a job to the system it should capture their location.
- When a user adds one or more photos to their job they should be given the option to take this with the built-in camera if available.
- When a technician views a list of jobs they should be able see the address of each and roughly how far away the job is from their current location.
- The list of qualified technicans should include their location and be placed in order with the nearest tradesman at the top of the list.
- The list of qualified technicans should be available as either a list or a map. Clicking on a map pin should show more information and take the user to the technican details page.
In the requirements listed above you need to provide the user with the ability to upload photos. For the extra media marks you will need to expand this by:
- Providing the user with the choice of uploading photos, video clips or audio clips.
- Giving users the option to directly capture images, audio and video clips using the built-in camera and/or microphone if available.
There are lots of online RESTful APIs you can make use of when developing this system. You should consider: