Package controllers

Source Code of controllers.EventRestController

package controllers;

import models.Event;
import models.Proposal;
import models.User;
import models.utils.TransformValidationErrors;
import play.data.Form;
import play.i18n.Messages;
import play.mvc.Result;
import securesocial.core.java.SecureSocial;

import java.util.*;

import static play.data.Form.form;
import static play.libs.Json.toJson;

@SecureSocial.SecuredAction(ajaxCall = true)
public class EventRestController extends BaseController {


    public static Result get(Long idEvent) {
        Event event = Event.find.byId(idEvent);
        if (event == null) {
            return noContent();
        }
        return ok(toJson(event));
    }

    public static Result organizers(Long idEvent) {
        Event event = Event.find.byId(idEvent);
        if (event == null) {
            return noContent();
        }
        return ok(toJson(event.getOrganizers()));
    }

    public static Result getCurrentEvent() {
        Event event = getEvent();
        if (event != null) {
            return ok(toJson(getEvent()));
        } else {
            return ok();
        }
    }

    public static Result close(Long idEvent) {

        // Vérification du rôle d'admin
        User user = getLoggedUser();
        if (!user.admin) {
            return forbidden();
        }

        Event event = Event.find.byId(idEvent);
        if (event != null) {

            //TODO gestion de l'agenda

            event.update();
            return ok(toJson(event));
        }
        // HTTP 204 en cas de succès (NO CONTENT)
        return noContent();
    }

    public static Result all() {
        return ok(toJson(Event.find.all()));
    }

    public static Result save() {

        // Vérification du rôle d'admin
        User user = getLoggedUser();
        if (!user.admin) {
            return forbidden();
        }

        Form<Event> evenForm = form(Event.class).bindFromRequest();

        if (evenForm.hasErrors()) {
            return badRequest(toJson(TransformValidationErrors.transform(evenForm.errors())));
        }

        Event formEvent = evenForm.get();

        if (formEvent.getId() == null) {
            // Nouvel Evénement
            if (Event.findByName(formEvent.getName()) != null) {
                return badRequest(toJson(TransformValidationErrors.transform(Messages.get("error.event.already.exist"))));
            }
            formEvent.save();
            List<User> organizersInDb = new ArrayList<User>();
            for (User organizer : formEvent.getOrganizers()) {
                organizersInDb.add(User.findById(organizer.id));
            }
            formEvent.getOrganizers().clear();
            formEvent.getOrganizers().addAll(organizersInDb);
            formEvent.saveManyToManyAssociations("organizers");

            formEvent.update();

        } else {
            // Mise à jour d'un événement
            Event dbEvent = Event.find.byId(formEvent.getId());
            if (!formEvent.getName().equals(dbEvent.getName())
                    && Event.findByName(formEvent.getName()) != null) {
                return badRequest(toJson(TransformValidationErrors.transform(Messages.get("error.event.already.exist"))));
            }

            dbEvent.setUrl(formEvent.getUrl());
            dbEvent.setShortName(formEvent.getShortName());
            dbEvent.setCgu(formEvent.getCgu());
            dbEvent.logo = formEvent.logo;
            dbEvent.setDescription(formEvent.getDescription());
            dbEvent.update();

            updateOrganizers(formEvent, dbEvent);
        }

        // HTTP 204 en cas de succès (NO CONTENT)
        return noContent();
    }

    private static void updateOrganizers(Event formEvent, Event dbEvent) {
        Set<Long> organizersInForm = new HashSet<Long>();
        for (User organizer : formEvent.getOrganizers()) {
            organizersInForm.add(organizer.id);
        }
        List<User> organizersTmp = new ArrayList<User>(dbEvent.getOrganizers());
        Set<Long> organizersInDb = new HashSet<Long>();
        for (User organizer : organizersTmp) {
            if (!organizersInForm.contains(organizer.id)) {
                dbEvent.getOrganizers().remove(organizer);
            } else {
                organizersInDb.add(organizer.id);
            }
        }

        for (Long organizer : organizersInForm) {
            if (!organizersInDb.contains(organizer)) {
                dbEvent.getOrganizers().add(User.findById(organizer));
            }
        }
        dbEvent.saveManyToManyAssociations("organizers");
    }

    public static Result delete(Long idEvent) {

        // Vérification du rôle d'admin
        User user = getLoggedUser();
        if (!user.admin) {
            return forbidden();
        }

        Event event = Event.find.byId(idEvent);
        if (event != null) {
            List<Proposal> proposals = Proposal.findByEvent(event);
            if (proposals.isEmpty()) {
                event.delete();
            } else {
                Map<String, List<String>> errors = new HashMap<String, List<String>>();
                errors.put("event", Collections.singletonList(Messages.get("error.event.hasElement")));
                return badRequest(toJson(errors));
            }


        }
        // HTTP 204 en cas de succès (NO CONTENT)
        return noContent();
    }
}
TOP

Related Classes of controllers.EventRestController

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.