You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

75 lines
2.5KB

  1. <?php
  2. namespace App\Repositories;
  3. use App\Codes\Model\QRServiceUsage;
  4. use App\Models\ColumnName;
  5. use App\Models\HtpmsCustomer\Existing\Parking;
  6. use App\Models\HtpmsCustomer\Mst\ShopNoRelation;
  7. use App\Repositories\BaseRepository;
  8. use Illuminate\Database\Query\JoinClause;
  9. use Illuminate\Support\Collection;
  10. use Illuminate\Support\Facades\DB;
  11. class PrintingAvailableSettingRepository extends BaseRepository
  12. {
  13. const CONDITION_SHOP_ID = ColumnName::SHOP_ID;
  14. const TABLE_RELATION = "relation";
  15. const TABLE_PARKING = "parking";
  16. /**
  17. * コレクションを取得する
  18. *
  19. * @param array $condition
  20. * @return Collection<int, PrintingAvailableSettingRepositoryData>
  21. */
  22. public function get(array $condition): Collection
  23. {
  24. $table = ShopNoRelation::getBuilder(static::TABLE_RELATION)
  25. ->where(ShopNoRelation::COL_NAME_QR_SERVICE_USEAGE, QRServiceUsage::印字方式->value);
  26. $table->leftJoinSub(Parking::getBuilder(), static::TABLE_PARKING, function (JoinClause $join) {
  27. $join->on(
  28. $this->makeColumnName([static::TABLE_RELATION, ShopNoRelation::COL_NAME_PARKING_MANAGEMENT_CODE]),
  29. $this->makeColumnName([static::TABLE_PARKING, Parking::COL_NAME_PARKING_MANAGEMENT_CODE])
  30. );
  31. });
  32. // -----検索条件
  33. // GROUP_ID
  34. $this->where($table, $condition, static::CONDITION_SHOP_ID, $this->makeColumnName([static::TABLE_RELATION, ShopNoRelation::COL_NAME_SHOP_ID]));
  35. $table->select($this->columns());
  36. $table->orderBy($this->makeColumnName([self::TABLE_PARKING, Parking::COL_NAME_PARKING_MANAGEMENT_CODE]));
  37. $main = DB::connection("htpms_customer")->table($table, "main");
  38. // ソート
  39. $this->sort($main, $condition);
  40. // リミット
  41. $this->limit($main, $condition);
  42. return CertificationAvailableSettingRepositoryData::makeList($main->get());
  43. }
  44. private function columns()
  45. {
  46. $relation = static::TABLE_RELATION;
  47. $parking = static::TABLE_PARKING;
  48. $columns = [
  49. $this->makeColumnNameForSelect([$relation, ShopNoRelation::COL_NAME_SHOP_ID]),
  50. $this->makeColumnNameForSelect([$relation, ShopNoRelation::COL_NAME_PARKING_MANAGEMENT_CODE]),
  51. $this->makeColumnNameForSelect([$relation, ShopNoRelation::COL_NAME_SHOP_NO]),
  52. $this->makeColumnNameForSelect([$parking, Parking::COL_NAME_PARKING_NAME], "parking_name"),
  53. ];
  54. return $columns;
  55. }
  56. }