Skip to content
Draft
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
2 changes: 2 additions & 0 deletions src/backend/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ import retrospectiveRouter from './src/routes/retrospective.routes.js';
import partsRouter from './src/routes/parts.routes.js';
import financeRouter from './src/routes/finance.routes.js';
import calendarRouter from './src/routes/calendar.routes.js';
import prospectiveSponsorRouter from './src/routes/prospective-sponsor.routes.js';

const app = express();

Expand Down Expand Up @@ -103,6 +104,7 @@ app.use('/retrospective', retrospectiveRouter);
app.use('/parts', partsRouter);
app.use('/finance', financeRouter);
app.use('/calendar', calendarRouter);
app.use('/prospective-sponsors', prospectiveSponsorRouter);
app.use('/', (_req, res) => {
res.status(200).json('Welcome to FinishLine');
});
Expand Down
67 changes: 53 additions & 14 deletions src/backend/src/controllers/finance.controllers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,31 +7,43 @@ export default class FinanceController {
const {
name,
activeStatus,
valueTypes,
sponsorValue,
joinDate,
activeYears,
sponsorTierId,
taxExempt,
sponsorContact,
contactName,
contactEmail,
contactPhone,
contactPosition,
sponsorTasks,
discountCode,
sponsorNotes
sponsorNotes,
stockDescription,
discountDescription
} = req.body;

const sponsor = await FinanceServices.createSponsor(
req.currentUser,
name,
activeStatus,
sponsorValue,
valueTypes,
joinDate,
activeYears,
sponsorTierId,
sponsorTierId || undefined,
taxExempt,
sponsorContact,
contactName,
sponsorTasks,
req.organization,
sponsorValue,
discountCode,
sponsorNotes
sponsorNotes,
contactEmail,
contactPhone,
contactPosition,
stockDescription,
discountDescription
);
res.status(200).json(sponsor);
} catch (error: unknown) {
Expand Down Expand Up @@ -73,7 +85,7 @@ export default class FinanceController {
static async editSponsorTask(req: Request, res: Response, next: NextFunction) {
try {
const { sponsorTaskId } = req.params as Record<string, string>;
const { dueDate, notes, notifyDate, assigneeUserId } = req.body;
const { dueDate, notes, notifyDate, assigneeUserId, done } = req.body;

const updatedSponsorTask = await FinanceServices.editSponsorTask(
req.currentUser,
Expand All @@ -82,7 +94,8 @@ export default class FinanceController {
dueDate,
notes,
notifyDate,
assigneeUserId
assigneeUserId,
done
);
res.status(200).json(updatedSponsorTask);
} catch (error: unknown) {
Expand Down Expand Up @@ -323,15 +336,21 @@ export default class FinanceController {
const {
name,
activeStatus,
valueTypes,
sponsorValue,
joinDate,
activeYears,
sponsorTierId,
sponsorContact,
contactName,
contactEmail,
contactPhone,
contactPosition,
taxExempt,
sponsorTasks,
discountCode,
sponsorNotes
sponsorNotes,
stockDescription,
discountDescription
} = req.body;

const updatedSponsor = await FinanceServices.editSponsor(
Expand All @@ -340,15 +359,21 @@ export default class FinanceController {
sponsorId,
name,
activeStatus,
sponsorValue,
valueTypes,
joinDate,
activeYears,
sponsorTierId,
sponsorContact,
sponsorTierId || undefined,
contactName,
taxExempt,
sponsorTasks,
sponsorValue,
discountCode,
sponsorNotes
sponsorNotes,
contactEmail,
contactPhone,
contactPosition,
stockDescription,
discountDescription
);

res.status(200).json(updatedSponsor);
Expand Down Expand Up @@ -385,4 +410,18 @@ export default class FinanceController {
next(error);
}
}

static async toggleSponsorTaskDone(req: Request, res: Response, next: NextFunction) {
try {
const { sponsorTaskId } = req.params as Record<string, string>;
const updatedTask = await FinanceServices.toggleSponsorTaskDone(
req.currentUser,
req.organization,
sponsorTaskId
);
res.status(200).json(updatedTask);
} catch (error: unknown) {
next(error);
}
}
}
175 changes: 175 additions & 0 deletions src/backend/src/controllers/prospective-sponsor.controllers.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,175 @@
import { NextFunction, Request, Response } from 'express';
import ProspectiveSponsorServices from '../services/prospective-sponsor.services.js';

export default class ProspectiveSponsorController {
static async createProspectiveSponsor(req: Request, res: Response, next: NextFunction) {
try {
const {
organizationName,
lastContactDate,
firstContactMethod,
contactName,
contactorUserId,
highlightThresholdDays,
contactEmail,
contactPhone,
contactPosition,
notes,
tasks
} = req.body;

const prospectiveSponsor = await ProspectiveSponsorServices.createProspectiveSponsor(
req.currentUser,
req.organization,
organizationName,
lastContactDate,
firstContactMethod,
contactName,
contactorUserId,
highlightThresholdDays,
contactEmail,
contactPhone,
contactPosition,
notes,
tasks
);
res.status(200).json(prospectiveSponsor);
} catch (error: unknown) {
next(error);
}
}

static async getAllProspectiveSponsors(req: Request, res: Response, next: NextFunction) {
try {
const prospectiveSponsors = await ProspectiveSponsorServices.getAllProspectiveSponsors(req.organization);
res.status(200).json(prospectiveSponsors);
} catch (error: unknown) {
next(error);
}
}

static async editProspectiveSponsor(req: Request, res: Response, next: NextFunction) {
try {
const { prospectiveSponsorId } = req.params as Record<string, string>;
const {
organizationName,
lastContactDate,
status,
firstContactMethod,
contactName,
contactorUserId,
highlightThresholdDays,
contactEmail,
contactPhone,
contactPosition,
notes,
tasks
} = req.body;

const updatedProspectiveSponsor = await ProspectiveSponsorServices.editProspectiveSponsor(
req.currentUser,
req.organization,
prospectiveSponsorId,
organizationName,
lastContactDate,
status,
firstContactMethod,
contactName,
contactorUserId,
highlightThresholdDays,
contactEmail,
contactPhone,
contactPosition,
notes,
tasks
);
res.status(200).json(updatedProspectiveSponsor);
} catch (error: unknown) {
next(error);
}
}

static async deleteProspectiveSponsor(req: Request, res: Response, next: NextFunction) {
try {
const { prospectiveSponsorId } = req.params as Record<string, string>;
const deletedProspectiveSponsor = await ProspectiveSponsorServices.deleteProspectiveSponsor(
prospectiveSponsorId,
req.currentUser,
req.organization
);
res.status(200).json(deletedProspectiveSponsor);
} catch (error: unknown) {
next(error);
}
}

static async getProspectiveSponsorTasks(req: Request, res: Response, next: NextFunction) {
try {
const { prospectiveSponsorId } = req.params as Record<string, string>;
const tasks = await ProspectiveSponsorServices.getProspectiveSponsorTasks(
prospectiveSponsorId,
req.organization.organizationId
);
res.status(200).json(tasks);
} catch (error: unknown) {
next(error);
}
}

static async createProspectiveSponsorTask(req: Request, res: Response, next: NextFunction) {
try {
const { prospectiveSponsorId } = req.params as Record<string, string>;
const { dueDate, notes, notifyDate, assigneeUserId } = req.body;

const task = await ProspectiveSponsorServices.createProspectiveSponsorTask(
req.currentUser,
req.organization,
prospectiveSponsorId,
dueDate,
notes,
notifyDate,
assigneeUserId
);
res.status(200).json(task);
} catch (error: unknown) {
next(error);
}
}

static async acceptProspectiveSponsor(req: Request, res: Response, next: NextFunction) {
try {
const { prospectiveSponsorId } = req.params as Record<string, string>;
const {
sponsorTierId,
valueTypes,
sponsorValue,
joinDate,
activeYears,
taxExempt,
discountCode,
sponsorNotes,
stockDescription,
discountDescription
} = req.body;

const acceptedProspectiveSponsor = await ProspectiveSponsorServices.acceptProspectiveSponsor(
req.currentUser,
req.organization,
prospectiveSponsorId,
sponsorTierId || undefined,
valueTypes,
joinDate,
activeYears,
taxExempt,
sponsorValue,
discountCode,
sponsorNotes,
stockDescription,
discountDescription
);
res.status(200).json(acceptedProspectiveSponsor);
} catch (error: unknown) {
next(error);
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
import { Prisma } from '@prisma/client';
import { getUserQueryArgs } from './user.query-args.js';
import { getSponsorTaskQueryArgs } from './sponsor.query.args.js';

export type ProspectiveSponsorQueryArgs = ReturnType<typeof getProspectiveSponsorQueryArgs>;

export const getProspectiveSponsorQueryArgs = (organizationId: string) =>
Prisma.validator<Prisma.Prospective_SponsorDefaultArgs>()({
include: {
contactor: getUserQueryArgs(organizationId),
tasks: getSponsorTaskQueryArgs(organizationId),
contact: true
}
});
3 changes: 2 additions & 1 deletion src/backend/src/prisma-query-args/sponsor.query.args.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@ export const getSponsorQueryArgs = (organizationId: string) =>
Prisma.validator<Prisma.SponsorDefaultArgs>()({
include: {
sponsorTasks: getSponsorTaskQueryArgs(organizationId),
tier: true
tier: true,
contact: true
}
});

Expand Down
Loading
Loading