public HttpResponseMessage PutUpdateItem( int id, [FromBody] UpdatingItemModel model, [ValueProvider(typeof(HeaderValueProviderFactory <string>))] string sessionKey) { var responseMsg = this.PerformOperationAndHandleExceptions( () => { var context = new StoreContext(); using (context) { var admin = context.Admins.FirstOrDefault(u => u.SessionKey == sessionKey); if (admin == null) { throw new ArgumentOutOfRangeException("You are not admin!"); } var item = context.Items.FirstOrDefault(i => i.ItemId == id); if (item == null) { throw new ArgumentOutOfRangeException("itemId", "Invalid item"); } UpdateItem(item, model, context); context.SaveChanges(); var response = this.Request.CreateResponse(HttpStatusCode.OK); return(response); } }); return(responseMsg); }
private void UpdateItem(Item item, UpdatingItemModel model, StoreContext context) { if (model.Name != null) { item.Name = model.Name; } if (model.Description != null) { item.Description = model.Description; } if (model.ImageUrl != null) { item.ImageUrl = model.ImageUrl; } if (model.ItemCategory != null) { var categoryNameToLower = model.ItemCategory.ToLower(); var category = context.Categories.FirstOrDefault(c => c.Name == categoryNameToLower); if (category == null) { category = new ItemCategory { Name = categoryNameToLower }; } item.ItemCategory = category; } item.MagicAttack = model.MagicAttack; item.MagicDefense = model.MagicDefense; item.MeleAttack = model.MeleAttack; item.MeleDefense = model.MeleDefense; item.Price = model.Price; }