Compare commits
2 Commits
mobile-not
...
mobile-not
| Author | SHA1 | Date | |
|---|---|---|---|
| d09e30c049 | |||
| c8bd928c33 |
@@ -1,8 +1,17 @@
|
||||
import { NextResponse } from "next/server";
|
||||
import { prisma } from "@/lib";
|
||||
import _ from "lodash";
|
||||
import {
|
||||
sendNotificationMobileToManyUser,
|
||||
sendNotificationMobileToOneUser,
|
||||
} from "@/lib/mobile/notification/send-notification";
|
||||
import { routeUserMobile } from "@/lib/mobile/route-page-mobile";
|
||||
import {
|
||||
NotificationMobileBodyType,
|
||||
NotificationMobileTitleType,
|
||||
} from "../../../../../../../types/type-mobile-notification";
|
||||
|
||||
export { GET , PUT};
|
||||
export { GET, PUT };
|
||||
|
||||
async function GET(request: Request, { params }: { params: { id: string } }) {
|
||||
const { id } = params;
|
||||
@@ -41,12 +50,16 @@ async function GET(request: Request, { params }: { params: { id: string } }) {
|
||||
async function PUT(request: Request, { params }: { params: { id: string } }) {
|
||||
const { id } = params;
|
||||
const { data } = await request.json();
|
||||
const { catatan, senderId } = data;
|
||||
|
||||
console.log("catatan", catatan);
|
||||
console.log("senderId", senderId);
|
||||
|
||||
const { searchParams } = new URL(request.url);
|
||||
const status = searchParams.get("status");
|
||||
const fixStatus = _.startCase(status as string);
|
||||
let fixData;
|
||||
|
||||
|
||||
try {
|
||||
const checkStatus = await prisma.voting_Status.findFirst({
|
||||
where: {
|
||||
@@ -71,9 +84,23 @@ async function PUT(request: Request, { params }: { params: { id: string } }) {
|
||||
},
|
||||
data: {
|
||||
voting_StatusId: checkStatus.id,
|
||||
catatan: data,
|
||||
catatan: catatan,
|
||||
},
|
||||
});
|
||||
|
||||
// SEND NOTIFICATION
|
||||
await sendNotificationMobileToOneUser({
|
||||
recipientId: updateStatus.authorId as any,
|
||||
senderId: senderId,
|
||||
payload: {
|
||||
title: "Pengajuan Review Ditolak",
|
||||
body: "Mohon perbaiki data sesuai catatan penolakan !",
|
||||
type: "announcement",
|
||||
kategoriApp: "VOTING",
|
||||
deepLink: routeUserMobile.votingByStatus({ status: "reject" }),
|
||||
},
|
||||
});
|
||||
|
||||
fixData = updateStatus;
|
||||
} else if (fixStatus === "Publish") {
|
||||
const updateStatus = await prisma.voting.update({
|
||||
@@ -84,6 +111,39 @@ async function PUT(request: Request, { params }: { params: { id: string } }) {
|
||||
voting_StatusId: checkStatus.id,
|
||||
},
|
||||
});
|
||||
|
||||
await sendNotificationMobileToOneUser({
|
||||
recipientId: updateStatus.authorId as any,
|
||||
senderId: senderId,
|
||||
payload: {
|
||||
title: "Review Selesai",
|
||||
body: "Voting kamu telah dipublikasikan !" as NotificationMobileBodyType,
|
||||
type: "announcement",
|
||||
kategoriApp: "VOTING",
|
||||
deepLink: routeUserMobile.votingByStatus({ status: "publish" }),
|
||||
},
|
||||
});
|
||||
|
||||
const adminUsers = await prisma.user.findMany({
|
||||
where: {
|
||||
masterUserRoleId: "1",
|
||||
NOT: { id: updateStatus.authorId as any },
|
||||
},
|
||||
select: { id: true },
|
||||
});
|
||||
|
||||
await sendNotificationMobileToManyUser({
|
||||
recipientIds: adminUsers.map((user) => user.id),
|
||||
senderId: senderId,
|
||||
payload: {
|
||||
title: "Cek Voting Baru Terpublikasi" as NotificationMobileTitleType,
|
||||
body: `${updateStatus.title}` as NotificationMobileBodyType,
|
||||
type: "announcement",
|
||||
kategoriApp: "VOTING",
|
||||
deepLink: routeUserMobile.votingDetailPublised({ id: id }),
|
||||
},
|
||||
});
|
||||
|
||||
fixData = updateStatus;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,11 @@
|
||||
import { sendNotificationMobileToOneUser } from "@/lib/mobile/notification/send-notification";
|
||||
import prisma from "@/lib/prisma";
|
||||
import { NextResponse } from "next/server";
|
||||
import {
|
||||
NotificationMobileBodyType,
|
||||
NotificationMobileTitleType,
|
||||
} from "../../../../../../../types/type-mobile-notification";
|
||||
import { routeUserMobile } from "@/lib/mobile/route-page-mobile";
|
||||
|
||||
export { GET, POST };
|
||||
|
||||
@@ -13,18 +19,28 @@ async function POST(request: Request, { params }: { params: { id: string } }) {
|
||||
eventId: id,
|
||||
userId: userId,
|
||||
},
|
||||
|
||||
// select: {
|
||||
// Event: {
|
||||
// select: {
|
||||
// id: true,
|
||||
// title: true,
|
||||
// authorId: true,
|
||||
// },
|
||||
// },
|
||||
// },
|
||||
});
|
||||
|
||||
const findEvent = await prisma.event.findUnique({
|
||||
where: { id: id },
|
||||
select: { authorId: true, title: true },
|
||||
});
|
||||
|
||||
// SEND NOTIFICATION
|
||||
if (userId !== findEvent?.authorId) {
|
||||
await sendNotificationMobileToOneUser({
|
||||
recipientId: findEvent?.authorId as string,
|
||||
senderId: userId,
|
||||
payload: {
|
||||
title: "Peserta Baru Join" as NotificationMobileTitleType,
|
||||
body: `Ada peserta baru dalam event: ${findEvent?.title}` as NotificationMobileBodyType,
|
||||
type: "announcement",
|
||||
deepLink: routeUserMobile.eventDetailPublised({ id: id }),
|
||||
kategoriApp: "EVENT",
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
return NextResponse.json(
|
||||
{
|
||||
success: true,
|
||||
|
||||
@@ -38,6 +38,7 @@ async function POST(request: Request) {
|
||||
select: { id: true },
|
||||
});
|
||||
|
||||
// SEND NOTIFICATION
|
||||
await sendNotificationMobileToManyUser({
|
||||
recipientIds: adminUsers.map((user) => user.id),
|
||||
senderId: data.authorId,
|
||||
|
||||
@@ -1,6 +1,12 @@
|
||||
import { NextResponse } from "next/server";
|
||||
import prisma from "@/lib/prisma";
|
||||
import _ from "lodash";
|
||||
import { sendNotificationMobileToOneUser } from "@/lib/mobile/notification/send-notification";
|
||||
import {
|
||||
NotificationMobileBodyType,
|
||||
NotificationMobileTitleType,
|
||||
} from "../../../../../../types/type-mobile-notification";
|
||||
import { routeUserMobile } from "@/lib/mobile/route-page-mobile";
|
||||
|
||||
export { GET, DELETE, PUT, POST };
|
||||
|
||||
@@ -39,7 +45,6 @@ async function GET(request: Request, { params }: { params: { id: string } }) {
|
||||
const listNamaVote = data?.Voting_DaftarNamaVote || [];
|
||||
|
||||
for (let v of listNamaVote) {
|
||||
|
||||
const kontributor = await prisma.voting_Kontributor.findMany({
|
||||
where: {
|
||||
voting_DaftarNamaVoteId: v.id,
|
||||
@@ -90,7 +95,6 @@ async function DELETE(
|
||||
},
|
||||
});
|
||||
|
||||
|
||||
return NextResponse.json({
|
||||
success: true,
|
||||
message: "Berhasil menghapus data",
|
||||
@@ -171,7 +175,6 @@ async function PUT(request: Request, { params }: { params: { id: string } }) {
|
||||
},
|
||||
});
|
||||
|
||||
|
||||
if (!updateVoting)
|
||||
return NextResponse.json({ status: 400, message: "Gagal Update" });
|
||||
}
|
||||
@@ -193,11 +196,12 @@ async function PUT(request: Request, { params }: { params: { id: string } }) {
|
||||
async function POST(request: Request, { params }: { params: { id: string } }) {
|
||||
const { id } = params;
|
||||
const { data } = await request.json();
|
||||
const { chooseId, userId } = data;
|
||||
|
||||
try {
|
||||
const findData = await prisma.voting_DaftarNamaVote.findFirst({
|
||||
const findDatapilihan = await prisma.voting_DaftarNamaVote.findFirst({
|
||||
where: {
|
||||
id: data.chooseId,
|
||||
id: chooseId,
|
||||
},
|
||||
select: {
|
||||
jumlah: true,
|
||||
@@ -205,28 +209,32 @@ async function POST(request: Request, { params }: { params: { id: string } }) {
|
||||
},
|
||||
});
|
||||
|
||||
if (!findData)
|
||||
if (!findDatapilihan)
|
||||
return NextResponse.json({
|
||||
success: false,
|
||||
message: "Data tidak ditemukan",
|
||||
});
|
||||
|
||||
const updateData = await prisma.voting_DaftarNamaVote.update({
|
||||
const updateDataPilihan = await prisma.voting_DaftarNamaVote.update({
|
||||
where: {
|
||||
id: data.chooseId,
|
||||
},
|
||||
data: {
|
||||
jumlah: findData.jumlah + 1,
|
||||
jumlah: findDatapilihan.jumlah + 1,
|
||||
},
|
||||
});
|
||||
|
||||
|
||||
if (!updateData)
|
||||
if (!updateDataPilihan)
|
||||
return NextResponse.json({
|
||||
success: false,
|
||||
message: "Gagal Update Data",
|
||||
});
|
||||
|
||||
const findVotingData = await prisma.voting.findUnique({
|
||||
where: { id: id },
|
||||
select: { authorId: true, title: true },
|
||||
});
|
||||
|
||||
const createKontributor = await prisma.voting_Kontributor.create({
|
||||
data: {
|
||||
votingId: id,
|
||||
@@ -250,6 +258,21 @@ async function POST(request: Request, { params }: { params: { id: string } }) {
|
||||
message: "Gagal Menjadi Kontributor",
|
||||
});
|
||||
|
||||
// SEND NOTIFICATION
|
||||
if (userId !== findVotingData?.authorId) {
|
||||
await sendNotificationMobileToOneUser({
|
||||
recipientId: findVotingData?.authorId as string,
|
||||
senderId: userId,
|
||||
payload: {
|
||||
title: "User Melakukan Vote" as NotificationMobileTitleType,
|
||||
body: `Salah satu user telah melakukan voting pada: ${findVotingData?.title}` as NotificationMobileBodyType,
|
||||
type: "announcement",
|
||||
deepLink: routeUserMobile.votingDetailPublised({ id: id }),
|
||||
kategoriApp: "VOTING",
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
return NextResponse.json({
|
||||
success: true,
|
||||
message: "Berhasil Voting",
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
import { NextResponse } from "next/server";
|
||||
import prisma from "@/lib/prisma";
|
||||
import _ from "lodash";
|
||||
import { sendNotificationMobileToManyUser } from "@/lib/mobile/notification/send-notification";
|
||||
import { NotificationMobileBodyType } from "../../../../../types/type-mobile-notification";
|
||||
import { routeAdminMobile } from "@/lib/mobile/route-page-mobile";
|
||||
|
||||
export { POST, GET };
|
||||
|
||||
@@ -41,6 +44,24 @@ async function POST(request: Request) {
|
||||
});
|
||||
}
|
||||
|
||||
const adminUsers = await prisma.user.findMany({
|
||||
where: { masterUserRoleId: "2", NOT: { id: data.authorId } },
|
||||
select: { id: true },
|
||||
});
|
||||
|
||||
// SEND NOTIFICATION
|
||||
await sendNotificationMobileToManyUser({
|
||||
recipientIds: adminUsers.map((user) => user.id),
|
||||
senderId: data.authorId,
|
||||
payload: {
|
||||
title: "Pengajuan Review Baru",
|
||||
body: create.title as NotificationMobileBodyType,
|
||||
type: "announcement",
|
||||
deepLink: routeAdminMobile.votingByStatus({ status: "review" }),
|
||||
kategoriApp: "VOTING",
|
||||
},
|
||||
});
|
||||
|
||||
return NextResponse.json(
|
||||
{
|
||||
success: true,
|
||||
@@ -125,8 +146,6 @@ async function GET(request: Request) {
|
||||
});
|
||||
|
||||
fixData = data;
|
||||
|
||||
|
||||
} else if (category === "contribution") {
|
||||
const data = await prisma.voting_Kontributor.findMany({
|
||||
orderBy: {
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
[
|
||||
{
|
||||
"name": "default_user",
|
||||
"name": "demo_user",
|
||||
"nomor": "6282340374412",
|
||||
"masterUserRoleId": "1",
|
||||
"active": true,
|
||||
"termsOfServiceAccepted": false
|
||||
},
|
||||
{
|
||||
"name": "admin_911",
|
||||
"name": "demo_admin",
|
||||
"nomor": "6281339158911",
|
||||
"masterUserRoleId": "3",
|
||||
"active": true,
|
||||
|
||||
@@ -5,14 +5,16 @@ type StatusApp = "review" | "draft" | "reject" | "publish";
|
||||
const routeAdminMobile = {
|
||||
userAccess: ({ id }: { id: string }) => `/admin/user-access/${id}`,
|
||||
// JOB
|
||||
jobDetail: ({ id, status }: { id: string; status: StatusApp }) =>
|
||||
`/admin/job/${id}/${status}`,
|
||||
jobByStatus: ({ status }: { status: StatusApp }) =>
|
||||
`/admin/job/${status}/status`,
|
||||
|
||||
// EVENT
|
||||
eventByStatus: ({ status }: { status: StatusApp }) =>
|
||||
`/admin/event/${status}/status`,
|
||||
|
||||
// VOTING
|
||||
votingByStatus: ({ status }: { status: StatusApp }) =>
|
||||
`/admin/voting/${status}/status`,
|
||||
};
|
||||
|
||||
const routeUserMobile = {
|
||||
@@ -26,4 +28,9 @@ const routeUserMobile = {
|
||||
eventByStatus: ({ status }: { status?: StatusApp }) =>
|
||||
`/event/(tabs)/status?status=${status}`,
|
||||
eventDetailPublised: ({ id }: { id: string }) => `/event/${id}/publish`,
|
||||
|
||||
// VOTING
|
||||
votingByStatus: ({ status }: { status?: StatusApp }) =>
|
||||
`/voting/(tabs)/status?status=${status}`,
|
||||
votingDetailPublised: ({ id }: { id: string }) => `/voting/${id}`,
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user