Newer
Older
tampopo-server / src / main / java / org / ntlab / tampoposerver / services / FriendService.java
package org.ntlab.tampoposerver.services;

import org.ntlab.tampoposerver.models.FriendRequest;
import org.ntlab.tampoposerver.models.User;
import org.ntlab.tampoposerver.repositories.FriendRepository;
import org.ntlab.tampoposerver.repositories.FriendRequestRepository;
import org.ntlab.tampoposerver.repositories.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.ArrayList;

@Service
public class FriendService {
    private final UserRepository userRepository;
    private final FriendRepository friendRepository;
    private final FriendRequestRepository friendRequestRepository;

    @Autowired
    public FriendService(UserRepository userRepository, FriendRepository friendRepository, FriendRequestRepository friendRequestRepository) {
        this.userRepository = userRepository;
        this.friendRepository = friendRepository;
        this.friendRequestRepository = friendRequestRepository;
    }

    /**
     * ユーザー自身に関連するフレンドリクエストをすべて返す
     *
     * @param token ユーザー認証用のトークン
     * @return ユーザー自身に関連するすべてのフレンドリクエスト(ユーザートークンが無効だったらnull、リクエストがなければ空のリスト)
     */
    public ArrayList<FriendRequest> getFriendRequests(String token) {
        // TODO: ユーザーリポジトリの実装待ち User user = userRepository.findUserByToken(token);
        User user = null;
        if (user == null) {
            return null;
        }

        ArrayList<FriendRequest> friendRequests = new ArrayList<>();
        for (FriendRequest request : friendRequestRepository.getFriendRequests()) {
            // TODO: ユーザーモデルの実装待ち
//            if (request.getSenderId().equals(user.getId()) || request.getReceiverId().equals(user.getId())) {
//                friendRequests.add(request);
//            }
        }
        return friendRequests;
    }

    /**
     *
     * @param token APIリクエストをしてきたユーザーの認証用トークン
     * @param senderId フレンドリクエストを送ったユーザーのユーザーID
     * @param receiverId フレンドリクエストを受け取ったユーザーのユーザーID
     * @return TODO: comment
     */
    public FriendRequest addFriendRequest(String token, String senderId, String receiverId) {
        // TODO: ユーザーリポジトリの実装待ち User operatedUser = userRepository.findUserByToken(token);
        // TODO: ユーザーリポジトリの実装待ち User sender = userRepository.findUserById(token);
        // TODO: ユーザーリポジトリの実装待ち User receiver = userRepository.findUserById(token);
        User operatedUser = null;
        User sender = null;
        User receiver = null;
        if (operatedUser == null || senderId == null || receiverId == null) {
            return null;
        }
        if (!operatedUser.equals(sender)) {
            return null;
        }

        return friendRequestRepository.addFriendRequest(senderId, receiverId);
    }
}