Comments
+
+ {#if form?.message}
+
+ {/if}
+ {#if form?.commentBody && form.error}
+ {@const _ = newComment = form.commentBody}
+ {/if}
+
- {#each comments as c}
-
- {#if c.author.avatar}
-

- {/if}
-
-
-
{c.author.name}
-
{new Date(c.createdAt).toLocaleString()}
+ {#if task.comments && task.comments.length > 0}
+ {#each task.comments as c (c.id || c.createdAt) }
+
+ {#if c.author.profilePhoto}
+

+ {:else}
+
+ {c.author?.name?.charAt(0) || 'U'}
+
+ {/if}
+
+
+ {c.author.name}
+ {new Date(c.createdAt).toLocaleString()}
+
+
{c.body}
-
{c.content}
-
- {/each}
+ {/each}
+ {:else}
+
No comments yet.
+ {/if}
-
+ {/if}
\ No newline at end of file
diff --git a/src/routes/(app)/app/tasks/[task_id]/edit/+page.server.js b/src/routes/(app)/app/tasks/[task_id]/edit/+page.server.js
new file mode 100644
index 0000000..caed37c
--- /dev/null
+++ b/src/routes/(app)/app/tasks/[task_id]/edit/+page.server.js
@@ -0,0 +1,124 @@
+import prisma from '$lib/prisma';
+import { fail, redirect } from '@sveltejs/kit';
+
+/** @type {import('./$types').PageServerLoad} */
+export async function load({ params, locals }) {
+ const user = locals.user;
+ const org = locals.org;
+
+ const task = await prisma.task.findUnique({
+ where: {
+ id: params.task_id,
+ organizationId: org.id
+ }
+ });
+
+ if (!task) {
+ throw redirect(303, '/app/tasks'); // Or a 404 page
+ }
+
+ // Format dueDate for input[type=date]
+ if (task.dueDate) {
+ task.dueDate = new Date(task.dueDate).toISOString().split('T')[0];
+ }
+
+ const users = await prisma.user.findMany({
+ where: {
+ organizations: {
+ some: {
+ organizationId: org.id
+ }
+ }
+ },
+ select: { id: true, name: true }
+ });
+
+ const accounts = await prisma.account.findMany({
+ where: { organizationId: org.id },
+ select: { id: true, name: true }
+ });
+
+ return {
+ task,
+ users,
+ accounts
+ };
+};
+
+/** @type {import('./$types').Actions} */
+export const actions = {
+ update: async ({ request, params, locals }) => {
+ const formData = await request.formData();
+ const org = locals.org;
+ const user = locals.user;
+
+ const subject = formData.get('subject');
+ const description = formData.get('description');
+ const status = formData.get('status');
+ const priority = formData.get('priority');
+ let dueDate = formData.get('dueDate');
+ const ownerId = formData.get('ownerId');
+ let accountId = formData.get('accountId');
+
+ if (!subject || typeof subject !== 'string' || subject.trim() === '') {
+ return fail(400, { fieldError: ['subject', 'Subject is required.'] });
+ }
+ if (!ownerId || typeof ownerId !== 'string') {
+ return fail(400, { fieldError: ['ownerId', 'Owner is required.'] });
+ }
+
+ // check if the task is related to org.id and the user is related to the org
+ const taskToUpdate = await prisma.task.findUnique({
+ where: {
+ id: params.task_id,
+ organizationId: org.id
+ }
+ });
+
+ if (!taskToUpdate) {
+ return fail(404, { message: 'Task not found or you do not have permission to edit it.' });
+ }
+
+ const userExistsInOrg = await prisma.userOrganization.findUnique({
+ where: {
+ userId_organizationId: {
+ userId: user.id,
+ organizationId: org.id
+ }
+ }
+ });
+ if (!userExistsInOrg) {
+ return fail(400, { fieldError: ['ownerId', 'User is not part of this organization.'] });
+ }
+
+
+ // Convert empty string or null accountId to null for Prisma
+ accountId = accountId === '' || accountId === 'null' ? null : accountId;
+
+ // Convert dueDate to ISOString or null if empty
+ dueDate = dueDate ? new Date(dueDate).toISOString() : null;
+
+ try {
+ await prisma.task.update({
+ where: {
+ id: params.task_id,
+ organizationId: org.id
+ },
+ data: {
+ subject: subject.trim(),
+ description: description ? description.toString().trim() : null,
+ status: status ? status.toString() : 'Not Started',
+ priority: priority ? priority.toString() : 'Normal',
+ dueDate,
+ ownerId: ownerId.toString(),
+ accountId: accountId ? accountId.toString() : null,
+ }
+ });
+ } catch (error) {
+ console.error('Error updating task:', error);
+ return fail(500, { message: 'Failed to update task. Please try again.' });
+ }
+
+ throw redirect(303, `/app/tasks/${params.task_id}`);
+ }
+};
\ No newline at end of file
diff --git a/src/routes/(app)/app/tasks/[task_id]/edit/+page.svelte b/src/routes/(app)/app/tasks/[task_id]/edit/+page.svelte
new file mode 100644
index 0000000..d64add4
--- /dev/null
+++ b/src/routes/(app)/app/tasks/[task_id]/edit/+page.svelte
@@ -0,0 +1,111 @@
+
+
+
+
+
Edit Task
+
+
+
+
+
\ No newline at end of file
diff --git a/src/routes/(app)/app/tasks/board/[boardId]/+page.server.js b/src/routes/(app)/app/tasks/board/[boardId]/+page.server.js
index 8d2b6f6..0130ea7 100644
--- a/src/routes/(app)/app/tasks/board/[boardId]/+page.server.js
+++ b/src/routes/(app)/app/tasks/board/[boardId]/+page.server.js
@@ -1,84 +1,84 @@
-import prisma from '$lib/prisma';
+// import prisma from '$lib/prisma';
-export async function load({ params, locals }) {
- const user = locals.user;
- const org = locals.org;
- if (!user || !org) return { status: 302, redirect: '/login' };
- const board = await prisma.board.findUnique({
- where: { id: params.boardId, organizationId: org.id },
- select: { id: true, name: true, ownerId: true }
- });
- if (!board || board.ownerId !== user.id) return { status: 403 };
- const columns = await prisma.boardColumn.findMany({
- where: { boardId: board.id },
- orderBy: { order: 'asc' },
- select: {
- id: true,
- name: true,
- order: true,
- tasks: {
- orderBy: { order: 'asc' },
- select: { id: true, title: true, order: true }
- }
- }
- });
- return { board, columns };
-}
+// export async function load({ params, locals }) {
+// const user = locals.user;
+// const org = locals.org;
+// if (!user || !org) return { status: 302, redirect: '/login' };
+// const board = await prisma.board.findUnique({
+// where: { id: params.boardId, organizationId: org.id },
+// select: { id: true, name: true, ownerId: true }
+// });
+// if (!board || board.ownerId !== user.id) return { status: 403 };
+// const columns = await prisma.boardColumn.findMany({
+// where: { boardId: board.id },
+// orderBy: { order: 'asc' },
+// select: {
+// id: true,
+// name: true,
+// order: true,
+// tasks: {
+// orderBy: { order: 'asc' },
+// select: { id: true, title: true, order: true }
+// }
+// }
+// });
+// return { board, columns };
+// }
-export const actions = {
- createTask: async ({ request, params, locals }) => {
- const user = locals.user;
- if (!user) return { status: 401 };
- const form = await request.formData();
- const title = form.get('title');
- const columnId = form.get('columnId');
- if (!title || !columnId) return { status: 400 };
- const maxOrder = await prisma.boardTask.aggregate({
- where: { columnId },
- _max: { order: true }
- });
- await prisma.boardTask.create({
- data: {
- title,
- columnId,
- order: (maxOrder._max.order ?? 0) + 1
- }
- });
- return { success: true };
- },
- createColumn: async ({ request, params, locals }) => {
- const user = locals.user;
- if (!user) return { status: 401 };
- const form = await request.formData();
- const columnName = form.get('columnName');
- if (!columnName) return { status: 400 };
- const maxOrder = await prisma.boardColumn.aggregate({
- where: { boardId: params.boardId },
- _max: { order: true }
- });
- await prisma.boardColumn.create({
- data: {
- name: columnName,
- boardId: params.boardId,
- order: (maxOrder._max.order ?? 0) + 1
- }
- });
- return { success: true };
- },
- moveTask: async ({ request, params, locals }) => {
- const user = locals.user;
- if (!user) return { status: 401 };
- const { columnId, orderedTaskIds } = await request.json();
- if (!columnId || !Array.isArray(orderedTaskIds)) return { status: 400 };
- // Update all tasks in the column to match the new order
- await Promise.all(
- orderedTaskIds.map((taskId, idx) =>
- prisma.boardTask.update({
- where: { id: taskId },
- data: { columnId, order: idx + 1 }
- })
- )
- );
- return { success: true };
- }
-};
+// export const actions = {
+// createTask: async ({ request, params, locals }) => {
+// const user = locals.user;
+// if (!user) return { status: 401 };
+// const form = await request.formData();
+// const title = form.get('title');
+// const columnId = form.get('columnId');
+// if (!title || !columnId) return { status: 400 };
+// const maxOrder = await prisma.boardTask.aggregate({
+// where: { columnId },
+// _max: { order: true }
+// });
+// await prisma.boardTask.create({
+// data: {
+// title,
+// columnId,
+// order: (maxOrder._max.order ?? 0) + 1
+// }
+// });
+// return { success: true };
+// },
+// createColumn: async ({ request, params, locals }) => {
+// const user = locals.user;
+// if (!user) return { status: 401 };
+// const form = await request.formData();
+// const columnName = form.get('columnName');
+// if (!columnName) return { status: 400 };
+// const maxOrder = await prisma.boardColumn.aggregate({
+// where: { boardId: params.boardId },
+// _max: { order: true }
+// });
+// await prisma.boardColumn.create({
+// data: {
+// name: columnName,
+// boardId: params.boardId,
+// order: (maxOrder._max.order ?? 0) + 1
+// }
+// });
+// return { success: true };
+// },
+// moveTask: async ({ request, params, locals }) => {
+// const user = locals.user;
+// if (!user) return { status: 401 };
+// const { columnId, orderedTaskIds } = await request.json();
+// if (!columnId || !Array.isArray(orderedTaskIds)) return { status: 400 };
+// // Update all tasks in the column to match the new order
+// await Promise.all(
+// orderedTaskIds.map((taskId, idx) =>
+// prisma.boardTask.update({
+// where: { id: taskId },
+// data: { columnId, order: idx + 1 }
+// })
+// )
+// );
+// return { success: true };
+// }
+// };
diff --git a/src/routes/(app)/app/tasks/board/[boardId]/task/[taskId]/+server.js b/src/routes/(app)/app/tasks/board/[boardId]/task/[taskId]/+server.js
index ce79f05..fba7903 100644
--- a/src/routes/(app)/app/tasks/board/[boardId]/task/[taskId]/+server.js
+++ b/src/routes/(app)/app/tasks/board/[boardId]/task/[taskId]/+server.js
@@ -1,21 +1,21 @@
-import prisma from '$lib/prisma';
+// import prisma from '$lib/prisma';
-export async function GET({ params, locals }) {
- const user = locals.user;
- const org = locals.org;
- if (!user || !org) return new Response('Unauthorized', { status: 401 });
- const task = await prisma.boardTask.findUnique({
- where: { id: params.taskId },
- include: {
- assignee: { select: { id: true, name: true } },
- column: { include: { board: true } }
- }
- });
- if (!task || task.column.board.ownerId !== user.id || task.column.board.organizationId !== org.id) return new Response('Forbidden', { status: 403 });
- const comments = await prisma.boardTaskActivity.findMany({
- where: { taskId: params.taskId, type: 'comment' },
- orderBy: { createdAt: 'asc' },
- include: { author: { select: { id: true, name: true } } }
- });
- return new Response(JSON.stringify({ task, comments }), { headers: { 'Content-Type': 'application/json' } });
-}
+// export async function GET({ params, locals }) {
+// const user = locals.user;
+// const org = locals.org;
+// if (!user || !org) return new Response('Unauthorized', { status: 401 });
+// const task = await prisma.boardTask.findUnique({
+// where: { id: params.taskId },
+// include: {
+// assignee: { select: { id: true, name: true } },
+// column: { include: { board: true } }
+// }
+// });
+// if (!task || task.column.board.ownerId !== user.id || task.column.board.organizationId !== org.id) return new Response('Forbidden', { status: 403 });
+// const comments = await prisma.boardTaskActivity.findMany({
+// where: { taskId: params.taskId, type: 'comment' },
+// orderBy: { createdAt: 'asc' },
+// include: { author: { select: { id: true, name: true } } }
+// });
+// return new Response(JSON.stringify({ task, comments }), { headers: { 'Content-Type': 'application/json' } });
+// }
diff --git a/src/routes/(app)/app/tasks/board/[boardId]/task/[taskId]/assignee/+server.js b/src/routes/(app)/app/tasks/board/[boardId]/task/[taskId]/assignee/+server.js
index eb5423d..081ee83 100644
--- a/src/routes/(app)/app/tasks/board/[boardId]/task/[taskId]/assignee/+server.js
+++ b/src/routes/(app)/app/tasks/board/[boardId]/task/[taskId]/assignee/+server.js
@@ -1,30 +1,30 @@
-import prisma from '$lib/prisma.js';
-import { json } from '@sveltejs/kit';
+// import prisma from '$lib/prisma.js';
+// import { json } from '@sveltejs/kit';
-export async function PATCH({ params, request }) {
- const { boardId, taskId } = params;
- const { assigneeId } = await request.json();
- if (!assigneeId) {
- // Unassign
- const updated = await prisma.boardTask.update({
- where: { id: taskId },
- data: { assigneeId: null }
- });
- return json({ success: true, task: updated });
- }
- // Check user is in org via board
- const board = await prisma.board.findUnique({
- where: { id: boardId },
- include: { organization: true }
- });
- if (!board) return json({ error: 'Board not found' }, { status: 404 });
- const user = await prisma.user.findFirst({
- where: { id: assigneeId, organizations: { some: { organizationId: board.organizationId } } }
- });
- if (!user) return json({ error: 'User not in organization' }, { status: 400 });
- const updated = await prisma.boardTask.update({
- where: { id: taskId },
- data: { assigneeId }
- });
- return json({ success: true, task: updated });
-}
+// export async function PATCH({ params, request }) {
+// const { boardId, taskId } = params;
+// const { assigneeId } = await request.json();
+// if (!assigneeId) {
+// // Unassign
+// const updated = await prisma.boardTask.update({
+// where: { id: taskId },
+// data: { assigneeId: null }
+// });
+// return json({ success: true, task: updated });
+// }
+// // Check user is in org via board
+// const board = await prisma.board.findUnique({
+// where: { id: boardId },
+// include: { organization: true }
+// });
+// if (!board) return json({ error: 'Board not found' }, { status: 404 });
+// const user = await prisma.user.findFirst({
+// where: { id: assigneeId, organizations: { some: { organizationId: board.organizationId } } }
+// });
+// if (!user) return json({ error: 'User not in organization' }, { status: 400 });
+// const updated = await prisma.boardTask.update({
+// where: { id: taskId },
+// data: { assigneeId }
+// });
+// return json({ success: true, task: updated });
+// }
diff --git a/src/routes/(app)/app/tasks/board/[boardId]/task/[taskId]/comment/+server.js b/src/routes/(app)/app/tasks/board/[boardId]/task/[taskId]/comment/+server.js
index 6983429..2e1221f 100644
--- a/src/routes/(app)/app/tasks/board/[boardId]/task/[taskId]/comment/+server.js
+++ b/src/routes/(app)/app/tasks/board/[boardId]/task/[taskId]/comment/+server.js
@@ -1,39 +1,39 @@
-// SvelteKit POST endpoint for adding a comment to a BoardTask (Kanban task)
-import { getSessionUser } from '$lib/stores/auth.js';
-import prisma from '$lib/prisma.js';
+// // SvelteKit POST endpoint for adding a comment to a BoardTask (Kanban task)
+// import { getSessionUser } from '$lib/stores/auth.js';
+// import prisma from '$lib/prisma.js';
-/** @type {import('./$types').RequestHandler} */
-export async function POST({ params, request, locals }) {
- const user = getSessionUser({ locals });
- if (!user) {
- return new Response(JSON.stringify({ error: 'Unauthorized' }), { status: 401 });
- }
- const { boardId, taskId } = params;
- const { content } = await request.json();
- if (!content || !content.trim()) {
- return new Response(JSON.stringify({ error: 'Comment cannot be empty' }), { status: 400 });
- }
- try {
- // Find the BoardTask and its column/board for org context (optional, for security)
- const task = await prisma.boardTask.findUnique({
- where: { id: taskId },
- include: { column: { include: { board: true } } }
- });
- if (!task) {
- return new Response(JSON.stringify({ error: 'Task not found' }), { status: 404 });
- }
- // Optionally, check if user is a board member or has access
- // Create the comment as a BoardTaskActivity
- const activity = await prisma.boardTaskActivity.create({
- data: {
- taskId,
- authorId: user.id,
- type: 'comment',
- content,
- }
- });
- return new Response(JSON.stringify({ success: true, activity }), { status: 201 });
- } catch (e) {
- return new Response(JSON.stringify({ error: e.message }), { status: 500 });
- }
-}
+// /** @type {import('./$types').RequestHandler} */
+// export async function POST({ params, request, locals }) {
+// const user = getSessionUser({ locals });
+// if (!user) {
+// return new Response(JSON.stringify({ error: 'Unauthorized' }), { status: 401 });
+// }
+// const { boardId, taskId } = params;
+// const { content } = await request.json();
+// if (!content || !content.trim()) {
+// return new Response(JSON.stringify({ error: 'Comment cannot be empty' }), { status: 400 });
+// }
+// try {
+// // Find the BoardTask and its column/board for org context (optional, for security)
+// const task = await prisma.boardTask.findUnique({
+// where: { id: taskId },
+// include: { column: { include: { board: true } } }
+// });
+// if (!task) {
+// return new Response(JSON.stringify({ error: 'Task not found' }), { status: 404 });
+// }
+// // Optionally, check if user is a board member or has access
+// // Create the comment as a BoardTaskActivity
+// const activity = await prisma.boardTaskActivity.create({
+// data: {
+// taskId,
+// authorId: user.id,
+// type: 'comment',
+// content,
+// }
+// });
+// return new Response(JSON.stringify({ success: true, activity }), { status: 201 });
+// } catch (e) {
+// return new Response(JSON.stringify({ error: e.message }), { status: 500 });
+// }
+// }
diff --git a/src/routes/(app)/app/tasks/board/[boardId]/task/[taskId]/due-date/+server.js b/src/routes/(app)/app/tasks/board/[boardId]/task/[taskId]/due-date/+server.js
index 3b45237..6a9fd3a 100644
--- a/src/routes/(app)/app/tasks/board/[boardId]/task/[taskId]/due-date/+server.js
+++ b/src/routes/(app)/app/tasks/board/[boardId]/task/[taskId]/due-date/+server.js
@@ -1,38 +1,38 @@
-import prisma from '$lib/prisma.js';
-import { json } from '@sveltejs/kit';
+// import prisma from '$lib/prisma.js';
+// import { json } from '@sveltejs/kit';
-export async function PATCH({ params, request }) {
- const { boardId, taskId } = params;
- const { dueDate } = await request.json();
- if (!dueDate) {
- return json({ error: 'Missing dueDate' }, { status: 400 });
- }
- try {
- // Log params for debugging
- console.log('PATCH BoardTask due-date params:', params);
- // Check if the board task exists and belongs to the board
- const boardTask = await prisma.boardTask.findFirst({
- where: {
- id: taskId,
- // Ensure the boardId matches
- column: {
- board: {
- id: boardId
- }
- }
- }
- });
- console.log('Found boardTask:', boardTask);
- if (!boardTask) {
- return json({ error: 'BoardTask not found' }, { status: 404 });
- }
- const updated = await prisma.boardTask.update({
- where: { id: taskId },
- data: { dueDate: new Date(dueDate) }
- });
- return json({ success: true, task: updated });
- } catch (e) {
- console.error('Due date update error:', e);
- return json({ error: 'Failed to update due date', details: e.message }, { status: 500 });
- }
-}
+// export async function PATCH({ params, request }) {
+// const { boardId, taskId } = params;
+// const { dueDate } = await request.json();
+// if (!dueDate) {
+// return json({ error: 'Missing dueDate' }, { status: 400 });
+// }
+// try {
+// // Log params for debugging
+// console.log('PATCH BoardTask due-date params:', params);
+// // Check if the board task exists and belongs to the board
+// const boardTask = await prisma.boardTask.findFirst({
+// where: {
+// id: taskId,
+// // Ensure the boardId matches
+// column: {
+// board: {
+// id: boardId
+// }
+// }
+// }
+// });
+// console.log('Found boardTask:', boardTask);
+// if (!boardTask) {
+// return json({ error: 'BoardTask not found' }, { status: 404 });
+// }
+// const updated = await prisma.boardTask.update({
+// where: { id: taskId },
+// data: { dueDate: new Date(dueDate) }
+// });
+// return json({ success: true, task: updated });
+// } catch (e) {
+// console.error('Due date update error:', e);
+// return json({ error: 'Failed to update due date', details: e.message }, { status: 500 });
+// }
+// }
diff --git a/src/routes/(app)/app/tasks/board/[boardId]/users/+server.js b/src/routes/(app)/app/tasks/board/[boardId]/users/+server.js
index 9a13c59..5a4c7ac 100644
--- a/src/routes/(app)/app/tasks/board/[boardId]/users/+server.js
+++ b/src/routes/(app)/app/tasks/board/[boardId]/users/+server.js
@@ -1,19 +1,19 @@
-import prisma from '$lib/prisma.js';
-import { json } from '@sveltejs/kit';
+// import prisma from '$lib/prisma.js';
+// import { json } from '@sveltejs/kit';
-// Returns users related to the board's organization
-export async function GET({ params }) {
- const { boardId } = params;
- // Find the board and its organization
- const board = await prisma.board.findUnique({
- where: { id: boardId },
- include: { organization: true }
- });
- if (!board) return json([], { status: 404 });
- // Get users in the same organization
- const users = await prisma.user.findMany({
- where: { organizations: { some: { organizationId: board.organizationId } } },
- select: { id: true, name: true, email: true }
- });
- return json(users);
-}
+// // Returns users related to the board's organization
+// export async function GET({ params }) {
+// const { boardId } = params;
+// // Find the board and its organization
+// const board = await prisma.board.findUnique({
+// where: { id: boardId },
+// include: { organization: true }
+// });
+// if (!board) return json([], { status: 404 });
+// // Get users in the same organization
+// const users = await prisma.user.findMany({
+// where: { organizations: { some: { organizationId: board.organizationId } } },
+// select: { id: true, name: true, email: true }
+// });
+// return json(users);
+// }
diff --git a/src/routes/(app)/app/tasks/calendar/+page.server.js b/src/routes/(app)/app/tasks/calendar/+page.server.js
index e579bf1..c41b8bd 100644
--- a/src/routes/(app)/app/tasks/calendar/+page.server.js
+++ b/src/routes/(app)/app/tasks/calendar/+page.server.js
@@ -3,7 +3,6 @@ import prisma from '$lib/prisma.js';
export async function load({ locals }) {
const user = locals.user;
const org = locals.org;
- if (!user || !org) return { status: 302, redirect: '/login' };
// Fetch classic CRM tasks
const tasks = await prisma.task.findMany({
@@ -25,25 +24,5 @@ export async function load({ locals }) {
orderBy: { dueDate: 'asc' }
});
- // Fetch Kanban board tasks
- const boardTasks = await prisma.boardTask.findMany({
- where: {
- assigneeId: user.id,
- dueDate: { not: null },
- column: { board: { organizationId: org.id } }
- },
- select: {
- id: true,
- title: true,
- description: true,
- dueDate: true,
- completed: true,
- createdAt: true,
- updatedAt: true,
- column: { select: { boardId: true } }
- },
- orderBy: { dueDate: 'asc' }
- });
-
- return { tasks, boardTasks };
+ return { tasks };
}
diff --git a/src/routes/(app)/app/tasks/calendar/+page.svelte b/src/routes/(app)/app/tasks/calendar/+page.svelte
index e779837..4def490 100644
--- a/src/routes/(app)/app/tasks/calendar/+page.svelte
+++ b/src/routes/(app)/app/tasks/calendar/+page.svelte
@@ -19,19 +19,6 @@
priority: t.priority
});
}
- for (const t of data.boardTasks) {
- if (!t.dueDate) continue;
- const date = (typeof t.dueDate === 'string' ? t.dueDate : t.dueDate?.toISOString?.())?.slice(0, 10);
- if (!tasksByDate[date]) tasksByDate[date] = [];
- tasksByDate[date].push({
- id: t.id,
- title: t.title,
- description: t.description,
- type: 'Board',
- completed: t.completed,
- boardId: t.column.boardId
- });
- }
}
// Calendar logic
@@ -58,7 +45,6 @@
function selectDay(date) {
if (date) {
const formatted = formatDate(date);
- console.log('Clicked date:', date, 'Formatted:', formatted);
selectedDate = formatted;
selectedTasks = tasksByDate[selectedDate] || [];
}
@@ -200,21 +186,17 @@ h2 {
{#each selectedTasks as task}
-
-
+
{/each}
diff --git a/src/routes/(app)/app/tasks/list/+page.server.js b/src/routes/(app)/app/tasks/list/+page.server.js
index 91fa3e0..396f9c3 100644
--- a/src/routes/(app)/app/tasks/list/+page.server.js
+++ b/src/routes/(app)/app/tasks/list/+page.server.js
@@ -1,4 +1,24 @@
-// Placeholder for classic task list server logic
-export async function load() {
- return { tasks: [] };
+import prisma from '$lib/prisma.js';
+
+export async function load({ locals }) {
+ const user = locals.user; // Ensure user is used if needed for filtering or logging
+ const org = locals.org;
+
+ const tasks = await prisma.task.findMany({
+ where: {
+ organizationId: org.id
+ },
+ include: {
+ owner: {
+ select: { name: true, id: true } // Select only necessary fields from owner
+ },
+ account: {
+ select: { name: true, id: true } // Select only necessary fields from account
+ }
+ },
+ orderBy: {
+ createdAt: 'desc' // Optional: order tasks, e.g., by creation date
+ }
+ });
+ return { tasks };
}
\ No newline at end of file
diff --git a/src/routes/(app)/app/tasks/list/+page.svelte b/src/routes/(app)/app/tasks/list/+page.svelte
index a6261c0..b8bb834 100644
--- a/src/routes/(app)/app/tasks/list/+page.svelte
+++ b/src/routes/(app)/app/tasks/list/+page.svelte
@@ -1,51 +1,32 @@
Tasks
-
+
@@ -57,21 +38,27 @@
Priority |
Due Date |
Owner |
-
Account |
+
Related Account |
|
- {#each tasks as task}
+ {#each data.tasks as task (task.id)}
- | {task.subject} |
+
+
+ {task.subject}
+
+ |
- {task.status}
+ {task.status || 'N/A'}
|
@@ -80,104 +67,38 @@
{task.priority === 'Normal' ? 'bg-blue-100 text-blue-700' : ''}
{task.priority === 'Low' ? 'bg-gray-100 text-gray-700' : ''}
">
- {task.priority}
+ {task.priority || 'N/A'}
|
- {task.dueDate} |
- {task.owner?.name} |
- {task.account?.name} |
+ {formatDate(task.dueDate)} |
+ {task.owner?.name || 'N/A'} |
+ {task.account?.name || 'N/A'} |
-
+ aria-label="Edit Task"
+ >Edit
|
{/each}
- {#if tasks.length === 0}
-
No tasks found.
+ {#if data.tasks.length === 0}
+
No tasks found. Create one!
{/if}
-{#if showModal}
-
-
-
-
- {modalMode === 'create' ? 'Create Task' : 'Edit Task'}
-
-
-
-
-{/if}
-
\ No newline at end of file
diff --git a/src/routes/(app)/app/users/+page.server.js b/src/routes/(app)/app/users/+page.server.js
index 8c5e812..11709ef 100644
--- a/src/routes/(app)/app/users/+page.server.js
+++ b/src/routes/(app)/app/users/+page.server.js
@@ -46,7 +46,6 @@ export const actions = {
update: async ({ request, params, locals }) => {
const org_id = locals.org.id; // Changed from params.org_id
const user = locals.user;
- if (!user) return fail(401, { error: 'Unauthorized' });
// Only ADMIN can update
const userOrg = await prisma.userOrganization.findFirst({
@@ -90,7 +89,6 @@ export const actions = {
add_user: async ({ request, params, locals }) => {
const org_id = locals.org.id; // Changed from params.org_id
const user = locals.user;
- if (!user) return fail(401, { error: 'Unauthorized' });
// Only ADMIN can add
const userOrg = await prisma.userOrganization.findFirst({
@@ -131,7 +129,6 @@ export const actions = {
edit_role: async ({ request, params, locals }) => {
const org_id = locals.org.id; // Changed from params.org_id
const user = locals.user;
- if (!user) return fail(401, { error: 'Unauthorized' });
// Only ADMIN can edit
const userOrg = await prisma.userOrganization.findFirst({
@@ -179,7 +176,6 @@ export const actions = {
remove_user: async ({ request, params, locals }) => {
const org_id = locals.org.id; // Changed from params.org_id
const user = locals.user;
- if (!user) return fail(401, { error: 'Unauthorized' });
// Only ADMIN can remove
const userOrg = await prisma.userOrganization.findFirst({
diff --git a/src/routes/(no-layout)/login/+page.server.js b/src/routes/(no-layout)/login/+page.server.js
index 36617a3..a652621 100644
--- a/src/routes/(no-layout)/login/+page.server.js
+++ b/src/routes/(no-layout)/login/+page.server.js
@@ -30,7 +30,6 @@ export async function load({ params, url, cookies }) {
const code = url.searchParams.get('code')
const redirect_uri = env.GOOGLE_LOGIN_DOMAIN + '/login'
- console.log('code', code)
// Check if the user is already authenticated
if (code != null) {
params = {
@@ -53,7 +52,6 @@ export async function load({ params, url, cookies }) {
const session_id = uuidv4()
- console.log('user_info', user_info)
const user = await prisma.user.upsert({
where: { email: user_info.email },
update: {
diff --git a/src/routes/(no-layout)/logout/+page.server.js b/src/routes/(no-layout)/logout/+page.server.js
index 42f28e8..d0272ef 100644
--- a/src/routes/(no-layout)/logout/+page.server.js
+++ b/src/routes/(no-layout)/logout/+page.server.js
@@ -12,7 +12,6 @@ export async function load({ locals, cookies }) {
await cookies.delete('session', { path: '/' });
await cookies.delete('org', { path: '/' });
}
- console.log('sending to login');
throw redirect(303, '/login');
}
diff --git a/src/routes/(no-layout)/org/new/+page.svelte b/src/routes/(no-layout)/org/new/+page.svelte
index 7117301..246402b 100644
--- a/src/routes/(no-layout)/org/new/+page.svelte
+++ b/src/routes/(no-layout)/org/new/+page.svelte
@@ -8,8 +8,6 @@
export let data;
export let form; // This contains the result of your form action
- console.log('Data:', data);
- console.log('Form result:', form);
// Handle form submission success
$: if (form?.data) {
diff --git a/src/routes/(site)/blog/+page.server.js b/src/routes/(site)/blog/+page.server.js
index 7b0eb61..bf04f83 100644
--- a/src/routes/(site)/blog/+page.server.js
+++ b/src/routes/(site)/blog/+page.server.js
@@ -7,7 +7,7 @@ export async function load({ url }) {
const page = parseInt(url.searchParams.get('page') || '1', 10);
const pageSize = 5; // Number of posts per page
const skip = (page - 1) * pageSize;
- console.log('Page:', page, 'Skip:', skip, 'Page Size:', pageSize);
+ // console.log('Page:', page, 'Skip:', skip, 'Page Size:', pageSize);
// Fetch posts with pagination
const posts = await prisma.blogPost.findMany({
// Temporarily showing all posts for testing
@@ -35,7 +35,7 @@ export async function load({ url }) {
take: pageSize
});
- console.log('Fetched Posts:', posts);
+ // console.log('Fetched Posts:', posts);
// Get total count for pagination
const totalPosts = await prisma.blogPost.count({
// Temporarily counting all posts for testing