Hello @rsparks
In our SharePoint Online site, we have defined groups for people playing a specific role and these groups are then used to grant specific permission to items - in our case to folders and/or documents.
HTTP call to break permission inheritance
In the above action we are using a HTTP call to SharePoint to break the permission inheritance for the item we want to grant specific permission to.
Grant owner group contribute permissions
We already knows the groups principal id, so above we grant the owner group Contribute permissions to the item, again using HTTP call to SharePoint.
Grants read permissions to another group
As we also have a group that are allowed to view the item, we use again a HTTP call to SharePoint to grant the group Read permissions.
Loop through people roles, identify the user
Some people plays a specific role, so for each of them, we first get their Principal ID, again using an HTTP call to SharePoint.
Grant user contribute permission
With the user's principal Id we can now grant the user Contribute permissions to the item using an HTTP call to SharePoint.
The above is how we do it and it may help you decide on going that way or doing it differently. In your case, I would consider where to manage the location groups (one group per location) and members (people) - in Active Directory or in SharePoint Online.
Note that by using groups for giving access to items in your list, there will be no need for the users to choose their location, as they will only be able to see/view the items to which they have permissions 🙂
Kind regards, John