def send_case_created_notifications()

in src/dispatch/case/messaging.py [0:0]


def send_case_created_notifications(case: Case, db_session: Session):
    """Sends case created notifications."""
    notification_template = CASE_NOTIFICATION.copy()

    if case.status != CaseStatus.closed:
        if case.project.allow_self_join:
            notification_template.insert(0, CASE_NAME_WITH_ENGAGEMENT)
        else:
            notification_template.insert(0, CASE_NAME_WITH_ENGAGEMENT_NO_SELF_JOIN)
    else:
        notification_template.insert(0, CASE_NAME)

    case_description = (
        case.description if len(case.description) <= 500 else f"{case.description[:500]}..."
    )

    notification_kwargs = {
        "name": case.name,
        "title": case.title,
        "description": case_description,
        "visibility": case.visibility,
        "status": case.status,
        "type": case.case_type.name,
        "type_description": case.case_type.description,
        "severity": case.case_severity.name,
        "severity_description": case.case_severity.description,
        "priority": case.case_priority.name,
        "priority_description": case.case_priority.description,
        "reporter_fullname": case.reporter.individual.name,
        "reporter_team": case.reporter.team,
        "reporter_weblink": case.reporter.individual.weblink,
        "assignee_fullname": case.assignee.individual.name,
        "assignee_team": case.assignee.team,
        "assignee_weblink": case.assignee.individual.weblink,
        "document_weblink": resolve_attr(case, "case_document.weblink"),
        "storage_weblink": resolve_attr(case, "storage.weblink"),
        "ticket_weblink": resolve_attr(case, "ticket.weblink"),
        "contact_fullname": case.assignee.individual.name,
        "contact_weblink": case.assignee.individual.weblink,
        "case_id": case.id,
        "organization_slug": case.project.organization.slug,
    }

    notification_params = {
        "text": "Case Notification",
        "type": MessageType.case_notification,
        "template": notification_template,
        "kwargs": notification_kwargs,
    }

    notification_service.filter_and_send(
        db_session=db_session,
        project_id=case.project.id,
        class_instance=case,
        notification_params=notification_params,
    )

    event_service.log_case_event(
        db_session=db_session,
        source="Dispatch Core App",
        description="Case notifications sent",
        case_id=case.id,
    )

    log.debug("Case created notifications sent.")