public void TryToCreateTrainingWar() { using (var trs = transactionScopeProvider.CreateTransactionScope()) if (warRepository.Any(w => w.IsTrainingWar) == false) { var anyCountry = countryRepository.First(); var anyRegion = anyCountry.Regions.First(); var trainingWar = new War() { AttackerCountryID = anyCountry.ID, DefenderCountryID = anyCountry.ID, Active = true, StartDay = GameHelper.CurrentDay, IsTrainingWar = true }; warRepository.Add(trainingWar); warRepository.SaveChanges(); var battle = new Battle() { Active = true, WarID = trainingWar.ID, WallHealth = 99999, RegionID = anyRegion.ID, StartTime = DateTime.Now, StartDay = GameHelper.CurrentDay, }; battleRepository.Add(battle); battleRepository.SaveChanges(); trs.Complete(); } }
public Battle CreateBattle(War war, int regionID, WarSideEnum attackingSide) { using (var transaction = transactionScopeProvider.CreateTransactionScope()) { var region = regionRepository.GetById(regionID); double startingWallHealth = CalculateWallHealth(region); var battle = new Battle() { RegionID = regionID, WallHealth = (decimal)startingWallHealth, War = war, Active = true, StartTime = DateTime.Now, StartDay = GameHelper.CurrentDay, AttackerInitiatedBattle = attackingSide == WarSideEnum.Attacker }; var gold = warService.GetGoldNeededToStartBattle(war, region); MakeBattleStartTransaction(war, war.GetMainCountry(attackingSide), gold); SendMessageAboutAttack(war, attackingSide, region); war.AttackerOfferedSurrender = null; battleRepository.Add(battle); ConditionalSaveChanges(battleRepository); battleEventService.AddEvent(battle, BattleStatusEnum.Started); transaction?.Complete(); return(battle); } }
public async Task <IActionResult> PostBattle(Battle battle) { try { await _battleRepository.Add(battle); await _battleRepository.SaveChangesAsync(); } catch (DbUpdateConcurrencyException ex) { return(BadRequest($"Erro: {ex.Message}")); } return(CreatedAtAction("Batalha criada com sucesso!", battle)); }