Files
mylesen/app/Http/Controllers/PenjajaController.php

356 lines
14 KiB
PHP

<?php
namespace App\Http\Controllers;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Redirect;
use Illuminate\Support\Facades\Gate;
use Illuminate\Support\Facades\Storage;
use Carbon\Carbon;
use Illuminate\View\View;
use App\Models\Syarikat;
use App\Models\USerSyarikat;
use App\Models\LesenPenjaja;
use App\Models\Dokumen;
use App\Models\LesenPenjajaDokumen;
use App\Models\JenisPenjaja;
class PenjajaController extends Controller
{
/**
* Display the user's profile form.
*/
public function list(Request $request){
$user = $request->user();
$permohonans = LesenPenjaja::where('user_id',$user->id)->get();
return view('dashboard', ['permohonans' => $permohonans]);
}
public function create(Request $request): View
{
// $lesen_penjaja = LesenPenjaja::find($request->session()->get('lesen_penjaja_id'));
$lesen_penjaja = new LesenPenjaja();
$jenis_penjajas = JenisPenjaja::where('status_data',1)->orderBy('kategori', 'desc')->orderBy('jenis','asc')->get();
$doc_kad_pengenalan = null;
$doc_gambar = null;
$doc_lokasi = null;
$doc_kebenaran = null;
$doc_kenderaan = null;
$doc_kenderaan_geran = null;
$doc_suntikan_ty2 = null;
$doc_kursus_makanan = null;
return view('penjaja.mohon', [
'user' => $request->user(),
'permohonan' => $lesen_penjaja,
'doc_kad_pengenalan' => $doc_kad_pengenalan,
'doc_gambar' => $doc_gambar,
'doc_lokasi' => $doc_lokasi,
'doc_kebenaran' => $doc_kebenaran,
'doc_kenderaan' => $doc_kenderaan,
'doc_kenderaan_geran' => $doc_kenderaan_geran,
'doc_suntikan_ty2' => $doc_suntikan_ty2,
'doc_kursus_makanan' => $doc_kursus_makanan,
'jenis_penjajas' => $jenis_penjajas
]);
}
/**
* Handle an incoming registration request.
*
* @throws \Illuminate\Validation\ValidationException
*/
public function store(Request $request): RedirectResponse
{
/* $request->validate([
'nossm' => ['required', 'string', 'max:255'],
'jenis_perniagaan' => ['required', 'string', 'max:50'],
'nama_perniagaan' => ['required', 'string', 'max:250'],
'alamat_perniagaan' => ['required', 'string', 'min:10'],
'notelefon_perniagaan' => ['required'],
]);*/
$syarikat = Syarikat::firstOrCreate(['nossm'=>$request->nossm],
[
'name' => ltrim(rtrim($request->nama_perniagaan)),
'jenis_perniagaan' => $request->jenis_perniagaan,
'nossm' => ltrim(rtrim($request->nossm)),
'alamat' => ltrim(rtrim($request->alamat_perniagaan)),
'notelefon' => ltrim(rtrim($request->notelefon_perniagaan)),
'bil_cawangan' => ltrim(rtrim($request->bil_cawangan)),
]);
$user = $request->user();
$user_syarikat = UserSyarikat::create([
'user_id' => $user->id,
'syarikat_id' => $syarikat->id,
'status' => 'aktif'
]);
/* switch($request->jenis_penjaja){
case 'bukan kawasan berpusat':
case 'buah bermusim':
case 'food truck':
case 'foodtruck':
case 'car boot sale':
case 'sementara':
case 'berkenderaan':
$grup_laporan = 'penjaja sementara'; break;
case 'gerai':
case 'arked':
case 'pasar majlis': $grup_laporan = 'penjaja statik'; break;
case 'berpusat': $grup_laporan = 'penjaja berpusat'; break;
default: $grup_laporan = 'penjaja sementara'; break;
}*/
$grup_laporan = JenisPenjaja::find($request->jenis_penjaja);
if($request->mohon_id != ''){
$lesen_penjaja = LesenPenjaja::find($request->mohon_id);
$lesen_penjaja->user_id = $user->id;
$lesen_penjaja->syarikat_id = $syarikat->id;
$lesen_penjaja->jenis_penjaja_id = $request->jenis_penjaja;
$lesen_penjaja->jenis_lain = '';
$lesen_penjaja->status_tanah = $request->status_tanah;
$lesen_penjaja->status_lain = '';
$lesen_penjaja->kawasan_id = $request->kawasan;
$lesen_penjaja->taman_id = $request->taman;
$lesen_penjaja->jalan_id = $request->jalan;
$lesen_penjaja->penempatan_id = $request->penempatan;
$lesen_penjaja->makanan = $request->makanan;
$lesen_penjaja->minuman = $request->minuman;
$lesen_penjaja->lain = $request->lain;
$lesen_penjaja->masa_jualan_mula = $request->masa_jualan_mula;
$lesen_penjaja->masa_jualan_tamat = $request->masa_jualan_tamat;
$lesen_penjaja->jenis_kenderaan = $request->jenis_kenderaan;
$lesen_penjaja->no_pendaftaran = $request->no_pendaftaran;
$lesen_penjaja->longitude = $request->longitude;
$lesen_penjaja->latitude = $request->latitude;
$lesen_penjaja->group_laporan = $grup_laporan->kategori;
$lesen_penjaja->save();
}
else{
$lesen_penjaja = LesenPenjaja::create([
'user_id' => $user->id,
'syarikat_id' => $syarikat->id,
'jenis_penjaja_id' => $request->jenis_penjaja,
'jenis_lain' => '',
'status_tanah' => $request->status_tanah,
'status_lain' => '',
'kawasan_id' => $request->kawasan,
'taman_id' => $request->taman,
'jalan_id' => $request->jalan,
'penempatan_id' => $request->penempatan,
'makanan' => $request->makanan,
'minuman' => $request->minuman,
'lain' => $request->lain,
'masa_jualan_mula' => $request->masa_jualan_mula,
'masa_jualan_tamat' => $request->masa_jualan_tamat,
'jenis_kenderaan' => $request->jenis_kenderaan,
'no_pendaftaran' => $request->no_pendaftaran,
'longitude' => $request->longitude,
'latitude' => $request->latitude,
'group_laporan' => $grup_laporan->kategori
]);
}
$folder = 'dokumens/penjaja/'.$lesen_penjaja->id.'/';
$nama_doc = Dokumen::where('jenis', 'lesen_penjaja')->get();
foreach($nama_doc as $doc){
if ($request->hasFile($doc->nama)) { //ada upload?
$validated = $request->validate([
$doc->nama => 'file|mimes:jpg,png,pdf', // 2MB max
]);
// Store the file
$path = $request->file($doc->nama);
$extension = $path->extension(); // Determine the file's extension based on the file's MIME type...
$name = $doc->nama.".".$extension;
$path->storeAs($folder, $name);
$lesen_penjaja_dokumen = LesenPenjajaDokumen::updateOrCreate(
[
'lesen_penjaja_id' => $lesen_penjaja->id,
'dokumen_id' => $doc->id,
],
[
'lesen_penjaja_id' => $lesen_penjaja->id,
'dokumen_id' => $doc->id,
'path' => $name,
'jenis_dokumen' => $extension,
]);
}
}
// $request->session()->put('lesen_penjaja_id', $lesen_penjaja->id);
return redirect(route('penjaja-mohon-papar', ['id' => $lesen_penjaja->id]))->with('success', 'Permohonan telah disimpan sebagai draf. Klik butang \'Hantar Permohonan\' untuk teruskan.');
}
public function edit_permohonan(Request $request, $id){
$permohonan = LesenPenjaja::find($id);
$jenis_penjajas = JenisPenjaja::where('status_data',1)->orderBy('kategori', 'desc')->orderBy('jenis','asc')->get();
$doc_kad_pengenalan = null;
$doc_gambar = null;
$doc_lokasi = null;
$doc_kebenaran = null;
$doc_kenderaan = null;
$doc_kenderaan_geran = null;
$doc_suntikan_ty2 = null;
$doc_kursus_makanan = null;
if(!$permohonan->dokumens->isEmpty()){
$doc_kad_pengenalan = $permohonan->dokumens->firstWhere('nama', 'doc_kad_pengenalan');
$doc_gambar = $permohonan->dokumens->firstWhere('nama', 'doc_gambar');
$doc_lokasi = $permohonan->dokumens->firstWhere('nama', 'doc_lokasi');
$doc_kebenaran = $permohonan->dokumens->firstWhere('nama', 'doc_kebenaran');
$doc_kenderaan = $permohonan->dokumens->firstWhere('nama', 'doc_kenderaan');
$doc_kenderaan_geran = $permohonan->dokumens->firstWhere('nama', 'doc_kenderaan_geran');
$doc_suntikan_ty2 = $permohonan->dokumens->firstWhere('nama', 'doc_suntikan_ty2');
$doc_kursus_makanan = $permohonan->dokumens->firstWhere('nama', 'doc_kursus_makanan');
}
if(!is_null($permohonan)){
Gate::authorize('edit-sendiri', $permohonan);
return view('penjaja.mohon', [
'user' => $request->user(),
'permohonan' => $permohonan,
'doc_kad_pengenalan' => $doc_kad_pengenalan,
'doc_gambar' => $doc_gambar,
'doc_lokasi' => $doc_lokasi,
'doc_kebenaran' => $doc_kebenaran,
'doc_kenderaan' => $doc_kenderaan,
'doc_kenderaan_geran' => $doc_kenderaan_geran,
'doc_suntikan_ty2' => $doc_suntikan_ty2,
'doc_kursus_makanan' => $doc_kursus_makanan,
'jenis_penjajas' => $jenis_penjajas
]);
}
else{
return redirect(route('dashboard', absolute: false))->with('error', 'Permohonan tidak dijumpai');
}
}
public function hapus_permohonan($id){
$permohonan = LesenPenjaja::find($id);
Gate::authorize('hapus-sendiri', $permohonan);
$permohonan->delete();
return redirect(route('dashboard', absolute: false));
}
public function hantar_permohonan(Request $request){
$permohonan = LesenPenjaja::find($request->session()->get('lesen_penjaja_id'));
if(!is_null($permohonan)){
Gate::authorize('edit-sendiri', $permohonan);
$permohonan->status_progress = 'baru';
$permohonan->tarikhmohon = Carbon::now();
$permohonan->save();
return redirect(route('dashboard', absolute: false))->with('success', 'Permohonan berjaya dihantar.');
}
else{
return redirect(route('dashboard', absolute: false))->with('error', 'Permohonan tidak dijumpai');
}
}
public function papar_permohonan(Request $request, $id){
$permohonan = LesenPenjaja::find($id);
if($permohonan->status_progress == 'draf'){
$action = 'penjaja-mohon-hantar';
}
else{
$action = 'dashboard';
}
$request->session()->put('lesen_penjaja_id', $permohonan->id);
$doc_kad_pengenalan = null;
$doc_gambar = null;
$doc_lokasi = null;
$doc_kebenaran = null;
$doc_kenderaan = null;
$doc_kenderaan_geran = null;
$doc_suntikan_ty2 = null;
$doc_kursus_makanan = null;
if(!$permohonan->dokumens->isEmpty()){
$doc_kad_pengenalan = $permohonan->dokumens->firstWhere('nama', 'doc_kad_pengenalan');
$doc_gambar = $permohonan->dokumens->firstWhere('nama', 'doc_gambar');
$doc_lokasi = $permohonan->dokumens->firstWhere('nama', 'doc_lokasi');
$doc_kebenaran = $permohonan->dokumens->firstWhere('nama', 'doc_kebenaran');
$doc_kenderaan = $permohonan->dokumens->firstWhere('nama', 'doc_kenderaan');
$doc_kenderaan_geran = $permohonan->dokumens->firstWhere('nama', 'doc_kenderaan_geran');
$doc_suntikan_ty2 = $permohonan->dokumens->firstWhere('nama', 'doc_suntikan_ty2');
$doc_kursus_makanan = $permohonan->dokumens->firstWhere('nama', 'doc_kursus_makanan');
}
if(!is_null($permohonan)){
Gate::authorize('edit-sendiri', $permohonan);
return view('penjaja.mohon_papar', [
'user' => $request->user(),
'permohonan' => $permohonan,
'doc_kad_pengenalan' => $doc_kad_pengenalan,
'doc_gambar' => $doc_gambar,
'doc_lokasi' => $doc_lokasi,
'doc_kebenaran' => $doc_kebenaran,
'doc_kenderaan' => $doc_kenderaan,
'doc_kenderaan_geran' => $doc_kenderaan_geran,
'doc_suntikan_ty2' => $doc_suntikan_ty2,
'doc_kursus_makanan' => $doc_kursus_makanan,
'action' => $action
]);
}
else{
return redirect(route('dashboard', absolute: false))->with('error', 'Permohonan tidak dijumpai');
}
}
/* public function showDokumen($id, $filename)
{
$permohonan = LesenPenjaja::find($id);
Gate::authorize('edit-sendiri', $permohonan);
$path = 'dokumens/penjaja/'.$id.'/'.$filename;
if (!Storage::exists($path)) {
abort(404);
}
return response()->file(storage_path('app/' . $path));
}*/
public function stream($id, $filename)
{
$permohonan = LesenPenjaja::find($id);
Gate::authorize('sendiri-or-staff', $permohonan);
$path = 'dokumens/penjaja/'.$id.'/'.$filename;
if (!Storage::exists($path)) abort(404);
return response()->file(storage_path('app/' . $path));
}
}