Skip to content

Commit b93721a

Browse files
committed
[#234] 사용자 별 제휴업체를 가져오는 비즈니스 로직 함수 설계
1 parent e559299 commit b93721a

File tree

1 file changed

+67
-27
lines changed

1 file changed

+67
-27
lines changed

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

+67-27
Original file line numberDiff line numberDiff line change
@@ -200,7 +200,7 @@ final class MapViewController: BaseViewController {
200200
#if DEBUG
201201
print("사용자의 제휴 업체를 가져옵니다.")
202202
#endif
203-
// TODO: 사용자에 따라 필터된 제휴 데이터 가져오기
203+
fetchUserPartnership()
204204
default:
205205
AlertControllerHelper.showConfirmAlert(
206206
title: "에러",
@@ -305,7 +305,9 @@ final class MapViewController: BaseViewController {
305305
private func fetchPartnerships() {
306306
partnershipService.fetchAllPartnerships()
307307
.subscribe(
308-
onSuccess: { (baseResponse: BaseResponse<[PartnershipResponse]>) in
308+
onSuccess: { [weak self] (baseResponse: BaseResponse<[PartnershipResponse]>) in
309+
guard let self else { return }
310+
309311
#if DEBUG
310312
print("제휴 목록 가져오기 성공: \(baseResponse)")
311313
#endif
@@ -317,38 +319,40 @@ final class MapViewController: BaseViewController {
317319
return
318320
}
319321

320-
let partnerships = baseResponse.result
321-
for partnership in partnerships {
322-
let location = NMGLatLng(
323-
lat: partnership.latitude,
324-
lng: partnership.longitude
325-
)
326-
let leftText = partnership.storeName
327-
let rightText = partnership.partnershipType
328-
let markerData = MarkerData(
329-
title: partnership.storeName,
330-
description: partnership.description
331-
)
332-
333-
self.addMarker(
334-
at: location,
335-
leftText: leftText,
336-
rightText: rightText,
337-
markerData: markerData
338-
)
339-
}
322+
createMarkers(from: baseResponse.result)
340323
},
341-
onFailure: { error in
324+
onFailure: { [weak self] error in
325+
self?.handlePartnershipError(error)
326+
}
327+
)
328+
.disposed(by: disposeBag)
329+
}
330+
331+
private func fetchUserPartnership() {
332+
userDepartmentService.getUserPartnership()
333+
.subscribe(
334+
onSuccess: { [weak self] (baseResponse: BaseResponse<[PartnershipResponse]>) in
335+
guard let self else { return }
336+
342337
#if DEBUG
343-
print("제휴 목록 가져오기 실패: \(error.localizedDescription)")
338+
print("사용자 제휴 목록 가져오기 성공: \(baseResponse)")
344339
#endif
345-
AlertControllerHelper.showConfirmAlert(title: "문제가 발생했습니다", message: "다시 시도하세요", confirmTitle: "확인", in: self)
340+
341+
guard baseResponse.isSuccess else {
342+
#if DEBUG
343+
print("사용자 제휴 목록 가져오기 실패: \(baseResponse.message)")
344+
#endif
345+
return
346+
}
347+
348+
createMarkers(from: baseResponse.result)
349+
},
350+
onFailure: { [weak self] error in
351+
self?.handlePartnershipError(error)
346352
}
347353
)
348354
.disposed(by: disposeBag)
349355
}
350-
351-
private func fetchUserPartnership() {}
352356
}
353357

354358
// MARK: - NMFMapViewTouchDelegate
@@ -407,3 +411,39 @@ extension MapViewController: FloatingPanelControllerDelegate {
407411
selectedMarkerData = nil
408412
}
409413
}
414+
415+
private extension MapViewController {
416+
/// 파트너십 응답 데이터를 기반으로 지도에 마커를 생성하는 함수
417+
func createMarkers(from partnerships: [PartnershipResponse]) {
418+
for partnership in partnerships {
419+
let location = NMGLatLng(
420+
lat: partnership.latitude,
421+
lng: partnership.longitude
422+
)
423+
let markerData = MarkerData(
424+
title: partnership.storeName,
425+
description: partnership.description
426+
)
427+
428+
addMarker(
429+
at: location,
430+
leftText: partnership.storeName,
431+
rightText: partnership.partnershipType,
432+
markerData: markerData
433+
)
434+
}
435+
}
436+
437+
/// 파트너십 데이터 요청 실패 시 처리하는 함수
438+
func handlePartnershipError(_ error: Error) {
439+
#if DEBUG
440+
print("제휴 목록 가져오기 실패: \(error.localizedDescription)")
441+
#endif
442+
AlertControllerHelper.showConfirmAlert(
443+
title: "문제가 발생했습니다",
444+
message: "다시 시도하세요",
445+
confirmTitle: "확인",
446+
in: self
447+
)
448+
}
449+
}

0 commit comments

Comments
 (0)