private DemoLab.Data.Access.ExerciseManagement.CandidateTask CreateCandidateTask( CandidateTaskInfo candidateTaskInfo) { var result = new DemoLab.Data.Access.ExerciseManagement.CandidateTask { CodeTemplate = candidateTaskInfo.CodeTemplate, Description = candidateTaskInfo.Description, MaximumScore = candidateTaskInfo.MaximumScore, TimeSeconds = candidateTaskInfo.TimeSeconds, Name = candidateTaskInfo.Name, Subject = candidateTaskInfo.Subject, IsSoftDeleted = false }; if (candidateTaskInfo.Tips != null) { result.Tips = candidateTaskInfo.Tips.Select( tipText => new CandidateTaskTip { Text = tipText }).ToList(); } SetTestClassAndMethod(result, candidateTaskInfo); return(result); }
public async Task <IHttpActionResult> UpdateCandidateTask([FromBody] CandidateTaskInfo candidateTaskInfo) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } try { await _exerciseService.UpdateCandidateTaskAsync(candidateTaskInfo); return(StatusCode(HttpStatusCode.NoContent)); } catch (TaskNotFoundException) { return(BadRequest($"Task with {nameof(CandidateTaskInfo.Id)} = {candidateTaskInfo.Id} not found")); } catch (TestClassInfoNotFoundException) { return(BadRequest($"Invalid {nameof(CandidateTaskInfo.TestClassName)}")); } catch (Exception) { return(InternalServerError()); } }
public async Task <int> AddCandidateTaskAsync(CandidateTaskInfo candidateTaskInfo) { if (candidateTaskInfo == null) { throw new ArgumentNullException(nameof(candidateTaskInfo)); } var candidateTask = CreateCandidateTask(candidateTaskInfo); _exerciseContext.CandidateTasks.Add(candidateTask); await _exerciseContext.SaveChangesAsync().ConfigureAwait(false); return(candidateTask.Id); }
private void SetTestClassAndMethod( DemoLab.Data.Access.ExerciseManagement.CandidateTask candidateTask, CandidateTaskInfo candidateTaskInfo) { var testClass = _assemblyContext.TestClassInfo.FirstOrDefault(classInfo => classInfo.Name.Equals(candidateTaskInfo.TestClassName, StringComparison.Ordinal)); candidateTask.TestClassId = testClass?.Id ?? throw new TestClassInfoNotFoundException(); if (!string.IsNullOrWhiteSpace(candidateTaskInfo.TestMethodName)) { var testMethod = testClass.TestMethods.FirstOrDefault(method => method.Name.Equals(candidateTaskInfo.TestMethodName, StringComparison.Ordinal)); candidateTask.TestMethodId = testMethod?.Id; } }
public Task UpdateCandidateTaskAsync(CandidateTaskInfo candidateTaskInfo) { if (candidateTaskInfo == null) { throw new ArgumentNullException(nameof(candidateTaskInfo)); } var candidateTask = _exerciseContext.CandidateTasks.FirstOrDefault( task => task.Id == candidateTaskInfo.Id); if (candidateTask == null) { throw new TaskNotFoundException($"Task with id = {candidateTaskInfo.Id} not found."); } UpdateCandidateTask(candidateTask, candidateTaskInfo); return(_exerciseContext.SaveChangesAsync()); }
private void UpdateCandidateTask( DemoLab.Data.Access.ExerciseManagement.CandidateTask candidateTask, CandidateTaskInfo candidateTaskInfo) { candidateTask.CodeTemplate = candidateTaskInfo.CodeTemplate; candidateTask.Description = candidateTaskInfo.Description; candidateTask.MaximumScore = candidateTaskInfo.MaximumScore; candidateTask.TimeSeconds = candidateTaskInfo.TimeSeconds; candidateTask.Name = candidateTaskInfo.Name; candidateTask.Subject = candidateTaskInfo.Subject; if (candidateTaskInfo.Tips != null) { UpdateTips(candidateTask.Tips, candidateTaskInfo.Tips.ToArray()); } else { UpdateTips(candidateTask.Tips); } SetTestClassAndMethod(candidateTask, candidateTaskInfo); }
public async Task <IHttpActionResult> CreateCandidateTask([FromBody] CandidateTaskInfo candidateTaskInfo) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } try { int createdTaskId = await _exerciseService.AddCandidateTaskAsync(candidateTaskInfo); var actionLink = Url.Link(nameof(GetCandidateTaskInfo), new { id = createdTaskId }); return(Created(actionLink, new { Id = createdTaskId })); } catch (TestClassInfoNotFoundException) { return(BadRequest($"Invalid {nameof(CandidateTaskInfo.TestClassName)}")); } catch (Exception) { return(InternalServerError()); } }