namespace Brizco.Repository.Handlers.Activities; public class UpdateActivityCommandHandler(IRepositoryWrapper repositoryWrapper, ICurrentUserService currentUserService) : IRequestHandler { public async Task Handle(UpdateActivityCommand request, CancellationToken cancellationToken) { var task = await repositoryWrapper.SetRepository() .TableNoTracking.FirstOrDefaultAsync(s => s.Id == request.Id,cancellationToken); if (task == null) throw new AppException("Task not found", ApiResultStatusCode.NotFound); if (currentUserService.ComplexId == null) throw new AppException("ComplexId is null", ApiResultStatusCode.NotFound); if (!Guid.TryParse(currentUserService.ComplexId,out Guid complexId)) throw new AppException("ComplexId is wrong", ApiResultStatusCode.NotFound); try { await repositoryWrapper.BeginTransaction(cancellationToken); var newTask = Domain.Entities.Tasks.Activity.Create( request.Status, request.DoneAt, request.PerformanceDescription, request.Title, request.Description, request.Type, request.IsDisposable, request.SetFor, request.HasDisposed, request.Amount, request.AmountType, complexId, request.ScheduleType); newTask.Id = request.Id; newTask.CreatedAt = task.CreatedAt; newTask.CreatedBy = task.CreatedBy; newTask.SetUser(request.UserId); newTask.SetShiftPlan(request.ShiftPlanId); repositoryWrapper.SetRepository() .Update(newTask); await repositoryWrapper.SaveChangesAsync(cancellationToken); await repositoryWrapper.CommitAsync(cancellationToken); return true; } catch (Exception ) { await repositoryWrapper.RollBackAsync(cancellationToken); throw; } } }