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)); }
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 }); } }