mirror of
https://gitlab.com/CIEFWorldwideSdnBhd/shipping-portal.git
synced 2026-08-19 04:24:12 +00:00
Add address API,Model,Controller
This commit is contained in:
@@ -0,0 +1,42 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Classes\Jobs;
|
||||||
|
|
||||||
|
use App\Classes\Exceptions\MalformedRequestException;
|
||||||
|
use App\Classes\Modules\Accounts\Services\ExpiresEmailVerificationAttempt;
|
||||||
|
use App\Classes\Modules\Accounts\Services\ExpiresPasswordReset;
|
||||||
|
use App\Models\PasswordReset;
|
||||||
|
use App\Models\UserEmailVerification;
|
||||||
|
use Illuminate\Bus\Queueable;
|
||||||
|
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||||
|
use Illuminate\Foundation\Bus\Dispatchable;
|
||||||
|
use Illuminate\Queue\InteractsWithQueue;
|
||||||
|
use Illuminate\Queue\SerializesModels;
|
||||||
|
|
||||||
|
class EmailVerificationAttemptExpiration implements ShouldQueue
|
||||||
|
{
|
||||||
|
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
|
||||||
|
|
||||||
|
|
||||||
|
/** @var UserEmailVerification */
|
||||||
|
private $attempt;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* EmailVerificationAttemptExpiration constructor.
|
||||||
|
* @param UserEmailVerification $attempt
|
||||||
|
*/
|
||||||
|
public function __construct(UserEmailVerification $attempt)
|
||||||
|
{
|
||||||
|
$this->attempt = $attempt;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @throws MalformedRequestException
|
||||||
|
*/
|
||||||
|
public function handle()
|
||||||
|
{
|
||||||
|
(new ExpiresEmailVerificationAttempt())->execute($this->attempt);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,39 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Classes\Jobs;
|
||||||
|
|
||||||
|
use App\Classes\Exceptions\MalformedRequestException;
|
||||||
|
use App\Classes\Modules\Accounts\Services\ExpiresPasswordReset;
|
||||||
|
use App\Models\PasswordReset;
|
||||||
|
use Illuminate\Bus\Queueable;
|
||||||
|
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||||
|
use Illuminate\Foundation\Bus\Dispatchable;
|
||||||
|
use Illuminate\Queue\InteractsWithQueue;
|
||||||
|
use Illuminate\Queue\SerializesModels;
|
||||||
|
|
||||||
|
class PasswordResetTokenExpiration implements ShouldQueue
|
||||||
|
{
|
||||||
|
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
|
||||||
|
|
||||||
|
|
||||||
|
/** @var PasswordReset */
|
||||||
|
private $attempt;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* PasswordResetTokenExpiration constructor.
|
||||||
|
* @param PasswordReset $attempt
|
||||||
|
*/
|
||||||
|
public function __construct(PasswordReset $attempt)
|
||||||
|
{
|
||||||
|
$this->attempt = $attempt;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @throws MalformedRequestException
|
||||||
|
*/
|
||||||
|
public function handle()
|
||||||
|
{
|
||||||
|
(new ExpiresPasswordReset())->execute($this->attempt);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,42 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Classes\Jobs;
|
||||||
|
|
||||||
|
use App\Classes\Notifications\ResetPasswordEmail;
|
||||||
|
use App\Models\PasswordReset;
|
||||||
|
use App\Models\User;
|
||||||
|
use Illuminate\Bus\Queueable;
|
||||||
|
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||||
|
use Illuminate\Foundation\Bus\Dispatchable;
|
||||||
|
use Illuminate\Queue\InteractsWithQueue;
|
||||||
|
use Illuminate\Queue\SerializesModels;
|
||||||
|
|
||||||
|
class SendResetPasswordEmail implements ShouldQueue
|
||||||
|
{
|
||||||
|
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
|
||||||
|
|
||||||
|
|
||||||
|
/** @var User */
|
||||||
|
private $user;
|
||||||
|
|
||||||
|
/** @var PasswordReset */
|
||||||
|
private $attempt;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* SendResetPasswordEmail constructor.
|
||||||
|
* @param User $user
|
||||||
|
* @param PasswordReset $attempt
|
||||||
|
*/
|
||||||
|
public function __construct(User $user, PasswordReset $attempt)
|
||||||
|
{
|
||||||
|
$this->user = $user;
|
||||||
|
$this->attempt = $attempt;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public function handle()
|
||||||
|
{
|
||||||
|
$this->user->notify(new ResetPasswordEmail($this->user, $this->attempt));
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Classes\Jobs;
|
||||||
|
|
||||||
|
use App\Classes\Notifications\UserVerificationEmail;
|
||||||
|
use App\Models\User;
|
||||||
|
use App\Models\UserEmailVerification;
|
||||||
|
use Illuminate\Bus\Queueable;
|
||||||
|
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||||
|
use Illuminate\Foundation\Bus\Dispatchable;
|
||||||
|
use Illuminate\Queue\InteractsWithQueue;
|
||||||
|
use Illuminate\Queue\SerializesModels;
|
||||||
|
|
||||||
|
class SendUserVerificationEmail implements ShouldQueue
|
||||||
|
{
|
||||||
|
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
|
||||||
|
|
||||||
|
|
||||||
|
/** @var User */
|
||||||
|
private $user;
|
||||||
|
|
||||||
|
/** @var UserEmailVerification */
|
||||||
|
private $attempt;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* SendUserVerificationEmail constructor.
|
||||||
|
* @param User $user
|
||||||
|
* @param UserEmailVerification $attempt
|
||||||
|
*/
|
||||||
|
public function __construct(User $user, UserEmailVerification $attempt)
|
||||||
|
{
|
||||||
|
$this->user = $user;
|
||||||
|
$this->attempt = $attempt;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public function handle()
|
||||||
|
{
|
||||||
|
$this->user->notify(new UserVerificationEmail($this->user, $this->attempt));
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,79 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Classes\Modules\Addresses\ControllersLogic;
|
||||||
|
|
||||||
|
|
||||||
|
use App\Classes\General\Abstracts\AbstractControllerLogic;
|
||||||
|
use App\Classes\Modules\Addresses\Services\CreatesAddress;
|
||||||
|
use App\Classes\Modules\Addresses\Services\FetchesDistrict;
|
||||||
|
use App\Classes\Modules\Addresses\Standards\Rules\CanCreateAddress;
|
||||||
|
use App\Classes\Modules\Addresses\DataTransferObjects\AddressObject;
|
||||||
|
use App\Classes\Modules\Companies\Services\FetchesCompany;
|
||||||
|
use App\Http\Resources\AddressResource;
|
||||||
|
use ErrorException;
|
||||||
|
use Illuminate\Http\JsonResponse;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
|
||||||
|
class CreateAddressLogic extends AbstractControllerLogic
|
||||||
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
protected function notification():array {
|
||||||
|
return [
|
||||||
|
'title' => 'Created Address',
|
||||||
|
'message' => 'You have successfully created a new Address'
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @var CanCreateAddress */
|
||||||
|
private $canCreateAddress;
|
||||||
|
|
||||||
|
/** @var FetchesDistrict */
|
||||||
|
private $fetchesDistrict;
|
||||||
|
|
||||||
|
/** @var FetchesCompany */
|
||||||
|
private $fetchesCompany;
|
||||||
|
|
||||||
|
/** @var CreatesAddress */
|
||||||
|
private $createsAddress;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* CreateAddressLogic constructor.
|
||||||
|
* @param CanCreateAddress $canCreateAddress
|
||||||
|
* @param FetchesDistrict $fetchesDistrict
|
||||||
|
* @param FetchesCompany $fetchesCompany
|
||||||
|
* @param CreatesAddress $createsAddress
|
||||||
|
*/
|
||||||
|
public function __construct(CanCreateAddress $canCreateAddress, FetchesDistrict $fetchesDistrict, FetchesCompany $fetchesCompany, CreatesAddress $createsAddress)
|
||||||
|
{
|
||||||
|
$this->canCreateAddress = $canCreateAddress;
|
||||||
|
$this->fetchesDistrict = $fetchesDistrict;
|
||||||
|
$this->fetchesCompany = $fetchesCompany;
|
||||||
|
$this->createsAddress = $createsAddress;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param Request $request
|
||||||
|
* @return JsonResponse
|
||||||
|
* @throws \App\Classes\Exceptions\AccessForbiddenException
|
||||||
|
* @throws \App\Classes\Exceptions\MalformedRequestException
|
||||||
|
* @throws \App\Classes\Exceptions\RequestValidationException
|
||||||
|
*/
|
||||||
|
public function logic(Request $request) : JsonResponse
|
||||||
|
{
|
||||||
|
|
||||||
|
$district = $this->fetchesDistrict->execute(['id' => $request->input('district_id')]);
|
||||||
|
|
||||||
|
$object = new AddressObject($request->input('street_one'), $request->input('street_two'), $district->country_id, $district->state_id, $district->id, $request->input('post_code'));
|
||||||
|
|
||||||
|
$this->canCreateAddress->passes($object);
|
||||||
|
|
||||||
|
$query = $this->createsAddress->execute($this->fetchesCompany->execute(['id' => $request->input('company_id')]), $object);
|
||||||
|
|
||||||
|
return $this->resourceResponse(new AddressResource($query));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,73 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Classes\Modules\Addresses\ControllersLogic;
|
||||||
|
|
||||||
|
|
||||||
|
use App\Classes\General\Abstracts\AbstractControllerLogic;
|
||||||
|
use App\Classes\Modules\Addresses\Services\DeletesAddress;
|
||||||
|
use App\Classes\Modules\Addresses\Services\FetchesAddress;
|
||||||
|
use App\Classes\Modules\Addresses\Standards\Rules\CanDeleteAddress;
|
||||||
|
use ErrorException;
|
||||||
|
use Illuminate\Http\JsonResponse;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
|
||||||
|
class DeleteAddressLogic extends AbstractControllerLogic
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
protected function notification():array {
|
||||||
|
return [
|
||||||
|
'title' => 'Deleted Address',
|
||||||
|
'message' => 'You have successfully deleted a Address'
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/** @var CanDeleteAddress */
|
||||||
|
private $canDeleteAddress;
|
||||||
|
|
||||||
|
/** @var DeletesAddress */
|
||||||
|
private $deletesAddress;
|
||||||
|
|
||||||
|
/** @var FetchesAddress */
|
||||||
|
private $fetchesAddress;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* DeleteAddressControllersLogic constructor.
|
||||||
|
* @param CanDeleteAddress $canDeleteAddress
|
||||||
|
* @param DeletesAddress $deletesAddress
|
||||||
|
* @param FetchesAddress $fetchesAddress
|
||||||
|
*/
|
||||||
|
public function __construct(CanDeleteAddress $canDeleteAddress, DeletesAddress $deletesAddress, FetchesAddress $fetchesAddress)
|
||||||
|
{
|
||||||
|
$this->canDeleteAddress = $canDeleteAddress;
|
||||||
|
$this->deletesAddress = $deletesAddress;
|
||||||
|
$this->fetchesAddress = $fetchesAddress;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param Request $request
|
||||||
|
* @return JsonResponse
|
||||||
|
* @throws ErrorException
|
||||||
|
*/
|
||||||
|
public function logic(Request $request) : JsonResponse
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
|
||||||
|
$this->canDeleteAddress->passes();
|
||||||
|
|
||||||
|
$query = $this->fetchesAddress->execute(['id' => $request->route('id')]);
|
||||||
|
|
||||||
|
$this->deletesAddress->execute($query);
|
||||||
|
|
||||||
|
return $this->response([]);
|
||||||
|
|
||||||
|
} catch (\Exception $exception){
|
||||||
|
throw new ErrorException($exception->getMessage(), $exception->getCode());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,66 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Classes\Modules\Addresses\ControllersLogic;
|
||||||
|
|
||||||
|
|
||||||
|
use App\Classes\General\Abstracts\AbstractControllerLogic;
|
||||||
|
use App\Classes\Modules\Addresses\Services\FetchesAddress;
|
||||||
|
use App\Classes\Modules\Addresses\Standards\Rules\CanFetchAddress;
|
||||||
|
use App\Http\Resources\AddressResource;
|
||||||
|
use ErrorException;
|
||||||
|
use Illuminate\Http\JsonResponse;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
|
||||||
|
class FetchAddressLogic extends AbstractControllerLogic
|
||||||
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
protected function notification():array {
|
||||||
|
return [
|
||||||
|
'title' => 'Retrieved Address',
|
||||||
|
'message' => 'You have successfully retrieved a Address'
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @var CanFetchAddress */
|
||||||
|
private $canFetchAddress;
|
||||||
|
|
||||||
|
/** @var FetchesAddress */
|
||||||
|
private $fetchesAddress;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* FetchAddressControllersLogic constructor.
|
||||||
|
* @param CanFetchAddress $canFetchAddress
|
||||||
|
* @param FetchesAddress $fetchesAddress
|
||||||
|
*/
|
||||||
|
public function __construct(CanFetchAddress $canFetchAddress, FetchesAddress $fetchesAddress)
|
||||||
|
{
|
||||||
|
$this->canFetchAddress = $canFetchAddress;
|
||||||
|
$this->fetchesAddress = $fetchesAddress;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param Request $request
|
||||||
|
* @return JsonResponse
|
||||||
|
* @throws ErrorException
|
||||||
|
*/
|
||||||
|
public function logic(Request $request) : JsonResponse
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
|
||||||
|
$this->canFetchAddress->passes();
|
||||||
|
|
||||||
|
$query = $this->fetchesAddress->execute(['id' => $request->route('id')]);
|
||||||
|
|
||||||
|
return $this->resourceResponse(new AddressResource($query));
|
||||||
|
|
||||||
|
} catch (\Exception $exception){
|
||||||
|
throw new ErrorException($exception->getMessage(), $exception->getCode());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,66 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Classes\Modules\Addresses\ControllersLogic;
|
||||||
|
|
||||||
|
|
||||||
|
use App\Classes\General\Abstracts\AbstractControllerLogic;
|
||||||
|
use App\Classes\Modules\Addresses\Services\ListsAddresses;
|
||||||
|
use App\Classes\Modules\Addresses\Standards\Rules\CanListAddresses;
|
||||||
|
use App\Http\Resources\AddressResource;
|
||||||
|
use ErrorException;
|
||||||
|
use Illuminate\Http\JsonResponse;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
|
||||||
|
class ListAddressesLogic extends AbstractControllerLogic
|
||||||
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
protected function notification():array {
|
||||||
|
return [
|
||||||
|
'title' => 'Retrieved Addresses',
|
||||||
|
'message' => 'You have successfully retrieved a list of Addresses'
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @var CanListAddresses */
|
||||||
|
private $canListAddresses;
|
||||||
|
|
||||||
|
/** @var ListsAddresses */
|
||||||
|
private $listsAddresses;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ListAddressesLogic constructor.
|
||||||
|
* @param CanListAddresses $canListAddresses
|
||||||
|
* @param ListsAddresses $listsAddresses
|
||||||
|
*/
|
||||||
|
public function __construct(CanListAddresses $canListAddresses, ListsAddresses $listsAddresses)
|
||||||
|
{
|
||||||
|
$this->canListAddresses = $canListAddresses;
|
||||||
|
$this->listsAddresses = $listsAddresses;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param Request $request
|
||||||
|
* @return JsonResponse
|
||||||
|
* @throws ErrorException
|
||||||
|
*/
|
||||||
|
public function logic(Request $request) : JsonResponse
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
|
||||||
|
$this->canListAddresses->passes();
|
||||||
|
|
||||||
|
$query = $this->listsAddresses->execute($this->listsAddresses->deserializeFilters($request->input('filters')));
|
||||||
|
|
||||||
|
return $this->collectionResponse(AddressResource::collection($query));
|
||||||
|
|
||||||
|
} catch (\Exception $exception){
|
||||||
|
throw new ErrorException($exception->getMessage(), $exception->getCode());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,54 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Classes\Modules\Addresses\ControllersLogic;
|
||||||
|
|
||||||
|
|
||||||
|
use App\Classes\General\Abstracts\AbstractControllerLogic;
|
||||||
|
use App\Classes\Modules\Addresses\Services\ListsAddresses;
|
||||||
|
use App\Classes\Modules\Addresses\Services\ListsDistricts;
|
||||||
|
use App\Classes\Modules\Addresses\Standards\Rules\CanListAddresses;
|
||||||
|
use App\Http\Resources\AddressResource;
|
||||||
|
use App\Http\Resources\DistrictResource;
|
||||||
|
use ErrorException;
|
||||||
|
use Illuminate\Http\JsonResponse;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
|
||||||
|
class ListDistrictsLogic extends AbstractControllerLogic
|
||||||
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
protected function notification():array {
|
||||||
|
return [
|
||||||
|
'title' => 'Retrieved Addresses',
|
||||||
|
'message' => 'You have successfully retrieved a list of Addresses'
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @var ListsDistricts */
|
||||||
|
private $listDistricts;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ListDistrictsLogic constructor.
|
||||||
|
* @param ListsDistricts $listDistricts
|
||||||
|
*/
|
||||||
|
public function __construct(ListsDistricts $listDistricts)
|
||||||
|
{
|
||||||
|
$this->listDistricts = $listDistricts;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param Request $request
|
||||||
|
* @return JsonResponse
|
||||||
|
* @throws \App\Classes\Exceptions\MalformedRequestException
|
||||||
|
*/
|
||||||
|
public function logic(Request $request) : JsonResponse
|
||||||
|
{
|
||||||
|
$query = $this->listDistricts->execute($this->listDistricts->deserializeFilters($request->input('filters')));
|
||||||
|
|
||||||
|
return $this->collectionResponse(DistrictResource::collection($query));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,70 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Classes\Modules\Addresses\ControllersLogic;
|
||||||
|
|
||||||
|
use App\Http\Resources\AddressResource;
|
||||||
|
use App\Classes\General\Abstracts\AbstractControllerLogic;
|
||||||
|
use App\Classes\Modules\Addresses\Services\FetchesAddress;
|
||||||
|
use App\Classes\Modules\Addresses\Standards\Rules\CanUpdateAddress;
|
||||||
|
use App\Classes\Modules\Addresses\Services\ResetsAddressesDefault;
|
||||||
|
use App\Classes\Modules\Addresses\Services\SetsAddressToDefault;
|
||||||
|
|
||||||
|
use App\Models\Address;
|
||||||
|
use ErrorException;
|
||||||
|
use Illuminate\Http\JsonResponse;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
|
||||||
|
|
||||||
|
class SetAddressToDefaultLogic extends AbstractControllerLogic
|
||||||
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
protected function notification(): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'title' => 'Updated Address',
|
||||||
|
'message' => 'You have successfully set the default Address'
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @var ResetsAddressesDefault */
|
||||||
|
private $resetsAddressesDefault;
|
||||||
|
|
||||||
|
/** @var FetchesAddress */
|
||||||
|
private $fetchesAddress;
|
||||||
|
|
||||||
|
/** @var SetsAddressToDefault*/
|
||||||
|
private $setsAddressToDefault;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* SetAddressToDefaultLogic constructor.
|
||||||
|
* @param ResetsAddressesDefault $resetsAddressesDefault
|
||||||
|
* @param FetchesAddress $fetchesAddress
|
||||||
|
* @param SetsAddressToDefault $setsAddressToDefault
|
||||||
|
*/
|
||||||
|
public function __construct(ResetsAddressesDefault $resetsAddressesDefault, FetchesAddress $fetchesAddress, SetsAddressToDefault $setsAddressToDefault)
|
||||||
|
{
|
||||||
|
$this->resetsAddressesDefault = $resetsAddressesDefault;
|
||||||
|
$this->fetchesAddress = $fetchesAddress;
|
||||||
|
$this->setsAddressToDefault = $setsAddressToDefault;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param Request $request
|
||||||
|
* @return JsonResponse
|
||||||
|
* @throws \App\Classes\Exceptions\MalformedRequestException
|
||||||
|
*/
|
||||||
|
public function logic(Request $request): JsonResponse
|
||||||
|
{
|
||||||
|
|
||||||
|
/** @var Address $address */
|
||||||
|
|
||||||
|
$address = $this->fetchesAddress->execute(['id' => $request->route('id')]);
|
||||||
|
|
||||||
|
$this->resetsAddressesDefault->execute($address);
|
||||||
|
|
||||||
|
return $this->resourceResponse(new AddressResource($this->setsAddressToDefault->execute($address)));
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,86 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Classes\Modules\Addresses\ControllersLogic;
|
||||||
|
|
||||||
|
|
||||||
|
use App\Classes\General\Abstracts\AbstractControllerLogic;
|
||||||
|
use App\Classes\Modules\Addresses\Services\UpdatesAddress;
|
||||||
|
use App\Classes\Modules\Addresses\Services\FetchesAddress;
|
||||||
|
use App\Classes\Modules\Addresses\Services\FetchesDistrict;
|
||||||
|
use App\Classes\Modules\Addresses\Standards\Rules\CanUpdateAddress;
|
||||||
|
use App\Classes\Modules\Addresses\DataTransferObjects\AddressObject;
|
||||||
|
use App\Http\Resources\AddressResource;
|
||||||
|
use ErrorException;
|
||||||
|
use Illuminate\Http\JsonResponse;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
|
||||||
|
class UpdateAddressLogic extends AbstractControllerLogic
|
||||||
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
protected function notification():array {
|
||||||
|
return [
|
||||||
|
'title' => 'Updated Address',
|
||||||
|
'message' => 'You have successfully updated the Address'
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @var CanUpdateAddress */
|
||||||
|
private $canUpdateAddress;
|
||||||
|
|
||||||
|
/** @var UpdatesAddress */
|
||||||
|
private $updatesAddress;
|
||||||
|
|
||||||
|
/** @var FetchesAddress */
|
||||||
|
private $fetchesAddress;
|
||||||
|
|
||||||
|
/** @var FetchesDistrict */
|
||||||
|
private $fetchesDistrict;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* UpdateAddressLogic constructor.
|
||||||
|
* @param CanUpdateAddress $canUpdateAddress
|
||||||
|
* @param UpdatesAddress $updatesAddress
|
||||||
|
* @param FetchesAddress $fetchesAddress
|
||||||
|
* @param FetchesDistrict $fetchesDistrict
|
||||||
|
*/
|
||||||
|
public function __construct(CanUpdateAddress $canUpdateAddress, UpdatesAddress $updatesAddress, FetchesAddress $fetchesAddress, FetchesDistrict $fetchesDistrict)
|
||||||
|
{
|
||||||
|
$this->canUpdateAddress = $canUpdateAddress;
|
||||||
|
$this->updatesAddress = $updatesAddress;
|
||||||
|
$this->fetchesAddress = $fetchesAddress;
|
||||||
|
$this->fetchesDistrict = $fetchesDistrict;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param Request $request
|
||||||
|
* @return JsonResponse
|
||||||
|
* @throws ErrorException
|
||||||
|
*/
|
||||||
|
public function logic(Request $request) : JsonResponse
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
|
||||||
|
$district = $this->fetchesDistrict->execute(['id' => $request->input('district_id')]);
|
||||||
|
$object = new AddressObject($request->input('street_one'), $request->input('street_two'), $district->country_id, $district->state_id, $district->id, $request->input('post_code'));
|
||||||
|
//$object = new AddressObject($request->input('company_id'), $request->input('street_one'), $request->input('street_two'), $request->input('city'), $request->input('state'), $request->input('post_code'), $request->input('country'), $request->input('default'), $request->input('billing'));
|
||||||
|
|
||||||
|
$this->canUpdateAddress->passes($object);
|
||||||
|
|
||||||
|
$query = $this->fetchesAddress->execute(['id' => $request->route('id')]);
|
||||||
|
|
||||||
|
$query = $this->updatesAddress->execute($query, $object);
|
||||||
|
|
||||||
|
return $this->resourceResponse(new AddressResource($query));
|
||||||
|
|
||||||
|
|
||||||
|
} catch (\Exception $exception){
|
||||||
|
throw new ErrorException($exception->getMessage(), $exception->getCode());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,96 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Classes\Modules\Addresses\DataTransferObjects;
|
||||||
|
|
||||||
|
use App\Classes\General\Interfaces\DataTransferObject;
|
||||||
|
|
||||||
|
class AddressObject implements DataTransferObject
|
||||||
|
{
|
||||||
|
|
||||||
|
/** @var string */
|
||||||
|
private $streetOne;
|
||||||
|
|
||||||
|
/** @var string|null */
|
||||||
|
private $streetTwo;
|
||||||
|
|
||||||
|
/** @var int */
|
||||||
|
private $countryId;
|
||||||
|
|
||||||
|
/** @var int */
|
||||||
|
private $stateId;
|
||||||
|
|
||||||
|
/** @var int */
|
||||||
|
private $districtId;
|
||||||
|
|
||||||
|
/** @var int */
|
||||||
|
private $postCode;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* AddressObject constructor.
|
||||||
|
* @param string $streetOne
|
||||||
|
* @param null|string $streetTwo
|
||||||
|
* @param int $countryId
|
||||||
|
* @param int $stateId
|
||||||
|
* @param int $districtId
|
||||||
|
* @param int $postCode
|
||||||
|
*/
|
||||||
|
public function __construct(string $streetOne, ?string $streetTwo, int $countryId, int $stateId, int $districtId, int $postCode)
|
||||||
|
{
|
||||||
|
$this->streetOne = $streetOne;
|
||||||
|
$this->streetTwo = $streetTwo;
|
||||||
|
$this->countryId = $countryId;
|
||||||
|
$this->stateId = $stateId;
|
||||||
|
$this->districtId = $districtId;
|
||||||
|
$this->postCode = $postCode;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getStreetOne(): string
|
||||||
|
{
|
||||||
|
return $this->streetOne;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return null|string
|
||||||
|
*/
|
||||||
|
public function getStreetTwo(): ?string
|
||||||
|
{
|
||||||
|
return $this->streetTwo;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return int
|
||||||
|
*/
|
||||||
|
public function getCountryId(): int
|
||||||
|
{
|
||||||
|
return $this->countryId;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return int
|
||||||
|
*/
|
||||||
|
public function getStateId(): int
|
||||||
|
{
|
||||||
|
return $this->stateId;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return int
|
||||||
|
*/
|
||||||
|
public function getDistrictId(): int
|
||||||
|
{
|
||||||
|
return $this->districtId;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return int
|
||||||
|
*/
|
||||||
|
public function getPostCode(): int
|
||||||
|
{
|
||||||
|
return $this->postCode;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Classes\Modules\Addresses\Services;
|
||||||
|
|
||||||
|
use App\Classes\General\Eloquent\AbstractUpdateRecord;
|
||||||
|
use App\Classes\General\Eloquent\AbstractUpdateRelationshipRecord;
|
||||||
|
use App\Classes\Modules\Addresses\DataTransferObjects\AddressObject;
|
||||||
|
use App\Models\Address;
|
||||||
|
use App\Models\Company;
|
||||||
|
|
||||||
|
class CreatesAddress extends AbstractUpdateRelationshipRecord
|
||||||
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param Company $company
|
||||||
|
* @param AddressObject $object
|
||||||
|
* @return \Illuminate\Database\Eloquent\Model
|
||||||
|
* @throws \App\Classes\Exceptions\MalformedRequestException
|
||||||
|
*/
|
||||||
|
public function execute(Company $company, AddressObject $object) {
|
||||||
|
$model = new Address();
|
||||||
|
$model->street_one = $object->getStreetOne();
|
||||||
|
$model->street_two = $object->getStreetTwo();
|
||||||
|
$model->country_id = $object->getCountryId();
|
||||||
|
$model->state_id = $object->getStateId();
|
||||||
|
$model->district_id = $object->getDistrictId();
|
||||||
|
$model->postcode = $object->getPostCode();
|
||||||
|
|
||||||
|
return $this->handler($company->addresses(), $model);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Classes\Modules\Addresses\Services;
|
||||||
|
|
||||||
|
use App\Classes\General\Eloquent\AbstractDeleteRecord;
|
||||||
|
use App\Models\Address;
|
||||||
|
|
||||||
|
class DeletesAddress extends AbstractDeleteRecord
|
||||||
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param Address $model
|
||||||
|
* @return mixed
|
||||||
|
* @throws \App\Classes\Exceptions\MalformedRequestException
|
||||||
|
*/
|
||||||
|
public function execute(Address $model) {
|
||||||
|
return $this->handler($model);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Classes\Modules\Addresses\Services;
|
||||||
|
|
||||||
|
|
||||||
|
use App\Classes\General\Eloquent\AbstractFetchRecord;
|
||||||
|
use Illuminate\Database\Eloquent\Builder;
|
||||||
|
use App\Models\Address;
|
||||||
|
|
||||||
|
class FetchesAddress extends AbstractFetchRecord
|
||||||
|
{
|
||||||
|
|
||||||
|
/** @var Address */
|
||||||
|
private $repository;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* FetchesAddress constructor.
|
||||||
|
* @param Address $repository
|
||||||
|
*/
|
||||||
|
public function __construct(Address $repository)
|
||||||
|
{
|
||||||
|
$this->repository = $repository;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return Builder
|
||||||
|
*/
|
||||||
|
public function getRepository(): Builder
|
||||||
|
{
|
||||||
|
return $this->repository->newQuery();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Classes\Modules\Addresses\Services;
|
||||||
|
|
||||||
|
|
||||||
|
use App\Classes\General\Eloquent\AbstractFetchRecord;
|
||||||
|
use App\Models\District;
|
||||||
|
use Illuminate\Database\Eloquent\Builder;
|
||||||
|
use App\Models\Address;
|
||||||
|
|
||||||
|
class FetchesDistrict extends AbstractFetchRecord
|
||||||
|
{
|
||||||
|
|
||||||
|
/** @var District */
|
||||||
|
private $repository;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* FetchesDistrict constructor.
|
||||||
|
* @param District $repository
|
||||||
|
*/
|
||||||
|
public function __construct(District $repository)
|
||||||
|
{
|
||||||
|
$this->repository = $repository;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return Builder
|
||||||
|
*/
|
||||||
|
public function getRepository(): Builder
|
||||||
|
{
|
||||||
|
return $this->repository->newQuery();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Classes\Modules\Addresses\Services;
|
||||||
|
|
||||||
|
|
||||||
|
use App\Classes\General\Eloquent\AbstractListRecord;
|
||||||
|
use Illuminate\Database\Eloquent\Builder;
|
||||||
|
use App\Models\Address;
|
||||||
|
|
||||||
|
class ListsAddresses extends AbstractListRecord
|
||||||
|
{
|
||||||
|
|
||||||
|
/** @var Address */
|
||||||
|
private $repository;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ListsAddresses constructor.
|
||||||
|
* @param Address $repository
|
||||||
|
*/
|
||||||
|
public function __construct(Address $repository)
|
||||||
|
{
|
||||||
|
$this->repository = $repository;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return Builder
|
||||||
|
*/
|
||||||
|
function getRepository(): Builder
|
||||||
|
{
|
||||||
|
return $this->repository->newQuery();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Classes\Modules\Addresses\Services;
|
||||||
|
|
||||||
|
|
||||||
|
use App\Classes\General\Eloquent\AbstractListRecord;
|
||||||
|
use App\Models\District;
|
||||||
|
use Illuminate\Database\Eloquent\Builder;
|
||||||
|
|
||||||
|
class ListsDistricts extends AbstractListRecord
|
||||||
|
{
|
||||||
|
|
||||||
|
/** @var District */
|
||||||
|
private $repository;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ListsDistricts constructor.
|
||||||
|
* @param District $repository
|
||||||
|
*/
|
||||||
|
public function __construct(District $repository)
|
||||||
|
{
|
||||||
|
$this->repository = $repository;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return Builder
|
||||||
|
*/
|
||||||
|
function getRepository(): Builder
|
||||||
|
{
|
||||||
|
return $this->repository->newQuery();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Classes\Modules\Addresses\Services;
|
||||||
|
|
||||||
|
use App\Classes\General\Eloquent\AbstractUpdateRecord;
|
||||||
|
use App\Models\Address;
|
||||||
|
|
||||||
|
class ResetsAddressesDefault extends AbstractUpdateRecord
|
||||||
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param Address $address
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function execute(Address $address)
|
||||||
|
{
|
||||||
|
$address->company->addresses()->update(['billing' => false]);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Classes\Modules\Addresses\Services;
|
||||||
|
|
||||||
|
use App\Classes\General\Eloquent\AbstractUpdateRecord;
|
||||||
|
use App\Models\Address;
|
||||||
|
|
||||||
|
class SetsAddressToDefault extends AbstractUpdateRecord
|
||||||
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param Address $model
|
||||||
|
* @return \Illuminate\Database\Eloquent\Model
|
||||||
|
* @throws \App\Classes\Exceptions\MalformedRequestException
|
||||||
|
*/
|
||||||
|
public function execute(Address $model)
|
||||||
|
{
|
||||||
|
$model->billing = true;
|
||||||
|
|
||||||
|
return $this->handler($model);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Classes\Modules\Addresses\Services;
|
||||||
|
|
||||||
|
use App\Classes\General\Eloquent\AbstractUpdateRecord;
|
||||||
|
use App\Classes\Modules\Addresses\DataTransferObjects\AddressObject;
|
||||||
|
use App\Models\Address;
|
||||||
|
|
||||||
|
class UpdatesAddress extends AbstractUpdateRecord
|
||||||
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param Address $model
|
||||||
|
* @param AddressObject $object
|
||||||
|
* @return \Illuminate\Database\Eloquent\Model
|
||||||
|
* @throws \App\Classes\Exceptions\MalformedRequestException
|
||||||
|
*/
|
||||||
|
public function execute(Address $model, AddressObject $object) {
|
||||||
|
|
||||||
|
//$model->company_id = $object->getCompanyId();
|
||||||
|
$model->street_one = $object->getStreetOne();
|
||||||
|
$model->street_two = $object->getStreetTwo();
|
||||||
|
$model->district_id = $object->getDistrictId();
|
||||||
|
$model->state_id = $object->getStateId();
|
||||||
|
$model->postcode = $object->getPostCode();
|
||||||
|
$model->country_id = $object->getCountryId();
|
||||||
|
//$model->default = $object->getDefault();
|
||||||
|
//$model->billing = $object->getBilling();
|
||||||
|
|
||||||
|
return $this->handler($model);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,57 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Classes\Modules\Addresses\Standards\Rules;
|
||||||
|
|
||||||
|
|
||||||
|
use App\Classes\General\Abstracts\AbstractRule;
|
||||||
|
use App\Classes\Modules\Addresses\DataTransferObjects\AddressObject;
|
||||||
|
use App\Classes\Modules\Addresses\Standards\Validators\AddressValidation;
|
||||||
|
|
||||||
|
class CanCreateAddress extends AbstractRule
|
||||||
|
{
|
||||||
|
|
||||||
|
/** @var AddressValidation */
|
||||||
|
private $addressValidation;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* CanCreateAddress constructor.
|
||||||
|
* @param AddressValidation $addressValidation
|
||||||
|
*/
|
||||||
|
public function __construct(AddressValidation $addressValidation)
|
||||||
|
{
|
||||||
|
$this->addressValidation = $addressValidation;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
protected function authorized(): bool
|
||||||
|
{
|
||||||
|
// TODO Set Authorization rules
|
||||||
|
return true;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param AddressObject $object
|
||||||
|
* @return bool
|
||||||
|
* @throws \App\Classes\Exceptions\RequestValidationException
|
||||||
|
*/
|
||||||
|
protected function validators($object): bool
|
||||||
|
{
|
||||||
|
return $this->addressValidation->validate($object);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param AddressObject $object
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
protected function criteria($object): bool
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,43 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Classes\Modules\Addresses\Standards\Rules;
|
||||||
|
|
||||||
|
|
||||||
|
use App\Classes\General\Abstracts\AbstractRule;
|
||||||
|
use App\Classes\Modules\Addresses\DataTransferObjects\AddressObject;
|
||||||
|
|
||||||
|
class CanDeleteAddress extends AbstractRule
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
protected function authorized(): bool
|
||||||
|
{
|
||||||
|
// TODO Set Authorization rules
|
||||||
|
return true;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param AddressObject $object
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
protected function validators($object): bool
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param AddressObject $object
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
protected function criteria($object): bool
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,43 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Classes\Modules\Addresses\Standards\Rules;
|
||||||
|
|
||||||
|
|
||||||
|
use App\Classes\General\Abstracts\AbstractRule;
|
||||||
|
use App\Classes\Modules\Addresses\DataTransferObjects\AddressObject;
|
||||||
|
|
||||||
|
class CanFetchAddress extends AbstractRule
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
protected function authorized(): bool
|
||||||
|
{
|
||||||
|
// TODO Set Authorization rules
|
||||||
|
return true;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param AddressObject $object
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
protected function validators($object): bool
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param AddressObject $object
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
protected function criteria($object): bool
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,43 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Classes\Modules\Addresses\Standards\Rules;
|
||||||
|
|
||||||
|
|
||||||
|
use App\Classes\General\Abstracts\AbstractRule;
|
||||||
|
use App\Classes\Modules\Addresses\DataTransferObjects\AddressObject;
|
||||||
|
|
||||||
|
class CanListAddresses extends AbstractRule
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
protected function authorized(): bool
|
||||||
|
{
|
||||||
|
// TODO Set Authorization rules
|
||||||
|
return true;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param AddressObject $object
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
protected function validators($object): bool
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param AddressObject $object
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
protected function criteria($object): bool
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,57 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Classes\Modules\Addresses\Standards\Rules;
|
||||||
|
|
||||||
|
|
||||||
|
use App\Classes\General\Abstracts\AbstractRule;
|
||||||
|
use App\Classes\Modules\Addresses\DataTransferObjects\AddressObject;
|
||||||
|
use App\Classes\Modules\Addresses\Standards\Validators\AddressValidation;
|
||||||
|
|
||||||
|
class CanUpdateAddress extends AbstractRule
|
||||||
|
{
|
||||||
|
|
||||||
|
/** @var AddressValidation */
|
||||||
|
private $addressValidation;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* CanUpdateAddress constructor.
|
||||||
|
* @param AddressValidation $addressValidation
|
||||||
|
*/
|
||||||
|
public function __construct(AddressValidation $addressValidation)
|
||||||
|
{
|
||||||
|
$this->addressValidation = $addressValidation;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
protected function authorized(): bool
|
||||||
|
{
|
||||||
|
// TODO Set Authorization rules
|
||||||
|
return true;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param AddressObject $object
|
||||||
|
* @return bool
|
||||||
|
* @throws \App\Classes\Exceptions\RequestValidationException
|
||||||
|
*/
|
||||||
|
protected function validators($object): bool
|
||||||
|
{
|
||||||
|
return $this->addressValidation->validate($object);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param AddressObject $object
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
protected function criteria($object): bool
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,42 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Classes\Modules\Addresses\Standards\Validators;
|
||||||
|
|
||||||
|
|
||||||
|
use App\Classes\General\Abstracts\AbstractValidation;
|
||||||
|
use App\Classes\Modules\Addresses\DataTransferObjects\AddressObject;
|
||||||
|
|
||||||
|
class AddressValidation extends AbstractValidation
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param AddressObject $object
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
protected function data($object): array {
|
||||||
|
return [
|
||||||
|
'street_one' => $object->getStreetOne(),
|
||||||
|
'street_two' => $object->getStreetTwo(),
|
||||||
|
'district_id' => $object->getDistrictId()
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
protected function rules(): array {
|
||||||
|
return [
|
||||||
|
'street_one' => 'required',
|
||||||
|
'district_id' => 'required',
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
protected function messages(): array {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Classes\ValueObjects\Constants;
|
||||||
|
|
||||||
|
final class ApprovalStatus {
|
||||||
|
|
||||||
|
public const PENDING_SUBMISSION = 0;
|
||||||
|
|
||||||
|
public const PENDING_VERIFICATION = 1;
|
||||||
|
|
||||||
|
public const APPROVED = 2;
|
||||||
|
|
||||||
|
public const COMPLETED = 3;
|
||||||
|
|
||||||
|
public const REJECTED = 4;
|
||||||
|
|
||||||
|
public const SUSPENDED = 5;
|
||||||
|
|
||||||
|
public const EXPIRED = 6;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Classes\ValueObjects\Constants;
|
||||||
|
|
||||||
|
final class BusinessType {
|
||||||
|
|
||||||
|
public const FREIGHT_FORWARDER = 1;
|
||||||
|
|
||||||
|
public const IMPORTER = 2;
|
||||||
|
|
||||||
|
public const CURRENCY_VENDOR = 3;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Classes\ValueObjects\Constants;
|
||||||
|
|
||||||
|
final class CompanyType {
|
||||||
|
|
||||||
|
public const PERSONAL_BUSINESS = 0;
|
||||||
|
|
||||||
|
public const COMPANY_BUSINESS = 1;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Classes\ValueObjects\Constants;
|
||||||
|
|
||||||
|
final class Countries {
|
||||||
|
|
||||||
|
public const MALAYSIA = 1;
|
||||||
|
|
||||||
|
public const CHINA = 2;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers\Addresses;
|
||||||
|
|
||||||
|
use App\Classes\Modules\Addresses\ControllersLogic\CreateAddressLogic;
|
||||||
|
use Illuminate\Http\JsonResponse;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
|
||||||
|
class CreateAddressController
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @param Request $request
|
||||||
|
* @param CreateAddressLogic $logic
|
||||||
|
* @return JsonResponse
|
||||||
|
*/
|
||||||
|
public function create(Request $request, CreateAddressLogic $logic): JsonResponse {
|
||||||
|
return $logic->execute($request);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers\Addresses;
|
||||||
|
|
||||||
|
use App\Classes\Modules\Addresses\ControllersLogic\DeleteAddressLogic;
|
||||||
|
use Illuminate\Http\JsonResponse;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
|
||||||
|
class DeleteAddressController
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @param Request $request
|
||||||
|
* @param DeleteAddressLogic $logic
|
||||||
|
* @return JsonResponse
|
||||||
|
*/
|
||||||
|
public function destroy(Request $request, DeleteAddressLogic $logic): JsonResponse {
|
||||||
|
return $logic->execute($request);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers\Addresses;
|
||||||
|
|
||||||
|
use App\Classes\Modules\Addresses\ControllersLogic\FetchAddressLogic;
|
||||||
|
use Illuminate\Http\JsonResponse;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
|
||||||
|
class FetchAddressController
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @param Request $request
|
||||||
|
* @param FetchAddressLogic $logic
|
||||||
|
* @return JsonResponse
|
||||||
|
*/
|
||||||
|
public function fetch(Request $request, FetchAddressLogic $logic): JsonResponse {
|
||||||
|
return $logic->execute($request);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers\Addresses;
|
||||||
|
|
||||||
|
use App\Classes\Modules\Addresses\ControllersLogic\ListAddressesLogic;
|
||||||
|
use Illuminate\Http\JsonResponse;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
|
||||||
|
class ListAddressesController
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @param Request $request
|
||||||
|
* @param ListAddressesLogic $logic
|
||||||
|
* @return JsonResponse
|
||||||
|
*/
|
||||||
|
public function list(Request $request, ListAddressesLogic $logic): JsonResponse {
|
||||||
|
return $logic->execute($request);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers\Addresses;
|
||||||
|
|
||||||
|
use App\Classes\Modules\Addresses\ControllersLogic\ListDistrictsLogic;
|
||||||
|
use Illuminate\Http\JsonResponse;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
|
||||||
|
class ListDistrictsController
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @param Request $request
|
||||||
|
* @param ListDistrictsLogic $logic
|
||||||
|
* @return JsonResponse
|
||||||
|
*/
|
||||||
|
public function list(Request $request, ListDistrictsLogic $logic): JsonResponse {
|
||||||
|
return $logic->execute($request);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers\Addresses;
|
||||||
|
|
||||||
|
use App\Classes\Modules\Addresses\ControllersLogic\SetAddressToDefaultLogic;
|
||||||
|
use Illuminate\Http\JsonResponse;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
|
||||||
|
class SetAddressToDefaultController
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @param Request $request
|
||||||
|
* @param SetAddressToDefaultLogic $logic
|
||||||
|
* @return JsonResponse
|
||||||
|
*/
|
||||||
|
public function update(Request $request, SetAddressToDefaultLogic $logic): JsonResponse {
|
||||||
|
return $logic->execute($request);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers\Addresses;
|
||||||
|
|
||||||
|
use App\Classes\Modules\Addresses\ControllersLogic\UpdateAddressLogic;
|
||||||
|
use Illuminate\Http\JsonResponse;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
|
||||||
|
class UpdateAddressController
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @param Request $request
|
||||||
|
* @param UpdateAddressLogic $logic
|
||||||
|
* @return JsonResponse
|
||||||
|
*/
|
||||||
|
public function update(Request $request, UpdateAddressLogic $logic): JsonResponse {
|
||||||
|
return $logic->execute($request);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers\ServiceTypes;
|
||||||
|
|
||||||
|
use App\Classes\Modules\ServiceTypes\ControllersLogic\CreateServiceTypeLogic;
|
||||||
|
use Illuminate\Http\JsonResponse;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
|
||||||
|
class CreateServiceTypeController
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @param Request $request
|
||||||
|
* @param CreateServiceTypeLogic $logic
|
||||||
|
* @return JsonResponse
|
||||||
|
*/
|
||||||
|
public function create(Request $request, CreateServiceTypeLogic $logic): JsonResponse {
|
||||||
|
return $logic->execute($request);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers\ServiceTypes;
|
||||||
|
|
||||||
|
use App\Classes\Modules\ServiceTypes\ControllersLogic\DeleteServiceTypeLogic;
|
||||||
|
use Illuminate\Http\JsonResponse;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
|
||||||
|
class DeleteServiceTypeController
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @param Request $request
|
||||||
|
* @param DeleteServiceTypeLogic $logic
|
||||||
|
* @return JsonResponse
|
||||||
|
*/
|
||||||
|
public function destroy(Request $request, DeleteServiceTypeLogic $logic): JsonResponse {
|
||||||
|
return $logic->execute($request);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers\ServiceTypes;
|
||||||
|
|
||||||
|
use App\Classes\Modules\ServiceTypes\ControllersLogic\FetchServiceTypeLogic;
|
||||||
|
use Illuminate\Http\JsonResponse;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
|
||||||
|
class FetchServiceTypeController
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @param Request $request
|
||||||
|
* @param FetchServiceTypeLogic $logic
|
||||||
|
* @return JsonResponse
|
||||||
|
*/
|
||||||
|
public function fetch(Request $request, FetchServiceTypeLogic $logic): JsonResponse {
|
||||||
|
return $logic->execute($request);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers\ServiceTypes;
|
||||||
|
|
||||||
|
use App\Classes\Modules\ServiceTypes\ControllersLogic\ListServiceTypesLogic;
|
||||||
|
use Illuminate\Http\JsonResponse;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
|
||||||
|
class ListServiceTypesController
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @param Request $request
|
||||||
|
* @param ListServiceTypesLogic $logic
|
||||||
|
* @return JsonResponse
|
||||||
|
*/
|
||||||
|
public function list(Request $request, ListServiceTypesLogic $logic): JsonResponse {
|
||||||
|
return $logic->execute($request);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers\ServiceTypes;
|
||||||
|
|
||||||
|
use App\Classes\Modules\ServiceTypes\ControllersLogic\UpdateServiceTypeLogic;
|
||||||
|
use Illuminate\Http\JsonResponse;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
|
||||||
|
class UpdateServiceTypeController
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @param Request $request
|
||||||
|
* @param UpdateServiceTypeLogic $logic
|
||||||
|
* @return JsonResponse
|
||||||
|
*/
|
||||||
|
public function update(Request $request, UpdateServiceTypeLogic $logic): JsonResponse {
|
||||||
|
return $logic->execute($request);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers\ServiceTypes;
|
||||||
|
|
||||||
|
use App\Classes\Modules\ServiceTypes\ControllersLogic\UpdateServiceTypeStatusLogic;
|
||||||
|
use Illuminate\Http\JsonResponse;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
|
||||||
|
class UpdateServiceTypeStatusController
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @param Request $request
|
||||||
|
* @param UpdateServiceTypeStatusLogic $logic
|
||||||
|
* @return JsonResponse
|
||||||
|
*/
|
||||||
|
public function activate(Request $request, UpdateServiceTypeStatusLogic $logic): JsonResponse {
|
||||||
|
return $logic->execute($request);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Middleware;
|
||||||
|
|
||||||
|
use Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode as Middleware;
|
||||||
|
|
||||||
|
class CheckForMaintenanceMode extends Middleware
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* The URIs that should be reachable while maintenance mode is enabled.
|
||||||
|
*
|
||||||
|
* @var array
|
||||||
|
*/
|
||||||
|
protected $except = [
|
||||||
|
//
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -0,0 +1,61 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Models;
|
||||||
|
|
||||||
|
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
||||||
|
use Illuminate\Database\Eloquent\Relations\HasOne;
|
||||||
|
use Illuminate\Database\Eloquent\SoftDeletes;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class Address
|
||||||
|
* @package App\Models
|
||||||
|
*
|
||||||
|
* @property \App\Models\Country country_id
|
||||||
|
* @property \App\Models\Company company_id
|
||||||
|
* @property \App\Models\State state_id
|
||||||
|
* @property \App\Models\District district_id
|
||||||
|
* @property string postcode
|
||||||
|
* @property string street_one
|
||||||
|
* @property string street_two
|
||||||
|
* @property integer billing_type
|
||||||
|
*/
|
||||||
|
class Address extends AbstractModel
|
||||||
|
{
|
||||||
|
use SoftDeletes;
|
||||||
|
|
||||||
|
protected $table = 'addresses';
|
||||||
|
|
||||||
|
protected $dates = ['deleted_at'];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return BelongsTo
|
||||||
|
*/
|
||||||
|
public function country(): BelongsTo
|
||||||
|
{
|
||||||
|
return $this->BelongsTo(Country::class, 'country_id', 'id');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return BelongsTo
|
||||||
|
*/
|
||||||
|
public function company(): BelongsTo
|
||||||
|
{
|
||||||
|
return $this->BelongsTo(Company::class, 'company_id', 'id');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return BelongsTo
|
||||||
|
*/
|
||||||
|
public function state(): BelongsTo
|
||||||
|
{
|
||||||
|
return $this->BelongsTo(State::class, 'state_id', 'id');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return BelongsTo
|
||||||
|
*/
|
||||||
|
public function district(): BelongsTo
|
||||||
|
{
|
||||||
|
return $this->BelongsTo(District::class, 'district_id', 'id');
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,117 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Models;
|
||||||
|
use App\Classes\General\Interfaces\Documentable;
|
||||||
|
use App\Classes\Modules\ServiceTypes\DataTransferObjects\ServiceConfigurationsObject;
|
||||||
|
use App\Classes\ValueObjects\Constants\ApprovalStatus;
|
||||||
|
use App\Classes\ValueObjects\Constants\SegmentConstants;
|
||||||
|
use Illuminate\Database\Eloquent\Builder;
|
||||||
|
use Illuminate\Database\Eloquent\Relations\BelongsToMany;
|
||||||
|
|
||||||
|
use Illuminate\Database\Eloquent\Relations\HasMany;
|
||||||
|
use Illuminate\Database\Eloquent\Relations\MorphMany;
|
||||||
|
use Illuminate\Database\Eloquent\SoftDeletes;
|
||||||
|
use Illuminate\Support\Collection;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class Company
|
||||||
|
* @package App\Models
|
||||||
|
*
|
||||||
|
* @property \App\Models\Country country_id
|
||||||
|
* @property \App\Models\State state_id
|
||||||
|
* @property \App\Models\District district_id
|
||||||
|
* @property string postcode
|
||||||
|
* @property string street_one
|
||||||
|
* @property string street_two
|
||||||
|
* @property integer billing_type
|
||||||
|
*/
|
||||||
|
class Company extends AbstractModel implements Documentable
|
||||||
|
{
|
||||||
|
use SoftDeletes;
|
||||||
|
|
||||||
|
protected $table = 'companies';
|
||||||
|
|
||||||
|
protected $dates = ['deleted_at'];
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return HasMany
|
||||||
|
*/
|
||||||
|
public function contacts(): HasMany
|
||||||
|
{
|
||||||
|
return $this->HasMany(Contact::class, 'company_id');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return HasMany
|
||||||
|
*/
|
||||||
|
public function addresses(): HasMany
|
||||||
|
{
|
||||||
|
return $this->HasMany(Address::class, 'company_id');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return belongsToMany
|
||||||
|
*/
|
||||||
|
public function segments(): belongsToMany
|
||||||
|
{
|
||||||
|
return $this->belongsToMany(Segment::class, (new SegmentCompany())->getTable(), 'company_id', 'segment_id');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return belongsToMany
|
||||||
|
*/
|
||||||
|
public function employees(): belongsToMany
|
||||||
|
{
|
||||||
|
return $this->belongsToMany(User::class, (new Employee())->getTable(), 'company_id','user_id');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return MorphMany
|
||||||
|
*/
|
||||||
|
public function documents(): morphMany
|
||||||
|
{
|
||||||
|
return $this->morphMany(Document::class, 'owner');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return HasMany
|
||||||
|
*/
|
||||||
|
public function banks(): HasMany
|
||||||
|
{
|
||||||
|
return $this->HasMany(Bank::class, 'company_id');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return HasMany
|
||||||
|
*/
|
||||||
|
public function bookings(): HasMany
|
||||||
|
{
|
||||||
|
return $this->HasMany(Booking::class, 'company_id');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return Builder
|
||||||
|
*/
|
||||||
|
public function services(): Builder {
|
||||||
|
return ServiceType::where('status', ApprovalStatus::APPROVED)->whereHas('constants', function($query) {
|
||||||
|
$query->Where(function($query){
|
||||||
|
$query->where('reference', SegmentConstants::SERVICE_TYPE)->where('detail->is_active', true);
|
||||||
|
})->orWhere(function($query) {
|
||||||
|
$query->where('reference', SegmentConstants::CUSTOM_SERVICE_TYPE)->where('detail->is_active', true)->whereIn('segment_id', $this->segments->pluck('id'));
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public function servicesConfigurations(): Collection {
|
||||||
|
return $this->services()->get()->map(function($service) {
|
||||||
|
return new ServiceConfigurationsObject($service,
|
||||||
|
$service->constants->where('reference', SegmentConstants::SERVICE_TYPE)->first(),
|
||||||
|
$service->constants->where('reference', SegmentConstants::CUSTOM_SERVICE_TYPE)->whereIn('segment_id', $this->segments->pluck('id')));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Models;
|
||||||
|
|
||||||
|
use Illuminate\Database\Eloquent\Relations\HasMany;
|
||||||
|
use Illuminate\Database\Eloquent\SoftDeletes;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class Country
|
||||||
|
* @package App\Models
|
||||||
|
*
|
||||||
|
* @property string name
|
||||||
|
* @property string short_code
|
||||||
|
* @property string phone_code
|
||||||
|
*/
|
||||||
|
class Country extends AbstractModel
|
||||||
|
{
|
||||||
|
use SoftDeletes;
|
||||||
|
|
||||||
|
protected $table = 'countries';
|
||||||
|
|
||||||
|
protected $dates = ['deleted_at'];
|
||||||
|
|
||||||
|
protected $fillable = ['name', 'short_code', 'phone_code'];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return HasMany
|
||||||
|
*/
|
||||||
|
public function currencies(): HasMany
|
||||||
|
{
|
||||||
|
return $this->HasMany(Currency::class, 'country_id', 'id');
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Models;
|
||||||
|
|
||||||
|
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
||||||
|
use Illuminate\Database\Eloquent\Relations\HasOne;
|
||||||
|
use Illuminate\Database\Eloquent\SoftDeletes;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class District
|
||||||
|
* @package App\Models
|
||||||
|
*
|
||||||
|
* @property \App\Models\Country country_id
|
||||||
|
* @property \App\Models\State state_id
|
||||||
|
* @property string name
|
||||||
|
* @property string postcode
|
||||||
|
*/
|
||||||
|
class District extends AbstractModel
|
||||||
|
{
|
||||||
|
use SoftDeletes;
|
||||||
|
|
||||||
|
protected $table = 'districts';
|
||||||
|
|
||||||
|
protected $dates = ['deleted_at'];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return BelongsTo
|
||||||
|
*/
|
||||||
|
public function country(): BelongsTo
|
||||||
|
{
|
||||||
|
return $this->belongsTo(Country::class, 'country_id', 'id');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return BelongsTo
|
||||||
|
**/
|
||||||
|
public function state(): BelongsTo
|
||||||
|
{
|
||||||
|
return $this->BelongsTo(State::class, 'state_id', 'id');
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Models;
|
||||||
|
|
||||||
|
use Illuminate\Database\Eloquent\Relations\HasOne;
|
||||||
|
use Illuminate\Database\Eloquent\SoftDeletes;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class State
|
||||||
|
* @package App\Models
|
||||||
|
*
|
||||||
|
* @property \App\Models\Country country_id
|
||||||
|
* @property string name
|
||||||
|
*/
|
||||||
|
class State extends AbstractModel
|
||||||
|
{
|
||||||
|
use SoftDeletes;
|
||||||
|
|
||||||
|
protected $table = 'states';
|
||||||
|
|
||||||
|
protected $dates = ['deleted_at'];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return HasOne
|
||||||
|
*/
|
||||||
|
public function country(): HasOne
|
||||||
|
{
|
||||||
|
return $this->hasOne(Country::class, 'country_id', 'id');
|
||||||
|
}
|
||||||
|
}
|
||||||
+5
-1
@@ -39,7 +39,11 @@
|
|||||||
"autoload-dev": {
|
"autoload-dev": {
|
||||||
"psr-4": {
|
"psr-4": {
|
||||||
"Tests\\": "tests/"
|
"Tests\\": "tests/"
|
||||||
}
|
},
|
||||||
|
"classmap": [
|
||||||
|
"database/seeds",
|
||||||
|
"database/factories"
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"post-autoload-dump": [
|
"post-autoload-dump": [
|
||||||
|
|||||||
@@ -0,0 +1,20 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/** @var \Illuminate\Database\Eloquent\Factory $factory */
|
||||||
|
|
||||||
|
use Faker\Generator as Faker;
|
||||||
|
|
||||||
|
$factory->define(App\Models\Address::class, function (Faker $faker) {
|
||||||
|
|
||||||
|
return [
|
||||||
|
'company_id' => $faker->numberBetween(1, 30),
|
||||||
|
'street_one' => $faker->streetAddress,
|
||||||
|
'street_two' => $faker->streetAddress,
|
||||||
|
'city' => $faker->city,
|
||||||
|
'state' => $faker->state,
|
||||||
|
'post_code' => $faker->postcode,
|
||||||
|
'country' => $faker->country,
|
||||||
|
'default' => 1,
|
||||||
|
'billing' => 1
|
||||||
|
];
|
||||||
|
});
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
class CreateStatesTable extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function up()
|
||||||
|
{
|
||||||
|
Schema::create('states', function (Blueprint $table) {
|
||||||
|
$table->id();
|
||||||
|
$table->timestamps();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function down()
|
||||||
|
{
|
||||||
|
Schema::dropIfExists('states');
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use App\Classes\ValueObjects\Constants\ApprovalStatus;
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
class CreateDistrictsTable extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function up()
|
||||||
|
{
|
||||||
|
Schema::create('districts', function (Blueprint $table) {
|
||||||
|
$table->id();
|
||||||
|
$table->foreignId('country_id')->unsigned();
|
||||||
|
$table->foreignId('state_id')->unsigned();
|
||||||
|
$table->string('name');
|
||||||
|
$table->text('postcode');
|
||||||
|
$table->integer('status')->default(ApprovalStatus::APPROVED);
|
||||||
|
$table->softDeletes();
|
||||||
|
$table->timestamps();
|
||||||
|
|
||||||
|
$table->foreign('country_id')->references('id')->on('countries');
|
||||||
|
$table->foreign('state_id')->references('id')->on('states');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function down()
|
||||||
|
{
|
||||||
|
Schema::dropIfExists('districts');
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,35 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
class CreateCountriesTable extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function up()
|
||||||
|
{
|
||||||
|
Schema::create('countries', function (Blueprint $table) {
|
||||||
|
$table->id();
|
||||||
|
$table->string('name')->unique();
|
||||||
|
$table->string('short_code')->unique();
|
||||||
|
$table->string('phone_code')->unique();
|
||||||
|
$table->softDeletes();
|
||||||
|
$table->timestamps();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function down()
|
||||||
|
{
|
||||||
|
Schema::dropIfExists('countries');
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,40 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use App\Classes\ValueObjects\Constants\CompanyType;
|
||||||
|
use App\Classes\ValueObjects\Constants\BusinessType;
|
||||||
|
use App\Classes\ValueObjects\Constants\ApprovalStatus;
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
class CreateCompaniesTable extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function up()
|
||||||
|
{
|
||||||
|
Schema::create('companies', function (Blueprint $table) {
|
||||||
|
$table->id();
|
||||||
|
$table->string('name');
|
||||||
|
$table->string('reference');
|
||||||
|
$table->integer('type')->default(CompanyType::COMPANY_BUSINESS);
|
||||||
|
$table->integer('business_type')->default(BusinessType::IMPORTER);
|
||||||
|
$table->integer('status')->default(ApprovalStatus::PENDING_SUBMISSION);
|
||||||
|
$table->softDeletes();
|
||||||
|
$table->timestamps();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function down()
|
||||||
|
{
|
||||||
|
Schema::dropIfExists('companies');
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,45 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
class CreateAddressesTable extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function up()
|
||||||
|
{
|
||||||
|
Schema::create('addresses', function (Blueprint $table) {
|
||||||
|
$table->id();
|
||||||
|
$table->foreignId('company_id')->unsigned();
|
||||||
|
$table->foreignId('country_id')->unsigned();
|
||||||
|
$table->foreignId('state_id')->unsigned();
|
||||||
|
$table->foreignId('district_id')->unsigned();
|
||||||
|
$table->string('postcode');
|
||||||
|
$table->string('street_one');
|
||||||
|
$table->string('street_two')->nullable();
|
||||||
|
$table->integer('billing')->default(true);
|
||||||
|
$table->softDeletes();
|
||||||
|
$table->timestamps();
|
||||||
|
|
||||||
|
$table->foreign('country_id')->references('id')->on('countries');
|
||||||
|
$table->foreign('company_id')->references('id')->on('companies');
|
||||||
|
$table->foreign('state_id')->references('id')->on('states');
|
||||||
|
$table->foreign('district_id')->references('id')->on('districts');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function down()
|
||||||
|
{
|
||||||
|
Schema::dropIfExists('addresses');
|
||||||
|
}
|
||||||
|
}
|
||||||
+3
-3
@@ -38,9 +38,6 @@
|
|||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"axios": "^0.21",
|
"axios": "^0.21",
|
||||||
"laravel-mix": "^5.0.9",
|
|
||||||
"lodash": "^4.17.19",
|
|
||||||
"postcss": "^8.1.14",
|
|
||||||
"cross-env": "^7.0.2",
|
"cross-env": "^7.0.2",
|
||||||
"del": "^6.0.0",
|
"del": "^6.0.0",
|
||||||
"fancy-log": "^1.3.0",
|
"fancy-log": "^1.3.0",
|
||||||
@@ -61,6 +58,9 @@
|
|||||||
"gulp-streamify": "^1.0.2",
|
"gulp-streamify": "^1.0.2",
|
||||||
"gulp-uglify": "^3.0.0",
|
"gulp-uglify": "^3.0.0",
|
||||||
"gulp-uglify-es": "^2.0.0",
|
"gulp-uglify-es": "^2.0.0",
|
||||||
|
"laravel-mix": "^5.0.9",
|
||||||
|
"lodash": "^4.17.19",
|
||||||
|
"postcss": "^8.1.14",
|
||||||
"resolve-url-loader": "^3.1.2"
|
"resolve-url-loader": "^3.1.2"
|
||||||
},
|
},
|
||||||
"paths": {
|
"paths": {
|
||||||
|
|||||||
@@ -0,0 +1,37 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Support\Facades\Route;
|
||||||
|
|
||||||
|
|
||||||
|
Route::group(['prefix' => 'address', 'as' => 'address.', 'namespace' => 'Addresses'], function () {
|
||||||
|
|
||||||
|
Route::get('/{id}/show', 'FetchAddressController@fetch')->name('show');
|
||||||
|
|
||||||
|
Route::get('/list', 'ListAddressesController@list')->name('list');
|
||||||
|
Route::get('district/list', 'ListDistrictsController@list')->name('district.list');
|
||||||
|
|
||||||
|
Route::post('/create', 'CreateAddressController@create')->name('create');
|
||||||
|
|
||||||
|
Route::put('/update/{id}', 'UpdateAddressController@update')->name('update');
|
||||||
|
|
||||||
|
Route::put('/{id}/default', 'SetAddressToDefaultController@update')->name('default');
|
||||||
|
|
||||||
|
Route::delete('/delete/{id}', 'DeleteAddressController@destroy')->name('delete');
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
Route::group(['prefix' => 'service_type', 'as' => 'service_type.', 'namespace' => 'ServiceTypes'], function () {
|
||||||
|
|
||||||
|
Route::get('/{id}/show', 'FetchServiceTypeController@fetch')->name('show');
|
||||||
|
|
||||||
|
Route::get('/list', 'ListServiceTypesController@list')->name('list');
|
||||||
|
|
||||||
|
Route::post('/create', 'CreateServiceTypeController@create')->name('create');
|
||||||
|
|
||||||
|
Route::put('/update/{id}', 'UpdateServiceTypeController@update')->name('update');
|
||||||
|
|
||||||
|
Route::put('/status/{id}/{status}', 'UpdateServiceTypeStatusController@activate')->where('status', 'active|inactive')->name('status');
|
||||||
|
|
||||||
|
Route::delete('/delete/{id}', 'DeleteServiceTypeController@destroy')->name('delete');
|
||||||
|
|
||||||
|
});
|
||||||
+41
-2
@@ -14,6 +14,45 @@ use Illuminate\Support\Facades\Route;
|
|||||||
|
|
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
Route::middleware('auth:api')->get('/user', function (Request $request) {
|
//Route::middleware('auth:api')->get('/user', function (Request $request) {
|
||||||
return $request->user();
|
// return $request->user();
|
||||||
|
//});
|
||||||
|
|
||||||
|
Route::group(['middleware' => 'api', 'prefix' => 'v1', 'as' => 'api.'], function () {
|
||||||
|
|
||||||
|
// require __DIR__ . '/account.php';
|
||||||
|
|
||||||
|
// Route::get('/rate/calculate', 'RateCalculateCurrencyController@convert')->name('calculate');
|
||||||
|
|
||||||
|
Route::group(['prefix' => 'service', 'as' => 'service.'], function () {
|
||||||
|
Route::get('countries/list', 'Services\CountriesListController@index')->name('list.countries');
|
||||||
|
});
|
||||||
|
|
||||||
|
Route::group(['middleware' => 'valid.token'], function () {
|
||||||
|
|
||||||
|
Route::get('/storage/{fileName}/fetch', 'Documents\RenderDocumentController@fileStorageServe')->where(['fileName' => '.*'])->name('storage.document.file');
|
||||||
|
|
||||||
|
// require __DIR__ . '/company.php';
|
||||||
|
//
|
||||||
|
// require __DIR__ . '/document.php';
|
||||||
|
//
|
||||||
|
// require __DIR__ . '/segment.php';
|
||||||
|
//
|
||||||
|
// require __DIR__ . '/currency.php';
|
||||||
|
//
|
||||||
|
// require __DIR__ . '/bank.php';
|
||||||
|
//
|
||||||
|
// require __DIR__ . '/booking.php';
|
||||||
|
//
|
||||||
|
// require __DIR__ . '/transaction.php';
|
||||||
|
|
||||||
|
require __DIR__ . '/address.php';
|
||||||
|
|
||||||
|
// require __DIR__ . '/announcement.php';
|
||||||
|
|
||||||
|
// require __DIR__ . '/wallet.php';
|
||||||
|
// require __DIR__ . '/rate.php';
|
||||||
|
// require __DIR__ . '/receipt.php';
|
||||||
|
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user