export done

original
ajikamaludin 2 years ago
parent cffa0e509a
commit 444a28f899
No known key found for this signature in database
GPG Key ID: E4F565A376B260B7

@ -6,6 +6,8 @@ use App\Models\Department;
use App\Models\Document;
use App\Models\TypeDoc;
use Illuminate\Http\Request;
use OpenSpout\Writer\Common\Creator\Style\StyleBuilder;
use Rap2hpoutre\FastExcel\FastExcel;
class DocumentController extends Controller
{
@ -14,21 +16,23 @@ class DocumentController extends Controller
$query = Document::with(['department', 'type'])->orderBy('created_at');
if ($request->q != null || $request->q != '') {
$query->where('no_doc', 'like', '%'.$request->q.'%')
$query->where(function ($query) use ($request) {
$query->where('no_doc', 'like', '%'.$request->q.'%')
->orWhere('company_name', 'like', '%'.$request->q.'%')
->orWhere('pic_name', 'like', '%'.$request->q.'%')
->orWhere('email', 'like', '%'.$request->q.'%');
});
}
if ($request->department_id != ''){
if ($request->department_id != '') {
$query->where('department_id', $request->department_id);
}
if ($request->status != ''){
if ($request->status != '') {
$query->where('status', $request->status);
}
if ($request->type_doc_id != ''){
if ($request->type_doc_id != '') {
$query->where('type_doc_id', $request->type_doc_id);
}
@ -138,7 +142,7 @@ class DocumentController extends Controller
]);
$file = $request->file('document');
if($file != null) {
if ($file != null) {
$file->store('documents', 'public');
$doc->document = $file->hashName();
}
@ -157,6 +161,58 @@ class DocumentController extends Controller
]);
}
public function export(Request $request)
{
$query = Document::with(['department', 'type', 'creator'])->orderBy('created_at');
if ($request->q != null || $request->q != '') {
$query->where(function ($query) use ($request) {
$query->where('no_doc', 'like', '%'.$request->q.'%')
->orWhere('company_name', 'like', '%'.$request->q.'%')
->orWhere('pic_name', 'like', '%'.$request->q.'%')
->orWhere('email', 'like', '%'.$request->q.'%');
});
}
if ($request->department_id != '') {
$query->where('department_id', $request->department_id);
}
if ($request->status != '') {
$query->where('status', $request->status);
}
if ($request->type_doc_id != '') {
$query->where('type_doc_id', $request->type_doc_id);
}
$collections = collect([]);
foreach ($query->get() as $document) {
$collections->add([
'no dokumen' => $document->no_doc,
'jenis dokumen' => $document->type->name,
'nama perusahaan' => $document->company_name,
'nama pihak pertama' => $document->first_person_name,
'nama pihak kedua' => $document->second_person_name,
'tanggal mulai' => $document->start_date,
'tanggal selesai' => $document->end_date,
'department' => $document->department->name,
'nama pic' => $document->pic_name,
'email' => $document->email,
'catata' => $document->note,
'status' => $document->status,
'user_creator' => $document->creator->name,
]);
}
$date = now()->format('d-m-y');
$header_style = (new StyleBuilder())->setFontBold()->build();
return (new FastExcel($collections))
->headerStyle($header_style)
->download("documents-$date.xlsx");
}
public function destroy(Document $doc)
{
$doc->delete();

@ -11,6 +11,7 @@
"laravel/framework": "^9.19",
"laravel/sanctum": "^2.8",
"laravel/tinker": "^2.7",
"rap2hpoutre/fast-excel": "^4.1",
"tightenco/ziggy": "^1.0"
},
"require-dev": {

161
composer.lock generated

@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "49d0eed73c35e5e17c8c427170a67feb",
"content-hash": "8662250ffc62667a51719994af603665",
"packages": [
{
"name": "brick/math",
@ -2174,6 +2174,95 @@
],
"time": "2022-08-01T11:03:24+00:00"
},
{
"name": "openspout/openspout",
"version": "v3.7.4",
"source": {
"type": "git",
"url": "https://github.com/openspout/openspout.git",
"reference": "dfbbd53b5edcd486b45a37f6a04fac33073c70f3"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/openspout/openspout/zipball/dfbbd53b5edcd486b45a37f6a04fac33073c70f3",
"reference": "dfbbd53b5edcd486b45a37f6a04fac33073c70f3",
"shasum": ""
},
"require": {
"ext-dom": "*",
"ext-filter": "*",
"ext-libxml": "*",
"ext-xmlreader": "*",
"ext-zip": "*",
"php": "~7.3.0 || ~7.4.0 || ~8.0.0 || ~8.1.0"
},
"require-dev": {
"ext-zlib": "*",
"friendsofphp/php-cs-fixer": "^3.4",
"phpstan/phpstan": "^1.4",
"phpstan/phpstan-phpunit": "^1.0",
"phpunit/phpunit": "^9.5"
},
"suggest": {
"ext-iconv": "To handle non UTF-8 CSV files (if \"php-intl\" is not already installed or is too limited)",
"ext-intl": "To handle non UTF-8 CSV files (if \"iconv\" is not already installed)"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "3.3.x-dev"
}
},
"autoload": {
"psr-4": {
"OpenSpout\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Adrien Loison",
"email": "adrien@box.com"
}
],
"description": "PHP Library to read and write spreadsheet files (CSV, XLSX and ODS), in a fast and scalable way",
"homepage": "https://github.com/openspout/openspout",
"keywords": [
"OOXML",
"csv",
"excel",
"memory",
"odf",
"ods",
"office",
"open",
"php",
"read",
"scale",
"spreadsheet",
"stream",
"write",
"xlsx"
],
"support": {
"issues": "https://github.com/openspout/openspout/issues",
"source": "https://github.com/openspout/openspout/tree/v3.7.4"
},
"funding": [
{
"url": "https://paypal.me/filippotessarotto",
"type": "custom"
},
{
"url": "https://github.com/Slamdunk",
"type": "github"
}
],
"time": "2022-03-31T06:15:15+00:00"
},
{
"name": "phpoption/phpoption",
"version": "1.9.0",
@ -2906,6 +2995,76 @@
],
"time": "2022-09-16T03:22:46+00:00"
},
{
"name": "rap2hpoutre/fast-excel",
"version": "v4.1.0",
"source": {
"type": "git",
"url": "https://github.com/rap2hpoutre/fast-excel.git",
"reference": "724557e844170a231fd4515bbc3ea435ca622e7d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/rap2hpoutre/fast-excel/zipball/724557e844170a231fd4515bbc3ea435ca622e7d",
"reference": "724557e844170a231fd4515bbc3ea435ca622e7d",
"shasum": ""
},
"require": {
"illuminate/support": "5.3.* || 5.4.* || 5.5.* || 5.6.* || 5.7.* || 5.8.* || ^6.0 || ^7.0 || ^8.0 || ^9.0",
"openspout/openspout": "^3",
"php": "^7.3 || ^8.0"
},
"require-dev": {
"illuminate/database": "^6.20.12 || ^7.30.4 || ^8.24.0 || ^9.0",
"phpunit/phpunit": "^9.5",
"squizlabs/php_codesniffer": "3.*"
},
"type": "library",
"extra": {
"laravel": {
"providers": [
"Rap2hpoutre\\FastExcel\\Providers\\FastExcelServiceProvider"
]
}
},
"autoload": {
"files": [
"src/functions/fastexcel.php"
],
"psr-4": {
"Rap2hpoutre\\FastExcel\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "rap2h",
"email": "raphaelht@gmail.com"
}
],
"description": "Fast Excel import/export for Laravel",
"keywords": [
"csv",
"excel",
"laravel",
"xls",
"xlsx"
],
"support": {
"issues": "https://github.com/rap2hpoutre/fast-excel/issues",
"source": "https://github.com/rap2hpoutre/fast-excel/tree/v4.1.0"
},
"funding": [
{
"url": "https://github.com/rap2hpoutre",
"type": "github"
}
],
"time": "2022-07-21T14:21:25+00:00"
},
{
"name": "symfony/console",
"version": "v6.1.4",

@ -39,7 +39,7 @@ export default function Document(props) {
const handleFilter = (filter) => {
setSearch({
...search,
...filter
...filter,
})
}
@ -92,7 +92,7 @@ export default function Document(props) {
</div>
</div>
</div>
<div className="overflow-x-auto pb-52">
<div className="overflow-x-auto pb-44">
<table className="table w-full table-zebra">
<thead>
<tr>

@ -1,4 +1,5 @@
import React, { useState } from 'react'
import { Inertia } from '@inertiajs/inertia'
import { statuses } from '@/utils'
import InputLabel from '@/Components/InputLabel'
@ -31,8 +32,11 @@ export default function ModalFilter(props) {
})
}
const onClickExport = () => {
// call export url
const params = {
q: filter.q,
ype_doc_id: type,
status: status,
department_id: dep
}
return (
@ -95,7 +99,7 @@ export default function ModalFilter(props) {
<div className='flex justify-center mt-4 space-x-4'>
<div className='btn btn-outline' onClick={onClickFilter}>Filter</div>
<div className='btn btn-outline' onClick={onClickReset}>Reset</div>
<div className='btn btn-info btn-outline' onClick={onClickExport}>Export</div>
<a href={`${route('docs.export', params)}`} className='btn btn-info btn-outline'>Export</a>
</div>
</div>
</div>

@ -23,7 +23,7 @@ Route::get('/', function () {
});
Route::middleware(['auth'])->group(function () {
Route::get('/dashboard',[GeneralController::class, 'index'])->name('dashboard');
Route::get('/dashboard', [GeneralController::class, 'index'])->name('dashboard');
Route::get('/users', [UserController::class, 'index'])->name('users.index');
Route::post('/users', [UserController::class, 'store'])->name('users.store');
@ -31,6 +31,7 @@ Route::middleware(['auth'])->group(function () {
Route::delete('/users/{user}', [UserController::class, 'destroy'])->name('users.destroy');
Route::get('/docs', [DocumentController::class, 'index'])->name('docs.index');
Route::get('/docs/export', [DocumentController::class, 'export'])->name('docs.export');
Route::get('/docs/create', [DocumentController::class, 'create'])->name('docs.create');
Route::post('/docs', [DocumentController::class, 'store'])->name('docs.store');
Route::delete('/docs/{doc}', [DocumentController::class, 'destroy'])->name('docs.destroy');

Loading…
Cancel
Save