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 async Task <ActionResult> New(int foodId) { Food food = await _unitOfWork.Foods.SingleOrDefault(c => c.Id == foodId); //you only need two things, make a repository method that only gets those things FoodPictureFormViewModel viewModel = new FoodPictureFormViewModel(food); return(View("FoodPictureForm", viewModel)); }
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)); }