using System; using System.Collections; using System.ComponentModel; using System.Text; using BeWo.Data.Access; using BeWo.Data.Entities; using DevExpress.XtraReports.UI; using BeWo.Report.ReportObjects; using BeWo.Report; using System.Collections.Generic; using System.IO; using System.Text.RegularExpressions; using BS.Shared.Core; using Image = System.Drawing.Image; namespace PassgenauUG { public partial class Leistungsnachweis : DevExpress.XtraReports.UI.XtraReport, IBeWoReport { public Leistungsnachweis() { InitializeComponent(); } public void SetReportDataSource(ServicesOverviewRO pRO) { ErmittleHauptbetreuer(pRO); if (pRO.RateFactor == 0) { pRO.RateFactor = 1.2m; } if (pRO.Services != null) { List servicesBillable = new List(); double summeStunden = 0; double summeFLS = 0; foreach (ServicesOverviewRO.ServiceDetail s in pRO.Services) { if (s.IsBillable) { ServicesOverviewRO.CreateSignatureString(s); summeStunden += s.Minutes; var fls = (s.Minutes * (double)pRO.RateFactor) / 60; summeFLS += fls; s.Minutes = fls; servicesBillable.Add(s); } } pRO.TotalFLMBillable = summeStunden / 60; pRO.TotalFLS = summeFLS; pRO.Services = servicesBillable; } this.bindingSource1.DataSource = pRO; } private void ErmittleHauptbetreuer(ServicesOverviewRO pRO) { if (pRO.CostBearer2SupportConceptList != null && pRO.CostBearer2SupportConceptList.Count > 0) { var c2s = pRO.CostBearer2SupportConceptList[0]; String list = ""; foreach (var scap in c2s.ApprovalPeriodList) { if (scap.SupportConceptApprovalPeriod2Employee != null) { foreach (var p2e in scap.SupportConceptApprovalPeriod2Employee) { String name = p2e.Employee.Person.FirstNameLastName; if (!list.Contains(name)) { if (list.Length > 0) { list += ", "; } list += name; } } } } if (!String.IsNullOrEmpty(list)) { pRO.MainAttendant = list; } } } 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); System.Drawing.Image img = ByteArrayToImage(binData); xrBox.Image = Utils.CropImage(img); } else { xrBox.Image = null; } } public System.Drawing.Image ByteArrayToImage(byte[] byteArrayIn) { System.Drawing.Image returnImage = null; MemoryStream ms = new System.IO.MemoryStream(byteArrayIn); returnImage = Image.FromStream(ms); return returnImage; } } }