public async Task <bool> AddAsync(TermPaperAddCommand command) { var termPaper = Mapper.Value.Map <TermPaper>(command); var fileName = command.File.FileName.RemoveDiacritics().ToLowerInvariant().Trim(); termPaper.SetFileName(fileName); await HandleCourseAsync(command, termPaper); await HandleKeywordsAsync(command, termPaper); await Repository.AddAsync(termPaper); await HandleAdvisorsAsync(command, termPaper); await HandleStudentsAsync(command, termPaper); var isIndexed = await _indexAppService.Value.IsIndexCreatedAsync("term-paper_index"); if (!isIndexed) { await _indexAppService.Value.CreateTermPaperIndexAsync(); } var fullPath = await _fileManagerAppService.Value.UploadTermPaperAsync(command.File); await _indexAppService.Value.IndexTermPaperFileAsync(fullPath); return(await UnitOfWork.Value.CommitAsync() > 0); }
private async Task HandleKeywords(TermPaperAddCommand command, TermPaper termPaper) { var existingKeywords = await _keywordRepository.Value.GetKeywordsByValueList(command.Keywords); var newKeywords = command.Keywords.Except(existingKeywords.Select(ek => ek.Value)); foreach (var keyword in existingKeywords) { termPaper.AddKeyword(new TermPaperKeyword(keyword)); } foreach (var keyword in newKeywords) { termPaper.AddKeyword(new TermPaperKeyword(new Keyword(keyword))); } }
private async Task HandleCourse(TermPaperAddCommand command, TermPaper termPaper) { var course = await _courseRepository.Value.GetByName(command.Course); if (course == null) { var area = new Area(command.Area); await _areaRepository.Value.AddAsync(area); course = new Course(area, command.Course); await _courseRepository.Value.AddAsync(course); } termPaper.SetCourse(course); }
public async Task <bool> AddAsync(TermPaperAddCommand command) { var termPaper = Mapper.Value.Map <TermPaper>(command); await HandleCourse(command, termPaper); await HandleKeywords(command, termPaper); await Repository.AddAsync(termPaper); await HandleAdvisors(command, termPaper); await HandleStudents(command, termPaper); return(await UnitOfWork.Value.CommitAsync() > 0); }
private async Task HandleStudents(TermPaperAddCommand command, TermPaper termPaper) { var studentA = new Student(command.Student1); studentA.SetTermPaper(termPaper); await _studentRepository.Value.AddAsync(studentA); if (!string.IsNullOrWhiteSpace(command.Student2)) { var studentB = new Student(command.Student2); studentB.SetTermPaper(termPaper); await _studentRepository.Value.AddAsync(studentB); } }
private async Task HandleAdvisors(TermPaperAddCommand command, TermPaper termPaper) { var advisor = new Advisor(command.Advisor.ToLower().Trim().Replace(" ", "."), "123", command.Advisor); await _advisorRepository.Value.AddAsync(advisor); var termPaperAdvisor = new TermPaperAdvisor(AdvisorType.Leader, termPaper, advisor); termPaper.AddAdvisor(termPaperAdvisor); if (!string.IsNullOrWhiteSpace(command.CoAdvisor)) { var coAdvisor = new Advisor(command.Advisor.ToLower().Trim(), "123", command.Advisor); await _advisorRepository.Value.AddAsync(coAdvisor); var termPaperCoAdvisor = new TermPaperAdvisor(AdvisorType.CoLeader, termPaper, coAdvisor); termPaper.AddAdvisor(termPaperCoAdvisor); } }
public async Task <IActionResult> AddAsync([FromForm] TermPaperAddCommand command) { return(Ok(await _termPaperAppService.AddAsync(command))); }