using Edu.Model.Entity.Mall;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Edu.Repository.Mall
{
    /// <summary>
    /// 问卷调查仓储层
    /// </summary>
    public class RB_ActivitySurveyRepository : BaseRepository<RB_ActivitySurvey>
    {
        /// <summary>
        /// 表名称
        /// </summary>
        public string TableName { get { return nameof(RB_ActivitySurvey); } }

        /// <summary>
        /// 获取问卷调查列表
        /// </summary>
        /// <param name="where"></param>
        /// <param name="StuAccountId"></param>
        /// <returns></returns>
        public List<RB_ActivitySurvey> GetActivitySurveyListRepository(RB_ActivitySurvey where,string StuAccountId)
        {
            string dateStr = Common.ConvertHelper.FormatTime(DateTime.Now);
            StringBuilder sb = new StringBuilder();
            sb.AppendFormat(@"
SELECT A.*,(SELECT Id FROM RB_ActivitySurvey_Guest WHERE GuestType=2 AND IsFinish=0 AND SurveyId=A.ID  AND StartTime<='{0}' AND '{0}'<=EndTime AND GuestId={1} LIMIT 1) AS ActivitySurveyGuestId
FROM RB_ActivitySurvey AS A 
WHERE A.State=0 ", dateStr, StuAccountId);

            sb.AppendFormat(" AND A.StartDate<='{0}' AND '{0}'<= A.EndDate ", dateStr);
            if (!string.IsNullOrEmpty(StuAccountId))
            {
                //sb.AppendFormat(" AND NOT EXISTS(SELECT 1 FROM rb_guestsurvey WHERE UserType=2 AND ActivitySurveyId=A.ID AND UserId={0}) ", StuAccountId);
                sb.AppendFormat(" AND EXISTS(SELECT 1 FROM RB_ActivitySurvey_Guest WHERE GuestType=2 AND IsFinish=0 AND SurveyId=A.ID AND GuestId={0} AND StartTime<='{1}' AND '{1}'<=EndTime )", StuAccountId, dateStr);
            }
            if (where != null)
            {
                if (where.TenantId > 0)
                {
                    sb.AppendFormat(" AND A.TenantId={0}", where.TenantId);
                }
                if (where.MallBaseId > 0)
                {
                    sb.AppendFormat(" AND A.MallBaseId={0}", where.MallBaseId);
                }
            }
            return Get<RB_ActivitySurvey>(sb.ToString()).ToList();
        }
    }
}