mirror of
https://github.com/Sea-Haven-Industries/shoc-backend.git
synced 2026-09-30 09:33:13 +00:00
- 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
234 lines
9.2 KiB
Text
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…</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;
|
|
}
|
|
}
|