public HttpResponseMessage PostCreateHero(HeroCreateModel heroModel, [ValueProvider(typeof(HeaderValueProviderFactory<string>))] string sessionKey) { var response = this.PerformOperationAndHandleExceptions(() => { var context = new StoreContext(); var user = context.Users.FirstOrDefault(usr => usr.SessionKey == sessionKey); if (user == null) { throw new InvalidOperationException("Invalid session key"); } Hero newHero = new Hero { Name = heroModel.Name, HP = heroModel.HP, MP = heroModel.MP, MagicAttack = heroModel.MagicAttack, MeleAttack = heroModel.MeleAttack, MagicDefense = heroModel.MagicDefense, MeleDefense = heroModel.MeleDefense, Experience = heroModel.Experience, Level = heroModel.Level, User = user }; context.Heros.Add(newHero); context.SaveChanges(); user.Hero = newHero; context.SaveChanges(); var entity = new HeroCreateReturnModel { ID = newHero.HeroId, Name = newHero.Name }; var responseMsg = this.Request.CreateResponse(HttpStatusCode.Created, entity); return responseMsg; }); return response; }
private void UpdateHero(Hero hero, HeroModel model, StoreContext context) { if (model.Name != null) { hero.Name = model.Name; } if (model.Items != null) { foreach (var i in model.Items) { var item = context.Items.FirstOrDefault(x => x.Name == i.Name); if (item == null) { throw new ArgumentNullException("item", "Cannot use invalid item!"); } hero.Items.Add(item); } } hero.MagicAttack = model.MagicAttack; hero.MagicDefense = model.MagicDefense; hero.MeleAttack = model.MeleAttack; hero.MeleDefense = model.MeleDefense; hero.Experience = model.Experience; hero.HP = model.HP; hero.MP = model.MP; hero.Level = model.Level; }