public async Task Store(Subscription subscription, CancellationToken cancellationToken) { var entity = new { Active = true, subscription.SubscriptionId, subscription.Trigger, subscription.InitialRecordTime, subscription.ReportIfEmpty, subscription.Schedule?.Second, subscription.Schedule?.Hour, subscription.Schedule?.Minute, subscription.Schedule?.Month, subscription.Schedule?.DayOfMonth, subscription.Schedule?.DayOfWeek, subscription.Destination, subscription.QueryName }; var entityId = await _unitOfWork.Store(PgSqlSubscriptionRequests.Store, entity, cancellationToken); var parameters = subscription.Parameters.Select(parameter => new { SubscriptionId = entityId, parameter.Name }).ToArray(); var parameterIds = await _unitOfWork.Store(PgSqlSubscriptionRequests.StoreParameter, parameters, cancellationToken); var values = subscription.Parameters.SelectMany((p, i) => p.Values.Select(value => new { ParameterId = parameterIds[i], Value = value })).ToArray(); await _unitOfWork.BulkExecute(PgSqlSubscriptionRequests.StoreParameterValue, values, cancellationToken); }
public async Task Store(int requestId, IEnumerable <EpcisMasterData> masterDataList, CancellationToken cancellationToken) { foreach (var masterData in masterDataList) { await _unitOfWork.Execute(PgSqlMasterdataRequests.Delete, masterData, cancellationToken); await _unitOfWork.Execute(PgSqlMasterdataRequests.Insert, masterData, cancellationToken); foreach (var attribute in masterData.Attributes) { var output = new List <MasterDataFieldEntity>(); ParseFields(attribute.Fields, output); await _unitOfWork.Execute(PgSqlMasterdataRequests.AttributeInsert, attribute, cancellationToken); await _unitOfWork.Execute(PgSqlMasterdataRequests.AttributeFieldInsert, output, cancellationToken); } } var hierarchies = masterDataList.SelectMany(x => x.Children.Select(c => new EpcisMasterDataHierarchy { Type = x.Type, ChildrenId = c.ChildrenId, ParentId = x.Id })); await _unitOfWork.BulkExecute(PgSqlMasterdataRequests.HierarchyInsert, hierarchies, cancellationToken); }