feat: refactor CreateDadmehrWorkshopFaceEmbedding method to handle subdirectories and improve image processing logic

This commit is contained in:
2025-11-08 12:37:23 +03:30
parent 59284ffd29
commit c0ead0a917

View File

@@ -82,7 +82,7 @@ namespace ServiceHost.Areas.AdminNew.Pages.Company.AndroidApk
private async System.Threading.Tasks.Task CreateDadmehrWorkshopFaceEmbedding()
{
var basePath = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot", "faces", "11");
var basePath = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot", "faces");
if (!Directory.Exists(basePath))
{
@@ -94,63 +94,69 @@ namespace ServiceHost.Areas.AdminNew.Pages.Company.AndroidApk
var client = new HttpClient();
foreach (var directory in directories)
foreach (var mainDirectory in directories)
{
var directoryName = Path.GetFileName(directory);
var employee = await _context.Employees
.FirstOrDefaultAsync(x=>x.id == Convert.ToInt64(directoryName));
var fullname = employee != null ? employee.FullName: "نامشخص";
var imageFiles = Directory.GetFiles(directory, "*.*")
.Take(2)
.ToArray();
if (imageFiles.Length < 2)
var subDirectories = Directory.GetDirectories(mainDirectory);
foreach (var directory in subDirectories)
{
Console.WriteLine($"تعداد تصاویر کافی برای {directoryName} وجود ندارد");
continue;
}
var directoryName = Path.GetFileName(directory);
using var formData = new MultipartFormDataContent();
formData.Add(new StringContent(directoryName), "employee_id");
formData.Add(new StringContent("11"), "workshop_id");
formData.Add(new StringContent(fullname), "employee_full_name");
var employee = await _context.Employees
.FirstOrDefaultAsync(x => x.id == Convert.ToInt64(directoryName));
var fullname = employee != null ? employee.FullName : "نامشخص";
FileStream file1Stream = null;
FileStream file2Stream = null;
var imageFiles = Directory.GetFiles(directory, "*.*")
.Take(2)
.ToArray();
try
{
// ارسال فایل اول
file1Stream = new FileStream(imageFiles[0], FileMode.Open, FileAccess.Read);
var file1Content = new StreamContent(file1Stream);
file1Content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("image/jpeg");
formData.Add(file1Content, "picture1", Path.GetFileName(imageFiles[0]));
// ارسال فایل دوم
file2Stream = new FileStream(imageFiles[1], FileMode.Open, FileAccess.Read);
var file2Content = new StreamContent(file2Stream);
file2Content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("image/jpeg");
formData.Add(file2Content, "picture2", Path.GetFileName(imageFiles[1]));
var response = await client.PostAsync("http://127.0.0.1:8000/embeddings", formData);
if (response.IsSuccessStatusCode)
if (imageFiles.Length < 2)
{
var result = await response.Content.ReadAsStringAsync();
Console.WriteLine($"✓ {directoryName}: {result}");
Console.WriteLine($"تعداد تصاویر کافی برای {directoryName} وجود ندارد");
continue;
}
else
using var formData = new MultipartFormDataContent();
formData.Add(new StringContent(directoryName), "employee_id");
formData.Add(new StringContent("11"), "workshop_id");
formData.Add(new StringContent(fullname), "employee_full_name");
FileStream file1Stream = null;
FileStream file2Stream = null;
try
{
var error = await response.Content.ReadAsStringAsync();
Console.WriteLine($"✗ {directoryName}: {response.StatusCode} - {error}");
// ارسال فایل اول
file1Stream = new FileStream(imageFiles[0], FileMode.Open, FileAccess.Read);
var file1Content = new StreamContent(file1Stream);
file1Content.Headers.ContentType =
new System.Net.Http.Headers.MediaTypeHeaderValue("image/jpeg");
formData.Add(file1Content, "picture1", Path.GetFileName(imageFiles[0]));
// ارسال فایل دوم
file2Stream = new FileStream(imageFiles[1], FileMode.Open, FileAccess.Read);
var file2Content = new StreamContent(file2Stream);
file2Content.Headers.ContentType =
new System.Net.Http.Headers.MediaTypeHeaderValue("image/jpeg");
formData.Add(file2Content, "picture2", Path.GetFileName(imageFiles[1]));
var response = await client.PostAsync("http://127.0.0.1:8000/embeddings", formData);
if (response.IsSuccessStatusCode)
{
var result = await response.Content.ReadAsStringAsync();
Console.WriteLine($"✓ {directoryName}: {result}");
}
else
{
var error = await response.Content.ReadAsStringAsync();
Console.WriteLine($"✗ {directoryName}: {response.StatusCode} - {error}");
}
}
finally
{
file1Stream?.Dispose();
file2Stream?.Dispose();
}
}
finally
{
file1Stream?.Dispose();
file2Stream?.Dispose();
}
}
}