diff --git a/Source/Infrastructure/Integration/Kysect.Shreks.Integration.Github/Helpers/TestEnvironmentConfiguration.cs b/Source/Application/Kysect.Shreks.Application.GithubWorkflow.Abstractions/TestEnvironmentConfiguration.cs
similarity index 100%
rename from Source/Infrastructure/Integration/Kysect.Shreks.Integration.Github/Helpers/TestEnvironmentConfiguration.cs
rename to Source/Application/Kysect.Shreks.Application.GithubWorkflow.Abstractions/TestEnvironmentConfiguration.cs
diff --git a/Source/Application/Kysect.Shreks.Application.TableManagement/Kysect.Shreks.Application.TableManagement.csproj b/Source/Application/Kysect.Shreks.Application.TableManagement/Kysect.Shreks.Application.TableManagement.csproj
index 34b88c444..2df7fda4b 100644
--- a/Source/Application/Kysect.Shreks.Application.TableManagement/Kysect.Shreks.Application.TableManagement.csproj
+++ b/Source/Application/Kysect.Shreks.Application.TableManagement/Kysect.Shreks.Application.TableManagement.csproj
@@ -1,18 +1,20 @@
-
- net6.0
- enable
- enable
-
+
+ net6.0
+ enable
+ enable
+ latest
+ True
+
-
-
-
+
+
+
-
-
-
-
+
+
+
+
-
+
\ No newline at end of file
diff --git a/Source/Kysect.Shreks.WebApi/Kysect.Shreks.WebApi.csproj b/Source/Kysect.Shreks.WebApi/Kysect.Shreks.WebApi.csproj
index 02f7cda2f..77be900e1 100644
--- a/Source/Kysect.Shreks.WebApi/Kysect.Shreks.WebApi.csproj
+++ b/Source/Kysect.Shreks.WebApi/Kysect.Shreks.WebApi.csproj
@@ -34,6 +34,7 @@
+
diff --git a/Source/Kysect.Shreks.WebApi/Program.cs b/Source/Kysect.Shreks.WebApi/Program.cs
index 7fb4c9765..8daf63ffe 100644
--- a/Source/Kysect.Shreks.WebApi/Program.cs
+++ b/Source/Kysect.Shreks.WebApi/Program.cs
@@ -5,6 +5,8 @@
using Kysect.Shreks.Application.GithubWorkflow.Extensions;
using Kysect.Shreks.Application.Handlers.Extensions;
using Kysect.Shreks.Common.Exceptions;
+using Kysect.Shreks.Controllers;
+using Kysect.Shreks.Controllers.Models;
using Kysect.Shreks.Core.Study;
using Kysect.Shreks.Core.SubjectCourseAssociations;
using Kysect.Shreks.Core.Submissions;
@@ -21,7 +23,6 @@
using Kysect.Shreks.Seeding.Extensions;
using Kysect.Shreks.WebApi.Extensions;
using Kysect.Shreks.WebApi.Filters;
-using Kysect.Shreks.WebApi.Models;
using MediatR;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection.Extensions;
@@ -46,7 +47,13 @@ void InitServiceCollection(WebApplicationBuilder webApplicationBuilder)
{
webApplicationBuilder.Services.TryAddSingleton(testEnvironmentConfiguration);
}
- webApplicationBuilder.Services.AddControllers(x => x.Filters.Add()).AddNewtonsoftJson();
+
+ webApplicationBuilder.Services
+ .AddControllers(x => x.Filters.Add())
+ .AddNewtonsoftJson()
+ .AddApplicationPart(typeof(IControllersProjectMarker).Assembly)
+ .AddControllersAsServices();
+
webApplicationBuilder.Services.AddEndpointsApiExplorer();
webApplicationBuilder.Services.AddSwaggerGen(c =>
{
diff --git a/Source/Kysect.Shreks.sln b/Source/Kysect.Shreks.sln
index 682bb2eda..4736a68fe 100644
--- a/Source/Kysect.Shreks.sln
+++ b/Source/Kysect.Shreks.sln
@@ -68,7 +68,9 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution
.editorconfig = .editorconfig
EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Kysect.Shreks.Application.TableManagement", "Application\Kysect.Shreks.Application.TableManagement\Kysect.Shreks.Application.TableManagement.csproj", "{A57B6F3D-1DC1-41A7-90CD-99158B4D55DA}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Kysect.Shreks.Application.TableManagement", "Application\Kysect.Shreks.Application.TableManagement\Kysect.Shreks.Application.TableManagement.csproj", "{A57B6F3D-1DC1-41A7-90CD-99158B4D55DA}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Kysect.Shreks.Controllers", "Presentation\Kysect.Shreks.Controllers\Kysect.Shreks.Controllers.csproj", "{561BAC9C-4E54-414A-BFDA-AFF90B6F5ADF}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -172,6 +174,10 @@ Global
{A57B6F3D-1DC1-41A7-90CD-99158B4D55DA}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A57B6F3D-1DC1-41A7-90CD-99158B4D55DA}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A57B6F3D-1DC1-41A7-90CD-99158B4D55DA}.Release|Any CPU.Build.0 = Release|Any CPU
+ {561BAC9C-4E54-414A-BFDA-AFF90B6F5ADF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {561BAC9C-4E54-414A-BFDA-AFF90B6F5ADF}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {561BAC9C-4E54-414A-BFDA-AFF90B6F5ADF}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {561BAC9C-4E54-414A-BFDA-AFF90B6F5ADF}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -202,6 +208,7 @@ Global
{DF0C2310-8F92-404C-885E-D495B3F334EB} = {AE556858-2A9D-481F-9235-3C74F0CDC5A5}
{3B0EB40E-6E3C-4F8D-BBD7-9B7FC5FB7D68} = {AE556858-2A9D-481F-9235-3C74F0CDC5A5}
{A57B6F3D-1DC1-41A7-90CD-99158B4D55DA} = {AE556858-2A9D-481F-9235-3C74F0CDC5A5}
+ {561BAC9C-4E54-414A-BFDA-AFF90B6F5ADF} = {7A93BF5E-D7A6-4D8A-AC22-9D5AF09C4880}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {CD5C67DB-70F8-4C47-A3F4-7C94BECE1657}
diff --git a/Source/Kysect.Shreks.WebApi/Controllers/AssignmentController.cs b/Source/Presentation/Kysect.Shreks.Controllers/AssignmentController.cs
similarity index 96%
rename from Source/Kysect.Shreks.WebApi/Controllers/AssignmentController.cs
rename to Source/Presentation/Kysect.Shreks.Controllers/AssignmentController.cs
index 747752406..d460faa35 100644
--- a/Source/Kysect.Shreks.WebApi/Controllers/AssignmentController.cs
+++ b/Source/Presentation/Kysect.Shreks.Controllers/AssignmentController.cs
@@ -1,13 +1,13 @@
using Kysect.Shreks.Application.Abstractions.Study.Commands;
using Kysect.Shreks.Application.Abstractions.Study.Queries;
using Kysect.Shreks.Application.Dto.Study;
+using Kysect.Shreks.Controllers.Models;
using Kysect.Shreks.Identity.Entities;
-using Kysect.Shreks.WebApi.Models;
using MediatR;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
-namespace Kysect.Shreks.WebApi.Controllers;
+namespace Kysect.Shreks.Controllers;
[Route("/api/[controller]")]
[ApiController]
diff --git a/Source/Kysect.Shreks.WebApi/Extensions/HttpContextExtensions.cs b/Source/Presentation/Kysect.Shreks.Controllers/Extensions/HttpContextExtensions.cs
similarity index 81%
rename from Source/Kysect.Shreks.WebApi/Extensions/HttpContextExtensions.cs
rename to Source/Presentation/Kysect.Shreks.Controllers/Extensions/HttpContextExtensions.cs
index 3d8308ba7..ff9845413 100644
--- a/Source/Kysect.Shreks.WebApi/Extensions/HttpContextExtensions.cs
+++ b/Source/Presentation/Kysect.Shreks.Controllers/Extensions/HttpContextExtensions.cs
@@ -1,7 +1,8 @@
using Kysect.Shreks.Application.Dto.Identity;
using Kysect.Shreks.Common.Exceptions;
+using Microsoft.AspNetCore.Http;
-namespace Kysect.Shreks.WebApi.Extensions;
+namespace Kysect.Shreks.Controllers.Extensions;
public static class HttpContextExtensions
{
diff --git a/Source/Kysect.Shreks.WebApi/Controllers/GithubAuthController.cs b/Source/Presentation/Kysect.Shreks.Controllers/GithubAuthController.cs
similarity index 90%
rename from Source/Kysect.Shreks.WebApi/Controllers/GithubAuthController.cs
rename to Source/Presentation/Kysect.Shreks.Controllers/GithubAuthController.cs
index 7ee9cf42b..88606a348 100644
--- a/Source/Kysect.Shreks.WebApi/Controllers/GithubAuthController.cs
+++ b/Source/Presentation/Kysect.Shreks.Controllers/GithubAuthController.cs
@@ -1,12 +1,12 @@
-using System.Security.Claims;
-using Kysect.Shreks.Application.Abstractions.Users.Commands;
+using Kysect.Shreks.Application.Abstractions.Users.Commands;
using Kysect.Shreks.Identity.Entities;
using MediatR;
using Microsoft.AspNetCore.Authentication;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
+using System.Security.Claims;
-namespace Kysect.Shreks.WebApi.Controllers;
+namespace Kysect.Shreks.Controllers;
[ApiController]
[Route("api/auth/github")]
diff --git a/Source/Kysect.Shreks.WebApi/Controllers/GithubManagementController.cs b/Source/Presentation/Kysect.Shreks.Controllers/GithubManagementController.cs
similarity index 96%
rename from Source/Kysect.Shreks.WebApi/Controllers/GithubManagementController.cs
rename to Source/Presentation/Kysect.Shreks.Controllers/GithubManagementController.cs
index 47d1ad33c..c2c93ffce 100644
--- a/Source/Kysect.Shreks.WebApi/Controllers/GithubManagementController.cs
+++ b/Source/Presentation/Kysect.Shreks.Controllers/GithubManagementController.cs
@@ -4,7 +4,7 @@
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
-namespace Kysect.Shreks.WebApi.Controllers
+namespace Kysect.Shreks.Controllers
{
[Route("api/[controller]")]
[ApiController]
diff --git a/Source/Kysect.Shreks.WebApi/Controllers/GoogleController.cs b/Source/Presentation/Kysect.Shreks.Controllers/GoogleController.cs
similarity index 65%
rename from Source/Kysect.Shreks.WebApi/Controllers/GoogleController.cs
rename to Source/Presentation/Kysect.Shreks.Controllers/GoogleController.cs
index f64d4b5f6..cedc75d7a 100644
--- a/Source/Kysect.Shreks.WebApi/Controllers/GoogleController.cs
+++ b/Source/Presentation/Kysect.Shreks.Controllers/GoogleController.cs
@@ -1,16 +1,15 @@
-using Kysect.Shreks.Application.TableManagement;
-using Kysect.Shreks.Integration.Google;
+using Kysect.Shreks.Application.Abstractions.Google;
using Microsoft.AspNetCore.Mvc;
-namespace Kysect.Shreks.WebApi.Controllers
+namespace Kysect.Shreks.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class GoogleController : ControllerBase
{
- private readonly TableUpdateQueue _tableUpdate;
+ private readonly ITableUpdateQueue _tableUpdate;
- public GoogleController(TableUpdateQueue tableUpdate)
+ public GoogleController(ITableUpdateQueue tableUpdate)
{
_tableUpdate = tableUpdate;
}
diff --git a/Source/Kysect.Shreks.WebApi/Controllers/GroupAssignmentController.cs b/Source/Presentation/Kysect.Shreks.Controllers/GroupAssignmentController.cs
similarity index 97%
rename from Source/Kysect.Shreks.WebApi/Controllers/GroupAssignmentController.cs
rename to Source/Presentation/Kysect.Shreks.Controllers/GroupAssignmentController.cs
index a16010910..e0ff2be1b 100644
--- a/Source/Kysect.Shreks.WebApi/Controllers/GroupAssignmentController.cs
+++ b/Source/Presentation/Kysect.Shreks.Controllers/GroupAssignmentController.cs
@@ -6,7 +6,7 @@
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
-namespace Kysect.Shreks.WebApi.Controllers
+namespace Kysect.Shreks.Controllers
{
[Route("api/[controller]")]
[ApiController]
diff --git a/Source/Presentation/Kysect.Shreks.Controllers/IControllerProjectMarker.cs b/Source/Presentation/Kysect.Shreks.Controllers/IControllerProjectMarker.cs
new file mode 100644
index 000000000..57f1cd3ec
--- /dev/null
+++ b/Source/Presentation/Kysect.Shreks.Controllers/IControllerProjectMarker.cs
@@ -0,0 +1,5 @@
+namespace Kysect.Shreks.Controllers;
+
+public interface IControllersProjectMarker
+{
+}
\ No newline at end of file
diff --git a/Source/Kysect.Shreks.WebApi/Controllers/IdentityController.cs b/Source/Presentation/Kysect.Shreks.Controllers/IdentityController.cs
similarity index 95%
rename from Source/Kysect.Shreks.WebApi/Controllers/IdentityController.cs
rename to Source/Presentation/Kysect.Shreks.Controllers/IdentityController.cs
index 4fba6fa37..3c275b8e6 100644
--- a/Source/Kysect.Shreks.WebApi/Controllers/IdentityController.cs
+++ b/Source/Presentation/Kysect.Shreks.Controllers/IdentityController.cs
@@ -1,12 +1,12 @@
using Kysect.Shreks.Application.Abstractions.Identity.Commands;
using Kysect.Shreks.Application.Abstractions.Identity.Queries;
+using Kysect.Shreks.Controllers.Models;
using Kysect.Shreks.Identity.Entities;
-using Kysect.Shreks.WebApi.Models;
using MediatR;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
-namespace Kysect.Shreks.WebApi.Controllers;
+namespace Kysect.Shreks.Controllers;
[ApiController]
[Route("api/identity")]
diff --git a/Source/Kysect.Shreks.WebApi/Controllers/InternalController.cs b/Source/Presentation/Kysect.Shreks.Controllers/InternalController.cs
similarity index 93%
rename from Source/Kysect.Shreks.WebApi/Controllers/InternalController.cs
rename to Source/Presentation/Kysect.Shreks.Controllers/InternalController.cs
index b27620ac7..333cf6448 100644
--- a/Source/Kysect.Shreks.WebApi/Controllers/InternalController.cs
+++ b/Source/Presentation/Kysect.Shreks.Controllers/InternalController.cs
@@ -1,12 +1,12 @@
-using System.Net;
-using Kysect.Shreks.Identity.Entities;
+using Kysect.Shreks.Identity.Entities;
using Kysect.Shreks.Integration.Github.Helpers;
using MediatR;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
+using System.Net;
using static Kysect.Shreks.Application.Abstractions.Internal.SeedTestData;
-namespace Kysect.Shreks.WebApi.Controllers;
+namespace Kysect.Shreks.Controllers;
[ApiController]
[Route("api/internal/")]
diff --git a/Source/Presentation/Kysect.Shreks.Controllers/Kysect.Shreks.Controllers.csproj b/Source/Presentation/Kysect.Shreks.Controllers/Kysect.Shreks.Controllers.csproj
new file mode 100644
index 000000000..70b68a04d
--- /dev/null
+++ b/Source/Presentation/Kysect.Shreks.Controllers/Kysect.Shreks.Controllers.csproj
@@ -0,0 +1,21 @@
+
+
+
+ net6.0
+ enable
+ enable
+ latest
+ True
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Source/Kysect.Shreks.WebApi/Models/AdminModel.cs b/Source/Presentation/Kysect.Shreks.Controllers/Models/AdminModel.cs
similarity index 72%
rename from Source/Kysect.Shreks.WebApi/Models/AdminModel.cs
rename to Source/Presentation/Kysect.Shreks.Controllers/Models/AdminModel.cs
index 6597efdfe..0ea8efd19 100644
--- a/Source/Kysect.Shreks.WebApi/Models/AdminModel.cs
+++ b/Source/Presentation/Kysect.Shreks.Controllers/Models/AdminModel.cs
@@ -1,4 +1,4 @@
-namespace Kysect.Shreks.WebApi.Models;
+namespace Kysect.Shreks.Controllers.Models;
public class AdminModel
{
diff --git a/Source/Kysect.Shreks.WebApi/Models/CreateAssignmentRequest.cs b/Source/Presentation/Kysect.Shreks.Controllers/Models/CreateAssignmentRequest.cs
similarity index 76%
rename from Source/Kysect.Shreks.WebApi/Models/CreateAssignmentRequest.cs
rename to Source/Presentation/Kysect.Shreks.Controllers/Models/CreateAssignmentRequest.cs
index 2f1552066..92c22adcd 100644
--- a/Source/Kysect.Shreks.WebApi/Models/CreateAssignmentRequest.cs
+++ b/Source/Presentation/Kysect.Shreks.Controllers/Models/CreateAssignmentRequest.cs
@@ -1,3 +1,3 @@
-namespace Kysect.Shreks.WebApi.Models;
+namespace Kysect.Shreks.Controllers.Models;
public record CreateAssignmentRequest(Guid SubjectCourseId, string Title, string ShortName, int Order, double MinPoints, double MaxPoints);
\ No newline at end of file
diff --git a/Source/Kysect.Shreks.WebApi/Models/LoginRequest.cs b/Source/Presentation/Kysect.Shreks.Controllers/Models/LoginRequest.cs
similarity index 58%
rename from Source/Kysect.Shreks.WebApi/Models/LoginRequest.cs
rename to Source/Presentation/Kysect.Shreks.Controllers/Models/LoginRequest.cs
index 3ba39ce78..63005ff8e 100644
--- a/Source/Kysect.Shreks.WebApi/Models/LoginRequest.cs
+++ b/Source/Presentation/Kysect.Shreks.Controllers/Models/LoginRequest.cs
@@ -1,3 +1,3 @@
-namespace Kysect.Shreks.WebApi.Models;
+namespace Kysect.Shreks.Controllers.Models;
public record LoginRequest(string Username, string Password);
\ No newline at end of file
diff --git a/Source/Kysect.Shreks.WebApi/Models/LoginResponse.cs b/Source/Presentation/Kysect.Shreks.Controllers/Models/LoginResponse.cs
similarity index 68%
rename from Source/Kysect.Shreks.WebApi/Models/LoginResponse.cs
rename to Source/Presentation/Kysect.Shreks.Controllers/Models/LoginResponse.cs
index fc07fb312..9db84799c 100644
--- a/Source/Kysect.Shreks.WebApi/Models/LoginResponse.cs
+++ b/Source/Presentation/Kysect.Shreks.Controllers/Models/LoginResponse.cs
@@ -1,3 +1,3 @@
-namespace Kysect.Shreks.WebApi.Models;
+namespace Kysect.Shreks.Controllers.Models;
public record LoginResponse(string Token, DateTime Expires, IReadOnlyCollection Roles);
\ No newline at end of file
diff --git a/Source/Kysect.Shreks.WebApi/Models/RegisterUserRequest.cs b/Source/Presentation/Kysect.Shreks.Controllers/Models/RegisterUserRequest.cs
similarity index 61%
rename from Source/Kysect.Shreks.WebApi/Models/RegisterUserRequest.cs
rename to Source/Presentation/Kysect.Shreks.Controllers/Models/RegisterUserRequest.cs
index 1493ab5f5..685e7859a 100644
--- a/Source/Kysect.Shreks.WebApi/Models/RegisterUserRequest.cs
+++ b/Source/Presentation/Kysect.Shreks.Controllers/Models/RegisterUserRequest.cs
@@ -1,3 +1,3 @@
-namespace Kysect.Shreks.WebApi.Models;
+namespace Kysect.Shreks.Controllers.Models;
public record RegisterUserRequest(string Username, string Password);
\ No newline at end of file
diff --git a/Source/Kysect.Shreks.WebApi/Controllers/StudentController.cs b/Source/Presentation/Kysect.Shreks.Controllers/StudentController.cs
similarity index 98%
rename from Source/Kysect.Shreks.WebApi/Controllers/StudentController.cs
rename to Source/Presentation/Kysect.Shreks.Controllers/StudentController.cs
index ba82ffc9a..9032b9fed 100644
--- a/Source/Kysect.Shreks.WebApi/Controllers/StudentController.cs
+++ b/Source/Presentation/Kysect.Shreks.Controllers/StudentController.cs
@@ -6,7 +6,7 @@
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
-namespace Kysect.Shreks.WebApi.Controllers;
+namespace Kysect.Shreks.Controllers;
[Route("api/[controller]")]
[ApiController]
diff --git a/Source/Kysect.Shreks.WebApi/Controllers/StudyGroupController.cs b/Source/Presentation/Kysect.Shreks.Controllers/StudyGroupController.cs
similarity index 97%
rename from Source/Kysect.Shreks.WebApi/Controllers/StudyGroupController.cs
rename to Source/Presentation/Kysect.Shreks.Controllers/StudyGroupController.cs
index b39b440f1..684ee1bc7 100644
--- a/Source/Kysect.Shreks.WebApi/Controllers/StudyGroupController.cs
+++ b/Source/Presentation/Kysect.Shreks.Controllers/StudyGroupController.cs
@@ -6,7 +6,7 @@
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
-namespace Kysect.Shreks.WebApi.Controllers;
+namespace Kysect.Shreks.Controllers;
[Route("api/[controller]")]
[ApiController]
diff --git a/Source/Kysect.Shreks.WebApi/Controllers/SubjectController.cs b/Source/Presentation/Kysect.Shreks.Controllers/SubjectController.cs
similarity index 97%
rename from Source/Kysect.Shreks.WebApi/Controllers/SubjectController.cs
rename to Source/Presentation/Kysect.Shreks.Controllers/SubjectController.cs
index c70579cc1..d17519129 100644
--- a/Source/Kysect.Shreks.WebApi/Controllers/SubjectController.cs
+++ b/Source/Presentation/Kysect.Shreks.Controllers/SubjectController.cs
@@ -6,7 +6,7 @@
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
-namespace Kysect.Shreks.WebApi.Controllers;
+namespace Kysect.Shreks.Controllers;
[Route("api/[controller]")]
[ApiController]
diff --git a/Source/Kysect.Shreks.WebApi/Controllers/SubjectCourseController.cs b/Source/Presentation/Kysect.Shreks.Controllers/SubjectCourseController.cs
similarity index 98%
rename from Source/Kysect.Shreks.WebApi/Controllers/SubjectCourseController.cs
rename to Source/Presentation/Kysect.Shreks.Controllers/SubjectCourseController.cs
index 689c881aa..79d13c070 100644
--- a/Source/Kysect.Shreks.WebApi/Controllers/SubjectCourseController.cs
+++ b/Source/Presentation/Kysect.Shreks.Controllers/SubjectCourseController.cs
@@ -7,7 +7,7 @@
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
-namespace Kysect.Shreks.WebApi.Controllers;
+namespace Kysect.Shreks.Controllers;
[Route("api/[controller]")]
[ApiController]
diff --git a/Source/Kysect.Shreks.WebApi/Controllers/SubjectCourseGroupController.cs b/Source/Presentation/Kysect.Shreks.Controllers/SubjectCourseGroupController.cs
similarity index 97%
rename from Source/Kysect.Shreks.WebApi/Controllers/SubjectCourseGroupController.cs
rename to Source/Presentation/Kysect.Shreks.Controllers/SubjectCourseGroupController.cs
index 21e0db69e..99694e0a7 100644
--- a/Source/Kysect.Shreks.WebApi/Controllers/SubjectCourseGroupController.cs
+++ b/Source/Presentation/Kysect.Shreks.Controllers/SubjectCourseGroupController.cs
@@ -6,7 +6,7 @@
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
-namespace Kysect.Shreks.WebApi.Controllers;
+namespace Kysect.Shreks.Controllers;
[Route("api/[controller]")]
[ApiController]
diff --git a/Source/Kysect.Shreks.WebApi/Controllers/UserController.cs b/Source/Presentation/Kysect.Shreks.Controllers/UserController.cs
similarity index 95%
rename from Source/Kysect.Shreks.WebApi/Controllers/UserController.cs
rename to Source/Presentation/Kysect.Shreks.Controllers/UserController.cs
index 27c1b1dc3..4b9af9017 100644
--- a/Source/Kysect.Shreks.WebApi/Controllers/UserController.cs
+++ b/Source/Presentation/Kysect.Shreks.Controllers/UserController.cs
@@ -2,13 +2,13 @@
using Kysect.Shreks.Application.Abstractions.Users.Commands;
using Kysect.Shreks.Application.Abstractions.Users.Queries;
using Kysect.Shreks.Application.Dto.Users;
+using Kysect.Shreks.Controllers.Extensions;
using Kysect.Shreks.Identity.Entities;
-using Kysect.Shreks.WebApi.Extensions;
using MediatR;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
-namespace Kysect.Shreks.WebApi.Controllers;
+namespace Kysect.Shreks.Controllers;
[ApiController]
[Route("api/[controller]")]