Compare commits

..

No commits in common. "c7812ea0fb8afd3abb27c8708ff43c921b9f314e" and "fd3565fd642dd9866721150958317a8980d50c90" have entirely different histories.

17 changed files with 11 additions and 197 deletions

View File

@ -1,82 +0,0 @@
<?php
namespace App\Http\Controllers;
use App\Models\Kategori;
use Illuminate\Http\Request;
class KategoriController extends Controller
{
/**
* Display a listing of the resource.
*/
public function index()
{
return response()->json(
Kategori::withCount('produk')->get()
);
}
/**
* Store a newly created resource in storage.
*/
public function store(Request $request)
{
$validated = $request->validate([
'nama' => 'required|string|max:100',
],
[
'nama' => 'Nama kategori harus diisi.'
]);
Kategori::create($validated);
return response()->json([
'message' => 'Kategori berhasil dibuat'
],201);
}
/**
* Display the specified resource.
*/
public function show(int $id)
{
return response()->json(
Kategori::with('items.produk.foto')->find($id)
);
}
/**
* Update the specified resource in storage.
*/
public function update(Request $request, int $id)
{
$validated = $request->validate([
'nama' => 'required|string|max:100',
],
[
'nama' => 'Nama Kategori harus diisi.'
]);
$Kategori = Kategori::findOrFail($id);
$Kategori->update($validated);
return response()->json([
'message' => 'Kategori berhasil diupdate'
],200);
}
/**
* Remove the specified resource from storage.
*/
public function destroy(int $id)
{
Kategori::findOrFail($id)->delete();
return response()->json([
'message' => 'Kategori berhasil dihapus'
], 204);
}
}

View File

@ -17,7 +17,7 @@ class ProdukController extends Controller
public function index() public function index()
{ {
return response()->json( return response()->json(
Produk::withCount('items')->with('foto', 'kategori')->get() Produk::withCount('items')->with('foto')->get()
); );
} }
@ -28,16 +28,16 @@ class ProdukController extends Controller
{ {
$validated = $request->validate([ $validated = $request->validate([
'nama' => 'required|string|max:100', 'nama' => 'required|string|max:100',
'id_kategori' => 'required|exists:users,id', 'kategori' => 'required|in:cincin,gelang,kalung,anting',
'berat' => 'required|numeric', 'berat' => 'required|numeric',
'kadar' => 'required|integer', 'kadar' => 'required|integer',
'harga_per_gram' => 'required|numeric', 'harga_per_gram' => 'required|numeric',
'harga_jual' => 'required|numeric', 'harga_jual' => 'required|numeric',
'id_user' => 'nullable|exists:users,id', 'id_user' => 'nullable|exists:users,id', // untuk mengambil foto sementara
], ],
[ [
'nama.required' => 'Nama produk harus diisi.', 'nama.required' => 'Nama produk harus diisi.',
'id_kategori' => 'Kategori tidak valid.', 'kategori.in' => 'Kategori harus salah satu dari cincin, gelang, kalung, atau anting.',
'berat.required' => 'Berat harus diisi.', 'berat.required' => 'Berat harus diisi.',
'kadar.required' => 'Kadar harus diisi', 'kadar.required' => 'Kadar harus diisi',
'harga_per_gram.required' => 'Harga per gram harus diisi', 'harga_per_gram.required' => 'Harga per gram harus diisi',
@ -49,7 +49,7 @@ class ProdukController extends Controller
// Create produk // Create produk
$produk = Produk::create([ $produk = Produk::create([
'nama' => $validated['nama'], 'nama' => $validated['nama'],
'id_kategori' => $validated['id_kategori'], 'kategori' => $validated['kategori'],
'berat' => $validated['berat'], 'berat' => $validated['berat'],
'kadar' => $validated['kadar'], 'kadar' => $validated['kadar'],
'harga_per_gram' => $validated['harga_per_gram'], 'harga_per_gram' => $validated['harga_per_gram'],
@ -92,7 +92,7 @@ class ProdukController extends Controller
*/ */
public function show(int $id) public function show(int $id)
{ {
$produk = Produk::with('foto', 'items', 'kategori')->findOrFail($id); $produk = Produk::with('foto', 'items')->findOrFail($id);
return response()->json($produk); return response()->json($produk);
} }
@ -103,7 +103,7 @@ class ProdukController extends Controller
{ {
$validated = $request->validate([ $validated = $request->validate([
'nama' => 'required|string|max:100', 'nama' => 'required|string|max:100',
'id_kategori' => 'required|exists:kategoris,id', 'kategori' => 'required|in:cincin,gelang,kalung,anting',
'berat' => 'required|numeric', 'berat' => 'required|numeric',
'kadar' => 'required|integer', 'kadar' => 'required|integer',
'harga_per_gram' => 'required|numeric', 'harga_per_gram' => 'required|numeric',
@ -113,7 +113,7 @@ class ProdukController extends Controller
], ],
[ [
'nama.required' => 'Nama produk harus diisi.', 'nama.required' => 'Nama produk harus diisi.',
'id_kategori' => 'Kategori tidak valid.', 'kategori.in' => 'Kategori harus salah satu dari cincin, gelang, kalung, atau anting.',
'berat.required' => 'Berat harus diisi.', 'berat.required' => 'Berat harus diisi.',
'kadar.required' => 'Kadar harus diisi', 'kadar.required' => 'Kadar harus diisi',
'harga_per_gram.required' => 'Harga per gram harus diisi', 'harga_per_gram.required' => 'Harga per gram harus diisi',

View File

@ -15,8 +15,6 @@ class Foto extends Model
'url', 'url',
]; ];
protected $hidden = ['created_at', 'updated_at', 'deleted_at'];
public function produk() public function produk()
{ {
return $this->belongsTo(Produk::class, 'id_produk'); return $this->belongsTo(Produk::class, 'id_produk');

View File

@ -10,6 +10,4 @@ class FotoSementara extends Model
'id_user', 'id_user',
'url', 'url',
]; ];
protected $hidden = ['created_at', 'updated_at', 'deleted_at'];
} }

View File

@ -16,8 +16,6 @@ class Item extends Model
'is_sold', 'is_sold',
]; ];
protected $hidden = ['created_at', 'updated_at', 'deleted_at'];
public function produk() public function produk()
{ {
return $this->belongsTo(Produk::class, 'id_produk'); return $this->belongsTo(Produk::class, 'id_produk');

View File

@ -16,8 +16,6 @@ class ItemTransaksi extends Model
'harga_deal' 'harga_deal'
]; ];
protected $hidden = ['created_at', 'updated_at', 'deleted_at'];
public function transaksi() public function transaksi()
{ {
return $this->belongsTo(Transaksi::class, 'id_transaksi'); return $this->belongsTo(Transaksi::class, 'id_transaksi');

View File

@ -1,22 +0,0 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
class Kategori extends Model
{
/** @use HasFactory<\Database\Factories\KategoriFactory> */
use HasFactory, SoftDeletes;
protected $fillable = ['nama'];
protected $hidden = ['created_at', 'updated_at', 'deleted_at'];
public function produks()
{
return $this->hasMany(Produk::class, 'id_kategori');
}
}

View File

@ -15,7 +15,6 @@ class Nampan extends Model
]; ];
protected $appends = ['berat_total']; protected $appends = ['berat_total'];
protected $hidden = ['created_at', 'updated_at', 'deleted_at'];
public function items() public function items()
{ {

View File

@ -12,15 +12,13 @@ class Produk extends Model
protected $fillable = [ protected $fillable = [
'nama', 'nama',
'id_kategori', 'kategori',
'berat', 'berat',
'kadar', 'kadar',
'harga_per_gram', 'harga_per_gram',
'harga_jual', 'harga_jual',
]; ];
protected $hidden = ['created_at', 'updated_at', 'deleted_at'];
public function items() public function items()
{ {
return $this->hasMany(Item::class, 'id_produk'); return $this->hasMany(Item::class, 'id_produk');
@ -30,9 +28,4 @@ class Produk extends Model
{ {
return $this->hasMany(Foto::class, 'id_produk'); return $this->hasMany(Foto::class, 'id_produk');
} }
public function kategori()
{
return $this->belongsTo(Kategori::class, 'id_kategori');
}
} }

View File

@ -16,8 +16,6 @@ class Sales extends Model
'alamat' 'alamat'
]; ];
protected $hidden = ['created_at', 'updated_at', 'deleted_at'];
public function transaksi() public function transaksi()
{ {
return $this->hasMany(Transaksi::class, 'id_sales'); return $this->hasMany(Transaksi::class, 'id_sales');

View File

@ -20,8 +20,6 @@ class Transaksi extends Model
'created_at', 'created_at',
]; ];
protected $hidden = ['updated_at', 'deleted_at'];
public function kasir() public function kasir()
{ {
return $this->belongsTo(User::class, 'id_kasir'); return $this->belongsTo(User::class, 'id_kasir');

View File

@ -1,23 +0,0 @@
<?php
namespace Database\Factories;
use Illuminate\Database\Eloquent\Factories\Factory;
/**
* @extends \Illuminate\Database\Eloquent\Factories\Factory<\App\Models\Kategori>
*/
class KategoriFactory extends Factory
{
/**
* Define the model's default state.
*
* @return array<string, mixed>
*/
public function definition(): array
{
return [
'nama' => $this->faker->word(),
];
}
}

View File

@ -2,7 +2,6 @@
namespace Database\Factories; namespace Database\Factories;
use App\Models\Kategori;
use Illuminate\Database\Eloquent\Factories\Factory; use Illuminate\Database\Eloquent\Factories\Factory;
/** /**
@ -19,10 +18,9 @@ class ProdukFactory extends Factory
{ {
$harga_per_gram = $this->faker->numberBetween(80, 120) * 10000; $harga_per_gram = $this->faker->numberBetween(80, 120) * 10000;
$berat = $this->faker->randomFloat(2, 1, 10); $berat = $this->faker->randomFloat(2, 1, 10);
$kategoriList = Kategori::all()->pluck('id')->toArray();
return [ return [
'nama' => $this->faker->words(3, true), 'nama' => $this->faker->words(3, true),
'id_kategori' => $this->faker->randomElement($kategoriList), 'kategori' => $this->faker->randomElement(['cincin', 'gelang', 'kalung', 'anting']),
'berat' => $berat, 'berat' => $berat,
'kadar' => $this->faker->numberBetween(10, 24), 'kadar' => $this->faker->numberBetween(10, 24),
'harga_per_gram' => $harga_per_gram, 'harga_per_gram' => $harga_per_gram,

View File

@ -1,29 +0,0 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('kategoris', function (Blueprint $table) {
$table->id();
$table->string('nama', 100);
$table->timestamps();
$table->softDeletes();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('kategoris');
}
};

View File

@ -14,7 +14,7 @@ return new class extends Migration
Schema::create('produks', function (Blueprint $table) { Schema::create('produks', function (Blueprint $table) {
$table->id(); $table->id();
$table->string('nama', 100); $table->string('nama', 100);
$table->foreignId('id_kategori')->constrained('kategoris'); $table->enum('kategori', ['cincin', 'gelang', 'kalung', 'anting']);
$table->float('berat'); $table->float('berat');
$table->integer('kadar'); $table->integer('kadar');
$table->double('harga_per_gram'); $table->double('harga_per_gram');

View File

@ -3,7 +3,6 @@
namespace Database\Seeders; namespace Database\Seeders;
use App\Models\Item; use App\Models\Item;
use App\Models\Kategori;
use App\Models\Nampan; use App\Models\Nampan;
use App\Models\Produk; use App\Models\Produk;
use App\Models\Sales; use App\Models\Sales;
@ -37,13 +36,6 @@ class DatabaseSeeder extends Seeder
} }
} }
$kategoriList = ['cincin', 'gelang', 'kalung', 'anting'];
foreach ($kategoriList as $kategori) {
Kategori::factory()->create([
'nama' => $kategori
]);
}
Produk::factory(10)->create()->each(function ($produk) { Produk::factory(10)->create()->each(function ($produk) {
// setiap produk punya 1-3 foto // setiap produk punya 1-3 foto
$jumlah_foto = rand(1, 3); $jumlah_foto = rand(1, 3);

Binary file not shown.

Before

Width:  |  Height:  |  Size: 138 KiB