Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
 into dev
  • Loading branch information
pbc1017 committed Jan 24, 2025
2 parents e71257b + e27a062 commit d58da33
Show file tree
Hide file tree
Showing 30 changed files with 622 additions and 377 deletions.
24 changes: 24 additions & 0 deletions packages/api/src/feature/activity/service/activity.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -173,6 +173,12 @@ export default class ActivityService {
);
}

/**
*
* @param enums: ActivityDeadlineEnum의 배열을 받습니다.
* @description 오늘이 해당하는 deadlineEnum이 enums에 포함되어있지 않으면 400 exception을 throw
* @returns void
*/
private async checkDeadline(param: { enums: Array<ActivityDeadlineEnum> }) {
const today = getKSTDate();
const todayDeadline = await this.activityRepository
Expand All @@ -195,6 +201,13 @@ export default class ActivityService {
);
}

/**
*
* @param clubId
* @param executiveId
* @description 동아리의 담당 집행부원을 변경합니다.
* 해당 동아리의 활동에 대한 개별 담당 집행부원도 전부 덮어씌웁니다.
*/
private async changeClubChargedExecutive(param: {
clubId: number;
executiveId: number;
Expand Down Expand Up @@ -968,6 +981,17 @@ export default class ActivityService {
"the activity is already approved",
HttpStatus.BAD_REQUEST,
);

const isInsertionSucceed =
await this.activityRepository.insertActivityFeedback({
activityId: param.param.activityId,
comment: "활동이 승인되었습니다", // feedback에 승인을 기록하기 위한 임의의 문자열ㄴ
executiveId: param.executiveId,
});
if (!isInsertionSucceed)
throw new HttpException("unreachable", HttpStatus.INTERNAL_SERVER_ERROR);

return {};
return {};
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ import apiFnd005, {
} from "@sparcs-clubs/interface/api/funding/endpoint/apiFnd005";
import apiFnd006, {
ApiFnd006RequestParam,
ApiFnd006RequestQuery,
ApiFnd006ResponseOk,
} from "@sparcs-clubs/interface/api/funding/endpoint/apiFnd006";
import apiFnd007 from "@sparcs-clubs/interface/api/funding/endpoint/apiFnd007";
Expand Down
25 changes: 0 additions & 25 deletions packages/api/src/feature/funding/service/funding.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -167,31 +167,6 @@ export default class FundingService {
);
}

if (funding.jointExpense) {
funding.jointExpense.files = await this.filePublicService.getFilesByIds(
funding.laborContract.files.flatMap(file => file.id),
);
}

if (funding.etcExpense) {
funding.etcExpense.files = await this.filePublicService.getFilesByIds(
funding.etcExpense.files.flatMap(file => file.id),
);
}

if (funding.publication) {
funding.publication.files = await this.filePublicService.getFilesByIds(
funding.publication.files.flatMap(file => file.id),
);
}

if (funding.profitMakingActivity) {
funding.profitMakingActivity.files =
await this.filePublicService.getFilesByIds(
funding.profitMakingActivity.files.flatMap(file => file.id),
);
}

if (funding.jointExpense) {
funding.jointExpense.files = await this.filePublicService.getFilesByIds(
funding.jointExpense.files.flatMap(file => file.id),
Expand Down
2 changes: 1 addition & 1 deletion packages/interface/src/api/funding/endpoint/apiFnd006.ts
Original file line number Diff line number Diff line change
Expand Up @@ -48,8 +48,8 @@ type ApiFnd006ResponseOk = z.infer<(typeof apiFnd006.responseBodyMap)[200]>;
export default apiFnd006;

export type {
ApiFnd006RequestBody,
ApiFnd006RequestParam,
ApiFnd006RequestQuery,
ApiFnd006RequestBody,
ApiFnd006ResponseOk,
};
65 changes: 50 additions & 15 deletions packages/web/src/app/manage-club/funding/[id]/page.tsx
Original file line number Diff line number Diff line change
@@ -1,24 +1,59 @@
"use client";

import React from "react";
import { useEffect, useState } from "react";

import AsyncBoundary from "@sparcs-clubs/web/common/components/AsyncBoundary";
import FlexWrapper from "@sparcs-clubs/web/common/components/FlexWrapper";
import PageHead from "@sparcs-clubs/web/common/components/PageHead";
import LoginRequired from "@sparcs-clubs/web/common/frames/LoginRequired";
import NoManageClub from "@sparcs-clubs/web/common/frames/NoManageClub";
import { useAuth } from "@sparcs-clubs/web/common/providers/AuthContext";
import FundingDetailFrame from "@sparcs-clubs/web/features/manage-club/funding/detail/frames/FundingDetailFrame";
import { useGetMyManageClub } from "@sparcs-clubs/web/features/manage-club/services/getMyManageClub";

const FundingDetail = () => (
<FlexWrapper direction="column" gap={60}>
<PageHead
items={[
{ name: "대표 동아리 관리", path: "/manage-club" },
{ name: "지원금", path: "/manage-club/funding" },
]}
title="지원금 신청"
enableLast
/>
{/* TODO: 기간 맞춰서 isNow 설정 */}
<FundingDetailFrame isNow />
</FlexWrapper>
);
const FundingDetail = () => {
const { isLoggedIn, login, profile } = useAuth();
const [loading, setLoading] = useState(true);

const { data, isLoading, isError } = useGetMyManageClub();

useEffect(() => {
if (isLoggedIn !== undefined || profile !== undefined) {
setLoading(false);
}
}, [isLoggedIn, profile]);

if (loading) {
return <AsyncBoundary isLoading={loading} isError />;
}

if (!isLoggedIn) {
return <LoginRequired login={login} />;
}

if (profile?.type !== "undergraduate") {
return <NoManageClub />;
}

if (!data || !("clubId" in data)) {
return <AsyncBoundary isLoading={isLoading} isError={isError} />;
}

return (
<AsyncBoundary isLoading={isLoading} isError={isError}>
<FlexWrapper direction="column" gap={60}>
<PageHead
items={[
{ name: "대표 동아리 관리", path: "/manage-club" },
{ name: "지원금", path: "/manage-club/funding" },
]}
title="지원금 신청"
enableLast
/>
{/* TODO: 기간 맞춰서 isNow 설정 */}
<FundingDetailFrame isNow clubId={data.clubId} />
</FlexWrapper>
</AsyncBoundary>
);
};
export default FundingDetail;
2 changes: 1 addition & 1 deletion packages/web/src/app/manage-club/funding/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ const Funding: React.FC = () => {
/>
<AsyncBoundary isLoading={isLoading} isError={isError}>
<NewFundingListSection clubId={data?.clubId} />
<PastFundingListSection />
<PastFundingListSection clubId={data?.clubId} />
</AsyncBoundary>
</FlexWrapper>
);
Expand Down
3 changes: 2 additions & 1 deletion packages/web/src/constants/manageClubFunding.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,10 @@ const numberToKrWon = (amount: number) => `${amount.toLocaleString("ko-KR")}원`

const pastFundingListSectionTitle = "과거 지원금 내역";
const singleSemesterFundingListSectionTitleText = (
year: number,
semester: string,
itemCount: number,
) => `${semester} (총 ${itemCount}개)`;
) => `${year}${semester}학기 (총 ${itemCount}개)`;

export {
manageClubFundingPageBreadCrumbName,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -283,10 +283,15 @@ const ActivityReportDetailFrame: React.FC<ActivityReportDetailFrameProps> = ({
data.comments.length > 0 && (
<RejectReasonToast
title="반려 사유"
reasons={data.comments.map(comment => ({
datetime: comment.createdAt,
reason: comment.content,
}))}
reasons={data.comments
.filter(
comment =>
comment.content !== "활동이 승인되었습니다",
)
.map(comment => ({
datetime: comment.createdAt,
reason: comment.content,
}))}
/>
)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -170,9 +170,7 @@ const FixtureEvidenceBlock: React.FC<FixtureEvidenceBlockProps> = ({
<TextInput
{...props}
placeholder={
(isFixture
? fixtureClassEnum
: clubSuppliesClassEnum) === FixtureClassEnum.Software
fixtureClassEnum === FixtureClassEnum.Software
? "소프트웨어 증빙을 입력하세요"
: `${content} 증빙을 입력하세요`
}
Expand All @@ -183,19 +181,17 @@ const FixtureEvidenceBlock: React.FC<FixtureEvidenceBlockProps> = ({
) : (
<FormController
name={
fixtureClassEnum === FixtureClassEnum.Software
? "fixtureSoftwareEvidence"
: "fixturePurpose"
clubSuppliesClassEnum === FixtureClassEnum.Software
? "clubSuppliesSoftwareEvidence"
: "clubSuppliesPurpose"
}
required={required}
control={control}
renderItem={props => (
<TextInput
{...props}
placeholder={
(isFixture
? fixtureClassEnum
: clubSuppliesClassEnum) === FixtureClassEnum.Software
clubSuppliesClassEnum === FixtureClassEnum.Software
? "소프트웨어 증빙을 입력하세요"
: `${content} 증빙을 입력하세요`
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,12 @@ import React from "react";

import styled from "styled-components";

import AsyncBoundary from "@sparcs-clubs/web/common/components/AsyncBoundary";
import FoldableSectionTitle from "@sparcs-clubs/web/common/components/FoldableSectionTitle";
import { pastFundingListSectionTitle } from "@sparcs-clubs/web/constants/manageClubFunding";

import useGetActivityTerms from "@sparcs-clubs/web/features/activity-report/services/useGetActivityTerms";

import PastSingleSemesterFundingListSection from "./_atomic/PastSingleSemesterFundingListSection";

const PastFundingListSectionInner = styled.div`
Expand Down Expand Up @@ -43,17 +46,34 @@ const PastFundingListSectionContents = styled.div`
flex-grow: 0; */
`;

const PastFundingListSection: React.FC = () => (
<PastFundingListSectionInner>
<FoldableSectionTitle title={pastFundingListSectionTitle}>
<PastFundingListSectionContents>
{/* TODO: ManageClubFundingMainFrame으로부터 주입받은 테이블 데이터 매핑하기 */}
<PastSingleSemesterFundingListSection />
<PastSingleSemesterFundingListSection />
<PastSingleSemesterFundingListSection />
</PastFundingListSectionContents>
</FoldableSectionTitle>
</PastFundingListSectionInner>
);
const PastFundingListSection: React.FC<{ clubId: number }> = ({ clubId }) => {
const {
data: activityTerms,
isLoading,
isError,
} = useGetActivityTerms({ clubId });

if (!activityTerms) {
return null;
}

return (
<PastFundingListSectionInner>
<FoldableSectionTitle title={pastFundingListSectionTitle}>
<AsyncBoundary isLoading={isLoading} isError={isError}>
<PastFundingListSectionContents>
{activityTerms.terms.toReversed().map(term => (
<PastSingleSemesterFundingListSection
key={term.id}
termId={term.id}
clubId={clubId}
/>
))}
</PastFundingListSectionContents>
</AsyncBoundary>
</FoldableSectionTitle>
</PastFundingListSectionInner>
);
};

export default PastFundingListSection;
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ import {
useReactTable,
} from "@tanstack/react-table";

import { useRouter } from "next/navigation";

import Table from "@sparcs-clubs/web/common/components/Table";
import TableCell from "@sparcs-clubs/web/common/components/Table/TableCell";
import { TableRow } from "@sparcs-clubs/web/common/components/Table/TableWrapper";
Expand Down Expand Up @@ -60,6 +62,7 @@ const columns = [
const NewFundingListTable: React.FC<NewFundingListTableProps> = ({
newFundingList = [],
}) => {
const router = useRouter();
const table = useReactTable({
columns,
data: newFundingList,
Expand All @@ -71,6 +74,7 @@ const NewFundingListTable: React.FC<NewFundingListTableProps> = ({
<Table
table={table}
count={newFundingList.length}
onClick={row => router.push(`/manage-club/funding/${row.id}`)}
footer={
<TableRow>
<TableCell type="Default" width="70%">
Expand Down
Loading

0 comments on commit d58da33

Please sign in to comment.