diff --git a/package.json b/package.json index 6480c30c..40418346 100644 --- a/package.json +++ b/package.json @@ -53,6 +53,7 @@ "mqtt": "^5.5.0", "next": "^13.5.4-canary.8", "next-dev": "^1.1.9", + "next-scroll-loader": "^1.0.5", "postcss": "8.4.27", "react": "18.2.0", "react-countdown": "^2.3.5", diff --git a/prisma/migrations/20240610082419_new_notification/migration.sql b/prisma/migrations/20240610082419_new_notification/migration.sql new file mode 100644 index 00000000..24d16daa --- /dev/null +++ b/prisma/migrations/20240610082419_new_notification/migration.sql @@ -0,0 +1,820 @@ +/* + Warnings: + + - You are about to drop the `Katalog` table. If the table is not empty, all the data it contains will be lost. + - A unique constraint covering the columns `[imagesBackgroundId]` on the table `Profile` will be added. If there are existing duplicate values, this will fail. + +*/ +-- DropForeignKey +ALTER TABLE "Katalog" DROP CONSTRAINT "Katalog_masterBidangBisnisId_fkey"; + +-- DropForeignKey +ALTER TABLE "Katalog" DROP CONSTRAINT "Katalog_profileId_fkey"; + +-- AlterTable +ALTER TABLE "Images" ADD COLUMN "label" TEXT NOT NULL DEFAULT 'null'; + +-- AlterTable +ALTER TABLE "Profile" ADD COLUMN "imagesBackgroundId" TEXT; + +-- DropTable +DROP TABLE "Katalog"; + +-- CreateTable +CREATE TABLE "KodeOtp" ( + "id" TEXT NOT NULL, + "isActive" BOOLEAN NOT NULL DEFAULT true, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + "nomor" TEXT NOT NULL, + "otp" INTEGER NOT NULL, + + CONSTRAINT "KodeOtp_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "ImagesBackground" ( + "id" TEXT NOT NULL, + "url" TEXT NOT NULL, + "label" TEXT NOT NULL, + "active" BOOLEAN NOT NULL DEFAULT true, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "ImagesBackground_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "Portofolio" ( + "id" TEXT NOT NULL, + "id_Portofolio" TEXT NOT NULL, + "namaBisnis" TEXT NOT NULL, + "alamatKantor" TEXT NOT NULL, + "tlpn" TEXT NOT NULL, + "deskripsi" TEXT NOT NULL, + "active" BOOLEAN NOT NULL DEFAULT true, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "profileId" TEXT, + "masterBidangBisnisId" TEXT NOT NULL, + "logoId" TEXT, + + CONSTRAINT "Portofolio_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "Portofolio_MediaSosial" ( + "id" TEXT NOT NULL, + "facebook" TEXT, + "twitter" TEXT, + "instagram" TEXT, + "tiktok" TEXT, + "youtube" TEXT, + "active" BOOLEAN NOT NULL DEFAULT true, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + "portofolioId" TEXT, + + CONSTRAINT "Portofolio_MediaSosial_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "MasterStatus" ( + "id" TEXT NOT NULL, + "name" TEXT NOT NULL, + "isActive" BOOLEAN NOT NULL DEFAULT true, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "MasterStatus_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "Donasi" ( + "id" TEXT NOT NULL, + "title" TEXT NOT NULL, + "target" TEXT NOT NULL, + "active" BOOLEAN NOT NULL DEFAULT true, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + "publishTime" TIMESTAMP(3), + "catatan" TEXT, + "progres" TEXT DEFAULT '0', + "terkumpul" TEXT DEFAULT '0', + "namaBank" TEXT, + "rekening" TEXT, + "akumulasiPencairan" INTEGER DEFAULT 0, + "totalPencairan" INTEGER DEFAULT 0, + "authorId" TEXT, + "imagesId" TEXT, + "donasiMaster_KategoriId" TEXT, + "donasiMaster_DurasiId" TEXT, + "donasiMaster_StatusDonasiId" TEXT DEFAULT '2', + + CONSTRAINT "Donasi_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "Donasi_TemporaryCreate" ( + "id" TEXT NOT NULL, + "title" TEXT NOT NULL, + "target" TEXT NOT NULL, + "active" BOOLEAN NOT NULL DEFAULT true, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + "imagesId" TEXT, + "donasiMaster_KategoriId" TEXT, + "donasiMaster_DurasiId" TEXT, + + CONSTRAINT "Donasi_TemporaryCreate_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "DonasiMaster_Kategori" ( + "id" TEXT NOT NULL, + "name" TEXT NOT NULL, + "active" BOOLEAN NOT NULL DEFAULT true, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "DonasiMaster_Kategori_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "DonasiMaster_Durasi" ( + "id" TEXT NOT NULL, + "name" TEXT NOT NULL, + "active" BOOLEAN NOT NULL DEFAULT true, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "DonasiMaster_Durasi_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "Donasi_Cerita" ( + "id" TEXT NOT NULL, + "pembukaan" TEXT NOT NULL, + "cerita" TEXT NOT NULL, + "active" BOOLEAN NOT NULL DEFAULT true, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + "imagesId" TEXT, + "donasiId" TEXT, + + CONSTRAINT "Donasi_Cerita_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "DonasiMaster_StatusDonasi" ( + "id" TEXT NOT NULL, + "name" TEXT NOT NULL, + "active" BOOLEAN NOT NULL DEFAULT true, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "DonasiMaster_StatusDonasi_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "DonasiMaster_Bank" ( + "id" TEXT NOT NULL, + "name" TEXT NOT NULL, + "norek" TEXT NOT NULL, + "active" BOOLEAN NOT NULL DEFAULT true, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "DonasiMaster_Bank_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "DonasiMaster_StatusInvoice" ( + "id" TEXT NOT NULL, + "name" TEXT NOT NULL, + "active" BOOLEAN NOT NULL DEFAULT true, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "DonasiMaster_StatusInvoice_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "Donasi_Invoice" ( + "id" TEXT NOT NULL, + "nominal" TEXT NOT NULL, + "active" BOOLEAN NOT NULL DEFAULT true, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + "donasiId" TEXT, + "donasiMaster_BankId" TEXT, + "donasiMaster_StatusInvoiceId" TEXT DEFAULT '3', + "authorId" TEXT, + "imagesId" TEXT, + + CONSTRAINT "Donasi_Invoice_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "Donasi_Kabar" ( + "id" TEXT NOT NULL, + "title" TEXT NOT NULL, + "deskripsi" TEXT NOT NULL, + "active" BOOLEAN NOT NULL DEFAULT true, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + "donasiId" TEXT, + "imagesId" TEXT, + + CONSTRAINT "Donasi_Kabar_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "Donasi_Notif" ( + "id" TEXT NOT NULL, + "isRead" BOOLEAN NOT NULL DEFAULT false, + "active" BOOLEAN NOT NULL DEFAULT true, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + "userId" TEXT, + "donasi_KabarId" TEXT, + + CONSTRAINT "Donasi_Notif_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "Donasi_PencairanDana" ( + "id" TEXT NOT NULL, + "nominalCair" INTEGER NOT NULL, + "title" TEXT NOT NULL, + "deskripsi" TEXT NOT NULL, + "active" BOOLEAN NOT NULL DEFAULT true, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + "donasiId" TEXT, + "imagesId" TEXT, + + CONSTRAINT "Donasi_PencairanDana_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "Event" ( + "id" TEXT NOT NULL, + "title" TEXT NOT NULL, + "lokasi" TEXT NOT NULL, + "tanggal" TIMESTAMP(3) NOT NULL, + "deskripsi" TEXT NOT NULL, + "active" BOOLEAN NOT NULL DEFAULT true, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + "catatan" TEXT, + "authorId" TEXT, + "eventMaster_StatusId" TEXT DEFAULT '2', + "eventMaster_TipeAcaraId" INTEGER, + + CONSTRAINT "Event_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "EventMaster_TipeAcara" ( + "id" SERIAL NOT NULL, + "name" TEXT NOT NULL, + "active" BOOLEAN NOT NULL DEFAULT true, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "EventMaster_TipeAcara_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "EventMaster_Status" ( + "id" TEXT NOT NULL, + "name" TEXT NOT NULL, + "active" BOOLEAN NOT NULL DEFAULT true, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "EventMaster_Status_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "Event_Peserta" ( + "id" TEXT NOT NULL, + "active" BOOLEAN NOT NULL DEFAULT true, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + "eventId" TEXT, + "userId" TEXT, + + CONSTRAINT "Event_Peserta_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "Voting" ( + "id" TEXT NOT NULL, + "isActive" BOOLEAN NOT NULL DEFAULT true, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + "title" TEXT NOT NULL, + "deskripsi" TEXT NOT NULL, + "awalVote" TIMESTAMP(3) NOT NULL, + "akhirVote" TIMESTAMP(3) NOT NULL, + "catatan" TEXT, + "authorId" TEXT NOT NULL, + "voting_StatusId" TEXT DEFAULT '2', + + CONSTRAINT "Voting_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "Voting_Status" ( + "id" TEXT NOT NULL, + "name" TEXT NOT NULL, + "isActive" BOOLEAN NOT NULL DEFAULT true, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "Voting_Status_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "Voting_DaftarNamaVote" ( + "id" TEXT NOT NULL, + "value" TEXT NOT NULL, + "jumlah" INTEGER NOT NULL DEFAULT 0, + "isActive" BOOLEAN NOT NULL DEFAULT true, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + "votingId" TEXT, + + CONSTRAINT "Voting_DaftarNamaVote_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "Voting_Kontributor" ( + "id" TEXT NOT NULL, + "isActive" BOOLEAN NOT NULL DEFAULT true, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + "votingId" TEXT, + "authorId" TEXT, + "voting_DaftarNamaVoteId" TEXT, + + CONSTRAINT "Voting_Kontributor_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "Job" ( + "id" TEXT NOT NULL, + "isActive" BOOLEAN NOT NULL DEFAULT true, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + "isArsip" BOOLEAN NOT NULL DEFAULT false, + "catatan" TEXT, + "title" TEXT NOT NULL, + "content" TEXT NOT NULL, + "deskripsi" TEXT NOT NULL, + "imagesId" TEXT, + "authorId" TEXT, + "masterStatusId" TEXT DEFAULT '2', + + CONSTRAINT "Job_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "ForumMaster_StatusPosting" ( + "id" SERIAL NOT NULL, + "isActive" BOOLEAN NOT NULL DEFAULT true, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + "status" TEXT NOT NULL, + + CONSTRAINT "ForumMaster_StatusPosting_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "Forum_Posting" ( + "id" TEXT NOT NULL, + "isActive" BOOLEAN NOT NULL DEFAULT true, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + "publishAt" TIMESTAMP(3), + "diskusi" TEXT NOT NULL, + "authorId" TEXT, + "forumMaster_StatusPostingId" INTEGER, + + CONSTRAINT "Forum_Posting_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "Forum_Komentar" ( + "id" TEXT NOT NULL, + "isActive" BOOLEAN NOT NULL DEFAULT true, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + "komentar" TEXT NOT NULL, + "forum_PostingId" TEXT, + "authorId" TEXT, + + CONSTRAINT "Forum_Komentar_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "ForumMaster_KategoriReport" ( + "id" SERIAL NOT NULL, + "isActive" BOOLEAN NOT NULL DEFAULT true, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + "title" TEXT NOT NULL, + "deskripsi" TEXT NOT NULL, + + CONSTRAINT "ForumMaster_KategoriReport_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "Forum_ReportPosting" ( + "id" TEXT NOT NULL, + "isActive" BOOLEAN NOT NULL DEFAULT true, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + "deskripsi" TEXT, + "forumMaster_KategoriReportId" INTEGER, + "forum_PostingId" TEXT, + "userId" TEXT, + + CONSTRAINT "Forum_ReportPosting_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "Forum_ReportKomentar" ( + "id" TEXT NOT NULL, + "isActive" BOOLEAN NOT NULL DEFAULT true, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + "deskripsi" TEXT, + "forumMaster_KategoriReportId" INTEGER, + "forum_KomentarId" TEXT, + "userId" TEXT, + + CONSTRAINT "Forum_ReportKomentar_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "ProjectCollaboration" ( + "id" TEXT NOT NULL, + "isActive" BOOLEAN NOT NULL DEFAULT true, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + "title" TEXT NOT NULL, + "lokasi" TEXT NOT NULL, + "purpose" TEXT NOT NULL, + "benefit" TEXT, + "isReject" BOOLEAN DEFAULT false, + "report" TEXT, + "projectCollaborationMaster_IndustriId" INTEGER, + "userId" TEXT, + "projectCollaborationMaster_StatusId" INTEGER DEFAULT 1, + + CONSTRAINT "ProjectCollaboration_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "ProjectCollaborationMaster_Industri" ( + "id" SERIAL NOT NULL, + "isActive" BOOLEAN NOT NULL DEFAULT true, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + "name" TEXT NOT NULL, + + CONSTRAINT "ProjectCollaborationMaster_Industri_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "ProjectCollaborationMaster_Status" ( + "id" SERIAL NOT NULL, + "name" TEXT NOT NULL, + "isActive" BOOLEAN NOT NULL DEFAULT true, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "ProjectCollaborationMaster_Status_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "ProjectCollaboration_Partisipasi" ( + "id" TEXT NOT NULL, + "isActive" BOOLEAN NOT NULL DEFAULT true, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + "userId" TEXT, + "projectCollaborationId" TEXT, + "deskripsi_diri" TEXT NOT NULL, + + CONSTRAINT "ProjectCollaboration_Partisipasi_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "ProjectCollaboration_RoomChat" ( + "id" TEXT NOT NULL, + "name" TEXT NOT NULL, + "isActive" BOOLEAN NOT NULL DEFAULT true, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + "userId" TEXT, + "projectCollaborationId" TEXT, + + CONSTRAINT "ProjectCollaboration_RoomChat_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "ProjectCollaboration_AnggotaRoomChat" ( + "id" TEXT NOT NULL, + "isActive" BOOLEAN NOT NULL DEFAULT true, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + "userId" TEXT NOT NULL, + "projectCollaboration_RoomChatId" TEXT, + + CONSTRAINT "ProjectCollaboration_AnggotaRoomChat_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "ProjectCollaboration_Message" ( + "id" TEXT NOT NULL, + "isActive" BOOLEAN NOT NULL DEFAULT true, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + "message" TEXT NOT NULL, + "isFile" BOOLEAN DEFAULT false, + "userId" TEXT, + "projectCollaboration_RoomChatId" TEXT, + + CONSTRAINT "ProjectCollaboration_Message_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "ProjectCollaboration_Notifikasi" ( + "id" TEXT NOT NULL, + "isActive" BOOLEAN NOT NULL DEFAULT true, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + "isRead" BOOLEAN NOT NULL DEFAULT false, + "note" TEXT, + "projectCollaborationId" TEXT NOT NULL, + "adminId" TEXT NOT NULL, + "userId" TEXT NOT NULL, + + CONSTRAINT "ProjectCollaboration_Notifikasi_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "NomorAdmin" ( + "id" TEXT NOT NULL, + "isActive" BOOLEAN NOT NULL DEFAULT true, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + "nomor" TEXT NOT NULL, + + CONSTRAINT "NomorAdmin_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "Notifikasi" ( + "id" TEXT NOT NULL, + "isActive" BOOLEAN NOT NULL DEFAULT true, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + "isRead" BOOLEAN NOT NULL DEFAULT false, + "appId" TEXT NOT NULL, + "kategoriApp" TEXT NOT NULL, + "pesan" TEXT NOT NULL, + "title" TEXT, + "status" TEXT, + "userRoleId" TEXT NOT NULL, + "userId" TEXT NOT NULL, + "adminId" TEXT NOT NULL, + + CONSTRAINT "Notifikasi_pkey" PRIMARY KEY ("id") +); + +-- CreateIndex +CREATE UNIQUE INDEX "Portofolio_id_Portofolio_key" ON "Portofolio"("id_Portofolio"); + +-- CreateIndex +CREATE UNIQUE INDEX "Portofolio_MediaSosial_portofolioId_key" ON "Portofolio_MediaSosial"("portofolioId"); + +-- CreateIndex +CREATE UNIQUE INDEX "Donasi_imagesId_key" ON "Donasi"("imagesId"); + +-- CreateIndex +CREATE UNIQUE INDEX "Donasi_TemporaryCreate_imagesId_key" ON "Donasi_TemporaryCreate"("imagesId"); + +-- CreateIndex +CREATE UNIQUE INDEX "Donasi_Cerita_imagesId_key" ON "Donasi_Cerita"("imagesId"); + +-- CreateIndex +CREATE UNIQUE INDEX "Donasi_Cerita_donasiId_key" ON "Donasi_Cerita"("donasiId"); + +-- CreateIndex +CREATE UNIQUE INDEX "Profile_imagesBackgroundId_key" ON "Profile"("imagesBackgroundId"); + +-- AddForeignKey +ALTER TABLE "Profile" ADD CONSTRAINT "Profile_imagesBackgroundId_fkey" FOREIGN KEY ("imagesBackgroundId") REFERENCES "ImagesBackground"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Portofolio" ADD CONSTRAINT "Portofolio_profileId_fkey" FOREIGN KEY ("profileId") REFERENCES "Profile"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Portofolio" ADD CONSTRAINT "Portofolio_masterBidangBisnisId_fkey" FOREIGN KEY ("masterBidangBisnisId") REFERENCES "MasterBidangBisnis"("id") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Portofolio" ADD CONSTRAINT "Portofolio_logoId_fkey" FOREIGN KEY ("logoId") REFERENCES "Images"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Portofolio_MediaSosial" ADD CONSTRAINT "Portofolio_MediaSosial_portofolioId_fkey" FOREIGN KEY ("portofolioId") REFERENCES "Portofolio"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Donasi" ADD CONSTRAINT "Donasi_authorId_fkey" FOREIGN KEY ("authorId") REFERENCES "User"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Donasi" ADD CONSTRAINT "Donasi_imagesId_fkey" FOREIGN KEY ("imagesId") REFERENCES "Images"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Donasi" ADD CONSTRAINT "Donasi_donasiMaster_KategoriId_fkey" FOREIGN KEY ("donasiMaster_KategoriId") REFERENCES "DonasiMaster_Kategori"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Donasi" ADD CONSTRAINT "Donasi_donasiMaster_DurasiId_fkey" FOREIGN KEY ("donasiMaster_DurasiId") REFERENCES "DonasiMaster_Durasi"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Donasi" ADD CONSTRAINT "Donasi_donasiMaster_StatusDonasiId_fkey" FOREIGN KEY ("donasiMaster_StatusDonasiId") REFERENCES "DonasiMaster_StatusDonasi"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Donasi_TemporaryCreate" ADD CONSTRAINT "Donasi_TemporaryCreate_imagesId_fkey" FOREIGN KEY ("imagesId") REFERENCES "Images"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Donasi_TemporaryCreate" ADD CONSTRAINT "Donasi_TemporaryCreate_donasiMaster_KategoriId_fkey" FOREIGN KEY ("donasiMaster_KategoriId") REFERENCES "DonasiMaster_Kategori"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Donasi_TemporaryCreate" ADD CONSTRAINT "Donasi_TemporaryCreate_donasiMaster_DurasiId_fkey" FOREIGN KEY ("donasiMaster_DurasiId") REFERENCES "DonasiMaster_Durasi"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Donasi_Cerita" ADD CONSTRAINT "Donasi_Cerita_imagesId_fkey" FOREIGN KEY ("imagesId") REFERENCES "Images"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Donasi_Cerita" ADD CONSTRAINT "Donasi_Cerita_donasiId_fkey" FOREIGN KEY ("donasiId") REFERENCES "Donasi"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Donasi_Invoice" ADD CONSTRAINT "Donasi_Invoice_donasiId_fkey" FOREIGN KEY ("donasiId") REFERENCES "Donasi"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Donasi_Invoice" ADD CONSTRAINT "Donasi_Invoice_donasiMaster_BankId_fkey" FOREIGN KEY ("donasiMaster_BankId") REFERENCES "DonasiMaster_Bank"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Donasi_Invoice" ADD CONSTRAINT "Donasi_Invoice_donasiMaster_StatusInvoiceId_fkey" FOREIGN KEY ("donasiMaster_StatusInvoiceId") REFERENCES "DonasiMaster_StatusInvoice"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Donasi_Invoice" ADD CONSTRAINT "Donasi_Invoice_authorId_fkey" FOREIGN KEY ("authorId") REFERENCES "User"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Donasi_Invoice" ADD CONSTRAINT "Donasi_Invoice_imagesId_fkey" FOREIGN KEY ("imagesId") REFERENCES "Images"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Donasi_Kabar" ADD CONSTRAINT "Donasi_Kabar_donasiId_fkey" FOREIGN KEY ("donasiId") REFERENCES "Donasi"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Donasi_Kabar" ADD CONSTRAINT "Donasi_Kabar_imagesId_fkey" FOREIGN KEY ("imagesId") REFERENCES "Images"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Donasi_Notif" ADD CONSTRAINT "Donasi_Notif_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Donasi_Notif" ADD CONSTRAINT "Donasi_Notif_donasi_KabarId_fkey" FOREIGN KEY ("donasi_KabarId") REFERENCES "Donasi_Kabar"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Donasi_PencairanDana" ADD CONSTRAINT "Donasi_PencairanDana_donasiId_fkey" FOREIGN KEY ("donasiId") REFERENCES "Donasi"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Donasi_PencairanDana" ADD CONSTRAINT "Donasi_PencairanDana_imagesId_fkey" FOREIGN KEY ("imagesId") REFERENCES "Images"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Event" ADD CONSTRAINT "Event_authorId_fkey" FOREIGN KEY ("authorId") REFERENCES "User"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Event" ADD CONSTRAINT "Event_eventMaster_StatusId_fkey" FOREIGN KEY ("eventMaster_StatusId") REFERENCES "EventMaster_Status"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Event" ADD CONSTRAINT "Event_eventMaster_TipeAcaraId_fkey" FOREIGN KEY ("eventMaster_TipeAcaraId") REFERENCES "EventMaster_TipeAcara"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Event_Peserta" ADD CONSTRAINT "Event_Peserta_eventId_fkey" FOREIGN KEY ("eventId") REFERENCES "Event"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Event_Peserta" ADD CONSTRAINT "Event_Peserta_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Voting" ADD CONSTRAINT "Voting_authorId_fkey" FOREIGN KEY ("authorId") REFERENCES "User"("id") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Voting" ADD CONSTRAINT "Voting_voting_StatusId_fkey" FOREIGN KEY ("voting_StatusId") REFERENCES "Voting_Status"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Voting_DaftarNamaVote" ADD CONSTRAINT "Voting_DaftarNamaVote_votingId_fkey" FOREIGN KEY ("votingId") REFERENCES "Voting"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Voting_Kontributor" ADD CONSTRAINT "Voting_Kontributor_votingId_fkey" FOREIGN KEY ("votingId") REFERENCES "Voting"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Voting_Kontributor" ADD CONSTRAINT "Voting_Kontributor_authorId_fkey" FOREIGN KEY ("authorId") REFERENCES "User"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Voting_Kontributor" ADD CONSTRAINT "Voting_Kontributor_voting_DaftarNamaVoteId_fkey" FOREIGN KEY ("voting_DaftarNamaVoteId") REFERENCES "Voting_DaftarNamaVote"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Job" ADD CONSTRAINT "Job_imagesId_fkey" FOREIGN KEY ("imagesId") REFERENCES "Images"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Job" ADD CONSTRAINT "Job_authorId_fkey" FOREIGN KEY ("authorId") REFERENCES "User"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Job" ADD CONSTRAINT "Job_masterStatusId_fkey" FOREIGN KEY ("masterStatusId") REFERENCES "MasterStatus"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Forum_Posting" ADD CONSTRAINT "Forum_Posting_authorId_fkey" FOREIGN KEY ("authorId") REFERENCES "User"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Forum_Posting" ADD CONSTRAINT "Forum_Posting_forumMaster_StatusPostingId_fkey" FOREIGN KEY ("forumMaster_StatusPostingId") REFERENCES "ForumMaster_StatusPosting"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Forum_Komentar" ADD CONSTRAINT "Forum_Komentar_forum_PostingId_fkey" FOREIGN KEY ("forum_PostingId") REFERENCES "Forum_Posting"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Forum_Komentar" ADD CONSTRAINT "Forum_Komentar_authorId_fkey" FOREIGN KEY ("authorId") REFERENCES "User"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Forum_ReportPosting" ADD CONSTRAINT "Forum_ReportPosting_forumMaster_KategoriReportId_fkey" FOREIGN KEY ("forumMaster_KategoriReportId") REFERENCES "ForumMaster_KategoriReport"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Forum_ReportPosting" ADD CONSTRAINT "Forum_ReportPosting_forum_PostingId_fkey" FOREIGN KEY ("forum_PostingId") REFERENCES "Forum_Posting"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Forum_ReportPosting" ADD CONSTRAINT "Forum_ReportPosting_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Forum_ReportKomentar" ADD CONSTRAINT "Forum_ReportKomentar_forumMaster_KategoriReportId_fkey" FOREIGN KEY ("forumMaster_KategoriReportId") REFERENCES "ForumMaster_KategoriReport"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Forum_ReportKomentar" ADD CONSTRAINT "Forum_ReportKomentar_forum_KomentarId_fkey" FOREIGN KEY ("forum_KomentarId") REFERENCES "Forum_Komentar"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Forum_ReportKomentar" ADD CONSTRAINT "Forum_ReportKomentar_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "ProjectCollaboration" ADD CONSTRAINT "ProjectCollaboration_projectCollaborationMaster_IndustriId_fkey" FOREIGN KEY ("projectCollaborationMaster_IndustriId") REFERENCES "ProjectCollaborationMaster_Industri"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "ProjectCollaboration" ADD CONSTRAINT "ProjectCollaboration_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "ProjectCollaboration" ADD CONSTRAINT "ProjectCollaboration_projectCollaborationMaster_StatusId_fkey" FOREIGN KEY ("projectCollaborationMaster_StatusId") REFERENCES "ProjectCollaborationMaster_Status"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "ProjectCollaboration_Partisipasi" ADD CONSTRAINT "ProjectCollaboration_Partisipasi_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "ProjectCollaboration_Partisipasi" ADD CONSTRAINT "ProjectCollaboration_Partisipasi_projectCollaborationId_fkey" FOREIGN KEY ("projectCollaborationId") REFERENCES "ProjectCollaboration"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "ProjectCollaboration_RoomChat" ADD CONSTRAINT "ProjectCollaboration_RoomChat_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "ProjectCollaboration_RoomChat" ADD CONSTRAINT "ProjectCollaboration_RoomChat_projectCollaborationId_fkey" FOREIGN KEY ("projectCollaborationId") REFERENCES "ProjectCollaboration"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "ProjectCollaboration_AnggotaRoomChat" ADD CONSTRAINT "ProjectCollaboration_AnggotaRoomChat_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "ProjectCollaboration_AnggotaRoomChat" ADD CONSTRAINT "ProjectCollaboration_AnggotaRoomChat_projectCollaboration__fkey" FOREIGN KEY ("projectCollaboration_RoomChatId") REFERENCES "ProjectCollaboration_RoomChat"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "ProjectCollaboration_Message" ADD CONSTRAINT "ProjectCollaboration_Message_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "ProjectCollaboration_Message" ADD CONSTRAINT "ProjectCollaboration_Message_projectCollaboration_RoomChat_fkey" FOREIGN KEY ("projectCollaboration_RoomChatId") REFERENCES "ProjectCollaboration_RoomChat"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "ProjectCollaboration_Notifikasi" ADD CONSTRAINT "ProjectCollaboration_Notifikasi_projectCollaborationId_fkey" FOREIGN KEY ("projectCollaborationId") REFERENCES "ProjectCollaboration"("id") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "ProjectCollaboration_Notifikasi" ADD CONSTRAINT "AdminNotifProjectUser" FOREIGN KEY ("adminId") REFERENCES "User"("id") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "ProjectCollaboration_Notifikasi" ADD CONSTRAINT "UserNotifProjectUser" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Notifikasi" ADD CONSTRAINT "Notifikasi_userRoleId_fkey" FOREIGN KEY ("userRoleId") REFERENCES "MasterUserRole"("id") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Notifikasi" ADD CONSTRAINT "NotifikasiUser" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Notifikasi" ADD CONSTRAINT "NotifikasiAdmin" FOREIGN KEY ("adminId") REFERENCES "User"("id") ON DELETE RESTRICT ON UPDATE CASCADE; diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 89142e3c..fdd7eddc 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -43,15 +43,18 @@ model User { ProjectCollaboration_Message ProjectCollaboration_Message[] AdminProjectCollaboration_Notifikasi ProjectCollaboration_Notifikasi[] @relation("AdminNotifProjectToUser") UserProjectCollaboration_Notifikasi ProjectCollaboration_Notifikasi[] @relation("UserNotifProjectToUser") + Admin_Notifikasi Notifikasi[] @relation("AdminNotifikasi") + User_Notifikasi Notifikasi[] @relation("UserNotifikasi") } model MasterUserRole { - id String @id - name String - active Boolean @default(true) - createdAt DateTime? @default(now()) - updatedAt DateTime? @updatedAt - User User[] + id String @id + name String + active Boolean @default(true) + createdAt DateTime? @default(now()) + updatedAt DateTime? @updatedAt + User User[] + Notifikasi Notifikasi[] } model UserSession { @@ -847,3 +850,23 @@ model NomorAdmin { nomor String } +model Notifikasi { + id String @id @default(cuid()) + isActive Boolean @default(true) + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt + isRead Boolean @default(false) + appId String + kategoriApp String + pesan String + title String? + status String? + + Role MasterUserRole? @relation(fields: [userRoleId], references: [id]) + userRoleId String + + User User @relation("UserNotifikasi", fields: [userId], references: [id], map: "NotifikasiUser") + userId String + Admin User @relation("AdminNotifikasi", fields: [adminId], references: [id], map: "NotifikasiAdmin") + adminId String +} diff --git a/public/job/085b304e-7ec8-4581-9897-cf6da87ace02.png b/public/job/085b304e-7ec8-4581-9897-cf6da87ace02.png new file mode 100644 index 00000000..f1aa5b43 Binary files /dev/null and b/public/job/085b304e-7ec8-4581-9897-cf6da87ace02.png differ diff --git a/public/job/19681f45-09bd-4ab3-9756-ce3ab7e6a2a7.jpg b/public/job/19681f45-09bd-4ab3-9756-ce3ab7e6a2a7.jpg new file mode 100644 index 00000000..4204a23e Binary files /dev/null and b/public/job/19681f45-09bd-4ab3-9756-ce3ab7e6a2a7.jpg differ diff --git a/public/job/8de58603-2b20-43b7-a847-b64979fb72bb.jpg b/public/job/8de58603-2b20-43b7-a847-b64979fb72bb.jpg new file mode 100644 index 00000000..1006efb3 Binary files /dev/null and b/public/job/8de58603-2b20-43b7-a847-b64979fb72bb.jpg differ diff --git a/public/job/d643b552-9dd9-4f28-a5cc-3cdaa38b651a.jpg b/public/job/d643b552-9dd9-4f28-a5cc-3cdaa38b651a.jpg new file mode 100644 index 00000000..4204a23e Binary files /dev/null and b/public/job/d643b552-9dd9-4f28-a5cc-3cdaa38b651a.jpg differ diff --git a/public/job/e8df686f-85a7-4c7e-a10d-177744ecbb79.jpg b/public/job/e8df686f-85a7-4c7e-a10d-177744ecbb79.jpg new file mode 100644 index 00000000..1006efb3 Binary files /dev/null and b/public/job/e8df686f-85a7-4c7e-a10d-177744ecbb79.jpg differ diff --git a/public/profile/background/55756bbd-9cc2-40c6-b0c0-75cb0456dcda.jpeg b/public/profile/background/c5387b1b-a1da-4e0a-9961-e00cbe454b69.jpeg similarity index 100% rename from public/profile/background/55756bbd-9cc2-40c6-b0c0-75cb0456dcda.jpeg rename to public/profile/background/c5387b1b-a1da-4e0a-9961-e00cbe454b69.jpeg diff --git a/public/profile/background/98c0e877-a951-49c4-99cf-27c36eb026b6.jpeg b/public/profile/background/c9eb5476-197d-4569-82a3-45e1e9226acf.jpeg similarity index 100% rename from public/profile/background/98c0e877-a951-49c4-99cf-27c36eb026b6.jpeg rename to public/profile/background/c9eb5476-197d-4569-82a3-45e1e9226acf.jpeg diff --git a/public/profile/foto/6b616896-18b4-4d16-9f25-84332fb0679b.jpeg b/public/profile/foto/6b616896-18b4-4d16-9f25-84332fb0679b.jpeg new file mode 100644 index 00000000..12a8ae8b Binary files /dev/null and b/public/profile/foto/6b616896-18b4-4d16-9f25-84332fb0679b.jpeg differ diff --git a/public/profile/foto/6d051a4b-1531-48ff-94fb-6a24f5b3840d.jpeg b/public/profile/foto/6d051a4b-1531-48ff-94fb-6a24f5b3840d.jpeg deleted file mode 100644 index 4c3167d8..00000000 Binary files a/public/profile/foto/6d051a4b-1531-48ff-94fb-6a24f5b3840d.jpeg and /dev/null differ diff --git a/public/profile/foto/c4f60cf5-da43-4f1b-9ca0-0717163e87b3.jpeg b/public/profile/foto/c4f60cf5-da43-4f1b-9ca0-0717163e87b3.jpeg deleted file mode 100644 index af6599d6..00000000 Binary files a/public/profile/foto/c4f60cf5-da43-4f1b-9ca0-0717163e87b3.jpeg and /dev/null differ diff --git a/public/profile/foto/dd539470-959e-4063-aa78-86626bd185be.jpeg b/public/profile/foto/dd539470-959e-4063-aa78-86626bd185be.jpeg new file mode 100644 index 00000000..309c5830 Binary files /dev/null and b/public/profile/foto/dd539470-959e-4063-aa78-86626bd185be.jpeg differ diff --git a/src/app/api/admin/notifikasi/route.ts b/src/app/api/admin/notifikasi/route.ts new file mode 100644 index 00000000..4847fb76 --- /dev/null +++ b/src/app/api/admin/notifikasi/route.ts @@ -0,0 +1,8 @@ +import adminNotifikasi_getByUserId from "@/app_modules/admin/notifikasi/fun/get/get_notifikasi_by_user_id"; +import { NextRequest, NextResponse } from "next/server"; + +export async function GET(req: NextRequest) { + + + return NextResponse.json({ success: true }); +} diff --git a/src/app/dev/admin/job/child/table_publish/page.tsx b/src/app/dev/admin/job/child/publish/page.tsx similarity index 53% rename from src/app/dev/admin/job/child/table_publish/page.tsx rename to src/app/dev/admin/job/child/publish/page.tsx index aac17371..28a18d68 100644 --- a/src/app/dev/admin/job/child/table_publish/page.tsx +++ b/src/app/dev/admin/job/child/publish/page.tsx @@ -1,12 +1,13 @@ import { AdminJob_TablePublish } from "@/app_modules/admin/job"; +import adminJob_getListPublish from "@/app_modules/admin/job/fun/get/get_list_publish"; import { AdminJob_getListTableByStatusId } from "@/app_modules/admin/job/fun/get/get_list_table_by_status_id"; export default async function Page() { - const listPublish = await AdminJob_getListTableByStatusId("1") - // console.log(listPublish) + const listPublish = await adminJob_getListPublish({page: 1}) + return ( <> - + ); } \ No newline at end of file diff --git a/src/app/dev/admin/job/child/table_reject/page.tsx b/src/app/dev/admin/job/child/reject/page.tsx similarity index 54% rename from src/app/dev/admin/job/child/table_reject/page.tsx rename to src/app/dev/admin/job/child/reject/page.tsx index 5c64b2e5..79160dd7 100644 --- a/src/app/dev/admin/job/child/table_reject/page.tsx +++ b/src/app/dev/admin/job/child/reject/page.tsx @@ -1,13 +1,13 @@ import { AdminJob_TableReject } from "@/app_modules/admin/job"; +import adminJob_getListReject from "@/app_modules/admin/job/fun/get/get_list_reject"; import { AdminJob_getListTableByStatusId } from "@/app_modules/admin/job/fun/get/get_list_table_by_status_id"; - export default async function Page() { - const listReject = await AdminJob_getListTableByStatusId("4"); + const listReject = await adminJob_getListReject({ page: 1 }); return ( <> - + ); } diff --git a/src/app/dev/admin/job/child/table_review/page.tsx b/src/app/dev/admin/job/child/review/page.tsx similarity index 54% rename from src/app/dev/admin/job/child/table_review/page.tsx rename to src/app/dev/admin/job/child/review/page.tsx index 75450adc..55838522 100644 --- a/src/app/dev/admin/job/child/table_review/page.tsx +++ b/src/app/dev/admin/job/child/review/page.tsx @@ -1,11 +1,13 @@ import { AdminJob_TableReview } from "@/app_modules/admin/job"; +import adminJob_getListReview from "@/app_modules/admin/job/fun/get/get_list_review"; import { AdminJob_getListTableByStatusId } from "@/app_modules/admin/job/fun/get/get_list_table_by_status_id"; export default async function Page() { - const listReview = await AdminJob_getListTableByStatusId("2"); + const dataReview = await adminJob_getListReview({ page: 1 }); + return ( <> - + ); } diff --git a/src/app/dev/admin/job/detail/poster/[id]/page.tsx b/src/app/dev/admin/job/detail/poster/[id]/page.tsx new file mode 100644 index 00000000..aae0ccb7 --- /dev/null +++ b/src/app/dev/admin/job/detail/poster/[id]/page.tsx @@ -0,0 +1,10 @@ +import { AdminJob_DetailPoster } from "@/app_modules/admin/job"; + +export default async function Page({ params }: { params: { id: string } }) { + const imageId = params.id; + return ( + <> + + + ); +} diff --git a/src/app/dev/admin/layout.tsx b/src/app/dev/admin/layout.tsx index aa277f35..ed1372dc 100644 --- a/src/app/dev/admin/layout.tsx +++ b/src/app/dev/admin/layout.tsx @@ -1,4 +1,6 @@ import { AdminLayout } from "@/app_modules/admin/main_dashboard"; +import adminNotifikasi_countNotifikasi from "@/app_modules/admin/notifikasi/fun/count/count_is_read"; +import adminNotifikasi_getByUserId from "@/app_modules/admin/notifikasi/fun/get/get_notifikasi_by_user_id"; import { user_getOneUserId } from "@/app_modules/fun_global/get_user_token"; import { user_getOneByUserId } from "@/app_modules/home/fun/get/get_one_user_by_id"; import React from "react"; @@ -8,13 +10,20 @@ export default async function Layout({ }: { children: React.ReactNode; }) { - const userId = await user_getOneUserId() - const dataUser = await user_getOneByUserId(userId) - const userRole = dataUser?.masterUserRoleId + const userId = await user_getOneUserId(); + const dataUser = await user_getOneByUserId(userId); + const listNotif = await adminNotifikasi_getByUserId(); + const countNotifikasi = await adminNotifikasi_countNotifikasi(); return ( <> - {children} + + {children} + ); } diff --git a/src/app/dev/home/layout.tsx b/src/app/dev/home/layout.tsx index c7662f18..4e254330 100644 --- a/src/app/dev/home/layout.tsx +++ b/src/app/dev/home/layout.tsx @@ -1,15 +1,20 @@ import { user_getOneUserId } from "@/app_modules/fun_global/get_user_token"; import { HomeLayout } from "@/app_modules/home"; import { user_getOneByUserId } from "@/app_modules/home/fun/get/get_one_user_by_id"; +import notifikasi_countUserNotifikasi from "@/app_modules/notifikasi/fun/count/fun_count_by_id"; import { redirect } from "next/navigation"; export default async function Layout({ children }: { children: any }) { const userId = await user_getOneUserId(); const dataUser = await user_getOneByUserId(userId); + const countNotifikasi = await notifikasi_countUserNotifikasi(); + return ( <> - {children} + + {children} + ); } diff --git a/src/app/dev/notifikasi/page.tsx b/src/app/dev/notifikasi/page.tsx new file mode 100644 index 00000000..2ee83bdc --- /dev/null +++ b/src/app/dev/notifikasi/page.tsx @@ -0,0 +1,13 @@ +import { Notifikasi_MainView } from "@/app_modules/notifikasi"; +import notifikasi_getByUserId from "@/app_modules/notifikasi/fun/get/get_notifiaksi_by_id"; + + +export default async function Page() { + const listNotifikasi = await notifikasi_getByUserId() + + return ( + <> + + + ); +} diff --git a/src/app/lib/router_admin/router_admin_job.ts b/src/app/lib/router_admin/router_admin_job.ts index 0062d6a2..3379f9b3 100644 --- a/src/app/lib/router_admin/router_admin_job.ts +++ b/src/app/lib/router_admin/router_admin_job.ts @@ -1,7 +1,8 @@ export const RouterAdminJob = { main: "/dev/admin/job/main", - table_publish: "/dev/admin/job/child/table_publish", - table_review: "/dev/admin/job/child/table_review", - table_reject: "/dev/admin/job/child/table_reject", + publish: "/dev/admin/job/child/publish", + review: "/dev/admin/job/child/review", + reject: "/dev/admin/job/child/reject", arsip: "/dev/admin/job/child/arsip", + detail_poster: "/dev/admin/job/detail/poster/", }; diff --git a/src/app/lib/router_hipmi/router_notifikasi.ts b/src/app/lib/router_hipmi/router_notifikasi.ts new file mode 100644 index 00000000..e9f43426 --- /dev/null +++ b/src/app/lib/router_hipmi/router_notifikasi.ts @@ -0,0 +1,3 @@ +export const RouterNotifikasi = { + main: "/dev/notifikasi", +}; diff --git a/src/app_modules/admin/global_state/index.ts b/src/app_modules/admin/global_state/index.ts index 689ebfa2..fb8e9df0 100644 --- a/src/app_modules/admin/global_state/index.ts +++ b/src/app_modules/admin/global_state/index.ts @@ -5,6 +5,14 @@ import { atomWithStorage } from "jotai/utils"; * @type number * @ */ -export const gs_admin_hotMenu = atomWithStorage("gs_admin_hotMenu", 1) +export const gs_admin_hotMenu = atomWithStorage("gs_admin_hotMenu", 1); -export const gs_admin_subMenu = atomWithStorage("gs_admin_subMenu",null) \ No newline at end of file +export const gs_admin_subMenu = atomWithStorage( + "gs_admin_subMenu", + null +); + +export const gs_layout_admin_isNavbarOpen = atomWithStorage( + "gs_layout_admin_isNavbarOpen", + false +); diff --git a/src/app_modules/admin/job/child/publish/index.tsx b/src/app_modules/admin/job/child/publish/index.tsx new file mode 100644 index 00000000..57e97917 --- /dev/null +++ b/src/app_modules/admin/job/child/publish/index.tsx @@ -0,0 +1,224 @@ +"use client"; + +import { RouterAdminJob } from "@/app/lib/router_admin/router_admin_job"; +import ComponentAdminGlobal_HeaderTamplate from "@/app_modules/admin/component_global/header_tamplate"; +import { MODEL_JOB } from "@/app_modules/job/model/interface"; +import { + Badge, + Button, + Center, + Group, + Pagination, + Paper, + ScrollArea, + Spoiler, + Stack, + Table, + Text, + TextInput, + Title +} from "@mantine/core"; +import { + IconEyeCheck, + IconSearch +} from "@tabler/icons-react"; +import { useRouter } from "next/navigation"; +import { useState } from "react"; +import adminJob_getListPublish from "../../fun/get/get_list_publish"; +import { IconPhotoCheck } from "@tabler/icons-react"; + +export default function AdminJob_TablePublish({ + dataPublish, +}: { + dataPublish: any; +}) { + return ( + <> + + + + + + ); +} + +function TableStatus({ dataPublish }: { dataPublish: any }) { + const router = useRouter(); + + const [data, setData] = useState(dataPublish.data); + const [nPage, setNPage] = useState(dataPublish.nPage); + const [activePage, setActivePage] = useState(1); + const [isSearch, setSearch] = useState(""); + + + async function onSearch(s: string) { + setSearch(s); + setActivePage(1); + const loadData = await adminJob_getListPublish({ + page: 1, + search: s, + }); + setData(loadData.data as any); + setNPage(loadData.nPage); + } + + async function onPageClick(p: any) { + setActivePage(p); + const loadData = await adminJob_getListPublish({ + search: isSearch, + page: p, + }); + setData(loadData.data as any); + setNPage(loadData.nPage); + } + + const TableRows = data?.map((e, i) => ( + + +
+ {e?.Author?.username} +
+ + +
+ + {e?.isArsip ? ( + Arsip + ) : ( + Publish + )} + +
+ + + + {e.title} + + + +
+ {e.imagesId ? ( + + ) : ( +
+ + Tidak ada poster + +
+ )} +
+ + + +
+ + + + +
+ + + + )); + + return ( + <> + + + + {/*
{JSON.stringify(listUser, null, 2)}
*/} + + + Publish + + } + radius={"xl"} + placeholder="Masukan judul" + onChange={(val) => { + onSearch(val.currentTarget.value); + }} + /> + + + + + + + + + + + + + + + + {TableRows} +
+
Author
+
+
Status
+
+ Judul + +
Poster
+
+ Syarat Ketentuan + + Deskripsi +
+
+
+ { + onPageClick(val); + }} + /> +
+
+
+ + + + ); +} diff --git a/src/app_modules/admin/job/child/reject/index.tsx b/src/app_modules/admin/job/child/reject/index.tsx new file mode 100644 index 00000000..c18e3829 --- /dev/null +++ b/src/app_modules/admin/job/child/reject/index.tsx @@ -0,0 +1,338 @@ +"use client"; + +import { RouterAdminJob } from "@/app/lib/router_admin/router_admin_job"; +import ComponentAdminGlobal_HeaderTamplate from "@/app_modules/admin/component_global/header_tamplate"; +import ComponentGlobal_InputCountDown from "@/app_modules/component_global/input_countdown"; +import { ComponentGlobal_NotifikasiBerhasil } from "@/app_modules/component_global/notif_global/notifikasi_berhasil"; +import { ComponentGlobal_NotifikasiGagal } from "@/app_modules/component_global/notif_global/notifikasi_gagal"; +import { MODEL_JOB } from "@/app_modules/job/model/interface"; +import { + Button, + Center, + Group, + Modal, + Pagination, + Paper, + ScrollArea, + Spoiler, + Stack, + Table, + Text, + TextInput, + Textarea, + Title, +} from "@mantine/core"; +import { IconBan, IconPhotoCheck, IconSearch } from "@tabler/icons-react"; +import { useRouter } from "next/navigation"; +import { useState } from "react"; +import { AdminJob_funEditCatatanById } from "../../fun/edit/fun_edit_catatan_by_id"; +import adminJob_getListReject from "../../fun/get/get_list_reject"; +import { AdminJob_getListTableByStatusId } from "../../fun/get/get_list_table_by_status_id"; +import mqtt_client from "@/util/mqtt_client"; +import adminNotifikasi_funCreateToUser from "@/app_modules/admin/notifikasi/fun/create/fun_create_notif_user"; + +export default function AdminJob_TableReject({ + dataReject, +}: { + dataReject: any; +}) { + return ( + <> + + + + + + ); +} + +function TableStatus({ listReject }: { listReject: any }) { + const router = useRouter(); + const [data, setData] = useState(listReject.data); + const [nPage, setNPage] = useState(listReject.nPage); + const [activePage, setActivePage] = useState(1); + const [isSearch, setSearch] = useState(""); + + const [reject, setReject] = useState(false); + const [jobId, setJobId] = useState(""); + const [catatan, setCatatan] = useState(""); + + async function onSearch(s: string) { + setSearch(s); + const loadData = await adminJob_getListReject({ + page: 1, + search: s, + }); + setData(loadData.data as any); + setNPage(loadData.nPage); + setActivePage(1); + } + + async function onPageClick(p: any) { + setActivePage(p); + const loadData = await adminJob_getListReject({ + search: isSearch, + page: p, + }); + setData(loadData.data as any); + setNPage(loadData.nPage); + } + + const rowTable = data?.map((e, i) => ( + + +
+ {e?.Author?.username} +
+ + + + {e.title} + + + +
+ {e.imagesId ? ( + + ) : ( +
+ + Tidak ada poster + +
+ )} +
+ + + +
+ + + + +
+ + + + + {e.catatan} + + + + + + + )); + + return ( + <> + { + setReject(false); + }} + withCloseButton={false} + size={"sm"} + centered + > + + +