mirror of
https://gitlab.com/CIEFWorldwideSdnBhd/exchange-2.0.git
synced 2026-08-19 04:23:55 +00:00
Merge branch 'currency' into 'master'
Currency See merge request CIEFWorldwideSdnBhd/exchange-2.0!10
This commit is contained in:
@@ -66,13 +66,13 @@ class DeleteCompanyBankLogic extends AbstractControllerLogic
|
||||
try {
|
||||
DB::beginTransaction();
|
||||
|
||||
$segment_query = $this->fetchesCompanyBank->execute(['id' => $request->route('id')]);
|
||||
$company_bank_query = $this->fetchesCompanyBank->execute(['id' => $request->route('id')]);
|
||||
$this->canDeleteCompanyBank->passes();
|
||||
$this->deletesCompanyBank->execute($segment_query);
|
||||
$this->deletesCompanyBank->execute($company_bank_query);
|
||||
|
||||
DB::commit();
|
||||
|
||||
return $this->resourceResponse(new CompanyBankResource($segment_query));
|
||||
return $this->resourceResponse(new CompanyBankResource($company_bank_query));
|
||||
|
||||
} catch (\Exception $exception){
|
||||
throw new ErrorException($exception->getMessage(), $exception->getCode());
|
||||
|
||||
@@ -37,23 +37,23 @@ class UpdateCompanyBankLogic extends AbstractControllerLogic
|
||||
private $updatesCompanyBank;
|
||||
|
||||
/** @var FetchesCompanyBank */
|
||||
private $fetchesSegment;
|
||||
private $fetchesCompanyBank;
|
||||
|
||||
/**
|
||||
* UpdateStandardSegmentConstantLogic constructor.
|
||||
* @param CanUpdateCompanyBank $canUpdateCompanyBank
|
||||
* @param UpdatesCompanyBank $updatesCompanyBank
|
||||
* @param FetchesCompanyBank $fetchesSegment
|
||||
* @param FetchesCompanyBank $fetchesCompanyBank
|
||||
*/
|
||||
public function __construct(
|
||||
CanUpdateCompanyBank $canUpdateCompanyBank,
|
||||
UpdatesCompanyBank $updatesCompanyBank,
|
||||
FetchesCompanyBank $fetchesSegment
|
||||
FetchesCompanyBank $fetchesCompanyBank
|
||||
)
|
||||
{
|
||||
$this->canUpdateCompanyBank = $canUpdateCompanyBank;
|
||||
$this->updatesCompanyBank = $updatesCompanyBank;
|
||||
$this->fetchesSegment = $fetchesSegment;
|
||||
$this->fetchesCompanyBank = $fetchesCompanyBank;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -66,7 +66,7 @@ class UpdateCompanyBankLogic extends AbstractControllerLogic
|
||||
try {
|
||||
DB::beginTransaction();
|
||||
|
||||
$company_bank_query = $this->fetchesSegment->execute(['id' => $request->route('id')]);
|
||||
$company_bank_query = $this->fetchesCompanyBank->execute(['id' => $request->route('id')]);
|
||||
|
||||
$company_bank_object = new CompanyBankObject(
|
||||
$company_bank_query->country_id,
|
||||
|
||||
@@ -0,0 +1,87 @@
|
||||
<?php
|
||||
|
||||
namespace App\Classes\Modules\Currencies\ControllersLogic;
|
||||
|
||||
use App\Classes\General\Abstracts\AbstractControllerLogic;
|
||||
|
||||
use App\Classes\Modules\Currencies\Standards\Rules\CanCreateCurrency;
|
||||
use App\Classes\Modules\Currencies\Services\CreatesCurrency;
|
||||
use App\Classes\Modules\Currencies\Services\CreatesCurrencyLog;
|
||||
use App\Classes\Modules\Currencies\DataTransferObjects\CurrencyObject;
|
||||
use App\Http\Resources\CurrencyResource;
|
||||
|
||||
use ErrorException;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class CreateCurrencyLogic extends AbstractControllerLogic
|
||||
{
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
protected function notification():array {
|
||||
return [
|
||||
'title' => 'Created Currency',
|
||||
'message' => 'You have successfully created a new Currency'
|
||||
];
|
||||
}
|
||||
|
||||
/** @var CanCreateCurrency */
|
||||
private $canCreateCurrency;
|
||||
|
||||
/** @var CreatesCurrency */
|
||||
private $createsCurrency;
|
||||
|
||||
/** @var CreatesCurrencyLog */
|
||||
private $createsCurrencyLog;
|
||||
|
||||
/**
|
||||
* CreateSegmentLogic constructor.
|
||||
* @param CanCreateCurrency $canCreateCurrency
|
||||
* @param CreatesCurrency $createsCurrency
|
||||
* @param CreatesCurrencyLog $createsCurrencyLog
|
||||
*/
|
||||
public function __construct(
|
||||
CanCreateCurrency $canCreateCurrency,
|
||||
CreatesCurrency $createsCurrency,
|
||||
CreatesCurrencyLog $createsCurrencyLog
|
||||
)
|
||||
{
|
||||
$this->canCreateCurrency = $canCreateCurrency;
|
||||
$this->createsCurrency = $createsCurrency;
|
||||
$this->createsCurrencyLog = $createsCurrencyLog;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Request $request
|
||||
* @return JsonResponse
|
||||
* @throws ErrorException
|
||||
*/
|
||||
public function logic(Request $request) : JsonResponse
|
||||
{
|
||||
try {
|
||||
DB::beginTransaction();
|
||||
|
||||
$currency_object = new CurrencyObject(
|
||||
$request->input('country_id'),
|
||||
$request->input('name'),
|
||||
$request->input('short_code'),
|
||||
$request->input('symbol'),
|
||||
number_format( (float) $request->input('selling'), 5, '.', '')
|
||||
);
|
||||
$this->canCreateCurrency->passes($currency_object);
|
||||
$currency_query = $this->createsCurrency->execute($currency_object);
|
||||
|
||||
$currency_log_query = $this->createsCurrencyLog->execute($currency_query);
|
||||
|
||||
DB::commit();
|
||||
|
||||
return $this->resourceResponse(new CurrencyResource($currency_query));
|
||||
|
||||
} catch (\Exception $exception) {
|
||||
throw new ErrorException($exception->getMessage(), $exception->getCode());
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,82 @@
|
||||
<?php
|
||||
|
||||
namespace App\Classes\Modules\Currencies\ControllersLogic;
|
||||
|
||||
use App\Http\Resources\CurrencyResource;
|
||||
|
||||
use App\Classes\General\Abstracts\AbstractControllerLogic;
|
||||
|
||||
use App\Classes\Modules\Currencies\Services\FetchesCurrency;
|
||||
|
||||
use App\Classes\Modules\Currencies\Standards\Rules\CanDeleteCurrency;
|
||||
use App\Classes\Modules\Currencies\Services\DeletesCurrency;
|
||||
use App\Classes\Modules\Currencies\DataTransferObjects\SegmentObject;
|
||||
|
||||
use ErrorException;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class DeleteCurrencyLogic extends AbstractControllerLogic
|
||||
{
|
||||
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
protected function notification():array {
|
||||
return [
|
||||
'title' => 'Delete Currency',
|
||||
'message' => 'You have successfully deleted the Currency'
|
||||
];
|
||||
}
|
||||
|
||||
/** @var CanDeleteCurrency */
|
||||
private $canDeleteCurrency;
|
||||
|
||||
/** @var DeletesCurrency */
|
||||
private $deletesCurrency;
|
||||
|
||||
/** @var FetchesCurrency */
|
||||
private $fetchesCurrency;
|
||||
|
||||
/**
|
||||
* UpdateStandardSegmentConstantLogic constructor.
|
||||
* @param CanUpdateSegment $canDeleteCurrency
|
||||
* @param UpdatesSegment $deletesSegment
|
||||
* @param FetchesCurrency $fetchesCurrency
|
||||
*/
|
||||
public function __construct(
|
||||
CanDeleteCurrency $canDeleteCurrency,
|
||||
DeletesCurrency $deletesCurrency,
|
||||
FetchesCurrency $fetchesCurrency
|
||||
)
|
||||
{
|
||||
$this->canDeleteCurrency = $canDeleteCurrency;
|
||||
$this->deletesCurrency = $deletesCurrency;
|
||||
$this->fetchesCurrency = $fetchesCurrency;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Request $request
|
||||
* @return JsonResponse
|
||||
* @throws ErrorException
|
||||
*/
|
||||
public function logic(Request $request) : JsonResponse
|
||||
{
|
||||
try {
|
||||
DB::beginTransaction();
|
||||
|
||||
$currency_query = $this->fetchesCurrency->execute(['id' => $request->route('id')]);
|
||||
$this->canDeleteCurrency->passes();
|
||||
$this->deletesCurrency->execute($currency_query);
|
||||
|
||||
DB::commit();
|
||||
|
||||
return $this->resourceResponse(new CurrencyResource($currency_query));
|
||||
|
||||
} catch (\Exception $exception){
|
||||
throw new ErrorException($exception->getMessage(), $exception->getCode());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,98 @@
|
||||
<?php
|
||||
|
||||
namespace App\Classes\Modules\Currencies\ControllersLogic;
|
||||
|
||||
use App\Http\Resources\CurrencyResource;
|
||||
|
||||
use App\Classes\General\Abstracts\AbstractControllerLogic;
|
||||
|
||||
use App\Classes\Modules\Currencies\Services\FetchesCurrency;
|
||||
|
||||
use App\Classes\Modules\Currencies\Standards\Rules\CanUpdateCurrency;
|
||||
use App\Classes\Modules\Currencies\Services\UpdatesCurrencyRate;
|
||||
use App\Classes\Modules\Currencies\Services\CreatesCurrencyLog;
|
||||
use App\Classes\Modules\Currencies\DataTransferObjects\CurrencyObject;
|
||||
|
||||
use ErrorException;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class UpdateCurrencyRateLogic extends AbstractControllerLogic
|
||||
{
|
||||
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
protected function notification():array {
|
||||
return [
|
||||
'title' => 'Updated Currency Rate',
|
||||
'message' => 'You have successfully updated the Currency Rate'
|
||||
];
|
||||
}
|
||||
|
||||
/** @var CanUpdateCurrency */
|
||||
private $canUpdateCurrency;
|
||||
|
||||
/** @var UpdatesCurrencyRate */
|
||||
private $updatesCurrencyRate;
|
||||
|
||||
/** @var FetchesCurrency */
|
||||
private $fetchesCurrency;
|
||||
|
||||
/** @var CreatesCurrencyLog */
|
||||
private $createsCurrencyLog;
|
||||
|
||||
/**
|
||||
* UpdateStandardSegmentConstantLogic constructor.
|
||||
* @param CanUpdateCurrency $canUpdateCurrency
|
||||
* @param UpdatesCurrencyRate $updatesCurrencyRate
|
||||
* @param FetchesCurrency $fetchesCurrency
|
||||
*/
|
||||
public function __construct(
|
||||
CanUpdateCurrency $canUpdateCurrency,
|
||||
UpdatesCurrencyRate $updatesCurrencyRate,
|
||||
CreatesCurrencyLog $createsCurrencyLog,
|
||||
FetchesCurrency $fetchesCurrency
|
||||
)
|
||||
{
|
||||
$this->canUpdateCurrency = $canUpdateCurrency;
|
||||
$this->updatesCurrencyRate = $updatesCurrencyRate;
|
||||
$this->createsCurrencyLog = $createsCurrencyLog;
|
||||
$this->fetchesCurrency = $fetchesCurrency;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Request $request
|
||||
* @return JsonResponse
|
||||
* @throws ErrorException
|
||||
*/
|
||||
public function logic(Request $request) : JsonResponse
|
||||
{
|
||||
try {
|
||||
DB::beginTransaction();
|
||||
|
||||
$currency_query = $this->fetchesCurrency->execute(['id' => $request->route('id')]);
|
||||
|
||||
$currency_object = new CurrencyObject(
|
||||
$currency_query->country_id,
|
||||
$currency_query->name,
|
||||
$currency_query->short_code,
|
||||
$currency_query->symbol,
|
||||
$request->input('selling', $currency_query->selling)
|
||||
);
|
||||
$this->canUpdateCurrency->passes($currency_object);
|
||||
$currency_query = $this->updatesCurrencyRate->execute($currency_query, $currency_object);
|
||||
|
||||
$currency_log_query = $this->createsCurrencyLog->execute($currency_query);
|
||||
|
||||
DB::commit();
|
||||
|
||||
return $this->resourceResponse(new CurrencyResource($currency_query));
|
||||
|
||||
} catch (\Exception $exception){
|
||||
throw new ErrorException($exception->getMessage(), $exception->getCode());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,78 @@
|
||||
<?php
|
||||
|
||||
namespace App\Classes\Modules\Currencies\DataTransferObjects;
|
||||
|
||||
use App\Classes\Interfaces\DataTransferObject;
|
||||
|
||||
class CurrencyObject implements DataTransferObject
|
||||
{
|
||||
/** @var string|null */
|
||||
private $country_id;
|
||||
private $name;
|
||||
private $short_code;
|
||||
private $symbol;
|
||||
private $selling;
|
||||
|
||||
/**
|
||||
* CompanyBankObject constructor.
|
||||
* @param int|null $country_id
|
||||
* @param string|null $name
|
||||
* @param string|null $short_code
|
||||
* @param string|null $symbol
|
||||
* @param float|null $selling
|
||||
*/
|
||||
public function __construct(
|
||||
?int $country_id,
|
||||
?string $name,
|
||||
?string $short_code,
|
||||
?string $symbol,
|
||||
?float $selling
|
||||
)
|
||||
{
|
||||
$this->country_id = $country_id;
|
||||
$this->name = $name;
|
||||
$this->short_code = $short_code;
|
||||
$this->symbol = $symbol;
|
||||
$this->selling = $selling;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return int
|
||||
*/
|
||||
public function getCountryId(): ?int
|
||||
{
|
||||
return $this->country_id;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getName(): ?string
|
||||
{
|
||||
return $this->name;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getShortCode(): ?string
|
||||
{
|
||||
return $this->short_code;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getSymbol(): ?string
|
||||
{
|
||||
return $this->symbol;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return float
|
||||
*/
|
||||
public function getSelling(): ?float
|
||||
{
|
||||
return $this->selling;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
<?php
|
||||
|
||||
namespace App\Classes\Modules\Currencies\Services;
|
||||
|
||||
use App\Classes\General\Eloquent\AbstractUpdateRecord;
|
||||
use App\Classes\Modules\Currencies\DataTransferObjects\CurrencyObject;
|
||||
use App\Models\Currency;
|
||||
|
||||
class CreatesCurrency extends AbstractUpdateRecord
|
||||
{
|
||||
/**
|
||||
* @param CurrencyObject $object
|
||||
* @return \Illuminate\Database\Eloquent\Model
|
||||
* @throws \App\Classes\Exceptions\MalformedRequestException
|
||||
*/
|
||||
public function execute(CurrencyObject $object) {
|
||||
$model = new Currency();
|
||||
$model->country_id = $object->getCountryId();
|
||||
$model->name = $object->getName();
|
||||
$model->short_code = $object->getShortCode();
|
||||
$model->symbol = $object->getSymbol();
|
||||
$model->selling = $object->getSelling();
|
||||
return $this->handler($model);
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
<?php
|
||||
|
||||
namespace App\Classes\Modules\Currencies\Services;
|
||||
|
||||
use App\Classes\General\Eloquent\AbstractUpdateRecord;
|
||||
use App\Models\Currency;
|
||||
use App\Models\CurrencyLog;
|
||||
|
||||
class CreatesCurrencyLog extends AbstractUpdateRecord
|
||||
{
|
||||
/**
|
||||
* @param Currency $object
|
||||
* @return \Illuminate\Database\Eloquent\Model
|
||||
* @throws \App\Classes\Exceptions\MalformedRequestException
|
||||
*/
|
||||
public function execute(Currency $object) {
|
||||
$model = new CurrencyLog();
|
||||
$model->currency_id = $object->id;
|
||||
$model->selling = $object->selling;
|
||||
$model->created_by = \Auth::user()->id;
|
||||
return $this->handler($model);
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
|
||||
namespace App\Classes\Modules\Currencies\Services;
|
||||
|
||||
use App\Classes\General\Eloquent\AbstractDeleteRecord;
|
||||
use App\Models\Currency;
|
||||
|
||||
class DeletesCurrency extends AbstractDeleteRecord
|
||||
{
|
||||
|
||||
public function execute(Currency $model) {
|
||||
return $this->handler($model);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
<?php
|
||||
|
||||
namespace App\Classes\Modules\Currencies\Services;
|
||||
|
||||
|
||||
use App\Classes\General\Eloquent\AbstractFetchRecord;
|
||||
use Illuminate\Database\Eloquent\Builder;
|
||||
use App\Models\Currency;
|
||||
|
||||
class FetchesCurrency extends AbstractFetchRecord
|
||||
{
|
||||
|
||||
/** @var Currency */
|
||||
private $repository;
|
||||
|
||||
/**
|
||||
* FetchesUser constructor.
|
||||
* @param Currency $repository
|
||||
*/
|
||||
public function __construct(Currency $repository)
|
||||
{
|
||||
$this->repository = $repository;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @return Builder
|
||||
*/
|
||||
public function getRepository(): Builder
|
||||
{
|
||||
return $this->repository->newQuery();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
<?php
|
||||
|
||||
namespace App\Classes\Modules\Currencies\Services;
|
||||
|
||||
use App\Classes\General\Eloquent\AbstractUpdateRecord;
|
||||
use App\Classes\Modules\Currencies\DataTransferObjects\CurrencyObject;
|
||||
use App\Models\Currency;
|
||||
|
||||
class UpdatesCurrencyRate extends AbstractUpdateRecord
|
||||
{
|
||||
|
||||
/**
|
||||
* @param CurrencyObject $object
|
||||
* @return \Illuminate\Database\Eloquent\Model
|
||||
* @throws \App\Classes\Exceptions\MalformedRequestException
|
||||
*/
|
||||
public function execute(Currency $model, CurrencyObject $object)
|
||||
{
|
||||
$model->selling = $object->getSelling();
|
||||
|
||||
return $this->handler($model);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,55 @@
|
||||
<?php
|
||||
|
||||
namespace App\Classes\Modules\Currencies\Standards\Rules;
|
||||
|
||||
use App\Classes\General\Abstracts\AbstractRule;
|
||||
use App\Classes\Modules\Currencies\DataTransferObjects\SegmentObject;
|
||||
use App\Classes\Modules\Currencies\Standards\Validators\CurrencyValidation;
|
||||
|
||||
class CanCreateCurrency extends AbstractRule
|
||||
{
|
||||
|
||||
/** @var currencyValidation */
|
||||
private $currencyValidation;
|
||||
|
||||
/**
|
||||
* CanCreateCurrency constructor.
|
||||
* @param CurrencyValidation $currencyValidation
|
||||
*/
|
||||
public function __construct(CurrencyValidation $currencyValidation)
|
||||
{
|
||||
$this->currencyValidation = $currencyValidation;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return bool
|
||||
*/
|
||||
protected function authorized(): bool
|
||||
{
|
||||
// TODO Set Authorization rules
|
||||
if (!\Auth::user()->can('add currency')) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param SegmentObject $object
|
||||
* @return bool
|
||||
* @throws \App\Classes\Exceptions\RequestValidationException
|
||||
*/
|
||||
protected function validators($object): bool
|
||||
{
|
||||
return $this->currencyValidation->validate($object);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param SegmentObject $object
|
||||
* @return bool
|
||||
*/
|
||||
protected function criteria($object): bool
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
<?php
|
||||
|
||||
namespace App\Classes\Modules\Currencies\Standards\Rules;
|
||||
|
||||
use App\Classes\General\Abstracts\AbstractRule;
|
||||
use App\Classes\Modules\Currencies\DataTransferObjects\CurrencyObject;
|
||||
|
||||
class CanDeleteCurrency extends AbstractRule
|
||||
{
|
||||
/**
|
||||
* @return bool
|
||||
*/
|
||||
protected function authorized(): bool
|
||||
{
|
||||
// TODO Set Authorization rules
|
||||
|
||||
if (!\Auth::user()->can('delete currency')) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @param CurrencyObject $object
|
||||
* @return bool
|
||||
*/
|
||||
protected function validators($object): bool
|
||||
{
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param CurrencyObject $object
|
||||
* @return bool
|
||||
*/
|
||||
protected function criteria($object): bool
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,58 @@
|
||||
<?php
|
||||
|
||||
namespace App\Classes\Modules\Currencies\Standards\Rules;
|
||||
|
||||
|
||||
use App\Classes\General\Abstracts\AbstractRule;
|
||||
use App\Classes\Modules\Currencies\DataTransferObjects\CurrencyObject;
|
||||
use App\Classes\Modules\Currencies\Standards\Validators\CurrencyValidation;
|
||||
|
||||
class CanUpdateCurrency extends AbstractRule
|
||||
{
|
||||
|
||||
/** @var currencyValidation */
|
||||
private $currencyValidation;
|
||||
|
||||
/**
|
||||
* CanCreateAddress constructor.
|
||||
* @param CurrencyValidation $CurrencyValidation
|
||||
*/
|
||||
public function __construct(CurrencyValidation $currencyValidation)
|
||||
{
|
||||
$this->currencyValidation = $currencyValidation;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return bool
|
||||
*/
|
||||
protected function authorized(): bool
|
||||
{
|
||||
// TODO Set Authorization rules
|
||||
|
||||
if (!\Auth::user()->can('edit currency')) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param CurrencyValidation $object
|
||||
* @return bool
|
||||
* @throws \App\Classes\Exceptions\RequestValidationException
|
||||
*/
|
||||
protected function validators($object): bool
|
||||
{
|
||||
return $this->currencyValidation->validate($object);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param CurrencyValidation $object
|
||||
* @return bool
|
||||
*/
|
||||
protected function criteria($object): bool
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
<?php
|
||||
|
||||
namespace App\Classes\Modules\Currencies\Standards\Validators;
|
||||
|
||||
use App\Classes\General\Abstracts\AbstractValidation;
|
||||
use App\Classes\Modules\Currencies\DataTransferObjects\CurrencyObject;
|
||||
|
||||
class CurrencyValidation extends AbstractValidation
|
||||
{
|
||||
/**
|
||||
* @param CurrencyObject $object
|
||||
* @return array
|
||||
*/
|
||||
protected function data($object): array
|
||||
{
|
||||
return [
|
||||
'country_id' => $object->getCountryId(),
|
||||
'name' => $object->getName(),
|
||||
'short_code' => $object->getShortCode(),
|
||||
'symbol' => $object->getSymbol(),
|
||||
'selling' => $object->getSelling()
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
protected function rules(): array
|
||||
{
|
||||
return [
|
||||
'country_id' => 'required',
|
||||
'name' => 'required',
|
||||
'short_code' => 'required',
|
||||
'short_code' => 'required',
|
||||
'selling' => 'required',
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
protected function messages(): array
|
||||
{
|
||||
return [];
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Currencies;
|
||||
|
||||
use App\Classes\Modules\Currencies\ControllersLogic\CreateCurrencyLogic;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class CreateCurrencyController
|
||||
{
|
||||
/**
|
||||
* @param Request $request
|
||||
* @param CreateCurrencyLogic $logic
|
||||
* @return JsonResponse
|
||||
*/
|
||||
public function create(Request $request, CreateCurrencyLogic $logic): JsonResponse {
|
||||
return $logic->execute($request);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Currencies;
|
||||
|
||||
use App\Classes\Modules\Currencies\ControllersLogic\DeleteCurrencyLogic;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class DeleteCurrencyController
|
||||
{
|
||||
/**
|
||||
* @param Request $request
|
||||
* @param DeleteCurrencyLogic $logic
|
||||
* @return JsonResponse
|
||||
*/
|
||||
public function delete(Request $request, DeleteCurrencyLogic $logic): JsonResponse {
|
||||
return $logic->execute($request);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Currencies;
|
||||
|
||||
use App\Classes\Modules\Currencies\ControllersLogic\UpdateCurrencyRateLogic;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class UpdateCurrencyRateController
|
||||
{
|
||||
/**
|
||||
* @param Request $request
|
||||
* @param UpdateCurrencyRateLogic $logic
|
||||
* @return JsonResponse
|
||||
*/
|
||||
public function update(Request $request, UpdateCurrencyRateLogic $logic): JsonResponse {
|
||||
return $logic->execute($request);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Resources;
|
||||
|
||||
use Illuminate\Http\Resources\Json\JsonResource;
|
||||
|
||||
class CurrencyResource extends JsonResource
|
||||
{
|
||||
/**
|
||||
* Transform the resource into an array.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return array
|
||||
*/
|
||||
public function toArray($request)
|
||||
{
|
||||
return [
|
||||
'id' => $this->id,
|
||||
'country_id' => $this->country_id,
|
||||
'name' => $this->name,
|
||||
'short_code' => $this->short_code,
|
||||
'symbol' => $this->symbol,
|
||||
'selling' => $this->selling
|
||||
];
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
<?php
|
||||
|
||||
namespace App;
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Relations\HasOne;
|
||||
use Illuminate\Database\Eloquent\SoftDeletes;
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class CurrencyLog extends AbstractModel
|
||||
{
|
||||
protected $table = 'currency_logs';
|
||||
|
||||
}
|
||||
+1
@@ -20,6 +20,7 @@ class CreateCurrenciesTable extends Migration
|
||||
$table->string('name')->nullable();
|
||||
$table->string('short_code')->nullable();
|
||||
$table->string('symbol')->nullable();
|
||||
$table->float('selling', 20, 5)->nullable();
|
||||
$table->timestamps();
|
||||
$table->softDeletes();
|
||||
});
|
||||
@@ -0,0 +1,36 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
class CreateCurrencyLogsTable extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::create('currency_logs', function (Blueprint $table) {
|
||||
$table->id();
|
||||
$table->bigInteger('currency_id')->unsigned()->nullable();
|
||||
$table->foreign('currency_id')->references('id')->on('currencies')->onDelete('cascade');
|
||||
$table->float('selling', 20, 5)->nullable();
|
||||
$table->bigInteger('created_by')->unsigned()->nullable();
|
||||
$table->foreign('created_by')->references('id')->on('users')->onDelete('cascade');
|
||||
$table->timestamps();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::dropIfExists('currency_logs');
|
||||
}
|
||||
}
|
||||
@@ -24,7 +24,6 @@ class AdminUserPermissionsTableSeeder extends Seeder
|
||||
Permission::create(['name' => 'edit document', 'guard_name' => 'web']);
|
||||
Permission::create(['name' => 'delete document', 'guard_name' => 'web']);
|
||||
|
||||
|
||||
Permission::create(['name' => 'view standard_segment', 'guard_name' => 'web']);
|
||||
Permission::create(['name' => 'add standard_segment', 'guard_name' => 'web']);
|
||||
Permission::create(['name' => 'edit standard_segment', 'guard_name' => 'web']);
|
||||
@@ -50,6 +49,11 @@ class AdminUserPermissionsTableSeeder extends Seeder
|
||||
Permission::create(['name' => 'edit company_bank', 'guard_name' => 'web']);
|
||||
Permission::create(['name' => 'delete company_bank', 'guard_name' => 'web']);
|
||||
|
||||
Permission::create(['name' => 'view currency', 'guard_name' => 'web']);
|
||||
Permission::create(['name' => 'add currency', 'guard_name' => 'web']);
|
||||
Permission::create(['name' => 'edit currency', 'guard_name' => 'web']);
|
||||
Permission::create(['name' => 'delete currency', 'guard_name' => 'web']);
|
||||
|
||||
///////////////////////////////////////////////////////////////////////
|
||||
|
||||
$shadow_admin_role = Role::create([
|
||||
|
||||
@@ -19,6 +19,7 @@ class CurrenciesTableSeeder extends Seeder
|
||||
'name' => 'Ringgit',
|
||||
'short_code' => 'MYR',
|
||||
'symbol' => 'RM',
|
||||
'selling' => 1,
|
||||
'created_at' => date('Y-m-d H:i:s'),
|
||||
'updated_at' => date('Y-m-d H:i:s')
|
||||
]
|
||||
|
||||
Reference in New Issue
Block a user