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