def METHOD_NAME(
    user_email: str, incident: Incident, db_session: SessionLocal, service_id: int = None
):
    """Reactivates a participant."""
    participant = participant_service.get_by_incident_id_and_email(
        db_session=db_session, incident_id=incident.id, email=user_email
    )
    if not participant:
        log.debug(f"{user_email} is not an inactive participant of {incident.name} incident.")
        return False
    log.debug(f"Reactivating {participant.individual.name} on {incident.name} incident...")
    # we get the last active role
    participant_role = participant_role_service.get_last_active_role(
        db_session=db_session, participant_id=participant.id
    )
    # we create a new role based on the last active role
    participant_role_in = ParticipantRoleCreate(role=participant_role.role)
    participant_role = participant_role_service.create(
        db_session=db_session, participant_role_in=participant_role_in
    )
    participant.participant_roles.append(participant_role)
    if service_id:
        service = service_service.get(db_session=db_session, service_id=service_id)
        participant.service = service
    db_session.add(participant)
    db_session.commit()
    event_service.log_incident_event(
        db_session=db_session,
        source="Dispatch Core App",
        description=f"{participant.individual.name} has been reactivated",
        incident_id=incident.id,
    )
    return True