package virtualconference.meetingchat;

import java.io.IOException;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Timestamp;
import java.util.concurrent.ConcurrentHashMap;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;


import virtualconference.Database;
import virtualconference.Error;
import virtualconference.Http;
import virtualconference.chat.ChatConversations;
import virtualconference.chat.Conversation;
import virtualconference.meetinglog.*;

/**
 * Servlet implementation class GetMeetingConversation
 */
@WebServlet("/getMeetingConversation")

public class GetMeetingConversation extends HttpServlet {
	private static final long serialVersionUID = 1L;

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

		JSONObject jsonRequest = Http.getRequest(request);
		JSONObject data = null;
		boolean success = true;
		boolean getMeetingChatConversations = true;
		int conferenceId = -1;

				
		try {
			conferenceId = jsonRequest.getInt("conferenceId");
		} catch (JSONException e) {
			Error.print("Getting meeting chat conversations", e.getMessage()); 
			success = false;
		}

		if (success) {
			data = MeetingChatConversations.getMeetingChatConversations(conferenceId);
			if (data == null) {
				getMeetingChatConversations = false;
			}
		}
		
		JSONObject jsonResponse = new JSONObject();
		try {
			jsonResponse.put("success", getMeetingChatConversations);
			jsonResponse.put("data", getMeetingChatConversations ? data : "An error occured.");
		} catch (JSONException e) {
			Error.print("Get Meeting Chat Conversations", e.getMessage());
		}
		
		// add the user joining the conversation to the meeting log
		int userId = (Integer) request.getSession().getAttribute("id");
		String description = "Joins the meeting";
		ArchiveMeetingEvent.ArchiveMeetingEvent(userId, conferenceId, description);
		Http.setResponse(response, jsonResponse);
	}

}
