package services

import (
	"errors"
	"hongze/hongze_web_mfyx/models"
)

// 我的日程 GetScheduleAndSpecilList
func GetScheduleAndSpecilList(user *models.WxUserItem, condition string, startSize, pageSize int) (items []*models.ActivityDetail, err error) {
	//var conditionSpecil string
	var pars []interface{}
	condition += ` AND my.user_id = ?`
	pars = append(pars, user.UserId)
	//conditionSpecil += ` AND my.user_id = ? AND my.is_cancel = 0 `
	//parsSpecil = append(parsSpecil, user.UserId)
	list, e := models.GetScheduleAndSpecilList(condition, pars, startSize, pageSize)
	if e != nil {
		err = errors.New("GetScheduleAndSpecilList, Err: " + e.Error())
		return
	}
	var activityIds []int
	var activitySpecilalIds []int
	for k, v := range list {
		if v.SourceType == 2 {
			activitySpecilalIds = append(activitySpecilalIds, v.ActivityId)
			//把专项调研的线下改为活动的线下类型
			if v.ActivityType == 2 {
				list[k].ActivityType = 0
			}
			list[k].IsShowSignup = true
		} else {
			activityIds = append(activityIds, v.ActivityId)
		}
	}
	//处理活动
	if len(activityIds) > 0 {
		//处理用户是否报名
		mapSignUp, e := GetActivitySignUpUserMap(activityIds, user)
		if e != nil {
			err = errors.New("GetActivitySignUpUserMap, Err: " + e.Error())
			return
		}
		for k, v := range list {
			if v.SourceType != 2 {
				if _, ok := mapSignUp[v.ActivityId]; ok {
					list[k].IsSignup = 1
				}
			}
		}
		//处理用户是否预约纪要
		mapAppointment, e := GetActivityAppointmentUserMap(activityIds, user)
		if e != nil {
			err = errors.New("GetActivityAppointmentUserMap, Err: " + e.Error())
			return
		}
		for k, v := range list {
			if v.SourceType != 2 {
				if _, ok := mapAppointment[v.ActivityId]; ok {
					list[k].IsAppointment = 1
				}
			}
		}
		//处理用户是否预约会议提醒
		mapReminder, e := GetActivityReminderUserMasp(activityIds, user)
		if e != nil {
			err = errors.New("GetActivityReminderUserMasp, Err: " + e.Error())
			return
		}
		for k, v := range list {
			if v.SourceType != 2 {
				if _, ok := mapReminder[v.ActivityId]; ok {
					list[k].IsCancelMeetingReminder = 1
				}
			}
		}
	}

	items = list
	return
}