private async Task Seed(string energySupplierGlnNumber, string meteringPointGsrnNumber)
        {
            //TODO: Need to separate customers from energy suppliers - This does not make any sense at all
            var customerId = "Unknown";
            var customer   = new EnergySupplier(new GlnNumber(customerId));

            _energySupplierRepository.Add(customer);

            var energySupplierGln = new GlnNumber(energySupplierGlnNumber);
            var energySupplier    = new EnergySupplier(energySupplierGln);

            _energySupplierRepository.Add(energySupplier);

            await _unitOfWorkCallback.CommitAsync().ConfigureAwait(false);

            var meteringPoint =
                MeteringPoint.CreateProduction(
                    GsrnNumber.Create(meteringPointGsrnNumber), true);

            var systemTimeProvider = _serviceProvider.GetRequiredService <ISystemDateTimeProvider>();

            meteringPoint.RegisterMoveIn(new MarketParticipantMrid(customerId), new MarketParticipantMrid(energySupplierGlnNumber), systemTimeProvider.Now().Minus(Duration.FromDays(365)));
            meteringPoint.ActivateMoveIn(new MarketParticipantMrid(customerId), new MarketParticipantMrid(energySupplierGlnNumber));
            _meteringPointRepository.Add(meteringPoint);
            await _unitOfWorkCallback.CommitAsync().ConfigureAwait(false);
        }
        public async Task <MeteringPoint> GetByGsrnNumberAsync(GsrnNumber gsrnNumber)
        {
            if (gsrnNumber is null)
            {
                throw new ArgumentNullException(nameof(gsrnNumber));
            }

            var meteringPointQuery =
                $"SELECT * FROM [dbo].[MarketEvaluationPoints]" +
                "WHERE GsrnNumber = @GsrnNumber";

            var meteringPoint =
                await Connection.QueryFirstOrDefaultAsync <MarketEvaluationPointDataModel>(
                    meteringPointQuery,
                    new
            {
                GsrnNumber = gsrnNumber.Value,
            }).ConfigureAwait(false);

            if (meteringPoint is null)
            {
                return(null !);
            }

            var relationships = await GetRelationshipsDataModelAsync(meteringPoint.Id).ConfigureAwait(false);

            return(MeteringPoint.CreateFrom(CreateMarketEvaluationPointSnapshot(meteringPoint, relationships)));
        }
示例#3
0
        private Task <MeteringPoint> GetMeteringPointAsync(string gsrnNumber)
        {
            var meteringPointId = GsrnNumber.Create(gsrnNumber);
            var meteringPoint   =
                _meteringPointRepository.GetByGsrnNumberAsync(meteringPointId);

            return(meteringPoint);
        }
示例#4
0
        private (ProcessId, GsrnNumber, Instant) CreateTestValues()
        {
            var processId     = new ProcessId(Guid.NewGuid().ToString());
            var gsrnNumber    = GsrnNumber.Create("571234567891234568");
            var effectiveDate = SystemClock.Instance.GetCurrentInstant().Plus(Duration.FromDays(60));

            return(processId, gsrnNumber, effectiveDate);
        }
 public MeteringPointClosedDown(GsrnNumber gsrnNumber)
 {
     GsrnNumber = gsrnNumber;
 }
示例#6
0
 public MeteringPointCreated(GsrnNumber gsrnNumber, MeteringPointType meteringPointType)
 {
     GsrnNumber        = gsrnNumber;
     MeteringPointType = meteringPointType;
 }
 public void Should_create_when_gsrn_value_is_valid(string gsrnValue)
 {
     Assert.NotNull(GsrnNumber.Create(gsrnValue));
 }
 public void Should_throw_when_length_is_invalid(string gsrnValue)
 {
     Assert.Throws <InvalidMeteringPointIdRuleException>(() => GsrnNumber.Create(gsrnValue));
 }
示例#9
0
 private static GsrnNumber CreateGsrnNumber()
 {
     return(GsrnNumber.Create("571234567891234568"));
 }
 public EnergySupplierChangeRegistered(GsrnNumber gsrnNumber, ProcessId processId, Instant effectiveDate)
 {
     GsrnNumber    = gsrnNumber;
     ProcessId     = processId;
     EffectiveDate = effectiveDate;
 }