Assignment title: Information
Part B (90%) - Dance Company Support System
You have been approached by a dance company called Two Left Feet which acts as an agent for dance instructors. The company has a number of dance instructors on their books and people interested in dancing can book private dance lessons through Two Left Feet. The company wants to introduce an IT system to support their business.
The company would like to have a custom application developed which will support the instructors - this will be called Lesson Manager. In addition to this they also want a web application that customers can use to book lessons. Finally, the company wants an application that calculates the invoices for customers.
The system will be used by three types of users:
• Company administrators
• Dance instructors
• Customers
The system needs to provide the following functionality to each type of user:
• Company administrators
o Use the web application to manage dance instructors (add/edit/delete), view a list of all instructors and schedule instructors for lessons
o Use the invoice calculator to calculate invoices for customers
• Dance instructors
o Use the Lesson Manager to show details of booked lessons, record details of the lesson and synchronise details with the web application
• Customers
o Register an account
o Book a private lesson
The information kept about a dance instructor should include at least the following: name, gender, styles he/she can dance (e.g. Waltz, Jive, Samba), telephone number, hourly rate and availability (the days of the week when the instructor is working).
A customer needs to register an account in order to book a lesson. The system should capture at least the following details during the registration process: first name, surname, email address (also used as username), password, gender, date of birth, phone number and address.
A customer should only be able to book a lesson in the future and needs to specify the dance style he/she would like to learn and the maximum hourly rate they are prepared to pay. When a customer makes a booking, the system should record the date/time, expected duration and dance style. The customer doesn't directly choose the dance instructor, but an instructor matching the dance style and not exceeding the hourly rate is automatically assigned by the system. The system should prevent instructors from being double-booked.
The company wants you to develop the Lesson Manager application which instructors use when they go to lessons. At the beginning of a day, an instructor could load all lessons for that day, during the lessons instructors can log details for a lesson and details would be synched back to the web application. The details that an instructor logs are the actual start time of the lesson, the actual duration in minutes and any notes on the progress of the dance student. The actual duration of the lesson needs to be recorded as sometimes instructors extend the lesson.
Customers are paying for their private lessons at the end of each month. The company wants you to develop a standalone application for calculating invoices. This application is run by the administrators and allows them to calculate the invoice for a particular customer for a particular month. Invoices are then sent by post to the customers. The actual payment of an invoice happens outside of the system, but it should be possible to record the status of an invoice (i.e. created, sent and paid).
There are strict requirements about the technologies and architecture to be implemented. These are detailed in the deliverables section below.
Deliverables
Implementation (80%)
1) Database (10%): The database needs to be used for persistent storage of dance instructors, customers, bookings and invoices. For details of what information should be stored in the database, please see the description above. You can use any relational database management system you wish (e.g. SQLServer, MySQL, Oracle, Access, etc.). The database should be normalised and use primary key and foreign key constraints.
2) Web Application for Administrators (10%): The web application should be implemented in ASP.NET using C#. It should allow a company administrator to manage dance instructors. The web application should use the database outlined in requirement 1. It should also enable a user to register a new account, log in and make a booking.
3) Web Application for Customers (10%): Extend the web application created for requirement 2 by adding a section that will be used by customers. It should be possible for a customer to register a new account, log in, search for available dance classes or workshops and make a booking.
4) SOAP Web Service (10%): The company is planning to provide dance instructors with the ability to manage their classes using a dedicated lesson manager. In the long term they want to create multiple interfaces for the lesson manager, including a web application, desktop application and a mobile app. To support this, you need to implement a SOAP web service in C# that provides functionality for loading all lessons for a particular instructor for a particular day, as well as saving details of a particular lesson. The web service should also use the database outlined in requirement 1.
5) Lesson Manager Application for Instructors (10%): Create a web application, windows forms application or mobile app using any programming language/technology you wish to use. The application must connect to the web service created for requirement 4. The application should load a list of lessons for a particular instructor and day. It should be possible to log the actual start time and duration of a lesson and make notes. The application should also provide synchronisation functionality where the changes made to lessons are submitted back to the web service.
6) RESTful Web Service and XML Format (10%): Create a RESTful Web Service that exposes invoice data for a given customer. It should be possible to specify a customer and month/year and the RESTful web service should return a list of all lessons that the customer had during that time. The data must include the day/time of the lesson, duration, instructor and hourly rate of that instructor. There should be an additional method that exposes a list of all customers or allows searching for a customer by name or email address. All information should be exposed in XML format. You should also create a schema that outlines the valid structure of the XML messages returned by the RESTful web service.
7) Invoice Calculator (10%): Create a desktop or web application for processing invoices. This application is used by administrators to create invoices for customers. An administrator should be able to select a customer from a list or search for a particular customer, set the month for which to calculate the invoice and the application should then display an invoice for that customer. The Invoice Calculator should only interact with the RESTful Web Service created for requirement 6. The XML returned by the web service should be checked for well-formedness and validity on receipt.
8) AJAX / JQuery (10%): Add use of AJAX and/or JQuery in your web applications. It is up to you do decide how you apply these technologies to enhance your web applications.