public DetailedStudyMaterialDTO(StudyMaterialDTO baseDTO) { Uri = baseDTO.Uri; Name = baseDTO.Name; StudyMaterialId = baseDTO.StudyMaterialId; CategoryId = baseDTO.CategoryId; UploadDate = baseDTO.UploadDate; StudentId = baseDTO.StudentId; TotalRating = baseDTO.TotalRating; Deleted = baseDTO.Deleted; }
/// <summary> /// Saves list of study materials in specified category within specific course, relating those study materials with /// specific student. /// </summary> /// <param name="categoryId">Unique identifier for the category</param> /// <param name="studentId">Unique identifier for the student</param> /// <param name="fileInfos">List of file information</param> /// <returns>True if upload succeeds, false if not</returns> public async Task <ResultMessage <bool> > SaveStudyMaterials(int categoryId, int studentId, List <BasicFileInfo> fileInfos) { try { using (IDbContextTransaction transaction = await _context.Database.BeginTransactionAsync()) { foreach (BasicFileInfo fileInfo in fileInfos) { ResultMessage <CategoryDTO> choosenCategory = await _categoryService .GetSingleOrDefault(x => x.CategoryId == categoryId); if (!choosenCategory.IsSuccess) { return(new ResultMessage <bool>(false, choosenCategory.Status, choosenCategory.Message)); } StudyMaterialDTO data = new StudyMaterialDTO() { StudentId = studentId, CategoryId = categoryId, Name = fileInfo.FileName, UploadDate = DateTime.Now, Uri = PathBuilder.BuildPathForStudyMaterial(choosenCategory.Result.CourseId, categoryId, fileInfo.FileName) }; ResultMessage <StudyMaterialDTO> studyMaterialResult = await _studyMaterialService.Add(data); if (!studyMaterialResult.IsSuccess) { return(new ResultMessage <bool>(false, studyMaterialResult.Status, studyMaterialResult.Message)); } ResultMessage <bool> fsUploadResult = await _documentService.UploadDocumentToStorage(data.Uri, fileInfo.FileData); if (!fsUploadResult.IsSuccess) { return(new ResultMessage <bool>(false, fsUploadResult.Status, fsUploadResult.Message)); } } transaction.Commit(); } return(new ResultMessage <bool>(OperationStatus.Success)); } catch (DbUpdateException ex) { return(new ResultMessage <bool>(false, _errorHandler.Handle(ex))); } }