Пример #1
0
        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));
        }
Пример #2
0
        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);
        }