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));
        }
Beispiel #2
0
        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
                });
            }
        }