using Epost.Common; using Epost.Model; using System; using System.Collections.Generic; using System.Configuration; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Web; using System.Xml.Linq; namespace Epost.DAL { public class LabelDAL { string path = System.Web.HttpContext.Current.Server.MapPath(ConfigurationManager.AppSettings["LabelXML"]); string nodename = "AddressStorage"; #region 新增标签 public bool CreateLabel(LabelModel model) { XElement xe = XElement.Load(path); IEnumerable elements = from ele in xe.Elements(nodename).Attributes().OrderByDescending(e => (string)e.Value) select ele; int maxNum = 0; if (elements.Any()) { maxNum = Convert.ToInt32(elements.First().Value == null ? 0 : Convert.ToInt32(elements.First().Value)); } XElement controlXE = new XElement(nodename, new XAttribute("name", maxNum + 1), new XElement("ControlIP", model.ControlIP), new XElement("LabelType", model.LabelType), new XElement("LabelAddress", model.LabelAddress)); xe.Add(controlXE); xe.Save(path); return true; } #endregion #region 修改标签信息 public bool UpdateLabel(LabelModel Model) { XElement xe = XElement.Load(path); IEnumerable elements = from ele in xe.Elements(nodename).Where(p => p.Attribute("name").Value.Equals(Model.LabelID)) select ele; foreach (var ele in elements) { if (ele.FirstAttribute.Value == Model.LabelID) { ele.Element("ControlIP").SetValue(Model.ControlIP); ele.Element("LabelType").SetValue(Model.LabelType); ele.Element("LabelAddress").SetValue(Model.LabelAddress); xe.Save(path); break; } } return true; } #endregion #region 删除标签 public bool DeleteLabel(LabelModel Model) { XElement xe = XElement.Load(path); IEnumerable elements = from ele in xe.Elements(nodename).Where(p => p.Attribute("name").Value.Equals(Model.LabelID)) select ele; foreach (var ele in elements) { if (ele.FirstAttribute.Value == Model.LabelID) { ele.Remove(); xe.Save(path); break; } } return true; } public bool DeleteLabelByAddress(string ControlIP,string LabelAddress) { XElement xe = XElement.Load(path); IEnumerable elements = from ele in xe.Elements(nodename).Where(p => p.Element("ControlIP").Value.Equals(ControlIP) && p.Element("LabelAddress").Value.Equals(LabelAddress)) select ele; foreach (var ele in elements) { if (ele.Element("ControlIP").Value.Equals(ControlIP) && ele.Element("LabelAddress").Value.Equals(LabelAddress)) { ele.Remove(); xe.Save(path); break; } } return true; } #endregion #region 标签列表 public List LabelList() { XElement xe = XElement.Load(path); IEnumerable elements = from ele in xe.Elements(nodename) select ele; List list = new List(); foreach (var ele in elements) { LabelModel model = new LabelModel(); string labeltype = ""; if (ele.Element("LabelType").Value == "2") { labeltype = "数字标签"; } else { labeltype = "中文标签"; } model.LabelAddress = ele.Element("LabelAddress").Value; model.LabelType = labeltype; model.ControlIP = ele.Element("ControlIP").Value; model.LabelID = ele.FirstAttribute.Value; list.Add(model); } return list; } public List BindLabelList() { XElement xe = XElement.Load(path); IEnumerable elements = from ele in xe.Elements(nodename) select ele; List list = new List(); foreach (var ele in elements) { LabelModel model = new LabelModel(); model.LabelAddress = ele.Element("LabelAddress").Value; model.LabelType = ele.Element("LabelType").Value; model.ControlIP = ele.Element("ControlIP").Value; model.LabelID = ele.FirstAttribute.Value; list.Add(model); } return list; } public List LabelListByIP(string ControlIP) { XElement xe = XElement.Load(path); IEnumerable elements = from ele in xe.Elements(nodename).Where(p => p.Element("ControlIP").Value.Equals(ControlIP)) select ele; List list = new List(); foreach (var ele in elements) { LabelModel model = new LabelModel(); model.LabelAddress = ele.Element("LabelAddress").Value; model.LabelType = ele.Element("LabelType").Value; model.ControlIP = ele.Element("ControlIP").Value; model.LabelID = ele.FirstAttribute.Value; list.Add(model); } return list; } #endregion #region 根据标签LabelID查询相关信息 public LabelModel GetLabelByLabelID(string LabelID) { XElement xe = XElement.Load(path); IEnumerable elements = from ele in xe.Elements(nodename).Where(p => p.Attribute("name").Value.Equals(LabelID)) select ele; LabelModel model = new LabelModel(); foreach (var ele in elements) { if (ele.FirstAttribute.Value == LabelID) { model.LabelAddress = ele.Element("LabelAddress").Value; model.LabelType = ele.Element("LabelType").Value; model.ControlIP = ele.Element("ControlIP").Value; break; } } return model; } #endregion #region 根据标签LabelID查询相关信息 public LabelModel updateLabel(string ControlIP,string LabelAddress) { XElement xe = XElement.Load(path); IEnumerable elements = from ele in xe.Elements(nodename).Where(p => p.Element("ControlIP").Value.Equals(ControlIP) && p.Element("LabelAddress").Equals(LabelAddress)) select ele; LabelModel model = new LabelModel(); foreach (var ele in elements) { if (ele.Element("ControlIP").Value.Equals(ControlIP) && ele.Element("LabelAddress").Value.Equals(LabelAddress)) { model.LabelAddress = ele.Element("LabelAddress").Value; model.LabelType = ele.Element("LabelType").Value; model.ControlIP = ele.Element("ControlIP").Value; break; } } return model; } #endregion } }