Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * @param int $player_id
- * @param int $club_id
- * @param int $zone_id
- * @param Matches $match
- * @return bool
- */
- private function checkPresenceInSquadOnMatch($player_id, $club_id, $zone_id, Matches $match)
- {
- $playerToClub = GamePlayerToClub::find()
- ->where([
- 'player_id' => $player_id,
- 'club_id' => $club_id,
- 'zone_id' => $zone_id,
- ])
- ->one();
- // Первый входящий трансфер перед матчем
- $lastIncomeTransferBeforeMatch = $this->getLastTransfer(['AND',
- ['player_id' => $player_id],
- ['zone_id' => $zone_id],
- ['to_game_club_id' => $club_id],
- ['<', 'date', $match->play_date]
- ]);
- // Первый входящий трансфер после матча
- $firstIncomeTransferAfterMatch = $this->getFirstTransfer(['AND',
- ['player_id' => $player_id],
- ['zone_id' => $zone_id],
- ['to_game_club_id' => $club_id],
- ['>=', 'date', $match->play_date],
- ]);
- // Находится ли сейчас игрок в составе
- if ($playerToClub) {
- // Есть ли входящий трансфер перед матчем
- if ($lastIncomeTransferBeforeMatch) {
- // Исходящий трансфер перед матчем после $lastIncomeTransferBeforeMatch
- $outcomeTransfer = $this->getLastTransfer(['AND',
- ['player_id' => $player_id],
- ['zone_id' => $zone_id],
- ['from_game_club_id' => $club_id],
- ['<', 'date', $match->play_date],
- ['>', 'date', $lastIncomeTransferBeforeMatch->date],
- ]);
- // Если последняя продажа перед матчем состоялась после последней покупки перед матчем, значит игрок
- // не был в составе на момент старта матча
- //
- // игрок сейчас в команде
- // игрок был куплен перед матчем
- // игрок был продан после последней покупки перед матчем ? игрок не был в команде до старта матча : игрок в команде до старта матча
- return $outcomeTransfer ? false : true;
- }
- if ($firstIncomeTransferAfterMatch) {
- // Исходящий трансфер после матча перед $firstIncomeTransferAfterMatch
- $outcomeTransfer = $this->getFirstTransfer(['AND',
- ['player_id' => $player_id],
- ['zone_id' => $zone_id],
- ['from_game_club_id' => $club_id],
- ['>=', 'date', $match->play_date],
- ['<', 'date', $firstIncomeTransferAfterMatch->date],
- ]);
- if ($outcomeTransfer) {
- // игрок сейчас в команде
- // игрок не был куплен перед матчем
- // игрок был продан после матча
- // игрок был снова куплен после матча
- // >>> игрок был в команде до старта матча, потому что он был в команде с самого начала
- return true;
- }
- // игрок сейчас в команде
- // игрок не был куплен перед матчем
- // игрок не был продан после матча
- // >>> игрок не был в команде до старта матча
- return false;
- }
- // игрок сейчас в команде
- // игрок не был куплен перед матчем
- // игрок не был куплен после матча
- // >>> игрок был в команде до старта матча, потому что он был в команде с самого начала
- return true;
- } else {
- // Последний исходящий трансфер перед матчем
- $lastOutcomeTransferBeforeMatch = $this->getLastTransfer(['AND',
- ['player_id' => $player_id],
- ['zone_id' => $zone_id],
- ['from_game_club_id' => $club_id],
- ['<', 'date', $match->play_date]
- ]);
- // Есть ли исходящий трансфер перед матчем
- if ($lastOutcomeTransferBeforeMatch) {
- // Входящий трансфер перед матчем после $lastOutcomeTransferBeforeMatch
- $incomeTransfer = $this->getLastTransfer(['AND',
- ['player_id' => $player_id],
- ['zone_id' => $zone_id],
- ['to_game_club_id' => $club_id],
- ['<', 'date', $match->play_date],
- ['>', 'date', $lastOutcomeTransferBeforeMatch->date],
- ]);
- // Если последняя покупка перед матчем состоялась после последней продажи перед матчем, значит игрок
- // был в составе на момент старта матча
- //
- // игрок сейчас нет в команде
- // игрок был продан перед матчем
- // игрок был куплен после последней продажи перед матчем ? игрок был в команде до старта матча : игрок не был в команде до старта матча
- return $incomeTransfer ? true : false;
- } else {
- // Есть ли исходящий трансфер после матча
- if ($firstIncomeTransferAfterMatch) {
- // игрока сейчас нет в команде
- // игрок был куплен после матчем
- // игрок был продан после матча
- // >>> игрок не был в команде до старта матча
- return false;
- }
- // Какой либо исходящий трансфер
- $outcomeTransferExist = $this->getLastTransfer(['AND',
- ['player_id' => $player_id],
- ['zone_id' => $zone_id],
- ['from_game_club_id' => $club_id],
- ['>=', 'date', $match->play_date],
- ]);
- // Если игрок сейчас не составе и никогда не продавался, значит игрока вообще не было в составе
- //
- // игрок сейчас нет в команде
- // игрок не был продан перед матчем
- // игрок когда либо продавался ? игрок был в команде до старта матча : игрок не был в команде до старта матча
- return $outcomeTransferExist ? true : false;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement