from home

This commit is contained in:
daeng.deni@dharma.or.id 2023-06-13 09:01:35 +07:00
parent fe0eded740
commit 5663666328
19 changed files with 553 additions and 24 deletions

View File

@ -0,0 +1,91 @@
<?php
namespace Modules\Cetaklabel\DataTables;
use Illuminate\Database\Eloquent\Builder as QueryBuilder;
use Modules\Cetaklabel\Entities\Cardboard;
use Yajra\DataTables\EloquentDataTable;
use Yajra\DataTables\Html\Builder as HtmlBuilder;
use Yajra\DataTables\Html\Column;
use Yajra\DataTables\Services\DataTable;
class CardboardDataTable extends DataTable
{
/**
* Build the DataTable class.
*
* @param QueryBuilder $query Results from query() method.
*/
public function dataTable(QueryBuilder $query)
: EloquentDataTable
{
return (new EloquentDataTable($query))
->filter(function ($query) {
if (request()->has('search')) {
$search = request()->get('search');
$query->where('kode', 'like', "%" . $search['value'] . "%")
->orWhere('name', 'like', "%" . $search['value'] . "%");
}
})
->addIndexColumn()
->addColumn('action', 'cetaklabel::cardboard._action')
->setRowId('id');
}
/**
* Get the query source of dataTable.
*/
public function query(Cardboard $model)
: QueryBuilder
{
return $model->newQuery();
}
/**
* Optional method if you want to use the html builder.
*/
public function html()
: HtmlBuilder
{
return $this->builder()
->setTableId('cardboard-table')
->columns($this->getColumns())
->minifiedAjax()
->stateSave(false)
->responsive()
->autoWidth(true)
->orderBy(1)
->parameters([
'scrollX' => true,
'drawCallback' => 'function() { KTMenu.createInstances(); }',
])
->addTableClass('align-middle table-row-dashed fs-6 gy-5');
}
/**
* Get the dataTable columns definition.
*/
public function getColumns()
: array
{
return [
Column::make('DT_RowIndex')->title('No')->orderable(false)->searchable(false),
Column::make('kode'),
Column::make('name'),
Column::computed('action')
->exportable(false)
->printable(false)
->width(60)
->addClass('text-center'),
];
}
/**
* Get the filename for export.
*/
protected function filename()
: string
{
return 'Cardboard_' . date('YmdHis');
}
}

View File

@ -17,13 +17,13 @@
$table->string('name', 50);
$table->string('status', 1)->default(0);
$table->timestamps();
$table->timestamp('authorized_at')->nullable();
$table->timestamp('approved_at')->nullable();
$table->softDeletes();
$table->unsignedBigInteger('created_by')->nullable();
$table->unsignedBigInteger('updated_by')->nullable();
$table->unsignedBigInteger('deleted_by')->nullable();
$table->unsignedBigInteger('authorized_by')->nullable();
$table->unsignedBigInteger('approved_by')->nullable();
});
}

View File

@ -18,13 +18,13 @@
$table->string('name', 50);
$table->string('status', 1)->default(0);
$table->timestamps();
$table->timestamp('authorized_at')->nullable();
$table->timestamp('approved_at')->nullable();
$table->softDeletes();
$table->unsignedBigInteger('created_by')->nullable();
$table->unsignedBigInteger('updated_by')->nullable();
$table->unsignedBigInteger('deleted_by')->nullable();
$table->unsignedBigInteger('authorized_by')->nullable();
$table->unsignedBigInteger('approved_by')->nullable();
});
}

View File

@ -19,13 +19,13 @@
$table->string('name', 50);
$table->string('status', 1)->default(0);
$table->timestamps();
$table->timestamp('authorized_at')->nullable();
$table->timestamp('approved_at')->nullable();
$table->softDeletes();
$table->unsignedBigInteger('created_by')->nullable();
$table->unsignedBigInteger('updated_by')->nullable();
$table->unsignedBigInteger('deleted_by')->nullable();
$table->unsignedBigInteger('authorized_by')->nullable();
$table->unsignedBigInteger('approved_by')->nullable();
});
}

View File

@ -20,13 +20,13 @@
$table->string('name', 50);
$table->string('status', 1)->default(0);
$table->timestamps();
$table->timestamp('authorized_at')->nullable();
$table->timestamp('approved_at')->nullable();
$table->softDeletes();
$table->unsignedBigInteger('created_by')->nullable();
$table->unsignedBigInteger('updated_by')->nullable();
$table->unsignedBigInteger('deleted_by')->nullable();
$table->unsignedBigInteger('authorized_by')->nullable();
$table->unsignedBigInteger('approved_by')->nullable();
});
}

View File

@ -21,13 +21,13 @@
$table->string('name');
$table->string('status', 1)->default(0);
$table->timestamps();
$table->timestamp('authorized_at')->nullable();
$table->timestamp('approved_at')->nullable();
$table->softDeletes();
$table->unsignedBigInteger('created_by')->nullable();
$table->unsignedBigInteger('updated_by')->nullable();
$table->unsignedBigInteger('deleted_by')->nullable();
$table->unsignedBigInteger('authorized_by')->nullable();
$table->unsignedBigInteger('approved_by')->nullable();
});
}

View File

@ -17,13 +17,13 @@
$table->string('name');
$table->string('status', 1)->default(0);
$table->timestamps();
$table->timestamp('authorized_at')->nullable();
$table->timestamp('approved_at')->nullable();
$table->softDeletes();
$table->unsignedBigInteger('created_by')->nullable();
$table->unsignedBigInteger('updated_by')->nullable();
$table->unsignedBigInteger('deleted_by')->nullable();
$table->unsignedBigInteger('authorized_by')->nullable();
$table->unsignedBigInteger('approved_by')->nullable();
});
}

View File

@ -18,13 +18,13 @@
$table->string('description')->nullable();
$table->string('status', 1)->default(0);
$table->timestamps();
$table->timestamp('authorized_at')->nullable();
$table->timestamp('approved_at')->nullable();
$table->softDeletes();
$table->unsignedBigInteger('created_by')->nullable();
$table->unsignedBigInteger('updated_by')->nullable();
$table->unsignedBigInteger('deleted_by')->nullable();
$table->unsignedBigInteger('authorized_by')->nullable();
$table->unsignedBigInteger('approved_by')->nullable();
});
}

View File

@ -32,13 +32,13 @@
$table->string('kode_odner', 8);
$table->string('status')->default(0)->nullable();
$table->timestamps();
$table->timestamp('authorized_at')->nullable();
$table->timestamp('approved_at')->nullable();
$table->softDeletes();
$table->unsignedBigInteger('created_by')->nullable();
$table->unsignedBigInteger('updated_by')->nullable();
$table->unsignedBigInteger('deleted_by')->nullable();
$table->unsignedBigInteger('authorized_by')->nullable();
$table->unsignedBigInteger('approved_by')->nullable();
});
}

View File

@ -0,0 +1,45 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
use Modules\Cetaklabel\Entities\Directorat;
use Modules\Cetaklabel\Entities\SubDirectorat;
return new class extends Migration {
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('cardboards', function (Blueprint $table) {
$table->id();
$table->foreignIdFor(Directorat::class)->constrained()->onDelete('cascade');
$table->foreignIdFor(SubDirectorat::class)->constrained()->onDelete('cascade');
$table->string('kode', 15);
$table->string('sequence', 3)->nullable();
$table->string('name', 100)->nullable();
$table->string('status')->default(0)->nullable();
$table->timestamps();
$table->timestamp('approved_at')->nullable();
$table->softDeletes();
$table->unsignedBigInteger('created_by')->nullable();
$table->unsignedBigInteger('updated_by')->nullable();
$table->unsignedBigInteger('deleted_by')->nullable();
$table->unsignedBigInteger('approved_by')->nullable();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('cardboards');
}
};

View File

@ -0,0 +1,42 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
use Modules\Cetaklabel\Entities\Document;
return new class extends Migration {
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('cardboard_details', function (Blueprint $table) {
$table->id();
$table->foreignId('cardboard_id')->constrained('cardboards')->onDelete('cascade');
$table->foreignIdFor(Document::class)->constrained()->onDelete('cascade');
$table->string('status', 1)->default(0)->nullable();
$table->timestamps();
$table->timestamp('approved_at')->nullable();
$table->softDeletes();
$table->unsignedBigInteger('created_by')->nullable();
$table->unsignedBigInteger('updated_by')->nullable();
$table->unsignedBigInteger('deleted_by')->nullable();
$table->unsignedBigInteger('approved_by')->nullable();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('cardboard_details');
}
};

33
Entities/Cardboard.php Normal file
View File

@ -0,0 +1,33 @@
<?php
namespace Modules\Cetaklabel\Entities;
class Cardboard extends BaseModel
{
protected $table = 'cardboards';
protected $fillable = [
'directorat_id',
'sub_directorat_id',
'kode',
'name',
'sequence',
'status',
];
public function directorat()
{
return $this->belongsTo(Directorat::class);
}
public function sub_directorat()
{
return $this->hasMany(SubDirectorat::class);
}
public function cardboard_detail()
{
return $this->hasMany(CardboardDetail::class);
}
}

View File

@ -0,0 +1,24 @@
<?php
namespace Modules\Cetaklabel\Entities;
class CardboardDetail extends BaseModel
{
protected $table = 'cardboard_details';
protected $fillable = [
'cardboard_id',
'document_id'
];
public function cardboard()
{
return $this->belongsTo(Cardboard::class);
}
public function document()
{
return $this->belongsTo(Document::class);
}
}

View File

@ -5,8 +5,8 @@
use App\Http\Controllers\ApiController;
use Exception;
use Modules\Cetaklabel\Entities\Directorat;
use Modules\Cetaklabel\Http\Requests\Directorat\StoreDirectoratRequest;
use Modules\Cetaklabel\Http\Requests\Directorat\UpdateDirectoratRequest;
use Modules\Cetaklabel\Http\Requests\Directorat\StoreCardboardRequest;
use Modules\Cetaklabel\Http\Requests\Directorat\UpdateCardboardRequest;
use Symfony\Component\HttpFoundation\JsonResponse;
class DirectoratController extends ApiController
@ -30,7 +30,7 @@
return $this->sendResponse($directorat, 'Directorat retrieved successfully.');
}
public function store(StoreDirectoratRequest $request)
public function store(StoreCardboardRequest $request)
: JsonResponse
{
// Validate the request...
@ -50,7 +50,7 @@
return $this->sendError('Directorat created failed.', 400);
}
public function update(UpdateDirectoratRequest $request, Directorat $directorat)
public function update(UpdateCardboardRequest $request, Directorat $directorat)
: JsonResponse
{
// Validate the request...

View File

@ -0,0 +1,161 @@
<?php
namespace Modules\Cetaklabel\Http\Controllers;
use App\Http\Controllers\Controller;
use Exception;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Modules\Cetaklabel\DataTables\CardboardDataTable;
use Modules\Cetaklabel\Entities\Cardboard;
use Modules\Cetaklabel\Http\Requests\Cardboard\StoreCardboardRequest;
use Modules\Cetaklabel\Http\Requests\Cardboard\UpdateCardboardRequest;
class CardboardController extends Controller
{
public $user;
public function __construct()
{
$this->middleware(function ($request, $next) {
$this->user = Auth::guard('web')->user();
return $next($request);
});
}
/**
* Display a listing of the Cardboards.
*
* @param \App\DataTables\CardboardDataTable $dataTable
*
* @return mixed
*/
public function index(CardboardDataTable $dataTable, Request $request)
{
if (is_null($this->user) || !$this->user->can('document.read')) {
abort(403, 'Sorry !! You are Unauthorized to view any document data !');
}
return $dataTable->render('cetaklabel::directorat.index');
}
/**
* Store a newly created Cardboard in storage.
*
* @param \App\Http\Requests\StoreCardboardRequest $request
*
* @return mixed
*/
public function store(StoreCardboardRequest $request)
{
if (is_null($this->user) || !$this->user->can('document.create')) {
abort(403, 'Sorry !! You are Unauthorized to create any document data !');
}
// Validate the request...
$validated = $request->validated();
// Store the Cardboard...
if ($validated) {
try {
Cardboard::create($validated);
echo json_encode(['status' => 'success', 'message' => 'Cardboard created successfully.']);
} catch (Exception $e) {
echo json_encode(['status' => 'error', 'message' => 'Cardboard created failed.']);
}
return;
}
echo json_encode(['status' => 'error', 'message' => 'Cardboard created failed.']);
}
/**
* Show the form for creating a new Cardboard.
*/
public function create()
{
if (is_null($this->user) || !$this->user->can('document.create')) {
abort(403, 'Sorry !! You are Unauthorized to create any document data !');
}
abort(404);
}
/**
* Display the specified Cardboard.
*
* @param \Modules\Cetaklabel\Entities\Cardboard $cardboard
*/
public function show(Cardboard $cardboard)
{
if (is_null($this->user) || !$this->user->can('document.read')) {
abort(403, 'Sorry !! You are Unauthorized to view any document data !');
}
abort(404);
}
/**
* Show the form for editing the specified Cardboard.
*
* @param $id
*/
public function edit($id)
{
if (is_null($this->user) || !$this->user->can('document.update')) {
abort(403, 'Sorry !! You are Unauthorized to update any document data !');
}
$cardboard = Cardboard::find($id);
echo json_encode($cardboard);
}
/**
* Update the specified Cardboard in storage.
*
* @param \App\Http\Requests\UpdateCardboardRequest $request
* @param \Modules\Cetaklabel\Entities\Cardboard $cardboard
*
* @return mixed
*/
public function update(UpdateCardboardRequest $request, Cardboard $cardboard)
{
if (is_null($this->user) || !$this->user->can('document.update')) {
abort(403, 'Sorry !! You are Unauthorized to update any document data !');
}
// Validate the request...
$validated = $request->validated();
// Update the Cardboard...
if ($validated) {
try {
$cardboard->update($validated);
echo json_encode(['status' => 'success', 'message' => 'Cardboard updated successfully.']);
} catch (Exception $e) {
echo json_encode(['status' => 'error', 'message' => 'Cardboard updated failed.']);
}
return;
}
echo json_encode(['status' => 'error', 'message' => 'Cardboard updated failed.']);
}
/**
* Remove the specified Cardboard from storage.
*
* @param \Modules\Cetaklabel\Entities\Cardboard $cardboard
*
* @return void
*/
public function destroy(Cardboard $cardboard)
{
if (is_null($this->user) || !$this->user->can('document.delete')) {
abort(403, 'Sorry !! You are Unauthorized to delete any document data !');
}
$cardboard->delete();
echo json_encode(['status' => 'success', 'message' => 'Cardboard deleted successfully.']);
}
}

View File

@ -8,8 +8,8 @@
use Illuminate\Support\Facades\Auth;
use Modules\Cetaklabel\DataTables\DirectoratDataTable;
use Modules\Cetaklabel\Entities\Directorat;
use Modules\Cetaklabel\Http\Requests\Directorat\StoreDirectoratRequest;
use Modules\Cetaklabel\Http\Requests\Directorat\UpdateDirectoratRequest;
use Modules\Cetaklabel\Http\Requests\Directorat\StoreCardboardRequest;
use Modules\Cetaklabel\Http\Requests\Directorat\UpdateCardboardRequest;
class DirectoratController extends Controller
{
@ -46,7 +46,7 @@
*
* @return mixed
*/
public function store(StoreDirectoratRequest $request)
public function store(StoreCardboardRequest $request)
{
if (is_null($this->user) || !$this->user->can('master.create')) {
abort(403, 'Sorry !! You are Unauthorized to create any master data !');
@ -116,7 +116,7 @@
*
* @return mixed
*/
public function update(UpdateDirectoratRequest $request, Directorat $directorat)
public function update(UpdateCardboardRequest $request, Directorat $directorat)
{
if (is_null($this->user) || !$this->user->can('master.update')) {
abort(403, 'Sorry !! You are Unauthorized to update any master data !');

View File

@ -0,0 +1,67 @@
<?php
namespace Modules\Cetaklabel\Http\Requests\Cardboard;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Http\Exceptions\HttpResponseException;
use Illuminate\Validation\ValidationException;
use Illuminate\Validation\Validator;
use Symfony\Component\HttpFoundation\JsonResponse;
class StoreCardboardRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*/
public function authorize()
: bool
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array<string, \Illuminate\Contracts\Validation\Rule|array|string>
*/
public function rules()
: array
{
return [
'kode' => 'required|stringunique:cardboards,kode',
'name' => 'required|string|max:50'
];
}
/**
* Configure the validator instance.
*/
public function withValidator(Validator $validator)
: void
{
$validator->after(function (Validator $validator) {
if ($validator->errors()->any()) {
$errors = json_decode($validator->errors()->toJson(), true);
foreach ($errors as $key => $value) {
flash($value[0]);
}
return redirect()->route('cardboard.index')->with('error', 'Cardboard created failed.');
}
});
}
protected function failedValidation(Validator|\Illuminate\Contracts\Validation\Validator $validator)
: JsonResponse
{
$errors = (new ValidationException($validator))->errors();
throw new HttpResponseException(response()->json([
'success' => false,
'errors' => $errors,
'messages' => 'Cardboard created failed.'
], JsonResponse::HTTP_UNPROCESSABLE_ENTITY));
}
}

View File

@ -0,0 +1,65 @@
<?php
namespace Modules\Cetaklabel\Http\Requests\Cardboard;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Http\Exceptions\HttpResponseException;
use Illuminate\Http\JsonResponse;
use Illuminate\Validation\ValidationException;
use Illuminate\Validation\Validator;
class UpdateCardboardRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*/
public function authorize()
: bool
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array<string, \Illuminate\Contracts\Validation\Rule|array|string>
*/
public function rules()
: array
{
return [
'kode' => 'required|string|unique:cardboards,kode,' . $this->cardboard->id,
'name' => 'required|string|max:50'
];
}
/**
* Configure the validator instance.
*/
public function withValidator(Validator $validator)
: void
{
$validator->after(function (Validator $validator) {
if ($validator->errors()->any()) {
$error = json_decode($validator->errors()->toJson(), true);
foreach ($error as $key => $value) {
flash($value[0]);
}
return redirect()->route('cardboard.index')->with('error', 'Cardboard updated failed.');
}
});
}
protected function failedValidation(Validator|\Illuminate\Contracts\Validation\Validator $validator)
: JsonResponse
{
$errors = (new ValidationException($validator))->errors();
throw new HttpResponseException(response()->json([
'success' => false,
'errors' => $errors,
'messages' => 'Cardboard updated failed.'
], JsonResponse::HTTP_UNPROCESSABLE_ENTITY));
}
}

View File

@ -36,6 +36,7 @@
Route::resource('document-type', DocumentTypeController::class);
Route::resource('document', DocumentController::class);
Route::resource('dus', DocumentController::class);
Route::get('document-download/{id}', [DocumentController::class, 'download'])->name('document.download');
Route::get('document-label/{id}', [DocumentController::class, 'label'])->name('document.label');
Route::get('document-odner/{id}', [DocumentController::class, 'odner'])->name('document.odner');