diff options
Diffstat (limited to 'src/Model/Event/SendUnits.php')
-rw-r--r-- | src/Model/Event/SendUnits.php | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/src/Model/Event/SendUnits.php b/src/Model/Event/SendUnits.php new file mode 100644 index 0000000..f104a08 --- /dev/null +++ b/src/Model/Event/SendUnits.php @@ -0,0 +1,41 @@ +<?php + +namespace App\Model\Event; + +use App\DB; +use App\Model\Event; + +class SendUnits extends Event +{ + /** + * @return void + */ + public function __invoke(): void + { + $payload = json_decode($this->payload, true); + + if ($payload['type'] === 'Recall' || $payload['type'] === 'SendBack') { + DB::query( + <<<SQL + insert into village_units (amount, type, is_traveling, home_village_id, residence_village_id) + values (:amount, :type, false, :id, :id) + on conflict (type, home_village_id, residence_village_id) + do update set amount = village_units.amount+:amount + SQL, + ['amount' => $payload['amount'], 'type' => $payload['unit'], 'id' => $payload['destination']] + ); + } + + else if ($payload['type'] === 'Borrow') { + DB::query( + <<<SQL + insert into village_units (amount, type, is_traveling, home_village_id, residence_village_id, created_at, updated_at) + values (:amount, :type, false, :home, :residence, now(), now()) + on conflict (type, home_village_id, residence_village_id) + do update set amount = village_units.amount+:amount + SQL, + ['amount' => $payload['amount'], 'type' => $payload['unit'], 'home' => $this->villageId, 'residence' => $payload['destination']] + ); + } + } +} |