AccountsController.php 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. <?php
  2. namespace App\Http\Controllers\Front;
  3. use App\Shop\Couriers\Repositories\Interfaces\CourierRepositoryInterface;
  4. use App\Shop\Customers\Repositories\CustomerRepository;
  5. use App\Shop\Customers\Repositories\Interfaces\CustomerRepositoryInterface;
  6. use App\Http\Controllers\Controller;
  7. use App\Shop\Orders\Order;
  8. use App\Shop\Orders\Transformers\OrderTransformable;
  9. class AccountsController extends Controller
  10. {
  11. use OrderTransformable;
  12. /**
  13. * @var CustomerRepositoryInterface
  14. */
  15. private $customerRepo;
  16. /**
  17. * @var CourierRepositoryInterface
  18. */
  19. private $courierRepo;
  20. /**
  21. * AccountsController constructor.
  22. *
  23. * @param CourierRepositoryInterface $courierRepository
  24. * @param CustomerRepositoryInterface $customerRepository
  25. */
  26. public function __construct(
  27. CourierRepositoryInterface $courierRepository,
  28. CustomerRepositoryInterface $customerRepository
  29. ) {
  30. $this->customerRepo = $customerRepository;
  31. $this->courierRepo = $courierRepository;
  32. }
  33. public function index()
  34. {
  35. $customer = $this->customerRepo->findCustomerById(auth()->user()->id);
  36. $customerRepo = new CustomerRepository($customer);
  37. $orders = $customerRepo->findOrders(['*'], 'created_at');
  38. $orders->transform(function (Order $order) {
  39. return $this->transformOrder($order);
  40. });
  41. $orders->load('products');
  42. $addresses = $customerRepo->findAddresses();
  43. return view('front.accounts', [
  44. 'customer' => $customer,
  45. 'orders' => $this->customerRepo->paginateArrayResults($orders->toArray(), 15),
  46. 'addresses' => $addresses
  47. ]);
  48. }
  49. }