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