package com.app.simplitend.patientprofile;

import com.app.simplitend.patientprofile.medicalinfo.mvvm.MedicationInfo;
import com.app.simplitend.patientprofile.medreminder.mvvm.models.FreqNMedTypeResult;
import com.app.simplitend.patientprofile.medreminder.mvvm.models.ReminderResult;
import com.app.simplitend.patientprofile.setuproutine.mvvm.RoutineDetails;
import com.app.simplitend.welcome.welcomepatient.mvvm.models.PatientData;

import java.util.List;

public interface ProfileContracts {


    interface ProfileProgressCallback{
        void onProfileProgressFetched(PatientData patientData);

        void onProfileProgressFetchFailed(Throwable t, String message);
    }

    interface GetRemindersListCallback {
        void onRemindersListFetched(List<ReminderResult> reminderResult);

        void onFetchRemindersListFailed(Throwable t, String message);
    }

    interface AddReminderCallBack {
        void onReminderAdded(ReminderResult reminderDetails);

        void onReminderAddFailed(Throwable t, String message);
    }

    interface FreqNMedTypesCallback{
        void onFreqNMedTypeLoaded(FreqNMedTypeResult result);

        void onFreqNMedTypeLoadFailed(Throwable t, String message);
    }

    interface ReminderDeleteCallback{
        void onReminderDeleted(int adapterPosition);

        void onReminderDeleteFailed(Throwable t, String message);
    }

    interface AddMedicalIntoCallback{
        void onMedicalInfoAdded(MedicationInfo medicationInfo);

        void onMedicalInfoAddFailed(Throwable t, String message);
    }

    interface GetMedicationInfoCallback{
        void onMedicalInfoFetched(MedicationInfo medicationInfo);

        void onMedicationInfoFetchedFailed(Throwable t, String message);
    }

    interface GetRoutinesCallback{
        void onRoutinesFetched(List<RoutineDetails> routineList);

        void onRoutinesFetchedFailed(Throwable t, String message);
    }

    interface RoutineDeleteCallback{
        void onRoutineDeleted(int adapterPosition);

        void onRoutineDeleteFailed(Throwable t, String message);
    }

    interface AddNUpdateRoutineCallback{
        void onRoutineAdded(RoutineDetails medicationInfo);

        void onRoutineAddFailed(Throwable t, String message);
    }

}
