Skip to content

Calendar IntegrationΒ #90

@rallisf1

Description

@rallisf1

How to use GitHub

  • Please use the πŸ‘ reaction to show that you are interested into the same feature.
  • Please don't comment if you have no relevant information to add. It's just extra noise for everyone subscribed to this issue.
  • Subscribe to receive notifications on status change and new comments.

Feature request

Which Nextcloud Version are you currently using: (see administration page)

Nextcloud Hub 9 (30.0.8)

Is your feature request related to a problem? Please describe.
It would be beneficial to view tickets in the Nextcloud Calendar.

Describe the solution you'd like

Dynamically create calendars

Agent Calendars

  • My Open Tickets
  • My Closed Tickets

Manager Calendars

  • Agent's/Organization's/Group's Open Tickets
  • Agent's/Organization's/Group's Closed Tickets

Configuration Options

Admin

  • NEEDS-ACTION status match: Fetch statuses from zammad in a multiple select
  • COMPLETED status match: Fetch statuses from zammad in a multiple select
  • IN-PROCESS status match: Fetch statuses from zammad in a multiple select
  • CANCELLED status match: Fetch statuses from zammad in a multiple select
  • Ticket Date Field: input for custom ticket object attribute (e.g. we have set up a Due Date)

Show an error if status matching has overlaps

User

Manager Options

[ ] Create Calendars per Agent
[ ] Create Calendars per Group
[ ] Create Calendars per Organization
[ ] Add Accounted Time table in the DESCRIPTION

Calendar Event (fetched & generated)

  • Type: VTODO
  • UID: zammad-ticket-#{ticket.id}
  • STATUS: Switch #{ticket.status} per the status matching in the configuration
  • SUMMARY: #{ticket.title}
  • DESCRIPTION: #{article.body} (latest)
  • CREATED: #{ticket.created_at}
  • LAST-MODIFIED: #{ticket.updated_at}
  • LOCATION: #{config.http_type}://#{config.fqdn}/#ticket/zoom/#{ticket.id} (the correct field would be URL, but Nextcloud only uses LOCATION)
  • DUE: Ticket Date Field OR #{ticket.closed_at} OR #{ticket.updated_at} (VTODO needs a due date in order to show up in the Calendar)
  • ORGANIZER: mailto:#{ticket.owner.email}
  • ATTENDEE: [mailto:#{ticket.customer.email}]
  • PRIORITY: #{ticket.priority.name} (parseInt and switch 1->9, 2->5, 3->1)
  • COMPLETED: #{ticket.closed_at}

I use Zammad Variable formatting #{} to differentiate API response values

Describe alternatives you've considered
Inject a middleware in the Calendar that checks if a subscribed calendar is from the connected Zammad's url. If true add the appropriate Authorization headers with the configured token.

Pros

  • Way less code required

Cons

Additional context
Managers are defined in the Nextcloud Accounts. I'm up for implementing this, but not for another month due to existing deadlines. I just wanted to share my specs first so that we agree on a mergeable version first.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions