Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
47 commits
Select commit Hold shift + click to select a range
e5b4472
update event page.
aminlotfi Jan 12, 2021
6354877
update events page.
aminlotfi Jan 12, 2021
cfcfb72
Merge branch 'Phase2' of https://github.com/AP2020Fall/project-team-3…
Jan 13, 2021
12c0ed5
Merge branch 'Phase2' of https://github.com/AP2020Fall/project-team-3…
Jan 13, 2021
18dfb89
Merge remote-tracking branch 'origin/Phase2' into Phase2
aminlotfi Jan 14, 2021
b6905dc
delete old events page.
aminlotfi Jan 14, 2021
c2d11cc
add player message css.
aminlotfi Jan 14, 2021
3cec927
Merge branch 'Phase2' of https://github.com/AP2020Fall/project-team-3…
Jan 14, 2021
978a186
Add player message html.
Jan 14, 2021
3469aa7
update player message page.
aminlotfi Jan 14, 2021
ee8101b
add admin suggestion page.
aminlotfi Jan 16, 2021
c54f965
Add admin chat html & css.
Jan 16, 2021
4c75a98
add games page.
aminlotfi Jan 16, 2021
02aad6d
Edit admin chat html & css.
Jan 16, 2021
ff16f52
Edit admin chat html & css.
Jan 16, 2021
92224d3
add history page.
aminlotfi Jan 16, 2021
08723f2
Merge branch 'Phase2' of https://github.com/AP2020Fall/project-team-3…
aminlotfi Jan 16, 2021
5f8ecfe
add scoreboard page.
aminlotfi Jan 16, 2021
c661c4a
update project.
aminlotfi Jan 16, 2021
d3efdbe
add dot & boxes section.
aminlotfi Jan 16, 2021
4718887
add dots and box js
sadraazimi Jan 16, 2021
e460739
updated index.html
sadraazimi Jan 17, 2021
8d58da7
game menu updated (add JS to control navigations).
aminlotfi Jan 22, 2021
39f33a3
add dots and boxes game page.
aminlotfi Jan 22, 2021
a6fc8f1
Added Dots & Boxes tutorial.
aminlotfi Jan 23, 2021
edcad5a
edit ribbon.
aminlotfi Jan 23, 2021
d3c9df2
added Sea Battle tutorial page with no images.
aminlotfi Jan 23, 2021
af347d5
handle index error.
aminlotfi Jan 23, 2021
c95d926
added inbox page. (player chat box).
aminlotfi Jan 24, 2021
ea9e91a
added gameLog in game page.
aminlotfi Jan 24, 2021
1d172a1
added game's page which can show the game to the user to join it.
aminlotfi Jan 24, 2021
1011010
edit dots&Boxes game.
aminlotfi Feb 6, 2021
0987d52
connecting suggestion menu to back.
aminlotfi Feb 7, 2021
b298ab3
update suggestion menu.
aminlotfi Feb 7, 2021
3054015
update 'send suggestion' process.
aminlotfi Feb 7, 2021
bcd1c99
test suggestion menu from server
aminlotfi Feb 7, 2021
6158efe
overall
aminlotfi Feb 7, 2021
ce8e50f
Edit chat page & messageBox css.
Feb 7, 2021
1d33f51
edit padding.
aminlotfi Feb 8, 2021
beb61ef
Edit admin-inbox & inbox css.
Feb 8, 2021
f7c3100
update admin chat menu.
aminlotfi Feb 8, 2021
157920d
Merge branch 'Phase2' of https://github.com/AP2020Fall/project-team-3…
aminlotfi Feb 8, 2021
078fb89
handling suggestion menu.
aminlotfi Feb 8, 2021
062970e
now suggestion menu load players from data base.
aminlotfi Feb 8, 2021
48ed834
admin suggestion menu connected completely except suggestion button.
aminlotfi Feb 8, 2021
05be2fc
update player message menu and suggestion menu.
aminlotfi Feb 9, 2021
8eb39bc
update inbox menus.
aminlotfi Feb 10, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 0 additions & 4 deletions project-team-3.iml
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,10 @@
<output url="file://$MODULE_DIR$/target/classes" />
<output-test url="file://$MODULE_DIR$/target/test-classes" />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
<excludeFolder url="file://$MODULE_DIR$/target" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" name="Java-WebSocket-1.5.1" level="project" />
<orderEntry type="library" name="Java-WebSocket-1.3.8" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: junit:junit:4.13" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.hamcrest:hamcrest-core:1.3" level="project" />
<orderEntry type="library" name="Maven: com.google.code.gson:gson:2.8.5" level="project" />
Expand Down
10 changes: 8 additions & 2 deletions src/main/back/account/Message.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package main.back.account;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Random;
Expand All @@ -12,7 +13,7 @@ public class Message {
private long messageID;
private String player;
private String message;
private LocalDate date;
private LocalDateTime date;

static {
messages = new HashMap<>();
Expand All @@ -23,7 +24,8 @@ public Message(String player, String message) {
messages.put(messageID, this);
this.player = player;
this.message = message;
date = LocalDate.now();
date = LocalDateTime.now();
Player.getPlayers().get(player).getMessages().add(messageID);
}

public void addMessages(ArrayList<Message> messages) {
Expand All @@ -43,4 +45,8 @@ public String getPlayer() {
public String getMessage() {
return message;
}

public LocalDateTime getDate() {
return date;
}
}
4 changes: 4 additions & 0 deletions src/main/back/account/Player.java
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,10 @@ public boolean declineFriendRequest(String username) {
return false;
}

public Set<String> getFriendRequest() {
return friendRequest;
}

public void removeFriend(String username) {
friends.remove(username);
}
Expand Down
27 changes: 24 additions & 3 deletions src/main/back/account/User.java
Original file line number Diff line number Diff line change
@@ -1,16 +1,18 @@
package main.back.account;

import java.security.SecureRandom;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Base64;
import java.util.HashMap;
import java.util.Random;

public class User {

private static HashMap<String, User> users;

private long userID;
private String token;
private String firstName;
private String lastName;
private String username;
Expand All @@ -25,7 +27,7 @@ public class User {
}

public User(String firstName, String lastName, String username, String password, String email, String phone) {
userID = (new Random()).nextLong();
token = null;
users.put(username, this);
this.firstName = firstName;
this.lastName = lastName;
Expand All @@ -34,7 +36,12 @@ public User(String firstName, String lastName, String username, String password,
this.email = email;
this.phone = phone;
date = LocalDateTime.now();
logged = true;
}

private static String generateToken() {
byte[] randomBytes = new byte[24];
new SecureRandom().nextBytes(randomBytes);
return Base64.getUrlEncoder().encodeToString(randomBytes);
}

public static void addUsers(ArrayList<User> users) {
Expand All @@ -47,6 +54,10 @@ public static HashMap<String, User> getUsers() {
return users;
}

public String getToken() {
return token;
}

public void setFirstName(String firstName) {
this.firstName = firstName;
}
Expand Down Expand Up @@ -103,6 +114,16 @@ public void setLogged(boolean logged) {
this.logged = logged;
}

public void login() {
logged = true;
token = generateToken();
}

public void logout() {
logged = false;
token = null;
}

public boolean isLogged() {
return logged;
}
Expand Down
2 changes: 2 additions & 0 deletions src/main/back/controller/Server.java
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
package main.back.controller;

import main.back.account.Player;
import org.java_websocket.WebSocket;
import org.java_websocket.handshake.ClientHandshake;
import org.java_websocket.server.WebSocketServer;

import java.net.InetSocketAddress;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Set;

Expand Down
181 changes: 175 additions & 6 deletions src/main/back/controller/UserCommand.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
package main.back.controller;

import main.back.account.Player;
import main.back.account.User;
import main.back.account.*;

import java.util.Map;
import java.util.Set;

public interface UserCommand {
static String resolve(String[] tokens) {
Expand All @@ -14,6 +16,24 @@ static String resolve(String[] tokens) {
}
case "login":
return login(tokens[1], tokens[2]);
case "allUsers":
return allUsers(tokens[1], tokens[2]);
case "sendSuggestion":
return addSuggestion(tokens[1], tokens[2], tokens[3], tokens[4]);
case "loadSuggestedGame":
return loadSuggestedGame(tokens[1], tokens[2]);
case "loadFriendsRequest":
return loadFriendsRequest(tokens[1], tokens[2]);
case "acceptFriend":
return acceptFriend(tokens[1], tokens[2], tokens[3]);
case "declineFriend":
return declineFriend(tokens[1], tokens[2], tokens[3]);
case "loadChatHistory":
return loadChatHistory(tokens[1], tokens[2], tokens[3]);
case "sendMessage":
return sendMessage(tokens[1], tokens[2], tokens[3], tokens[4]);
case "loadPlatoBotMessage":
return loadPlatoBotMessage(tokens[1], tokens[2]);
default:
return "failed command";
}
Expand Down Expand Up @@ -43,17 +63,24 @@ static String register(String field, String value) {
}

static String register(String firstName, String lastName, String username, String password, String email, String phone) {
new Player(firstName, lastName, username, password, email, phone);
return "done";
Player player = new Player(firstName, lastName, username, password, email, phone);
player.login();
return player.getToken();
}

static String login(String username, String password) {
User user = User.getUsers().get(username);
if (user != null) {
if (user.getPassword().equals(password)) {
if (!user.isLogged()) {
user.setLogged(true);
return "done";
user.login();
if (user instanceof Admin) {
return "admin " + user.getToken() + user.getFirstName() + " " + user.getLastName() + " " + user.getUsername() + " " + user.getPhone() + " " + user.getEmail() + " " +
user.getDate().getYear() + " " + user.getDate().getMonthValue() + " " + user.getDate().getDayOfMonth();
} else {
return "player " + user.getToken() + user.getFirstName() + " " + user.getLastName() + " " + user.getUsername() + " " + user.getPhone() + " " + user.getEmail() + " " +
user.getDate().getYear() + " " + user.getDate().getMonthValue() + " " + user.getDate().getDayOfMonth() + ((Player) user).getLevel() + " " + ((Player) user).getMoney();
}
} else {
return "failed logging";
}
Expand All @@ -64,4 +91,146 @@ static String login(String username, String password) {
return "failed username";
}
}

static String allUsers(String username, String token) {
User user = User.getUsers().get(username);
String usersInfo = null;
if (user.getToken().equals(token)) {
for (Map.Entry<String, User> entry : User.getUsers().entrySet()) {
usersInfo += entry.getValue().toString() + ("/");
}
return usersInfo;
// return "amin lotfi aminlotfi 123456 amin@gmail.com 09304087303/mahdi hadi mahdihadiam 567890 mahdi@gmail.com 09126086363/mehran khaksar mehrankhaksar 654321 mehran@gmail.com 09122243286";
} else {
return null;
}
}

static String addSuggestion(String username, String token, String playerUsername, String game) {
User user = User.getUsers().get(username);
Player player = Player.getPlayers().get(playerUsername);
if (user.getToken().equals(token)) {
new Suggestion(player, game);
System.out.println(playerUsername + " added.");
return "send successfully";
} else {
return "send suggestions unsuccessfully";
}
}

static String loadSuggestedGame(String username, String token) {
boolean isSeaBattle = false;
boolean isDotsAndBoxes = false;
Set<Long> suggestions = Player.getPlayers().get(username).getSuggestions();
User user = User.getUsers().get(username);

if (user.getToken().equals(token)) {
for (Long suggestionID : suggestions) {
if (Suggestion.getSuggestions().containsKey(suggestionID)) {
if (Suggestion.getSuggestions().get(suggestionID).getGame().equals("BattleSea")) {
isSeaBattle = true;
} else if (Suggestion.getSuggestions().get(suggestionID).getGame().equals("DotsAndBoxes")) {
isDotsAndBoxes = true;
}
} else {
return "fail No game suggested.";
}
}
if (isSeaBattle && isDotsAndBoxes) {
return "Battle Sea Dots And Boxes";
} else if (isSeaBattle) {
return "Battle Sea";
} else if (isDotsAndBoxes) {
return "Dots And Boxes";
} else {
return "fail ";
}
} else {
return "";
}
}

static String loadFriendsRequest(String username, String token) {
User user = User.getUsers().get(username);
Set<String> friendsRequestUsername = Player.getPlayers().get(username).getFriendRequest();
String allUsernames = null;
if (user.getToken().equals(token)) {
for (String friendUsername : friendsRequestUsername) {
allUsernames += (Player.getPlayers().get(friendUsername).getUsername()) + (" ");
}
return allUsernames;
} else {
return "";
}
}

static String acceptFriend(String username, String token, String friendUsername) {
User user = User.getUsers().get(username);
Player player = Player.getPlayers().get(username);
if (user.getToken().equals(token)) {
player.getFriends().add(friendUsername);
player.getFriendRequest().remove(friendUsername);
return "accept successfully";
} else {
return "";
}
}

static String declineFriend(String username, String token, String friendUsername) {
User user = User.getUsers().get(username);
Player player = Player.getPlayers().get(username);
if (user.getToken().equals(token)) {
player.getFriendRequest().remove(friendUsername);
return "decline successfully";
} else {
return "";
}
}

static String loadChatHistory(String username, String token, String PlayerUsername) {
User user = User.getUsers().get(username);
Player player = Player.getPlayers().get(PlayerUsername);
String allMessages = null;
if (user.getToken().equals(token)) {
for (Long messageID : player.getMessages()) {
allMessages += Message.getMessages().get(messageID).getMessage() + "@" +
Message.getMessages().get(messageID).getDate().getHour() + ":" +
Message.getMessages().get(messageID).getDate().getMinute() + "/" +
Message.getMessages().get(messageID).getDate().getMonthValue() + "/" +
Message.getMessages().get(messageID).getDate().getDayOfMonth();
}
return allMessages;
} else {
return null;
}
}

static String sendMessage(String username, String token, String playerUsername, String messageContent) {
User user = User.getUsers().get(username);
if (user.getToken().equals(token)) {
Message message = new Message(playerUsername, messageContent);
return messageContent + "/" + message.getDate().getHour() + ":" + message.getDate().getMinute() + "/" +
message.getDate().getMonthValue() + "/" + message.getDate().getDayOfMonth();
} else {
return null;
}
}

static String loadPlatoBotMessage( String username, String token) {
Player player = Player.getPlayers().get(username);
User user = User.getUsers().get(username);
String allMessages = null;
if (user.getToken().equals(token)) {
for (Long messageID : player.getMessages()) {
allMessages += Message.getMessages().get(messageID).getMessage() + "@" +
Message.getMessages().get(messageID).getDate().getHour() + ":" +
Message.getMessages().get(messageID).getDate().getMinute() + "/" +
Message.getMessages().get(messageID).getDate().getMonthValue() + "/" +
Message.getMessages().get(messageID).getDate().getDayOfMonth();
}
return allMessages;
} else {
return null;
}
}
}
5 changes: 3 additions & 2 deletions src/main/front/css/account.css
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
}

section.account {
padding: calc(0.03 * 97vh);
padding: 0 calc(0.03 * 97vh);
}

section.account header {
Expand Down Expand Up @@ -174,7 +174,7 @@ section.account .friends {
align-items: center;
position: relative;
overflow-y: scroll;
margin: 0;
margin: 0 0 calc(0.03 * 97vh) 0;
overflow-x: hidden;
}

Expand All @@ -184,6 +184,7 @@ section.account .friends::-webkit-scrollbar {

section.account .friends h1 {
border-radius: 6px;
height: 7vh;
width: 100%;
box-sizing: border-box;
font-family: 'Product Bold';
Expand Down
2 changes: 1 addition & 1 deletion src/main/front/css/common.css
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ body>section>main>section {
position: relative;
display: block;
box-sizing: border-box;
transition: transform linear 0.3s, visibility linear 0.3s;
transition: transform linear 0.3s;
opacity: 0;
height: 0;
transform: translateY(5%) scale(1.05);
Expand Down
Loading