public HttpResponseMessage CreateHeroe(CreateHeroeModel model, [ValueProvider(typeof(HeaderValueProviderFactory<string>))] string sessionKey) { return this.ExecuteOperationAndHandleExceptions(() => { var context = new GameContext(); var user = BasePersister.GetUserBySessionKey(sessionKey, context); if (user == null) { throw new InvalidOperationException("Invalid username or password!"); } HeroePersister.ValidateCreateHeroe(model, context); Hero newHeroe = new Hero() { Name = model.Name, Race = context.Races.First(r => r.Id == model.Race), Level = StartHeroeLevel, Points = StartHeroePoints, Money = StartHeroeMoney, NumberOfLoses = 0, NumberOfWins = 0, User = BasePersister.GetUserBySessionKey(sessionKey, context), Units = new HashSet<Unit>() }; context.Heroes.Add(newHeroe); context.SaveChanges(); var response = this.Request.CreateResponse(HttpStatusCode.NoContent); return response; }); }
public static void ValidateCreateHeroe(CreateHeroeModel model, GameContext context) { ValidateName(model.Name); ValidateRace(model.Race, context); }