diff --git a/PartSource.Automation/Jobs/UpdatePositioning.cs b/PartSource.Automation/Jobs/UpdatePositioning.cs index fe86a8c..1070672 100644 --- a/PartSource.Automation/Jobs/UpdatePositioning.cs +++ b/PartSource.Automation/Jobs/UpdatePositioning.cs @@ -31,10 +31,6 @@ namespace PartSource.Automation.Jobs public async Task Run() { - IList importDataz = _partSourceContext.ImportData.ToList(); - - return new AutomationJobResult(); - IDictionary parameters = new Dictionary { { "limit", 250 } @@ -50,7 +46,7 @@ namespace PartSource.Automation.Jobs { ImportData importData = _partSourceContext.ImportData.FirstOrDefault(i => i.VariantSku == product.Variants[0].Sku); - if (importData?.LineCode == "SVG") // Headlights go in front, DUH + if (importData == null || importData?.LineCode == "SVG") // Headlights go in front, DUH { continue; } @@ -65,36 +61,71 @@ namespace PartSource.Automation.Jobs //await DeletePositionMetafields(product.Id); - string currentPosition = fitments[0].Position; - List vehicleIds = new List(); + //string currentPosition = fitments[0].Position; + //List vehicleIds = new List(); - foreach (Fitment fitment in fitments) + //foreach (Fitment fitment in fitments) + //{ + // if (fitment.Position != currentPosition) + // { + // await SavePositionMetafield(product, vehicleIds, currentPosition); + + // currentPosition = fitment.Position; + // vehicleIds = new List(); + // } + + // // We don't need to DCF map because these are both sourced from WHI + // IList fitmentVehicleIds = vehicles.Where(v => v.BaseVehicleId == fitment.BaseVehicleId && v.EngineConfigId == fitment.EngineConfigId) + // .Select(v => v.VehicleToEngineConfigId) + // .Distinct() + // .ToList(); + + // vehicleIds.AddRange(fitmentVehicleIds); + //} + + //await SavePositionMetafield(product, vehicleIds, currentPosition); + + + IList notes = fitments.Select(f => f.NoteText) + .Distinct() + .ToList(); + + IList vehicleNotes = new List(); + + foreach (string noteText in notes) { - if (fitment.Position != currentPosition) - { - await SavePositionMetafield(product, vehicleIds, currentPosition); - - currentPosition = fitment.Position; - vehicleIds = new List(); - } - - // We don't need to DCF map because these are both sourced from WHI - IList fitmentVehicleIds = vehicles.Where(v => v.BaseVehicleId == fitment.BaseVehicleId && v.EngineConfigId == fitment.EngineConfigId) + IList vehicleIds = fitments.Where(f => f.NoteText == noteText) + .Select(f => new { f.EngineConfigId, f.BaseVehicleId }) + .SelectMany(f => vehicles.Where(v => v.BaseVehicleId == f.BaseVehicleId && v.EngineConfigId == f.EngineConfigId)) .Select(v => v.VehicleToEngineConfigId) - .Distinct() .ToList(); - vehicleIds.AddRange(fitmentVehicleIds); + + vehicleNotes.Add(new { noteText, vehicleIds }); } - await SavePositionMetafield(product, vehicleIds, currentPosition); + string json = JsonConvert.SerializeObject(vehicleNotes); + if (json.Length >= 100000) + { + continue; + } + Metafield vehicleMetafield = new Metafield + { + Namespace = "fitment", + Key = "note_text", + Value = json, + ValueType = "json_string", + OwnerResource = "product", + OwnerId = product.Id + }; + await _shopifyClient.Metafields.Add(vehicleMetafield); - importData.UpdatedAt = DateTime.Now; - importData.UpdateType = "Positioning"; + //importData.UpdatedAt = DateTime.Now; + //importData.UpdateType = "Positioning"; + ; - } catch (Exception ex) @@ -106,7 +137,7 @@ namespace PartSource.Automation.Jobs try { Console.Write('.'); - await _partSourceContext.SaveChangesAsync(); + // await _partSourceContext.SaveChangesAsync(); products = await _shopifyClient.Products.GetNext(); } diff --git a/PartSource.Automation/Properties/launchSettings.json b/PartSource.Automation/Properties/launchSettings.json index 4e4d7f7..85bfddd 100644 --- a/PartSource.Automation/Properties/launchSettings.json +++ b/PartSource.Automation/Properties/launchSettings.json @@ -2,7 +2,7 @@ "profiles": { "PartSource.Automation": { "commandName": "Project", - "commandLineArgs": "UpdatePositioning", + "commandLineArgs": "UpdatePricing", "environmentVariables": { "PS_AUTOMATION_ENVIRONMENT": "development" }