public async Task <ActionResult <List <KitchenUserDto> > > GetAcceptedUsersForKitchen(long kitchenId)
        {
            PantryPlannerUser     user;
            List <KitchenUserDto> kitchenUsers;

            try
            {
                user = await _userManager.GetUserFromCookieOrJwtAsync(this.User);
            }
            catch (PermissionsException e)
            {
                // this will be thrown if the user is null
                return(Unauthorized(e.Message));
            }
            catch (Exception e)
            {
                return(StatusCode(StatusCodes.Status500InternalServerError, e.Message));
            }


            try
            {
                kitchenUsers = KitchenUserDto.ToList(_service.GetAcceptedUsersForKitchenById(kitchenId, user));
            }
            catch (ArgumentNullException e)
            {
                return(BadRequest(e.Message));
            }
            catch (KitchenNotFoundException e)
            {
                return(NotFound(e.Message));
            }
            catch (PermissionsException e)
            {
                return(Unauthorized(e.Message));
            }
            catch (Exception e)
            {
                return(StatusCode(StatusCodes.Status500InternalServerError, e.Message));
            }

            if (kitchenUsers == null)
            {
                return(NotFound("No users found for kitchen"));
            }

            return(kitchenUsers);
        }
        public async Task GetAcceptedUsersForKitchen_ValidKitchen_ReturnsCorrectResult()
        {
            Kitchen kitchen = _userManager.TestUser.KitchenUser.FirstOrDefault()?.Kitchen;

            if (kitchen == null)
            {
                throw new Exception("kitchen is not setup for testing");
            }

            List <KitchenUserDto> expectedResult = KitchenUserDto.ToList(_context.KitchenUser.Where(k => k.KitchenId == kitchen.KitchenId && k.HasAcceptedInvite.Value).ToList());


            ActionResult <List <KitchenUserDto> > allUsersResult = await _controller.GetAcceptedUsersForKitchen(kitchen.KitchenId);


            Assert.Equal(expectedResult.Count, allUsersResult.Value.Count);
        }
        public async Task <ActionResult <List <KitchenUserDto> > > GetKitchenInvitesForLoggedInUser()
        {
            PantryPlannerUser     user;
            List <KitchenUserDto> myInvites;

            try
            {
                user = await _userManager.GetUserFromCookieOrJwtAsync(this.User);
            }
            catch (PermissionsException e)
            {
                // this will be thrown if the user is null
                return(Unauthorized(e.Message));
            }
            catch (Exception e)
            {
                return(StatusCode(StatusCodes.Status500InternalServerError, e.Message));
            }


            try
            {
                myInvites = KitchenUserDto.ToList(_service.GetMyInvites(user));
            }
            catch (ArgumentNullException e)
            {
                return(BadRequest(e.Message));
            }
            catch (UserNotFoundException e)
            {
                return(NotFound(e.Message));
            }
            catch (Exception e)
            {
                return(StatusCode(StatusCodes.Status500InternalServerError, e.Message));
            }

            if (myInvites == null)
            {
                return(NotFound("No invites found for user"));
            }

            return(myInvites);
        }