public async Task <IActionResult> PutFood(string id, string foodId, [FromBody] FoodPutRequest req)
        {
            if (req.Price == null || req.Description == null || req.Name == null)
            {
                return(BadRequest(new ApiResponse
                {
                    Success = false,
                    ErrorCode = ErrorCodes.MISSING_FIELD
                }));
            }
            if (req.Price <= 0)
            {
                return(BadRequest(new ApiResponse
                {
                    Success = false,
                    ErrorCode = ErrorCodes.FOOD_INVALID_PRICE
                }));
            }
            if (req.Name.Length == 0 || req.Name.Length > FilterConstants.NAME_MAX_LENGTH)
            {
                return(BadRequest(new ApiResponse
                {
                    Success = false,
                    ErrorCode = ErrorCodes.FOOD_INVALID_NAME_LENGTH
                }));
            }
            if (req.Description.Length == 0 || req.Description.Length > FilterConstants.DESCRIPTION_MAX_LENGTH)
            {
                return(BadRequest(new ApiResponse
                {
                    Success = false,
                    ErrorCode = ErrorCodes.FOOD_INVALID_DESCRIPTION_LENGTH
                }));
            }
            var food = await _restaurantService.GetFood(id, foodId);

            if (food.Success && food.Data == null)
            {
                return(NotFound());
            }
            else if (!food.Success)
            {
                return(new StatusCodeResult(StatusCodes.Status500InternalServerError));
            }

            var restaurant = await _restaurantService.GetRestaurant(id);

            if (!restaurant.Success)
            {
                return(new StatusCodeResult(StatusCodes.Status500InternalServerError));
            }
            if (!restaurant.Data.OwnerId.Equals(UserId))
            {
                return(Forbid());
            }
            var res = await _restaurantService.UpdateFood(id, foodId, req);

            if (!res.Success)
            {
                return(new StatusCodeResult(StatusCodes.Status500InternalServerError));
            }
            return(Ok(res));
        }
Exemple #2
0
        public async Task <ApiResponse <Food> > UpdateFood(string restaurantId, string id, FoodPutRequest req)
        {
            Food food = new Food
            {
                Id          = id,
                Name        = req.Name,
                Description = req.Description,
                Price       = (double)req.Price
            };
            var firebase = _firebaseService.GetFirestoreDb();

            try
            {
                await firebase.Collection(TableNames.RESTAURANTS).Document(restaurantId).Collection(TableNames.FOODS).Document(id).SetAsync(food);

                return(new ApiResponse <Food>
                {
                    Success = true,
                    Data = food
                });
            }
            catch
            {
                return(new ApiResponse <Food>
                {
                    Success = false,
                    ErrorCode = ErrorCodes.UNKNOWN_ERROR
                });
            }
        }