forked from sanchezvem/pyrofetes-backend
Last changes before exam
This commit is contained in:
@@ -5,17 +5,14 @@ using QuestPDF.Infrastructure;
|
||||
|
||||
namespace PyroFetes.Services.Pdf;
|
||||
|
||||
public interface IDeliveryNotePdfService
|
||||
public class DeliveryNotePdfService
|
||||
{
|
||||
byte[] Generate(DeliveryNote deliveryNote, List<ProductDelivery> lignes, Setting setting);
|
||||
}
|
||||
private static readonly HttpClient HttpClient = new();
|
||||
|
||||
public class DeliveryNotePdfService : IDeliveryNotePdfService
|
||||
{
|
||||
public byte[] Generate(DeliveryNote deliveryNote, List<ProductDelivery> lignes, Setting setting)
|
||||
public async Task<byte[]> Generate(DeliveryNote deliveryNote, Setting setting, StorageService storageService)
|
||||
{
|
||||
byte[] logo = Convert.FromBase64String(setting.Logo!);
|
||||
byte[] signature = Convert.FromBase64String(setting.ElectronicSignature!);
|
||||
byte[] logoBytes = await HttpClient.GetByteArrayAsync(storageService.GetUrl(setting.Logo!));
|
||||
byte[] signatureBytes = await HttpClient.GetByteArrayAsync(storageService.GetUrl(setting.ElectronicSignature!));
|
||||
decimal total = 0;
|
||||
int totalQuantity = 0;
|
||||
Document document = Document.Create(container =>
|
||||
@@ -48,7 +45,7 @@ public class DeliveryNotePdfService : IDeliveryNotePdfService
|
||||
// Logo + société à droite
|
||||
row.ConstantItem(200).Column(col =>
|
||||
{
|
||||
col.Item().AlignRight().Height(70).Image(logo, ImageScaling.FitArea);
|
||||
col.Item().AlignRight().Height(70).Image(logoBytes, ImageScaling.FitArea);
|
||||
col.Item().Height(20);
|
||||
col.Item().AlignRight().Text("Pyro-Fêtes").SemiBold();
|
||||
col.Item().Height(5);
|
||||
@@ -93,7 +90,7 @@ public class DeliveryNotePdfService : IDeliveryNotePdfService
|
||||
header.Cell().Element(CellHeader).AlignRight().Text("Total");
|
||||
});
|
||||
|
||||
foreach (ProductDelivery l in lignes)
|
||||
foreach (ProductDelivery l in deliveryNote.ProductDeliveries!)
|
||||
{
|
||||
decimal price = l.Product!.Prices!
|
||||
.FirstOrDefault(x => x.SupplierId == l.DeliveryNote!.SupplierId && x.ProductId == l.ProductId)
|
||||
@@ -125,7 +122,7 @@ public class DeliveryNotePdfService : IDeliveryNotePdfService
|
||||
});
|
||||
|
||||
// Signature en bas à droite
|
||||
page.Footer().AlignRight().Column(col => { col.Item().AlignRight().Height(100).Image(signature, ImageScaling.FitArea); });
|
||||
page.Footer().AlignRight().Column(col => { col.Item().AlignRight().Height(100).Image(signatureBytes, ImageScaling.FitArea); });
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
@@ -5,17 +5,14 @@ using QuestPDF.Infrastructure;
|
||||
|
||||
namespace PyroFetes.Services.Pdf;
|
||||
|
||||
public interface IPurchaseOrderPdfService
|
||||
public class PurchaseOrderPdfService
|
||||
{
|
||||
byte[] Generate(PurchaseOrder purchaseOrder, List<PurchaseProduct> lignes, Setting setting);
|
||||
}
|
||||
|
||||
public class PurchaseOrderPdfService : IPurchaseOrderPdfService
|
||||
{
|
||||
public byte[] Generate(PurchaseOrder purchaseOrder, List<PurchaseProduct> lignes, Setting setting)
|
||||
private static readonly HttpClient HttpClient = new();
|
||||
|
||||
public async Task<byte[]> Generate(PurchaseOrder purchaseOrder, Setting setting, StorageService storageService)
|
||||
{
|
||||
byte[] logo = Convert.FromBase64String(setting.Logo!);
|
||||
byte[] signature = Convert.FromBase64String(setting.ElectronicSignature!);
|
||||
byte[] logoBytes = await HttpClient.GetByteArrayAsync(storageService.GetUrl(setting.Logo!));
|
||||
byte[] signatureBytes = await HttpClient.GetByteArrayAsync(storageService.GetUrl(setting.ElectronicSignature!));
|
||||
int totalQuantity = 0;
|
||||
decimal total = 0;
|
||||
Document document = Document.Create(container =>
|
||||
@@ -45,7 +42,7 @@ public class PurchaseOrderPdfService : IPurchaseOrderPdfService
|
||||
// Logo + société à droite
|
||||
row.ConstantItem(200).Column(col =>
|
||||
{
|
||||
col.Item().AlignRight().Height(70).Image(logo, ImageScaling.FitArea);
|
||||
col.Item().AlignRight().Height(70).Image(logoBytes, ImageScaling.FitArea);
|
||||
col.Item().Height(20);
|
||||
col.Item().AlignRight().Text("Pyro-Fêtes").SemiBold();
|
||||
col.Item().Height(5);
|
||||
@@ -93,7 +90,7 @@ public class PurchaseOrderPdfService : IPurchaseOrderPdfService
|
||||
header.Cell().Element(CellHeader).AlignRight().Text("Total");
|
||||
});
|
||||
|
||||
foreach (PurchaseProduct l in lignes)
|
||||
foreach (PurchaseProduct l in purchaseOrder.PurchaseProducts!)
|
||||
{
|
||||
decimal price = l.Product!.Prices!
|
||||
.FirstOrDefault(x => x.SupplierId == l.PurchaseOrder!.SupplierId && x.ProductId == l.ProductId)
|
||||
@@ -141,7 +138,7 @@ public class PurchaseOrderPdfService : IPurchaseOrderPdfService
|
||||
});
|
||||
|
||||
// Signature en bas à droite
|
||||
page.Footer().AlignRight().Column(col => { col.Item().AlignRight().Height(100).Image(signature, ImageScaling.FitArea); });
|
||||
page.Footer().AlignRight().Column(col => { col.Item().AlignRight().Height(100).Image(signatureBytes, ImageScaling.FitArea); });
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
@@ -5,17 +5,14 @@ using QuestPDF.Infrastructure;
|
||||
|
||||
namespace PyroFetes.Services.Pdf;
|
||||
|
||||
public interface IQuotationPdfService
|
||||
public class QuotationPdfService
|
||||
{
|
||||
byte[] Generate(Quotation quotation, List<QuotationProduct> lignes, Setting setting);
|
||||
}
|
||||
private static readonly HttpClient HttpClient = new();
|
||||
|
||||
public class QuotationPdfService : IQuotationPdfService
|
||||
{
|
||||
public byte[] Generate(Quotation quotation, List<QuotationProduct> lignes, Setting setting)
|
||||
public async Task<byte[]> Generate(Quotation quotation, Setting setting, StorageService storageService)
|
||||
{
|
||||
byte[] logo = Convert.FromBase64String(setting.Logo!);
|
||||
byte[] signature = Convert.FromBase64String(setting.ElectronicSignature!);
|
||||
byte[] logoBytes = await HttpClient.GetByteArrayAsync(storageService.GetUrl(setting.Logo!));
|
||||
byte[] signatureBytes = await HttpClient.GetByteArrayAsync(storageService.GetUrl(setting.ElectronicSignature!));
|
||||
decimal total = 0;
|
||||
Document document = Document.Create(container =>
|
||||
{
|
||||
@@ -42,7 +39,7 @@ public class QuotationPdfService : IQuotationPdfService
|
||||
// Logo + société à droite
|
||||
row.ConstantItem(200).Column(col =>
|
||||
{
|
||||
col.Item().AlignRight().Height(70).Image(logo, ImageScaling.FitArea);
|
||||
col.Item().AlignRight().Height(70).Image(logoBytes, ImageScaling.FitArea);
|
||||
col.Item().Height(20);
|
||||
col.Item().AlignRight().Text("Pyro-Fêtes").SemiBold();
|
||||
col.Item().Height(5);
|
||||
@@ -90,7 +87,7 @@ public class QuotationPdfService : IQuotationPdfService
|
||||
header.Cell().Element(CellHeader).AlignRight().Text("Total");
|
||||
});
|
||||
|
||||
foreach (QuotationProduct l in lignes)
|
||||
foreach (QuotationProduct l in quotation.QuotationProducts!)
|
||||
{
|
||||
decimal price = l.Product!.Prices!
|
||||
.FirstOrDefault(x => x.SupplierId == l.Quotation!.SupplierId && x.ProductId == l.ProductId)
|
||||
@@ -134,7 +131,7 @@ public class QuotationPdfService : IQuotationPdfService
|
||||
});
|
||||
|
||||
// Signature en bas à droite
|
||||
page.Footer().AlignRight().Column(col => { col.Item().AlignRight().Height(100).Image(signature, ImageScaling.FitArea); });
|
||||
page.Footer().AlignRight().Column(col => { col.Item().AlignRight().Height(100).Image(signatureBytes, ImageScaling.FitArea); });
|
||||
});
|
||||
});
|
||||
|
||||
@@ -143,4 +140,4 @@ public class QuotationPdfService : IQuotationPdfService
|
||||
|
||||
return document.GeneratePdf();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,12 +7,12 @@ public class StorageService(IAmazonS3 amazonS3, IConfiguration config)
|
||||
{
|
||||
private readonly string _bucket = config["RustFs:BucketName"]!;
|
||||
private readonly string _url = config["RustFs:ServiceUrl"]!;
|
||||
|
||||
|
||||
public async Task<string> UploadFile(IFormFile file, string type, CancellationToken ct)
|
||||
{
|
||||
if (file.Length == 0) throw new Exception("Fichier vide");
|
||||
|
||||
string key = $"settings/{type}";
|
||||
|
||||
string key = $"settings/{type}/{Guid.NewGuid()}";
|
||||
|
||||
using MemoryStream memoryStream = new();
|
||||
await file.CopyToAsync(memoryStream, ct);
|
||||
@@ -25,7 +25,7 @@ public class StorageService(IAmazonS3 amazonS3, IConfiguration config)
|
||||
InputStream = memoryStream,
|
||||
Key = key,
|
||||
};
|
||||
|
||||
|
||||
await amazonS3.PutObjectAsync(uploadRequest, ct);
|
||||
return key;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user