use of models.Rate in project modules.playframework.org by playframework.
the class UserServices method createUser.
public User createUser(String userName, String displayName, String password, List<UserRole> roles) {
User user = new User();
user.userName = userName;
user.displayName = displayName;
user.password = password;
user.accountActive = true;
user.roles = new ArrayList<UserRole>(roles);
user.rates = new ArrayList<Rate>();
user.save();
user.saveManyToManyAssociations("roles");
return user;
}
use of models.Rate in project modules.playframework.org by playframework.
the class Modules method details.
public static Result details(String moduleKey) {
Result result;
final Module module = Module.findByModuleKey(moduleKey);
if (module == null) {
result = notFound("Module not found: " + moduleKey);
} else {
List<ModuleVersion> moduleVersions = ModuleVersion.findByModule(module);
User user = currentUser();
Rate rate = null;
Vote vote = null;
if (user != null) {
rate = CollectionUtils.filterFirst(user.rates, new Filter<Rate>() {
public boolean isAcceptable(Rate rate) {
return rate.playModule.id.equals(module.id);
}
});
vote = CollectionUtils.filterFirst(user.votes, new Filter<Vote>() {
public boolean isAcceptable(Vote vote) {
return vote.playModule.id.equals(module.id);
}
});
}
Set<PlayVersion.MajorVersion> majorVersions = new HashSet<PlayVersion.MajorVersion>();
for (ModuleVersion moduleVersion : moduleVersions) {
majorVersions.addAll(moduleVersion.getMajorVersions());
}
Ebean.refresh(module.rating);
result = ok(moduleDetails.render(user, module, moduleVersions, majorVersions, rate, vote));
}
return result;
}
use of models.Rate in project modules.playframework.org by playframework.
the class Modules method rate.
// If a user has already rated, then change the rate, don't add a new one
@RoleHolderPresent
public static Result rate(String moduleKey) {
Result result;
Form<RatingForm> form = form(RatingForm.class).bindFromRequest();
if (form.hasErrors()) {
result = badRequest(form.errorsAsJson());
} else {
RatingForm ratingForm = form.get();
final Module module = Module.findById(ratingForm.id);
if (module == null) {
result = badRequest("Module does not exist");
} else {
User user = currentUser();
Rate rate = null;
if (user != null) {
// user shouldn't be null because of @RoleHolderPresent
rate = CollectionUtils.filterFirst(user.rates, new Filter<Rate>() {
@Override
public boolean isAcceptable(Rate rate) {
return rate.playModule.id.equals(module.id);
}
});
if (rate != null) {
module.rating.subtract(rate);
} else {
rate = new Rate();
rate.playModule = module;
user.rates.add(rate);
}
rate.rating = ratingForm.rating;
module.rating.add(rate);
module.rating.calculateAverage();
module.save();
user.save();
}
RatingResponseForm responseForm = new RatingResponseForm();
responseForm.totalRatings = module.rating.totalRatings();
responseForm.averageRating = module.rating.averageRating;
result = ok(Json.toJson(responseForm));
}
}
return result;
}
Aggregations