public void ConstructorShouldInitializeCollectionProperties() { // Arrange IsoRequest isoRequest; // Act isoRequest = new IsoRequest(); // Assert Assert.IsNotNull(isoRequest.Folders); Assert.IsNotNull(isoRequest.Files); }
public void Insert(int userId, List <int> fileIds, List <int> folderIds) { var user = _unitOfWork.IsoUserRepository.Get(userId); var files = fileIds.Select(m => _unitOfWork.IsoFileRepository.Get(m)).ToList(); var folders = folderIds.Select(m => _unitOfWork.IsoFolderRepository.Get(m)).ToList(); var isoRequest = new IsoRequest { Created = DateTime.Now, Files = files, Folders = folders, User = user, Completed = DateTime.Now, Status = IsoRequestStatus.New }; _unitOfWork.IsoRequestRepository.Insert(isoRequest); _unitOfWork.Save(); }
public HttpResponseMessage Create(IsoFinderFolderRequest fileRequest) { try { var entities = new IsoFinderEntities(); var user = entities.Users.Find(fileRequest.UserId); var requestStatus = entities.IsoRequestStatus.Find((int)IsoRequestStatus.Pending); var isoFolders = new List <IsoRequestFolder>(); foreach (int folderId in fileRequest.FolderIds) { var folder = entities.IsoFolders.Find(folderId); isoFolders.Add(new IsoRequestFolder { IsoFolder = folder }); } var isoFinderRequest = new IsoRequest { User = user, IsoRequestFolders = isoFolders, Created = DateTime.Today, IsoRequestStatu = requestStatus, Query = fileRequest.Query }; entities.IsoRequests.Add(isoFinderRequest); entities.SaveChanges(); return(new HttpResponseMessage(HttpStatusCode.Created)); } catch (Exception ex) { return(new HttpResponseMessage(HttpStatusCode.InternalServerError) { Content = new StringContent(ex.Message) }); } }
public void Update(IsoRequest isoRequest) { _unitOfWork.IsoRequestRepository.Update(isoRequest); _unitOfWork.Save(); }
private async void ProcessRequests() { _requestInProgress = true; for (int i = 0; i < _pendingRequests.Count; i++) { _currentIsoRequestInfo = _pendingRequests[i]; WriteLogMessage(string.Format("Processing request: {0}. UserId: {1}", _currentIsoRequestInfo.Id, _currentIsoRequestInfo.User.Id)); _currentIsoRequestInfo.Status = IsoRequestStatus.InProgress; _isoRequestService.Update(_currentIsoRequestInfo); var userName = RemoveInvalidCharacters(_currentIsoRequestInfo.User.Name); var tempPath = Path.GetTempPath(); var sessionName = DateTime.Now.ToString("yyyy-MM-dd_HH-mm-ss") + "-" + userName + "-" + RemoveInvalidCharacters(_currentIsoRequestInfo.Query); try { var fileRequests = _currentIsoRequestInfo.Files.ToList(); if (fileRequests.Count > 0) { fileRequests.Sort((f, g) => f.IsoVolumeId.CompareTo(g.IsoVolumeId)); var lastIsoVolumeId = 0; var isoVolumeFileName = string.Empty; foreach (var fileRequest in fileRequests) { var unmountResult = false; if (fileRequest.IsoVolumeId != lastIsoVolumeId) { isoVolumeFileName = _isoVolumeService.GetById(fileRequest.IsoVolumeId).FileName; WriteLogMessage("Unmounting file..."); unmountResult = await UnMount(); WriteLogMessage("Unmount successfully completed"); WriteLogMessage(string.Format("Mounting file '{0}'...", isoVolumeFileName)); var mountResult = await Mount(Path.Combine(_isoFilesPath, isoVolumeFileName)); if (mountResult) { WriteLogMessage("Mount successfully completed"); } else { continue; } } lastIsoVolumeId = fileRequest.IsoVolumeId; var folderPath = fileRequest.Parent.Path.Replace("/", _unitLetter + ":\\"); CopyFileToTempFolder(sessionName, fileRequest.Name, folderPath, tempPath); WriteLogMessage(string.Format("File successfully copied from: '{0}' to: '{1}'", Path.Combine(folderPath, fileRequest.Name), Path.Combine(_copyFileFolder, fileRequest.Name))); } } var folderRequests = _currentIsoRequestInfo.Folders.ToList(); if (folderRequests.Count > 0) { folderRequests.Sort((f, g) => f.IsoVolumeId.CompareTo(g.IsoVolumeId)); var lastIsoVolumeId = 0; var isoVolumeFileName = string.Empty; foreach (var folderRequest in folderRequests) { var unmountResult = false; if (folderRequest.IsoVolumeId != lastIsoVolumeId) { isoVolumeFileName = _isoVolumeService.GetById(folderRequest.IsoVolumeId).FileName; WriteLogMessage("Unmounting file..."); unmountResult = await UnMount(); WriteLogMessage("Unmount successfully completed"); WriteLogMessage(string.Format("Mounting file '{0}'...", isoVolumeFileName)); var mountResult = await Mount(Path.Combine(_isoFilesPath, isoVolumeFileName)); if (mountResult) { WriteLogMessage("Mount successfully completed"); } else { continue; } } lastIsoVolumeId = folderRequest.IsoVolumeId; var folderPath = folderRequest.Path.Replace("/", _unitLetter + ":\\"); CopyFolderToTempFolder(sessionName, Path.GetFileName(folderPath), folderPath, tempPath); WriteLogMessage(string.Format("Folder successfully copied from: '{0}' to: '{1}'", folderPath, Path.Combine(_copyFileFolder, Path.GetFileName(folderPath)))); } ZipFolder(sessionName, _copyFileFolder, tempPath); _currentIsoRequestInfo.Status = IsoRequestStatus.Done; _currentIsoRequestInfo.FileName = sessionName + ".zip"; _isoRequestService.Update(_currentIsoRequestInfo); } } catch (Exception ex) { WriteLogMessage(ex.Message); WriteLogMessage(ex.StackTrace); _currentIsoRequestInfo.Status = IsoRequestStatus.Failed; _isoRequestService.Update(_currentIsoRequestInfo); } } lock (_lockObject) { _pendingRequests.Clear(); _requestInProgress = false; } WriteLogMessage("Process finished."); await UnMount(); }