public async Task <ActionResult> Delete(int id, int foodId = 0) { //string relativeFolderPath = "/Images/Food/"; FoodPicture foodPictureInDb = await _unitOfWork.FoodPictures.SingleOrDefault(c => c.Id == id); if (foodPictureInDb == null) { return(HttpNotFound()); } _unitOfWork.FoodPictures.Remove(foodPictureInDb); string absoluteFilePath = HttpContext.Server.MapPath("~") + foodPictureInDb.FilePath; try { System.IO.File.Delete(absoluteFilePath); } catch (UnauthorizedAccessException) { //basically I want to return the Edit page with the error. I will have to have an optional argument for a error string in the controller } await _unitOfWork.Complete(); return((foodId == 0) ? RedirectToAction("Index", "Food") : RedirectToAction("Edit", "Food", new { id = foodId })); }
public async Task <ActionResult> Save(FoodPictureFormViewModel viewModel) { string relativeFolderPath = "/Images/Food/"; string newFileName = viewModel.FoodName + Path.GetExtension(viewModel.File.FileName); string relativeFilePath = relativeFolderPath + newFileName; string absoluteFilePath = HttpContext.Server.MapPath("~" + relativeFolderPath) + newFileName; FoodPicture foodPictureInDb = await _unitOfWork.FoodPictures.SingleOrDefault(c => c.Id == viewModel.Id); if (foodPictureInDb == null) { _unitOfWork.FoodPictures.Add(new FoodPicture { FilePath = relativeFilePath, FoodId = viewModel.FoodId }); } else { foodPictureInDb.FilePath = relativeFilePath; } viewModel.File.SaveAs(absoluteFilePath); await _unitOfWork.Complete(); return(RedirectToAction("Edit", "Food", new { Id = viewModel.FoodId })); }
public FoodPictureFormViewModel(FoodPicture foodPicture, Food food) { Id = foodPicture.Id; FilePath = foodPicture.FilePath; FoodId = food.Id; FoodName = food.Name; }
public async Task <ActionResult> Edit(int id) { //i believe you've heard of navigational properties... FoodPicture foodPicture = await _unitOfWork.FoodPictures.SingleOrDefault(c => c.Id == id); Food food = await _unitOfWork.Foods.SingleOrDefault(c => c.Id == foodPicture.FoodId); FoodPictureFormViewModel viewModel = new FoodPictureFormViewModel(foodPicture, food); return(View("FoodPictureForm", viewModel)); }
public async Task UploadAndCreatePictures(IList <IFormFile> files, string foodId) { foreach (var file in files) { var fileName = await _fileUploadManager.Upload(file); var foodPicture = new FoodPicture() { Id = Guid.NewGuid(), FoodId = Guid.Parse(foodId), OriginalFileName = file.FileName, FileName = fileName, Length = file.Length, ContentType = file.ContentType }; _pictureRepository.Create(foodPicture); await _pictureRepository.Commit(); } }
public ActionResult MenuPreview(int foodId) { FoodPicture foodPicture = _unitOfWork.FoodPictures.GetFirstPictureOfFood(foodId).Result; return(PartialView("_FoodPictureMenuPreview", foodPicture)); }