diff --git a/PROMS/VEPROMS User Interface/PROMSFixes.Sql b/PROMS/VEPROMS User Interface/PROMSFixes.Sql
index 5a5e0f2c..7d2f6c38 100644
--- a/PROMS/VEPROMS User Interface/PROMSFixes.Sql
+++ b/PROMS/VEPROMS User Interface/PROMSFixes.Sql
@@ -24231,6 +24231,39 @@ GO
==========================================================================================================
*/
+-- C2025-009 Report for tracking PROMS Users / Security
+IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getUserAcessControl]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1)
+ DROP PROCEDURE [getUserAcessControl];
+
+GO
+
+/****** Object: StoredProcedure [dbo].[getUserAcessControl] Script Date: 9/5/2025 6:51:42 AM ******/
+
+-- =============================================
+-- Author: Matthew Schill
+-- Create date: 09/05/2025
+-- Description: Get Data on When Users were added to PROMS and when they were added to Security Groups
+-- =============================================
+CREATE PROCEDURE [dbo].[getUserAcessControl]
+AS
+BEGIN
+ SELECT Users.UserID,
+ WhenUserAddedToPROMS = Users.[DTS],
+ GroupName = Groups.GroupName,
+ WhenUserAddedToGroup = Memberships.[DTS],
+ WhoAddedUserToGroup = CASE WHEN
+ Memberships.UsrID = Users.UsrID
+ AND Users.UsrID = Users.UserID
+ THEN 'INITIAL_SETUP'
+ ELSE Memberships.UsrID END,
+ DateUserRemovedFromGroup = Memberships.EndDate
+ FROM Memberships
+ inner join Groups on Memberships.GID = Groups.GID
+ right outer join Users on Users.UID = Memberships.UID
+ order by UserID, Memberships.[DTS]
+ RETURN
+END
+
/*
---------------------------------------------------------------------------
| ADD New Code Before this Block |
@@ -24264,8 +24297,8 @@ BEGIN TRY -- Try Block
DECLARE @RevDate varchar(255)
DECLARE @RevDescription varchar(255)
- set @RevDate = '09/04/2025 7:00 AM'
- set @RevDescription = 'Removed stored procedures no longer needed'
+ set @RevDate = '09/05/2025 7:00 AM'
+ set @RevDescription = 'Added stored procedure for User Access Control Report'
Select cast(@RevDate as datetime) RevDate, @RevDescription RevDescription
PRINT 'SQL Code Revision ' + @RevDate + ' - ' + @RevDescription
diff --git a/PROMS/VEPROMS User Interface/VEPROMS_UI.csproj b/PROMS/VEPROMS User Interface/VEPROMS_UI.csproj
index 6b6a4249..b38454be 100644
--- a/PROMS/VEPROMS User Interface/VEPROMS_UI.csproj
+++ b/PROMS/VEPROMS User Interface/VEPROMS_UI.csproj
@@ -121,6 +121,10 @@
False
..\..\..\..\3rdPartyLibraries\Log4Net\log4net.dll
+
+
+ True
+
diff --git a/PROMS/VEPROMS User Interface/frmGenTools.cs b/PROMS/VEPROMS User Interface/frmGenTools.cs
index 238519b6..4d0decc8 100644
--- a/PROMS/VEPROMS User Interface/frmGenTools.cs
+++ b/PROMS/VEPROMS User Interface/frmGenTools.cs
@@ -9,6 +9,8 @@ using Volian.Controls.Library;
using DevComponents.DotNetBar;
using JR.Utils.GUI.Forms;
using System.Linq;
+using System.Data;
+using xls = Microsoft.Office.Interop.Excel;
namespace VEPROMS
{
@@ -275,6 +277,13 @@ namespace VEPROMS
setupProgessSteps1();
}
+ //C2025-009 Report for tracking PROMS Users / security
+ private void sideNavItmReports_Click(object sender, EventArgs e)
+ {
+ GenToolType = E_GenToolType.Reports;
+ setupProgessSteps1();
+ }
+
// C2017-030 new Tools user interface
private void sideNavItmExit_Click(object sender, EventArgs e)
{
@@ -287,7 +296,8 @@ namespace VEPROMS
private enum E_GenToolType : int
{
Check = 0,
- Users = 3
+ Users = 3,
+ Reports = 5
};
private E_GenToolType GenToolType = 0;
@@ -314,8 +324,8 @@ namespace VEPROMS
progressSteps1.Visible = true;
progressSteps1.Refresh();
break;
-
case E_GenToolType.Users:
+ case E_GenToolType.Reports:
splitContainer3.Panel2Collapsed = true;
progressSteps1.Visible = false;
break;
@@ -415,7 +425,133 @@ namespace VEPROMS
ClearStepProgress();
}
-
+
+ //C2025-009 Report for tracking PROMS Users / security
+ //UACfilename will hold the filename for cases when scheduled for later
+ private string UACfilename;
+
+ //C2025-009 Report for tracking PROMS Users / security
+ private void btnUAC_Click(object sender, EventArgs e)
+ {
+ if (string.IsNullOrEmpty(UACfilename))
+ {
+ SaveFileDialog sfd = new SaveFileDialog();
+ sfd.Filter = "Excel XLS (*.xlsx)|*.xlsx";
+ sfd.FileName = "UACReport.xlsx";
+ if (sfd.ShowDialog() == DialogResult.OK)
+ {
+ UACfilename = sfd.FileName;
+ }
+ }
+
+ if (!CheckProcessLater()) return; // delay processing if set//B2017-221 Allow the batch dialog to close when waiting to process.
+
+ txtProcess.Clear();
+ txtResults.Clear();
+
+ if (!string.IsNullOrEmpty(UACfilename))
+ {
+ Generate_UAC_Report(UACfilename);
+ }
+
+ UACfilename = null;
+
+ }
+
+ //C2025-009 Report for tracking PROMS Users / security
+ //Get Datatable of results then loop through outputting into excel
+ private void Generate_UAC_Report(string filename)
+ {
+ this.Cursor = Cursors.WaitCursor;
+ DateTime pStart = DateTime.Now;
+ txtProcess.AppendText("Generate User Access Control Report in PROMS");
+ txtProcess.AppendText(Environment.NewLine);
+ txtProcess.AppendText(string.Format("Started: {0}", pStart.ToString("MM/dd/yyyy @ HH:mm")));
+ txtProcess.AppendText(Environment.NewLine);
+ Application.DoEvents();
+ txtResults.Clear();
+ txtResults.AppendText("Generating User Access Control Report");
+
+ using (DataTable dt = UserReports.GetUserAccessControlData())
+ {
+ // Start Excel and get Application object.
+ xls.Application excel = new xls.Application
+ {
+ // Make Excel invisible and disable alerts.
+ Visible = false,
+ DisplayAlerts = false
+ };
+
+ // Create a new Workbook.
+ xls.Workbook excelworkBook = excel.Workbooks.Add();
+
+ // Create a Worksheet.
+ var workSheet = (xls.Worksheet)excelworkBook.ActiveSheet;
+ workSheet.Name = "UAC Report";
+
+ // column headings
+ for (var i = 0; i < dt.Columns.Count; i++)
+ {
+ workSheet.Cells[1, i + 1] = dt.Columns[i].ColumnName;
+ }
+
+ // rows
+ for (var i = 0; i < dt.Rows.Count; i++)
+ {
+ for (var j = 0; j < dt.Columns.Count; j++)
+ {
+ workSheet.Cells[i + 2, j + 1] = dt.Rows[i][j];
+ }
+ }
+
+ //resize the columns to match the data
+ workSheet.Columns.AutoFit();
+
+ //freeze the top row, and highlight those cells
+ workSheet.Application.ActiveWindow.SplitRow = 1;
+ workSheet.Application.ActiveWindow.FreezePanes = true;
+ workSheet.Cells.Range[workSheet.Cells[1, 1], workSheet.Cells[1, dt.Columns.Count]].Interior.Color = xls.XlRgbColor.rgbLightBlue;
+
+ //save the excel file
+ excelworkBook.SaveAs(filename);
+ excelworkBook.Close();
+ excel.Quit();
+
+ //release any in use com objects
+ releaseObject(workSheet);
+ releaseObject(excelworkBook);
+ releaseObject(excel);
+
+ }
+
+ DateTime pEnd = DateTime.Now;
+ txtProcess.AppendText(string.Format("Completed: {0}", pEnd.ToString("MM/dd/yyyy @ HH:mm")));
+ Application.DoEvents();
+ this.Cursor = Cursors.Default;
+ MessageBox.Show("Generate User Access Control Report Completed", "User Access Control Report");
+
+ }
+
+ //C2025-009 Report for tracking PROMS Users / security
+ //for releasing any Excel com objects still in memory
+ private void releaseObject(object obj)
+ {
+ try
+ {
+ System.Runtime.InteropServices.Marshal.ReleaseComObject(obj);
+ obj = null;
+ }
+ catch (Exception ex)
+ {
+ obj = null;
+ MessageBox.Show("Exception Occurred while releasing object " + ex.ToString());
+ }
+ finally
+ {
+ GC.Collect();
+ }
+ }
+
//C2025-011 RO Update Tool Memory Enhancements
private void txtProcess_TextChanged(object sender, EventArgs e)
{
diff --git a/PROMS/VEPROMS User Interface/frmGenTools.designer.cs b/PROMS/VEPROMS User Interface/frmGenTools.designer.cs
index 482713c9..995bf751 100644
--- a/PROMS/VEPROMS User Interface/frmGenTools.designer.cs
+++ b/PROMS/VEPROMS User Interface/frmGenTools.designer.cs
@@ -51,6 +51,9 @@
this.expandableSplitter1 = new DevComponents.DotNetBar.ExpandableSplitter();
this.panelEx1 = new DevComponents.DotNetBar.PanelEx();
this.sideNav1 = new DevComponents.DotNetBar.Controls.SideNav();
+ this.sideNavPanel6 = new DevComponents.DotNetBar.Controls.SideNavPanel();
+ this.sideNavPanel5 = new DevComponents.DotNetBar.Controls.SideNavPanel();
+ this.btn_ShowUsers = new DevComponents.DotNetBar.ButtonX();
this.sideNavPanel1 = new DevComponents.DotNetBar.Controls.SideNavPanel();
this.warningBox3 = new DevComponents.DotNetBar.Controls.WarningBox();
this.labelX7 = new DevComponents.DotNetBar.LabelX();
@@ -62,12 +65,11 @@
this.swCkOrphanDataRecs = new DevComponents.DotNetBar.Controls.SwitchButton();
this.labelX1 = new DevComponents.DotNetBar.LabelX();
this.btnRunCheck = new DevComponents.DotNetBar.ButtonX();
- this.sideNavPanel5 = new DevComponents.DotNetBar.Controls.SideNavPanel();
- this.btn_ShowUsers = new DevComponents.DotNetBar.ButtonX();
this.sideNavItem1 = new DevComponents.DotNetBar.Controls.SideNavItem();
this.separator1 = new DevComponents.DotNetBar.Separator();
this.sideNavItmCheck = new DevComponents.DotNetBar.Controls.SideNavItem();
this.sideNavItmUsers = new DevComponents.DotNetBar.Controls.SideNavItem();
+ this.sideNavItmReports = new DevComponents.DotNetBar.Controls.SideNavItem();
this.sideNavItmExit = new DevComponents.DotNetBar.Controls.SideNavItem();
this.panelEx4 = new DevComponents.DotNetBar.PanelEx();
this.progressSteps1 = new DevComponents.DotNetBar.ProgressSteps();
@@ -78,6 +80,7 @@
this.lblAdmToolProgressType = new DevComponents.DotNetBar.LabelX();
this.buttonItem1 = new DevComponents.DotNetBar.ButtonItem();
this.superTooltip1 = new DevComponents.DotNetBar.SuperTooltip();
+ this.btnUAC = new DevComponents.DotNetBar.ButtonX();
((System.ComponentModel.ISupportInitialize)(this.splitContainer3)).BeginInit();
this.splitContainer3.Panel1.SuspendLayout();
this.splitContainer3.Panel2.SuspendLayout();
@@ -89,8 +92,9 @@
this.pnlLater.SuspendLayout();
this.panelEx1.SuspendLayout();
this.sideNav1.SuspendLayout();
- this.sideNavPanel1.SuspendLayout();
+ this.sideNavPanel6.SuspendLayout();
this.sideNavPanel5.SuspendLayout();
+ this.sideNavPanel1.SuspendLayout();
this.panelEx4.SuspendLayout();
this.SuspendLayout();
//
@@ -416,8 +420,9 @@
// sideNav1
//
this.sideNav1.BackColor = System.Drawing.SystemColors.Control;
- this.sideNav1.Controls.Add(this.sideNavPanel1);
+ this.sideNav1.Controls.Add(this.sideNavPanel6);
this.sideNav1.Controls.Add(this.sideNavPanel5);
+ this.sideNav1.Controls.Add(this.sideNavPanel1);
this.sideNav1.Dock = System.Windows.Forms.DockStyle.Fill;
this.sideNav1.EnableClose = false;
this.sideNav1.EnableMaximize = false;
@@ -426,6 +431,7 @@
this.separator1,
this.sideNavItmCheck,
this.sideNavItmUsers,
+ this.sideNavItmReports,
this.sideNavItmExit});
this.sideNav1.Location = new System.Drawing.Point(0, 0);
this.sideNav1.Name = "sideNav1";
@@ -434,6 +440,40 @@
this.sideNav1.TabIndex = 3;
this.sideNav1.Text = "sideNav1";
//
+ // sideNavPanel6
+ //
+ this.sideNavPanel6.Controls.Add(this.btnUAC);
+ this.sideNavPanel6.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.sideNavPanel6.Location = new System.Drawing.Point(88, 31);
+ this.sideNavPanel6.Name = "sideNavPanel6";
+ this.sideNavPanel6.Size = new System.Drawing.Size(292, 493);
+ this.sideNavPanel6.TabIndex = 14;
+ //
+ // sideNavPanel5
+ //
+ this.sideNavPanel5.Controls.Add(this.btn_ShowUsers);
+ this.sideNavPanel5.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.sideNavPanel5.Location = new System.Drawing.Point(88, 31);
+ this.sideNavPanel5.Name = "sideNavPanel5";
+ this.sideNavPanel5.Size = new System.Drawing.Size(292, 493);
+ this.sideNavPanel5.TabIndex = 14;
+ this.sideNavPanel5.Visible = false;
+ //
+ // btn_ShowUsers
+ //
+ this.btn_ShowUsers.AccessibleRole = System.Windows.Forms.AccessibleRole.PushButton;
+ this.btn_ShowUsers.Checked = true;
+ this.btn_ShowUsers.ColorTable = DevComponents.DotNetBar.eButtonColor.OrangeWithBackground;
+ this.btn_ShowUsers.Location = new System.Drawing.Point(57, 37);
+ this.btn_ShowUsers.Name = "btn_ShowUsers";
+ this.btn_ShowUsers.Size = new System.Drawing.Size(171, 23);
+ this.btn_ShowUsers.Style = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
+ this.superTooltip1.SetSuperTooltip(this.btn_ShowUsers, new DevComponents.DotNetBar.SuperTooltipInfo("Show Users", "", "This will return all of the users currently with open sessions in the database an" +
+ "d the details of any items they have checked out.", null, null, DevComponents.DotNetBar.eTooltipColor.Gray, true, true, new System.Drawing.Size(200, 80)));
+ this.btn_ShowUsers.TabIndex = 0;
+ this.btn_ShowUsers.Text = "Show Users";
+ this.btn_ShowUsers.Click += new System.EventHandler(this.btn_ShowUsers_Click);
+ //
// sideNavPanel1
//
this.sideNavPanel1.Controls.Add(this.warningBox3);
@@ -451,6 +491,7 @@
this.sideNavPanel1.Name = "sideNavPanel1";
this.sideNavPanel1.Size = new System.Drawing.Size(292, 493);
this.sideNavPanel1.TabIndex = 2;
+ this.sideNavPanel1.Visible = false;
//
// warningBox3
//
@@ -600,31 +641,6 @@
this.btnRunCheck.Text = "Run Check";
this.btnRunCheck.Click += new System.EventHandler(this.btnRunCheck_Click);
//
- // sideNavPanel5
- //
- this.sideNavPanel5.Controls.Add(this.btn_ShowUsers);
- this.sideNavPanel5.Dock = System.Windows.Forms.DockStyle.Fill;
- this.sideNavPanel5.Location = new System.Drawing.Point(88, 31);
- this.sideNavPanel5.Name = "sideNavPanel5";
- this.sideNavPanel5.Size = new System.Drawing.Size(292, 493);
- this.sideNavPanel5.TabIndex = 14;
- this.sideNavPanel5.Visible = false;
- //
- // btn_ShowUsers
- //
- this.btn_ShowUsers.AccessibleRole = System.Windows.Forms.AccessibleRole.PushButton;
- this.btn_ShowUsers.Checked = true;
- this.btn_ShowUsers.ColorTable = DevComponents.DotNetBar.eButtonColor.OrangeWithBackground;
- this.btn_ShowUsers.Location = new System.Drawing.Point(57, 37);
- this.btn_ShowUsers.Name = "btn_ShowUsers";
- this.btn_ShowUsers.Size = new System.Drawing.Size(171, 23);
- this.btn_ShowUsers.Style = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
- this.superTooltip1.SetSuperTooltip(this.btn_ShowUsers, new DevComponents.DotNetBar.SuperTooltipInfo("Show Users", "", "This will return all of the users currently with open sessions in the database an" +
- "d the details of any items they have checked out.", null, null, DevComponents.DotNetBar.eTooltipColor.Gray, true, true, new System.Drawing.Size(200, 80)));
- this.btn_ShowUsers.TabIndex = 0;
- this.btn_ShowUsers.Text = "Show Users";
- this.btn_ShowUsers.Click += new System.EventHandler(this.btn_ShowUsers_Click);
- //
// sideNavItem1
//
this.sideNavItem1.IsSystemMenu = true;
@@ -644,7 +660,6 @@
//
// sideNavItmCheck
//
- this.sideNavItmCheck.Checked = true;
this.sideNavItmCheck.Name = "sideNavItmCheck";
this.sideNavItmCheck.Panel = this.sideNavPanel1;
this.sideNavItmCheck.Symbol = "";
@@ -659,6 +674,15 @@
this.sideNavItmUsers.Text = "Users";
this.sideNavItmUsers.Click += new System.EventHandler(this.sideNavItmUsers_Click);
//
+ // sideNavItmReports
+ //
+ this.sideNavItmReports.Checked = true;
+ this.sideNavItmReports.Name = "sideNavItmReports";
+ this.sideNavItmReports.Panel = this.sideNavPanel6;
+ this.sideNavItmReports.Symbol = "";
+ this.sideNavItmReports.Text = "Reports";
+ this.sideNavItmReports.Click += new System.EventHandler(this.sideNavItmReports_Click);
+ //
// sideNavItmExit
//
this.sideNavItmExit.Name = "sideNavItmExit";
@@ -761,6 +785,20 @@
this.superTooltip1.DefaultTooltipSettings = new DevComponents.DotNetBar.SuperTooltipInfo("", "", "", null, null, DevComponents.DotNetBar.eTooltipColor.Gray);
this.superTooltip1.LicenseKey = "F962CEC7-CD8F-4911-A9E9-CAB39962FC1F";
//
+ // btnUAC
+ //
+ this.btnUAC.AccessibleRole = System.Windows.Forms.AccessibleRole.PushButton;
+ this.btnUAC.Checked = true;
+ this.btnUAC.ColorTable = DevComponents.DotNetBar.eButtonColor.OrangeWithBackground;
+ this.btnUAC.Location = new System.Drawing.Point(35, 30);
+ this.btnUAC.Name = "btnUAC";
+ this.btnUAC.Size = new System.Drawing.Size(187, 23);
+ this.btnUAC.Style = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
+ this.btnUAC.TabIndex = 0;
+ this.btnUAC.Text = "Run User Access Control Report";
+ this.superTooltip1.SetSuperTooltip(this.btnUAC, new DevComponents.DotNetBar.SuperTooltipInfo("UAC Report", "", "This will return a report containing info on when users were added to PROMS and when users were added to specific PROMS security groups.", null, null, DevComponents.DotNetBar.eTooltipColor.Gray));
+ this.btnUAC.Click += new System.EventHandler(this.btnUAC_Click);
+ //
// frmGenTools
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
@@ -790,15 +828,16 @@
this.panelEx1.ResumeLayout(false);
this.sideNav1.ResumeLayout(false);
this.sideNav1.PerformLayout();
- this.sideNavPanel1.ResumeLayout(false);
+ this.sideNavPanel6.ResumeLayout(false);
this.sideNavPanel5.ResumeLayout(false);
+ this.sideNavPanel1.ResumeLayout(false);
this.panelEx4.ResumeLayout(false);
this.ResumeLayout(false);
}
- #endregion
- private System.Windows.Forms.SplitContainer splitContainer3;
+ #endregion
+ private System.Windows.Forms.SplitContainer splitContainer3;
private DevComponents.DotNetBar.PanelEx panelEx3;
private System.Windows.Forms.TextBox txtResults;
private System.Windows.Forms.Panel panel1;
@@ -829,11 +868,13 @@
private DevComponents.DotNetBar.ButtonX btnRunCheck;
private DevComponents.DotNetBar.Controls.SideNavPanel sideNavPanel5;
private DevComponents.DotNetBar.ButtonX btn_ShowUsers;
- private DevComponents.DotNetBar.Controls.SideNavItem sideNavItem1;
+ private DevComponents.DotNetBar.Controls.SideNavPanel sideNavPanel6;
+ private DevComponents.DotNetBar.Controls.SideNavItem sideNavItem1;
private DevComponents.DotNetBar.Separator separator1;
private DevComponents.DotNetBar.Controls.SideNavItem sideNavItmCheck;
private DevComponents.DotNetBar.Controls.SideNavItem sideNavItmUsers;
- private DevComponents.DotNetBar.Controls.SideNavItem sideNavItmExit;
+ private DevComponents.DotNetBar.Controls.SideNavItem sideNavItmReports;
+ private DevComponents.DotNetBar.Controls.SideNavItem sideNavItmExit;
private DevComponents.DotNetBar.LabelX lblAdmToolProgressType;
private DevComponents.DotNetBar.ProgressSteps progressSteps1;
private DevComponents.DotNetBar.StepItem stepItem1;
@@ -847,7 +888,8 @@
private DevComponents.DotNetBar.PanelEx panelEx4;
private DevComponents.DotNetBar.Controls.WarningBox warningBox3;
private DevComponents.DotNetBar.ButtonItem buttonItem1;
- }
+ private DevComponents.DotNetBar.ButtonX btnUAC;
+ }
}
diff --git a/PROMS/VEPROMS User Interface/frmGenTools.resx b/PROMS/VEPROMS User Interface/frmGenTools.resx
index 12f79aef..96245292 100644
--- a/PROMS/VEPROMS User Interface/frmGenTools.resx
+++ b/PROMS/VEPROMS User Interface/frmGenTools.resx
@@ -117,6 +117,9 @@
System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ 17, 17
+
diff --git a/PROMS/VEPROMS.CSLA.Library/Minimal/UserReports.cs b/PROMS/VEPROMS.CSLA.Library/Minimal/UserReports.cs
new file mode 100644
index 00000000..32f1cef3
--- /dev/null
+++ b/PROMS/VEPROMS.CSLA.Library/Minimal/UserReports.cs
@@ -0,0 +1,42 @@
+using System;
+using Csla.Data;
+using System.Data;
+using System.Data.SqlClient;
+
+//CSM - C2025-009 - Minimal Class for User based Reports
+namespace VEPROMS.CSLA.Library
+{
+ public static class UserReports
+ {
+
+ #region Get User Reports
+ //CSM - C2025-009 Report for tracking PROMS Users / security
+ public static DataTable GetUserAccessControlData()
+ {
+ try
+ {
+ using (SqlConnection cn = Database.VEPROMS_SqlConnection)
+ {
+ using (SqlCommand cm = cn.CreateCommand())
+ {
+ cm.CommandType = CommandType.StoredProcedure;
+ cm.CommandText = "getUserAcessControl";
+ cm.CommandTimeout = Database.DefaultTimeout;
+ using (SqlDataAdapter da = new SqlDataAdapter(cm))
+ {
+ DataTable dt = new DataTable();
+ da.Fill(dt);
+ return dt;
+ }
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ throw new DbCslaException("Error in getUserAcessControl Report: retrieving data failed", ex);
+ }
+ }
+ #endregion
+
+ }
+}
diff --git a/PROMS/VEPROMS.CSLA.Library/VEPROMS.CSLA.Library.csproj b/PROMS/VEPROMS.CSLA.Library/VEPROMS.CSLA.Library.csproj
index 27379637..bd901c66 100644
--- a/PROMS/VEPROMS.CSLA.Library/VEPROMS.CSLA.Library.csproj
+++ b/PROMS/VEPROMS.CSLA.Library/VEPROMS.CSLA.Library.csproj
@@ -388,6 +388,7 @@
+