package kr.co.hanwha.hifive.screen.task.contract;

import android.content.Context;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;

import java.util.ArrayList;

import kr.co.hanwha.hifive.base.BasePresenter;
import kr.co.hanwha.hifive.base.BaseView;
import kr.co.hanwha.hifive.data.model.MemberInfoData;
import kr.co.hanwha.hifive.data.model.TaskData;
import kr.co.hanwha.hifive.network.hanwha.HanwhaNetworkCallback;
import kr.co.hanwha.hifive.screen.task.AddTaskActivity;
import kr.co.hanwha.hifive.screen.task.AddTaskPresenter;

/**
 * Add Task : Interface
 *
 * @see AddTaskActivity
 * @see AddTaskPresenter
 * Created by sanghoonkwon on 2018. 1. 18..
 */

public interface AddTaskContract {
    interface View extends BaseView<Presenter> {
        /**
         * 등록 / 요청 버튼 상태 조건 확인
         */
        void checkActionButton();

        /**
         * 기한 설정 표시
         */
        void setDuedate(String selectedDate);

        /**
         * 받는 사람 목록 표시
         *
         * @param list       멤버 목록
         * @param isEditable 수정 가능
         */
        void setReceiverList(@Nullable ArrayList<MemberInfoData> list, @NonNull boolean isEditable);

        /**
         * TASK 수정
         *
         * @param taskData TASK 정보
         */
        void setTaskData(@NonNull TaskData taskData);
    }

    interface Presenter extends BasePresenter {
        /**
         * 기본 데이터 설정
         */
        void initData();

        /**
         * 수정할 TASK 데이터 설정
         */
        void initEditData();

        /**
         * 기한 설정 캘린더 팝업
         */
        void showCalendarDialog();

        /**
         * 내게 쓰는 TASK 인지 확인
         */
        boolean isMyTask();

        /**
         * 요청 TASK 인지 확인
         *
         * @return
         */
        boolean isRequest();

        /**
         * TASK 등록
         *
         * @param task_name TASK 내용
         */
        void requestSendTask(@NonNull String task_name);

        /**
         * TASK 수정(Update)
         *
         * @param task_name TASK 내용
         */
        void updateTask(@NonNull String task_name);
    }
}
