public IHttpActionResult Import([FromBody] BindingModels.FileUpload xmlFile) { var result = _xmlMigrationManager.ImportXml(xmlFile); return(Ok($"Total inserted Customers: {result.CustomersCount} , Total inserted Orders: {result.OrdersCount}")); }
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 }); }