package controller;

import service.ProfessorSubjectService;
import service.impl.ProfessorSubjectServiceImpl;

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 java.io.IOException;
import java.sql.SQLException;

@WebServlet("/professor-subject/*")
public class ProfessorSubjectServlet extends HttpServlet {

    private final ProfessorSubjectService service = new ProfessorSubjectServiceImpl();

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String action = request.getPathInfo();

        try {
            if ("/assign".equals(action)) {
                assign(request, response);
            } else if ("/remove".equals(action)) {
                remove(request, response);
            }
        } catch (SQLException e) {
            throw new ServletException(e);
        }
    }

    private void assign(HttpServletRequest request, HttpServletResponse response) throws SQLException, IOException {
        Long professorId = Long.parseLong(request.getParameter("professor_id"));
        Long subjectId = Long.parseLong(request.getParameter("subject_id"));

        service.assignProfessorToSubject(professorId, subjectId);
        response.sendRedirect(request.getContextPath() + "/professor/edit?id=" + professorId);
    }

    private void remove(HttpServletRequest request, HttpServletResponse response) throws SQLException, IOException {
        Long professorId = Long.parseLong(request.getParameter("professor_id"));
        Long subjectId = Long.parseLong(request.getParameter("subject_id"));

        service.removeProfessorFromSubject(professorId, subjectId);
        response.sendRedirect(request.getContextPath() + "/professor/edit?id=" + professorId);
    }

}