Search in sources :

Example 6 with Result

use of play.mvc.Result 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)

Example 7 with Result

use of play.mvc.Result in project modules.playframework.org by playframework.

the class Modules method voteUp.

@RoleHolderPresent
public static Result voteUp(String moduleKey) {
    Result result;
    final Module module = Module.findByModuleKey(moduleKey);
    if (module == null) {
        result = notFound("Module not found: " + moduleKey);
    } else {
        User user = currentUser();
        Vote vote = CollectionUtils.filterFirst(user.votes, new Filter<Vote>() {

            @Override
            public boolean isAcceptable(Vote vote) {
                return vote.playModule.id.equals(module.id);
            }
        });
        if (vote != null) {
            if (vote.voteType == Vote.VoteType.DOWN) {
                --module.downVoteCount;
                ++module.upVoteCount;
                vote.voteType = Vote.VoteType.UP;
                vote.save();
                module.save();
            } else {
                Logger.info(String.format("User [%s] tried to upvote module [%s] but vote already existed", user.userName, module.key));
            }
        } else {
            vote = new Vote();
            vote.playModule = module;
            vote.voteType = Vote.VoteType.UP;
            // support for public voting comes later
            vote.publicVote = false;
            user.votes.add(vote);
            user.save();
            ++module.upVoteCount;
            module.save();
        }
        VoteResponseForm responseForm = new VoteResponseForm();
        responseForm.upVotes = module.upVoteCount;
        responseForm.downVotes = module.downVoteCount;
        result = ok(Json.toJson(responseForm));
    }
    return result;
}
Also used : Vote(models.Vote) CurrentUser.currentUser(actions.CurrentUser.currentUser) CurrentUser(actions.CurrentUser) User(models.User) Module(models.Module) VoteResponseForm(forms.modules.VoteResponseForm) Result(play.mvc.Result) RoleHolderPresent(be.objectify.deadbolt.actions.RoleHolderPresent)

Example 8 with Result

use of play.mvc.Result in project modules.playframework.org by playframework.

the class PlayVersions method update.

public static Result update() {
    Result result;
    Form<PlayVersion> form = form(PlayVersion.class).bindFromRequest();
    if (form.hasErrors()) {
        result = badRequest(form.errorsAsJson());
    } else {
        PlayVersion incoming = form.get();
        PlayVersion storedVersion = PlayVersion.FIND.byId(incoming.id);
        storedVersion.name = incoming.name;
        storedVersion.documentationUrl = incoming.documentationUrl;
        storedVersion.majorVersion = getMajorVersion(storedVersion);
        storedVersion.save();
        result = ok(Json.toJson(storedVersion));
    }
    return result;
}
Also used : PlayVersion(models.PlayVersion) Result(play.mvc.Result)

Example 9 with Result

use of play.mvc.Result in project modules.playframework.org by playframework.

the class Categories method update.

public static Result update() {
    Result result;
    Form<Category> form = form(Category.class).bindFromRequest();
    if (form.hasErrors()) {
        result = badRequest(form.errorsAsJson());
    } else {
        Category incoming = form.get();
        Category storedCategory = Category.FIND.byId(incoming.id);
        storedCategory.name = incoming.name;
        storedCategory.save();
        result = ok(Json.toJson(storedCategory));
    }
    return result;
}
Also used : Category(models.Category) Result(play.mvc.Result)

Example 10 with Result

use of play.mvc.Result in project modules.playframework.org by playframework.

the class FeaturedModules method update.

public static Result update() {
    Result result;
    Form<FeaturedModule> form = form(FeaturedModule.class).bindFromRequest();
    if (form.hasErrors()) {
        result = badRequest(form.errorsAsJson());
    } else {
        FeaturedModule incoming = form.get();
        FeaturedModule storedVersion = FeaturedModule.FIND.byId(incoming.id);
        storedVersion.description = StringUtils.isEmpty(incoming.description) ? storedVersion.playModule.description : incoming.description;
        storedVersion.sticky = incoming.sticky;
        storedVersion.save();
        // Annoying - converting storedVersion directly to JSON results in a cycle according to Jackson
        // Buggered if I can see why though
        ObjectNode node = Json.newObject();
        node.put("id", storedVersion.id);
        node.put("description", storedVersion.description);
        node.put("sticky", storedVersion.sticky);
        result = ok(node);
    }
    return result;
}
Also used : ObjectNode(org.codehaus.jackson.node.ObjectNode) FeaturedModule(models.FeaturedModule) Result(play.mvc.Result)

Aggregations

Result (play.mvc.Result)17 CurrentUser (actions.CurrentUser)7 CurrentUser.currentUser (actions.CurrentUser.currentUser)7 User (models.User)7 Module (models.Module)6 RoleHolderPresent (be.objectify.deadbolt.actions.RoleHolderPresent)5 PlayVersion (models.PlayVersion)4 FeaturedModule (models.FeaturedModule)3 Vote (models.Vote)3 VoteResponseForm (forms.modules.VoteResponseForm)2 Date (java.util.Date)2 Category (models.Category)2 ModuleVersion (models.ModuleVersion)2 Rate (models.Rate)2 ObjectNode (org.codehaus.jackson.node.ObjectNode)2 Filter (utils.Filter)2 IndexResults (com.github.cleverage.elasticsearch.IndexResults)1 Login (forms.login.Login)1 Register (forms.login.Register)1 RatingForm (forms.modules.RatingForm)1