package models

import (
	"time"
	"github.com/astaxie/beego/orm"
)

type MemberRelationshipResult struct {
	MemberId int		`json:"member_id"`
	Account string 		`json:"account"`
	Description string	`json:"description"`
	Email string 		`json:"email"`
	Phone string 		`json:"phone"`
	Avatar string 		`json:"avatar"`
	Role int		`json:"role"`	//用户角色:0 管理员/ 1 普通用户
	Status int 		`json:"status"`	//用户状态:0 正常/1 禁用
	CreateTime time.Time	`json:"create_time"`
	CreateAt int		`json:"create_at"`
	RelationshipId int      `json:"relationship_id"`
	BookId int		`json:"book_id"`
	// RoleId 角色:0 创始人(创始人不能被移除) / 1 管理员/2 编辑者/3 观察者
	RoleId int		`json:"role_id"`
}

func NewMemberRelationshipResult() *MemberRelationshipResult {
	return &MemberRelationshipResult{}
}

func (m *MemberRelationshipResult) FindForUsersByBookId(book_id ,pageIndex, pageSize int) ([]MemberRelationshipResult,int,error) {
	o := orm.NewOrm()

	var members []MemberRelationshipResult

	sql1 := "SELECT * FROM md_relationship AS rel LEFT JOIN md_members as member ON rel.member_id = member.member_id WHERE rel.book_id = ? ORDER BY rel.relationship_id DESC  LIMIT ?,?"

	sql2 := "SELECT count(*) AS total_count FROM md_relationship AS rel LEFT JOIN md_members as member ON rel.member_id = member.member_id WHERE rel.book_id = ?"

	var total_count int

	err := o.Raw(sql2,book_id).QueryRow(&total_count)

	if err != nil {
		return members,0,err
	}

	offset := (pageIndex-1) * pageSize

	_,err = o.Raw(sql1,book_id,offset,pageSize).QueryRows(&members)

	if err != nil {
		return members,0,err
	}

	return members,total_count,nil
}