public ActionResult UploadMedia(UploadMediaViewModel mediaModel) { try { GetUIDropdownLists(); ViewBag.RoleList = GetRolesSelectList(); var mediaType = mediaModel.MediaType; var virtualPath = string.Empty; //Save file to relevant fileSystem: switch (mediaModel.RoleName.ToLower()) { case "grammar11plus": if (mediaType.ToLower().StartsWith("paid")) { virtualPath = "~/Documents/Grammar11Plus/PaidDocuments"; } else { virtualPath = "~/Documents/Grammar11Plus/FreeDocuments"; } break; case "stateprimary": if (mediaType.ToLower().StartsWith("paid")) { virtualPath = "~/Documents/StatePrimary/PaidDocuments"; } else { virtualPath = "~/Documents/StatePrimary/FreeDocuments"; } break; case "statejunior": if (mediaType.ToLower().StartsWith("paid")) { virtualPath = "~/Documents/StateJunior/PaidDocuments"; } else { virtualPath = "~/Documents/StateJunior/FreeDocuments"; } break; default: if (mediaType.ToLower().StartsWith("paid")) { virtualPath = "~/Documents/Administration/PaidDouments"; } else { virtualPath = "~/Documents/Administration/FreeDouments"; } break; } if (mediaModel.Select != null) { ModelState.Clear(); if (mediaModel.MediaId == null || string.IsNullOrEmpty(mediaType)) { ModelState.AddModelError("MediaId", "Media Id Required"); return(UploadMedia(mediaModel)); } switch (mediaType.ToLower()) { case "paiddocument": var paidDoc = _repositoryServices.GetPaidDocumentById(mediaModel.MediaId); return(View(new UploadMediaViewModel { MediaId = paidDoc.PaidDocumentId, RoleName = paidDoc.RoleName, Name = paidDoc.FilePath })); case "freedocument": var freeDoc = _repositoryServices.GetFreeDocumentById(mediaModel.MediaId); return(View(new UploadMediaViewModel { MediaId = freeDoc.FreeDocumentId, RoleName = freeDoc.RoleName, Name = freeDoc.FilePath })); case "paidvideo": var paidVideo = _repositoryServices.GetPaidVideoById(mediaModel.MediaId); return(View(new UploadMediaViewModel { MediaId = paidVideo.PaidVideoId, RoleName = paidVideo.RoleName, Name = paidVideo.FilePath })); case "freevideo": var freeVideo = _repositoryServices.GetFreeVideoById(mediaModel.MediaId); return(View(new UploadMediaViewModel { MediaId = freeVideo.FreeVideoId, RoleName = freeVideo.RoleName, Name = freeVideo.FilePath })); } return(View(mediaModel)); } else if (mediaModel.Delete != null) { ModelState.Clear(); if (mediaModel.MediaId == null || string.IsNullOrEmpty(mediaType)) { ModelState.AddModelError("MediaId", "Media Id Required"); return(UploadMedia(mediaModel)); } switch (mediaType.ToLower()) { case "paiddocument": dynamic doc = _repositoryServices.GetPaidDocumentById(mediaModel.MediaId); if (doc != null) { var delFileInfo = new FileInfo(Server.MapPath(doc.FilePath)); if (delFileInfo.Exists) { delFileInfo.Delete(); } } _repositoryServices.DeletePaidDocumentById(mediaModel.MediaId); return(View("SuccessfullCreation")); case "freedocument": doc = _repositoryServices.GetFreeDocumentById(mediaModel.MediaId); if (doc != null) { var delFileInfo = new FileInfo(Server.MapPath(doc.FilePath)); if (delFileInfo.Exists) { delFileInfo.Delete(); } } _repositoryServices.DeleteFreeDocumentById(mediaModel.MediaId); return(View("SuccessfullCreation")); case "paidvideo": doc = _repositoryServices.GetPaidVideoById(mediaModel.MediaId); if (doc != null) { var delFileInfo = new FileInfo(Server.MapPath(doc.FilePath)); if (delFileInfo.Exists) { delFileInfo.Delete(); } } _repositoryServices.DeletePaidVideoById(mediaModel.MediaId); return(View("SuccessfullCreation")); case "freevideo": doc = _repositoryServices.GetFreeVideoById(mediaModel.MediaId); if (doc != null) { var delFileInfo = new FileInfo(Server.MapPath(doc.FilePath)); if (delFileInfo.Exists) { delFileInfo.Delete(); } } _repositoryServices.DeleteFreeVideoById(mediaModel.MediaId); return(View("SuccessfullCreation")); } return(View(mediaModel)); } else { if (ModelState.IsValid) { HttpPostedFileBase file = mediaModel.MediaContent; var fileName = file.FileName; var fileBuffer = new byte[file.ContentLength]; var fileContent = file.InputStream.Read(fileBuffer, 0, fileBuffer.Length); file.InputStream.Flush(); file.InputStream.Close(); var physicalPath = Server.MapPath(virtualPath); var dirInfo = new DirectoryInfo(physicalPath); if (!dirInfo.Exists) { dirInfo.Create(); } FileInfo fileInfo = new FileInfo(physicalPath + "\\" + file.FileName); if (fileInfo.Exists) { fileInfo.Delete(); } using (var fileStream = fileInfo.Create()) { fileStream.Write(fileBuffer, 0, fileBuffer.Length); fileStream.Flush(); fileStream.Close(); } var paidDocument = new PaidDocument { FilePath = "~" + Url.Content(virtualPath) + "/" + file.FileName, SubjectId = mediaModel.SubjectId, RoleName = mediaModel.RoleName }; //Save file Path To DB: switch (mediaModel.MediaType.ToLower()) { case "paiddocument": _repositoryServices.SaveOrUpdatePaidDocument(paidDocument); break; case "freedocument": var freeDocument = AutoMapper.Mapper.Map(paidDocument, typeof(PaidDocument), typeof(FreeDocument)); _repositoryServices.SaveOrUpdateFeeDocument(freeDocument as FreeDocument); break; case "paidvideo": var paidVideo = AutoMapper.Mapper.Map(paidDocument, typeof(PaidDocument), typeof(PaidVideo)); _repositoryServices.SaveOrUpdatePaidVideo(paidVideo as PaidVideo); break; case "freevideo": var freeVideo = AutoMapper.Mapper.Map(paidDocument, typeof(PaidDocument), typeof(FreeVideo)); _repositoryServices.SaveOrUpdateFreeVideo(freeVideo as FreeVideo); break; } return(View("SuccessfullCreation")); } return(View("UploadMedia", mediaModel)); } } catch (Exception e) { ModelState.Clear(); ModelState.AddModelError("FileAccess", string.Format("{0}", e.Message)); return(View("UploadMedia")); } }