Пример #1
0
        public IHttpActionResult Import([FromBody] BindingModels.FileUpload xmlFile)
        {
            var result = _xmlMigrationManager.ImportXml(xmlFile);

            return(Ok($"Total inserted Customers: {result.CustomersCount} , Total inserted Orders: {result.OrdersCount}"));
        }
Пример #2
0
        public ViewModels.ImportedXmlRecords ImportXml(BindingModels.FileUpload xmlFile)
        {
            if (xmlFile == null)
            {
                throw new ArgumentNullException(nameof(xmlFile));
            }

            if (xmlFile.FileBase64 == string.Empty)
            {
                throw new Exception("Cannot accept an empty file.");
            }

            XmlModels.Customers customers;
            XmlModels.Orders    orders;
            byte[] toDecodeByte = Convert.FromBase64String(xmlFile.FileBase64);

            using (var stream = new MemoryStream(toDecodeByte))
            {
                using (XmlReader reader = XmlReader.Create(stream))
                {
                    XmlSerializer serializer          = new XmlSerializer(typeof(XmlModels.Root));
                    var           deserializedXmlRoot = (XmlModels.Root)serializer.Deserialize(reader);
                    customers = deserializedXmlRoot.Customers;
                    orders    = deserializedXmlRoot.Orders;

                    //check if has data
                    if (customers == null && orders == null)
                    {
                        throw new Exception("No Customers nor Orders XML data found.");
                    }
                }
            }

            //using (StreamReader reader = new StreamReader("Customers-Orders.xml"))
            //{
            //    XmlSerializer serializer = new XmlSerializer(typeof(XmlModels.Root));
            //    var deserializedXmlRoot = (XmlModels.Root)serializer.Deserialize(reader);
            //    customers = deserializedXmlRoot.Customers;
            //    orders = deserializedXmlRoot.Orders;

            //    //check if has data
            //    if (customers == null && orders == null) throw new Exception("No Customers nor Orders XML data found.");
            //}

            //using (TextReader reader = new StringReader(xmlData))
            //{
            //    XmlSerializer serializer = new XmlSerializer(typeof(XmlModels.Root));
            //    var deserializedXmlRoot = (XmlModels.Root)serializer.Deserialize(reader);
            //    customers = deserializedXmlRoot.Customers;
            //    orders = deserializedXmlRoot.Orders;

            //    //check if has data
            //    if (customers == null && orders == null) throw new Exception("No Customers nor Orders XML data found.");
            //}

            var insertedCustomers = InsertXmlCustomers(customers.Customer);
            var insertedOrders    = InsertXmlOrders(orders.Order);

            return(new ViewModels.ImportedXmlRecords {
                CustomersCount = insertedCustomers, OrdersCount = insertedOrders
            });
        }