bool DeleteDeviceLocalSettings(Equipment equipment)
        {
            XDocument docs = XDocument.Load(@"ScalePrinterAssetsDB.xml");

            foreach (var item in docs.Descendants("Equipment"))
            {
                if (item.Element("Id").Value == equipment.Id.ToString())
                {
                    item.Remove();
                    docs.Save(@"ScalePrinterAssetsDB.xml");
                    return true;
                }
            }
            return false;
        }
 public async Task<ResponseBool> EquipmentAddAsync(Equipment equipment)
 {
     ResponseBool _response = new ResponseBool { Success = false, ErrorInfo = "" };
     string url = string.Format("api/distributorservices/equipmentadd");
     var httpClient = setupHttpClient();
     httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
     try
     {
         var response = await httpClient.PostAsJsonAsync(url, equipment);
         _response = await response.Content.ReadAsAsync<ResponseBool>();
     }
     catch (Exception ex)
     {
         _log.Error("Failed to update equipment.", ex);
     }
     return _response;
 }
 internal LocalEquipmentConfig LoadDeviceLocalConfigSettings(Equipment equipment)
  {
      var devices = from c in XElement.Load(@"ScalePrinterAssetsDB.xml").Elements("Equipment") select c;
      var scaleSettings = devices.FirstOrDefault(n => Guid.Parse(n.Element("Id").Value) == equipment.Id);
      if (scaleSettings != null)
      {
         return new LocalEquipmentConfig
                                          {
                                              Code = scaleSettings.Element("Code").Value,
                                              Name = scaleSettings.Element("Name").Value,
                                              Port = scaleSettings.Element("Port").Value,
                                              Parity = scaleSettings.Element("Parity").Value,
                                              EquipmentType = scaleSettings.Element("EquipmentType").Value,
                                              BaudRate = scaleSettings.Element("BaudRate").Value,
                                              DataBits = scaleSettings.Element("DataBits").Value,
                                              Model = scaleSettings.Element("Model").Value,
                                              Id = Guid.Parse(scaleSettings.Element("Id").Value)
                                          };
         
      }
     return null;
  }
        internal bool SaveDeviceLocalConfigSettings(Equipment equipment)
        {
            bool isUpdate = false;
            if (ValidateProperties())
            {

                XDocument docs = XDocument.Load(@"ScalePrinterAssetsDB.xml");
                foreach (var item in docs.Descendants("Equipment"))
                {
                    if (item.Element("Id").Value == equipment.Id.ToString())
                    {
                        isUpdate = true;
                        break;
                    }
                }

                if (!isUpdate)
                {
                    FileStream fs = new FileStream(@"ScalePrinterAssetsDB.xml", FileMode.Open, FileAccess.Read,
                                                   FileShare.ReadWrite);
                    XmlDocument xmlDoc = new XmlDocument();
                    xmlDoc.Load(fs);
                    fs.Close();

                    XmlElement newEquipment = xmlDoc.CreateElement("Equipment");

                    XmlElement code = xmlDoc.CreateElement("Code");
                    code.InnerText = equipment.Code;
                    newEquipment.AppendChild(code);

                    XmlElement name = xmlDoc.CreateElement("Name");
                    name.InnerText = equipment.Name;
                    newEquipment.AppendChild(name);

                    XmlElement parity = xmlDoc.CreateElement("Parity");
                    parity.InnerText = SelectedParityBitsOption.ToString();
                    newEquipment.AppendChild(parity);

                    XmlElement port = xmlDoc.CreateElement("Port");
                    port.InnerText = Port;
                    newEquipment.AppendChild(port);

                    XmlElement baudRate = xmlDoc.CreateElement("BaudRate");
                    baudRate.InnerText = SelectedBaudRateOption.ToString();
                    newEquipment.AppendChild(baudRate);

                    XmlElement databits = xmlDoc.CreateElement("DataBits");
                    databits.InnerText = SelectedDataBitsOption.ToString();
                    newEquipment.AppendChild(databits);

                    XmlElement equipmentType = xmlDoc.CreateElement("EquipmentType");
                    equipmentType.InnerText = equipment.EquipmentType.ToString();
                    newEquipment.AppendChild(equipmentType);

                    XmlElement model = xmlDoc.CreateElement("Model");
                    model.InnerText = equipment.Model;
                    newEquipment.AppendChild(model);

                    XmlElement Id = xmlDoc.CreateElement("Id");
                    Id.InnerText = equipment.Id.ToString();
                    newEquipment.AppendChild(Id);

                    xmlDoc.DocumentElement.InsertAfter(newEquipment, xmlDoc.DocumentElement.LastChild);

                    FileStream fsxml = new FileStream(@"ScalePrinterAssetsDB.xml", FileMode.Truncate, FileAccess.Write,
                                                      FileShare.ReadWrite);
                    xmlDoc.Save(fsxml);
                    fsxml.Close();
                    return true;
                }
                else
                {
                    foreach (var item in docs.Descendants("Equipment"))
                    {
                        item.Element("Code").SetValue(equipment.Code);
                        item.Element("Name").SetValue(equipment.Name);
                        item.Element("Parity").SetValue(SelectedParityBitsOption);
                        item.Element("BaudRate").SetValue(SelectedBaudRateOption);
                        item.Element("Port").SetValue(Port);
                        item.Element("DataBits").SetValue(SelectedDataBitsOption);
                        item.Element("EquipmentType").SetValue(equipment.EquipmentType);
                        item.Element("Model").SetValue(equipment.Model);
                        item.Element("Id").SetValue(equipment.Id);
                        docs.Save(@"ScalePrinterAssetsDB.xml");

                        return true;
                    }
                }
            }
            return false;
        }
        public HttpResponseMessage EquipmentAdd(Equipment equipment)
        {
            var response = new ResponseBool { Success = false };
            try
            {
                _equipmentRepository.Save(equipment);

                response.Success = true;
                response.ErrorInfo = string.Format("Equipment of type {0} successfully added.", equipment.EquipmentType.ToString());
            }
            catch (DomainValidationException dve)
            {
                string errorMsg = dve.ValidationResults.Results.Aggregate("Error: Invalid equipment fields.\n",
                                                                          (current, msg) =>
                                                                          current + ("\t- " + msg.ErrorMessage + "\n"));
                response.ErrorInfo = errorMsg;
                _log.Error(errorMsg, dve);
            }
            catch (Exception ex) //any other
            {
                response.ErrorInfo = "Error: An error occurred when saving the entity.\n" + ex.ToString();
                _log.Error("Error: An error occurred when saving the entity.", ex);
            }
            return Request.CreateResponse(HttpStatusCode.OK, response);
        }