| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295 |
- <?php
- namespace App\Http\Controllers\Program;
- use App\Http\Controllers\Controller;
- use Illuminate\Support\Facades\Crypt;
- use Illuminate\Http\Request;
- use App\Model\Privillage\Role;
- use App\Model\Inspeksi\Inspeksi;
- use App\Model\Service\Unar;
- use App\Model\MetadataProgram;
- use App\Exports\MetadataProgramExport;
- use App\Model\ItemProgram;
- use App\Model\TemplateProgram;
- use App\Model\TahunProgramDetail;
- use App\Model\MetadataProgramNotification;
- use Maatwebsite\Excel\Facades\Excel;
- use App\Model\TemplateProgramDetail;
- use App\Model\UPTSModel;
- use App\Model\Region\Provinsi;
- use App\Model\Region\KabupatenKota;
- use Auth;
- use Carbon\Carbon;
- use Session;
- class MetadataProgramController extends Controller
- {
- public function __construct()
- {
- $this->middleware('auth');
- $this->table = new MetadataProgram;
- }
- public function index(Request $request){
- $raw = TahunProgramDetail::find($request->id);
- $getStatus = Role::where('id',Auth::user()->role_id)->value('akses');
- $tahunProgramDetail = TahunProgramDetail::where('id_template_program',$raw->id_template_program)->where('id_tahun_program',$raw->id_tahun_program)->get();
- $template = TemplateProgramDetail::with('itemProgram')->whereIn('id',$tahunProgramDetail->pluck('id_template_program_detail'))->get();
- $masterTemplate = TemplateProgram::find($raw->id_template_program);
- $upt = UPTSModel::distinct('office_id')->get();
-
- $metadata = new MetadataProgram;
- $provinsi = Provinsi::get();
- $kabkot = KabupatenKota::get();
- return view('program.metadata_program.core.index',compact('raw','upt','masterTemplate','template','metadata','tahunProgramDetail','provinsi','kabkot','getStatus'));
- }
- public function list($id, Request $request){
- $getStatus = Role::where('id',Auth::user()->role_id)->value('akses');
- $tahunProgramDetail = TahunProgramDetail::find($id);
- $metadata = new MetadataProgram;
-
- $metadata = $metadata->with('upt')->where('id_tb_tahun_program_detail',$tahunProgramDetail->id)->get();
- if(!empty($request->dari) && !empty($request->sampai)){
- $metadata = $metadata->whereBetween('created_at', array($request->dari, $request->sampai));
- }
- if($getStatus!='administrator'){
- $id_upt = Auth::user()->upt;
- $metadata = $metadata->where('id_upt',$id_upt);
- }else if(!empty($request->upt)){
- $metadata = $metadata->where('id_upt',$request->upt);
- }
-
- if ($request->filled('type') && $request->type = 'WEB') {
- $metadata = datatables()->of($metadata);
- $metadata = $metadata->editColumn('id', function($data) {
- return $data['id'];
- });
-
- $metadata = $metadata->editColumn('targetPeriode', function($data) {
- return $data['targetPeriode'];
- });
- $metadata = $metadata->editColumn('periode', function($data) {
- return $data['periode'];
- });
- $metadata = $metadata->editColumn('upt', function($data) {
- return (!empty($data['upt']) && !empty($data['upt'][0]))?$data['upt'][0]['office_name']:'-';
- });
- $rawColumn = [];
- foreach($tahunProgramDetail->templateProgramDetail->itemProgram->sortBy('order_by') as $key => $row){
- if($row->tipe_kolom == 'file'){
- $rawColumn[] = $row->kolom;
- }
- $metadata = $metadata->editColumn($row->kolom, function($data) use($key,$row) {
- if(!empty($data[$row->kolom])){
- if($row->tipe_kolom=='file'){
- return '<a target="_blank" href="'.asset('public/assets/images/attachment').'/'.$data[$row->kolom].'" class="btn btn-info btn-sm"><i class="fa fa-download"></i></a>';
- }else{
- return $data[$row->kolom];
- }
- }else{
- return '-';
- }
- });
- }
-
-
- $metadata = $metadata->rawColumns($rawColumn)->make(true);
- return $metadata;
- }
- }
- public function create(Request $request){
- $raw = TahunProgramDetail::find($request->id_tahun_program_detail);
- $masterTemplate = TemplateProgram::find($raw->id_template_program);
-
- $tahunProgramDetail = TahunProgramDetail::with('templateProgramDetail.itemProgram')->where('id_template_program',$raw->id_template_program)->where('id_tahun_program',$raw->id_tahun_program)->get();
-
- $tahun_program = TahunProgramDetail::with('tahunProgram')->find($request->id_tahun_program_detail);
- if(empty($tahun_program->tahunProgram) || (!empty($tahun_program->tahunProgram) && $tahun_program->tahunProgram->status!=1)){
- Session::flash('info', 'Gagal Menyimpan Data');
- Session::flash('colors', 'red');
- Session::flash('icons', 'fas fa-times');
- Session::flash('alert', 'Tahun Program belum aktif/sudah berakhir. silakan hubungi administrator Anda!');
- return redirect()->back();
- }
-
-
- foreach($tahunProgramDetail as $parent){
- $template = TemplateProgramDetail::with('itemProgram')->find($parent->id_template_program_detail);
- $attribute = [
- 'id_tb_tahun_program_detail' => $parent->id,
- 'id_upt' => !empty(Auth::user())?Auth::user()->upt:null,
- ];
- if($masterTemplate->is_required == 1 || $template->id==$request->selected_program){
- foreach($template->itemProgram as $row){
- if($row->tipe_kolom=='file'){
- if(!empty($request->file('value_'.$row->kolom.'_'.$template->id))){
- $fileName = time().'.'.$request->file('value_'.$row->kolom.'_'.$template->id)->extension();
- $move = $request->file('value_'.$row->kolom.'_'.$template->id)->move(public_path('assets/images/attachment'), $fileName);
- if($move){
- $attribute[$row->kolom] = $fileName;
- }
- }
- }else{
- // $attribute[$row->kolom] = $request->get('value_'.$row->kolom.'_'.$template->id);
- $inputValue = $request->get('value_'.$row->kolom.'_'.$template->id);
- $attribute[$row->kolom] = $inputValue === "-" ? null : $inputValue;
- }
- }
- $attribute['periode'] = $parent->total_periode_active+1;
-
- $query = MetadataProgram::create($attribute);
- if(!$query){
- Session::flash('info', $template->nama);
- Session::flash('colors', 'red');
- Session::flash('icons', 'fas fa-times');
- Session::flash('alert', 'Gagal Menyimpan Data!');
- return redirect()->back();
- }
- //insert notification if success
- $message = Auth::user()->name.' telah berhasil menambahkan data '.$template->nama;
- $this->createNotification($query,$message);
-
- }
- }
- Session::flash('info', $template->nama);
- Session::flash('colors', 'green');
- Session::flash('icons', 'fas fa-clipboard-check');
- Session::flash('alert', 'Berhasil Menyimpan Data!');
- return redirect()->back();
- }
- function createNotification(MetadataProgram $data, string $message){
- config(['app.locale' => 'id']);
- Carbon::setLocale('id');
- date_default_timezone_set('Asia/Jakarta');
- $tahunProgramDetail = TahunProgramDetail::find($data->id_tb_tahun_program_detail);
- $notif = [
- 'message' => $message,
- 'id_tahun_program' => $tahunProgramDetail->id_tahun_program,
- 'id_template_program' => $tahunProgramDetail->id_template_program,
- 'id_template_program_detail' => $tahunProgramDetail->id_template_program_detail,
- 'id_upt' => $data->id_upt,
- 'readable_admin' => 1,
- 'readable' => 1,
- 'created_by' => Auth::user()->id,
- 'updated_by' => Auth::user()->id,
- ];
- $query = MetadataProgramNotification::create($notif);
- return $query;
- }
- public function update($id, Request $request){
- $tahun_program_detail = TahunProgramDetail::with('tahunProgram')->find($request->value_id_tahun_program_detail);
-
- if(empty($tahun_program_detail->tahunProgram) || (!empty($tahun_program_detail->tahunProgram) && $tahun_program_detail->tahunProgram->status!=1)){
- Session::flash('info', 'Gagal Menyimpan Data');
- Session::flash('colors', 'red');
- Session::flash('icons', 'fas fa-times');
- Session::flash('alert', 'Tahun Program belum aktif/sudah berakhir. silakan hubungi administrator Anda!');
- return redirect()->back();
- }
-
-
- $template = TemplateProgramDetail::with('itemProgram')->find($request->value_id_template_program_detail);
- $attribute = [
- 'id_tb_tahun_program_detail' => $tahun_program_detail->id,
- 'id_upt' => !empty(Auth::user())?Auth::user()->upt:null,
- ];
-
- foreach($template->itemProgram as $row){
- if($row->tipe_kolom=='file'){
- if(!empty($request->file('value_'.$row->kolom.'_'.$template->id))){
- $fileName = time().'.'.$request->file('value_'.$row->kolom.'_'.$template->id)->extension();
- $move = $request->file('value_'.$row->kolom.'_'.$template->id)->move(public_path('assets/images/attachment'), $fileName);
- if($move){
- $attribute[$row->kolom] = $fileName;
- }
- }
- }else{
- $attribute[$row->kolom] = $request->get('value_'.$row->kolom.'_'.$template->id);
- }
- }
- $query = MetadataProgram::find($id)->update($attribute);
- if($query){
- //insert notification
- $query = MetadataProgram::find($id);
- $message = Auth::user()->name.' telah berhasil mengubah data '.$template->nama;
- $this->createNotification($query,$message);
-
- Session::flash('info', $template->nama);
- Session::flash('colors', 'green');
- Session::flash('icons', 'fas fa-clipboard-check');
- Session::flash('alert', 'Berhasil Menyimpan Data!');
- return redirect()->back();
- }else{
- Session::flash('info', $template->nama);
- Session::flash('colors', 'red');
- Session::flash('icons', 'fas fa-times');
- Session::flash('alert', 'Gagal Menyimpan Data!');
- return redirect()->back();
- }
- }
- public function delete($id){
- $query = MetadataProgram::with('tbTahunProgramDetail')->find($id);
-
- if(!empty($query->tbTahunProgramDetail)){
- $template = TemplateProgram::find($query->tbTahunProgramDetail->id_template_program);
- //insert notification
- $message = Auth::user()->name.' telah berhasil menghapus data '.$template->nama;
- $this->createNotification($query,$message);
- }
- if(!empty($query) && $query->delete()){
- Session::flash('info', 'Sukses');
- Session::flash('colors', 'green');
- Session::flash('icons', 'fas fa-clipboard-check');
- Session::flash('alert', 'Berhasil Menghapus Data!');
- return redirect()->back();
- }else{
- Session::flash('info', 'Gagal');
- Session::flash('colors', 'red');
- Session::flash('icons', 'fas fa-times');
- Session::flash('alert', 'Gagal Menghapus Data!');
- return redirect()->back();
- }
- }
- public function export(Request $request){
- $push = [];
- $raw = TahunProgramDetail::find($request->id);
- $tahunProgramDetail = TahunProgramDetail::where('id_template_program',$raw->id_template_program)->where('id_tahun_program',$raw->id_tahun_program)->get();
-
- $filename = !empty($raw->templateProgram)?$raw->templateProgram->nama:'-';
-
- //cleanup invalid character
- $filename = preg_replace('/[^a-zA-Z0-9_ () -]/s', '', $filename);
- return (new MetadataProgramExport($request))->download($filename.'.xlsx');
- }
- }
|