/*
 * COPYRIGHT (c) 2018 All rights reserved by HANWHA LIFE.
 */
package kr.co.zumo.app.lifeplus.model;

/**
 * 디바이스에 저장이 필요한 값들을 관리.
 * <pre>
 * 로그인 상태 등을 저장.
 * - 각 값 별로 필요한 상수,get/set method 를 추가한다.
 * </pre>
 *
 * @author 민효동
 * @version 1.0
 * @history 민효동   [2018. 9. 5.]   [최초 작성]
 * @since 2018. 9. 5.
 */
public class LifeplusPreferences {
  private BaseSharedPreferences preferences;

  public final static String ENCRYPTION_USER_NO = "encryption_user_no";
  public final static String ZUMO_USER_UPDATE_COMPLETED = "zumo_user_update_completed";
  public final static String USER_ID = "user_id";
  public final static String TUTORIAL_DONE = "tutorial_done";
  public final static String PERMISSION_INFO_DONE = "permission_info_done";
  public final static String DEVICE_UUID = "device_uuid";
  public final static String ENCRYPTED_PIN = "encrypted_pin";
  public final static String TOKEN = "token";


  /**
   * 기본 SharedPreferences 를 전달 받는다.
   * 별도로 dispose 할 필요는 없다.
   * <p>
   * - model 을 통해서만 접근할 수 있도록 package-private 으로 설정
   *
   * @param preferences BaseSharedPreferences
   */
  LifeplusPreferences(BaseSharedPreferences preferences) {
    this.preferences = preferences;
  }

  /**
   * 이전 앱 (Zumo) 에서 사용한 User 고유 no
   * - 앱 업데이트를 한 것인지 확인할 때 이용한다.
   */
  public String getZumoUserNo() {
    return preferences.get(ENCRYPTION_USER_NO, "");
  }

  /**
   * zumo 유저의 정보를 저장한다.
   * - 테스트로만 이용된다.
   */
  public void setZumoUserNo(String userNo) {
    preferences.put(ENCRYPTION_USER_NO, userNo);
  }

  /**
   * 이전 앱 (Zumo) 에서 업데이트(전환 가입) 완료 했음
   */
  public void setZumoUserUpdateCompleted(boolean isCompleted) {
    preferences.put(ZUMO_USER_UPDATE_COMPLETED, isCompleted);
  }

  public boolean isZumoUserUpdateCompleted() {
    return preferences.get(ZUMO_USER_UPDATE_COMPLETED, false);
  }

  /**
   * 튜토리얼을 확인했음으로 표시
   *
   * @param isDone
   */
  public void setTutorialDone(boolean isDone) {
    preferences.put(TUTORIAL_DONE, isDone);
  }

  public boolean isTutorialDone() {
    return preferences.get(TUTORIAL_DONE, false);
  }

  /**
   * 권한 안내 표시했음
   *
   * @param isDone
   */
  public void setPermissionInfoDone(boolean isDone) {
    preferences.put(PERMISSION_INFO_DONE, isDone);
  }

  public boolean isPermissionInfoDone() {
    return preferences.get(PERMISSION_INFO_DONE, false);
  }

  /**
   * 장치 고유 번호
   */
  public void setDeviceUuid(String uuid) {
    preferences.put(DEVICE_UUID, uuid);
  }

  public String getDeviceUuid() {
    return preferences.get(DEVICE_UUID, "");
  }

  /**
   * 유저 아이디
   *
   * @param id
   */
  public void setUserId(String id) {
    preferences.put(USER_ID, id);
  }

  public String getUserId() {
    return preferences.get(USER_ID, "");
  }

  /**
   * 암호화된 핀
   *
   * @param pin 암호화 핀
   */
  public void setEncryptedPin(String pin) {
    preferences.put(ENCRYPTED_PIN, pin);
  }

  public String getEncryptedPin() {
    return preferences.get(ENCRYPTED_PIN, "");
  }


  /**
   * 로그인 후 제공되는 토큰을 저장
   *
   * @param token
   */
  public void setToken(String token) {
    preferences.put(TOKEN, token);
  }

  public String getToken() {
    return preferences.get(TOKEN, "");
  }

}
