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); }