This commit is contained in:
RDeck 2025-05-22 06:09:57 -04:00
parent d92f990b09
commit 9b28bf7d24
12 changed files with 507 additions and 348 deletions

Binary file not shown.

View File

@ -5,6 +5,10 @@
{
"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}"
},
{
"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}"
}
],
"DocumentGroupContainers": [
@ -68,9 +72,22 @@
"RelativeDocumentMoniker": "Components\\Pages\\Home.razor",
"ToolTip": "C:\\Repos\\SummerBestWebForm2\\Components\\Pages\\Home.razor",
"RelativeToolTip": "Components\\Pages\\Home.razor",
"ViewState": "AgIAAAcAAAAAAAAAAAAAAA8AAAA7AAAAAAAAAA==",
"ViewState": "AgIAAHgAAAAAAAAAAAAAAL4AAAAdAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000759|",
"WhenOpened": "2025-05-20T14:02:06.233Z",
"WhenOpened": "2025-05-22T09:45:36.931Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 1,
"Title": "Home.razor.cs",
"DocumentMoniker": "C:\\Repos\\SummerBestWebForm2\\Components\\Pages\\Home.razor.cs",
"RelativeDocumentMoniker": "Components\\Pages\\Home.razor.cs",
"ToolTip": "C:\\Repos\\SummerBestWebForm2\\Components\\Pages\\Home.razor.cs",
"RelativeToolTip": "Components\\Pages\\Home.razor.cs",
"ViewState": "AgIAAEABAAAAAAAAAAAAAFQBAAAjAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-05-22T09:57:08.621Z",
"EditorCaption": ""
}
]

View File

@ -5,6 +5,10 @@
{
"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}"
},
{
"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}"
}
],
"DocumentGroupContainers": [
@ -68,9 +72,22 @@
"RelativeDocumentMoniker": "Components\\Pages\\Home.razor",
"ToolTip": "C:\\Repos\\SummerBestWebForm2\\Components\\Pages\\Home.razor",
"RelativeToolTip": "Components\\Pages\\Home.razor",
"ViewState": "AgIAAAcAAAAAAAAAAAAAAA8AAAA7AAAAAAAAAA==",
"ViewState": "AgIAAAAAAAAAAAAAAAAAAA0AAAAvAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000759|",
"WhenOpened": "2025-05-20T14:02:06.233Z",
"WhenOpened": "2025-05-22T09:45:36.931Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 1,
"Title": "Home.razor.cs",
"DocumentMoniker": "C:\\Repos\\SummerBestWebForm2\\Components\\Pages\\Home.razor.cs",
"RelativeDocumentMoniker": "Components\\Pages\\Home.razor.cs",
"ToolTip": "C:\\Repos\\SummerBestWebForm2\\Components\\Pages\\Home.razor.cs",
"RelativeToolTip": "Components\\Pages\\Home.razor.cs",
"ViewState": "AgIAAEABAAAAAAAAAAAAAFQBAAAjAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-05-22T09:57:08.621Z",
"EditorCaption": ""
}
]

View File

@ -6,44 +6,115 @@
@if (ShowWizard)
{
<TelerikWizard @bind-Value="@Value" OnFinish="@OnFinishHandler" Width="1440px" Height="95vh" Class="sbWizard">
<div class="container">
<div class="row">
<div class="col-12">
<TelerikWizard @bind-Value="@Value" OnFinish="OnFinishHandler" Width="100%" Height="95vh" Class="sbWizard" StepperPosition=WizardStepperPosition.Top>
<WizardSteps>
@* *@
@* Step 1 - plastic card vs postcard *@
@* *@
<WizardStep Label="Card Type" Icon="@SvgIcon.EnvelopeBox" OnChange="@OnCardChoiceStepChange" Valid="@IsCardChoiceValid">
<WizardStep Label="Introduction" Icon="@SvgIcon.Globe" OnChange="@OnAudienceChoiceStepChange" Valid="@IsAudienceChoiceValid">
<Content>
<TelerikForm Model="@cardType" @ref="@cardTypeForm">
<TelerikForm Model="@cardType" @ref="@IntroForm">
<FormItems>
<h1 style="text-align:center">Choose a Card Type</h1>
@* Logic behind the buttons *@
<div style="text-align:center">
<TelerikButtonGroup SelectionMode="@ButtonGroupSelectionMode.Single">
<ButtonGroupToggleButton @bind-Selected="@isPlasticCard">Plastic Card</ButtonGroupToggleButton>
<ButtonGroupToggleButton @bind-Selected="@isPostcard">Postcard</ButtonGroupToggleButton>
</TelerikButtonGroup>
<FormItem>
<Template>
<div class="container">
<div class="row">
<div class="col-12 px-sm-5 mb-2">
<h1>KeyMotive's Summer Growth Program</h1>
<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>
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!
</p>
<p>Let us handle the rest!</p>
</div>
<br />
@* Preview information about the selected card type*@
@if (isPlasticCard)
{
<h3>Focused on Expanding Your Customer Base ($1.02/card)</h3>
}
else
{
<h3>Focused on Thanking and Rewarding Your Best Customers ($0.79/card)</h3>
}
@if (isPlasticCard)
{
<img src="img/Plastic1_Back.png" />
}
else
{
<img src="img/Postcard1_Front.png" />
}
<div>
<img src="/img/7ccdfcc7-f91b-497e-8c19-ebb3a4021ea3.png" class="img-fluid" />
</div>
<div class="px-sm-5 mb-2 text-start">
Your audience choices are:
<ul>
<li>A list of your <strong class="text-primary">Very Best Customers</strong> (always a heavy-hitting campaign!)</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
<strong class="text-primary">haven't seen during the past 8 months</strong>.</li>
</ul>
</div>
<div class="px-sm-5 text-start">
<strong>Please Select:</strong>
<TelerikRadioGroup Data="@audiences"
@bind-Value="@audienceType"
ValueField="@nameof(AudienceType.AudienceDescription)"
TextField="@nameof(AudienceType.AudienceDescription)">
</TelerikRadioGroup>
</div>
</div>
</div>
</div>
</Template>
</FormItem>
</FormItems>
<FormButtons>
@* Need this here to avoid addition of random submit button *@
</FormButtons>
</TelerikForm>
</Content>
</WizardStep>
@* *@
@* Step 1 - plastic card vs postcard *@
@* *@
<WizardStep Label="Card Type" Icon="@SvgIcon.EnvelopeBox" OnChange="@OnCardChoiceStepChange" Valid="@IsCardChoiceValid">
<Content>
<TelerikForm Model="@cardType" @ref="@cardTypeForm">
<FormItems>
<FormItem>
<Template>
<div class="container">
<div class="row">
<div class="col-12">
<h1 style="text-align:center">Step 1 - Choose a Card Type</h1>
</div>
<div class="col-12 text-center mb-3">
<TelerikButtonGroup SelectionMode="@ButtonGroupSelectionMode.Single">
<ButtonGroupToggleButton @bind-Selected="@isPlasticCard">Plastic Card</ButtonGroupToggleButton>
<ButtonGroupToggleButton @bind-Selected="@isPostcard">Postcard</ButtonGroupToggleButton>
</TelerikButtonGroup>
</div>
@* Preview information about the selected card type*@
@if (isPlasticCard)
{
<div class="col-sm-4 mb-3 text-start">
<h4>Very Popular Plastic Card Mailer!</h4>
<ul>
<li>As thick as a typical credit card!</li>
<li>Large size piece (8&frac14; x 4 inches)</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>
</ul>
</div>
<div class="col-sm-8 text-center mb-3">
<img class="img-fluid" src="/img/1181c4aa-4f3f-4eb4-8d5d-7eff0131d5f2.png" />
</div>
}
else
{
<div class="col-sm-4 mb-3 text-start">
<h4>Premium Postcard Really Stands Out in the Mailbox</h4>
<ul>
<li>Premium paper, Jumbo-Sized (8&frac12; x 6 inches)</li>
<li>UV gloss-coated</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>
</ul>
</div>
<div class="col-sm-8 text-center mb-3">
<img class="img-fluid" src="/img/ad5a2b69-a493-429b-9edd-8320ec1e9c33.png" />
</div>
}
</div>
</div>
</Template>
</FormItem>
</FormItems>
<FormButtons>
@* Need this here to avoid addition of random submit button *@
@ -51,9 +122,6 @@
</TelerikForm>
</Content>
</WizardStep>
@* *@
@* Step 2 - selecting card design *@
@* *@
@ -65,6 +133,8 @@
<DataAnnotationsValidator></DataAnnotationsValidator>
</FormValidation>
<FormItems>
<FormItem>
<Template>
<h1 style="text-align:center">Choose a Design</h1>
@* Button logic *@
@ -89,13 +159,13 @@
{
@if (isPostcard)
{
<img src="img/Postcard1_Front.png" />
<img src="img/Postcard1_Back.png" />
<img src="/img/Postcard1_Front.png" class="img-fluid" />
<img src="/img/Postcard1_Back.png" class="img-fluid" />
}
else
{
<img src="img/Plastic1_Front.png" />
<img src="img/Plastic1_Back.png" />
<img src="/img/Plastic1_Front.png" class="img-fluid" />
<img src="/img/Plastic1_Back.png" class="img-fluid" />
}
}
@ -103,29 +173,31 @@
{
@if (isPostcard)
{
<img src="img/Postcard2_Front.png" />
<img src="img/Postcard2_Back.png" />
<img src="/img/Postcard2_Front.png" class="img-fluid"/>
<img src="/img/Postcard2_Back.png" class="img-fluid"/>
}
else
{
<img src="img/Plastic2_Front.png" />
<img src="img/Plastic2_Back.png" />
<img src="/img/Plastic2_Front.png" class="img-fluid"/>
<img src="/img/Plastic2_Back.png" class="img-fluid"/>
}
}
else if (designThree)
{
@if (isPostcard)
{
<img src="img/Postcard3_Front.png" />
<img src="img/Postcard3_Back.png" />
<img src="/img/Postcard3_Front.png" class="img-fluid"/>
<img src="/img/Postcard3_Back.png" class="img-fluid"/>
}
else
{
<img src="img/Plastic3_Front.png" />
<img src="img/Plastic3_Back.png" />
<img src="/img/Plastic3_Front.png" class="img-fluid"/>
<img src="/img/Plastic3_Back.png" class="img-fluid"/>
}
}
</div>
</Template>
</FormItem>
</FormItems>
<FormButtons>
@ -133,9 +205,6 @@
</TelerikForm>
</Content>
</WizardStep>
@* *@
@* Step 3 - For postcards, choose a verse and a signature *@
@* *@
@ -144,6 +213,8 @@
<TelerikForm Model="@messagingOptions"
@ref="@messagingForm">
<FormItems>
<FormItem>
<Template>
@if (isPlasticCard)
{
<h1>No customization needed. Please proceed to logo selection.</h1>
@ -212,6 +283,8 @@
}
}
}
</Template>
</FormItem>
</FormItems>
<FormButtons>
@ -219,9 +292,6 @@
</TelerikForm>
</Content>
</WizardStep>
@* *@
@* Step 4 - Logo Selection *@
@* *@
@ -230,6 +300,8 @@
<TelerikForm Model="@logoOptions"
@ref="@logoForm">
<FormItems>
<FormItem>
<Template>
<TelerikCheckBox Id="goodyearBox" @bind-Value="@goodyear" />
<label for="goodyearBox">Goodyear Logo</label>
<TelerikCheckBox Id="michelinBox" @bind-Value="@michelin" />
@ -245,6 +317,8 @@
{
<img src="img/michelin.png" />
}
</Template>
</FormItem>
</FormItems>
<FormButtons>
</FormButtons>
@ -262,6 +336,8 @@
<TelerikForm Model="@offerOptions"
@ref="@offerForm">
<FormItems>
<FormItem>
<Template>
@if (isPlasticCard)
{
<h1>Please select two (2) full size offers:</h1>
@ -300,6 +376,8 @@
{
<h1>No offers needed. Please proceed to location information.</h1>
}
</Template>
</FormItem>
</FormItems>
<FormButtons>
@ -333,11 +411,15 @@
<TelerikForm Model="@paymentInfo"
@ref="@paymentForm">
<FormItems>
<FormItem>
<Template>
<TelerikButtonGroup SelectionMode="@ButtonGroupSelectionMode.Single" Class="vertical-buttons block-buttons">
<ButtonGroupToggleButton @bind-Selected="@ccOnFile">Credit Card On File</ButtonGroupToggleButton>
<ButtonGroupToggleButton @bind-Selected="@callWithInfo">Call With Payment Info</ButtonGroupToggleButton>
<ButtonGroupToggleButton @bind-Selected="@check">Check (due by 5/31/25)</ButtonGroupToggleButton>
<ButtonGroupToggleButton @bind-Selected="@check">Check (due by 6/13/25)</ButtonGroupToggleButton>
</TelerikButtonGroup>
</Template>
</FormItem>
<br /><br />
<FormItem LabelText="Additional Info">
<Template>
@ -348,10 +430,15 @@
</Template>
</FormItem>
</FormItems>
<FormButtons></FormButtons>
<FormButtons>
</FormButtons>
</TelerikForm>
</Content>
</WizardStep>
</WizardSteps>
</TelerikWizard>
</div>
</div>
</div>
}

View File

@ -10,6 +10,7 @@ namespace SummerBestWebForm2.Components.Pages;
public partial class Home
{
async Task OnFinishHandler()
//private void SaveIt()
{
using (var em = new kmCommonLibsCore.Emails())
{
@ -23,8 +24,6 @@ public partial class Home
else if (designThree)
cardDesign = "C";
// Postcard or Plastic specific options
string customizationInfo = string.Empty;
if (isPostcard)
@ -213,26 +212,34 @@ public partial class Home
}
}
public bool? IsCardChoiceValid { get; set; }
public bool? IsAudienceChoiceValid { get; set; } = false;
public bool? IsCardChoiceValid { get; set; } = false;
public bool? IsDesignChoiceValid { get; set; }
public bool? IsDesignChoiceValid { get; set; } = false;
[CascadingParameter]
public DialogFactory Dialog { get; set; }
public bool ShowWizard { get; set; } = true;
public int Value { get; set; }
public int Value { get; set; } = 0;
public TelerikForm RegisterForm { get; set; }
//public TelerikForm RegisterForm { get; set; }
public User UserModel { get; set; } = new User();
public TelerikForm IntroForm { get; set; } = new();
// Variables for selecting between plastic and post
public TelerikForm cardTypeForm { get; set; } = new();
public CardType cardType { get; set; } = new CardType();
public bool isPlasticCard = true;
public bool isPostcard = false;
public bool isPlasticCard { get; set; } = true;
public bool isPostcard { get; set; } = false;
public string audienceType { get; set; } = string.Empty;
public List<AudienceType> audiences { get; set; } = new List<AudienceType>
{
new AudienceType() {AudienceDescription="Send to my BEST CUSTOMERS"},
new AudienceType() {AudienceDescription="Send to Great Prospects as well as Customers who haven't been in during the past 8 months"}
};
// Variables for selecting specific design
public TelerikForm customizationForm { get; set; } = new();
@ -301,9 +308,15 @@ public partial class Home
isPlasticCard = !isPlasticCard;
isPostcard = !isPostcard;
}
public void OnAudienceChoiceStepChange(WizardStepChangeEventArgs args)
{
IsAudienceChoiceValid = !string.IsNullOrWhiteSpace(audienceType);
}
public void OnCardChoiceStepChange(WizardStepChangeEventArgs args)
{
IsCardChoiceValid = true; // This is forced to be true but required nonetheless
}
public void OnDesignStepChange(WizardStepChangeEventArgs args)
@ -376,6 +389,8 @@ public partial class Home
}
}
#region "Models and Such"
public class CardType
{
[Required]
@ -432,4 +447,10 @@ public partial class Home
{
public string info { get; set; } = string.Empty;
}
public class AudienceType
{
public string AudienceDescription { get; set; } = string.Empty;
}
#endregion
}

View File

@ -0,0 +1,17 @@
.scrollable-stepper {
border: 1px solid red;
}
.scrollable-stepper .k-stepper {
overflow-y: hidden;
overflow-x: auto;
padding-bottom: 1em;
}
.scrollable-stepper .k-stepper .k-step-list-horizontal {
width: 1600px;
}
.scrollable-stepper .k-stepper .k-progressbar {
width: 1520px; /*(step list width - 1 step width)*/
}

View File

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

View File

@ -1 +1 @@
9df05e1d14133350458249006a8b5dba604bf73c520686c04e8adc3035e6c858
4d9f1f0b4ebbbb88ed0d5e48d4e075cc6af174dcfc64d4934e995ae1d4553706

View File

@ -36,10 +36,6 @@ build_metadata.AdditionalFiles.CssScope =
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xQYWdlc1xFcnJvci5yYXpvcg==
build_metadata.AdditionalFiles.CssScope =
[C:/Repos/SummerBestWebForm2/Components/Pages/Home.razor]
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xQYWdlc1xIb21lLnJhem9y
build_metadata.AdditionalFiles.CssScope =
[C:/Repos/SummerBestWebForm2/Components/Pages/Weather.razor]
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xQYWdlc1xXZWF0aGVyLnJhem9y
build_metadata.AdditionalFiles.CssScope =
@ -59,3 +55,7 @@ build_metadata.AdditionalFiles.CssScope = b-3wbav9z1yy
[C:/Repos/SummerBestWebForm2/Components/Layout/NavMenu.razor]
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xMYXlvdXRcTmF2TWVudS5yYXpvcg==
build_metadata.AdditionalFiles.CssScope = b-c8a7towxxz
[C:/Repos/SummerBestWebForm2/Components/Pages/Home.razor]
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xQYWdlc1xIb21lLnJhem9y
build_metadata.AdditionalFiles.CssScope = b-k9qw4oc6s9

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 311 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 MiB