Skip to content

Instantly share code, notes, and snippets.

@griajobag
Last active May 25, 2018 01:48
Show Gist options
  • Save griajobag/292b7b1abb1e6e18d24812fa5e91486c to your computer and use it in GitHub Desktop.
Save griajobag/292b7b1abb1e6e18d24812fa5e91486c to your computer and use it in GitHub Desktop.
Rating
/**
* 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