public void TPH_BaseType()
        {
            using (var ctx = GetContext())
            {
                var mp = new MeteringPoint {
                    CreatedAt = DateTime.Now
                };
                ctx.Set <MeteringPoint>().Add(mp);
                ctx.SaveChanges();

                var contracts = new List <ContractBase>();

                var c1 = new ContractFixed
                {
                    AvpContractNr   = "c_FIX",
                    PackageFixedId  = 1,
                    PricesJson      = "{}",
                    MeteringPointId = mp.Id,
                    ClientId        = 5,
                };
                contracts.Add(c1);

                var c2 = new ContractStock {
                    AvpContractNr = "c_STX", Margin = 0.001m, PackageStockId = 2, MeteringPointId = mp.Id
                };
                contracts.Add(c2);

                var k1 = new ContractKomb1 {
                    AvpContractNr = "c_K1", PackageKomb1Id = 3, MeteringPointId = mp.Id
                };
                contracts.Add(k1);

                var k2 = new ContractKomb2 {
                    AvpContractNr = "c_K2", PackageKomb2Id = 3, Part1Margin = 0.1m, MeteringPointId = mp.Id
                };
                contracts.Add(k2);

                ctx.BulkInsert(contracts);

                var c1db = ctx.FixedContracts.OrderByDescending(x => x.Id).First();

                Assert.AreEqual(c1.AvpContractNr, c1db.AvpContractNr);
                Assert.AreEqual(c1.PackageFixedId, c1db.PackageFixedId);
                Assert.AreEqual(c1.PricesJson, c1db.PricesJson);
                Assert.AreEqual(c1.MeteringPointId, c1db.MeteringPointId);
                Assert.AreEqual(c1.ClientId, c1db.ClientId);
                Assert.AreEqual(c1.ContractNr, c1db.ContractNr);
                Assert.AreEqual(c1.ContractSignedAt, c1db.ContractSignedAt);

                var k1db = ctx.K1Contracts.OrderByDescending(x => x.Id).First();

                Assert.AreEqual(k1.AvpContractNr, k1db.AvpContractNr);
                Assert.AreEqual(k1.PackageKomb1Id, k1db.PackageKomb1Id);
                Assert.AreEqual(k1.AvpContractNr, k1db.AvpContractNr);
                Assert.AreEqual(k1.MeteringPointId, k1db.MeteringPointId);
                Assert.AreEqual(k1.ClientId, k1db.ClientId);
                Assert.AreEqual(k1.ContractNr, k1db.ContractNr);
                Assert.AreEqual(k1.ContractSignedAt, k1db.ContractSignedAt);
            }
        }
        public void TPH_SubType_NotFirst()
        {
            using (var ctx = GetContext())
            {
                var mp = new MeteringPoint {
                    CreatedAt = DateTime.Now
                };
                ctx.Set <MeteringPoint>().Add(mp);
                ctx.SaveChanges();

                var contracts = new List <ContractKomb1>();

                var k1 = new ContractKomb1 {
                    AvpContractNr = "c_K1", PackageKomb1Id = 3, MeteringPointId = mp.Id
                };
                contracts.Add(k1);

                ctx.BulkInsert(contracts);

                var k1db = ctx.K1Contracts.OrderByDescending(x => x.Id).First();

                Assert.AreEqual(k1.AvpContractNr, k1db.AvpContractNr);
                Assert.AreEqual(k1.PackageKomb1Id, k1db.PackageKomb1Id);
                Assert.AreEqual(k1.AvpContractNr, k1db.AvpContractNr);
                Assert.AreEqual(k1.MeteringPointId, k1db.MeteringPointId);
                Assert.AreEqual(k1.ClientId, k1db.ClientId);
                Assert.AreEqual(k1.ContractNr, k1db.ContractNr);
                Assert.AreEqual(k1.ContractSignedAt, k1db.ContractSignedAt);
            }
        }
        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)));
        }
        private static MarketEvaluationPointDataModel CreateDataModelFrom(MeteringPoint aggregate)
        {
            var snapshot      = aggregate.GetSnapshot();
            var relationships = snapshot.Relationships
                                .Select(r => new RelationshipDataModel(r.Id, snapshot.Id, r.MarketParticipantMrid, r.Type, r.EffectuationDate, r.State))
                                .ToList();

            return(new MarketEvaluationPointDataModel(snapshot.Id, snapshot.GsrnNumber, snapshot.MeteringPointType, relationships, snapshot.IsProductionObligated, snapshot.PhysicalState, snapshot.Version));
        }
        public void Save(MeteringPoint meteringPoint)
        {
            if (meteringPoint is null)
            {
                throw new ArgumentNullException(nameof(meteringPoint));
            }

            var dataModel = CreateDataModelFrom(meteringPoint);

            _unitOfWorkCallback.RegisterAmended(dataModel, this);
        }
        public void BulkInsertWithStreaming()
        {
            using (var ctx = GetContext())
            {
                var meteringPoint = new MeteringPoint {
                    CreatedAt = DateTime.Now
                };
                ctx.Set <MeteringPoint>().Add(meteringPoint);
                ctx.SaveChanges();


                var foos = new[] { new ContractStock {
                                       Margin = 0.1m, MeteringPointId = meteringPoint.Id
                                   } };
                var options = new BulkInsertOptions
                {
                    EnableStreaming = true,
                };
                ctx.BulkInsert(foos, options);
            }
        }
Ejemplo n.º 8
0
        private RequestChangeOfSupplierResult CheckBusinessRules(RequestChangeOfSupplier command, MeteringPoint meteringPoint)
        {
            var validationResult =
                meteringPoint.CanChangeSupplier(new MarketParticipantMrid(command.EnergySupplier.MRID !), command.StartDate, _systemTimeProvider);

            return(validationResult.Success
                ? RequestChangeOfSupplierResult.Reject(validationResult.Errors)
                : RequestChangeOfSupplierResult.Success());
        }
Ejemplo n.º 9
0
        private List <MeteringPoint> GetMeteringPointsFromEntityCollection(OrganizationServiceContext serviceContext, IQueryable <Entity> zahplunkts)
        {
            List <MeteringPoint> meteringPoints = new List <MeteringPoint>();

            foreach (Entity zahplunkt in zahplunkts)
            {
                MeteringPoint meteringPoint = new MeteringPoint();

                if (zahplunkt.Contains(MetadataDZählpunkt.METERING_POINT_ID))
                {
                    meteringPoint.Id = zahplunkt.GetAttributeValue <Guid>(MetadataDZählpunkt.METERING_POINT_ID);
                }
                if (zahplunkt.Contains(MetadataDZählpunkt.NAME))
                {
                    meteringPoint.Name = zahplunkt.GetAttributeValue <string>(MetadataDZählpunkt.NAME);
                }
                if (zahplunkt.Contains(MetadataDZählpunkt.ACCOUNT))
                {
                    EntityReference linkedAccount = zahplunkt.GetAttributeValue <EntityReference>(MetadataDZählpunkt.ACCOUNT);
                    meteringPoint.CrmAccountId   = linkedAccount.Id;
                    meteringPoint.CrmAccountName = linkedAccount.Name;

                    //GetBeitreibersByAccountId(linkedAccount.Id);
                }
                if (zahplunkt.Contains(MetadataDZählpunkt.ZAHLPUNKTBEZEICHNER))
                {
                    meteringPoint.Zählpunktbezeichner = zahplunkt.GetAttributeValue <string>(MetadataDZählpunkt.ZAHLPUNKTBEZEICHNER);
                }
                if (zahplunkt.Contains(MetadataDZählpunkt.KURZEEZEICHNUNG))
                {
                    meteringPoint.Kurzbezeichnung = zahplunkt.GetAttributeValue <string>(MetadataDZählpunkt.KURZEEZEICHNUNG);
                }
                if (zahplunkt.Contains(MetadataDZählpunkt.ANLAGENTYP))
                {
                    meteringPoint.Anlagentyp = zahplunkt.GetAttributeValue <string>(MetadataDZählpunkt.ANLAGENTYP);
                }
                if (zahplunkt.Contains(MetadataDZählpunkt.PLZ))
                {
                    meteringPoint.PLZ = zahplunkt.GetAttributeValue <string>(MetadataDZählpunkt.PLZ);
                }
                if (zahplunkt.Contains(MetadataDZählpunkt.STRASSE))
                {
                    meteringPoint.Strasse = zahplunkt.GetAttributeValue <string>(MetadataDZählpunkt.STRASSE);
                }
                if (zahplunkt.Contains(MetadataDZählpunkt.ORT))
                {
                    meteringPoint.Ort = zahplunkt.GetAttributeValue <string>(MetadataDZählpunkt.ORT);
                }
                if (zahplunkt.Contains(MetadataDZählpunkt.DATENVERSANDAKTIV))
                {
                    meteringPoint.DatenversandAktiv = zahplunkt.GetAttributeValue <bool>(MetadataDZählpunkt.DATENVERSANDAKTIV) ? "Yes" : "No";
                }
                if (zahplunkt.Contains(MetadataDZählpunkt.ZAHLVERFAHREN))
                {
                    string value = String.Empty;
                    int    code  = -1;
                    switch (zahplunkt.GetAttributeValue <OptionSetValue>(MetadataDZählpunkt.ZAHLVERFAHREN).Value)
                    {
                    case (int)MetadataDZählpunkt.OpSetZählverfahren.RLM:
                        code  = (int)MetadataDZählpunkt.OpSetZählverfahren.RLM;
                        value = MetadataDZählpunkt.OpSetZählverfahren.RLM.ToString();
                        break;

                    case (int)MetadataDZählpunkt.OpSetZählverfahren.SLP:
                        code  = (int)MetadataDZählpunkt.OpSetZählverfahren.SLP;
                        value = MetadataDZählpunkt.OpSetZählverfahren.SLP.ToString();
                        break;
                    }
                    meteringPoint.ZählverfahrenCode  = code;
                    meteringPoint.ZählverfahrenValue = value;
                }
                if (zahplunkt.Contains(MetadataDZählpunkt.UMESSUNG))
                {
                    int code; string value;
                    this.SetSetSpannungsebene(zahplunkt.GetAttributeValue <OptionSetValue>(MetadataDZählpunkt.UMESSUNG).Value,
                                              out code, out value);

                    meteringPoint.UMessungCode  = code;
                    meteringPoint.UMessungValue = value;
                }
                if (zahplunkt.Contains(MetadataDZählpunkt.UENTNAHME))
                {
                    int code; string value;
                    this.SetSetSpannungsebene(zahplunkt.GetAttributeValue <OptionSetValue>(MetadataDZählpunkt.UENTNAHME).Value,
                                              out code, out value);

                    meteringPoint.UEntnahmeCode  = code;
                    meteringPoint.UEntnahmeValue = value;
                }
                if (zahplunkt.Contains(MetadataDZählpunkt.KUNDENRUCKMELDUNG))
                {
                    meteringPoint.Kundenrückmeldung = zahplunkt.GetAttributeValue <string>(MetadataDZählpunkt.KUNDENRUCKMELDUNG);
                }
                if (zahplunkt.Contains(MetadataDZählpunkt.VNB))
                {
                    EntityReference linkedVnb = zahplunkt.GetAttributeValue <EntityReference>(MetadataDZählpunkt.VNB);
                    meteringPoint.VNBId   = linkedVnb.Id;
                    meteringPoint.VNBName = linkedVnb.Name;
                }
                if (zahplunkt.Contains(MetadataDZählpunkt.CODE))
                {
                    meteringPoint.Code = zahplunkt.GetAttributeValue <string>(MetadataDZählpunkt.CODE);
                }

                #region "Threshold Values"
                //Get the threshold for this metering point
                IQueryable <Entity>           grenzwerts = serviceContext.CreateQuery(EntityNames.Grenzwert).Where(g => g.GetAttributeValue <EntityReference>(MetadataGrenzwert.GrenzwerteZPID).Id == zahplunkt.Id);
                List <MeteringPointThreshold> meteringPointThresholds = new List <MeteringPointThreshold>();
                meteringPoint.MeteringCodeThresholds = new List <MeteringPointThreshold>();
                if (grenzwerts != null)
                {
                    Entity grenzwert = grenzwerts.ToList().FirstOrDefault();
                    if (grenzwert != null)
                    {
                        #region "System Threshold Values"
                        MeteringPointThreshold meteringPointThreshlodSystem = new MeteringPointThreshold {
                            Type = MeteringPointThresholdType.System
                        };

                        if (grenzwert.Contains(MetadataGrenzwert.Grenze))
                        {
                            meteringPointThreshlodSystem.GrenzwertBezeichner = String.Format("{0:F2}", grenzwert.GetAttributeValue <decimal>(MetadataGrenzwert.Grenze));
                        }
                        if (grenzwert.Contains(MetadataGrenzwert.GrenzwerteId))
                        {
                            meteringPointThreshlodSystem.Id = grenzwert.GetAttributeValue <Guid>(MetadataGrenzwert.GrenzwerteId);
                        }
                        if (grenzwert.Contains(MetadataGrenzwert.GültigAb))
                        {
                            meteringPointThreshlodSystem.GultingAb = grenzwert.GetAttributeValue <DateTime>(MetadataGrenzwert.GültigAb);
                        }
                        if (grenzwert.Contains(MetadataGrenzwert.GrenzwertMaxSystem))
                        {
                            meteringPointThreshlodSystem.MaximaGlobal = (grenzwert.GetAttributeValue <decimal>(MetadataGrenzwert.GrenzwertMaxSystem)).ToString();
                        }
                        if (grenzwert.Contains(MetadataGrenzwert.GrenzwertMinSystem))
                        {
                            meteringPointThreshlodSystem.MinimaGlobal = (grenzwert.GetAttributeValue <decimal>(MetadataGrenzwert.GrenzwertMinSystem)).ToString();
                        }
                        if (grenzwert.Contains(MetadataGrenzwert.GrenzwertSommerMaxSystem))
                        {
                            meteringPointThreshlodSystem.MaximaSommer = (grenzwert.GetAttributeValue <decimal>(MetadataGrenzwert.GrenzwertSommerMaxSystem)).ToString();
                        }
                        if (grenzwert.Contains(MetadataGrenzwert.GrenzwertSommerMinSystem))
                        {
                            meteringPointThreshlodSystem.MinimaSommer = (grenzwert.GetAttributeValue <decimal>(MetadataGrenzwert.GrenzwertSommerMinSystem)).ToString();
                        }
                        if (grenzwert.Contains(MetadataGrenzwert.GrenzwertWinterMaxSystem))
                        {
                            meteringPointThreshlodSystem.MaximaWinter = (grenzwert.GetAttributeValue <decimal>(MetadataGrenzwert.GrenzwertWinterMaxSystem)).ToString();
                        }
                        if (grenzwert.Contains(MetadataGrenzwert.GrenzwertWinterMinSystem))
                        {
                            meteringPointThreshlodSystem.MinimaWinter = (grenzwert.GetAttributeValue <decimal>(MetadataGrenzwert.GrenzwertWinterMinSystem)).ToString();
                        }
                        meteringPointThresholds.Add(meteringPointThreshlodSystem);
                        #endregion "System Threshold Values"

                        #region "User Threshold Values"
                        MeteringPointThreshold meteringPointThreshlodUser = new MeteringPointThreshold {
                            Type = MeteringPointThresholdType.User
                        };
                        if (grenzwert.Contains(MetadataGrenzwert.GrenzwerteId))
                        {
                            meteringPointThreshlodUser.Id = grenzwert.GetAttributeValue <Guid>(MetadataGrenzwert.GrenzwerteId);
                        }
                        if (grenzwert.Contains(MetadataGrenzwert.Grenze))
                        {
                            meteringPointThreshlodUser.GrenzwertBezeichner = String.Format("{0:F2}", grenzwert.GetAttributeValue <decimal>(MetadataGrenzwert.Grenze));
                        }
                        if (grenzwert.Contains(MetadataGrenzwert.GültigAb))
                        {
                            meteringPointThreshlodUser.GultingAb = grenzwert.GetAttributeValue <DateTime>(MetadataGrenzwert.GültigAb);
                        }
                        if (grenzwert.Contains(MetadataGrenzwert.GrenzwertMaxUser))
                        {
                            meteringPointThreshlodUser.MaximaGlobal = (grenzwert.GetAttributeValue <decimal>(MetadataGrenzwert.GrenzwertMaxUser)).ToString();
                        }
                        if (grenzwert.Contains(MetadataGrenzwert.GrenzwertMinUser))
                        {
                            meteringPointThreshlodUser.MinimaGlobal = (grenzwert.GetAttributeValue <decimal>(MetadataGrenzwert.GrenzwertMinUser)).ToString();
                        }
                        if (grenzwert.Contains(MetadataGrenzwert.GrenzwertSommerMaxUser))
                        {
                            meteringPointThreshlodUser.MaximaSommer = (grenzwert.GetAttributeValue <decimal>(MetadataGrenzwert.GrenzwertSommerMaxUser)).ToString();
                        }
                        if (grenzwert.Contains(MetadataGrenzwert.GrenzwertSommerMinUser))
                        {
                            meteringPointThreshlodUser.MinimaSommer = (grenzwert.GetAttributeValue <decimal>(MetadataGrenzwert.GrenzwertSommerMinUser)).ToString();
                        }
                        if (grenzwert.Contains(MetadataGrenzwert.GrenzwertWinterMaxUser))
                        {
                            meteringPointThreshlodUser.MaximaWinter = (grenzwert.GetAttributeValue <decimal>(MetadataGrenzwert.GrenzwertWinterMaxUser)).ToString();
                        }
                        if (grenzwert.Contains(MetadataGrenzwert.GrenzwertWinterMinUser))
                        {
                            meteringPointThreshlodUser.MinimaWinter = (grenzwert.GetAttributeValue <decimal>(MetadataGrenzwert.GrenzwertWinterMinUser)).ToString();
                        }
                        meteringPointThresholds.Add(meteringPointThreshlodUser);
                        #endregion "User Threshold Values"

                        meteringPoint.MeteringCodeThresholds = meteringPointThresholds;
                    }
                    #endregion "Threshold Values"
                }
                meteringPoints.Add(meteringPoint);
            }

            return(meteringPoints);
        }
        public ActionResult Edit(Guid id)
        {
            MeteringPoint meteringCode = this._meteringCodeService.GetMeteringPointsById(id);

            return(View(meteringCode));
        }
Ejemplo n.º 11
0
 private BusinessRulesValidationResult CanChangeSupplier(MeteringPoint meteringPoint, Instant effectuationDate)
 {
     return(meteringPoint.CanChangeSupplier(CreateEnergySupplierId(), effectuationDate, _systemDateTimeProvider));
 }
Ejemplo n.º 12
0
 private BusinessRulesValidationResult CanChangeSupplier(MeteringPoint meteringPoint)
 {
     return(meteringPoint.CanChangeSupplier(CreateEnergySupplierId(), _systemDateTimeProvider.Now(), _systemDateTimeProvider));
 }