Files
SpringRest/src/main/java/application/controllers/UserController.java
T
2014-06-10 09:19:17 +02:00

176 lines
6.2 KiB
Java

package application.controllers;
import application.model.Message;
import application.model.Role;
import application.model.User;
import application.repositories.RoleRepository;
import application.repositories.UserRepository;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.*;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import java.util.HashSet;
import java.util.Set;
/**
* Created by lukasgol on 21.04.14.
*/
@Controller
@RequestMapping(value="/users")
public class UserController {
@Autowired
private UserRepository userRepository;
@Autowired
private RoleRepository roleRepository;
@PersistenceContext
private EntityManager entityManager;
@RequestMapping(value = "/add")
@ResponseBody
//powinno mapowac obiekt json na obiekt user
public String addUser(@RequestBody User user) {
/*User user = new User();
user.setFirstName(username);
Set<Role> roles = new HashSet<Role>();
roles.add(new Role("lala","lala"));
roles.add(new Role("lala1","lala1"));
user.setRoles(roles);*/
userRepository.save(user);
return "saved user: "+user.getUserId();
}
@RequestMapping(value = "/login", method = RequestMethod.POST)
@ResponseBody
public String login(@RequestParam String login,@RequestParam String password) throws JSONException{
JSONObject loginResponse = new JSONObject();
boolean userFound = false;
for(User user: userRepository.findAll()){
if(login.equals(user.getEmail()) && password.equals(user.getPassword())){
userFound = true;
loginResponse.put("success", true);
loginResponse.put("userId", user.getUserId());
//access codes
JSONArray accessCodes = new JSONArray();
for(Role role : user.getRoles()){
JSONObject returnedRole = new JSONObject();
returnedRole.put("role", role.getRoleName());
returnedRole.put("password", role.getPassword());
accessCodes.put(returnedRole);
}
//message
JSONArray messages = new JSONArray();
for( Message message : user.getMessages()){
JSONObject returnedMessage = new JSONObject();
returnedMessage.put("messageId", message.getMessageId());
returnedMessage.put("dateTime", message.getDateTime());
returnedMessage.put("isRead", message.isRead());
returnedMessage.put("message", message.getMessage());
messages.put(returnedMessage);
}
loginResponse.put("accessCodes", accessCodes);
loginResponse.put("messages", messages);
}
if(login.equals(user.getEmail()) && !password.equals(user.getPassword())){
userFound = true;
loginResponse.put("success", false);
loginResponse.put("error_code", 2);
loginResponse.put("error_message", "BAD_PASSWORD");
}
}
if(!userFound){
loginResponse.put("success", false);
loginResponse.put("error_code", 1);
loginResponse.put("error_message", "NO_SUCH_USER");
}
System.out.println(loginResponse.toString());
return loginResponse.toString();
}
@RequestMapping("/addMe")
@ResponseBody
public String addMe() {
User marcin = new User("Marcin", "Michalek", "m", "p");
Set<Role> roles = new HashSet<Role>();
roles.add(new Role("CLEANER", "shityJob"));
roles.add(new Role("BOSS", "fuckYea"));
marcin.setRoles(roles);
marcin.addMessage(new Message("hello"));
marcin.addMessage(new Message("You're fired"));
userRepository.save(marcin);
return "User created" + marcin.getUserId();
}
@RequestMapping("/{userId}")
public String getUser(@PathVariable("userId") Long userId) throws JSONException{
User user = userRepository.findOne(userId);
JSONObject userJSON = new JSONObject();
userJSON.put("id", user.getUserId());
userJSON.put("firstname", user.getFirstName());
userJSON.put("lastname", user.getLastName());
userJSON.put("email", user.getEmail());
JSONArray userArray = new JSONArray();
userArray.put(userJSON);
return userArray.toString();
}
@RequestMapping
public
@ResponseBody
String listUsersJson(ModelMap model) throws JSONException {
JSONArray userArray = new JSONArray();
for (User user : userRepository.findAll()) {
JSONObject userJSON = new JSONObject();
userJSON.put("id", user.getUserId());
userJSON.put("firstname", user.getFirstName());
userJSON.put("lastname", user.getLastName());
userJSON.put("email", user.getEmail());
JSONArray roleArray = new JSONArray();
for(Role r:user.getRoles()){
JSONObject roleJSON = new JSONObject();
roleJSON.put("id", r.getRoleId());
roleJSON.put("name", r.getRoleName());
roleJSON.put("password", r.getPassword());
roleArray.put(roleJSON);
}
JSONArray messageArray = new JSONArray();
for(Message m:user.getMessages()){
JSONObject messJSON = new JSONObject();
messJSON.put("dataTime", m.getDateTime());
messJSON.put("message", m.getMessage());
messJSON.put("isRead", m.isRead());
messageArray.put(messJSON);
}
userJSON.put("messages", messageArray);
userArray.put(userJSON);
}
return userArray.toString();
}
@RequestMapping("/remove/{userId}")
public String removeUser(@PathVariable("userId") Long userId) {
userRepository.delete(userId);
return "user deleted: "+userId;
}
}