public async Task<ActionResult> Create(TechnicalDocument technicalDocument, HttpPostedFileBase uploadedFile)
        {
            if (ModelState.IsValid)
            {
                technicalDocument.UploadDate = DateTime.Now;

                var fileName = Guid.NewGuid().ToString() + "_" + Path.GetFileName(uploadedFile.FileName);

                var dir = Server.MapPath("~/Public/TechnicalDocuments/");

                Directory.CreateDirectory(dir);

                uploadedFile.SaveAs(dir + fileName);

                technicalDocument.FileName = fileName;
                technicalDocument.Format = uploadedFile.ContentType;
                technicalDocument.FileSize = uploadedFile.ContentLength;


                db.TechnicalDocuments.Add(technicalDocument);

                await db.SaveChangesAsync();

                return RedirectToAction("Index");
            }

            return View(technicalDocument);
        }
 private TechnicalDocumentEditViewModel GenerateViewModel(TechnicalDocument document)
 {
     var model = new TechnicalDocumentEditViewModel
     {
         TechnicalDocument = document
     };
     return model;
 }
        public async Task<ActionResult> Edit(
            TechnicalDocument technicaldocument,
            HttpPostedFileBase uploadedFile)
        {
            if (ModelState.IsValid)
            {
                var doc = await db.TechnicalDocuments.FindAsync(technicaldocument.Id);

                if (uploadedFile != null)
                {
                    var fileName = doc.FileName;
                    uploadedFile.SaveAs(Server.MapPath("~/Public/TechnicalDocuments/") + fileName);
                    doc.Format = uploadedFile.ContentType;
                    doc.FileSize = uploadedFile.ContentLength;
                }
                doc.Title = technicaldocument.Title;
                doc.LastModificationDate = DateTime.Now;
                db.Entry(doc).State = EntityState.Modified;
                await db.SaveChangesAsync();
                return RedirectToAction("Index");
            }
            return View(GenerateViewModel(technicaldocument));
        }