Skip to content

Commit

Permalink
review comments 1
Browse files Browse the repository at this point in the history
  • Loading branch information
MWO1024 committed Dec 4, 2024
1 parent 52bd9ae commit 4a9d8c1
Show file tree
Hide file tree
Showing 5 changed files with 66 additions and 73 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -401,7 +401,7 @@ public static OutgoingMessage CreateMessage(
gridAreaCode: null,
externalId: message.ExternalId,
calculationId: null,
message.Series.OrderBy(s => s.StartedDateTime).First().StartedDateTime);
message.Series.StartedDateTime);
}

private static ActorRole GetChargeOwnerRole(ActorNumber chargeOwnerId)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,32 +64,28 @@ private Document ParseFrom(OutgoingMessageHeader header, IReadOnlyCollection<str
ArgumentNullException.ThrowIfNull(transactions);

var meteredDataForMeasurementPoints = new Collection<MeteredDataForMeasurementPoint>();
foreach (var transaction in transactions)
foreach (var activityRecord in transactions.Select(t => _parser.From<MeteredDateForMeasurementPointMarketActivityRecord>(t)))
{
var activityRecords = _parser.From<List<MeteredDateForMeasurementPointMarketActivityRecord>>(transaction);
foreach (var activityRecord in activityRecords)
{
meteredDataForMeasurementPoints.Add(
new MeteredDataForMeasurementPoint(
activityRecord.TransactionId,
activityRecord.MarketEvaluationPointNumber,
activityRecord.MarketEvaluationPointType,
activityRecord.OriginalTransactionIdReferenceId,
activityRecord.Product,
activityRecord.QuantityMeasureUnit,
activityRecord.RegistrationDateTime,
new Period(
activityRecord.Resolution.Code,
new TimeInterval(
activityRecord.StartedDateTime,
activityRecord.EndedDateTime),
activityRecord.EnergyObservations.Select(
p => new Point(
p.Position,
p.Quality,
p.Quantity))
.ToList())));
}
meteredDataForMeasurementPoints.Add(
new MeteredDataForMeasurementPoint(
activityRecord.TransactionId,
activityRecord.MarketEvaluationPointNumber,
activityRecord.MarketEvaluationPointType,
activityRecord.OriginalTransactionIdReferenceId,
activityRecord.Product,
activityRecord.QuantityMeasureUnit,
activityRecord.RegistrationDateTime,
new Period(
activityRecord.Resolution.Code,
new TimeInterval(
activityRecord.StartedDateTime,
activityRecord.EndedDateTime),
activityRecord.EnergyObservations.Select(
p => new Point(
p.Position,
p.Quality,
p.Quantity))
.ToList())));
}

return new Document(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ Task<Guid> EnqueueAsync(
Task<Guid> EnqueueAsync(AcceptedWholesaleServicesMessageDto acceptedWholesaleServicesMessage, CancellationToken cancellationToken);

/// <summary>
/// Enqueue metered data for measurement point messages, handles enqueuing messages to all appropriate parties (Receiver, ChargeOwner) in a single transaction.
/// Enqueue metered data for measurement point messages, handles enqueuing messages to all appropriate parties in a single transaction.
/// </summary>
Task<Guid> EnqueueAndCommitAsync(
MeteredDataForMeasurementPointMessageProcessDto meteredDataForMeasurementPointMessageProcessDto,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,25 +16,20 @@

namespace Energinet.DataHub.EDI.OutgoingMessages.Interfaces.Models.MeteredDataForMeasurementPoint;

public sealed class MeteredDataForMeasurementPointMessageProcessDto : OutgoingMessageDto
public sealed class MeteredDataForMeasurementPointMessageProcessDto(
EventId eventId,
Actor receiver,
BusinessReason businessReason,
MeteredDataForMeasurementPointMessageSeriesDto series)
: OutgoingMessageDto(
DocumentType.MeteredDataForMeasurementPoint,
receiver.ActorNumber,
null,
eventId,
businessReason.Name,
receiver.ActorRole,
new ExternalId(Guid.NewGuid()),
null)
{
public MeteredDataForMeasurementPointMessageProcessDto(
EventId eventId,
Actor receiver,
BusinessReason businessReason,
IReadOnlyCollection<MeteredDataForMeasurementPointMessageSeriesDto> series)
: base(
DocumentType.MeteredDataForMeasurementPoint,
receiver.ActorNumber,
null,
eventId,
businessReason.Name,
receiver.ActorRole,
new ExternalId(Guid.NewGuid()),
null)
{
Series = series;
}

public IReadOnlyCollection<MeteredDataForMeasurementPointMessageSeriesDto> Series { get; }
public MeteredDataForMeasurementPointMessageSeriesDto Series { get; } = series;
}
Original file line number Diff line number Diff line change
Expand Up @@ -58,34 +58,36 @@ public async Task ProcessAsync(byte[] processInitializationData)
{
await _outgoingMessagesClient.EnqueueAndCommitAsync(
new MeteredDataForMeasurementPointMessageProcessDto(
EventId.From(marketMessage.MessageId),
EventId.From(Guid.NewGuid()),
new Actor(series.RequestedByActor.ActorNumber, series.RequestedByActor.ActorRole),
BusinessReason.FromCode(marketMessage.BusinessReason),
marketMessage.Series.Select(
s => new MeteredDataForMeasurementPointMessageSeriesDto(
TransactionId.From(s.TransactionId),
s.MeteringPointType!,
s.MeteringPointLocationId!,
null,
s.ProductNumber!,
s.ProductUnitType!,
marketMessage.CreatedAt,
Resolution.FromCode(s.Resolution!),
InstantPattern.Create("yyyy-MM-ddTHH:mm'Z'", CultureInfo.InvariantCulture)
.Parse(s.StartDateTime)
.Value,
s.EndDateTime != null
? InstantPattern.Create("yyyy-MM-ddTHH:mm'Z'", CultureInfo.InvariantCulture)
.Parse(s.EndDateTime)
.Value
: throw new ArgumentNullException(),
s.EnergyObservations.Select(
o => new EnergyObservationDto(
o.Position != null ? int.Parse(o.Position) : throw new ArgumentNullException(nameof(o.Position)),
o.EnergyQuantity != null ? decimal.Parse(o.EnergyQuantity) : throw new ArgumentNullException(nameof(o.EnergyQuantity)),
o.QuantityQuality))
.ToList()))
.ToList()),
new MeteredDataForMeasurementPointMessageSeriesDto(
TransactionId.From(series.TransactionId),
series.MeteringPointType!,
series.MeteringPointLocationId!,
null,
series.ProductNumber!,
series.ProductUnitType!,
marketMessage.CreatedAt,
Resolution.FromCode(series.Resolution!),
InstantPattern.Create("yyyy-MM-ddTHH:mm'Z'", CultureInfo.InvariantCulture)
.Parse(series.StartDateTime)
.Value,
series.EndDateTime != null
? InstantPattern.Create("yyyy-MM-ddTHH:mm'Z'", CultureInfo.InvariantCulture)
.Parse(series.EndDateTime)
.Value
: throw new ArgumentNullException(),
series.EnergyObservations.Select(
o => new EnergyObservationDto(
o.Position != null
? int.Parse(o.Position)
: throw new ArgumentNullException(nameof(o.Position)),
o.EnergyQuantity != null
? decimal.Parse(o.EnergyQuantity)
: throw new ArgumentNullException(nameof(o.EnergyQuantity)),
o.QuantityQuality))
.ToList())),
CancellationToken.None)
.ConfigureAwait(false);
}
Expand Down

0 comments on commit 4a9d8c1

Please sign in to comment.