using Edu.Model.ViewModel.System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using VT.FW.DB.Dapper;

namespace Edu.Repository.System
{
    /// <summary>
    /// 地区仓储层
    /// </summary>
    public class RB_DestinationRepository:BaseRepository<Model.Entity.System.RB_Destination>
    {

        /// <summary>
        /// 获取地区分页列表
        /// </summary>
        /// <param name="pageIndex"></param>
        /// <param name="pageSize"></param>
        /// <param name="where"></param>
        /// <param name="count"></param>
        /// <returns></returns>
        public List<RB_Destination_ViewModel> GetDestinationPageRepository(int pageIndex, int pageSize, RB_Destination_ViewModel where, out long count)
        {
            StringBuilder sb = new StringBuilder();
            sb.AppendFormat(" SELECT * FROM RB_Destination WHERE 1=1 ");
            sb.AppendFormat(" AND {0}={1} ", nameof(RB_Destination_ViewModel.Status), (int)Common.Enum.DateStateEnum.Normal);
            if (where != null)
            {
                if (where.Name != null && !string.IsNullOrEmpty(where.Name.Trim()))
                {
                    sb.AppendFormat(" AND {0} LIKE '%{1}%' ", nameof(RB_Destination_ViewModel.Name), where.Name.Trim());
                }
            }
            sb.AppendFormat(" ORDER BY {0} ASC ", nameof(RB_Destination_ViewModel.ID));
            return GetPage<RB_Destination_ViewModel>(pageIndex, pageSize, out count, sb.ToString()).ToList();
        }


        /// <summary>
        /// 获取所有的地区数据列表
        /// </summary>
        /// <returns></returns>
        public List<RB_Destination_ViewModel> GetDestinationListRepository(RB_Destination_ViewModel query)
        {
            StringBuilder sb = new StringBuilder();
            var parameters = new DynamicParameters();
            sb.AppendFormat("SELECT * FROM rb_destination WHERE 1=1 ");
            sb.AppendFormat(" AND {0}={1} ", nameof(RB_Destination_ViewModel.Status), (int)Common.Enum.DateStateEnum.Normal);
            if (query != null)
            {
                if (query.CodeLevel > 0)
                {
                    sb.AppendFormat(" AND {0}={1}", nameof(RB_Destination_ViewModel.CodeLevel),query.CodeLevel);
                }
                if (query.ParentID > 0)
                {
                    sb.AppendFormat(" AND {0}={1} ", nameof(RB_Destination_ViewModel.ParentID), query.ParentID);
                }
                if (!string.IsNullOrWhiteSpace(query.Name))
                {
                    sb.AppendFormat(" AND {0} LIKE @Name ", nameof(RB_Destination_ViewModel.Name));
                    parameters.Add("Name", "%" + query.Name.Trim() + "%");
                }
                if (!string.IsNullOrWhiteSpace(query.NameStr))
                {
                    sb.AppendFormat(" AND {0} in({1})", nameof(RB_Destination_ViewModel.Name), query.NameStr);
                }
                if (query.ID > 0)
                {
                    sb.AppendFormat(" AND {0} in({1})", nameof(RB_Destination_ViewModel.ID), query.ID);
                }
                if (!string.IsNullOrWhiteSpace(query.Ids))
                {
                    sb.AppendFormat(" AND {0} in({1})", nameof(RB_Destination_ViewModel.ID), query.Ids);
                }
            }
            return Get<RB_Destination_ViewModel>(sb.ToString(), parameters).ToList();
        }
    }
}