public async Task HandleAsync(CourseTaskUpdateCommand command) { CourseTask courseTask = await _context .CourseTask .Include(x => x.CourseTaskAttachment) .FirstOrDefaultAsync(x => x.Id == command.Id); courseTask.Title = command.Title; courseTask.Description = command.Description; courseTask.DueDate = command.DueDate; courseTask.GradeMaximum = command.MaximumGrade; _context.CourseTaskAttachment.RemoveRange(courseTask.CourseTaskAttachment); if (command.Files != null) { List <tvz2api_cqrs.Models.File> newFiles = new List <tvz2api_cqrs.Models.File>(); foreach (var file in command.Files) { using (var ms = new MemoryStream()) { file.CopyTo(ms); var fileBytes = ms.ToArray(); var fileName = ContentDispositionHeaderValue.Parse(file.ContentDisposition).FileName.Trim('"'); fileName = fileName.Substring(0, fileName.LastIndexOf(".")) + fileName.Substring(fileName.LastIndexOf(".")).ToLower(); newFiles.Add(new tvz2api_cqrs.Models.File { Name = Path.GetFileName(fileName), ContentType = file.ContentType, Data = fileBytes, Size = fileBytes.Length }); } } await _context.File.AddRangeAsync(newFiles); await _context.SaveChangesAsync(); newFiles.ForEach(x => { _context.CourseTaskAttachment.Add(new CourseTaskAttachment() { FileId = x.Id, CourseTaskId = courseTask.Id }); }); } await _context.SaveChangesAsync(); }
public async Task <IActionResult> Update(int courseId, [FromForm] CourseTaskUpdateCommand command) { if (!_userResolver.HasCoursePrivilege(courseId, new List <PrivilegeEnum>() { PrivilegeEnum.CanManageCourse, PrivilegeEnum.CanManageTasks, PrivilegeEnum.CanCreateTasks })) { return(Unauthorized()); } await _commandBus.ExecuteAsync(command); return(Ok()); }