コード例 #1
0
        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 }));
        }
コード例 #2
0
        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 }));
        }
コード例 #3
0
        public FoodPictureFormViewModel(FoodPicture foodPicture, Food food)
        {
            Id       = foodPicture.Id;
            FilePath = foodPicture.FilePath;

            FoodId   = food.Id;
            FoodName = food.Name;
        }
コード例 #4
0
        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));
        }
コード例 #5
0
        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();
            }
        }
コード例 #6
0
        public ActionResult MenuPreview(int foodId)
        {
            FoodPicture foodPicture = _unitOfWork.FoodPictures.GetFirstPictureOfFood(foodId).Result;

            return(PartialView("_FoodPictureMenuPreview", foodPicture));
        }