or
| using System; |
| using System.Collections.Generic; |
| 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.Shapes; |
| using Telerik.Windows.Controls.Charting; |
| using AppointmentScheduler; |
| using Telerik.Windows.Data; |
| using System.Globalization; |
| using Telerik.Windows.Controls; |
| namespace AppointmentSchedulerUI |
| { |
| /// <summary> |
| /// Interaction logic for ChartWorkingHours.xaml |
| /// </summary> |
| public partial class ChartWorkingHours : Window |
| { |
| private AppointmentScheduler.AppointmentScheduler m_AppointmentScheduler; |
| private Dictionary<string, Employee> m_Employees; |
| public ChartWorkingHours(Dictionary<string, Employee> employees, AppointmentScheduler.AppointmentScheduler appointmentScheduler) |
| { |
| m_AppointmentScheduler = appointmentScheduler; |
| m_Employees = employees; |
| InitializeComponent(); |
| CountriesBox.ItemsSource = employees.Values; |
| m_CB_Year.ItemsSource = new int[]{2009, 2010, 2011, 2012}; |
| List<string> monthNames = new List<string>(); |
| monthNames.Add("Komplettes Jahr"); |
| for (int i=1; i<=12; i++) |
| monthNames.Add(CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(i)); |
| m_CB_Month.ItemsSource = monthNames; |
| m_RadChart.DefaultView.ChartLegend.Header = ""; |
| m_RadChart.DefaultView.ChartLegendPosition = Dock.Bottom; |
| SeriesMapping seriesMapping1 = new SeriesMapping(); |
| seriesMapping1.LegendLabel = "Abgerechnete Arbeitsstunden"; |
| seriesMapping1.SeriesDefinition = new BarSeriesDefinition(); |
| ItemMapping itemMapping1 = new ItemMapping(); |
| itemMapping1.DataPointMember = DataPointMember.YValue; |
| itemMapping1.FieldName = "WorkedHours"; |
| ItemMapping itemMapping2 = new ItemMapping(); |
| itemMapping2.DataPointMember = DataPointMember.XCategory; |
| itemMapping2.FieldName = "ShortName"; |
| seriesMapping1.ItemMappings.Add(itemMapping1); |
| seriesMapping1.ItemMappings.Add(itemMapping2); |
| m_RadChart.SeriesMappings.Add(seriesMapping1); |
| SeriesMapping seriesMapping2= new SeriesMapping(); |
| seriesMapping2.LegendLabel = "Bezahlte Arbeitsstunden"; |
| seriesMapping2.SeriesDefinition = new BarSeriesDefinition(); |
| ItemMapping itemMapping3 = new ItemMapping(); |
| itemMapping3.DataPointMember = DataPointMember.YValue; |
| itemMapping3.FieldName = "PaidHours"; |
| ItemMapping itemMapping4 = new ItemMapping(); |
| itemMapping4.DataPointMember = DataPointMember.XCategory; |
| itemMapping4.FieldName = "ShortName"; |
| seriesMapping2.ItemMappings.Add(itemMapping3); |
| seriesMapping2.ItemMappings.Add(itemMapping4); |
| m_RadChart.SeriesMappings.Add(seriesMapping2); |
| m_CB_Year.SelectedItem = DateTime.Now.Year; |
| m_CB_Month.SelectedIndex = 0; |
| m_CB_Year.SelectionChanged +=new SelectionChangedEventHandler(TimeSpanModified); |
| m_CB_Month.SelectionChanged += new SelectionChangedEventHandler(TimeSpanModified); |
| m_RadChart.DefaultView.ChartArea.ItemToolTipOpening += this.ChartItemToolTipOpening; |
| UpdateData(); |
| } |
| private void ChartItemToolTipOpening(ItemToolTip2D tooltip, ItemToolTipEventArgs args) |
| { |
| RadChart chart = new RadChart(); |
| chart.Height = 200; |
| chart.Width = 300; |
| chart.DefaultView.ChartLegend.Visibility = System.Windows.Visibility.Collapsed; |
| chart.DefaultView.ChartArea.AxisX.LayoutMode = AxisLayoutMode.Inside; |
| string axisItemLabel = m_RadChart.DefaultView.ChartArea.AxisX.TickPoints[args.ItemIndex].Label; |
| chart.DefaultView.ChartTitle.Content = string.Format("Quarterly Preview: {0}", axisItemLabel); |
| chart.DefaultView.ChartArea.AxisY.DefaultLabelFormat = "C"; |
| DataSeries series = new DataSeries(); |
| series.Definition = new LineSeriesDefinition(); |
| series.Definition.ShowItemLabels = false; |
| //SeriesExtensions.FillWithSampleData(series, 4, (int)args.DataPoint.YValue); |
| string[] quarters = new string[] { "Q1", "Q2", "Q3", "Q4" }; |
| for (int i = 0; i < chart.DefaultView.ChartArea.AxisX.TickPoints.Count; i++) |
| series[i].XCategory = quarters[i]; |
| //for (int i = 0; i < series.Count; i++) |
| // quarterlyRevenues[i] = series[i].YValue; |
| chart.DefaultView.ChartArea.DataSeries.Add(series); |
| tooltip.Content = chart; |
| } |
| private void UpdateData() |
| { |
| int selectedYear = (int)m_CB_Year.SelectedItem; |
| string selectedMonthString = (string)m_CB_Month.SelectedItem; |
| bool wholeYear = false; |
| int selectedMonth = 0; |
| if (selectedMonthString == "Komplettes Jahr") |
| wholeYear = true; |
| else |
| selectedMonth = DateTime.ParseExact(selectedMonthString, "MMMM", CultureInfo.CurrentCulture).Month; |
| DateTime startTime; |
| DateTime endTime; |
| if (wholeYear) |
| { |
| startTime = new DateTime(selectedYear, 1, 1); |
| endTime = new DateTime(selectedYear + 1, 1, 1); |
| } |
| else |
| { |
| startTime = new DateTime(selectedYear, selectedMonth, 1); |
| endTime = new DateTime(selectedYear, selectedMonth, 1).AddMonths(1); |
| } |
| List<ChartData> chartData = new List<ChartData>(); |
| foreach (Employee emp in m_Employees.Values) |
| { |
| double workedHours = m_AppointmentScheduler.GetWorkedHours(startTime, endTime, emp); |
| double paidHours = m_AppointmentScheduler.GetPaidHours(startTime, endTime, emp); |
| chartData.Add(new ChartData(emp.FirstName, emp.LastName, workedHours, paidHours)); |
| } |
| m_RadChart.ItemsSource = chartData; |
| } |
| private void CheckBox_Checked(object sender, RoutedEventArgs e) |
| { |
| CheckBox sourceCheckbox = e.OriginalSource as CheckBox; |
| Queue<ChartFilterDescriptor> filtersToRemove = new Queue<ChartFilterDescriptor>(); |
| foreach (ChartFilterDescriptor descriptor in m_RadChart.FilterDescriptors) |
| { |
| if (descriptor.Value.Equals(sourceCheckbox.Content)) |
| filtersToRemove.Enqueue(descriptor); |
| } |
| foreach (ChartFilterDescriptor descriptor in filtersToRemove) |
| m_RadChart.FilterDescriptors.Remove(descriptor); |
| } |
| private void CheckBox_Unchecked(object sender, RoutedEventArgs e) |
| { |
| CheckBox sourceCheckbox = e.OriginalSource as CheckBox; |
| m_RadChart.FilterDescriptors.Add(new ChartFilterDescriptor("FullName", typeof(string), FilterOperator.IsNotEqualTo, sourceCheckbox.Content)); |
| } |
| private void TimeSpanModified(object sender, SelectionChangedEventArgs e) |
| { |
| UpdateData(); |
| } |
| } |
| } |
try{ OpenFileDialog fDialog = (OpenFileDialog)sender; switch (System.IO.Path.GetExtension(fDialog.FileName)) { case ".docx": docProvider = new DocxFormatProvider(); break; case ".rtf": docProvider = new RtfFormatProvider(); break; case ".txt": docProvider = new TxtFormatProvider(); break; case ".html": docProvider = new HtmlFormatProvider(); break; default: break; } using (FileStream fStream = new FileStream(fDialog.FileName, FileMode.OpenOrCreate, FileAccess.ReadWrite)) { rDoc = docProvider.Import(fStream); } rDoc.LayoutMode = DocumentLayoutMode.Paged; emailForm1.Document = rDoc;}protected void SubmitEmail(object sender, RoutedEventArgs e){ MailMessage message = new MailMessage(); byte[] emailBytes = null; string bodyText = string.Empty; SmtpClient mailServer = new SmtpClient("mail.pentegra.com"); mailServer.UseDefaultCredentials = true; this.emailForm1.Document.MailMergeDataSource.ItemsSource = mergeFields; //here's where I change the formatprovider from docx to rtf. if I use docx, the email text comes out as a bunch of symbols docProvider = new RtfFormatProvider(); //this is just a datatable with a list of emails that gets iterated through to send the emails. for (int i = 0; i < _dtMerge.Rows.Count; i++) { message = new MailMessage(); foreach (string s in lstAttachments) { message.Attachments.Add(new Attachment(s)); } message.From = _fromAddress; emailForm1.Document.MailMergeDataSource.MoveToIndex(i); emailBytes = docProvider.Export(emailForm1.Document.MailMergeCurrentRecord()); //I convert the byte array into the email body test here. StringBuilder sb = new StringBuilder(); using (StreamReader sReader = new StreamReader(mStream)) { while (!(sReader.EndOfStream)) { sb.Append(sReader.ReadLine() + Environment.NewLine); } } bodyText = sb.ToString(); message.AlternateViews.Add(AlternateView.CreateAlternateViewFromString(bodyText, null, "text/html")); message.To.Clear(); message.To.Add(new MailAddress("x@xx.com")); mailServer.Send(message); }