Exemple #1
0
        public void EditDish(DishModelDetailsInfo dish)
        {
            var dishDb = Database.Dish.QueryToTable.FirstOrDefault(x => x.id == dish.ID);

            if (dishDb == null)
            {
                return;
            }
            dishDb.Name        = dish.Name;
            dishDb.Description = dish.Description;
            dishDb.Energy      = dish.Energy;
            dishDb.Ingridients = dish.Ingridients;
            dishDb.Price       = dish.Price;
            dishDb.Weight      = dish.Weight;

            var oldImages = Database.DishImage.QueryToTable.Where(x => x.Dish.id == dishDb.id);

            foreach (var oldImage in oldImages)
            {
                Database.DishImage.Delete(oldImage);
            }

            foreach (var imgPath in dish.ImagePath)
            {
                var imgRow = new DishImage
                {
                    Dish = dishDb,
                    Path = imgPath,
                };
                dishDb.Images.Add(imgRow);
            }

            Database.Dish.Update(dishDb);
            Database.Save();
        }
Exemple #2
0
        public void CreateDish(DishModelDetailsInfo dish)
        {
            var toDb = Mapper.Map <DishModelDetailsInfo, Dish>(dish);

            toDb.Images = new List <DishImage>();

            //add images to dish
            foreach (var imgPath in dish.ImagePath)
            {
                var imgRow = new DishImage
                {
                    Dish = toDb,
                    Path = imgPath,
                };
                toDb.Images.Add(imgRow);
            }

            //add dish to database
            Database.Dish.Add(toDb);
            Database.Save();
        }
Exemple #3
0
        public static async Task <bool> AddImage(int dishId, byte[] imageArray)
        {
            var dishImage = new DishImage()
            {
                Dishimage  = dishId,
                ImageArray = imageArray
            };

            var httpClient = new HttpClient();
            var json       = JsonConvert.SerializeObject(dishImage);
            var content    = new StringContent(json, Encoding.UTF8, "application/json");

            httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("bearer", Preferences.Get("accessToken", string.Empty));

            var response = await httpClient.PostAsync("https://chefapp2727.azurewebsites.net/api/Images", content);

            if (!response.IsSuccessStatusCode)
            {
                return(false);
            }
            return(true);
        }
        public ActionResult Upload(HttpPostedFileBase[] files)
        {
            bool   allValid     = true;
            string inValidFiles = "";

            if (files[0] != null)
            {
                if (files.Length <= 4)
                {
                    foreach (var file in files)
                    {
                        if (!ValidateFile(file))
                        {
                            allValid      = false;
                            inValidFiles += ", " + file.FileName;
                        }
                    }

                    if (allValid)
                    {
                        foreach (var file in files)
                        {
                            try
                            {
                                SaveFileToDisk(file);
                            }
                            catch (System.Exception)
                            {
                                ModelState.AddModelError("FileName", "Sorry an error occurred saving the files to disk, please try again");
                            }
                        }
                    }
                    //else add an error listing out the invalid files
                    else
                    {
                        ModelState.AddModelError("FileName", "All files must be gif, png, jpeg or jpg  and less than 2MB in size.The following files" + inValidFiles +
                                                 " are not valid");
                    }
                }
                //the user has entered more than 10 files
                else
                {
                    ModelState.AddModelError("FileName", "Please only upload up to ten files at a time");
                }
            }
            else
            {
                //if the user has not entered a file return an error message
                ModelState.AddModelError("FileName", "Please choose a file");
            }

            if (ModelState.IsValid)
            {
                bool   duplicates     = false;
                bool   otherDbError   = false;
                string duplicateFiles = "";
                foreach (var file in files)
                {
                    //try and save each file
                    var image = new DishImage {
                        FileName = file.FileName
                    };


                    imageRepository.SaveImage(image);

                    //if there is an exception check if it is caused by a duplicate file
                }
                //add a list of duplicate files to the error message
                if (duplicates)
                {
                    ModelState.AddModelError("FileName", "All files uploaded except the files" + duplicateFiles + ", which already exist in the system." +
                                             " Please delete them and try again if you wish to re-add them");
                    return(View());
                }
                else if (otherDbError)
                {
                    ModelState.AddModelError("FileName", "Sorry an error has occurred saving to the database, please try again");
                    return(View());
                }
                return(RedirectToAction("Index"));
            }
            return(View());
        }
Exemple #5
0
        public async Task <ActionResult <Dish> > CreateDish([FromForm] DishDto dishDto)
        {
            try
            {
                var dish = new Dish
                {
                    Name           = dishDto.Name,
                    Description    = dishDto.Description,
                    DishCategoryId = dishDto.DishCategoryId,
                    Price          = dishDto.Price
                };
                await _unitOfWork.DishRepository.InsertTask(dish);

                await _unitOfWork.Commit();

                if (dishDto.Image != null)
                {
                    var imageToRemove = await _unitOfWork.DishImageRepository.GetByDishId(dish.Id);

                    if (imageToRemove != null)
                    {
                        await _unitOfWork.DishImageRepository.DeleteTask(imageToRemove.Id);
                    }


                    var dishImage = new DishImage
                    {
                        DishId = dish.Id
                    };

                    using (var ms = new MemoryStream())
                    {
                        dishDto.Image.CopyTo(ms);
                        dishImage.Image = ms.ToArray();
                    }

                    await _unitOfWork.DishImageRepository.InsertTask(dishImage);

                    await _unitOfWork.Commit();
                }

                if (TryValidateModel(!string.IsNullOrEmpty(dishDto.DishSupplies)))
                {
                    var dishId = await _unitOfWork.DishRepository.GetMaxId();

                    var dishDetailsJson = JsonConvert.DeserializeObject <List <DishSupply> >(dishDto.DishSupplies);;
                    var dishSupplies    = dishDetailsJson.Select(x => new DishSupply
                    {
                        DishId   = dishId,
                        SupplyId = x.SupplyId,
                        Comment  = x.Comment,
                        Qty      = x.Qty
                    }).ToList();
                    await _unitOfWork.DishSuppliesRepository.InsertRangeTask(dishSupplies);
                }

                await _unitOfWork.Commit();

                return(dish);
            }
            catch (Exception e)
            {
                return(BadRequest(e));
            }
        }
Exemple #6
0
        public async Task <ActionResult <Dish> > UpdateDish([FromForm] DishDto dish)
        {
            try
            {
                if (dish == null)
                {
                    return(NotFound());
                }
                var dsh = new Dish
                {
                    Id             = dish.Id,
                    Description    = dish.Description,
                    Price          = dish.Price,
                    Name           = dish.Name,
                    DishCategoryId = dish.DishCategoryId
                };
                _unitOfWork.DishRepository.Update(dsh);
                await _unitOfWork.Commit();

                if (dish.Image != null)
                {
                    var imageToRemove = await _unitOfWork.DishImageRepository.GetByDishId(dish.Id);

                    if (imageToRemove != null)
                    {
                        await _unitOfWork.DishImageRepository.DeleteTask(imageToRemove.Id);
                    }


                    var dishImage = new DishImage
                    {
                        DishId = dish.Id
                    };

                    using (var ms = new MemoryStream())
                    {
                        dish.Image.CopyTo(ms);
                        dishImage.Image = ms.ToArray();
                    }

                    await _unitOfWork.DishImageRepository.InsertTask(dishImage);

                    await _unitOfWork.Commit();
                }


                var dishDetailsJson = JsonConvert.DeserializeObject <List <DishSupply> >(dish.DishSupplies);;

                var dishDetails = dishDetailsJson.Select(x => new DishSupply
                {
                    Id       = x.Id,
                    DishId   = x.DishId,
                    Qty      = x.Qty,
                    Comment  = x.Comment,
                    SupplyId = x.SupplyId
                }).ToList();

                var dishDetailsDb = await _unitOfWork.DishSuppliesRepository.GetByDishIdNoTracking(dish.Id);

                if (dishDetailsDb.Count >= dishDetails.Count)
                {
                    var removeDetail = dishDetailsDb.Where(p => !dishDetails.Any(p2 => p2.Id == p.Id)).ToList();
                    _unitOfWork.DishSuppliesRepository.DeleteRange(removeDetail);
                    await _unitOfWork.Commit();
                }
                _unitOfWork.DishSuppliesRepository.UpdateRange(dishDetails);
                await _unitOfWork.Commit();
            }
            catch (Exception e)
            {
                return(BadRequest(e));
            }

            return(Ok(dish));
        }
 public void SaveImage(DishImage image)
 {
     _context.DishImages.Add(image);
     _context.SaveChanges();
 }