diff --git a/apps/portal/src/pages/offers/test/createProfile.tsx b/apps/portal/src/pages/offers/test/createProfile.tsx
index 67897015..158412ef 100644
--- a/apps/portal/src/pages/offers/test/createProfile.tsx
+++ b/apps/portal/src/pages/offers/test/createProfile.tsx
@@ -158,6 +158,12 @@ function Test() {
}
});
+ const replies = trpc.useQuery(['offers.comments.getComments', {profileId: 'cl96stky5002ew32gx2kale2x'}], {
+ onError(err) {
+ setError(err.shape?.message || "")
+ },
+ });
+
const deleteMutation = trpc.useMutation(['offers.profile.delete']);
const handleDelete = (id: string) => {
@@ -536,6 +542,7 @@ function Test() {
return (
<>
{createdData}
+ {JSON.stringify(replies.data)}
diff --git a/apps/portal/src/server/router/index.ts b/apps/portal/src/server/router/index.ts
index fcea8526..43fcbd8d 100644
--- a/apps/portal/src/server/router/index.ts
+++ b/apps/portal/src/server/router/index.ts
@@ -3,6 +3,7 @@ import superjson from 'superjson';
import { companiesRouter } from './companies-router';
import { createRouter } from './context';
import { offersRouter } from './offers/offers';
+import { offersCommentsRouter } from './offers/offers-comments-router';
import { offersProfileRouter } from './offers/offers-profile-router';
import { protectedExampleRouter } from './protected-example-router';
import { questionsAnswerCommentRouter } from './questions-answer-comment-router';
@@ -36,7 +37,8 @@ export const appRouter = createRouter()
.merge('questions.questions.comments.', questionsQuestionCommentRouter)
.merge('questions.questions.', questionsQuestionRouter)
.merge('offers.', offersRouter)
- .merge('offers.profile.', offersProfileRouter);
+ .merge('offers.profile.', offersProfileRouter)
+ .merge('offers.comments.', offersCommentsRouter);
// Export type definition of API
export type AppRouter = typeof appRouter;
diff --git a/apps/portal/src/server/router/offers/offers-comments-router.ts b/apps/portal/src/server/router/offers/offers-comments-router.ts
index b0608cdd..9f20fe57 100644
--- a/apps/portal/src/server/router/offers/offers-comments-router.ts
+++ b/apps/portal/src/server/router/offers/offers-comments-router.ts
@@ -3,7 +3,67 @@ import * as trpc from '@trpc/server';
import { createProtectedRouter } from '../context';
-export const offersProfileRouter = createProtectedRouter()
+export const offersCommentsRouter = createProtectedRouter()
+ .query('getComments', {
+ input: z.object({
+ profileId: z.string()
+ }),
+ async resolve({ ctx, input }) {
+ const result = await ctx.prisma.offersProfile.findFirst({
+ include: {
+ discussion: {
+ include: {
+ replies: true,
+ replyingTo: true,
+ user: true
+ }
+ }
+ },
+ where: {
+ id: input.profileId
+ }
+ })
+
+ if (result) {
+ return result.discussion.filter((x) => x.replyingToId === null)
+ }
+
+ return result
+ }
+ })
+ .mutation("create", {
+ input: z.object({
+ message: z.string(),
+ profileId: z.string(),
+ replyingToId: z.string().optional(),
+ userId: z.string()
+ }),
+ async resolve({ ctx, input }) {
+ await ctx.prisma.offersReply.create({
+ data: {
+ message: input.message,
+ profile: {
+ connect: {
+ id: input.profileId
+ }
+ },
+ replyingTo: {
+ connect: {
+ id: input.replyingToId
+ }
+ },
+ user: {
+ connect: {
+ id: input.userId
+ }
+ }
+ }
+ })
+
+ // Get replies
+ return
+ }
+ })
.mutation("update", {
input: z.object({
id: z.string(),
@@ -30,7 +90,7 @@ export const offersProfileRouter = createProtectedRouter()
// To validate user editing, OP or correct user
// TODO: improve validation process
if (profileEditToken === input.token || messageToUpdate?.userId === input.userId) {
- await ctx.prisma.offersReply.update({
+ return await ctx.prisma.offersReply.update({
data: {
message: input.message
},
diff --git a/apps/portal/src/server/router/offers/offers-profile-router.ts b/apps/portal/src/server/router/offers/offers-profile-router.ts
index 944cc3e0..2cce77fb 100644
--- a/apps/portal/src/server/router/offers/offers-profile-router.ts
+++ b/apps/portal/src/server/router/offers/offers-profile-router.ts
@@ -985,6 +985,7 @@ export const offersProfileRouter = createRouter()
include: {
replies: true,
replyingTo: true,
+ user: true
},
},
offers: {
@@ -1042,10 +1043,8 @@ export const offersProfileRouter = createRouter()
const profileEditToken = profile?.editToken;
- // To validate user editing, OP or correct user
- // TODO: improve validation process
if (profileEditToken === input.token) {
- return await ctx.prisma.offersProfile.update({
+ const updated = await ctx.prisma.offersProfile.update({
data: {
user: {
connect: {
@@ -1057,6 +1056,12 @@ export const offersProfileRouter = createRouter()
id: input.profileId
}
})
+
+ return {
+ id: updated.id,
+ profileName: updated.profileName,
+ userId: updated.userId
+ }
}
throw new trpc.TRPCError({