コード例 #1
0
        /// <summary>
        /// Validate the parameters to generate the report.
        /// </summary>
        /// <typeparam name="TResponse"></typeparam>
        /// <param name="request"></param>
        /// <returns></returns>
        protected override TResponse OnValidateGenerateReportRequest <TResponse>(BaseServiceGenerateReportRequest request)
        {
            var reportRequest = request as SecurityUserLoginHistoryReportGenerateReportRequest;

            //Ensure start and end date are specified. Also output type must be specified.
            if (reportRequest.StartDate == null || reportRequest.EndDate == null)
            {
                var response = Activator.CreateInstance <TResponse>();
                response.IsSuccessful = false;
                response.Message      = "The from and to dates must be specified to generate the report.";
                return(response);
            }
            else if (reportRequest.StartDate > reportRequest.EndDate)
            {
                var response = Activator.CreateInstance <TResponse>();
                response.IsSuccessful = false;
                response.Message      = "The from date must be less than the to date.";
                return(response);
            }
            else if (String.IsNullOrWhiteSpace(reportRequest.OutputFormat))
            {
                var response = Activator.CreateInstance <TResponse>();
                response.IsSuccessful = false;
                response.Message      = "The output format must be specified to generate the report.";
                return(response);
            }

            //Successful validation
            return(null);
        }
コード例 #2
0
        /// <summary>
        /// Populate the data sources for the report.
        /// </summary>
        /// <param name="request"></param>
        protected override void PopulateReportDataSources(BaseServiceGenerateReportRequest request)
        {
            var reportRequest = request as SecurityUserLoginHistoryReportGenerateReportRequest;

            //
            //Ensure to cast the end date to be the date at 11:59:59.999 pm so we include the whole day of activity
            //
            DateTime?endDate = null;

            if (reportRequest.EndDate != null)
            {
                endDate = reportRequest.EndDate.Value.AddDays(1).AddMilliseconds(-1);
            }

            //
            //Call stored proc to get data for report
            //
            var sqlRequest = new USPReportSecurityUserLoginHistorySQLRequest()
            {
                StartDate      = reportRequest.StartDate,
                EndDate        = endDate,
                SecurityUserId = reportRequest.SecurityUserId
            };
            var results = _repository.ExecuteList <USPReportSecurityUserLoginHistory>(sqlRequest);

            this.AddDataSource("DataSet1", results);
        }
コード例 #3
0
        /// <summary>
        /// Populate the parameters for the report.
        /// </summary>
        /// <param name="request"></param>
        protected override void PopulateReportParameters(BaseServiceGenerateReportRequest request)
        {
            var    reportRequest  = request as SecurityUserLoginHistoryReportGenerateReportRequest;
            String reportCriteria = "";

            //Date filters
            reportCriteria += String.Format("From Date: {0:d}, ", reportRequest.StartDate);
            reportCriteria += String.Format("To Date: {0:d}, ", reportRequest.EndDate);

            //User name
            if (reportRequest.SecurityUserId != null)
            {
                var user = _repository.GetAll <SecurityUser>().FirstOrDefault(p => p.SecurityUserId == reportRequest.SecurityUserId);
                reportCriteria += String.Format("User: {0} ", user.UserName);
            }
            else
            {
                reportCriteria += String.Format("User: All ");
            }

            this.AddReportParameter("ReportCriteria", reportCriteria);
        }
コード例 #4
0
        /// <summary>
        /// Generate the CSV output version of the report.
        /// </summary>
        /// <param name="request"></param>
        /// <param name="response"></param>
        protected override void GenerateCSVOutput(BaseServiceGenerateReportRequest request, BaseServiceGenerateReportResponse response)
        {
            //
            //Render the report
            //
            using (var memoryStream = new MemoryStream())
            {
                //Open the write the CSV to a memory stream
                using (var writer = new StreamWriter(memoryStream))
                {
                    var csv = new CsvWriter(writer);

                    var csvRecords = new List <SecurityUserLoginHistoryReportCSVRecord>();
                    var dataSet    = this.GetDataSource("DataSet1") as IEnumerable <USPReportSecurityUserLoginHistory>;

                    foreach (var dataRow in dataSet)
                    {
                        var csvRecord = new SecurityUserLoginHistoryReportCSVRecord();
                        //Map the stored proc row into the csv record
                        var config = new MapperConfiguration(cfg =>
                        {
                            cfg.CreateMap <USPReportSecurityUserLoginHistory, SecurityUserLoginHistoryReportCSVRecord>();
                        });
                        IMapper mapper = config.CreateMapper();
                        mapper.Map(dataRow, csvRecord);

                        csvRecords.Add(csvRecord);
                    }
                    csv.WriteRecords(csvRecords);
                }

                //
                //Return the CSV data
                //
                response.IsSuccessful = true;
                response.ReportBytes  = memoryStream.ToArray();
            }
        }
コード例 #5
0
        /// <summary>
        /// Generate the Excel output version of the report.
        /// </summary>
        /// <param name="request"></param>
        /// <param name="response"></param>
        protected override void GenerateExcelOutput(BaseServiceGenerateReportRequest request, BaseServiceGenerateReportResponse response)
        {
            using (var excelWriter = new ExcelWriter())
            {
                var excelRecords = new List <SecurityUserLoginHistoryReportExcelRecord>();
                var dataSet      = this.GetDataSource("DataSet1") as IEnumerable <USPReportSecurityUserLoginHistory>;

                foreach (var dataRow in dataSet)
                {
                    var excelRecord = new SecurityUserLoginHistoryReportExcelRecord();
                    //Map the stored proc row into the csv record
                    var config = new MapperConfiguration(cfg =>
                    {
                        cfg.CreateMap <USPReportSecurityUserLoginHistory, SecurityUserLoginHistoryReportExcelRecord>();
                    });
                    IMapper mapper = config.CreateMapper();
                    mapper.Map(dataRow, excelRecord);

                    excelRecords.Add(excelRecord);
                }

                var dataTableHelper = new DataTableHelper <SecurityUserLoginHistoryReportExcelRecord>();
                var dataTable       = dataTableHelper.GetTable(excelRecords);

                //
                //Specify the excel formatting
                //
                var headers = new string[]
                {
                    "SecurityUserLoginHistoryId",
                    "SecurityUserId",
                    "UserName",
                    "MachineName",
                    "ApplicationCode",
                    "SuccessfulLogin",
                    "AccountWasLocked",
                    "IPAddress",
                    "Browser",
                    "ScreenResolution",
                    "Message",
                    "SessionId",
                    "SessionEndDate",
                    "LastRequestDate",
                    "SessionTimeoutDate",
                    "LastRequestUrl",
                    "CreateDate",
                    "CreateUser",
                    "ModifyDate",
                    "ModifyUser"
                };

                var format = new string[]
                {
                    "",
                    "",
                    "",
                    "",
                    "",
                    "",
                    "",
                    "",
                    "",
                    "",
                    "",
                    "",
                    "",
                    "",
                    "",
                    "",
                    "",
                    "",
                    "",
                    ""
                };

                var columns = dataTable.Columns.Cast <DataColumn>().Where(c => c.ColumnName.ToLower() != "key").
                              Select(column => column.ColumnName).
                              ToArray();
                excelWriter.AddSection(headers, columns, format, dataTable, 0);

                //
                //Return the Excel data
                //
                response.IsSuccessful = true;
                response.ReportBytes  = excelWriter.SaveFile();
            }
        }