Browse Source

いろいろ追加

develop
sosuke.iwabuchi 1 year ago
parent
commit
f1d3271c90
40 changed files with 1514 additions and 6 deletions
  1. +17
    -0
      app/Exceptions/ParamException.php
  2. +39
    -0
      app/Http/Controllers/Web/Customer/CustomerListController.php
  3. +9
    -0
      app/Http/Controllers/Web/Customer/CustomerListParam.php
  4. +43
    -0
      app/Http/Controllers/Web/LoginUser/CustomerListController.php
  5. +23
    -0
      app/Http/Controllers/Web/LoginUser/CustomerListParam.php
  6. +45
    -0
      app/Http/Controllers/Web/LoginUser/CustomerRegisterController.php
  7. +27
    -0
      app/Http/Controllers/Web/LoginUser/CustomerRegisterParam.php
  8. +50
    -0
      app/Http/Controllers/Web/LoginUser/ShopRegisterController.php
  9. +27
    -0
      app/Http/Controllers/Web/LoginUser/ShopRegisterParam.php
  10. +53
    -0
      app/Http/Controllers/Web/Shop/DepositChargeController.php
  11. +21
    -0
      app/Http/Controllers/Web/Shop/DepositChargeParam.php
  12. +43
    -0
      app/Http/Controllers/Web/Shop/MyDepositController.php
  13. +9
    -0
      app/Http/Controllers/Web/Shop/MyDepositParam.php
  14. +41
    -0
      app/Http/Controllers/Web/Shop/ShopListController.php
  15. +9
    -0
      app/Http/Controllers/Web/Shop/ShopListParam.php
  16. +52
    -0
      app/Http/Controllers/Web/Shop/ShopRegisterController.php
  17. +19
    -0
      app/Http/Controllers/Web/Shop/ShopRegisterParam.php
  18. +4
    -0
      app/Http/Controllers/Web/WebController.php
  19. +62
    -0
      app/Logics/LoginUser/LoginUserLogic.php
  20. +27
    -0
      app/Logics/QRService/ChargeLogic.php
  21. +32
    -0
      app/Logics/Shop/ShopLogic.php
  22. +5
    -0
      app/Models/Htpms/MstCustomer.php
  23. +2
    -1
      app/Models/User.php
  24. +2
    -5
      app/Providers/RouteServiceProvider.php
  25. +81
    -0
      app/Repositories/BaseRepository.php
  26. +34
    -0
      app/Repositories/BaseRepositoryData.php
  27. +90
    -0
      app/Repositories/LoginUserRepository.php
  28. +13
    -0
      app/Repositories/LoginUserRepositoryData.php
  29. +78
    -0
      app/Repositories/ShopRepository.php
  30. +13
    -0
      app/Repositories/ShopRepositoryData.php
  31. +14
    -0
      app/Sessions/SessionUser.php
  32. +20
    -0
      lang/en/auth.php
  33. +19
    -0
      lang/en/pagination.php
  34. +22
    -0
      lang/en/passwords.php
  35. +184
    -0
      lang/en/validation.php
  36. +20
    -0
      lang/ja/auth.php
  37. +19
    -0
      lang/ja/pagination.php
  38. +22
    -0
      lang/ja/passwords.php
  39. +205
    -0
      lang/ja/validation.php
  40. +19
    -0
      routes/api.php

+ 17
- 0
app/Exceptions/ParamException.php View File

@@ -0,0 +1,17 @@
<?php

namespace App\Exceptions;

use Exception;

class ParamException extends Exception
{
public string $target;

public static function throw(string $target, $message)
{
$exception = new static($message);
$exception->target = $target;
throw $exception;
}
}

+ 39
- 0
app/Http/Controllers/Web/Customer/CustomerListController.php View File

@@ -0,0 +1,39 @@
<?php

namespace App\Http\Controllers\Web\Customer;

use App\Http\Controllers\Web\WebController;
use App\Models\Htpms\MstCustomer;
use App\Repositories\LoginUserRepository;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;

class CustomerListController extends WebController
{

public function name(): string
{
return "運営会社一覧取得";
}

public function description(): string
{
return "運営会社一覧を取得する";
}


public function __construct(protected CustomerListParam $param, private LoginUserRepository $repository)
{
parent::__construct();
}

protected function run(Request $request): JsonResponse
{
$list = MstCustomer::all();

$res = [
"list" => $list->toArray(),
];
return $this->successResponse($res);
}
}

+ 9
- 0
app/Http/Controllers/Web/Customer/CustomerListParam.php View File

@@ -0,0 +1,9 @@
<?php

namespace App\Http\Controllers\Web\Customer;

use App\Http\Controllers\Web\NoneParams;

class CustomerListParam extends NoneParams
{
}

+ 43
- 0
app/Http/Controllers/Web/LoginUser/CustomerListController.php View File

@@ -0,0 +1,43 @@
<?php

namespace App\Http\Controllers\Web\LoginUser;

use App\Codes\UserRole;
use App\Http\Controllers\Web\WebController;
use App\Repositories\LoginUserRepository;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;

class CustomerListController extends WebController
{

public function name(): string
{
return "運営会社ログインユーザ一覧取得";
}

public function description(): string
{
return "運営会社ログインユーザ一覧を取得する";
}


public function __construct(protected CustomerListParam $param, private LoginUserRepository $repository)
{
parent::__construct();
}

protected function run(Request $request): JsonResponse
{
$param = $this->param;

$list = $this->repository->get([
...$param->toArray(),
LoginUserRepository::CONDITION_ROLE => UserRole::CUSTOMER->value,
]);
$res = [
"list" => $list,
];
return $this->successResponse($res);
}
}

+ 23
- 0
app/Http/Controllers/Web/LoginUser/CustomerListParam.php View File

@@ -0,0 +1,23 @@
<?php

namespace App\Http\Controllers\Web\LoginUser;

use App\Http\Controllers\Web\BaseParam;
use App\Http\Controllers\Web\SortableParam;
use App\Repositories\LoginUserRepository;

/**
* @property ?string name
* @property ?string $email
*/
class CustomerListParam extends BaseParam implements SortableParam
{
public function rules(): array
{
return [
LoginUserRepository::CONDITION_EMAIL => $this->str(true),
LoginUserRepository::CONDITION_NAME => $this->str(true),
...$this->sortableRules(),
];
}
}

+ 45
- 0
app/Http/Controllers/Web/LoginUser/CustomerRegisterController.php View File

@@ -0,0 +1,45 @@
<?php

namespace App\Http\Controllers\Web\LoginUser;

use App\Http\Controllers\Web\WebController;
use App\Logics\LoginUser\LoginUserLogic;
use App\Models\User;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;

class CustomerRegisterController extends WebController
{

public function name(): string
{
return "運営会社ログインユーザ新規登録";
}

public function description(): string
{
return "運営会社ログインユーザを新規登録する";
}


public function __construct(protected CustomerRegisterParam $param, protected LoginUserLogic $logic)
{
parent::__construct();
}

protected function run(Request $request): JsonResponse
{
$param = $this->param;
$user = new User();
$user->fill($param->toArray());
$user->password = $param->password;

$this->logic->createCustomerUser($user);

$res = [
"user_id" => $user->id,
];

return $this->successResponse($res);
}
}

+ 27
- 0
app/Http/Controllers/Web/LoginUser/CustomerRegisterParam.php View File

@@ -0,0 +1,27 @@
<?php

namespace App\Http\Controllers\Web\LoginUser;

use App\Http\Controllers\Web\BaseParam;
use App\Http\Controllers\Web\Rule;
use App\Models\User;
use App\Rules\LoginPassword;

/**
* @property string name
* @property string email
* @property string password
* @property string customerCode
*/
class CustomerRegisterParam extends BaseParam
{
public function rules(): array
{
return [
User::COL_NAME_NAME => $this->str(),
User::COL_NAME_EMAIL => $this->str([...Rule::email()]),
User::COL_NAME_PASSWORD => $this->str([new LoginPassword()]),
User::COL_NAME_CUSTOMER_CODE => $this->str(),
];
}
}

+ 50
- 0
app/Http/Controllers/Web/LoginUser/ShopRegisterController.php View File

@@ -0,0 +1,50 @@
<?php

namespace App\Http\Controllers\Web\LoginUser;

use App\Http\Controllers\Web\WebController;
use App\Logics\LoginUser\LoginUserLogic;
use App\Models\HtpmsCustomer\Mst\Shop;
use App\Models\User;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;

class ShopRegisterController extends WebController
{

public function name(): string
{
return "店舗ログインユーザ新規登録";
}

public function description(): string
{
return "店舗ログインユーザを新規登録する";
}


public function __construct(protected ShopRegisterParam $param, protected LoginUserLogic $logic)
{
parent::__construct();
}

protected function run(Request $request): JsonResponse
{
$this->sessionUser->customerCode();

$param = $this->param;
$user = new User();
$user->fill($param->toArray());
$user->password = $param->password;
$user->customer_code = $this->sessionUser->customerCode();

$shop = Shop::findOrFail($param->shopId);
$this->logic->createShopUser($shop, $user);

$res = [
"user_id" => $user->id,
];

return $this->successResponse($res);
}
}

+ 27
- 0
app/Http/Controllers/Web/LoginUser/ShopRegisterParam.php View File

@@ -0,0 +1,27 @@
<?php

namespace App\Http\Controllers\Web\LoginUser;

use App\Http\Controllers\Web\BaseParam;
use App\Http\Controllers\Web\Rule;
use App\Models\User;
use App\Rules\LoginPassword;

/**
* @property string shopId
* @property string name
* @property string email
* @property string password
*/
class ShopRegisterParam extends BaseParam
{
public function rules(): array
{
return [
User::COL_NAME_SHOP_ID => $this->str(),
User::COL_NAME_NAME => $this->str(),
User::COL_NAME_EMAIL => $this->str([...Rule::email()]),
User::COL_NAME_PASSWORD => $this->str([new LoginPassword()]),
];
}
}

+ 53
- 0
app/Http/Controllers/Web/Shop/DepositChargeController.php View File

@@ -0,0 +1,53 @@
<?php

namespace App\Http\Controllers\Web\Shop;

use App\Http\Controllers\Web\WebController;
use App\Logics\QRService\ChargeLogic;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use LogicException;

class DepositChargeController extends WebController
{

public function name(): string
{
return "デポジットチャージ";
}

public function description(): string
{
return "デポジットをチャージする";
}


public function __construct(protected DepositChargeParam $param, protected ChargeLogic $logic)
{
parent::__construct();
}

protected function run(Request $request): JsonResponse
{
$param = $this->param;

$user = $this->sessionUser->user();
if ($user instanceof null) {
throw new LogicException();
}

if ($user->shop_id === null) {
throw new LogicException();
}


$deposit = $this->logic->charge($user->shop_id, $param->amount);

$res = [
"shop_id" => $deposit->shop_id,
"deposit" => $deposit->deposit,
];

return $this->successResponse($res);
}
}

+ 21
- 0
app/Http/Controllers/Web/Shop/DepositChargeParam.php View File

@@ -0,0 +1,21 @@
<?php

namespace App\Http\Controllers\Web\Shop;

use App\Http\Controllers\Web\BaseParam;
use App\Models\HtpmsCustomer\Deposit\Deposit;

/**
* @property string shopId
* @property int amount
*/
class DepositChargeParam extends BaseParam
{
public function rules(): array
{
return [
Deposit::COL_NAME_SHOP_ID => $this->str(),
Deposit::COL_NAME_DEPOSIT => $this->numeric(),
];
}
}

+ 43
- 0
app/Http/Controllers/Web/Shop/MyDepositController.php View File

@@ -0,0 +1,43 @@
<?php

namespace App\Http\Controllers\Web\Shop;

use App\Http\Controllers\Web\WebController;
use App\Models\HtpmsCustomer\Deposit\Deposit;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use LogicException;

class MyDepositController extends WebController
{

public function name(): string
{
return "デポジット情報取得";
}

public function description(): string
{
return "デポジット情報を取得する";
}


public function __construct(protected MyDepositParam $param)
{
parent::__construct();
}

protected function run(Request $request): JsonResponse
{
$user = $this->sessionUser->user();
if ($user === null) throw new LogicException();
if ($user->shop_id === null) throw new LogicException();

$deposit = Deposit::whereShopId($user->shop_id)
->firstOrFail();
$res = [
"deposit" => $deposit->deposit,
];
return $this->successResponse($res);
}
}

+ 9
- 0
app/Http/Controllers/Web/Shop/MyDepositParam.php View File

@@ -0,0 +1,9 @@
<?php

namespace App\Http\Controllers\Web\Shop;

use App\Http\Controllers\Web\NoneParams;

class MyDepositParam extends NoneParams
{
}

+ 41
- 0
app/Http/Controllers/Web/Shop/ShopListController.php View File

@@ -0,0 +1,41 @@
<?php

namespace App\Http\Controllers\Web\Shop;

use App\Http\Controllers\Web\WebController;
use App\Repositories\ShopRepository;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;

class ShopListController extends WebController
{

public function name(): string
{
return "店舗一覧取得";
}

public function description(): string
{
return "店舗一覧を取得する";
}


public function __construct(protected ShopListParam $param, private ShopRepository $repository)
{
parent::__construct();
}

protected function run(Request $request): JsonResponse
{

$list = $this->repository->get([
...$this->param->toArray(),
]);

$res = [
"list" => $list
];
return $this->successResponse($res);
}
}

+ 9
- 0
app/Http/Controllers/Web/Shop/ShopListParam.php View File

@@ -0,0 +1,9 @@
<?php

namespace App\Http\Controllers\Web\Shop;

use App\Http\Controllers\Web\NoneParams;

class ShopListParam extends NoneParams
{
}

+ 52
- 0
app/Http/Controllers/Web/Shop/ShopRegisterController.php View File

@@ -0,0 +1,52 @@
<?php

namespace App\Http\Controllers\Web\Shop;

use App\Http\Controllers\Web\WebController;
use App\Logics\LoginUser\LoginUserLogic;
use App\Logics\Shop\ShopLogic;
use App\Models\HtpmsCustomer\Mst\Shop;
use App\Models\User;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use LogicException;

class ShopRegisterController extends WebController
{

public function name(): string
{
return "店舗マスタ新規登録";
}

public function description(): string
{
return "店舗マスタを新規登録する";
}


public function __construct(protected ShopRegisterParam $param, protected ShopLogic $logic)
{
parent::__construct();
}

protected function run(Request $request): JsonResponse
{
$param = $this->param;
$user = $this->sessionUser->user();
if ($user === null) {
throw new LogicException();
}

$shop = new Shop();
$shop->fill($param->toArray());

$this->logic->create($user, $shop);

$res = [
"shop_id" => $shop->id,
];

return $this->successResponse($res);
}
}

+ 19
- 0
app/Http/Controllers/Web/Shop/ShopRegisterParam.php View File

@@ -0,0 +1,19 @@
<?php

namespace App\Http\Controllers\Web\Shop;

use App\Http\Controllers\Web\BaseParam;
use App\Models\User;

/**
* @property string name
*/
class ShopRegisterParam extends BaseParam
{
public function rules(): array
{
return [
User::COL_NAME_NAME => $this->str(),
];
}
}

+ 4
- 0
app/Http/Controllers/Web/WebController.php View File

@@ -8,6 +8,7 @@ use App\Codes\UserRole;
use App\Exceptions\AppCommonException; use App\Exceptions\AppCommonException;
use App\Exceptions\ExclusiveException; use App\Exceptions\ExclusiveException;
use App\Exceptions\GeneralErrorMessageException; use App\Exceptions\GeneralErrorMessageException;
use App\Exceptions\ParamException;
use App\Sessions\SessionUser; use App\Sessions\SessionUser;
use App\Util\DBUtil; use App\Util\DBUtil;
use Exception; use Exception;
@@ -210,6 +211,9 @@ abstract class WebController extends BaseController
return $this->unAuthorizedResponse(); return $this->unAuthorizedResponse();
} }
throw $e; throw $e;
} catch (ParamException $e) {
$this->transaction->rollBack();
throw $this->validateErrorResponse([$e->target => $e->getMessage()]);
} catch (Exception $e) { } catch (Exception $e) {
$this->transaction->rollBack(); $this->transaction->rollBack();
logs()->error([ logs()->error([


+ 62
- 0
app/Logics/LoginUser/LoginUserLogic.php View File

@@ -0,0 +1,62 @@
<?php

namespace App\Logics\LoginUser;

use App\Codes\UserRole;
use App\Exceptions\ParamException;
use App\Models\Htpms\MstCustomer;
use App\Models\HtpmsCustomer\Mst\Shop;
use App\Models\User;

class LoginUserLogic
{

private User|null $user = null;

public function createCustomerUser(User $user)
{
$this->user = $user;
$user->role = UserRole::CUSTOMER;

// チェック処理
$this->checkEmailForCreate();
$this->checkCustomerCode();

$user->save();
}

public function createShopUser(Shop $shop, User $user)
{
$this->user = $user;
$user->role = UserRole::SHOP;
$user->shop_id = $shop->id;

// チェック処理
$this->checkEmailForCreate();
$this->checkCustomerCode();

$user->save();
}


private function checkEmailForCreate()
{
if (User::whereEmail($this->user)
->exists()
) {
ParamException::throw(User::COL_NAME_EMAIL, trans('validation.unique'));
}
}

private function checkCustomerCode()
{
$customer = MstCustomer::whereCustomerId($this->user->customer_code)
->first();

if ($customer === null) {
ParamException::throw(User::COL_NAME_CUSTOMER_CODE, trans('validation.exists'));
return;
}
$this->user->customer_id = $customer->id;
}
}

+ 27
- 0
app/Logics/QRService/ChargeLogic.php View File

@@ -0,0 +1,27 @@
<?php

namespace App\Logics\QRService;


class ChargeLogic
{
use DepositCheck;

/**
* デポジットをチャージする
*/
public static function charge(
string $shopId,
int $amount,
) {


[$shop, $deposit] = self::getData($shopId);

$deposit->deposit += $amount;

self::makeTransferHistory($shopId, $amount);

return $deposit;
}
}

+ 32
- 0
app/Logics/Shop/ShopLogic.php View File

@@ -0,0 +1,32 @@
<?php

namespace App\Logics\Shop;

use App\Models\HtpmsCustomer\Deposit\Deposit;
use App\Models\HtpmsCustomer\Mst\Shop;
use App\Models\User;

class ShopLogic
{

private User|null $customerUser = null;
private Shop|null $shop = null;

public function create(User $customerUser, Shop $shop)
{
$this->customerUser = $customerUser;
$this->shop = $shop;

// チェック処理


$shop->save();

// デポジット
$deposit = new Deposit();
$deposit->shop_id = $shop->idl;
$deposit->save();

return $shop;
}
}

+ 5
- 0
app/Models/Htpms/MstCustomer.php View File

@@ -14,4 +14,9 @@ class MstCustomer extends Model
protected $table = 'mst_customer'; protected $table = 'mst_customer';
protected $fillable = []; // 参照専用 protected $fillable = []; // 参照専用


protected $visible = [
self::COL_NAME_ID,
self::COL_NAME_CUSTOMER_ID,
self::COL_NAME_CUSTOMER_NAME,
];
} }

+ 2
- 1
app/Models/User.php View File

@@ -76,7 +76,8 @@ class User extends Authenticatable implements IModelFeature


public static function getBuilder(string $name = 'main'): Builder public static function getBuilder(string $name = 'main'): Builder
{ {
return DB::table(static::getTableName(), $name);
$instance = new static();
return DB::connection($instance->getConnectionName())->table(static::getTableName(), $name);
} }


public static function getTableName(): string public static function getTableName(): string


+ 2
- 5
app/Providers/RouteServiceProvider.php View File

@@ -24,11 +24,8 @@ class RouteServiceProvider extends ServiceProvider
*/ */
public function boot(): void public function boot(): void
{ {
// RateLimiter::for('api', function (Request $request) {
// return Limit::perMinute(60)->by($request->user()?->id ?: $request->ip());
// });
RateLimiter::for('web', function (Request $request) {
return Limit::perMinute(60)->by($request->user()?->id ?: $request->ip());
RateLimiter::for('api', function (Request $request) {
return Limit::perMinute(1000)->by($request->user()?->id ?: $request->ip());
}); });


$this->routes(function () { $this->routes(function () {


+ 81
- 0
app/Repositories/BaseRepository.php View File

@@ -0,0 +1,81 @@
<?php

namespace App\Repositories;

use Illuminate\Database\Query\Builder;
use Illuminate\Support\Arr;

abstract class BaseRepository
{

const ORDER_ASC = "asc";
const ORDER_DESC = "desc";

const CONDITION_SORT_TARGET = "sort";
const CONDITION_SORT_ORDER = "order";

const CONDITION_LIMIT = "limit";
const MAX_LIMIT = 500;


protected function sort(Builder $query, array $condition)
{
$target = data_get($condition, self::CONDITION_SORT_TARGET);
$order = data_get($condition, self::CONDITION_SORT_ORDER);
if ($target === null || $order === null) {
return;
}

if ($order === static::ORDER_ASC) {
$query->orderBy($target);
}
if ($order === static::ORDER_DESC) {
$query->orderByDesc($target);
}
}

protected function limit(Builder $query, array $condition, ?int $default = null)
{


$limit = data_get($condition, self::CONDITION_LIMIT, $default) ?? $default ?? static::MAX_LIMIT;

$limit = min($limit, self::MAX_LIMIT);

$query->limit($limit);
}

protected function where(Builder $query, array $condition, string $conditionKey, string|null $columnName = null): bool
{

$ret = data_get($condition, $conditionKey);
if ($ret !== null) {
$query->where($columnName ?? $conditionKey, $ret);
return true;
} else {
return false;
}
}
protected function whereIn(Builder $query, array $condition, string $conditionKey, string|null $columnName = null): bool
{

$ret = data_get($condition, $conditionKey);
if ($ret !== null && is_array($ret)) {
$query->whereIn($columnName ?? $conditionKey, $ret);
return true;
} else {
return false;
}
}

protected function makeColumnName(array $targets, ?string $as = null): string
{
$as = $as ? " as {$as}" : "";
return implode('.', $targets) . $as;
}
protected function makeColumnNameForSelect(array $targets, ?string $as = null): string
{
$as = $as ? " as {$as}" : " as " . Arr::last($targets);
return implode('.', $targets) . $as;
}
}

+ 34
- 0
app/Repositories/BaseRepositoryData.php View File

@@ -0,0 +1,34 @@
<?php

namespace App\Repositories;

use Illuminate\Support\Collection;
use stdClass;

class BaseRepositoryData extends stdClass
{
public function __construct(stdClass $data)
{
foreach ($data as $key => $val) {
$this->$key = $val;
}
}

/**
* @param Collection<stdClass> $list
* @return Collection<static>
*/
static public function makeList(Collection $list)
{
$ret = collect();
foreach ($list as $data) {
$ret->push(new static($data));
}
return $ret;
}

public function toArray(): array
{
return json_decode(json_encode($this), true);
}
}

+ 90
- 0
app/Repositories/LoginUserRepository.php View File

@@ -0,0 +1,90 @@
<?php

namespace App\Repositories;

use App\Models\Htpms\MstCustomer;
use App\Models\User;
use App\Repositories\BaseRepository;
use Illuminate\Support\Collection;
use Illuminate\Support\Facades\DB;

class LoginUserRepository extends BaseRepository
{

const CONDITION_ID = 'id';
const CONDITION_NAME = 'name';
const CONDITION_ROLE = 'role';
const CONDITION_EMAIL = 'email';

const TABLE_USER = "user";
const TABLE_CUSTOMER = "customer";


/**
* コレクションを取得する
*
* @param array $condition
* @return Collection<LoginUserRepositoryData>
*/
public function get(array $condition): Collection
{

$table = User::getBuilder(static::TABLE_USER);

$table->leftJoinSub(MstCustomer::getBuilder(), static::TABLE_CUSTOMER, function (JoinClause $join) {
$join->on(
$this->makeColumnName([static::TABLE_USER, User::COL_NAME_CUSTOMER_CODE]),
$this->makeColumnName([static::TABLE_CUSTOMER, MstCustomer::COL_NAME_CUSTOMER_ID])
);
});


// -----検索条件
// ID
$this->where($table, $condition, static::CONDITION_ID, $this->makeColumnName([static::TABLE_USER, User::COL_NAME_ID]));

// 名前
$name = data_get($condition, static::CONDITION_NAME);
if ($name) {
$table->where($this->makeColumnName([static::TABLE_USER, User::COL_NAME_NAME]), 'like', "%{$name}%");
}

// EMAIL
$email = data_get($condition, static::CONDITION_EMAIL);
if ($email) {
$table->where($this->makeColumnName([static::TABLE_USER, User::COL_NAME_EMAIL]), 'like', "%{$email}%");
}
// ROLE
$this->where($table, $condition, static::CONDITION_ROLE, $this->makeColumnName([static::TABLE_USER, User::COL_NAME_ROLE]));

$table->select($this->columns());

$main = DB::connection("htpms")->table($table, "main");

// ソート
$this->sort($main, $condition);
$main->orderBy(static::CONDITION_ID);

// リミット
$this->limit($main, $condition);


return LoginUserRepositoryData::makeList($main->get());
}

private function columns()
{
$user = static::TABLE_USER;
$customer = static::TABLE_CUSTOMER;
$columns = [
$this->makeColumnNameForSelect([$user, User::COL_NAME_ID]),
$this->makeColumnNameForSelect([$user, User::COL_NAME_NAME]),
$this->makeColumnNameForSelect([$user, User::COL_NAME_EMAIL]),
$this->makeColumnNameForSelect([$user, User::COL_NAME_CUSTOMER_CODE]),
$this->makeColumnNameForSelect([$customer, MstCustomer::COL_NAME_CUSTOMER_NAME]),
];


return $columns;
}
}

+ 13
- 0
app/Repositories/LoginUserRepositoryData.php View File

@@ -0,0 +1,13 @@
<?php

namespace App\Repositories;


/**
* @property string id
* @property string name
* @property string email
*/
class LoginUserRepositoryData extends BaseRepositoryData
{
}

+ 78
- 0
app/Repositories/ShopRepository.php View File

@@ -0,0 +1,78 @@
<?php

namespace App\Repositories;

use App\Models\HtpmsCustomer\Deposit\Deposit;
use App\Models\HtpmsCustomer\Mst\Shop;
use App\Models\User;
use App\Repositories\BaseRepository;
use Illuminate\Support\Collection;
use Illuminate\Support\Facades\DB;

class ShopRepository extends BaseRepository
{

const CONDITION_SHOP_ID = 'shop_id';
const CONDITION_NAME = 'name';

const TABLE_SHOP = "shop";
const TABLE_DEPOSIT = "deposit";


/**
* コレクションを取得する
*
* @param array $condition
* @return Collection<ShopRepositoryData>
*/
public function get(array $condition): Collection
{

$table = Shop::getBuilder(static::TABLE_SHOP);

$table->leftJoinSub(Deposit::getBuilder(), static::TABLE_DEPOSIT, function (JoinClause $join) {
$join->on(
$this->makeColumnName([static::TABLE_SHOP, Shop::COL_NAME_ID]),
$this->makeColumnName([static::TABLE_DEPOSIT, Deposit::COL_NAME_SHOP_ID])
);
});

// -----検索条件
// SHOP_ID
$this->where($table, $condition, static::CONDITION_SHOP_ID, $this->makeColumnName([static::TABLE_SHOP, Shop::COL_NAME_ID]));

// 名前
$name = data_get($condition, static::CONDITION_NAME);
if ($name) {
$table->where($this->makeColumnName([static::TABLE_SHOP, Shop::COL_NAME_NAME]), 'like', "%{$name}%");
}


$table->select($this->columns());

$main = DB::connection("htpms_customer")->table($table, "main");

// ソート
$this->sort($main, $condition);
$main->orderBy(static::CONDITION_SHOP_ID);

// リミット
$this->limit($main, $condition);


return LoginUserRepositoryData::makeList($main->get());
}

private function columns()
{
$shop = static::TABLE_SHOP;
$deposit = static::TABLE_DEPOSIT;
$columns = [
$this->makeColumnNameForSelect([$deposit, Deposit::COL_NAME_SHOP_ID]),
$this->makeColumnNameForSelect([$deposit, Deposit::COL_NAME_DEPOSIT]),
$this->makeColumnNameForSelect([$shop, User::COL_NAME_NAME]),
];

return $columns;
}
}

+ 13
- 0
app/Repositories/ShopRepositoryData.php View File

@@ -0,0 +1,13 @@
<?php

namespace App\Repositories;


/**
* @property string shop_id
* @property int deposit
* @property string name
*/
class ShopRepositoryData extends BaseRepositoryData
{
}

+ 14
- 0
app/Sessions/SessionUser.php View File

@@ -94,6 +94,20 @@ class SessionUser
return $this->isSwtiched; return $this->isSwtiched;
} }


public function shopId(): string
{
if ($this->user === null) throw new LogicException();
if ($this->user->shop_id === null) throw new LogicException();
return $this->user->shop_id;
}

public function customerCode(): string
{
if ($this->user === null) throw new LogicException();
if ($this->user->customer_code === null) throw new LogicException();
return $this->user->customer_code;
}

private function getStoreKey(string $key): string private function getStoreKey(string $key): string
{ {
return sprintf("%s-%s", self::class, $key); return sprintf("%s-%s", self::class, $key);


+ 20
- 0
lang/en/auth.php View File

@@ -0,0 +1,20 @@
<?php

return [

/*
|--------------------------------------------------------------------------
| Authentication Language Lines
|--------------------------------------------------------------------------
|
| The following language lines are used during authentication for various
| messages that we need to display to the user. You are free to modify
| these language lines according to your application's requirements.
|
*/

'failed' => 'These credentials do not match our records.',
'password' => 'The provided password is incorrect.',
'throttle' => 'Too many login attempts. Please try again in :seconds seconds.',

];

+ 19
- 0
lang/en/pagination.php View File

@@ -0,0 +1,19 @@
<?php

return [

/*
|--------------------------------------------------------------------------
| Pagination Language Lines
|--------------------------------------------------------------------------
|
| The following language lines are used by the paginator library to build
| the simple pagination links. You are free to change them to anything
| you want to customize your views to better match your application.
|
*/

'previous' => '&laquo; Previous',
'next' => 'Next &raquo;',

];

+ 22
- 0
lang/en/passwords.php View File

@@ -0,0 +1,22 @@
<?php

return [

/*
|--------------------------------------------------------------------------
| Password Reset Language Lines
|--------------------------------------------------------------------------
|
| The following language lines are the default lines which match reasons
| that are given by the password broker for a password update attempt
| has failed, such as for an invalid token or invalid new password.
|
*/

'reset' => 'Your password has been reset.',
'sent' => 'We have emailed your password reset link.',
'throttled' => 'Please wait before retrying.',
'token' => 'This password reset token is invalid.',
'user' => "We can't find a user with that email address.",

];

+ 184
- 0
lang/en/validation.php View File

@@ -0,0 +1,184 @@
<?php

return [

/*
|--------------------------------------------------------------------------
| Validation Language Lines
|--------------------------------------------------------------------------
|
| The following language lines contain the default error messages used by
| the validator class. Some of these rules have multiple versions such
| as the size rules. Feel free to tweak each of these messages here.
|
*/

'accepted' => 'The :attribute field must be accepted.',
'accepted_if' => 'The :attribute field must be accepted when :other is :value.',
'active_url' => 'The :attribute field must be a valid URL.',
'after' => 'The :attribute field must be a date after :date.',
'after_or_equal' => 'The :attribute field must be a date after or equal to :date.',
'alpha' => 'The :attribute field must only contain letters.',
'alpha_dash' => 'The :attribute field must only contain letters, numbers, dashes, and underscores.',
'alpha_num' => 'The :attribute field must only contain letters and numbers.',
'array' => 'The :attribute field must be an array.',
'ascii' => 'The :attribute field must only contain single-byte alphanumeric characters and symbols.',
'before' => 'The :attribute field must be a date before :date.',
'before_or_equal' => 'The :attribute field must be a date before or equal to :date.',
'between' => [
'array' => 'The :attribute field must have between :min and :max items.',
'file' => 'The :attribute field must be between :min and :max kilobytes.',
'numeric' => 'The :attribute field must be between :min and :max.',
'string' => 'The :attribute field must be between :min and :max characters.',
],
'boolean' => 'The :attribute field must be true or false.',
'confirmed' => 'The :attribute field confirmation does not match.',
'current_password' => 'The password is incorrect.',
'date' => 'The :attribute field must be a valid date.',
'date_equals' => 'The :attribute field must be a date equal to :date.',
'date_format' => 'The :attribute field must match the format :format.',
'decimal' => 'The :attribute field must have :decimal decimal places.',
'declined' => 'The :attribute field must be declined.',
'declined_if' => 'The :attribute field must be declined when :other is :value.',
'different' => 'The :attribute field and :other must be different.',
'digits' => 'The :attribute field must be :digits digits.',
'digits_between' => 'The :attribute field must be between :min and :max digits.',
'dimensions' => 'The :attribute field has invalid image dimensions.',
'distinct' => 'The :attribute field has a duplicate value.',
'doesnt_end_with' => 'The :attribute field must not end with one of the following: :values.',
'doesnt_start_with' => 'The :attribute field must not start with one of the following: :values.',
'email' => 'The :attribute field must be a valid email address.',
'ends_with' => 'The :attribute field must end with one of the following: :values.',
'enum' => 'The selected :attribute is invalid.',
'exists' => 'The selected :attribute is invalid.',
'file' => 'The :attribute field must be a file.',
'filled' => 'The :attribute field must have a value.',
'gt' => [
'array' => 'The :attribute field must have more than :value items.',
'file' => 'The :attribute field must be greater than :value kilobytes.',
'numeric' => 'The :attribute field must be greater than :value.',
'string' => 'The :attribute field must be greater than :value characters.',
],
'gte' => [
'array' => 'The :attribute field must have :value items or more.',
'file' => 'The :attribute field must be greater than or equal to :value kilobytes.',
'numeric' => 'The :attribute field must be greater than or equal to :value.',
'string' => 'The :attribute field must be greater than or equal to :value characters.',
],
'image' => 'The :attribute field must be an image.',
'in' => 'The selected :attribute is invalid.',
'in_array' => 'The :attribute field must exist in :other.',
'integer' => 'The :attribute field must be an integer.',
'ip' => 'The :attribute field must be a valid IP address.',
'ipv4' => 'The :attribute field must be a valid IPv4 address.',
'ipv6' => 'The :attribute field must be a valid IPv6 address.',
'json' => 'The :attribute field must be a valid JSON string.',
'lowercase' => 'The :attribute field must be lowercase.',
'lt' => [
'array' => 'The :attribute field must have less than :value items.',
'file' => 'The :attribute field must be less than :value kilobytes.',
'numeric' => 'The :attribute field must be less than :value.',
'string' => 'The :attribute field must be less than :value characters.',
],
'lte' => [
'array' => 'The :attribute field must not have more than :value items.',
'file' => 'The :attribute field must be less than or equal to :value kilobytes.',
'numeric' => 'The :attribute field must be less than or equal to :value.',
'string' => 'The :attribute field must be less than or equal to :value characters.',
],
'mac_address' => 'The :attribute field must be a valid MAC address.',
'max' => [
'array' => 'The :attribute field must not have more than :max items.',
'file' => 'The :attribute field must not be greater than :max kilobytes.',
'numeric' => 'The :attribute field must not be greater than :max.',
'string' => 'The :attribute field must not be greater than :max characters.',
],
'max_digits' => 'The :attribute field must not have more than :max digits.',
'mimes' => 'The :attribute field must be a file of type: :values.',
'mimetypes' => 'The :attribute field must be a file of type: :values.',
'min' => [
'array' => 'The :attribute field must have at least :min items.',
'file' => 'The :attribute field must be at least :min kilobytes.',
'numeric' => 'The :attribute field must be at least :min.',
'string' => 'The :attribute field must be at least :min characters.',
],
'min_digits' => 'The :attribute field must have at least :min digits.',
'missing' => 'The :attribute field must be missing.',
'missing_if' => 'The :attribute field must be missing when :other is :value.',
'missing_unless' => 'The :attribute field must be missing unless :other is :value.',
'missing_with' => 'The :attribute field must be missing when :values is present.',
'missing_with_all' => 'The :attribute field must be missing when :values are present.',
'multiple_of' => 'The :attribute field must be a multiple of :value.',
'not_in' => 'The selected :attribute is invalid.',
'not_regex' => 'The :attribute field format is invalid.',
'numeric' => 'The :attribute field must be a number.',
'password' => [
'letters' => 'The :attribute field must contain at least one letter.',
'mixed' => 'The :attribute field must contain at least one uppercase and one lowercase letter.',
'numbers' => 'The :attribute field must contain at least one number.',
'symbols' => 'The :attribute field must contain at least one symbol.',
'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.',
],
'present' => 'The :attribute field must be present.',
'prohibited' => 'The :attribute field is prohibited.',
'prohibited_if' => 'The :attribute field is prohibited when :other is :value.',
'prohibited_unless' => 'The :attribute field is prohibited unless :other is in :values.',
'prohibits' => 'The :attribute field prohibits :other from being present.',
'regex' => 'The :attribute field format is invalid.',
'required' => 'The :attribute field is required.',
'required_array_keys' => 'The :attribute field must contain entries for: :values.',
'required_if' => 'The :attribute field is required when :other is :value.',
'required_if_accepted' => 'The :attribute field is required when :other is accepted.',
'required_unless' => 'The :attribute field is required unless :other is in :values.',
'required_with' => 'The :attribute field is required when :values is present.',
'required_with_all' => 'The :attribute field is required when :values are present.',
'required_without' => 'The :attribute field is required when :values is not present.',
'required_without_all' => 'The :attribute field is required when none of :values are present.',
'same' => 'The :attribute field must match :other.',
'size' => [
'array' => 'The :attribute field must contain :size items.',
'file' => 'The :attribute field must be :size kilobytes.',
'numeric' => 'The :attribute field must be :size.',
'string' => 'The :attribute field must be :size characters.',
],
'starts_with' => 'The :attribute field must start with one of the following: :values.',
'string' => 'The :attribute field must be a string.',
'timezone' => 'The :attribute field must be a valid timezone.',
'unique' => 'The :attribute has already been taken.',
'uploaded' => 'The :attribute failed to upload.',
'uppercase' => 'The :attribute field must be uppercase.',
'url' => 'The :attribute field must be a valid URL.',
'ulid' => 'The :attribute field must be a valid ULID.',
'uuid' => 'The :attribute field must be a valid UUID.',

/*
|--------------------------------------------------------------------------
| Custom Validation Language Lines
|--------------------------------------------------------------------------
|
| Here you may specify custom validation messages for attributes using the
| convention "attribute.rule" to name the lines. This makes it quick to
| specify a specific custom language line for a given attribute rule.
|
*/

'custom' => [
'attribute-name' => [
'rule-name' => 'custom-message',
],
],

/*
|--------------------------------------------------------------------------
| Custom Validation Attributes
|--------------------------------------------------------------------------
|
| The following language lines are used to swap our attribute placeholder
| with something more reader friendly such as "E-Mail Address" instead
| of "email". This simply helps us make our message more expressive.
|
*/

'attributes' => [],

];

+ 20
- 0
lang/ja/auth.php View File

@@ -0,0 +1,20 @@
<?php

return [

/*
|--------------------------------------------------------------------------
| Authentication Language Lines
|--------------------------------------------------------------------------
|
| The following language lines are used during authentication for various
| messages that we need to display to the user. You are free to modify
| these language lines according to your application's requirements.
|
*/

'failed' => 'These credentials do not match our records.',
'password' => 'The provided password is incorrect.',
'throttle' => 'Too many login attempts. Please try again in :seconds seconds.',

];

+ 19
- 0
lang/ja/pagination.php View File

@@ -0,0 +1,19 @@
<?php

return [

/*
|--------------------------------------------------------------------------
| Pagination Language Lines
|--------------------------------------------------------------------------
|
| The following language lines are used by the paginator library to build
| the simple pagination links. You are free to change them to anything
| you want to customize your views to better match your application.
|
*/

'previous' => '&laquo; Previous',
'next' => 'Next &raquo;',

];

+ 22
- 0
lang/ja/passwords.php View File

@@ -0,0 +1,22 @@
<?php

return [

/*
|--------------------------------------------------------------------------
| Password Reset Language Lines
|--------------------------------------------------------------------------
|
| The following language lines are the default lines which match reasons
| that are given by the password broker for a password update attempt
| has failed, such as for an invalid token or invalid new password.
|
*/

'reset' => 'Your password has been reset.',
'sent' => 'We have emailed your password reset link.',
'throttled' => 'Please wait before retrying.',
'token' => 'This password reset token is invalid.',
'user' => "We can't find a user with that email address.",

];

+ 205
- 0
lang/ja/validation.php View File

@@ -0,0 +1,205 @@
<?php

return array_merge([

/*
|--------------------------------------------------------------------------
| Validation Language Lines
|--------------------------------------------------------------------------
|
| The following language lines contain the default error messages used by
| the validator class. Some of these rules have multiple versions such
| as the size rules. Feel free to tweak each of these messages here.
|
*/

'accepted' => 'The :attribute field must be accepted.',
'accepted_if' => 'The :attribute field must be accepted when :other is :value.',
'active_url' => 'The :attribute field must be a valid URL.',
'after' => 'The :attribute field must be a date after :date.',
'after_or_equal' => 'The :attribute field must be a date after or equal to :date.',
'alpha' => 'The :attribute field must only contain letters.',
'alpha_dash' => 'The :attribute field must only contain letters, numbers, dashes, and underscores.',
'alpha_num' => 'The :attribute field must only contain letters and numbers.',
'array' => 'The :attribute field must be an array.',
'ascii' => 'The :attribute field must only contain single-byte alphanumeric characters and symbols.',
'before' => 'The :attribute field must be a date before :date.',
'before_or_equal' => 'The :attribute field must be a date before or equal to :date.',
'between' => [
'array' => 'The :attribute field must have between :min and :max items.',
'file' => 'The :attribute field must be between :min and :max kilobytes.',
'numeric' => 'The :attribute field must be between :min and :max.',
'string' => 'The :attribute field must be between :min and :max characters.',
],
'boolean' => 'The :attribute field must be true or false.',
'confirmed' => 'The :attribute field confirmation does not match.',
'current_password' => 'The password is incorrect.',
'date' => 'The :attribute field must be a valid date.',
'date_equals' => 'The :attribute field must be a date equal to :date.',
'date_format' => 'The :attribute field must match the format :format.',
'decimal' => 'The :attribute field must have :decimal decimal places.',
'declined' => 'The :attribute field must be declined.',
'declined_if' => 'The :attribute field must be declined when :other is :value.',
'different' => 'The :attribute field and :other must be different.',
'digits' => 'The :attribute field must be :digits digits.',
'digits_between' => 'The :attribute field must be between :min and :max digits.',
'dimensions' => 'The :attribute field has invalid image dimensions.',
'distinct' => 'The :attribute field has a duplicate value.',
'doesnt_end_with' => 'The :attribute field must not end with one of the following: :values.',
'doesnt_start_with' => 'The :attribute field must not start with one of the following: :values.',
'email' => 'The :attribute field must be a valid email address.',
'ends_with' => 'The :attribute field must end with one of the following: :values.',
'enum' => 'The selected :attribute is invalid.',
'exists' => 'The selected :attribute is invalid.',
'file' => 'The :attribute field must be a file.',
'filled' => 'The :attribute field must have a value.',
'gt' => [
'array' => 'The :attribute field must have more than :value items.',
'file' => 'The :attribute field must be greater than :value kilobytes.',
'numeric' => 'The :attribute field must be greater than :value.',
'string' => 'The :attribute field must be greater than :value characters.',
],
'gte' => [
'array' => 'The :attribute field must have :value items or more.',
'file' => 'The :attribute field must be greater than or equal to :value kilobytes.',
'numeric' => 'The :attribute field must be greater than or equal to :value.',
'string' => 'The :attribute field must be greater than or equal to :value characters.',
],
'image' => 'The :attribute field must be an image.',
'in' => 'The selected :attribute is invalid.',
'in_array' => 'The :attribute field must exist in :other.',
'integer' => 'The :attribute field must be an integer.',
'ip' => 'The :attribute field must be a valid IP address.',
'ipv4' => 'The :attribute field must be a valid IPv4 address.',
'ipv6' => 'The :attribute field must be a valid IPv6 address.',
'json' => 'The :attribute field must be a valid JSON string.',
'lowercase' => 'The :attribute field must be lowercase.',
'lt' => [
'array' => 'The :attribute field must have less than :value items.',
'file' => 'The :attribute field must be less than :value kilobytes.',
'numeric' => 'The :attribute field must be less than :value.',
'string' => 'The :attribute field must be less than :value characters.',
],
'lte' => [
'array' => 'The :attribute field must not have more than :value items.',
'file' => 'The :attribute field must be less than or equal to :value kilobytes.',
'numeric' => 'The :attribute field must be less than or equal to :value.',
'string' => 'The :attribute field must be less than or equal to :value characters.',
],
'mac_address' => 'The :attribute field must be a valid MAC address.',
'max' => [
'array' => 'The :attribute field must not have more than :max items.',
'file' => 'The :attribute field must not be greater than :max kilobytes.',
'numeric' => 'The :attribute field must not be greater than :max.',
'string' => 'The :attribute field must not be greater than :max characters.',
],
'max_digits' => 'The :attribute field must not have more than :max digits.',
'mimes' => 'The :attribute field must be a file of type: :values.',
'mimetypes' => 'The :attribute field must be a file of type: :values.',
'min' => [
'array' => 'The :attribute field must have at least :min items.',
'file' => 'The :attribute field must be at least :min kilobytes.',
'numeric' => 'The :attribute field must be at least :min.',
'string' => 'The :attribute field must be at least :min characters.',
],
'min_digits' => 'The :attribute field must have at least :min digits.',
'missing' => 'The :attribute field must be missing.',
'missing_if' => 'The :attribute field must be missing when :other is :value.',
'missing_unless' => 'The :attribute field must be missing unless :other is :value.',
'missing_with' => 'The :attribute field must be missing when :values is present.',
'missing_with_all' => 'The :attribute field must be missing when :values are present.',
'multiple_of' => 'The :attribute field must be a multiple of :value.',
'not_in' => 'The selected :attribute is invalid.',
'not_regex' => 'The :attribute field format is invalid.',
'numeric' => 'The :attribute field must be a number.',
'password' => [
'letters' => 'The :attribute field must contain at least one letter.',
'mixed' => 'The :attribute field must contain at least one uppercase and one lowercase letter.',
'numbers' => 'The :attribute field must contain at least one number.',
'symbols' => 'The :attribute field must contain at least one symbol.',
'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.',
],
'present' => 'The :attribute field must be present.',
'prohibited' => 'The :attribute field is prohibited.',
'prohibited_if' => 'The :attribute field is prohibited when :other is :value.',
'prohibited_unless' => 'The :attribute field is prohibited unless :other is in :values.',
'prohibits' => 'The :attribute field prohibits :other from being present.',
'regex' => 'The :attribute field format is invalid.',
'required' => 'The :attribute field is required.',
'required_array_keys' => 'The :attribute field must contain entries for: :values.',
'required_if' => 'The :attribute field is required when :other is :value.',
'required_if_accepted' => 'The :attribute field is required when :other is accepted.',
'required_unless' => 'The :attribute field is required unless :other is in :values.',
'required_with' => 'The :attribute field is required when :values is present.',
'required_with_all' => 'The :attribute field is required when :values are present.',
'required_without' => 'The :attribute field is required when :values is not present.',
'required_without_all' => 'The :attribute field is required when none of :values are present.',
'same' => 'The :attribute field must match :other.',
'size' => [
'array' => 'The :attribute field must contain :size items.',
'file' => 'The :attribute field must be :size kilobytes.',
'numeric' => 'The :attribute field must be :size.',
'string' => 'The :attribute field must be :size characters.',
],
'starts_with' => 'The :attribute field must start with one of the following: :values.',
'string' => 'The :attribute field must be a string.',
'timezone' => 'The :attribute field must be a valid timezone.',
'unique' => 'The :attribute has already been taken.',
'uploaded' => 'The :attribute failed to upload.',
'uppercase' => 'The :attribute field must be uppercase.',
'url' => 'The :attribute field must be a valid URL.',
'ulid' => 'The :attribute field must be a valid ULID.',
'uuid' => 'The :attribute field must be a valid UUID.',

/*
|--------------------------------------------------------------------------
| Custom Validation Language Lines
|--------------------------------------------------------------------------
|
| Here you may specify custom validation messages for attributes using the
| convention "attribute.rule" to name the lines. This makes it quick to
| specify a specific custom language line for a given attribute rule.
|
*/

'custom' => [
'attribute-name' => [
'rule-name' => 'custom-message',
],
],

/*
|--------------------------------------------------------------------------
| Custom Validation Attributes
|--------------------------------------------------------------------------
|
| The following language lines are used to swap our attribute placeholder
| with something more reader friendly such as "E-Mail Address" instead
| of "email". This simply helps us make our message more expressive.
|
*/

'attributes' => [],

], [
'after' => '日付の前後関係が正しくありません',
'after_or_equal' => '日付の前後関係が正しくありません',
'before_or_equal' => '日付の前後関係が正しくありません',
'between' => [
'string' => ':min から :max 文字入力してください',
],
'date' => '日付を入力してください',
'email' => 'Emailの形式が正しくありません',
'enum' => '正しい項目を選択してください',
'exists' => '存在しません',
'max' => [
'string' => ':max 文字まで入力できます',
],
'numeric' => '数値を入力してください',
'required' => '必須項目です',
'size' => [
'string' => ':size 桁で入力してください.',
],
'string' => '文字を入力してください',
'unique' => 'すでに使われています',
]);

+ 19
- 0
routes/api.php View File

@@ -23,9 +23,28 @@ RouteHelper::get('/qr-service/get-ticket', App\Http\Controllers\Web\QRService\Cr


Route::middleware('auth:sanctum')->group(function () { Route::middleware('auth:sanctum')->group(function () {


// 管理者ルート
Route::middleware(RouteHelper::role([UserRole::ADMIN]))->group(function () { Route::middleware(RouteHelper::role([UserRole::ADMIN]))->group(function () {
RouteHelper::get('/customer/list', App\Http\Controllers\Web\Customer\CustomerListController::class);
RouteHelper::get('/login-user/customer/list', App\Http\Controllers\Web\LoginUser\CustomerListController::class);
RouteHelper::get('/login-user/customer/register', App\Http\Controllers\Web\LoginUser\CustomerRegisterController::class);
RouteHelper::get('/login-user/shop/register', App\Http\Controllers\Web\LoginUser\CustomerRegisterController::class);
}); });


// 運営会社ルート
Route::middleware(RouteHelper::role([UserRole::CUSTOMER]))->group(function () {
RouteHelper::post('/login-user/shop/register', App\Http\Controllers\Web\LoginUser\ShopRegisterController::class);
RouteHelper::post('/shop/register', App\Http\Controllers\Web\Shop\ShopRegisterController::class);
RouteHelper::post('/shop/list', App\Http\Controllers\Web\Shop\ShopListController::class);
});

// 店舗ルート
Route::middleware(RouteHelper::role([UserRole::SHOP]))->group(function () {
RouteHelper::get('/shop/deposit', App\Http\Controllers\Web\Shop\MyDepositController::class);
RouteHelper::post('/shop/deposit/charge', App\Http\Controllers\Web\Shop\DepositChargeController::class);
});

// 管理者と運営会社ルート
Route::middleware(RouteHelper::role([UserRole::ADMIN, UserRole::CUSTOMER]))->group(function () { Route::middleware(RouteHelper::role([UserRole::ADMIN, UserRole::CUSTOMER]))->group(function () {
RouteHelper::post('/role/switch', App\Http\Controllers\Web\Auth\SwitchController::class); RouteHelper::post('/role/switch', App\Http\Controllers\Web\Auth\SwitchController::class);
RouteHelper::get('/role/switch/end', App\Http\Controllers\Web\Auth\SwitchEndController::class); RouteHelper::get('/role/switch/end', App\Http\Controllers\Web\Auth\SwitchEndController::class);


Loading…
Cancel
Save