From 1521cbccf1a50c7e3cf2bdc8756c2c582a09d31a Mon Sep 17 00:00:00 2001 From: kuldeepkumawat144 Date: Tue, 2 Jun 2026 14:12:49 +0530 Subject: [PATCH] enhancement:- Added Queue Support for Zendesk --- .../src/Kernel/External/Ticket/Interface/Types.hs | 9 ++++++++- .../src/Kernel/External/Ticket/Interface/Zendesk.hs | 8 +++++++- .../src/Kernel/External/Ticket/Zendesk/Config.hs | 2 ++ 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/lib/mobility-core/src/Kernel/External/Ticket/Interface/Types.hs b/lib/mobility-core/src/Kernel/External/Ticket/Interface/Types.hs index 4a5cd515d..6591aef3a 100644 --- a/lib/mobility-core/src/Kernel/External/Ticket/Interface/Types.hs +++ b/lib/mobility-core/src/Kernel/External/Ticket/Interface/Types.hs @@ -49,6 +49,12 @@ data UpdateTicketResp = UpdateTicketResp } deriving (Show, Eq, Generic, ToJSON, FromJSON, ToSchema) +data TicketContext + = IssueTicket + | SOSAlert + | FeedbackTicket + deriving (Show, Eq, Generic, ToJSON, FromJSON, ToSchema) + data CreateTicketReq = CreateTicketReq { category :: Text, subCategory :: Maybe Text, @@ -62,7 +68,8 @@ data CreateTicketReq = CreateTicketReq personId :: Text, classification :: Classification, rideDescription :: Maybe RideInfo, - becknIssueId :: Maybe Text + becknIssueId :: Maybe Text, + ticketContext :: Maybe TicketContext } deriving (Show, Eq, Generic, ToJSON, FromJSON, ToSchema) diff --git a/lib/mobility-core/src/Kernel/External/Ticket/Interface/Zendesk.hs b/lib/mobility-core/src/Kernel/External/Ticket/Interface/Zendesk.hs index a7b0b1ac6..1673eeb8d 100644 --- a/lib/mobility-core/src/Kernel/External/Ticket/Interface/Zendesk.hs +++ b/lib/mobility-core/src/Kernel/External/Ticket/Interface/Zendesk.hs @@ -18,6 +18,7 @@ module Kernel.External.Ticket.Interface.Zendesk ) where +import Control.Applicative ((<|>)) import qualified Data.Text as T import Kernel.External.Encryption import qualified Kernel.External.Ticket.Interface.Types as IT @@ -48,6 +49,11 @@ createTicket config req = do status = zendeskStatusToTicketStatus (fromMaybe "new" resp.ticket.status) } +resolveGroupId :: ZendeskCfg -> Maybe IT.TicketContext -> Maybe Int +resolveGroupId cfg (Just IT.SOSAlert) = cfg.sosGroupId <|> cfg.groupId +resolveGroupId cfg (Just IT.FeedbackTicket) = cfg.feedbackGroupId <|> cfg.groupId +resolveGroupId cfg _ = cfg.groupId + mkZendeskCreateTicketReq :: ZendeskCfg -> IT.CreateTicketReq -> Zendesk.ZendeskCreateTicketReq mkZendeskCreateTicketReq cfg IT.CreateTicketReq {..} = Zendesk.ZendeskCreateTicketReq @@ -61,7 +67,7 @@ mkZendeskCreateTicketReq cfg IT.CreateTicketReq {..} = }, requester = Just $ Zendesk.ZendeskRequester {name = fromMaybe "Unknown" name, email = cfg.requesterEmail}, organizationId = cfg.organizationId, - groupId = cfg.groupId, + groupId = resolveGroupId cfg ticketContext, priority = "normal", ticketType = "incident", customFields = buildCustomFields cfg rideDescription phoneNo diff --git a/lib/mobility-core/src/Kernel/External/Ticket/Zendesk/Config.hs b/lib/mobility-core/src/Kernel/External/Ticket/Zendesk/Config.hs index 0be786d1f..4d03ac76d 100644 --- a/lib/mobility-core/src/Kernel/External/Ticket/Zendesk/Config.hs +++ b/lib/mobility-core/src/Kernel/External/Ticket/Zendesk/Config.hs @@ -25,6 +25,8 @@ data ZendeskCfg = ZendeskCfg requesterEmail :: Maybe Text, organizationId :: Maybe Int, groupId :: Maybe Int, + sosGroupId :: Maybe Int, + feedbackGroupId :: Maybe Int, rideIdFieldId :: Maybe Int, driverPhoneFieldId :: Maybe Int, customerPhoneFieldId :: Maybe Int,