// package battle_register -- регестрирует танк в битве
package battle_register

import (
	"fmt"
	"log"
	"strings"
	"time"

	"wartank/pkg/components/section"
	"wartank/pkg/components/sectionnet"
	"wartank/pkg/types"
)

// СражениеРегистрация -- регистрирует танк к началу атаки
type СражениеРегистрация struct {
	*section.Section
	bot          types.ИБот
	net          *sectionnet.SectionNet
	счётРегистер int // Счётчик регистраций на сражение
}

// NewBattleRegister -- возвращает новый ожидатель битвы
func NewBattleRegister(bot types.ИБот) (*СражениеРегистрация, error) {
	section, err := section.NewSection(bot, "Сражение", `<title>Сражения</title>`)
	if err != nil {
		return nil, fmt.Errorf("NewBattleRegister(): in create ISection, err=\n\t%w", err)
	}
	sf := &СражениеРегистрация{
		Section:      section,
		bot:          bot,
		счётРегистер: 10_000,
	}
	sf.net, err = sectionnet.NewSectionNet(sf, "https://wartank.ru/pve")
	if err != nil {
		return nil, fmt.Errorf("NewBattleRegister(): in create *SectionNet, err=\n\t%w", err)
	}
	return sf, nil
}

// Зарегистрироваться -- регистрирует танк на сражение
func (sf *СражениеРегистрация) Зарегистрироваться() {
	// Найдено приглашение на участие
	// https://wartank.ru/pve?{count}-1.ILinkListener-currentOverview-apply
	фнРегис := func() []string {
		стрСсылка := "https://wartank.ru/pve?0-1.ILinkListener-currentOverview-apply"
		стрКонтроль := "https://wartank.ru/pve?0-1.ILinkListener-currentOverview-apply"
		for {
			time.Sleep(time.Second * 1)
			лстСражение, err := sf.net.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 err := sf.СтрОбновить(фнРегис()); err != nil {
		log.Printf("СражениеРегистрация.Зарегистрироваться(): при обновлении lstBattle, err=\n\t%v\n", err)
	}
	// log._rintf("INFO СражениеРегистрация.Зарегистрироваться(): регистрация прошла успешно\n")
}
