namespace Terrasoft.Configuration.ReportService { using System; using System.IO; using System.Linq; using System.ServiceModel.Web; using System.Text; using System.Web; using Terrasoft.Core; using Terrasoft.Core.Configuration; using Terrasoft.Core.Entities; using Terrasoft.Common.Json; using SelectQuery = Terrasoft.Nui.ServiceModel.DataContract.SelectQuery; using Terrasoft.Nui.ServiceModel.Extensions; using Terrasoft.UI.WebControls.Utilities; [Terrasoft.Core.Factories.Override] public class SpecialNamingOrderInvoiceReportHelper : ReportHelper { private UserConnection _userConnection; public UserConnection UserConnection { get { return _userConnection ?? (_userConnection = (UserConnection)HttpContext.Current.Session["UserConnection"]); } set { _userConnection = value; } } public override string CreateReport(string entitySchemaUId, string reportSchemaUId, string templateId, string recordId, string reportParameters, bool convertInPDF){ string key = string.Format("ReportCacheKey_{0}", Guid.NewGuid()); ReportData data; bool isDevExpress = string.IsNullOrEmpty(templateId); var reportService = new ReportService(); if (isDevExpress) { data = reportService.GenerateDevExpressReport(entitySchemaUId, reportSchemaUId, recordId, reportParameters); } else { data = reportService.GenerateMSWordReport(templateId, recordId, convertInPDF); if(entitySchemaUId == AimConfigurationConstants.Order.OrderSchemaUId.ToString() || entitySchemaUId == AimConfigurationConstants.Invoice.InvoiceSchemaUId.ToString()) { string caption = GetDataCaption(entitySchemaUId, recordId); if(!String.IsNullOrEmpty(caption)) { data.Caption = caption; } } } UserConnection.SessionData[key] = data; return key; } private string GetDataCaption(string entitySchemaUId, string recordId) { string tableName = entitySchemaUId == AimConfigurationConstants.Order.OrderSchemaUId.ToString() ? "Order" : "Invoice"; var esq = new EntitySchemaQuery(UserConnection.EntitySchemaManager, tableName); esq.PrimaryQueryColumn.IsAlwaysSelect = true; esq.AddAllSchemaColumns(); var accountNameColumn = esq.AddColumn("Account.Name").Name; esq.AddColumn("Number"); var entity = esq.GetEntity(UserConnection, new Guid(recordId)); if(entity != null) { return entity.GetTypedColumnValue(accountNameColumn) + "-" + entity.GetTypedColumnValue("Number"); } return ""; } } }