using CnasSynchronusClient;
using CnasSynchrousModel;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
namespace CNAS_Authorize
{
public class Machine
{
public string FactoryName { get; set; }
public string MachineCode { get; set; }
public string ImportTime { get; set; }
public bool IsGenerated { get; set; }
public Machine(string name, string code, string time, bool isGen)
{
FactoryName = name;
MachineCode = code;
ImportTime = time;
IsGenerated = isGen;
}
}
class MachineAuth
{
///
/// 所有数据行
///
private List m_machines;
///
/// 编码过滤
///
private string m_filter_code;
///
/// 名称过滤
///
private string m_filter_factory;
//以下都是过滤过的数据
///
/// 过滤过的数据
///
private List m_rangle;
///
/// 过滤过的当前页
///
private List m_page;
///
/// 每页数量
///
private int m_pageSize;
///
/// 页号
///
private int m_pageIndex;
///
/// 总页数
///
private int m_pageCount;
public MachineAuth()
{
m_pageSize = 10;
m_pageIndex = 1;
}
DataBaseInfo targetDataBase = new DataBaseInfo();
public void Load()
{
//加载CNAS数据库配置
targetDataBase = FileOperation.GetLocalCnasDB();
if (!CnasDataOperationFact.CnasDataOperation().TestConnect(targetDataBase))
{
MessageBox.Show("CNAS数据库无法正常连接...", "提示");
return;
}
m_machines = new List();
////1.加载数据
DataTable dtmacaddressinfo = CnasDataOperationFact.CnasDataOperation().GetTableData(targetDataBase, "select * from macaddress");
if (dtmacaddressinfo != null && dtmacaddressinfo.Rows.Count > 0)
{
List lstCnasTables = new List();
foreach (DataRow dr in dtmacaddressinfo.Rows)
{
Machine m = new Machine( dr["PLANTCODE"].ToString(), dr["MAC_ADDRESS"].ToString(), dr["CREATETIME"].ToString(), true);
m_machines.Add(m);
lstCnasTables.Add(dr["MAC_ADDRESS"].ToString());
}
}
m_rangle = new List();
m_rangle.AddRange(m_machines);
m_pageSize = 10;
m_pageIndex = 1;
m_pageCount = (m_rangle.Count / m_pageSize) + (m_rangle.Count % m_pageSize == 0 ? 0 : 1);
m_page = getPageData(m_pageIndex);
}
public int PageSize
{
get { return m_pageSize; }
set
{
m_pageSize = value;
updateView();
}
}
public string CurrentPage
{
get
{
return m_pageCount == 0 ? "" : string.Format("{0} / {1}", m_pageIndex, m_pageCount);
}
set
{
}
}
public int TotalCount
{
get
{
return m_machines == null ? 0 : m_machines.Count;
}
set
{
}
}
private void updateView()
{
List view = new List();
if (!string.IsNullOrEmpty(m_filter_code) || !string.IsNullOrEmpty(m_filter_factory))
{
foreach (Machine item in m_machines)
{
bool flag = true;
if (!string.IsNullOrEmpty(m_filter_code))
{
if (item.MachineCode.IndexOf(m_filter_code) == -1)
{
flag = false;
}
}
if (!string.IsNullOrEmpty(m_filter_factory))
{
if (item.FactoryName.IndexOf(m_filter_factory) == -1)
{
flag = false;
}
}
if (flag)
{
view.Add(item);
}
}
}
else
{
view.AddRange(m_machines);
}
m_rangle = view;
m_pageIndex = 1;
m_pageCount = (m_rangle.Count / m_pageSize) + (m_rangle.Count % m_pageSize == 0 ? 0 : 1);
m_page = getPageData(m_pageIndex);
}
public void ChangeFilter(string code, string factory)
{
this.m_filter_code = code;
this.m_filter_factory = factory;
updateView();
}
public List Page
{
get
{
return m_page;
}
}
private List getPageData(int pageIndex)
{
int index = (pageIndex - 1) * m_pageSize;
List page = new List(m_pageSize);
for (int i = 0; i < m_pageSize && index < m_rangle.Count; i++)
{
page.Add(m_rangle[index]);
index++;
}
return page;
}
public List NextPage(out bool ok)
{
int index = m_pageIndex * m_pageSize;
if (m_rangle == null || index >= m_rangle.Count)
{
ok = false;
return null;
}
m_pageIndex++;
m_page = getPageData(m_pageIndex);
ok = true;
return m_page;
}
public List PrevPage(out bool ok)
{
if (m_pageIndex == 1 || m_rangle == null)
{
ok = false;
return null;
}
m_pageIndex--;
m_page = getPageData(m_pageIndex);
ok = true;
return m_page;
}
}
}