Skip to content

Commit

Permalink
Merge pull request #103 from vikendu/admin-interface-added
Browse files Browse the repository at this point in the history
[#65] Admin interface added
  • Loading branch information
vikendu authored Jul 17, 2021
2 parents 9e34638 + 2c46750 commit aa6947a
Show file tree
Hide file tree
Showing 8 changed files with 210 additions and 14 deletions.
5 changes: 4 additions & 1 deletion app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,11 @@
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.TheServicesApp.NoActionBar">
<activity android:name=".admin.AdminFeedActivity" />
<activity android:name=".activity.SplashScreenActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
Expand All @@ -25,6 +27,7 @@
<activity android:name=".activity.ProviderHomeHelper" />
<activity android:name=".activity.ProvidersHomeActivity" />
<activity android:name=".activity.AdCreationActivity" />
<activity android:name=".activity.LoginActivity"/>
<activity android:name=".activity.LoginActivity" />
</application>

</manifest>
Original file line number Diff line number Diff line change
@@ -1,25 +1,26 @@
package com.vikendu.theservicesapp.activity;

import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;

import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

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.ValueEventListener;
import com.vikendu.theservicesapp.adapter.AdCardAdapter;
import com.vikendu.theservicesapp.R;
import com.vikendu.theservicesapp.adapter.AdCardAdapter;
import com.vikendu.theservicesapp.model.Advert;
import com.vikendu.theservicesapp.model.ServiceProvider;
import com.vikendu.theservicesapp.util.RecyclerItemClickListener;

import org.jetbrains.annotations.NotNull;

import java.util.ArrayList;

import static com.vikendu.theservicesapp.util.ResourceUtil.getFirebaseDatabase;
Expand Down Expand Up @@ -72,7 +73,7 @@ private void getProviderAdData() {

advertListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
public void onDataChange(@NotNull DataSnapshot dataSnapshot) {
advertArrayList.clear();
for(DataSnapshot providerSnapshot : dataSnapshot.getChildren()) {
mAdvert = providerSnapshot.getValue(Advert.class);
Expand All @@ -81,13 +82,13 @@ public void onDataChange(DataSnapshot dataSnapshot) {
updateFeed(advertArrayList);
}
@Override
public void onCancelled(DatabaseError databaseError) {
public void onCancelled(@NotNull DatabaseError databaseError) {
}
};
mDatabaseAdvertRef.child("approved").addValueEventListener(advertListener);
}

private void updateFeed(ArrayList advertList) {
private void updateFeed(ArrayList<Advert> advertList) {
AdCardAdapter adCardAdapter = new AdCardAdapter(this, advertList, serviceProvider);

LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import android.os.Handler;

import com.vikendu.theservicesapp.R;
import com.vikendu.theservicesapp.admin.AdminFeedActivity;

public class SplashScreenActivity extends AppCompatActivity {

Expand All @@ -28,10 +29,14 @@ protected void onCreate(Bundle savedInstanceState) {

private void redirection() {
if(loginState.getBoolean("logged",false)) {
if(loginState.getBoolean("isReceiver", false)) {
if (loginState.getBoolean("isReceiver", false)) {
intent = new Intent(this, BuyersHomeActivity.class);
} else if (loginState.getBoolean("isProvider", false)) {
intent = new Intent(this, ProvidersHomeActivity.class);
} else if (loginState.getBoolean("isAdmin", false)) {
intent = new Intent(this, AdminFeedActivity.class);
} else {
intent = new Intent(this, BuyersHomeActivity.class);
//TODO: Some error
}
} else {
intent = new Intent(this, LoginActivity.class);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.ValueEventListener;
import com.vikendu.theservicesapp.R;
import com.vikendu.theservicesapp.admin.Admin;
import com.vikendu.theservicesapp.admin.AdminFeedActivity;
import com.vikendu.theservicesapp.model.ServiceProvider;
import com.vikendu.theservicesapp.model.ServiceReceiver;

Expand Down Expand Up @@ -44,7 +46,7 @@ private void isProvider() {
public void onDataChange(@NonNull @NotNull DataSnapshot snapshot) {
ServiceProvider user = snapshot.getValue(ServiceProvider.class);
if(user != null) {
userType.edit().putBoolean("isReceiver", true).apply();
userType.edit().putBoolean("isProvider", true).apply();

intent = new Intent(UserCheckActivity.this, ProvidersHomeActivity.class);
startActivityWithIntent(intent);
Expand All @@ -66,10 +68,32 @@ private void isReceiver() {
public void onDataChange(@NonNull @NotNull DataSnapshot snapshot) {
ServiceReceiver user = snapshot.getValue(ServiceReceiver.class);
if(user != null) {
userType.edit().putBoolean("isReceiver", false).apply();
userType.edit().putBoolean("isReceiver", true).apply();

intent = new Intent(UserCheckActivity.this, BuyersHomeActivity.class);
startActivityWithIntent(intent);
} else {
isAdmin();
}
}

@Override
public void onCancelled(@NonNull @NotNull DatabaseError error) {

}
});
}

private void isAdmin() {
databaseReference.child("admins").child(uid).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull @NotNull DataSnapshot snapshot) {
Admin user = snapshot.getValue(Admin.class);
if(user != null) {
userType.edit().putBoolean("isAdmin", true).apply();

intent = new Intent(UserCheckActivity.this, AdminFeedActivity.class);
startActivityWithIntent(intent);
} else {
//TODO pop up some error; "You not registered bro."
}
Expand Down
20 changes: 20 additions & 0 deletions app/src/main/java/com/vikendu/theservicesapp/admin/Admin.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package com.vikendu.theservicesapp.admin;

public class Admin {

private boolean active;

public Admin() { }

public boolean isActive() {
return active;
}

public void setActive(boolean active) {
this.active = active;
}

public Admin(boolean active) {
this.active = active;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,129 @@
package com.vikendu.theservicesapp.admin;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;

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.ValueEventListener;
import com.vikendu.theservicesapp.R;
import com.vikendu.theservicesapp.activity.LoginActivity;
import com.vikendu.theservicesapp.adapter.AdCardAdapter;
import com.vikendu.theservicesapp.model.Advert;
import com.vikendu.theservicesapp.model.ServiceProvider;
import com.vikendu.theservicesapp.util.RecyclerItemClickListener;

import org.jetbrains.annotations.NotNull;

import java.util.ArrayList;

import static com.vikendu.theservicesapp.util.ResourceUtil.getFirebaseDatabase;

public class AdminFeedActivity extends AppCompatActivity {

private RecyclerView feedRecyclerView;
private ArrayList<Advert> unapprovedList;
private Advert ad;
private Advert checkAd;
private ServiceProvider serviceProvider;

private FirebaseDatabase database;
private DatabaseReference databaseReference;
private DatabaseReference advertReference;
private ValueEventListener valueEventListenerAd;
private DialogInterface.OnClickListener dialogClickListener;

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

feedRecyclerView = findViewById(R.id.idRVUnApprovedList);
unapprovedList = new ArrayList<>();

database = getFirebaseDatabase();
databaseReference = database.getReference();
serviceProvider = new ServiceProvider(0, "Vikendu", "Singh", "NaN", "vikendu@gmail.com", unapprovedList, null);
getPendingAds();

feedRecyclerView.addOnItemTouchListener(
new RecyclerItemClickListener(this, feedRecyclerView, new RecyclerItemClickListener.OnItemClickListener() {
@Override
public void onItemClick(View view, int position) {
checkAd = unapprovedList.get(position);
AlertDialog.Builder builder = new AlertDialog.Builder(view.getContext());
builder.setMessage("Approve this Ad?").setPositiveButton("Yep", dialogClickListener)
.setNegativeButton("Nope", dialogClickListener);
builder.show();
}

@Override
public void onLongItemClick(View view, int position) {

}
})
);

dialogClickListener = (dialog, which) -> {
switch (which){
case DialogInterface.BUTTON_POSITIVE:
databaseReference
.child("adverts")
.child("approved")
.child(checkAd.getAdId())
.setValue(checkAd);

databaseReference
.child("adverts")
.child("notApproved")
.child(checkAd.getAdId())
.setValue(null);
break;

case DialogInterface.BUTTON_NEGATIVE:

break;
}
};
}

private void getPendingAds() {
valueEventListenerAd = new ValueEventListener() {
@Override
public void onDataChange(@NonNull @NotNull DataSnapshot snapshot) {
unapprovedList.clear();
for(DataSnapshot adSnapshot : snapshot.getChildren()) {
ad = adSnapshot.getValue(Advert.class);
unapprovedList.add(ad);
updateFeed(unapprovedList);
}
}

@Override
public void onCancelled(@NonNull @NotNull DatabaseError error) {

}
};
database
.getReference("adverts")
.child("notApproved")
.addValueEventListener(valueEventListenerAd);
}

private void updateFeed(ArrayList<Advert> advertList) {
AdCardAdapter adCardAdapter = new AdCardAdapter(this, advertList, serviceProvider);

LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false);
feedRecyclerView.setLayoutManager(linearLayoutManager);
feedRecyclerView.setAdapter(adCardAdapter);
}
}
14 changes: 14 additions & 0 deletions app/src/main/res/layout/activity_admin_feed.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="1dp"
tools:context=".admin.AdminFeedActivity">

<androidx.recyclerview.widget.RecyclerView
android:id="@+id/idRVUnApprovedList"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</RelativeLayout>
Binary file modified the_services_app_docs.docx
Binary file not shown.

0 comments on commit aa6947a

Please sign in to comment.