1212import fi .helsinki .cs .tmc .cli .tmcstuff .CourseInfo ;
1313import fi .helsinki .cs .tmc .cli .tmcstuff .CourseInfoIo ;
1414import fi .helsinki .cs .tmc .cli .tmcstuff .ExerciseUpdater ;
15+ import fi .helsinki .cs .tmc .cli .tmcstuff .FeedbackHandler ;
1516import fi .helsinki .cs .tmc .cli .tmcstuff .TmcUtil ;
1617import fi .helsinki .cs .tmc .cli .tmcstuff .WorkDir ;
1718import fi .helsinki .cs .tmc .core .TmcCore ;
1819import fi .helsinki .cs .tmc .core .domain .Course ;
1920import fi .helsinki .cs .tmc .core .domain .Exercise ;
21+ import fi .helsinki .cs .tmc .core .domain .submission .FeedbackQuestion ;
2022import fi .helsinki .cs .tmc .core .domain .submission .SubmissionResult ;
2123
2224import org .apache .commons .cli .CommandLine ;
2325import org .apache .commons .cli .Options ;
2426import org .slf4j .Logger ;
2527import org .slf4j .LoggerFactory ;
2628
29+ import java .net .URI ;
2730import java .nio .file .Path ;
31+ import java .util .ArrayList ;
2832import java .util .List ;
2933
3034@ Command (name = "submit" , desc = "Submit exercises" )
@@ -99,6 +103,10 @@ public void run(CommandLine args, Io io) {
99103 Color .AnsiColor color2 = app .getColor ("testresults-right" );
100104
101105 List <Exercise > submitExercises = info .getExercises (exerciseNames );
106+ List <List <FeedbackQuestion >> feedbackLists
107+ = new ArrayList <List <FeedbackQuestion >>();
108+ List <String > exercisesWithFeedback = new ArrayList <String >();
109+ List <URI > feedbackUris = new ArrayList <URI >();
102110
103111 for (Exercise exercise : submitExercises ) {
104112 io .println (Color .colorString ("Submitting: " + exercise .getName (),
@@ -118,6 +126,12 @@ public void run(CommandLine args, Io io) {
118126 }
119127 exercise .setCompleted (true );
120128 }
129+ List <FeedbackQuestion > feedback = result .getFeedbackQuestions ();
130+ if (feedback != null && feedback .size () > 0 ) {
131+ feedbackLists .add (feedback );
132+ exercisesWithFeedback .add (exercise .getName ());
133+ feedbackUris .add (URI .create (result .getFeedbackAnswerUrl ()));
134+ }
121135 }
122136 }
123137 CourseInfoIo .save (info , workDir .getConfigFile ());
@@ -128,8 +142,22 @@ public void run(CommandLine args, Io io) {
128142 io .println (TmcCliProgressObserver .getPassedTestsBar (passed , total , color1 , color2 ));
129143 }
130144
145+ io .println ("Updating " + CourseInfoIo .COURSE_CONFIG );
131146 updateCourseJson (core , submitExercises , info , workDir .getConfigFile ());
132147 checkForExerciseUpdates (core , currentCourse );
148+ for (int i = 0 ; i < exercisesWithFeedback .size (); i ++) {
149+ if (io .readConfirmation (
150+ "Send feedback for " + exercisesWithFeedback .get (i ) + "?" , true )) {
151+ FeedbackHandler fbh = new FeedbackHandler (io );
152+ Boolean success = fbh .sendFeedback (
153+ core , feedbackLists .get (i ), feedbackUris .get (i ));
154+ if (success ) {
155+ io .println ("Feedback sent." );
156+ } else {
157+ io .println ("Failed to send feedback." );
158+ }
159+ }
160+ }
133161 }
134162
135163 protected void updateCourseJson (TmcCore core , List <Exercise > submittedExercises ,
0 commit comments