cmc-sales/go-app/templates/emails/show.html

293 lines
12 KiB
HTML
Raw Normal View History

2025-08-04 14:50:12 -07:00
{{define "title"}}Email {{.Email.ID}} - CMC Sales{{end}}
{{define "content"}}
<div class="level">
<div class="level-left">
<div class="level-item">
<nav class="breadcrumb" aria-label="breadcrumbs">
<ul>
<li><a href="/emails">Emails</a></li>
<li class="is-active"><a href="#" aria-current="page">Email {{.Email.ID}}</a></li>
</ul>
</nav>
</div>
</div>
<div class="level-right">
<div class="level-item">
<div class="buttons">
{{if .Email.GmailMessageID}}
<a href="/api/v1/emails/{{.Email.ID}}/stream" target="_blank" class="button is-success">
<span class="icon">
<i class="fas fa-external-link-alt"></i>
</span>
<span>View in Gmail</span>
</a>
{{end}}
<a href="/emails" class="button">
<span class="icon">
<i class="fas fa-arrow-left"></i>
</span>
<span>Back to Emails</span>
</a>
</div>
</div>
</div>
</div>
<div class="columns">
<div class="column is-8">
<!-- Email Details -->
<div class="box">
<h2 class="title is-4">
{{if .Email.Subject}}{{.Email.Subject}}{{else}}<em>(No Subject)</em>{{end}}
</h2>
<div class="content">
<div class="columns is-multiline">
<div class="column is-6">
<strong>From:</strong>
{{if .Email.User}}
{{.Email.User.Email}} ({{.Email.User.FirstName}} {{.Email.User.LastName}})
{{else}}
<span class="has-text-grey">Unknown sender</span>
{{end}}
</div>
<div class="column is-6">
<strong>Date:</strong> {{.Email.Created.Format "2006-01-02 15:04:05"}}
</div>
<div class="column is-6">
<strong>Type:</strong>
{{if .Email.GmailMessageID}}
<span class="tag is-link">
<span class="icon is-small">
<i class="fab fa-google"></i>
</span>
<span>Gmail</span>
</span>
{{if and .Email.IsDownloaded (not .Email.IsDownloaded)}}
<span class="tag is-warning">Remote</span>
{{else}}
<span class="tag is-success">Downloaded</span>
{{end}}
{{else}}
<span class="tag is-success">Local Email</span>
{{end}}
</div>
<div class="column is-6">
<strong>Attachments:</strong>
{{if gt (len .Attachments) 0}}
<span class="tag is-info">{{len .Attachments}} files</span>
{{else}}
<span class="has-text-grey">None</span>
{{end}}
</div>
{{if .Email.GmailMessageID}}
<div class="column is-12">
<strong>Gmail Message ID:</strong>
<code class="is-size-7">{{.Email.GmailMessageID}}</code>
</div>
{{end}}
{{if .Email.GmailThreadID}}
<div class="column is-12">
<strong>Gmail Thread ID:</strong>
<code class="is-size-7">{{.Email.GmailThreadID}}</code>
</div>
{{end}}
</div>
</div>
</div>
<!-- Email Content -->
{{if .Email.GmailMessageID}}
<div class="box">
<h3 class="title is-5">Email Content</h3>
<div id="email-content-container"
hx-get="/api/v1/emails/{{.Email.ID}}/content"
hx-trigger="load">
<div class="notification is-info">
<div class="is-flex is-align-items-center">
<span class="loader mr-3"></span>
<span>Loading email content...</span>
</div>
</div>
</div>
</div>
{{end}}
<!-- Attachments -->
{{if gt (len .Attachments) 0}}
<div class="box">
<h3 class="title is-5">Attachments</h3>
<div class="table-container">
<table class="table is-fullwidth">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Size</th>
<th>Date</th>
<th>Actions</th>
</tr>
</thead>
<tbody>
{{range .Attachments}}
<tr>
<td>
{{if .IsMessageBody}}
<span class="icon has-text-info">
<i class="fas fa-envelope"></i>
</span>
{{else}}
<span class="icon has-text-grey">
<i class="fas fa-paperclip"></i>
</span>
{{end}}
{{.Name}}
</td>
<td>
<span class="tag is-light">{{.Type}}</span>
</td>
<td>{{.Size}} bytes</td>
<td class="is-size-7">
{{.Created.Format "2006-01-02 15:04"}}
</td>
<td>
{{if .GmailAttachmentID}}
<a href="/api/v1/emails/{{$.Email.ID}}/attachments/{{.ID}}/stream"
target="_blank" class="button is-small is-info">
<span class="icon">
<i class="fas fa-download"></i>
</span>
<span>Download</span>
</a>
{{else}}
<a href="/api/v1/emails/{{$.Email.ID}}/attachments/{{.ID}}"
target="_blank" class="button is-small is-success">
<span class="icon">
<i class="fas fa-download"></i>
</span>
<span>Download</span>
</a>
{{end}}
</td>
</tr>
{{end}}
</tbody>
</table>
</div>
</div>
{{else if .Email.GmailMessageID}}
<!-- Gmail Attachments Check -->
<div class="box">
<h3 class="title is-5">Attachments</h3>
<div id="gmail-attachments-container"
hx-get="/api/v1/emails/{{.Email.ID}}/attachments"
hx-trigger="load"
hx-swap="outerHTML">
<div class="notification is-info is-light">
<div class="is-flex is-align-items-center">
<span class="loader mr-3"></span>
<span>Checking for Gmail attachments...</span>
</div>
</div>
</div>
</div>
{{end}}
</div>
<div class="column is-4">
<!-- Associated Records -->
<div class="box">
<h3 class="title is-5">Associated Records</h3>
{{if .Email.Enquiries}}
<div class="field">
<label class="label">Enquiries</label>
<div class="tags">
{{range .Email.Enquiries}}
<a href="/enquiries/{{.}}" class="tag is-primary">
ENQ-{{.}}
</a>
{{end}}
</div>
</div>
{{end}}
{{if .Email.Invoices}}
<div class="field">
<label class="label">Invoices</label>
<div class="tags">
{{range .Email.Invoices}}
<a href="/invoices/{{.}}" class="tag is-warning">
INV-{{.}}
</a>
{{end}}
</div>
</div>
{{end}}
{{if .Email.PurchaseOrders}}
<div class="field">
<label class="label">Purchase Orders</label>
<div class="tags">
{{range .Email.PurchaseOrders}}
<a href="/purchase-orders/{{.}}" class="tag is-info">
PO-{{.}}
</a>
{{end}}
</div>
</div>
{{end}}
{{if .Email.Jobs}}
<div class="field">
<label class="label">Jobs</label>
<div class="tags">
{{range .Email.Jobs}}
<a href="/jobs/{{.}}" class="tag is-success">
JOB-{{.}}
</a>
{{end}}
</div>
</div>
{{end}}
{{if and (not .Email.Enquiries) (not .Email.Invoices) (not .Email.PurchaseOrders) (not .Email.Jobs)}}
<div class="notification is-warning is-light">
<p><strong>No associations found</strong></p>
<p class="is-size-7">This email is not associated with any enquiries, invoices, purchase orders, or jobs.</p>
</div>
{{end}}
</div>
<!-- Quick Actions -->
<div class="box">
<h3 class="title is-5">Quick Actions</h3>
<div class="buttons is-vertical is-fullwidth">
<button class="button is-info is-outlined">
<span class="icon">
<i class="fas fa-link"></i>
</span>
<span>Associate with Record</span>
</button>
<button class="button is-warning is-outlined">
<span class="icon">
<i class="fas fa-flag"></i>
</span>
<span>Mark for Review</span>
</button>
{{if .Email.GmailMessageID}}
<button class="button is-success is-outlined"
hx-post="/api/v1/emails/{{.Email.ID}}/download"
hx-confirm="Download this email and attachments locally?">
<span class="icon">
<i class="fas fa-download"></i>
</span>
<span>Download Locally</span>
</button>
{{end}}
</div>
</div>
</div>
</div>
{{end}}