示例#1
0
        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;
            });
        }
示例#2
0
 public static void ValidateCreateHeroe(CreateHeroeModel model, GameContext context)
 {
     ValidateName(model.Name);
     ValidateRace(model.Race, context);
 }