pacakges'

This commit is contained in:
Harish
2021-01-05 13:39:31 +05:30
parent 307aff1c3f
commit c2f3c92393
32 changed files with 1312 additions and 0 deletions
@@ -0,0 +1,67 @@
<?php
namespace App\Classes\Modules\Packages\ControllersLogic;
use App\Classes\General\Abstracts\AbstractControllerLogic;
use App\Classes\Modules\Packages\Services\CreatesPackage;
use App\Classes\Modules\Packages\Standards\Rules\CanCreatePackage;
use App\Classes\Modules\Packages\DataTransferObjects\PackagesListObject;
use App\Http\Resources\PackageResource;
use ErrorException;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
class CreatePackageLogic extends AbstractControllerLogic
{
/**
* @return array
*/
protected function notification():array {
return [
'title' => 'Created Package',
'message' => 'You have successfully created a new Package'
];
}
/** @var CanCreatePackage */
private $canCreatePackage;
/** @var CreatesPackage */
private $createsPackage;
/**
* CreatePackageControllerLogic constructor.
* @param CanCreatePackage $canCreatePackage
* @param CreatesPackage $createsPackage
*/
public function __construct(CanCreatePackage $canCreatePackage, CreatesPackage $createsPackage)
{
$this->canCreatePackage = $canCreatePackage;
$this->createsPackage = $createsPackage;
}
/**
* @param Request $request
* @return JsonResponse
* @throws ErrorException
*/
public function logic(Request $request) : JsonResponse
{
try {
$object = new PackagesListObject($request->input('order_id'),$request->input('packages'));
$this->canCreatePackage->passes($object);
$query = $this->createsPackage->execute($object);
return $this->resourceResponse(new PackageResource($query));
} catch (\Exception $exception){
throw new ErrorException($exception->getMessage(), $exception->getCode());
}
}
}
@@ -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;
/**
* DeleteAddressControllerLogic 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,67 @@
<?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\Classes\Modules\Addresses\DataTransferObjects\AddressObject;
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;
/**
* FetchAddressControllerLogic 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,78 @@
<?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\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;
/**
* UpdateAddressLogic constructor.
* @param CanUpdateAddress $canUpdateAddress
* @param UpdatesAddress $updatesAddress
* @param FetchesAddress $fetchesAddress
*/
public function __construct(CanUpdateAddress $canUpdateAddress, UpdatesAddress $updatesAddress, FetchesAddress $fetchesAddress)
{
$this->canUpdateAddress = $canUpdateAddress;
$this->updatesAddress = $updatesAddress;
$this->fetchesAddress = $fetchesAddress;
}
/**
* @param Request $request
* @return JsonResponse
* @throws ErrorException
*/
public function logic(Request $request) : JsonResponse
{
try {
$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,83 @@
<?php
namespace App\Classes\Modules\Packages\DataTransferObjects;
use App\Classes\Interfaces\DataTransferObject;
class ItemObject implements DataTransferObject
{
/** @var string */
private $description;
/** @var string */
private $unitOfMeasurment;
/** @var float */
private $quantity;
/** @var double */
private $price;
/** @var string */
private $currency;
/**
* ItemObject constructor.
* @param string $description
* @param string $unitOfMeasurment
* @param float $quantity
* @param float $price
* @param string $currency
*/
public function __construct(string $description, string $unitOfMeasurment, float $quantity, float $price, string $currency)
{
$this->description = $description;
$this->unitOfMeasurment = $unitOfMeasurment;
$this->quantity = $quantity;
$this->price = $price;
$this->currency = $currency;
}
/**
* @return string
*/
public function getDescription(): string
{
return $this->description;
}
/**
* @return string
*/
public function getUnitOfMeasurment(): string
{
return $this->unitOfMeasurment;
}
/**
* @return float
*/
public function getQuantity(): float
{
return $this->quantity;
}
/**
* @return float
*/
public function getPrice(): float
{
return $this->price;
}
/**
* @return string
*/
public function getCurrency(): string
{
return $this->currency;
}
}
@@ -0,0 +1,88 @@
<?php
namespace App\Classes\Modules\Packages\DataTransferObjects;
use App\Classes\Interfaces\DataTransferObject;
use App\Classes\Modules\Packages\DataTransferObjects\ItemObject;
class PackageObject implements DataTransferObject
{
/** @var int */
private $type;
/** @var float */
private $width;
/** @var float */
private $height;
/** @var float */
private $lenght;
/** @var array */
private $items;
/**
* PackageObject constructor.
* @param int $type
* @param float $width
* @param float $height
* @param float $lenght
* @param array $items
*/
public function __construct(int $type, float $width, float $height, float $lenght, array $items)
{
$this->type = $type;
$this->width = $width;
$this->height = $height;
$this->lenght = $lenght;
foreach($items as $item){
$this->items=new ItemObject($item['description'],$item['unitOfMeasurment'],$item['quantity'],$item['price'],$item['currency']);
}
}
/**
* @return int
*/
public function getType(): int
{
return $this->type;
}
/**
* @return float
*/
public function getWidth(): float
{
return $this->width;
}
/**
* @return float
*/
public function getHeight(): float
{
return $this->height;
}
/**
* @return float
*/
public function getLenght(): float
{
return $this->lenght;
}
/**
* @return array
*/
public function getItems(): array
{
return $this->items;
}
}
@@ -0,0 +1,58 @@
<?php
namespace App\Classes\Modules\Packages\DataTransferObjects;
use App\Classes\Interfaces\DataTransferObject;
use App\Classes\Modules\Packages\DataTransferObjects\PackageObject;
class PackagesListObject implements DataTransferObject
{
/** @var int */
private $orderId;
/** @var array */
private $packages;
// /** @var PackageObject */
// private $packages;
/**
* PackagesListObject constructor.
* @param int $orderId
* @param array $packagesList
*/
public function __construct(int $orderId, array $packages)
{
$this->orderId = $orderId;
foreach($packages as $package){
$this->packages=new PackageObject($package['type'],$package['width'],$package['height'],$package['length'],$package['items']);
}
}
/**
* @return int
*/
public function getOrderId(): int
{
return $this->orderId;
}
// /**
// * @return array
// */
// public function getPackages(): array
// {
// return $this->packages;
// }
/**
* @return PackageObject
*/
public function getPackages(): PackageObject
{
return $this->packages;
}
}
@@ -0,0 +1,35 @@
<?php
namespace App\Classes\Modules\Packages\Services;
use App\Classes\General\Eloquent\AbstractUpdateRecord;
use App\Classes\Modules\Packages\DataTransferObjects\PackagesListObject;
use App\Models\Package;
use App\Models\PackageList;
class CreatesPackage extends AbstractUpdateRecord
{
/**
* @param PackagesListObject $object
* @return \Illuminate\Database\Eloquent\Model
* @throws \App\Classes\Exceptions\MalformedRequestException
*/
public function execute(PackagesListObject $object) {
$model = new PackageList();
$model->order_id = $object->getOrderId();
// $rr=$object->getPackages();
// // foreach($rr as $r){
// dd($rr);
// // }
// echo 333; exit;d
$model2 = new Package();
$model->type = $object->getOrderId();
return $this->handler($model);
}
}
@@ -0,0 +1,15 @@
<?php
namespace App\Classes\Modules\Addresses\Services;
use App\Classes\General\Eloquent\AbstractDeleteRecord;
use App\Classes\Modules\Addresses\DataTransferObjects\AddressObject;
use App\Models\Address;
class DeletesAddress extends AbstractDeleteRecord
{
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,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\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->city = $object->getCity();
$model->state = $object->getState();
$model->post_code = $object->getPostCode();
$model->country = $object->getCountry();
$model->default = $object->getDefault();
$model->billing = $object->getBilling();
return $this->handler($model);
}
}
@@ -0,0 +1,57 @@
<?php
namespace App\Classes\Modules\Packages\Standards\Rules;
use App\Classes\General\Abstracts\AbstractRule;
use App\Classes\Modules\Packages\DataTransferObjects\PackagesListObject;
use App\Classes\Modules\Packages\Standards\Validators\PackageValidation;
class CanCreatePackage extends AbstractRule
{
/** @var PackageValidation */
private $packageValidation;
/**
* CanCreatePackage constructor.
* @param PackageValidation $packageValidation
*/
public function __construct(PackageValidation $packageValidation)
{
$this->packageValidation = $packageValidation;
}
/**
* @return bool
*/
protected function authorized(): bool
{
// TODO Set Authorization rules
return true;
}
/**
* @param PackagesListObject $object
* @return bool
* @throws \App\Classes\Exceptions\RequestValidationException
*/
protected function validators($object): bool
{
return $this->packageValidation->validate($object);
}
/**
* @param PackagesListObject $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,39 @@
<?php
namespace App\Classes\Modules\Packages\Standards\Validators;
use App\Classes\General\Abstracts\AbstractValidation;
use App\Classes\Modules\Packages\DataTransferObjects\PackagesListObject;
class PackageValidation extends AbstractValidation
{
/**
* @param PackagesListObject $object
* @return array
*/
protected function data($object): array {
return [
'order_id' => $object->getOrderId(),
];
}
/**
* @return array
*/
protected function rules(): array {
return [
'order_id' => 'required',
];
}
/**
* @return array
*/
protected function messages(): array {
return [];
}
}
@@ -0,0 +1,20 @@
<?php
namespace App\Http\Controllers\Packages;
use App\Classes\Modules\Packages\ControllersLogic\CreatePackageLogic;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
class CreatePackageController
{
/**
* @param Request $request
* @param CreatePackageLogic $logic
* @return JsonResponse
*/
public function create(Request $request, CreatePackageLogic $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\Packages;
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\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);
}
}
+22
View File
@@ -0,0 +1,22 @@
<?php
namespace App\Http\Resources;
use Illuminate\Http\Resources\Json\JsonResource;
class PackageResource extends JsonResource
{
/**
* Transform the resource into an array.
*
* @param \Illuminate\Http\Request $request
* @return array
*/
public function toArray($request)
{
return [
'id' => $this->id,
'order_id' => $this->order_id,
];
}
}
+16
View File
@@ -0,0 +1,16 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
class Package extends Model
{
use SoftDeletes;
protected $table = 'packages';
// protected $dates = ['deleted_at'];
}
+14
View File
@@ -0,0 +1,14 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
class PackageItem extends Model
{
use SoftDeletes;
protected $table = 'package_items';
}
+14
View File
@@ -0,0 +1,14 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
class PackageList extends Model
{
use SoftDeletes;
protected $table = 'package_lists';
}
@@ -0,0 +1,37 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreatePackageListsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('package_lists', function (Blueprint $table) {
$table->id();
$table->foreignId('order_id');
$table->string('reference',45)->nullable();
$table->softDeletes();
$table->timestamps();
//Relations
$table->foreign('order_id')->references('id')->on('orders');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('package_lists');
}
}
@@ -0,0 +1,42 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreatePackagesTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('packages', function (Blueprint $table) {
$table->id();
$table->foreignId('package_list_id');
$table->integer('package_type');
$table->string('reference',10,5);
$table->decimal('width',10,5);
$table->decimal('height',10,5);
$table->decimal('length',10,5);
$table->decimal('weight',10,5);
$table->softDeletes();
$table->timestamps();
//Relations
$table->foreign('package_list_id')->references('id')->on('package_lists');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('packages');
}
}
@@ -0,0 +1,42 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreatePackageItemsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('package_items', function (Blueprint $table) {
$table->id();
$table->foreignId('package_id');
$table->text('description');
$table->decimal('measurment',10,5);
$table->integer('unit_of_measurement');
$table->decimal('quantity',10,5);
$table->decimal('price',12,5);
$table->string('currency',6);
$table->softDeletes();
$table->timestamps();
//Relations
$table->foreign('package_id')->references('id')->on('packages');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('package_items');
}
}
+14
View File
@@ -41,4 +41,18 @@ Route::group(['prefix' => 'contact', 'as' => 'contact.', 'namespace' => 'Contact
Route::delete('/delete/{id}', 'DeleteContactController@destroy')->name('delete');
});
Route::group(['prefix' => 'package', 'as' => 'package.', 'namespace' => 'Packages'], function () {
// Route::get('/{id}/show', 'FetchAddressController@fetch')->name('show');
// Route::get('/list', 'ListAddressesController@list')->name('list');
Route::get('/list', 'ListAddressesController@list')->name('list');
Route::post('/create', 'CreatePackageController@create')->name('create');
// Route::put('/update/{id}', 'UpdateAddressController@update')->name('update');
// Route::delete('/delete/{id}', 'DeleteAddressController@destroy')->name('delete');
});