// Path: RadarApp/app/src/main/java/bg/mentormate/academy/radarapp/data/LocalDb.java
// public class LocalDb {
// 
//     private static LocalDb instance;
// 
//     public static LocalDb getInstance() {
//         if (instance == null) {
//             instance = new LocalDb();
//         }
// 
//         return instance;
//     }
// 
//     private User currentUser;
//     private Room selectedRoom;
//     private boolean isTrackingOn;
// 
//     private LocalDb() {
//         currentUser = (User) User.getCurrentUser();
//         isTrackingOn = false;
//     }
// 
//     public User getCurrentUser() {
//         return currentUser;
//     }
// 
//     public void setCurrentUser(User currentUser) {
//         this.currentUser = currentUser;
//     }
// 
//     public Room getSelectedRoom() {
//         return selectedRoom;
//     }
// 
//     public void setSelectedRoom(Room selectedRoom) {
//         this.selectedRoom = selectedRoom;
//     }
// 
//     public boolean isTrackingOn() {
//         return isTrackingOn;
//     }
// 
//     public void setTrackingOn(boolean isTrackingOn) {
//         this.isTrackingOn = isTrackingOn;
//     }
// }
// 
// Path: RadarApp/app/src/main/java/bg/mentormate/academy/radarapp/models/User.java
// @ParseClassName(Constants.USER_TABLE)
// public class User extends ParseUser{
// 
//     public UserDetail getUserDetail() {
//         return (UserDetail) getParseObject(Constants.USER_COL_USER_DETAIL);
//     }
// 
//     public void setUserDetail(UserDetail userDetail) {
//         put(Constants.USER_COL_USER_DETAIL, userDetail);
//     }
// 
//     public Room getRoom() {
//         return (Room) getParseObject(Constants.USER_COL_ROOM);
//     }
// 
//     public void setRoom(Room room) {
//         put(Constants.USER_COL_ROOM, room);
//     }
// 
//     public ParseFile getAvatar() {
//         return getParseFile(Constants.USER_COL_AVATAR);
//     }
// 
//     public void setAvatar(ParseFile avatar) {
//         put(Constants.USER_COL_AVATAR, avatar);
//     }
// 
//     public Follow getFollow() {
//         return (Follow) getParseObject(Constants.USER_COL_FOLLOW);
//     }
// 
//     public void setFollow(Follow follow) {
//         put(Constants.USER_COL_FOLLOW, follow);
//     }
// }
// 
// Path: RadarApp/app/src/main/java/bg/mentormate/academy/radarapp/tools/NotificationHelper.java
// public class NotificationHelper {
// 
//     public static void alert(Context context, String title, String message) {
//         AlertDialog.Builder builder = new AlertDialog.Builder(context);
//         builder.setMessage(message)
//                 .setTitle(title)
//                 .setPositiveButton(android.R.string.ok, null);
// 
//         AlertDialog dialog = builder.create();
//         dialog.show();
//     }
// 
//     public static void notifyTheUser(Context context, int title, int description, Intent intent) {
//         NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(context)
//                 .setContentTitle(context.getString(title))
//                 .setContentText(context.getString(description))
//                 .setSmallIcon(R.drawable.ic_stat_ic_launcher)
//                 .setAutoCancel(true);
// 
//         PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);
//         notificationBuilder.setContentIntent(pendingIntent);
// 
//         NotificationManager notificationManager = (NotificationManager) context.getSystemService(Activity.NOTIFICATION_SERVICE);
// 
//         notificationManager.notify(1, notificationBuilder.build());
//     }
// }


import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ProgressBar;
import android.widget.TextView;
import com.parse.LogInCallback;
import com.parse.ParseException;
import com.parse.ParseUser;
import bg.mentormate.academy.radarapp.R;
import bg.mentormate.academy.radarapp.data.LocalDb;
import bg.mentormate.academy.radarapp.models.User;
import bg.mentormate.academy.radarapp.tools.NotificationHelper;

        mBtnLogin.setOnClickListener(this);
        mTvRegister.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        int id = v.getId();

        switch (id) {
            case R.id.btnLogin:
                login();
                break;
            case R.id.tvRegister:
                goToRegister();
                break;
        }
    }

    private void login() {
        String username = mEtUsername.getText().toString().trim();
        String password = mEtPassword.getText().toString().trim();

        if (username.isEmpty() || password.isEmpty()) {
            // The input are empty, show an alert
            NotificationHelper.alert(this, getString(R.string.dialog_error_title),
                    getString(R.string.login_invalid_inputs_message));
        } else {
            showProgressBar();
            // Log the new user in Parse.com
// Path: RadarApp/app/src/main/java/bg/mentormate/academy/radarapp/data/LocalDb.java
// public class LocalDb {
// 
//     private static LocalDb instance;
// 
//     public static LocalDb getInstance() {
//         if (instance == null) {
//             instance = new LocalDb();
//         }
// 
//         return instance;
//     }
// 
//     private User currentUser;
//     private Room selectedRoom;
//     private boolean isTrackingOn;
// 
//     private LocalDb() {
//         currentUser = (User) User.getCurrentUser();
//         isTrackingOn = false;
//     }
// 
//     public User getCurrentUser() {
//         return currentUser;
//     }
// 
//     public void setCurrentUser(User currentUser) {
//         this.currentUser = currentUser;
//     }
// 
//     public Room getSelectedRoom() {
//         return selectedRoom;
//     }
// 
//     public void setSelectedRoom(Room selectedRoom) {
//         this.selectedRoom = selectedRoom;
//     }
// 
//     public boolean isTrackingOn() {
//         return isTrackingOn;
//     }
// 
//     public void setTrackingOn(boolean isTrackingOn) {
//         this.isTrackingOn = isTrackingOn;
//     }
// }
// 
// Path: RadarApp/app/src/main/java/bg/mentormate/academy/radarapp/models/User.java
// @ParseClassName(Constants.USER_TABLE)
// public class User extends ParseUser{
// 
//     public UserDetail getUserDetail() {
//         return (UserDetail) getParseObject(Constants.USER_COL_USER_DETAIL);
//     }
// 
//     public void setUserDetail(UserDetail userDetail) {
//         put(Constants.USER_COL_USER_DETAIL, userDetail);
//     }
// 
//     public Room getRoom() {
//         return (Room) getParseObject(Constants.USER_COL_ROOM);
//     }
// 
//     public void setRoom(Room room) {
//         put(Constants.USER_COL_ROOM, room);
//     }
// 
//     public ParseFile getAvatar() {
//         return getParseFile(Constants.USER_COL_AVATAR);
//     }
// 
//     public void setAvatar(ParseFile avatar) {
//         put(Constants.USER_COL_AVATAR, avatar);
//     }
// 
//     public Follow getFollow() {
//         return (Follow) getParseObject(Constants.USER_COL_FOLLOW);
//     }
// 
//     public void setFollow(Follow follow) {
//         put(Constants.USER_COL_FOLLOW, follow);
//     }
// }
// 
// Path: RadarApp/app/src/main/java/bg/mentormate/academy/radarapp/tools/NotificationHelper.java
// public class NotificationHelper {
// 
//     public static void alert(Context context, String title, String message) {
//         AlertDialog.Builder builder = new AlertDialog.Builder(context);
//         builder.setMessage(message)
//                 .setTitle(title)
//                 .setPositiveButton(android.R.string.ok, null);
// 
//         AlertDialog dialog = builder.create();
//         dialog.show();
//     }
// 
//     public static void notifyTheUser(Context context, int title, int description, Intent intent) {
//         NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(context)
//                 .setContentTitle(context.getString(title))
//                 .setContentText(context.getString(description))
//                 .setSmallIcon(R.drawable.ic_stat_ic_launcher)
//                 .setAutoCancel(true);
// 
//         PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);
//         notificationBuilder.setContentIntent(pendingIntent);
// 
//         NotificationManager notificationManager = (NotificationManager) context.getSystemService(Activity.NOTIFICATION_SERVICE);
// 
//         notificationManager.notify(1, notificationBuilder.build());
//     }
// }


// Path: RadarApp/app/src/main/java/bg/mentormate/academy/radarapp/activities/LoginActivity.java
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ProgressBar;
import android.widget.TextView;
import com.parse.LogInCallback;
import com.parse.ParseException;
import com.parse.ParseUser;
import bg.mentormate.academy.radarapp.R;
import bg.mentormate.academy.radarapp.data.LocalDb;
import bg.mentormate.academy.radarapp.models.User;
import bg.mentormate.academy.radarapp.tools.NotificationHelper;


        mBtnLogin.setOnClickListener(this);
        mTvRegister.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        int id = v.getId();

        switch (id) {
            case R.id.btnLogin:
                login();
                break;
            case R.id.tvRegister:
                goToRegister();
                break;
        }
    }

    private void login() {
        String username = mEtUsername.getText().toString().trim();
        String password = mEtPassword.getText().toString().trim();

        if (username.isEmpty() || password.isEmpty()) {
            // The input are empty, show an alert
            NotificationHelper.alert(this, getString(R.string.dialog_error_title),
                    getString(R.string.login_invalid_inputs_message));
        } else {
            showProgressBar();
            // Log the new user in Parse.com
            User.logInInBackground(username, password, new LogInCallback() {