Search in sources :

Example 1 with Rate

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;
}
Also used : User(models.User) UserRole(models.UserRole) Rate(models.Rate)

Example 2 with Rate

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;
}
Also used : Vote(models.Vote) CurrentUser.currentUser(actions.CurrentUser.currentUser) CurrentUser(actions.CurrentUser) User(models.User) ModuleVersion(models.ModuleVersion) Filter(utils.Filter) Rate(models.Rate) PlayVersion(models.PlayVersion) Module(models.Module) Result(play.mvc.Result) HashSet(java.util.HashSet)

Example 3 with Rate

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;
}
Also used : RatingResponseForm(forms.modules.RatingResponseForm) CurrentUser.currentUser(actions.CurrentUser.currentUser) CurrentUser(actions.CurrentUser) User(models.User) Filter(utils.Filter) Rate(models.Rate) Module(models.Module) RatingForm(forms.modules.RatingForm) Result(play.mvc.Result) RoleHolderPresent(be.objectify.deadbolt.actions.RoleHolderPresent)

Aggregations

Rate (models.Rate)3 User (models.User)3 CurrentUser (actions.CurrentUser)2 CurrentUser.currentUser (actions.CurrentUser.currentUser)2 Module (models.Module)2 Result (play.mvc.Result)2 Filter (utils.Filter)2 RoleHolderPresent (be.objectify.deadbolt.actions.RoleHolderPresent)1 RatingForm (forms.modules.RatingForm)1 RatingResponseForm (forms.modules.RatingResponseForm)1 HashSet (java.util.HashSet)1 ModuleVersion (models.ModuleVersion)1 PlayVersion (models.PlayVersion)1 UserRole (models.UserRole)1 Vote (models.Vote)1