package client

import (
	"fmt"
	tb "gopkg.in/tucnak/telebot.v2"
	"gitea.pena/PenaSide/customer/internal/errors"
	"gitea.pena/PenaSide/customer/internal/models"
)

type TelegramClient struct {
	notifier           *tb.Bot
	notifierPayChannel int64
}

type TelegramClientDeps struct {
	Notifier           *tb.Bot
	NotifierPayChannel int64
}

func NewTelegramClient(deps TelegramClientDeps) *TelegramClient {
	return &TelegramClient{
		notifier:           deps.Notifier,
		notifierPayChannel: deps.NotifierPayChannel,
	}
}

func (t *TelegramClient) NotifyRsPay(userEmail string, verification *models.Verification, money float32) errors.Error {
	message := fmt.Sprintf(
		"Поступила заявка на оплату через Р/С от пользователя с почтой %s (%s)\n"+
			"Вот файлы его верификации:\n"+
			"Запрос на оплату: %f рублей\n",
		userEmail, verification.UserID, money,
	)

	for _, file := range verification.Files {
		message += fmt.Sprintf("%s: %s\n", file.Name, file.URL)
	}
	fmt.Println("RSP", t.notifierPayChannel)

	_, err := t.notifier.Send(
		&tb.Chat{ID: t.notifierPayChannel},
		message,
	)
	if err != nil {
		return errors.New(fmt.Errorf("failed to send tg RS PAY message: %v", err), errors.ErrInternalError)
	}

	return nil
}
