package tui

import (
	"fmt"
	"wireguard-ui/command"
	"wireguard-ui/http/vo"
)

type ServerComponent struct {
	LoginUser *vo.User
	Menu      []string
}

func NewServerComponent(loginUser *vo.User) *ServerComponent {
	return &ServerComponent{
		LoginUser: loginUser,
		Menu:      []string{"[1] 启动服务", "[2] 关闭服务", "[3] 重启服务", "[q] 返回上一级菜单"},
	}
}

// Menus
// @description: 服务端菜单
// @receiver s
func (s *ServerComponent) Menus() {
	fmt.Println("")
	for _, r := range s.Menu {
		fmt.Println(" -> " + r)
	}

	chooseMenu := readInput("\n请选择: ")
	switch chooseMenu {
	case "1":
		s.Start()
	case "2":
		s.Stop()
	case "3":
		s.Restart()
	case "q":
		return
	}
}

// Start
// @description: 启动服务
// @receiver s
func (s *ServerComponent) Start() {
	command.StartWireguard("")
}

// Stop
// @description: 停止服务
// @receiver s
func (s *ServerComponent) Stop() {
	command.StopWireguard("")
}

// Restart
// @description: 重启服务
// @receiver s
func (s *ServerComponent) Restart() {
	command.RestartWireguard(false, "")
}
