public async Task DeleteAsync(DeleteCategoryServiceModel model) { var category = await this.context.Categories.FirstOrDefaultAsync(x => x.Id == model.Id && x.IsActive); if (category == null) { throw new CustomException(this.productLocalizer.GetString("CategoryNotFound"), (int)HttpStatusCode.NotFound); } if (await this.context.Categories.AnyAsync(x => x.Parentid == category.Id && x.IsActive)) { throw new CustomException(this.productLocalizer.GetString("SubcategoriesDeleteCategoryConflict"), (int)HttpStatusCode.Conflict); } if (await this.context.Products.AnyAsync(x => x.CategoryId == category.Id && x.IsActive)) { throw new CustomException(this.productLocalizer.GetString("ProductsDeleteCategoryConflict"), (int)HttpStatusCode.Conflict); } category.IsActive = false; await this.context.SaveChangesAsync(); }
public async Task <IActionResult> Delete(Guid?id) { var sellerClaim = this.User.Claims.FirstOrDefault(x => x.Type == AccountConstants.Claims.OrganisationIdClaim); var serviceModel = new DeleteCategoryServiceModel { Id = id, Language = CultureInfo.CurrentCulture.Name, Username = this.User.Claims.FirstOrDefault(x => x.Type == ClaimTypes.Email)?.Value, OrganisationId = GuidHelper.ParseNullable(sellerClaim?.Value) }; var validator = new DeleteCategoryModelValidator(); var validationResult = await validator.ValidateAsync(serviceModel); if (validationResult.IsValid) { await this.categoryService.DeleteAsync(serviceModel); return(this.StatusCode((int)HttpStatusCode.OK)); } throw new CustomException(string.Join(ErrorConstants.ErrorMessagesSeparator, validationResult.Errors.Select(x => x.ErrorMessage)), (int)HttpStatusCode.UnprocessableEntity); }