public async Task <IAssetRegisterVersion> CreateAsync(IAssetRegisterVersion assetRegisterVersion, CancellationToken cancellationToken)
        {
            AssetRegisterVersionEntity assetRegisterVersionEntity = new AssetRegisterVersionEntity(assetRegisterVersion);

            Console.WriteLine($"{DateTime.UtcNow.TimeOfDay.ToString("g")}: Start Associate Entities with Asset Register Version");

            assetRegisterVersionEntity.Assets = assetRegisterVersionEntity.Assets?.Select(s =>
            {
                s.AssetRegisterVersion = assetRegisterVersionEntity;
                return(s);
            }).ToList();

            Console.WriteLine($"{DateTime.UtcNow.TimeOfDay.ToString("g")}: Finish Associate Entities with Asset Register Version");

            using (var context = new AssetRegisterContext(_databaseUrl))
            {
                Console.WriteLine($"{DateTime.UtcNow.TimeOfDay.ToString("g")}: Start Add async");
                await context.AssetRegisterVersions.AddAsync(assetRegisterVersionEntity).ConfigureAwait(false);

                Console.WriteLine($"{DateTime.UtcNow.TimeOfDay.ToString("g")}: Finish Add async");
                Console.WriteLine($"{DateTime.UtcNow.TimeOfDay.ToString("g")}: Start Save Changes async");
                await context.SaveChangesAsync(cancellationToken).ConfigureAwait(false);

                Console.WriteLine($"{DateTime.UtcNow.TimeOfDay.ToString("g")}: Finish Save Changes async");
                Console.WriteLine($"{DateTime.UtcNow.TimeOfDay.ToString("g")}: Start Marshall Data");
                IAssetRegisterVersion result = new AssetRegisterVersion
                {
                    Id = assetRegisterVersionEntity.Id,
                    ModifiedDateTime = assetRegisterVersionEntity.ModifiedDateTime,
                    Assets           = assetRegisterVersionEntity.Assets?.Select(s => new Asset(s) as IAsset).ToList()
                };
                Console.WriteLine($"{DateTime.UtcNow.TimeOfDay.ToString("g")}: Finish Marshall Data");
                return(result);
            }
        }
        public async Task <IList <CreateAssetResponse> > ExecuteAsync(IList <CreateAssetRequest> requests, CancellationToken cancellationToken)
        {
            List <IAsset> assets = requests.Select(s => new Asset(s) as IAsset).ToList();

            IAssetRegisterVersion assetRegisterVersion = new AssetRegisterVersion
            {
                Assets           = assets,
                ModifiedDateTime = DateTime.UtcNow
            };

            Console.WriteLine($" Inserting AssetRegisterVersion Start {DateTime.UtcNow.TimeOfDay.ToString("g")}");
            var result = await _assetRegisterVersionCreator.CreateAsync(assetRegisterVersion, cancellationToken).ConfigureAwait(false);

            if (result == null)
            {
                throw new CreateAssetRegisterVersionException();
            }
            Console.WriteLine($" Inserting AssetRegisterVersion Finish {DateTime.UtcNow.TimeOfDay.ToString("g")}");
            List <CreateAssetResponse> responses = result.Assets.Select(s => new CreateAssetResponse
            {
                Asset = new AssetOutputModel(s)
            }).ToList();

            return(responses);
        }
示例#3
0
        private async Task <IList <IAssetRegisterVersion> > CreateAssetRegisterVersions(int count)
        {
            IList <IAssetRegisterVersion> assetRegisterVersions = new List <IAssetRegisterVersion>();

            for (int i = 0; i < count; i++)
            {
                var assetRegisterVersion = new AssetRegisterVersion
                {
                    Assets = new List <IAsset>
                    {
                        new Asset
                        {
                            Address = $"test {i}"
                        }
                    }
                };
                assetRegisterVersions.Add(await _assetRegisterVersionCreator.CreateAsync(assetRegisterVersion, CancellationToken.None).ConfigureAwait(false));
            }

            return(assetRegisterVersions);
        }