Newer
Older
tampopo-server / src / main / java / org / ntlab / tampoposerver / resources / ChatRequestsResource.java
package org.ntlab.tampoposerver.resources;

import jakarta.ws.rs.*;
import jakarta.ws.rs.core.MediaType;
import jakarta.ws.rs.core.Response;
import org.springframework.stereotype.Component;

import static jakarta.ws.rs.core.Response.status;



@Path("/chat-requests/")
@Component

public class ChatRequestsResource {

    @GET
    @Consumes(MediaType.APPLICATION_FORM_URLENCODED)
    public Response getChatRequests(
            @QueryParam("token") String token,
            @QueryParam("user-id") String userId) {

        //400(認証が必要です)
        if (token == null || token.isEmpty() || userId == null || userId.isEmpty()) {
            return status(Response.Status.BAD_REQUEST)
                    .entity("認証が必要です").build();
        }

        // 岩谷さんのUserRepositoryでtokenの確認を行う

//        //200(成功レスポンス)
//        ArrayList<ChatRequest> request = ChatService.getChatRequests(token, userId);//前の人がListだったらArrayListになるから作ってて頼む時はListで頼め
//        if (request == null) {
//            return status(Response.Status.BAD_REQUEST)
//                    .entity("認証が必要です").build();
//        }
//
//        return Response.status(Response.Status.OK).entity(requests).build(); //entityは返す、まだ誰も作ってないからrequets自分で作るか、しょうさんが作るか
        return null;
    }

    @POST
    @Consumes(MediaType.APPLICATION_FORM_URLENCODED)
    public Response postChatRequest(
            @FormParam("token") String token,
            @FormParam("sender-id") String senderId,
            @FormParam("receiver-id") String receiverId) {

        //204チャットがリクエストされました。
        ChatRequest created = ChatService.createChatRequest(token, senderId, receiverId);
        if (created == null) {
            return status(Pesponse.Status.BAD_REQUEST)
                    .entity("チャットリクエストの作成に失敗しました").build();
        }

        return Response.
        status(Response.Status.OK).entity(created.getId()).build();
    }

    @Path("/chat-requests/{chat-request-id}")
    @DELETE
    @Consumes(MediaType.APPLICATION_FORM_URLENCODED)
    public Response deleteChatRequest(
            @QueryParam("token") String token,
            @PathParam("chat-request-id") int chatRequestId) {

        //401承認が必要です
        if (token == null || token.isEmpty()) {
            return status(Response.Status.UNAUTHORIZED)
                    .entity("認証が必要です") // 401
                    .build();
        }
        //403権限がありません
        boolean hasPermission = checkUserPermission(token, chatRequestId);
        if (!hasPermission) {
            return status(Response.Status.FORBIDDEN)
                    .entity("権限がありません") // 403
                    .build();
        }

        //404チャットリクエストが見つかりません。
        boolean deleted = deleteChatRequestById(chatRequestId);
        if (!deleted) {
            return status(Response.Status.NOT_FOUND)
                    .entity("チャットリクエストが見つかりません") // 404
                    .build();
        }
        //204チャットリクエストが削除されました
        return status(Response.Status.NO_CONTENT).build();
    }

}