Skip to content

Commit 467e91f

Browse files
committed
[#234] 제휴업체의 상세정보를 불러오는 로직 설계 완료
1 parent 7a71549 commit 467e91f

File tree

3 files changed

+50
-7
lines changed

3 files changed

+50
-7
lines changed

EATSSU/App/Sources/Presentation/Maps/ViewController/MapViewController.swift

+1
Original file line numberDiff line numberDiff line change
@@ -203,6 +203,7 @@ private extension MapViewController {
203203
lng: partnership.longitude
204204
)
205205
let markerData = MarkerData(
206+
id: partnership.id,
206207
title: partnership.storeName,
207208
description: partnership.description
208209
)

EATSSU/App/Sources/Presentation/Maps/ViewController/MarkerDetailViewController.swift

+46-6
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,16 @@ import UIKit
99

1010
import EATSSUKit
1111

12+
import RxSwift
13+
1214
/// 마커의 상세 정보를 표시하는 Modal View Controller
1315
class MarkerDetailViewController: BaseViewController {
1416
// MARK: - Properties
1517

1618
private let markerDetailView = MarkerDetailView()
1719
private let markerData: MarkerData
20+
private let partnershipService = PartnershipService()
21+
private let disposeBag = DisposeBag()
1822

1923
// MARK: - Initialization
2024

@@ -35,23 +39,59 @@ class MarkerDetailViewController: BaseViewController {
3539
// MARK: - Life Cycle
3640

3741
override func loadView() {
38-
markerDetailView.titleLabel.text = markerData.title
39-
markerDetailView.categoryLabel.text = "테스트"
40-
markerDetailView.partnershipPeriodLabel.text = "테스트 기간"
41-
markerDetailView.explanatonLabel.text = markerData.description
42-
markerDetailView.businessStatusLabel.text = "영업기간 테스트"
4342
view = markerDetailView
4443
}
4544

4645
override func viewDidLoad() {
4746
super.viewDidLoad()
4847
}
4948

49+
override func viewWillAppear(_: Bool) {
50+
fetchPartnershipDetail(partnershipId: markerData.id)
51+
}
52+
5053
override func configureUI() {
51-
// loadView 메소드를 사용해서 불필요한 코드라고 생각함. 다만 loadView 메소드 자체를 잘 사용하지 않아서, 어떤 방법을 채택할 지 고민을 해야 할 듯 함.
54+
// TODO: loadView 메소드를 사용해서 불필요한 코드라고 생각함. 다만 loadView 메소드 자체를 잘 사용하지 않아서, 어떤 방법을 채택할 지 고민을 해야 할 듯 함.
5255
}
5356

5457
override func setLayout() {
5558
//
5659
}
5760
}
61+
62+
private extension MarkerDetailViewController {
63+
func fetchPartnershipDetail(partnershipId: Int) {
64+
partnershipService.fetchPartnershipDetail(partnershipId: partnershipId)
65+
.subscribe(
66+
onSuccess: { [weak self] response in
67+
#if DEBUG
68+
// JSON 응답 출력
69+
print("\n🔍 [FetchPartnershipDetail Service] Response Details:")
70+
if let jsonData = try? JSONEncoder().encode(response),
71+
let prettyJSON = JSONPrettyPrinter.prettyPrintedJSONString(from: jsonData)
72+
{
73+
print("\n📦 Response Data Structure:")
74+
print(prettyJSON)
75+
} else {
76+
print("⚠️ JSON 변환 실패")
77+
}
78+
print("\n" + String(repeating: "-", count: 50) + "\n")
79+
#endif
80+
81+
self?.markerDetailView.titleLabel.text = response.result.storeName
82+
self?.markerDetailView.categoryLabel.text = response.result.restaurantType
83+
self?.markerDetailView.partnershipPeriodLabel.text
84+
= "\(response.result.startDate) ~ \(response.result.endDate)"
85+
self?.markerDetailView.explanatonLabel.text = response.result.description
86+
},
87+
onFailure: { error in
88+
#if DEBUG
89+
print("문제가 발생했습니다 : \(error.localizedDescription)")
90+
#endif
91+
AlertControllerHelper
92+
.showConfirmOnlyAlert(title: "문제가 발생했습니다", message: "다시 시도하세요", in: self)
93+
}
94+
)
95+
.disposed(by: disposeBag)
96+
}
97+
}

EATSSUKit/EATSSUKit/Sources/Entity/MarkerData.swift

+3-1
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,12 @@ import Foundation
99

1010
/// 마커에 대한 상세 정보를 담는 구조체
1111
public struct MarkerData: Equatable {
12+
public let id: Int
1213
public let title: String
1314
public let description: String
1415

15-
public init(title: String, description: String) {
16+
public init(id: Int, title: String, description: String) {
17+
self.id = id
1618
self.title = title
1719
self.description = description
1820
}

0 commit comments

Comments
 (0)