diff --git a/ApplicationSystem.Contracts/ApplicationSystem.Contracts.csproj b/ApplicationSystem.Contracts/ApplicationSystem.Contracts.csproj
index fa71b7a..8bb6da0 100644
--- a/ApplicationSystem.Contracts/ApplicationSystem.Contracts.csproj
+++ b/ApplicationSystem.Contracts/ApplicationSystem.Contracts.csproj
@@ -6,4 +6,8 @@
enable
+
+
+
+
diff --git a/ApplicationSystem.Contracts/Models/Application/ApplicationCreateRequest.cs b/ApplicationSystem.Contracts/Models/Application/ApplicationCreateRequest.cs
new file mode 100644
index 0000000..36d4d3e
--- /dev/null
+++ b/ApplicationSystem.Contracts/Models/Application/ApplicationCreateRequest.cs
@@ -0,0 +1,29 @@
+using Microsoft.AspNetCore.Http;
+using System.ComponentModel.DataAnnotations;
+
+namespace ApplicationSystem.Contracts.Models.Application
+{
+ ///
+ /// Запрос на создание заявки
+ ///
+ public record ApplicationCreateRequest
+ {
+ ///
+ /// Содержимое
+ ///
+ [Required]
+ [StringLength(1000)]
+ public string Text { get; init; } = null!;
+
+ ///
+ /// Тип заявки
+ ///
+ [Required]
+ public Guid TypeId { get; init; }
+
+ ///
+ /// Файл
+ ///
+ public IFormFile? File { get; set; }
+ }
+}
diff --git a/ApplicationSystem/ApplicationSystem.csproj b/ApplicationSystem/ApplicationSystem.csproj
index 897971a..4a49ca1 100644
--- a/ApplicationSystem/ApplicationSystem.csproj
+++ b/ApplicationSystem/ApplicationSystem.csproj
@@ -20,8 +20,13 @@
+
+
+
+
+
diff --git a/ApplicationSystem/Controllers/ApplicationsController.cs b/ApplicationSystem/Controllers/ApplicationsController.cs
index 8f70b72..09ed748 100644
--- a/ApplicationSystem/Controllers/ApplicationsController.cs
+++ b/ApplicationSystem/Controllers/ApplicationsController.cs
@@ -1,4 +1,6 @@
-using Asp.Versioning;
+using ApplicationSystem.Models.Commands.ApplicationCommands;
+using Asp.Versioning;
+using MediatR;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
@@ -8,13 +10,16 @@ namespace ApplicationSystem.Controllers
[Authorize]
[ApiVersion("1.0")]
[Route("api/v{version:apiVersion}/[controller]")]
- public class ApplicationsController : ControllerBase
+ public class ApplicationsController(IMediator mediator) : ControllerBase
{
+ private readonly IMediator _mediator = mediator;
+
[HttpPost]
- public async Task CreateApplicationAsync()
+ public async Task CreateApplicationAsync(
+ [FromForm] ApplicationCreateCommand request)
{
- await Task.Delay(100);
- return Ok();
+ var response = await _mediator.Send(request);
+ return StatusCode((int)response.ResponseStatusCode);
}
[HttpGet]
diff --git a/ApplicationSystem/Models/Commands/ApplicationCommands/ApplicationCreateCommand.cs b/ApplicationSystem/Models/Commands/ApplicationCommands/ApplicationCreateCommand.cs
new file mode 100644
index 0000000..cc20eff
--- /dev/null
+++ b/ApplicationSystem/Models/Commands/ApplicationCommands/ApplicationCreateCommand.cs
@@ -0,0 +1,13 @@
+using ApplicationSystem.Contracts.Models.Application;
+using ApplicationSystem.MediatRHelper.Models;
+
+namespace ApplicationSystem.Models.Commands.ApplicationCommands
+{
+ ///
+ /// Запрос на создание заявки
+ ///
+ public record ApplicationCreateCommand
+ : ApplicationCreateRequest, IRequestModel
+ {
+ }
+}
diff --git a/ApplicationSystem/Models/Queries/AplicationQueries/ApplicationCreateCommand.cs b/ApplicationSystem/Models/Queries/AplicationQueries/ApplicationCreateCommand.cs
deleted file mode 100644
index 376eaed..0000000
--- a/ApplicationSystem/Models/Queries/AplicationQueries/ApplicationCreateCommand.cs
+++ /dev/null
@@ -1,6 +0,0 @@
-namespace ApplicationSystem.Models.Queries.AplicationQueries
-{
- public class ApplicationCreateCommand
- {
- }
-}
diff --git a/ApplicationSystem/Program.cs b/ApplicationSystem/Program.cs
index 4ad5dfa..b5f5472 100644
--- a/ApplicationSystem/Program.cs
+++ b/ApplicationSystem/Program.cs
@@ -3,7 +3,9 @@ using ApplicationSystem.Identity.Database.Models;
var builder = WebApplication.CreateBuilder(args);
-builder.Services.AddControllers().AddNewtonsoftJson();
+builder.Services
+ .AddControllers()
+ .AddNewtonsoftJson();
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwagger();