diff --git a/src/main/java/org/ntlab/acanthus_server/resources/accounts/InvitedRest.java b/src/main/java/org/ntlab/acanthus_server/resources/accounts/InvitedRest.java index 3d81b47..5dca9e0 100644 --- a/src/main/java/org/ntlab/acanthus_server/resources/accounts/InvitedRest.java +++ b/src/main/java/org/ntlab/acanthus_server/resources/accounts/InvitedRest.java @@ -1,12 +1,9 @@ package org.ntlab.acanthus_server.resources.accounts; -import org.ntlab.acanthus_server.entities.Animation; + import org.ntlab.acanthus_server.models.Accounts; import org.springframework.stereotype.Component; import javax.ws.rs.*; -import javax.ws.rs.core.MediaType; -import java.util.Collection; -import java.util.Collections; @Component @Path("/accounts") @@ -15,23 +12,30 @@ private Accounts accounts = Accounts.getInstance(); /** - *accountごとの招待されている作品の表示 + *accountの中に指定されたaidの作品が入っているかをtrue,falseでかえす *トークン認証 * */ @Path("/{uid}/invited") @GET - @Produces(MediaType.APPLICATION_JSON) - public boolean getAccountInvited(@PathParam("uid") int uid, @QueryParam("token") String token, @QueryParam("aid") int aid){ - var account = accounts.getAccountByUid(uid); + public boolean checkAccountInvited(@PathParam("ownerUid") int ownerUid, @QueryParam("aid") int aid){ + var account = accounts.getAccountByUid(ownerUid); - /*if(account != null && account.getToken().equals(token)){ + if(account != null){ + //招待されているならtrue,されていないならfalse + var accountInvitedMap = account.getInvitedMap(); + + if(accountInvitedMap.get(aid) != null){ + return true; + }else{ + return false; + } }else{ - //ユーザーID、トークンが間違っている時のレスポンス - throw new WebApplicationException(401); - }*/ - return true; + //ユーザーIDが間違っている時のレスポンス + throw new WebApplicationException(400); + + } } /** @@ -39,9 +43,28 @@ */ @Path("/{uid}/invited") @PUT - @Produces(MediaType.APPLICATION_JSON) - public void addAccountInvited(@PathParam("uid") int uid, @FormParam("token") String token){ + public void addAccountInvited(@PathParam("invitedUid") int invitedUid, @FormParam("ownerUid") int ownerUid, @FormParam("ownerToken") String ownerToken, @FormParam("aid") int aid){ + var invitedAccount = accounts.getAccountByUid(invitedUid); + var ownerAccount = accounts.getAccountByUid(ownerUid); + if(ownerAccount != null && ownerAccount.getToken().equals(ownerToken)){ + var accountInvitedMap = invitedAccount.getInvitedMap(); + + if(this.checkAccountInvited(invitedUid, aid)){ + //すでに招待されている時のレスポンス + throw new WebApplicationException(400); + + }else{ + //Workクラスのstateを1に変更 + accountInvitedMap.get(aid).setInvites(); + + } + + }else{ + //ユーザーID、トークンが間違っている時のレスポンス + throw new WebApplicationException(400); + + } } /** @@ -52,8 +75,20 @@ */ @Path("/{uid}/invited") @DELETE - @Produces(MediaType.APPLICATION_JSON) - public void removeAccountInvited(@PathParam("uid") int uid, @FormParam("token") String token){ + public void removeAccountInvited(@PathParam("invitedUid") int invitedUid, @FormParam("invitedToken") String invitedToken, @FormParam("aid") int aid){ + var invitedAccount = accounts.getAccountByUid(invitedUid); + + if(invitedAccount != null && invitedAccount.getToken().equals(invitedToken)){ + if(this.checkAccountInvited(invitedUid, aid)) { + //accountのworkHashMapから削除 + invitedAccount.getWorkHashMap().remove(aid); + + }else{ + //削除しようとしているaidがinvitedHashMapに含まれていない + throw new WebApplicationException(400); + + } + } } } \ No newline at end of file