Skip to content

Commit

Permalink
Merge pull request #5 from Pa1yn-dev/dev
Browse files Browse the repository at this point in the history
Beta v1.1.2
  • Loading branch information
Pa1yn-dev authored Aug 28, 2023
2 parents 56028c3 + 67176cc commit c1a2a22
Show file tree
Hide file tree
Showing 747 changed files with 19,093 additions and 4,090 deletions.
1 change: 1 addition & 0 deletions src/MailLobbyer/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
/builds
1 change: 1 addition & 0 deletions src/MailLobbyer/Data/Contact.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ public class Contact
public string Forename { get; set; }
public string Email { get; set; }
public bool IsSelected { get; set;}
public bool IsSearched { get; set; }

public Contact (string prefix, string surname, string forename, string email)
{
Expand Down
8 changes: 8 additions & 0 deletions src/MailLobbyer/Hubs/EmailHub.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
using Microsoft.AspNetCore.SignalR;

namespace MailLobbyer.Server.Hubs;

public class EmailHub : Hub
{

}
1 change: 1 addition & 0 deletions src/MailLobbyer/MailLobbyer.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@

<ItemGroup>
<PackageReference Include="MailKit" Version="4.1.0" />
<PackageReference Include="Microsoft.AspNetCore.SignalR.Client" Version="7.0.9" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
</ItemGroup>

Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes.
110 changes: 90 additions & 20 deletions src/MailLobbyer/Pages/Email.razor
Original file line number Diff line number Diff line change
Expand Up @@ -5,26 +5,24 @@
@using MailLobbyer.CSVFileClass
@using MailLobbyer.ContactClass

<PageTitle>Home</PageTitle>

<h1 class="page-title">Home</h1>
<PageTitle>Email</PageTitle>

<form class="input-form" @onsubmit="EmailFormSubmitHandler">
<h1 class="page-title">Email</h1>
<div class="form-group">
<label for="subject">Subject:</label>
<input type="text" id="subject" class="form-control" @bind="subject" aria-label="Subject" />
<input type="text" placeholder="Enter your email subject" id="subject" class="form-control" @bind="subject" aria-label="Subject" />
</div>

<div class="form-group">
<label for="body">Body:</label>
<textarea id="body" class="form-control" @bind="body" aria-label="Body"></textarea>
<textarea id="body" placeholder="Enter your email body" class="form-control" @bind="body" aria-label="Body"></textarea>
</div>

<div class="custom-inputfile">
<InputFile id="inputfiles" OnChange="@FileUploadHandler" multiple />
</div>


@if (displayform)
{
<div class="form-group">
Expand All @@ -39,35 +37,60 @@
</div>

<button type="submit" class="btn btn-primary">Continue</button>
}

else
}
</form>

@if (!displayform)
{
<form @onsubmit="ExclusionFormSubmitHandler">
<form class="input-form" @onsubmit="ExclusionFormSubmitHandler">
<h1 class="page-title">Contact exclusion</h1>
<div class="form-group">
<label>Contact exclusion:</label>
@foreach (Contact contact in csvserviceinstance.contacts)
<input type="text" placeholder="Enter a contact to search for" class="form-control" @oninput="OnContactSearch" aria-label="Contact Search" />
<button type="button" class="btn btn-primary" disabled="@istoggleselectallbuttondisabled" @onclick="ToggleSelectAll">@toggleselectallbuttonstringvalue</button>
@if (displaycontactsearch)
{
<div class="subform-group">
<label for="excludecontacts">@string.Concat(contact.Forename, " ", contact.Surname) - @contact.Email</label>
<input type="checkbox" id="excludecontacts" value="@contact.Email" checked="@contact.IsSelected" @onchange="() => ToggleContactExclusion(contact)" aria-label="Exclude contact: @(string.Concat(contact.Forename, " ", contact.Surname) + " - " + contact.Email)" />
</div>
@foreach (Contact contact in csvserviceinstance.contacts)
{
@if (contact.IsSearched == true)
{
<div class="subform-group">
<label for="excludecontacts">@string.Concat(contact.Forename, " ", contact.Surname) - @contact.Email</label>
<input type="checkbox" id="excludecontacts" value="@contact.Email" checked="@contact.IsSelected" @onchange="() => ToggleContactExclusion(contact)" aria-label="Exclude contact: @(string.Concat(contact.Forename, " ", contact.Surname) + " - " + contact.Email)" />
</div>

}
}
}

else
{
@foreach (Contact contact in csvserviceinstance.contacts)
{
<div class="subform-group">
<label for="excludecontacts">@string.Concat(contact.Forename, " ", contact.Surname) - @contact.Email</label>
<input type="checkbox" id="excludecontacts" value="@contact.Email" checked="@contact.IsSelected" @onchange="() => ToggleContactExclusion(contact)" aria-label="Exclude contact: @(string.Concat(contact.Forename, " ", contact.Surname) + " - " + contact.Email)" />
</div>
}

}

</div>

<button type="submit" class="btn btn-primary">Send</button>
</form>
</form>
}


</form>

@code {
private bool displayform = true;
private string subject;
private string body;
private List<IBrowserFile> selectedfiles = new List<IBrowserFile>();
private string selectedgroup;
private string contactsearch = string.Empty;
private bool displaycontactsearch;
private bool istoggleselectallbuttondisabled;
private bool toggleselectallbuttonboolvalue = true;
private string toggleselectallbuttonstringvalue = "Select all";


CSVService csvserviceinstance = new CSVService();
Expand Down Expand Up @@ -97,6 +120,51 @@
selectedfiles = e.GetMultipleFiles().ToList();
}

private void OnContactSearch(ChangeEventArgs e)
{
contactsearch = e.Value.ToString();
displaycontactsearch = !string.IsNullOrEmpty(contactsearch);

if (displaycontactsearch == true)
{
istoggleselectallbuttondisabled = true;
}

else
{
istoggleselectallbuttondisabled = false;
}

foreach(Contact contact in csvserviceinstance.contacts)
{
contact.IsSearched = !string.IsNullOrEmpty(contactsearch) &&
(contact.Email.Contains(contactsearch, StringComparison.OrdinalIgnoreCase) == true ||
contact.Forename.Contains(contactsearch, StringComparison.OrdinalIgnoreCase) == true ||
contact.Surname.Contains(contactsearch, StringComparison.OrdinalIgnoreCase) == true);

}
}

private void ToggleSelectAll()
{
toggleselectallbuttonboolvalue = !toggleselectallbuttonboolvalue;

if(!toggleselectallbuttonboolvalue)
{
toggleselectallbuttonstringvalue = "Deselect all";
}

else
{
toggleselectallbuttonstringvalue = "Select all";
}

foreach (Contact contact in csvserviceinstance.contacts)
{
contact.IsSelected = !contact.IsSelected;
}
}

private void ToggleContactExclusion(Contact contact)
{
contact.IsSelected = !contact.IsSelected;
Expand Down Expand Up @@ -142,6 +210,8 @@
selectedfiles = new List<IBrowserFile>();
csvserviceinstance.contacts.Clear();
selectedgroup = string.Empty;
toggleselectallbuttonboolvalue = true;
toggleselectallbuttonstringvalue = "Select all";
displayform = true;
}
}
15 changes: 7 additions & 8 deletions src/MailLobbyer/Pages/Settings.razor
Original file line number Diff line number Diff line change
Expand Up @@ -8,37 +8,36 @@

<PageTitle>Settings</PageTitle>

<h1 class="page-title">Settings</h1>

<form class="input-form" @onsubmit="SettingsFormSubmitHandler">
<h1 class="page-title">Settings</h1>
<div class="form-group">
<label for="sendername">Sender name:</label>
<input type="text" value="@smtpclisettings.Sendername" id="sendername" name="sendername" class="form-control" @oninput="UpdateSendername" aria-label="Sender name" />
<input type="text" placeholder="Enter your sender name" value="@smtpclisettings.Sendername" id="sendername" name="sendername" class="form-control" @oninput="UpdateSendername" aria-label="Sender name" />
</div>

<div class="form-group">
<label for="senderemail">Sender email:</label>
<input type="email" value="@smtpclisettings.Senderemail" id="senderemail" name="senderemail" class="form-control" @oninput="UpdateSenderemail" aria-label="Sender email" />
<input type="email" placeholder="Enter your sender email" value="@smtpclisettings.Senderemail" id="senderemail" name="senderemail" class="form-control" @oninput="UpdateSenderemail" aria-label="Sender email" />
</div>

<div class="form-group">
<label for="username">SMTP username:</label>
<input type="text" value="@smtpclisettings.Username" id="username" name="username" class="form-control" @oninput="UpdateUsername" aria-label="SMTP username" />
<input type="text" placeholder="Enter your SMTP username" value="@smtpclisettings.Username" id="username" name="username" class="form-control" @oninput="UpdateUsername" aria-label="SMTP username" />
</div>

<div class="form-group">
<label for="password">SMTP password:</label>
<input type="password" value="@smtpclisettings.Password" id="password" name="password" class="form-control" @oninput="UpdatePassword" aria-label="SMTP password" />
<input type="password" placeholder="Enter your SMTP password" value="@smtpclisettings.Password" id="password" name="password" class="form-control" @oninput="UpdatePassword" aria-label="SMTP password" />
</div>

<div class="form-group">
<label for="host">SMTP host:</label>
<input type="text" value="@smtpclisettings.Host" id="host" name="host" class="form-control" @oninput="UpdateHost" aria-label="SMTP host" />
<input type="text" placeholder="Enter your SMTP hostname/IP" value="@smtpclisettings.Host" id="host" name="host" class="form-control" @oninput="UpdateHost" aria-label="SMTP host" />
</div>

<div class="form-group">
<label for="port">SMTP port:</label>
<input type="text" value="@smtpclisettings.Port" id="port" name="port" class="form-control" @oninput="UpdatePort" aria-label="SMTP port" />
<input type="text" placeholder="Enter your SMTP port" value="@smtpclisettings.Port" id="port" name="port" class="form-control" @oninput="UpdatePort" aria-label="SMTP port" />
</div>

<button type="submit" class="btn btn-primary">Save</button>
Expand Down
10 changes: 10 additions & 0 deletions src/MailLobbyer/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,21 @@
using Microsoft.AspNetCore.Components.Web;
using MailLobbyer.CSVServiceComponent;
using MailLobbyer.CSVFileClass;
using Microsoft.AspNetCore.ResponseCompression;
using MailLobbyer.Server.Hubs;

var builder = WebApplication.CreateBuilder(args);

// Add services to the container.
builder.Services.AddRazorPages();
builder.Services.AddServerSideBlazor();

builder.Services.AddResponseCompression(opts =>
{
opts.MimeTypes = ResponseCompressionDefaults.MimeTypes.Concat(
new[] { "application/octet-stream" });
});

var app = builder.Build();

// Configure the HTTP request pipeline.
Expand All @@ -18,6 +26,8 @@
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseResponseCompression();
app.MapHub<EmailHub>("/emailhub");

app.UseHttpsRedirection();

Expand Down
Binary file not shown.
Binary file added src/MailLobbyer/bin/Debug/net7.0/MailKit.dll
Binary file not shown.
Binary file added src/MailLobbyer/bin/Debug/net7.0/MailLobbyer
Binary file not shown.
Loading

0 comments on commit c1a2a22

Please sign in to comment.