/// <summary> /// Get parent folder and map .doc view model /// </summary> /// <param name="name"></param> /// <param name="ParentId"></param> /// <param name="content"></param> /// <returns></returns> private async Task <WebStorageDoc> WorkWithDocFile(String name, Int32?ParentId, String content) { ////////////// Find user ////////////// String user_name = Request.GetOwinContext().Authentication.User.Identity.Name; AppUser user = UserManager.FindByName(user_name); ////////////// Additional Info instances ////////////// String _pathToParentFolder; SystemFile ParentFolder; ////////////// Get additional Info ////////////// if (!ParentId.HasValue) { _pathToParentFolder = user.PathToMainFolder; ParentFolder = null; } else { _pathToParentFolder = _fileManeger.GetFileById(ParentId.Value).Path; ParentFolder = _fileManeger.GetFileById(ParentId.Value); } ////////////// Get .doc view model ////////////// WebStorageDoc model = await MappingDocViewModel(user, content, ParentId, ParentFolder, _pathToParentFolder, name); return(model); }
public ActionResult EditDocFile(Int32 Id) { SystemFile file = _fileManeger.GetFileById(Id); if (file == null) { return(null); } WebStorageDoc model = new WebStorageDoc() { FileName = file.Name, ParentId = file.ParentId }; try { model.EditorContent = model.ReadDocFile(file.Path); } catch { return(View("EditError", null, "Have some problem with file. Please close the tab and try again later.")); } return(View(model)); }
/// <summary> /// Update or create .doc file. /// </summary> /// <param name="user"></param> /// <param name="editorContent"></param> /// <param name="fileParentId"></param> /// <param name="fileParentFolder"></param> /// <param name="_pathToParentFolder"></param> /// <param name="fileName"></param> /// <returns></returns> private async Task <WebStorageDoc> MappingDocViewModel(AppUser user, String editorContent, Int32?fileParentId, SystemFile fileParentFolder, String _pathToParentFolder, String fileName) { WebStorageDoc model = new WebStorageDoc(); SystemFile _file = _fileManeger.GetFolderContent(fileParentId).ToList <SystemFile>().FirstOrDefault(o => o.Name == fileName && o.Format == ".boxdoc"); Decimal fileSizeBeforUpdate = 0M; ////////////// Fill ViewModel ////////////// if (_file == null) { ////////////// Create temp file ////////////// System.IO.File.Create(Path.Combine(_pathToParentFolder, fileName + ".boxdoc")).Close(); FileInfo _info = null; DirectoryInfo _di = new DirectoryInfo(_pathToParentFolder); ////////////// Get info about temp file ////////////// foreach (FileInfo _finfo in _di.GetFiles("*.boxdoc")) { if (_finfo.Name == fileName + ".boxdoc") { _info = _finfo; } } ////////////// Create new path for temp file ////////////// String savepath = await _fileManeger.SaveSingleFile(_info, user, fileParentFolder, _info.Length); ////////////// Fill ViewModel ////////////// model.WriteToDocFile(savepath, editorContent); model.EditorContent = model.ReadDocFile(savepath); model.ParentId = fileParentId; model.FileName = fileName; ////////////// Delete temp file ////////////// System.IO.File.Delete(_info.FullName); } else { ////////////// Fill ViewModel //////////////////////// //============ Get additional info about file ======== fileSizeBeforUpdate = new FileInfo(_file.Path).Length; //============ Write to file ========================= model.WriteToDocFile(_file.Path, editorContent); //============ Change file info ====================== _file.Size = new FileInfo(_file.Path).Length; if (fileParentId != null) { fileParentFolder.Size -= fileSizeBeforUpdate; fileParentFolder.Size += _file.Size; } _fileManeger.UpdateFileEditInfo(_file.Id); await _fileManeger.dbContext.SaveChangesAsync(); //============ Fill ViewModel ======================== model.EditorContent = model.ReadDocFile(_file.Path); model.ParentId = fileParentId; model.FileName = fileName; } return(model); }
public async Task <ActionResult> EditDocFile(WebStorageDoc model) { WebStorageDoc new_model; try { new_model = await WorkWithDocFile(model.FileName, model.ParentId, model.EditorContent); } catch { return(View("EditError", null, "Have some problem with file. Please close the tab and try again later.")); } return(View(new_model)); }