Ejemplo n.º 1
0
        public async Task <Dish> UpdateEntireDish(long dishId, UpdateDishRequest updatedDishRequest)
        {
            Console.WriteLine("Update entire dish");
            // If the user is updating ingredients
            if (updatedDishRequest.Ingredients != null)
            {
                await RemoveAllIngredients(dishId);
            }
            ;

            // If the user is updating steps
            if (updatedDishRequest.Steps != null)
            {
                await RemoveAllSteps(dishId);
            }
            ;

            // If the user is updating the history

            if (updatedDishRequest.History != null)
            {
                await RemoveAllHistories(dishId);
            }
            ;

            return(await _dishRepo.UpdateAll(updatedDishRequest, dishId));
        }
Ejemplo n.º 2
0
        public async Task <IActionResult> UpdateDish(UpdateDishRequest dish)
        {
            var loggedUser = User.GetUserIdFromToken();
            var result     = await _dishService.UpdateDishAsync(loggedUser, dish);

            //var mapped = _mapper.Map<DishResponse>(result);
            //return Ok(new ApiOkResponse(mapped));
            return(Ok());
        }
Ejemplo n.º 3
0
        public async Task <Dish> UpdateAll(UpdateDishRequest updatedDish, long id)
        {
            var dish = await GetDishById(id);

            var mappedDish = _mapper.Map(updatedDish, dish);

            await SaveUpdate();

            return(mappedDish);
        }
        public async Task<IActionResult> AddDish(UpdateDishRequest dish)
        {
            var loggedUser = User.GetUserIdFromToken();
            await _compoundDishService.ConvertUserDishAsync(loggedUser, dish);

            var user = await _userService.GetUserDevicesAsync(loggedUser);
            /*Reward section*/
            await _rewardHelper.HandleRewardAsync(RewardCategoryEnum.DISH_BUILT, dish.UserId, true, dish, null, NotificationTypeEnum.FIREBASE, user.Devices);
            /*#end reward section*/

            return Created("", null);
        }
Ejemplo n.º 5
0
 public async Task UpdateDish(Dish dish)
 {
     var updateRequest = new UpdateDishRequest
     {
         Author      = dish.Author,
         Description = dish.Description,
         Difficulty  = dish.Difficulty,
         Duration    = dish.Duration,
         Name        = dish.Name,
         Recipe      = JsonConvert.SerializeObject(dish.Steps),
     };
     await m_restClient.Put <Dish>(updateRequest, $"Dish?id={dish.Id}");
 }
Ejemplo n.º 6
0
        public async Task <IActionResult> PutTodoItem(long id, [FromBody] UpdateDishRequest updateDishRequest)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var dish = await _dishService.GetById(id);

            _dishService.VerifyUser(GetUserId(), dish.UserID);

            dish = await _dishService.UpdateEntireDish(id, updateDishRequest);

            return(Ok(_mapper.Map <Dish, DishResponse>(dish)));
        }
Ejemplo n.º 7
0
 public ActionResult Update([FromRoute] int restaurantId, int dishId, [FromBody] UpdateDishRequest request)
 {
     _dishService.UpdateDish(restaurantId, dishId, request);
     return(NoContent());
 }
        public async Task ConvertUserDishAsync(int loggedUser, UpdateDishRequest dish)
        {
            // validate admin user
            var user = await _uow.UserRepository.FindByAsync(u => u.Id == loggedUser && u.Role == RoleEnum.ADMIN);

            if (user.Count == 0)
            {
                throw new NotAllowedException(ExceptionConstants.NOT_ALLOWED);
            }

            var d = await _uow.CompoundDishRepository.GetAsync(dish.Id);

            if (d == null)
            {
                throw new NotFoundException(ExceptionConstants.NOT_FOUND, "Dish");
            }

            // validate dish name, this no requires pass the id becaus we are converting a user dish
            // on a general dish
            var existDishName = await _uow.DishRepository.FindByAsync(p => p.Name.ToLower() == dish.Name.ToLower());

            if (existDishName.Count > 0)
            {
                throw new InvalidDataException(ExceptionConstants.INVALID_DATA, "Dish name");
            }

            var dishh = new Dish();

            dishh.Calories      = dish.Calories;
            dishh.Carbohydrates = dish.Carbohydrates;
            dishh.Fat           = dish.Fat;
            dishh.Fiber         = dish.Fiber;
            dishh.Name          = dish.Name;
            dishh.Proteins      = dish.Proteins;

            dishh.Cholesterol = dish.Cholesterol;
            dishh.Calcium     = dish.Calcium;
            dishh.Phosphorus  = dish.Phosphorus;
            dishh.Iron        = dish.Iron;
            dishh.Potassium   = dish.Potassium;
            dishh.Sodium      = dish.Sodium;
            dishh.Zinc        = dish.Zinc;
            dishh.VitaminA    = dish.VitaminA;
            dishh.VitaminC    = dish.VitaminC;
            dishh.VitaminB6   = dish.VitaminB6;
            dishh.VitaminB12  = dish.VitaminB12;
            dishh.VitaminD    = dish.VitaminD;
            dishh.VitaminE    = dish.VitaminE;
            dishh.VitaminK    = dish.VitaminK;

            dishh.VitaminB1Thiamin    = dish.VitaminB1Thiamin;
            dishh.VitaminB2Riboflavin = dish.VitaminB2Riboflavin;
            dishh.VitaminB3Niacin     = dish.VitaminB3Niacin;
            dishh.VitaminB9Folate     = dish.VitaminB9Folate;
            dishh.NetWeight           = dish.NetWeight;
            dishh.Volume             = dish.Volume;
            dishh.SaturatedFat       = dish.SaturatedFat;
            dishh.PolyUnsaturatedFat = dish.PolyUnsaturatedFat;
            dishh.MonoUnsaturatedFat = dish.MonoUnsaturatedFat;
            dishh.Alcohol            = dish.Alcohol;

            if (dish.Classification == 0)
            {
                dishh.IsProteic = true;
            }
            else if (dish.Classification == 1)
            {
                dishh.IsCaloric = true;
            }
            else
            {
                dishh.IsFruitAndVegetables = true;
            }

            // avatar

            // take the same user image
            if (dish.RemovedImage == "null" && dish.Image == null)
            {
                if (!string.IsNullOrWhiteSpace(d.Image))
                {
                    string destinationKey = Guid.NewGuid().ToString();
                    string sourceKey      = d.Image;

                    await _fileService.CopyFileAsync(sourceKey, destinationKey);

                    dishh.Image         = destinationKey;
                    dishh.ImageMimeType = d.ImageMimeType;
                }
            }
            else if (dish.Image != null)
            {
                string guid = Guid.NewGuid().ToString();
                await _fileService.UploadFileAsync(dish.Image, guid);

                dishh.Image         = guid;
                dishh.ImageMimeType = dish.Image.ContentType;
            }

            //existing tags
            foreach (var id in dish.TagsIds)
            {
                var t = await _uow.TagRepository.GetAsync(id);

                if (t != null)
                {
                    var exist = await _uow.DishTagRepository.GetAll().Where(t => t.TagId == id && t.DishId == dish.Id).FirstOrDefaultAsync();

                    if (exist == null)
                    {
                        var dt = new DishTag
                        {
                            Dish     = dishh,
                            TagId    = t.Id,
                            TaggedAt = DateTime.UtcNow
                        };

                        await _uow.DishTagRepository.AddAsync(dt);
                    }
                }
            }
            //new tags
            foreach (var name in dish.NewTags)
            {
                var ta = new Tag
                {
                    Name = name
                };
                await _uow.TagRepository.AddAsync(ta);

                var dt = new DishTag
                {
                    Dish     = dishh,
                    Tag      = ta,
                    TaggedAt = DateTime.UtcNow
                };

                await _uow.DishTagRepository.AddAsync(dt);
            }

            d.IsAdminConverted = true;
            d.IsAdminReviewed  = true;
            _uow.CompoundDishRepository.Update(d);

            await _uow.DishRepository.AddAsync(dishh);

            await _uow.CommitAsync();
        }
Ejemplo n.º 9
0
        public async Task <Dish> UpdateDishAsync(int loggedUser, UpdateDishRequest dish)
        {
            // validate admin user
            var user = await _uow.UserRepository.FindByAsync(u => u.Id == loggedUser && u.Role == RoleEnum.ADMIN);

            if (user.Count == 0)
            {
                throw new NotAllowedException(ExceptionConstants.NOT_ALLOWED);
            }

            var dishh = await _uow.DishRepository.GetAll().Where(d => d.Id == dish.Id)
                        .Include(d => d.FavoriteDishes)
                        .Include(d => d.LackSelfControlDishes)
                        .Include(d => d.DishTags)
                        .ThenInclude(t => t.Tag)
                        .FirstOrDefaultAsync();

            if (dishh == null)
            {
                throw new NotFoundException(ExceptionConstants.NOT_FOUND, "Dish");
            }

            // validate dish name
            var existDishName = await _uow.DishRepository.FindByAsync(p => p.Name.ToLower() == dish.Name.ToLower() && p.Id != dish.Id);

            if (existDishName.Count > 0)
            {
                throw new InvalidDataException(ExceptionConstants.INVALID_DATA, "Dish name");
            }

            dishh.Calories      = dish.Calories;
            dishh.Carbohydrates = dish.Carbohydrates;
            dishh.Fat           = dish.Fat;
            dishh.Fiber         = dish.Fiber;
            dishh.Name          = dish.Name;
            dishh.Proteins      = dish.Proteins;

            dishh.Cholesterol = dish.Cholesterol;
            dishh.Calcium     = dish.Calcium;
            dishh.Phosphorus  = dish.Phosphorus;
            dishh.Iron        = dish.Iron;
            dishh.Potassium   = dish.Potassium;
            dishh.Sodium      = dish.Sodium;
            dishh.Zinc        = dish.Zinc;
            dishh.VitaminA    = dish.VitaminA;
            dishh.VitaminC    = dish.VitaminC;
            dishh.VitaminB6   = dish.VitaminB6;
            dishh.VitaminB12  = dish.VitaminB12;
            dishh.VitaminD    = dish.VitaminD;
            dishh.VitaminE    = dish.VitaminE;
            dishh.VitaminK    = dish.VitaminK;

            dishh.VitaminB1Thiamin    = dish.VitaminB1Thiamin;
            dishh.VitaminB2Riboflavin = dish.VitaminB2Riboflavin;
            dishh.VitaminB3Niacin     = dish.VitaminB3Niacin;
            dishh.VitaminB9Folate     = dish.VitaminB9Folate;
            dishh.NetWeight           = dish.NetWeight;
            dishh.Volume             = dish.Volume;
            dishh.SaturatedFat       = dish.SaturatedFat;
            dishh.PolyUnsaturatedFat = dish.PolyUnsaturatedFat;
            dishh.MonoUnsaturatedFat = dish.MonoUnsaturatedFat;
            dishh.Alcohol            = dish.Alcohol;

            if (dish.Classification == 0)
            {
                dishh.IsProteic            = true;
                dishh.IsCaloric            = false;
                dishh.IsFruitAndVegetables = false;
            }
            else if (dish.Classification == 1)
            {
                dishh.IsCaloric            = true;
                dishh.IsProteic            = false;
                dishh.IsFruitAndVegetables = false;
            }
            else
            {
                dishh.IsFruitAndVegetables = true;
                dishh.IsProteic            = false;
                dishh.IsCaloric            = false;
            }

            // avatar

            if (!string.IsNullOrWhiteSpace(dish.RemovedImage) && dish.RemovedImage != "null")
            {
                await _fileService.DeleteFileAsync(dishh.Image);

                dishh.Image         = "";
                dishh.ImageMimeType = "";
            }
            if (dish.Image != null)
            {
                string guid = Guid.NewGuid().ToString();
                await _fileService.UploadFileAsync(dish.Image, guid);

                dishh.Image         = guid;
                dishh.ImageMimeType = dish.Image.ContentType;
            }

            //delete current and removed tags
            var results = _uow.DishTagRepository.GetAll().Where(dt => dish.Id == dt.DishId && !dish.TagsIds.Contains(dt.TagId));

            foreach (var dt in results)
            {
                _uow.DishTagRepository.Delete(dt);
            }

            //existing tags
            foreach (var id in dish.TagsIds)
            {
                var t = await _uow.TagRepository.GetAsync(id);

                if (t != null)
                {
                    var exist = await _uow.DishTagRepository.GetAll().Where(t => t.TagId == id && t.DishId == dish.Id).FirstOrDefaultAsync();

                    if (exist == null)
                    {
                        var dt = new DishTag
                        {
                            Dish     = dishh,
                            TagId    = t.Id,
                            TaggedAt = DateTime.UtcNow
                        };

                        await _uow.DishTagRepository.AddAsync(dt);
                    }
                }
            }
            //new tags
            foreach (var name in dish.NewTags)
            {
                var ta = new Tag
                {
                    Name = name
                };
                await _uow.TagRepository.AddAsync(ta);

                var dt = new DishTag
                {
                    Dish     = dishh,
                    Tag      = ta,
                    TaggedAt = DateTime.UtcNow
                };

                await _uow.DishTagRepository.AddAsync(dt);
            }

            await _uow.DishRepository.UpdateAsync(dishh, dishh.Id);

            await _uow.CommitAsync();

            //expire cache
            QueryCacheManager.ExpireTag(_config.GetSection("AWS")["CachePrefix"] + CacheEntries.ALL_DISHES);
            return(dishh);
        }
Ejemplo n.º 10
0
 public async Task Put([FromUri] int id, [FromBody] UpdateDishRequest updateDishRequest)
 {
     await m_dishService.UpdateDish(id, updateDishRequest);
 }