Skip to content

Commit

Permalink
#368 Sediakan impor data Bantuan dari OpenSID.
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 26, 2022
1 parent f0ea366 commit 539298b
Show file tree
Hide file tree
Showing 6 changed files with 268 additions and 71 deletions.
46 changes: 46 additions & 0 deletions app/Http/Controllers/Data/ProgramBantuanController.php
100755 → 100644
Original file line number Diff line number Diff line change
Expand Up @@ -32,10 +32,13 @@
namespace App\Http\Controllers\Data;

use App\Http\Controllers\Controller;
use App\Imports\SinkronBantuan;
use App\Imports\SinkronPesertaBantuan;
use App\Models\DataDesa;
use App\Models\PesertaProgram;
use App\Models\Program;
use Illuminate\Http\Request;
use Illuminate\Support\Str;
use Yajra\DataTables\Facades\DataTables;

class ProgramBantuanController extends Controller
Expand Down Expand Up @@ -176,4 +179,47 @@ public function add_peserta(Request $request)

return redirect()->route('data.program-bantuan.show', $request->input('program_id'))->with('success', 'Data berhasil disimpan!');
}

public function import()
{
$page_title = 'Impor';
$page_description = 'Impor Data Program Bantuan';

return view('data.program_bantuan.import', compact('page_title', 'page_description'));
}

public function do_import(Request $request)
{
$this->validate($request, [
'file' => 'file|mimes:zip|max:51200',
]);

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/bantuan/');

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

$fileExtracted = glob($extract.'*.xlsx');

(new SinkronBantuan())
->queue($extract . $csvName = Str::replaceLast('zip', 'csv', $name));
(new SinkronPesertaBantuan())
->queue($extract . $csvName = Str::replaceLast('zip', 'csv', 'peserta+'.$name));
} catch (\Exception $e) {
report($e);
return back()->with('error', 'Import data gagal. '. $e->getMessage());
}

return redirect()->route('data.program-bantuan.index')->with('success', 'Import data sukses.');
}
}
3 changes: 2 additions & 1 deletion catatan_rilis.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@ Terima kasih pada [untuk diisi] yang terus berkontribusi. Terima kasih pula pada
1. [#302](https://github.com/OpenSID/OpenDK/issues/302) Pengaturan peta kecamatan yang sesuai perda setempat pada data kecamatan.
2. [#333](https://github.com/OpenSID/OpenDK/issues/333) Sinkronisasi Data Pembangunan OpenSID ke OpenDK.
3. [#384](https://github.com/OpenSID/OpenDK/issues/384) Sediakan ganti password saat selesai login jika menggunakan password masih default.
4. [#416](https://github.com/OpenSID/OpenDK/issues/416) Sinkronisasi Data Program Bantuan OpenSID ke OpenDK.
4. [#368](https://github.com/OpenSID/OpenDK/issues/368) Sinkronisasi Data Program Bantuan OpenSID ke OpenDK.
5. [#368](https://github.com/OpenSID/OpenDK/issues/368) Sediakan impor data Bantuan dari OpenSID.


#### Perbaikan BUG
Expand Down
105 changes: 105 additions & 0 deletions resources/views/data/program_bantuan/import.blade.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
@extends('layouts.dashboard_template')

@section('content')
<section class="content-header">
<h1>
{{ $page_title ?? "Page Title" }}
<small>{{ $page_description ?? '' }}</small>
</h1>
<ol class="breadcrumb">
<li><a href="{{ route('dashboard') }}"><i class="fa fa-dashboard"></i> Dashboard</a></li>
<li><a href="{{ route('data.program-bantuan.index') }}">Program Bantuan</a></li>
<li class="active">{{ $page_title }}</li>
</ol>
</section>

<section class="content container-fluid">

@include('partials.flash_message')
<div class="row">
<div class="col-md-12">

{!! Form::open( [ 'route' => 'data.program-bantuan.do_import', 'method' => 'post','id' => 'form-import', 'class' => 'form-horizontal form-label-left', 'files' => true ] ) !!}

<div class="box-body">

@if (count($errors) > 0)
<div class="alert alert-danger">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
<strong>Ups!</strong> Ada beberapa masalah dengan masukan Anda.<br><br>
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
<div class="row">
<div class="col-md-6">
<div class="form-group">
<label class="control-label col-md-4 col-sm-3 col-xs-12" for="data_file">Data Program Bantuan <span class="required">*</span></label>

<div class="col-md-8 col-sm-6 col-xs-12">
<input type="file" id="data_file" name="file" class="form-control" required accept=".zip, application/zip"/>
</div>
</div>
</div>
<div class="col-md-6">
<div class="well">
<p>Instruksi Unggah Data:</p>
<p>Silahkan unduh template unggah data di sini: <a href="{{ asset('storage/template_upload/program_bantuan.zip') }}">Unduh</a></p>
</div>
</div>
</div>
</div>
<div class="box-footer">
<div class="pull-right">
<div class="control-group">
<a href="{{ route('data.penduduk.index') }}">
<button type="button" class="btn btn-default btn-sm"><i class="fa fa-refresh"></i> Batal</button>
</a>
<button type="submit" class="btn btn-primary btn-sm"><i class="fa fa-upload"></i> Impor</button>
</div>
</div>
</div>
{!! Form::close() !!}
</div>
</div>
</div>
</section>
@endsection
@include(('partials.asset_select2'))
@include(('partials.asset_datetimepicker'))
@push('scripts')
<script>
$(function () {
function readURL(input) {
if (input.files && input.files[0]) {
var reader = new FileReader();
reader.onload = function (e) {
$('#showgambar').attr('src', e.target.result);
}
reader.readAsDataURL(input.files[0]);
}
}
$("#foto").change(function () {
readURL(this);
});
//Datetimepicker
$('.datepicker').each(function () {
var $this = $(this);
$this.datetimepicker({
format: 'YYYY-MM-D'
});
});
})
</script>
@endpush
161 changes: 91 additions & 70 deletions resources/views/data/program_bantuan/index.blade.php
100755 → 100644
Original file line number Diff line number Diff line change
Expand Up @@ -2,90 +2,111 @@


@section('content')
<section class="content-header">
<h1>
{{ $page_title ?? "Page Title" }}
<small>{{ $page_description ?? '' }}</small>
</h1>
<ol class="breadcrumb">
<li><a href="{{ route('dashboard') }}"><i class="fa fa-dashboard"></i> Dashboard</a></li>
<li class="active">{{ $page_title }}</li>
</ol>
</section>
<section class="content-header">
<h1>
{{ $page_title ?? 'Page Title' }}
<small>{{ $page_description ?? '' }}</small>
</h1>
<ol class="breadcrumb">
<li><a href="{{ route('dashboard') }}"><i class="fa fa-dashboard"></i> Dashboard</a></li>
<li class="active">{{ $page_title }}</li>
</ol>
</section>

<section class="content container-fluid">
<section class="content container-fluid">

@include('partials.flash_message')
@include('partials.flash_message')

<div class="box box-primary">

<div class="box-body">
<div class="row">
<div class="col-sm-3">
<label >Desa</label>

<div class="box box-primary">
<div class="box-header with-border">
<div class="float-right">
<div class="btn-group">
<a href="{{ route('data.program-bantuan.import') }}">
<button type="button" class="btn btn-warning btn-sm" title="Unggah Data"><i
class="fa fa-upload"></i>&ensp;Impor</button>
</a>
</div>
</div>
</div>
<div class="box-body">
<div class="row">
<div class="col-sm-3">
<label>Desa</label>
<select class="form-control" id="list_desa">
<option value="">Semua Desa</option>
@foreach($list_desa as $desa)
<option value="{{ $desa->desa_id}}">{{$desa->nama}}</option>
@foreach ($list_desa as $desa)
<option value="{{ $desa->desa_id }}">{{ $desa->nama }}</option>
@endforeach
</select>



</div>
</div>
<hr>
<div class="table-responsive">
<table class="table table-bordered table-hover dataTable" id="program-table">
<thead>
<tr>
<th style="max-width: 150px;">Aksi</th>
<th>Nama Program</th>
<th>Desa</th>
<th>Masa Berlaku</th>
<th>Sasaran</th>
</tr>
</thead>
</table>
</div>
</div>
<hr>
<div class="table-responsive">
<table class="table table-bordered table-hover dataTable" id="program-table">
<thead>
<tr>
<th style="max-width: 150px;">Aksi</th>
<th>Nama Program</th>
<th>Desa</th>
<th>Masa Berlaku</th>
<th>Sasaran</th>
</tr>
</thead>
</table>
</div>
</div>
</div>
</section>
</section>
@endsection
@include('partials.asset_select2')
@include('partials.asset_datatables')

@push('scripts')
<script type="text/javascript">
$(document).ready(function () {
$('#list_desa').select2();
var data = $('#program-table').DataTable({
processing: true,
serverSide: true,
ajax: {
url: "{!! route( 'data.program-bantuan.getdata' ) !!}",
data: function (d) {
d.desa = $('#list_desa').val();
}
},
columns: [
{data: 'aksi', name: 'aksi', class: 'text-center', searchable: false, orderable: false},
{data: 'nama', name: 'nama'},
{data: 'desa.nama', name: 'desa'},
{data: 'masa_berlaku', name: 'masa_berlaku'},
{data: 'sasaran', name: 'sasaran'},
],
order: [[1, 'asc']]
});
$('#list_desa').on('select2:select', function (e) {
data.ajax.reload();
});
});
</script>
@include('forms.datatable-vertical')
@include('forms.delete-modal')
<script type="text/javascript">
$(document).ready(function() {
$('#list_desa').select2();
var data = $('#program-table').DataTable({
processing: true,
serverSide: true,
ajax: {
url: "{!! route('data.program-bantuan.getdata') !!}",
data: function(d) {
d.desa = $('#list_desa').val();
}
},
columns: [{
data: 'aksi',
name: 'aksi',
class: 'text-center',
searchable: false,
orderable: false
},
{
data: 'nama',
name: 'nama'
},
{
data: 'desa.nama',
name: 'desa'
},
{
data: 'masa_berlaku',
name: 'masa_berlaku'
},
{
data: 'sasaran',
name: 'sasaran'
},
],
order: [
[1, 'asc']
]
});
$('#list_desa').on('select2:select', function(e) {
data.ajax.reload();
});
});
</script>
@endpush
24 changes: 24 additions & 0 deletions resources/views/data/program_bantuan/show.blade.php
100755 → 100644
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,30 @@
</div>
<hr>
<legend>Daftar Peserta Program</legend>
<div class="table-responsive">
<table class="table table-bordered table-hover dataTable no-footer" id="program-table">
@if ($program->sasaran == 1)
<thead>
<tr>
<th class="col-md-2">Nama</th>
<td>: {{ $program->nama }}</td>
</tr>
<tr>
<th>Sasaran</th>
<td>: {{ $sasaran[$program->sasaran] }}</td>
</tr>
<tr>
<th>Periode Program</th>
<td>: {{ $program->start_date }} - {{ $program->end_date }}</td>
</tr>
<tr>
<th>Keterangan</th>
<td>: {{ $program->description }}</td>
</tr>
</table>
</div>
<hr>
<legend>Daftar Peserta Program</legend>
<div class="table-responsive">
<table class="table table-bordered table-hover dataTable no-footer" id="program-table">
@if ($program->sasaran == 1)
Expand Down
Binary file not shown.

0 comments on commit 539298b

Please sign in to comment.