Skip to content

Commit

Permalink
✨ [#1950] Mijn vragen filter by vestigingsnummer
Browse files Browse the repository at this point in the history
  • Loading branch information
stevenbal committed Jan 9, 2024
1 parent 28d81c2 commit 8020049
Show file tree
Hide file tree
Showing 7 changed files with 43 additions and 17 deletions.
2 changes: 1 addition & 1 deletion src/open_inwoner/accounts/signals.py
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ def log_user_login(sender, user, request, *args, **kwargs):

if user.login_type in [LoginTypeChoices.digid, LoginTypeChoices.eherkenning]:
if oc_config.klanten_service:
update_user_from_klant(user)
update_user_from_klant(request)


@receiver(user_logged_out)
Expand Down
7 changes: 5 additions & 2 deletions src/open_inwoner/accounts/views/contactmoments.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@

from view_breadcrumbs import BaseBreadcrumbMixin

from open_inwoner.kvk.branches import get_kvk_branch_number
from open_inwoner.openklant.api_models import KlantContactMoment
from open_inwoner.openklant.constants import Status
from open_inwoner.openklant.models import OpenKlantConfig
Expand Down Expand Up @@ -106,7 +107,9 @@ def get_anchors(self) -> list:

def get_context_data(self, **kwargs):
ctx = super().get_context_data(**kwargs)
kcms = fetch_klantcontactmomenten(**get_fetch_parameters(self.request.user))
kcms = fetch_klantcontactmomenten(
**get_fetch_parameters(self.request, use_vestigingsnummer=True)
)
ctx["contactmomenten"] = [self.get_kcm_data(kcm) for kcm in kcms]
return ctx

Expand All @@ -132,7 +135,7 @@ def get_context_data(self, **kwargs):

kcm = fetch_klantcontactmoment(
kwargs["kcm_uuid"],
**get_fetch_parameters(self.request.user),
**get_fetch_parameters(self.request, use_vestigingsnummer=True),
)

if not kcm:
Expand Down
2 changes: 1 addition & 1 deletion src/open_inwoner/accounts/views/profile.py
Original file line number Diff line number Diff line change
Expand Up @@ -202,7 +202,7 @@ def update_klant_api(self, user_form_data: dict):
if user_form_data.get(local_name)
}
if update_data:
klant = fetch_klant(**get_fetch_parameters(user))
klant = fetch_klant(**get_fetch_parameters(self.request))

if klant:
self.log_system_action(
Expand Down
2 changes: 1 addition & 1 deletion src/open_inwoner/cms/cases/views/status.py
Original file line number Diff line number Diff line change
Expand Up @@ -746,7 +746,7 @@ def register_by_api(self, form, config: OpenKlantConfig):
except ObjectDoesNotExist:
ztc = None

klant = fetch_klant(**get_fetch_parameters(self.request.user))
klant = fetch_klant(**get_fetch_parameters(self.request))
if klant:
self.log_system_action("retrieved klant for user", user=self.request.user)
else:
Expand Down
6 changes: 4 additions & 2 deletions src/open_inwoner/openklant/services.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,10 @@
from .wrap import get_fetch_parameters


def update_user_from_klant(user: User):
klant = fetch_klant(**get_fetch_parameters(user))
def update_user_from_klant(request):
user: User = request.user

klant = fetch_klant(**get_fetch_parameters(request))
if not klant:
return

Expand Down
2 changes: 1 addition & 1 deletion src/open_inwoner/openklant/views/contactform.py
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,7 @@ def register_by_api(self, form, config: OpenKlantConfig):
if self.request.user.is_authenticated and (
self.request.user.bsn or self.request.user.kvk
):
klant = fetch_klant(**get_fetch_parameters(self.request.user))
klant = fetch_klant(**get_fetch_parameters(self.request))

if klant:
self.log_system_action(
Expand Down
39 changes: 30 additions & 9 deletions src/open_inwoner/openklant/wrap.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
from zgw_consumers.service import get_paginated_results

from open_inwoner.accounts.models import User
from open_inwoner.kvk.branches import get_kvk_branch_number
from open_inwoner.openklant.api_models import (
ContactMoment,
ContactMomentCreateData,
Expand All @@ -22,15 +23,19 @@


def fetch_klantcontactmomenten(
user_bsn: Optional[str] = None, user_kvk_or_rsin: Optional[str] = None
user_bsn: Optional[str] = None,
user_kvk_or_rsin: Optional[str] = None,
vestigingsnummer: Optional[str] = None,
) -> List[KlantContactMoment]:
if not user_bsn and not user_kvk_or_rsin:
return []

if user_bsn:
klanten = _fetch_klanten_for_bsn(user_bsn)
elif user_kvk_or_rsin:
klanten = _fetch_klanten_for_kvk_or_rsin(user_kvk_or_rsin)
klanten = _fetch_klanten_for_kvk_or_rsin(
user_kvk_or_rsin, vestigingsnummer=vestigingsnummer
)

if klanten is None:
return []
Expand All @@ -52,6 +57,7 @@ def fetch_klantcontactmoment(
kcm_uuid: str,
user_bsn: Optional[str] = None,
user_kvk_or_rsin: Optional[str] = None,
vestigingsnummer: Optional[str] = None,
) -> Optional[KlantContactMoment]:

cm_client = build_client("contactmomenten")
Expand All @@ -67,7 +73,9 @@ def fetch_klantcontactmoment(
if user_bsn:
kcms = fetch_klantcontactmomenten(user_bsn=user_bsn)
elif user_kvk_or_rsin:
kcms = fetch_klantcontactmomenten(user_kvk_or_rsin=user_kvk_or_rsin)
kcms = fetch_klantcontactmomenten(
user_kvk_or_rsin=user_kvk_or_rsin, vestigingsnummer=vestigingsnummer
)

kcm = None
# try to grab the specific KCM
Expand Down Expand Up @@ -100,19 +108,24 @@ def _fetch_klanten_for_bsn(user_bsn: str, *, client=None) -> List[Klant]:


def _fetch_klanten_for_kvk_or_rsin(
user_kvk_or_rsin: str, *, client=None
user_kvk_or_rsin: str, *, vestigingsnummer=None, client=None
) -> List[Klant]:
client = client or build_client("klanten")
if client is None:
return []

params = {"subjectNietNatuurlijkPersoon__innNnpId": user_kvk_or_rsin}

if vestigingsnummer:
params = {
"subjectVestiging__vestigingsNummer": vestigingsnummer,
}

try:
response = get_paginated_results(
client,
"klant",
request_kwargs={
"params": {"subjectNietNatuurlijkPersoon__innNnpId": user_kvk_or_rsin}
},
request_kwargs={"params": params},
)
except (RequestException, ClientError) as e:
logger.exception("exception while making request", exc_info=e)
Expand Down Expand Up @@ -266,16 +279,24 @@ def create_contactmoment(
return contactmoment


def get_fetch_parameters(user: User) -> dict:
def get_fetch_parameters(request, use_vestigingsnummer: bool = False) -> dict:
"""
Determine the parameters used to perform Klanten/Contactmomenten fetches
"""
user = request.user

if user.bsn:
return {"user_bsn": user.bsn}
elif user.kvk:
kvk_or_rsin = user.kvk
config = OpenKlantConfig.get_solo()
if config.use_rsin_for_innNnpId_query_parameter:
kvk_or_rsin = user.rsin
return {"user_kvk_or_rsin": kvk_or_rsin}

parameters = {"user_kvk_or_rsin": kvk_or_rsin}
if use_vestigingsnummer:
vestigingsnummer = get_kvk_branch_number(request.session)
if vestigingsnummer and vestigingsnummer != user.kvk:
parameters.update({"vestigingsnummer": vestigingsnummer})
return parameters
return {}

0 comments on commit 8020049

Please sign in to comment.