using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net; using System.Net.Mail; using System.Net.Mime; using System.Reflection; using System.Text; using System.Threading; using BeWo.Data; using BeWo.Data.Access; using BeWo.Data.Entities; using BeWo.Report; using BeWo.Report.ReportObjects; using BeWo.Service.DCEntityMapper; using BeWo.Service.Plugins; using BeWo.Service.ServiceImplementations; using BS.Shared; using BS.Shared.Core; using BS.Shared.DataContracts; using BS.Shared.DataContracts.Compact; using BS.Shared.Extensions; using DevExpress.XtraReports.UI; namespace ReportingService.Plugins { public class TimeSheetReportService : AbstractIDSpecificDefaultClass { public virtual string SendTimeSheetMail(TimeSheetStatusItemDC item, bool saveMailToDatabase) { try { var tss = PluginLoader.FindClass(); var reportCreator = CreateReportCreator(); if (item.Customer != null && item.Customer.Count > 0 && item.Monat.HasValue && item.Employee != null) { //foreach (var cc in item.Customer) //{ var report = reportCreator.CreateServiceOverviewSingleCustomerReport(0, item.Monat.Value.Month, item.Monat.Value.Year, 0, item.Employee.EmployeeOid, null, 1, DateTime.DaysInMonth(item.Monat.Value.Year, item.Monat.Value.Month)); var additionalReports = CreateAdditionalReports(item.Customer, reportCreator, item); var result = tss.SendTimeSheetMail(item, saveMailToDatabase, report, additionalReports); if (!String.IsNullOrWhiteSpace(result)) { return result; } //} } } catch (Exception e) { return e.Message; } return ""; } public virtual Dictionary CreateAdditionalReports(IList cc, DefaultReportCreator reportCreator, TimeSheetStatusItemDC item) { return null; } private DefaultReportCreator CreateReportCreator() { var reportCreator = PluginLoader.FindClass(); reportCreator.Tenant = PluginLoader.Tenant; #if DEBUG reportCreator.ReportPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"bin\" + PluginLoader.Tenant + "_reports.dll"); #else reportCreator.ReportPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"Customer\" + PluginLoader.Tenant + "_reports.dll"); #endif return reportCreator; } } }