Last active
May 25, 2018 01:48
-
-
Save griajobag/292b7b1abb1e6e18d24812fa5e91486c to your computer and use it in GitHub Desktop.
Rating
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* this method used to update rating of product | |
* | |
* @param reviewModel | |
* @param productModel | |
*/ | |
private void updateRating(ReviewModel reviewModel, ProductModel productModel) { | |
ProductModel rate = new ProductModel(); | |
rate.setIdProduct(productModel.getIdProduct()); | |
rate.setProductName(productModel.getProductName()); | |
//update stars | |
double totalStars; | |
int totalVoters = 0; | |
if (reviewModel.getTotalStarGiven() == 1.0) { | |
totalStars = 1.0 + (double) productModel.getStar1(); | |
rate.setStar1((int) totalStars); | |
rate.setStar2(productModel.getStar2()); | |
rate.setStar3(productModel.getStar3()); | |
rate.setStar4(productModel.getStar4()); | |
rate.setStar5(productModel.getStar5()); | |
totalVoters = (int) (totalStars + productModel.getStar2() + productModel.getStar3() + productModel.getStar4() + productModel.getStar5()); | |
if (productModel.getTotalVoters() == 0) { | |
rate.setTotalVoters(1); | |
} else { | |
rate.setTotalVoters(totalVoters); | |
} | |
} else if (reviewModel.getTotalStarGiven() == 2.0) { | |
totalStars = 1.0 + (double) productModel.getStar2(); | |
rate.setStar1(productModel.getStar1()); | |
rate.setStar2((int) totalStars); | |
rate.setStar3(productModel.getStar3()); | |
rate.setStar4(productModel.getStar4()); | |
rate.setStar5(productModel.getStar5()); | |
totalVoters = (int) (totalStars + productModel.getStar1() + productModel.getStar3() + productModel.getStar4() + productModel.getStar5()); | |
if (productModel.getTotalVoters() == 0) { | |
rate.setTotalVoters(1); | |
} else { | |
rate.setTotalVoters(totalVoters); | |
} | |
} else if (reviewModel.getTotalStarGiven() == 3.0) { | |
totalStars = 1.0 + (double) productModel.getStar3(); | |
rate.setStar1(productModel.getStar1()); | |
rate.setStar2(productModel.getStar2()); | |
rate.setStar3((int) totalStars); | |
rate.setStar4(productModel.getStar4()); | |
rate.setStar5(productModel.getStar5()); | |
totalVoters = (int) (totalStars + productModel.getStar1() + productModel.getStar2() + productModel.getStar4() + productModel.getStar5()); | |
if (productModel.getTotalVoters() == 0) { | |
rate.setTotalVoters(1); | |
} else { | |
rate.setTotalVoters(totalVoters); | |
} | |
} else if (reviewModel.getTotalStarGiven() == 4.0) { | |
totalStars = 1.0 + (double) productModel.getStar4(); | |
rate.setStar1(productModel.getStar1()); | |
rate.setStar2(productModel.getStar2()); | |
rate.setStar3(productModel.getStar3()); | |
rate.setStar4((int) totalStars); | |
rate.setStar5(productModel.getStar5()); | |
totalVoters = (int) (totalStars + productModel.getStar1() + productModel.getStar2() + productModel.getStar3() + productModel.getStar5()); | |
if (productModel.getTotalVoters() == 0) { | |
rate.setTotalVoters(1); | |
} else { | |
rate.setTotalVoters(totalVoters); | |
} | |
} else if (reviewModel.getTotalStarGiven() == 5.0) { | |
totalStars = 1.0 + (double) productModel.getStar5(); | |
rate.setStar1(productModel.getStar1()); | |
rate.setStar2(productModel.getStar2()); | |
rate.setStar3(productModel.getStar3()); | |
rate.setStar4(productModel.getStar4()); | |
rate.setStar5((int) totalStars); | |
totalVoters = (int) (totalStars + productModel.getStar1() + productModel.getStar2() + productModel.getStar3() + productModel.getStar4()); | |
if (productModel.getTotalVoters() == 0) { | |
rate.setTotalVoters(1); | |
} else { | |
rate.setTotalVoters(totalVoters); | |
} | |
} | |
//update rate | |
int totalStar1 = rate.getStar1() * 1; | |
int totalStar2 = rate.getStar2() * 2; | |
int totalStar3 = rate.getStar3() * 3; | |
int totalStar4 = rate.getStar4() * 4; | |
int totalStar5 = rate.getStar5() * 5; | |
double sumOfStars = totalStar1 + totalStar2 + totalStar3 + totalStar4 + totalStar5; | |
double totalRating = sumOfStars / (double) totalVoters; | |
DecimalFormat format = new DecimalFormat(".#"); | |
rate.setTotalRating(Double.parseDouble(format.format(totalRating))); | |
CollectionReference collectionReference = firebaseFirestore.collection("product"); | |
collectionReference.document(productModel.getIdProduct()) | |
.set(rate) | |
.addOnSuccessListener(aVoid -> { | |
progressDialog.dismiss(); | |
Toast.makeText(ReviewActivity.this, "Successfully update Rating", Toast.LENGTH_SHORT).show(); | |
productModelGlobal = rate; | |
//after success, then update the rating color and populate the recyclerview with the data of reviews | |
setRatingByColor(rate); | |
getAllReview(productModel.getIdProduct()); | |
}) | |
.addOnFailureListener(new OnFailureListener() { | |
@Override | |
public void onFailure(@NonNull Exception e) { | |
progressDialog.dismiss(); | |
Toast.makeText(ReviewActivity.this, "Failed Update Rating : " + e.getMessage(), Toast.LENGTH_SHORT).show(); | |
} | |
}); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment