how to show subscriptions based on user role .

currently we have 5+ custom roles so the problem we are facing is all the subscription are shown to all the users .

however what we want is to show role specific subscription to that user.

e.g.
role A can subscribe to subscription plans : A1, A2, A3
role B can subscribe to subscription plans: B1, B2,B3
role C can subscribe to subscription plans: C1, C2, C3
role D can subscribe to subscription plans: D1, D2, D3
role E can subscribe to subscription plans: E1, E2, E3

now "roleA" should not be able to subscribe to subscriptions of other roles i.e (B1-B3 , C1-C3, D1-D3, E1-E3)

Also we would like to show respective subscriptions of that role .
e.g roleA can SEE and subscribe to subscription A1-A3.
currently all the subscription are shown in a list format.

please help .