private void deleteTransientUserReport(UserReport userReport, ReportProjectDBEntities entities) { // delete the summarize fields var sumFields = (from ursf in entities.UserReportSummarizeField where ursf.UserReportID == userReport.UserReportID select ursf).ToList(); foreach (UserReportSummarizeField sumField in sumFields) { entities.DeleteObject(sumField); } // delete the fields //TODO: NOt necessary, must be a cascade delete in the database // delete the parameters var userReportParms = (from urp in entities.UserReportParameter where urp.UserReportID == userReport.UserReportID select urp).ToList(); foreach (UserReportParameter userReportParameter in userReportParms) { entities.DeleteObject(userReportParameter); } // delete the user report entities.DeleteObject(userReport); entities.SaveChanges(); }
private int saveUserReportFields(int userReportID, List <RptField> fields, int userId, List <RptField> summarizeFields) { ReportProjectDBEntities entities = new ReportProjectDBEntities(); UserReport ur = entities.UserReport.Where(urp => urp.UserReportID == userReportID).First(); foreach (var field in fields) { string sortdir = "A"; if (field.SortDirection == SortDirectionEnum.Descending) { sortdir = "D"; } UserReportField urf = new UserReportField(); urf.UserReport = ur; urf.ReportField = entities.ReportField.Where(r => r.ReportFieldID == field.ReportFieldID).First(); urf.CreatedByUserID = userId; urf.CreatedDate = DateTime.Now; urf.ColumnOrder = field.ColumnOrder; urf.CustomName = field.Name; urf.SortDirection = sortdir; urf.SortOrder = field.SortOrder; urf.GroupOrder = field.GroupOrder; urf.IncludePageBreak = field.IncludePageBreak; urf.CoverageCode = field.CoverageCode; entities.AddToUserReportField(urf); } entities.SaveChanges(); saveUserReportSummarizeFields(summarizeFields, entities, ur, userId); return(ur.UserReportID); }
private int saveUserReport(int reportID, int reportLayoutStyleID, string userReportName, bool isSummaryOnly, int userId, bool isCustom, string associationNumber, int formatTypeID, bool isTransient, bool isTurnOffPageBreak, bool includeTitlePage) { ReportProjectDBEntities entities = new ReportProjectDBEntities(); ReportLayoutStyle reportLayoutStyle = entities.ReportLayoutStyle.FirstOrDefault(rl => rl.ReportLayoutStyleID == reportLayoutStyleID); UserReport ur = new UserReport(); ur.ReportLayoutStyleID = reportLayoutStyle.ReportLayoutStyleID; ur.FormatTypeID = formatTypeID; ur.ReportID = reportID; ur.UserID = userId; ur.CreatedByUserID = userId; ur.CreatedDate = DateTime.Now; ur.ModifiedDate = DateTime.Now; ur.UserReportName = userReportName; ur.ModifiedByUserID = userId; ur.IsCustom = isCustom; ur.ClientNumber = associationNumber; ur.IsSummaryOnly = isSummaryOnly; ur.IsTransient = isTransient; ur.IsTurnOffPageBreak = isTurnOffPageBreak; ur.IncludeTitlePage = includeTitlePage; entities.AddToUserReport(ur); entities.SaveChanges(); return(ur.UserReportID); }
public void UpdateUserReport(int userReportID, int reportLayoutStyleID, int formatTypeID, string userReportName, bool isSummaryOnly, List <RptParameter> parameters, bool isTurnOffPageBreak, bool includeTitlePage) { bool reportLayoutStyleChanged = false; ReportProjectDBEntities entities = new ReportProjectDBEntities(); ReportLayoutStyle reportLayoutStyle = entities.ReportLayoutStyle.FirstOrDefault(rs => rs.ReportLayoutStyleID == reportLayoutStyleID); UserReport ur = entities.UserReport.First(r => r.UserReportID == userReportID); ur.ModifiedDate = DateTime.Now; ur.UserReportName = userReportName; ur.IsSummaryOnly = isSummaryOnly; ur.IsTurnOffPageBreak = isTurnOffPageBreak; ur.IncludeTitlePage = includeTitlePage; ur.IsCustom = reportLayoutStyle.IsCustom; if (ur.ReportLayoutStyleID != reportLayoutStyleID) { reportLayoutStyleChanged = true; } ur.ReportLayoutStyle = reportLayoutStyle; ur.FormatType = entities.FormatType.FirstOrDefault(f => f.FormatTypeID == formatTypeID); entities.SaveChanges(); var userReportParameters = from urp in entities.UserReportParameter .Include("UserReport") where urp.UserReport.UserReportID == userReportID select urp; foreach (var val in userReportParameters) { val.ParameterValue = parameters.First(v => v.UserReportParameterID == val.UserReportParameterID).DefaultValue; } if (!ur.IsCustom) { deleteUserReportSummarizeFields(userReportID); deleteUserReportFields(userReportID); } entities.SaveChanges(); ReportDomainService domainService = new ReportDomainService(); if (reportLayoutStyleChanged) { domainService.RelocateSchedulesForUserReport(ur.UserReportID); } else { domainService.SynchronizeSchedulesForUserReport(ur.UserReportID); } }
public void UpdateCustomUserReport(int userReportID, List <RptField> fields, int userId, List <RptField> summarizeFields) { ReportProjectDBEntities entities = new ReportProjectDBEntities(); UserReport ur = entities.UserReport.First(r => r.UserReportID == userReportID); ur.ModifiedDate = DateTime.Now; deleteUserReportSummarizeFields(userReportID); updateUserReportFields(userReportID, fields, userId, summarizeFields); entities.SaveChanges(); }
private void createReportDeliveryLogRecord(int scheduleID, int?scheduleRecipientID, int?userReportOutputID) { using (ReportProjectDBEntities entities = new ReportProjectDBEntities()) { ReportDeliveryLog rdl = new ReportDeliveryLog() { ScheduleID = scheduleID, ScheduleRecipientID = scheduleRecipientID, UserReportOutputID = userReportOutputID, DeliveryDate = DateTime.Now }; entities.AddToReportDeliveryLog(rdl); entities.SaveChanges(); } }
private void deleteUserReportSummarizeFields(int userReportID) { ReportProjectDBEntities entities = new ReportProjectDBEntities(); var sumfields = from f in entities.UserReportSummarizeField where f.UserReport.UserReportID == userReportID select f; if (sumfields != null && sumfields.Count() > 0) { foreach (UserReportSummarizeField field in sumfields) { entities.UserReportSummarizeField.DeleteObject(field); } entities.SaveChanges(); } }
private void deleteUserReportFields(int userReportID) { ReportProjectDBEntities entities = new ReportProjectDBEntities(); var userReportfieldList = from f in entities.UserReportField where f.UserReport.UserReportID == userReportID select f; if (userReportfieldList != null && userReportfieldList.Count() > 0) { foreach (UserReportField field in userReportfieldList) { entities.UserReportField.DeleteObject(field); } entities.SaveChanges(); } }
private void saveUserReportSummarizeFields(List <RptField> summarizeFields, ReportProjectDBEntities entities, UserReport userRpt, int userId) { if (summarizeFields != null) { foreach (RptField sumfield in summarizeFields) { UserReportField urfs = entities.UserReportField.First(urf => urf.UserReport.UserReportID == userRpt.UserReportID && urf.ReportField.ReportFieldID == sumfield.ReportFieldID); UserReportSummarizeField ursf = new UserReportSummarizeField(); ursf.CreatedByUserID = userId; ursf.CreatedDate = DateTime.Now; ursf.UserReport = userRpt; ursf.UserReportFieldID = urfs.UserReportFieldID; entities.AddToUserReportSummarizeField(ursf); } } entities.SaveChanges(); }
private void saveUserReportParameters(int userReportID, int userId, List <RptParameter> parameters) { ReportProjectDBEntities entities = new ReportProjectDBEntities(); UserReport ur = entities.UserReport.Where(urp => urp.UserReportID == userReportID).First(); foreach (var parm in parameters) { UserReportParameter urp = new UserReportParameter(); urp.UserReport = ur; urp.ReportParameter = entities.ReportParameter.Where(r => r.ReportParameterID == parm.ID).FirstOrDefault(); urp.ParameterValue = parm.DefaultValue; urp.CreatedByUserID = userId; urp.CreatedDate = DateTime.Now; urp.FilterString = parm.FilterString; entities.AddToUserReportParameter(urp); } entities.SaveChanges(); }
private int createUserReportOutputRecord(CcmsiUser user, UserReport userReport, DeliveredReportInfo info, string filename, ScheduleRecipient recipient) { using (ReportProjectDBEntities entities = new ReportProjectDBEntities()) { UserReportOutput rpt = new UserReportOutput() { UserReport = entities.UserReport.Where(r => r.UserReportID == userReport.UserReportID).First(), UserID = recipient.UserID, FileName = filename, ClientNumber = userReport.ClientNumber, ReportRunDate = info.ExecutionDate, CreatedDate = DateTime.Now, CreatedByUserID = Convert.ToInt32(userReport.CreatedByUserID) }; entities.AddToUserReportOutput(rpt); entities.SaveChanges(); return(rpt.UserReportOutputID); } }
public void SetReportTypeCheckpoints(List <Rpt> reportTypes, string checkpointID) { ReportProjectDBEntities entities = new ReportProjectDBEntities(); var removeReport_ICESecurityCheckpoint = from rptj in entities.Report_ICESecurityCheckpoint where rptj.CheckpointID.Trim() == checkpointID.Trim() select rptj; foreach (Report_ICESecurityCheckpoint Report_ICESecurityCheckpoint in removeReport_ICESecurityCheckpoint) { entities.DeleteObject(Report_ICESecurityCheckpoint); } entities.SaveChanges(); foreach (Rpt rpt in reportTypes) { entities.AddToReport_ICESecurityCheckpoint(new Report_ICESecurityCheckpoint { CheckpointID = checkpointID, ReportID = rpt.ID }); } entities.SaveChanges(); }
private int updateUserReportFields(int userReportID, List <RptField> fields, int userId, List <RptField> summarizeFields) { ReportProjectDBEntities entities = new ReportProjectDBEntities(); UserReport ur = entities.UserReport.Where(urp => urp.UserReportID == userReportID).First(); var userReportFielList = from fv in entities.UserReportField .Include("UserReport") where fv.UserReport.UserReportID == userReportID select fv; foreach (var field in userReportFielList) { if (!fields.Any(f => f.RptFieldID == field.UserReportFieldID)) { entities.UserReportField.DeleteObject(field); } else { RptField myfield = fields.First(f => f.RptFieldID == field.UserReportFieldID); string sortdir = "A"; if (myfield.SortDirection == SortDirectionEnum.Descending) { sortdir = "D"; } UserReportField urf = new UserReportField(); field.ColumnOrder = myfield.ColumnOrder; field.SortOrder = myfield.SortOrder; field.SortDirection = sortdir; field.GroupOrder = myfield.GroupOrder; field.CustomName = myfield.Name; field.IncludePageBreak = myfield.IncludePageBreak; field.CoverageCode = myfield.CoverageCode; } } //Add New UserReportFields foreach (RptField field in fields) { if (field.RptFieldID == field.ReportFieldID) { if (field.IsUsed || field.SortOrder > 0) { string sortdir = "A"; if (field.SortDirection == SortDirectionEnum.Descending) { sortdir = "D"; } UserReportField urf = new UserReportField(); urf.UserReport = ur; urf.ReportField = entities.ReportField.Where(r => r.ReportFieldID == field.RptFieldID).First(); urf.CreatedByUserID = userId; urf.CreatedDate = DateTime.Now; urf.ColumnOrder = field.ColumnOrder; urf.CustomName = field.Name; urf.SortDirection = sortdir; urf.SortOrder = field.SortOrder; urf.GroupOrder = field.GroupOrder; urf.IncludePageBreak = field.IncludePageBreak; urf.CoverageCode = field.CoverageCode; entities.AddToUserReportField(urf); } } } entities.SaveChanges(); saveUserReportSummarizeFields(summarizeFields, entities, ur, userId); return(ur.UserReportID); }
public List <object> GetParametersTurnOffPageBreak(int reportID, Dictionary <string, object> parameters, bool isSummaryOnly, int formatTypeID, bool isCustomReport) { List <object> myParams = new List <object>(); if (formatTypeID == (int)FormatTypeEnum.Excel) { bool verifyRowCountSp = true; ReportProjectDBEntities entities = new ReportProjectDBEntities(); var rptObj = (from r in entities.Report where r.ReportID == reportID select new { r.VerifyRowCountSP, r.VerifyRowCountBeforeExecuting }).FirstOrDefault(); List <ReportParameter> listParameters = (from rp in entities.ReportParameter .Include("Report") where rp.Report.ReportID == reportID && rp.IsQueryParameter select rp).ToList(); verifyRowCountSp = rptObj.VerifyRowCountBeforeExecuting; bool includeOneLineClaimDetail = true; foreach (KeyValuePair <string, object> keyValuePair in parameters) { if (keyValuePair.Key == "IncludeOneLineClaimDetail") { includeOneLineClaimDetail = Convert.ToBoolean(keyValuePair.Value); } } if ((reportID == (int)ReportEnum.LossRunSummary) && !includeOneLineClaimDetail) { verifyRowCountSp = false; } if (rptObj != null) { if (!isSummaryOnly && verifyRowCountSp) { foreach (KeyValuePair <string, object> keyValuePair in parameters) { ReportParameter parameter = listParameters.Where(lp => lp.ReportParameterName.ToLower() == keyValuePair.Key.ToLower()).FirstOrDefault(); if (parameter != null) { parameter.DefaultValue = keyValuePair.Value != null?keyValuePair.Value.ToString() : ""; } } foreach (ReportParameter rptParam in listParameters) { myParams.Add("@" + rptParam.ReportParameterName); myParams.Add(rptParam.DefaultValue); } var isCustomParameterIndex = myParams.IndexOf("@IsCustom"); if (isCustomParameterIndex != -1) { myParams[isCustomParameterIndex + 1] = (isCustomReport) ? "True" : "False"; } else { myParams.Add("@IsCustom"); myParams.Add((isCustomReport) ? "True" : "False"); } myParams.Add("#"); myParams.Add(rptObj.VerifyRowCountSP.ToString().Trim()); } } } return(myParams); }
public void UploadDeliveredReport(ReportUploadRequest request) { //string currentUser = System.Security.Principal.WindowsIdentity.GetCurrent().Name; MemoryStream sourceStream = null; DeliveredReportInfo info = request.DeliveredReportInfo; ReportProjectDBEntities entities = new ReportProjectDBEntities(); bool success = true; try { // write the byte stream to a memory stream because it can be repositioned const int BUFFER_LENGTH = 4096; byte[] buffer = new byte[BUFFER_LENGTH]; int byteCount = 0; sourceStream = new MemoryStream(); while ((byteCount = request.FileByteStream.Read(buffer, 0, BUFFER_LENGTH)) > 0) { sourceStream.Write(buffer, 0, byteCount); } int scheduleID = Convert.ToInt32(info.ScheduleID); Schedule schedule = (from s in entities.Schedule .Include("ScheduleRecipient") where s.ScheduleID == scheduleID orderby s.ScheduleID select s).FirstOrDefault(); int userReportID = schedule.UserReportID; UserReport userReport = (from ur in entities.UserReport.Include("ReportLayoutStyle") where ur.UserReportID == userReportID select ur).FirstOrDefault(); if (!LogExceptionsOnly) { Logger.Write(string.Format("**** Processing Report Delivery. Client Number = {0}, User Report = {1}({2}), ScheduleID = {3}, RS File Name = {4} ****", userReport.ClientNumber, userReport.UserReportName, userReport.UserReportID, scheduleID, info.Filename), "SLLog"); } if (!IsSendReport(schedule, userReport)) { CreateReportEmptyNotSentDeliveryLog(schedule); } else { Regex reg = new Regex("[^0-9a-zA-Z_]+?"); string fileName = reg.Replace(string.Format("{0}-{1}", userReport.UserReportName, DateTime.Now), "-"); fileName = string.Format("{0}.{1}", fileName, info.Extension); bool isSensitive = false; if (userReport.IsCustom) { List <UserReportField> userReportFields = (from urf in entities.UserReportField.Include("ReportField").Include("UserReport") where urf.UserReport.UserReportID == userReport.UserReportID select urf).ToList(); foreach (UserReportField userReportField in userReportFields) { if (userReportField.ReportField.IsSensitive) { isSensitive = true; break; } } } else { if (userReport.ReportLayoutStyle.IsSensitive) { isSensitive = true; } } string subject = string.Empty; var filterService = new FilterService(); var userId = filterService.GetCcmsiUser(Convert.ToInt32(userReport.CreatedByUserID)); if (isSensitive && filterService.GetUserHasSSNAccess(userId.UserID)) { subject = string.Format("{0}{1}", "CCMSISecure: ", schedule.Subject); } else { subject = IsReportNeedSensitive(userReport.ReportID) ? string.Format("{0}{1}", "CCMSISecure: ", schedule.Subject) : schedule.Subject; } foreach (ScheduleRecipient recipient in schedule.ScheduleRecipient.Where(sr => sr.IsActive).ToList()) { CcmsiUser user = filterService.GetCcmsiUser(recipient.UserID); if (recipient.DeliveryMethodType == ScheduleRecipient.DeliveryMethod.Email) { // deliver the email to all recipients in prod, but only to the user who created the schedule in test if (IsProduction || EnabledEmailAddresses.Contains(user.EmailAddress.Trim().ToUpper())) //recipient.UserID == schedule.CreatedByUserID) { string emailBody = GetEmailBody(schedule); var ccmsiDomainPattern = new Regex(@"\w+([-+.]\w+)*@ccmsi.com", RegexOptions.Compiled); DeliverViaEmail(ccmsiDomainPattern.IsMatch(user.EmailAddress) ? schedule.Subject : subject, emailBody, schedule.PriorityType, user.EmailAddress, info, fileName, sourceStream, recipient, scheduleID); if (!LogExceptionsOnly) { Logger.Write(string.Format(" Report emailed to user. UserID = {0}, User Name = {1}, Email Address = {2}", recipient.UserID, user.UserID, user.EmailAddress), "SLLog"); } } } else { DeliverViaApplication(user, userReport, info, fileName, sourceStream, recipient); } } // deliver to additional email recipients not in our database whose addresses were manually entered if (IsProduction && !String.IsNullOrEmpty(schedule.AdditionalEmailAddresses) && schedule.AdditionalEmailAddresses.Trim() != String.Empty) { DeliverViaEmail(subject, schedule.Comment, schedule.PriorityType, schedule.AdditionalEmailAddresses.Trim(), info, fileName, sourceStream, null, scheduleID); if (!LogExceptionsOnly) { Logger.Write(string.Format(" Report emailed to additonal recipients. Email Addresses = {0}", schedule.AdditionalEmailAddresses), "SLLog"); } } } } catch (Exception ex) { success = false; Logger.Write(ex.ToString(), "SLLog"); throw; } finally { UndoImpersonation(); sourceStream.Close(); if (!LogExceptionsOnly) { Logger.Write(string.Format("**** Processing Report Delivery Completed. Success = {0} ****", success), "SLLog"); } } }
/* * private delegate void generateReportDelegate(string sessionID, GenerateReportRequest reportRequest); * * private void cancelReport(CancelReportRequest request) * { * GenerateReportResponse response = new GenerateReportResponse(); * response.Status = ReportRequestStatus.Cancelled; * try * { * if (!_reportRequestQueue.ContainsKey(request.ReportRequestGuid)) * { * // report probably already completed or may have errored out, so do nothing * System.Diagnostics.Debug.WriteLine(String.Format("No report request in queue to cancel | Request ID: {0} | {1}", * request.ReportRequestGuid.ToString(), DateTime.Now.TimeOfDay.ToString())); * return; * } * * GenerateReportRequest rptRequest = _reportRequestQueue[request.ReportRequestGuid]; * System.Diagnostics.Debug.WriteLine(String.Format("Report request being cancelled | Request ID: {0} | Status: {1} | {2}", * request.ReportRequestGuid.ToString(), rptRequest.Status.ToString(), DateTime.Now.TimeOfDay.ToString())); * * if (rptRequest.Status == RunningReportStatus.Rendering) * { * rptRequest.Status = RunningReportStatus.Cancelled; * RdlManager mgr = new RdlManager(); * mgr.CancelReport(rptRequest); * } * else * { * rptRequest.Status = RunningReportStatus.Cancelled; * } * * } * catch (Exception ex) * { * handleReportRequestException(ex, response); * System.Diagnostics.Debug.WriteLine("Non-critical failure cancelling a report: " + ex.ToString()); * * // just log and then go on--this is not a critical error because the report will just run to completion and then be ignored * Logger.Write("Non-critical failure cancelling a report: " + ex.ToString(), "SLLog"); * } * } */ public GenerateReportResponse GenerateReportExecute(string sessionID, GenerateReportRequest reportRequest) { int userReportID = -1; bool includeTitlePage = true; List <RptParameter> parameters = null; UserReport userReport = null; ReportProjectDBEntities entities = new ReportProjectDBEntities(); GenerateReportResponse response = new GenerateReportResponse(); response.ReportRequestGuid = reportRequest.ReportRequestGuid; try { // Get the user report ID (first creating a transient user report, if necessary) if (reportRequest is GenerateUserReportRequest) { GenerateUserReportRequest request = (GenerateUserReportRequest)reportRequest; userReportID = request.UserReportID; } else if (reportRequest is GenerateStandardReportRequest) { GenerateStandardReportRequest request = (GenerateStandardReportRequest)reportRequest; ReportBuilderService reportBuilderService = new ReportBuilderService(); int reportID = request.ReportID; int reportLayoutStyleID = request.ReportLayoutStyleID; int formatTypeID = request.FormatTypeId; bool isTurnOffPageBreak = request.IsTurnOffPageBreak; includeTitlePage = request.IncludeTitlePage; parameters = request.Parameters; userReportID = reportBuilderService.SaveStandardUserReport(request.UserID, reportID, reportLayoutStyleID, formatTypeID, parameters.Where( p => p.Name.ToLower() == "userreportname") .FirstOrDefault().DefaultValue, parameters, request.AssociationNumber, true, isTurnOffPageBreak, includeTitlePage); } else if (reportRequest is GenerateCustomReportRequest) { GenerateCustomReportRequest request = (GenerateCustomReportRequest)reportRequest; ReportBuilderService reportBuilderService = new ReportBuilderService(); int reportID = request.ReportID; int reportLayoutStyleID = request.ReportLayoutStyleID; int formatTypeID = request.FormatTypeId; parameters = request.Parameters; bool isSummaryOnly = request.IsSummaryOnly; includeTitlePage = request.IncludeTitlePage; List <RptField> fields = request.Fields; List <RptField> userSummarizeRptField = request.UserSummarizeRptField; userReportID = reportBuilderService.SaveCustomUserReport(request.UserID, reportID, formatTypeID, reportLayoutStyleID, parameters.Where( p => p.Name.ToLower() == "userreportname"). FirstOrDefault().DefaultValue, isSummaryOnly, fields, userSummarizeRptField, parameters, request.AssociationNumber, true, includeTitlePage); } // Read the user report and the user report parameters (if necessary) userReport = (from ur in entities.UserReport .Include("ReportLayoutStyle") .Include("FormatType") .Include("Report") where ur.UserReportID == userReportID select ur).FirstOrDefault(); if (userReport.FormatTypeID == (int)FormatTypeEnum.Grid) { reportRequest.Status = RunningReportStatus.Rendering; try { ReportDomainService domainService = new ReportDomainService(); if (parameters == null) { parameters = domainService.GetUserReportParameters(userReportID, userReport.ReportID).ToList(); } List <Dictionary <string, object> > resultDictionary = new List <Dictionary <string, object> >(); DBHelper dbHelper = new DBHelper(ConfigurationManager.ConnectionStrings["Store1Connection"].ConnectionString); List <object> myParams = new List <object>(); foreach (RptParameter rptParam in parameters.Where(p => p.IsQueryParameter).ToList()) { myParams.Add("@" + rptParam.Name); if (rptParam.DataType == DataTypeEnum.Bool && !string.IsNullOrEmpty(rptParam.DefaultValue)) { myParams.Add( Convert.ToInt32(rptParam.DefaultValue.ToLower().Replace("false", "0").Replace( "true", "1"))); } else if (rptParam.DataType == DataTypeEnum.Integer && !string.IsNullOrEmpty(rptParam.DefaultValue)) { myParams.Add(Convert.ToInt32(rptParam.DefaultValue)); } else { myParams.Add(rptParam.DefaultValue); } } if (dbHelper.IsExistsCommandParameter(userReport.Report.VerifyRowCountSP.Replace("_Count", "_Report"), CommandType.StoredProcedure, "@IsCustom")) { var isCustomParameterIndex = myParams.IndexOf("@IsCustom"); if (isCustomParameterIndex != -1) { myParams[isCustomParameterIndex + 1] = 1; } else { myParams.Add("@IsCustom"); myParams.Add(1); } } if (userReport.Report.VerifyRowCountSP.Replace("_Count", "_Report") == "rb_PAndIRembursableReport_Report") { var index = 0; foreach (var myParam in myParams) { if (myParam.ToString().ToLower() == "@claimtype") { break; } index++; } myParams[index] = "@ClaimTypes"; } if (userReport.Report.VerifyRowCountSP.Replace("_Count", "_Report") == "rb_LossRunSummary_Report") { myParams.Add("@AssnName"); myParams.Add("Test"); } List <RptField> fields = domainService.GetUserReportFields(userReportID, userReport.ReportID, userReport.ClientNumber) .ToList(); DataTable recordDataTable = dbHelper.GetDataTable(userReport.Report.VerifyRowCountSP.Replace("_Count", "_Report"), CommandType.StoredProcedure, myParams.ToArray()); if (recordDataTable != null && recordDataTable.Rows != null && recordDataTable.Rows.Count != 0) { int i = 0; foreach (DataRow row in recordDataTable.Rows) { Dictionary <string, object> drow = new Dictionary <string, object>(); foreach (RptField field in fields) { if (!string.IsNullOrEmpty(field.SQLName) && field.ColumnOrder > 0) { if (!drow.ContainsKey(field.SQLName)) { if (field.DataType == DataTypeEnum.Date) { drow.Add(field.SQLName, row[field.SQLName] != DBNull.Value ? DateTime.Parse( DateTime.Parse(row[field.SQLName].ToString()). ToShortDateString()).ToString("MM/dd/yyyy") : new DateTime().ToString("MM/dd/yyyy")); } else if (field.DataType == DataTypeEnum.Money) { IFormatProvider provider = new CultureInfo("en-US"); drow.Add(field.SQLName, row[field.SQLName] != DBNull.Value ? String.Format(provider, "{0:C}", row[field.SQLName]) : "$0.00"); } else { drow.Add(field.SQLName, row[field.SQLName] != DBNull.Value ? row[field.SQLName] : null); } } } else { ///parser drow.Add(field.CustomName, CustomValue); } } i++; drow.Add("ID", i.ToString()); resultDictionary.Add(drow); } } response.UserReportFields = fields; response.GridData = resultDictionary; response.Status = ReportRequestStatus.Completed; } catch (Exception ex) { if (ex.Message.Contains("Report processing has been canceled by the user")) { System.Diagnostics.Debug.WriteLine( String.Format( "Report processing cancelled by user during render | Request ID: {0} | {1}", reportRequest.ReportRequestGuid.ToString(), DateTime.Now.TimeOfDay.ToString())); response.Status = ReportRequestStatus.Cancelled; } else { throw; } } } else { if (parameters == null) { ReportDomainService reportDomainService = new ReportDomainService(); parameters = reportDomainService.GetUserReportParameters(userReportID, userReport.ReportID).ToList(); } //TODO: remove this. The userReportName can't be used any longer to cancel a job. /*if (!_reportNameGuidQueue.ContainsKey(reportRequest.ReportRequestGuid)) * { * _reportNameGuidQueue.Add(reportRequest.ReportRequestGuid, userReport.UserReportName); * }*/ System.Diagnostics.Debug.WriteLine(String.Format("Rendering report | Request ID: {0} | {1}", reportRequest.ReportRequestGuid.ToString(), DateTime.Now.TimeOfDay.ToString())); reportRequest.Status = RunningReportStatus.Rendering; try { RdlManager rdlManager = new RdlManager(); byte[] rpt = rdlManager.RenderReport(userReport, parameters); // save the rendered report to the file system and send the url back to the client string fileName = createFileName(userReport.UserReportName, userReport.FormatType.Extension); System.IO.File.WriteAllBytes(_ReportFolderPath + fileName, rpt); response.ReportUrl = ConfigurationManager.AppSettings["ReportFolder"] + fileName; response.Status = ReportRequestStatus.Completed; if ((int)FormatTypeEnum.HTML == userReport.FormatTypeID) { StreamReader streamReader = new StreamReader(new MemoryStream(rpt)); response.Content = Processing(streamReader.ReadToEnd(), "IMG", "SRC"); //var str = Processing(Regex.Replace(response.Content, @"<META(.|\n)*?>", string.Empty), "IMG", "SRC"); } } catch (Exception ex) { if (ex.Message.Contains("Report processing has been canceled by the user")) { System.Diagnostics.Debug.WriteLine( String.Format( "Report processing cancelled by user during render | Request ID: {0} | {1}", reportRequest.ReportRequestGuid.ToString(), DateTime.Now.TimeOfDay.ToString())); response.Status = ReportRequestStatus.Cancelled; } else { Logger.Write(ex, MethodBase.GetCurrentMethod(), ex.Message, "-1"); throw; } } } } catch (Exception ex) { Logger.Write(ex, MethodBase.GetCurrentMethod(), ex.Message, "-1"); } finally { // push the response back to the requestor. If succeeds includes the url to the completed report, // if fails includes a user friendly failure message. System.Diagnostics.Debug.WriteLine(string.Format("Pushing message to client | Request ID: {0} | Status: {1} | {2} ", reportRequest.ReportRequestGuid.ToString(), response.Status.ToString(), DateTime.Now.TimeOfDay.ToString())); //this.PushMessageToClient(sessionID, response); // do the non-essential things here -- we don't want a failure on any of these things to prevent // the client from getting the report try { /*_reportRequestQueue.Remove(reportRequest.ReportRequestGuid); * //TODO: remove this? * if (_reportNameGuidQueue.ContainsKey(reportRequest.ReportRequestGuid)) * { * _reportNameGuidQueue.Remove(reportRequest.ReportRequestGuid); * }*/ if (userReport != null && userReport.IsTransient) { deleteTransientUserReport(userReport, entities); } cleanUpTempFiles(); } catch (Exception ex) { Logger.Write(ex, MethodBase.GetCurrentMethod(), ex.Message, "-1"); } } return(response); }