package com.lemenzo.clock.alarm;
import android.content.*;import com.lemenzo.clock.model.Alarm;import org.json.*;import java.util.*;
public final class AlarmRepository {
 private static final String PREF="alarms",KEY="items"; private final SharedPreferences p;
 public AlarmRepository(Context c){Context d=c.createDeviceProtectedStorageContext();p=d.getSharedPreferences(PREF,Context.MODE_PRIVATE);}
 public synchronized List<Alarm> all(){ArrayList<Alarm> out=new ArrayList<>();try{JSONArray a=new JSONArray(p.getString(KEY,"[]"));for(int i=0;i<a.length();i++)out.add(Alarm.from(a.getJSONObject(i)));}catch(Exception ignored){}out.sort(Comparator.comparingInt((Alarm x)->x.hour).thenComparingInt(x->x.minute));return out;}
 public synchronized Alarm get(long id){for(Alarm a:all())if(a.id==id)return a;return null;}
 public synchronized void save(Alarm alarm){List<Alarm> a=all();boolean found=false;for(int i=0;i<a.size();i++)if(a.get(i).id==alarm.id){a.set(i,alarm);found=true;break;}if(!found)a.add(alarm);write(a);}
 public synchronized void delete(long id){List<Alarm>a=all();a.removeIf(x->x.id==id);write(a);}
 private void write(List<Alarm> list){JSONArray a=new JSONArray();for(Alarm x:list)try{a.put(x.json());}catch(Exception ignored){}p.edit().putString(KEY,a.toString()).apply();}
}
