use of com.example.nftscmers.db.ApplicantDb in project HackFest2022-Pretzel by chuanshaof.
the class ScrollApplicationActivity method onCreate.
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_scroll_application);
FirebaseFirestore db = FirebaseFirestore.getInstance();
flingAdapterView = findViewById(R.id.swipe);
ArrayList<ApplicantModel> item = new ArrayList<>();
jobTracker = new HashMap<>();
ApplicantAdapter arrayAdapter = new ApplicantAdapter(ScrollApplicationActivity.this, R.layout.item_in_cardview, item);
flingAdapterView.setAdapter(arrayAdapter);
new EmployerDb(ScrollApplicationActivity.this, new EmployerDb.OnEmployerModel() {
@Override
public void onResult(EmployerModel employerModel) {
for (DocumentReference job : employerModel.getJobs()) {
Toast.makeText(getApplicationContext(), job.toString(), Toast.LENGTH_LONG).show();
new JobDb(ScrollApplicationActivity.this, new JobDb.OnJobModel() {
@Override
public void onResult(JobModel jobModel) {
if (jobModel.getPending() == null) {
return;
}
for (DocumentReference pending : jobModel.getPending()) {
Log.d(TAG, "onResult: " + pending.getId());
new ApplicationDb(ScrollApplicationActivity.this, new ApplicationDb.OnApplicationModel() {
@Override
public void onResult(ApplicationModel applicationModel) {
new ApplicantDb(ScrollApplicationActivity.this, new ApplicantDb.OnApplicantModel() {
@Override
public void onResult(ApplicantModel applicantModel) {
Log.d(TAG, "onResult: " + applicantModel);
item.add(applicantModel);
ArrayList<DocumentReference> tracker = new ArrayList<>();
tracker.add(pending);
tracker.add(job);
jobTracker.put(applicantModel, tracker);
arrayAdapter.notifyDataSetChanged();
}
}).getApplicantModel(applicationModel.getApplicant());
}
}).getApplicationModel(pending);
}
}
}).getJobModel(job);
}
}
}).getEmployerModel(LoggedInUser.getInstance().getEmail());
flingAdapterView.setFlingListener(new SwipeFlingAdapterView.onFlingListener() {
@Override
public void removeFirstObjectInAdapter() {
item.remove(0);
arrayAdapter.notifyDataSetChanged();
}
@Override
public void onLeftCardExit(Object o) {
new JobDb(ScrollApplicationActivity.this, new JobDb.OnJobUploadSuccess() {
@Override
public void onResult() {
new ApplicationDb(ScrollApplicationActivity.this, new ApplicationDb.OnApplicationUploadSuccess() {
@Override
public void onResult() {
Toast.makeText(ScrollApplicationActivity.this, "Rejected", Toast.LENGTH_SHORT).show();
Intent intent = new Intent(ScrollApplicationActivity.this, FeedbackActivity.class);
intent.putExtra(FeedbackActivity.TAG, jobTracker.get(o).get(0).getId());
startActivityForResult(intent, 0);
}
}).updateApplicationStatus(ApplicationModel.REJECTED, jobTracker.get(o).get(0));
}
}).deletePending(jobTracker.get(o).get(0), jobTracker.get(o).get(1));
}
@Override
public void onRightCardExit(Object o) {
Log.d(TAG, "onRightCardExit: " + o);
new JobDb(ScrollApplicationActivity.this, new JobDb.OnJobUploadSuccess() {
@Override
public void onResult() {
new ApplicationDb(ScrollApplicationActivity.this, new ApplicationDb.OnApplicationUploadSuccess() {
@Override
public void onResult() {
Toast.makeText(ScrollApplicationActivity.this, "Accepted", Toast.LENGTH_SHORT).show();
Intent intent = new Intent(ScrollApplicationActivity.this, FeedbackActivity.class);
intent.putExtra(FeedbackActivity.TAG, jobTracker.get(o).get(0).getId());
startActivityForResult(intent, 0);
}
}).updateApplicationStatus(ApplicationModel.ACCEPTED, jobTracker.get(o).get(0));
}
}).deletePending(jobTracker.get(o).get(0), jobTracker.get(o).get(1));
}
@Override
public void onAdapterAboutToEmpty(int i) {
}
@Override
public void onScroll(float v) {
}
});
flingAdapterView.setOnItemClickListener(new SwipeFlingAdapterView.OnItemClickListener() {
@Override
public void onItemClicked(int i, Object o) {
Intent intent = new Intent(ScrollApplicationActivity.this, com.example.nftscmers.applicantactivities.ProfileActivity.class);
intent.putExtra(com.example.nftscmers.applicantactivities.ProfileActivity.TAG, item.get(i).getDocumentId());
startActivity(intent);
}
});
Button like, dislike;
like = findViewById(R.id.like);
dislike = findViewById(R.id.dislike);
like.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
flingAdapterView.getTopCardListener().selectRight();
}
});
dislike.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
flingAdapterView.getTopCardListener().selectLeft();
}
});
// Initialize and assign variable
BottomNavigationView bottomNavigationView = findViewById(R.id.bottom_navigation);
// Set Home selected
bottomNavigationView.setSelectedItemId(R.id.home);
// Perform item selected listener
bottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
Intent intent;
switch(item.getItemId()) {
case R.id.history:
intent = new Intent(ScrollApplicationActivity.this, JobHistoryActivity.class);
startActivity(intent);
overridePendingTransition(0, 0);
return true;
case R.id.home:
return true;
case R.id.create:
startActivity(new Intent(getApplicationContext(), EditJobActivity.class));
overridePendingTransition(0, 0);
return true;
case R.id.profile:
intent = new Intent(ScrollApplicationActivity.this, ProfileActivity.class);
intent.putExtra(ProfileActivity.TAG, LoggedInUser.getInstance().getEmail());
startActivity(intent);
overridePendingTransition(0, 0);
return true;
}
return false;
}
});
}
use of com.example.nftscmers.db.ApplicantDb in project HackFest2022-Pretzel by chuanshaof.
the class SignUpActivity method onCreate.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sign_up);
title = findViewById(R.id.sign_up_title);
email = findViewById(R.id.sign_up_email);
password = findViewById(R.id.sign_up_password);
confirmPassword = findViewById(R.id.sign_up_confirm_password);
signUp = findViewById(R.id.sign_up_button);
signIn = findViewById(R.id.sign_in);
// Setting up of initial sign up type
signUpType = getIntent().getStringExtra(LoginActivity.TAG);
Log.i(TAG, "onCreate: " + signUpType);
if (signUpType == null) {
signUpType = Globals.APPLICANT;
title.setText(getString(R.string.applicant_sign_up));
} else if (signUpType.equals(Globals.APPLICANT)) {
title.setText(getString(R.string.applicant_sign_up));
} else if (signUpType.equals(Globals.EMPLOYER)) {
title.setText(getString(R.string.employer_sign_up));
} else {
signUpType = Globals.APPLICANT;
title.setText(getString(R.string.applicant_sign_up));
}
// Sign Up Button
signUp.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String enteredEmail = email.getText().toString();
String enteredPassword = password.getText().toString();
String confirmPasswordEntry = confirmPassword.getText().toString();
// Ensure that entered data are all valid
if (!Utils.isNetworkAvailable(SignUpActivity.this) | Utils.invalidData(email, password, confirmPassword) | Utils.invalidEmail(email)) {
Log.i(TAG, "onSignUp failed");
return;
}
if (!enteredPassword.equals(confirmPasswordEntry)) {
confirmPassword.requestFocus();
confirmPassword.setError(getString(R.string.sign_up_confirm_fail));
Log.i(TAG, getString(R.string.sign_up_confirm_fail));
return;
}
// Disable button for Firestore processing
signUp.setEnabled(false);
signUp.setText(getString(R.string.signing_up));
// Ensuring that email has not already been registered
DocumentReference accountDocument = FirebaseFirestore.getInstance().collection(AccountModel.getCollectionId()).document(email.getText().toString());
accountDocument.get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
@Override
public void onComplete(@NonNull Task<DocumentSnapshot> task) {
if (task.isSuccessful()) {
DocumentSnapshot document = task.getResult();
if (document.exists()) {
email.requestFocus();
email.setError(getString(R.string.duplicate_email));
signUp.setEnabled(true);
signUp.setText(getString(R.string.sign_up));
Log.i(TAG, getString(R.string.duplicate_email));
return;
} else {
// Creating new profile in applicant
if (signUpType.equals(Globals.APPLICANT)) {
new ApplicantDb(SignUpActivity.this, new ApplicantDb.OnApplicantUploadSuccess() {
@Override
public void onResult() {
Map<String, Object> account = new HashMap<>();
account.put(AccountModel.EMAIL, enteredEmail);
account.put(AccountModel.PASSWORD, password.getText().toString());
account.put(AccountModel.ACCOUNTTYPE, signUpType);
account.put(AccountModel.PROFILE, new ApplicantDb().getDocument(email.getText().toString()));
accountDocument.set(account).addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
LoggedInUser.getInstance().setUser(FirebaseFirestore.getInstance().collection(ApplicantModel.getCollectionId()).document(enteredEmail), enteredEmail, signUpType);
Utils.toastLog(SignUpActivity.this, TAG, getString(R.string.sign_up_success));
Intent intent = new Intent(SignUpActivity.this, com.example.nftscmers.applicantactivities.EditProfileActivity.class);
startActivity(intent);
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Log.w(TAG, getString(R.string.firestore_error), e);
signUp.setEnabled(true);
signUp.setText(getString(R.string.sign_up));
}
});
}
}).newProfile(email);
} else if (signUpType.equals(Globals.EMPLOYER)) {
new EmployerDb(SignUpActivity.this, new EmployerDb.OnEmployerUploadSuccess() {
@Override
public void onResult() {
Map<String, Object> account = new HashMap<>();
account.put(AccountModel.EMAIL, enteredEmail);
account.put(AccountModel.PASSWORD, password.getText().toString());
account.put(AccountModel.ACCOUNTTYPE, Globals.EMPLOYER);
account.put(AccountModel.PROFILE, new EmployerDb().getDocument(email.getText().toString()));
accountDocument.set(account).addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
LoggedInUser.getInstance().setUser(FirebaseFirestore.getInstance().collection(EmployerModel.getCollectionId()).document(enteredEmail), enteredEmail, signUpType);
Utils.toastLog(SignUpActivity.this, TAG, getString(R.string.sign_up_success));
Intent intent = new Intent(SignUpActivity.this, com.example.nftscmers.employeractivities.EditProfileActivity.class);
startActivity(intent);
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Utils.fireStoreError(SignUpActivity.this, TAG);
signUp.setEnabled(true);
signUp.setText(getString(R.string.sign_in));
}
});
}
}).newProfile(email);
} else {
Utils.unexpectedError(SignUpActivity.this, TAG);
signUp.setEnabled(true);
signUp.setText(getString(R.string.sign_up));
}
}
} else {
Utils.fireStoreError(SignUpActivity.this, TAG);
signUp.setEnabled(true);
signUp.setText(getString(R.string.sign_up));
}
}
});
}
});
// Sign In Button
signIn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(SignUpActivity.this, LoginActivity.class);
intent.putExtra(LoginActivity.TAG, signUpType);
startActivity(intent);
}
});
}
use of com.example.nftscmers.db.ApplicantDb in project HackFest2022-Pretzel by chuanshaof.
the class ApplicationHistoryActivity method onCreate.
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_view_application_history);
applicationListView = findViewById(R.id.application_history_list);
ArrayAdapter arrayAdapter = new ApplicationHistoryAdapter(ApplicationHistoryActivity.this, R.layout.item_application_history, applicationDetailsList, new ApplicationHistoryAdapter.OnItemClickListener() {
@Override
public void onResult(int position) {
Intent intent = new Intent(ApplicationHistoryActivity.this, FeedbackActivity.class);
intent.putExtra(FeedbackActivity.TAG, applicationsList.get(position).getId());
startActivityForResult(intent, 0);
}
});
applicationListView.setAdapter(arrayAdapter);
new ApplicantDb(ApplicationHistoryActivity.this, new ApplicantDb.OnApplicantModel() {
@Override
public void onResult(ApplicantModel applicantModel) {
applicationsList = applicantModel.getApplications();
for (DocumentReference application : applicationsList) {
Log.d(TAG, "onResult: " + application.getId());
new ApplicationDb(ApplicationHistoryActivity.this, new ApplicationDb.OnApplicationModel() {
@Override
public void onResult(ApplicationModel applicationModel) {
HashMap<String, String> applicationDetails = new HashMap<>();
applicationDetails.put(ApplicationModel.STATUS, applicationModel.getStatus());
new JobDb(ApplicationHistoryActivity.this, new JobDb.OnJobModel() {
@Override
public void onResult(JobModel jobModel) {
applicationDetails.put(ApplicationModel.COMPANY, jobModel.getEmployerName());
applicationDetails.put(ApplicationModel.POSITION, jobModel.getPosition());
applicationDetailsList.add(applicationDetails);
arrayAdapter.notifyDataSetChanged();
}
}).getJobModel(applicationModel.getJob());
}
}).getApplicationModel(application);
}
}
}).getApplicantModel(LoggedInUser.getInstance().getEmail());
// Initialize and assign variable
BottomNavigationView bottomNavigationView = findViewById(R.id.bottom_navigation);
// Set Home selected
bottomNavigationView.setSelectedItemId(R.id.history);
// Perform item selected listener
bottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
Intent intent;
switch(item.getItemId()) {
case R.id.history:
return true;
case R.id.home:
intent = new Intent(ApplicationHistoryActivity.this, ScrollJobActivity.class);
startActivity(intent);
overridePendingTransition(0, 0);
return true;
case R.id.profile:
intent = new Intent(ApplicationHistoryActivity.this, ProfileActivity.class);
intent.putExtra(ProfileActivity.TAG, LoggedInUser.getInstance().getEmail());
startActivity(intent);
overridePendingTransition(0, 0);
return true;
}
return false;
}
});
}
use of com.example.nftscmers.db.ApplicantDb in project HackFest2022-Pretzel by chuanshaof.
the class EditProfileActivity method onCreate.
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_applicant_edit_profile);
profilePic = findViewById(R.id.applicant_profile_pic);
name = findViewById(R.id.applicant_name);
email = findViewById(R.id.applicant_email);
about = findViewById(R.id.applicant_about);
linkedIn = findViewById(R.id.applicant_linkedin);
skills = findViewById(R.id.applicant_skills);
confirm = findViewById(R.id.applicant_edit_confirm);
Utils.uneditableField(name);
Utils.uneditableField(email);
// Loading of previous applicant data
new ApplicantDb(EditProfileActivity.this, new ApplicantDb.OnApplicantModel() {
@Override
public void onResult(ApplicantModel applicantModel) {
Log.d(TAG, "onResult: " + applicantModel);
applicant = applicantModel;
Utils.loadImage(profilePic, applicant.getImage());
Utils.setValid(name, applicant.getName());
Utils.setValid(about, applicant.getAbout());
Utils.setValid(linkedIn, applicant.getLinkedIn());
Utils.setValid(email, applicant.getEmail());
SkillsFragment skillsFragment = new SkillsFragment(applicant.getSkills());
getSupportFragmentManager().beginTransaction().replace(R.id.applicant_skills_list, skillsFragment).commit();
}
}).getApplicantModel(LoggedInUser.getInstance().getEmail());
// When user clicks on skills
skills.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
new SkillsDialogFragment(applicant.getSkills(), new SkillsDialogFragment.onConfirmListener() {
@Override
public void onResult(ArrayList<DocumentReference> skillsList) {
Log.d(TAG, "onResult: " + skillsList);
applicant.setSkills(skillsList);
SkillsFragment skillsFragment = new SkillsFragment(applicant.getSkills());
getSupportFragmentManager().beginTransaction().replace(R.id.applicant_skills_list, skillsFragment).commit();
}
}).show(getSupportFragmentManager(), TAG);
}
});
profilePic.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Log.d(TAG, "onClick: test");
new CropDialogFragment(new CropDialogFragment.OnCropListener() {
@Override
public void onResult(Uri uri) {
new ApplicantDb(EditProfileActivity.this, new ApplicantDb.OnApplicantUploadSuccess() {
@Override
protected void onResult(String string) {
Utils.loadImage(profilePic, string);
applicant.setImage(string);
}
}).updateProfilePicture(uri, applicant.getEmail());
}
}).show(getSupportFragmentManager(), TAG);
}
});
confirm.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (Utils.invalidData(name, about)) {
return;
}
applicant.setName(name.getText().toString());
applicant.setAbout(about.getText().toString());
applicant.setLinkedIn(linkedIn.getText().toString());
new ApplicantDb(EditProfileActivity.this, new ApplicantDb.OnApplicantUploadSuccess() {
@Override
protected void onResult() {
Intent intent = new Intent(EditProfileActivity.this, ProfileActivity.class);
intent.putExtra(ProfileActivity.TAG, LoggedInUser.getInstance().getEmail());
startActivity(intent);
}
}, new ApplicantDb.OnApplicantUploadFailure() {
@Override
public void onResult() {
Utils.fireStoreError(EditProfileActivity.this, TAG);
}
}).updateProfile(applicant);
}
});
}
use of com.example.nftscmers.db.ApplicantDb in project HackFest2022-Pretzel by chuanshaof.
the class ProfileActivity method onCreate.
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_applicant_profile);
title = findViewById(R.id.applicant_title);
back = findViewById(R.id.applicant_back_arrow);
editProfile = findViewById(R.id.applicant_edit_profile);
profilePic = findViewById(R.id.applicant_profile_pic);
name = findViewById(R.id.applicant_name);
email = findViewById(R.id.applicant_email);
about = findViewById(R.id.applicant_about);
linkedIn = findViewById(R.id.applicant_linkedIn);
logout = findViewById(R.id.button_logout);
// Loading of previous applicant data
new ApplicantDb(ProfileActivity.this, new ApplicantDb.OnApplicantModel() {
@Override
public void onResult(ApplicantModel applicantModel) {
Log.d(TAG, "onResult: " + applicantModel);
applicant = applicantModel;
Utils.loadImage(profilePic, applicant.getImage());
Utils.setValid(name, applicant.getName());
Utils.setValid(about, applicant.getAbout());
Utils.setValid(linkedIn, applicant.getLinkedIn());
Utils.setValid(email, applicant.getEmail());
SkillsFragment skillsFragment = new SkillsFragment(applicant.getSkills());
getSupportFragmentManager().beginTransaction().replace(R.id.applicant_skills, skillsFragment).commit();
}
}).getApplicantModel(getIntent().getStringExtra(ProfileActivity.TAG));
if (!getIntent().getStringExtra(ProfileActivity.TAG).equals(LoggedInUser.getInstance().getEmail())) {
Utils.disableButton(editProfile);
Utils.disableButton(logout);
}
editProfile.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(ProfileActivity.this, EditProfileActivity.class);
startActivity(intent);
}
});
logout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
new YesNoDialogFragment("Confirm Logout?", new YesNoDialogFragment.OnClickListener() {
@Override
public void onResult(boolean bool) {
if (bool == true) {
LoggedInUser.getInstance().setUser(null, null, null);
Intent intent = new Intent(ProfileActivity.this, LoginActivity.class);
startActivity(intent);
}
}
}).show(getSupportFragmentManager(), TAG);
}
});
BottomNavigationView bottomNavigationView = findViewById(R.id.bottom_navigation);
if (LoggedInUser.getInstance().getAccountType() == Globals.APPLICANT) {
back.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(ProfileActivity.this, ScrollJobActivity.class);
startActivity(intent);
}
});
// Set Home selected
bottomNavigationView.setSelectedItemId(R.id.profile);
// Perform item selected listener
bottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
switch(item.getItemId()) {
case R.id.history:
startActivity(new Intent(getApplicationContext(), ApplicationHistoryActivity.class));
overridePendingTransition(0, 0);
return true;
case R.id.home:
startActivity(new Intent(getApplicationContext(), ScrollJobActivity.class));
overridePendingTransition(0, 0);
return true;
case R.id.profile:
return true;
}
return false;
}
});
} else {
title.setText(getString(R.string.applicant_profile));
back.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(ProfileActivity.this, ScrollApplicationActivity.class);
startActivity(intent);
}
});
Utils.disableButton(bottomNavigationView);
}
}
Aggregations