package controllers

import (
	"github.com/astaxie/beego/validation"
	"github.com/tiptok/gocomm/common"
	"github.com/tiptok/gocomm/pkg/log"
	"github.com/tiptok/gocomm/pkg/mybeego"
)

type BaseController struct {
	mybeego.BaseController
}

//Valid  valid struct
func (this *BaseController) Valid(obj interface{}) (result bool, msg *mybeego.Message) {
	/*校验*/
	var err error
	valid := validation.Validation{}
	result, err = valid.Valid(obj)
	if err != nil {
		msg = mybeego.NewMessage(1)
		return
	}
	if !result {
		for _, err := range valid.Errors {
			log.Error(err.Key, err.Message)
		}
		msg = mybeego.NewMessage(2)
		return
	}
	return
}

//GenMessage genarate a response message
func (this *BaseController) GenMessage(rsp interface{}, err error) *mybeego.Message {
	var msg *mybeego.Message
	if err == nil {
		msg = mybeego.NewMessage(0)
		msg.Data = rsp
		return msg
	}
	if e, ok := err.(common.Error); ok {
		msg = mybeego.NewMessage(e.Code)
		msg.Data = rsp
		return msg
	}
	msg = mybeego.NewMessage(1)
	return msg
}