Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package matchatmedia.matchat.chat.repository;
- import android.text.TextUtils;
- 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.ValueEventListener;
- import java.util.HashMap;
- import matchatmedia.matchat.chat.data.Vote;
- /**
- * Created by Rupesh Mishra on 2/21/2018.
- */
- public class PlayerVoteRepository {
- final DatabaseReference mVoteBestPlayerReference;
- final DatabaseReference mVoteBestPlayerUserMapReference;
- final DatabaseReference mVoteCountReference;
- OnBestPlayerVoteListener mVoteBestPlayerListener;
- private static final String TABLE_VOTE_BEST_PLAYER = "VoteBestPlayer";
- private static final String TABLE_USER_VOTE_MAP = "VoteBestPlayerUserMap";
- private static final String TABLE_VOTE_COUNT = "VoteCounts";
- public static final String NODE_FIRST_HALF = "FirstHalf";
- public static final String NODE_SECOND_HALD = "SecondHalf";
- public static final String NODE_PLAYER = "Player";
- public static final String TAG = PlayerVoteRepository.class.getSimpleName();
- public interface OnBestPlayerVoteListener {
- void onMyLastVoteFetched(String playerId);
- void onVotePosted(String playerId);
- }
- public PlayerVoteRepository(String matchId) {
- mVoteBestPlayerReference = FirebaseDatabase.getInstance().getReference().child(TABLE_VOTE_BEST_PLAYER).child(matchId);
- mVoteBestPlayerUserMapReference = FirebaseDatabase.getInstance().getReference().child(TABLE_USER_VOTE_MAP).child(matchId);
- mVoteCountReference = FirebaseDatabase.getInstance().getReference().child(TABLE_VOTE_COUNT).child(matchId);
- }
- public void setVotingListener(OnBestPlayerVoteListener listener) {
- this.mVoteBestPlayerListener = listener;
- }
- public void checkMyLastVoteBestPlayer(String whichHalf, String myUserId) {
- mVoteBestPlayerUserMapReference.child(whichHalf).child(myUserId).addListenerForSingleValueEvent(new ValueEventListener() {
- @Override
- public void onDataChange(DataSnapshot dataSnapshot) {
- if (dataSnapshot != null && dataSnapshot.exists()) {
- Log.v(TAG, "user has already voted for best player");
- String playerId = (String) dataSnapshot.getValue();
- if (mVoteBestPlayerListener != null) {
- mVoteBestPlayerListener.onMyLastVoteFetched(playerId);
- }
- } else {
- if (mVoteBestPlayerListener != null) {
- mVoteBestPlayerListener.onMyLastVoteFetched("");
- }
- }
- }
- @Override
- public void onCancelled(DatabaseError databaseError) {
- Log.e(TAG, "database error - checkMyLastVoteBestPlayer - " + databaseError.getMessage());
- }
- });
- }
- /**
- * Add user's vote for a player in a match
- *
- * @param myUserId
- * @param player_id
- */
- public void voteForPlayer(String whichHalf, String myUserId, String lastPlayerId, String player_id, String player_name) {
- if (!TextUtils.isEmpty(lastPlayerId)) {
- reduceLastPlayerVoteCount(whichHalf, lastPlayerId);
- removeLastPlayerVote(whichHalf, lastPlayerId, myUserId);
- }
- mVoteBestPlayerReference.child(whichHalf).child(player_id).addListenerForSingleValueEvent(new ValueEventListener() {
- @Override
- public void onDataChange(DataSnapshot dataSnapshot) {
- HashMap<String, Boolean> votes = null;
- if (dataSnapshot != null && dataSnapshot.exists()) {
- votes = (HashMap<String, Boolean>) dataSnapshot.getValue();
- if (votes == null) {
- votes = new HashMap<>();
- }
- } else {
- votes = new HashMap<>();
- }
- votes.put(myUserId, true);
- mVoteBestPlayerReference.child(whichHalf).child(player_id).setValue(votes);
- updateUserVoteForPlayerMap(whichHalf, myUserId, player_id);
- updatePlayerVoteCount(whichHalf, player_id, player_name);
- if (mVoteBestPlayerListener != null) {
- mVoteBestPlayerListener.onVotePosted(player_id);
- }
- }
- @Override
- public void onCancelled(DatabaseError databaseError) {
- }
- });
- }
- private void updateUserVoteForPlayerMap(String whichHalf, String myUserId, String playerId) {
- mVoteBestPlayerUserMapReference.child(whichHalf).addListenerForSingleValueEvent(new ValueEventListener() {
- @Override
- public void onDataChange(DataSnapshot dataSnapshot) {
- HashMap<String, String> voteMap = null;
- if (dataSnapshot != null && dataSnapshot.exists()) {
- voteMap = (HashMap<String, String>) dataSnapshot.getValue();
- if (voteMap == null) {
- voteMap = new HashMap<>();
- }
- } else {
- voteMap = new HashMap<>();
- }
- voteMap.put(myUserId, playerId);
- mVoteBestPlayerUserMapReference.child(whichHalf).setValue(voteMap);
- }
- @Override
- public void onCancelled(DatabaseError databaseError) {
- }
- });
- }
- private void updatePlayerVoteCount(String whichHalf, String player_id, String player_name) {
- mVoteCountReference.child(whichHalf).child(NODE_PLAYER).child(player_id).addListenerForSingleValueEvent(new ValueEventListener() {
- @Override
- public void onDataChange(DataSnapshot dataSnapshot) {
- Vote playersVotes = null;
- if (dataSnapshot != null && dataSnapshot.exists()) {
- playersVotes = dataSnapshot.getValue(Vote.class);
- if (playersVotes != null && playersVotes.getVotes() > 0) {
- long votes = playersVotes.getVotes();
- votes++;
- playersVotes.setVotes(votes);
- } else {
- playersVotes = new Vote(1, player_id, player_name);
- }
- } else {
- playersVotes = new Vote(1, player_id, player_name);
- }
- mVoteCountReference.child(whichHalf).child(NODE_PLAYER).child(player_id).setValue(playersVotes);
- }
- @Override
- public void onCancelled(DatabaseError databaseError) {
- Log.e(TAG, "updatePlayerVoteCount() - error - " + databaseError.getMessage());
- }
- });
- }
- private void removeLastPlayerVote(String whichHalf, String lastPlayerId, String userId){
- mVoteBestPlayerReference.child(whichHalf).child(lastPlayerId).child(userId).removeValue();
- }
- private void reduceLastPlayerVoteCount(String whichHalf, String lastPlayerId) {
- mVoteCountReference.child(whichHalf).child(NODE_PLAYER).child(lastPlayerId).addListenerForSingleValueEvent(new ValueEventListener() {
- @Override
- public void onDataChange(DataSnapshot dataSnapshot) {
- Vote playersVotes = null;
- if (dataSnapshot != null && dataSnapshot.exists()) {
- playersVotes = dataSnapshot.getValue(Vote.class);
- if (playersVotes != null && playersVotes.getVotes() > 0) {
- long votes = playersVotes.getVotes();
- votes--;
- playersVotes.setVotes(votes);
- }
- }
- mVoteCountReference.child(whichHalf).child(NODE_PLAYER).child(lastPlayerId).setValue(playersVotes);
- }
- @Override
- public void onCancelled(DatabaseError databaseError) {
- Log.e(TAG, "reduceLastPlayerVoteCount() - error - " + databaseError.getMessage());
- }
- });
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement