public async Task <IHttpActionResult> ActivateProduct(long productId, ProductIn product) { CurrentIdentity identity = getIdentity(); Product productCurrent = await db.Products.FindAsync(productId); if (productCurrent == null) { return(ResponseMessage(getHttpResponse(HttpStatusCode.NotFound))); } string userId = (await db.Shops.FindAsync(productCurrent.ShopId)).UserId; if (identity.userId == userId || identity.role == "Admin") { if (productCurrent.IsActive == 0) { productCurrent.IsActive = 1; } else { productCurrent.IsActive = 0; } db.Entry(productCurrent).State = EntityState.Modified; try { await db.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!ProductExists(productId)) { return(ResponseMessage(getHttpResponse(HttpStatusCode.NotFound))); } else { throw; } } return(StatusCode(HttpStatusCode.NoContent)); } return(ResponseMessage(getHttpResponse(HttpStatusCode.Unauthorized))); }
public async Task <IHttpActionResult> PostProduct(ProductIn productIn) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } CurrentIdentity identity = getIdentity(); Shop shopToCheck = await db.Shops.FindAsync(productIn.ShopId); Product productsToCheck = await db.Products.FindAsync(productIn.ShopId); if (shopToCheck.UserId != identity.userId) { if (identity.role != "Admin") { return(ResponseMessage(getHttpResponse(HttpStatusCode.Forbidden))); } } if (ProductTitleExistsInShop(productIn.Title, productIn.ShopId)) { return(ResponseMessage(getHttpResponse(HttpStatusCode.Conflict))); } Product newProduct = new Product(); newProduct.Title = productIn.Title; newProduct.Description = productIn.Description; newProduct.DescriptionFull = productIn.DescriptionFull; newProduct.Views = 0; newProduct.IsActive = 0; DateTime now = DateTime.Now; newProduct.CreatedAt = now; newProduct.UpdatedAt = now; newProduct.ShopId = productIn.ShopId; newProduct.Stock = productIn.Stock; newProduct.Price = productIn.Price; db.Products.Add(newProduct); try { await db.SaveChangesAsync(); } catch (DbUpdateException) { if (ProductExists(newProduct.Id)) { return(ResponseMessage(getHttpResponse(HttpStatusCode.Conflict))); } else { throw; } } if (productIn.Images != null) { foreach (var image in productIn.Images) { Image newImage = new Image(); newImage.ProductId = newProduct.Id; newImage.ImageUrl = image; db.Images.Add(newImage); } try { await db.SaveChangesAsync(); } catch (DbUpdateException) { throw; } } if (productIn.CategoryId != null) { foreach (var category in productIn.CategoryId) { ProductsToCategory newCategory = new ProductsToCategory(); newCategory.ProductId = newProduct.Id; newCategory.CategoryId = category; db.ProductsToCategories.Add(newCategory); } try { await db.SaveChangesAsync(); } catch (DbUpdateException) { throw; } } return(CreatedAtRoute("WSApi", new { id = newProduct.Id }, newProduct)); }