/// <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)); }
/// <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)); }
/// <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); }
/// <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; }