public async Task <IActionResult> PostFood(string id, [FromBody] FoodPostRequest 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 })); } if (!Role.Equals(UserRoles.OWNER)) { return(Forbid()); } var res = await _restaurantService.GetRestaurant(id); if (res.Success && res.Data == null) { return(NotFound()); } if (!res.Success) { return(new StatusCodeResult(StatusCodes.Status500InternalServerError)); } if (!res.Data.OwnerId.Equals(UserId)) { return(Forbid()); } var result = await _restaurantService.CreateFood(id, req); if (!result.Success) { return(new StatusCodeResult(StatusCodes.Status500InternalServerError)); } return(CreatedAtAction(nameof(GetFood), new { id = id, foodId = result.Data.Id }, result)); }
public async Task <ApiResponse <Food> > CreateFood(string restaurantId, FoodPostRequest food) { Food f = new Food { Name = food.Name, Description = food.Description, Price = (double)food.Price }; var firebase = _firebaseService.GetFirestoreDb(); try { var queryResult = await firebase.Collection(TableNames.RESTAURANTS).Document(restaurantId).Collection(TableNames.FOODS).AddAsync(f); f.Id = queryResult.Id; return(new ApiResponse <Food> { Success = true, Data = f }); } catch { return(new ApiResponse <Food> { Success = false, ErrorCode = ErrorCodes.UNKNOWN_ERROR }); } }