public ActorMessagePublisher(IDbConnectionFactory connectionFactory, ISystemDateTimeProvider systemDateTimeProvider, IUnitOfWorkCallback unitOfWorkCallback, IJsonSerializer jsonSerializer)
 {
     _connectionFactory      = connectionFactory ?? throw new ArgumentNullException(nameof(connectionFactory));
     _systemDateTimeProvider = systemDateTimeProvider ?? throw new ArgumentNullException(nameof(systemDateTimeProvider));
     _unitOfWorkCallback     = unitOfWorkCallback ?? throw new ArgumentNullException(nameof(unitOfWorkCallback));
     _jsonSerializer         = jsonSerializer;
 }
Exemplo n.º 2
0
 public RequestChangeSupplierCommandHandler(
     IRuleEngine <RequestChangeOfSupplier> ruleEngine,
     IMeteringPointRepository meteringPointRepository,
     ISystemDateTimeProvider systemTimeProvider,
     IEnergySupplierRepository energySupplierRepository)
 {
     _ruleEngine = ruleEngine ?? throw new ArgumentNullException(nameof(ruleEngine));
     _meteringPointRepository  = meteringPointRepository ?? throw new ArgumentNullException(nameof(meteringPointRepository));
     _systemTimeProvider       = systemTimeProvider ?? throw new ArgumentNullException(nameof(systemTimeProvider));
     _energySupplierRepository = energySupplierRepository ?? throw new ArgumentNullException(nameof(energySupplierRepository));
 }
Exemplo n.º 3
0
 public Greeter(ISystemDateTimeProvider systemDateTimeProvider = null)
 {
     _systemDateProvider = systemDateTimeProvider;
 }
Exemplo n.º 4
0
        public BusinessRulesValidationResult CanChangeSupplier(MarketParticipantMrid energySupplierMrid, Instant effectuationDate, ISystemDateTimeProvider systemDateTimeProvider)
        {
            if (energySupplierMrid is null)
            {
                throw new ArgumentNullException(nameof(energySupplierMrid));
            }

            if (systemDateTimeProvider == null)
            {
                throw new ArgumentNullException(nameof(systemDateTimeProvider));
            }

            var rules = new List <IBusinessRule>()
            {
                new MeteringPointMustBeEnergySuppliableRule(_meteringPointType),
                new ProductionMeteringPointMustBeObligatedRule(_meteringPointType, _isProductionObligated),
                new CannotBeInStateOfClosedDownRule(_physicalState),
                new MustHaveEnergySupplierAssociatedRule(_relationships.AsReadOnly()),
                new ChangeOfSupplierRegisteredOnSameDateIsNotAllowedRule(_relationships.AsReadOnly(), effectuationDate),
                new MoveInRegisteredOnSameDateIsNotAllowedRule(_relationships.AsReadOnly(), effectuationDate),
                new MoveOutRegisteredOnSameDateIsNotAllowedRule(_relationships.AsReadOnly(), effectuationDate),
                new EffectuationDateCannotBeInThePastRule(effectuationDate, systemDateTimeProvider.Now()),
            };

            return(new BusinessRulesValidationResult(rules));
        }
Exemplo n.º 5
0
        public void RegisterChangeOfEnergySupplier(MarketParticipantMrid energySupplierMrid, Instant effectuationDate, ISystemDateTimeProvider systemDateTimeProvider)
        {
            if (!CanChangeSupplier(energySupplierMrid, effectuationDate, systemDateTimeProvider).Success)
            {
                throw new InvalidOperationException();
            }

            _relationships.Add(new Relationship(energySupplierMrid, RelationshipType.EnergySupplier, effectuationDate));
            //TODO: Refactor along with new Comsumer/Supplier concepts
            AddDomainEvent(new EnergySupplierChangeRegistered(GsrnNumber, new ProcessId("TODO"), effectuationDate));
        }