package com.eassessment.controller;

import java.io.IOException;
import java.util.List;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.eassessment.model.AdminDao;
import com.eassessment.model.CoordinateDao;
import com.eassessment.pojo.Questions;
import com.eassessment.pojo.Topics;
import com.eassessment.util.Constants;
import com.eassessment.util.StringUtil;

/**
 * Servlet implementation class AddQuestion
 */
public class AddQuestion extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public AddQuestion() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see Servlet#init(ServletConfig)
	 */
	public void init(ServletConfig config) throws ServletException {
		// TODO Auto-generated method stub
	}

	/**
	 * @see HttpServlet#service(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		String topic_id = null;
		boolean isNew = true;
		// first come to page
		try{
			topic_id=request.getParameter("topic_id");
			String topic_name = request.getParameter("topic_name");
			 
		}catch (Exception e) {
			 
		}
		
		
		
		// for edit
		try {
			topic_id = request.getParameter("topic_id");
			String ques_id = request.getParameter("ques_id");
			String ques_name = request.getParameter("ques_name");
			
			if (ques_id.length() > 0) {
				isNew = false;
				 
				String responseString = CoordinateDao.getInstance()
						.updateQuestion(Integer.parseInt(ques_id), ques_name);
				System.out.println("responseString:" + responseString);
				if (responseString.equals(Constants.OK)) {
					request.setAttribute(
							"message",
							StringUtil
									.setSuccessMessage("Question is updated successfully."));
				} else {
					request.setAttribute(
							"message",
							StringUtil.setErrorMessage("Question update Fail..."
									+ responseString));
				}
			}

		} catch (Exception e) {

		}
		
		// for new save
		if (isNew)
			try {
				String ques_name = request.getParameter("ques_name");
				topic_id = request.getParameter("topic_id");
				String sub_topic_from_book=request.getParameter("sub_topic_from_book");
				String question_type=request.getParameter("question_type");
				if (ques_name.length() > 0) {
					Questions ques = new Questions();
					ques.setQuestion_name(ques_name);
					ques.setTopic(AdminDao.getInstance().getTopic(topic_id));
					ques.setSub_topic_from_book(sub_topic_from_book);
					ques.setQuestion_type(question_type);
					String responseString = CoordinateDao.getInstance()
							.saveQuestion(ques);
					System.out.println("responseString:" + responseString);
					if (responseString.equals(Constants.OK)) {
						request.setAttribute(
								"message",
								StringUtil
										.setSuccessMessage("Question is saved successfully."));
					} else {
						request.setAttribute(
								"message",
								StringUtil.setErrorMessage("Failed to save..."
										+ responseString));
					}
				}

			} catch (Exception e) {

			}
		
		List<Questions> quesList= AdminDao.getInstance().getTopic(topic_id).getQuestion();
		request.setAttribute("quesList", quesList);
		Topics topic=AdminDao.getInstance().getTopic(topic_id);
		request.setAttribute("topic_id", topic.getTopic_id());
		request.setAttribute("topic_name", topic.getTopic_name());
		
		RequestDispatcher rd = request.getRequestDispatcher("AddQuestion.jsp");
		rd.forward(request, response);
		
		 
	}
	 

}
