Skip to content
Permalink
master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Go to file
 
 
Cannot retrieve contributors at this time

Domestic Repairs

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.


Testing

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:

  1. customer1
  2. customer2
  3. technician1
  4. technician2

Stage 1

The core functionality consists of three screens:

Part 1

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:

  1. The type of appliance (from a fixed list).
  2. A slider where they can select the age of the appliance in years (max age 10).
  3. The appliance manufacturer (from a fixed list).
  4. A multi-line description of the fault.
  5. 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:

  1. The location of the user (longitude and latitude).
  2. The date and time the issue was logged.
  3. The username of the person logging the issue.
  4. The status which should be set to unassigned.
  5. The assigned technician field which should be left blank.

Part 2

If the user is logged in there should be a My jobs link or button on the homepage that takes them to a screen that lists the following for the jobs they added:

  1. The type of appliance.
  2. The date the issue was added (but not the time).
  3. The description.
  4. The payment offer.
  5. The status.
  6. The technican (if available).

Part 3

When a customer logs in the home screen should display a list of all the unassigned issues on the system (from all users except the one logging in) It should display the following data:

  1. The type of appliance.
  2. The date the issue was added (but not the time).
  3. The description.
  4. The payment offer.

If a user is logged in there should be an Accept work button next to each item on the homescreen that takes them to a details screen. This displays all the information about that particular job. There should be a Cancel button to take them back to the homescreen and an Accept button. This should:

  1. Change the status of the job to assigned.
  2. Add the person's username to the assigned technician field.

Stage 2

You will be implementing the functionality to assign jobs and track progress of the work.

  1. When a user creates an account they should be required to provide the following additional information:
    1. An email address.
    2. A phone number.
    3. A multiline description of their background and skills.
  2. When a user is logged in, there should be a Accept work button next to every item on the homepage. Clicking on this takes the user to a review page where they are given the option of accepting the job. It should display the following:
    1. The type of appliance.
    2. The date the issue was added (but not the time).
    3. The description.
    4. The payment offer.
    5. The phone number of the person who posted the job.
    6. The email address of the person posting the job.
    7. An Accept work link or button.
  3. Clicking on the Accept work link or button assigns the logged in user as the technician for this job and should:
    1. Flag the job as pending.
    2. Add the username to the technician field.
    3. Add the technician's username, phone and email to the tasks in the My jobs screen of the user who added the job.
  4. The My jobs screen should display a Completed link or button next to all the jobs flagged as pending. This should set the status to completed.

Stage 3

  1. There should be an My work button on the homescreen when a user is logged in. This should display a list of all the jobs that the user has accepted. it should display the following for each job:
    1. The type of appliance.
    2. The date the issue was added (but not the time).
    3. The description.
    4. The payment offer.
    5. The status.
  2. If the job status is pending there should be a link or button to Cancel the work. This removes it from the list and sets it status back to unassigned so that another user can take on the work. The user should be prompted to enter a multiline block of feedback to explain why they can no longer do the work.
  3. The user who added the job should be able to see a job details screen that lists all the job details, users assigned, users who cancelled and reasons and have a Completedlink or button that flags the status as completed and credits the assigned technician with completing the work, updating their account with the amount of money offered.

Extras

In some assignment briefs you are given marks for the appropriate use of media and using sensors built into the user's device.

Sensors

In some assignment briefs you are given marks for the appropriate use of sensors and sensor data. You should be implementing:

  1. When a user adds a job to the system it should capture their location.
  2. 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.
  3. 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.
  4. The list of qualified technicans should include their location and be placed in order with the nearest tradesman at the top of the list.
  5. 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.

Media

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:

  1. Providing the user with the choice of uploading photos, video clips or audio clips.
  2. Giving users the option to directly capture images, audio and video clips using the built-in camera and/or microphone if available.

Data

There are lots of online RESTful APIs you can make use of when developing this system. You should consider:

  1. Axesso
  2. LocationIQ