NeoSOFT MachineAssignment Exp4 7 V1.1
NeoSOFT MachineAssignment Exp4 7 V1.1
1)
General Instructions:
1. Read all the instructions carefully before you start with the assignment.
2. Assignment should be completed in the given time.
3. Create a folder on desktop with Neosoft_<FirstName_LastName>_<TodaysDate>.
4. Create solution inside newly created folder by you on desktop.
5. Code should be neat and easily readable. It is expected that proper naming conventions
should be followed.
6. Feel free to ask any questions/queries to the moderators.
7. You should be able to explain the functionality to the moderators.
Database Instructions:
1. Create a database with name Neosoft_<YourName>.
2. Use local system SQL server authentication for database connection.
3. Create table with following schema.
Table Name: EmployeeMaster
Row_Id (Primary Key) (int) (auto increment)
EmployeeCode (varchar(8)) (auto generated with prefix of 2 zero) (eg : 001) (not null)
FirstName (not null) (nvarchar(50))
LastName (nvarchar(50))
CountryId (Foreign Key)
StateId (Foreign Key)
CityId (Foreign Key)
EmailAddress (not null) (Unique) (varchar(100))
MobileNumber (not null) (Unique) (varchar(15))
PanNumber (not null) (Unique) (varchar(12))
PassportNumber (not null) (Unique) (varchar(20))
ProfileImage (nvarchar(100))
Gender (tinyint)
IsActive (not null) (bit)
DateOfBirth (not null) (date)
DateOfJoinee (date)
CreatedDate (not null) (datetime)
UpdatedDate (datetime)
IsDeleted (not null) (bit)
DeletedDate (datetime)
Page 1 of 4
Machine Assignment (v1.1)
Application Instructions:
Create below form using MVC / Angular / React / .Net Core (any technical skill set as per
your expertise).
Bind Country, State, City values using Jquery AJAX (Cascading dropdows)
Add dynamic searching, sorting and paging functionality for the grid (Lazy Load).
◦ jQGrid or jQuery data table is preferable. You can use different third party tool.
Add validations for input fields whenever necessary (Eg : Max length, Required, Regular
expression, Remote validation).
Pan Number and Passport Number needs to be check for uniqueness and both should be in
upper case.
Email Address & Mobile Number needs to be check for uniqueness.
Date of birth and Date of joinee should be less than today’s date.
Profile picture should be in format of (jpg or png) only. It can be uploaded in any size, it
should get resize and optimize automatically. While saving the image its size should be less
than 200 KB.
Add more than 20 records in the table using the form, so dynamic listing can be tested well.
Only 2 screens need to be create (Employee List & Insert Update Employee)
Use Ado.Net or EF Core for this application. Ado.Net is preferable for this.
Use singleton design pattern to manage DB connection for Ado.Net
Use bootstrap & responsive UI for this application
Use bootstrap datepicker for select the date in form
Use any 3rd party plugin for dropdown to filter the records (eg : Select2, Chosen Select)
On click of Add/Edit employee a popup should be open with Insert Update Employee form.
On click of delete from row, Confirmation box should be asked to delete the record. If user
confirm than soft delete the record with (IsDeleted = true & DeletedDate = GetDate()).
For confirmation box please use any 3rd party plugin (eg : SweetAlert, Bootstrap
Confirmation Box etc.)
Profile Image : Created new folder “Uploads” at root directory and inside that create one
sub folder “Employee”. Save user images inside Employee folder. Each images should get
save with UniqueName_FileName.Extension.
N-Tier architecture should be there, create separate layer for Entity, Data access,
Presentation etc.
For Ado.Net : Generic sql helper class should be used for DB communication.
Page 2 of 4
Machine Assignment (v1.1)
Additional Instructions:
Exception handling should be implemented and logs should be saved into database.
You can create custom exception filter for this and log the exception using generic method.
Log : Inner Exception, Stack Trace, Code, Controller & Action Name, Created Date etc.
Dependency injection pattern should be implemented to inject dependency into controller
and use business / data access layers.
Implement caching on the action to display Employee listing on the screen.
About Application: This is simple Employee CRUD application with only 2 screens. Landing page
of this application is List of employee. There is Add/Edit button on click of that another screen will
be open to create / update the employee.
Page 3 of 4
Machine Assignment (v1.1)
Page 4 of 4