Add address API,Model,Controller

This commit is contained in:
Hafiz
2021-06-23 21:58:07 +08:00
parent ee1a7a12cc
commit f33c316ba5
60 changed files with 2210 additions and 6 deletions
@@ -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 = [
//
];
}
+61
View File
@@ -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');
}
}
+117
View File
@@ -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')));
});
}
}
+33
View File
@@ -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');
}
}
+41
View File
@@ -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');
}
}
+30
View File
@@ -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
View File
@@ -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": [
+20
View File
@@ -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
View File
@@ -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": {
+37
View File
@@ -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
View File
@@ -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';
});
}); });