コード例 #1
0
        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);
        }
コード例 #2
0
 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"));
 }
コード例 #3
0
        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);
        }
コード例 #4
0
        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));
        }