public List<Contract_VideoLocal> SearchForFiles(int searchType, string searchCriteria, int userID) { try { List<Contract_VideoLocal> vids = new List<Contract_VideoLocal>(); FileSearchCriteria sType = (FileSearchCriteria)searchType; VideoLocalRepository repVids = new VideoLocalRepository(); switch (sType) { case FileSearchCriteria.Name: List<VideoLocal> results1 = repVids.GetByName(searchCriteria.Trim()); foreach (VideoLocal vid in results1) vids.Add(vid.ToContract(userID)); break; case FileSearchCriteria.ED2KHash: VideoLocal vidByHash = repVids.GetByHash(searchCriteria.Trim()); if (vidByHash != null) vids.Add(vidByHash.ToContract(userID)); break; case FileSearchCriteria.Size: break; case FileSearchCriteria.LastOneHundred: List<VideoLocal> results2 = repVids.GetMostRecentlyAdded(100); foreach (VideoLocal vid in results2) vids.Add(vid.ToContract(userID)); break; } return vids; } catch (Exception ex) { logger.ErrorException(ex.ToString(), ex); } return new List<Contract_VideoLocal>(); }
public static void RunImport_ScanFolder(int importFolderID) { // get a complete list of files List<string> fileList = new List<string>(); ImportFolderRepository repFolders = new ImportFolderRepository(); int filesFound = 0, videosFound = 0; int i = 0; try { ImportFolder fldr = repFolders.GetByID(importFolderID); if (fldr == null) return; VideoLocalRepository repVidLocals = new VideoLocalRepository(); // first build a list of files that we already know about, as we don't want to process them again List<VideoLocal> filesAll = repVidLocals.GetAll(); Dictionary<string, VideoLocal> dictFilesExisting = new Dictionary<string, VideoLocal>(); foreach (VideoLocal vl in filesAll) { try { dictFilesExisting[vl.FullServerPath] = vl; } catch (Exception ex) { string msg = string.Format("Error RunImport_ScanFolder XREF: {0} - {1}", vl.ToStringDetailed(), ex.ToString()); logger.Info(msg); } } logger.Debug("ImportFolder: {0} || {1}", fldr.ImportFolderName, fldr.ImportFolderLocation); Utils.GetFilesForImportFolder(fldr.ImportFolderLocation, ref fileList); // get a list of all files in the share foreach (string fileName in fileList) { i++; if (dictFilesExisting.ContainsKey(fileName)) { if (fldr.IsDropSource != 1) continue; else { // if this is a file in a drop source, try moving it string filePath = string.Empty; int nshareID = 0; DataAccessHelper.GetShareAndPath(fileName, repFolders.GetAll(), ref nshareID, ref filePath); List<VideoLocal> filesSearch = repVidLocals.GetByName(filePath); foreach (VideoLocal vid in filesSearch) vid.MoveFileIfRequired(); } } filesFound++; logger.Info("Processing File {0}/{1} --- {2}", i, fileList.Count, fileName); if (!FileHashHelper.IsVideo(fileName)) continue; videosFound++; CommandRequest_HashFile cr_hashfile = new CommandRequest_HashFile(fileName, false); cr_hashfile.Save(); } logger.Debug("Found {0} new files", filesFound); logger.Debug("Found {0} videos", videosFound); } catch (Exception ex) { logger.ErrorException(ex.ToString(), ex); } }