Bauer Developer Instructions
Bauer%20Developer%20%20-%20Instructions
User Manual:
Open the PDF directly: View PDF
.
Page Count: 4
| Download | |
| Open PDF In Browser | View PDF |
Instructions The idea of this test is to gain insight into how you, as a developer, think about problem solving while demonstrating: Application of SOLID principles. A good understanding of separation of concerns without overengineering. Overall approach to unit testing. This test and it’s content is not a direct reflection of the work that will be undertaken at Bauer Media. It is a technical screen to see how candidates solve problems. To run this project, you will need Visual Studio 2017 or Visual Studio 2017 Community Edition and the .NET Framework 4.7 Developer Pack installed. Otherwise, there are no enforced libraries or tools that have to be used. You are free to use whatever feels most comfortable. The Brief You have inherited a legacy restaurant guide application that requires some upgrades to bring it up to date with modern techniques and practices. Please take into account separation of concerns, unit testability and the ease of post deployment database tuning and optimisation. Any UI considerations are a value add, but will also be seen in a positive light. 1. Taking the legacy code in HomeController , refactor the application into a layered architecture using the Restaurant domain model object as a base and the provided AppData database as a data store. Use any preferred data access/ORM framework. Scope for demonstrating the following: Creation of a data access layer taking into account web security best practices. Feel free to use any appropriate design patterns you feel comfortable implementing. The potential definition of a unit testable business logic layer to sit between your controller and your data layer. The use of dependency injection for better unit testing. Creating a strongly-typed view model. 2. Implement the Save method at /Restaurant/Edit . As with task 1, show a layered architecture. Refactor as you see fit. In addition to supporting editing of the currently shown fields (i.e. Name , Phone Number ), please add a Chef field. The Name , Phone Number and Chef fields must be validated and stored correctly according to rules listed below. Any client side validation should not interfere with compliance to these rules. Please unit test this logic. The database update must be implemented using a stored procedure, but can be abstracted in anyway you see fit. 3. Optional bonus points for show-offs: extend the /Restaurant/Edit form to include any other fields in a domain specific way. E.g. Cuisine (a dropdown list). Rating field. Address fields. Restaurant Name rules 1. The name of the restaurant is mandatory. 2. The name cannot exceed 250 characters. Chef rules 1. The name of the chef is mandatory. 2. The name of the chef can contain Unicode characters. 3. The name of the chef cannot exceed 500 Unicode characters. Phone Number rules 1. Phone numbers are assumed to be valid within Australia - they will never be international. 2. The only non-digit characters accepted by the Phone Number field are: The whitespace character. The opening and closing parentheses, but only when they enclose the two digit area code. 3. The non-digit characters stated above will be accepted by the UI but ignored/dropped during validation. Phone numbers with other non-digit characters will be rejected. 4. If less than 9 significant digits are entered, the phone number will be rejected. 5. Any digits beyond the 9th most-significant are ignored/dropped during validation. 6. The resulting 9-digit number will be stored in the PhoneNumber database column. 7. When displaying the number from the PhoneNumber database column, it must be formatted as (00) 0000 0000 . Submission When you have completed the task Zip the entire solution. Ensure your submission passes the “works on my machine” test. Submissions requiring nuget restore are fine (and preferred). Submissions that fail to run due to missing/non relative database paths will be at a disadvantage. Return it to the contact who provided you this test. You may not have had time to modify the solution exactly as you would like. If not, include some comments about any technical debt or the architecture you would like to improve upon.
Source Exif Data:
File Type : PDF File Type Extension : pdf MIME Type : application/pdf PDF Version : 1.4 Linearized : No Title : Creator : Producer : Qt 5.5.1 Create Date : 2018:09:04 11:37:47 Page Count : 4EXIF Metadata provided by EXIF.tools