Business Story
A multi-national company has decided to build an internal website for settling reimbursement claims.
We have been hired to design a web-based platform giving them the ability to enter data, upload bills and track status.
Requirements
The application being created should fulfill the following requirements. The validations are mentioned wherever relevant. Please refer mockups for better understanding.
Sign-Up functionality:
This is a one-time activity required to be done by the employee.
a. Register new user should ask for:
Validation
Email must be unique and valid as per standard format
Password Minimum length is 8 and it must have at-least 1special character, 1 number and 1 alphabet
Re-type Password should match with password
Full Name 255-character alphabets only
PAN Number 10-digit alphanumeric only
Bank dropdown with some random bank names
Bank Account Number 12-digit numeric only
Login:
This should work on providing registered email and password.
Employee Dashboard:
Shows all the claims made by the employee in the tabular format
Display in inverse chronological order
Provide ability to edit or delete a claim. (Not applicable to processed one’s)
The “approved value” will be shown only for processed requests.
Add new reimbursements:
Clicking on “Add new reimbursement” button opens a pop-over where user can provide data.
Validation
Date Valid date
Reimbursement Type Dropdown with options Medical, Travel, Food, Entertainment, Misc.
Requested Value Numeric with 2 decimals
Currency Dropdown with options INR, USD and Euro
Upload Image pdf/jpeg/png only
Admin dashboard:
a. NOTE: There are admin users who have ability to approve reimbursements. (Process of selecting approvers is out of scope of this assignment, you can assume them to be identified based on “isApprover” flag in database)
b. After login an admin lands on a page which has three tabs:
Pending requests
Declined
Approved
c. Every new reimbursement is listed in “Pending requests” with two buttons “Approve” and “Decline”.
Approve/Decline
a. If “Approve” is clicked, open a pop-up which should ask for approved-by, approved-
amount and internal notes.
b. Based on the button clicked (decline/approve) the request is moved in that section.
Search and Filter-By
a. Provide a search box which gives admin ability to search a request by email-Id.
b. Provide a dropdown which gives ability to filter requests by “Reimbursement Type”.
Task 1
Create an end to end functional application using n-tier architecture to achieve the business story discussed above. To aid your thinking process and to set expectations in terms of output required find listed below the various components that go into making such an application
1. SQL database
a. Should contain tables (if you want procedures – not mandatory) required for the business case
Consider good design – Normalization, Constraints etc.
Map complete information
2. Data Access Layer
a. Should contain classes to help interact with the database.
b. Use Entity Framework for database interaction.
c. Feel free to use procedures (if you created them above) or use entities alone to complete DAC operations.
3. Business Layer
a. Should contain classes to represent the business logic to cover all the requirements
mentioned in Requirements section.
NOTE: Any common code – DTOs, constants etc., which can be used by any other layer can be
made part of Shared Layer (optional).
4. Presentation Layer: Highlight use of Asp.Net MVC 6 And/Or .NET WebAPI.
5. UI presentation layer using Angular 2, HTML, CSS, JS.
a. This should take care of UI validations.
b. Make RESTful calls to MVC controller for data.
The following diagram shows a high-level structure and data flow for the application.
Technology Stack
Following technologies should be used to create the application:
UI Layer – HTML5, JS, CSS3, Angular
Presentation Layer– Asp.Net MVC 6, Asp.Net WebAPI
Business and Data Layer – .NET, Entity Framework, SQL Server
Contact Us or send your requirement details at:
realcode4you@gmail.com
To get any help in ASP .NET, Angular, html, CSS and JavaScript. If you have any query then ask using below comment section
Solution of this project??