Merge branch 'main' of https://git.probindo.com/Probindo/database-pertani-web
This commit is contained in:
@@ -46,6 +46,7 @@ class AuthController extends Controller
|
||||
'email' => ['required', 'email', 'max:255', 'unique:users'],
|
||||
'password' => ['required', 'string', 'min:8', 'confirmed'],
|
||||
'role' => ['string'],
|
||||
'uid' => ['required','string', 'unique:users'],
|
||||
]);
|
||||
|
||||
$user = User::create([
|
||||
@@ -53,6 +54,7 @@ class AuthController extends Controller
|
||||
'email' => $credentials['email'],
|
||||
'password' => Hash::make($credentials['password']),
|
||||
'role' => $credentials['role'],
|
||||
'uid' => $credentials['uid'],
|
||||
]);
|
||||
|
||||
$profile = Profile::create([
|
||||
|
||||
@@ -35,7 +35,9 @@ class DistributionController extends Controller
|
||||
|
||||
public function store(Request $request): JsonResponse
|
||||
{
|
||||
Gate::authorize('petani');
|
||||
if (!Gate::any(['super_admin', 'petani','fasilitator', 'offtaker'])) {
|
||||
abort(403);
|
||||
}
|
||||
|
||||
$validated = $request->validate([
|
||||
'offtaker_id' => 'required|numeric',
|
||||
@@ -58,8 +60,9 @@ class DistributionController extends Controller
|
||||
|
||||
public function update(Request $request, string $id): JsonResponse
|
||||
{
|
||||
// Biasanya Admin atau Offtaker yang melakukan update grade/price
|
||||
Gate::authorize('super_admin');
|
||||
if (!Gate::any(['super_admin', 'petani','fasilitator', 'offtaker'])) {
|
||||
abort(403);
|
||||
}
|
||||
|
||||
$distribution = Distribution::findOrFail($id);
|
||||
|
||||
@@ -82,8 +85,10 @@ class DistributionController extends Controller
|
||||
}
|
||||
|
||||
public function batchUpsert(Request $request): JsonResponse
|
||||
{
|
||||
Gate::authorize('any', ['super_admin', 'petani']);
|
||||
{
|
||||
if (!Gate::any(['super_admin', 'petani','fasilitator', 'offtaker'])) {
|
||||
abort(403);
|
||||
}
|
||||
|
||||
$validated = $request->validate([
|
||||
'distributions' => ['required', 'array'],
|
||||
|
||||
@@ -77,7 +77,7 @@ class LahanController extends Controller
|
||||
*/
|
||||
public function store(Request $request): JsonResponse
|
||||
{
|
||||
if (!Gate::any(['petani', 'fasilitator'])) {
|
||||
if (!Gate::any(['petani', 'fasilitator','super_admin'])) {
|
||||
abort(403);
|
||||
}
|
||||
|
||||
@@ -151,7 +151,7 @@ class LahanController extends Controller
|
||||
*/
|
||||
public function update(Request $request, string $id): JsonResponse
|
||||
{
|
||||
if (!Gate::any(['petani', 'fasilitator'])) {
|
||||
if (!Gate::any(['petani', 'fasilitator','super_admin'])) {
|
||||
abort(403);
|
||||
}
|
||||
|
||||
@@ -181,7 +181,7 @@ class LahanController extends Controller
|
||||
*/
|
||||
public function destroy(string $id): JsonResponse
|
||||
{
|
||||
if (!Gate::any(['petani', 'fasilitator'])) {
|
||||
if (!Gate::any(['petani', 'fasilitator','super_admin'])) {
|
||||
abort(403);
|
||||
}
|
||||
|
||||
@@ -199,7 +199,7 @@ class LahanController extends Controller
|
||||
|
||||
public function batchUpsert(Request $request): JsonResponse
|
||||
{
|
||||
if (!Gate::any(['petani', 'fasilitator'])) {
|
||||
if (!Gate::any(['petani', 'fasilitator','super_admin'])) {
|
||||
abort(403);
|
||||
}
|
||||
|
||||
|
||||
@@ -29,7 +29,7 @@ class PanenController extends Controller
|
||||
|
||||
public function store(Request $request): JsonResponse
|
||||
{
|
||||
if (!Gate::any(['petani', 'fasilitator'])) {
|
||||
if (!Gate::any(['petani', 'fasilitator','super_admin'])) {
|
||||
abort(403);
|
||||
}
|
||||
|
||||
@@ -67,7 +67,7 @@ class PanenController extends Controller
|
||||
|
||||
public function update(Request $request, string $id): JsonResponse
|
||||
{
|
||||
if (!Gate::any(['petani', 'fasilitator'])) {
|
||||
if (!Gate::any(['petani', 'fasilitator','super_admin'])) {
|
||||
abort(403);
|
||||
}
|
||||
$panen = Panen::findOrFail($id);
|
||||
@@ -95,7 +95,7 @@ class PanenController extends Controller
|
||||
*/
|
||||
public function batchUpsert(Request $request): JsonResponse
|
||||
{
|
||||
if (Gate::authorize(['petani', 'fasilitator'])) {
|
||||
if (Gate::authorize(['petani', 'fasilitator','super_admin'])) {
|
||||
abort(403);
|
||||
}
|
||||
$profileId = Auth::user()->profile->id;
|
||||
|
||||
@@ -95,7 +95,9 @@ class ProfileController extends Controller
|
||||
*/
|
||||
public function store(Request $request)
|
||||
{
|
||||
Gate::authorize('fasilitator');
|
||||
if(!Gate::any(['fasilitator','super_admin'])){
|
||||
abort(403);
|
||||
}
|
||||
|
||||
$validated = $request->validate([
|
||||
'nama' => ['required', 'string', 'max:255'],
|
||||
@@ -237,7 +239,7 @@ class ProfileController extends Controller
|
||||
|
||||
public function downloadFile(string $id, string $type): JsonResponse | BinaryFileResponse
|
||||
{
|
||||
if (!Gate::any(['petani', 'fasilitator'])) {
|
||||
if (!Gate::any(['petani', 'fasilitator', 'super_admin'])) {
|
||||
abort(403);
|
||||
}
|
||||
|
||||
|
||||
@@ -91,7 +91,7 @@ class TanamanController extends Controller
|
||||
*/
|
||||
public function store(Request $request): JsonResponse
|
||||
{
|
||||
if (!Gate::any(['petani', 'fasilitator'])) {
|
||||
if (!Gate::any(['petani', 'fasilitator','super_admin'])) {
|
||||
abort(403);
|
||||
}
|
||||
$profile = Auth::user()->profile;
|
||||
@@ -151,7 +151,7 @@ class TanamanController extends Controller
|
||||
*/
|
||||
public function update(Request $request, string $id): JsonResponse
|
||||
{
|
||||
if (!Gate::any(['petani', 'fasilitator'])) {
|
||||
if (!Gate::any(['petani', 'fasilitator','super_admin'])) {
|
||||
abort(403);
|
||||
}
|
||||
$tanaman = Tanaman::findOrFail($id);
|
||||
@@ -186,7 +186,7 @@ class TanamanController extends Controller
|
||||
*/
|
||||
public function destroy(string $id): JsonResponse
|
||||
{
|
||||
if (!Gate::any(['petani', 'fasilitator'])) {
|
||||
if (!Gate::any(['petani', 'fasilitator','super_admin'])) {
|
||||
abort(403);
|
||||
}
|
||||
$tanaman = Tanaman::findOrFail($id);
|
||||
|
||||
@@ -61,6 +61,8 @@ class KolomBasisDataController extends Controller
|
||||
'relasi_kolom_id' => ['nullable', 'string'],
|
||||
'relasi_kolom_label' => ['nullable', 'string'],
|
||||
'enum_opsi' => ['nullable', 'json'],
|
||||
'is_active' => ['nullable', 'boolean'],
|
||||
'is_browse' => ['nullable', 'boolean'],
|
||||
]);
|
||||
|
||||
if (!empty($validated['enum_opsi'])) {
|
||||
@@ -139,6 +141,8 @@ class KolomBasisDataController extends Controller
|
||||
'relasi_kolom_id' => ['nullable', 'string'],
|
||||
'relasi_kolom_label' => ['nullable', 'string'],
|
||||
'enum_opsi' => ['nullable', 'json'],
|
||||
'is_active' => ['nullable', 'boolean'],
|
||||
'is_browse' => ['nullable', 'boolean'],
|
||||
]);
|
||||
|
||||
$kolom->update([...$validated,
|
||||
|
||||
@@ -44,7 +44,10 @@ class ValueBasisDataController extends Controller
|
||||
if (!$tabel) {
|
||||
abort(404, 'Data tabel tidak ditemukan.');
|
||||
}
|
||||
$kolom = KolomBasisData::where('tabel_id', $tabelId)->get();
|
||||
$kolom = KolomBasisData::where('tabel_id', $tabelId)
|
||||
->where('is_active', true)
|
||||
->where('is_browse', true)
|
||||
->get();
|
||||
if ($kolom->isEmpty()) {
|
||||
abort(404, 'Data kolom tidak ditemukan untuk tabel ini.');
|
||||
}
|
||||
@@ -162,7 +165,8 @@ class ValueBasisDataController extends Controller
|
||||
if (!$tabel) {
|
||||
abort(404, 'Data tabel tidak ditemukan.');
|
||||
}
|
||||
$kolom = KolomBasisData::where('tabel_id', $tabelId)->get();
|
||||
$kolom = KolomBasisData::where('tabel_id', $tabelId)
|
||||
->where('is_active', true)->get();
|
||||
if ($kolom->isEmpty()) {
|
||||
abort(404, 'Data kolom tidak ditemukan untuk tabel ini.');
|
||||
}
|
||||
@@ -210,7 +214,8 @@ class ValueBasisDataController extends Controller
|
||||
if (!$tabel) {
|
||||
abort(404, 'Data tabel tidak ditemukan.');
|
||||
}
|
||||
$kolom = KolomBasisData::where('tabel_id', $tabelId)->get();
|
||||
$kolom = KolomBasisData::where('tabel_id', $tabelId)
|
||||
->where('is_active', true)->get();
|
||||
if ($kolom->isEmpty()) {
|
||||
abort(404, 'Data kolom tidak ditemukan untuk tabel ini.');
|
||||
}
|
||||
@@ -278,7 +283,8 @@ class ValueBasisDataController extends Controller
|
||||
if (!$tabel) {
|
||||
abort(404, 'Data tabel tidak ditemukan.');
|
||||
}
|
||||
$kolom = KolomBasisData::where('tabel_id', $tabelId)->get();
|
||||
$kolom = KolomBasisData::where('tabel_id', $tabelId)
|
||||
->where('is_active', true)->get();
|
||||
if ($kolom->isEmpty()) {
|
||||
abort(404, 'Data kolom tidak ditemukan untuk tabel ini.');
|
||||
}
|
||||
@@ -334,7 +340,8 @@ class ValueBasisDataController extends Controller
|
||||
if (!$tabel) {
|
||||
abort(404, 'Data tabel tidak ditemukan.');
|
||||
}
|
||||
$kolom = KolomBasisData::where('tabel_id', $tabelId)->get();
|
||||
$kolom = KolomBasisData::where('tabel_id', $tabelId)
|
||||
->where('is_active', true)->get();
|
||||
if ($kolom->isEmpty()) {
|
||||
abort(404, 'Data kolom tidak ditemukan untuk tabel ini.');
|
||||
}
|
||||
@@ -396,7 +403,8 @@ class ValueBasisDataController extends Controller
|
||||
if (!$tabel) {
|
||||
abort(404, 'Data tabel tidak ditemukan.');
|
||||
}
|
||||
$kolom = KolomBasisData::where('tabel_id', $tabelId)->get();
|
||||
$kolom = KolomBasisData::where('tabel_id', $tabelId)
|
||||
->where('is_active', true)->get();
|
||||
if ($kolom->isEmpty()) {
|
||||
abort(404, 'Data kolom tidak ditemukan untuk tabel ini.');
|
||||
}
|
||||
|
||||
@@ -0,0 +1,148 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Web\Program;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Http\Request;
|
||||
use App\Models\Program\KelompokBelajarTani;
|
||||
|
||||
class KelompokBelajarTaniController extends Controller
|
||||
{
|
||||
public function index(Request $request)
|
||||
{
|
||||
$title = 'Kelompok Belajar Tani';
|
||||
|
||||
// SUMMARY CARD
|
||||
$summary = ([
|
||||
'total_kelompok' => KelompokBelajarTani::count(),
|
||||
'aktif' => KelompokBelajarTani::where('status', 'aktif')->count(),
|
||||
'nonaktif' => KelompokBelajarTani::where('status', 'nonaktif')->count(),
|
||||
]);
|
||||
|
||||
// QUERY
|
||||
$query = KelompokBelajarTani::query();
|
||||
|
||||
// SEARCH
|
||||
if ($request->filled('search')) {
|
||||
$search = $request->search;
|
||||
|
||||
$query->where(function ($q) use ($search) {
|
||||
$q->where('nama_kelompok', 'ilike', "%{$search}%")
|
||||
->orWhere('deskripsi', 'ilike', "%{$search}%");
|
||||
});
|
||||
}
|
||||
|
||||
// FILTER STATUS
|
||||
if ($request->filled('status')) {
|
||||
$query->where('status', $request->status);
|
||||
}
|
||||
|
||||
// PAGINATION
|
||||
$perPage = $request->input('per_page', 10);
|
||||
|
||||
$kelompok = $query->latest()->paginate($perPage);
|
||||
|
||||
return view('program.kelompokbelajar.index', compact(
|
||||
'title',
|
||||
'summary',
|
||||
'kelompok'
|
||||
));
|
||||
|
||||
}
|
||||
|
||||
public function create()
|
||||
{
|
||||
return view('program.kelompokbelajar.add');
|
||||
}
|
||||
|
||||
public function store(Request $request)
|
||||
{
|
||||
$validated = $request->validate([
|
||||
'nama_kelompok' => 'required|string|max:255',
|
||||
'status' => 'required|string',
|
||||
'deskripsi' => 'nullable|string',
|
||||
], [
|
||||
'nama_kelompok.required' => 'Nama kelompok wajib diisi.',
|
||||
'nama_kelompok.string' => 'Nama kelompok harus berupa teks.',
|
||||
'nama_kelompok.max' => 'Nama kelompok maksimal 255 karakter.',
|
||||
|
||||
'status.required' => 'Status wajib diisi.',
|
||||
'status.string' => 'Status harus berupa teks.',
|
||||
|
||||
'deskripsi.string' => 'Deskripsi harus berupa teks.',
|
||||
]);
|
||||
|
||||
KelompokBelajarTani::create([
|
||||
'nama_kelompok' => $request->nama_kelompok,
|
||||
'status' => $request->status,
|
||||
'deskripsi' => $request->deskripsi,
|
||||
|
||||
'created_by' => auth()->user()->id,
|
||||
'updated_by' => auth()->user()->id,
|
||||
]);
|
||||
|
||||
return response()->json([
|
||||
'status' => 'success',
|
||||
'message' => 'Kelompok Belajar Tani berhasil disimpan.'
|
||||
]);
|
||||
}
|
||||
|
||||
public function edit($id)
|
||||
{
|
||||
$kelompok = KelompokBelajarTani::findOrFail($id);
|
||||
|
||||
return view('program.kelompokbelajar.edit', compact(
|
||||
'kelompok'
|
||||
));
|
||||
}
|
||||
|
||||
public function update(Request $request, $id)
|
||||
{
|
||||
$validated = $request->validate([
|
||||
'nama_kelompok' => 'required|string|max:255',
|
||||
'status' => 'required|string',
|
||||
'deskripsi' => 'nullable|string',
|
||||
]);
|
||||
|
||||
$kelompok = KelompokBelajarTani::findOrFail($id);
|
||||
|
||||
$kelompok->update([
|
||||
'nama_kelompok' => $request->nama_kelompok,
|
||||
'status' => $request->status,
|
||||
'deskripsi' => $request->deskripsi,
|
||||
|
||||
'updated_by' => auth()->user()->id,
|
||||
]);
|
||||
|
||||
return response()->json([
|
||||
'status' => 'success',
|
||||
'message' => 'Data Kelompok Belajar Tani berhasil diperbarui.'
|
||||
]);
|
||||
}
|
||||
|
||||
public function destroy($id)
|
||||
{
|
||||
$kelompok = KelompokBelajarTani::findOrFail($id);
|
||||
|
||||
$kelompok->update([
|
||||
'deleted_by' => auth()->user()->id
|
||||
]);
|
||||
|
||||
$kelompok->delete();
|
||||
|
||||
return response()->json([
|
||||
'status' => 'success',
|
||||
'message' => 'Data Kelompok Belajar Tani berhasil dihapus.'
|
||||
]);
|
||||
}
|
||||
|
||||
public function show($id)
|
||||
{
|
||||
$kelompok = KelompokBelajarTani::findOrFail($id);
|
||||
|
||||
return response()->json([
|
||||
'status' => 'success',
|
||||
'data' => $kelompok
|
||||
]);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user