Example #1
0
        public async Task <CategorySchemaServiceModel> UpdateCategorySchemaAsync(UpdateCategorySchemaServiceModel model)
        {
            var categorySchema = await this.context.CategorySchemas.FirstOrDefaultAsync(x => x.CategoryId == model.CategoryId && x.Language == model.Language && x.IsActive);

            if (categorySchema != null)
            {
                categorySchema.Schema           = model.Schema;
                categorySchema.UiSchema         = model.UiSchema;
                categorySchema.LastModifiedDate = DateTime.UtcNow;
            }
            else
            {
                var newCategorySchema = new CategorySchema
                {
                    CategoryId = model.CategoryId.Value,
                    Language   = model.Language,
                    Schema     = model.Schema,
                    UiSchema   = model.UiSchema
                };

                this.context.CategorySchemas.Add(newCategorySchema.FillCommonProperties());
            }

            await this.context.SaveChangesAsync();

            return(await this.GetCategorySchemaAsync(new GetCategorySchemaServiceModel
            {
                CategoryId = model.CategoryId,
                Language = model.Language,
                OrganisationId = model.OrganisationId,
                Username = model.Username
            }));
        }
Example #2
0
        public async Task <IActionResult> SaveCategorySchema(CategorySchemaRequestModel request)
        {
            var sellerClaim = this.User.Claims.FirstOrDefault(x => x.Type == AccountConstants.Claims.OrganisationIdClaim);

            var serviceModel = new UpdateCategorySchemaServiceModel
            {
                CategoryId     = request.CategoryId,
                Schema         = request.Schema,
                UiSchema       = request.UiSchema,
                Language       = CultureInfo.CurrentCulture.Name,
                Username       = this.User.Claims.FirstOrDefault(x => x.Type == ClaimTypes.Email)?.Value,
                OrganisationId = GuidHelper.ParseNullable(sellerClaim?.Value)
            };

            var validator = new UpdateCategorySchemaModelValidator();

            var validationResult = await validator.ValidateAsync(serviceModel);

            if (validationResult.IsValid)
            {
                var categorySchema = await this.categoryService.UpdateCategorySchemaAsync(serviceModel);

                if (categorySchema != null)
                {
                    var response = new CategorySchemaResponseModel
                    {
                        Id               = categorySchema.Id,
                        CategoryId       = categorySchema.CategoryId,
                        Schema           = categorySchema.Schema,
                        UiSchema         = categorySchema.UiSchema,
                        LastModifiedDate = categorySchema.LastModifiedDate,
                        CreatedDate      = categorySchema.CreatedDate
                    };

                    return(this.StatusCode((int)HttpStatusCode.OK, response));
                }
            }

            throw new CustomException(string.Join(ErrorConstants.ErrorMessagesSeparator, validationResult.Errors.Select(x => x.ErrorMessage)), (int)HttpStatusCode.UnprocessableEntity);
        }