TradeValidator::__construct()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 2
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 2
rs 10
c 0
b 0
f 0
cc 1
eloc 1
nc 1
nop 1
1
<?php
2
namespace PhpDraft\Domain\Validators;
3
4
use \Silex\Application;
5
use Symfony\Component\HttpFoundation\Request;
6
use PhpDraft\Domain\Entities\Draft;
7
use PhpDraft\Domain\Entities\Manager;
8
use PhpDraft\Domain\Entities\Trade;
9
use PhpDraft\Domain\Models\PhpDraftResponse;
10
11
class TradeValidator {
12
  private $app;
13
14
  public function __construct(Application $app) {
15
    $this->app = $app;
16
  }
17
18
  public function IsManagerValidForAssetRetrieval(Draft $draft, Manager $manager) {
19
    $valid = true;
20
    $errors = array();
21
22
    if ($draft->draft_id != $manager->draft_id) {
23
      $errors[] = "Manager does not belong to draft #$draft->draft_id";
24
      $valid = false;
25
    }
26
27
    return new PhpDraftResponse($valid, $errors);
28
  }
29
30
  public function IsTradeValid(Draft $draft, Trade $trade) {
31
    $valid = true;
32
    $errors = array();
33
    $assetCount = count($trade->trade_assets);
34
    $uniqueAssetCount = count(array_unique($trade->trade_assets));
35
36
    if (empty($trade->trade_round) || $trade->trade_round < 0 || $trade->trade_round > $draft->draft_rounds) {
0 ignored issues
show
Bug introduced by
The property trade_round does not exist on PhpDraft\Domain\Entities\Trade. Did you mean trade_id?
Loading history...
37
      $errors[] = "Invalid value for trade round.";
38
      $valid = false;
39
    }
40
41
    foreach ($trade->trade_assets as $trade_asset) {
42
      if ($trade_asset->oldmanager_id != $trade->manager1_id 
43
        && $trade_asset->oldmanager_id != $trade->manager2_id) {
44
        $player_id = $trade_asset->player->player_id;
45
        $errors[] = "Asset #$player_id does not belong to either manager.";
46
        $valid = false;
47
      }
48
49
      if ($trade_asset->player->draft_id != $draft->draft_id) {
50
        $player_id = $trade_asset->player->player_id;
51
        $errors[] = "Asset #$player_id does not belong to draft #$draft->draft_id";
52
        $valid = false;
53
      }
54
    }
55
56
    if ($assetCount != $uniqueAssetCount) {
57
      $errors[] = "One or more of the trade assets are duplicate.";
58
      $valid = false;
59
    }
60
61
    if ($draft->draft_id != $trade->manager1->draft_id) {
62
      $errors[] = "Manager 1 does not belong to draft #$draft->draft_id";
63
      $valid = false;
64
    }
65
66
    if ($draft->draft_id != $trade->manager2->draft_id) {
67
      $errors[] = "Manager 2 does not belong to draft #$draft->draft_id";
68
      $valid = false;
69
    }
70
71
    return new PhpDraftResponse($valid, $errors);
72
  }
73
}