public static string Serialize(this TaxTransfer input) { var output = new StringBuilder(); output.Append($"{input.ShopifyOrderId}"); input.ShopifyRefundIds.ForEach(x => output.Append($"{SerializationDelimter}{x.ToString()}")); output.Append(Environment.NewLine); output.Append($"{input.NetTaxableFreight:0.0000}{SerializationDelimter}" + $"{input.NetFreightTax:0.0000}{SerializationDelimter}" + $"{input.NetTaxableAmount:0.0000}{SerializationDelimter}" + $"{input.NetTotalTax:0.0000}"); output.Append(Environment.NewLine); output.Append($"{FreightSymbol}{SerializationDelimter}{input.FreightTaxLines.Serialize()}"); output.Append(Environment.NewLine); foreach (var line in input.LineItems) { output.Append($"{line.ItemID}{SerializationDelimter}{line.TaxLines.Serialize()}"); output.Append(Environment.NewLine); } return(output.ToString()); }
public static TaxTransfer DeserializeTaxSnapshot(this string input) { var output = new TaxTransfer(); var lines = input.Split(new [] { Environment.NewLine }, StringSplitOptions.None); var firstLineRaw = lines[0].SplitByDelimiter(); output.ShopifyOrderId = firstLineRaw[0].ToLong(); output.ShopifyRefundIds = firstLineRaw.Skip(1).Select(x => x.ToLong()).ToList(); var secondLineRaw = lines[1].SplitByDelimiter(); output.NetTaxableFreight = secondLineRaw[0].ToDecimal(); output.NetFreightTax = secondLineRaw[1].ToDecimal(); output.NetTaxableAmount = secondLineRaw[2].ToDecimal(); output.NetTotalTax = secondLineRaw[3].ToDecimal(); var thirdLineRaw = lines[2].SplitByDelimiter(); output.FreightTaxLines = thirdLineRaw.Skip(1).ToList().DeserializeSnapshotTaxLines(); output.LineItems = new List <TaxTransferLineItem>(); foreach (var lineRaw in lines.Skip(3).Select(x => x.SplitByDelimiter())) { if (lineRaw[0] == String.Empty) { break; } var lineItem = new TaxTransferLineItem(); lineItem.ItemID = lineRaw[0]; lineItem.TaxLines = lineRaw.Skip(1).ToList().DeserializeSnapshotTaxLines(); output.LineItems.Add(lineItem); } return(output); }