Hi,
i have a plugin triggering on create post operation asynchronously .
Basically i am looping on a list of systemusers, and for each user if they do not have a certain role assign, im assigning it to them.
The assignment is taking place in a try-catch, whereby im updating techfields values (ERROR to No, Description to Blank and SyncDate to Now) if try block executing
else if it goes in the catch(ERROR to Yes, Description to theExceptionMessage and SyncDate to Now)
The codes in my catch block to set the variables doesnt seem to be executing as even for the error rows my ERROR field remains No, and description remains blank. Can anybody help?
Find below a code snippet
foreach (var user in users.Entities)
{
User userEntity = user.ToEntity<User>();
bool errored = false;
String error = //;
try
{
var userRolesCollection = GetService<CompanyService>().getUserRoles(userEntity.Id);
if (userRolesCollection != null && userRolesCollection.Entities.Any())
{
// Check if the role to be associated is already present in the user's roles
bool roleAlreadyAssigned = userRolesCollection.Entities.Any(entity =>
{
var roleId = (Guid)entity[/roleid/];
return roleId == roleWithNewBU.Id;
});
if (!roleAlreadyAssigned)
{
GetRepository<UserRepository>().AssociateUserRole(userEntity.Id, role);
}
}
}
catch (Exception e)
{
errored = true;
error = e.Message.ToString();
if (context.Mode == 0)
{
throw new InvalidPluginExecutionException(e.Message);
}
}
finally
{
userEntity.AccessMatrixFamilySyncError = errored;
userEntity.AccessMatrixFamilySyncErrorDesc = error;
userEntity.AccessMatrixFamilySyncDate = DateTime.Now;
OrganizationServiceAdmin.Update(userEntity);
}
if (errored)
{
continue;
}
}
Categories:
