package controllers

import (
	"github.com/tiptok/gocomm/pkg/log"
	"gitlab.fjmaimaimai.com/mmm-go/godevp/pkg/application/user"
	"gitlab.fjmaimaimai.com/mmm-go/godevp/pkg/protocol"
	protocolx "gitlab.fjmaimaimai.com/mmm-go/godevp/pkg/protocol/user"
)

type UserController struct {
	BaseController
}

// CreateUser
// CreateUser execute command  create  User
func (this *UserController) CreateUser() {
	var (
		msg     *protocol.ResponseMessage
		svr     = user.NewUserService(nil)
		request *protocolx.CreateUserRequest
	)
	defer func() {
		this.Resp(msg)
	}()
	if err := this.JsonUnmarshal(&request); err != nil {
		msg = protocol.BadRequestParam(1)
		return
	}
	header := this.GetRequestHeader(this.Ctx)
	data, err := svr.CreateUser(header, request)
	if err != nil {
		log.Error(err)
	}
	msg = protocol.NewReturnResponse(data, err)
}

// UpdateUser
// UpdateUser execute command  update  User
func (this *UserController) UpdateUser() {
	var (
		msg     *protocol.ResponseMessage
		svr     = user.NewUserService(nil)
		request *protocolx.UpdateUserRequest
	)
	defer func() {
		this.Resp(msg)
	}()
	if err := this.JsonUnmarshal(&request); err != nil {
		msg = protocol.BadRequestParam(1)
		return
	}
	header := this.GetRequestHeader(this.Ctx)
	data, err := svr.UpdateUser(header, request)
	if err != nil {
		log.Error(err)
	}
	msg = protocol.NewReturnResponse(data, err)
}

// GetUser
// GetUser execute query  get  User
func (this *UserController) GetUser() {
	var (
		msg     *protocol.ResponseMessage
		svr     = user.NewUserService(nil)
		request *protocolx.GetUserRequest
	)
	defer func() {
		this.Resp(msg)
	}()
	if err := this.JsonUnmarshal(&request); err != nil {
		msg = protocol.BadRequestParam(1)
		return
	}
	header := this.GetRequestHeader(this.Ctx)
	data, err := svr.GetUser(header, request)
	if err != nil {
		log.Error(err)
	}
	msg = protocol.NewReturnResponse(data, err)
}

// DeleteUser
// DeleteUser execute command  delete  User
func (this *UserController) DeleteUser() {
	var (
		msg     *protocol.ResponseMessage
		svr     = user.NewUserService(nil)
		request *protocolx.DeleteUserRequest
	)
	defer func() {
		this.Resp(msg)
	}()
	if err := this.JsonUnmarshal(&request); err != nil {
		msg = protocol.BadRequestParam(1)
		return
	}
	header := this.GetRequestHeader(this.Ctx)
	data, err := svr.DeleteUser(header, request)
	if err != nil {
		log.Error(err)
	}
	msg = protocol.NewReturnResponse(data, err)
}

// ListUser
// ListUser execute query  list  User
func (this *UserController) ListUser() {
	var (
		msg     *protocol.ResponseMessage
		svr     = user.NewUserService(nil)
		request *protocolx.ListUserRequest
	)
	defer func() {
		this.Resp(msg)
	}()
	if err := this.JsonUnmarshal(&request); err != nil {
		msg = protocol.BadRequestParam(1)
		return
	}
	header := this.GetRequestHeader(this.Ctx)
	data, err := svr.ListUser(header, request)
	if err != nil {
		log.Error(err)
	}
	msg = protocol.NewReturnResponse(data, err)
}