private Result <TSuccess, OperationError> Modify <TSuccess>(int id, Func <DataProcessingRegistration, Result <TSuccess, OperationError> > mutation) { using var transaction = _transactionManager.Begin(IsolationLevel.ReadCommitted); var result = _repository.GetById(id); if (result.IsNone) { return(new OperationError(OperationFailure.NotFound)); } var registration = result.Value; if (!_authorizationContext.AllowModify(registration)) { return(new OperationError(OperationFailure.Forbidden)); } var mutationResult = mutation(registration); if (mutationResult.Ok) { _repository.Update(registration); transaction.Commit(); } return(mutationResult); }
public void Handle(EntityDeletedEvent <ItSystemUsage> domainEvent) { var usage = domainEvent.Entity; foreach (var dataProcessingRegistration in usage.AssociatedDataProcessingRegistrations.ToList()) { _assignmentService.RemoveSystem(dataProcessingRegistration, usage.ItSystemId); _dataProcessingRegistrationRepository.Update(dataProcessingRegistration); } }