shoc-backend/SeaHavenIndustries/Components/Pages/Quotes/QuotesPDF.razor
Adam Moussa dbb31ca7d7 Fix Contacts.Name references throughout Blazor project
- Replace all Contacts.Name with (FirstName + " " + LastName) pattern
- Fix ContactService, Index.razor, QuotesPDF, QuotesDetails, CreateQuotes
- Fix WorkOrderPDF, Viewworkorder, UserViewWordOrder, Addworkorders
- Fix ViewTemplate, AddTemplate, Templates settings pages
- Blazor project now builds successfully
2026-04-16 16:54:28 -04:00

234 lines
9.2 KiB
Text

<html >
<body >
<style>
/* html {
-webkit-print-color-adjust: exact;
} */
p {
margin: 5px !important;
}
h6 {
margin: 5px !important;
}
</style>
<div class="card-body p-3" style="background-color: #1a2035;padding:10px">
<div class="row mt-2">
<div class="text-end">
<p style="color:#FCFF97;text-align:center;font-size:17px;font-size:15px;text-align:right">Quote ID : QO-@model.QuotId</p>
</div>
<div class="row ">
<div class="col-12 text-center" style="text-align:center">
<img src="data:image/png;base64,@base64Image" class="navbar-brand-img h-90 img-fluid" alt="main_logo">
<p class="text-info mb-0">80 Orville Dr</p>
<p class="mb-0"><i class="fa fa-map-marker me-1"></i> Bohemia, NY 11716</p>
<p class="mb-0"><i class="fa fa-phone me-1"></i> 516-699-2092/631-334-2594</p>
<p class="mb-0"><i class="fa fa-envelope me-1"></i> Info@seahavenindustries.com</p>
</div>
</div>
<div class="col-12">
<div class="row">
<div class="col-12">
<p>
<i class="fa fa-calendar me-1"></i> Date:
@if (model.Date != null)
{
@model.Date.Value.ToString("MMM dd yyyy")
}
</p>
</div>
<div class="col-md-6 col-lg-4">
<div class="d-flex">
<p class="w-50 mb-0">
Proposal For :
@if (model.WorkOrder != null)
{
<span class="w-50 mb-0" style="margin-left:15px">@model.WorkOrder.WorkerOrderTitle</span>
}
</p>
</div>
</div>
<div class="w-100"></div>
<div class="col-md-6 col-lg-4">
<div class="d-flex">
<p class="w-50 mb-0">
POC : @if (model.Contacts != null)
{
<span class="w-50 mb-0" style="margin-left:15px">@(model.Contacts.FirstName + " " + model.Contacts.LastName)</span>
}
</p>
</div>
</div>
<div class="w-100"></div>
<div class="col-md-6 col-lg-4">
<div class="d-flex">
<p class="w-50 mb-0">PO # :<span class="margin-left:15px">@model.PO</span></p>
</div>
</div>
<div class="w-100"></div>
<div class="col-md-6 col-lg-4">
<div class="d-flex">
<p class="w-50 mb-0">TT # : <span class="margin-left:15px">@model.TT</span></p>
<p class="w-50 mb-0"> </p>
</div>
</div>
<div class="w-100 text-center d-flex justify-content-center">
<hr class="bg-white w-70 my-3" />
</div>
<div class="col-md-6 col-lg-4">
<div class="d-flex">
<p class="w-50 mb-0">Project Name : <span class="margin-left:15px">@model.ProjectName</span></p>
</div>
</div>
<div class="w-100"></div>
<div class="col-md-6 col-lg-4">
<div class="d-flex">
<p class="w-50 mb-0">Site Name: <span class="margin-left:15px">@model.SiteName</span></p>
</div>
</div>
<div class="w-100"></div>
<div class="col-md-6 col-lg-4">
<div class="d-flex">
<p class="w-50 mb-0">Site ID: <span class="margin-left:15px">@model.SiteId</span></p>
</div>
</div>
<div class="w-100 text-center d-flex justify-content-center">
<hr class="bg-white w-70 my-3" />
</div>
<div class="col-md-6 col-lg-6">
<div class="d-flex">
<p class="w-30 mb-0">Billed To : <span class="margin-left:15px">@model.BillingAddress</span></p>
</div>
</div>
<div class="w-100"></div>
@* <div class="col-md-6 col-lg-6">
<div class="d-flex">
<p class="w-30 mb-0">Shipping Address :</p>
<p class="w-70 mb-0">@model.ShippingAddress</p>
</div>
</div> *@
<div class="w-100 text-center d-flex justify-content-center">
<hr class="bg-white w-70 my-3" />
</div>
<div class="col-md-6 col-lg-6">
<div class="d-flex">
<h6 class="text-white">LINE ITEMS:</h6>
</div>
</div>
@* <div class="col-md-6 col-lg-8">
<div class="d-flex">
<p class="w-20 mb-0">Line Item 1 :</p>
<p class="w-80 mb-0">Completed site assessment for concrete crack repairs as needed that are causing trip hazards.</p>
</div>
</div>
<div class="w-100 text-center d-flex justify-content-center">
<hr class="bg-white w-70 my-3" />
</div>
*@
<div class="row justify-content-end">
<div class="col-md-12">
@if (model.LineItems != null)
{
foreach (var itm in model.LineItems)
{
<div class="d-flex" style="display:flex">
<p class="w-80 mb-3" style="width:80%"> @itm.Descriptions </p>
<p class="w-20 mb-3 text-end" style="width:20%;text-align:end">$@itm.Lineitem</p>
</div>
}
<hr class="bg-white w-lg-70 my-3" />
<div class="d-flex" style="display:flex">
<p class="w-80 mb-3 text-white text-end" style="width:80%;text-align:end">Total</p>
<p class="w-20 mb-3 text-white text-end" style="width:20%;text-align:end">$@model.LineItems.Sum(s => s.Lineitem)</p>
</div>
}
</div>
</div>
</div>
</div>
<div>
</div>
</div>
</div>
</body>
</html>
@if (isloading)
{
<div class="loading">Loading&#8230;</div>
}
@using SeaHavenIndustries.Data.IRepository;
@inject IQuotesRepository _service;
@using Microsoft.JSInterop
@using System.Text.Json
@using global::Data.SeaHavenIndustries
@inject IJSRuntime JSRuntime
@inject ChangeStepService StepService
@implements IDisposable
@inject NavigationManager Navigation
@inject Microsoft.AspNetCore.Hosting.IWebHostEnvironment _env
@code {
[Parameter]
public int? id { get; set; }
private Quotes model = new();
private string selectedStatus = "Open";
private bool isloading = true;
private IEnumerable<WorkOrder>? list { get; set; }
protected override async Task OnParametersSetAsync()
{
isloading = true;
StepService.OnStateChange += StateHasChanged;
if (id != null)
{
var result = await _service.GetQuotesById(id.Value);
if (result != null)
{
model = result;
//StepService.SetCurrentstatus(selectedStatus);
// StepService.chnageactivemodel(order);
}
//isloading = false;
}
imagePath = _env.WebRootPath + "/assets/img/Logo.png";
ConvertToBase64();
isloading = false;
StateHasChanged();
}
private string base64Image;
private string imagePath;
private void ConvertToBase64()
{
if (!string.IsNullOrEmpty(imagePath))
{
var imageBytes = System.IO.File.ReadAllBytes(imagePath);
base64Image = Convert.ToBase64String(imageBytes);
}
else
{
base64Image = null;
}
}
public EventCallback<int> OnStepChange { get; set; }
public void Dispose()
{
StepService.OnStateChange -= StateHasChanged;
}
}