diff --git a/DE/DE/Sources/Core/CommonUI/View/AverageTastingNoteView.swift b/DE/DE/Sources/Core/CommonUI/View/AverageTastingNoteView.swift index f4481c22..4c482278 100644 --- a/DE/DE/Sources/Core/CommonUI/View/AverageTastingNoteView.swift +++ b/DE/DE/Sources/Core/CommonUI/View/AverageTastingNoteView.swift @@ -7,17 +7,14 @@ import Then import DesignSystem public class AverageTastingNoteView: UIView { + private let title = TitleWithoutBarView(title: "Tasting Note", subTitle: "테이스팅 노트") + public let writeNewTastingNoteBtn = TextIconButton(title: "작성하러 가기") - private lazy var noTastinNote = UILabel().then { - $0.text = "작성된 테이스팅 노트가 없습니다." - $0.textColor = AppColor.gray70 - $0.font = UIFont.pretendard(.regular, size: 14) + private let tastingNoteContentView = UIView() + private let noTastingNote = UILabel().then { $0.isHidden = true } - private let title = TitleWithoutBarView(title: "Tasting Note", subTitle: "테이스팅 노트") - public let writeNewTastingNoteBtn = TextIconButton(title: "작성하러 가기") - private let nose = UILabel() private let palate = UILabel() public lazy var noseContents = UILabel() @@ -36,10 +33,16 @@ public class AverageTastingNoteView: UIView { } private func setupUI() { - addSubviews(title, writeNewTastingNoteBtn, nose, palate, noseContents, palateContents, noTastinNote) + addSubviews(title, writeNewTastingNoteBtn, tastingNoteContentView, noTastingNote) + tastingNoteContentView.addSubviews(nose, palate, noseContents, palateContents) AppTextStyle.KR.body2.apply(to: nose, text: "Nose", color: AppColor.gray50) AppTextStyle.KR.body2.apply(to: palate, text: "Palate", color: AppColor.gray50) + AppTextStyle.KR.body2.apply( + to: noTastingNote, + text: "작성된 테이스팅 노트가 없습니다.", + color: AppColor.gray70 + ) [noseContents, palateContents].forEach { $0.numberOfLines = 0 @@ -59,9 +62,20 @@ public class AverageTastingNoteView: UIView { $0.trailing.equalTo(safeAreaLayoutGuide) } - nose.snp.makeConstraints { + tastingNoteContentView.snp.makeConstraints { + $0.top.equalTo(title.snp.bottom).offset(10) + $0.horizontalEdges.equalToSuperview() + $0.bottom.equalToSuperview().inset(24) + } + + noTastingNote.snp.makeConstraints { $0.top.equalTo(title.snp.bottom).offset(10) $0.leading.equalToSuperview() + $0.bottom.equalToSuperview().inset(24) + } + + nose.snp.makeConstraints { + $0.top.leading.equalToSuperview() } noseContents.snp.makeConstraints { @@ -79,32 +93,30 @@ public class AverageTastingNoteView: UIView { $0.top.equalTo(palate.snp.top) $0.leading.equalTo(palate.snp.trailing).offset(27) $0.trailing.lessThanOrEqualToSuperview() - $0.bottom.equalToSuperview().inset(24) + $0.bottom.equalToSuperview() } - noTastinNote.snp.makeConstraints { - $0.top.equalTo(title.snp.bottom).offset(10) - $0.leading.equalToSuperview() - $0.bottom.equalToSuperview().inset(24) - } } - public func configure(_ model: WineAverageTastingNoteModel) { - if model.avgAcidity == 0.0 { - nose.isHidden = true - palate.isHidden = true - noseContents.isHidden = true - palateContents.isHidden = true - [nose, palate, noseContents, palateContents].forEach { view in - view.removeFromSuperview() - } - noTastinNote.isHidden = false - } else { - [title, writeNewTastingNoteBtn, nose, palate, noseContents, palateContents].forEach{ self.addSubview($0) } - + public func configure(_ model: WineAverageTastingNoteModel, _ vintage: Int?) { + let hasContent = (vintage != nil) && !model.wineNoseText.isEmpty + + tastingNoteContentView.isHidden = !hasContent + noTastingNote.isHidden = hasContent + + if hasContent { AppTextStyle.KR.body3.apply(to: noseContents, text: model.wineNoseText, color: AppColor.gray100) AppTextStyle.KR.body3.apply(to: palateContents, text: "\(model.sugarContentDescription()), \(model.acidityDescription()), \(model.tanninDescription()), \(model.bodyDescription()), \(model.alcoholDescription())", color: AppColor.gray100) + + AppTextStyle.KR.body2.apply(to: noTastingNote, text: "", color: AppColor.gray70) + } else { + AppTextStyle.KR.body3.apply(to: noseContents, text: "", color: AppColor.gray100) + AppTextStyle.KR.body3.apply(to: palateContents, text: "", color: AppColor.gray100) + + let message = (vintage == nil) ? "빈티지를 선택해 주세요." : "작성된 테이스팅 노트가 없습니다." + AppTextStyle.KR.body2.apply(to: noTastingNote, text: message, color: AppColor.gray70) } + self.layoutIfNeeded() } } diff --git a/DE/DE/Sources/Core/CommonUI/View/VintageInfoView.swift b/DE/DE/Sources/Core/CommonUI/View/VintageInfoView.swift index 71dd14e7..c87f9d01 100644 --- a/DE/DE/Sources/Core/CommonUI/View/VintageInfoView.swift +++ b/DE/DE/Sources/Core/CommonUI/View/VintageInfoView.swift @@ -53,7 +53,7 @@ public class VintageInfoView: UIView { public init() { super.init(frame: .zero) setupLayout() - configure(with: "1970") + configure(with: "빈티지 선택") } required init?(coder: NSCoder) { diff --git a/DE/DE/Sources/Features/Search/ViewControllers/WineDetailViewController.swift b/DE/DE/Sources/Features/Search/ViewControllers/WineDetailViewController.swift index 8ee1d656..af25e16e 100644 --- a/DE/DE/Sources/Features/Search/ViewControllers/WineDetailViewController.swift +++ b/DE/DE/Sources/Features/Search/ViewControllers/WineDetailViewController.swift @@ -16,6 +16,7 @@ class WineDetailViewController: UIViewController, UIScrollViewDelegate, Firebase AppTextStyle.KR.head.apply(to: largeTitleLabel, text: wineName, color: AppColor.black) } } + var vintage: Int? = nil var wineInfoForTN : WineDetailInfoModel? var isLiked: Bool = false { @@ -50,6 +51,7 @@ class WineDetailViewController: UIViewController, UIScrollViewDelegate, Firebase super.viewWillAppear(animated) self.view.addSubview(indicator) self.navigationController?.setNavigationBarHidden(false, animated: animated) + callWineDetailAPI(wineId: self.wineId) } @@ -94,6 +96,27 @@ class WineDetailViewController: UIViewController, UIScrollViewDelegate, Firebase ) } + private func addButtonTarget() { + averageTastingNoteView.writeNewTastingNoteBtn.addTarget(self, action: #selector(goToTastingNote), for: .touchUpInside) + reviewView.moreBtn.addTarget(self, action: #selector(goToEntireReview), for: .touchUpInside) + + vintageInfoView.tabAction = { [weak self] in + let vc = VintageTableViewController() + + vc.onYearSelected = { [weak self] year in + guard let self = self else { return } + + self.vintageInfoView.configure(with: "\(year)") + + if year != self.vintage { + self.vintage = year + self.callWineDetailAPI(wineId: self.wineId) + } + } + self?.navigationController?.pushViewController(vc, animated: true) + } + } + private func showLiked() { DispatchQueue.main.async { if let rightButton = self.navigationItem.rightBarButtonItem?.customView as? UIButton { @@ -164,16 +187,6 @@ class WineDetailViewController: UIViewController, UIScrollViewDelegate, Firebase let divider3 = DividerFactory.make() let thinDivider = DividerFactory.make() - private func addButtonTarget() { - averageTastingNoteView.writeNewTastingNoteBtn.addTarget(self, action: #selector(goToTastingNote), for: .touchUpInside) - reviewView.moreBtn.addTarget(self, action: #selector(goToEntireReview), for: .touchUpInside) - vintageInfoView.tabAction = { [weak self] in - let vc = VintageTableViewController() - vc.hidesBottomBarWhenPushed = true - self?.navigationController?.pushViewController(vc, animated: true) - } - } - @objc private func goToTastingNote() { // 배정이 안되서 일단 비활성화 해둠!! @@ -188,14 +201,21 @@ class WineDetailViewController: UIViewController, UIScrollViewDelegate, Firebase return } + guard let vintageYear = vintage else { + self.showToastMessage(message: "빈티지를 선택해주세요.", yPosition: view.frame.height * 0.75) + return + } + TNWineDataManager.shared.updateWineData(wineId: self.wineId, wineName: self.wineName, + vintage: vintageYear, sort: wineInfo.sort, country: wineInfo.country, region: wineInfo.region, imageUrl: wineInfo.image, variety: wineInfo.variety ) + navigationController?.pushViewController(vc, animated: true) } @@ -206,6 +226,7 @@ class WineDetailViewController: UIViewController, UIScrollViewDelegate, Firebase let vc = EntireReviewViewController() vc.wineId = self.wineId vc.wineName = self.wineName + vc.vintage = self.vintage navigationController?.pushViewController(vc, animated: true) } @@ -310,6 +331,11 @@ class WineDetailViewController: UIViewController, UIScrollViewDelegate, Firebase self.wineName = wineResponse.name self.isLiked = wineResponse.liked self.originalIsLiked = wineResponse.liked + + if let vintageYear = wineResponse.vintageYear { + self.vintage = vintageYear + } + let noseNotes = [ wineResponse.nose1, wineResponse.nose2, @@ -323,12 +349,36 @@ class WineDetailViewController: UIViewController, UIScrollViewDelegate, Firebase self?.updateReviewView() } - let infoData = WineDetailInfoModel(wineName:wineResponse.name, rating:wineResponse.vivinoRating, image: wineResponse.imageUrl, sort: wineResponse.sort, country: wineResponse.country, region: wineResponse.region, variety: wineResponse.variety) + let infoData = WineDetailInfoModel( + wineName:wineResponse.name, + rating:wineResponse.vivinoRating, + image: wineResponse.imageUrl, + sort: wineResponse.sort, + country: wineResponse.country, + region: wineResponse.region, + variety: wineResponse.variety + ) + + if let year = self.vintage { + self.vintageInfoView.configure(with: "\(year)") + } else { + self.vintageInfoView.configure(with: "빈티지 선택") + } + let rateData = WineViVinoRatingModel(vivinoRating: wineResponse.vivinoRating) - let avgData = WineAverageTastingNoteModel(wineNoseText: tastingNoteString, avgSugarContent: wineResponse.avgSweetness, avgAcidity: wineResponse.avgAcidity, avgTannin: wineResponse.avgTannin, avgBody: wineResponse.avgBody, avgAlcohol: wineResponse.avgAlcohol) + + let avgData = WineAverageTastingNoteModel( + wineNoseText: tastingNoteString, + avgSugarContent: wineResponse.avgSweetness, + avgAcidity: wineResponse.avgAcidity, + avgTannin: wineResponse.avgTannin, + avgBody: wineResponse.avgBody, + avgAlcohol: wineResponse.avgAlcohol + ) + let roundedAvgMemberRating = (wineResponse.avgMemberRating * 10).rounded() / 10 - let reviewData = WineAverageReviewModel(avgMemberRating: roundedAvgMemberRating) + let reviewData = WineAverageReviewModel(avgMemberRating: roundedAvgMemberRating) if let reviewResponse = responseData.recentReviews { for data in reviewResponse { if let name = data.name, @@ -346,7 +396,8 @@ class WineDetailViewController: UIViewController, UIScrollViewDelegate, Firebase self.wineInfoForTN = infoData // 테이스팅 노트 작성을 위한 데이터 저장 self.wineInfoView.configure(infoData) self.wineDetailsView.configure(infoData) - self.averageTastingNoteView.configure(avgData) + + self.averageTastingNoteView.configure(avgData, self.vintage) self.reviewView.configure(reviewData) self.reviewView.reviewCollectionView.reloadData() } @@ -358,7 +409,7 @@ class WineDetailViewController: UIViewController, UIScrollViewDelegate, Firebase do { let responseData = try await wineNetworkService.fetchWineInfo( wineId: wineId, - vintageYear: nil + vintageYear: vintage ) DispatchQueue.main.async { self.reviewData.removeAll() @@ -378,7 +429,10 @@ class WineDetailViewController: UIViewController, UIScrollViewDelegate, Firebase func callLikeAPI(wineId: Int) async { self.view.showBlockingView() do { - let _ = try await likedNetworkService.postWishlist(wineId: wineId) + let _ = try await likedNetworkService.postWishlist( + wineId: wineId, + vintageYear: vintage + ) self.view.hideBlockingView() } catch { self.view.hideBlockingView() @@ -389,7 +443,10 @@ class WineDetailViewController: UIViewController, UIScrollViewDelegate, Firebase func calldeleteLikedAPI(wineId: Int) async { self.view.showBlockingView() do { - let _ = try await likedNetworkService.deleteWishlist(wineId: wineId) + let _ = try await likedNetworkService.deleteWishlist( + wineId: wineId, + vintageYear: vintage + ) self.view.hideBlockingView() } catch { self.view.hideBlockingView() diff --git a/DE/DE/Sources/Features/TastingNote/Models/TNWineDataManager.swift b/DE/DE/Sources/Features/TastingNote/Models/TNWineDataManager.swift index 72737e5e..aa08933e 100644 --- a/DE/DE/Sources/Features/TastingNote/Models/TNWineDataManager.swift +++ b/DE/DE/Sources/Features/TastingNote/Models/TNWineDataManager.swift @@ -8,6 +8,7 @@ class TNWineDataManager { var wineId: Int var wineName: String + var vintage: Int var sort: String var country: String var region: String @@ -18,6 +19,7 @@ class TNWineDataManager { public init( wineId: Int = 0, wineName: String = "", + vintage: Int = 0, sort: String = "", country: String = "", region: String = "", @@ -26,6 +28,7 @@ class TNWineDataManager { ) { self.wineId = wineId self.wineName = wineName + self.vintage = vintage self.sort = sort self.country = country self.region = region @@ -37,6 +40,7 @@ class TNWineDataManager { func updateWineData( wineId: Int? = nil, wineName: String? = nil, + vintage: Int? = nil, sort: String? = nil, country: String? = nil, region: String? = nil, @@ -45,6 +49,7 @@ class TNWineDataManager { ) { if let wineId = wineId { self.wineId = wineId } if let wineName = wineName { self.wineName = wineName } + if let vintage = vintage { self.vintage = vintage } if let sort = sort { self.sort = sort } if let country = country { self.country = country } if let region = region { self.region = region } @@ -55,6 +60,7 @@ class TNWineDataManager { func resetData() { wineId = 0 wineName = "" + vintage = 0 sort = "" country = "" region = "" diff --git a/DE/DE/Sources/Features/TastingNote/ViewControllers/Common/TNWineDetailViewController.swift b/DE/DE/Sources/Features/TastingNote/ViewControllers/Common/TNWineDetailViewController.swift index 898bc246..1c1a01dd 100644 --- a/DE/DE/Sources/Features/TastingNote/ViewControllers/Common/TNWineDetailViewController.swift +++ b/DE/DE/Sources/Features/TastingNote/ViewControllers/Common/TNWineDetailViewController.swift @@ -16,6 +16,7 @@ class TNWineDetailViewController: UIViewController, UIScrollViewDelegate, Fireba AppTextStyle.KR.head.apply(to: largeTitleLabel, text: wineName, color: AppColor.black) } } + var vintage: Int? = nil let wineData = TNWineDataManager.shared let tnManager = NewTastingNoteManager.shared @@ -247,7 +248,7 @@ class TNWineDetailViewController: UIViewController, UIScrollViewDelegate, Fireba DispatchQueue.main.async { self.wineInfoView.configure(infoData) self.wineDetailsView.configure(infoData) - self.averageTastingNoteView.configure(avgData) + self.averageTastingNoteView.configure(avgData, self.vintage) } } diff --git a/DE/DE/Sources/Features/TastingNote/ViewControllers/CreateVCs/ChooseWineColorViewController.swift b/DE/DE/Sources/Features/TastingNote/ViewControllers/CreateVCs/ChooseWineColorViewController.swift index a354c4cf..34daefa5 100644 --- a/DE/DE/Sources/Features/TastingNote/ViewControllers/CreateVCs/ChooseWineColorViewController.swift +++ b/DE/DE/Sources/Features/TastingNote/ViewControllers/CreateVCs/ChooseWineColorViewController.swift @@ -23,8 +23,11 @@ public class ChooseWineColorViewController: UIViewController, FirebaseTrackable public override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) - colorView.header.setTitleLabel(title: wineData.wineName) + + let fullName = "\(wineData.wineName) \(wineData.vintage)" + colorView.header.setTitleLabel(title: fullName) self.navigationController?.setNavigationBarHidden(false, animated: animated) + colorView.infoView.image.sd_setImage(with: URL(string: wineData.imageUrl)) colorView.infoView.countryContents.text = wineData.country + ", " + wineData.region colorView.infoView.kindContents.text = wineData.sort diff --git a/DE/DE/Sources/Features/TastingNote/ViewControllers/CreateVCs/NoseTestVC.swift b/DE/DE/Sources/Features/TastingNote/ViewControllers/CreateVCs/NoseTestVC.swift index 283c4102..78d9d1e6 100644 --- a/DE/DE/Sources/Features/TastingNote/ViewControllers/CreateVCs/NoseTestVC.swift +++ b/DE/DE/Sources/Features/TastingNote/ViewControllers/CreateVCs/NoseTestVC.swift @@ -43,7 +43,8 @@ public class NoseTestVC: UIViewController, UIScrollViewDelegate, FirebaseTrackab } } - topView.header.setTitleLabel(title: wineData.wineName, + let fullName = "\(wineData.wineName) \(wineData.vintage)" + topView.header.setTitleLabel(title: fullName, titleStyle: AppTextStyle.KR.subtitle1, titleColor: AppColor.purple100, description: despText, diff --git a/DE/DE/Sources/Features/TastingNote/ViewControllers/CreateVCs/RatingWineViewController.swift b/DE/DE/Sources/Features/TastingNote/ViewControllers/CreateVCs/RatingWineViewController.swift index 40c562fd..a93211c2 100644 --- a/DE/DE/Sources/Features/TastingNote/ViewControllers/CreateVCs/RatingWineViewController.swift +++ b/DE/DE/Sources/Features/TastingNote/ViewControllers/CreateVCs/RatingWineViewController.swift @@ -28,7 +28,9 @@ public class RatingWineViewController: UIViewController, FirebaseTrackable { self.navigationController?.setNavigationBarHidden(false, animated: animated) NotificationCenter.default.addObserver(self, selector: #selector(keyboardUp), name: UIResponder.keyboardWillShowNotification, object: nil) NotificationCenter.default.addObserver(self, selector: #selector(keyboardDown), name: UIResponder.keyboardWillHideNotification, object: nil) - rView.header.setTitleLabel(title: wineData.wineName) + + let fullName = "\(wineData.wineName) \(wineData.vintage)" + rView.header.setTitleLabel(title: fullName) rView.infoView.image.sd_setImage(with: URL(string: wineData.imageUrl)) rView.infoView.countryContents.text = wineData.country + ", " + wineData.region rView.infoView.kindContents.text = wineData.sort @@ -142,7 +144,20 @@ public class RatingWineViewController: UIViewController, FirebaseTrackable { } private func postCreateTastingNote() async throws { - let createNoteDTO = networkService.makePostNoteDTO(wineId: wineData.wineId, color: tnManager.color, tasteDate: tnManager.tasteDate, sugarContent: tnManager.sugarContent, acidity: tnManager.acidity, tannin: tnManager.tannin, body: tnManager.body, alcohol: tnManager.alcohol, nose: tnManager.nose, rating: tnManager.rating, review: tnManager.review) + let createNoteDTO = networkService.makePostNoteDTO( + wineId: wineData.wineId, + vintage: wineData.vintage, + color: tnManager.color, + tasteDate: tnManager.tasteDate, + sugarContent: tnManager.sugarContent, + acidity: tnManager.acidity, + tannin: tnManager.tannin, + body: tnManager.body, + alcohol: tnManager.alcohol, + nose: tnManager.nose, + rating: tnManager.rating, + review: tnManager.review + ) let _ = try await networkService.postNote(data: createNoteDTO) } diff --git a/DE/DE/Sources/Features/TastingNote/ViewControllers/CreateVCs/RecordGraphViewController.swift b/DE/DE/Sources/Features/TastingNote/ViewControllers/CreateVCs/RecordGraphViewController.swift index 16b3845b..1a62c60e 100644 --- a/DE/DE/Sources/Features/TastingNote/ViewControllers/CreateVCs/RecordGraphViewController.swift +++ b/DE/DE/Sources/Features/TastingNote/ViewControllers/CreateVCs/RecordGraphViewController.swift @@ -41,7 +41,8 @@ public class RecordGraphViewController: UIViewController, UIScrollViewDelegate, super.viewWillAppear(animated) self.navigationController?.setNavigationBarHidden(false, animated: animated) recordGraphView.updateLabels() - header.setTitleLabel(title: wineData.wineName) + let fullName = "\(wineData.wineName) \(wineData.vintage)" + header.setTitleLabel(title: fullName) } public override func viewWillDisappear(_ animated: Bool) { diff --git a/DE/DE/Sources/Features/TastingNote/ViewControllers/CreateVCs/TastedDateViewController.swift b/DE/DE/Sources/Features/TastingNote/ViewControllers/CreateVCs/TastedDateViewController.swift index b0822226..484b583a 100644 --- a/DE/DE/Sources/Features/TastingNote/ViewControllers/CreateVCs/TastedDateViewController.swift +++ b/DE/DE/Sources/Features/TastingNote/ViewControllers/CreateVCs/TastedDateViewController.swift @@ -20,7 +20,8 @@ public class TastedDateViewController: UIViewController, FirebaseTrackable { public override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) self.navigationController?.setNavigationBarHidden(false, animated: animated) - tastedDateView.topView.setTitleLabel(title: self.wineData.wineName, + let fullName = "\(self.wineData.wineName) \(self.wineData.vintage)" + tastedDateView.topView.setTitleLabel(title: fullName, titleStyle: AppTextStyle.KR.subtitle1, titleColor: AppColor.purple100, description: despText, diff --git a/DE/DE/Sources/Features/Vintage/VintageTableViewController.swift b/DE/DE/Sources/Features/Vintage/VintageTableViewController.swift index 5b5c7674..eda32aeb 100644 --- a/DE/DE/Sources/Features/Vintage/VintageTableViewController.swift +++ b/DE/DE/Sources/Features/Vintage/VintageTableViewController.swift @@ -12,6 +12,8 @@ public final class VintageTableViewController: UIViewController { private var sections: [Section] = [] private let navigationBarManager = NavigationBarManager() + public var onYearSelected: ((Int) -> Void)? + // MARK: - UI Components private let tableView = UITableView(frame: .zero, style: .grouped).then { $0.backgroundColor = AppColor.background @@ -27,7 +29,7 @@ public final class VintageTableViewController: UIViewController { setupNavigationBar() setupLayout() setupTableView() - setupDummyData() + setupSectionData() } public override func viewWillAppear(_ animated: Bool) { @@ -69,36 +71,38 @@ public final class VintageTableViewController: UIViewController { tableView.estimatedSectionFooterHeight = 0 } - private func setupDummyData() { - // 1980년대부터 2020년대까지의 섹션 생성 - let decades = [ - (title: "2020년대", startYear: 2020), - (title: "2010년대", startYear: 2010), - (title: "2000년대", startYear: 2000), - (title: "1990년대", startYear: 1990), - (title: "1980년대", startYear: 1980), - (title: "1970년대", startYear: 1970) - ] + private func setupSectionData() { + let currentYear = Calendar.current.component(.year, from: Date()) + let fixedStartYear = 1970 + var currentDecadeStartYear = (currentYear / 10) * 10 // 예: 2025년 -> 2020년 + + var dynamicSections: [Section] = [] - sections = decades.map { decade in - let endYear = decade.startYear == 2020 ? 2024 : decade.startYear + 9 + while currentDecadeStartYear >= fixedStartYear { + let startYear = currentDecadeStartYear + let endYear = (startYear == (currentYear / 10) * 10) ? (currentYear - 1) : (startYear + 9) + guard startYear <= endYear else { + currentDecadeStartYear -= 10 + continue + } - let items = (decade.startYear...endYear) + let items = (startYear...endYear) .reversed() .map { year in - VintageItem( - year: year, - score: 0.0 - ) + VintageItem(year: year, score: 0.0) } - return Section( - title: decade.title, + let section = Section( + title: "\(currentDecadeStartYear)년대", isExpanded: false, items: items ) + dynamicSections.append(section) + + currentDecadeStartYear -= 10 } + self.sections = dynamicSections tableView.reloadData() } @@ -116,7 +120,7 @@ extension VintageTableViewController: UITableViewDataSource { public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return sections[section].isExpanded ? sections[section].items.count : 0 } - + public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { guard let cell = tableView.dequeueReusableCell( withIdentifier: VintageTableViewCell.identifier, @@ -154,7 +158,7 @@ extension VintageTableViewController: UITableViewDelegate { public func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat { return 53 } - + public func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat { return 0.01 } @@ -165,7 +169,9 @@ extension VintageTableViewController: UITableViewDelegate { public func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { let selectedYear = sections[indexPath.section].items[indexPath.row].year - print("\(selectedYear)년 선택") + onYearSelected?(selectedYear) + + navigationController?.popViewController(animated: true) } } diff --git a/DE/DE/Sources/Network/TastingNote/Service/TastingNoteService.swift b/DE/DE/Sources/Network/TastingNote/Service/TastingNoteService.swift index ea506e2f..6364cd9b 100644 --- a/DE/DE/Sources/Network/TastingNote/Service/TastingNoteService.swift +++ b/DE/DE/Sources/Network/TastingNote/Service/TastingNoteService.swift @@ -27,6 +27,7 @@ public final class TastingNoteService: NetworkManager { /// 모든 항목이 required임 public func makePostNoteDTO( wineId : Int, + vintage: Int, color: String, tasteDate : String, sugarContent: Int, @@ -40,7 +41,7 @@ public final class TastingNoteService: NetworkManager { ) -> TastingNoteRequestDTO { return TastingNoteRequestDTO( wineId: wineId, - vintageYear: nil, + vintageYear: vintage, color: color, tasteDate: tasteDate, sweetness: sugarContent,