Package org.uned.agonzalo16.bitacora.web.message

Source Code of org.uned.agonzalo16.bitacora.web.message.MessageController

package org.uned.agonzalo16.bitacora.web.message;

import java.util.Date;

import javax.validation.Valid;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.SessionAttributes;
import org.uned.agonzalo16.bitacora.dao.MessageDao;
import org.uned.agonzalo16.bitacora.dao.UserDao;
import org.uned.agonzalo16.bitacora.domain.Message;
import org.uned.agonzalo16.bitacora.domain.User;
import org.uned.agonzalo16.bitacora.service.security.AuthenticatedUser;

@RequestMapping("/message")
@Controller
@SessionAttributes({ "userAttribute" })
public class MessageController {

  @Autowired
  private UserDao userDao;

  @Autowired
  private MessageDao messageDao;

  @RequestMapping(method = RequestMethod.GET, value = "/listReceive")
  public String listReceive(Model model, @ModelAttribute("userAttribute") AuthenticatedUser user) {

    User authUser = userDao.get(user.getId());

    model.addAttribute("receive", messageDao.findByDestination(authUser));

    return "message/listReceive";
  }

  @RequestMapping(method = RequestMethod.GET, value = "/listSend")
  public String listSend(Model model, @ModelAttribute("userAttribute") AuthenticatedUser user) {

    User authUser = userDao.get(user.getId());

    model.addAttribute("msgs", messageDao.findByOrigin(authUser));

    return "message/listSend";
  }

  @RequestMapping(method = RequestMethod.GET, value = "/show/{id}")
  public String show(@PathVariable("id") Long id, Model model, @ModelAttribute("userAttribute") AuthenticatedUser user) {
    User authUser = userDao.get(user.getId());
    Message msg = messageDao.get(id);
    model.addAttribute("message", msg);
    model.addAttribute("reply", !msg.getOrigin().equals(authUser));

    if (!msg.getRead() && msg.getDestination().equals(authUser)) {
      msg.setRead(true);
      messageDao.merge(msg);
    }

    return "message/show";
  }

  @RequestMapping(method = RequestMethod.GET, value = "/beginCreate")
  public String beginCreate(Model model) {
    model.addAttribute("message", new MessageForm());
    return "message/create";
  }

  @RequestMapping(method = RequestMethod.POST, value = "/create")
  public String create(@Valid @ModelAttribute("message") MessageForm form, BindingResult result, @ModelAttribute("userAttribute") AuthenticatedUser user) {

    if (result.hasErrors()) {
      return "message/create";
    }

    // validar que el destino existe
    User destination = userDao.findByUsername(form.getDestination());
    if (destination == null) {
      result.rejectValue("destination", "invalidusername", "invalidusername");
      return "message/create";
    }

    Message msg = new Message();
    msg.setCreationDate(new Date());
    msg.setSubject(form.getSubject());
    msg.setContent(form.getContent());
    msg.setOrigin(userDao.get(user.getId()));
    msg.setDestination(destination);

    messageDao.merge(msg);

    return "redirect:/message/listReceive";
  }

  @RequestMapping(method = RequestMethod.GET, value = "/reply/{id}")
  public String reply(@PathVariable("id") Long id, Model model) {
    MessageForm form = new MessageForm();
    Message msg = messageDao.get(id);
    form.setSubject("[RE] " + msg.getSubject());
    form.setDestination(msg.getOrigin().getUsername());

    model.addAttribute("message", form);
    return "message/create";
  }

  @RequestMapping(method = RequestMethod.POST, value = "/delete")
  public String delete(@RequestParam("id") Long id, @ModelAttribute("userAttribute") AuthenticatedUser user) {

    Message msg = messageDao.get(id);

    if (msg.getOrigin().getId().equals(user.getId())) {
      msg.setDeletedByOrigin(true);
    }

    if (msg.getDestination().getId().equals(user.getId())) {
      msg.setDeletedByDestination(true);
    }

    if (msg.getDeletedByDestination() && msg.getDeletedByOrigin()) {
      messageDao.delete(id);
    } else {
      messageDao.merge(msg);
    }

    return "redirect:/message/listReceive";
  }

}
TOP

Related Classes of org.uned.agonzalo16.bitacora.web.message.MessageController

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.