/*
'' ============================================================================================
'' 项目名称：{fyp_title}
'' 项目版本：{fyp_version}
'' 项目描述：{fyp_description}
'' 文件名称：BLL_{table_source_name}.cs
'' 文件描述：业务逻辑层 {table_source_name}{value_match_check value1="{table_description}" value2="" extend_match="unequal"} （{table_description}）{/value_match_check}
'' 公司名称：{fyp_company}
'' 开发人员：{fyp_designer}
'' 创建日期：{fyp_created_date}
'' 修订日期：{system_date_time format="yyyy-MM-dd hh:mm:ss"}
'' 版权信息：{fyp_copyright}

'' 项目升级时需读取以下生成工具的版权信息
'' 生成工具：{fysoft_name}
'' 当前版本：{fysoft_version}
'' 官方网站：{fysoft_website}
'' ============================================================================================
*/

using System;
using System.Data;
using System.Collections.Generic;
using {fyp_namespace}.Model;
using {fyp_namespace}.DAL;
using FypSystem.Common;

namespace {fyp_namespace}.BLL
{
    /// <summary>
    ///  {table_source_name}{value_match_check value1="{table_description}" value2="" extend_match="unequal"} （{table_description}）{/value_match_check} 业务逻辑层
    /// </summary>
    public class BLL_{table_source_name}
    {
        private readonly {fyp_namespace}.DAL.DAL_{table_source_name} dal_{table_source_name} = new {fyp_namespace}.DAL.DAL_{table_source_name}();
        public BLL_{table_source_name}()
        {
        }

        #region 记录是否存在
        /// <summary>
        /// 记录是否存在
        /// </summary>{fields_loop type="3" separator=", "}
        /// <param name="{field_source_name}">{field_caption translate="auto"}</param>{/fields_loop}
        /// <returns></returns>
        public bool Exists({fields_loop type="3" separator=", "}{field_code_datatype_name code="cs" type="3" compatible="false"}{value_match_check value1='{field_code_datatype_name code="cs" type="3" compatible="false"}' value2="string|byte[]" extend_match="notin2"}?{/value_match_check} {field_source_name}{/fields_loop})
        {
            return dal_{table_source_name}.Exists({fields_loop type="3" separator=", "}{field_source_name}{/fields_loop});
        }
        #endregion

        #region 添加数据
        /// <summary>
        /// 添加数据
        /// </summary>
        /// <param name="model">{table_source_name}实体对象</param>
        public void Add({fyp_namespace}.Model.Model_{table_source_name} model)
        {
            dal_{table_source_name}.Add(model);
        }
        #endregion

        #region 更新数据
        /// <summary>
        /// 更新数据
        /// </summary>
        /// <param name="model">{table_source_name}实体对象</param>
        public void Update({fyp_namespace}.Model.Model_{table_source_name} model)
        {
            dal_{table_source_name}.Update(model);
        }
        #endregion

        #region 删除
        /// <summary>
        /// 删除
        /// </summary>{fields_loop type="3" separator=", "}
        /// <param name="{field_source_name}">{field_caption translate="auto"}</param>{/fields_loop}
        public void Delete({fields_loop type="3" separator=", "}{field_code_datatype_name code="cs" type="3" compatible="false"}{value_match_check value1='{field_code_datatype_name code="cs" type="3" compatible="false"}' value2="string|byte[]" extend_match="notin2"}?{/value_match_check} {field_source_name}{/fields_loop})
        {
            dal_{table_source_name}.Delete({fields_loop type="3" separator=", "}{field_source_name}{/fields_loop});
        }
        #endregion

        #region 获取对象实体
        /// <summary>
        /// 获取对象实体
        /// </summary>{fields_loop type="3" separator=", "}
        /// <param name="{field_source_name}">{field_caption translate="auto"}</param>{/fields_loop}
        /// <returns></returns>
        public Model_{table_source_name} GetModel({fields_loop type="3" separator=", "}{field_code_datatype_name code="cs" type="3" compatible="false"}{value_match_check value1='{field_code_datatype_name code="cs" type="3" compatible="false"}' value2="string|byte[]" extend_match="notin2"}?{/value_match_check} {field_source_name}{/fields_loop})
        {
            return dal_{table_source_name}.GetModel({fields_loop type="3" separator=", "}{field_source_name}{/fields_loop});
        }
        #endregion

        #region 获取数据列表 DataSet
        /// <summary>
        /// 获取数据列表 DataSet
        /// </summary>
        /// <param name="strWhere">指定查询条件的SQL语句，不包含where</param>
        /// <returns></returns>
        public DataSet GetDataSet(string strWhere)
        {
            return dal_{table_source_name}.GetDataSet(strWhere);
        }

		/// <summary>
		/// 获取全部数据列表 DataSet
		/// </summary>
		public DataSet GetDataSet()
		{
			return GetDataSet("");
		}
        #endregion

        #region 获取数据列表 DataTable
        /// <summary>
        /// 获取数据列表 DataTable
        /// </summary>
        /// <param name="strWhere">指定查询条件的SQL语句，不包含where</param>
        /// <returns></returns>
        public DataTable GetDataTable(string strWhere)
        {
            return dal_{table_source_name}.GetDataTable(strWhere);
        }

        /// <summary>
        /// 获取数据列表 DataTable
        /// </summary>
        /// <param name="strWhere">指定查询条件的SQL语句，不包含where</param>
        /// <param name="strOrder">排序字段，如id desc，不包含order by</param>
        /// <returns></returns>
        public DataTable GetDataTable(string strWhere, string strOrder)
        {
            return dal_{table_source_name}.GetDataTable(strWhere, strOrder);
        }

		/// <summary>
		/// 获取全部数据列表 DataTable
		/// </summary>
		public DataTable GetDataTable()
		{
			return GetDataTable("");
		}
        #endregion

        #region 获取数据列表 Model List
        /// <summary>
        /// 获取数据列表 Model List
        /// </summary>
        /// <param name="strWhere">查询条件的SQL语句，不包含where</param>
        /// <returns></returns>
        public List<{fyp_namespace}.Model.Model_{table_source_name}> GetModelList(string strWhere)
        {
            DataSet ds = dal_{table_source_name}.GetDataSet(strWhere);
            List<{fyp_namespace}.Model.Model_{table_source_name}> modelList = new List<{fyp_namespace}.Model.Model_{table_source_name}>();
            int iRowsCount = ds.Tables[0].Rows.Count;
            if (iRowsCount > 0)
            {
                {fyp_namespace}.Model.Model_{table_source_name} model;
                for (int i = 0; i < iRowsCount; i++)
                {
                    model = new {fyp_namespace}.Model.Model_{table_source_name}();
                    DataRow dr = ds.Tables[0].Rows[i];

                    {fields_loop type="-1"}
                    {value_match_check value1="{field_code_datatype_name type='3' compatible='false'}" value2="string" extend_match="equal"} 
                    model.{field_variable} = dr["{field_name}"].ToString();
                    {/value_match_check}

                    {value_match_check value1="{field_code_datatype_name type='3' compatible='false'}" value2="string|byte[]" extend_match="notin2"} 
                    if (dr["{field_name}"].ToString().Length > 0)
                    {
                        model.{field_variable} = {field_code_datatype_name type='3' compatible='false'}.Parse(dr["{field_name}"].ToString());
                    }
                    {/value_match_check}

                    {value_match_check value1="{field_code_datatype_name type='3' compatible='false'}" value2="byte[]" extend_match="equal"} 
                    if (dr["{field_name}"].ToString().Length > 0)
                    {
                        model.{field_variable} = (byte[])dr["{field_name}"];
                    }
                    {/value_match_check}
                    {/fields_loop}
                    modelList.Add(model);
                }
            }
            return modelList;
        }
        #endregion
    }
}