diff --git a/source/Plugins/AyaNova.Plugin.V8/V8.cs b/source/Plugins/AyaNova.Plugin.V8/V8.cs index 2f6361d..d196c14 100644 --- a/source/Plugins/AyaNova.Plugin.V8/V8.cs +++ b/source/Plugins/AyaNova.Plugin.V8/V8.cs @@ -199,6 +199,15 @@ namespace AyaNova.PlugIn.V8 return V7ToV8IdMap[id]; } + private long? Getv7v8IdMapNullOk(Guid id) + { + if (id == Guid.Empty) return null; + + if (!V7ToV8IdMap.ContainsKey(id)) return null; + + return V7ToV8IdMap[id]; + } + private long SafeGetUserMap(Guid id) { @@ -1587,7 +1596,7 @@ namespace AyaNova.PlugIn.V8 //Step 2: export the objects UnitPickList pl = UnitPickList.GetListOfAll(); - progress.Append("Exporting " + pl.Count.ToString() + " " + ObjectTypeName + "s"); + progress.Append("Exporting " + pl.Count.ToString() + " " + ObjectTypeName + "s (step 1/2)"); foreach (UnitPickList.UnitPickListInfo i in pl) { @@ -1599,12 +1608,44 @@ namespace AyaNova.PlugIn.V8 var ObjectTID = new TypeAndID(RootObjectTypes.Unit, c.ID); dynamic d = new JObject(); - d.name = GetUniqueName(c.Serial); + d.Serial = c.Serial; if (IsDuplicatev7v8IdMapItem(c.ID, c.Serial, progress)) continue; progress.Op(ObjectTypeName + " " + d.name); d.active = c.Active; d.notes = c.Notes; - // Tagit(c.RegionID, tags); + d.customerId = Getv7v8IdMap(c.ClientID, "Client for Unit " + d.name); + // d.parentUnitId = Getv7v8IdMapNullOk(c.ParentID); + d.unitModelId = Getv7v8IdMapNullOk(c.UnitModelID); + d.unitHasOwnAddress = c.UnitHasOwnAddress; + d.boughtHere = c.BoughtHere; + d.purchasedFromVendorId = Getv7v8IdMapNullOk(c.PurchasedFromID); + d.receipt = c.Receipt; + d.purchasedDate = util.DateToV8(c.PurchasedDate); + d.description = c.Description; + d.replacedByUnitId = null; + d.parentUnitId = null; + d.overrideModelWarranty = c.OverrideModelWarranty; + if (c.WarrantyLength != 0) + d.warrantyLength = c.WarrantyLength; + d.warrantyTerms = c.WarrantyTerms; + d.usesBanking = c.UsesBanking; + d.metered = c.Metered; + d.lifeTimeWarranty = c.LifeTimeWarranty; + d.text1 = c.Text1; + d.text2 = c.Text2; + d.text3 = c.Text3; + d.text4 = c.Text4; + if (c.UnitHasOwnAddress) + { + d.address = c.GoToAddress.DeliveryAddress; + d.city = c.GoToAddress.City; + d.region = c.GoToAddress.StateProv; + d.country = c.GoToAddress.Country; + d.latitude = c.GoToAddress.Latitude; + d.longitude = c.GoToAddress.Longitude; + } + + SetTags(d, tags); if (c.UsesBanking) @@ -1643,11 +1684,32 @@ namespace AyaNova.PlugIn.V8 await util.PutAsync("unit", d.ToString()); //----- - + //DONT DO THIS for second steppers UNTIL THE SECOND STEP BELOW OR IT WILL BE WRONG for them //Event log fixup - await util.EventLog(util.AyaType.Unit, RavenId, SafeGetUserMap(c.Creator), SafeGetUserMap(c.Modifier), c.Created, c.Modified); + if (c.ParentID == Guid.Empty && c.ReplacedByUnitID == Guid.Empty) + await util.EventLog(util.AyaType.Unit, RavenId, SafeGetUserMap(c.Creator), SafeGetUserMap(c.Modifier), c.Created, c.Modified); } + + //################# Now loop through the units again and set parent and replaced ID's + progress.Append("Exporting " + pl.Count.ToString() + " " + ObjectTypeName + "s (step 2/2)"); + foreach (UnitPickList.UnitPickListInfo i in pl) + { + if (!progress.KeepGoing) return; + + Unit c = Unit.GetItem(i.ID); + if (c.ParentID == Guid.Empty && c.ReplacedByUnitID == Guid.Empty) continue; + var ObjectTID = new TypeAndID(RootObjectTypes.Unit, c.ID); + dynamic d = util.GetAsync("unit/" + Getv7v8IdMap(c.ID, "Unit for parent / replaced by unit step 2 unit import").ToString()); + progress.Op(ObjectTypeName + " " + d.name); + d.replacedByUnitId = Getv7v8IdMapNullOk(c.ReplacedByUnitID); + d.parentUnitId = Getv7v8IdMapNullOk(c.ParentID); + if (d.parentUnitId != null || d.replacedByUnitId != null) + await util.PutAsync("unit", d.ToString()); + //----- + //Event log fixup + await util.EventLog(util.AyaType.Unit, d.id, SafeGetUserMap(c.Creator), SafeGetUserMap(c.Modifier), c.Created, c.Modified); + } } #endregion Units