210314PX Started adaption and integration of MvInvitationProcess, created a LogEvent for MV FillDefaults()

This commit is contained in:
phantomix 2021-03-15 17:21:37 +01:00
parent dc77c0c4f7
commit bcfcfa5750
4 changed files with 83 additions and 15 deletions

View File

@ -33,12 +33,12 @@ namespace dezentrale.core
public class MvInvitationProcess : BackgroundProcess
{
private IMvInvitationData data = null;
private List<Member> memberList = null;
private Mv mv= null;
private List<MvInvitedMember> memberList = null;
public MvInvitationProcess(IMvInvitationData data, List<Member> memberList)
public MvInvitationProcess(Mv mv, List<MvInvitedMember> memberList)
{
this.data = data;
this.mv = mv;
this.memberList = memberList;
Caption = "Send MV invitation E-Mails";
@ -62,13 +62,13 @@ namespace dezentrale.core
protected override bool Run()
{
uint step = 0;
foreach (Member m in memberList)
foreach (MvInvitedMember m in memberList)
{
step++;
try
{
LogTarget.LogLine($"Processing member {m.Nickname}...", LogEvent.ELogLevel.Info, "MvInvitationProcess");
LogTarget.StepStarted(step, $"Sending mail for member {m.Nickname}");
LogTarget.LogLine($"Processing member {m.Member.NumberString} - {m.Member.Nickname}...", LogEvent.ELogLevel.Info, "MvInvitationProcess");
LogTarget.StepStarted(step, $"Sending mail for member {m.Member.Nickname}");
m.StartLogEvent("MvInvitationProcess", LogEvent.eEventType.EMail, Program.config.LocalUser);
m.MvAuthenticationCode = RandomString(10);

View File

@ -91,6 +91,8 @@ namespace dezentrale.model
while (dtSuggested.DayOfWeek != DayOfWeek.Sunday)
dtSuggested = dtSuggested.Add(new TimeSpan(1, 0, 0, 0));
StartLogEvent("MV contents set to its default values", LogEvent.eEventType.DataChange);
SuppressLogging = true;
Status = MvStatus.InPreparation;
EventDate = new DateTime(dtSuggested.Year, dtSuggested.Month, dtSuggested.Day, 15, 0, 0);
Place = "Räumlichkeiten des dezentrale e.V., Dreilindenstr. 19, 04177 Leipzig";
@ -121,6 +123,9 @@ namespace dezentrale.model
+ " regulärem Mitglied am Anfang jeder MV. Fördermitglieder stimmen nicht\n"
+ " mit ab und fallen daher aus dem Quorum (51%) raus. Der Vorstand kann\n"
+ " Auskunft über Deinen Mitgliedsstatus geben.";
Members.Clear();
SuppressLogging = true;
FinishLogEvent();
}
public FormMail GetInvitationMail(Member m = null, string authCode = null)

View File

@ -195,8 +195,8 @@ namespace dezentrale.view
MemberDir = Program.config.DbDirectory,
OutputDir = Program.DmDirectory,
};
frmProcessWithLog frmImport = new frmProcessWithLog(export, false);
frmImport.ShowDialog();
frmProcessWithLog frmExport = new frmProcessWithLog(export, false);
frmExport.ShowDialog();
}
private void mnuMain_File_Import(object sender, EventArgs e)

View File

@ -60,15 +60,19 @@ namespace dezentrale.view
TabPage selectedTab = tabControl.SelectedTab;
if(selectedTab == tabInvitationSettings)
{
Button btn =
AddButton("Your advert here", null);
btn.Enabled = (this.mv.Status == Mv.MvStatus.InPreparation || this.mv.Status == Mv.MvStatus.InvitationSent);
} else if(selectedTab == tabMemberInvitation)
{
AddButton("Invite selected", null);
Button
btn = AddButton("Invite selected", btnInviteSelected_Click);
btn = AddButton("Invite all", btnInviteAll_Click);
btn.Enabled = (this.mv.Status == Mv.MvStatus.InPreparation || this.mv.Status == Mv.MvStatus.InvitationSent);
} else if(selectedTab == tabRunningMv)
{
} else if(selectedTab == tabLog)
{
}
AddButton("Close", btnClose_Click);
@ -92,6 +96,67 @@ namespace dezentrale.view
}
}
private void DoInvitation(List<MvInvitedMember> mvMembers)
{
if(mvMembers == null || mvMembers.Count < 1)
{
MessageBox.Show("No members to invite!");
return;
}
//in order not to overwrite existing data, we're working on a non-deep copy here
List<MvInvitedMember> inv = new List<MvInvitedMember>(mvMembers);
//find non-active members
string subListString = "";
List<MvInvitedMember> subList = new List<MvInvitedMember>();
foreach(MvInvitedMember mvi in inv)
{
if(mvi.Member.Status != Member.eStatus.Active)
{
subListString += $"{mvi.Member.NumberString} - {mvi.Member.Nickname}";
subList.Add(mvi);
}
}
if(subList.Count > 0)
{
DialogResult res = MessageBox.Show($"There are {subList.Count} non-active members which will be skipped:\r\n{subListString}\r\n\r\nProceed?", "Skip non-active members?", MessageBoxButtons.OKCancel);
if (res == DialogResult.Cancel) return;
//I know this iteration is inefficient, but should do the trick for normal eV business.
foreach (MvInvitedMember mvi in subList) inv.Remove(mvi);
}
subListString = "";
subList.Clear();
foreach(MvInvitedMember mvi in inv)
{
if(mvi.Invited)
{
subListString += $"{mvi.Member.NumberString} - {mvi.Member.Nickname}";
subList.Add(mvi);
}
}
if (subList.Count > 0)
{
DialogResult res = MessageBox.Show($"There are {subList.Count} already-invited members:\r\n{subListString}\r\n\r\nInvite them again?", "Invite members again?", MessageBoxButtons.YesNoCancel);
if (res == DialogResult.Cancel) return;
//I know this iteration is inefficient, but should do the trick for normal eV business.
if (res == DialogResult.Yes)
foreach (MvInvitedMember mvi in subList) inv.Remove(mvi);
}
//Spawn invitation process window and run process
MvInvitationProcess invProcess = new MvInvitationProcess(this.mv, inv);
frmProcessWithLog frmInvProcess = new frmProcessWithLog(invProcess, true);
frmInvProcess.ShowDialog();
}
private void btnInviteSelected_Click(object sender, EventArgs e)
{
DoInvitation(lvMvInvitations.GetSelectedItems());
}
private void btnInviteAll_Click(object sender, EventArgs e)
{
DoInvitation(this.mv.Members);
}
private void RefreshPreview()
{
Console.WriteLine("frmMv.RefreshPreview()");
@ -402,9 +467,7 @@ namespace dezentrale.view
public frmMv()
{
this.mv = new Mv();
this.mv.SuppressLogging = true;
this.mv.FillDefaults();
this.mv.SuppressLogging = false;
Init();
}