package com.syzton.sunread.controller.cms;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.stereotype.Controller;
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.ResponseBody;
import com.syzton.sunread.controller.BaseController;
import com.syzton.sunread.dto.common.PageResource;
import com.syzton.sunread.model.user.Admin;
import com.syzton.sunread.model.user.SystemAdmin;
import com.syzton.sunread.model.user.Teacher;
import com.syzton.sunread.service.user.UserService;
@Controller
@RequestMapping(value = "/api")
public class AdminController extends BaseController {
private UserService userService;
@Autowired
public AdminController(UserService userService) {
this.userService = userService;
}
@RequestMapping(value = "/admin", method = RequestMethod.POST)
@ResponseBody
public String addRootSystem(
@RequestParam("password") String password) {
return userService.addAdmin(password);
}
@RequestMapping(value = "/systemadmin", method = RequestMethod.POST)
@ResponseBody
public String add(@RequestParam("userid") String userId,
@RequestParam("password") String password) {
return userService.addSystemAdmin(userId, password);
}
@RequestMapping(value = "/superschooladmin", method = RequestMethod.POST)
@ResponseBody
public String addSchoolSuperAdmin(@RequestParam("campusid") long campusId,@RequestParam("userid") String userId,
@RequestParam("password") String password) {
return userService.addSchoolSuperAdmin(userId, password, campusId);
}
@RequestMapping(value = "/schooladmin", method = RequestMethod.POST)
@ResponseBody
public String addSchoolAdmin(@RequestParam("campusid") long campusId,@RequestParam("userid") String userId,
@RequestParam("password") String password) {
return userService.addSchoolAdmin(userId, password, campusId);
}
@RequestMapping(value = "/systemadmin", method = RequestMethod.PUT)
@ResponseBody
public String update(@RequestParam("userid") String userId,
@RequestParam("oldpassword") String oldPassword,@RequestParam("newpassword") String newPassword) {
return userService.updateSystemAdmin(userId, oldPassword, newPassword);
}
@RequestMapping(value = "/supersystemadmin", method = RequestMethod.PUT)
@ResponseBody
public String update(
@RequestParam("oldpassword") String oldPassword,@RequestParam("newpassword") String newPassword) {
return userService.updateSuperAdminPassword(newPassword, oldPassword);
}
@RequestMapping(value = "/superschooladmin", method = RequestMethod.PUT)
@ResponseBody
public String updateSchoolSuperAdmin(@RequestParam("userid") String userId,
@RequestParam("oldpassword") String oldPassword,@RequestParam("newpassword") String newPassword) {
return userService.updateSchoolSuperAdminPassword(userId, oldPassword, newPassword);
}
@RequestMapping(value = "/schooladmin", method = RequestMethod.PUT)
@ResponseBody
public String updateSchoolAdmin(@RequestParam("userid") String userId,
@RequestParam("oldpassword") String oldPassword,@RequestParam("newpassword") String newPassword) {
return userService.updateSchoolAdminPassword(userId, oldPassword, newPassword);
}
@RequestMapping(value = "/systemadmin", method = RequestMethod.GET)
@ResponseBody
public PageResource<SystemAdmin> get(@RequestParam("page") int page,
@RequestParam("size") int size,
@RequestParam("sortBy") String sortBy) {
sortBy = sortBy == null ? "id" : sortBy;
Pageable pageable = new PageRequest(page, size, new Sort(sortBy));
Page<SystemAdmin> pageResult = userService.getSystemAdmins(false, pageable);
return new PageResource<>(pageResult, "page", "size");
}
@RequestMapping(value = "/allschooladmins", method = RequestMethod.GET)
@ResponseBody
public PageResource<Admin> getAllSchoolAdmin(@RequestParam("campusid") long campusId,@RequestParam("page") int page,
@RequestParam("size") int size,
@RequestParam("sortBy") String sortBy) {
sortBy = sortBy == null ? "id" : sortBy;
Pageable pageable = new PageRequest(page, size, new Sort(sortBy));
Page<Admin> pageResult = userService.getAllSchoolAdmins(campusId,pageable);
return new PageResource<>(pageResult, "page", "size");
}
@RequestMapping(value = "/superschooladmins", method = RequestMethod.GET)
@ResponseBody
public PageResource<Admin> getSpuerSchoolAdmins(@RequestParam("campusid") long campusId,@RequestParam("page") int page,
@RequestParam("size") int size,
@RequestParam("sortBy") String sortBy) {
sortBy = sortBy == null ? "id" : sortBy;
Pageable pageable = new PageRequest(page, size, new Sort(sortBy));
Page<Admin> pageResult = userService.getSchoolAdmins(campusId,true,pageable);
return new PageResource<>(pageResult, "page", "size");
}
@RequestMapping(value = "/schooladmins", method = RequestMethod.GET)
@ResponseBody
public PageResource<Admin> getSchoolAdmins(@RequestParam("campusid") long campusId,@RequestParam("page") int page,
@RequestParam("size") int size,
@RequestParam("sortBy") String sortBy) {
sortBy = sortBy == null ? "id" : sortBy;
Pageable pageable = new PageRequest(page, size, new Sort(sortBy));
Page<Admin> pageResult = userService.getSchoolAdmins(campusId,false,pageable);
return new PageResource<>(pageResult, "page", "size");
}
@RequestMapping(value = "/systemadmin", method = RequestMethod.DELETE)
@ResponseBody
public String delete(@RequestParam("id") long id) {
return userService.deleteSystemAdminId(id);
}
@RequestMapping(value = "/schooladmin", method = RequestMethod.DELETE)
@ResponseBody
public String deleteSchoolAdmin(@RequestParam("id") long id) {
return userService.deleteAdminId(id);
}
@RequestMapping(value = "/superschooladmin", method = RequestMethod.DELETE)
@ResponseBody
public String deleteSuperSchoolAdmin(@RequestParam("id") long id) {
return userService.deleteAdminId(id);
}
@RequestMapping(value = "/admins/{adminId}", method = RequestMethod.GET)
@ResponseBody
public Admin findByTeacherId(@PathVariable("adminId") Long adminId) {
return userService.findByAdminId(adminId);
}
}