200 lines
5.6 KiB
C#
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();
|
|
}
|
|
}
|
|
}
|