private void addeffortActionPerformed(
      java.awt.event.ActionEvent evt) { // GEN-FIRST:event_addeffortActionPerformed
    // TODO add your handling code here:
    if (requirementmodel.isEmpty()) {
      JOptionPane.showMessageDialog(
          this,
          "You must create a requirement before entering efforts",
          "First create requirement",
          INFORMATION_MESSAGE);
      return;
    }
    String[] phases = {
      "Project Management", "Requirements Analysis", "Design", "Coding", "Testing"
    };
    JComboBox typeList = new JComboBox(phases);
    typeList.setSelectedIndex(0);
    List<String> reqs = new ArrayList();

    for (int i = 0; i < currentProject.getRequirements().size(); i++) {
      reqs.add(currentProject.getRequirements().get(i).getRequirementDescription());
    }
    JComboBox reqList = new JComboBox(reqs.toArray());
    JTextField date = new JTextField();
    JTextField hours = new JTextField();
    Object[] message = {
      "For requirement:", reqList,
      "During SDLC Phase:", typeList,
      "On Date:", date,
      "Hours:", hours,
    };
    int option =
        JOptionPane.showConfirmDialog(
            this, message, "Enter Effort Information", JOptionPane.OK_CANCEL_OPTION);

    if (option == JOptionPane.OK_OPTION) {
      Effort effort = new Effort();
      effort.setEffortDate(date.getText());
      effort.setEffortDevPhase(typeList.getSelectedItem().toString());
      effort.setEffortHours(Integer.parseInt(hours.getText()));
      // effort.setRequirementID(reqList.getSelectedIndex());

      for (int i = 0; i < currentProject.getRequirements().size(); i++) {
        if (currentProject
            .getRequirements()
            .get(i)
            .getRequirementDescription()
            .equals(reqList.getSelectedItem().toString())) {
          effort.setRequirementID(i);
          effort.setRequirementDesc(
              currentProject.getRequirements().get(i).getRequirementDescription());
        }
      }
      currentProject.getEfforts().add(effort);
      effortmodel.addElement(
          "For req:"
              + " "
              + reqList.getSelectedItem()
              + " "
              + typeList.getSelectedItem()
              + " "
              + date.getText()
              + hours.getText());
      effortlist.setModel(effortmodel);
    }
  } // GEN-LAST:event_addeffortActionPerformed
  private void saveActionPerformed(
      java.awt.event.ActionEvent evt) { // GEN-FIRST:event_saveActionPerformed
    // TODO add your handling code here:
    currentProject.setProjectName(projectname.getText());
    currentProject.setProjectDescription(projectdescription.getText());
    try {

      File file = new File("projects.txt");

      // if file doesnt exists, then create it
      if (!file.exists()) {
        file.createNewFile();
      }

      // true = append file
      FileWriter fileWritter = new FileWriter(file.getName(), true);
      BufferedWriter bufferWritter = new BufferedWriter(fileWritter);

      bufferWritter.write(
          currentProject.getProjectID()
              + " "
              + currentProject.getProjectName()
              + " "
              + currentProject.getProjectDescription());

      for (int i = 0; i < currentProject.getRequirements().size(); i++) {
        bufferWritter.write(
            currentProject.getRequirements().get(i).getRequirementID()
                + " "
                + currentProject.getRequirements().get(i).getRequirementDescription());
        if (currentProject.getRequirements().get(i).getIsFunctionalRequirement() == false) {
          bufferWritter.write(" non-functional");
        } else bufferWritter.write(" functional");
      }

      for (int i = 0; i < currentProject.getTeamMembers().size(); i++) {
        bufferWritter.write(
            currentProject.getTeamMembers().get(i).getPersonID()
                + " "
                + currentProject.getTeamMembers().get(i).getFirstName()
                + " "
                + currentProject.getTeamMembers().get(i).getLastName()
                + "  "
                + currentProject.getTeamMembers().get(i).getPosition());
      }

      for (int i = 0; i < currentProject.getEfforts().size(); i++) {
        bufferWritter.write(
            currentProject.getEfforts().get(i).getEffortID()
                + " "
                + currentProject.getEfforts().get(i).getRequirementID()
                + " "
                + currentProject.getEfforts().get(i).getEffortDevPhase()
                + " "
                + currentProject.getEfforts().get(i).getEffortDate()
                + " "
                + currentProject.getEfforts().get(i).getEffortHours());
      }

      for (int i = 0; i < currentProject.getGoals().size(); i++) {
        bufferWritter.write(
            currentProject.getGoals().get(i).getGoalID()
                + " "
                + currentProject.getGoals().get(i).getGoalType()
                + " "
                + currentProject.getGoals().get(i).getGoalDesc());
      }

      for (int i = 0; i < currentProject.getRisks().size(); i++) {
        bufferWritter.write(
            currentProject.getRisks().get(i).getRiskID()
                + " "
                + currentProject.getRisks().get(i).getRiskName()
                + " "
                + currentProject.getRisks().get(i).getRiskStatus());
      }
      bufferWritter.close();

    } catch (IOException e) {
      JOptionPane.showMessageDialog(this, "Couldn't save", "Didn't work", INFORMATION_MESSAGE);
    }
    JOptionPane.showMessageDialog(
        this, "Project Successfully saved", "Success", INFORMATION_MESSAGE);

    try {
      Class.forName("com.mysql.jdbc.Driver");
      Connection con =
          DriverManager.getConnection(
              "jdbc:mysql://127.0.0.1:3306/projectmanagementsystem?zeroDateTimeBehavior=convertToNull",
              "root",
              "password");

      String query = "insert into project(projectname, projectdesc) values (?, ?)";
      PreparedStatement pst = con.prepareStatement(query);
      pst.setString(1, currentProject.getProjectName());
      pst.setString(2, currentProject.getProjectDescription());
      pst.executeUpdate();

      String query2 = "select idproject from project where projectdesc = ?";
      PreparedStatement pst2 = con.prepareStatement(query2);
      String desc = currentProject.getProjectDescription();
      pst2.setString(1, desc);
      ResultSet rs = pst2.executeQuery();
      int id = 0;
      if (rs.next()) {
        id = rs.getInt("idproject");
      }
      System.out.println(id);

      for (int i = 0; i < currentProject.getTeamMembers().size(); i++) {
        String query3 =
            "insert into teammember(firstname,lastname,position,teammember_FK) values (?,?,?,?)";
        PreparedStatement pst3 = con.prepareStatement(query3);
        pst3.setString(1, currentProject.getTeamMembers().get(i).getFirstName());
        pst3.setString(2, currentProject.getTeamMembers().get(i).getLastName());
        pst3.setString(3, currentProject.getTeamMembers().get(i).getPosition());
        pst3.setInt(4, id);
        pst3.executeUpdate();
      }

      for (int i = 0; i < currentProject.getGoals().size(); i++) {
        String query3 = "insert into goal(goaldesc,goaltype,goal_FK) values (?,?,?)";
        PreparedStatement pst3 = con.prepareStatement(query3);
        pst3.setString(1, currentProject.getGoals().get(i).getGoalDesc());
        pst3.setString(2, currentProject.getGoals().get(i).getGoalType());
        pst3.setInt(3, id);
        pst3.executeUpdate();
      }

      for (int i = 0; i < currentProject.getRequirements().size(); i++) {
        int functional = 0;
        if (currentProject.getRequirements().get(i).getIsFunctionalRequirement() == true) {
          functional = 1;
        }

        String query3 =
            "insert into requirement(isFunctionalRequirement,requirementdesc,requirement_FK) values (?,?,?)";
        PreparedStatement pst3 = con.prepareStatement(query3);
        pst3.setInt(1, functional);
        pst3.setString(2, currentProject.getRequirements().get(i).getRequirementDescription());
        pst3.setInt(3, id);
        pst3.executeUpdate();
      }

      for (int i = 0; i < currentProject.getRisks().size(); i++) {
        String query3 = "insert into risk(riskname,riskstatus,risk_FK) values (?,?,?)";
        PreparedStatement pst3 = con.prepareStatement(query3);
        pst3.setString(1, currentProject.getRisks().get(i).getRiskName());
        pst3.setString(2, currentProject.getRisks().get(i).getRiskStatus());
        pst3.setInt(3, id);
        pst3.executeUpdate();
      }

      for (int i = 0; i < currentProject.getEfforts().size(); i++) {
        String query4 = "select idrequirement from requirement where requirementdesc = ?";
        PreparedStatement pst4 = con.prepareStatement(query4);
        String desc2 = currentProject.getEfforts().get(i).getRequirementDesc();
        pst4.setString(1, desc2);
        ResultSet rs2 = pst4.executeQuery();
        int reqid = 0;
        if (rs.next()) {
          reqid = rs2.getInt("idrequirement");
        }
        System.out.println(reqid);

        String query3 =
            "insert into effort(effortdate,efforthours,effortdevphase,effort_FK) values (?,?,?,?)";
        PreparedStatement pst3 = con.prepareStatement(query3);
        pst3.setString(1, currentProject.getEfforts().get(i).getEffortDate());
        pst3.setInt(2, currentProject.getEfforts().get(i).getEffortHours());
        pst3.setString(3, currentProject.getEfforts().get(i).getEffortDevPhase());
        pst3.setInt(4, reqid);
        pst3.executeUpdate();
      }
    } catch (Exception e) {
      System.out.println(e.toString());
    }
  } // GEN-LAST:event_saveActionPerformed
  private void addrequirementActionPerformed(
      java.awt.event.ActionEvent evt) { // GEN-FIRST:event_addrequirementActionPerformed
    // TODO add your handling code here:
    String[] types = {"Functional", "Non-functional"};
    JComboBox typeList = new JComboBox(types);
    typeList.setSelectedIndex(0);
    JTextArea description = new JTextArea();
    description.setRows(5);
    description.setColumns(10);
    description.setLineWrap(true);
    JScrollPane pane = new JScrollPane(description);
    Object[] message = {
      "Requirement Type:", typeList,
      "Description:", pane,
    };
    int option =
        JOptionPane.showConfirmDialog(
            this, message, "Enter Requirement Information", JOptionPane.OK_CANCEL_OPTION);

    if (option == JOptionPane.OK_OPTION) {
      Requirement req = new Requirement();
      req.setRequirementDescription(description.getText());
      if (typeList.getSelectedItem().toString().equals("Functional")) {
        req.setIsFunctionalRequirement(true);
      } else req.setIsFunctionalRequirement(false);
      currentProject.getRequirements().add(req);
      requirementmodel.addElement(typeList.getSelectedItem() + " " + description.getText());
      requirementlist.setModel(requirementmodel);
    }
  } // GEN-LAST:event_addrequirementActionPerformed