Exemplo n.º 1
0
        public static MDesign_DesignSpecification Create_MDesign_DesignSpecification(Design.Core.Design design)
        {
            var designSpecification = new MDesign_DesignSpecification()
            {
                ArtifactValue = design.JsonSave().ToString()
            };

            return(designSpecification);
        }
Exemplo n.º 2
0
        public async Task <Guid> UpdateDesignAsync(Guid designId, MDesign_DesignSpecification designSpecification, DateTime utcNow)
        {
            using var log = BeginFunction(nameof(DesignMicroService), nameof(UpdateDesignAsync), designId, designSpecification, utcNow);
            try
            {
                using var ctx = QuiltContextFactory.Create();

                //ctx.Database.Log = message => Trace.WriteLine(message);

                var dbDesign = await ctx.Designs.SingleAsync(p => p.DesignId == designId).ConfigureAwait(false);

                //var ownerUserId = ParseUserId.FromOwnerReference(dbDesign.Owner.OwnerReference);
                //if (!SecurityPolicy.IsAuthorized(userId, ownerUserId))
                //{
                //    throw new InvalidOperationException("Design has different owner.");
                //}

                dbDesign.CurrentDesignSnapshotSequence += 1;
                dbDesign.UpdateDateTimeUtc              = utcNow;

                var dbArtifact = new Artifact()
                {
                    ArtifactTypeCode      = ArtifactTypeCodes.Design,
                    ArtifactValueTypeCode = ArtifactValueTypeCodes.Json,
                    Value = designSpecification.ArtifactValue
                };
                _ = ctx.Artifacts.Add(dbArtifact);

                var dbDesignSnapshot = new DesignSnapshot()
                {
                    Design   = dbDesign,
                    Artifact = dbArtifact,
                    Name     = dbDesign.Name,
                    DesignSnapshotSequence = dbDesign.CurrentDesignSnapshotSequence,
                    CreateDateTimeUtc      = utcNow,
                    UpdateDateTimeUtc      = utcNow
                };
                _ = ctx.DesignSnapshots.Add(dbDesignSnapshot);

                _ = await ctx.SaveChangesAsync().ConfigureAwait(false);

                var result = designId;

                log.Result(result);

                return(result);
            }
            catch (Exception ex)
            {
                log.Exception(ex);
                throw;
            }
        }
Exemplo n.º 3
0
        public async Task <Guid> CreateDesignAsync(long ownerId, string name, MDesign_DesignSpecification designSpecification, DateTime utcNow)
        {
            using var log = BeginFunction(nameof(DesignMicroService), nameof(CreateDesignAsync), ownerId, name, designSpecification, utcNow);
            try
            {
                //if (SecurityPolicy.IsBuiltInUser(userId))
                //{
                //    throw new InvalidOperationException("Built-in user ID not supported.");
                //}

                //var artifactValue = design.JsonSave().ToString();

                using var ctx = QuiltContextFactory.Create();

                //var ownerReference = CreateOwnerReference.FromUserId(userId);
                //var dbOwner = await ctx.Owners.Where(r => r.OwnerReference == ownerReference).SingleOrDefaultAsync().ConfigureAwait(false);
                //if (dbOwner == null)
                //{
                //    dbOwner = new Owner()
                //    {
                //        OwnerReference = ownerReference,
                //        OwnerTypeCode = "A"
                //    };
                //    _ = ctx.Owners.Add(dbOwner);
                //}

                //ctx.Database.Log = message => Trace.WriteLine(message);

                var dbDesign = new QuiltSystem.Database.Model.Design()
                {
                    DesignId = Guid.NewGuid(),
                    OwnerId  = ownerId,
                    Name     = name ?? "New Project",
                    CurrentDesignSnapshotSequence = 0,
                    CreateDateTimeUtc             = utcNow,
                    UpdateDateTimeUtc             = utcNow
                };
                _ = ctx.Designs.Add(dbDesign);

                var dbArtifact = new Artifact()
                {
                    ArtifactTypeCode      = ArtifactTypeCodes.Design,
                    ArtifactValueTypeCode = ArtifactValueTypeCodes.Json,
                    Value = designSpecification.ArtifactValue
                };
                _ = ctx.Artifacts.Add(dbArtifact);

                var dbDesignSnapshot = new DesignSnapshot()
                {
                    Design = dbDesign,
                    DesignSnapshotSequence = 0,
                    Artifact          = dbArtifact,
                    Name              = name ?? "New Project",
                    CreateDateTimeUtc = utcNow,
                    UpdateDateTimeUtc = utcNow
                };
                _ = ctx.DesignSnapshots.Add(dbDesignSnapshot);

                _ = await ctx.SaveChangesAsync().ConfigureAwait(false);

                var result = dbDesign.DesignId;

                log.Result(result);

                return(result);
            }
            catch (Exception ex)
            {
                log.Exception(ex);
                throw;
            }
        }