فهرست منبع

[이벤트][New] 마이 리스트에서 참여불가 이벤트 연동

hyodong.min 6 سال پیش
والد
کامیت
0e095c4b8f

+ 8 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/event/EventDetailModel.java

@@ -174,4 +174,12 @@ public abstract class EventDetailModel extends CoinModel {
     return eventDetailBean.isEventEnd();
   }
 
+  /**
+   * 단일 항목인지확인
+   *
+   * @return
+   */
+  public boolean isSimpleQuestion() {
+    return getEventDetailBean().getEventQuestionList().size() == 1;
+  }
 }

+ 9 - 9
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/event/EventListPresenter.java

@@ -120,30 +120,30 @@ public class EventListPresenter extends Presenter<EventListModel, IEventView> {
   }
 
   private void onDetailLoadCompleted() {
-    // fixme event 선택형과 같은 코드가 있다.
+    // fixme event 선택형과 같은 코드가 있다. 리팩토링 필요
     // 이벤트 참여 후
     // 단일 질문 => 결과 페이지 표시 => 추천 콘텐츠(버튼) => tag or 기본 형 추천 컨텐츠 표시
     // 복수 질문 => tag 추천 컨텐츠 표시
-    if (model.getEventDetailBean().getEventQuestionList().size() > 1) {
-      // 복수 질문 -> tag 추천 컨텐츠
+    if (model.isSimpleQuestion()) {
+      // 단일 질문
+      // 참여 결과 노출 => 설정 된 추천 컨텐츠(tar or basic) 표시
 
       // eventNO 필수, eventDetailBean 있으면 전달
       String eventNo = model.getEventDetailBean().getItemNo();
-      EventRecommendDeliveryBean eventDeliveryBean = new EventRecommendDeliveryBean(eventNo);
+      EventRecordDeliveryBean eventDeliveryBean = new EventRecordDeliveryBean(eventNo);
       eventDeliveryBean.setEventDetailBean(model.getEventDetailBean());
       model.setDeliveryPackaging(eventDeliveryBean);
-      go(ScreenID.EVENT_RECOMMEND);
+      go(ScreenID.EVENT_RECORD);
     }
     else {
-      // 단일 질문
-      // 참여 결과 노출 => 설정 된 추천 컨텐츠(tar or basic) 표시
+      // 복수 질문 -> tag 추천 컨텐츠
 
       // eventNO 필수, eventDetailBean 있으면 전달
       String eventNo = model.getEventDetailBean().getItemNo();
-      EventRecordDeliveryBean eventDeliveryBean = new EventRecordDeliveryBean(eventNo);
+      EventRecommendDeliveryBean eventDeliveryBean = new EventRecommendDeliveryBean(eventNo);
       eventDeliveryBean.setEventDetailBean(model.getEventDetailBean());
       model.setDeliveryPackaging(eventDeliveryBean);
-      go(ScreenID.EVENT_RECORD);
+      go(ScreenID.EVENT_RECOMMEND);
     }
   }
 

+ 7 - 3
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/event/MyEventModel.java

@@ -6,7 +6,6 @@ import io.reactivex.disposables.Disposable;
 import kr.co.zumo.app.lifeplus.bean.api.EventBean;
 import kr.co.zumo.app.lifeplus.bean.api.EventListResultBean;
 import kr.co.zumo.app.lifeplus.bean.api.RequestBean;
-import kr.co.zumo.app.lifeplus.model.Model;
 import kr.co.zumo.app.lifeplus.model.module.APIError;
 import kr.co.zumo.app.lifeplus.model.module.APIEventMyListModule;
 import kr.co.zumo.app.lifeplus.model.module.APIModuleListener;
@@ -22,7 +21,7 @@ import kr.co.zumo.app.lifeplus.view.Event;
  * @history 하세미   [2019-01-02]   [최초 작성]
  * @since 2019-01-02
  */
-public class MyEventModel extends Model {
+public class MyEventModel extends EventDetailModel {
   protected Disposable disposable;
   protected List<EventBean> eventBeans;
   @Override
@@ -32,7 +31,7 @@ public class MyEventModel extends Model {
 
   @Override
   protected void destroyInternal() {
-
+    super.destroyInternal();
   }
 
   @Override
@@ -64,6 +63,11 @@ public class MyEventModel extends Model {
 
   }
 
+  @Override
+  protected void parseEventPageBean() {
+    // nothing
+  }
+
   public List<EventBean> getEventBeans() {
     return eventBeans;
   }

+ 54 - 27
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/event/MyEventPresenter.java

@@ -1,13 +1,14 @@
 package kr.co.zumo.app.lifeplus.view.screen.event;
 
-import kr.co.zumo.app.R;
 import kr.co.zumo.app.lifeplus.bean.EventDeliveryBean;
+import kr.co.zumo.app.lifeplus.bean.EventRecommendDeliveryBean;
+import kr.co.zumo.app.lifeplus.bean.EventRecordDeliveryBean;
 import kr.co.zumo.app.lifeplus.bean.api.APIData;
 import kr.co.zumo.app.lifeplus.bean.api.EventBean;
+import kr.co.zumo.app.lifeplus.bean.api.EventDetailBean;
 import kr.co.zumo.app.lifeplus.supervisor.ScreenID;
 import kr.co.zumo.app.lifeplus.view.DoubleChecker;
 import kr.co.zumo.app.lifeplus.view.Event;
-import kr.co.zumo.app.lifeplus.view.ToastProvider;
 import kr.co.zumo.app.lifeplus.view.presenter.Presenter;
 
 /**
@@ -89,7 +90,10 @@ public class MyEventPresenter extends Presenter<MyEventModel, IMyEventView> {
         break;
       case Event.CLICK:
         // 이벤트 클릭
-        linkEvent(event.getIndex());
+        EventBean eventBean = model.getEventBeans().get(event.getIndex());
+        // 이벤트 디테일 확인해서 처리
+        model.setEventNo(eventBean.getItemNo());
+        model.loadEventDetail();
         break;
       default:
         break;
@@ -103,7 +107,7 @@ public class MyEventPresenter extends Presenter<MyEventModel, IMyEventView> {
    */
   protected void onEventListClick() {
     //진행중인 이벤트 - 마이 메인에서 진입
-    if(model.getPrevScreenId() == ScreenID.EVENT_LIST) {
+    if (model.getPrevScreenId() == ScreenID.EVENT_LIST) {
       // 이벤트 리스트로 돌아감
       back();
     }
@@ -112,42 +116,62 @@ public class MyEventPresenter extends Presenter<MyEventModel, IMyEventView> {
     }
   }
 
-  private void linkEvent(int index) {
-    /* todo 이벤트 클릭
-    -> 진행 중
-      => 이벤트 상세
-    -> 종료
-      => 응모형: 이벤트 상세
-      => 항목형: 이벤트 종료 팝업 노출
-     */
-    EventBean bean = model.getEventBeans().get(index);
-    if (bean.isEventEnd()) {
-      // 종료
-      if (bean.getEventType().equals(EventBean.TYPE_ENTRY)) {
-        // 응모형
-        gotoEvent(index);
+  private void linkEvent() {
+    EventDetailBean bean = model.getEventDetailBean();
+    if (model.isAvailableParticipation() && bean.isBetween()) {
+      // 참여 가능
+      gotoEvent(bean);
+    }
+    else {
+      // 참여불가
+      if (EventBean.TYPE_ENTRY.equals(bean.getEventType())) {
+        // 응모형 -> 화면 이동
+        gotoEvent(bean);
       }
       else {
         // 선택형
-        // todo 단일 질문 => 참여 결과 보여주기.
         // 복수 질문 => 태그 추천 컨텐츠
-        ToastProvider.showSimple(R.string.event_end);
+        onDetailLoadCompleted();
       }
     }
-    else {
-      // 진행 중
-      gotoEvent(index);
-    }
   }
 
-  private void gotoEvent(int index) {
-    String eventNo = model.getEventBeans().get(index).getItemNo();
-    String eventType = model.getEventBeans().get(index).getEventType();
+  private void gotoEvent(EventDetailBean bean) {
+    String eventNo = bean.getItemNo();
+    String eventType = bean.getEventType();
     EventDeliveryBean eventDeliveryBean = new EventDeliveryBean(eventNo, eventType);
+    eventDeliveryBean.setEventDetailBean(bean);
     model.setDeliveryPackaging(eventDeliveryBean);
     go(ScreenID.EVENT_DETAIL);
   }
 
+  private void onDetailLoadCompleted() {
+    // fixme event 선택형과 같은 코드가 있다. 리팩토링 필요
+    // 단일 질문 => 결과 페이지 표시 => 추천 콘텐츠(버튼) => tag or 기본 형 추천 컨텐츠 표시
+    // 복수 질문 => tag 추천 컨텐츠 표시
+    if (model.isSimpleQuestion()) {
+      // 단일 질문
+      // 참여 결과 노출 => 설정 된 추천 컨텐츠(tar or basic) 표시
+
+      // eventNO 필수, eventDetailBean 있으면 전달
+      String eventNo = model.getEventDetailBean().getItemNo();
+      EventRecordDeliveryBean eventDeliveryBean = new EventRecordDeliveryBean(eventNo);
+      eventDeliveryBean.setEventDetailBean(model.getEventDetailBean());
+      model.setDeliveryPackaging(eventDeliveryBean);
+      go(ScreenID.EVENT_RECORD);
+    }
+    else {
+      // 복수 질문 -> tag 추천 컨텐츠
+
+      // eventNO 필수, eventDetailBean 있으면 전달
+      String eventNo = model.getEventDetailBean().getItemNo();
+      EventRecommendDeliveryBean eventDeliveryBean = new EventRecommendDeliveryBean(eventNo);
+      eventDeliveryBean.setEventDetailBean(model.getEventDetailBean());
+      model.setDeliveryPackaging(eventDeliveryBean);
+      go(ScreenID.EVENT_RECOMMEND);
+    }
+  }
+
   @Override
   public void onScreenReady() {
     doubleChecker.checkFirst();
@@ -160,6 +184,9 @@ public class MyEventPresenter extends Presenter<MyEventModel, IMyEventView> {
         if (event.getInteger() == Event.EVENT_LIST) {
           doubleChecker.checkSecond();
         }
+        else if (event.getInteger() == Event.EVENT_DETAIL) {
+          linkEvent();
+        }
         break;
       case Event.ERROR:
         showErrorDialog(event.getString());

+ 10 - 9
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/event/select/EventDetailSelectPresenter.java

@@ -243,27 +243,28 @@ public class EventDetailSelectPresenter extends Presenter<EventDetailSelectModel
     // 이벤트 참여 후
     // 단일 질문 => 결과 페이지 표시 => 추천 콘텐츠(버튼) => tag or 기본 형 추천 컨텐츠 표시
     // 복수 질문 => tag 추천 컨텐츠 표시
-    if (model.getEventDetailBean().getEventQuestionList().size() > 1) {
-      finish();
-      // 복수 질문 -> tag 추천 컨텐츠
+    if (model.isSimpleQuestion()) {
+      // 단일 질문
+      // 참여 결과 노출 => 설정 된 추천 컨텐츠(tar or basic) 표시
 
       // eventNO 필수, eventDetailBean 있으면 전달
       String eventNo = model.getEventDetailBean().getItemNo();
-      EventRecommendDeliveryBean eventDeliveryBean = new EventRecommendDeliveryBean(eventNo);
+      EventRecordDeliveryBean eventDeliveryBean = new EventRecordDeliveryBean(eventNo);
       eventDeliveryBean.setEventDetailBean(model.getEventDetailBean());
       model.setDeliveryPackaging(eventDeliveryBean);
-      go(ScreenID.EVENT_RECOMMEND);
+      go(ScreenID.EVENT_RECORD);
     }
     else {
-      // 단일 질문
-      // 참여 결과 노출 => 설정 된 추천 컨텐츠(tar or basic) 표시
+      // 복수 질문 -> tag 추천 컨텐츠
+
+      finish();
 
       // eventNO 필수, eventDetailBean 있으면 전달
       String eventNo = model.getEventDetailBean().getItemNo();
-      EventRecordDeliveryBean eventDeliveryBean = new EventRecordDeliveryBean(eventNo);
+      EventRecommendDeliveryBean eventDeliveryBean = new EventRecommendDeliveryBean(eventNo);
       eventDeliveryBean.setEventDetailBean(model.getEventDetailBean());
       model.setDeliveryPackaging(eventDeliveryBean);
-      go(ScreenID.EVENT_RECORD);
+      go(ScreenID.EVENT_RECOMMEND);
     }
   }
 

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 1 - 1
app/src/sandbox/java/kr/co/zumo/app/lifeplus/network/api/LifeplusAPIService.java