package io.loli.sc.server.action;
import io.loli.sc.server.entity.Gallery;
import io.loli.sc.server.entity.User;
import io.loli.sc.server.service.GalleryService;
import io.loli.sc.server.util.StatusBean;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.inject.Inject;
import javax.inject.Named;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.apache.commons.lang3.StringUtils;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
@Named
@RequestMapping("gallery")
public class GalleryAction {
private SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
@Inject
private GalleryService gs;
@RequestMapping(value = "edit/addWithJsonResponse")
@ResponseBody
public Gallery addWithJsonResponse(@RequestParam(required = false) String title,
@RequestParam(required = false) String description, HttpSession session) {
if (StringUtils.isBlank(title)) {
title = format.format(new Date());
}
Object userObj = session.getAttribute("user");
Gallery gallery = new Gallery();
gallery.setUser((User) userObj);
gallery.setTitle(title);
gallery.setDescription(description);
gs.save(gallery);
return gallery;
}
@RequestMapping(value = "edit/add")
public String add(@RequestParam(required = false) String title, @RequestParam(required = false) String description,
HttpSession session) {
Gallery gal = this.addWithJsonResponse(title, description, session);
return "/gallery/show/" + gal.getId();
}
@RequestMapping(value = "img/{id}")
public String list(@PathVariable(value = "id") int id, Model model, HttpServletRequest request) {
return "redirect:/gallery/img/" + id + "/" + 1;
}
@RequestMapping(value = "fetch/jsonList")
@ResponseBody
public List<Gallery> jsonList(HttpSession session) {
List<Gallery> galList = new ArrayList<>();
Object user = session.getAttribute("user");
if (user instanceof User) {
int uid = ((User) user).getId();
galList = gs.listByUser(uid);
}
return galList;
}
@RequestMapping(value = "list")
public String list(HttpSession session, Model model) {
Object user = session.getAttribute("user");
List<Gallery> list = gs.listByUserReversed(((User) user).getId());
model.addAttribute("galList", list);
return "/gallery/list";
}
@RequestMapping(value = "edit/update")
public String update(@RequestParam(required = true) Integer gid, @RequestParam String title,
@RequestParam(required = false) String description, HttpSession session, Model model,
RedirectAttributes redirectAttributes) {
Object user = session.getAttribute("user");
gs.update(gid, title, description, (User) user);
Gallery gal = gs.findById(gid);
redirectAttributes.addFlashAttribute("message", "相册名已被修改为:" + gal.getTitle());
return "redirect:/gallery/list";
}
@RequestMapping(value = "delete")
@ResponseBody
public StatusBean delete(@RequestParam(required = true) Integer gid, @RequestParam(required = true) String type,
HttpSession session) {
try {
Object user = session.getAttribute("user");
gs.delete(gid, type, (User) user);
} catch (Exception e) {
return new StatusBean("error", "删除失败:" + e.getMessage());
}
return new StatusBean("success", "删除成功");
}
}