using System; using System.Collections.Generic; using System.Drawing; using System.IO; using System.Text.RegularExpressions; using BeWo.Report.ReportObjects; using BS.Shared.Core; using DevExpress.XtraReports.UI; namespace BeWo.Report.DefaultReports { public partial class Quittierungsbeleg : XtraReport, IBeWoReport { public Quittierungsbeleg() { InitializeComponent(); } public void SetReportDataSource(ServicesOverviewRO pRO) { // Get calling method name //StackTrace stackTrace = new StackTrace(); //Debug.WriteLine(stackTrace.GetFrame(1).GetMethod().Name); bool hatGruppen = false; //if (pRO == null) // return; if (pRO.Services != null) { List servicesBillable = new List(); foreach (var sd in pRO.Services) { if (sd.IsBillable || sd.ServiceDescription.ToLower().Contains("fehlkontakt") || sd.ServiceCategory.ToLower().Contains("fehlkontakt")) { ServicesOverviewRO.CreateSignatureString(sd); sd.Notice5 = "E"; if (sd.IsGroup) { //sd.Notice5 = String.Format("{0} Teilnehmer", sd.CustomerCount); sd.Notice5 = "GR"; hatGruppen = true; } if (sd.ServiceDescription.ToLower().Contains("fehlkontakt") || sd.ServiceCategory.ToLower().Contains("fehlkontakt") || (sd.ProzentAbrechenbar < 100)) { sd.Notice5 = "F"; } servicesBillable.Add(sd); } } pRO.Services = servicesBillable; } if (String.IsNullOrWhiteSpace(pRO.AbsenceTimes)) { lblHatAbwesenheiten.Text = "X"; } if (!hatGruppen) { lblHatGruppen.Text = "X"; } ErstelleAbwesenheitenTabelle(pRO); bindingSource1.DataSource = pRO; } private void ErstelleAbwesenheitenTabelle(ServicesOverviewRO pRo) { if (pRo.Abwesenheiten != null) { int newRows = 0; int index = 1; foreach (var at in pRo.Abwesenheiten) { DevExpress.XtraReports.UI.XRTableRow row = null; if (index < xrTableAbwesenheiten.Rows.Count) { row = xrTableAbwesenheiten.Rows[index]; } else { row = xrTableAbwesenheiten.InsertRowBelow(xrTableAbwesenheiten.Rows[xrTableAbwesenheiten.Rows.Count - 1]); newRows++; } row.Cells[0].Text = String.Format("{0:dd.MM.yyyy}", at.Start); int? days = null; if (at.End.HasValue) { row.Cells[1].Text = String.Format("{0:dd.MM.yyyy}", at.End); days = (int)at.End.Value.Subtract(at.Start.Value).TotalDays + 1; } else { row.Cells[1].Text = "unbekannt"; } row.Cells[2].Text = String.Format("{0:0}", days); index++; } if (newRows > 0) { lblUnterschriftKlient.Top += newRows * 20; lblUnterschriftMitarbeiter.Top += newRows * 20; } } } private void picSignature_BeforePrint(object sender, System.ComponentModel.CancelEventArgs e) { XRPictureBox xrBox = sender as XRPictureBox; //var test = this.GetCurrent string base64String = xrBox.Tag as string; if (!String.IsNullOrWhiteSpace(base64String)) { var base64Data = Regex.Match(base64String, @"data:image/(?.+?),(?.+)").Groups["data"].Value; var binData = Convert.FromBase64String(base64Data); Image img = ByteArrayToImage(binData); xrBox.Image = Utils.CropImage(img); } else { xrBox.Image = null; } } public Image ByteArrayToImage(byte[] byteArrayIn) { using(var memoryStream = new MemoryStream(byteArrayIn)) { return Image.FromStream(memoryStream); } } } }