1import{L as F}from"./LinksFooter._a37gDEp.js";import{P as B}from"./ProgramMembersList.Di8nkhyA.js";import{C as j}from"./ConfirmDialog.8pCk8ex8.js";import{_ as U,c as C,a as t,d as o,b as f,w as r,r as i,F as D,o as u,f as q,g as n,t as c,e as _}from"./index.DBqU4Vro.js";const M={name:"ProgramDetailView",components:{"links-footer":F,ProgramMembersList:B,ConfirmDialog:j},data(){return{isLoading:!1,isResending:!1,program:null,members:[],statusSummary:{total:0,notSent:0,success:0,failed:0,sending:0},pollingInterval:null,isPolling:!1,showCancelDialog:!1,showResendDialog:!1,showResendAllDialog:!1,showCompleteDialog:!1,snackbar:{show:!1,message:"",color:"success",timeout:4e3}}},computed:{hasFailedMembers(){return this.statusSummary.failed>0},failedCount(){return this.statusSummary.failed},shouldPoll(){return this.statusSummary.notSent>0||this.statusSummary.sending>0}},watch:{shouldPoll(a){a?this.startPolling():this.stopPolling()}},async created(){await this.loadProgramDetails(),this.shouldPoll&&this.startPolling()},beforeUnmount(){this.stopPolling()},methods:{async loadProgramDetails(){this.isLoading=!0;try{const a=this.$route.params.id,e=await this.API.get("serverless",`/program/programs/${a}/status`);if(this.members=e.data.data.members,this.statusSummary=e.data.data.summary,!this.program){const b=await this.API.get("serverless",`/program/programs/${a}`);this.program=b.data.data.program}}catch(a){console.error("Error loading program details:",a)}finally{this.isLoading=!1}},startPolling(){this.pollingInterval||(this.isPolling=!0,this.pollingInterval=setInterval(async()=>{await this.loadProgramDetails()},1e4))},stopPolling(){this.pollingInterval&&(clearInterval(this.pollingInterval),this.pollingInterval=null,this.isPolling=!1)},async resendMember(a){this.isResending=!0;try{const e={programId:this.program.id};await this.API.post("serverless",`/program/programs/member/${a.memberId}/resend`,e),this.showSnackbar("Convite reenviado com sucesso!","success"),await this.loadProgramDetails()}catch(e){console.error("Error resending member invite:",e),this.showSnackbar("Erro ao reenviar convite. Tente novamente.","error")}finally{this.isResending=!1}},async resendAll(){this.showResendAllDialog=!1,this.isResending=!0;try{await this.API.post("serverless",`/program/programs/${this.program.id}/resend-all`),this.showSnackbar("Todos os convites foram reenviados com sucesso!","success"),await this.loadProgramDetails(),this.shouldPoll&&this.startPolling()}catch(a){console.error("Error resending all invites:",a),this.showSnackbar("Erro ao reenviar convites. Tente novamente.","error")}finally{this.isResending=!1}},async resendAllFailed(){this.showResendDialog=!1,this.isResending=!0;try{await this.API.post("serverless",`/program/programs/${this.program.id}/resend-failed`),this.showSnackbar("Convites reenviados com sucesso!","success"),await this.loadProgramDetails(),this.shouldPoll&&this.startPolling()}catch(a){console.error("Error resending failed invites:",a),this.showSnackbar("Erro ao reenviar convites. Tente novamente.","error")}finally{this.isResending=!1}},async cancelProgram(){this.showCancelDialog=!1,this.isLoading=!0;try{await this.API.put("serverless",`/program/programs/${this.program.id}/cancel`),this.showSnackbar("Programa cancelado com sucesso.","success"),this.program.status=0}catch(a){console.error("Error cancelling program:",a),this.showSnackbar("Erro ao cancelar programa.","error")}finally{this.isLoading=!1}},async completeProgram(){this.showCompleteDialog=!1,this.isLoading=!0;try{await this.API.post("serverless",`/program/programs/${this.program.id}/complete`),this.showSnackbar("Programa concluÃdo com sucesso!","success"),this.program.status=2,this.stopPolling()}catch(a){console.error("Error completing program:",a),this.showSnackbar("Erro ao concluir programa.","error")}finally{this.isLoading=!1}},goBack(){this.$router.push("/program")},formatDate(a){return a?new Date(a).toLocaleDateString("pt-BR"):""},showSnackbar(a,e="success",b=4e3){this.snackbar={show:!0,message:a,color:e,timeout:b}},getStatusColor(){return this.program?this.program.status===2?"primary":this.program.status===0?"error":"success":"grey"},getStatusIcon(){return this.program?this.program.status===2?"mdi-check-all":this.program.status===0?"mdi-close-circle":"mdi-check-circle":"mdi-help-circle"}
1,getStatusText(){return this.program?this.program.status===2?"ConcluÃdo":this.program.status===0?"Cancelado":"Ativo":""}}},N={class:"program-detail-view typography"},O={key:0,class:"loading-container"},G={key:1,class:"form-cadastro-container"},H={class:"d-flex justify-space-between align-start flex-wrap ga-4"},J={class:"flex-grow-1"},K={class:"d-flex align-center mb-2"},Q={class:"page-title"},W={class:"text-body-2 text-grey"},X={class:"action-buttons d-flex flex-wrap ga-2"},Y={class:"d-flex align-center"},Z={class:"d-flex align-center"},$={class:"flex-grow-1"},ee={class:"stat-value"},se={class:"d-flex align-center"},oe={class:"flex-grow-1"},re={class:"stat-value"},te={class:"d-flex align-center"},ae={class:"flex-grow-1"},le={class:"stat-value"},ie={class:"d-flex align-center"},ne={class:"flex-grow-1"},me={class:"stat-value"},ce={class:"d-flex align-center"};function de(a,e,b,ue,s,m){const k=i("v-skeleton-loader"),v=i("v-col"),P=i("v-row"),d=i("v-icon"),x=i("v-breadcrumbs-item"),S=i("v-breadcrumbs-divider"),R=i("v-breadcrumbs"),A=i("v-chip"),h=i("v-btn"),g=i("v-card-text"),p=i("v-card"),I=i("v-card-title"),w=i("v-avatar"),V=i("v-progress-circular"),z=i("v-alert"),T=i("program-members-list"),y=i("confirm-dialog"),E=i("v-snackbar"),L=i("links-footer");return u(),C(D,null,[t("div",N,[s.isLoading&&!s.program?(u(),C("div",O,[o(P,null,{default:r(()=>[(u(),C(D,null,q(4,l=>o(v,{key:l,cols:"12",sm:"6",md:"3"},{default:r(()=>[o(k,{type:"card"})]),_:2},1024)),64))]),_:1}),o(k,{type:"table",class:"mt-4"})])):s.program?(u(),C("div",G,[o(R,{class:"px-0 pt-0"},{default:r(()=>[o(x,{onClick:m.goBack,class:"breadcrumb-link"},{default:r(()=>[o(d,{start:"",size:"small"},{default:r(()=>e[14]||(e[14]=[n("mdi-folder-outline")])),_:1}),e[15]||(e[15]=n(" Programas "))]),_:1},8,["onClick"]),o(S,null,{default:r(()=>[o(d,null,{default:r(()=>e[16]||(e[16]=[n("mdi-chevron-right")])),_:1})]),_:1}),o(x,{class:"breadcrumb-active"},{default:r(()=>[n(c(s.program.name),1)]),_:1})]),_:1}),o(p,{class:"header-card mb-4",elevation:"0",rounded:"lg"},{default:r(()=>[o(g,{class:"pa-6"},{default:r(()=>[t("div",H,[t("div",J,[t("div",K,[t("h1",Q,c(s.program.name),1),o(A,{color:m.getStatusColor(),variant:"flat",size:"small",class:"ml-4"},{default:r(()=>[o(d,{start:"",size:"small"},{default:r(()=>[n(c(m.getStatusIcon()),1)]),_:1}),n(" "+c(m.getStatusText()),1)]),_:1},8,["color"])]),t("p",W,[o(d,{size:"small",class:"mr-1"},{default:r(()=>e[17]||(e[17]=[n("mdi-calendar")])),_:1}),n(" Criado em "+c(m.formatDate(s.program.createDate)),1)])]),t("div",X,[s.program.status===1?(u(),_(h,{key:0,onClick:e[0]||(e[0]=l=>s.showResendAllDialog=!0),color:"primary",variant:"elevated",disabled:s.isResending,"prepend-icon":"mdi-email-multiple"},{default:r(()=>[n(" Reenviar Todos ("+c(s.statusSummary.total)+") ",1)]),_:1},8,["disabled"])):f("",!0),m.hasFailedMembers&&s.program.status===1?(u(),_(h,{key:1,onClick:e[1]||(e[1]=l=>s.showResendDialog=!0),color:"primary",variant:"outlined",disabled:s.isResending,"prepend-icon":"mdi-email-sync"},{default:r(()=>[n(" Reenviar Falhas ("+c(m.failedCount)+") ",1)]),_:1},8,["disabled"])):f("",!0),s.program.status===1?(u(),_(h,{key:2,onClick:e[2]||(e[2]=l=>s.showCompleteDialog=!0),color:"primary",variant:"elevated","prepend-icon":"mdi-check-all"},{default:r(()=>e[18]||(e[18]=[n(" Concluir Programa ")])),_:1})):f("",!0),s.program.status===1?(u(),_(h,{key:3,onClick:e[3]||(e[3]=l=>s.showCancelDialog=!0),color:"error",variant:"outlined","prepend-icon":"mdi-cancel"},{default:r(()=>e[19]||(e[19]=[n(" Cancelar Programa ")])),_:1})):f("",!0)])])]),_:1})]),_:1}),o(p,{class:"summary-card mb-6",elevation:"0",rounded:"lg"},{default:r(()=>[o(I,{class:"pa-6 pb-4"},{default:r(()=>[t("div",Y,[o(d,{class:"mr-3",color:"primary"},{default:r(()=>e[20]||(e[20]=[n("mdi-chart-box-outline")])),_:1}),e[21]||(e[21]=t("h2",{class:"text-h6 mb-0"},"Resumo de Envios",-1))])]),_:1}),o(g,{class:"px-6 pb-6"},{default:r(()=>[o(P,null,{default:r(()=>[o(v,{cols:"12",sm:"6",lg:"3"},{default:r(()=>[o(p,{class:"stat-card stat-card-total",elevation:"0",rounded:"lg"},{default:r(()=>[o(g,{class:"pa-6"},{default:r(()=>[t("div",Z,[o(w,{color:"info",size:"48",class:"mr-4"},{default:r(()=>[o(d,{color:"white",size:"24"},{default:r(()=>e[22]||(e[22]=[n("mdi-account-group")])),_:1})]),_:1}),t("div",$,[t("div",ee,c(s.statusSummary.total),1),e[23]||(e[23]=t("div",{class:"stat-label"},"Total",-1))])])]),_:1})]),_:1})]),_:1}),o(v,{cols:"12",sm:"6",lg:"3"},{default:r(()=>[o(p,{class:"stat-card stat-card-success",elevation:"0",rounded:"lg"},{default:r(()=>[o(g,{class:"pa-6"},{default:r(()=>[t("div",se,[o(w,{color:"success",size:"48",class:"mr-4"},{default:r(()=>[o(d,{color:"white",size:"24"},{default:r(()=>e[24]||(e[24]=[n("mdi-check-circle")])),_:1})]),_:1}),t("div",oe,[t("div",re,c(s.statusSummary.success),1),e[25]||(e[25]=t("div",{class:"stat-label"},"Enviados",-1))])])]),_:1})]),_:1})]),_:1}),o(v,{cols:"12",sm:"6",lg:"3"},{default:r(()=>[o(p,{class:"stat-card stat-card-error",elevation:"0",rounded:"lg"},{default:r(()=>[o(g,{class:"pa-6"},{default:r(()=>[t("div",te,[o(w,{color:"error",size:"48",class:"mr-4"},{default:r(()=>[o(d,{color:"white",size:"24"},{default:r(()=>e[26]||(e[26]=[n("mdi-alert-circle")])),_:1})]),_:1}
1),t("div",ae,[t("div",le,c(s.statusSummary.failed),1),e[27]||(e[27]=t("div",{class:"stat-label"},"Falhas",-1))])])]),_:1})]),_:1})]),_:1}),o(v,{cols:"12",sm:"6",lg:"3"},{default:r(()=>[o(p,{class:"stat-card stat-card-warning",elevation:"0",rounded:"lg"},{default:r(()=>[o(g,{class:"pa-6"},{default:r(()=>[t("div",ie,[o(w,{color:"warning",size:"48",class:"mr-4"},{default:r(()=>[o(d,{color:"white",size:"24"},{default:r(()=>e[28]||(e[28]=[n("mdi-clock-outline")])),_:1})]),_:1}),t("div",ne,[t("div",me,c(s.statusSummary.sending+s.statusSummary.notSent),1),e[29]||(e[29]=t("div",{class:"stat-label"},"Pendentes",-1))])])]),_:1})]),_:1})]),_:1})]),_:1}),s.isPolling?(u(),_(z,{key:0,type:"info",variant:"tonal",class:"mt-4",density:"compact"},{default:r(()=>[t("div",ce,[o(V,{indeterminate:"",size:"16",width:"2",class:"mr-3"}),e[30]||(e[30]=t("span",{class:"text-body-2"},"Atualizando automaticamente a cada 10 segundos...",-1))])]),_:1})):f("",!0)]),_:1})]),_:1}),o(T,{members:s.members,showActions:s.program.status===1,resending:s.isResending,onResend:m.resendMember},null,8,["members","showActions","resending","onResend"])])):f("",!0),o(y,{modelValue:s.showCancelDialog,"onUpdate:modelValue":e[4]||(e[4]=l=>s.showCancelDialog=l),title:"Cancelar Programa",message:"Tem certeza que deseja cancelar este programa? Esta ação não pode ser desfeita.","confirm-text":"Sim, Cancelar","cancel-text":"Não, Voltar","confirm-color":"error",icon:"mdi-alert-circle","icon-color":"error",loading:s.isLoading,onConfirm:m.cancelProgram,onCancel:e[5]||(e[5]=l=>s.showCancelDialog=!1)},null,8,["modelValue","loading","onConfirm"]),o(y,{modelValue:s.showResendAllDialog,"onUpdate:modelValue":e[6]||(e[6]=l=>s.showResendAllDialog=l),title:"Reenviar Todos os Convites",message:`Tem certeza que deseja reenviar os convites para TODOS os ${s.statusSummary.total} ${s.statusSummary.total===1?"membro":"membros"}? Isso incluirá membros que já receberam convites com sucesso.`,"confirm-text":"Sim, Reenviar Todos","cancel-text":"Cancelar","confirm-color":"primary",icon:"mdi-email-multiple","icon-color":"primary",loading:s.isResending,onConfirm:m.resendAll,onCancel:e[7]||(e[7]=l=>s.showResendAllDialog=!1)},null,8,["modelValue","message","loading","onConfirm"]),o(y,{modelValue:s.showResendDialog,"onUpdate:modelValue":e[8]||(e[8]=l=>s.showResendDialog=l),title:"Reenviar Convites",message:`Tem certeza que deseja reenviar os convites para todos os ${m.failedCount} ${m.failedCount===1?"membro":"membros"} com falha?`,"confirm-text":"Sim, Reenviar","cancel-text":"Cancelar","confirm-color":"primary",icon:"mdi-email-sync","icon-color":"primary",loading:s.isResending,onConfirm:m.resendAllFailed,onCancel:e[9]||(e[9]=l=>s.showResendDialog=!1)},null,8,["modelValue","message","loading","onConfirm"]),o(y,{modelValue:s.showCompleteDialog,"onUpdate:modelValue":e[10]||(e[10]=l=>s.showCompleteDialog=l),title:"Concluir Programa",message:"Tem certeza que deseja concluir este programa? Após concluÃdo, não será possÃvel enviar novos convites ou fazer alterações.","confirm-text":"Sim, Concluir","cancel-text":"Cancelar","confirm-color":"primary",icon:"mdi-check-all","icon-color":"primary",loading:s.isLoading,onConfirm:m.completeProgram,onCancel:e[11]||(e[11]=l=>s.showCompleteDialog=!1)},null,8,["modelValue","loading","onConfirm"]),o(E,{modelValue:s.snackbar.show,"onUpdate:modelValue":e[13]||(e[13]=l=>s.snackbar.show=l),color:s.snackbar.color,timeout:s.snackbar.timeout,location:"top"},{actions:r(()=>[o(h,{variant:"text",onClick:e[12]||(e[12]=l=>s.snackbar.show=!1)},{default:r(()=>e[31]||(e[31]=[n("Fechar")])),_:1})]),default:r(()=>[n(c(s.snackbar.message)+" ",1)]),_:1},8,["modelValue","color","timeout"])]),o(L)],64)}const he=U(M,[["render",de],["__scopeId","data-v-a3809b0b"]]);export{he as default};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.