40 lines
1.5 KiB
C#
40 lines
1.5 KiB
C#
using FabWorks.Core.Models;
|
|
using FabWorks.Core.PressBrake;
|
|
using System.Security.Cryptography;
|
|
|
|
namespace FabWorks.Api.Services
|
|
{
|
|
public class FormProgramService
|
|
{
|
|
public FormProgram ParseFromFile(string filePath)
|
|
{
|
|
var pgm = FabWorks.Core.PressBrake.Program.Load(filePath);
|
|
var hash = ComputeFileHash(filePath);
|
|
|
|
return new FormProgram
|
|
{
|
|
ProgramFilePath = filePath,
|
|
ContentHash = hash,
|
|
ProgramName = pgm.ProgName ?? "",
|
|
Thickness = pgm.MatThick > 0 ? pgm.MatThick : null,
|
|
MaterialType = pgm.MatType.ToString(),
|
|
KFactor = pgm.KFactor > 0 ? pgm.KFactor : null,
|
|
BendCount = pgm.Steps.Count,
|
|
UpperToolNames = string.Join(", ", pgm.UpperToolSets
|
|
.Select(t => t.Name).Where(n => !string.IsNullOrEmpty(n)).Distinct()),
|
|
LowerToolNames = string.Join(", ", pgm.LowerToolSets
|
|
.Select(t => t.Name).Where(n => !string.IsNullOrEmpty(n)).Distinct()),
|
|
SetupNotes = pgm.SetupNotes ?? ""
|
|
};
|
|
}
|
|
|
|
private static string ComputeFileHash(string filePath)
|
|
{
|
|
using var sha = SHA256.Create();
|
|
using var stream = File.OpenRead(filePath);
|
|
var bytes = sha.ComputeHash(stream);
|
|
return BitConverter.ToString(bytes).Replace("-", "").ToLowerInvariant();
|
|
}
|
|
}
|
|
}
|