// package death_register -- регистрирует танк в схватке
package death_register

import (
	"log"
	"strings"
	"time"
	"wartank/pkg/arena"
	"wartank/pkg/components/arena_net"
	"wartank/pkg/types"
)

// СхваткаРегистрация -- регистрирует танк к началу схватки
type СхваткаРегистрация struct {
	types.ИАрена
	бот          types.ИБот
	сеть         types.ИАренаСеть
	счётРегистер int // Счётчик регистраций на сражение
}

// НовСхваткаРегистрация -- возвращает новый ожидатель битвы
func НовСхваткаРегистрация(бот types.ИБот) *СхваткаРегистрация {
	сам := &СхваткаРегистрация{
		бот:          бот,
		счётРегистер: 10_000,
	}
	аренаКонфиг := arena.АренаКонфиг{
		Бот_:         бот,
		АренаИмя_:    "Сражение",
		СтрКонтроль_: `<title>Сражения</title>`,
		ФнПуск_:      сам.пуск,
	}
	сам.ИАрена = arena.НовАрена(аренаКонфиг)
	сам.сеть = arena_net.НовАренаСеть(сам, "https://wartank.ru/dm")
	return сам
}

func (сам *СхваткаРегистрация) пуск() {

}

// Зарегистрироваться -- регистрирует танк на сражение
func (сам *СхваткаРегистрация) Зарегистрироваться() {
	// Найдено приглашение на участие
	// https://wartank.ru/dm?{count}-1.ILinkListener-currentOverview-apply
	фнРегис := func() []string {
		стрСсылка := "https://wartank.ru/dm?0-1.ILinkListener-currentOverview-apply"
		стрКонтроль := "" // "https://wartank.ru/dm?0-1.ILinkListener-currentOverview-apply"
		for {
			time.Sleep(time.Second * 1)
			лстСражение, err := сам.сеть.Get(стрСсылка)
			if err != nil {
				log.Printf("ERRO СхваткаРегистрация.Зарегистрироваться(): при выполнении GET-команды на подъём в атаку, err=\n\t%v\n", err)
			}
			if len(лстСражение) < 113 {
				continue
			}
			стрКонтроль = лстСражение[113]
			if !strings.Contains(стрКонтроль, "ILinkListener-currentOverview-apply") {
				return лстСражение
			}
			log.Printf("СхваткаРегистрация.Зарегистрироваться(): регистрация не прошла\n")
			стрСсылка = strings.TrimPrefix(стрКонтроль, `<a class="simple-but border" href="`)
			стрСсылка = strings.TrimSuffix(стрСсылка, `.ILinkListener-currentOverview-apply"><span><span>Взвод, подъем! В атаку!</span></span></a>`)
			стрСсылка = "https://wartank.ru/" + стрСсылка + ".ILinkListener-currentOverview-apply"
		}
	}

	if ош := сам.СтрОбновить(фнРегис()); ош != nil {
		log.Printf("СхваткаРегистрация.Зарегистрироваться(): при обновлении lstBattle, err=\n\t%v\n", ош)
	}
	// log._rintf("INFO СхваткаРегистрация.Зарегистрироваться(): регистрация прошла успешно\n")
}
