package taxerr

type SystemErr struct {
	Msg string
}

func (t *SystemErr) Error() string {
	return t.Msg
}

func (t *SystemErr) Is(err error) bool {
	e, ok := err.(*SystemErr)
	return ok && e.Msg == t.Msg
}

func New(msg string) *SystemErr {
	return &SystemErr{
		Msg: msg,
	}
}

func NewSystemV3(errmsg, prompt string) *SystemErr {
	return &SystemErr{
		Msg: `<span>[异常]:` + errmsg + `</span><br />[操作]:` + prompt,
	}
}

/*错误规范
 *1.结尾不带符号
 *2.表明确错误信息，做到让不懂会计的也能看懂，报表问题按税局提示即可
 *3.第一句提示错误原因，之后提示办法 例如 网页请求超时，请稍后重试
 *4.通用错误例如超时，找不到报表等，优先使用定义好的错误
 *5.需要明确提示错误信息，用New() NewUser()方法自定义 例如 NewUser("手机号不一致，税局为xxx,系统为xxx")
 */

var TimeOut = New("请求超时，请稍后重试")

var LaunchBrowserFail = New("打开浏览器失败，请联系运维人员处理")

type WebsiteType string

const (
	Tax           WebsiteType = "税局" //税局和发票平台都用这个
	Bank          WebsiteType = "银行" //银行采集
	Business      WebsiteType = "工商" //工商年报
	OtherSoftware WebsiteType = "其他软件"
)

// 税局卡顿统一提示
func NewWebStuckTitle(cscsts bool) *SystemErr {
	if cscsts {
		return NewSystemV3("电子税局网页卡顿", "系统将于30分钟后重试(可在\"通用设置\"关闭)")
	} else {
		return NewSystemV3("电子税局网页卡顿", "请稍后重试(可在\"通用设置\"配置自动重试)")
	}
}

// 税局卡顿统一提示
func NewWebStuckTitleForErr(err string, cscsts bool) *SystemErr {
	if cscsts {
		return NewSystemV3(err, "系统将于30分钟后重试(可在\"通用设置\"关闭)")
	} else {
		return NewSystemV3(err, "请稍后重试(可在\"通用设置\"配置自动重试)")
	}
}

var ContactDevHanding = NewWebStuckTitle(false)

var InvoiceAuth = NewUserV3("当前企业办税员无电票平台登录权限！", "请切换有电票平台登录权限的办税员或法定代表人后重试。")

func ErrorCompanyName(ErrName string) *SystemErr {
	return NewSystemV3(`无法登录电子税局，公司名称与税局不同，税局为`+ErrName+`。`, `[操作]:请在“企业信息”修改后重试！`)
}

func ErrorCompanyNameDppt(ErrName, comName string) *UserErr {
	//return NewUserV3(`无法登录全电发票平台，公司名称不一致，平台为`+ErrName+`。`, `[操作]:请在“企业信息”修改后重试！`)
	return NewUserV3(`企业名称与税局不符，税局内名称为：`+ErrName+`，系统内为`+comName, `请在“企业信息”里修改企业名称"`)
}

var PilotTaxpayer = NewUserV3(`您不是电子发票服务平台用票试点纳税人`, `请前往增值税发票综合服务平台办理相关业务`)

var TickAuthenticationDppt = NewUserV3(`税局未勾选确认进项发票！`, `请在税局勾选认证进项发票后重新发起采集！`)
