public ActionResult <string> CopyCheck([FromBody] MossData data)
        {
            if (data?.ExerciseID == null)
            {
                return(BadRequest("no exercise"));
            }
            DBCode res = _access.CheckExercisePermission(data.ExerciseID, Role.Teacher);

            if (res != DBCode.OK)
            {
                return(HandleDatabaseOutput(res));
            }
            (Exercise ex, DBCode code) = _access.GetExercise(data.ExerciseID);
            data.Language = ex.ProgrammingLanguage;
            if (code != DBCode.OK)
            {
                return(HandleDatabaseOutput(code));
            }
            if (!MossClient.IsSupported(data.Language))
            {
                var result = new ObjectResult($"The language {data.Language} is not supported.");
                result.StatusCode = 501;
                return(result);
            }
            string folder = ex.FilesLocation;
            string sub    = Path.Combine(folder, SUBMISSIONS);

            Directory.CreateDirectory(sub);
            string baseFiles = Path.Combine(folder, BASE_FILES);

            Directory.CreateDirectory(baseFiles);
            data.SubmissionsFolder = sub;
            data.BaseFilesFolder   = baseFiles;
            try
            {
                data.Result = _client.SendRequest(data);
            }
            catch (Exception)
            {
                return(new StatusCodeResult(502));
            }
            _access.AddMossCheck(data);
            return(data.Result);
        }
 public SubmissionController(DatabaseAccess access, MossClient client) : base(access)
 {
     _client = client;
 }