/
softailor
/
gridient
Обзор
Документация
Войти
/
softailor
/
gridient
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
backend/Gridient.Core/Features/FieldGroups/Commands/UpdateFieldGroupCommandHandler.cs
53 строки
2 KB
Jenkins
Auto add
18 фев 2026, 10:19
18 фев 2026, 10:19
1e6c4f8
Код
Авторство
О чём код?
using Gridient.Core.Exceptions; using Gridient.Core.Models; using Gridient.Core.Repositories; using MediatR; namespace Gridient.Core.Features.FieldGroups.Commands { /// <summary> /// Обработчик команды для обновления группы полей /// </summary> public class UpdateFieldGroupCommandHandler : IRequestHandler<UpdateFieldGroupCommand, int> { private readonly ListsRepositoryFactory _factory; public UpdateFieldGroupCommandHandler(ListsRepositoryFactory factory) { _factory = factory; } public async Task<int> Handle(UpdateFieldGroupCommand request, CancellationToken cancellationToken) { var group = request.Group; group.ListId = request.ListId; group.Id = request.GroupId; if (group.Id > 0) { await ValidateFieldGroupBelongsToList(request.ListId, group.Id, cancellationToken); } return await _factory.FieldGroupsRepository.UpdateGroup(group, request.ListId, cancellationToken); } private async Task ValidateFieldGroupBelongsToList(int listId, int groupId, CancellationToken cancellationToken) { var actualListId = await GetFieldGroupListIdById(groupId, cancellationToken); if (actualListId != listId) { throw ListsException.Error($"Группа полей с ID {groupId} не принадлежит списку с ID {listId}"); } } private async Task<int> GetFieldGroupListIdById(int id, CancellationToken cancellationToken) { var entities = await _factory.FieldGroupsRepository .GetEntitiesByQueryAsync(e => e.Id == id, cancellationToken); var group = entities.FirstOrDefault(); if (group == null) throw ListsException.EntityNotFound(id); return group.ListId; } } }