Example #1
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;
            }
        }
Example #2
0
            public static MDesign_Design MDesign_Design(DesignSnapshot dbDesignSnapshot)
            {
                var design = new MDesign_Design()
                {
                    DesignId            = dbDesignSnapshot.DesignId,
                    DesignSnapshotId    = dbDesignSnapshot.DesignSnapshotId,
                    Name                = dbDesignSnapshot.Name,
                    DesignArtifactValue = dbDesignSnapshot.Artifact.Value,
                    UpdateDateTimeUtc   = dbDesignSnapshot.UpdateDateTimeUtc
                };

                return(design);
            }
Example #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;
            }
        }