email plus return item statuses

This commit is contained in:
jackiettran
2025-10-06 15:41:48 -04:00
parent 67cc997ddc
commit 5c3d505988
28 changed files with 5861 additions and 259 deletions

View File

@@ -0,0 +1,241 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>{{title}}</title>
<style>
/* Reset styles */
body, table, td, p, a, li, blockquote {
-webkit-text-size-adjust: 100%;
-ms-text-size-adjust: 100%;
}
table, td {
mso-table-lspace: 0pt;
mso-table-rspace: 0pt;
}
img {
-ms-interpolation-mode: bicubic;
}
/* Base styles */
body {
margin: 0;
padding: 0;
width: 100% !important;
min-width: 100%;
height: 100%;
background-color: #f8f9fa;
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;
line-height: 1.6;
color: #212529;
}
/* Container */
.email-container {
max-width: 600px;
margin: 0 auto;
background-color: #ffffff;
border-radius: 8px;
overflow: hidden;
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
}
/* Header */
.header {
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
padding: 40px 30px;
text-align: center;
}
.logo {
font-size: 32px;
font-weight: 700;
color: #ffffff;
text-decoration: none;
letter-spacing: -1px;
}
.tagline {
color: #e9ecef;
font-size: 14px;
margin-top: 8px;
}
/* Content */
.content {
padding: 40px 30px;
}
.content h1 {
font-size: 24px;
font-weight: 600;
margin: 0 0 20px 0;
color: #212529;
}
.content h2 {
font-size: 20px;
font-weight: 600;
margin: 30px 0 15px 0;
color: #495057;
}
.content p {
margin: 0 0 16px 0;
color: #6c757d;
line-height: 1.6;
}
.content strong {
color: #495057;
}
/* Button */
.button {
display: inline-block;
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
color: #ffffff !important;
text-decoration: none;
padding: 16px 32px;
border-radius: 6px;
font-weight: 600;
margin: 20px 0;
text-align: center;
transition: all 0.3s ease;
}
.button:hover {
transform: translateY(-2px);
box-shadow: 0 4px 12px rgba(102, 126, 234, 0.4);
}
/* Info box */
.info-box {
background-color: #e3f2fd;
border-left: 4px solid #2196f3;
padding: 20px;
margin: 20px 0;
border-radius: 0 6px 6px 0;
}
.info-box p {
margin: 0;
color: #1565c0;
}
.info-box .icon {
font-size: 24px;
margin-bottom: 10px;
}
/* Alert box */
.alert-box {
background-color: #fff3cd;
border-left: 4px solid #ffc107;
padding: 20px;
margin: 20px 0;
border-radius: 0 6px 6px 0;
}
.alert-box p {
margin: 0;
color: #856404;
}
/* Footer */
.footer {
background-color: #f8f9fa;
padding: 30px;
text-align: center;
border-top: 1px solid #e9ecef;
}
.footer p {
margin: 0 0 10px 0;
font-size: 14px;
color: #6c757d;
}
.footer a {
color: #667eea;
text-decoration: none;
}
.footer a:hover {
text-decoration: underline;
}
/* Responsive */
@media only screen and (max-width: 600px) {
.email-container {
margin: 0;
border-radius: 0;
}
.header, .content, .footer {
padding: 20px;
}
.logo {
font-size: 28px;
}
.content h1 {
font-size: 22px;
}
.button {
display: block;
width: 100%;
box-sizing: border-box;
}
}
</style>
</head>
<body>
<div class="email-container">
<div class="header">
<div class="logo">RentAll</div>
<div class="tagline">Your trusted rental marketplace</div>
</div>
<div class="content">
<h1>📸 {{title}}</h1>
<p>{{message}}</p>
<div class="info-box">
<div class="icon">📦</div>
<p><strong>Rental Item:</strong> {{itemName}}</p>
<p><strong>Deadline:</strong> {{deadline}}</p>
</div>
<p>Taking condition photos helps protect both renters and owners by providing clear documentation of the item's state. This is an important step in the rental process.</p>
<div class="alert-box">
<p><strong>Important:</strong> Please complete this condition check as soon as possible. Missing this deadline may affect dispute resolution if issues arise.</p>
</div>
<a href="#" class="button">Complete Condition Check</a>
<h2>What to photograph:</h2>
<ul>
<li>Overall view of the item</li>
<li>Any existing damage or wear</li>
<li>Serial numbers or identifying marks</li>
<li>Accessories or additional components</li>
</ul>
<p>If you have any questions about the condition check process, please don't hesitate to contact our support team.</p>
</div>
<div class="footer">
<p>&copy; 2024 RentAll. All rights reserved.</p>
<p>You received this email because you have an active rental on RentAll.</p>
<p>If you have any questions, please <a href="mailto:support@rentall.com">contact our support team</a>.</p>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,61 @@
<h1>Damage Report Filed - Action Required</h1>
<p>Hello Customer Service Team,</p>
<p>A damage report has been filed by an item owner and requires review and processing:</p>
<div class="info-box">
<p><strong>Rental ID:</strong> {{rentalId}}</p>
<p><strong>Item:</strong> {{itemName}}</p>
<p><strong>Owner:</strong> {{ownerName}} ({{ownerEmail}})</p>
<p><strong>Renter:</strong> {{renterName}} ({{renterEmail}})</p>
</div>
<h2>Damage Details</h2>
<div class="alert-box">
<p><strong>Description:</strong></p>
<p style="background-color: #f8f9fa; padding: 10px; border-left: 3px solid #ffc107; margin: 10px 0;">{{damageDescription}}</p>
<p><strong>Can item be fixed?</strong> {{canBeFixed}}</p>
{{#if repairCost}}
<p><strong>Repair Cost:</strong> ${{repairCost}}</p>
{{/if}}
<p><strong>Needs replacement?</strong> {{needsReplacement}}</p>
{{#if replacementCost}}
<p><strong>Replacement Cost:</strong> ${{replacementCost}}</p>
{{/if}}
<p><strong>Proof of Ownership Provided:</strong> {{hasProofOfOwnership}}</p>
</div>
<h2>Fee Summary</h2>
<div class="info-box">
<p><strong>{{feeTypeDescription}}:</strong> ${{damageFee}}</p>
{{#if lateFee}}
<p><strong>Late Return Fee:</strong> ${{lateFee}}</p>
{{/if}}
<p style="font-size: 1.1em; border-top: 2px solid #dee2e6; padding-top: 10px; margin-top: 10px;"><strong>Total Additional Fees:</strong> ${{totalFees}}</p>
</div>
<h2>Next Steps</h2>
<p>Please follow this process:</p>
<ol style="color: #495057; margin: 20px 0; padding-left: 20px;">
<li>Review the damage description and supporting documentation (photos, proof of ownership)</li>
<li>Send an email to the renter ({{renterEmail}}) with the damage claim details</li>
<li>Include the calculated damage fee amount and breakdown</li>
<li>Request the renter's response and provide 48 hours to reply</li>
<li>If the renter agrees or does not respond within 48 hours, manually charge the damage fee through the Stripe dashboard</li>
<li>If the renter disputes, open a formal dispute case and review evidence from both parties</li>
<li>Consider requesting additional documentation if needed (repair receipts, replacement invoices)</li>
</ol>
<div class="info-box">
<p><strong>Note:</strong> The damage fees have NOT been automatically charged. Manual review and processing is required.</p>
</div>
<p>Thank you for your attention to this matter.</p>

View File

@@ -0,0 +1,39 @@
<h1>Late Return Detected - Action Required</h1>
<p>Hello Customer Service Team,</p>
<p>A late return has been reported and requires manual processing:</p>
<div class="info-box">
<p><strong>Rental ID:</strong> {{rentalId}}</p>
<p><strong>Item:</strong> {{itemName}}</p>
<p><strong>Owner:</strong> {{ownerName}} ({{ownerEmail}})</p>
<p><strong>Renter:</strong> {{renterName}} ({{renterEmail}})</p>
</div>
<h2>Return Details</h2>
<div class="alert-box">
<p><strong>Scheduled End:</strong> {{scheduledEnd}}</p>
<p><strong>Actual Return:</strong> {{actualReturn}}</p>
<p><strong>Hours Late:</strong> {{hoursLate}}</p>
<p><strong>Calculated Late Fee:</strong> ${{lateFee}}</p>
</div>
<h2>Next Steps</h2>
<p>Please follow this process:</p>
<ol style="color: #495057; margin: 20px 0; padding-left: 20px;">
<li>Send an email to the renter ({{renterEmail}}) confirming the late return details</li>
<li>Include the calculated late fee amount and reason for the charge</li>
<li>Provide the renter with 48 hours to respond</li>
<li>If the renter agrees or does not respond within 48 hours, manually charge the late fee through the Stripe dashboard</li>
<li>If the renter disputes, review the case and take appropriate action</li>
</ol>
<div class="info-box">
<p><strong>Note:</strong> The late fee has NOT been automatically charged. Manual processing is required.</p>
</div>
<p>Thank you for your attention to this matter.</p>

View File

@@ -0,0 +1,40 @@
<h1>Lost Item Claim Filed - Action Required</h1>
<p>Hello Customer Service Team,</p>
<p>A lost item claim has been filed by an item owner and requires review and processing:</p>
<div class="info-box">
<p><strong>Rental ID:</strong> {{rentalId}}</p>
<p><strong>Item:</strong> {{itemName}}</p>
<p><strong>Owner:</strong> {{ownerName}} ({{ownerEmail}})</p>
<p><strong>Renter:</strong> {{renterName}} ({{renterEmail}})</p>
</div>
<h2>Lost Item Details</h2>
<div class="alert-box">
<p><strong>Reported Lost At:</strong> {{reportedAt}}</p>
<p><strong>Scheduled Return Date:</strong> {{scheduledReturnDate}}</p>
<p><strong>Replacement Cost:</strong> ${{replacementCost}}</p>
</div>
<h2>Next Steps</h2>
<p>Please follow this process:</p>
<ol style="color: #495057; margin: 20px 0; padding-left: 20px;">
<li>Review the lost item claim and rental history</li>
<li>Send an email to the renter ({{renterEmail}}) with the lost item claim details</li>
<li>Include the replacement cost amount: ${{replacementCost}}</li>
<li>Request the renter's response and provide 48 hours to reply</li>
<li>If the renter agrees or does not respond within 48 hours, manually charge the replacement cost through the Stripe dashboard</li>
<li>If the renter disputes and claims they returned the item, open a formal dispute case and review evidence from both parties</li>
<li>Request proof of return from the renter if they dispute the claim</li>
</ol>
<div class="info-box">
<p><strong>Note:</strong> The replacement fee has NOT been automatically charged. Manual review and processing is required.</p>
</div>
<p>Thank you for your attention to this matter.</p>

View File

@@ -0,0 +1,281 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>{{title}}</title>
<style>
/* Reset styles */
body, table, td, p, a, li, blockquote {
-webkit-text-size-adjust: 100%;
-ms-text-size-adjust: 100%;
}
table, td {
mso-table-lspace: 0pt;
mso-table-rspace: 0pt;
}
img {
-ms-interpolation-mode: bicubic;
}
/* Base styles */
body {
margin: 0;
padding: 0;
width: 100% !important;
min-width: 100%;
height: 100%;
background-color: #f8f9fa;
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;
line-height: 1.6;
color: #212529;
}
/* Container */
.email-container {
max-width: 600px;
margin: 0 auto;
background-color: #ffffff;
border-radius: 8px;
overflow: hidden;
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
}
/* Header */
.header {
background: linear-gradient(135deg, #28a745 0%, #20c997 100%);
padding: 40px 30px;
text-align: center;
}
.logo {
font-size: 32px;
font-weight: 700;
color: #ffffff;
text-decoration: none;
letter-spacing: -1px;
}
.tagline {
color: #d4edda;
font-size: 14px;
margin-top: 8px;
}
/* Content */
.content {
padding: 40px 30px;
}
.content h1 {
font-size: 24px;
font-weight: 600;
margin: 0 0 20px 0;
color: #212529;
}
.content h2 {
font-size: 20px;
font-weight: 600;
margin: 30px 0 15px 0;
color: #495057;
}
.content p {
margin: 0 0 16px 0;
color: #6c757d;
line-height: 1.6;
}
.content strong {
color: #495057;
}
/* Button */
.button {
display: inline-block;
background: linear-gradient(135deg, #28a745 0%, #20c997 100%);
color: #ffffff !important;
text-decoration: none;
padding: 16px 32px;
border-radius: 6px;
font-weight: 600;
margin: 20px 0;
text-align: center;
transition: all 0.3s ease;
}
.button:hover {
transform: translateY(-2px);
box-shadow: 0 4px 12px rgba(40, 167, 69, 0.4);
}
/* Success box */
.success-box {
background-color: #d4edda;
border-left: 4px solid #28a745;
padding: 20px;
margin: 20px 0;
border-radius: 0 6px 6px 0;
}
.success-box p {
margin: 0;
color: #155724;
}
.success-box .icon {
font-size: 24px;
margin-bottom: 10px;
}
/* Info table */
.info-table {
width: 100%;
border-collapse: collapse;
margin: 20px 0;
background-color: #f8f9fa;
border-radius: 6px;
overflow: hidden;
}
.info-table th,
.info-table td {
padding: 15px;
text-align: left;
border-bottom: 1px solid #dee2e6;
}
.info-table th {
background-color: #e9ecef;
font-weight: 600;
color: #495057;
}
.info-table td {
color: #6c757d;
}
.info-table tr:last-child td {
border-bottom: none;
}
/* Footer */
.footer {
background-color: #f8f9fa;
padding: 30px;
text-align: center;
border-top: 1px solid #e9ecef;
}
.footer p {
margin: 0 0 10px 0;
font-size: 14px;
color: #6c757d;
}
.footer a {
color: #667eea;
text-decoration: none;
}
.footer a:hover {
text-decoration: underline;
}
/* Responsive */
@media only screen and (max-width: 600px) {
.email-container {
margin: 0;
border-radius: 0;
}
.header, .content, .footer {
padding: 20px;
}
.logo {
font-size: 28px;
}
.content h1 {
font-size: 22px;
}
.button {
display: block;
width: 100%;
box-sizing: border-box;
}
.info-table th,
.info-table td {
padding: 10px;
font-size: 14px;
}
}
</style>
</head>
<body>
<div class="email-container">
<div class="header">
<div class="logo">RentAll</div>
<div class="tagline">Rental Confirmed</div>
</div>
<div class="content">
<h1>✅ {{title}}</h1>
<p>{{message}}</p>
<div class="success-box">
<div class="icon">🎉</div>
<p><strong>Great news!</strong> Your rental has been successfully confirmed and you're all set.</p>
</div>
<h2>Rental Details</h2>
<table class="info-table">
<tr>
<th>Item</th>
<td>{{itemName}}</td>
</tr>
<tr>
<th>Start Date</th>
<td>{{startDate}}</td>
</tr>
<tr>
<th>End Date</th>
<td>{{endDate}}</td>
</tr>
</table>
<a href="#" class="button">View Rental Details</a>
<h2>What's next?</h2>
<ul>
<li><strong>Before pickup:</strong> You'll receive a reminder to take condition photos</li>
<li><strong>During rental:</strong> Enjoy your rental and treat it with care</li>
<li><strong>At return:</strong> Take photos and return the item as agreed</li>
<li><strong>After return:</strong> Leave a review to help the community</li>
</ul>
<p><strong>Important reminders:</strong></p>
<ul>
<li>Take condition photos at pickup and return</li>
<li>Follow any specific care instructions provided</li>
<li>Return the item on time and in good condition</li>
<li>Contact the owner if you have any questions</li>
</ul>
<p>Thank you for choosing RentAll! We hope you have a great rental experience.</p>
</div>
<div class="footer">
<p>&copy; 2024 RentAll. All rights reserved.</p>
<p>You received this email because you have a confirmed rental on RentAll.</p>
<p>If you have any questions, please <a href="mailto:support@rentall.com">contact our support team</a>.</p>
</div>
</div>
</body>
</html>