Отличие только в Event.SOLVE_TASK и Event.DONE_TASK, но первый метод пропускает а второй нет. ПАМАГИИИТЕЕЕ .... 3.5. Метод getDateWhenUserSolvedTask() должен возвращать дату, когда пользователь впервые попытался решить определенную задачу. Если такой даты в логах нет - null.
public Date getDateWhenUserSolvedTask(String user, int task, Date after, Date before) {
    List<Date> dates = new ArrayList<>();
    for (MyLog log : listFile) {
        if (isInDateRange(after, before, log)
                && log.user.equals(user)
                && log.task == ((Integer) task)
                && log.event.equals(Event.SOLVE_TASK.toString()))
            dates.add(log.date);
    }
    if(!dates.isEmpty()) {
        Collections.sort(dates);
        return dates.get(0);
    } else return null;
}
3.6. Метод getDateWhenUserDoneTask() должен возвращать дату, когда пользователь впервые решил определенную задачу. Если такой даты в логах нет - null.
public Date getDateWhenUserDoneTask(String user, int task, Date after, Date before) {
        List<Date> dates = new ArrayList<>();
        for (MyLog log : listFile) {
            if (isInDateRange(after, before, log)
                    && log.user.equals(user)
                    && log.task == ((Integer) task)
                    && log.event.equals(Event.DONE_TASK.toString()))
                dates.add(log.date);
        }
        if(!dates.isEmpty()) {
            Collections.sort(dates);
            return dates.get(0);
        } else return null;
    }