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; } }
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); }
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; } }