feat: 初始功能

This commit is contained in:
Shiqvlizi Name
2026-05-23 18:16:50 +08:00
parent a5bfd8792e
commit 9a51259e9e
63 changed files with 5377 additions and 1 deletions

View File

@@ -0,0 +1,55 @@
using CloudPrint.Client.Models;
namespace CloudPrint.Client.Services.Grpc;
public static class CloudPrintGrpcMapper
{
public static PrintJob ToPrintJob(Cloudprint.PrintJob backendJob)
{
var orderItem = backendJob.OrderItem;
var file = orderItem?.File;
return new PrintJob
{
Id = backendJob.Id,
JobNo = backendJob.JobNo,
PrinterId = backendJob.PrinterId,
OrderItemId = backendJob.OrderItemId,
FileName = file?.FileName ?? backendJob.JobNo,
FilePath = file?.FilePath ?? string.Empty,
FileId = orderItem?.FileId ?? 0,
Copies = Math.Max(1, orderItem?.Copies ?? 1),
Color = orderItem?.Color ?? false,
Duplex = orderItem?.Duplex ?? false,
PageRange = string.IsNullOrWhiteSpace(orderItem?.PageRange) ? "all" : orderItem.PageRange,
Status = FromBackendStatus(backendJob.Status),
Progress = backendJob.Progress,
ErrorMessage = backendJob.ErrorMsg
};
}
public static string ToBackendStatus(PrintJobStatus status)
{
return status switch
{
PrintJobStatus.Pending => "pending",
PrintJobStatus.Printing => "printing",
PrintJobStatus.Completed => "completed",
PrintJobStatus.Failed => "failed",
PrintJobStatus.Cancelled => "cancelled",
_ => "pending"
};
}
private static PrintJobStatus FromBackendStatus(string status)
{
return status?.ToLowerInvariant() switch
{
"printing" => PrintJobStatus.Printing,
"completed" => PrintJobStatus.Completed,
"failed" => PrintJobStatus.Failed,
"cancelled" => PrintJobStatus.Cancelled,
_ => PrintJobStatus.Pending
};
}
}