package dto

import (
	"go-admin/app/operate/models"
	"go-admin/common/dto"
	common "go-admin/common/models"
	"time"
)

type OrgMatchTeamPlayerGetPageReq struct {
	dto.Pagination `search:"-"`
	TeamId         string `form:"teamId"  search:"type:exact;column:team_id;table:org_match_team_player" comment:""`
	MatchId        string `form:"matchId"  search:"type:exact;column:match_id;table:org_match_team_player" comment:""`
	Rounds         string `form:"rounds"  search:"type:exact;column:rounds;table:org_match_team_player" comment:""`
}
type UpdateOrgMatchTeamPlayerReq struct {
	MatchId     string `json:"matchId"`
	Rounds      string `json:"rounds"`
	OtherTeamId string `json:"otherTeamId"`
	PlayersIds  string `json:"playersIds"`
}

type OrgMatchTeamPlayerOrder struct {
	Id             int       `form:"idOrder"  search:"type:order;column:id;table:org_match_team_player"`
	MatchId        string    `form:"matchIdOrder"  search:"type:order;column:match_id;table:org_match_team_player"`
	ClubId         string    `form:"clubIdOrder"  search:"type:order;column:club_id;table:org_match_team_player"`
	TeamId         string    `form:"teamIdOrder"  search:"type:order;column:team_id;table:org_match_team_player"`
	PlayerId       string    `form:"playerIdOrder"  search:"type:order;column:player_id;table:org_match_team_player"`
	PlayerName     string    `form:"playerNameOrder"  search:"type:order;column:player_name;table:org_match_team_player"`
	PlayerNumber   string    `form:"playerNumberOrder"  search:"type:order;column:player_number;table:org_match_team_player"`
	Position       string    `form:"positionOrder"  search:"type:order;column:position;table:org_match_team_player"`
	Scoring        string    `form:"scoringOrder"  search:"type:order;column:scoring;table:org_match_team_player"`
	Rebound        string    `form:"reboundOrder"  search:"type:order;column:rebound;table:org_match_team_player"`
	Assist         string    `form:"assistOrder"  search:"type:order;column:assist;table:org_match_team_player"`
	Steal          string    `form:"stealOrder"  search:"type:order;column:steal;table:org_match_team_player"`
	FreeThrow      string    `form:"freeThrowOrder"  search:"type:order;column:free_throw;table:org_match_team_player"`
	BlockShot      string    `form:"blockShotOrder"  search:"type:order;column:block_shot;table:org_match_team_player"`
	Foul           string    `form:"foulOrder"  search:"type:order;column:foul;table:org_match_team_player"`
	TwoPointShot   string    `form:"twoPointShotOrder"  search:"type:order;column:two_point_shot;table:org_match_team_player"`
	ThreePointShot string    `form:"threePointShotOrder"  search:"type:order;column:three_point_shot;table:org_match_team_player"`
	CreateBy       string    `form:"createByOrder"  search:"type:order;column:create_by;table:org_match_team_player"`
	UpdateBy       string    `form:"updateByOrder"  search:"type:order;column:update_by;table:org_match_team_player"`
	CreatedAt      time.Time `form:"createdAtOrder"  search:"type:order;column:created_at;table:org_match_team_player"`
	UpdatedAt      time.Time `form:"updatedAtOrder"  search:"type:order;column:updated_at;table:org_match_team_player"`
	DeletedAt      time.Time `form:"deletedAtOrder"  search:"type:order;column:deleted_at;table:org_match_team_player"`
}

func (m *OrgMatchTeamPlayerGetPageReq) GetNeedSearch() interface{} {
	return *m
}

type OrgMatchTeamPlayerInsertReq struct {
	Id             int    `json:"-" comment:""` //
	MatchId        string `json:"matchId" comment:""`
	Rounds         string `json:"rounds" comment:""`
	ClubId         string `json:"clubId" comment:""`
	TeamId         string `json:"teamId" comment:""`
	OtherTeamId    string `json:"otherTeamId" comment:""`
	PlayerId       string `json:"playerId" comment:""`
	PlayerName     string `json:"playerName" comment:"球员名称"`
	PlayerNumber   string `json:"playerNumber" comment:"球员号码"`
	Position       string `json:"position" comment:"场上位置"`
	Scoring        string `json:"scoring" comment:"得分"`
	Rebound        string `json:"rebound" comment:"篮板"`
	Assist         string `json:"assist" comment:"助攻"`
	Steal          string `json:"steal" comment:"抢断"`
	FreeThrow      string `json:"freeThrow" comment:"罚球"`
	BlockShot      string `json:"blockShot" comment:"盖帽"`
	Foul           string `json:"foul" comment:"犯规"`
	TwoPointShot   string `json:"twoPointShot" comment:"2分进球数量"`
	ThreePointShot string `json:"threePointShot" comment:"3分进球数量"`
	common.ControlBy
}

func (s *OrgMatchTeamPlayerInsertReq) Generate(model *models.OrgMatchTeamPlayer) {
	if s.Id == 0 {
		model.Model = common.Model{Id: s.Id}
	}
	model.MatchId = s.MatchId
	model.Rounds = s.Rounds
	model.ClubId = s.ClubId
	model.TeamId = s.TeamId
	model.OtherTeamId = s.OtherTeamId
	model.PlayerId = s.PlayerId
	model.PlayerName = s.PlayerName
	model.PlayerNumber = s.PlayerNumber
	model.Position = s.Position
	model.Scoring = s.Scoring
	model.Rebound = s.Rebound
	model.Assist = s.Assist
	model.Steal = s.Steal
	model.FreeThrow = s.FreeThrow
	model.BlockShot = s.BlockShot
	model.Foul = s.Foul
	model.TwoPointShot = s.TwoPointShot
	model.ThreePointShot = s.ThreePointShot
}

func (s *OrgMatchTeamPlayerInsertReq) GetId() interface{} {
	return s.Id
}

type OrgMatchTeamPlayerUpdateReq struct {
	Id             int    `uri:"id" comment:""` //
	MatchId        string `json:"matchId" comment:""`
	Rounds         string `json:"rounds" comment:""`
	ClubId         string `json:"clubId" comment:""`
	TeamId         string `json:"teamId" comment:""`
	OtherTeamId    string `json:"otherTeamId" comment:""`
	PlayerId       string `json:"playerId" comment:""`
	PlayerName     string `json:"playerName" comment:"球员名称"`
	PlayerNumber   string `json:"playerNumber" comment:"球员号码"`
	Position       string `json:"position" comment:"场上位置"`
	Scoring        string `json:"scoring" comment:"得分"`
	Rebound        string `json:"rebound" comment:"篮板"`
	Assist         string `json:"assist" comment:"助攻"`
	Steal          string `json:"steal" comment:"抢断"`
	FreeThrow      string `json:"freeThrow" comment:"罚球"`
	BlockShot      string `json:"blockShot" comment:"盖帽"`
	Foul           string `json:"foul" comment:"犯规"`
	TwoPointShot   string `json:"twoPointShot" comment:"2分进球数量"`
	ThreePointShot string `json:"threePointShot" comment:"3分进球数量"`
	common.ControlBy
}

func (s *OrgMatchTeamPlayerUpdateReq) Generate(model *models.OrgMatchTeamPlayer) {
	if s.Id == 0 {
		model.Model = common.Model{Id: s.Id}
	}
	model.MatchId = s.MatchId
	model.Rounds = s.Rounds
	model.ClubId = s.ClubId
	model.TeamId = s.TeamId
	model.OtherTeamId = s.OtherTeamId
	model.PlayerId = s.PlayerId
	model.PlayerName = s.PlayerName
	model.PlayerNumber = s.PlayerNumber
	model.Position = s.Position
	model.Scoring = s.Scoring
	model.Rebound = s.Rebound
	model.Assist = s.Assist
	model.Steal = s.Steal
	model.FreeThrow = s.FreeThrow
	model.BlockShot = s.BlockShot
	model.Foul = s.Foul
	model.TwoPointShot = s.TwoPointShot
	model.ThreePointShot = s.ThreePointShot
}

func (s *OrgMatchTeamPlayerUpdateReq) GetId() interface{} {
	return s.Id
}

// OrgMatchTeamPlayerGetReq 功能获取请求参数
type OrgMatchTeamPlayerGetReq struct {
	Id int `uri:"id"`
}

func (s *OrgMatchTeamPlayerGetReq) GetId() interface{} {
	return s.Id
}

// OrgMatchTeamPlayerDeleteReq 功能删除请求参数
type OrgMatchTeamPlayerDeleteReq struct {
	MatchId string `json:"matchId"`
	Rounds  string `json:"rounds"`
	TeamId  string `json:"teamId"`
	Ids     string `json:"ids"`
}

func (s *OrgMatchTeamPlayerDeleteReq) GetId() interface{} {
	return s.Ids
}
