Пример #1
0
        /// <summary>
        /// Assigns a role to a report
        /// </summary>
        /// <param name="reportName">The report name</param>
        /// <param name="roleName">The role name</param>
        /// <param name="constraints">The parameter constraints</param>
        public void AssignRoleToReport
        (
            string reportName,
            string roleName,
            params ReportParameterConstraintConfiguration[] constraints
        )
        {
            Validate.IsNotNull(constraints);

            var assigned = _assignmentRepository.IsRoleAssigned
                           (
                reportName,
                roleName
                           );

            if (assigned)
            {
                throw new InvalidOperationException
                      (
                          $"The role '{roleName}' has already been assigned to '{reportName}'."
                      );
            }

            var assignment = new ReportRoleAssignment
                             (
                reportName,
                roleName,
                constraints
                             );

            _assignmentRepository.AddAssignment(assignment);
            _unitOfWork.SaveChanges();
        }
Пример #2
0
        /// <summary>
        /// Constructs the report parameter constraint with the details
        /// </summary>
        /// <param name="assignment">The role assignment</param>
        /// <param name="configuration">The constraint configuration</param>
        internal ReportParameterConstraint
        (
            ReportRoleAssignment assignment,
            ReportParameterConstraintConfiguration configuration
        )
        {
            Validate.IsNotNull(assignment);

            this.Id         = Guid.NewGuid();
            this.Assignment = assignment;

            Configure(configuration);
        }
Пример #3
0
        /// <summary>
        /// Auto assigns multiple roles to multiple reports
        /// </summary>
        /// <param name="assignments">The assignment configurations</param>
        public void AutoAssignRolesToReports
        (
            params ReportRoleAssignmentConfiguration[] assignments
        )
        {
            Validate.IsNotNull(assignments);

            var changesMade = false;

            foreach (var configuration in assignments)
            {
                var reportNames = configuration.ReportNames;
                var roleNames   = configuration.RoleNames;

                if (reportNames == null || reportNames.Length == 0)
                {
                    throw new InvalidOperationException
                          (
                              "At least one report name must be specified for assignments."
                          );
                }

                if (roleNames == null || roleNames.Length == 0)
                {
                    throw new InvalidOperationException
                          (
                              "At least one role name must be specified for assignments."
                          );
                }

                foreach (var reportName in reportNames)
                {
                    foreach (var roleName in roleNames)
                    {
                        var constraints = configuration.Constraints;

                        var assigned = _assignmentRepository.IsRoleAssigned
                                       (
                            reportName,
                            roleName
                                       );

                        if (assigned)
                        {
                            var assignment = _assignmentRepository.GetAssignment
                                             (
                                reportName,
                                roleName
                                             );

                            assignment.SetParameterConstraints
                            (
                                constraints
                            );

                            _assignmentRepository.UpdateAssignment
                            (
                                assignment
                            );

                            changesMade = true;
                        }
                        else
                        {
                            var assignment = new ReportRoleAssignment
                                             (
                                reportName,
                                roleName,
                                constraints
                                             );

                            _assignmentRepository.AddAssignment
                            (
                                assignment
                            );

                            changesMade = true;
                        }
                    }
                }
            }

            if (changesMade)
            {
                _unitOfWork.SaveChanges();
            }
        }