Skip to content

Commit

Permalink
#333 Sinkronisasi Data Pembangunan OpenSID ke OpenDK.
Browse files Browse the repository at this point in the history
Co-authored-by: Andi Fahruddin Akas <[email protected]>
  • Loading branch information
apidong and andifahruddinakas authored May 17, 2022
1 parent 2cc3424 commit 3adf59b
Show file tree
Hide file tree
Showing 16 changed files with 924 additions and 2 deletions.
99 changes: 99 additions & 0 deletions app/Http/Controllers/Api/PembangunanController.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
<?php

/*
* File ini bagian dari:
*
* OpenDK
*
* Aplikasi dan source code ini dirilis berdasarkan lisensi GPL V3
*
* Hak Cipta 2017 - 2022 Perkumpulan Desa Digital Terbuka (https://opendesa.id)
*
* Dengan ini diberikan izin, secara gratis, kepada siapa pun yang mendapatkan salinan
* dari perangkat lunak ini dan file dokumentasi terkait ("Aplikasi Ini"), untuk diperlakukan
* tanpa batasan, termasuk hak untuk menggunakan, menyalin, mengubah dan/atau mendistribusikan,
* asal tunduk pada syarat berikut:
*
* Pemberitahuan hak cipta di atas dan pemberitahuan izin ini harus disertakan dalam
* setiap salinan atau bagian penting Aplikasi Ini. Barang siapa yang menghapus atau menghilangkan
* pemberitahuan ini melanggar ketentuan lisensi Aplikasi Ini.
*
* PERANGKAT LUNAK INI DISEDIAKAN "SEBAGAIMANA ADANYA", TANPA JAMINAN APA PUN, BAIK TERSURAT MAUPUN
* TERSIRAT. PENULIS ATAU PEMEGANG HAK CIPTA SAMA SEKALI TIDAK BERTANGGUNG JAWAB ATAS KLAIM, KERUSAKAN ATAU
* KEWAJIBAN APAPUN ATAS PENGGUNAAN ATAU LAINNYA TERKAIT APLIKASI INI.
*
* @package OpenDK
* @author Tim Pengembang OpenDesa
* @copyright Hak Cipta 2017 - 2022 Perkumpulan Desa Digital Terbuka (https://opendesa.id)
* @license http://www.gnu.org/licenses/gpl.html GPL V3
* @link https://github.com/OpenSID/opendk
*/

namespace App\Http\Controllers\Api;

use App\Http\Controllers\Controller;
use App\Http\Requests\PembangunanRequest;
use App\Imports\SinkronPembangunan;
use App\Imports\SinkronPembangunanDokumentasi;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Str;
use ZipArchive;

class PembangunanController extends Controller
{
/**
* Create a new AuthController instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('auth:api');
}

/**
* Tambah Data Pembangunan Sesuai OpenSID
*
* @param PendudukRequest $request
* @return \Illuminate\Http\JsonResponse
*/
public function store(PembangunanRequest $request)
{
try {
// Upload file zip temporary.
$file = $request->file('file');
$file->storeAs('temp', $name = $file->getClientOriginalName());

// Temporary path file
$path = storage_path("app/temp/{$name}");
$extract = storage_path('app/public/pembangunan/');

// Ekstrak file
$zip = new ZipArchive();
$zip->open($path);
$zip->extractTo($extract);
$zip->close();

// Proses impor data pembangunan
(new SinkronPembangunan())
->queue($extract . $filecsv = Str::replaceLast('zip', 'csv', $name));

// Proses impor data dokumentasi pembangunan
(new SinkronPembangunanDokumentasi())
->queue($extract . $filecsv = Str::replaceLast('zip', 'csv', 'dokumentasi+'.$name));
} catch (\Exception $e) {
report($e);
return back()->with('error', 'Import data gagal.');
}

// Hapus folder temp ketika sudah selesai
Storage::deleteDirectory('temp');
// Hapus file excell temp ketika sudah selesai
Storage::disk('public')->delete('pembangunan/' . $filecsv);

return response()->json([
"message" => "Proses Sinkronisasi Data Pembangunan OpenSID sedang berjalan",
"status" => "success"
]);
}
}
94 changes: 94 additions & 0 deletions app/Http/Controllers/Data/DataPembangunanController.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
<?php

/*
* File ini bagian dari:
*
* OpenDK
*
* Aplikasi dan source code ini dirilis berdasarkan lisensi GPL V3
*
* Hak Cipta 2017 - 2022 Perkumpulan Desa Digital Terbuka (https://opendesa.id)
*
* Dengan ini diberikan izin, secara gratis, kepada siapa pun yang mendapatkan salinan
* dari perangkat lunak ini dan file dokumentasi terkait ("Aplikasi Ini"), untuk diperlakukan
* tanpa batasan, termasuk hak untuk menggunakan, menyalin, mengubah dan/atau mendistribusikan,
* asal tunduk pada syarat berikut:
*
* Pemberitahuan hak cipta di atas dan pemberitahuan izin ini harus disertakan dalam
* setiap salinan atau bagian penting Aplikasi Ini. Barang siapa yang menghapus atau menghilangkan
* pemberitahuan ini melanggar ketentuan lisensi Aplikasi Ini.
*
* PERANGKAT LUNAK INI DISEDIAKAN "SEBAGAIMANA ADANYA", TANPA JAMINAN APA PUN, BAIK TERSURAT MAUPUN
* TERSIRAT. PENULIS ATAU PEMEGANG HAK CIPTA SAMA SEKALI TIDAK BERTANGGUNG JAWAB ATAS KLAIM, KERUSAKAN ATAU
* KEWAJIBAN APAPUN ATAS PENGGUNAAN ATAU LAINNYA TERKAIT APLIKASI INI.
*
* @package OpenDK
* @author Tim Pengembang OpenDesa
* @copyright Hak Cipta 2017 - 2022 Perkumpulan Desa Digital Terbuka (https://opendesa.id)
* @license http://www.gnu.org/licenses/gpl.html GPL V3
* @link https://github.com/OpenSID/opendk
*/

namespace App\Http\Controllers\Data;

use App\Http\Controllers\Controller;
use App\Models\DataDesa;
use App\Models\Pembangunan;
use App\Models\PembangunanDokumentasi;
use Illuminate\Http\Request;
use Yajra\DataTables\DataTables;

class DataPembangunanController extends Controller
{
public function index()
{
$page_title = 'Pembangunan';
$page_description = 'Data Pembangunan';
$list_desa = DataDesa::get();

return view('data.pembangunan.index', compact('page_title', 'page_description', 'list_desa'));
}

public function getPembangunan(Request $request)
{
if (request()->ajax()) {
$desa = $request->input('desa');

$pembangunan = Pembangunan::when($desa, function ($q) use ($desa) {
return $desa === 'Semua'
? $q : $q->where('kode_desa', $desa);
})
->with('dokumentasi');

return DataTables::of($pembangunan)
->addColumn('aksi', function ($row) {
$data['detail_url'] = route('data.pembangunan.rincian', ['id' => $row->id,'kode_desa' => $row->kode_desa]);
return view('forms.aksi', $data);
})->make();
}
}

public function show($id)
{
# code...
}

public function rincian($id, $kode_desa)
{
$page_title = 'Pembangunan';
$page_description = 'Rincian Pembangunan';
$pembangunan = Pembangunan::where('id', $id)->where('kode_desa', $kode_desa)->first();

return view('data.pembangunan.rincian', compact('page_title', 'page_description', 'pembangunan'));
}

public function getrinciandata($id, $kode_desa)
{
if (request()->ajax()) {
$pembangunanDokumentasi = PembangunanDokumentasi::where('kode_desa', $kode_desa)->where('id_pembangunan', $id)->get();
return DataTables::of($pembangunanDokumentasi)
->addIndexColumn()
->make();
}
}
}
59 changes: 59 additions & 0 deletions app/Http/Requests/PembangunanDokumentasiRequest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
<?php

/*
* File ini bagian dari:
*
* OpenDK
*
* Aplikasi dan source code ini dirilis berdasarkan lisensi GPL V3
*
* Hak Cipta 2017 - 2022 Perkumpulan Desa Digital Terbuka (https://opendesa.id)
*
* Dengan ini diberikan izin, secara gratis, kepada siapa pun yang mendapatkan salinan
* dari perangkat lunak ini dan file dokumentasi terkait ("Aplikasi Ini"), untuk diperlakukan
* tanpa batasan, termasuk hak untuk menggunakan, menyalin, mengubah dan/atau mendistribusikan,
* asal tunduk pada syarat berikut:
*
* Pemberitahuan hak cipta di atas dan pemberitahuan izin ini harus disertakan dalam
* setiap salinan atau bagian penting Aplikasi Ini. Barang siapa yang menghapus atau menghilangkan
* pemberitahuan ini melanggar ketentuan lisensi Aplikasi Ini.
*
* PERANGKAT LUNAK INI DISEDIAKAN "SEBAGAIMANA ADANYA", TANPA JAMINAN APA PUN, BAIK TERSURAT MAUPUN
* TERSIRAT. PENULIS ATAU PEMEGANG HAK CIPTA SAMA SEKALI TIDAK BERTANGGUNG JAWAB ATAS KLAIM, KERUSAKAN ATAU
* KEWAJIBAN APAPUN ATAS PENGGUNAAN ATAU LAINNYA TERKAIT APLIKASI INI.
*
* @package OpenDK
* @author Tim Pengembang OpenDesa
* @copyright Hak Cipta 2017 - 2022 Perkumpulan Desa Digital Terbuka (https://opendesa.id)
* @license http://www.gnu.org/licenses/gpl.html GPL V3
* @link https://github.com/OpenSID/opendk
*/

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;

class PembangunanDokumentasiRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return false;
}

/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
//
];
}
}
61 changes: 61 additions & 0 deletions app/Http/Requests/PembangunanRequest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
<?php

/*
* File ini bagian dari:
*
* OpenDK
*
* Aplikasi dan source code ini dirilis berdasarkan lisensi GPL V3
*
* Hak Cipta 2017 - 2022 Perkumpulan Desa Digital Terbuka (https://opendesa.id)
*
* Dengan ini diberikan izin, secara gratis, kepada siapa pun yang mendapatkan salinan
* dari perangkat lunak ini dan file dokumentasi terkait ("Aplikasi Ini"), untuk diperlakukan
* tanpa batasan, termasuk hak untuk menggunakan, menyalin, mengubah dan/atau mendistribusikan,
* asal tunduk pada syarat berikut:
*
* Pemberitahuan hak cipta di atas dan pemberitahuan izin ini harus disertakan dalam
* setiap salinan atau bagian penting Aplikasi Ini. Barang siapa yang menghapus atau menghilangkan
* pemberitahuan ini melanggar ketentuan lisensi Aplikasi Ini.
*
* PERANGKAT LUNAK INI DISEDIAKAN "SEBAGAIMANA ADANYA", TANPA JAMINAN APA PUN, BAIK TERSURAT MAUPUN
* TERSIRAT. PENULIS ATAU PEMEGANG HAK CIPTA SAMA SEKALI TIDAK BERTANGGUNG JAWAB ATAS KLAIM, KERUSAKAN ATAU
* KEWAJIBAN APAPUN ATAS PENGGUNAAN ATAU LAINNYA TERKAIT APLIKASI INI.
*
* @package OpenDK
* @author Tim Pengembang OpenDesa
* @copyright Hak Cipta 2017 - 2022 Perkumpulan Desa Digital Terbuka (https://opendesa.id)
* @license http://www.gnu.org/licenses/gpl.html GPL V3
* @link https://github.com/OpenSID/opendk
*/

namespace App\Http\Requests;

use App\Rules\CekDesa;
use Illuminate\Foundation\Http\FormRequest;

class PembangunanRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}

/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'file' => 'file|mimes:zip|max:5120',
"desa_id" => ['required', 'string', new CekDesa()],
];
}
}
Loading

0 comments on commit 3adf59b

Please sign in to comment.