public void Travel(int citizenID, Region startRegion, Region endRegion, MovingTicket ticket) { using (NoSaveChanges) { var citizen = citizenRepository.GetById(citizenID); citizen.RegionID = endRegion.ID; equipmentRepository.RemoveEquipmentItem(citizen.Entity.EquipmentID.Value, ticket); var trades = tradeRepository.GetTradesAssociatedWithEntity(citizenID) .Where(trade => trade.TradeStatusID == (int)TradeStatusEnum.Ongoing) .ToList(); var citizenLink = EntityLinkCreator.Create(citizen.Entity); var reason = $"{citizenLink} moving into other region"; foreach (var trade in trades) { tradeService.AbortTrade(trade, reason); } citizen.HitPoints -= ticket.HpLoss; } ConditionalSaveChanges(citizenRepository); }
public void CloseTrade(Trade trade, int removedEntityID) { tradeService.AbortTrade(trade, reason: "removal of company"); if (trade.DestinationEntityID == removedEntityID) { trade.DestinationEntityID = null; } else { trade.SourceEntityID = null; } }