public ActionResult Index([FromBody] RegisterModel model)
        {
            Player player = null;

            try
            {
                player = _playerService.Find(model.Key);
            }
            catch (PlayerNotFoundException)
            {
                try
                {
                    player    = _playerService.Register(model.Name);
                    model.Key = player.Key;
                }
                catch (EntityValidationException exception)
                {
                    _addValidationErrors(exception);
                }
            }

            if (player == null)
            {
                return(View(model));
            }

            if (ModelState.IsValid)
            {
                var cells = new List <Point>();
                ShipMap.Iterate((x, y) =>
                {
                    if (model.ShipMap[x][y])
                    {
                        cells.Add(new Point {
                            X = x, Y = y
                        });
                    }
                });

                try
                {
                    _playerService.UpdateMap(player.Key, cells);
                }
                catch (EntityValidationException exception)
                {
                    _addValidationErrors(exception);
                }
                catch (MapValidationException exception)
                {
                    ModelState.AddModelError(string.Empty, exception.Message);
                }
                catch (ShipsCollisionException exception)
                {
                    ModelState.AddModelError(string.Empty, exception.Message);
                }
            }

            return(View(model));
        }