diff --git a/ApplicationSystem/ApplicationSystem.csproj b/ApplicationSystem/ApplicationSystem.csproj index 4a49ca1..9231962 100644 --- a/ApplicationSystem/ApplicationSystem.csproj +++ b/ApplicationSystem/ApplicationSystem.csproj @@ -21,6 +21,7 @@ + diff --git a/ApplicationSystem/BusinessLogic/CommandHandlers/ApplicationCommandHandlers/ApplicationCreateCommandHandler.cs b/ApplicationSystem/BusinessLogic/CommandHandlers/ApplicationCommandHandlers/ApplicationCreateCommandHandler.cs new file mode 100644 index 0000000..c7c220a --- /dev/null +++ b/ApplicationSystem/BusinessLogic/CommandHandlers/ApplicationCommandHandlers/ApplicationCreateCommandHandler.cs @@ -0,0 +1,47 @@ +using ApplicationSystem.Database.Applications.Database.Context; +using ApplicationSystem.Identity.Database.Models; +using ApplicationSystem.MediatRHelper.AbstractHandlers; +using ApplicationSystem.MediatRHelper.Models; +using ApplicationSystem.Models.Commands.ApplicationCommands; +using Microsoft.AspNetCore.Identity; + +namespace ApplicationSystem.BusinessLogic.CommandHandlers.ApplicationCommandHandlers +{ + /// + /// Реализация создания заявки + /// + /// + public class ApplicationCreateCommandHandler( + ILogger logger, + ApplicationContext context, + UserManager userManager) + : AbstractCommandHandler(logger) + { + private readonly ApplicationContext _context = context; + private readonly UserManager _userManager = userManager; + + protected override async Task HandleAsync( + ApplicationCreateCommand request, + CancellationToken cancellationToken) + { + Guid? imageId = null; + + if (request.File != null) + { + // ToDo + } + + await _context.Applications.AddAsync(new() + { + CreatorId = request.UserId, + Text = request.Text, + TypeId = request.TypeId, + ImageId = imageId + }, cancellationToken); + + await _context.SaveChangesAsync(cancellationToken); + + return Ok(); + } + } +} diff --git a/ApplicationSystem/Models/Commands/ApplicationCommands/ApplicationCreateCommand.cs b/ApplicationSystem/Models/Commands/ApplicationCommands/ApplicationCreateCommand.cs index cc20eff..a8102b6 100644 --- a/ApplicationSystem/Models/Commands/ApplicationCommands/ApplicationCreateCommand.cs +++ b/ApplicationSystem/Models/Commands/ApplicationCommands/ApplicationCreateCommand.cs @@ -9,5 +9,9 @@ namespace ApplicationSystem.Models.Commands.ApplicationCommands public record ApplicationCreateCommand : ApplicationCreateRequest, IRequestModel { + /// + /// Идентификатор пользователя + /// + public Guid UserId { get; set; } } } diff --git a/ApplicationSystem/Models/Enums/ApplicationStatus.cs b/ApplicationSystem/Models/Enums/ApplicationStatus.cs new file mode 100644 index 0000000..5a53cf0 --- /dev/null +++ b/ApplicationSystem/Models/Enums/ApplicationStatus.cs @@ -0,0 +1,18 @@ +namespace ApplicationSystem.Models.Enums +{ + /// + /// Статус заявки + /// + public enum ApplicationStatus + { + None = 0, + + Open = 1, + + InWork = 2, + + Сompleted = 3, + + Close = 4, + } +}