mirror of
https://gitlab.com/CIEFWorldwideSdnBhd/shipping-portal.git
synced 2026-08-19 04:24:12 +00:00
User interface to allow admin to update company whether is a credit term customer for warehoue storage charges
This commit is contained in:
@@ -0,0 +1,71 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Classes\Modules\Companies\ControllersLogic;
|
||||||
|
|
||||||
|
|
||||||
|
use App\Classes\General\Abstracts\AbstractControllerLogic;
|
||||||
|
use App\Classes\Modules\Companies\Services\FetchesCompany;
|
||||||
|
use App\Classes\Modules\Companies\Services\UpdatesCompanyModuleIsCreditTerm;
|
||||||
|
use Illuminate\Http\JsonResponse;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
use Illuminate\Support\Facades\Auth;
|
||||||
|
use Illuminate\Support\Facades\Log;
|
||||||
|
|
||||||
|
class UpdateCompanyCreditTermStatusLogic extends AbstractControllerLogic
|
||||||
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
protected function notification():array {
|
||||||
|
return [
|
||||||
|
'title' => 'Update Company Credit Term Status',
|
||||||
|
'message' => 'You have successfully updated Company Credit Term Status'
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @var FetchesCompany */
|
||||||
|
private $fetchesCompany;
|
||||||
|
|
||||||
|
/** @var UpdatesCompanyModuleIsCreditTerm */
|
||||||
|
private $updatesCompanyModuleIsCreditTerm;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* UpdateCompanyCreditTermStatusLogic constructor.
|
||||||
|
* @param FetchesCompany $fetchesCompany
|
||||||
|
* @param UpdatesCompanyModuleIsCreditTerm $updatesCompanyModuleIsCreditTerm
|
||||||
|
*/
|
||||||
|
public function __construct(FetchesCompany $fetchesCompany, UpdatesCompanyModuleIsCreditTerm $updatesCompanyModuleIsCreditTerm)
|
||||||
|
{
|
||||||
|
$this->fetchesCompany = $fetchesCompany;
|
||||||
|
$this->updatesCompanyModuleIsCreditTerm = $updatesCompanyModuleIsCreditTerm;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @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
|
||||||
|
{
|
||||||
|
|
||||||
|
$company = $this->fetchesCompany->execute(['id' => $request->route('id')]);
|
||||||
|
|
||||||
|
$isCreditTerm = $company->companyModules()->first()->connections()->first()->is_credit_term;
|
||||||
|
|
||||||
|
if ($isCreditTerm == 1) {
|
||||||
|
$isCreditTerm = 0;
|
||||||
|
} else {
|
||||||
|
$isCreditTerm = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->updatesCompanyModuleIsCreditTerm->execute($company->companyModules()->first()->connections()->first(), $isCreditTerm);
|
||||||
|
Log::info(Auth::user()->email." updated credit term status for customer with id: " .$request->route('id'). " to status " . $isCreditTerm);
|
||||||
|
|
||||||
|
$result = ['is_credit_term' => $isCreditTerm];
|
||||||
|
return $this->response(['data' => $result]);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Classes\Modules\Companies\Services;
|
||||||
|
|
||||||
|
use App\Classes\General\Eloquent\AbstractUpdateRecord;
|
||||||
|
use App\Models\CompanyConnection;
|
||||||
|
|
||||||
|
class UpdatesCompanyModuleIsCreditTerm extends AbstractUpdateRecord
|
||||||
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param CompanyConnection $model
|
||||||
|
* @param int $isCreditTerm
|
||||||
|
* @return \Illuminate\Database\Eloquent\Model
|
||||||
|
* @throws \App\Classes\Exceptions\MalformedRequestException
|
||||||
|
*/
|
||||||
|
public function execute(CompanyConnection $model, int $isCreditTerm)
|
||||||
|
{
|
||||||
|
$model->is_credit_term = $isCreditTerm;
|
||||||
|
|
||||||
|
return $this->handler($model);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -6,6 +6,7 @@ namespace App\Classes\Modules\Transactions\ControllersLogic;
|
|||||||
use App\Classes\General\Abstracts\AbstractControllerLogic;
|
use App\Classes\General\Abstracts\AbstractControllerLogic;
|
||||||
use App\Classes\Modules\Transactions\Services\ListsTransactions;
|
use App\Classes\Modules\Transactions\Services\ListsTransactions;
|
||||||
use App\Http\Resources\TransactionWithStorageResource;
|
use App\Http\Resources\TransactionWithStorageResource;
|
||||||
|
use App\Http\Resources\TransactionResource;
|
||||||
use Illuminate\Http\JsonResponse;
|
use Illuminate\Http\JsonResponse;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use Illuminate\Support\Facades\Log;
|
use Illuminate\Support\Facades\Log;
|
||||||
@@ -49,8 +50,10 @@ class ListTransactionsLogic extends AbstractControllerLogic
|
|||||||
});
|
});
|
||||||
$item['storages'] = $filteredStorages;
|
$item['storages'] = $filteredStorages;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
return $this->collectionResponse(TransactionWithStorageResource::collection($query));
|
return $this->collectionResponse(TransactionWithStorageResource::collection($query));
|
||||||
}
|
}
|
||||||
|
else{
|
||||||
|
return $this->collectionResponse(TransactionResource::collection($query));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,20 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers\Companies;
|
||||||
|
|
||||||
|
use App\Classes\Modules\Companies\ControllersLogic\UpdateCompanyCreditTermStatusLogic;
|
||||||
|
use Illuminate\Http\JsonResponse;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
|
||||||
|
class UpdateCompanyCreditTermStatusController
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @param Request $request
|
||||||
|
* @param UpdateCompanyCreditTermStatusLogic $logic
|
||||||
|
* @return JsonResponse
|
||||||
|
*/
|
||||||
|
public function update(Request $request, UpdateCompanyCreditTermStatusLogic $logic): JsonResponse {
|
||||||
|
return $logic->execute($request);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -33,6 +33,7 @@ class CompanyResource extends JsonResource
|
|||||||
'business_type' => (int) $this->business_type,
|
'business_type' => (int) $this->business_type,
|
||||||
'status' => (int) $this->status,
|
'status' => (int) $this->status,
|
||||||
'segments' => SegmentResource::collection($companyModule->connections()->first()->segments),
|
'segments' => SegmentResource::collection($companyModule->connections()->first()->segments),
|
||||||
|
'is_credit_term' => $companyModule->connections()->first()->is_credit_term,
|
||||||
'contact' => new ContactResource ($this->when($this->has('contacts'), $this->contacts->first())),
|
'contact' => new ContactResource ($this->when($this->has('contacts'), $this->contacts->first())),
|
||||||
'employee' => new UserResource($companyModule->employees()->first()),
|
'employee' => new UserResource($companyModule->employees()->first()),
|
||||||
'company_module' => new CompanyModuleResource($companyModule),
|
'company_module' => new CompanyModuleResource($companyModule),
|
||||||
|
|||||||
@@ -35,6 +35,26 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="row" v-if="$store.getters.isAdmin">
|
||||||
|
<div class="col">
|
||||||
|
<div class="row align-items-center">
|
||||||
|
<div class="col-auto">
|
||||||
|
<div v-if="item.is_credit_term === 1" class="font-heading fs-11 light">
|
||||||
|
Credit term customer: YES
|
||||||
|
</div>
|
||||||
|
<div v-else class="font-heading fs-11 light">
|
||||||
|
Credit term customer: NO
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="btn btn-xs b-rad-none pointer requestModal d-inline rounded no-border hover-primary bg-transparent" data-type="changeCreditTermCustomerStatus">
|
||||||
|
<i class="fa fa-edit pointer fa-fw fs-11 m-l-5"></i>
|
||||||
|
</div>
|
||||||
|
<modal-component class="animate__animated animate__fast animate__fadeIn" styleType="fill-in" type="changeCreditTermCustomerStatus">
|
||||||
|
<update-credit-term-status-form-component :section="'customerProfileSection'" :data="item" v-on:update="item.is_credit_term = $event.is_credit_term"></update-credit-term-status-form-component>
|
||||||
|
</modal-component>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
+40
@@ -0,0 +1,40 @@
|
|||||||
|
<template>
|
||||||
|
<div class="row" @keyup.enter="submitForm">
|
||||||
|
<div class="col bg-white padding-40 b-rad-lg">
|
||||||
|
<loading-component style="height: 50px; top: 0;" key="1" color="success" v-show="$store.getters.isLoading(section)"></loading-component>
|
||||||
|
<div class="row" v-show="!$store.getters.isLoading(section)">
|
||||||
|
<div class="col text-center">
|
||||||
|
<div class="row m-b-20">
|
||||||
|
<div class="col">
|
||||||
|
<h5 class="all-caps">Update Credit Term Customer</h5>
|
||||||
|
<div class="fs-11">Are you sure you want to update the credit term status for this company to <b>{{ data.is_credit_term === 1 ? 'NO' : 'YES' }}</b>?</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col p-r-5">
|
||||||
|
<div data-dismiss="modal" class="btn btn-sm btn-default bg-master-lighter btn-block b-rad-none">Cancel</div>
|
||||||
|
</div>
|
||||||
|
<div class="col p-l-5">
|
||||||
|
<div class="btn btn-danger w-100 btn-sm" @click="submit(route('api.company.update.creditterm.status', data.id), 'post', section, true, true)">Confirm</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
import modalFormHandler from '../../../general/mixins/modalFormHandler';
|
||||||
|
export default {
|
||||||
|
methods: {
|
||||||
|
successHandler(response){
|
||||||
|
console.log('update', response.payload.data);
|
||||||
|
this.$emit('update', response.payload.data);
|
||||||
|
this.closeModal();
|
||||||
|
this.formHandler();
|
||||||
|
},
|
||||||
|
},
|
||||||
|
mixins: [modalFormHandler]
|
||||||
|
}
|
||||||
|
</script>
|
||||||
@@ -9,6 +9,7 @@ Route::group(['prefix' => 'company', 'as' => 'company.', 'namespace' => 'Compani
|
|||||||
Route::put('/update/{id}', 'UpdateCompanyController@update')->name('update');
|
Route::put('/update/{id}', 'UpdateCompanyController@update')->name('update');
|
||||||
Route::delete('/delete/{id}', 'DeleteCompanyController@destroy')->name('delete');
|
Route::delete('/delete/{id}', 'DeleteCompanyController@destroy')->name('delete');
|
||||||
Route::put('/name-and-debtor/update/{id}', 'UpdateCompanyNameAndDebtorController@update')->name('update.nameAndDebtor');
|
Route::put('/name-and-debtor/update/{id}', 'UpdateCompanyNameAndDebtorController@update')->name('update.nameAndDebtor');
|
||||||
|
Route::post('/update-credit-term/{id}', 'UpdateCompanyCreditTermStatusController@update')->name('update.creditterm.status');
|
||||||
Route::put('/type/update/{id}', 'UpdateCompanyTypeController@create')->name('update.type');
|
Route::put('/type/update/{id}', 'UpdateCompanyTypeController@create')->name('update.type');
|
||||||
|
|
||||||
Route::post('/team/create', 'AddNewMemberController@create')->name('team.create');
|
Route::post('/team/create', 'AddNewMemberController@create')->name('team.create');
|
||||||
|
|||||||
Reference in New Issue
Block a user