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();