package com.eassessment.controller;

import java.io.IOException;
import java.util.List;

import javax.servlet.RequestDispatcher;
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.Options;
import com.eassessment.pojo.Questions;
import com.eassessment.pojo.Topics;
import com.eassessment.util.Constants;
import com.eassessment.util.StringUtil;

/**
 * Servlet implementation class AddOption
 */
public class AddOption extends HttpServlet {
	private static final long serialVersionUID = 1L;

	/**
	 * @see HttpServlet#HttpServlet()
	 */
	public AddOption() {
		super();
		// TODO Auto-generated constructor stub
	}

	/**
	 * @see HttpServlet#service(HttpServletRequest request, HttpServletResponse
	 *      response)
	 */
	protected void service(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		String ques_id = null;
		boolean isNew = true;
		// first come to page
		try {
			ques_id = request.getParameter("ques_id");
			// String ques_name = request.getParameter("ques_name");

		} catch (Exception e) {

		}

		// for edit
		try {
			ques_id = request.getParameter("ques_id");
			String opt_id = request.getParameter("opt_id");
			String opt_name = request.getParameter("opt_name");

			if (opt_id.length() > 0) {
				isNew = false;

				Options opt = new Options();
				double mark = Double.parseDouble(request.getParameter("mark"));
				String out_asses_test = StringUtil.getEmptyString(request
						.getParameter("out_asses_test"));
				String personality_traits = StringUtil.getEmptyString(request
						.getParameter("personality_traits"));
				String strengths = StringUtil.getEmptyString(request
						.getParameter("strengths"));
				String explore_initiate = StringUtil.getEmptyString(request
						.getParameter("explore_initiate"));
				String need_coaching_guide = StringUtil.getEmptyString(request
						.getParameter("need_coaching_guide"));
				String self_improvement_opportunities = StringUtil
						.getEmptyString(request
								.getParameter("self_improvement_opportunities"));
				String advantages_conclusion = StringUtil
						.getEmptyString(request
								.getParameter("advantages_conclusion"));

				opt.setOption_name(opt_name);
				opt.setMarks(mark);
				opt.setOutput_for_assessment_test(out_asses_test);
				opt.setPersonality_traits(personality_traits);
				opt.setStrengths(strengths);
				opt.setExplore_initiate(explore_initiate);
				opt.setNeed_coaching_guidance(need_coaching_guide);
				opt.setSelf_improvement_opportunities(self_improvement_opportunities);
				opt.setAdvantages_you_have_got(advantages_conclusion);

				opt.setQuestions(AdminDao.getInstance().getQuestion(ques_id));

				String responseString = CoordinateDao.getInstance()
						.updateOption(Integer.parseInt(opt_id), opt);
				System.out.println("responseString:" + responseString);
				if (responseString.equals(Constants.OK)) {
					request.setAttribute(
							"message",
							StringUtil
									.setSuccessMessage("Option is updated successfully."));
				} else {
					request.setAttribute(
							"message",
							StringUtil.setErrorMessage("Option update Fail..."
									+ responseString));
				}
			}

		} catch (Exception e) {
			e.printStackTrace();
		}

		// for new save
		if (isNew)
			try {
				String opt_name = request.getParameter("opt_name");
				ques_id = request.getParameter("ques_id");
				String question_type=request.getParameter("question_type");
				if (opt_name.length() > 0) {
					Options opt = new Options();
					double mark = Double.parseDouble(request
							.getParameter("mark"));
					String out_asses_test = StringUtil.getEmptyString(request
							.getParameter("out_asses_test"));
					String personality_traits = StringUtil
							.getEmptyString(request
									.getParameter("personality_traits"));
					String strengths = StringUtil.getEmptyString(request
							.getParameter("strengths"));
					String explore_initiate = StringUtil.getEmptyString(request
							.getParameter("explore_initiate"));
					String need_coaching_guide = StringUtil
							.getEmptyString(request
									.getParameter("need_coaching_guide"));
					String self_improvement_opportunities = StringUtil
							.getEmptyString(request
									.getParameter("self_improvement_opportunities"));
					String advantages_conclusion = StringUtil
							.getEmptyString(request
									.getParameter("advantages_conclusion"));
					if(question_type.equals("A")){
					double SELF_ORGANIZED = Constants.EassessmentVar.SELF_ORGANIZED
							* mark;
					double SELF_MOTIVATED = Constants.EassessmentVar.SELF_MOTIVATED
							* mark;
					double PROPER_COACHING = Constants.EassessmentVar.PROPER_COACHING
							* mark;
					double GUIDANCE = Constants.EassessmentVar.GUIDANCE * mark;
					double ENVIORNMENT = Constants.EassessmentVar.ENVIORNMENT
							* mark;
					double ENCOURAGEMENT = Constants.EassessmentVar.ENCOURAGEMENT
							* mark;
					double HARD_WORK = Constants.EassessmentVar.HARD_WORK
							* mark;
					opt.setSelf_organized(SELF_ORGANIZED);
					opt.setSelf_motivated(SELF_MOTIVATED);
					opt.setProper_coaching(PROPER_COACHING);
					opt.setGuidance(GUIDANCE);
					opt.setEnviornment(ENVIORNMENT);
					opt.setEncouragement(ENCOURAGEMENT);
					opt.setHard_work(HARD_WORK);
					}
					
					opt.setOption_name(opt_name);
					opt.setMarks(mark);
					opt.setOutput_for_assessment_test(out_asses_test);
					opt.setPersonality_traits(personality_traits);
					opt.setStrengths(strengths);
					opt.setExplore_initiate(explore_initiate);
					opt.setNeed_coaching_guidance(need_coaching_guide);
					opt.setSelf_improvement_opportunities(self_improvement_opportunities);
					opt.setAdvantages_you_have_got(advantages_conclusion);
 

					opt.setQuestions(AdminDao.getInstance()
							.getQuestion(ques_id));
					String responseString = CoordinateDao.getInstance()
							.saveOption(opt);

					System.out.println("responseString:" + responseString);
					if (responseString.equals(Constants.OK)) {
						request.setAttribute(
								"message",
								StringUtil
										.setSuccessMessage("Option is saved successfully."));
					} else {
						request.setAttribute("message", StringUtil
								.setErrorMessage("Option Failed to save..."
										+ responseString));
					}
				}

			} catch (Exception e) {

			}

		List<Options> optList = AdminDao.getInstance().getQuestion(ques_id)
				.getOption();
		request.setAttribute("optList", optList);
		Questions question = AdminDao.getInstance().getQuestion(ques_id);
		request.setAttribute("ques_id", question.getQuestion_id());
		request.setAttribute("ques_name", question.getQuestion_name());

		RequestDispatcher rd = request.getRequestDispatcher("AddOption.jsp");
		rd.forward(request, response);
	}

}
