diff --git a/client/src/components/task-list/task-list.component.jsx b/client/src/components/task-list/task-list.component.jsx
index 57e145761..0c01ef6a8 100644
--- a/client/src/components/task-list/task-list.component.jsx
+++ b/client/src/components/task-list/task-list.component.jsx
@@ -1,10 +1,3 @@
-import { Button, Card, Space, Switch, Table } from "antd";
-import queryString from "query-string";
-import React, { useCallback, useEffect } from "react";
-import { useTranslation } from "react-i18next";
-import { Link, useLocation, useNavigate } from "react-router-dom";
-import { pageLimit } from "../../utils/config";
-import dayjs from "../../utils/day";
import {
CheckCircleFilled,
CheckCircleOutlined,
@@ -15,9 +8,16 @@ import {
PlusCircleFilled,
SyncOutlined
} from "@ant-design/icons";
-import { DateFormatter, DateTimeFormatter } from "../../utils/DateFormatter.jsx";
+import { Button, Card, Space, Switch, Table } from "antd";
+import queryString from "query-string";
+import React, { useCallback, useEffect } from "react";
+import { useTranslation } from "react-i18next";
import { connect } from "react-redux";
+import { Link, useLocation, useNavigate } from "react-router-dom";
import { setModalContext } from "../../redux/modals/modals.actions";
+import { pageLimit } from "../../utils/config";
+import { DateFormatter, DateTimeFormatter } from "../../utils/DateFormatter.jsx";
+import dayjs from "../../utils/day";
/**
* Task List Component
@@ -140,6 +140,17 @@ function TaskListComponent({
render: (text, record) => {record.created_at}
});
+ columns.push({
+ title: t("tasks.fields.created_by"),
+ dataIndex: "created_by",
+ key: "created_by",
+ width: "10%",
+ defaultSortOrder: "descend",
+ sorter: true,
+ sortOrder: sortcolumn === "created_by" && sortorder,
+ render: (text, record) => record.created_by
+ });
+
if (!onlyMine) {
columns.push({
title: t("tasks.fields.assigned_to"),
diff --git a/client/src/translations/en_us/common.json b/client/src/translations/en_us/common.json
index 7b72e1d61..18b7b4e32 100644
--- a/client/src/translations/en_us/common.json
+++ b/client/src/translations/en_us/common.json
@@ -3187,6 +3187,7 @@
"billid": "Bill",
"completed": "Completed",
"created_at": "Created At",
+ "created_by": "Created By",
"description": "Description",
"due_date": "Due Date",
"job": {
diff --git a/client/src/translations/es/common.json b/client/src/translations/es/common.json
index b6b7aec07..51b4bd8c0 100644
--- a/client/src/translations/es/common.json
+++ b/client/src/translations/es/common.json
@@ -3187,6 +3187,7 @@
"billid": "",
"completed": "",
"created_at": "",
+ "created_by": "",
"description": "",
"due_date": "",
"job": {
diff --git a/client/src/translations/fr/common.json b/client/src/translations/fr/common.json
index 854d0e4e8..0560af00a 100644
--- a/client/src/translations/fr/common.json
+++ b/client/src/translations/fr/common.json
@@ -3187,6 +3187,7 @@
"billid": "",
"completed": "",
"created_at": "",
+ "created_by": "",
"description": "",
"due_date": "",
"job": {
diff --git a/server/email/tasksEmails.js b/server/email/tasksEmails.js
index c8aebaa64..ab25343e0 100644
--- a/server/email/tasksEmails.js
+++ b/server/email/tasksEmails.js
@@ -77,6 +77,7 @@ const formatPriority = (priority) => {
* @param priority
* @param description
* @param dueDate
+ * @param createdBy
* @param bodyshop
* @param job
* @param taskId
@@ -96,11 +97,11 @@ const getEndpoints = (bodyshop) =>
: "https://romeonline.io"
});
-const generateTemplateArgs = (title, priority, description, dueDate, bodyshop, job, taskId, dateLine) => {
+const generateTemplateArgs = (title, priority, description, dueDate, bodyshop, job, taskId, dateLine, createdBy) => {
const endPoints = getEndpoints(bodyshop);
return {
header: title,
- subHeader: `Body Shop: ${bodyshop.shopname} | Priority: ${formatPriority(priority)} ${formatDate(dueDate)}`,
+ subHeader: `Body Shop: ${bodyshop.shopname} | Priority: ${formatPriority(priority)} ${formatDate(dueDate)} | Created By: ${createdBy || "N/A"}`,
body: `Reference: ${job.ro_number || "N/A"} | ${job.ownr_co_nm ? job.ownr_co_nm : `${job.ownr_fn || ""} ${job.ownr_ln || ""}`.trim()} | ${`${job.v_model_yr || ""} ${job.v_make_desc || ""} ${job.v_model_desc || ""}`.trim()}
${description ? description.concat("
") : ""}View this task.`,
dateLine
};
@@ -181,7 +182,8 @@ const taskAssignedEmail = async (req, res) => {
tasks_by_pk.bodyshop,
tasks_by_pk.job,
newTask.id,
- dateLine
+ dateLine,
+ newTask.created_by
)
),
null,
@@ -268,7 +270,8 @@ const tasksRemindEmail = async (req, res) => {
onlyTask.bodyshop,
onlyTask.job,
onlyTask.id,
- dateLine
+ dateLine,
+ onlyTask.created_by
)
);
}
diff --git a/server/graphql-client/queries.js b/server/graphql-client/queries.js
index b1de44a34..99e37bebe 100644
--- a/server/graphql-client/queries.js
+++ b/server/graphql-client/queries.js
@@ -2506,6 +2506,7 @@ exports.QUERY_TASK_BY_ID = `
query QUERY_TASK_BY_ID($id: uuid!) {
tasks_by_pk(id: $id) {
id
+ created_by
assigned_to_employee{
id
user_email