From a6b428e805c16805998418653ab074a4214e6de0 Mon Sep 17 00:00:00 2001 From: nylaaptr Date: Sat, 18 Jul 2026 13:01:51 +0700 Subject: [PATCH] update kode --- .../0001_01_01_000000_create_users_table.php | 49 --------- .../2026_01_01_000000_create_user_table.php | 47 ++++++++ ...172115_add_google_avatar_to_user_table.php | 29 ----- ...0900_add_id_transaksi_to_dokumen_table.php | 23 ---- ...814_add_properti_data_to_chat_messages.php | 32 ------ ...26_07_18_121011_create_perumahan_table.php | 32 ++++++ .../2026_07_18_121800_create_blok_table.php | 38 +++++++ ...026_07_18_121941_create_properti_table.php | 81 ++++++++++++++ ...26_07_18_122236_create_transaksi_table.php | 87 +++++++++++++++ ...26_07_18_122342_create_pemesanan_table.php | 79 ++++++++++++++ ...2026_07_18_122453_create_dokumen_table.php | 100 ++++++++++++++++++ ...6_07_18_123305_create_notifikasi_table.php | 71 +++++++++++++ ...7_18_123408_create_chat_sessions_table.php | 46 ++++++++ ...7_18_123456_create_chat_messages_table.php | 48 +++++++++ ...8_125417_create_gambar_properti_table.php} | 14 ++- ..._18_125521_create_log_aktivitas_table.php} | 23 ++-- ...7_18_125642_create_visitor_logs_table.php} | 11 +- 17 files changed, 646 insertions(+), 164 deletions(-) delete mode 100644 database/migrations/0001_01_01_000000_create_users_table.php create mode 100644 database/migrations/2026_01_01_000000_create_user_table.php delete mode 100644 database/migrations/2026_05_05_172115_add_google_avatar_to_user_table.php delete mode 100644 database/migrations/2026_05_07_170900_add_id_transaksi_to_dokumen_table.php delete mode 100644 database/migrations/2026_05_16_183814_add_properti_data_to_chat_messages.php create mode 100644 database/migrations/2026_07_18_121011_create_perumahan_table.php create mode 100644 database/migrations/2026_07_18_121800_create_blok_table.php create mode 100644 database/migrations/2026_07_18_121941_create_properti_table.php create mode 100644 database/migrations/2026_07_18_122236_create_transaksi_table.php create mode 100644 database/migrations/2026_07_18_122342_create_pemesanan_table.php create mode 100644 database/migrations/2026_07_18_122453_create_dokumen_table.php create mode 100644 database/migrations/2026_07_18_123305_create_notifikasi_table.php create mode 100644 database/migrations/2026_07_18_123408_create_chat_sessions_table.php create mode 100644 database/migrations/2026_07_18_123456_create_chat_messages_table.php rename database/migrations/{2026_05_25_161821_create_gambar_properti_table.php => 2026_07_18_125417_create_gambar_properti_table.php} (81%) rename database/migrations/{2026_05_14_201642_create_log_aktivitas_table.php => 2026_07_18_125521_create_log_aktivitas_table.php} (73%) rename database/migrations/{2026_05_03_144621_create_visitor_logs__table.php => 2026_07_18_125642_create_visitor_logs_table.php} (78%) diff --git a/database/migrations/0001_01_01_000000_create_users_table.php b/database/migrations/0001_01_01_000000_create_users_table.php deleted file mode 100644 index 05fb5d9..0000000 --- a/database/migrations/0001_01_01_000000_create_users_table.php +++ /dev/null @@ -1,49 +0,0 @@ -id(); - $table->string('name'); - $table->string('email')->unique(); - $table->timestamp('email_verified_at')->nullable(); - $table->string('password'); - $table->rememberToken(); - $table->timestamps(); - }); - - Schema::create('password_reset_tokens', function (Blueprint $table) { - $table->string('email')->primary(); - $table->string('token'); - $table->timestamp('created_at')->nullable(); - }); - - Schema::create('sessions', function (Blueprint $table) { - $table->string('id')->primary(); - $table->foreignId('user_id')->nullable()->index(); - $table->string('ip_address', 45)->nullable(); - $table->text('user_agent')->nullable(); - $table->longText('payload'); - $table->integer('last_activity')->index(); - }); - } - - /** - * Reverse the migrations. - */ - public function down(): void - { - Schema::dropIfExists('users'); - Schema::dropIfExists('password_reset_tokens'); - Schema::dropIfExists('sessions'); - } -}; diff --git a/database/migrations/2026_01_01_000000_create_user_table.php b/database/migrations/2026_01_01_000000_create_user_table.php new file mode 100644 index 0000000..5c8dc39 --- /dev/null +++ b/database/migrations/2026_01_01_000000_create_user_table.php @@ -0,0 +1,47 @@ +increments('id_user'); + + $table->string('nama_user'); + $table->string('no_hp', 15); + + $table->string('email_user')->unique(); + + $table->string('password_user', 100); + + $table->enum('role_user', [ + 'admin', + 'customer' + ]); + + $table->string('profile_photo')->nullable(); + + $table->timestamps(); + + $table->string('google_id')->nullable(); + $table->text('google_avatar')->nullable(); + + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('user'); + } +}; \ No newline at end of file diff --git a/database/migrations/2026_05_05_172115_add_google_avatar_to_user_table.php b/database/migrations/2026_05_05_172115_add_google_avatar_to_user_table.php deleted file mode 100644 index 53405cf..0000000 --- a/database/migrations/2026_05_05_172115_add_google_avatar_to_user_table.php +++ /dev/null @@ -1,29 +0,0 @@ -string('google_id')->nullable(); - $table->text('google_avatar')->nullable(); - }); - } - - /** - * Reverse the migrations. - */ - public function down(): void - { - Schema::table('user', function (Blueprint $table) { - // - }); - } -}; diff --git a/database/migrations/2026_05_07_170900_add_id_transaksi_to_dokumen_table.php b/database/migrations/2026_05_07_170900_add_id_transaksi_to_dokumen_table.php deleted file mode 100644 index a506ef1..0000000 --- a/database/migrations/2026_05_07_170900_add_id_transaksi_to_dokumen_table.php +++ /dev/null @@ -1,23 +0,0 @@ -unsignedBigInteger('id_transaksi') - ->after('id_user'); - }); - } - - public function down(): void - { - Schema::table('dokumen', function (Blueprint $table) { - $table->dropColumn('id_transaksi'); - }); - } -}; \ No newline at end of file diff --git a/database/migrations/2026_05_16_183814_add_properti_data_to_chat_messages.php b/database/migrations/2026_05_16_183814_add_properti_data_to_chat_messages.php deleted file mode 100644 index ef97a04..0000000 --- a/database/migrations/2026_05_16_183814_add_properti_data_to_chat_messages.php +++ /dev/null @@ -1,32 +0,0 @@ -json('properti_data') - ->nullable() - ->after('message'); - - }); - } - - /** - * Reverse the migrations. - */ - public function down(): void - { - Schema::table('chat_messages', function (Blueprint $table) { - // - }); - } -}; diff --git a/database/migrations/2026_07_18_121011_create_perumahan_table.php b/database/migrations/2026_07_18_121011_create_perumahan_table.php new file mode 100644 index 0000000..0564444 --- /dev/null +++ b/database/migrations/2026_07_18_121011_create_perumahan_table.php @@ -0,0 +1,32 @@ +increments('id_perumahan'); + + $table->string('nama_perumahan'); + $table->string('lokasi_perumahan'); + + $table->decimal('latitude', 10, 7)->nullable(); + $table->decimal('longitude', 10, 7)->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('perumahan'); + } +}; \ No newline at end of file diff --git a/database/migrations/2026_07_18_121800_create_blok_table.php b/database/migrations/2026_07_18_121800_create_blok_table.php new file mode 100644 index 0000000..f5c6bd5 --- /dev/null +++ b/database/migrations/2026_07_18_121800_create_blok_table.php @@ -0,0 +1,38 @@ +increments('id_blok'); + + $table->unsignedInteger('id_perumahan'); + + $table->string('nama_blok', 50); + + $table->foreign('id_perumahan') + ->references('id_perumahan') + ->on('perumahan') + ->cascadeOnUpdate() + ->cascadeOnDelete(); + + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('blok'); + } +}; \ No newline at end of file diff --git a/database/migrations/2026_07_18_121941_create_properti_table.php b/database/migrations/2026_07_18_121941_create_properti_table.php new file mode 100644 index 0000000..ebc51fd --- /dev/null +++ b/database/migrations/2026_07_18_121941_create_properti_table.php @@ -0,0 +1,81 @@ +increments('id_properti'); + + $table->unsignedInteger('id_perumahan'); + $table->unsignedInteger('id_blok'); + + $table->string('nama_properti'); + + $table->enum('jenis_properti', [ + 'rumah', + 'ruko' + ]); + + $table->enum('kategori_properti', [ + 'subsidi', + 'komersial' + ]); + + $table->enum('tipe_properti', [ + '30/60', + '36/72', + '45/84', + '60/135', + 'Ruko' + ]); + + $table->decimal('harga_properti', 15, 2); + + $table->bigInteger('bookingFee'); + + $table->decimal('luas_bangunan', 6, 2); + + $table->decimal('luas_tanah', 6, 2); + + $table->unsignedInteger('stok_unit'); + + $table->enum('status_unit', [ + 'tersedia', + 'dipesan', + 'terjual' + ]); + + $table->timestamps(); + + $table->foreign('id_perumahan') + ->references('id_perumahan') + ->on('perumahan') + ->cascadeOnUpdate() + ->cascadeOnDelete(); + + $table->foreign('id_blok') + ->references('id_blok') + ->on('blok') + ->cascadeOnUpdate() + ->cascadeOnDelete(); + + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('properti'); + } +}; \ No newline at end of file diff --git a/database/migrations/2026_07_18_122236_create_transaksi_table.php b/database/migrations/2026_07_18_122236_create_transaksi_table.php new file mode 100644 index 0000000..494140f --- /dev/null +++ b/database/migrations/2026_07_18_122236_create_transaksi_table.php @@ -0,0 +1,87 @@ +increments('id_transaksi'); + + $table->unsignedInteger('id_properti'); + $table->unsignedInteger('id_user'); + + $table->date('tanggal_transaksi'); + + $table->decimal('total_harga', 15, 2); + + $table->enum('jenis_transaksi', [ + 'lunas', + 'kredit', + 'KPR' + ]); + + $table->enum('metode_pembayaran', [ + 'transfer_bank', + 'virtual_account', + 'qris_ewallet' + ]); + + $table->enum('bank_pengirim', [ + 'bca', + 'mandiri', + 'bni', + 'bri', + 'gopay', + 'ovo', + 'dana', + 'bca_va', + 'mandiri_va', + 'bni_va' + ])->nullable(); + + $table->date('tanggal_transfer')->nullable(); + + $table->enum('status_transaksi', [ + 'menunggu_pembayaran', + 'menunggu_verifikasi', + 'berhasil', + 'ditolak', + 'perlu_upload_ulang', + 'pending' + ]); + + $table->string('bukti_transaksi')->nullable(); + + $table->timestamps(); + + $table->foreign('id_properti') + ->references('id_properti') + ->on('properti') + ->cascadeOnUpdate() + ->cascadeOnDelete(); + + $table->foreign('id_user') + ->references('id_user') + ->on('user') + ->cascadeOnUpdate() + ->cascadeOnDelete(); + + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('transaksi'); + } +}; \ No newline at end of file diff --git a/database/migrations/2026_07_18_122342_create_pemesanan_table.php b/database/migrations/2026_07_18_122342_create_pemesanan_table.php new file mode 100644 index 0000000..aa3098a --- /dev/null +++ b/database/migrations/2026_07_18_122342_create_pemesanan_table.php @@ -0,0 +1,79 @@ +increments('id_pemesanan'); + + $table->unsignedInteger('id_user'); + $table->unsignedInteger('id_properti'); + $table->unsignedInteger('id_transaksi')->nullable(); + + $table->string('kode_pemesanan',20)->unique(); + + $table->enum('metode_pembayaran',[ + 'kredit', + 'Lunas' + ]); + + $table->string('tahap_saat_ini'); + + $table->enum('status',[ + 'Proses', + 'Selesai', + 'Ditolak' + ])->default('Proses'); + + $table->decimal('total_harga',15,2); + + $table->dateTime('tanggal_pemesanan')->useCurrent(); + + $table->string('estimasi_proses')->nullable(); + + $table->text('catatan_admin')->nullable(); + + $table->timestamp('created_at')->useCurrent(); + + $table->timestamp('updated_at') + ->useCurrent() + ->useCurrentOnUpdate(); + + $table->foreign('id_user') + ->references('id_user') + ->on('user') + ->cascadeOnUpdate() + ->cascadeOnDelete(); + + $table->foreign('id_properti') + ->references('id_properti') + ->on('properti') + ->cascadeOnUpdate() + ->cascadeOnDelete(); + + $table->foreign('id_transaksi') + ->references('id_transaksi') + ->on('transaksi') + ->cascadeOnUpdate() + ->cascadeOnDelete(); + + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('pemesanan'); + } +}; \ No newline at end of file diff --git a/database/migrations/2026_07_18_122453_create_dokumen_table.php b/database/migrations/2026_07_18_122453_create_dokumen_table.php new file mode 100644 index 0000000..ff9c21b --- /dev/null +++ b/database/migrations/2026_07_18_122453_create_dokumen_table.php @@ -0,0 +1,100 @@ +increments('id_dokumen'); + + $table->unsignedInteger('id_user'); + + $table->unsignedInteger('id_pemesanan')->nullable(); + + $table->unsignedInteger('id_transaksi')->nullable(); + + $table->enum('jenis_dokumen',[ + 'ktp', + 'kk', + 'surat_nikah', + 'npwp', + 'slip_gaji', + 'surat_keterangan_kerja', + 'rekening_koran', + 'spt_pajak', + 'siup', + 'surat_keterangan_usaha', + 'pembukuan_usaha', + 'selfie', + 'foto_lokasi_usaha', + 'foto_tempat_kerja', + 'foto_3x4', + 'surat_kerja', + 'bukti_booking', + 'dokumen_admin', + 'surat_penghasilan_usaha', + 'bukti_pembayaran' + ]); + + $table->string('nama_file'); + + $table->string('path_file'); + + $table->string('tipe_file',50); + + $table->bigInteger('ukuran_file'); + + $table->enum('status_verifikasi',[ + 'pending', + 'diterima', + 'revisi', + 'ditolak' + ]); + + $table->text('catatan_verifikasi')->nullable(); + + $table->timestamp('uploaded_at')->useCurrent(); + + $table->timestamp('verified_at')->nullable(); + + $table->enum('sumber_dokumen',[ + 'pelanggan', + 'admin' + ])->default('pelanggan'); + + $table->foreign('id_user') + ->references('id_user') + ->on('user') + ->cascadeOnUpdate() + ->cascadeOnDelete(); + + $table->foreign('id_pemesanan') + ->references('id_pemesanan') + ->on('pemesanan') + ->cascadeOnDelete(); + + $table->foreign('id_transaksi') + ->references('id_transaksi') + ->on('transaksi') + ->cascadeOnUpdate() + ->cascadeOnDelete(); + + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('dokumen'); + } +}; \ No newline at end of file diff --git a/database/migrations/2026_07_18_123305_create_notifikasi_table.php b/database/migrations/2026_07_18_123305_create_notifikasi_table.php new file mode 100644 index 0000000..0eb86a2 --- /dev/null +++ b/database/migrations/2026_07_18_123305_create_notifikasi_table.php @@ -0,0 +1,71 @@ +increments('id_notifikasi'); + + $table->unsignedInteger('id_user'); + + $table->string('judul')->nullable(); + + $table->text('pesan')->nullable(); + + $table->enum('tipe', [ + 'tagihan', + 'pembayaran', + 'dokumen', + 'info', + 'transaksi', + 'verifikasi', + 'monitoring', + 'pelunasan' + ])->nullable(); + + $table->boolean('status_baca')->default(false); + + $table->enum('status_kirim', [ + 'pending', + 'terkirim', + 'gagal' + ])->nullable(); + + $table->enum('channel', [ + 'in_app', + 'email', + 'whatsapp' + ])->nullable(); + + $table->integer('referensi_id')->nullable(); + + $table->string('referensi_tipe',50)->nullable(); + + $table->timestamp('created_at')->useCurrent(); + + $table->foreign('id_user') + ->references('id_user') + ->on('user') + ->cascadeOnUpdate() + ->cascadeOnDelete(); + + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('notifikasi'); + } +}; \ No newline at end of file diff --git a/database/migrations/2026_07_18_123408_create_chat_sessions_table.php b/database/migrations/2026_07_18_123408_create_chat_sessions_table.php new file mode 100644 index 0000000..1003fc3 --- /dev/null +++ b/database/migrations/2026_07_18_123408_create_chat_sessions_table.php @@ -0,0 +1,46 @@ +increments('id_sessions'); + + $table->unsignedInteger('id_user')->nullable(); + + $table->enum('status_chat', [ + 'aktif', + 'selesai', + 'pending' + ]); + + $table->timestamp('started_at')->nullable(); + + $table->timestamp('ended_at')->useCurrent(); + + $table->foreign('id_user') + ->references('id_user') + ->on('user') + ->cascadeOnUpdate() + ->cascadeOnDelete(); + + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('chat_sessions'); + } +}; \ No newline at end of file diff --git a/database/migrations/2026_07_18_123456_create_chat_messages_table.php b/database/migrations/2026_07_18_123456_create_chat_messages_table.php new file mode 100644 index 0000000..709a227 --- /dev/null +++ b/database/migrations/2026_07_18_123456_create_chat_messages_table.php @@ -0,0 +1,48 @@ +increments('id_messages'); + + $table->unsignedInteger('id_sessions'); + + $table->enum('sender', [ + 'user', + 'bot', + 'admin' + ]); + + $table->text('message'); + + $table->json('properti_data')->nullable(); + + $table->dateTime('created_at')->useCurrent(); + + $table->foreign('id_sessions') + ->references('id_sessions') + ->on('chat_sessions') + ->cascadeOnUpdate() + ->cascadeOnDelete(); + + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('chat_messages'); + } +}; \ No newline at end of file diff --git a/database/migrations/2026_05_25_161821_create_gambar_properti_table.php b/database/migrations/2026_07_18_125417_create_gambar_properti_table.php similarity index 81% rename from database/migrations/2026_05_25_161821_create_gambar_properti_table.php rename to database/migrations/2026_07_18_125417_create_gambar_properti_table.php index 0cbea8e..b666901 100644 --- a/database/migrations/2026_05_25_161821_create_gambar_properti_table.php +++ b/database/migrations/2026_07_18_125417_create_gambar_properti_table.php @@ -6,16 +6,17 @@ return new class extends Migration { - /** - * Run the migrations. - */ public function up(): void { Schema::create('gambar_properti', function (Blueprint $table) { $table->id('id_gambar'); - $table->unsignedBigInteger('id_properti'); + + $table->unsignedInteger('id_properti'); + $table->string('path_gambar'); + $table->timestamps(); + $table->foreign('id_properti') ->references('id_properti') ->on('properti') @@ -23,11 +24,8 @@ public function up(): void }); } - /** - * Reverse the migrations. - */ public function down(): void { Schema::dropIfExists('gambar_properti'); } -}; +}; \ No newline at end of file diff --git a/database/migrations/2026_05_14_201642_create_log_aktivitas_table.php b/database/migrations/2026_07_18_125521_create_log_aktivitas_table.php similarity index 73% rename from database/migrations/2026_05_14_201642_create_log_aktivitas_table.php rename to database/migrations/2026_07_18_125521_create_log_aktivitas_table.php index 10875af..1a2de5e 100644 --- a/database/migrations/2026_05_14_201642_create_log_aktivitas_table.php +++ b/database/migrations/2026_07_18_125521_create_log_aktivitas_table.php @@ -6,36 +6,31 @@ return new class extends Migration { - /** - * Run the migrations. - */ public function up(): void { Schema::create('log_aktivitas', function (Blueprint $table) { + $table->id(); - // HARUS SAMA: INT (bukan bigInteger) - $table->integer('id_user')->nullable(); - - $table->foreign('id_user') - ->references('id_user') - ->on('user') - ->onDelete('set null'); + $table->unsignedInteger('id_user')->nullable(); $table->string('aktivitas'); + $table->string('icon')->nullable(); + $table->string('tipe')->nullable(); + $table->unsignedBigInteger('ref_id')->nullable(); $table->timestamps(); - $table->index('id_user'); + $table->foreign('id_user') + ->references('id_user') + ->on('user') + ->nullOnDelete(); }); } - /** - * Reverse the migrations. - */ public function down(): void { Schema::dropIfExists('log_aktivitas'); diff --git a/database/migrations/2026_05_03_144621_create_visitor_logs__table.php b/database/migrations/2026_07_18_125642_create_visitor_logs_table.php similarity index 78% rename from database/migrations/2026_05_03_144621_create_visitor_logs__table.php rename to database/migrations/2026_07_18_125642_create_visitor_logs_table.php index fb62b20..9a1527b 100644 --- a/database/migrations/2026_05_03_144621_create_visitor_logs__table.php +++ b/database/migrations/2026_07_18_125642_create_visitor_logs_table.php @@ -6,9 +6,6 @@ return new class extends Migration { - /** - * Run the migrations. - */ public function up(): void { Schema::create('visitor_logs', function (Blueprint $table) { @@ -20,15 +17,11 @@ public function up(): void $table->string('page')->nullable(); $table->timestamps(); - }); } - /** - * Reverse the migrations. - */ public function down(): void { - Schema::dropIfExists('visitor_logs_'); + Schema::dropIfExists('visitor_logs'); } -}; +}; \ No newline at end of file