internal virtual Player Save(Player player, ApplicationUser applicationUser)
{
ValidatePlayerIsNotNull(player);
ValidatePlayerNameIsNotNullOrWhiteSpace(player.Name);
ValidatePlayerWithThisNameDoesntAlreadyExist(player, applicationUser);
var alreadyInDatabase = player.AlreadyInDatabase();
var newPlayer = _dataContext.Save(player, applicationUser);
_dataContext.CommitAllChanges();
if (!alreadyInDatabase)
{
new Task(() => _eventTracker.TrackPlayerCreation(applicationUser)).Start();
}
else
{
if (!player.Active)
{
RecalculateNemeses(player, applicationUser);
}
}
return newPlayer;
}