{"version":3,"sources":["../src/components/Support/components/TicketModal.tsx","../src/components/Support/utils/supportUtils.tsx"],"sourcesContent":["import { useState, useEffect, useCallback } from 'react';\nimport dayjs from 'dayjs';\nimport 'dayjs/locale/pt-br';\nimport Badge from '../../Badge/Badge';\nimport Button from '../../Button/Button';\nimport Divider from '../../Divider/Divider';\nimport Modal from '../../Modal/Modal';\nimport Text from '../../Text/Text';\nimport TextArea from '../../TextArea/TextArea';\nimport { SkeletonText } from '../../Skeleton/Skeleton';\nimport {\n  SupportTicket,\n  SupportStatus,\n  SupportAnswerAPI,\n  GetSupportAnswersResponse,\n  SubmitSupportAnswerRequest,\n  SubmitSupportAnswerResponse,\n  getStatusBadgeAction,\n  getStatusText,\n  getCategoryText,\n  SupportApiClient,\n} from '../../../types/support';\nimport { getCategoryIcon } from '../utils/supportUtils';\n\ndayjs.locale('pt-br');\n\n// Skeleton component for answer loading\nconst AnswerSkeleton = () => (\n  <div className=\"bg-background p-4 space-y-6 rounded-xl\">\n    {/* Date skeleton */}\n    <div className=\"flex items-center space-x-6\">\n      <SkeletonText width=\"80px\" height={16} />\n      <SkeletonText width=\"200px\" height={16} />\n    </div>\n\n    <Divider />\n\n    {/* Answer content skeleton */}\n    <div className=\"flex items-start space-x-6\">\n      <SkeletonText width=\"80px\" height={16} />\n      <div className=\"flex-1 space-y-2\">\n        <SkeletonText width=\"100%\" height={16} />\n        <SkeletonText width=\"80%\" height={16} />\n        <SkeletonText width=\"60%\" height={16} />\n      </div>\n    </div>\n  </div>\n);\n\nexport interface TicketModalProps {\n  ticket: SupportTicket;\n  isOpen: boolean;\n  onClose: () => void;\n  onTicketClose?: (ticketId: string) => void;\n  /** API client instance for making requests */\n  apiClient: SupportApiClient;\n  /** Current user ID */\n  userId?: string;\n}\n\nexport const TicketModal = ({\n  ticket,\n  isOpen,\n  onClose,\n  onTicketClose,\n  apiClient,\n  userId,\n}: TicketModalProps) => {\n  const [showCloseConfirmation, setShowCloseConfirmation] = useState(false);\n  const [responseText, setResponseText] = useState('');\n  const [answers, setAnswers] = useState<SupportAnswerAPI[]>([]);\n  const [isSubmittingAnswer, setIsSubmittingAnswer] = useState(false);\n  const [isLoadingAnswers, setIsLoadingAnswers] = useState(false);\n\n  const handleCloseTicket = () => {\n    onTicketClose?.(ticket.id);\n    setShowCloseConfirmation(false);\n    onClose();\n  };\n\n  // Fetch support answers\n  const fetchAnswers = useCallback(async () => {\n    if (!ticket.id || ticket.status !== SupportStatus.RESPONDIDO) return;\n\n    setIsLoadingAnswers(true);\n    try {\n      const response = await apiClient.get<GetSupportAnswersResponse>(\n        `/support/answer/${ticket.id}`\n      );\n      setAnswers(response.data.data || []);\n    } catch (error) {\n      console.error('Erro ao buscar respostas:', error);\n      setAnswers([]);\n    } finally {\n      setIsLoadingAnswers(false);\n    }\n  }, [ticket.id, ticket.status, apiClient]);\n\n  // Submit user answer\n  const handleSubmitAnswer = async () => {\n    if (!responseText.trim() || !userId || !ticket.id) {\n      return;\n    }\n\n    setIsSubmittingAnswer(true);\n    try {\n      const requestData: SubmitSupportAnswerRequest = {\n        userId: userId,\n        supportId: ticket.id,\n        answer: responseText.trim(),\n      };\n\n      await apiClient.post<SubmitSupportAnswerResponse>(\n        '/support/answer',\n        requestData\n      );\n\n      // Clear response text\n      setResponseText('');\n\n      // Refresh answers list\n      await fetchAnswers();\n    } catch (error) {\n      console.error('Erro ao enviar resposta:', error);\n    } finally {\n      setIsSubmittingAnswer(false);\n    }\n  };\n\n  const canCloseTicket = ticket.status !== SupportStatus.ENCERRADO;\n\n  // Limpar o texto e carregar respostas quando o modal for aberto\n  useEffect(() => {\n    if (isOpen) {\n      setResponseText('');\n      (async () => {\n        await fetchAnswers();\n      })().catch((error) => {\n        console.error('Erro ao carregar respostas:', error);\n      });\n    } else {\n      setAnswers([]);\n    }\n  }, [isOpen, fetchAnswers]);\n\n  return (\n    <>\n      <Modal\n        isOpen={isOpen}\n        onClose={onClose}\n        title={`Pedido: ${ticket.title}`}\n        size=\"lg\"\n        hideCloseButton={false}\n        closeOnEscape={true}\n        data-testid=\"ticket-modal\"\n      >\n        <div className=\"flex flex-col h-full max-h-[80vh]\">\n          {/* Header com botão Encerrar Pedido */}\n          <div className=\"flex justify-between items-center mb-3\">\n            <Text size=\"md\" weight=\"bold\" className=\"text-text-950\">\n              Detalhes\n            </Text>\n            {canCloseTicket && (\n              <Button\n                variant=\"outline\"\n                size=\"small\"\n                action=\"negative\"\n                onClick={() => setShowCloseConfirmation(true)}\n              >\n                Encerrar Pedido\n              </Button>\n            )}\n          </div>\n\n          {/* Conteúdo com scroll */}\n          <div className=\"flex-1 overflow-y-auto pr-2 space-y-6\">\n            <div className=\"bg-background p-4 space-y-6 rounded-xl\">\n              {/* ID */}\n              <div className=\"flex items-center space-x-6\">\n                <Text\n                  size=\"md\"\n                  weight=\"semibold\"\n                  className=\"text-text-700 w-20\"\n                >\n                  ID\n                </Text>\n                <Text size=\"md\" weight=\"normal\" className=\"text-text-600\">\n                  {ticket.id}\n                </Text>\n              </div>\n\n              {/* Aberto em */}\n              <div className=\"flex items-center space-x-6\">\n                <Text\n                  size=\"md\"\n                  weight=\"semibold\"\n                  className=\"text-text-700 w-20\"\n                >\n                  Aberto em\n                </Text>\n                <Text size=\"md\" weight=\"normal\" className=\"text-text-600\">\n                  {dayjs(ticket.createdAt).format('DD MMMM YYYY, [às] HH[h]')}\n                </Text>\n              </div>\n\n              {/* Status */}\n              <div className=\"flex items-center space-x-6\">\n                <Text\n                  size=\"md\"\n                  weight=\"semibold\"\n                  className=\"text-text-700 w-20\"\n                >\n                  Status\n                </Text>\n                <Badge\n                  variant=\"solid\"\n                  size=\"small\"\n                  action={getStatusBadgeAction(ticket.status)}\n                  className=\"w-fit\"\n                >\n                  {getStatusText(ticket.status)}\n                </Badge>\n              </div>\n\n              {/* Tipo */}\n              <div className=\"flex items-center space-x-6\">\n                <Text\n                  size=\"md\"\n                  weight=\"semibold\"\n                  className=\"text-text-700 w-20\"\n                >\n                  Tipo\n                </Text>\n                <Badge\n                  variant=\"solid\"\n                  size=\"small\"\n                  action=\"muted\"\n                  className=\"w-fit\"\n                >\n                  {getCategoryIcon(ticket.category)}\n                  {getCategoryText(ticket.category)}\n                </Badge>\n              </div>\n\n              <Divider />\n\n              {/* Descrição */}\n              <div className=\"flex items-start space-x-6\">\n                <Text\n                  size=\"md\"\n                  weight=\"semibold\"\n                  className=\"text-text-700 w-20\"\n                >\n                  Descrição\n                </Text>\n                {ticket.description && (\n                  <Text size=\"md\" weight=\"normal\" className=\"text-text-600\">\n                    {ticket.description}\n                  </Text>\n                )}\n              </div>\n            </div>\n\n            {/* Seção de resposta (quando há respostas do suporte ou carregando) */}\n            {ticket.status === SupportStatus.RESPONDIDO && isLoadingAnswers && (\n              <>\n                <Text size=\"md\" weight=\"bold\" className=\"text-text-950 my-6\">\n                  Resposta de Suporte Técnico\n                </Text>\n                <AnswerSkeleton />\n              </>\n            )}\n\n            {/* Seção de resposta (quando há respostas do suporte) */}\n            {!isLoadingAnswers &&\n              answers.some((answer) => answer.userId !== userId) && (\n                <>\n                  <Text size=\"md\" weight=\"bold\" className=\"text-text-950 my-6\">\n                    Resposta de Suporte Técnico\n                  </Text>\n\n                  {answers\n                    .filter((answer) => answer.userId !== userId)\n                    .sort(\n                      (a, b) =>\n                        new Date(b.createdAt).getTime() -\n                        new Date(a.createdAt).getTime()\n                    )\n                    .slice(0, 1)\n                    .map((answer) => (\n                      <div\n                        key={answer.id}\n                        className=\"bg-background p-4 space-y-6 rounded-xl\"\n                      >\n                        {/* Recebido em */}\n                        <div className=\"flex items-center space-x-6\">\n                          <Text\n                            size=\"md\"\n                            weight=\"semibold\"\n                            className=\"text-text-700 w-20\"\n                          >\n                            Recebido\n                          </Text>\n                          <Text\n                            size=\"md\"\n                            weight=\"normal\"\n                            className=\"text-text-600\"\n                          >\n                            {dayjs(answer.createdAt).format(\n                              'DD MMMM YYYY, [às] HH[h]'\n                            )}\n                          </Text>\n                        </div>\n\n                        <Divider />\n\n                        {/* Resposta */}\n                        <div className=\"flex items-start space-x-6\">\n                          <Text\n                            size=\"md\"\n                            weight=\"semibold\"\n                            className=\"text-text-700 w-20\"\n                          >\n                            Resposta\n                          </Text>\n                          <Text\n                            size=\"md\"\n                            weight=\"normal\"\n                            className=\"text-text-600\"\n                          >\n                            {answer.answer}\n                          </Text>\n                        </div>\n                      </div>\n                    ))}\n                </>\n              )}\n\n            {/* Seção de resposta do usuário */}\n            {!isLoadingAnswers &&\n              answers.some((answer) => answer.userId === userId) && (\n                <>\n                  <Text size=\"md\" weight=\"bold\" className=\"text-text-950 my-6\">\n                    Resposta enviada\n                  </Text>\n\n                  {answers\n                    .filter((answer) => answer.userId === userId)\n                    .sort(\n                      (a, b) =>\n                        new Date(b.createdAt).getTime() -\n                        new Date(a.createdAt).getTime()\n                    )\n                    .slice(0, 1)\n                    .map((answer) => (\n                      <div\n                        key={answer.id}\n                        className=\"bg-background p-4 space-y-6 rounded-xl\"\n                      >\n                        {/* Enviada em */}\n                        <div className=\"flex items-center space-x-6\">\n                          <Text\n                            size=\"md\"\n                            weight=\"semibold\"\n                            className=\"text-text-700 w-20\"\n                          >\n                            Enviada\n                          </Text>\n                          <Text\n                            size=\"md\"\n                            weight=\"normal\"\n                            className=\"text-text-600\"\n                          >\n                            {dayjs(answer.createdAt).format(\n                              'DD MMMM YYYY, [às] HH[h]'\n                            )}\n                          </Text>\n                        </div>\n\n                        <Divider />\n\n                        {/* Resposta */}\n                        <div className=\"flex items-start space-x-6\">\n                          <Text\n                            size=\"md\"\n                            weight=\"semibold\"\n                            className=\"text-text-700 w-20\"\n                          >\n                            Resposta\n                          </Text>\n                          <Text\n                            size=\"md\"\n                            weight=\"normal\"\n                            className=\"text-text-600\"\n                          >\n                            {answer.answer}\n                          </Text>\n                        </div>\n                      </div>\n                    ))}\n                </>\n              )}\n\n            {/* Seção Responder */}\n            {!isLoadingAnswers &&\n              answers.some((answer) => answer.userId !== userId) && (\n                <>\n                  <Text size=\"lg\" weight=\"bold\" className=\"text-text-950 my-6\">\n                    Responder\n                  </Text>\n\n                  <div className=\"space-y-4\">\n                    <TextArea\n                      placeholder=\"Detalhe o problema aqui.\"\n                      rows={4}\n                      className=\"w-full\"\n                      value={responseText}\n                      onChange={(e) => setResponseText(e.target.value)}\n                    />\n\n                    {responseText.trim().length > 0 && (\n                      <div className=\"flex justify-end\">\n                        <Button\n                          variant=\"solid\"\n                          size=\"medium\"\n                          onClick={handleSubmitAnswer}\n                          disabled={isSubmittingAnswer}\n                        >\n                          {isSubmittingAnswer ? 'Enviando...' : 'Enviar'}\n                        </Button>\n                      </div>\n                    )}\n                  </div>\n                </>\n              )}\n          </div>\n        </div>\n      </Modal>\n\n      {/* Modal de confirmação de encerramento */}\n      <Modal\n        isOpen={showCloseConfirmation}\n        onClose={() => setShowCloseConfirmation(false)}\n        title=\"Encerrar pedido?\"\n        size=\"md\"\n        hideCloseButton={false}\n        closeOnEscape={true}\n        data-testid=\"close-ticket-modal\"\n      >\n        <div className=\"space-y-6\">\n          <Text size=\"sm\" weight=\"normal\" className=\"text-text-700\">\n            Ao encerrar este pedido, ele será fechado e não poderá mais ser\n            atualizado.\n          </Text>\n\n          <div className=\"flex gap-3 justify-end\">\n            <Button\n              variant=\"outline\"\n              size=\"medium\"\n              onClick={() => setShowCloseConfirmation(false)}\n            >\n              Cancelar\n            </Button>\n            <Button\n              variant=\"solid\"\n              size=\"medium\"\n              action=\"negative\"\n              onClick={handleCloseTicket}\n            >\n              Encerrar\n            </Button>\n          </div>\n        </div>\n      </Modal>\n    </>\n  );\n};\n","import { KeyIcon, BugIcon, InfoIcon } from '@phosphor-icons/react';\nimport React from 'react';\nimport { SupportCategory } from '../../../types/support';\n\nexport const getCategoryIcon = (\n  category: SupportCategory | null,\n  size = 16\n): React.ReactNode => {\n  if (!category) return null;\n  switch (category) {\n    case SupportCategory.ACESSO:\n      return <KeyIcon size={size} />;\n    case SupportCategory.TECNICO:\n      return <BugIcon size={size} />;\n    case SupportCategory.OUTROS:\n      return <InfoIcon size={size} />;\n    default:\n      return <InfoIcon size={size} />;\n  }\n};\n"],"mappings":"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","names":["jsx"]}