diff --git a/src/app/api/notifications/triggers/[id]/route.ts b/src/app/api/notifications/triggers/[id]/route.ts
index 027d428..eeb582a 100644
--- a/src/app/api/notifications/triggers/[id]/route.ts
+++ b/src/app/api/notifications/triggers/[id]/route.ts
@@ -2,22 +2,77 @@ import { NextRequest, NextResponse } from "next/server";
import { DeleteNotificationTrigger } from "@/domains/notification-triggers/use-cases/delete-notification-trigger";
import { PrismaClientFactory } from "@/common/database/prisma-factory";
import { UserSessionManager } from "@/domains/auth/services/user-session-maganer";
+import { GetNotificationTrigger } from "@/domains/notification-triggers/use-cases/get-notification-trigger";
+import { ApiErrorHandler } from "@/common/error/api-error-handler";
+import { UpdateNotificationTriggerInput } from "@/domains/notification-triggers/use-cases/update-notification-trigger-types";
+import { UpdateNotificationTrigger } from "@/domains/notification-triggers/use-cases/update-notification-trigger";
+import { GenerateNotificationsByTriggers } from "@/domains/notifications/use-cases/generate-notification-by-triggers";
+export async function GET(request: NextRequest, { params }: { params: RequestParams }) {
-export async function DELETE(request: NextRequest, { params }: { params: DeleteParams }) {
+ try {
+ if (!params.id)
+ return NextResponse.json(null);
- const useCase = new DeleteNotificationTrigger({
- userLogged: await new UserSessionManager().getUserOrThrow(),
- prismaClient: PrismaClientFactory.create()
- });
+ const useCase = new GetNotificationTrigger({
+ userLogged: await new UserSessionManager().getUserOrThrow(),
+ prismaClient: PrismaClientFactory.create()
+ });
- await useCase.execute({
- id: params.id
- });
+ const result = await useCase.execute({
+ triggerId: params.id
+ });
- return new Response(null, { status: 204 });
+ return NextResponse.json(result);
+ }
+ catch(error) {
+ return ApiErrorHandler.handler(error);
+ }
}
-interface DeleteParams {
+export async function PUT(request: NextRequest) {
+
+ try {
+ const input: UpdateNotificationTriggerInput = await request.json();
+
+ const useCase = new UpdateNotificationTrigger({
+ userLogged: await new UserSessionManager().getUserOrThrow(),
+ prismaClient: PrismaClientFactory.create()
+ });
+
+ const trigger = await useCase.execute(input);
+
+ const generateNotificaion = new GenerateNotificationsByTriggers();
+ await generateNotificaion.execute({
+ triggerId: trigger.id
+ });
+
+ return NextResponse.json(trigger);
+ }
+ catch(error) {
+ return ApiErrorHandler.handler(error);
+ }
+}
+
+export async function DELETE(request: NextRequest, { params }: { params: RequestParams }) {
+
+ try {
+ const useCase = new DeleteNotificationTrigger({
+ userLogged: await new UserSessionManager().getUserOrThrow(),
+ prismaClient: PrismaClientFactory.create()
+ });
+
+ await useCase.execute({
+ id: params.id
+ });
+
+ return new Response(null, { status: 204 });
+ }
+ catch(error) {
+ return ApiErrorHandler.handler(error);
+ }
+}
+
+interface RequestParams {
id: string;
}
\ No newline at end of file
diff --git a/src/app/contacts/[contactId]/notification-triggers/[triggerId]/page.tsx b/src/app/contacts/[contactId]/notification-triggers/[triggerId]/page.tsx
new file mode 100644
index 0000000..dfeb2b6
--- /dev/null
+++ b/src/app/contacts/[contactId]/notification-triggers/[triggerId]/page.tsx
@@ -0,0 +1,33 @@
+import { AppLayout } from "@/components/AppLayout";
+import { AppLayoutBackWithContactTitle } from "@/components/AppLayout/BackWithTitle/WithContact";
+import { AppLayoutHeader } from "@/components/AppLayout/Header";
+import { AppLayoutBody } from "@/components/AppLayout/Body";
+import { AppLayoutPreLoading } from "@/components/AppLayout/PreLoading";
+import { AppNavMenuDefault, AppNavMenuItens } from "@/components/AppLayout/NavMenu";
+import { ValidationInit } from "@/components/ValidationInit";
+import { NotificationView } from "@/components/NotificationView";
+
+export default function ViewContactNotification({ params }: PageProps) {
+
+ return (
+
Nenhuma notificação encontrada
} {isFirstLoading &&