示例#1
0
        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();
        }
示例#2
0
        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);
        }
示例#3
0
        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);
        }
示例#4
0
        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);
            }
        }
示例#5
0
        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();
        }
示例#6
0
 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();
     }
 }
示例#7
0
        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();
            }
        }
示例#8
0
        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();
            }
        }
示例#9
0
        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();
        }
示例#10
0
        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();
        }
示例#11
0
        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);
            }
        }
示例#12
0
        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();
        }
示例#13
0
        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);
        }
示例#14
0
        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);
        }
示例#15
0
        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");
                }
            }
        }
示例#16
0
        /*
         * 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);
        }