diff --git a/.gitignore b/.gitignore
index 8fc5d4a..d687fc7 100644
--- a/.gitignore
+++ b/.gitignore
@@ -4,6 +4,8 @@
client/node_modules
client/dist
+.vs
+
# Build results
[Dd]ebug/
[Dd]ebugPublic/
diff --git a/server/3cx_Tapi.sln b/server/3cx_Tapi.sln
new file mode 100644
index 0000000..6343ddc
--- /dev/null
+++ b/server/3cx_Tapi.sln
@@ -0,0 +1,25 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 18
+VisualStudioVersion = 18.5.11612.153 insiders
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CPATapi.Server", "src\CPATapi.Server\CPATapi.Server.csproj", "{7879A024-A074-FE67-0546-8668213BFA99}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {7879A024-A074-FE67-0546-8668213BFA99}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {7879A024-A074-FE67-0546-8668213BFA99}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {7879A024-A074-FE67-0546-8668213BFA99}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {7879A024-A074-FE67-0546-8668213BFA99}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {E2CF5765-9038-4ED6-AC5C-1A3E569ABC6C}
+ EndGlobalSection
+EndGlobal
diff --git a/server/src/CPATapi.Server/CPATapi.Server.csproj b/server/src/CPATapi.Server/CPATapi.Server.csproj
new file mode 100644
index 0000000..81ddb06
--- /dev/null
+++ b/server/src/CPATapi.Server/CPATapi.Server.csproj
@@ -0,0 +1,13 @@
+
+
+
+ net10.0
+
+
+
+
+
+
+
+
+
diff --git a/server/src/CPATapi.Server/Controllers/AvailabilityController.cs b/server/src/CPATapi.Server/Controllers/AvailabilityController.cs
new file mode 100644
index 0000000..c876800
--- /dev/null
+++ b/server/src/CPATapi.Server/Controllers/AvailabilityController.cs
@@ -0,0 +1,47 @@
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+using Dapper;
+using Microsoft.Data.SqlClient;
+using Microsoft.Extensions.Configuration;
+
+namespace CPATapi.Server.Controllers
+{
+ [Route("[controller]")]
+ [ApiController]
+ public class AvailabilityController : ControllerBase
+ {
+ private readonly IConfiguration _config;
+ public AvailabilityController(IConfiguration config) => _config = config;
+
+ [HttpGet, Route("users")]
+ public async Task> GetUsers()
+ {
+ await using var con = new SqlConnection(_config["Db:ConnectionStringZc"]);
+ await con.OpenAsync();
+ return await con.QueryAsync(@"
+SELECT DISTINCT MA_USER_NAME
+FROM dbo.MA_DATEN
+WHERE MA_USER_NAME IS NOT NULL AND MA_USER_AKTIV = 1
+ORDER BY MA_USER_NAME");
+ }
+
+ [HttpGet, Route("{user}")]
+ public async Task