diff --git a/src/open_inwoner/accounts/views/contactmoments.py b/src/open_inwoner/accounts/views/contactmoments.py index 237b4d273e..0726c56f1b 100644 --- a/src/open_inwoner/accounts/views/contactmoments.py +++ b/src/open_inwoner/accounts/views/contactmoments.py @@ -223,24 +223,55 @@ def get_context_data(self, **kwargs): ocm = client.retrieve_objectcontactmoment( kcm.contactmoment, "zaak", zaken_client ) - ctx["zaak"] = getattr(ocm, "object", None) + zaak = getattr(ocm, "object", None) + if zaak: + zaak_url = reverse( + "cases:case_detail", kwargs={"object_id": str(zaak.uuid)} + ) + else: + zaak_url = None + ctx["zaak"] = zaak contactmoment: KCMDict = self.get_kcm_data(kcm) ctx["contactmoment"] = contactmoment ctx["metrics"] = [ { - "label": _("Ontvangstdatum: "), + "label": _("Status: "), + "value": contactmoment["status"], + }, + { + "label": _("Ingediend op: "), "value": contactmoment["registered_date"], }, { - "label": _("Contactwijze: "), - "value": contactmoment["channel"], + "label": _("Vraag nummer: "), + "value": contactmoment["identificatie"], }, { - "label": _("Status: "), - "value": contactmoment["status"], + "label": _("Contact gehad via: "), + "value": contactmoment["channel"], }, ] + origin = self.request.headers.get("Referer") + if origin == reverse("cases:contactmoment_list"): + ctx["origin"] = { + "label": _("Terug naar overzicht"), + "url": origin, + } + if zaak: + ctx["destination"] = { + "label": _("Naar aanvrag"), + "url": zaak_url, + } + else: + ctx["origin"] = { + "label": _("Terug naar aanvrag"), + "url": zaak_url, + } + ctx["destination"] = { + "label": _("Bekijk alle vragen"), + "url": reverse("cases:contactmoment_list"), + } return ctx diff --git a/src/open_inwoner/openklant/tests/test_views.py b/src/open_inwoner/openklant/tests/test_views.py index f2f07606b5..6ad505a36b 100644 --- a/src/open_inwoner/openklant/tests/test_views.py +++ b/src/open_inwoner/openklant/tests/test_views.py @@ -292,9 +292,9 @@ def test_show_detail_for_bsn_with_zaak(self, m, mock_get_kcm_answer_mapping): }, ) - zaak_link = response.pyquery(".case-detail__link") + zaak_link = response.pyquery("#origin_link") - self.assertEqual(zaak_link.text(), _("Ga naar zaak")) + self.assertIn(_("Terug naar aanvrag"), zaak_link.text()) self.assertEqual( zaak_link.attr("href"), reverse( @@ -303,6 +303,13 @@ def test_show_detail_for_bsn_with_zaak(self, m, mock_get_kcm_answer_mapping): ), ) + contactmoment_link = response.pyquery("#destination_link") + self.assertIn(_("Bekijk alle vragen"), contactmoment_link.text()) + self.assertEqual( + contactmoment_link.attr("href"), + reverse("cases:contactmoment_list"), + ) + kcm_local = KlantContactMomentAnswer.objects.get( contactmoment_url=data.klant_contactmoment["contactmoment"] ) @@ -328,13 +335,8 @@ def test_show_detail_for_bsn_with_zaak_reformat_esuite_id( kcm = response.context["contactmoment"] cm_data = data.contactmoment - zaak_id = ( - response.pyquery.find(".case-detail__link").parent().text().split(" ")[0] - ) - self.assertIsNotNone(response.context["zaak"]) self.assertEqual(response.context["zaak"].url, data.zaak["url"]) - self.assertEqual(zaak_id, "542-2021") self.assertEqual( kcm, { @@ -351,9 +353,9 @@ def test_show_detail_for_bsn_with_zaak_reformat_esuite_id( }, ) - zaak_link = response.pyquery(".case-detail__link") + zaak_link = response.pyquery("#origin_link") - self.assertEqual(zaak_link.text(), _("Ga naar zaak")) + self.assertIn(_("Terug naar aanvrag"), zaak_link.text()) self.assertEqual( zaak_link.attr("href"), reverse( @@ -362,6 +364,13 @@ def test_show_detail_for_bsn_with_zaak_reformat_esuite_id( ), ) + contactmoment_link = response.pyquery("#destination_link") + self.assertIn(_("Bekijk alle vragen"), contactmoment_link.text()) + self.assertEqual( + contactmoment_link.attr("href"), + reverse("cases:contactmoment_list"), + ) + def test_display_contactmoment_subject_duplicate_esuite_codes( self, m, mock_get_kcm_answer_mapping ): diff --git a/src/open_inwoner/openklant/tests/test_views.py.orig b/src/open_inwoner/openklant/tests/test_views.py.orig new file mode 100644 index 0000000000..6f1d573480 --- /dev/null +++ b/src/open_inwoner/openklant/tests/test_views.py.orig @@ -0,0 +1,582 @@ +from datetime import datetime +from unittest.mock import patch +from uuid import uuid4 + +from django.test import modify_settings, override_settings +from django.urls import reverse +from django.utils.translation import gettext as _ + +import requests_mock +from django_webtest import WebTest +from freezegun import freeze_time +from zgw_consumers.api_models.base import factory + +from open_inwoner.accounts.tests.factories import UserFactory +from open_inwoner.openklant.api_models import ContactMoment, Klant, KlantContactMoment +from open_inwoner.openklant.constants import Status +from open_inwoner.openklant.models import ( + ContactFormSubject, + KlantContactMomentAnswer, + OpenKlantConfig, +) +from open_inwoner.openklant.tests.data import MockAPIReadData +from open_inwoner.openzaak.models import OpenZaakConfig +from open_inwoner.utils.test import ( + ClearCachesMixin, + DisableRequestLogMixin, + set_kvk_branch_number_in_session, +) + +from .factories import KlantContactMomentAnswerFactory + + +@requests_mock.Mocker() +@patch( + "open_inwoner.accounts.views.contactmoments.get_kcm_answer_mapping", autospec=True +) +@override_settings(ROOT_URLCONF="open_inwoner.cms.tests.urls") +@modify_settings( + MIDDLEWARE={"remove": ["open_inwoner.kvk.middleware.KvKLoginMiddleware"]} +) +class ContactMomentViewsTestCase(ClearCachesMixin, DisableRequestLogMixin, WebTest): + maxDiff = None + + def setUp(self): + super().setUp() + MockAPIReadData.setUpServices() + + # for testing replacement of e-suite "onderwerp" code with OIP configured subject + self.contactformsubject = ContactFormSubject.objects.create( + subject="oip_subject", + subject_code="e_suite_subject_code", + config=OpenKlantConfig.get_solo(), + ) + + def test_list_for_bsn(self, m, mock_get_kcm_answer_mapping): + data = MockAPIReadData().install_mocks(m) + + detail_url = reverse( + "cases:contactmoment_detail", + kwargs={"kcm_uuid": data.klant_contactmoment["uuid"]}, + ) + list_url = reverse("cases:contactmoment_list") + response = self.app.get(list_url, user=data.user) + + kcms = response.context["contactmomenten"] + cm_data = data.contactmoment + + self.assertEqual(len(kcms), 1) + self.assertEqual( + kcms[0], + { + "registered_date": datetime.fromisoformat(cm_data["registratiedatum"]), + "channel": cm_data["kanaal"].title(), + "text": cm_data["tekst"], + "onderwerp": self.contactformsubject.subject, + "antwoord": cm_data["antwoord"], + "identificatie": cm_data["identificatie"], + "type": cm_data["type"], + "status": Status.afgehandeld.label, + "url": detail_url, + "new_answer_available": False, + }, + ) + + kcm = factory(KlantContactMoment, data.klant_contactmoment) + kcm.contactmoment = factory(ContactMoment, data.contactmoment) + kcm.klant = factory(Klant, data.klant) + + mock_get_kcm_answer_mapping.assert_called_once_with( + [kcm.contactmoment], data.user + ) + + status_item = response.pyquery.find(f"p:contains('{_('Status')}')").parent() + + self.assertEqual(status_item.text(), f"{_('Status')}\n{_('Afgehandeld')}") + self.assertNotIn(_("Nieuw antwoord beschikbaar"), response.text) + + @freeze_time("2022-01-01") + def test_list_for_bsn_new_answer_available(self, m, mock_get_kcm_answer_mapping): + data = MockAPIReadData().install_mocks(m) + + mock_get_kcm_answer_mapping.return_value = { + data.klant_contactmoment["url"]: KlantContactMomentAnswerFactory.create( + user=data.user, + contactmoment_url=data.klant_contactmoment["contactmoment"], + is_seen=False, + ) + } + + detail_url = reverse( + "cases:contactmoment_detail", + kwargs={"kcm_uuid": data.klant_contactmoment["uuid"]}, + ) + list_url = reverse("cases:contactmoment_list") + response = self.app.get(list_url, user=data.user) + + kcms = response.context["contactmomenten"] + cm_data = data.contactmoment + + self.assertEqual(len(kcms), 1) + self.assertEqual( + kcms[0], + { + "registered_date": datetime.fromisoformat(cm_data["registratiedatum"]), + "channel": cm_data["kanaal"].title(), + "text": cm_data["tekst"], + "onderwerp": self.contactformsubject.subject, + "antwoord": cm_data["antwoord"], + "identificatie": cm_data["identificatie"], + "type": cm_data["type"], + "status": Status.afgehandeld.label, + "url": detail_url, + "new_answer_available": True, + }, + ) + + kcm = factory(KlantContactMoment, data.klant_contactmoment) + kcm.contactmoment = factory(ContactMoment, data.contactmoment) + kcm.klant = factory(Klant, data.klant) + + mock_get_kcm_answer_mapping.assert_called_once_with( + [kcm.contactmoment], data.user + ) + + status_item = response.pyquery.find(f"p:contains('{_('Status')}')").parent() + + self.assertEqual(status_item.text(), f"{_('Status')}\n{_('Afgehandeld')}") + self.assertIn(_("Nieuw antwoord beschikbaar"), response.text) + + def test_list_for_kvk_or_rsin(self, m, mock_get_kcm_answer_mapping): + for use_rsin_for_innNnpId_query_parameter in [True, False]: + with self.subTest( + use_rsin_for_innNnpId_query_parameter=use_rsin_for_innNnpId_query_parameter + ): + config = OpenKlantConfig.get_solo() + config.use_rsin_for_innNnpId_query_parameter = ( + use_rsin_for_innNnpId_query_parameter + ) + config.save() + + data = MockAPIReadData().install_mocks(m) + + detail_url = reverse( + "cases:contactmoment_detail", + kwargs={"kcm_uuid": data.klant_contactmoment2["uuid"]}, + ) + list_url = reverse("cases:contactmoment_list") + response = self.app.get(list_url, user=data.eherkenning_user) + + kcms = response.context["contactmomenten"] + cm_data = data.contactmoment2 + registratiedatum = datetime.fromisoformat(cm_data["registratiedatum"]) + self.assertEqual(len(kcms), 1) + + self.assertEqual( + kcms[0], + { + "registered_date": registratiedatum, + "channel": cm_data["kanaal"].title(), + "text": cm_data["tekst"], + "onderwerp": self.contactformsubject.subject, + "antwoord": cm_data["antwoord"], + "identificatie": cm_data["identificatie"], + "type": cm_data["type"], + "status": Status.afgehandeld.label, + "url": detail_url, + "new_answer_available": False, + }, + ) + + @set_kvk_branch_number_in_session("1234") + def test_list_for_vestiging(self, m, mock_get_kcm_answer_mapping): + data = MockAPIReadData().install_mocks(m) + self.client.force_login(user=data.eherkenning_user) + + for use_rsin_for_innNnpId_query_parameter in [True, False]: + with self.subTest( + use_rsin_for_innNnpId_query_parameter=use_rsin_for_innNnpId_query_parameter + ): + config = OpenKlantConfig.get_solo() + config.use_rsin_for_innNnpId_query_parameter = ( + use_rsin_for_innNnpId_query_parameter + ) + config.save() + + detail_url = reverse( + "cases:contactmoment_detail", + kwargs={"kcm_uuid": data.klant_contactmoment4["uuid"]}, + ) + list_url = reverse("cases:contactmoment_list") + + response = self.client.get(list_url) + + kcms = response.context["contactmomenten"] + cm_data = data.contactmoment_vestiging + registratiedatum = datetime.fromisoformat(cm_data["registratiedatum"]) + self.assertEqual(len(kcms), 1) + + self.assertEqual( + kcms[0], + { + "registered_date": registratiedatum, + "channel": cm_data["kanaal"].title(), + "text": cm_data["tekst"], + "onderwerp": self.contactformsubject.subject, + "antwoord": cm_data["antwoord"], + "identificatie": cm_data["identificatie"], + "type": cm_data["type"], + "status": Status.afgehandeld.label, + "url": detail_url, + "new_answer_available": False, + }, + ) + + def test_show_detail_for_bsn(self, m, mock_get_kcm_answer_mapping): + data = MockAPIReadData().install_mocks(m) + + detail_url = reverse( + "cases:contactmoment_detail", + kwargs={"kcm_uuid": data.klant_contactmoment["uuid"]}, + ) + response = self.app.get(detail_url, user=data.user) + + kcm = response.context["contactmoment"] + cm_data = data.contactmoment + + self.assertEqual(response.context["zaak"], None) + self.assertEqual( + kcm, + { + "registered_date": datetime.fromisoformat(cm_data["registratiedatum"]), + "channel": cm_data["kanaal"].title(), + "text": cm_data["tekst"], + "onderwerp": self.contactformsubject.subject, + "antwoord": cm_data["antwoord"], + "identificatie": cm_data["identificatie"], + "type": cm_data["type"], + "status": Status.afgehandeld.label, + "url": detail_url, + "new_answer_available": False, + }, + ) + + def test_show_detail_for_bsn_with_zaak(self, m, mock_get_kcm_answer_mapping): + data = MockAPIReadData().install_mocks(m, link_objectcontactmomenten=True) + + detail_url = reverse( + "cases:contactmoment_detail", + kwargs={"kcm_uuid": data.klant_contactmoment["uuid"]}, + ) + response = self.app.get(detail_url, user=data.user) + + kcm = response.context["contactmoment"] + cm_data = data.contactmoment + + self.assertIsNotNone(response.context["zaak"]) + self.assertEqual(response.context["zaak"].url, data.zaak["url"]) + self.assertEqual(response.context["zaak"].identificatie, "053ESUITE5422021") + self.assertEqual( + kcm, + { + "registered_date": datetime.fromisoformat(cm_data["registratiedatum"]), + "channel": cm_data["kanaal"].title(), + "text": cm_data["tekst"], + "onderwerp": self.contactformsubject.subject, + "antwoord": cm_data["antwoord"], + "identificatie": cm_data["identificatie"], + "type": cm_data["type"], + "status": Status.afgehandeld.label, + "url": detail_url, + "new_answer_available": False, + }, + ) + + zaak_link = response.pyquery("#origin_link") + + self.assertIn(_("Terug naar aanvrag"), zaak_link.text()) + self.assertEqual( + zaak_link.attr("href"), + reverse( + "cases:case_detail", + kwargs={"object_id": "410bb717-ff3d-4fd8-8357-801e5daf9775"}, + ), + ) + + contactmoment_link = response.pyquery("#destination_link") + self.assertIn(_("Bekijk alle vragen"), contactmoment_link.text()) + self.assertEqual( + contactmoment_link.attr("href"), + reverse("cases:contactmoment_list"), + ) + + kcm_local = KlantContactMomentAnswer.objects.get( + contactmoment_url=data.klant_contactmoment["contactmoment"] + ) + + self.assertEqual(kcm_local.user, data.user) + self.assertEqual(kcm_local.is_seen, True) + + def test_show_detail_for_bsn_with_zaak_reformat_esuite_id( + self, m, mock_get_kcm_answer_mapping + ): + data = MockAPIReadData().install_mocks(m, link_objectcontactmomenten=True) + + oz_config = OpenZaakConfig.get_solo() + oz_config.reformat_esuite_zaak_identificatie = True + oz_config.save() + + detail_url = reverse( + "cases:contactmoment_detail", + kwargs={"kcm_uuid": data.klant_contactmoment["uuid"]}, + ) + response = self.app.get(detail_url, user=data.user) + + kcm = response.context["contactmoment"] + cm_data = data.contactmoment + + self.assertIsNotNone(response.context["zaak"]) + self.assertEqual(response.context["zaak"].url, data.zaak["url"]) + self.assertEqual( + kcm, + { + "registered_date": datetime.fromisoformat(cm_data["registratiedatum"]), + "channel": cm_data["kanaal"].title(), + "text": cm_data["tekst"], + "onderwerp": self.contactformsubject.subject, + "antwoord": cm_data["antwoord"], + "identificatie": cm_data["identificatie"], + "type": cm_data["type"], + "status": Status.afgehandeld.label, + "url": detail_url, + "new_answer_available": False, + }, + ) + + zaak_link = response.pyquery("#origin_link") + + self.assertIn(_("Terug naar aanvrag"), zaak_link.text()) + self.assertEqual( + zaak_link.attr("href"), + reverse( + "cases:case_detail", + kwargs={"object_id": "410bb717-ff3d-4fd8-8357-801e5daf9775"}, + ), + ) + +<<<<<<< HEAD + def test_display_contactmoment_subject_duplicate_esuite_codes( + self, m, mock_get_kcm_answer_mapping + ): + """ + Assert that the first OIP subject is used if several are mapped to the same e-suite code + """ +======= + contactmoment_link = response.pyquery("#destination_link") + self.assertIn(_("Bekijk alle vragen"), contactmoment_link.text()) + self.assertEqual( + contactmoment_link.attr("href"), + reverse("cases:contactmoment_list"), + ) + + def test_display_esuite_subject_code(self, m, mock_get_kcm_answer_mapping): +>>>>>>> 8e9ad8fe (Make vragen detail conform to design) + data = MockAPIReadData().install_mocks(m) + + ContactFormSubject.objects.create( + subject="control_subject_for_duplicate_code", + subject_code=self.contactformsubject.subject_code, + config=OpenKlantConfig.get_solo(), + ) + + detail_url = reverse( + "cases:contactmoment_detail", + kwargs={"kcm_uuid": data.klant_contactmoment["uuid"]}, + ) + list_url = reverse("cases:contactmoment_list") + response = self.app.get(list_url, user=data.user) + + kcms = response.context["contactmomenten"] + cm_data = data.contactmoment + + self.assertEqual(len(kcms), 1) + self.assertEqual( + kcms[0], + { + "registered_date": datetime.fromisoformat(cm_data["registratiedatum"]), + "channel": cm_data["kanaal"].title(), + "text": cm_data["tekst"], + "onderwerp": ContactFormSubject.objects.first().subject, + "antwoord": cm_data["antwoord"], + "identificatie": cm_data["identificatie"], + "type": cm_data["type"], + "status": Status.afgehandeld.label, + "url": detail_url, + "new_answer_available": False, + }, + ) + + def test_display_contactmoment_subject_no_mapping_fallback( + self, m, mock_get_kcm_answer_mapping + ): + """ + Assert that the e-suite subject code is displayed if no mapping is configured in OIP + """ + data = MockAPIReadData().install_mocks(m) + + self.contactformsubject.delete() + + detail_url = reverse( + "cases:contactmoment_detail", + kwargs={"kcm_uuid": data.klant_contactmoment["uuid"]}, + ) + list_url = reverse("cases:contactmoment_list") + response = self.app.get(list_url, user=data.user) + + kcms = response.context["contactmomenten"] + cm_data = data.contactmoment + + self.assertEqual(len(kcms), 1) + self.assertEqual( + kcms[0], + { + "registered_date": datetime.fromisoformat(cm_data["registratiedatum"]), + "channel": cm_data["kanaal"].title(), + "text": cm_data["tekst"], + "onderwerp": self.contactformsubject.subject_code, + "antwoord": cm_data["antwoord"], + "identificatie": cm_data["identificatie"], + "type": cm_data["type"], + "status": Status.afgehandeld.label, + "url": detail_url, + "new_answer_available": False, + }, + ) + + def test_show_detail_for_kvk_or_rsin(self, m, mock_get_kcm_answer_mapping): + for use_rsin_for_innNnpId_query_parameter in [True, False]: + with self.subTest( + use_rsin_for_innNnpId_query_parameter=use_rsin_for_innNnpId_query_parameter + ): + # Avoid having a `KlantContactMomentAnswer` with the same URL for different users + KlantContactMomentAnswer.objects.all().delete() + + config = OpenKlantConfig.get_solo() + config.use_rsin_for_innNnpId_query_parameter = ( + use_rsin_for_innNnpId_query_parameter + ) + config.save() + + data = MockAPIReadData().install_mocks(m) + + detail_url = reverse( + "cases:contactmoment_detail", + kwargs={"kcm_uuid": data.klant_contactmoment2["uuid"]}, + ) + response = self.app.get(detail_url, user=data.eherkenning_user) + + kcm = response.context["contactmoment"] + cm_data = data.contactmoment2 + registratiedatum = datetime.fromisoformat(cm_data["registratiedatum"]) + self.assertEqual( + kcm, + { + "registered_date": registratiedatum, + "channel": cm_data["kanaal"].title(), + "text": cm_data["tekst"], + "onderwerp": self.contactformsubject.subject, + "antwoord": cm_data["antwoord"], + "identificatie": cm_data["identificatie"], + "type": cm_data["type"], + "status": Status.afgehandeld.label, + "url": detail_url, + "new_answer_available": False, + }, + ) + + @set_kvk_branch_number_in_session("1234") + def test_show_detail_for_vestiging(self, m, mock_get_kcm_answer_mapping): + data = MockAPIReadData().install_mocks(m) + self.client.force_login(user=data.eherkenning_user) + + for use_rsin_for_innNnpId_query_parameter in [True, False]: + with self.subTest( + use_rsin_for_innNnpId_query_parameter=use_rsin_for_innNnpId_query_parameter + ): + config = OpenKlantConfig.get_solo() + config.use_rsin_for_innNnpId_query_parameter = ( + use_rsin_for_innNnpId_query_parameter + ) + config.save() + + detail_url = reverse( + "cases:contactmoment_detail", + kwargs={"kcm_uuid": data.klant_contactmoment4["uuid"]}, + ) + response = self.client.get(detail_url) + + kcm = response.context["contactmoment"] + cm_data = data.contactmoment_vestiging + registratie_datum = datetime.fromisoformat(cm_data["registratiedatum"]) + self.assertEqual( + kcm, + { + "registered_date": registratie_datum, + "channel": cm_data["kanaal"].title(), + "text": cm_data["tekst"], + "onderwerp": self.contactformsubject.subject, + "antwoord": cm_data["antwoord"], + "identificatie": cm_data["identificatie"], + "type": cm_data["type"], + "status": Status.afgehandeld.label, + "url": detail_url, + "new_answer_available": False, + }, + ) + + @set_kvk_branch_number_in_session("1234") + def test_cannot_access_detail_for_hoofdvestiging_as_vestiging( + self, m, mock_get_kcm_answer_mapping + ): + data = MockAPIReadData().install_mocks(m) + self.client.force_login(user=data.eherkenning_user) + + for use_rsin_for_innNnpId_query_parameter in [True, False]: + with self.subTest( + use_rsin_for_innNnpId_query_parameter=use_rsin_for_innNnpId_query_parameter + ): + config = OpenKlantConfig.get_solo() + config.use_rsin_for_innNnpId_query_parameter = ( + use_rsin_for_innNnpId_query_parameter + ) + config.save() + + detail_url = reverse( + "cases:contactmoment_detail", + kwargs={"kcm_uuid": data.klant_contactmoment2["uuid"]}, + ) + response = self.client.get(detail_url) + + self.assertEqual(response.status_code, 404) + + def test_list_requires_bsn_or_kvk(self, m, mock_get_kcm_answer_mapping): + user = UserFactory() + list_url = reverse("cases:contactmoment_list") + response = self.app.get(list_url, user=user) + self.assertRedirects(response, reverse("pages-root")) + + def test_list_requires_login(self, m, mock_get_kcm_answer_mapping): + list_url = reverse("cases:contactmoment_list") + response = self.app.get(list_url) + self.assertRedirects(response, f"{reverse('login')}?next={list_url}") + + def test_detail_requires_bsn_or_kvk(self, m, mock_get_kcm_answer_mapping): + user = UserFactory() + url = reverse("cases:contactmoment_detail", kwargs={"kcm_uuid": uuid4()}) + response = self.app.get(url, user=user) + self.assertRedirects(response, reverse("pages-root")) + + def test_detail_requires_login(self, m, mock_get_kcm_answer_mapping): + url = reverse("cases:contactmoment_detail", kwargs={"kcm_uuid": uuid4()}) + response = self.app.get(url) + self.assertRedirects(response, f"{reverse('login')}?next={url}") diff --git a/src/open_inwoner/scss/components/Contactmomenten/Contactmomenten.scss b/src/open_inwoner/scss/components/Contactmomenten/Contactmomenten.scss index 0008d2d95f..924ad43606 100644 --- a/src/open_inwoner/scss/components/Contactmomenten/Contactmomenten.scss +++ b/src/open_inwoner/scss/components/Contactmomenten/Contactmomenten.scss @@ -74,46 +74,15 @@ } .contactmoment { - &__details { - // Set table width for word-break - table { - margin-top: 0; - overflow-x: auto; - table-layout: fixed; - width: 100%; - @media (min-width: 768px) { - width: var(--mobile-ms-width); - } - } - table th { - width: 100px; - white-space: nowrap; - } - table td { - width: 300px; - overflow: hidden; - word-break: break-word; - white-space: normal; - - &.table__item--status { - .table__item--wrapper { - display: flex; - justify-content: space-between; - } - } + margin: auto; + width: 100%; - .case-detail__link { - color: var(--color-primary); - text-decoration: none; + @media (min-width: 768px) and (max-width: 900px) { + width: 75%; + } - &::after { - font-family: 'Material Icons'; - content: 'arrow_forward'; - font-size: 1em; - vertical-align: middle; - } - } - } + @media (min-width: 901px) { + width: 50%; } } diff --git a/src/open_inwoner/templates/pages/contactmoment/detail.html b/src/open_inwoner/templates/pages/contactmoment/detail.html index b07900b86d..7bc6f6c9fd 100644 --- a/src/open_inwoner/templates/pages/contactmoment/detail.html +++ b/src/open_inwoner/templates/pages/contactmoment/detail.html @@ -1,21 +1,42 @@ {% extends 'master.html' %} -{% load i18n anchor_menu_tags card_tags file_tags grid_tags table_tags solo_tags form_tags button_tags %} +{% load i18n grid_tags table_tags button_tags icon_tags %} {% block content %} {% if contactmoment %} {% render_grid %} {% render_column span=12 %} - {# Contactmoment/dashboard. #} -

{{ page_title }}

+

{{ contactmoment.onderwerp }}

{% include "components/Dashboard/Dashboard.html" with metrics=metrics only %} {% endrender_column %} - {% render_column start=4 span=6 %} + {% endrender_grid %} -
- {% contactmoment_table contactmoment zaak=zaak %} +
+
+

{% trans "Uw vraag" %}

+

{{ contactmoment.text }}

+
+
+

{% trans "Antwoord" %}

+ {% if contactmoment.antwoord %} +

{{ contactmoment.antwoord }}

+ {% else %} +

{% trans "Nog geen antwoord beschijkbaar" %}

+ {% endif %} +
+ + {% if destination %} + - {% endrender_column %} - {% endrender_grid %} + {% endif %} +
+ {% else %}

{% trans 'There is no available data at the moment.' %}

{% endif %}