# Users can do this on their own on the account settings, so this script is for doing big batches of users.

database = require '../server/commons/database'
mongoose = require 'mongoose'
log = require 'winston'
async = require 'async'

### SET UP ###
do (setupLodash = this) ->
  GLOBAL._ = require 'lodash'
  _.str = require 'underscore.string'
  _.mixin _.str.exports()
  GLOBAL.tv4 = require('tv4').tv4

database.connect()

UserHandler = require '../server/handlers/user_handler'
User = require '../server/models/User'

userIDs = [
  # Fill in userID strings here
]

User.find _id: {$in: (mongoose.Types.ObjectId(userID) for userID in userIDs)}, (err, users) ->
  if users.length isnt userIDs.length
    log.info "Only found #{users.length} users out of #{userIDs.length}. Got this right? Quitting conservatively."
    process.exit()
  log.info "Starting user progress reset for #{users.length} users..."

  #async.parallel ((do(user) -> (cb) -> console.log("should reset progress for user: #{user._id}") or cb null) for user in users), (err) ->
  async.parallel (((cb) -> UserHandler.constructor.resetProgressForUser(user, cb)) for user in users), (err) ->
    log.error err if err?
    log.info 'Finished resetting user accounts.' unless err?
    process.exit()