Basic Multi-Tenant appointment booking system created to play with MVC, Authentication, Patterns and Entity Framework.
It's nowehere near complete and a bit hacky in parts, but there's also plenty of good stuff in there!
Uses .NET instead of .NET Core. When I started .NET Core was at 1.1 and the related version of Entity Framework didn't fit my needs (you couldn't make MVC models from EF in another project easily).
If I was making it now, I'd use .NET Core. The processes of getting data, using patterns and presenting to a UI would be very similar.
-
Responsive (works on all sizes from phone to desktop).
-
Authentication (tables moved to main DB to save money on hosting, but could be easily split out again)
-
Create a user (professional)
-
Add company details for that user
-
Invite employees to that company (they may take appointments or not).
-
Employees can set availability
-
Employees can book appointments for themselves
-
Company owners can book appointments for employees.
-
Load tested with 1 million companies and over 1 million professionals.
-
No unit tests. For examples of my unit testing, see my UK Accident Statistics project.
- Clone Repro
- Open in VS2017. You will also need MS SQL Server installed on your machine.
- Change the database urls in
AppointmentsMVC
(web.config) andAppointmentsDb
(app.config) projects. - Ensure 'AppointmentsMVC' is the startup project and hit Run.
If there's a problem, open the package manager console. It will state packages are missing. Click 'restore' to install them. Run again.
When the site starts:
- Click 'Register' in the top right hand corner to register a new user (single factor auth, so you can add anything in the email field).
- Enter Profile
- Enter Company Info
- Click on a date to enter an appointment and add one.
- Can now see the appointment in the list
- Also looks fine on iPhone.
- Go to Admin dropdown and select - Company Locations.
- Enter a location or set of locations and save (these aren't actually used anywhere in the system).
- Go to the Admin dropdown and select 'Keys'. This will enable you to invite users.
- Click Add a professional to company.
- Copy the URL.
- LOG OUT!!!
- Now paste the URL into the browser.
- Select 'Yes'.
- Register as a new user (yes, this should be improved!)
- Enter professional details
- It knows your are in that company. They can now create appointments for themself.
- Click 'Appointments' and create an appointment as the employee for the ownwer to see.
- Log out and log in as the owner.
- You can now see the employees' diary.
- You can now add appointments for the employee.