public async Task SubmitThesis(ThesisCreateViewModel model) { string ext = System.IO.Path.GetExtension(model.Thesis.FileName); if (!ext.ToLower().Equals(".pdf") || !ext.ToLower().Equals(".docx")) { throw new FileLoadException("Invalid format"); } var user = await GetCurrentUserAsync(); var filename = $"{model.Author}-{model.Title}{GetFileExtension(model.Thesis.ContentType)}"; var refs = model.References.Replace(",", "\n"); var thesis = new Thesis { Title = model.Title, Author = model.Author, Abstract = model.Abstract, Supervisor = model.Supervisor, References = refs, FileName = filename, UploaderId = user.Id, DateCreated = new DateTime(Convert.ToInt32(model.Year), Convert.ToInt32(model.Month), 1) }; if (!Directory.Exists(PATH)) { Directory.CreateDirectory(PATH); } using (var stream = new FileStream(Path.Combine(PATH, filename), FileMode.Create)) { await model.Thesis.CopyToAsync(stream); } await _thesisDAL.SubmitThesis(thesis); }
public async Task <IActionResult> Submit(ThesisCreateViewModel model) { if (ModelState.IsValid) { if (model.Thesis == null || model.Thesis.Length == 0) { return(Content("file not selected")); } try { await _thesisService.SubmitThesis(model); } catch (FileLoadException) { return(Content("Only PDF and DOCX files allowed")); } return(RedirectToAction(nameof(Index))); } return(Content("Error uploading document")); }
public ActionResult Create(ThesisCreateViewModel model) { if (ModelState.IsValid && (model.ThesisArchive != null && model.ThesisArchive.ContentLength > 0) && (model.ReviewArchive != null && model.ReviewArchive.ContentLength > 0)) { try { byte[] byteArray = null; using (var memory = new MemoryStream()) { model.ThesisArchive.InputStream.CopyTo(memory); byteArray = memory.GetBuffer(); } var fileName = string.Format(GlobalPatternConstants.VERSION_NAME, DateTime.Now.ToUniversalTime(), model.ThesisArchive.FileName); var fullPath = storage.UploadFile(byteArray, fileName, GlobalConstants.STORAGE_FOLDER); var extensionStartIndex = model.ThesisArchive.FileName.LastIndexOf('.'); var fileExtension = model.ThesisArchive.FileName.Substring(extensionStartIndex + 1, model.ThesisArchive.FileName.Length - extensionStartIndex - 1).ToLower(); var thesis = Mapper.Map<Thesis>(model); thesis.IsComplete = true; thesis.Versions.Add(new ThesesSystem.Models.Version { StoragePath = fullPath, FileName = fileName, FileExtension = fileExtension }); byteArray = null; using (var memory = new MemoryStream()) { model.ReviewArchive.InputStream.CopyTo(memory); byteArray = memory.GetBuffer(); } fileName = string.Format(GlobalPatternConstants.VERSION_NAME, DateTime.Now.ToUniversalTime(), model.ReviewArchive.FileName); fullPath = storage.UploadFile(byteArray, fileName, GlobalConstants.STORAGE_FOLDER); extensionStartIndex = model.ReviewArchive.FileName.LastIndexOf('.'); fileExtension = model.ReviewArchive.FileName.Substring(extensionStartIndex + 1, model.ReviewArchive.FileName.Length - extensionStartIndex - 1).ToLower(); thesis.Evaluation = new Evaluation { FilePath = fullPath, FileName = fileName, FileExtension = fileExtension, ReviewerId = model.ReviewerId, Mark = model.Mark }; this.Data.Theses.Add(thesis); this.Data.SaveChanges(); return RedirectToAction("Index"); } catch (Exception) { this.CreateSelectLists(); return View(model); } } this.CreateSelectLists(); return View(model); }
public ActionResult Create(ThesisCreateViewModel model) { if (ModelState.IsValid && (model.ThesisArchive != null && model.ThesisArchive.ContentLength > 0) && (model.ReviewArchive != null && model.ReviewArchive.ContentLength > 0)) { try { byte[] byteArray = null; using (var memory = new MemoryStream()) { model.ThesisArchive.InputStream.CopyTo(memory); byteArray = memory.GetBuffer(); } var fileName = string.Format(GlobalPatternConstants.VERSION_NAME, DateTime.Now.ToUniversalTime(), model.ThesisArchive.FileName); var fullPath = storage.UploadFile(byteArray, fileName, GlobalConstants.STORAGE_FOLDER); var extensionStartIndex = model.ThesisArchive.FileName.LastIndexOf('.'); var fileExtension = model.ThesisArchive.FileName.Substring(extensionStartIndex + 1, model.ThesisArchive.FileName.Length - extensionStartIndex - 1).ToLower(); var thesis = Mapper.Map <Thesis>(model); thesis.IsComplete = true; thesis.Versions.Add(new ThesesSystem.Models.Version { StoragePath = fullPath, FileName = fileName, FileExtension = fileExtension }); byteArray = null; using (var memory = new MemoryStream()) { model.ReviewArchive.InputStream.CopyTo(memory); byteArray = memory.GetBuffer(); } fileName = string.Format(GlobalPatternConstants.VERSION_NAME, DateTime.Now.ToUniversalTime(), model.ReviewArchive.FileName); fullPath = storage.UploadFile(byteArray, fileName, GlobalConstants.STORAGE_FOLDER); extensionStartIndex = model.ReviewArchive.FileName.LastIndexOf('.'); fileExtension = model.ReviewArchive.FileName.Substring(extensionStartIndex + 1, model.ReviewArchive.FileName.Length - extensionStartIndex - 1).ToLower(); thesis.Evaluation = new Evaluation { FilePath = fullPath, FileName = fileName, FileExtension = fileExtension, ReviewerId = model.ReviewerId, Mark = model.Mark }; this.Data.Theses.Add(thesis); this.Data.SaveChanges(); return(RedirectToAction("Index")); } catch (Exception) { this.CreateSelectLists(); return(View(model)); } } this.CreateSelectLists(); return(View(model)); }