/// <summary>
        /// The actual game board
        /// </summary>
        /// <returns></returns>
        public ActionResult Game()
        {
            var user = Db.Users.Where(a => a.Kerb == User.Identity.Name).SingleOrDefault();

            if (user == null)
            {
                return RedirectToAction("Index", "Error");
            }

            var message = new Message() {Txt = string.Format("{0} has just joined the game.", user.Name)};

            return View(GameViewModel.Create(User.Identity.Name, user.GetBoard()));
        }
        public JsonNetResult CreateMessage(string message)
        {
            try
            {
                var user = Db.Users.Where(x => x.Kerb == User.Identity.Name).Single();
                var msg = new Message() { Txt = message, User = user };

                Db.Messages.Add(msg);
                Db.SaveChanges();

                return new JsonNetResult(true);
            }
            catch { }

            return new JsonNetResult(false);
        }
        public JsonNetResult ReportBingo(int id, string userId, List<int> numbers)
        {
            var game = Db.Games.Include("GameBalls").Where(x=>x.Id == id).Single();
            var user = Db.Users.Where(x=>x.Kerb == userId).Single();

            var validBingo = game.ValidateBingo(numbers.ToArray(), user);

            var call = new BingoCall {CalledAt = DateTime.Now, Callee = user, Game = game, ValidBoard = validBingo};

            Db.BingoCalls.Add(call);

            if (validBingo && game.InProgress)
            {
                game.Winner = user;
                game.InProgress = false;
                game.EndDate = DateTime.Now;

                Db.Entry(game).State = EntityState.Modified;
            }

            // add in a broadcast
            var msg = new Message() {Txt = string.Format("{0} has called bingo.", user.Name)};
            Db.Messages.Add(msg);

            if (!validBingo)
            {
                var msg2 = new Message() { Txt = string.Format("{0} does not have bingo.  Game will continue.", user.Name) };
                Db.Messages.Add(msg2);
            }

            Db.SaveChanges();

            return new JsonNetResult(validBingo);
        }