Beispiel #1
0
        public async Task <ApiResponse <Block> > CreateBlock(string restaurantId, BlockPostRequest req)
        {
            Block b = new Block
            {
                UserId = req.UserId
            };
            var firebase = _firebaseService.GetFirestoreDb();

            try
            {
                var queryResult = await firebase.Collection(TableNames.RESTAURANTS).Document(restaurantId).Collection(TableNames.BLOCKS).AddAsync(b);

                b.Id = queryResult.Id;
                return(new ApiResponse <Block>
                {
                    Success = true,
                    Data = b
                });
            }
            catch
            {
                return(new ApiResponse <Block>
                {
                    Success = false,
                    ErrorCode = ErrorCodes.UNKNOWN_ERROR
                });
            }
        }
        public async Task <IActionResult> PostBlock(string id, [FromBody] BlockPostRequest req)
        {
            if (req.UserId == null)
            {
                return(BadRequest(new ApiResponse
                {
                    Success = false,
                    ErrorCode = ErrorCodes.MISSING_FIELD
                }));
            }
            if (!Role.Equals(UserRoles.OWNER))
            {
                return(Forbid());
            }
            var res = await _restaurantService.GetRestaurant(id);

            if (!res.Success)
            {
                return(new StatusCodeResult(StatusCodes.Status500InternalServerError));
            }
            if (res.Data == null)
            {
                return(NotFound());
            }
            if (!res.Data.OwnerId.Equals(UserId))
            {
                return(Forbid());
            }
            var block = await _restaurantService.CreateBlock(id, req);

            if (!block.Success)
            {
                return(new StatusCodeResult(StatusCodes.Status500InternalServerError));
            }
            return(NoContent());
        }