chitfund/README/HOW_TO_ADD_PAST_DRAWS.md

6.4 KiB

📝 How to Add Past Draws and Winners

Step-by-step guide to backfill historical draw data for imported groups.


🎯 Use Case

You imported a group that started 6 months ago. Now you need to record:

  • Month 1 Draw: John Doe won ₹99,000
  • Month 2 Draw: Jane Smith won ₹98,500
  • Month 3 Draw: Bob Johnson won ₹98,000
  • ... and so on

🚀 Quick Steps

Method 1: Using the UI (Coming Soon)

Step 1: Go to Group Details Page

Step 2: Click "Actions" menu (top right)

Step 3: Select "Add Past Draw Result"

Step 4: Fill in the form:

  • Month number (e.g., 1, 2, 3)
  • Select winner from member list
  • Enter prize amount

Step 5: Click "Add Draw"

Repeat for each past month!


Method 2: Using the API Directly (For Now)

Since the UI buttons aren't wired yet, you can use the API directly:

1. Get Your Auth Token

Login and copy your token from browser DevTools:

F12 → Application → Local Storage → auth_token

2. Add Past Draw via API

curl -X POST https://chitfund.deepteklabs.com/api/monthly-draws \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_TOKEN_HERE" \
  -d '{
    "group_id": "YOUR_GROUP_ID",
    "month": 6,
    "year": 2024,
    "winner_id": "MEMBER_USER_ID",
    "prize_amount": 98000,
    "is_past_draw": true,
    "client_seed": "PAST_DRAW_JUNE_2024"
  }'

3. Repeat for Each Month

Change the parameters:

  • month: 6, 7, 8, etc.
  • year: 2024
  • winner_id: Different member for each draw
  • prize_amount: Amount they won

🔍 How to Get IDs

Get Group ID:

  1. Go to Group Details page
  2. Check URL or browser console
  3. Or list all groups via API:
curl https://chitfund.deepteklabs.com/api/chit-groups/manager \
  -H "Authorization: Bearer YOUR_TOKEN"

Get Member IDs:

  1. View group members in UI
  2. Or list members via API:
curl https://chitfund.deepteklabs.com/api/members/YOUR_GROUP_ID/members \
  -H "Authorization: Bearer YOUR_TOKEN"

📋 Example: Complete Backfill

Scenario:

  • Group started: June 2024
  • Current: December 2024 (Month 7)
  • Need to add: 6 past draws

API Calls:

# Set your token
TOKEN="your_auth_token_here"
GROUP_ID="your_group_id_here"

# Month 1 - June 2024
curl -X POST https://chitfund.deepteklabs.com/api/monthly-draws \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $TOKEN" \
  -d '{
    "group_id": "'$GROUP_ID'",
    "month": 6,
    "year": 2024,
    "winner_id": "john_doe_user_id",
    "prize_amount": 99000,
    "is_past_draw": true
  }'

# Month 2 - July 2024
curl -X POST https://chitfund.deepteklabs.com/api/monthly-draws \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $TOKEN" \
  -d '{
    "group_id": "'$GROUP_ID'",
    "month": 7,
    "year": 2024,
    "winner_id": "jane_smith_user_id",
    "prize_amount": 98500,
    "is_past_draw": true
  }'

# Month 3 - August 2024
curl -X POST https://chitfund.deepteklabs.com/api/monthly-draws \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $TOKEN" \
  -d '{
    "group_id": "'$GROUP_ID'",
    "month": 8,
    "year": 2024,
    "winner_id": "bob_johnson_user_id",
    "prize_amount": 98000,
    "is_past_draw": true
  }'

# Continue for months 4, 5, 6...

🛠️ Add UI Buttons (For You to Implement)

I created the dialogs but need to add buttons to access them. Here's where:

Location: Group Details Page Actions Menu

Add these options to the PopupMenuButton in group_details_page.dart:

PopupMenuItem(
  value: 'add_past_draw',
  child: Row(
    children: [
      Icon(Icons.history, color: Colors.blue.shade600),
      SizedBox(width: 12.w),
      const Text('Add Past Draw Result'),
    ],
  ),
),
PopupMenuItem(
  value: 'add_past_payments',
  child: Row(
    children: [
      Icon(Icons.payment_outlined, color: Colors.green.shade600),
      SizedBox(width: 12.w),
      const Text('Add Past Payments'),
    ],
  ),
),

Then handle the selection:

onSelected: (value) {
  if (value == 'add_past_draw') {
    _showAddPastDrawDialog();
  } else if (value == 'add_past_payments') {
    _showAddPastPaymentsDialog();
  }
}

void _showAddPastDrawDialog() {
  // Need to determine which month to add
  final currentMonth = _determineCurrentMonth();
  
  showDialog(
    context: context,
    builder: (context) => AddPastDrawDialog(
      group: widget.group,
      monthNumber: currentMonth,
    ),
  ).then((result) {
    if (result == true) {
      _chitGroupService.loadGroupMonthlyDraws(widget.group.id);
    }
  });
}

void _showAddPastPaymentsDialog() {
  final currentMonth = _determineCurrentMonth();
  
  showDialog(
    context: context,
    builder: (context) => AddPastPaymentsDialog(
      group: widget.group,
      monthNumber: currentMonth,
    ),
  ).then((result) {
    if (result == true) {
      _paymentService.loadGroupPayments(widget.group.id);
    }
  });
}

Option A: Use API (Current - Works Now)

  1. Get group ID and member IDs
  2. Use curl commands above
  3. Add all past draws via API
  4. Verify in UI

Option B: Add UI Buttons (Better UX)

  1. Add buttons to group details page
  2. Import dialogs I created
  3. Click through UI to add draws
  4. More user-friendly

🎓 Quick Reference

API Endpoint:

POST /api/monthly-draws

Required Fields:

  • group_id - The imported group's ID
  • month - Month number (1-12)
  • year - Year (e.g., 2024)
  • winner_id - User ID of the winner
  • prize_amount - Amount won
  • is_past_draw: true - Flag for past draws

Optional:

  • client_seed - Any string (e.g., "PAST_JUNE_2024")

⚠️ Important Notes

  1. Add members FIRST before adding draws
  2. Winner must be a member of the group
  3. Can't duplicate - only one draw per month/year
  4. Month/year must match group timeline
  5. Prize amounts should be realistic

🔗 Files You Need

The dialogs are already created:

  • AddPastDrawDialog - Ready to use
  • AddPastPaymentsDialog - Ready to use
  • ⚠️ Just need to add buttons in group_details_page.dart

💡 Quick Solution

For now, use the API method (curl commands) to add past draws.

For better UX, I can add the buttons to the group details page - just let me know!


See the API examples above to add past draws immediately! 🚀

Or say "add the UI buttons" and I'll wire them up for you.