booking modal part 1
This commit is contained in:
+136
-22
@@ -57,6 +57,8 @@ cat > /tmp/seed_data.sh << 'EOF'
|
||||
|
||||
ADMIN_EMAIL="admin@example.com"
|
||||
ADMIN_PASS="password"
|
||||
USER_EMAIL="user@example.com"
|
||||
USER_PASS="password"
|
||||
BASE_URL="http://localhost:8080/api"
|
||||
|
||||
echo "⏳ Waiting for backend to be ready..."
|
||||
@@ -87,32 +89,60 @@ else
|
||||
echo "Response: $RESPONSE_BODY"
|
||||
fi
|
||||
|
||||
echo "2️⃣ Upgrading to Admin Role via psql..."
|
||||
echo "2️⃣ Registering Regular User: $USER_EMAIL"
|
||||
USER_REGISTER_JSON='{"firstName":"Regular","lastName":"User","email":"'$USER_EMAIL'","password":"'$USER_PASS'","phone":"+447000000001","dateOfBirth":"1990-05-15","agreedToPolicy":true}'
|
||||
USER_REGISTER_RESPONSE=$(curl -s -w "\n%{http_code}" -X POST -H 'Content-Type: application/json' -d "$USER_REGISTER_JSON" $BASE_URL/register)
|
||||
HTTP_CODE=$(echo "$USER_REGISTER_RESPONSE" | tail -n1)
|
||||
RESPONSE_BODY=$(echo "$USER_REGISTER_RESPONSE" | sed '$d')
|
||||
|
||||
if [ "$HTTP_CODE" = "201" ]; then
|
||||
echo '✅ User registration successful.'
|
||||
else
|
||||
echo "❌ User registration failed with HTTP $HTTP_CODE"
|
||||
echo "Response: $RESPONSE_BODY"
|
||||
fi
|
||||
|
||||
echo "3️⃣ Upgrading Admin Role via psql..."
|
||||
docker exec postgres psql -U myuser -d mydb -c "UPDATE users SET account_role = 'admin' WHERE email = '$ADMIN_EMAIL'"
|
||||
|
||||
echo "⏳ Waiting 1 seconds for role update to propagate..."
|
||||
sleep 1
|
||||
|
||||
echo "3️⃣ Logging in to get JWT token..."
|
||||
echo "4️⃣ Logging in as Admin to get JWT token..."
|
||||
LOGIN_JSON='{"email":"'$ADMIN_EMAIL'","password":"'$ADMIN_PASS'"}'
|
||||
LOGIN_RESPONSE=$(curl -s -X POST -H 'Content-Type: application/json' -d "$LOGIN_JSON" $BASE_URL/login)
|
||||
|
||||
# Extract token without jq (using grep and sed)
|
||||
TOKEN=$(echo "$LOGIN_RESPONSE" | grep -o '"token":"[^"]*' | sed 's/"token":"//')
|
||||
ADMIN_TOKEN=$(echo "$LOGIN_RESPONSE" | grep -o '"token":"[^"]*' | sed 's/"token":"//')
|
||||
|
||||
if [ -z "$TOKEN" ] || [ "$TOKEN" = "null" ]; then
|
||||
echo '❌ Login failed. Cannot proceed with service creation.'
|
||||
if [ -z "$ADMIN_TOKEN" ] || [ "$ADMIN_TOKEN" = "null" ]; then
|
||||
echo '❌ Admin login failed. Cannot proceed with service creation.'
|
||||
echo "Login response: $LOGIN_RESPONSE"
|
||||
exit 1
|
||||
fi
|
||||
echo '✅ Login successful. Token obtained.'
|
||||
echo "Token (first 30 chars): ${TOKEN:0:30}..."
|
||||
echo '✅ Admin login successful. Token obtained.'
|
||||
echo "Admin Token (first 30 chars): ${ADMIN_TOKEN:0:30}..."
|
||||
|
||||
echo "5️⃣ Logging in as User to get JWT token..."
|
||||
USER_LOGIN_JSON='{"email":"'$USER_EMAIL'","password":"'$USER_PASS'"}'
|
||||
USER_LOGIN_RESPONSE=$(curl -s -X POST -H 'Content-Type: application/json' -d "$USER_LOGIN_JSON" $BASE_URL/login)
|
||||
|
||||
# Extract token without jq (using grep and sed)
|
||||
USER_TOKEN=$(echo "$USER_LOGIN_RESPONSE" | grep -o '"token":"[^"]*' | sed 's/"token":"//')
|
||||
|
||||
if [ -z "$USER_TOKEN" ] || [ "$USER_TOKEN" = "null" ]; then
|
||||
echo '❌ User login failed. Cannot proceed with booking creation.'
|
||||
echo "Login response: $USER_LOGIN_RESPONSE"
|
||||
exit 1
|
||||
fi
|
||||
echo '✅ User login successful. Token obtained.'
|
||||
echo "User Token (first 30 chars): ${USER_TOKEN:0:30}..."
|
||||
|
||||
# Add extra delay to ensure token is fully processed
|
||||
echo "⏳ Waiting 1 seconds before creating services..."
|
||||
sleep 1
|
||||
|
||||
echo '4️⃣ Creating 6 Nail Bar Services...'
|
||||
echo 6️⃣ Creating 6 Nail Bar Services...
|
||||
|
||||
# Updated services with correct field names based on CreateServiceRequest struct
|
||||
# Note: description is optional (omitempty), all other fields are required
|
||||
@@ -125,6 +155,7 @@ SERVICES=(
|
||||
'{"name":"Nail Art Add-on","description":"Custom nail art, per two fingers.","price":5.00,"duration_minutes":15,"patch_test_duration_hours":0,"minimum_age_required":0}'
|
||||
)
|
||||
|
||||
SERVICE_IDS=()
|
||||
SUCCESS_COUNT=0
|
||||
FAIL_COUNT=0
|
||||
for SERVICE_JSON in "${SERVICES[@]}"; do
|
||||
@@ -134,26 +165,27 @@ for SERVICE_JSON in "${SERVICES[@]}"; do
|
||||
echo "Creating: $SERVICE_NAME"
|
||||
echo "Request JSON: $SERVICE_JSON"
|
||||
|
||||
CREATE_RESPONSE=$(curl -v -X POST \
|
||||
CREATE_RESPONSE=$(curl -s -w "\n%{http_code}" -X POST \
|
||||
-H 'Content-Type: application/json' \
|
||||
-H "Authorization: Bearer $TOKEN" \
|
||||
-H "Authorization: Bearer $ADMIN_TOKEN" \
|
||||
-d "$SERVICE_JSON" \
|
||||
"$BASE_URL/admin/services" 2>&1)
|
||||
"$BASE_URL/admin/services")
|
||||
|
||||
# Extract HTTP code from verbose output
|
||||
HTTP_CODE=$(echo "$CREATE_RESPONSE" | grep "< HTTP" | awk '{print $3}')
|
||||
|
||||
# Get the response body (last few lines after headers)
|
||||
RESPONSE_BODY=$(echo "$CREATE_RESPONSE" | sed -n '/^{/,$p' | grep '^{')
|
||||
HTTP_CODE=$(echo "$CREATE_RESPONSE" | tail -n1)
|
||||
RESPONSE_BODY=$(echo "$CREATE_RESPONSE" | sed '$d')
|
||||
|
||||
if [ "$HTTP_CODE" = "201" ]; then
|
||||
SUCCESS_COUNT=$((SUCCESS_COUNT + 1))
|
||||
echo "✅ Created: $SERVICE_NAME"
|
||||
# Extract service ID from response
|
||||
SERVICE_ID=$(echo "$RESPONSE_BODY" | grep -o '"id":"[^"]*' | cut -d'"' -f4)
|
||||
if [ -n "$SERVICE_ID" ]; then
|
||||
SERVICE_IDS+=("$SERVICE_ID")
|
||||
echo " Service ID: $SERVICE_ID"
|
||||
fi
|
||||
else
|
||||
FAIL_COUNT=$((FAIL_COUNT + 1))
|
||||
echo "❌ Failed to create: $SERVICE_NAME (HTTP $HTTP_CODE)"
|
||||
echo "Full curl output:"
|
||||
echo "$CREATE_RESPONSE"
|
||||
if [ -n "$RESPONSE_BODY" ]; then
|
||||
echo "Response body: $RESPONSE_BODY"
|
||||
fi
|
||||
@@ -166,9 +198,91 @@ echo "━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
echo "✅ Successfully created: $SUCCESS_COUNT services"
|
||||
echo "❌ Failed: $FAIL_COUNT services"
|
||||
|
||||
# --- 5️⃣ Create Holiday Exceptional Groups ---
|
||||
# Display collected service IDs
|
||||
echo ""
|
||||
echo "5️⃣ Creating Holiday Exceptional Groups..."
|
||||
echo "Created Service IDs:"
|
||||
for i in "${!SERVICE_IDS[@]}"; do
|
||||
echo " $((i+1)). ${SERVICE_IDS[$i]}"
|
||||
done
|
||||
|
||||
# --- 7️⃣ Create Demo Bookings ---
|
||||
echo ""
|
||||
echo "7️⃣ Creating 6 Demo Bookings..."
|
||||
|
||||
# Check if we have enough services created
|
||||
if [ ${#SERVICE_IDS[@]} -lt 6 ]; then
|
||||
echo "❌ ERROR: Only ${#SERVICE_IDS[@]} services were created successfully."
|
||||
echo " Need at least 6 services to create demo bookings."
|
||||
echo " Skipping booking creation..."
|
||||
echo ""
|
||||
else
|
||||
echo "✅ All 6 services available. Proceeding with booking creation..."
|
||||
|
||||
# Function to create a booking
|
||||
create_booking() {
|
||||
local TOKEN=$1
|
||||
local START_TIME=$2
|
||||
local SERVICE_IDS_JSON=$3
|
||||
local NOTES=$4
|
||||
local BOOKING_NAME=$5
|
||||
|
||||
local BOOKING_JSON="{\"start_time\":\"$START_TIME\",\"service_ids\":$SERVICE_IDS_JSON"
|
||||
if [ -n "$NOTES" ]; then
|
||||
BOOKING_JSON="$BOOKING_JSON,\"notes\":\"$NOTES\""
|
||||
fi
|
||||
BOOKING_JSON="$BOOKING_JSON}"
|
||||
|
||||
echo ""
|
||||
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
||||
echo "Creating: $BOOKING_NAME"
|
||||
echo "Time: $START_TIME"
|
||||
echo "Services: $SERVICE_IDS_JSON"
|
||||
|
||||
CREATE_RESPONSE=$(curl -s -w "\n%{http_code}" -X POST \
|
||||
-H 'Content-Type: application/json' \
|
||||
-H "Authorization: Bearer $TOKEN" \
|
||||
-d "$BOOKING_JSON" \
|
||||
"$BASE_URL/bookings")
|
||||
|
||||
HTTP_CODE=$(echo "$CREATE_RESPONSE" | tail -n1)
|
||||
RESPONSE_BODY=$(echo "$CREATE_RESPONSE" | sed '$d')
|
||||
|
||||
if [ "$HTTP_CODE" = "201" ]; then
|
||||
echo "✅ Created: $BOOKING_NAME"
|
||||
BOOKING_ID=$(echo "$RESPONSE_BODY" | grep -o '"id":"[^"]*' | cut -d'"' -f4)
|
||||
echo " Booking ID: $BOOKING_ID"
|
||||
else
|
||||
echo "❌ Failed to create: $BOOKING_NAME (HTTP $HTTP_CODE)"
|
||||
if [ -n "$RESPONSE_BODY" ]; then
|
||||
echo "Response body: $RESPONSE_BODY"
|
||||
fi
|
||||
fi
|
||||
|
||||
sleep 0.2
|
||||
}
|
||||
|
||||
# 1. Establish the base day (Tomorrow) with a time that guarantees it's in the future.
|
||||
TOMORROW_BASE=$(date -u -d "tomorrow 08:00:00" +%Y-%m-%d)
|
||||
|
||||
# 2. Calculate the date 7 days after the TOMORROW_BASE date
|
||||
NEXT_WEEK_DATE=$(date -u -d "$TOMORROW_BASE +7 days" +%Y-%m-%d)
|
||||
|
||||
# 3. Calculate the date 14 days after the TOMORROW_BASE date
|
||||
WEEK_AFTER_DATE=$(date -u -d "$TOMORROW_BASE +14 days" +%Y-%m-%d)
|
||||
|
||||
|
||||
# Create demo bookings using the full timestamp (using the fixed dates)
|
||||
create_booking "$USER_TOKEN" "$(date -u -d "$TOMORROW_BASE 10:00:00" +%Y-%m-%dT%H:%M:%SZ)" "[\"${SERVICE_IDS[0]}\"]" "" "Classic Manicure - Tomorrow 10:00"
|
||||
create_booking "$USER_TOKEN" "$(date -u -d "$TOMORROW_BASE 14:30:00" +%Y-%m-%dT%H:%M:%SZ)" "[\"${SERVICE_IDS[1]}\",\"${SERVICE_IDS[5]}\"]" "Want French manicure with simple nail art on accent fingers" "Gel Manicure + Nail Art - Tomorrow 14:30"
|
||||
create_booking "$USER_TOKEN" "$(date -u -d "$NEXT_WEEK_DATE 11:00:00" +%Y-%m-%dT%H:%M:%SZ)" "[\"${SERVICE_IDS[2]}\"]" "Special treat for myself" "Luxury Pedicure - Next Week 11:00"
|
||||
create_booking "$USER_TOKEN" "$(date -u -d "$NEXT_WEEK_DATE 15:45:00" +%Y-%m-%dT%H:%M:%SZ)" "[\"${SERVICE_IDS[3]}\"]" "Need quick refresh before event" "Express Mani & Pedi - Next Week 15:45"
|
||||
create_booking "$USER_TOKEN" "$(date -u -d "$WEEK_AFTER_DATE 13:15:00" +%Y-%m-%dT%H:%M:%SZ)" "[\"${SERVICE_IDS[4]}\",\"${SERVICE_IDS[1]}\"]" "Remove old gel and apply new BIAB" "Gel Removal + New Gel - Week After 13:15"
|
||||
create_booking "$USER_TOKEN" "$(date -u -d "$WEEK_AFTER_DATE 16:30:00" +%Y-%m-%dT%H:%M:%SZ)" "[\"${SERVICE_IDS[0]}\",\"${SERVICE_IDS[5]}\"]" "Birthday celebration - want something special!" "Classic + Nail Art - Week After 16:30"
|
||||
fi
|
||||
|
||||
# --- 8️⃣ Create Holiday Exceptional Groups ---
|
||||
echo ""
|
||||
echo "8️⃣ Creating Holiday Exceptional Groups..."
|
||||
|
||||
# November Break (week of Nov 10-16, 2025) - Closed entirely
|
||||
NOVEMBER_BREAK='{
|
||||
@@ -191,7 +305,7 @@ echo "━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
echo "Creating: November Break"
|
||||
NOV_RESPONSE=$(curl -s -w "\n%{http_code}" -X POST \
|
||||
-H 'Content-Type: application/json' \
|
||||
-H "Authorization: Bearer $TOKEN" \
|
||||
-H "Authorization: Bearer $ADMIN_TOKEN" \
|
||||
-d "$NOVEMBER_BREAK" \
|
||||
"$BASE_URL/scheduling/exceptional-groups")
|
||||
HTTP_CODE=$(echo "$NOV_RESPONSE" | tail -n1)
|
||||
@@ -227,7 +341,7 @@ echo "━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
echo "Creating: Christmas Holiday Period"
|
||||
XMAS_RESPONSE=$(curl -s -w "\n%{http_code}" -X POST \
|
||||
-H 'Content-Type: application/json' \
|
||||
-H "Authorization: Bearer $TOKEN" \
|
||||
-H "Authorization: Bearer $ADMIN_TOKEN" \
|
||||
-d "$CHRISTMAS_BREAK" \
|
||||
"$BASE_URL/scheduling/exceptional-groups")
|
||||
HTTP_CODE=$(echo "$XMAS_RESPONSE" | tail -n1)
|
||||
|
||||
Reference in New Issue
Block a user