package com.example.cosmos_serversb.resources;
import com.example.cosmos_serversb.entities.Group;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.hibernate.Session;
import org.springframework.stereotype.Component;
import javax.ws.rs.*;
import com.example.cosmos_serversb.models.*;
import java.io.IOException;
@Component
@Path("/groups")
public class GroupsRest {
@GET
public String getGroupsListByUid(@QueryParam("uId") String uId, @QueryParam("token") String token) throws JsonProcessingException{
SessionManager.getInstance().getSession();
ObjectMapper mapper = new ObjectMapper();
String json = mapper.writeValueAsString(Groups.getInstance().getGroupsListByUid(uId));
SessionManager.getInstance().closeSession();
return json;
}
@POST
public String createGroup(@FormParam("name") String name, @FormParam("uId") String uId, @FormParam("token") String token) throws IOException {
//グループの作成
SessionManager.getInstance().getSession();
ObjectMapper mapper = new ObjectMapper();
String json = mapper.writeValueAsString(Groups.getInstance().createGroup(name, uId));
SessionManager.getInstance().closeSession();
//グループにメンバーの追加
SessionManager.getInstance().getSession();
Group group = mapper.readValue(json, Group.class);
// Groups.addMemberById(group.getgId(), uId);//どうやってこのgIdを取得する?
Groups.addMemberWhenCreateGroup(group, uId);
SessionManager.getInstance().closeSession();
return json;
}
@Path("/{gId}")
@GET
public String getGroupByGid(@PathParam("gId") String gId, @QueryParam("token") String token) throws JsonProcessingException{
SessionManager.getInstance().getSession();
ObjectMapper mapper = new ObjectMapper();
String json = mapper.writeValueAsString(Groups.getInstance().getGroupByGid(gId));
SessionManager.getInstance().closeSession();
return json;
}
@Path("/{gId}")
@DELETE
public String deleteGroup(@PathParam("gId") String gId, @FormParam("token") String token) throws JsonProcessingException{
SessionManager.getInstance().getSession();
ObjectMapper mapper = new ObjectMapper();
String json = mapper.writeValueAsString(Groups.getInstance().deleteGroup(gId));
SessionManager.getInstance().closeSession();
return json;
}
@Path("/{gId}/members")
@GET
public String getGroupMembersListByGid(@PathParam("gId") String gId, @QueryParam("token") String token) throws JsonProcessingException{
SessionManager.getInstance().getSession();
ObjectMapper mapper = new ObjectMapper();
String json = mapper.writeValueAsString(Groups.getInstance().getMembersListByGid(gId));
SessionManager.getInstance().closeSession();
return json;
}
@Path("/{gId}/members")
@POST
public String addMember(@PathParam("gId") String gId, @FormParam("uId") String uId, @FormParam("token") String token) throws JsonProcessingException{
SessionManager.getInstance().getSession();
ObjectMapper mapper = new ObjectMapper();
String json = mapper.writeValueAsString(Groups.getInstance().addMember(gId, uId));
SessionManager.getInstance().closeSession();
return json;
}
@Path("/{gId}/members")
@DELETE
public String deleteMember(@PathParam("gId") String gId, @FormParam("uId") String uId, @FormParam("token") String token) throws JsonProcessingException{
SessionManager.getInstance().getSession();
ObjectMapper mapper = new ObjectMapper();
String json = mapper.writeValueAsString(Groups.getInstance().deleteMember(gId, uId));
SessionManager.getInstance().closeSession();
return json;
}
@Path("/{gId}/requests")
@GET
public String getRequestsListByGid(@PathParam("gId") String gId, @QueryParam("token") String token) throws JsonProcessingException{
SessionManager.getInstance().getSession();
ObjectMapper mapper = new ObjectMapper();
String json = mapper.writeValueAsString(Groups.getInstance().getRequestsListByGid(gId));
SessionManager.getInstance().closeSession();
return json;
}
@Path("/{gId}/requests")
@POST
public String addRequests(@PathParam("gId") String gId, @FormParam("uId") String uId, @FormParam("product") String product, @FormParam("deadline") String deadline, @FormParam("location") int location, @FormParam("token") String token) throws JsonProcessingException{
SessionManager.getInstance().getSession();
ObjectMapper mapper = new ObjectMapper();
String json = mapper.writeValueAsString(Groups.getInstance().addRequests(gId, uId, product, deadline, location));
SessionManager.getInstance().closeSession();
return json;
}
@Path("{gId}/requests/{rId}")
@GET
public String getRequestsDetailByGidAndRid(@PathParam("gId") String gId, @PathParam("rId") String rId, @QueryParam("token") String token) throws JsonProcessingException{
SessionManager.getInstance().getSession();
ObjectMapper mapper = new ObjectMapper();
String json = mapper.writeValueAsString(Groups.getInstance().getRequestDetailByGidAndRid(gId, rId));
SessionManager.getInstance().closeSession();
return json;
}
@Path("{gId}/requests/{rId}")
@PUT
public String updateRequest(@PathParam("gId") String gId, @PathParam("rId") String rId, @FormParam("uId") String uId, @FormParam("product") String product, @FormParam("deadline") String deadline, @FormParam("location") int location, @FormParam("done") boolean done, @FormParam("token") String token) throws JsonProcessingException{
SessionManager.getInstance().getSession();
ObjectMapper mapper = new ObjectMapper();
String json = mapper.writeValueAsString(Groups.getInstance().updateRequest(gId, rId, uId, product, deadline, location, done));
SessionManager.getInstance().closeSession();
return json;
}
@Path("{gId}/requests/{rId}")
@DELETE
public String deleteRequest(@PathParam("gId") String gId, @PathParam("rId") String rId, @FormParam("token") String token) throws JsonProcessingException{
SessionManager.getInstance().getSession();
ObjectMapper mapper = new ObjectMapper();
String json = mapper.writeValueAsString(Groups.getInstance().deleteRequest(gId, rId));
SessionManager.getInstance().closeSession();
return json;
}
}