package kr.co.hanwha.hifive.screen.main.setting.contract;

import android.support.annotation.NonNull;

import kr.co.hanwha.hifive.base.BasePresenter;
import kr.co.hanwha.hifive.base.BaseView;

public interface MainSettingContract {
    interface View extends BaseView<Presenter> {

        void initLayout(@NonNull android.view.View parent);

        void initPresenter();

        void initCallback();

        /**
         * 멤버 기본 정보
         *
         * @param name  이름
         * @param login 로그인 아이디
         * @param rank  직급
         */
        void setMemberInfo(@NonNull String name, @NonNull String login, @NonNull String rank);

        /**
         * 기본 화면
         */
        void setDefaultScreen();

        /**
         * 알림 설정
         */
        void setAlarmSetting(boolean isSelected);

        /**
         * 버전 정보
         *
         * @param version    v[version]-[rc]([rv])
         * @param needUpdate Update button
         */
        void setVersion(@NonNull String version, @NonNull boolean needUpdate);
    }

    interface Presenter extends BasePresenter {
        /**
         * Initialize Data
         */
        void initData();

        /**
         * Member HR 정보 조회
         */
        void initMemberHrInfo(boolean needNotification);

        /**
         * 알림 상태 조회
         */
        void initNotificationStatus();

        /**
         * 개인 정보 변경
         */
        void doEditProfileManagement();

        /**
         * 계정 비밀번호 변경
         */
        void doPasswordManagement();

        /**
         * 간편 비밀번호 초기화
         */
        void doSimplePasswordManagement();

        /**
         * 유닛 관리
         *
         * @param projectId 유닛 ID
         */
        void doUnitManagement(@NonNull int projectId);

        /**
         * 알림 설정
         *
         * @param isSelected On / Off
         */
        void setAlarmSetting(boolean isSelected);

        /**
         * 업데이트 확인 팝업
         */
        void showUpdateAlert();

        /**
         * 업데이트
         */
        void doUpdate();

        /**
         * Permission 필요 알림
         */
        void showPermissionAlert();
    }
}
