public AddressMetaData GetAddress(string ID)
        {
            AddressMetaData address = new AddressMetaData();
            XDocument       xmlDoc  = XDocument.Load(xmlData);


            var items = (from item in xmlDoc.Descendants("address")
                         where item.Element("ID").Value == ID
                         select item).ToList();


            foreach (XElement item in items)
            {
                address            = new AddressMetaData();
                address.ID         = int.Parse(item.Element("ID").Value);
                address.CityID     = int.Parse(item.Element("CityID").Value);
                address.City       = GetCity(int.Parse(item.Element("CityID").Value));
                address.CustomerID = int.Parse(item.Element("customerID").Value);
                address.Title      = item.Element("Title").Value;
                address.Street     = item.Element("Street").Value;
                address.PLZ        = item.Element("PLZ").Value;
            }



            return(address);
        }
        public List <AddressMetaData> GetAddresses(int CustomerID)
        {
            CustomerMetaData customer = new CustomerMetaData();
            XDocument        xmlDoc   = XDocument.Load(xmlData);

            var XMLAddresses = (from item in xmlDoc.Descendants("address")
                                where item.Element("customerID").Value == CustomerID.ToString()
                                select item).ToList();

            List <AddressMetaData> lstAddresses = new List <AddressMetaData>();
            AddressMetaData        address;

            foreach (var item in XMLAddresses)
            {
                address            = new AddressMetaData();
                address.ID         = int.Parse(item.Element("ID").Value);
                address.CityID     = int.Parse(item.Element("CityID").Value);
                address.City       = GetCity(int.Parse(item.Element("CityID").Value));
                address.CustomerID = CustomerID;
                address.Title      = item.Element("Title").Value;
                address.Street     = item.Element("Street").Value;
                address.PLZ        = item.Element("PLZ").Value;
                lstAddresses.Add(address);
            }
            return(lstAddresses);
        }
        public void AddAddress(AddressMetaData _address)
        {
            XDocument       xmlDoc  = XDocument.Load(xmlData);
            AddressMetaData address = new AddressMetaData();


            var items = (from item in xmlDoc.Descendants("customer")
                         where item.Element("ID").Value == _address.CustomerID.ToString()
                         select item).ToList();



            XElement NewAddresses = new XElement("Addresses");
            XElement innerNode    = new XElement("address");
            XElement newNode;


            NewAddresses.Add(innerNode);

            newNode       = new XElement("ID");
            newNode.Value = GetNextAddressID().ToString();
            innerNode.Add(newNode);

            newNode       = new XElement("customerID");
            newNode.Value = _address.CustomerID.ToString();
            innerNode.Add(newNode);

            newNode       = new XElement("Title");
            newNode.Value = _address.Title;
            innerNode.Add(newNode);


            newNode       = new XElement("Street");
            newNode.Value = _address.Street;
            innerNode.Add(newNode);

            newNode       = new XElement("PLZ");
            newNode.Value = _address.PLZ;
            innerNode.Add(newNode);

            newNode       = new XElement("CityID");
            newNode.Value = _address.CityID.ToString();
            innerNode.Add(newNode);


            items[0].Add(NewAddresses);



            xmlDoc.Save(xmlData);
        }
        public ActionResult Edit(AddressMetaData address)
        {
            XMLTransactions xMLTransactions = new XMLTransactions();

            if (ModelState.IsValid)
            {
                xMLTransactions.EditAddress(address);

                return(RedirectToAction(actionName: "Details", controllerName: "Customers", routeValues: new { id = address.CustomerID }));
            }
            ViewBag.CityID     = new SelectList(xMLTransactions.GetCities(), "ID", "CityName", address.CityID);
            ViewBag.CustomerID = address.CustomerID;
            return(View(address));
        }
        // GET: Addresses/Delete/5
        public ActionResult Delete(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            XMLTransactions xMLTransactions = new XMLTransactions();
            AddressMetaData address         = xMLTransactions.GetAddress(id.ToString());

            if (address == null)
            {
                return(HttpNotFound());
            }
            return(View(address));
        }
        // GET: Addresses/Edit/5
        public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            XMLTransactions xMLTransactions = new XMLTransactions();
            AddressMetaData address         = xMLTransactions.GetAddress(id.ToString());

            if (address == null)
            {
                return(HttpNotFound());
            }
            ViewBag.CityID     = new SelectList(xMLTransactions.GetCities(), "ID", "CityName", address.CityID);
            ViewBag.CustomerID = address.CustomerID;
            ViewBag.ID         = address.ID;
            return(View(address));
        }
        public void EditAddress(AddressMetaData address)
        {
            XDocument xmlDoc = XDocument.Load(xmlData);
            //var root = (from item in xmlDoc.Descendants("Customers")

            //            select item).ToList();

            var items = (from item in xmlDoc.Descendants("address")
                         where item.Element("ID").Value == address.ID.ToString()
                         select item).ToList();

            foreach (XElement itemElement in items)
            {
                itemElement.SetElementValue("ID", address.ID);
                itemElement.SetElementValue("CustomerID", address.CustomerID);
                itemElement.SetElementValue("Title", address.Title);
                itemElement.SetElementValue("Street", address.Street);
                itemElement.SetElementValue("PLZ", address.PLZ);
                itemElement.SetElementValue("CityID", address.CityID);
            }

            xmlDoc.Save(xmlData);
        }