Basic technical requirements:
- Your solution should consist of three layers:
- Presentation layer – web application (ASP.NET web forms, MVC etc. – your choice). No database connection here, use calls to business layer (web service) instead.
- Business layer – web service (ASP.NET web services, WCF, WebAPI etc. – once again, the choice is yours). Covers connection to the database layer.
- Database layer – data should be stored in relational database engine (Microsoft SQL Server Express is preferred here), although other persistent storage, such as file, is allowed as well.
- Presentation layer and business layer should not be in the same Visual Studio project – create two separate projects, one for web application and one for web service.
- All the functionality should be implemented in C# programming language, using .NET framework. Avoid using using third-party components (OR mappers or visual components for example).
Business requirements
- Database should store the licenses in this structure:
- Date of creation
- Customer name
- Customer email
- License key (10 chars long string)
- Price
- Populate the license catalogue with at least 50 records to allow paging (see below). Include DDL and data population scripts in your solution.
- Access to the application should be protected by using username/password authentication. Store the user passwords in a secure way.
- After succesful login, user will be presented with an interface, which allows to search the licenses stored in database, using these parameters:
- Customer email address
- License key
- Results of the search will be presented as paged list with 10 records on page
- User can consequently view and edit the records shown (single-page approach, modal windows, whatever suits you)
Evaluation
Your solution will be evaluated in various aspects, particularly:
- Purity of the code – readability and consistency, using best practices
- Solution architecture
- UI design
Please send your solution to: challenge@joineset.com