diff --git a/Attendance/Projects/Core/Networking/Model/Sources/Event/AttendanceType.swift b/Attendance/Projects/Core/Networking/Model/Sources/Event/AttendanceType.swift index 14e4383..fae2129 100644 --- a/Attendance/Projects/Core/Networking/Model/Sources/Event/AttendanceType.swift +++ b/Attendance/Projects/Core/Networking/Model/Sources/Event/AttendanceType.swift @@ -35,5 +35,37 @@ public enum AttendanceType: String, Codable { return "NONE" } } + + public var koreanDesc: String { + switch self { + case .present: + return "출석" + case .absent: + return "결석" + case .late: + return "지각" + case .run: + return "탈주" + + default: + return "" + + } + } + + public var imageDesc: String { + switch self { + case .present: + return "Present_icons" + case .absent: + return "Abesent_icons" + case .late: + return "Late_icons" + + default: + return "Present_icons" + + } + } } diff --git a/Attendance/Projects/Core/Networking/Model/Sources/SignUp/MemberType/SelectPart.swift b/Attendance/Projects/Core/Networking/Model/Sources/SignUp/MemberType/SelectPart.swift index 615189c..0278625 100644 --- a/Attendance/Projects/Core/Networking/Model/Sources/SignUp/MemberType/SelectPart.swift +++ b/Attendance/Projects/Core/Networking/Model/Sources/SignUp/MemberType/SelectPart.swift @@ -37,10 +37,8 @@ public enum SelectPart: String, CaseIterable, Codable, Equatable { public var attendanceListDesc: String { switch self { - case .all: - return "전체" case .pm: - return "PM" + return "Product Manager" case .design: return "Designer" case .android: @@ -48,9 +46,11 @@ public enum SelectPart: String, CaseIterable, Codable, Equatable { case .iOS: return "iOS" case .web: - return "FE" + return "Frontend" case .server: - return "BE" + return "Backend" + default: + return "" } } diff --git a/Attendance/Projects/Core/Networking/Model/Sources/SignUp/MemberType/SelectTeam.swift b/Attendance/Projects/Core/Networking/Model/Sources/SignUp/MemberType/SelectTeam.swift index 9701b0a..82ad71d 100644 --- a/Attendance/Projects/Core/Networking/Model/Sources/SignUp/MemberType/SelectTeam.swift +++ b/Attendance/Projects/Core/Networking/Model/Sources/SignUp/MemberType/SelectTeam.swift @@ -126,4 +126,24 @@ public enum SelectTeam: String, CaseIterable, Codable { public var isDescEqualToAttendanceListDesc: Bool { return desc == attendanceListDesc } + + public var attandanceCardDesc: String { + switch self { + case .web1: + return "Web1팀" + case .web2: + return "Web2팀" + case .and1: + return "Android1팀" + case .and2: + return "Android2팀" + case .ios1: + return "iOS1팀" + case .ios2: + return "iOS2팀" + default: + return "" + } } + + } diff --git a/Attendance/Projects/Presentation/Presentation/Sources/CoreMember/AttandanceCheck/View/AttandanceCheckView.swift b/Attendance/Projects/Presentation/Presentation/Sources/CoreMember/AttandanceCheck/View/AttandanceCheckView.swift index c9f21f6..566712e 100644 --- a/Attendance/Projects/Presentation/Presentation/Sources/CoreMember/AttandanceCheck/View/AttandanceCheckView.swift +++ b/Attendance/Projects/Presentation/Presentation/Sources/CoreMember/AttandanceCheck/View/AttandanceCheckView.swift @@ -20,6 +20,9 @@ struct AttandanceCheckView: View { selectPartType() + + AttendanceCheckStatusCard(attandanceType: .present, selectPart: .design, selectTeam: store.selectPart ?? .ios1, name: "김디디") + .padding(.horizontal, 24) } } } diff --git a/Attendance/Projects/Shared/DesignSystem/Resources/ImageAssets.xcassets/Attandance/Abesent_icons.imageset/Abesent_icons.svg b/Attendance/Projects/Shared/DesignSystem/Resources/ImageAssets.xcassets/Attandance/Abesent_icons.imageset/Abesent_icons.svg new file mode 100644 index 0000000..214cbd0 --- /dev/null +++ b/Attendance/Projects/Shared/DesignSystem/Resources/ImageAssets.xcassets/Attandance/Abesent_icons.imageset/Abesent_icons.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/Attendance/Projects/Shared/DesignSystem/Resources/ImageAssets.xcassets/Attandance/Abesent_icons.imageset/Contents.json b/Attendance/Projects/Shared/DesignSystem/Resources/ImageAssets.xcassets/Attandance/Abesent_icons.imageset/Contents.json new file mode 100644 index 0000000..12027fc --- /dev/null +++ b/Attendance/Projects/Shared/DesignSystem/Resources/ImageAssets.xcassets/Attandance/Abesent_icons.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "Abesent_icons.svg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Attendance/Projects/Shared/DesignSystem/Resources/ImageAssets.xcassets/Attandance/Contents.json b/Attendance/Projects/Shared/DesignSystem/Resources/ImageAssets.xcassets/Attandance/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/Attendance/Projects/Shared/DesignSystem/Resources/ImageAssets.xcassets/Attandance/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Attendance/Projects/Shared/DesignSystem/Resources/ImageAssets.xcassets/Attandance/Late_icons.imageset/Contents.json b/Attendance/Projects/Shared/DesignSystem/Resources/ImageAssets.xcassets/Attandance/Late_icons.imageset/Contents.json new file mode 100644 index 0000000..3d6d243 --- /dev/null +++ b/Attendance/Projects/Shared/DesignSystem/Resources/ImageAssets.xcassets/Attandance/Late_icons.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "Late_icons.svg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Attendance/Projects/Shared/DesignSystem/Resources/ImageAssets.xcassets/Attandance/Late_icons.imageset/Late_icons.svg b/Attendance/Projects/Shared/DesignSystem/Resources/ImageAssets.xcassets/Attandance/Late_icons.imageset/Late_icons.svg new file mode 100644 index 0000000..686af34 --- /dev/null +++ b/Attendance/Projects/Shared/DesignSystem/Resources/ImageAssets.xcassets/Attandance/Late_icons.imageset/Late_icons.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/Attendance/Projects/Shared/DesignSystem/Resources/ImageAssets.xcassets/Attandance/Present_icons.imageset/Contents.json b/Attendance/Projects/Shared/DesignSystem/Resources/ImageAssets.xcassets/Attandance/Present_icons.imageset/Contents.json new file mode 100644 index 0000000..78b7013 --- /dev/null +++ b/Attendance/Projects/Shared/DesignSystem/Resources/ImageAssets.xcassets/Attandance/Present_icons.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "Present_icons.svg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Attendance/Projects/Shared/DesignSystem/Resources/ImageAssets.xcassets/Attandance/Present_icons.imageset/Present_icons.svg b/Attendance/Projects/Shared/DesignSystem/Resources/ImageAssets.xcassets/Attandance/Present_icons.imageset/Present_icons.svg new file mode 100644 index 0000000..e99f896 --- /dev/null +++ b/Attendance/Projects/Shared/DesignSystem/Resources/ImageAssets.xcassets/Attandance/Present_icons.imageset/Present_icons.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/Attendance/Projects/Shared/DesignSystem/Sources/Image/ImageAsset.swift b/Attendance/Projects/Shared/DesignSystem/Sources/Image/ImageAsset.swift index f7ec89c..58c89a5 100644 --- a/Attendance/Projects/Shared/DesignSystem/Sources/Image/ImageAsset.swift +++ b/Attendance/Projects/Shared/DesignSystem/Sources/Image/ImageAsset.swift @@ -43,4 +43,10 @@ public enum ImageAsset: String { // MARK: - 멤버 출석 현황 case danger + + + //MARK: - attandance + case Abesent_icons + case Late_icons + case Present_icons } diff --git a/Attendance/Projects/Shared/DesignSystem/Sources/UI/Card/AttendanceCheckStatusCard.swift b/Attendance/Projects/Shared/DesignSystem/Sources/UI/Card/AttendanceCheckStatusCard.swift new file mode 100644 index 0000000..14e04e6 --- /dev/null +++ b/Attendance/Projects/Shared/DesignSystem/Sources/UI/Card/AttendanceCheckStatusCard.swift @@ -0,0 +1,77 @@ +// +// AttendanceCheckStatusCard.swift +// DesignSystem +// +// Created by Wonji Suh on 1/27/25. +// + +import SwiftUI +import Model + +public struct AttendanceCheckStatusCard: View { + private let attandanceType: AttendanceType + private let selectPart: SelectPart + private let selectTeam: SelectTeam + private let name: String + + public init( + attandanceType: AttendanceType, + selectPart: SelectPart, + selectTeam: SelectTeam, + name: String + ) { + self.attandanceType = attandanceType + self.selectPart = selectPart + self.selectTeam = selectTeam + self.name = name + } + + public var body: some View { + VStack { + VStack(spacing: .zero) { + Spacer() + .frame(height: 16) + + HStack { + VStack(alignment: .leading, spacing: .zero) { + HStack { + Text(name) + .pretendardCustomFont(textStyle: .title3NormalBold) + .foregroundStyle(.staticWhite) + Spacer() + } + + Text("\(selectTeam.attandanceCardDesc) / \(selectPart.attendanceListDesc) ") + .pretendardCustomFont(textStyle: .body2NormalBold) + .foregroundStyle(.staticWhite) + } + + Spacer() + + HStack(spacing: .zero) { + Text(attandanceType.koreanDesc) + .pretendardCustomFont(textStyle: .body2NormalMedium) + .foregroundStyle(.staticWhite) + + Spacer() + .frame(width: 12) + + Image(assetName: attandanceType.imageDesc) + .resizable() + .scaledToFit() + .frame(width: 24, height: 24) + } + + } + + + Spacer() + .frame(height: 16) + } + .padding(.horizontal, 20) + } + .background(.borderInverse) + .frame(height: 84) + .cornerRadius(15) + } +}