package za.co.riggaroo.electricitymonitor;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;

import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ServerValue;
import com.google.firebase.database.ValueEventListener;

public class ElectricityMonitorActivity extends AppCompatActivity {
    public static final String FIREBASE_LOGS = "logs";
    private static final String TAG = "ElectricityMonitor";
    public static final String FIREBASE_ONLINE_ENDPOINT = "/online";
    public static final String FIREBASE_INFO_CONNECTED = ".info/connected";
    private DatabaseReference firebaseDatabase;
    private ElectricityLog electricityLog;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_electricity_monitor);

        firebaseDatabase = FirebaseDatabase.getInstance().getReference();
        final String key = firebaseDatabase.child(FIREBASE_LOGS).push().getKey();

        electricityLog = new ElectricityLog();

        final DatabaseReference onlineRef = firebaseDatabase.child(FIREBASE_INFO_CONNECTED);
        final DatabaseReference currentUserRef = firebaseDatabase.child(FIREBASE_ONLINE_ENDPOINT);
        onlineRef.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(final DataSnapshot dataSnapshot) {
                Log.d(TAG, "DataSnapshot:" + dataSnapshot);
                if (dataSnapshot.getValue(Boolean.class)) {
                    electricityLog.setTimestampOn(ServerValue.TIMESTAMP);
                    final DatabaseReference currentLogDbRef = firebaseDatabase.child(FIREBASE_LOGS).child(key);
                    currentLogDbRef.setValue(electricityLog);

                    currentUserRef.setValue(true);
                    currentUserRef.onDisconnect().setValue(false);

                    electricityLog.setTimestampOff(ServerValue.TIMESTAMP);
                    currentLogDbRef.onDisconnect().setValue(electricityLog);

                }
            }

            @Override
            public void onCancelled(final DatabaseError databaseError) {
                Log.d(TAG, "DatabaseError:" + databaseError);
            }
        });
    }
}