Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 28 additions & 3 deletions components/admin/working-groups-table-content.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -138,7 +138,13 @@ export function AdminWorkingGroupsTableContent(
}

const [sortDescriptor, setSortDescriptor] = useState({
column: "name" as "chairs" | "endDate" | "name" | "startDate",
column: "name" as
| "chairs"
| "endDate"
| "name"
| "startDate"
| "memberTracking"
| "mailingList",
direction: "ascending" as "ascending" | "descending",
});

Expand All @@ -164,9 +170,8 @@ export function AdminWorkingGroupsTableContent(
}

default: {
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
const valueA = a[sortDescriptor.column] ?? "";
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition

const valueZ = z[sortDescriptor.column] ?? "";

return valueA.localeCompare(valueZ);
Expand Down Expand Up @@ -221,6 +226,12 @@ export function AdminWorkingGroupsTableContent(
<Column allowsSorting={true} id="endDate">
End date
</Column>
<Column allowsSorting={true} id="mailingList">
Mailing list
</Column>
<Column allowsSorting={true} id="memberTracking">
Member tracking
</Column>
<Column defaultWidth={50} id="actions">
Actions
</Column>
Expand Down Expand Up @@ -257,6 +268,8 @@ export function AdminWorkingGroupsTableContent(
</Cell>
<Cell>{row.startDate != null ? dateTime(row.startDate) : undefined}</Cell>
<Cell>{row.endDate != null ? dateTime(row.endDate) : undefined}</Cell>
<Cell>{row.mailingList}</Cell>
<Cell>{row.memberTracking}</Cell>
<Cell>
<div className="flex justify-end">
<DropdownMenuTrigger>
Expand Down Expand Up @@ -636,6 +649,18 @@ function WorkingGroupEditForm(props: WorkingGroupEditFormProps) {
name="endDate"
/>

<TextInputField
defaultValue={workingGroup?.mailingList ?? undefined}
label="Mailing List"
name="mailingList"
/>

<TextInputField
defaultValue={workingGroup?.memberTracking ?? undefined}
label="Member Tracking"
name="memberTracking"
/>

<FormSuccessMessage key={createKey("form-success", formState?.timestamp)}>
{formState?.status === "success" && formState.message.length > 0 ? formState.message : null}
</FormSuccessMessage>
Expand Down
6 changes: 5 additions & 1 deletion lib/actions/admin/create-working-group.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,8 @@ const formSchema = z.object({
}),
)
.optional(),
mailingList: z.string().optional(),
memberTracking: z.string().optional(),
});

type FormSchema = z.infer<typeof formSchema>;
Expand Down Expand Up @@ -63,7 +65,7 @@ export async function createWorkingGroupAction(
};
}

const { chairs, endDate, name, startDate } = result.data;
const { chairs, endDate, mailingList, memberTracking, name, startDate } = result.data;

try {
const workingGroupChairRole = await getRoleByType("wg_chair");
Expand All @@ -77,6 +79,8 @@ export async function createWorkingGroupAction(
chairs: chairs?.map((chair) => {
return { ...chair, roleId: workingGroupChairRoleId };
}),
mailingList,
memberTracking,
});

revalidatePath("/[locale]/dashboard/admin/working-groups", "page");
Expand Down
6 changes: 5 additions & 1 deletion lib/actions/admin/update-working-group.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@ const formSchema = z.object({
}),
)
.optional(),
mailingList: z.string().optional(),
memberTracking: z.string().optional(),
});

type FormSchema = z.infer<typeof formSchema>;
Expand Down Expand Up @@ -65,7 +67,7 @@ export async function updateWorkingGroupAction(
};
}

const { id, name, endDate, startDate, chairs } = result.data;
const { id, name, endDate, mailingList, memberTracking, startDate, chairs } = result.data;

try {
const workingGroupChairRole = await getRoleByType("wg_chair");
Expand All @@ -80,6 +82,8 @@ export async function updateWorkingGroupAction(
chairs: chairs?.map((chair) => {
return { ...chair, roleId: workingGroupChairRoleId };
}),
mailingList,
memberTracking,
});

revalidatePath("/[locale]/dashboard/admin/working-groups", "page");
Expand Down
12 changes: 10 additions & 2 deletions lib/data/working-group.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,15 +24,19 @@ interface CreateWorkingGroupParams {
name: WorkingGroup["name"];
chairs?: Array<{ personId: string; roleId: string; endDate?: Date; startDate?: Date }>;
endDate?: WorkingGroup["endDate"];
mailingList?: WorkingGroup["mailingList"];
memberTracking?: WorkingGroup["memberTracking"];
startDate?: WorkingGroup["startDate"];
}

export function createWorkingGroup(params: CreateWorkingGroupParams) {
const { chairs = [], endDate, name, startDate } = params;
const { chairs = [], endDate, mailingList, memberTracking, name, startDate } = params;

return db.workingGroup.create({
data: {
endDate,
mailingList,
memberTracking,
name,
startDate,
chairs: {
Expand Down Expand Up @@ -62,18 +66,22 @@ interface UpdateWorkingGroupParams {
startDate?: Date;
}>;
endDate?: WorkingGroup["endDate"];
mailingList?: WorkingGroup["mailingList"];
memberTracking?: WorkingGroup["memberTracking"];
startDate?: WorkingGroup["startDate"];
}

export function updateWorkingGroup(params: UpdateWorkingGroupParams) {
const { id, chairs = [], endDate, name, startDate } = params;
const { id, chairs = [], endDate, mailingList, memberTracking, name, startDate } = params;

return db.workingGroup.update({
where: {
id,
},
data: {
endDate,
mailingList,
memberTracking,
name,
startDate,
chairs: {
Expand Down
4 changes: 2 additions & 2 deletions prisma/dbml/schema.dbml
Original file line number Diff line number Diff line change
Expand Up @@ -288,8 +288,8 @@ Table working_groups {
name String [not null]
startDate DateTime
chairs contributions [not null]
member_tracking String
mailing_list String
memberTracking String
mailingList String
createdAt DateTime [default: `now()`, not null]
updatedAt DateTime [not null]
WGReport wgreports [not null]
Expand Down
4 changes: 2 additions & 2 deletions prisma/schema.prisma
Original file line number Diff line number Diff line change
Expand Up @@ -562,8 +562,8 @@ model WorkingGroup {
startDate DateTime? @map(name: "start_date")

chairs Contribution[]
member_tracking String? // describe how you keep track of the WG members, e.g. via mailing list?
mailing_list String? // If you use a mailing list for the WG communication, provide here.
memberTracking String? @map(name: "member_tracking") // describe how you keep track of the WG members, e.g. via mailing list?
mailingList String? @map(name: "mailing_list") // If you use a mailing list for the WG communication, provide here.

createdAt DateTime @default(now()) @map(name: "created_at")
updatedAt DateTime @updatedAt @map(name: "updated_at")
Expand Down
Loading