120 lines
4.3 KiB
C#
120 lines
4.3 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Text.RegularExpressions;
|
|
using System.Threading;
|
|
using System.Threading.Tasks;
|
|
using Microsoft.EntityFrameworkCore;
|
|
using Newtonsoft.Json;
|
|
using PartSource.Data.Contexts;
|
|
using PartSource.Data.Models;
|
|
using PartSource.Data.Nexpart;
|
|
using PartSource.Services;
|
|
using Ratermania.Automation.Interfaces;
|
|
using Ratermania.Shopify;
|
|
using Ratermania.Shopify.Resources;
|
|
|
|
namespace PartSource.Automation.Jobs.POC
|
|
{
|
|
public class GetImageUrls : IAutomationJob
|
|
{
|
|
private readonly NexpartService _nexpartService;
|
|
private readonly FitmentContext _fitmentContext;
|
|
private readonly PartService _partService;
|
|
private readonly ShopifyClient _shopifyClient;
|
|
|
|
public GetImageUrls(NexpartService nexpartService, PartService partService, FitmentContext fitmentContext, ShopifyClient shopifyClient)
|
|
{
|
|
_nexpartService = nexpartService;
|
|
_fitmentContext = fitmentContext;
|
|
_partService = partService;
|
|
_shopifyClient = shopifyClient;
|
|
}
|
|
|
|
public async Task Run(CancellationToken token, params string[] arguments)
|
|
{
|
|
IList<string> rows = new List<string> {
|
|
"\"Line Code\", \"Part Number\", \"Image URL(s)\""
|
|
};
|
|
|
|
using StreamReader reader = new StreamReader("C:\\Users\\Tom\\Desktop\\image parts.csv");
|
|
string line = reader.ReadLine(); // Burn the header row
|
|
|
|
while (reader.Peek() > 0)
|
|
{
|
|
line = reader.ReadLine();
|
|
|
|
string[] columns = line.Split(",");
|
|
for (int i = 0; i < columns.Length; i++)
|
|
{
|
|
columns[i] = columns[i].Replace("\"", string.Empty);
|
|
}
|
|
|
|
string partsourceCode = columns[0].Trim();
|
|
string partNumber = columns[1].Trim();
|
|
|
|
|
|
IList<DcfMapping> dcfMappings = await _partService.GetDcfMapping(partsourceCode);
|
|
if (dcfMappings.Count == 0)
|
|
{
|
|
Console.WriteLine($"No images for {partsourceCode} {partNumber}");
|
|
}
|
|
|
|
bool hasImage = false;
|
|
foreach (DcfMapping mapping in dcfMappings)
|
|
{
|
|
if (hasImage)
|
|
{
|
|
continue;
|
|
}
|
|
|
|
SmartPageDataSearch dataSearch = new SmartPageDataSearch
|
|
{
|
|
Items = new Item[]
|
|
{
|
|
new Item
|
|
{
|
|
MfrCode = mapping.WhiCode,
|
|
PartNumber = partNumber
|
|
}
|
|
},
|
|
DataOption = new[] { "ALL" }
|
|
};
|
|
|
|
SmartPageDataSearchResponse response = await _nexpartService.SendRequest<SmartPageDataSearch, SmartPageDataSearchResponse>(dataSearch);
|
|
|
|
if (response.ResponseBody.Item?.Length > 0)
|
|
{
|
|
List<string> urls = new List<string>();
|
|
|
|
if (!string.IsNullOrEmpty(response.ResponseBody.Item[0].PrimaryImg?.ImgUrl))
|
|
{
|
|
urls.Add(response.ResponseBody.Item[0].PrimaryImg?.ImgUrl);
|
|
};
|
|
|
|
if (response.ResponseBody.Item[0].AddImgs?.AddImg?.Length > 0)
|
|
{
|
|
urls.AddRange(response.ResponseBody.Item[0].AddImgs.AddImg.Select(i => i.AddImgUrl));
|
|
}
|
|
|
|
if (urls.Count > 0)
|
|
{
|
|
rows.Add($"\"{partsourceCode}\", \"{partNumber}\", \"{string.Join(";", urls)}\"");
|
|
hasImage = true;
|
|
}
|
|
}
|
|
}
|
|
|
|
if (!hasImage)
|
|
{
|
|
Console.WriteLine($"No images for {partsourceCode} {partNumber}");
|
|
}
|
|
}
|
|
|
|
await File.WriteAllLinesAsync($"C:\\users\\Tom\\desktop\\WHI Images {DateTime.Now:yyyyMMdd}.csv", rows);
|
|
}
|
|
}
|
|
}
|