Package com.jpoweredcart.admin.controller.user

Source Code of com.jpoweredcart.admin.controller.user.UserAdminController

package com.jpoweredcart.admin.controller.user;

import java.util.List;

import javax.inject.Inject;
import javax.servlet.http.HttpServletRequest;
import javax.validation.Valid;

import org.apache.commons.lang3.StringUtils;
import org.springframework.dao.EmptyResultDataAccessException;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
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.servlet.mvc.support.RedirectAttributes;

import com.jpoweredcart.admin.form.user.UserForm;
import com.jpoweredcart.admin.model.user.UserAdminModel;
import com.jpoweredcart.admin.model.user.UserGroupAdminModel;
import com.jpoweredcart.common.BaseController;
import com.jpoweredcart.common.PageParam;
import com.jpoweredcart.common.entity.user.User;
import com.jpoweredcart.common.exception.admin.UnauthorizedAdminException;
import com.jpoweredcart.common.security.UserPermissions;
import com.jpoweredcart.common.view.Pagination;

@Controller
@RequestMapping("/admin/user/user")
public class UserAdminController extends BaseController {
 
  @Inject
  private UserAdminModel userAdminModel;
 
  @Inject
  private UserGroupAdminModel userGroupAdminModel;
 
  @RequestMapping(value={"", "/"})
  public String index(Model model, HttpServletRequest request){
   
    PageParam pageParam = createPageParam(request);
    List<User> userList = userAdminModel.getList(pageParam);
    model.addAttribute("users", userList);
   
    int total = userAdminModel.getTotal();
    Pagination pagination = new Pagination();
    pagination.setTotal(total).setPage(pageParam.getPage())
      .setLimit(pageParam.getLimit()).setText(message(request, "text.pagination"))
      .setUrl(uri("/admin/user/user"));
    model.addAttribute("pagination", pagination.render());
   
    return "/admin/user/userList";
  }
 
 
  @RequestMapping(value="/create")
  public String create(Model model){
   
    UserPermissions.checkModify("user/user",
        new UnauthorizedAdminException());
    initUserForm(model);
   
    model.addAttribute("userForm", new UserForm());
   
    return "/admin/user/userForm";
  }
 
  @RequestMapping(value="/edit/{id}")
  public String edit(@PathVariable("id") Integer id, Model model){
   
    checkModifyPermission();
    initUserForm(model);
   
    UserForm userForm = userAdminModel.getForm(id);
    model.addAttribute("userForm", userForm);
   
    return "/admin/user/userForm";
  }
 
  @RequestMapping(value="/save", method=RequestMethod.POST)
  public String save(@Valid UserForm userForm, BindingResult result, Model model,
      RedirectAttributes redirect){
   
    checkModifyPermission();
   
    if(userForm.getId()==null){
      //new user
      try{
        userAdminModel.getOneByUsername(userForm.getUsername());
        model.addAttribute("msg_warning", "error.exists");
      }catch(EmptyResultDataAccessException e){}
      if(StringUtils.isBlank(userForm.getPassword())){
        result.rejectValue("password", "error.password");
      }else if(!userForm.getPassword().equals(userForm.getConfirm())){
        result.rejectValue("confirm", "error.confirm");
      }
    }else{
      if(!StringUtils.isBlank(userForm.getPassword())){
        if(!userForm.getPassword().equals(userForm.getConfirm())){
          result.rejectValue("confirm", "error.confirm");
        }
      }
    }
   
    if(result.hasErrors()){
      initUserForm(model);
      model.addAttribute("userForm", userForm);
      return "/admin/user/userForm";
    }
   
    if(userForm.getId()!=null){
      userAdminModel.update(userForm);
    }else{
      userAdminModel.create(userForm);
    }
   
   
    redirect.addFlashAttribute("msg_success", "text.success");
   
    return "redirect:/admin/user/user";
  }
 
  @RequestMapping(value="/delete", method=RequestMethod.POST)
  public String delete(@RequestParam(value="selected", required=false) Integer[] ids, Model model,
      RedirectAttributes redirect){
    checkModifyPermission();
    boolean error = false;
    if(ids!=null){
      for(Integer id: ids){
        if(UserPermissions.getUserId().equals(id)){
          error = true;
          redirect.addFlashAttribute("msg_warning", "error.account");
        }
      }
      if(!error) for(Integer id: ids){
        userAdminModel.delete(id);
      }
      if(!error) redirect.addFlashAttribute("msg_success", "text.success");
    }
   
    return "redirect:/admin/user/user";
  }
 
  private void initUserForm(Model model){
    //should not over 50
    model.addAttribute("userGroups", userGroupAdminModel
        .getList(PageParam.list(50)));
  }
 
 
  private void checkModifyPermission(){
    UserPermissions.checkModify("user/user",
        new UnauthorizedAdminException());
  }
 
}



TOP

Related Classes of com.jpoweredcart.admin.controller.user.UserAdminController

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.