package main

import (
	"flag"

	"github.com/akyoto/color"
	"github.com/animenotifier/notify.moe/arn"
)

var nick string
var itemID string
var quantity int

func init() {
	flag.StringVar(&nick, "nick", "", "Name of the user. Leave it out to target all users.")
	flag.StringVar(&itemID, "item", "", "ID of the item.")
	flag.IntVar(&quantity, "q", 1, "Item quantity.")
	flag.Parse()
}

func main() {
	defer arn.Node.Close()

	if itemID == "" {
		flag.Usage()
		return
	}

	// Check that the item exists
	_, err := arn.GetShopItem(itemID)
	arn.PanicOnError(err)

	if nick != "" {
		// Single user
		user, err := arn.GetUserByNick(nick)
		arn.PanicOnError(err)
		err = addItemToUser(user)
		arn.PanicOnError(err)
	} else {
		// All users
		for user := range arn.StreamUsers() {
			err = addItemToUser(user)

			if err != nil {
				color.Red(err.Error())
			}
		}
	}
}

func addItemToUser(user *arn.User) error {
	inventory := user.Inventory()
	err := inventory.AddItem(itemID, uint(quantity))

	if err != nil {
		return err
	}

	inventory.Save()
	return nil
}