1"use strict";(self.webpackChunkformulario_HACCP=self.webpackChunkformulario_HACCP||[]).push([[3413,6237],{6237:(f,_,d)=>{d.r(_),d.d(_,{CodexControleRevisaoComponent:()=>s});var a=d(467),c=d(177),m=d(3413),p=d(4341),e=d(4438),u=d(9692),h=d(5794);function g(i,l){if(1&i){const o=e.RV6();e.j41(0,"tr")(1,"td")(2,"input",13),e.mxI("ngModelChange",function(n){const t=e.eBV(o).$implicit;return e.DH7(t.revisao,n)||(t.revisao=n),e.Njj(n)}),e.k0s()(),e.j41(3,"td")(4,"input",14),e.mxI("ngModelChange",function(n){const t=e.eBV(o).$implicit;return e.DH7(t.data_revisao,n)||(t.data_revisao=n),e.Njj(n)}),e.k0s()(),e.j41(5,"td")(6,"input",13),e.mxI("ngModelChange",function(n){const t=e.eBV(o).$implicit;return e.DH7(t.responsavel,n)||(t.responsavel=n),e.Njj(n)}),e.k0s()(),e.j41(7,"td")(8,"input",13),e.mxI("ngModelChange",function(n){const t=e.eBV(o).$implicit;return e.DH7(t.alteracoes,n)||(t.alteracoes=n),e.Njj(n)}),e.k0s()(),e.j41(9,"td",15)(10,"button",16),e.bIt("click",function(){const n=e.eBV(o).index,t=e.XpG();return e.Njj(t.removerLinha(n))}),e.EFF(11,"Remover"),e.k0s()()()}if(2&i){const o=l.$implicit;e.R7$(2),e.R50("ngModel",o.revisao),e.R7$(2),e.R50("ngModel",o.data_revisao),e.R7$(2),e.R50("ngModel",o.responsavel),e.R7$(2),e.R50("ngModel",o.alteracoes)}}function C(i,l){1&i&&(e.j41(0,"tr")(1,"td",17),e.EFF(2,' Nenhuma revis\xe3o cadastrada. Clique em "Adicionar" para come\xe7ar. '),e.k0s()())}function v(i,l){1&i&&(e.j41(0,"div",18)(1,"div",19),e.nrm(2,"div",20),e.j41(3,"p",21),e.EFF(4,"Salvando altera\xe7\xf5es, aguarde..."),e.k0s()()())}let s=(()=>{class i{constructor(o,r){this.supabaseService=o,this.toastr=r,this.carregando=!1,this.linhas=[],this.nextTmpId=1,this.legendaTexto="O Plano APPCC e os Programas de Pr\xe9-Requisitos devem ser revisados com frequ\xeancia m\xednima anual ou sempre que necess\xe1rio conforme, mas n\xe3o limitando, as condi\xe7\xf5es abaixo:\n\u2022 Altera\xe7\xe3o nas mat\xe9rias-primas ou fornecedor de mat\xe9rias-primas;\n\u2022 Altera\xe7\xe3o de ingredientes/receita;\n\u2022 Altera\xe7\xe3o das condi\xe7\xf5es de processamento, fluxo de processo ou equipamentos;\n\u2022 Altera\xe7\xe3o na embalagem, armazenamento ou condi\xe7\xf5es de distribui\xe7\xe3o;\n\u2022 Altera\xe7\xe3o no uso do pretendido ou n\xe3o intencional;\n\u2022 Altera\xe7\xe3o nas medidas de controle de processo;\n\u2022 Identifica\xe7\xe3o de um novo perigo/risco;\n\u2022 Ap\xf3s recall ou qualquer situa\xe7\xe3o de crise;\n\u2022 Ap\xf3s auditorias;\n\u2022 Novas informa\xe7\xf5es cient\xedficas pertinentes."}
1ngOnInit(){const o=localStorage.getItem("empresaSelecionada");this.empresa=o?JSON.parse(o):null,this.carregarDadosDoBanco()}criarLinha(o){return{id:o?.id,revisao:o?.revisao??"",data_revisao:o?.data_revisao??null,responsavel:o?.responsavel??"",alteracoes:o?.alteracoes??"",_tmpId:this.nextTmpId++}}adicionarLinha(o){this.linhas=[...this.linhas,this.criarLinha(o)]}removerLinha(o){this.linhas.splice(o,1)}trackByLinha(o,r){return r._tmpId??r.id??o}carregarDadosDoBanco(){var o=this;return(0,a.A)(function*(){if(o.empresa?.id){o.carregando=!0;try{o.linhas=[];const r=localStorage.getItem("ServicoSelecionado"),n=yield o.supabaseService.getControleRevisaoPorEmpresa(o.empresa.id,r);n&&n.length?o.linhas=n.map(t=>o.criarLinha({id:t.id,revisao:t.revisao,data_revisao:t.data_revisao?t.data_revisao:null,responsavel:t.responsavel,alteracoes:t.alteracoes})):o.adicionarLinha()}catch(r){console.error("Erro ao carregar controle revis\xe3o:",r),o.toastr.error("Erro ao carregar dados."),o.adicionarLinha()}finally{o.carregando=!1}}})()}salvar(){var o=this;return(0,a.A)(function*(){if(o.empresa?.id){o.carregando=!0;try{const r=localStorage.getItem("ServicoSelecionado");yield o.supabaseService.deleteControleRevisaoEmpresa(o.empresa.id,r);const n=o.linhas.map(t=>({empresa_id:o.empresa.id,revisao:t.revisao,data_revisao:t.data_revisao||null,responsavel:t.responsavel,alteracoes:t.alteracoes,servico:r}));yield o.supabaseService.insertControleRevisaoRows(n),o.toastr.success("Controle de Revis\xf5es salvo com sucesso!"),yield o.carregarDadosDoBanco()}catch(r){console.error("Erro ao salvar controle revis\xe3o:",r),o.toastr.error("Erro ao salvar dados.")}finally{o.carregando=!1}}else o.toastr.error("Empresa n\xe3o selecionada")})()}isSalvarDisabled(){return!this.linhas||0===this.linhas.length||this.linhas.some(o=>!(o.revisao&&o.data_revisao&&o.responsavel&&o.alteracoes))}static{this.\u0275fac=function(r){return new(r||i)(e.rXU(u.w),e.rXU(h.tw))}}static{this.\u0275cmp=e.VBU({type:i,selectors:[["app-controle-revisao"]],decls:27,vars:7,consts:[[3,"showHeader"],[1,"mb-2","p-2",2,"background-color","#f1f3f5","border-radius","6px"],[2,"white-space","pre-line","margin","0","font-size","0.95rem","color","#495057","font-weight","500"],[1,"table-scroll-wrapper",2,"max-height","420px","overflow","auto","position","relative"],[1,"table","table-bordered","align-middle"],[1,"table-secondary","text-center"],[2,"white-space","nowrap"],[4,"ngFor","ngForOf","ngForTrackBy"],[4,"ngIf"],[1,"mt-3","text-center"],[1,"btn","btn-secondary","btn-sm","me-2",3,"click"],[1,"btn","btn-success",3,"click","disabled"],["class","modal-backdrop",4,"ngIf"],[1,"form-control","form-control-sm",3,"ngModelChange","ngModel"],["type","date",1,"form-control","form-control-sm",3,"ngModelChange","ngModel"],[1,"text-center"],[1,"btn","btn-danger","btn-sm",3,"click"],["colspan","5",1,"text-center","text-muted"],[1,"modal-backdrop"],[1,"modal-content"],[1,"spinner"],[2,"margin-top","10px","font-weight","500"]],template:function(r,n){1&r&&(e.j41(0,"app-card",0)(1,"div",1)(2,"p",2),e.EFF(3),e.k0s()(),e.j41(4,"div",3)(5,"table",4)(6,"thead",5)(7,"tr")(8,"th",6),e.EFF(9,"Revis\xe3o"),e.k0s(),e.j41(10,"th",6),e.EFF(11,"Data"),e.k0s(),e.j41(12,"th",6),e.EFF(13,"Respons\xe1vel"),e.k0s(),e.j41(14,"th",6),e.EFF(15,"Altera\xe7\xf5es"),e.k0s(),e.j41(16,"th",6),e.EFF(17,"A\xe7\xf5es"),e.k0s()()(),e.j41(18,"tbody"),e.DNE(19,g,12,4,"tr",7)(20,C,3,0,"tr",8),e.k0s()()(),e.j41(21,"div",9)(22,"button",10),e.bIt("click",function(){return n.adicionarLinha()}),e.EFF(23,"+ Adicionar"),e.k0s(),e.j41(24,"button",11),e.bIt("click",function(){return n.salvar()}),e.EFF(25," Salvar "),e.k0s()()(),e.DNE(26,v,5,0,"div",12)),2&r&&(e.Y8G("showHeader",!1),e.R7$(3),e.SpI(" ",n.legendaTexto," "),e.R7$(16),e.Y8G("ngForOf",n.linhas)("ngForTrackBy",n.trackByLinha),e.R7$(),e.Y8G("ngIf",0===n.linhas.length),e.R7$(4),e.Y8G("disabled",n.isSalvarDisabled()),e.R7$(2),e.Y8G("ngIf",n.carregando))},dependencies:[c.MD,c.Sq,c.bT,m.i,p.YN,p.me,p.BC,p.vS],styles:[".bg-error[_ngcontent-%COMP%]{background-color:#000}.modal-backdrop[_ngcontent-%COMP%]{position:fixed;top:0%;left:0%;width:100vw;height:100vh;background:transparent;z-index:999;display:flex;align-items:center;justify-content:center;pointer-events:all}.modal-content[_ngcontent-%COMP%]{background-color:#fff;padding:20px;border-radius:8px;box-shadow:0 0 8px #0000004d;display:flex;align-items:center;
1width:200px;justify-content:center;pointer-events:auto}.spinner[_ngcontent-%COMP%]{width:30px;height:30px;border:3px solid #ccc;border-top:3px solid #3498db;border-radius:50%;animation:_ngcontent-%COMP%_spin 1s linear infinite}@keyframes _ngcontent-%COMP%_spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.bg-light[_ngcontent-%COMP%]{background-color:#f8f9fa}.border[_ngcontent-%COMP%]{border:1px solid #dee2e6}.rounded[_ngcontent-%COMP%]{border-radius:8px}.mb-2[_ngcontent-%COMP%]{margin-bottom:.5rem}.mb-3[_ngcontent-%COMP%]{margin-bottom:1rem}.p-3[_ngcontent-%COMP%]{padding:1rem}"]})}}return i})()},3413:(f,_,d)=>{d.d(_,{i:()=>v});var a=d(4438),c=d(177);const m=["headerOptionsTemplate"],p=["headerTitleTemplate"],e=["*"];function u(s,i){1&s&&a.eu8(0)}function h(s,i){1&s&&a.eu8(0)}function g(s,i){if(1&s&&(a.j41(0,"div",1)(1,"div")(2,"h5"),a.EFF(3),a.k0s(),a.DNE(4,u,1,0,"ng-container",3),a.k0s(),a.DNE(5,h,1,0,"ng-container",3),a.k0s()),2&s){const l=a.XpG();a.Y8G("ngClass",l.headerClass()),a.R7$(3),a.JRh(l.cardTitle()),a.R7$(),a.Y8G("ngTemplateOutlet",l.headerTitleTemplate),a.R7$(),a.Y8G("ngTemplateOutlet",l.headerOptionsTemplate)}}function C(s,i){if(1&s&&(a.j41(0,"div",4),a.SdG(1),a.k0s()),2&s){const l=a.XpG();a.xc7("padding",l.padding(),"px"),a.Y8G("ngClass",l.blockClass())}}let v=(()=>{class s{constructor(){this.cardTitle=(0,a.hFB)(),this.cardClass=(0,a.hFB)(),this.showContent=(0,a.hFB)(!0),this.blockClass=(0,a.hFB)(),this.headerClass=(0,a.hFB)(),this.showHeader=(0,a.hFB)(!0),this.padding=(0,a.hFB)(20)}static{this.\u0275fac=function(o){return new(o||s)}}static{this.\u0275cmp=a.VBU({type:s,selectors:[["app-card"]],contentQueries:function(o,r,n){if(1&o&&(a.wni(n,m,5),a.wni(n,p,5)),2&o){let t;a.mGM(t=a.lsd())&&(r.headerOptionsTemplate=t.first),a.mGM(t=a.lsd())&&(r.headerTitleTemplate=t.first)}},inputs:{cardTitle:[1,"cardTitle"],cardClass:[1,"cardClass"],showContent:[1,"showContent"],blockClass:[1,"blockClass"],headerClass:[1,"headerClass"],showHeader:[1,"showHeader"],padding:[1,"padding"]},ngContentSelectors:e,decls:3,vars:3,consts:[[1,"card",3,"ngClass"],[1,"card-header","d-flex","align-items-center","justify-content-between",3,"ngClass"],[1,"card-body",3,"ngClass","padding"],[4,"ngTemplateOutlet"],[1,"card-body",3,"ngClass"]],template:function(o,r){1&o&&(a.NAR(),a.j41(0,"div",0),a.DNE(1,g,6,4,"div",1)(2,C,2,3,"div",2),a.k0s()),2&o&&(a.Y8G("ngClass",r.cardClass()),a.R7$(),a.vxM(r.showHeader()?1:-1),a.R7$(),a.vxM(r.showContent()?2:-1))},dependencies:[c.MD,c.YU,c.T3],encapsulation:2})}}return s})()}}]);
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.