Beispiel #1
0
 /// <summary>
 /// Create a new instance of a AccessRequestRole class.
 /// </summary>
 /// <param name="accessRequest"></param>
 /// <param name="role"></param>
 public AccessRequestRole(AccessRequest accessRequest, Role role)
 {
     this.AccessRequest   = accessRequest;
     this.AccessRequestId = accessRequest?.Id ??
                            throw new ArgumentNullException(nameof(accessRequest));
     this.Role   = role;
     this.RoleId = role?.Id ??
                   throw new ArgumentNullException(nameof(role));
 }
Beispiel #2
0
 /// <summary>
 /// Create a new instance of a AccessRequestAgency class.
 /// </summary>
 /// <param name="accessRequest"></param>
 /// <param name="agency"></param>
 public AccessRequestAgency(AccessRequest accessRequest, Agency agency)
 {
     this.AccessRequest   = accessRequest;
     this.AccessRequestId = accessRequest?.Id ??
                            throw new ArgumentNullException(nameof(accessRequest));
     this.Agency   = agency;
     this.AgencyId = agency?.Id ??
                     throw new ArgumentNullException(nameof(agency));
 }
        /// <summary>
        /// Updates the specified access request in the datasource. if the request is granted, update the associated user as well.
        /// </summary>
        /// <param name="accessRequest"></param>
        /// <exception type="KeyNotFoundException">Entity does not exist in the datasource.</exception>
        /// <returns></returns>
        public async Task <Entity.AccessRequest> UpdateAccessRequestAsync(Entity.AccessRequest accessRequest)
        {
            accessRequest.ThrowIfNull(nameof(accessRequest));
            accessRequest.ThrowIfNull(nameof(accessRequest.UserId));

            _user.ThrowIfNotAuthorized(Permissions.AdminUsers, Permissions.AgencyAdmin);
            var existingAccessRequest = _pimsAdminService.User.GetAccessRequest(accessRequest.Id);

            if (existingAccessRequest.Status != Entity.AccessRequestStatus.Approved && accessRequest.Status == Entity.AccessRequestStatus.Approved)
            {
                var user = _pimsAdminService.User.Get(existingAccessRequest.UserId);
                accessRequest.Agencies.ForEach((accessRequestAgency) =>
                {
                    if (!user.Agencies.Any(a => a.AgencyId == accessRequestAgency.AgencyId))
                    {
                        user.Agencies.Add(new Entity.UserAgency()
                        {
                            User     = user,
                            AgencyId = accessRequestAgency.AgencyId
                        });
                    }
                });
                accessRequest.Roles.ForEach((accessRequestRole) =>
                {
                    if (!user.Roles.Any(r => r.RoleId == accessRequestRole.RoleId))
                    {
                        user.Roles.Add(new Entity.UserRole()
                        {
                            User   = user,
                            RoleId = accessRequestRole.RoleId
                        });
                    }
                });
                await UpdateUserAsync(user);
            }

            return(_pimsAdminService.User.UpdateAccessRequest(accessRequest));
        }
Beispiel #4
0
 /// <summary>
 /// Creates a new instance of an AccessRequestNotificationModel, initializes it with specified arguments.
 /// </summary>
 /// <param name="accessRequest"></param>
 /// <param name="options"></param>
 public AccessRequestNotificationModel(Entity.AccessRequest accessRequest, PimsOptions options)
 {
     this.AccessRequest = accessRequest;
     this.Environment   = new Entity.Models.EnvironmentModel(options.Environment.Uri, options.Environment.Name, options.Environment.Title);
 }
Beispiel #5
0
 /// <summary>
 /// Creates a new instance of an AccessRequestNotificationModel, initializes it with specified arguments.
 /// </summary>
 /// <param name="accessRequest"></param>
 /// <param name="env"></param>
 public AccessRequestNotificationModel(Entity.AccessRequest accessRequest, Entity.Models.EnvironmentModel env)
 {
     this.AccessRequest = accessRequest;
     this.Environment   = env;
 }