{"id":27307492,"url":"https://github.com/ukcoderj/multitenantappointmentsmvc","last_synced_at":"2025-04-12T04:10:06.607Z","repository":{"id":98400922,"uuid":"110451874","full_name":"ukcoderj/MultiTenantAppointmentsMvc","owner":"ukcoderj","description":"Simple Multi-Tenant Booking application using MVC (C#)","archived":false,"fork":false,"pushed_at":"2017-11-12T18:30:37.000Z","size":1944,"stargazers_count":10,"open_issues_count":0,"forks_count":2,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-12T04:10:01.051Z","etag":null,"topics":["csharp","entity-framework","mvc","responsive-design"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ukcoderj.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-11-12T17:08:32.000Z","updated_at":"2024-12-31T09:56:42.000Z","dependencies_parsed_at":"2023-04-26T04:41:25.348Z","dependency_job_id":null,"html_url":"https://github.com/ukcoderj/MultiTenantAppointmentsMvc","commit_stats":null,"previous_names":["ukcoderj/multitenantappointmentsmvc"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ukcoderj%2FMultiTenantAppointmentsMvc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ukcoderj%2FMultiTenantAppointmentsMvc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ukcoderj%2FMultiTenantAppointmentsMvc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ukcoderj%2FMultiTenantAppointmentsMvc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ukcoderj","download_url":"https://codeload.github.com/ukcoderj/MultiTenantAppointmentsMvc/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248514221,"owners_count":21116903,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["csharp","entity-framework","mvc","responsive-design"],"created_at":"2025-04-12T04:10:05.843Z","updated_at":"2025-04-12T04:10:06.561Z","avatar_url":"https://github.com/ukcoderj.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Basic MVC Appointment Booking Application\n\nBasic Multi-Tenant appointment booking system created to play with MVC, Authentication, Patterns and Entity Framework.\n\nIt's nowehere near complete and a bit hacky in parts, but there's also plenty of good stuff in there!\n\nUses .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).\n\nIf 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.\n\n\n## Features\n\n- Responsive (works on all sizes from phone to desktop).\n- Authentication (tables moved to main DB to save money on hosting, but could be easily split out again)\n- Create a user (professional)\n- Add company details for that user\n- Invite employees to that company (they may take appointments or not).\n\n- Employees can set availability\n- Employees can book appointments for themselves\n- Company owners can book appointments for employees.\n\n- Load tested with 1 million companies and over 1 million professionals.\n- No unit tests. For examples of my unit testing, see my [UK Accident Statistics](https://github.com/HockeyJustin/UkAccidentStatistics/tree/master/src/AccidentProcessor.Tests) project.\n\n# To Run\n\n- Clone Repro\n- Open in VS2017. You will also need MS SQL Server installed on your machine.\n- Change the database urls in `AppointmentsMVC` (web.config) and `AppointmentsDb` (app.config) projects.\n- Ensure 'AppointmentsMVC' is the startup project and hit Run.\n\nIf there's a problem, open the package manager console. It will state packages are missing. Click 'restore' to install them. Run again.\n\nWhen the site starts:\n\n- 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).\n\n![Register new user](https://github.com/HockeyJustin/MultiTenantAppointmentsMvc/blob/master/Screenshots/1%20Register.PNG?raw=true)\n\n- Enter Profile\n\n![Profile](https://github.com/HockeyJustin/MultiTenantAppointmentsMvc/blob/master/Screenshots/2%20Profile.PNG \"Profile\")\n\n- Enter Company Info\n\n![Company Info](https://github.com/HockeyJustin/MultiTenantAppointmentsMvc/blob/master/Screenshots/3%20Company.PNG \"Company Info\")\n\n- Click on a date to enter an appointment and add one.\n\n![Appointments View](https://github.com/HockeyJustin/MultiTenantAppointmentsMvc/blob/master/Screenshots/4%20Appointments%20For%20Self.PNG?raw=true \"Appointments View\")\n\n![Create Appointment](https://github.com/HockeyJustin/MultiTenantAppointmentsMvc/blob/master/Screenshots/5%20Appointments%20For%20Self%202.PNG?raw=true \"Create Appointment\")\n\n- Can now see the appointment in the list\n\n![Appointment](https://github.com/HockeyJustin/MultiTenantAppointmentsMvc/blob/master/Screenshots/6%20Appointments%20For%20Self%203.PNG?raw=true \"Appointment\")\n\n- Also looks fine on iPhone.\n\n![iPhone View](https://github.com/HockeyJustin/MultiTenantAppointmentsMvc/blob/master/Screenshots/6%20Appointments%20For%20Self%203%20-%20iPhone%20view.PNG?raw=true \"iPhone View\")\n\n- Go to Admin dropdown and select - Company Locations.\n\n![Admin Menu](https://github.com/HockeyJustin/MultiTenantAppointmentsMvc/blob/master/Screenshots/7%20Admin%20Dropdown.PNG?raw=true \"Admin Menu\")\n\n- Enter a location or set of locations and save (these aren't actually used anywhere in the system).\n\n![Company Locations](https://github.com/HockeyJustin/MultiTenantAppointmentsMvc/blob/master/Screenshots/8%20Company%20Locations.PNG?raw=true \"Company Locations\")\n\n## To Add employees\n- Go to the Admin dropdown and select 'Keys'. This will enable you to invite users.\n- Click Add a professional to company.\n\n![Add employee step 1](https://github.com/HockeyJustin/MultiTenantAppointmentsMvc/blob/master/Screenshots/9%20Add%20Pro%20to%20Company%201.PNG?raw=true \"Add employee step 1\")\n![Add employee step 2](https://github.com/HockeyJustin/MultiTenantAppointmentsMvc/blob/master/Screenshots/9%20Add%20Pro%20to%20Company%202.PNG?raw=true \"Add employee step 2\")\n\n\n- Copy the URL.\n\n![Add employee step 3](https://github.com/HockeyJustin/MultiTenantAppointmentsMvc/blob/master/Screenshots/9%20Add%20Pro%20to%20Company%203.PNG?raw=true \"Add employee step 3\")\n\n- LOG OUT!!!\n- Now paste the URL into the browser. \n- Select 'Yes'.\n\n![Join company](https://github.com/HockeyJustin/MultiTenantAppointmentsMvc/blob/master/Screenshots/9%20Add%20Pro%20to%20Company%204.PNG?raw=true \"Join company\")\n\n- Register as a new user (yes, this should be improved!)\n\n![Join company](https://github.com/HockeyJustin/MultiTenantAppointmentsMvc/blob/master/Screenshots/9%20Add%20Pro%20to%20Company%205.PNG?raw=true \"Join company\")\n\n- Enter professional details\n\n![Employee Details](https://github.com/HockeyJustin/MultiTenantAppointmentsMvc/blob/master/Screenshots/9%20Add%20Pro%20to%20Company%206.PNG?raw=true \"Employee Details\")\n\n- It knows your are in that company. They can now create appointments for themself.\n\n![Employee Created](https://github.com/HockeyJustin/MultiTenantAppointmentsMvc/blob/master/Screenshots/9%20Add%20Pro%20to%20Company%207.PNG?raw=true \"Employee Created\")\n\n- Click 'Appointments' and create an appointment as the employee for the ownwer to see.\n\n![Employee Appointment Booking](https://github.com/HockeyJustin/MultiTenantAppointmentsMvc/blob/master/Screenshots/9%20Add%20Pro%20to%20Company%208.PNG?raw=true \"Employee Appointment Booking\")\n\n## Company owner accessing employees' diary.\n\n- Log out and log in as the owner.\n- You can now see the employees' diary.\n\n![Owner Access Appointments](https://github.com/HockeyJustin/MultiTenantAppointmentsMvc/blob/master/Screenshots/10%20Owner%20accesses%20employee%20appointments%201.PNG?raw=true \"Owner Access Appointments\")\n\n![Owner Access Appointments 2](https://github.com/HockeyJustin/MultiTenantAppointmentsMvc/blob/master/Screenshots/10%20Owner%20accesses%20employee%20appointments%202.PNG?raw=true \"Owner Access Appointments 2\")\n\n- You can now add appointments for the employee.\n\n![Owner Creating appointment for employee](https://github.com/HockeyJustin/MultiTenantAppointmentsMvc/blob/master/Screenshots/10%20Owner%20creating%20appointment%20for%20employee.PNG?raw=true \"Owner Creating appointment for employee\")\n\n\n\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fukcoderj%2Fmultitenantappointmentsmvc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fukcoderj%2Fmultitenantappointmentsmvc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fukcoderj%2Fmultitenantappointmentsmvc/lists"}