public FileDTO AddFile(FileDTO file) { file.DateOfUpload = DateTime.Now; var nFile = file.Map(); var ownUser = _context.Users.First(u => u.Id == file.UserId); ownUser.DiscUsage = ownUser.DiscUsage + file.FileSource.Length; if (ownUser.DiscUsage > ownUser.Space) { throw new Exception("Недостаточно места в хранилище"); } var stat = _context.Statistics.FirstOrDefault(st => st.UserId == ownUser.Id); stat.UploadCount++; _context.Files.Add(nFile); _context.SaveChanges(); return(new FileDTO(nFile)); }
public FileDTO OverWriteFile(Guid oldFileId, FileDTO newFile) { newFile.DateOfUpload = DateTime.Now; var oFile = _context.Files.FirstOrDefault(f => f.Id == oldFileId); if (oFile == null) { throw new Exception("Внутреняя ошибка сервера. Файл не найден."); } var ownUser = _context.Users.FirstOrDefault(us => us.Id == oFile.UserId); ownUser.DiscUsage = ownUser.DiscUsage + newFile.FileSource.Length - oFile.FileSource.Length; if (ownUser.DiscUsage > ownUser.Space) { throw new Exception("Недостаточно места в хранилище"); } var fileShare = _context.Shares.FirstOrDefault(fs => fs.FileId == oFile.Id); if (fileShare == null) { throw new Exception("Внутреняя ошибка сервера. Связь не найдена."); } if (!fileShare.IsWrite) { throw new Exception("Внутреняя ошибка сервера. Перезапись невозможна. Нет необходимых прав"); } var nFile = newFile.Map(); oFile.FileSource = nFile.FileSource; oFile.IsDeleted = nFile.IsDeleted; oFile.Name = nFile.Name; oFile.Size = nFile.Size; oFile.UserId = nFile.UserId; oFile.DateOfUpload = nFile.DateOfUpload; _context.SaveChanges(); return(new FileDTO(oFile)); }
public static RepositoryDTO Map(RepositoryModel entity) { if (entity == null) { return(null); } var dto = new RepositoryDTO { Id = entity.Id, Name = entity.Name, ContentText = entity.ContentText }; if (entity.Subject != null) { dto.Subject = entity.Subject.Name; dto.SubjectId = entity.Subject.Id; } if (entity.Teacher != null) { dto.TeacherName = entity.Teacher.Name; dto.TeacherSurname = entity.Teacher.Surname; dto.TeacherPatronymic = entity.Teacher.Patronymic; } if (entity.Files.Count > 0) { foreach (var file in entity.Files) { dto.Files.Add(FileDTO.Map(file)); } } return(dto); }