Ejemplo n.º 1
0
        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;
            }
        }
Ejemplo n.º 2
0
        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;
            }
        }
Ejemplo n.º 3
0
        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;
            }
        }
Ejemplo n.º 4
0
        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;
            }
        }