diff --git a/SOPT-iOS/Projects/Data/Sources/Repository/ShowAttendanceRepository.swift b/SOPT-iOS/Projects/Data/Sources/Repository/ShowAttendanceRepository.swift index c0d1e1d80..acb372d77 100644 --- a/SOPT-iOS/Projects/Data/Sources/Repository/ShowAttendanceRepository.swift +++ b/SOPT-iOS/Projects/Data/Sources/Repository/ShowAttendanceRepository.swift @@ -25,50 +25,50 @@ public class ShowAttendanceRepository { extension ShowAttendanceRepository: ShowAttendanceRepositoryInterface { public func fetchAttendanceScheduleModel() -> AnyPublisher { - return Future { promise in +// return Future { promise in +//// promise(.success(AttendanceScheduleModel(type: "HAS_ATTENDANCE", +//// location: "단국대학교 혜당관", +//// name: "3차 세미나", +//// startDate: "2023-04-06T14:14:00", endDate: "2023-04-06T18:00:00", message: "", +//// attendances: [TodayAttendanceModel(status: "ATTENDANCE", attendedAt: "2023-04-13T14:12:09"), +//// TodayAttendanceModel(status: "ABSENT", attendedAt: +//// "2023-04-13T14:10:04")]))) +// // promise(.success(AttendanceScheduleModel(type: "HAS_ATTENDANCE", -// location: "단국대학교 혜당관", -// name: "3차 세미나", -// startDate: "2023-04-06T14:14:00", endDate: "2023-04-06T18:00:00", message: "", +// location: "한국대학교 혜당관", +// name: "2차 행사", +// startDate: "2023-04-06T14:14:00", endDate: "2023-04-06T18:00:00", +// message: "행사도 참여하고, 출석점수도 받고, 일석이조!", // attendances: [TodayAttendanceModel(status: "ATTENDANCE", attendedAt: "2023-04-13T14:12:09"), -// TodayAttendanceModel(status: "ABSENT", attendedAt: -// "2023-04-13T14:10:04")]))) - - promise(.success(AttendanceScheduleModel(type: "HAS_ATTENDANCE", - location: "한국대학교 혜당관", - name: "2차 행사", - startDate: "2023-04-06T14:14:00", endDate: "2023-04-06T18:00:00", - message: "행사도 참여하고, 출석점수도 받고, 일석이조!", - attendances: [TodayAttendanceModel(status: "ATTENDANCE", attendedAt: "2023-04-13T14:12:09"), - TodayAttendanceModel(status: "ABSENT", attendedAt: "2023-04-13T14:10:04")]))) - -// promise(.success(AttendanceScheduleModel(type: "NO_SESSION", -// location: "", -// name: "", -// startDate: "", endDate: "", message: "", -// attendances: [TodayAttendanceModel(status: "", attendedAt: ""), -// TodayAttendanceModel(status: "", attendedAt: "")]))) - } - .eraseToAnyPublisher() -// return self.attendanceService.fetchAttendanceSchedule() -// .map { $0.toDomain() } -// .eraseToAnyPublisher() +// TodayAttendanceModel(status: "ABSENT", attendedAt: "2023-04-13T14:10:04")]))) +// +//// promise(.success(AttendanceScheduleModel(type: "NO_SESSION", +//// location: "", +//// name: "", +//// startDate: "", endDate: "", message: "", +//// attendances: [TodayAttendanceModel(status: "", attendedAt: ""), +//// TodayAttendanceModel(status: "", attendedAt: "")]))) +// } +// .eraseToAnyPublisher() + return self.attendanceService.fetchAttendanceSchedule() + .compactMap { $0.data?.toDomain() } + .eraseToAnyPublisher() } public func fetchAttendanceScoreModel() -> AnyPublisher { - return Future { promise in - promise(.success(AttendanceScoreModel.init(part: "iOS", - generation: 31, - name: "윤수빈", - score: 2.0, - total: TotalScoreModel(attendance: 2, absent: 0, tardy: 1, participate: 1), - attendances: [AttendanceModel(attribute: "ETC", name: "솝커톤", status: "TARDY", date: "4월 22일"), - AttendanceModel(attribute: "SEMINAR", name: "iOS 2차 세미나", status: "ATTENDANCE", date: "4월 15일"), - AttendanceModel(attribute: "SEMINAR", name: "iOS 1차 세미나", status: "ATTENDANCE", date: "4월 8일"), - AttendanceModel(attribute: "ETC", name: "OT", status: "PARTICIPATE", date: "4월 1일")]))) - }.eraseToAnyPublisher() -// return self.attendanceService.fetchAttendanceScore() -// .map { $0.toDomain() } -// .eraseToAnyPublisher() +// return Future { promise in +// promise(.success(AttendanceScoreModel.init(part: "iOS", +// generation: 31, +// name: "윤수빈", +// score: 2.0, +// total: TotalScoreModel(attendance: 2, absent: 0, tardy: 1, participate: 1), +// attendances: [AttendanceModel(attribute: "ETC", name: "솝커톤", status: "TARDY", date: "4월 22일"), +// AttendanceModel(attribute: "SEMINAR", name: "iOS 2차 세미나", status: "ATTENDANCE", date: "4월 15일"), +// AttendanceModel(attribute: "SEMINAR", name: "iOS 1차 세미나", status: "ATTENDANCE", date: "4월 8일"), +// AttendanceModel(attribute: "ETC", name: "OT", status: "PARTICIPATE", date: "4월 1일")]))) +// }.eraseToAnyPublisher() + return self.attendanceService.fetchAttendanceScore() + .compactMap{ $0.data?.toDomain() } + .eraseToAnyPublisher() } } diff --git a/SOPT-iOS/Projects/Domain/Sources/UseCase/ShowAttendanceUseCase.swift b/SOPT-iOS/Projects/Domain/Sources/UseCase/ShowAttendanceUseCase.swift index 21e85981f..7c20cd582 100644 --- a/SOPT-iOS/Projects/Domain/Sources/UseCase/ShowAttendanceUseCase.swift +++ b/SOPT-iOS/Projects/Domain/Sources/UseCase/ShowAttendanceUseCase.swift @@ -33,7 +33,7 @@ extension DefaultShowAttendanceUseCase: ShowAttendanceUseCase { public func fetchAttendanceSchedule() { self.repository.fetchAttendanceScheduleModel() .sink(receiveCompletion: { event in - print("completion: \(event)") + print("completion: fetchAttendanceSchedule \(event)") }, receiveValue: { model in self.attendanceScheduleFetched.send(model) }) @@ -43,7 +43,7 @@ extension DefaultShowAttendanceUseCase: ShowAttendanceUseCase { public func fetchAttendanceScore() { self.repository.fetchAttendanceScoreModel() .sink(receiveCompletion: { event in - print("completion: \(event)") + print("completion: fetchAttendanceScore \(event)") }, receiveValue: { model in self.attendanceScoreFetched.send(model) }) diff --git a/SOPT-iOS/Projects/Features/AttendanceFeature/Sources/ShowAttendanceScene/Views/ShowAttendanceVC.swift b/SOPT-iOS/Projects/Features/AttendanceFeature/Sources/ShowAttendanceScene/VC/ShowAttendanceVC.swift similarity index 98% rename from SOPT-iOS/Projects/Features/AttendanceFeature/Sources/ShowAttendanceScene/Views/ShowAttendanceVC.swift rename to SOPT-iOS/Projects/Features/AttendanceFeature/Sources/ShowAttendanceScene/VC/ShowAttendanceVC.swift index 82746b561..15f3b3c77 100644 --- a/SOPT-iOS/Projects/Features/AttendanceFeature/Sources/ShowAttendanceScene/Views/ShowAttendanceVC.swift +++ b/SOPT-iOS/Projects/Features/AttendanceFeature/Sources/ShowAttendanceScene/VC/ShowAttendanceVC.swift @@ -103,7 +103,8 @@ extension ShowAttendanceVC { containerScrollView.snp.makeConstraints { $0.top.equalTo(navibar.snp.bottom) - $0.leading.trailing.bottom.equalTo(view.safeAreaLayoutGuide) + $0.leading.trailing.equalTo(view.safeAreaLayoutGuide) + $0.bottom.equalToSuperview() } contentView.snp.makeConstraints { diff --git a/SOPT-iOS/Projects/Modules/DSKit/Resources/Assets.xcassets/Attendance/op_attend_done.imageset/Contents.json b/SOPT-iOS/Projects/Modules/DSKit/Resources/Assets.xcassets/Attendance/op_attend_done.imageset/Contents.json new file mode 100644 index 000000000..3f4b51595 --- /dev/null +++ b/SOPT-iOS/Projects/Modules/DSKit/Resources/Assets.xcassets/Attendance/op_attend_done.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "Property 1=Done.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Property 1=Done@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Property 1=Done@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/SOPT-iOS/Projects/Modules/DSKit/Resources/Assets.xcassets/Attendance/op_attend_done.imageset/Property 1=Done.png b/SOPT-iOS/Projects/Modules/DSKit/Resources/Assets.xcassets/Attendance/op_attend_done.imageset/Property 1=Done.png new file mode 100644 index 000000000..ac4dc33c1 Binary files /dev/null and b/SOPT-iOS/Projects/Modules/DSKit/Resources/Assets.xcassets/Attendance/op_attend_done.imageset/Property 1=Done.png differ diff --git a/SOPT-iOS/Projects/Modules/DSKit/Resources/Assets.xcassets/Attendance/op_attend_done.imageset/Property 1=Done@2x.png b/SOPT-iOS/Projects/Modules/DSKit/Resources/Assets.xcassets/Attendance/op_attend_done.imageset/Property 1=Done@2x.png new file mode 100644 index 000000000..d2e21457d Binary files /dev/null and b/SOPT-iOS/Projects/Modules/DSKit/Resources/Assets.xcassets/Attendance/op_attend_done.imageset/Property 1=Done@2x.png differ diff --git a/SOPT-iOS/Projects/Modules/DSKit/Resources/Assets.xcassets/Attendance/op_attend_done.imageset/Property 1=Done@3x.png b/SOPT-iOS/Projects/Modules/DSKit/Resources/Assets.xcassets/Attendance/op_attend_done.imageset/Property 1=Done@3x.png new file mode 100644 index 000000000..bbc4998ae Binary files /dev/null and b/SOPT-iOS/Projects/Modules/DSKit/Resources/Assets.xcassets/Attendance/op_attend_done.imageset/Property 1=Done@3x.png differ diff --git a/SOPT-iOS/Projects/Modules/DSKit/Resources/Assets.xcassets/Attendance/op_attend_late.imageset/Contents.json b/SOPT-iOS/Projects/Modules/DSKit/Resources/Assets.xcassets/Attendance/op_attend_late.imageset/Contents.json new file mode 100644 index 000000000..d7d1355f1 --- /dev/null +++ b/SOPT-iOS/Projects/Modules/DSKit/Resources/Assets.xcassets/Attendance/op_attend_late.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "Property 1=Late.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Property 1=Late@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Property 1=Late@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/SOPT-iOS/Projects/Modules/DSKit/Resources/Assets.xcassets/Attendance/op_attend_late.imageset/Property 1=Late.png b/SOPT-iOS/Projects/Modules/DSKit/Resources/Assets.xcassets/Attendance/op_attend_late.imageset/Property 1=Late.png new file mode 100644 index 000000000..0da6a3e9f Binary files /dev/null and b/SOPT-iOS/Projects/Modules/DSKit/Resources/Assets.xcassets/Attendance/op_attend_late.imageset/Property 1=Late.png differ diff --git a/SOPT-iOS/Projects/Modules/DSKit/Resources/Assets.xcassets/Attendance/op_attend_late.imageset/Property 1=Late@2x.png b/SOPT-iOS/Projects/Modules/DSKit/Resources/Assets.xcassets/Attendance/op_attend_late.imageset/Property 1=Late@2x.png new file mode 100644 index 000000000..03e4f2162 Binary files /dev/null and b/SOPT-iOS/Projects/Modules/DSKit/Resources/Assets.xcassets/Attendance/op_attend_late.imageset/Property 1=Late@2x.png differ diff --git a/SOPT-iOS/Projects/Modules/DSKit/Resources/Assets.xcassets/Attendance/op_attend_late.imageset/Property 1=Late@3x.png b/SOPT-iOS/Projects/Modules/DSKit/Resources/Assets.xcassets/Attendance/op_attend_late.imageset/Property 1=Late@3x.png new file mode 100644 index 000000000..788156415 Binary files /dev/null and b/SOPT-iOS/Projects/Modules/DSKit/Resources/Assets.xcassets/Attendance/op_attend_late.imageset/Property 1=Late@3x.png differ diff --git a/SOPT-iOS/Projects/Modules/DSKit/Resources/Assets.xcassets/Attendance/op_attend_no.imageset/Contents.json b/SOPT-iOS/Projects/Modules/DSKit/Resources/Assets.xcassets/Attendance/op_attend_no.imageset/Contents.json new file mode 100644 index 000000000..9d1ce67c6 --- /dev/null +++ b/SOPT-iOS/Projects/Modules/DSKit/Resources/Assets.xcassets/Attendance/op_attend_no.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "Property 1=No.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Property 1=No@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Property 1=No@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/SOPT-iOS/Projects/Modules/DSKit/Resources/Assets.xcassets/Attendance/op_attend_no.imageset/Property 1=No.png b/SOPT-iOS/Projects/Modules/DSKit/Resources/Assets.xcassets/Attendance/op_attend_no.imageset/Property 1=No.png new file mode 100644 index 000000000..8ae3650a1 Binary files /dev/null and b/SOPT-iOS/Projects/Modules/DSKit/Resources/Assets.xcassets/Attendance/op_attend_no.imageset/Property 1=No.png differ diff --git a/SOPT-iOS/Projects/Modules/DSKit/Resources/Assets.xcassets/Attendance/op_attend_no.imageset/Property 1=No@2x.png b/SOPT-iOS/Projects/Modules/DSKit/Resources/Assets.xcassets/Attendance/op_attend_no.imageset/Property 1=No@2x.png new file mode 100644 index 000000000..086de55a0 Binary files /dev/null and b/SOPT-iOS/Projects/Modules/DSKit/Resources/Assets.xcassets/Attendance/op_attend_no.imageset/Property 1=No@2x.png differ diff --git a/SOPT-iOS/Projects/Modules/DSKit/Resources/Assets.xcassets/Attendance/op_attend_no.imageset/Property 1=No@3x.png b/SOPT-iOS/Projects/Modules/DSKit/Resources/Assets.xcassets/Attendance/op_attend_no.imageset/Property 1=No@3x.png new file mode 100644 index 000000000..8c2a6e7c6 Binary files /dev/null and b/SOPT-iOS/Projects/Modules/DSKit/Resources/Assets.xcassets/Attendance/op_attend_no.imageset/Property 1=No@3x.png differ diff --git a/SOPT-iOS/Projects/Modules/DSKit/Resources/Assets.xcassets/Attendance/op_attend_yes.imageset/Contents.json b/SOPT-iOS/Projects/Modules/DSKit/Resources/Assets.xcassets/Attendance/op_attend_yes.imageset/Contents.json new file mode 100644 index 000000000..3ae3e3cd4 --- /dev/null +++ b/SOPT-iOS/Projects/Modules/DSKit/Resources/Assets.xcassets/Attendance/op_attend_yes.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "Property 1=Yes.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Property 1=Yes@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Property 1=Yes@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/SOPT-iOS/Projects/Modules/DSKit/Resources/Assets.xcassets/Attendance/op_attend_yes.imageset/Property 1=Yes.png b/SOPT-iOS/Projects/Modules/DSKit/Resources/Assets.xcassets/Attendance/op_attend_yes.imageset/Property 1=Yes.png new file mode 100644 index 000000000..9dc3ed08e Binary files /dev/null and b/SOPT-iOS/Projects/Modules/DSKit/Resources/Assets.xcassets/Attendance/op_attend_yes.imageset/Property 1=Yes.png differ diff --git a/SOPT-iOS/Projects/Modules/DSKit/Resources/Assets.xcassets/Attendance/op_attend_yes.imageset/Property 1=Yes@2x.png b/SOPT-iOS/Projects/Modules/DSKit/Resources/Assets.xcassets/Attendance/op_attend_yes.imageset/Property 1=Yes@2x.png new file mode 100644 index 000000000..907b60d1c Binary files /dev/null and b/SOPT-iOS/Projects/Modules/DSKit/Resources/Assets.xcassets/Attendance/op_attend_yes.imageset/Property 1=Yes@2x.png differ diff --git a/SOPT-iOS/Projects/Modules/DSKit/Resources/Assets.xcassets/Attendance/op_attend_yes.imageset/Property 1=Yes@3x.png b/SOPT-iOS/Projects/Modules/DSKit/Resources/Assets.xcassets/Attendance/op_attend_yes.imageset/Property 1=Yes@3x.png new file mode 100644 index 000000000..8e64e750c Binary files /dev/null and b/SOPT-iOS/Projects/Modules/DSKit/Resources/Assets.xcassets/Attendance/op_attend_yes.imageset/Property 1=Yes@3x.png differ diff --git a/SOPT-iOS/Projects/Modules/Network/Sources/Foundation/BaseEntity.swift b/SOPT-iOS/Projects/Modules/Network/Sources/Foundation/BaseEntity.swift new file mode 100644 index 000000000..dcc6437ef --- /dev/null +++ b/SOPT-iOS/Projects/Modules/Network/Sources/Foundation/BaseEntity.swift @@ -0,0 +1,15 @@ +// +// BaseEntity.swift +// Network +// +// Created by 김영인 on 2023/04/16. +// Copyright © 2023 SOPT-iOS. All rights reserved. +// + +import Foundation + +public struct BaseEntity: Decodable { + let success: Bool + let message: String + public let data: T? +} diff --git a/SOPT-iOS/Projects/Modules/Network/Sources/Service/AttendanceService.swift b/SOPT-iOS/Projects/Modules/Network/Sources/Service/AttendanceService.swift index 5d3e6dc68..b0c263f8e 100644 --- a/SOPT-iOS/Projects/Modules/Network/Sources/Service/AttendanceService.swift +++ b/SOPT-iOS/Projects/Modules/Network/Sources/Service/AttendanceService.swift @@ -15,17 +15,17 @@ import Moya public typealias DefaultAttendanceService = BaseService public protocol AttendanceService { - func fetchAttendanceSchedule() -> AnyPublisher - func fetchAttendanceScore() -> AnyPublisher + func fetchAttendanceSchedule() -> AnyPublisher, Error> + func fetchAttendanceScore() -> AnyPublisher, Error> } extension DefaultAttendanceService: AttendanceService { - public func fetchAttendanceSchedule() -> AnyPublisher { - requestObjectInCombine(AttendanceAPI.score) + public func fetchAttendanceSchedule() -> AnyPublisher, Error> { + requestObjectInCombine(AttendanceAPI.lecture) } - public func fetchAttendanceScore() -> AnyPublisher { - requestObjectInCombine(AttendanceAPI.lecture) + public func fetchAttendanceScore() -> AnyPublisher, Error> { + requestObjectInCombine(AttendanceAPI.total) } }