This commit is contained in:
RDeck 2025-05-29 13:33:02 -04:00
parent bba2f28bcf
commit dc97ce2906
8 changed files with 507 additions and 492 deletions

Binary file not shown.

View File

@ -2,13 +2,21 @@
"Version": 1, "Version": 1,
"WorkspaceRootPath": "C:\\Repos\\SummerBestWebForm2\\", "WorkspaceRootPath": "C:\\Repos\\SummerBestWebForm2\\",
"Documents": [ "Documents": [
{
"AbsoluteMoniker": "D:0:0:{10E16044-8880-42A4-866B-B0461C450A71}|SummerBestWebForm2.csproj|c:\\repos\\summerbestwebform2\\components\\pages\\home.razor.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{10E16044-8880-42A4-866B-B0461C450A71}|SummerBestWebForm2.csproj|solutionrelative:components\\pages\\home.razor.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{ {
"AbsoluteMoniker": "D:0:0:{10E16044-8880-42A4-866B-B0461C450A71}|SummerBestWebForm2.csproj|c:\\repos\\summerbestwebform2\\components\\pages\\home.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}", "AbsoluteMoniker": "D:0:0:{10E16044-8880-42A4-866B-B0461C450A71}|SummerBestWebForm2.csproj|c:\\repos\\summerbestwebform2\\components\\pages\\home.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}",
"RelativeMoniker": "D:0:0:{10E16044-8880-42A4-866B-B0461C450A71}|SummerBestWebForm2.csproj|solutionrelative:components\\pages\\home.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}" "RelativeMoniker": "D:0:0:{10E16044-8880-42A4-866B-B0461C450A71}|SummerBestWebForm2.csproj|solutionrelative:components\\pages\\home.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}"
}, },
{ {
"AbsoluteMoniker": "D:0:0:{10E16044-8880-42A4-866B-B0461C450A71}|SummerBestWebForm2.csproj|c:\\repos\\summerbestwebform2\\components\\pages\\home.razor.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "AbsoluteMoniker": "D:0:0:{10E16044-8880-42A4-866B-B0461C450A71}|SummerBestWebForm2.csproj|c:\\repos\\summerbestwebform2\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{10E16044-8880-42A4-866B-B0461C450A71}|SummerBestWebForm2.csproj|solutionrelative:components\\pages\\home.razor.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" "RelativeMoniker": "D:0:0:{10E16044-8880-42A4-866B-B0461C450A71}|SummerBestWebForm2.csproj|solutionrelative:program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{10E16044-8880-42A4-866B-B0461C450A71}|SummerBestWebForm2.csproj|c:\\repos\\summerbestwebform2\\components\\app.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}",
"RelativeMoniker": "D:0:0:{10E16044-8880-42A4-866B-B0461C450A71}|SummerBestWebForm2.csproj|solutionrelative:components\\app.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}"
} }
], ],
"DocumentGroupContainers": [ "DocumentGroupContainers": [
@ -18,7 +26,7 @@
"DocumentGroups": [ "DocumentGroups": [
{ {
"DockedWidth": 200, "DockedWidth": 200,
"SelectedChildIndex": 11, "SelectedChildIndex": 12,
"Children": [ "Children": [
{ {
"$type": "Bookmark", "$type": "Bookmark",
@ -66,29 +74,55 @@
}, },
{ {
"$type": "Document", "$type": "Document",
"DocumentIndex": 0, "DocumentIndex": 1,
"Title": "Home.razor", "Title": "Home.razor",
"DocumentMoniker": "C:\\Repos\\SummerBestWebForm2\\Components\\Pages\\Home.razor", "DocumentMoniker": "C:\\Repos\\SummerBestWebForm2\\Components\\Pages\\Home.razor",
"RelativeDocumentMoniker": "Components\\Pages\\Home.razor", "RelativeDocumentMoniker": "Components\\Pages\\Home.razor",
"ToolTip": "C:\\Repos\\SummerBestWebForm2\\Components\\Pages\\Home.razor", "ToolTip": "C:\\Repos\\SummerBestWebForm2\\Components\\Pages\\Home.razor",
"RelativeToolTip": "Components\\Pages\\Home.razor", "RelativeToolTip": "Components\\Pages\\Home.razor",
"ViewState": "AgIAAJgBAAAAAAAAAAAcwL4BAAAAAAAAAAAAAA==", "ViewState": "AgIAABMAAAAAAAAAAAAAADEAAAAwAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000759|", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000759|",
"WhenOpened": "2025-05-29T13:04:23.98Z", "WhenOpened": "2025-05-29T13:04:23.98Z",
"EditorCaption": "" "EditorCaption": ""
}, },
{ {
"$type": "Document", "$type": "Document",
"DocumentIndex": 1, "DocumentIndex": 0,
"Title": "Home.razor.cs", "Title": "Home.razor.cs",
"DocumentMoniker": "C:\\Repos\\SummerBestWebForm2\\Components\\Pages\\Home.razor.cs", "DocumentMoniker": "C:\\Repos\\SummerBestWebForm2\\Components\\Pages\\Home.razor.cs",
"RelativeDocumentMoniker": "Components\\Pages\\Home.razor.cs", "RelativeDocumentMoniker": "Components\\Pages\\Home.razor.cs",
"ToolTip": "C:\\Repos\\SummerBestWebForm2\\Components\\Pages\\Home.razor.cs", "ToolTip": "C:\\Repos\\SummerBestWebForm2\\Components\\Pages\\Home.razor.cs",
"RelativeToolTip": "Components\\Pages\\Home.razor.cs", "RelativeToolTip": "Components\\Pages\\Home.razor.cs",
"ViewState": "AgIAAKMBAAAAAAAAAAAcwLoBAAAvAAAAAAAAAA==", "ViewState": "AgIAAF4AAAAAAAAAAAAAAGcAAAA+AAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-05-29T14:37:32.314Z", "WhenOpened": "2025-05-29T14:37:32.314Z",
"EditorCaption": "" "EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 3,
"Title": "App.razor",
"DocumentMoniker": "C:\\Repos\\SummerBestWebForm2\\Components\\App.razor",
"RelativeDocumentMoniker": "Components\\App.razor",
"ToolTip": "C:\\Repos\\SummerBestWebForm2\\Components\\App.razor",
"RelativeToolTip": "Components\\App.razor",
"ViewState": "AgIAACYAAAAAAAAAAAAYwEsAAABNAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000759|",
"WhenOpened": "2025-05-29T16:20:24.809Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 2,
"Title": "Program.cs",
"DocumentMoniker": "C:\\Repos\\SummerBestWebForm2\\Program.cs",
"RelativeDocumentMoniker": "Program.cs",
"ToolTip": "C:\\Repos\\SummerBestWebForm2\\Program.cs",
"RelativeToolTip": "Program.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-05-29T16:21:02.367Z",
"EditorCaption": ""
} }
] ]
} }

View File

@ -2,13 +2,21 @@
"Version": 1, "Version": 1,
"WorkspaceRootPath": "C:\\Repos\\SummerBestWebForm2\\", "WorkspaceRootPath": "C:\\Repos\\SummerBestWebForm2\\",
"Documents": [ "Documents": [
{
"AbsoluteMoniker": "D:0:0:{10E16044-8880-42A4-866B-B0461C450A71}|SummerBestWebForm2.csproj|c:\\repos\\summerbestwebform2\\components\\pages\\home.razor.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{10E16044-8880-42A4-866B-B0461C450A71}|SummerBestWebForm2.csproj|solutionrelative:components\\pages\\home.razor.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{ {
"AbsoluteMoniker": "D:0:0:{10E16044-8880-42A4-866B-B0461C450A71}|SummerBestWebForm2.csproj|c:\\repos\\summerbestwebform2\\components\\pages\\home.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}", "AbsoluteMoniker": "D:0:0:{10E16044-8880-42A4-866B-B0461C450A71}|SummerBestWebForm2.csproj|c:\\repos\\summerbestwebform2\\components\\pages\\home.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}",
"RelativeMoniker": "D:0:0:{10E16044-8880-42A4-866B-B0461C450A71}|SummerBestWebForm2.csproj|solutionrelative:components\\pages\\home.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}" "RelativeMoniker": "D:0:0:{10E16044-8880-42A4-866B-B0461C450A71}|SummerBestWebForm2.csproj|solutionrelative:components\\pages\\home.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}"
}, },
{ {
"AbsoluteMoniker": "D:0:0:{10E16044-8880-42A4-866B-B0461C450A71}|SummerBestWebForm2.csproj|c:\\repos\\summerbestwebform2\\components\\pages\\home.razor.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "AbsoluteMoniker": "D:0:0:{10E16044-8880-42A4-866B-B0461C450A71}|SummerBestWebForm2.csproj|c:\\repos\\summerbestwebform2\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{10E16044-8880-42A4-866B-B0461C450A71}|SummerBestWebForm2.csproj|solutionrelative:components\\pages\\home.razor.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" "RelativeMoniker": "D:0:0:{10E16044-8880-42A4-866B-B0461C450A71}|SummerBestWebForm2.csproj|solutionrelative:program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{10E16044-8880-42A4-866B-B0461C450A71}|SummerBestWebForm2.csproj|c:\\repos\\summerbestwebform2\\components\\app.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}",
"RelativeMoniker": "D:0:0:{10E16044-8880-42A4-866B-B0461C450A71}|SummerBestWebForm2.csproj|solutionrelative:components\\app.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}"
} }
], ],
"DocumentGroupContainers": [ "DocumentGroupContainers": [
@ -18,7 +26,7 @@
"DocumentGroups": [ "DocumentGroups": [
{ {
"DockedWidth": 200, "DockedWidth": 200,
"SelectedChildIndex": 11, "SelectedChildIndex": 12,
"Children": [ "Children": [
{ {
"$type": "Bookmark", "$type": "Bookmark",
@ -66,29 +74,55 @@
}, },
{ {
"$type": "Document", "$type": "Document",
"DocumentIndex": 0, "DocumentIndex": 1,
"Title": "Home.razor", "Title": "Home.razor",
"DocumentMoniker": "C:\\Repos\\SummerBestWebForm2\\Components\\Pages\\Home.razor", "DocumentMoniker": "C:\\Repos\\SummerBestWebForm2\\Components\\Pages\\Home.razor",
"RelativeDocumentMoniker": "Components\\Pages\\Home.razor", "RelativeDocumentMoniker": "Components\\Pages\\Home.razor",
"ToolTip": "C:\\Repos\\SummerBestWebForm2\\Components\\Pages\\Home.razor", "ToolTip": "C:\\Repos\\SummerBestWebForm2\\Components\\Pages\\Home.razor",
"RelativeToolTip": "Components\\Pages\\Home.razor", "RelativeToolTip": "Components\\Pages\\Home.razor",
"ViewState": "AgIAAJgBAAAAAAAAAAAcwL4BAAAAAAAAAAAAAA==", "ViewState": "AgIAABMAAAAAAAAAAAAAADEAAAAwAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000759|", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000759|",
"WhenOpened": "2025-05-29T13:04:23.98Z", "WhenOpened": "2025-05-29T13:04:23.98Z",
"EditorCaption": "" "EditorCaption": ""
}, },
{ {
"$type": "Document", "$type": "Document",
"DocumentIndex": 1, "DocumentIndex": 0,
"Title": "Home.razor.cs", "Title": "Home.razor.cs",
"DocumentMoniker": "C:\\Repos\\SummerBestWebForm2\\Components\\Pages\\Home.razor.cs", "DocumentMoniker": "C:\\Repos\\SummerBestWebForm2\\Components\\Pages\\Home.razor.cs",
"RelativeDocumentMoniker": "Components\\Pages\\Home.razor.cs", "RelativeDocumentMoniker": "Components\\Pages\\Home.razor.cs",
"ToolTip": "C:\\Repos\\SummerBestWebForm2\\Components\\Pages\\Home.razor.cs", "ToolTip": "C:\\Repos\\SummerBestWebForm2\\Components\\Pages\\Home.razor.cs",
"RelativeToolTip": "Components\\Pages\\Home.razor.cs", "RelativeToolTip": "Components\\Pages\\Home.razor.cs",
"ViewState": "AgIAAKMBAAAAAAAAAAAcwLoBAAAvAAAAAAAAAA==", "ViewState": "AgIAAF4AAAAAAAAAAAAAAGcAAAA+AAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-05-29T14:37:32.314Z", "WhenOpened": "2025-05-29T14:37:32.314Z",
"EditorCaption": "" "EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 3,
"Title": "App.razor",
"DocumentMoniker": "C:\\Repos\\SummerBestWebForm2\\Components\\App.razor",
"RelativeDocumentMoniker": "Components\\App.razor",
"ToolTip": "C:\\Repos\\SummerBestWebForm2\\Components\\App.razor",
"RelativeToolTip": "Components\\App.razor",
"ViewState": "AgIAACYAAAAAAAAAAAAYwEsAAABNAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000759|",
"WhenOpened": "2025-05-29T16:20:24.809Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 2,
"Title": "Program.cs",
"DocumentMoniker": "C:\\Repos\\SummerBestWebForm2\\Program.cs",
"RelativeDocumentMoniker": "Program.cs",
"ToolTip": "C:\\Repos\\SummerBestWebForm2\\Program.cs",
"RelativeToolTip": "Program.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-05-29T16:21:02.367Z",
"EditorCaption": ""
} }
] ]
} }

View File

@ -73,6 +73,7 @@
} }
} }
</script> </script>
<script src="https://www.google.com/recaptcha/api.js" async defer></script>
<pre>@errMsg</pre> <pre>@errMsg</pre>
@if (appState != null) @if (appState != null)
{ {

View File

@ -8,173 +8,173 @@
@if (ShowWizard) @if (ShowWizard)
{ {
<div class="container"> <div class="container">
<div class="row"> <div class="row">
<div class="col-12"> <div class="col-12">
<TelerikWizard @bind-Value="@Value" OnFinish="OnFinishHandler" Width="100%" Height="95vh" Class="sbWizard" StepperPosition=WizardStepperPosition.Top> <TelerikWizard @bind-Value="@Value" OnFinish="OnFinishHandler" Width="100%" Height="95vh" Class="sbWizard" StepperPosition=WizardStepperPosition.Top>
<WizardSteps> <WizardSteps>
<WizardStep Label="Introduction" Icon="@SvgIcon.Globe" OnChange="@OnAudienceChoiceStepChange" Valid="@IsAudienceChoiceValid"> <WizardStep Label="Introduction" Icon="@SvgIcon.Globe" OnChange="@OnAudienceChoiceStepChange" Valid="@IsAudienceChoiceValid">
<Content> <Content>
<TelerikForm Model="@cardType" @ref="@IntroForm"> <TelerikForm Model="@cardType" @ref="@IntroForm">
<FormItems> <FormItems>
<FormItem> <FormItem>
<Template> <Template>
<div class="container"> <div class="container">
<div class="row"> <div class="row">
<div class="col-12 px-sm-5 mb-2"> <div class="col-12 px-sm-5 mb-2">
<h1>KeyMotive's Summer Growth Program</h1> <h1>KeyMotive's Summer Growth Program</h1>
<div class="px-sm-5 mb-2"> <div class="px-sm-5 mb-2">
<p>It's time for our Summer Growth Program!<br />If you're looking to kick off your summer season with a wildly successful campgaign, then you've come to the right place!</p> <p>It's time for our Summer Growth Program!<br />If you're looking to kick off your summer season with a wildly successful campgaign, then you've come to the right place!</p>
<p> <p>
Using this wizard, choose your target audience, decide what media you'd like to mail, choose from a few suggested designs (or request a custom design from our Using this wizard, choose your target audience, decide what media you'd like to mail, choose from a few suggested designs (or request a custom design from our
creative team), and that's it! creative team), and that's it!
</p> </p>
<p>Let us handle the rest!</p> <p>Let us handle the rest!</p>
</div> </div>
<div> <div>
<img src="/img/7ccdfcc7-f91b-497e-8c19-ebb3a4021ea3.png" class="img-fluid" /> <img src="/img/7ccdfcc7-f91b-497e-8c19-ebb3a4021ea3.png" class="img-fluid" />
</div> </div>
<div class="px-sm-5 mb-2 text-start"> <div class="px-sm-5 mb-2 text-start">
Your audience choices are: Your audience choices are:
<ul> <ul>
<li>A list of your <strong class="text-primary">Very Best Customers</strong> (always a heavy-hitting campaign!)</li> <li>A list of your <strong class="text-primary">Very Best Customers</strong> (always a heavy-hitting campaign!)</li>
<li> <li>
A list composed of <strong class="text-primary">Great Prospects</strong> near your shop, as well as a mix of formerly-Great Customers that you A list composed of <strong class="text-primary">Great Prospects</strong> near your shop, as well as a mix of formerly-Great Customers that you
<strong class="text-primary">haven't seen during the past 8 months</strong>. <strong class="text-primary">haven't seen during the past 8 months</strong>.
</li> </li>
</ul> </ul>
</div> </div>
<div class="px-sm-5 text-start"> <div class="px-sm-5 text-start">
<strong>Please Select:</strong> <strong>Please Select:</strong>
<TelerikRadioGroup Data="@audiences" <TelerikRadioGroup Data="@audiences"
@bind-Value="@audienceType" @bind-Value="@audienceType"
ValueField="@nameof(AudienceType.AudienceDescription)" ValueField="@nameof(AudienceType.AudienceDescription)"
TextField="@nameof(AudienceType.AudienceDescription)"> TextField="@nameof(AudienceType.AudienceDescription)">
</TelerikRadioGroup> </TelerikRadioGroup>
</div>
</div> </div>
</div> </div>
</div> </div>
</Template> </div>
</FormItem> </Template>
</FormItems> </FormItem>
<FormButtons> </FormItems>
<FormButtons>
@* Need this here to avoid addition of random submit button *@ @* Need this here to avoid addition of random submit button *@
</FormButtons> </FormButtons>
</TelerikForm> </TelerikForm>
</Content> </Content>
</WizardStep> </WizardStep>
@* *@ @* *@
@* Step 1 - plastic card vs postcard *@ @* Step 1 - plastic card vs postcard *@
@* *@ @* *@
<WizardStep Label="Card Type" Icon="@SvgIcon.EnvelopeBox" OnChange="@OnCardChoiceStepChange" Valid="@IsCardChoiceValid"> <WizardStep Label="Card Type" Icon="@SvgIcon.EnvelopeBox" OnChange="@OnCardChoiceStepChange" Valid="@IsCardChoiceValid">
<Content> <Content>
<TelerikForm Model="@cardType" @ref="@cardTypeForm"> <TelerikForm Model="@cardType" @ref="@cardTypeForm">
<FormItems> <FormItems>
<FormItem> <FormItem>
<Template> <Template>
<div class="container"> <div class="container">
<div class="row"> <div class="row">
<div class="col-12"> <div class="col-12">
<h1 class="text-center">Step 1 - Choose a Card Type</h1> <h1 class="text-center">Step 1 - Choose a Card Type</h1>
</div> </div>
<div class="col-12 text-center mb-3"> <div class="col-12 text-center mb-3">
<TelerikButtonGroup SelectionMode="@ButtonGroupSelectionMode.Single"> <TelerikButtonGroup SelectionMode="@ButtonGroupSelectionMode.Single">
<ButtonGroupToggleButton @bind-Selected="@isPlasticCard">Plastic Card</ButtonGroupToggleButton> <ButtonGroupToggleButton @bind-Selected="@isPlasticCard">Plastic Card</ButtonGroupToggleButton>
<ButtonGroupToggleButton @bind-Selected="@isPostcard">Postcard</ButtonGroupToggleButton> <ButtonGroupToggleButton @bind-Selected="@isPostcard">Postcard</ButtonGroupToggleButton>
</TelerikButtonGroup> </TelerikButtonGroup>
</div> </div>
@* Preview information about the selected card type*@ @* Preview information about the selected card type*@
@if (isPlasticCard) @if (isPlasticCard)
{ {
<div class="col-sm-4 mb-3 text-start"> <div class="col-sm-4 mb-3 text-start">
<h4>Very Popular Plastic Card Mailer!</h4> <h4>Very Popular Plastic Card Mailer!</h4>
<ul> <ul>
<li>As thick as a typical credit card!</li> <li>As thick as a typical credit card!</li>
<li>Large size piece (8&frac14; x 4 inches)</li> <li>Large size piece (8&frac14; x 4 inches)</li>
<li>Coupons pop out, offering great convenience for your customers!</li> <li>Coupons pop out, offering great convenience for your customers!</li>
<li>Leave it to us - we select, print, sort and mail for just <strong class="text-primary text-nowrap">$1.02 each</strong></li> <li>Leave it to us - we select, print, sort and mail for just <strong class="text-primary text-nowrap">$1.02 each</strong></li>
</ul> </ul>
</div> </div>
<div class="col-sm-8 text-center mb-3"> <div class="col-sm-8 text-center mb-3">
<img class="img-fluid" src="/img/1181c4aa-4f3f-4eb4-8d5d-7eff0131d5f2.png" /> <img class="img-fluid" src="/img/1181c4aa-4f3f-4eb4-8d5d-7eff0131d5f2.png" />
</div> </div>
} }
else else
{ {
<div class="col-sm-4 mb-3 text-start"> <div class="col-sm-4 mb-3 text-start">
<h4>Premium Postcard Really Stands Out in the Mailbox</h4> <h4>Premium Postcard Really Stands Out in the Mailbox</h4>
<ul> <ul>
<li>Premium paper, Jumbo-Sized (8&frac12; x 6 inches)</li> <li>Premium paper, Jumbo-Sized (8&frac12; x 6 inches)</li>
<li>UV gloss-coated</li> <li>UV gloss-coated</li>
<li>Choose from our selection, or ask for a custom design!</li> <li>Choose from our selection, or ask for a custom design!</li>
<li>Full service - select, print, sort, mail for just <strong class="text-primary text-nowrap">79&#162; each</strong></li> <li>Full service - select, print, sort, mail for just <strong class="text-primary text-nowrap">79&#162; each</strong></li>
</ul> </ul>
</div> </div>
<div class="col-sm-8 text-center mb-3"> <div class="col-sm-8 text-center mb-3">
<img class="img-fluid" src="/img/ad5a2b69-a493-429b-9edd-8320ec1e9c33.png" /> <img class="img-fluid" src="/img/ad5a2b69-a493-429b-9edd-8320ec1e9c33.png" />
</div> </div>
} }
</div>
</div> </div>
</Template> </div>
</FormItem> </Template>
</FormItems> </FormItem>
<FormButtons> </FormItems>
<FormButtons>
@* Need this here to avoid addition of random submit button *@ @* Need this here to avoid addition of random submit button *@
</FormButtons> </FormButtons>
</TelerikForm> </TelerikForm>
</Content> </Content>
</WizardStep> </WizardStep>
@* *@ @* *@
@* Step 2 - selecting card design *@ @* Step 2 - selecting card design *@
@* *@ @* *@
<WizardStep Label="Card Design" Icon="@SvgIcon.MapMarkerTarget" OnChange="@OnDesignStepChange" Valid="@IsDesignChoiceValid"> <WizardStep Label="Card Design" Icon="@SvgIcon.MapMarkerTarget" OnChange="@OnDesignStepChange" Valid="@IsDesignChoiceValid">
<Content> <Content>
<TelerikForm Model="@custOptions" @ref="@customizationForm"> <TelerikForm Model="@custOptions" @ref="@customizationForm">
<FormValidation> <FormValidation>
<DataAnnotationsValidator></DataAnnotationsValidator> <DataAnnotationsValidator></DataAnnotationsValidator>
</FormValidation> </FormValidation>
<FormItems> <FormItems>
<FormItem> <FormItem>
<Template> <Template>
<div class="container"> <div class="container">
<div class="row"> <div class="row">
<div class="col-12"> <div class="col-12">
<h1 class="text-center">Choose a Design</h1> <h1 class="text-center">Choose a Design</h1>
</div> </div>
<div class="col-12 text-center mb-3"> <div class="col-12 text-center mb-3">
@* Button logic *@ @* Button logic *@
<div class="text-center"> <div class="text-center">
<TelerikButtonGroup SelectionMode="@ButtonGroupSelectionMode.Single"> <TelerikButtonGroup SelectionMode="@ButtonGroupSelectionMode.Single">
@if (isPlasticCard) @if (isPlasticCard)
{ {
<ButtonGroupToggleButton @bind-Selected="@designOne">Plastic Card 1</ButtonGroupToggleButton> <ButtonGroupToggleButton @bind-Selected="@designOne">Plastic Card 1</ButtonGroupToggleButton>
<ButtonGroupToggleButton @bind-Selected="@designTwo">Plastic Card 2</ButtonGroupToggleButton> <ButtonGroupToggleButton @bind-Selected="@designTwo">Plastic Card 2</ButtonGroupToggleButton>
<ButtonGroupToggleButton @bind-Selected="@designThree">Plastic Card 3</ButtonGroupToggleButton> <ButtonGroupToggleButton @bind-Selected="@designThree">Plastic Card 3</ButtonGroupToggleButton>
<ButtonGroupToggleButton @bind-Selected="@designCustom">Custom Design</ButtonGroupToggleButton> <ButtonGroupToggleButton @bind-Selected="@designCustom">Custom Design</ButtonGroupToggleButton>
} }
else else
{ {
<ButtonGroupToggleButton @bind-Selected="@designOne">Postcard 1</ButtonGroupToggleButton> <ButtonGroupToggleButton @bind-Selected="@designOne">Postcard 1</ButtonGroupToggleButton>
<ButtonGroupToggleButton @bind-Selected="@designTwo">Postcard 2</ButtonGroupToggleButton> <ButtonGroupToggleButton @bind-Selected="@designTwo">Postcard 2</ButtonGroupToggleButton>
<ButtonGroupToggleButton @bind-Selected="@designThree">Postcard 3</ButtonGroupToggleButton> <ButtonGroupToggleButton @bind-Selected="@designThree">Postcard 3</ButtonGroupToggleButton>
<ButtonGroupToggleButton @bind-Selected="@designCustom">Custom Design</ButtonGroupToggleButton> <ButtonGroupToggleButton @bind-Selected="@designCustom">Custom Design</ButtonGroupToggleButton>
} }
</TelerikButtonGroup> </TelerikButtonGroup>
<br /><br /> <br /><br />
@* Card preview logic *@ @* Card preview logic *@
@if (designOne) @if (designOne)
{ {
@if (isPostcard) @if (isPostcard)
{ {
<img src="/img/Postcard1_Front.png" class="img-fluid" alt="Back" /> <img src="/img/Postcard1_Front.png" class="img-fluid" alt="Back" />
<img src="/img/Postcard1_Back.png" class="img-fluid" alt="Front" /> <img src="/img/Postcard1_Back.png" class="img-fluid" alt="Front" />
} }
else else
{ {
<img src="/img/Plastic1_Back.png" class="img-fluid" alt="Back" /> <img src="/img/Plastic1_Back.png" class="img-fluid" alt="Back" />
<img src="/img/Plastic1_Front.png" class="img-fluid" alt="Front" /> <img src="/img/Plastic1_Front.png" class="img-fluid" alt="Front" />
} }
} }
@ -182,321 +182,334 @@
{ {
@if (isPostcard) @if (isPostcard)
{ {
<img src="/img/Postcard2_Front.png" class="img-fluid" alt="Back" /> <img src="/img/Postcard2_Front.png" class="img-fluid" alt="Back" />
<img src="/img/Postcard2_Back.png" class="img-fluid" alt="Front" /> <img src="/img/Postcard2_Back.png" class="img-fluid" alt="Front" />
} }
else else
{ {
<img src="/img/Plastic2_Back.png" class="img-fluid" alt="Back" /> <img src="/img/Plastic2_Back.png" class="img-fluid" alt="Back" />
<img src="/img/Plastic2_Front.png" class="img-fluid" alt="Front" /> <img src="/img/Plastic2_Front.png" class="img-fluid" alt="Front" />
} }
} }
else if (designThree) else if (designThree)
{ {
@if (isPostcard) @if (isPostcard)
{ {
<img src="/img/Postcard3_Front.png" class="img-fluid" alt="Back" /> <img src="/img/Postcard3_Front.png" class="img-fluid" alt="Back" />
<img src="/img/Postcard3_Back.png" class="img-fluid" alt="Front" /> <img src="/img/Postcard3_Back.png" class="img-fluid" alt="Front" />
} }
else else
{ {
<img src="/img/Plastic3_Back.png" class="img-fluid" alt="Back" /> <img src="/img/Plastic3_Back.png" class="img-fluid" alt="Back" />
<img src="/img/Plastic3_Front.png" class="img-fluid" alt="Front" /> <img src="/img/Plastic3_Front.png" class="img-fluid" alt="Front" />
} }
} }
else if (designCustom) else if (designCustom)
{ {
<div class="d-sm-flex justify-content-around"> <div class="d-sm-flex justify-content-around">
<div class="px-5"> <div class="px-5">
<h4 class="mb-5">If you have your own idea in mind, or you would like to try another design, our creative design team will make it happen!</h4> <h4 class="mb-5">If you have your own idea in mind, or you would like to try another design, our creative design team will make it happen!</h4>
</div> </div>
<div class="px-5"> <div class="px-5">
<p class="fst-italic">When you're asked for "additional comments," just give us an idea of what you have in mind and our customer care team will have some ideas <p class="fst-italic">When you're asked for "additional comments," just give us an idea of what you have in mind and our customer care team will have some ideas
ready when we call you! ready when we call you!
</p> </p>
</div> </div>
</div> </div>
<div> <div>
@if (isPostcard) @if (isPostcard)
{ {
<img src="/img/cfeb51c5-5373-44b5-be19-dadea452cc41.png" class="img-fluid" /> <img src="/img/cfeb51c5-5373-44b5-be19-dadea452cc41.png" class="img-fluid" />
} }
else else
{ {
<img src="/img/a41f648d-6b39-41f1-bbe5-084fb8a71a30.png" class="img-fluid" /> <img src="/img/a41f648d-6b39-41f1-bbe5-084fb8a71a30.png" class="img-fluid" />
} }
</div> </div>
} }
</div>
</div> </div>
</div> </div>
</div> </div>
</Template> </div>
</FormItem> </Template>
</FormItems> </FormItem>
<FormButtons /> </FormItems>
</TelerikForm> <FormButtons />
</Content> </TelerikForm>
</WizardStep> </Content>
</WizardStep>
@* *@ @* *@
@* Step 3 - For postcards, choose a verse and a signature *@ @* Step 3 - For postcards, choose a verse and a signature *@
@* *@ @* *@
<WizardStep Label="Customization" OnChange="@OnMessagingStepChange" Valid="@isMessagingValid"> <WizardStep Label="Customization" OnChange="@OnMessagingStepChange" Valid="@isMessagingValid">
<Content> <Content>
<TelerikForm Model="@messagingOptions" @ref="@messagingForm"> <TelerikForm Model="@messagingOptions" @ref="@messagingForm">
<FormItems> <FormItems>
<FormItem> <FormItem>
<Template> <Template>
<div class="container"> <div class="container">
<div class="row"> <div class="row">
@if (isPlasticCard) @if (isPlasticCard)
{ {
<div class="col-12"> <div class="col-12">
<h4>No customization needed. Please proceed to logo selection.</h4> <h4>No customization needed. Please proceed to logo selection.</h4>
</div> </div>
} }
else else
{ {
<div class="col-12"> <div class="col-12">
<h4 class="mb-3">Please Select a Verse</h4> <h4 class="mb-3">Please Select a Verse</h4>
<TelerikButtonGroup SelectionMode="@ButtonGroupSelectionMode.Single" Class="vertical-buttons block-buttons mb-5"> <TelerikButtonGroup SelectionMode="@ButtonGroupSelectionMode.Single" Class="vertical-buttons block-buttons mb-5">
<ButtonGroupToggleButton @bind-Selected="@verseOne">Option 1</ButtonGroupToggleButton> <ButtonGroupToggleButton @bind-Selected="@verseOne">Option 1</ButtonGroupToggleButton>
<ButtonGroupToggleButton @bind-Selected="@verseTwo">Option 2</ButtonGroupToggleButton> <ButtonGroupToggleButton @bind-Selected="@verseTwo">Option 2</ButtonGroupToggleButton>
<ButtonGroupToggleButton @bind-Selected="@verseThree">Option 3</ButtonGroupToggleButton> <ButtonGroupToggleButton @bind-Selected="@verseThree">Option 3</ButtonGroupToggleButton>
</TelerikButtonGroup> </TelerikButtonGroup>
@if (verseOne) @if (verseOne)
{ {
<p class="fst-italic">Thank you for making our success possible.</p> <p class="fst-italic">Thank you for making our success possible.</p>
<p class="fst-italic">We appreciate loyal customers like you and look forward to continuing to be your complete auto repair, service and tire center!</p> <p class="fst-italic">We appreciate loyal customers like you and look forward to continuing to be your complete auto repair, service and tire center!</p>
} }
else if (verseTwo) else if (verseTwo)
{ {
<p class="fst-italic">We appreciate the trust you have shown in us and look forward to working with you in the future!</p> <p class="fst-italic">We appreciate the trust you have shown in us and look forward to working with you in the future!</p>
} }
else if (verseThree) else if (verseThree)
{ {
<p class="fst-italic">We want you to know that we truly appreciate your business and will make every effort possible to continue to provide you with excellent car care.</p> <p class="fst-italic">We want you to know that we truly appreciate your business and will make every effort possible to continue to provide you with excellent car care.</p>
} }
</div> </div>
<div class="col-12"> <div class="col-12">
<hr class="m-5" /> <hr class="m-5" />
<h4 class="mb-3">Please Select a Signature</h4> <h4 class="mb-3">Please Select a Signature</h4>
<TelerikButtonGroup SelectionMode="@ButtonGroupSelectionMode.Single" Class="mb-5"> <TelerikButtonGroup SelectionMode="@ButtonGroupSelectionMode.Single" Class="mb-5">
<ButtonGroupToggleButton @bind-Selected="@sigOne">From Your Friends</ButtonGroupToggleButton> <ButtonGroupToggleButton @bind-Selected="@sigOne">From Your Friends</ButtonGroupToggleButton>
<ButtonGroupToggleButton @bind-Selected="@sigTwo">Name, Title, Phone Number</ButtonGroupToggleButton> <ButtonGroupToggleButton @bind-Selected="@sigTwo">Name, Title, Phone Number</ButtonGroupToggleButton>
<ButtonGroupToggleButton @bind-Selected="@sigThree">Custom</ButtonGroupToggleButton> <ButtonGroupToggleButton @bind-Selected="@sigThree">Custom</ButtonGroupToggleButton>
</TelerikButtonGroup> </TelerikButtonGroup>
@if (sigOne) @if (sigOne)
{ {
<p>From your friends at <strong>TopSpeed Tire</strong><br /><i>(your location name)</i></p> <p>From your friends at <strong>TopSpeed Tire</strong><br /><i>(your location name)</i></p>
<p><strong>(888) 555-3712</strong><br /><i>(your location phone number)</i></p> <p><strong>(888) 555-3712</strong><br /><i>(your location phone number)</i></p>
} }
else if (sigTwo) else if (sigTwo)
{ {
<label style="display:block" for="CustomName" class="k-label k-form-label text-center">Name:</label> <label style="display:block" for="CustomName" class="k-label k-form-label text-center">Name:</label>
<TelerikTextBox Class="mb-3" Id="CustomName" @bind-Value="@customName" MaxLength="50" Width="25rem"></TelerikTextBox> <TelerikTextBox Class="mb-3" Id="CustomName" @bind-Value="@customName" MaxLength="50" Width="25rem"></TelerikTextBox>
<label style="display:block" for="CustomTitle" class="k-label k-form-label text-center">Title:</label> <label style="display:block" for="CustomTitle" class="k-label k-form-label text-center">Title:</label>
<TelerikTextBox Class="mb-3" Id="CustomTitle" @bind-Value="@customTitle" MaxLength="50" Width="25rem"></TelerikTextBox> <TelerikTextBox Class="mb-3" Id="CustomTitle" @bind-Value="@customTitle" MaxLength="50" Width="25rem"></TelerikTextBox>
<label style="display:block" for="CustomPhone" class="k-label k-form-label text-center">Phone:</label> <label style="display:block" for="CustomPhone" class="k-label k-form-label text-center">Phone:</label>
<TelerikTextBox Class="mb-3" Id="CustomPhone" @bind-Value="@customPhone" MaxLength="15" Width="20rem"></TelerikTextBox> <TelerikTextBox Class="mb-3" Id="CustomPhone" @bind-Value="@customPhone" MaxLength="15" Width="20rem"></TelerikTextBox>
} }
else if (sigThree) else if (sigThree)
{ {
<br /> <br />
<label style="display:block" for="CustomSignature" class="text-center">Custom Message (max 30 character/line up to 4 lines)</label> <label style="display:block" for="CustomSignature" class="text-center">Custom Message (max 30 character/line up to 4 lines)</label>
<br /> <br />
<TelerikTextArea Id="CustomSignature" @bind-Value="@customSignature" Rows="4" Cols="35" MaxLength="120"></TelerikTextArea> <TelerikTextArea Id="CustomSignature" @bind-Value="@customSignature" Rows="4" Cols="35" MaxLength="120"></TelerikTextArea>
} }
</div> </div>
} }
<div class="col-12 text-center mb-3"> <div class="col-12 text-center mb-3">
</div>
</div> </div>
</div> </div>
</Template> </div>
</FormItem> </Template>
</FormItems> </FormItem>
<FormButtons /> </FormItems>
</TelerikForm> <FormButtons />
</Content> </TelerikForm>
</WizardStep> </Content>
</WizardStep>
@* *@ @* *@
@* Step 4 - Logo Selection *@ @* Step 4 - Logo Selection *@
@* *@ @* *@
<WizardStep Label="Logos" OnChange="@OnLogoStepChange" Valid="@isLogoValid"> <WizardStep Label="Logos" OnChange="@OnLogoStepChange" Valid="@isLogoValid">
<Content> <Content>
<TelerikForm Model="@logoOptions" <TelerikForm Model="@logoOptions"
@ref="@logoForm"> @ref="@logoForm">
<FormItems> <FormItems>
<FormItem> <FormItem>
<Template> <Template>
<div class="container"> <div class="container">
<div class="row"> <div class="row">
<div class="col-12"> <div class="col-12">
<TelerikCheckBox Id="goodyearBox" @bind-Value="@goodyear" /> <TelerikCheckBox Id="goodyearBox" @bind-Value="@goodyear" />
<label for="goodyearBox">Goodyear Logo</label> <label for="goodyearBox">Goodyear Logo</label>
<TelerikCheckBox Id="michelinBox" @bind-Value="@michelin" /> <TelerikCheckBox Id="michelinBox" @bind-Value="@michelin" />
<label for="michelinBox">Michelin Logo</label> <label for="michelinBox">Michelin Logo</label>
<TelerikCheckBox Id="customBox" @bind-Value="@custom" /> <TelerikCheckBox Id="customBox" @bind-Value="@custom" />
<label for="customBox">Custom Logo</label> <label for="customBox">Custom Logo</label>
</div> </div>
<div class="col-12 mt-5"> <div class="col-12 mt-5">
@if (goodyear) @if (goodyear)
{ {
<div class="p-5"> <div class="p-5">
<img src="/img/goodyear.png" class="img-fluid" /> <img src="/img/goodyear.png" class="img-fluid" />
</div> </div>
} }
@if (michelin) @if (michelin)
{ {
<div class="p-5"> <div class="p-5">
<img src="/img/michelin.png" class="img-fluid" /> <img src="/img/michelin.png" class="img-fluid" />
</div> </div>
} }
@if (custom) @if (custom)
{ {
<div class="p-5"> <div class="p-5">
<img src="/img/6784cef1-9ed9-4c91-94bc-5e7a267b5a4f.png" class="img-fluid" /> <img src="/img/6784cef1-9ed9-4c91-94bc-5e7a267b5a4f.png" class="img-fluid" />
</div> </div>
} }
</div>
</div> </div>
</div> </div>
</Template> </div>
</FormItem> </Template>
</FormItems> </FormItem>
<FormButtons> </FormItems>
</FormButtons> <FormButtons>
</TelerikForm> </FormButtons>
</Content> </TelerikForm>
</WizardStep> </Content>
</WizardStep>
@* *@ @* *@
@* Step 5 - Offer selection for Plastic cards *@ @* Step 5 - Offer selection for Plastic cards *@
@* *@ @* *@
<WizardStep Label="Offers" OnChange="@OnOfferStepChange" Valid="@isOfferSelectionValid"> <WizardStep Label="Offers" OnChange="@OnOfferStepChange" Valid="@isOfferSelectionValid">
<Content> <Content>
<TelerikForm Model="@offerOptions" @ref="@offerForm"> <TelerikForm Model="@offerOptions" @ref="@offerForm">
<FormItems> <FormItems>
<FormItem> <FormItem>
<Template> <Template>
<div class="container"> <div class="container">
<div class="row"> <div class="row">
@if (isPlasticCard) @if (isPlasticCard)
{ {
<div class="col-12"> <div class="col-12">
<h4 class="my-3">Please select two (2) full size offers:</h4> <h4 class="my-3">Please select two (2) full size offers:</h4>
<TelerikButtonGroup SelectionMode="@ButtonGroupSelectionMode.Multiple"> <TelerikButtonGroup SelectionMode="@ButtonGroupSelectionMode.Multiple">
<ButtonGroupToggleButton @bind-Selected="@bigOffers[0]"><img src="/img/A1.png" /></ButtonGroupToggleButton> <ButtonGroupToggleButton @bind-Selected="@bigOffers[0]"><img src="/img/A1.png" /></ButtonGroupToggleButton>
<ButtonGroupToggleButton @bind-Selected="@bigOffers[1]"><img src="/img/A2.png" /></ButtonGroupToggleButton> <ButtonGroupToggleButton @bind-Selected="@bigOffers[1]"><img src="/img/A2.png" /></ButtonGroupToggleButton>
<ButtonGroupToggleButton @bind-Selected="@bigOffers[2]"><img src="/img/A3.png" /></ButtonGroupToggleButton> <ButtonGroupToggleButton @bind-Selected="@bigOffers[2]"><img src="/img/A3.png" /></ButtonGroupToggleButton>
<ButtonGroupToggleButton @bind-Selected="@bigOffers[3]"><img src="/img/A4.png" /></ButtonGroupToggleButton> <ButtonGroupToggleButton @bind-Selected="@bigOffers[3]"><img src="/img/A4.png" /></ButtonGroupToggleButton>
<ButtonGroupToggleButton @bind-Selected="@bigOffers[4]"><img src="/img/A5.png" /></ButtonGroupToggleButton> <ButtonGroupToggleButton @bind-Selected="@bigOffers[4]"><img src="/img/A5.png" /></ButtonGroupToggleButton>
<ButtonGroupToggleButton @bind-Selected="@bigOffers[5]"><img src="/img/A6.png" /></ButtonGroupToggleButton> <ButtonGroupToggleButton @bind-Selected="@bigOffers[5]"><img src="/img/A6.png" /></ButtonGroupToggleButton>
</TelerikButtonGroup> </TelerikButtonGroup>
</div> </div>
<div class="col-12"> <div class="col-12">
<h4 class="my-3">And four (4) half-sized offers:</h4> <h4 class="my-3">And four (4) half-sized offers:</h4>
<TelerikButtonGroup SelectionMode="@ButtonGroupSelectionMode.Multiple"> <TelerikButtonGroup SelectionMode="@ButtonGroupSelectionMode.Multiple">
<ButtonGroupToggleButton @bind-Selected="@smallOffers[0]"><img src="/img/B1.png" /></ButtonGroupToggleButton> <ButtonGroupToggleButton @bind-Selected="@smallOffers[0]"><img src="/img/B1.png" /></ButtonGroupToggleButton>
<ButtonGroupToggleButton @bind-Selected="@smallOffers[1]"><img src="/img/B2.png" /></ButtonGroupToggleButton> <ButtonGroupToggleButton @bind-Selected="@smallOffers[1]"><img src="/img/B2.png" /></ButtonGroupToggleButton>
<ButtonGroupToggleButton @bind-Selected="@smallOffers[2]"><img src="/img/B3.png" /></ButtonGroupToggleButton> <ButtonGroupToggleButton @bind-Selected="@smallOffers[2]"><img src="/img/B3.png" /></ButtonGroupToggleButton>
<ButtonGroupToggleButton @bind-Selected="@smallOffers[3]"><img src="/img/B4.png" /></ButtonGroupToggleButton> <ButtonGroupToggleButton @bind-Selected="@smallOffers[3]"><img src="/img/B4.png" /></ButtonGroupToggleButton>
<ButtonGroupToggleButton @bind-Selected="@smallOffers[4]"><img src="/img/B5.png" /></ButtonGroupToggleButton> <ButtonGroupToggleButton @bind-Selected="@smallOffers[4]"><img src="/img/B5.png" /></ButtonGroupToggleButton>
<ButtonGroupToggleButton @bind-Selected="@smallOffers[5]"><img src="/img/B6.png" /></ButtonGroupToggleButton> <ButtonGroupToggleButton @bind-Selected="@smallOffers[5]"><img src="/img/B6.png" /></ButtonGroupToggleButton>
</TelerikButtonGroup> </TelerikButtonGroup>
<br /> <br />
<TelerikButtonGroup SelectionMode="@ButtonGroupSelectionMode.Multiple"> <TelerikButtonGroup SelectionMode="@ButtonGroupSelectionMode.Multiple">
<ButtonGroupToggleButton @bind-Selected="@smallOffers[6]"><img src="/img/B7.png" /></ButtonGroupToggleButton> <ButtonGroupToggleButton @bind-Selected="@smallOffers[6]"><img src="/img/B7.png" /></ButtonGroupToggleButton>
<ButtonGroupToggleButton @bind-Selected="@smallOffers[7]"><img src="/img/B8.png" /></ButtonGroupToggleButton> <ButtonGroupToggleButton @bind-Selected="@smallOffers[7]"><img src="/img/B8.png" /></ButtonGroupToggleButton>
<ButtonGroupToggleButton @bind-Selected="@smallOffers[8]"><img src="/img/B9.png" /></ButtonGroupToggleButton> <ButtonGroupToggleButton @bind-Selected="@smallOffers[8]"><img src="/img/B9.png" /></ButtonGroupToggleButton>
<ButtonGroupToggleButton @bind-Selected="@smallOffers[9]"><img src="/img/B10.png" /></ButtonGroupToggleButton> <ButtonGroupToggleButton @bind-Selected="@smallOffers[9]"><img src="/img/B10.png" /></ButtonGroupToggleButton>
<ButtonGroupToggleButton @bind-Selected="@smallOffers[10]"><img src="/img/B11.png" /></ButtonGroupToggleButton> <ButtonGroupToggleButton @bind-Selected="@smallOffers[10]"><img src="/img/B11.png" /></ButtonGroupToggleButton>
<ButtonGroupToggleButton @bind-Selected="@smallOffers[11]"><img src="/img/B12.png" /></ButtonGroupToggleButton> <ButtonGroupToggleButton @bind-Selected="@smallOffers[11]"><img src="/img/B12.png" /></ButtonGroupToggleButton>
</TelerikButtonGroup> </TelerikButtonGroup>
</div> </div>
} }
else else
{ {
<div class="col-12 m-5"> <div class="col-12 m-5">
<h4>No offers needed! Please proceed to the next step!</h4> <h4>No offers needed! Please proceed to the next step!</h4>
</div> </div>
} }
</div>
</div> </div>
</Template> </div>
</FormItem> </Template>
</FormItems> </FormItem>
<FormButtons /> </FormItems>
</TelerikForm> <FormButtons />
</Content> </TelerikForm>
</WizardStep> </Content>
</WizardStep>
@* *@ @* *@
@* Step 6 - Location information *@ @* Step 6 - Location information *@
@* *@ @* *@
<WizardStep Label="Location Info" OnChange="@OnLocationStepChange" Valid="@isLocationInfoValid"> <WizardStep Label="Location Info" OnChange="@OnLocationStepChange" Valid="@isLocationInfoValid">
<Content> <Content>
<div class="container"> <div class="container">
<div class="row"> <div class="row">
<div class="col-12"> <div class="col-12">
<TelerikForm Model="@locationInfo" @ref="@locationForm" Columns="2" ColumnSpacing="25px"> <TelerikForm Model="@locationInfo" @ref="@locationForm" Columns="2" ColumnSpacing="25px">
<FormButtons /> <FormButtons />
</TelerikForm> </TelerikForm>
</div>
<div class="col-12">
</div>
</div> </div>
</div> </div>
</Content> </div>
</WizardStep> </Content>
</WizardStep>
@* *@ @* *@
@* Step 7 - Payment *@ @* Step 7 - Payment *@
@* *@ @* *@
<WizardStep Label="Payment Info"> <WizardStep Label="Payment Info">
<Content> <Content>
<TelerikForm Model="@paymentInfo" @ref="@paymentForm"> <TelerikForm Model="@paymentInfo" @ref="@paymentForm">
<FormItems> <FormItems>
<FormItem> <FormItem>
<Template> <Template>
<div class="container"> <div class="container">
<div class="row"> <div class="row">
<div class="col-12"> <div class="col-12">
<TelerikButtonGroup SelectionMode="@ButtonGroupSelectionMode.Single" Class="vertical-buttons block-buttons mb-5"> <TelerikButtonGroup SelectionMode="@ButtonGroupSelectionMode.Single" Class="vertical-buttons block-buttons mb-5">
<ButtonGroupToggleButton @bind-Selected="@ccOnFile">Credit Card On File</ButtonGroupToggleButton> <ButtonGroupToggleButton @bind-Selected="@ccOnFile">Credit Card On File</ButtonGroupToggleButton>
<ButtonGroupToggleButton @bind-Selected="@callWithInfo">Call With Payment Info</ButtonGroupToggleButton> <ButtonGroupToggleButton @bind-Selected="@callWithInfo">Call With Payment Info</ButtonGroupToggleButton>
<ButtonGroupToggleButton @bind-Selected="@check">Check (due by 6/13/25)</ButtonGroupToggleButton> <ButtonGroupToggleButton @bind-Selected="@check">Check</ButtonGroupToggleButton>
</TelerikButtonGroup> </TelerikButtonGroup>
</div>
<div class="col-12">
<label style="display:block" for="RequestedQuantity" class="text-center mb-3">Requested Quantity</label>
<TelerikTextBox class="mb-3" Id="RequestedQuantity" @bind-Value="@requestedQuantity" MaxLength="6" Width="15rem"></TelerikTextBox>
<label style="display:block" for="AdditionalComments" class="text-center mb-3">Additional Notes</label>
<TelerikTextArea class="mb-3" Id="CustomSignature" @bind-Value="@additionalComments" Rows="8" Cols="100" MaxLength="2500"></TelerikTextArea>
</div>
</div> </div>
</div> <div class="col-12 mb-5">
</Template> @if (ccOnFile)
</FormItem> {
</FormItems> <h4>Use our preferred payment method already on file.</h4>
<FormButtons /> }
</TelerikForm> else if (callWithInfo)
</Content> {
</WizardStep> <h4>Please call me.</h4>
</WizardSteps> <p>I'll specify method of payment when reviewing the order.</p>
</TelerikWizard> }
else if (check)
{
<h4>I'll be sending in a check</h4>
<p>I'll be sending in a check by the invoice's due date (6/13/2025).</p>
}
</div>
<div class="col-12">
<label style="display:block" for="RequestedQuantity" class="text-center mb-3">Requested Quantity</label>
<TelerikTextBox class="mb-3" Id="RequestedQuantity" @bind-Value="@requestedQuantity" MaxLength="6" Width="15rem"></TelerikTextBox>
<label style="display:block" for="AdditionalComments" class="text-center mb-3">Additional Notes</label>
<TelerikTextArea class="mb-3" Id="CustomSignature" @bind-Value="@additionalComments" Rows="8" Cols="100" MaxLength="2500"></TelerikTextArea>
</div>
</div>
</div>
</Template>
</FormItem>
</FormItems>
<FormButtons />
</TelerikForm>
</Content>
</WizardStep>
</WizardSteps>
</TelerikWizard>
</div>
</div>
</div> </div>
</div>
</div>
} }
else else
{ {
<div class="container"> <div class="container">
<div class="row"> <div class="row">
<div class="col-12"> <div class="col-12">
Thank you! Thank you!
</div> </div>
</div> </div>
</div> </div>
} }

View File

@ -4,6 +4,9 @@ using Telerik.Blazor;
using Telerik.Blazor.Components; using Telerik.Blazor.Components;
using Telerik.SvgIcons; using Telerik.SvgIcons;
using kmCommonLibsCore; using kmCommonLibsCore;
using System.Net.Http;
using System.Text.Json;
using Microsoft.Extensions.Options;
namespace SummerBestWebForm2.Components.Pages; namespace SummerBestWebForm2.Components.Pages;
@ -12,24 +15,26 @@ public partial class Home
async Task OnFinishHandler() async Task OnFinishHandler()
//private void SaveIt() //private void SaveIt()
{ {
using (var em = new kmCommonLibsCore.Emails()) using (var em = new kmCommonLibsCore.Emails() { HandleOptOuts = false, SendMethod = enuSendMethod.OnsiteServer })
{ {
// Parsing the submitted form to pull the relevant information // Parsing the submitted form to pull the relevant information
string cardType = isPostcard ? "Postcard" : "Plastic Card"; var cardType = isPostcard ? "Postcard" : "Plastic Card";
string cardDesign = string.Empty; var cardDesign = string.Empty;
if (designOne) if (designOne)
cardDesign = "A"; cardDesign = "A";
else if (designTwo) else if (designTwo)
cardDesign = "B"; cardDesign = "B";
else if (designThree) else if (designThree)
cardDesign = "C"; cardDesign = "C";
else if (designCustom)
cardDesign = "CUSTOM";
// Postcard or Plastic specific options // Postcard or Plastic specific options
string customizationInfo = string.Empty; var customizationInfo = string.Empty;
if (isPostcard) if (isPostcard)
{ {
string verseChoice = string.Empty; var verseChoice = string.Empty;
string sigChoice = string.Empty; var sigChoice = string.Empty;
if (verseOne) if (verseOne)
verseChoice = "1"; verseChoice = "1";
@ -46,132 +51,40 @@ public partial class Home
sigChoice = string.Format("Option F - {0}", customSignature); sigChoice = string.Format("Option F - {0}", customSignature);
// combine these into customizationInfo // combine these into customizationInfo
customizationInfo = string.Format("Verse: {0}<br />Signature: {1}", verseChoice, sigChoice); customizationInfo = string.Format("<tr><td>Verse:</td><td>{0}</td></tr><tr><td>Signature:</td><td>{1}</td></tr>", verseChoice, sigChoice);
} }
else // isPlasticCard else // isPlasticCard
{ {
string smallOfferString = string.Empty; var smallOfferList = new List<string>();
string bigOfferString = string.Empty; var bigOfferList = new List<string>();
int[] smallIndexes = new int[4];
int[] bigIndexes = new int[2];
int smallCount = 0;
for (int index = 0; index < smallOffers.Length; index++) for (int index = 0; index < smallOffers.Length; index++)
{ {
if (smallOffers[index]) if (smallOffers[index])
{ smallOfferList.Add(string.Format("B{0}", index));
smallIndexes[smallCount] = index;
smallCount++;
}
} }
int bigCount = 0;
for (int index = 0; index < bigOffers.Length; index++) for (int index = 0; index < bigOffers.Length; index++)
{ {
if (bigOffers[index]) if (bigOffers[index])
{ bigOfferList.Add(string.Format("A{0}", index + 1));
bigIndexes[bigCount] = index;
bigCount++;
}
} }
foreach (int index in smallIndexes) customizationInfo = string.Format("<tr><td>BIG Offers:</td><td>{0}</td></tr><tr><td>SMALL Offers:</td><td>{1}</td></tr>",
{ string.Join(", ", bigOfferList), string.Join(", ", smallOfferList));
switch (index)
{
case 0:
smallOfferString = smallOfferString + "B1 ";
break;
case 1:
smallOfferString = smallOfferString + "B2 ";
break;
case 2:
smallOfferString = smallOfferString + "B3 ";
break;
case 3:
smallOfferString = smallOfferString + "B4 ";
break;
case 4:
smallOfferString = smallOfferString + "B5 ";
break;
case 5:
smallOfferString = smallOfferString + "B6 ";
break;
case 6:
smallOfferString = smallOfferString + "B7 ";
break;
case 7:
smallOfferString = smallOfferString + "B8 ";
break;
case 8:
smallOfferString = smallOfferString + "B9 ";
break;
case 9:
smallOfferString = smallOfferString + "B10 ";
break;
case 10:
smallOfferString = smallOfferString + "B11 ";
break;
case 11:
smallOfferString = smallOfferString + "B12 ";
break;
}
}
foreach (int index in bigIndexes)
{
switch (index)
{
case 0:
bigOfferString = bigOfferString + "A1 ";
break;
case 1:
bigOfferString = bigOfferString + "A2 ";
break;
case 2:
bigOfferString = bigOfferString + "A3 ";
break;
case 3:
bigOfferString = bigOfferString + "A4 ";
break;
case 4:
bigOfferString = bigOfferString + "A5 ";
break;
case 5:
bigOfferString = bigOfferString + "A6 ";
break;
}
}
customizationInfo = string.Format("Offers: {0} - {1}", bigOfferString, smallOfferString);
} }
// Logo info // Logo info
string logos = string.Empty; var logos = new List<string>();
if (!goodyear && !michelin && !custom) if (goodyear)
logos = "NA"; logos.Add("Goodyear");
else if (michelin)
{ logos.Add("Michelin");
if (goodyear) if (custom)
{ logos.Add("Custom");
logos += "Goodyear"; if (logos.Count == 0)
if (michelin) logos.Add("NONE");
logos += ", Michelin";
if (custom)
logos += ", Custom";
}
else if (michelin)
{
logos += "Michelin";
if (custom)
logos += ", Custom";
}
else if (custom)
logos += "Custom";
}
// Payment info // Payment info
string paymentMethod = string.Empty; string paymentMethod = string.Empty;
@ -187,16 +100,35 @@ public partial class Home
em.AddAddress(enuAddressType.From, "support@keymotive.us", "Summer Growth Enrollment"); em.AddAddress(enuAddressType.From, "support@keymotive.us", "Summer Growth Enrollment");
em.AddAddress(enuAddressType.To, "support@keymotive.us", "KeyMotive Support"); em.AddAddress(enuAddressType.To, "support@keymotive.us", "KeyMotive Support");
string locInfoString = string.Format("<pre>Location Name: {0}<br />Manager: {1}<br />Address: {2}<br />City: {3}<br />State: {4}<br />Zip: {5}<br /><br />Phone Number: {6}<br />Contact Name: {7}<br />Contact Phone: {8}<br />Contact Email: {9}<br />", var targetAudience = string.Format("<tr><td>Audience:</td><td>{0}</td></tr>", string.IsNullOrWhiteSpace(audienceType) ? "NOTHING!" : audienceType);
var locInfoString = string.Format("<tr style='padding-top:14px'><td>Location Name:</td><td>{0}</td></tr>" +
"<tr><td>Manager:</td><td>{1}</td></tr>" +
"<tr><td>Address:</td><td>{2}</td></tr>" +
"<tr><td>City:</td><td>{3}</td></tr>" +
"<tr><td>State:</td><td>{4}</td></tr>" +
"<tr><td>Zip:</td><td>{5}</td></tr>" +
"<tr style='padding-top:14px'><td>Phone Number:</td><td>{6}</td></tr>" +
"<tr><td>Contact Name:</td><td>{7}</td></tr>" +
"<tr><td>Contact Phone:</td><td>{8}</td></tr>" +
"<tr><td>Contact Email:</td><td>{9}</td></tr>",
locationInfo.LocationName, locationInfo.Manager, locationInfo.Address, locationInfo.City, locationInfo.State, locationInfo.LocationName, locationInfo.Manager, locationInfo.Address, locationInfo.City, locationInfo.State,
locationInfo.Zip, locationInfo.PhoneNumber, locationInfo.ContactName, locationInfo.Zip, locationInfo.PhoneNumber, locationInfo.ContactName,
locationInfo.ContactPhone, locationInfo.ContactEmail); locationInfo.ContactPhone, locationInfo.ContactEmail);
string cardInfoString = string.Format("Card type: {0}, Design {1}<br /><br />Customization Options:<br />{2}<br />Logos: {3}<br />", var cardInfoString = string.Format("<tr><td>Card type:</td><td>{0}, Design {1}</td></tr>" +
cardType, cardDesign, customizationInfo, logos); "<tr style='padding-top:14px'><td colspan='2'>Customization Options:</td></tr>" +
"{2}" +
"<tr><td>Logos:</td><td>{3}</td></tr>",
cardType, cardDesign, customizationInfo, string.Join(", ", logos));
string paymentString = string.Format("Payment Method: {0}<br /><br />Requested Quantity: {1}<br />Additional Comments: {2}", paymentMethod, requestedQuantity, additionalComments); if (int.TryParse(requestedQuantity, out _))
em.HtmlBody = "<b>You have a new enrollment:</b><br />" + locInfoString + cardInfoString + paymentString + "</pre>"; requestedQuantity = string.Format("{0:#,##0}", int.Parse(requestedQuantity));
var paymentString = string.Format("<tr><td>Payment Method:</td><td>{0}</td></tr>" +
"<tr style='padding-top:14px'><td>Requested Quantity:</td><td>{1}</td></tr>" +
"<tr><td>Additional Comments:</td><td>{2}</td></tr>", paymentMethod, requestedQuantity, additionalComments);
em.HtmlBody = "<div style='font-size:1.25em'><b>You have a new enrollment:</b><br /><br /><table style='font-size:1.25em;display:block;font-family: monospace;'>" +
targetAudience + locInfoString + cardInfoString + paymentString + "</table></div>";
try try
{ {
@ -213,6 +145,7 @@ public partial class Home
} }
#region "User Selections - Model" #region "User Selections - Model"
public bool? IsAudienceChoiceValid { get; set; } = false; public bool? IsAudienceChoiceValid { get; set; } = false;
public bool? IsCardChoiceValid { get; set; } = false; public bool? IsCardChoiceValid { get; set; } = false;
@ -319,7 +252,7 @@ public partial class Home
public void OnCardChoiceStepChange(WizardStepChangeEventArgs args) public void OnCardChoiceStepChange(WizardStepChangeEventArgs args)
{ {
IsCardChoiceValid = true; // This is forced to be true but required nonetheless IsCardChoiceValid = true; // This is forced to be true but required nonetheless
} }
public void OnDesignStepChange(WizardStepChangeEventArgs args) public void OnDesignStepChange(WizardStepChangeEventArgs args)
@ -424,7 +357,7 @@ public partial class Home
public class LocationInfo public class LocationInfo
{ {
[Required,Display(Name ="Location Name")] [Required, Display(Name = "Location Name")]
public string LocationName { get; set; } = string.Empty; public string LocationName { get; set; } = string.Empty;
[Required, Display(Name = "Store Manager")] [Required, Display(Name = "Store Manager")]
public string Manager { get; set; } = string.Empty; public string Manager { get; set; } = string.Empty;

View File

@ -14,7 +14,7 @@ using System.Reflection;
[assembly: System.Reflection.AssemblyCompanyAttribute("SummerBestWebForm2")] [assembly: System.Reflection.AssemblyCompanyAttribute("SummerBestWebForm2")]
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+8d5f8fbc0b180ec316bb0694deca84493cd04c44")] [assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+bba2f28bcf896d983f52e111581ce2a65da9bc7c")]
[assembly: System.Reflection.AssemblyProductAttribute("SummerBestWebForm2")] [assembly: System.Reflection.AssemblyProductAttribute("SummerBestWebForm2")]
[assembly: System.Reflection.AssemblyTitleAttribute("SummerBestWebForm2")] [assembly: System.Reflection.AssemblyTitleAttribute("SummerBestWebForm2")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]

View File

@ -1 +1 @@
498c48e569ca977ccb10053e88c4f50ed1c99a69b6b43726cfc5e871d74b9091 be988df5edd5a7019169378b5ebfacb2a2da0e7d7d3f8ebfb0e8795b082a956f