Ejemplo n.º 1
0
        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);
            }
        }