Example #1
0
        public async Task <ActionResult <UserFiles> > PostUserFile(UserFiles userFile)
        {
            _context.UserFiles.Add(userFile);
            await _context.SaveChangesAsync();

            return(CreatedAtAction("GetUserFiles", new { id = userFile.Id }, userFile));
        }
Example #2
0
        public async Task <IActionResult> PutUserFile(int id, UserFiles userFile)
        {
            if (id != userFile.Id)
            {
                return(BadRequest());
            }

            _context.Entry(userFile).State = EntityState.Modified;

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!UserFileExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(NoContent());
        }
Example #3
0
        public ActionResult Edit(UserFileVM model)
        {
            if (model.UserFile == null)
            {
                model.UserFile = new UserFile();
            }
            model.UploadFile = UserFiles.GetUploadFile(Request.Files[0]);
            if (!FluentValidate(model))
            {
                return(RedirectBack());
            }


            UserFile userFile  = null;
            var      courseTCs = model.CourseTCs;
            var      groupIds  = model.GroupIds;

            if (model.IsNew)
            {
                userFile             = model.UserFile;
                userFile.UserID      = User.UserID;
                userFile.SysFileName = model.UploadFile.Name;
                var courses = GetCourses(model.CourseTCs);
                var groups  = GetGroups(model.GroupIds);
                userFile.CourseFiles.AddRange(courses);
                userFile.GroupFiles.AddRange(groups);
                FileService.InsertAndSubmit(userFile);
            }
            else
            {
                var userFileId = model.UserFile.UserFileID;
                userFile = FileService.GetByPK(userFileId);
                if (userFile.UserID != User.UserID)
                {
                    throw new NotOwnerException("File");
                }
                userFile.Update(model.UserFile, x => x.Name, x => x.Description);

                if (!model.UploadFile.IsEmpty)
                {
                    userFile.SysFileName = model.UploadFile.Name;
                }


                FileService.SubmitChanges();
                ChangeCourses(userFileId, courseTCs);
                ChangeGroups(userFileId, groupIds);
            }

            if (!model.UploadFile.IsEmpty)
            {
                UserFiles.DeleteFile(userFile.UserFileID);
                var hpf = Request.Files[0];
                hpf.SaveAs(UserFiles.GetUserFileSys(userFile.UserFileID,
                                                    model.UploadFile.Name));
            }

            return(RedirectToAction(() => List(1)));
        }
Example #4
0
        public List <CourseFileVM> GetFiles(List <Tuple <string, string> > courseTrainerTCs)
        {
            CourseFileService.LoadWith(c => c.Load(x => x.UserFile).And <UserFile>(x => x.User));
            var keys  = courseTrainerTCs.Select(x => x.Item1 + "|" + x.Item2).ToList();
            var files = CourseFileService.GetAll(x => keys.Contains(
                                                     x.Course_TC + "|" + x.UserFile.User.Employee_TC)).ToList()
                        .Select(x => new CourseFileVM(x.UserFile.Name, UserFiles.GetUserFileUrl(x.UserFile), x.Course_TC, x.UserFile.User.FullName, x.UserFile.User.Employee_TC));
            var specFiles = GetSpecFiles(courseTrainerTCs.Select(x => x.Item1).ToList());

            return(files.Concat(specFiles).ToList());
        }
Example #5
0
        public async Task <string> NewUserFile(string userID, string md5Str, string fileName)
        {
            if (string.IsNullOrEmpty(userID) || string.IsNullOrEmpty(md5Str) || string.IsNullOrEmpty(fileName))
            {
                return(JsonConvert.SerializeObject(new RequestResult()
                {
                    Flag = -1, Message = "参数错误"
                }));
            }

            try
            {
                Files file = await _files.Find(Builders <Files> .Filter.Eq(q => q.MD5, md5Str)).FirstOrDefaultAsync();

                //如果不存在相同MD5的文件,则新建文件
                if (file == null)
                {
                    file = new Files()
                    {
                        Id       = new ObjectId(),
                        MD5      = md5Str,
                        Position = 0,
                        State    = 0
                    };

                    _files.InsertOne(file);
                }

                UserFiles userFile = new UserFiles()
                {
                    Id         = new ObjectId(),
                    FileID     = file.Id,
                    MD5        = md5Str,
                    FileName   = fileName,
                    UserID     = userID,
                    UploadTime = DateTime.Now
                };

                _userFiles.InsertOne(userFile);

                return(JsonConvert.SerializeObject(new RequestResult()
                {
                    Flag = 1, Message = "新建文件成功", Data = userFile.Id.ToString()
                }));
            }
            catch (Exception)
            {
                return(JsonConvert.SerializeObject(new RequestResult()
                {
                    Flag = -2, Message = "新建文件失败"
                }));
            }
        }
        public ActionResult UploadToDb(UserProfileViewModel model)
        {
            var  userId     = User.Identity.GetUserId();
            bool userExists = db.Users.Any(x => x.Id == userId);

            if (!userExists)
            {
                HttpNotFound();
            }
            if (model.UploadData.Files != null && model.UploadData.Files.Count > 0 && model.UploadData.Files[0] != null)
            {
                foreach (var file in model.UploadData.Files)
                {
                    var  fileName   = Path.GetFileName(file.FileName);
                    bool fileExists = db.UserFileses.Any(x => x.FileName == fileName);
                    if (!fileExists && fileName.ToLower().EndsWith(".png") || fileName.ToLower().EndsWith(".jpg") || fileName.ToLower().EndsWith(".gif"))
                    {
                        var fileType    = file.ContentType;
                        var fileContent = new byte[file.InputStream.Length];
                        file.InputStream.Read(fileContent, 0, fileContent.Length);
                        var userFileDb = db.UserFileses.FirstOrDefault(x => x.UserId == userId);
                        if (userFileDb != null)
                        {
                            userFileDb.FileName        = fileName;
                            userFileDb.FileType        = fileType;
                            userFileDb.UserFile        = fileContent;
                            db.Entry(userFileDb).State = EntityState.Modified;
                        }
                        else
                        {
                            UserFiles uf = new UserFiles
                            {
                                Id       = Guid.NewGuid().ToString(),
                                FileName = fileName,
                                FileType = fileType,
                                UserFile = fileContent,
                                UserId   = userId
                            };
                            db.UserFileses.Add(uf);
                        }
                        db.SaveChanges();
                    }
                    else
                    {
                        ModelState.AddModelError("", "File exists or file format is not correct");
                    }
                }
            }
            return(RedirectToAction("CustomChangePassword", "Manage"));
        }
Example #7
0
        public ActionResult Delete(int fileID)
        {
            var file = FileService.GetByPK(fileID);

            if (file.CourseFiles.Count > 0 || file.GroupFiles.Count > 0)
            {
                return(RedirectBack());
            }
            if (file.UserID != User.UserID)
            {
                throw new NotOwnerException("File");
            }
            FileService.DeleteAndSubmit(file);
            UserFiles.DeleteFile(file.UserFileID);
            return(RedirectBack());
        }
Example #8
0
        public IActionResult UploadToDb(UploadDataViewModel model)
        {
            bool userExists = _context.Users.Where(x => x.UserName == model.UserName).Any();

            if (!userExists)
            {
                User us = new User {
                    Id = Guid.NewGuid().ToString(), UserName = model.UserName
                };
                _context.Users.Add(us);
                _context.SaveChanges();
            }
            if (model.Files != null && model.Files.Count > 0 && model.Files[0] != null)
            {
                foreach (var file in model.Files)
                {
                    var  fileName   = Path.GetFileName(file.FileName);
                    bool fileExists = _context.UserFiles.Where(x => x.FileName == fileName).Any();
                    if (!fileExists)
                    {
                        var          fileType    = file.ContentType;
                        Stream       stream      = file.OpenReadStream();
                        BinaryReader reader      = new BinaryReader(stream);
                        var          fileContent = reader.ReadBytes((int)file.Length);
                        var          userId      = _context.Users.Where(x => x.UserName == model.UserName).Select(x => x.Id).FirstOrDefault();
                        UserFiles    uf          = new UserFiles
                        {
                            Id       = Guid.NewGuid().ToString(),
                            FileName = fileName,
                            FileType = fileType,
                            UserFile = fileContent,
                            UserId   = userId
                        };
                        _context.UserFiles.Add(uf);
                        _context.SaveChanges();
                        ModelState.AddModelError("", "File Uploaded.");
                    }
                    else
                    {
                        ModelState.AddModelError("", "File exists.");
                    }
                }
            }
            return(RedirectToAction("UploadToDatabase"));
        }
Example #9
0
        public async Task <IActionResult> Upload(UploadModel uploadModel)
        {
            var filePath = Path.Combine(environment.ContentRootPath, "uploads", uploadModel.File.FileName);

            using (var fs = new FileStream(filePath, FileMode.Create))
            {
                await uploadModel.File.CopyToAsync(fs);
            }



            //byte[] bs = await System.IO.File.ReadAllBytesAsync(filePath);
            //var ms = new MemoryStream(bs);

            //await minioClient.PutObjectAsync(minioBucketName, uploadModel.File.FileName, ms, ms.Length, "application/octet-stream", null, null);

            string extension = Path.GetExtension(filePath);

            var userFile = new UserFiles
            {
                FileName     = uploadModel.File.FileName,
                Url          = $"{minioURL}/{minioBucketName}",
                InternalName = Guid.NewGuid() + extension,
            };

            await minioClient.PutObjectAsync(minioBucketName, userFile.InternalName, filePath, uploadModel.File.ContentType);



            System.IO.File.Delete(filePath);


            using (ApplicationDbContext context = new ApplicationDbContext())
            {
                context.UserFiles.Add(userFile);
                context.SaveChanges();
            }

            TempData["message"] = "Archivo subido";
            return(RedirectToAction("Index"));
        }
Example #10
0
        public ActionResult Competition(CompetitionVM model)
        {
            model.UploadFile = UserFiles.GetUploadFile(Request.Files[0]);

            if (FluentValidate(model))
            {
                var competition =
                    model.Competition
                    = CompetitionService.GetByPK(model.Competition.CompetitionID);
                if (competition.UserCompetitions.All(uc => uc.UserID != User.UserID))
                {
                    competition.UserCompetitions.Add(
                        new UserCompetition {
                        UserID = User.UserID
                    });
                }
                CompetitionService.SubmitChanges();
                MailService.SendCompetitionRequest(model);
            }
            return(RedirectBack());
        }
Example #11
0
        public async Task <IEnumerable <EventViewModel> > GetEventsWithCommentsAndPhotos(IQueryable <Event> query)
        {
            query = query.Include(e => e.User);

            var result = await query.ToArrayAsync();

            var eventsIds = result.Select(e => e.EventId);
            var comments  = await Comments.Where(c => c.EntityType == CommentEntityTypes.Event && eventsIds.Contains(c.EntityId))
                            .ToListAsync();

            var photos = await Photos.Where(p => p.EntityType == PhotoEntityTypes.Event && eventsIds.Contains(p.EntityId))
                         .ToListAsync();

            var photosMap = photos.ToDictionary(p => p.UserFileId);
            var files     = await UserFiles.Where(f => photosMap.Keys.Contains(f.UserFileId)).ToListAsync();

            var photoViewModelMap = files
                                    .Select(f => new { EntityId = photosMap[f.UserFileId].EntityId, ViewModel = new PhotoViewModel
                                                       {
                                                           Url        = "/Uploads/" + f.FilePath,
                                                           UserId     = f.UserId,
                                                           Likes      = Enumerable.Empty <SimpleUserProfileViewModel>(),
                                                           LikesCount = 0,
                                                           AlbumId    = 0
                                                       } })
                                    .GroupBy(p => p.EntityId)
                                    .ToDictionary(g => g.Key, g => g.Select(p => p.ViewModel).ToArray());
            var commentViewModelMap = comments
                                      .Select(c => Tuple.Create(c.EntityId, new CommentViewModel(c, null, null)))
                                      .GroupBy(c => c.Item1)
                                      .ToDictionary(g => g.Key, g => g.Select(t => t.Item2).ToArray());;

            return(result.Select(e =>
            {
                return new EventViewModel(e, null,
                                          commentViewModelMap.ContainsKey(e.EventId) ? commentViewModelMap[e.EventId] : null,
                                          photoViewModelMap.ContainsKey(e.EventId) ? photoViewModelMap[e.EventId] : null,
                                          null);
            }));
        }
Example #12
0
        public async Task <string> GetFileInfo(string id)
        {
            if (string.IsNullOrEmpty(id))
            {
                return(JsonConvert.SerializeObject(new RequestResult()
                {
                    Flag = -1, Message = "参数错误"
                }));
            }

            try
            {
                ObjectId _id = new ObjectId(id);

                UserFiles userFile = await _userFiles.Find(Builders <UserFiles> .Filter.Eq(q => q.Id, _id)).FirstOrDefaultAsync();

                Files file = await _files.Find(Builders <Files> .Filter.Eq(q => q.Id, userFile.FileID)).FirstOrDefaultAsync();

                UserFileInfo userFileInfo = new UserFileInfo()
                {
                    FileName = userFile.FileName,
                    MD5      = file.MD5,
                    Position = file.Position,
                    State    = file.State
                };

                return(JsonConvert.SerializeObject(new RequestResult()
                {
                    Flag = 1, Message = "新建文件成功", Data = userFileInfo
                }));
            }
            catch (Exception)
            {
                return(JsonConvert.SerializeObject(new RequestResult()
                {
                    Flag = -2, Message = "查询文件失败"
                }));
            }
        }
Example #13
0
        public ActionResult AddLectureFile(decimal lectureId)
        {
            var file   = Request.Files[0];
            var errors = UserFiles.Validate(file, LectureFiles.size, LectureFiles.ext);

            if (errors.Any())
            {
                return(Json(errors.JoinWith(Environment.NewLine)));
            }
            CheckLecturePermission(lectureId);
            LectureFileService.EnableTracking();
            var lectureFile = LectureFileService.FirstOrDefault(x => x.Lecture_ID == lectureId);

            if (lectureFile == null)
            {
                lectureFile            = new LectureFile();
                lectureFile.Lecture_ID = lectureId;
                LectureFileService.InsertAndSubmit(lectureFile);
            }
            file.SaveAs(LectureFiles.GetFile(lectureFile.Id).Path);
            return(Json("ok"));
        }
Example #14
0
 public static string UserFileLink(this HtmlHelper helper, UserFile userFile)
 {
     return(HtmlControls.Anchor(
                UserFiles.GetUserFileUrl(userFile), userFile.Name).ToString());
 }
Example #15
0
        protected override void Dispose(bool disposing)
        {
            if (!disposedValue)
            {
                if (disposing)
                {
                    if (Packages != null)
                    {
                        if (Packages.Count > 0)
                        {
                            foreach (SelectablePackage package in Packages)
                            {
                                package.Dispose();
                            }
                        }
                        Packages.Clear();
                        Packages = null;
                    }
                    if (Dependencies != null)
                    {
                        Dependency.ClearLogics(Dependencies);
                        Dependencies = null;
                    }
                    // TODO: dispose managed state (managed objects)
                    if (ParentCategory != null)
                    {
                        ParentCategory = null;
                    }
                    if (Parent != null)
                    {
                        Parent = null;
                    }
                    if (TopParent != null)
                    {
                        TopParent = null;
                    }
                    if (UserFiles != null)
                    {
                        foreach (UserFile file in UserFiles)
                        {
                            file.FilesSaved.Clear();
                        }
                        UserFiles.Clear();
                        UserFiles = null;
                    }
                    if (Medias != null)
                    {
                        foreach (Media media in Medias)
                        {
                            media.SelectablePackageParent = null;
                        }
                        Medias.Clear();
                        Medias = null;
                    }
                    if (UIComponent != null)
                    {
                        UIComponent.Package = null;
                        UIComponent         = null;
                    }
                    if (ParentUIComponent != null)
                    {
                        ParentUIComponent.Package = null;
                        ParentUIComponent         = null;
                    }
                    if (TopParentUIComponent != null)
                    {
                        TopParentUIComponent.Package = null;
                        TopParentUIComponent         = null;
                    }
                    if (RelhaxWPFComboBoxList != null)
                    {
                        for (int i = 0; i < RelhaxWPFComboBoxList.Count(); i++)
                        {
                            if (RelhaxWPFComboBoxList[i] != null)
                            {
                                RelhaxWPFComboBoxList[i] = null;
                            }
                        }
                        RelhaxWPFComboBoxList = null;
                    }
                    if (ChildBorder != null)
                    {
                        ChildBorder = null;
                    }
                    if (ChildStackPanel != null)
                    {
                        ChildStackPanel = null;
                    }
                    if (ParentBorder != null)
                    {
                        ParentBorder = null;
                    }
                    if (ParentStackPanel != null)
                    {
                        ParentStackPanel = null;
                    }
                    if (ContentControl != null)
                    {
                        ContentControl = null;
                    }
                    if (ScrollViewer != null)
                    {
                        ScrollViewer = null;
                    }
                    if (TreeViewItem != null)
                    {
                        TreeViewItem = null;
                    }
                    if (TreeView != null)
                    {
                        TreeView = null;
                    }
                    if (TabIndex != null)
                    {
                        TabIndex = null;
                    }
                }

                // TODO: free unmanaged resources (unmanaged objects) and override finalizer
                // TODO: set large fields to null
                disposedValue = true;
            }

            base.Dispose(disposing);
        }