package kr.co.hanwha.hifive.data.source.contract;

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

import java.util.ArrayList;

import kr.co.hanwha.hifive.base.BaseDataSource;
import kr.co.hanwha.hifive.data.model.DabDataRoot;
import kr.co.hanwha.hifive.data.model.MainProjectRoot;
import kr.co.hanwha.hifive.data.model.ProjectInfoData;
import kr.co.hanwha.hifive.data.source.ProjectDataRepository;
import kr.co.hanwha.hifive.enums.ProjectEvaluationType;
import kr.co.hanwha.hifive.network.hanwha.HanwhaNetworkCallback;

/**
 * @see ProjectDataRepository
 * Created by sanghoonkwon on 2018. 2. 20..
 */

public interface ProjectDataSource extends BaseDataSource {
    /**
     * Project 분류 목록
     *
     * @param context  Context
     * @param callback 콜백
     */
    void requestProjectList(@NonNull Context context, @NonNull HanwhaNetworkCallback<ArrayList<ProjectInfoData>> callback);

    /**
     * Project, Campaign으로 구분되는 TASK 목록 조회
     *
     * @param context    Context
     * @param project_id Project ID
     * @param isAll      필터
     * @param callback   콜백
     */
    void requestTaskListByCampaign(@NonNull Context context, @NonNull int project_id, @NonNull boolean isAll, @NonNull HanwhaNetworkCallback<MainProjectRoot> callback);

    /**
     * Update Project evaluation color
     *
     * @param context        Context
     * @param project_id     프로젝트 ID
     * @param evaluationType 프로젝트 Evaluation color code
     * @param callback       콜백
     */
    void requestUpdateProjectColor(@NonNull Context context, @NonNull int project_id, @NonNull ProjectEvaluationType evaluationType, @NonNull HanwhaNetworkCallback callback);

    /**
     * Dashboard 목록 조회
     *
     * @param context  Context
     * @param callback 콜백
     */
    void requestDashboardList(@NonNull Context context, @NonNull HanwhaNetworkCallback<DabDataRoot> callback);
}