public static MProject_Project MProject_Project(ProjectSnapshot dbProjectSnapshot) { var projectSpecificationComponents = new List <MProject_ProjectSpecificationComponent>(); foreach (var dbProjectSnapshotComponent in dbProjectSnapshot.ProjectSnapshotComponents.ToList()) { projectSpecificationComponents.Add( new MProject_ProjectSpecificationComponent( dbProjectSnapshotComponent.ConsumableReference, dbProjectSnapshotComponent.UnitOfMeasureCode, dbProjectSnapshotComponent.Quantity)); } var projectSpecification = new MProject_ProjectSpecification( dbProjectSnapshot.DesignSnapshot.Artifact.Value, dbProjectSnapshot.Artifact.ArtifactTypeCode, dbProjectSnapshot.Artifact.ArtifactValueTypeCode, dbProjectSnapshot.Artifact.Value, projectSpecificationComponents); var project = new MProject_Project( dbProjectSnapshot.ProjectId, dbProjectSnapshot.ProjectSnapshotId, dbProjectSnapshot.Name, dbProjectSnapshot.UpdateDateTimeUtc, projectSpecification); return(project); }
public static MProject_Project Create_MProject_Project(Guid projectId, long projectSnapshotId, string name, DateTime updateDateTimeUtc, string designArtifactValue, string projectArtifcatTypeCode, string projectArtifactValueTypeCode, string projectArtifactValue) { var projectSpecification = new MProject_ProjectSpecification( designArtifactValue, projectArtifcatTypeCode, projectArtifactValueTypeCode, projectArtifactValue, new List <MProject_ProjectSpecificationComponent>()); var project = new MProject_Project( projectId, projectSnapshotId, name, updateDateTimeUtc, projectSpecification); return(project); }
public static MProject_ProjectSpecification CreateProjectSpecification(Kit kit) { var projectComponents = new List <MProject_ProjectSpecificationComponent>(); foreach (var kitPart in kit.Parts) { projectComponents.Add( new MProject_ProjectSpecificationComponent(kitPart.Sku, GetUnitOfMeasureCode(kitPart.AreaSize), kitPart.Quantity)); } var projectSpecification = new MProject_ProjectSpecification( null, ArtifactTypeCodes.Kit, ArtifactValueTypeCodes.Json, kit.JsonSave().ToString(), projectComponents); return(projectSpecification); }
public async Task <bool> UpdateProjectAsync(Guid projectId, MProject_ProjectSpecification projectSpecification, DateTime utcNow) { //if (SecurityPolicy.IsBuiltInUser(userId)) //{ // throw new InvalidOperationException("Built-in user ID not supported."); //} try { using var ctx = QuiltContextFactory.Create(); var dbProject = await ctx.Projects.Where(r => r.ProjectId == projectId).SingleOrDefaultAsync().ConfigureAwait(false); if (dbProject == null) { return(false); } //var ownerUserId = ParseUserId.FromOwnerReference(dbProject.Owner.OwnerReference); //if (!SecurityPolicy.IsAuthorized(userId, ownerUserId)) //{ // return false; //} var dbCurrentProjectSnapshot = dbProject.ProjectSnapshots.Where(r => r.ProjectSnapshotSequence == dbProject.CurrentProjectSnapshotSequence).Single(); dbProject.CurrentProjectSnapshotSequence += 1; dbProject.UpdateDateTimeUtc = utcNow; CreateProjectSnapshot(ctx, dbProject, dbCurrentProjectSnapshot.DesignSnapshotId, projectSpecification, utcNow); _ = await ctx.SaveChangesAsync().ConfigureAwait(false); return(true); } catch (Exception ex) { ExceptionLogger.Log(ex); throw; } }
private void CreateProjectSnapshot(QuiltContext ctx, Project dbProject, long designSnapshotId, MProject_ProjectSpecification data, DateTime utcNow) { var dbArtifact = new Artifact() { ArtifactTypeCode = data.ProjectArtifactTypeCode, // ArtifactTypes.Kit ArtifactValueTypeCode = data.ProjectArtifactValueTypeCode, // ArtifactValueTypes.Json Value = data.ProjectArtifactValue }; _ = ctx.Artifacts.Add(dbArtifact); var dbProjectSnapshot = new ProjectSnapshot() { Project = dbProject, ProjectSnapshotSequence = dbProject.CurrentProjectSnapshotSequence, Name = dbProject.Name, DesignSnapshotId = designSnapshotId, Artifact = dbArtifact, CreateDateTimeUtc = utcNow, UpdateDateTimeUtc = utcNow, }; _ = ctx.ProjectSnapshots.Add(dbProjectSnapshot); foreach (var component in data.Components) { var mInventoryItem = InventoryMicroService.GetEntry(component.Sku); var consumableReference = CreateConsumableReference.FromInventoryItemId(mInventoryItem.InventoryItemId); var dbProjectSnapshotComponent = dbProjectSnapshot.ProjectSnapshotComponents.Where(r => r.ConsumableReference == consumableReference && r.UnitOfMeasureCodeNavigation == ctx.UnitOfMeasure(component.UnitOfMeasureCode)).SingleOrDefault(); if (dbProjectSnapshotComponent != null) { dbProjectSnapshotComponent.Quantity += component.Quantity; } else { dbProjectSnapshotComponent = new ProjectSnapshotComponent() { ProjectSnapshot = dbProjectSnapshot, ProjectSnapshotComponentSequence = dbProjectSnapshot.ProjectSnapshotComponents.Count + 1, ConsumableReference = consumableReference, UnitOfMeasureCode = component.UnitOfMeasureCode, Quantity = component.Quantity, }; _ = ctx.ProjectSnapshotComponents.Add(dbProjectSnapshotComponent); } } }
public async Task <Guid> CreateProjectAsync(long ownerId, string name, string projectTypeCode, long designSnapshotId, MProject_ProjectSpecification projectSpecification, DateTime utcNow) { //if (SecurityPolicy.IsBuiltInUser(m_userId)) //{ // throw new InvalidOperationException("Built-in user ID not supported."); //} try { using var ctx = QuiltContextFactory.Create(); var projectNumber = ctx.GetProjectNumber(utcNow); var dbProject = new Project() { ProjectId = Guid.NewGuid(), OwnerId = ownerId, Name = name, CurrentProjectSnapshotSequence = 0, ProjectNumber = projectNumber, CreateDateTimeUtc = utcNow, UpdateDateTimeUtc = utcNow, ProjectTypeCode = projectTypeCode, }; _ = ctx.Projects.Add(dbProject); CreateProjectSnapshot(ctx, dbProject, designSnapshotId, projectSpecification, utcNow); _ = await ctx.SaveChangesAsync().ConfigureAwait(false); return(dbProject.ProjectId); } catch (Exception ex) { ExceptionLogger.Log(ex); throw; } }