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);
        }
Exemple #2
0
        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);
        }