PageRenderTime 37ms CodeModel.GetById 10ms RepoModel.GetById 0ms app.codeStats 0ms

/app/Commands/DepositItemsCommand.php

https://gitlab.com/Bookie.GG/web
PHP | 96 lines | 39 code | 13 blank | 44 comment | 0 complexity | d6d49e9a16f71426fdc619122ba21172 MD5 | raw file
  1. <?php
  2. /**
  3. * A command that creates an item deposit request
  4. *
  5. * PHP version 5.6
  6. *
  7. * @category Class
  8. * @package BookieGG\Models
  9. * @author Michal Hojgr <michal.hojgr@gmail.com>
  10. * @license MS Reference
  11. * @link http://bookie.gg
  12. */
  13. namespace BookieGG\Commands;
  14. use Illuminate\Contracts\Bus\SelfHandling;
  15. use BookieGG\Models\User;
  16. use BookieGG\Repositories\Eloquent\UserTradeRepository;
  17. use Illuminate\Redis\Database;
  18. /**
  19. * A command that creates an item deposit request
  20. *
  21. * @category Class
  22. * @package BookieGG\Models
  23. * @author Michal Hojgr <michal.hojgr@gmail.com>
  24. * @license MS Reference
  25. * @link http://bookie.gg
  26. */
  27. class DepositItemsCommand extends Command implements SelfHandling
  28. {
  29. /**
  30. * Items to be deposited to system
  31. *
  32. * @var array
  33. */
  34. protected $items;
  35. /**
  36. * User that is depositing items
  37. *
  38. * @var User $user
  39. */
  40. protected $user;
  41. /**
  42. * Constructor
  43. *
  44. * @param User $user User that is depositing items
  45. * @param array $items Items to be deposited
  46. */
  47. public function __construct(User $user, array $items)
  48. {
  49. $this->items = $items;
  50. $this->user = $user;
  51. }
  52. /**
  53. * Command execution
  54. *
  55. * @param UserTradeRepository $repository Repository
  56. * @param Database $redis Redis connection
  57. *
  58. * @return void
  59. */
  60. public function handle(UserTradeRepository $repository, Database $redis)
  61. {
  62. $currentId = $redis->incr('trade:counter');
  63. $data = [
  64. "type" => "request", // request | return
  65. "steamid" => auth()->getUser()->steam_id,
  66. "token" => auth()->getUser()->user_trade_link->token,
  67. "message" => "No message yet",
  68. "items" => array_values(
  69. array_map(
  70. function ($a) {
  71. return $a['id'];
  72. },
  73. $this->items
  74. )
  75. ),
  76. ];
  77. $json_data = json_encode($data);
  78. $base64_data = base64_encode($json_data);
  79. $redis->set("trade:offer:$currentId", $base64_data);
  80. $repository->createTradeDeposit($this->user, $currentId, $this->items);
  81. $redis->rpush('trade:queue', $currentId);
  82. }
  83. }