Exemplo n.º 1
0
        private static bool PopulateRptWebGroups(EPMData epmData, SPWeb spWeb, SPSite spSite, StringBuilder errMsg)
        {
            Guard.ArgumentIsNotNull(epmData, nameof(epmData));
            Guard.ArgumentIsNotNull(spWeb, nameof(spWeb));
            Guard.ArgumentIsNotNull(spSite, nameof(spSite));
            Guard.ArgumentIsNotNull(errMsg, nameof(errMsg));

            var hasError = false;

            try
            {
                LogStatusLevel2Type3(PopulateRptWebGroupsId, StartBulkInsertRptWebGroups, epmData);

                var dataTable  = new DataTable();
                var dataColumn = new DataColumn(RptWebGroups)
                {
                    DataType = typeof(Guid)
                };
                dataTable.Columns.Add(dataColumn);
                dataColumn = new DataColumn(SiteId.ToUpper())
                {
                    DataType = typeof(Guid)
                };
                dataTable.Columns.Add(dataColumn);
                dataColumn = new DataColumn(WebId.ToUpper())
                {
                    DataType = typeof(Guid)
                };
                dataTable.Columns.Add(dataColumn);
                dataColumn = new DataColumn(GroupId)
                {
                    DataType = typeof(int)
                };
                dataTable.Columns.Add(dataColumn);
                dataColumn = new DataColumn(SecType)
                {
                    DataType = typeof(int)
                };
                dataTable.Columns.Add(dataColumn);

                foreach (SPRoleAssignment spRoleAssignment in spWeb.RoleAssignments)
                {
                    var type = spRoleAssignment.Member is SPGroup
                        ? 1
                        : 0;

                    var found = spRoleAssignment.RoleDefinitionBindings.Cast <SPRoleDefinition>()
                                .Any(def => (def.BasePermissions & SPBasePermissions.ViewListItems) == SPBasePermissions.ViewListItems);

                    if (found)
                    {
                        dataTable.Rows.Add(Guid.NewGuid(), spSite.ID, spWeb.ID, spRoleAssignment.Member.ID, type);
                    }
                }

                dataTable.Rows.Add(Guid.NewGuid(), spSite.ID, spWeb.ID, 999999, 1);

                using (var bulkCopy = new SqlBulkCopy(epmData.GetClientReportingConnection))
                {
                    bulkCopy.DestinationTableName = DboRptWebGroups;
                    bulkCopy.WriteToServer(dataTable);
                }

                LogStatusLevel2Type3(PopulateRptWebGroupsId, CompleteBulkInsertRptWebGroups, epmData);
            }
            catch (Exception exception)
            {
                hasError = true;
                errMsg.Append(exception.Message);
                LogStatusLevel2Type3(PopulateRptWebGroupsId, $"Error while Bulk insert dbo.RPTWEBGROUPS Error : {exception.Message}", epmData);
                Trace.WriteLine(exception);
            }
            return(hasError);
        }