This is my two-weeks final project I did on Lexicon C# course. The requirement was to use ASP.Net Core with Entity Framework Core and some form of front-end. What exactly the application should do was up to each student.
My idea for the final project originated from my previous employment where I worked with big OSS and BSS systems made up of hundreds of components. This project is a demo implementation of a part of a Customer Care system, particulary Ticket management part.
A ticket is generated by First-line customer support when they answer a call/get an email from a customer that has a problem with his equipment or service. If First-line agent can't resolve issue directly, a ticket is created and passed further on to Coordinators. These are people who have in-depth knowledge of inner workings of the company and for the most part can figure out how to fix the problem. They are not who actually fix it though, they rather push the ticket onto Operators. An Operator can be any hands-on resource, in-house or external, consultant or subcontractor etc. Coordinators job is to assign the ticket to an appropriate Operator based on type of issue, urgency, Operators contracts and other criteria.
For that each Operator has a schedule within the system and a login to view assigned jobs and report on completed ones. In reality there's a lot more to that, but for the purpose of this demo (and time constraint) I have omitted most of advanced functionality.
This demo's user stories are as follows:
General:
- Users can login into the system
From Coordinator perspective:
- Coordinator receives escalated ticket from first-line with info about the issue (pre-seeded in this demo)
- Coordinator can view ticket list, search, sort, view most urgent, view closed/archived and also create new tickets
- Coordinator can assign ticket to an operator using schedule view for that specific operator
- Coordinator is alerted when a report is available and can review the report
- Coordinator can close completed tickets if the issue is solved by an operator.
From Operator perspective:
- Operator can see tickets that require attention in a summary view
- Operator can view assigned tickets in own schedule view.
- Operator cannot change ticket main fields, but can print/send a job order. (not implemented in demo due to time constraint)
- Operator can create report for a ticket which will be submittet for review by assigning Coordinator
- Operator can mark ticket as completed.
- ASP.Net Core MVC with no Razor Pages
- Entity Framework Core
- Sql Server
- Model Binding
- Automapper
- Identity
- Role-dependent areas
- Bootstrap 5
- Web API & JS fetching
Notes:
API controllers have extensive error handling. Validation prevents bad parameters. Request parameters manipulation/injection that result in thrown exceptions is handled in most basic way - via middleware and Error method in Login Controller. HTTP code errors like 404 have very basic middleware handling also. Some hardcoded error messages and alerts. Also hardcoded report templates. Set mode is 'Production' Change to 'Development' in launchsettings.json if desired.
** This code is fully open for anyone to take whatever they want, completelly free **
- Download project and extract somewhere
- Use Sql Server 2019 or whatever works with EF Core
- Run sql script with SSMS or equivalent
- Fix connection string in appsettings.json
- Rebuild and start :)
I've now added some screenshots in Screenshots folder