// Path: app/src/main/java/com/tryouts/courierapplication/fragments/ProfileFragment.java
// public class ProfileFragment extends Fragment {
// 
//     private TextView mName;
//     private TextView mPhone;
//     private TextView mMail;
//     private ProgressDialog mProgressDialog;
//     private ProfilePresenter mPresenter;
// 
//     public ProfileFragment() {
//     }
// 
//     @Override
//     public void onCreate(Bundle savedInstanceState) {
//         super.onCreate(savedInstanceState);
//     }
// 
//     @Override
//     public View onCreateView(LayoutInflater inflater, ViewGroup container,
//                              Bundle savedInstanceState) {
//         return inflater.inflate(R.layout.fragment_profile, container, false);
//     }
// 
//     @Override
//     public void onViewCreated(View view, Bundle savedInstanceState) {
//         mName = (TextView) view.findViewById(R.id.name_text_view);
//         mPhone = (TextView) view.findViewById(R.id.telephone_text_view);
//         mMail = (TextView) view.findViewById(R.id.mail_text_view);
// 
//         mPresenter = new ProfilePresenter(this);
//         mPresenter.onUserDetailsRequired();
//     }
// 
//     public void setTexts(String name, String phone, String mail) {
//         mName.setText(name);
//         mPhone.setText(phone);
//         mMail.setText(mail);
//     }
// 
//     /**
//      * Prepares and shows ProgressDialog upon call (while the data is loading).
//      */
//     public void showProgressDialog() {
//         if(mProgressDialog == null) {
//             mProgressDialog = new ProgressDialog(getContext());
//             mProgressDialog.setMessage(getString(R.string.progress_dialog_loading));
//             mProgressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
//             mProgressDialog.setIndeterminate(true);
//             mProgressDialog.show();
//         }
//     }
// 
//     public void hideProgressDialog() {
//         mProgressDialog.hide();
//     }
// 
//     @Override
//     public void onDestroy() {
//         super.onDestroy();
//         mPresenter.detachView();
//     }
// }
// 
// Path: app/src/main/java/com/tryouts/courierapplication/interactors/ProfileInteractor.java
// public class ProfileInteractor {
// 
//     private ProfilePresenter mPresenter;
//     private DatabaseReference mDatabaseReference;
//     private User mUser;
// 
// 
//     public ProfileInteractor(ProfilePresenter mPresenter) {
//         this.mPresenter = mPresenter;
//         mDatabaseReference = FirebaseDatabase.getInstance().getReference();
//     }
// 
//     /**
//      * Get logged user data from DB, called from the profilePresenter which is called
//      * from the ProfileFragment onViewCreated.
//      * Returns user data to the presenter.
//      */
//     public void getUserDataFromDb() {
//         FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
//         final String uid = user.getUid();
//         mUser = new User();
//         mDatabaseReference.child("users").child(uid).addListenerForSingleValueEvent(
//                 new ValueEventListener() {
//                     @Override
//                     public void onDataChange(DataSnapshot dataSnapshot) {
//                         if(dataSnapshot.exists()) {
//                             mUser.setName(String.valueOf(dataSnapshot.child("name").getValue()));
//                             mUser.setPhone(String.valueOf(dataSnapshot.child("phone").getValue()));
//                             mUser.setEmail(String.valueOf(dataSnapshot.child("email").getValue()));
//                             mUser.setUid(uid);
//                             mUser.setRole(String.valueOf(dataSnapshot.child("role").getValue()));
//                             checkAndSetCurrentUserToken(uid);
//                             mPresenter.onReceivedUserDataFromDb(mUser);
//                         }
//                     }
// 
//                     @Override
//                     public void onCancelled(DatabaseError databaseError) {
// 
//                     }
//                 }
//         );
//     }
// 
//     // Precaution, in case user's token get changed or removed
//     private String checkAndSetCurrentUserToken(String userUid) {
//         String instanceId = FirebaseInstanceId.getInstance().getToken();
//         if(instanceId != null) {
//             DatabaseReference mDatabaseReference = FirebaseDatabase.getInstance().getReference();
//             mDatabaseReference.child("users")
//                     .child(userUid)
//                     .child("instanceId")
//                     .setValue(instanceId);
//         }
//         return instanceId;
//     }
// 
// }
// 
// Path: app/src/main/java/com/tryouts/courierapplication/items/User.java
// public class User {
// 
//     private String mEmail;
//     private String mUid;
//     private String mName;
//     private String mPhone;
//     private String mRole;
//     private String mInstanceId;
// 
//     public User() {
//     }
// 
//     public User(String email) {
//         this.mEmail = email;
//     }
// 
//     public User(String email, String role) {
//         this.mEmail = email;
//         this.mRole = role;
//     }
// 
//     public String getEmail() {
//         return mEmail;
//     }
// 
//      public String getRole() {
//        return mRole;
//      }
// 
//     public void setEmail(String email) {
//         mEmail = email;
//     }
// 
//       public void setRole(String role) {
//           mRole = role;
//       }
// 
//     public String getName() {
//         return mName;
//     }
// 
//     public void setName(String name) {
//         mName = name;
//     }
// 
//     public String getPhone() {
//         return mPhone;
//     }
// 
//     public void setPhone(String phone) {
//         mPhone = phone;
//     }
// 
//     public String getUid() {
//         return mUid;
//     }
// 
//     public void setUid(String uid) {
//         mUid = uid;
//     }
// 
//     public String getInstanceId() {
//         return mInstanceId;
//     }
// 
//     public void setInstanceId(String instanceId) {
//         mInstanceId = instanceId;
//     }
// }


import com.tryouts.courierapplication.fragments.ProfileFragment;
import com.tryouts.courierapplication.interactors.ProfileInteractor;
import com.tryouts.courierapplication.items.User;
package com.tryouts.courierapplication.presenters;



public class ProfilePresenter {

    private ProfileInteractor mModel;
// Path: app/src/main/java/com/tryouts/courierapplication/fragments/ProfileFragment.java
// public class ProfileFragment extends Fragment {
// 
//     private TextView mName;
//     private TextView mPhone;
//     private TextView mMail;
//     private ProgressDialog mProgressDialog;
//     private ProfilePresenter mPresenter;
// 
//     public ProfileFragment() {
//     }
// 
//     @Override
//     public void onCreate(Bundle savedInstanceState) {
//         super.onCreate(savedInstanceState);
//     }
// 
//     @Override
//     public View onCreateView(LayoutInflater inflater, ViewGroup container,
//                              Bundle savedInstanceState) {
//         return inflater.inflate(R.layout.fragment_profile, container, false);
//     }
// 
//     @Override
//     public void onViewCreated(View view, Bundle savedInstanceState) {
//         mName = (TextView) view.findViewById(R.id.name_text_view);
//         mPhone = (TextView) view.findViewById(R.id.telephone_text_view);
//         mMail = (TextView) view.findViewById(R.id.mail_text_view);
// 
//         mPresenter = new ProfilePresenter(this);
//         mPresenter.onUserDetailsRequired();
//     }
// 
//     public void setTexts(String name, String phone, String mail) {
//         mName.setText(name);
//         mPhone.setText(phone);
//         mMail.setText(mail);
//     }
// 
//     /**
//      * Prepares and shows ProgressDialog upon call (while the data is loading).
//      */
//     public void showProgressDialog() {
//         if(mProgressDialog == null) {
//             mProgressDialog = new ProgressDialog(getContext());
//             mProgressDialog.setMessage(getString(R.string.progress_dialog_loading));
//             mProgressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
//             mProgressDialog.setIndeterminate(true);
//             mProgressDialog.show();
//         }
//     }
// 
//     public void hideProgressDialog() {
//         mProgressDialog.hide();
//     }
// 
//     @Override
//     public void onDestroy() {
//         super.onDestroy();
//         mPresenter.detachView();
//     }
// }
// 
// Path: app/src/main/java/com/tryouts/courierapplication/interactors/ProfileInteractor.java
// public class ProfileInteractor {
// 
//     private ProfilePresenter mPresenter;
//     private DatabaseReference mDatabaseReference;
//     private User mUser;
// 
// 
//     public ProfileInteractor(ProfilePresenter mPresenter) {
//         this.mPresenter = mPresenter;
//         mDatabaseReference = FirebaseDatabase.getInstance().getReference();
//     }
// 
//     /**
//      * Get logged user data from DB, called from the profilePresenter which is called
//      * from the ProfileFragment onViewCreated.
//      * Returns user data to the presenter.
//      */
//     public void getUserDataFromDb() {
//         FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
//         final String uid = user.getUid();
//         mUser = new User();
//         mDatabaseReference.child("users").child(uid).addListenerForSingleValueEvent(
//                 new ValueEventListener() {
//                     @Override
//                     public void onDataChange(DataSnapshot dataSnapshot) {
//                         if(dataSnapshot.exists()) {
//                             mUser.setName(String.valueOf(dataSnapshot.child("name").getValue()));
//                             mUser.setPhone(String.valueOf(dataSnapshot.child("phone").getValue()));
//                             mUser.setEmail(String.valueOf(dataSnapshot.child("email").getValue()));
//                             mUser.setUid(uid);
//                             mUser.setRole(String.valueOf(dataSnapshot.child("role").getValue()));
//                             checkAndSetCurrentUserToken(uid);
//                             mPresenter.onReceivedUserDataFromDb(mUser);
//                         }
//                     }
// 
//                     @Override
//                     public void onCancelled(DatabaseError databaseError) {
// 
//                     }
//                 }
//         );
//     }
// 
//     // Precaution, in case user's token get changed or removed
//     private String checkAndSetCurrentUserToken(String userUid) {
//         String instanceId = FirebaseInstanceId.getInstance().getToken();
//         if(instanceId != null) {
//             DatabaseReference mDatabaseReference = FirebaseDatabase.getInstance().getReference();
//             mDatabaseReference.child("users")
//                     .child(userUid)
//                     .child("instanceId")
//                     .setValue(instanceId);
//         }
//         return instanceId;
//     }
// 
// }
// 
// Path: app/src/main/java/com/tryouts/courierapplication/items/User.java
// public class User {
// 
//     private String mEmail;
//     private String mUid;
//     private String mName;
//     private String mPhone;
//     private String mRole;
//     private String mInstanceId;
// 
//     public User() {
//     }
// 
//     public User(String email) {
//         this.mEmail = email;
//     }
// 
//     public User(String email, String role) {
//         this.mEmail = email;
//         this.mRole = role;
//     }
// 
//     public String getEmail() {
//         return mEmail;
//     }
// 
//      public String getRole() {
//        return mRole;
//      }
// 
//     public void setEmail(String email) {
//         mEmail = email;
//     }
// 
//       public void setRole(String role) {
//           mRole = role;
//       }
// 
//     public String getName() {
//         return mName;
//     }
// 
//     public void setName(String name) {
//         mName = name;
//     }
// 
//     public String getPhone() {
//         return mPhone;
//     }
// 
//     public void setPhone(String phone) {
//         mPhone = phone;
//     }
// 
//     public String getUid() {
//         return mUid;
//     }
// 
//     public void setUid(String uid) {
//         mUid = uid;
//     }
// 
//     public String getInstanceId() {
//         return mInstanceId;
//     }
// 
//     public void setInstanceId(String instanceId) {
//         mInstanceId = instanceId;
//     }
// }


// Path: app/src/main/java/com/tryouts/courierapplication/presenters/ProfilePresenter.java
import com.tryouts.courierapplication.fragments.ProfileFragment;
import com.tryouts.courierapplication.interactors.ProfileInteractor;
import com.tryouts.courierapplication.items.User;

package com.tryouts.courierapplication.presenters;



public class ProfilePresenter {

    private ProfileInteractor mModel;
    private ProfileFragment mView;