@@ -200,7 +200,7 @@ final class MapViewController: BaseViewController {
200
200
#if DEBUG
201
201
print ( " 사용자의 제휴 업체를 가져옵니다. " )
202
202
#endif
203
- // TODO: 사용자에 따라 필터된 제휴 데이터 가져오기
203
+ fetchUserPartnership ( )
204
204
default :
205
205
AlertControllerHelper . showConfirmAlert (
206
206
title: " 에러 " ,
@@ -305,7 +305,9 @@ final class MapViewController: BaseViewController {
305
305
private func fetchPartnerships( ) {
306
306
partnershipService. fetchAllPartnerships ( )
307
307
. subscribe (
308
- onSuccess: { ( baseResponse: BaseResponse < [ PartnershipResponse ] > ) in
308
+ onSuccess: { [ weak self] ( baseResponse: BaseResponse < [ PartnershipResponse ] > ) in
309
+ guard let self else { return }
310
+
309
311
#if DEBUG
310
312
print ( " 제휴 목록 가져오기 성공: \( baseResponse) " )
311
313
#endif
@@ -317,38 +319,40 @@ final class MapViewController: BaseViewController {
317
319
return
318
320
}
319
321
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)
340
323
} ,
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
+
342
337
#if DEBUG
343
- print ( " 제휴 목록 가져오기 실패 : \( error . localizedDescription ) " )
338
+ print ( " 사용자 제휴 목록 가져오기 성공 : \( baseResponse ) " )
344
339
#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)
346
352
}
347
353
)
348
354
. disposed ( by: disposeBag)
349
355
}
350
-
351
- private func fetchUserPartnership( ) { }
352
356
}
353
357
354
358
// MARK: - NMFMapViewTouchDelegate
@@ -407,3 +411,39 @@ extension MapViewController: FloatingPanelControllerDelegate {
407
411
selectedMarkerData = nil
408
412
}
409
413
}
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