public async Task <MKit_UpdateSpecificationResponse> UpdateKitSpecificationAsync(string userId, Guid projectId, MKit_KitSpecificationUpdate specificationUpdate) { using var log = BeginFunction(nameof(KitMicroService), nameof(UpdateKitSpecificationAsync), userId, projectId, specificationUpdate); try { await Assert(SecurityPolicy.IsAuthorized, userId).ConfigureAwait(false); var entry = await ProjectMicroService.GetProjectAsync(projectId).ConfigureAwait(false); var kit = ProjectLibraryKitUtility.CreateKit(entry); var specification = kit.KitSpecification.Clone(); var standardSizes = kit.Design.GetStandardSizes(); var serviceErrorBuilder = new ServiceErrorBuilder(); UpdateSpecification(specification, specificationUpdate, standardSizes, serviceErrorBuilder); kit.KitSpecification = specification; if (serviceErrorBuilder.ServiceError != null) { serviceErrorBuilder.AddPageError("Kit not updated."); var result = new MKit_UpdateSpecificationResponse() { ServiceError = serviceErrorBuilder.ServiceError }; log.Result(result); return(result); } else { var data = ProjectLibraryKitUtility.CreateProjectSpecification(kit); _ = await ProjectMicroService.UpdateProjectAsync(projectId, data, GetUtcNow()).ConfigureAwait(false); var result = new MKit_UpdateSpecificationResponse(); log.Result(result); return(result); } } catch (Exception ex) { log.Exception(ex); throw; } }
public async Task <MKit_Kit> GetKitDetailPreviewFromDesignAsync(string userId, Guid designId, int thumbnailSize, MKit_KitSpecificationUpdate specificationUpdate) { using var log = BeginFunction(nameof(KitMicroService), nameof(GetKitDetailPreviewFromDesignAsync), userId, designId, thumbnailSize, specificationUpdate); try { await Assert(SecurityPolicy.IsAuthorized, userId).ConfigureAwait(false); var mDesign = await DesignMicroService.GetDesignAsync(designId).ConfigureAwait(false); if (mDesign == null) { log.Result(null); return(null); } var design = new Design.Core.Design(JToken.Parse(mDesign.DesignArtifactValue)); var kit = new Kit(design, new KitSpecification()); var specification = kit.KitSpecification.Clone(); var standardSizes = kit.Design.GetStandardSizes(); var serviceErrorBuilder = new ServiceErrorBuilder(); UpdateSpecification(specification, specificationUpdate, standardSizes, serviceErrorBuilder); kit.KitSpecification = specification; var result = Create.MKit_Kit(kit, "New", null, designId, thumbnailSize, InventoryMicroService); if (serviceErrorBuilder.ServiceError != null) { serviceErrorBuilder.AddPageError("One or more input values are incorrect."); result.ServiceError = serviceErrorBuilder.ServiceError; } log.Result(result); return(result); } catch (Exception ex) { log.Exception(ex); throw; } }
public async Task <MKit_Kit> GetKitDetailPreviewAsync(string userId, Guid projectId, int thumbnailSize, MKit_KitSpecificationUpdate specificationUpdate) { using var log = BeginFunction(nameof(KitMicroService), nameof(GetKitDetailPreviewAsync), userId, projectId, thumbnailSize, specificationUpdate); try { await Assert(SecurityPolicy.IsAuthorized, userId).ConfigureAwait(false); var entry = await ProjectMicroService.GetProjectAsync(projectId).ConfigureAwait(false); if (entry == null) { log.Result(null); return(null); } var kit = ProjectLibraryKitUtility.CreateKit(entry); var specification = kit.KitSpecification.Clone(); var standardSizes = kit.Design.GetStandardSizes(); var serviceErrorBuilder = new ServiceErrorBuilder(); UpdateSpecification(specification, specificationUpdate, standardSizes, serviceErrorBuilder); kit.KitSpecification = specification; var result = Create.MKit_Kit(kit, entry.Name, entry.ProjectId, null, thumbnailSize, InventoryMicroService); if (serviceErrorBuilder.ServiceError != null) { serviceErrorBuilder.AddPageError("One or more input values are incorrect."); result.ServiceError = serviceErrorBuilder.ServiceError; } log.Result(result); return(result); } catch (Exception ex) { log.Exception(ex); throw; } }
private void UpdateSpecification(KitSpecification specification, MKit_KitSpecificationUpdate specificationUpdate, List <DesignSize> standardSizes, ServiceErrorBuilder serviceErrorBuilder) { switch (specificationUpdate.Size) { case "CUSTOM": try { specification.Width = Dimension.Parse(specificationUpdate.CustomWidth); } catch (Exception) { serviceErrorBuilder.AddFieldError("CustomWidth", "Invalid format."); } try { specification.Height = Dimension.Parse(specificationUpdate.CustomHeight); } catch (Exception) { serviceErrorBuilder.AddFieldError("CustomHeight", "Invalid format."); } break; default: var size = standardSizes.Where(r => r.Id == specificationUpdate.Size).Single(); specification.Width = size.Width; specification.Height = size.Height; break; } switch (specificationUpdate.BorderWidth) { case "CUSTOM": try { specification.BorderWidth = Dimension.Parse(specificationUpdate.CustomBorderWidth); } catch (Exception) { serviceErrorBuilder.AddFieldError("CustomBorderWidth", "Invalid format."); } break; case "NONE": specification.BorderWidth = new Dimension(0, DimensionUnits.Inch); break; default: try { specification.BorderWidth = Dimension.Parse(specificationUpdate.BorderWidth + @""""); } catch (Exception) { serviceErrorBuilder.AddFieldError("BorderWidth", "Invalid format."); } break; } if (specificationUpdate.BorderFabricStyle != null) { specification.BorderFabricStyle = Create.CreateFabricStyle(specificationUpdate.BorderFabricStyle, InventoryMicroService); } switch (specificationUpdate.BindingWidth) { case "CUSTOM": try { specification.BindingWidth = Dimension.Parse(specificationUpdate.CustomBindingWidth); } catch (Exception) { serviceErrorBuilder.AddFieldError("CustomBindingWidth", "Invalid format."); } break; case "NONE": specification.BindingWidth = new Dimension(0, DimensionUnits.Inch); break; default: try { specification.BindingWidth = Dimension.Parse(specificationUpdate.BindingWidth + @""""); } catch (Exception) { serviceErrorBuilder.AddFieldError("BindingWidth", "Invalid format."); } break; } if (specificationUpdate.BindingFabricStyle != null) { specification.BindingFabricStyle = Create.CreateFabricStyle(specificationUpdate.BindingFabricStyle, InventoryMicroService); } if (specificationUpdate.HasBacking != null) { specification.HasBacking = specificationUpdate.HasBacking.Value; } if (specificationUpdate.BackingFabricStyle != null) { specification.BackingFabricStyle = Create.CreateFabricStyle(specificationUpdate.BackingFabricStyle, InventoryMicroService); } if (specificationUpdate.TrimTriangles != null) { specification.TrimTriangles = specificationUpdate.TrimTriangles.Value; } }