Files
BeWoPlaner/BeWo/View/Detail/Report/EMailStatusLogControl.xaml.cs
Christian 9c97d6fe79 CB Merge
2019-07-12 17:36:37 +02:00

200 lines
5.6 KiB
C#

using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using BeWo.ServiceProxy;
using BS.Shared.Extensions;
using DevExpress.Xpf.Scheduler.Drawing;
using Button = System.Web.UI.WebControls.Button;
namespace BeWo.View.Detail.Report
{
/// <summary>
/// Interaktionslogik für TestEMailControl.xaml
/// </summary>
public partial class EMailStatusLogControl : UserControl
{
public event Action CloseButtonClicked;
private ObservableCollection<EmployeeTimesheetDetails> _employeeTimesheets;
private bool _cancelled = false;
private int _Index = 0;
private bool _SendingInProgress = false;
public EMailStatusLogControl()
{
InitializeComponent();
TxtStatus.Text = "";
}
public ObservableCollection<EmployeeTimesheetDetails> EmployeeTimesheetDetails
{
get { return _employeeTimesheets; }
set
{
_employeeTimesheets = value;
GridControlTimesheet.ItemsSource = _employeeTimesheets;
if (EmployeeTimesheetDetails != null && EmployeeTimesheetDetails.Count > 0)
{
txtSubject.Text = EmployeeTimesheetDetails[0].TimeSheetStatusItem.MailSubjectTemplate;
txtContent.Text = EmployeeTimesheetDetails[0].TimeSheetStatusItem.MailMessageTemplate;
}
UpdateStatusText();
}
}
public bool MailSendingSuccessful { get; set; }
private void ButtonStartStop_OnClick(object sender, RoutedEventArgs e)
{
if (_SendingInProgress)
{
CancelSending();
}
else
{
StartSendingMails();
}
}
private void StartSendingMails()
{
_cancelled = false;
_Index = 0;
_SendingInProgress = true;
ButtonStartStop.Content = "Versand abbrechen";
SendNextMail();
}
private void SendNextMail()
{
if (!_cancelled)
{
if (EmployeeTimesheetDetails != null && _Index < EmployeeTimesheetDetails.Count)
{
var next = EmployeeTimesheetDetails[_Index++];
if (next.IsChecked)
{
SendMail(next);
}
else
{
SendNextMail();
}
}
else
{
ButtonStartStop.Content = "Versand starten";
_SendingInProgress = false;
}
}
}
private void SendMail(EmployeeTimesheetDetails etd)
{
if (!String.IsNullOrWhiteSpace(etd.TimeSheetStatusItem.MailAddress))
{
etd.Status = "Mail wird versendet...";
}
else
{
etd.Status = "Keine Mailadresse vorhanden";
SendNextMail();
return;
}
etd.TimeSheetStatusItem.MailSubjectTemplate = txtSubject.Text;
etd.TimeSheetStatusItem.MailMessageTemplate = txtContent.Text;
//CB ### Generated
//ServiceFacade.DoReportServiceAsync(m => m.SendTimeSheetMail(etd.TimeSheetStatusItem, true),
// (result) =>
// {
// this.Dispatch(delegate
// {
// if (String.IsNullOrWhiteSpace(result))
// {
// etd.Status = "Mail erfolgreich versendet.";
// etd.IsChecked = false;
// MailSendingSuccessful = true;
// }
// else
// {
// if (result.Contains("Fehler"))
// {
// etd.Status = result;
// }
// else
// {
// etd.Status = "Beim Versenden ist ein Fehler aufgetreten! " + result;
// }
// }
// //GridControlTimesheet.RefreshData();
// SendNextMail();
// });
// });
}
private void UpdateStatusText()
{
int count = 0;
foreach (var ts in _employeeTimesheets)
{
if (ts.IsChecked)
{
count++;
}
}
TxtStatus.Text = String.Format("Anzahl Gesamt: {0} Ausgewählt: {1}", _employeeTimesheets.Count, count);
}
public bool CancelSending()
{
if (!_SendingInProgress && (EmployeeTimesheetDetails == null || EmployeeTimesheetDetails.Count == 0))
{
return true;
}
if (MessageBox.Show("Möchten Sie den Vorgang wirklich abbrechen?", "Abbrechen", MessageBoxButton.YesNo,
MessageBoxImage.Question) == MessageBoxResult.Yes)
{
_cancelled = true;
ButtonStartStop.Content = "Versand fortführen";
_SendingInProgress = false;
}
else
{
_cancelled = false;
}
return _cancelled;
}
private void ButtonClose_OnClick(object sender, RoutedEventArgs e)
{
CloseButtonClicked?.Invoke();
}
}
}