{"version":3,"mappings":"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aAAaE,OAItDs2B,cACEt3B,KAAKo3B,WAAW3C,qDApEP+B,GAA2Bv0B,8JAA3Bu0B,EAA2BzX,iGAG3BwY,cAAW,omBDjBxBt1B,sICcau0B,GAAb,GCmLA,SA/LkB,CAChB,CACEhG,MAAO,kBACPgH,SAAS,GAEX,CACEC,KAAM,kBACNjH,MAAO,YACPttB,IAAK,cAEP,CACEu0B,KAAM,qBACNjH,MAAO,WACPttB,IAAK,GACLw0B,OAAO,EACPC,QAAS,CACP,CACEnH,MAAO,YACPttB,IAAK,cACLpD,SAAUM,sBACVK,YAAaL,kCAEf,CACEowB,MAAO,YACPttB,IAAK,uBACLpD,SAAUM,+BACVK,YAAaL,yCAEf,CACEowB,MAAO,qBACPttB,IAAK,oBACLpD,SAAUM,4BACVK,YAAaL,sCAEf,CACEowB,MAAO,WACPttB,IAAK,YACLpD,SAAUM,oBACVK,YAAaL,iCAEf,CACEowB,MAAO,eACPttB,IAAK,aACLpD,SAAUM,qBACVK,YAAaL,kCAEf,CACEowB,MAAO,UACPttB,IAAK,WACLpD,SAAUM,mBACVK,YAAaL,iCAEf,CACEowB,MAAO,eACPttB,IAAK,2BACLpD,SAAUM,yBACVK,YAAaL,sCAEf,CACEowB,MAAO,WACPttB,IAAK,uBACLpD,SAAUM,qBACVK,YAAaL,kCAEf,CACEowB,MAAO,kBACPttB,IAAK,4BACLpD,SAAUM,0BACVK,YAAaL,wCAInB,CACEq3B,KAAM,qBACNjH,MAAO,iBACPttB,IAAK,GACLw0B,OAAO,EAEPC,QAAS,CACP,CACEnH,MAAO,yBACPttB,IAAK,kBACLpD,SAAUM,0BACVK,YAAaL,sCAEf,CACEowB,MAAO,sBACPttB,IAAK,qCACLpD,SAAUM,0BACVK,YAAaL,4CAEf,CACEowB,MAAO,iBACPttB,IAAK,aACLpD,SAAUM,qBACVK,YAAaL,kCAEf,CACEowB,MAAO,kBACPttB,IAAK,cACLpD,SAAUM,sBACVK,YAAaL,qCAInB,CACEq3B,KAAM,sBACNjH,MAAO,UACPttB,IAAK,GACLw0B,OAAO,EAEPC,QAAS,CACP,CACEz0B,IAAK,sCACLstB,MAAO,sBACP1wB,SAAUM,0BACVK,YAAaL,sCAEf,CACE8C,IAAK,qBACLstB,MAAO,gBACP1wB,SAAUM,uBACVK,YAAaL,sCAInB,CACEq3B,KAAM,4BACNjH,MAAO,UACPttB,IAAK,GACLw0B,OAAO,EAEPC,QAAS,CACP,CACEz0B,IAAK,wBACLstB,MAAO,mBACP1wB,SAAUM,oBACVK,YAAaL,sCAEf,CACE8C,IAAK,wBACLstB,MAAO,gBACP1wB,SAAUM,oBACVK,YAAaL,wCAInB,CACEq3B,KAAM,aACNjH,MAAO,gBACPttB,IAAK,GACLw0B,OAAO,EACPC,QAAS,CACP,CACEz0B,IAAK,qBACLstB,MAAO,UACP1wB,SAAUM,0BACVK,YAAaL,sCAEf,CACE8C,IAAK,sBACLstB,MAAO,iBACP1wB,SAAUM,qBACVK,YAAaL,kCAEf,CACE8C,IAAK,2BACLstB,MAAO,sBACP1wB,SAAUM,0BACVK,YAAaL,wCAInB,CACEq3B,KAAM,kBACNjH,MAAO,wBACPttB,IAAK,kCACLw0B,OAAO,EACP53B,SAAUM,0BAEZ,CACEowB,MAAO,eACPgH,SAAS,GAEX,CACEC,KAAM,cACNjH,MAAO,cACPttB,IAAK,sBCxKT00B,GAnBsB,CACpB,CACEH,KAAM,mBACNjH,MAAO,wBACPttB,IAAK,cAEP,CACEu0B,KAAM,cACNjH,MAAO,WACPttB,IAAK,iCAEP,CACEu0B,KAAM,YACNjH,MAAO,SACPttB,IAAK,8BC2CT20B,GAzD2B,CACzB,CACEJ,KAAM,oBACNjH,MAAO,aACPttB,IAAK,GACLw0B,OAAO,EACPC,QAAS,CACP,CACEz0B,IAAK,2BACLstB,MAAO,sBACP1wB,SAAUM,qCACVK,YAAaL,iDAEf,CACE8C,IAAK,wBACLstB,MAAO,aACP1wB,SAAUM,kCACVK,YAAaL,8CAEf,CACE8C,IAAK,6BACLstB,MAAO,mBACP1wB,SAAUM,wCACVK,YAAaL,iDAInB,CACEq3B,KAAM,aACNjH,MAAO,gBACPttB,IAAK,GACLw0B,OAAO,EACPC,QAAS,CACP,CACEz0B,IAAK,4BACLstB,MAAO,SACP1wB,SAAUM,uBACVK,YAAaL,iDAEf,CACE8C,IAAK,8CACLstB,MAAO,MACP1wB,SAAUM,uBACVK,YAAaL,mDAInB,CACEq3B,KAAM,kBACNjH,MAAO,wBACPttB,IAAK,kCACLw0B,OAAO,EACP53B,SAAUM,2CC1Cd,SAZmC,CACjC,CACEowB,MAAO,eACPgH,SAAS,GAEX,CACEC,KAAM,cACNjH,MAAO,cACPttB,IAAK,6DCgBSjB,qCAAqD,aAChBA,4BAAGA,wDAExCA,qCAAsD,UAC9CA,sBAAeA,kFAAfA,wGANVA,mCAAwL,QAClLA,0DAA0BA,2BAC9BA,yCAGAA,yCAGFA,+EAPMA,2FACCA,oFAGCA,+GANVA,uCACEA,wCASFA,8DATOA,kSAZfA,sCAAiB,UAAjBA,CAAiB,YAAjBA,CAAiB,UAAjBA,CAAiB,OAAjBA,CAAiB,QAMHA,6BAAIA,2BACRA,mCAAIA,8BAAKA,+BAGbA,sCACEA,qFAWFA,2EAXiCA,0ICZtC,IAAM61B,GAAb,MAAM,QAMJn4B,YACkBC,6BAEhBI,KAAKc,aAAe,IAAIyK,KAG1B4S,mBACEne,KAAKc,aAA0D,QAA3C4nB,EAAuB,QAAvBN,OAAKxoB,0BAAkBmB,eAAEH,0BAAkBU,eAAER,2DAbxDg3B,GAAoB71B,qFAApB61B,EAAoB/Y,ykBDTjC9c,sCAAyB,WAErBA,iCACFA,2BACAA,sCAAyB,WACLA,sBAAwDA,2BAC1EA,uCAEmCA,mDAA6FA,2BAChIA,0FA4BFA,uEAnCOA,iEAAiB,+CAGJA,4LAC+BA,6DAEdA,+3vDCC1B61B,GAAb,uECJM71B,kGADFA,yCAAoEA,gFAAU81B,EAAV,2BAAUA,cAC5E91B,mDACFA,kGADiBA,6FAGfA,kGADFA,uCAA8CA,gFAAUmwB,EAAV,2BAAUA,cACtDnwB,mDACFA,kGADiBA,iGAKfA,uCAEEA,sCAAgB,WAEZA,kCACAA,uCACEA,+CACFA,6BAEFA,mCACEA,kCACFA,6BAEJA,+EAP0BA,+EAIfA,iGAAqB,0KAU1BA,sCAAwE,UAChEA,sBAAiBA,kFAAjBA,wGAHVA,uCACEA,iCACAA,yCAGFA,+EAHyDA,2FAWnDA,wMAJFA,qCACEA,qNAAS+1B,yCAAyCC,UAC/BD,qCAA2C,GAC5DA,sCACF/1B,mDACFA,gKALqCA,gFAIpBA,sEAA+B,sFAG9CA,4DADFA,qCACEA,mDACFA,gJAFoCA,2CACnBA,sEAA+B,sFAWtCA,kGADFA,qCAAqCA,uQAA0Bi2B,+BAA0C,KACvGj2B,mDACFA,kJADiBA,sEAAkC,sFAGjDA,yKADFA,qCAAmIA,6HAASk2B,EAAT,2BAASA,kBAC1Il2B,mDACFA,qMAFoCA,8FACnBA,sEAAoC,iKAPvDA,yCAGEA,wCAGAA,wCAGFA,+EATIA,iDAAsFA,oFAA2C,gEAG/HA,+DAGAA,yFAPRA,uCACEA,yCAUFA,6FATKA,yMAJTA,oCAAiK,WAE7JA,mDAYFA,0KAdGA,iDAAmCA,mGACjBA,+IACYA,gGAfrCA,yCAEEA,wCAMAA,wCAKAA,0CAgBFA,gFA7BuDA,oFAA2C,gEAE5FA,+DAMAA,8DAKyIA,4FAb/IA,2HACGA,uIATPA,uCACEA,mDAMAA,0FAgCFA,2FAtCiBA,+EAAqB,qCA0ClCA,uDAEEA,iGA9DRA,kDAeAA,sCAEEA,mDAyCAA,mCAAI,UACgDA,2GAASm2B,mBACzDn2B,yCACAA,0FAGFA,+BAIJA,sCAAyD,WAErDA,mCAAqE,aAEvEA,uGAxEaA,uGAiBkBA,mEA2CWA,mEAAgB,+FAzElEA,uCAEEA,sCAEEA,yCAGAA,yCAKAA,0FA4EFA,2BACAA,iCAEFA,8EAzFoCA,sHAEiBA,sEAGrBA,gGAwF9BA,wCAAkDA,sBAAgBA,0EAAhBA,wFAClDA,qCACEA,iCACFA,mDACAA,qCACEA,iCACFA,mDACAA,qCACEA,iCACFA,sDAKEA,wCAAyDA,sBAAeA,2EAAfA,wGAF3DA,qCACEA,sBACAA,2CACFA,0EAFEA,sFACuCA,2FAdzCA,2CACAA,0CAGAA,0CAGAA,0CAIAA,8BACAA,6FAZgCA,uCACzBA,0EAGAA,sFAGAA,oFAIHA,+HACGA,uFAQPA,sDAEAA,2DAFAA,wCACAA,qCAAMA,sBAAqBA,2BAC3BA,4FAFIA,uEACEA,oEAC0CA,qECnF5C,SA6BJtC,YACmB04B,EACAj2B,EACAq0B,EACA72B,EACAyC,GAJArC,YACAA,cACAA,iCACAA,0BACAA,yBA5BTA,2BAAwB,IAAIqM,eAC5BrM,uBAAoB,IAAIqM,eAOlCrM,qBAAkB,WAKlBA,kBAAeq1B,KAiBbr1B,KAAKs4B,UAAW,EAChBt4B,KAAKD,QAAUC,KAAKJ,mBAAmBG,QACvCC,KAAKu4B,gBAAkBv4B,KAAKD,QAAQkP,eACpCjP,KAAKyC,MAAQzC,KAAKJ,mBAAmB6C,MACrCzC,KAAK6yB,QAAUzyB,YAEf+C,OAAWq1B,YAAc,KACvBx4B,KAAKy4B,YAAa,EAClBz4B,KAAK04B,aAAc,IAEnB14B,KAAKy4B,YAAa,EAClBz4B,KAAK04B,aAAc,GAIvBva,WACEne,KAAK24B,YAAY,MACjB34B,KAAK44B,aAGPxJ,cACMpvB,KAAK64B,oBACP74B,KAAK64B,mBAAmBxJ,cAEtBrvB,KAAK84B,gCACP94B,KAAK84B,+BAA+BzJ,cAIxC0J,qBAC2B,oBAAbC,SAA4B1uB,aAAa2uB,eAC/Cj5B,KAAKk5B,kBAAoBl5B,KAAKk5B,iBAAiBC,gBACjDn5B,KAAKk5B,iBAAiBC,cAAcC,UAAY9uB,aAAa2uB,eAMnEI,SAAS1T,GACF3lB,KAAKq4B,KAAKc,cAAcG,SAAS3T,EAAM4T,SAC1Cv5B,KAAKw5B,kBAAkBhtB,MAAK,GAKhCitB,SAAS9T,GACP3lB,KAAKo5B,UAAap5B,KAAKq1B,aAAaruB,oBAAuB2e,EAAM+T,WAAWN,UAAY,GAAK,EACpE,oBAAbJ,SACV1uB,aAAaqnB,QAAQ,gBAAiBhM,EAAM+T,WAAWN,WAK3DO,SAAShU,GACHxiB,OAAOq1B,YAAc,KACvBx4B,KAAKy4B,YAAa,EAClBz4B,KAAK04B,aAAc,IAEnB14B,KAAKy4B,YAAa,EAClBz4B,KAAK04B,aAAc,GAIvBE,aACE54B,KAAK64B,mBAAqB74B,KAAKoC,OAAOw3B,OAAOxQ,UAAUze,IACrD,GAAIA,aAAoBkvB,KAAe,CACrC,MAAMt3B,EAAQoI,EAASzH,IAAIsc,UAAU,EAAG,GACxCxf,KAAK24B,YAAYp2B,MAIrBvC,KAAK84B,+BAAiC94B,KAAKJ,mBAAmB2M,0BAA0B6c,UAAUze,IAEhG3K,KAAK24B,YADa34B,KAAKoC,OAAOc,OAKlCy1B,YAAYp2B,yBACI,WAAVA,EACFvC,KAAK85B,MAAQC,IAEc,QAAvB3R,OAAKxoB,0BAAkBmB,eAAEH,qBAA0E,MAAT,QAA3C6nB,EAAuB,QAAvBC,OAAK9oB,0BAAkB0B,eAAEV,0BAAkBY,eAAE0H,KACpC,KAAX,QAA3C4f,EAAuB,QAAvBlT,OAAKhW,0BAAkB6B,eAAEb,0BAAkBoY,eAAEpX,QAC/C5B,KAAK85B,MAAQE,IAG2C,KAAX,QAA3C/Q,EAAuB,QAAvBC,OAAKtpB,0BAAkBqZ,eAAErY,0BAAkBuY,eAAEvX,QAC/C5B,KAAK85B,MAAQG,MAGqB,QAAhCxoB,EAAuB,QAAvByoB,OAAKt6B,0BAAkB2Z,eAAExZ,eAAOyZ,eAAExW,eAAgBC,0BACpDjD,KAAK85B,MAAQK,IAMrBC,mBAEIp6B,KAAKq6B,gBADsB,aAAzBr6B,KAAKq6B,gBACgB,SAEA,WAI3BC,iBACEt6B,KAAKu6B,sBAAsB/tB,MAAK,GAChCxM,KAAKo5B,UAAY,EACjBp5B,KAAKs4B,UAAYt4B,KAAKs4B,SAIxBkC,sBAAsBC,EAAaC,EAASC,GAC1C,UAAWC,KAAQF,EACbE,IAASH,IACXG,EAAK/3B,MAAQ,YAIf43B,EAAY53B,MADY,WAAtB43B,EAAY53B,OAAuB83B,EAAOE,WAAaJ,EAAY53B,MACjD,WAEA,SAIxBozB,gBAEE,OADAj2B,KAAKyC,MAAQzC,KAAKJ,mBAAmB6C,QAChCzC,KAAKyC,MAMZq4B,aAAaF,GACP56B,KAAKQ,sBAAsBo6B,EAAKn6B,aAClCT,KAAKoC,OAAOM,SAAS,CAACk4B,EAAK13B,MAG3BlD,KAAK+6B,+BAA+BH,GAIxCI,4BAA4BrD,GAE1B,IAAIsD,GAAa,EAGjB,QAASplB,EAAI,EAAGA,EAAI8hB,EAAQhmB,OAAQkE,IAGlC,GAAI7V,KAAKqC,kBAAkB7B,sBAFXm3B,EAAQ9hB,GAEiCpV,aAAc,CACrEw6B,GAAa,EACb,MAIJ,OAAOA,EAGTz6B,sBAAsBC,GACpB,OAAOT,KAAKqC,kBAAkB7B,sBAAsBC,GAGtDQ,qBAAqBR,GACnB,OAAOT,KAAKqC,kBAAkBpB,qBAAqBR,GAGrDs6B,+BAA+BH,GAE3B56B,KAAKy2B,0BAA0BvX,UAD7B0b,EAAKn6B,YACkC,CAAEy2B,OAAQ0D,EAAKn6B,aAIf,CAAEy2B,OADvB,SAAW0D,EAAKpK,QAKxClwB,iBAAiBR,GACf,OAAOE,KAAKqC,kBAAkB/B,iBAAiBR,GAGjDo7B,uBAAuBvD,GAErB,IAAIsD,GAAa,EAGjB,QAASplB,EAAI,EAAGA,EAAI8hB,EAAQhmB,OAAQkE,IAGlC,GAAI7V,KAAKqC,kBAAkB/B,iBAFXq3B,EAAQ9hB,GAE4B/V,UAAW,CAC7Dm7B,GAAa,EACb,MAKJ,OAAOA,EAGTE,cACE,IAAIz6B,EAAU,GACd,MAAME,EAAqBZ,KAAKJ,mBAAmBgB,mBAEnD,OACEF,EADEE,GAAsBA,EAAmBuyB,SAAWvyB,EAAmBuyB,QAAQxhB,OAAS,GAAK/Q,EAAmBE,aAAaE,MAAMo6B,cAC3Hx6B,EAAmBuyB,QAEnB,mCAGLzyB,mECnQPuB,6CACEA,qGAA+Bo5B,EAA/B,2BAA+BA,yBAA/Bp5B,CAA4D,sEACrCssB,EADqC,2BACrCA,0BADvBtsB,CAA4D,2EAEhCq5B,EAFgC,2BAEhCA,gCAG9Br5B,wEAFEA,wIAIFA,8CACEA,+FAAyBs0B,EAAzB,2BAAyBA,4BAAzBt0B,CAAyD,oEACpC81B,EADoC,2BACpCA,yBAIvB91B,wEAFEA,uFAA8D,iFAY9DA,gFDVOs5B,IAAgBt5B,6OAAhBs5B,GAAgBxc,qFAIhByX,GAA2B,wTAJ3BzQ,gBAAgB,6DAAhBA,gBAAgB,4BAAhBA,gBAAgB,w4EDlC7B9jB,kDA8FAA,yFAoBAA,4FAlHeA,+bCuBD,EACVgvB,QAAQ,iBAAkB,IACxBpuB,MAAM,YAAUquB,MAAM,CAAEsK,OAAQ,IAAKC,SAAU,SAAUC,QAAS,cAClE74B,MAAM,cAAYquB,MAAM,CAAEsK,OAAQ,MAAOC,SAAU,SAAUC,QAAS,cACtE74B,MAAM,YAAUquB,MAAM,CAAEsK,OAAQ,IAAKC,SAAU,SAAUC,QAAS,YAClEvK,QAAW,uBAAuBC,QAAQ,SAC1CD,MAAW,wBAAsBC,MAAQ,eAOlCtF,QAAVC,WAAU4P,mgBClCX15B,sCAkBEA,gDAQAA,iDAQAA,sCAQEA,mDACFA,uEAxCAA,geAoBGA,kFAMAA,sHAQDA,iMAKgBA,iGAGpBA,yCCjCI,SAUJtC,YACmByC,EACAxC,EACA4xB,EACAc,EACAsJ,GAJA57B,cACAA,0BACAA,gBACAA,oBACAA,sBAEjBA,KAAK67B,aAAe77B,KAAKoC,OAAOw3B,OAAOxQ,UAAWnW,IAC5CA,aAAa6oB,MACX34B,OAAOq1B,WAAa,MACtBx4B,KAAKq1B,aAAaptB,0BAA2B,KAKnDjI,KAAKJ,mBAAmBmO,+BACxB/N,KAAKJ,mBAAmBkO,+BACxB9N,KAAKJ,mBAAmBoO,6BAG1BmQ,WAAQ,eACNne,KAAKq1B,aAAeA,KAEhBr1B,KAAKJ,mBAAmBgB,oBAAsBZ,KAAKJ,mBAAmBG,UAExEC,KAAKsoB,QAAQC,SACbY,OACE,CACEnpB,KAAK47B,eAAenvB,YAAuD,QAA3Cic,EAAuB,QAAvBN,OAAKxoB,0BAAkBmB,eAAEH,0BAAkBU,eAAE4H,IAC7ElJ,KAAKsyB,aAAapjB,WAAWlP,KAAKJ,mBAAmBG,QAAQmJ,MAE/DkgB,UALF,0BAKY,UAAMze,GAEhB,MAAMoxB,EAA4BpxB,EAAS,GAAGsE,eAAeuC,KAAKC,GAAKA,EAAEnI,QAAQJ,KAAOyB,EAAS,GAAGzB,IAEpG,GAAI6yB,EAA2B,CAC7B,MAAMltB,UAA+BmtB,MAAc3T,EAAKiK,aAAazjB,uBAAuBwZ,EAAKzoB,mBAAmBG,QAAQmJ,GAAI6yB,EAA0B7yB,KAEtJ2F,IACFlE,EAAS,GAAGxK,WAAmC,MAAtB0O,OAAsB,EAAtBqa,EAAwB/oB,WACjDwK,EAAS,GAAGopB,SAAiC,MAAtBllB,OAAsB,EAAtBqa,EAAwB6K,SAC/CppB,EAAS,GAAGqpB,WAAmC,MAAtBnlB,OAAsB,EAAtBqa,EAAwB8K,WACjDrpB,EAAS,GAAG1K,WAAmC,MAAtB4O,OAAsB,EAAtBqa,EAAwBjpB,WAEjDqK,aAAaqnB,QAAQ,kBAAyC,MAAtB9iB,OAAsB,EAAtBqa,EAAwB2K,cAChEvpB,aAAaqnB,QAAQ,mBAA0C,MAAtB9iB,OAAsB,EAAtBqa,EAAwB4K,YACjEzL,EAAKzoB,mBAAmBoO,8BAI5B1D,aAAaqnB,QAAQ,+BAAgCvnB,KAAKwnB,UAAUjnB,EAAS,KAC7EL,aAAaqnB,QAAQ,oBAAqBvnB,KAAKwnB,UAAUjnB,EAAS,KAClE0d,EAAKzoB,mBAAmBmO,+BACxBsa,EAAKzoB,mBAAmBkO,+BAgBxBua,EAAKC,QAAQkD,SA3Cf,wDAiDJ4D,cACMpvB,KAAK67B,cACP77B,KAAK67B,aAAaxM,cAKtB4M,iBACE,MAAMC,EAAM3L,SAAS4L,gBAGnBn8B,KAAKo8B,eAFMj5B,OAAOk5B,aAAeH,EAAI9C,YAAc8C,EAAII,WAAa,GAC5D,EAQZC,0BAEIv8B,KAAKq1B,aAAaruB,qBADhBhH,KAAKq1B,aAAaruB,oBAQxBw1B,uBAEIx8B,KAAKq1B,aAAa9tB,2BADhBvH,KAAKq1B,aAAa9tB,0BAQxBk1B,sBACMz8B,KAAKq1B,aAAaptB,2BAChBjI,KAAKq1B,aAAantB,8BACpBlI,KAAKq1B,aAAantB,+BAAgC,EAElDlI,KAAKq1B,aAAaptB,0BAA2B,GAMnDy0B,wBACM18B,KAAKq1B,aAAaptB,yBACpBjI,KAAKq1B,aAAaptB,0BAA2B,GAE7CjI,KAAKq1B,aAAaptB,0BAA2B,EAC7CjI,KAAKq1B,aAAantB,+BAAgC,GAKtDy0B,2BACM38B,KAAKq1B,aAAauH,gCAChB58B,KAAKq1B,aAAawH,mCACpB78B,KAAKq1B,aAAawH,oCAAqC,EAEvD78B,KAAKq1B,aAAauH,+BAAgC,GAMxDE,6BACM98B,KAAKq1B,aAAauH,8BACpB58B,KAAKq1B,aAAauH,+BAAgC,GAElD58B,KAAKq1B,aAAauH,+BAAgC,EAClD58B,KAAKq1B,aAAawH,oCAAqC,GAI3D5G,gBACE,QAAOj2B,KAAKJ,mBAAmB6C,8CAnKtBs6B,IAAY96B,uOAAZ86B,GAAYhe,4GAAZgH,sBAAsB,owBDdnC9jB,yCAEEA,0CA6CAA,mDACFA,2BACAA,2DA/CQA,0EA6CUA,wIC/BL6pB,QAAVC,WAAUiR,mFCRN,IAAMC,GAAb,MAAM,QAEJt9B,YACmB0yB,sBAGnB6K,UAAUC,EAA2BC,GAEnC,OAAOA,EAAKC,OAAOF,GAAStxB,MAAKyxB,QAAM3X,IAErC,GAAIA,aAAiB4X,KAAc,CAIjC,MAAMC,EAASlzB,aAAaC,QAAQ,oBACpC,GAAIizB,EAAQ,CAEV,MAAMC,EAAW9Z,GAAO6Z,GACpB7Z,KAAS+Z,QAAQD,IACnBz9B,KAAKqyB,YAAYzjB,QAAO,MAK5B+uB,IAEEA,aAAeC,MACE,MAAfD,EAAI3yB,QAENhL,KAAKqyB,YAAYzjB,QAAO,oDA7BrBquB,GAAch7B,6EAAdg7B,EAAc/6B,QAAd+6B,EAAc,YAAdA,GAAb,oBCoBAY,QAAmBC,KAAU,MA2CtB,IAAMC,GAAb,MAAM,sDAAOA,qDAASC,WAFRjB,0DAND,CACTkB,MACA,CAAEja,QAASka,YAAWha,SAAU,MAChC,CAAEF,QAASma,KAAmBC,SAAUnB,GAAgBoB,OAAO,IAChEC,SApBQ,CACPC,KACAC,MACAC,KACA7a,eACA+J,GACA+Q,KACAvb,gBACA+B,gBACAK,MACAoZ,cAAuB,CACrBC,MAAO,WACPC,sBAAsB,QAYfd,GAAb,GCjEIr0B,oBACFo1B,oBAGFC,OAAyBC,gBAAgBjB,IACtCkB,MAAMtB,GAAOvyB,QAAQP,MAAM8yB,qBCX9B,OACA,aACA,gBACA,WACA,eACA,kBACA,gBACA,mBACA,gBACA,mBACA,gBACA,mBACA,gBACA,mBACA,gBACA,mBACA,cACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,mBACA,gBACA,aACA,gBACA,YACA,eACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,mBACA,gBACA,mBACA,gBACA,aACA,gBACA,aACA,gBACA,gBACA,mBACA,gBACA,mBACA,eACA,kBACA,gBACA,mBACA,gBACA,mBACA,gBACA,mBACA,gBACA,mBACA,gBACA,mBACA,aACA,gBACA,aACA,gBACA,mBACA,gBACA,mBACA,gBACA,mBACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,cACA,iBACA,aACA,gBACA,aACA,gBACA,mBACA,gBACA,mBACA,gBACA,WACA,cACA,aACA,gBACA,aACA,gBACA,YACA,eACA,mBACA,sBACA,kBACA,qBACA,aACA,gBACA,aACA,gBACA,WACA,cACA,aACA,gBACA,aACA,gBACA,gBACA,mBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,mBACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,mBACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,mBACA,gBACA,aACA,gBACA,iBACA,oBACA,gBACA,mBACA,aACA,gBACA,aACA,gBACA,mBACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,kBACA,qBACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,cACA,iBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,gBACA,mBACA,cACA,iBACA,aACA,gBACA,cACA,iBACA,cACA,kBACA,qBACA,iBACA,gBACA,mBACA,aACA,gBACA,aACA,gBACA,aACA,kBACA,qBACA,gBACA,aACA,gBACA,mBACA,sBACA,aACA,gBACA,gBACA,mBACA,gBACA,mBACA,gBACA,mBACA,gBACA,oBAIA,cACA,WACA,YAEA,cACA,cACA,8CACA,gCACA3qB,EAEA,YAEAksB,kBACA,uBAEAA,YACAC,YACAD","names":["PermissoesService","constructor","localStorageObject","verificarPermissaoSomenteVisualizar","moduloId","usuario","this","superAdmin","permissao","permissoes","constants","verificarPermissaoAdminModulo","podeExibirModulo","g","podeExibirModuloPlano","moduloPlano","retorno","C","empresaSelecionada","s","planoEmpresa","_a","plano","isModuloPlanoVisivel","quantidadeAcessoPlanoEmpresa","l","a","P","_b","quantidadeAcesso","_c","_d","planoEmpresaItem","forEach","tipo","quantidadeFichaTecnicaPlanoEmpresa","quantidadeFichaTecnica","quantidadeMapaProducaoPlanoEmpresa","quantidadeMapaProducao","i0","factory","AuthGuard","router","permissoesService","canLoad","route","segments","token","navigate","canActivate","routeAc","state","data","redirecionarRotaRaizPermissao","tipoUsuario","TipoUsuarioEnum","url","window","location","reload","PERMISSOES","SEM_ACESSO","SOMENTE_VISUALIZAR","CONTROLE_TOTAL","ADMIN_MODULO","MODULOS","ALIMENTOS","MATERIAIS_DIVERSOS","FICHAS_TECNICAS","PRODUTO","CARDAPIO","PEDIDO","MAPA_PRODUCAO","MOVIMENTACOES","INVENTARIO","ORDEM_SAIDA","CONFIGURACOES","PAINEL_ADMIN","COMPRAS","EXECUCAO","EXPEDICAO","FORNECEDORES","CLIENTES","TIPOS_CLASSES","RECEITAS_CALCULADAS","RELATORIOS","FINANCEIRO_MOVIMENTACOES","FINANCEIRO_CATEGORIAS","FINANCEIRO_CENTROS_DE_CUSTO","modulosPlanos","moduloFinanceiroMovimentacoes","moduloFinanceiroCategorias","moduloFinanceiroCentroCusto","moduloAlimento","moduloMaterialDiverso","moduloProduto","moduloCardapio","moduloPedidos","moduloFornecedores","moduloClientes","moduloFichaTecnica","submoduloFichaTecnicaBanco","submoduloFichaTecnicaExcel","submoduloFichaTecnicaImpressoes","moduloTiposClasses","submoduloTiposClassesMotivo","submoduloTiposClassesGrupoClientes","submoduloTiposClassesCategoriaItemCardapio","moduloMapaProducao","moduloReceitasCalculadas","moduloExecucao","moduloExpedicao","moduloMovimentacao","moduloInventario","moduloListaCompras","moduloGerarCompras","moduloRelatorioCompras","moduloDashboard","pageSidebarMinified","pageContentFullHeight","pageContentFullWidth","pageContentInverseMode","pageWithFooter","pageWithoutSidebar","pageSidebarRight","pageSidebarRightCollapsed","pageSidebarTwo","pageSidebarWide","pageSidebarTransparent","pageSidebarLight","pageTopMenu","pageEmpty","pageBodyWhite","pageMegaMenu","pageLanguageBar","pageMobileSidebarToggled","pageMobileSidebarFirstClicked","pageMobileSidebarRightToggled","pageMobileSidebarRightFirstClicked","pageMobileTopMenuToggled","pageMobileMegaMenuToggled","AdminService","BaseService","http","super","obterListaPaginadaEmpresa","filtroEmpresa","post","urlService","ObterAuthHeaderJson","obterListaPaginadaEmpresasPrincipais","obterEmpresaPorId","id","get","cadastrarCliente","editarCliente","empresa","put","editarClientePlanoBase","obterFiliaisPorId","environment","ObterHeaderJson","headers","HttpHeaders","Authorization","obterTokenUsuario","ObterAuthHeaderString","responseType","obterEmpresaSelecionada","Empresa","JSON","parse","localStorage","getItem","obterUsuario","Usuario","extractData","response","serviceError","error","errMsg","Response","status","statusText","message","toString","console","Error","obterPlanoEmpresa","PlanoEmpresa","ConsultaCepService","toastr","getEnderecoCep","cep","apiURL","pipe","retry","catchError","handleError","ErrorEvent","warning","throwError","EmpresaService","EventEmitter","notificarAlterarEmpresa","notificadorAlterarEmpresa","emit","obterPeloId","alterar","obterEmpresasMesmoGrupo","alterarCustoMedioAtivo","custoMedioAtivo","empresaId","alterarOrdemSaidaPorServico","ordemSaidaPorServico","obterListaEmpresaVinculadaModuloFinanceiro","adicionarEmpresaModuloFinanceiro","empresaIdModuloFinanceiro","empresaIdVincular","removerEmpresaModuloFinanceiro","empresaIdDesvincular","exclusaoFisicaEmpresaPorId","delete","LocalStorageObject","notificarAlterarUsuario","notificadorAlterarUsuario","notificarAlterarToken","notificadorAlterarToken","popularVariavelGlobalUsuario","popularVariavelGlobalEmpresa","popularVariavelGlobalToken","validarTipoUsuarioResponsavel","LoginService","login","email","senha","cadastrar","confirmacaoCadastro","dadosConfirmacaoCadastro","reenviarConfirmacaoCadastro","alterarSenha","recuperarSenha","logout","tokenPermissoesEmpresa","usuarioId","usuarioEmpresaId","alterarEmpresaPrincipal","usuarioEmpresa","obterPorId","obterPeloEmail","gerarLinkRegistrarClienteResponsavel","cadastrarUsuarioCliente","refreshToken","PlanejamentoService","obterLista","filtroPlanejamento","FiltroPlanejamento","nome","obterPlanejamento","calcularIngredientesFichaTecnicaPlanejamentoDia","cadastrarListaPlanejamento","listaPlanejamento","editarListaPlanejamento","obterNutrientesPlanejamento","duplicarPlanejamentos","duplicarRangePlanejamentos","excluirPlanejamentosDia","calcularNdpCalRefeicao","obterPlanejamentoMapaProducao","obterPlanejamentoMapaProducaoCusto","UsuarioEmpresaService","obterListaPaginadaEmpresasDoUsuario","filtro","obterListaPaginadaUsuariosDaEmpresa","obterListaUsuariosDaEmpresa","incluir","membro","excluir","EstoqueHelperService","nomeItemNotaFiscalUnidadeCompra","nomeItemNotaFiscal","itemNotaFiscal","unidadeCompraId","unidadeCompraSelecionada","alimento","unidadeCompra","find","x","materialDiverso","length","nomeUnidadeCompraSelecionada","itemMovimentacao","calcularValorTotalItemMovimentacao","listaItemMovimentacao","valorTotal","item","calcularQuantidades","itemOrdemSaida","calcularCampoQuantidadeEstoque","calcularCampoQuantidadePlanejada","quantidadeTotal","quantidadePlanejadaTemp","quantidadeEstoque","calcularUnidadeCompraQuantidadeEstoque","quantidadeUnidadeCompra","unidadeQuantidadeReferencia","quantidadeReferencia","calcularUnidadeCompraQuantidadePlanejada","quantidadePlanejada","nomeItemMovimentacao","r","e","fichaTecnica","nomeMovimentacaoTransferenciaItem","movimentacaoTransferenciaItem","calcularCustoFichaTecnica","unidadeQuantidadeTotal","custoTotal","quantidadeTotalEmGramas","quantidadePorcaoEmGramas","unidadeQuantidadePorcao","quantidadePorcao","converterQuantidadeTotalPorUnidade","unidade","truncarValor","valor","Math","trunc","campoPreenchido","verificarValorMaiorQueEstoque","calcularQuantidadeTotalItemMovimentacao","alimentoId","materialDiversoId","fichaTecnicaId","verificarValorMaiorQueEstoqueMovimentacaoTransferenciaItem","calcularQuantidadeTotalMovimentacaoTransferenciaItem","converterParaGrama","unidadeItem","MapaProducaoHelperService","today","dateOnly","Date","beginningOfPeriod","d","periodUom","startDow","getFullYear","getMonth","beginningOfWeek","daysOfWeek","weekStart","Array","fill","map","_","i","addDays","days","getDate","getHours","getMinutes","getSeconds","supportsIntl","Intl","getFormattedWeekdayNames","locale","format","startingDayOfWeek","formatter","DateTimeFormat","weekday","getDefaultBrowserLocale","navigator","languages","language","toLowerCase","getDay","endOfWeek","d2","setHours","incrementPeriod","uom","count","dayDiff","d1","startDate","endDate","setUTCHours","getTime","isSameMonth","getFormattedMonthNames","month","formattedPeriod","monthNames","singleYear","singleMonth","push","join","nomeItemPlanejamento","planejamento","produto","nomeClassePlanejamento","tipoVisivel","classe","classeMaterialDiverso","f","_e","_f","k","_g","tipoPreparacao","b","v","_h","_j","produtoId","formatarTelefone","replace","calcularCustoPercapita","filtroTipoValor","pesoRendimento","numeroComensais","unidadePesoRendimento","rendimentoTotal","unidadeRendimentoTotal","numeroPorcao","numeroPorcoes","pesoPerCapita","unidadePesoPerCapita","custoMedio","precoQuilo","B","_k","L","_l","U","_m","precoUnidade","quantidadeMaterialDiverso","F","_o","produtoItem","W","_p","S","K","j","Q","N","V","X","Z","J","calcularSomaCustoTotalPercapita","listaPlanejamentoTemp","planejamentoTemp","calculo","calcularRendimento","calcularRendimentoProdutoItem","calcularPerCapita","unidadeMaterialDiverso","quantidadeMaterialDiversoPerCapita","unidadeMaterialDiversoPerCapita","calcularTotalMaterialDiverso","calcularPerCapitaProdutoItem","toKj","kcal","formatarDecimal","decimalCount","decimal","thousands","abs","isNaN","negativeSign","parseInt","Number","toFixed","substr","slice","log","converterUnidadeMedida","value","unidadeMedida","liquido","calcularUnidadeCompra","round","calcularCampoQuantidadeEstoqueFichaTecnica","TipoRefeicao","InputComponent","ngOnInit","ngAfterContentInit","input","model","control","undefined","hasSuccess","valid","dirty","touched","hasError","invalid","selectors","NgModel","FormControlName","notificar","dados","notificador","NomeReduzidoComponent","nomeReduzido","tamanhoNome","substring","DecimalPipe","transform","digits","sufix","prefix","skipZero","qtdNaoSignificativa","emptyDesc","signed","fixed","parseFloat","static","mainArr","searchText","filter","itemObj","searchInObj","prop","hasOwnProperty","searchInString","isArray","searchInArray","arr","includes","floor","random","S4","array","indexOf","splice","text","currentVal","decimalDigits","decimalSeparator","miliarSeparator","num","masked","diff","fNum","Utils","startsWith","pure","UnidadeMedidaPipe","CustomCurrencyMaskConfig","align","allowNegative","precision","suffix","DropzoneConfig","maxFilesize","acceptedFiles","NgxbootstrapModule","AccordionModule","BsDatepickerModule","AlertModule","BsDropdownModule","PaginationModule","TabsModule","ModalModule","ProgressbarModule","TooltipModule","PopoverModule","SortableModule","ButtonsModule","PipesModule","BlockUiTemplateComponent","moment","SharedModule","ngModule","providers","ModalBloqueioPlanoService","provide","CURRENCY_MASK_CONFIG","useValue","DROPZONE_CONFIG","RouterModule","CommonModule","FormsModule","ReactiveFormsModule","MomentModule","CurrencyMaskModule","NgSelectModule","ColorGithubModule","ColorCircleModule","DropzoneModule","TagInputModule","FileSaverModule","UiSwitchModule","NgxChartsModule","ToastrModule","NgxMaskModule","BlockUIModule","template","DpDatePickerModule","NgxTreeDndModule","ColorPickerModule","TableComponent","alterarPagina","event","itemsPerPage","itensPorPagina","alterouPagina","ctx","production","api","blog","app","imagemPadrao","backgroundLogoRetrato","backgroundLogoPaisagem","DashboardService","obterItensEstoqueMinimo","filtroDashboard","obterItensEstoqueProximoValidade","obterListasDeComprasPendentes","obterItensOrdemSaida","filtroOrdemSaida","obterListaMapaProducao","filtroMapaProducao","ctx_r29","ctx_r32","localeService","dashboardService","planejamentoService","mPHelperService","estoqueHelperService","date","datasDesabilitadas","use","setDate","toLocaleDateString","itensEstoqueMinimo","itensEstoqueProximoVal","itensListaCompra","itensMapaDeProducao","ordemSaida","OrdemSaida","qtdFichaTecnica","listaTipoRefeicao","t","c","blockUI","start","FiltroDashboard","m","p","observables","of","FiltroOrdemSaida","E","dataPlanejamento","FiltroMapaProducao","I","A","forkJoin","subscribe","itensEstoqueProximoValidade","listasDeCompras","listaOrdemSaida","listaMapaProducao","listaCarregadaSucessoOrdemSaida","mapaProducaoSelecionadoId","mapaProducaoSelecionado","reset","resultado","quantidadeSaida","unidadeQuantidadeSaida","quantidadeCozinha","unidadeCompraPrincipal","principal","unidadeQuantidadeCozinha","selecionado","bloqueado","totalRetirado","TotalEstoqueMenorQuantidadeTotal","totalEstoqueZero","selecionarMapaProducao","listaMapaProducaoId","dataInicio","dataFim","resultadoitensPlanejamentos","itensPlanejamentos","tipoRefeicaoNaLista","tipoRefeicaoId","classeTipoPreparacaoPlanejamento","classeNaLista","classeTipoPreparacaoPlanejamentoTemp","ClasseTipoPreparacaoPlanejamento","tipoRefeicaoPlanjamento","TipoRefeicaoPlanejamento","tipoRefeicao","stop","redirecionarMapaProducao","navigateByUrl","mapaProducaoId","caracteres","HomeComponent","__decorate","BlockUI","$","NotFoundComponent","routes","path","component","loadChildren","Promise","then","ConfiguracaoModule","AuthModule","AlimentosModule","MateriaisDiversosModule","FichasTecnicasModule","ProdutoModule","CardapioModule","MapaProducaoModule","ComprasModule","EstoqueModule","AdminModule","PainelAdminModule","UsuarioModule","ExecucaoModule","RelatoriosModule","ExpedicaoModule","PedidoModule","FinanceiroModule","ClienteResponsavelModule","AppRoutingModule","NotificacaoService","notificarLoop","notificadorLoop","notificarComanda","notificadorComanda","notificarComandaFechada","notificadorComandaFechada","filtroNotificacao","inserir","notificacao","marcarTodasNotificacoesComoVisualizada","ctx_r7","ctx_r10","notificacaoService","suppressScrollX","maxScrollbarLength","Audio","FiltroNotificacao","listaNotificacao","criarFavicon","requestLoopNotificacao","obterListaLoop","obterListaNotificacao","setTimeout","ngOnDestroy","unsubscribe","playAudio","onEndAnimate","animacaoAtiva","iconeAnimado","toState","fav","favicon","position","animation","bgColor","fontFamily","resetarFavicon","abrirDropDownNotificacao","tempoPassouNotificacao","tempoPassou","dataCadastro","badge","document","title","excluirNotificacao","success","visualizarNotificacao","visualizado","movimentacaoId","movimentacaoTransferenciaId","fromNow","NotificacaoComponent","trigger","style","transition","animate","keyframes","transformOrigin","nn","intercom","tokenExpirou","removeItem","setItem","stringify","AuthService","Y","UtilService","setCache","key","removeCache","getCache","ctx_r14","authService","loginService","authGuard","adminService","usuarioEmpresaService","utilService","backdrop","ignoreBackdropClick","modulos","listaUsuarioEmpresa","ListaPaginadaUsuarioEmpresa","filtroUsuarioEmpresa","FiltroUsuarioEmpresa","usuarioComFoto","urlFoto","selecionarEmpresa","fecharModalTrocarEmpresa","responseTokenPermissoesEmpresa","dataAtual","dataTerminoDate","dataTermino","planoBase","carregarTelaInicial","falhou","access_token","expires_in","perfilId","perfilNome","abrirModalListaEmpresa","pagina","tamanhoPagina","obterListaEmpresa","listaPaginadaUsuariosDaEmpresa","itens","staticModalEscolherEmpresa","show","hide","buscarPorNome","page","ctx_r12","ctx_r13","ctx_r15","ctx_r17","ctx_r19","MenuUsuarioComponent","tn","HeaderComponent","activatedRoute","pageSettings","mobileSidebarToggle","toggleMobileSidebar","mobileRightSidebarToggle","toggleMobileRightSidebar","toggleSidebarRight","toggleSidebarRightCollapsed","mobileTopMenuToggle","mobileMegaMenuToggle","collapse","isExpanded","toggle","usuarioLogado","rotaAdmin","firstChild","urlPath","ModuloPlanoPipe","args","ctx_r9","ModalBloqueioPlanoComponent","modalBloqueioPlanoService","modalService","class","nomeModuloPlano","obterPlanoEmpresaSelecionada","abrirModal","modalMensagemPlano","modalMapaProducao","texto","modulo","mensagemCadastroConta","bsModalRef","config","fecharModal","TemplateRef","isTitle","icon","caret","submenu","Yt","$t","MenuEmpresaComponent","ctx_r11","ctx_r34","menu_r21","ctx_r48","ctx_r54","ctx_r63","eRef","isExpand","usuarioEmpresas","innerWidth","mobileMode","desktopMode","validarMenu","subscribes","subscriptionRouter","subscriptionEmpresaSelecionada","ngAfterViewChecked","Storage","sidebarScroll","sidebarScrollbar","nativeElement","scrollTop","clickout","contains","target","hideMobileSidebar","onScroll","srcElement","onResize","events","NavigationEnd","menus","pageMenuAdmin","pageMenus","pageMenuFinanceiro","z","pageMenuClienteResponsavel","toggleNavProfile","navProfileState","toggleMinified","toggleSidebarMinified","expandCollapseSubmenu","currentMenu","allMenu","active","menu","isActive","navigateMenu","abrirModalModuloBloqueadoPlano","podeExibirGrupoModulosPlano","podeExibir","podeExibirGrupoModulos","logoEmpresa","impressaoLogo","ctx_r5","ctx_r8","SidebarComponent","height","overflow","display","en","empresaService","subscription","NavigationStart","usuarioEmpresaSelecionada","lastValueFrom","onWindowScroll","doc","documentElement","pageHasScroll","pageYOffset","clientTop","onToggleSidebarMinified","onToggleSidebarRight","onHideMobileSidebar","onToggleMobileSidebar","onHideMobileRightSidebar","pageMobileRightSidebarToggled","pageMobileRightSidebarFirstClicked","onToggleMobileRightSidebar","AppComponent","on","JwtInterceptor","intercept","request","next","handle","tap","HttpResponse","expira","dtExpira","isAfter","err","HttpErrorResponse","registerLocaleData","locatePt","AppModule","bootstrap","BsModalRef","LOCALE_ID","HTTP_INTERCEPTORS","useClass","multi","imports","BrowserModule","BrowserAnimationsModule","HttpClientModule","NgbModule","IntercomModule","appId","updateOnRouterChange","enableProdMode","__NgCli_bootstrap_1","bootstrapModule","catch","n","T"],"sources":["./src/app/core/auth/permissoes.service.ts","./src/app/core/authentication/auth.guard.ts","./src/app/core/config/constants.ts","./src/app/core/config/page-settings.ts","./src/app/core/services/admin.service.ts","./src/app/core/services/base.service.ts","./src/app/core/services/consulta-cep.service.ts","./src/app/core/services/empresa.service.ts","./src/app/core/services/localStorageObject.service.ts","./src/app/core/services/login.service.ts","./src/app/core/services/planejamento.service.ts","./src/app/core/services/usuarioEmpresa.service.ts","./src/app/modules/estoque/estoque-helper.service.ts","./src/app/modules/estoque/ordem-saida/models/ordemSaida.ts","./src/app/modules/mapa-producao/mapa-producao-helper.service.ts","./src/app/modules/mapa-producao/models/classeTipoPreparacaoPlanejamento.ts","./src/app/modules/mapa-producao/models/tipoRefeicaoPlanejamento.ts","./src/app/shared/input/input.component.html","./src/app/shared/input/input.component.ts","./src/app/shared/modal-bloqueio-plano/modal-bloqueio-plano.service.ts","./src/app/shared/models/empresa.ts","./src/app/shared/models/enum/tipoUsuario.enum.ts","./src/app/shared/models/filtros/filtroMapaProducao.ts","./src/app/shared/models/filtros/filtroOrdemSaida.ts","./src/app/shared/models/filtros/filtroPlanejamento.ts","./src/app/shared/models/filtros/filtroUsuarioEmpresa.ts","./src/app/shared/models/planoEmpresa.ts","./src/app/shared/models/tipoRefeicao.ts","./src/app/shared/models/usuario.ts","./src/app/shared/nome-reduzido/nome-reduzido.component.html","./src/app/shared/nome-reduzido/nome-reduzido.component.ts","./src/app/shared/pipes/decimal.pipe.ts","./src/app/shared/utils/index.ts","./src/app/shared/pipes/unidadeMedida.pipe.ts","./src/app/shared/currency-mask-config/currency-mask-config.ts","./src/app/shared/dropzone-config/dropzone-config.ts","./src/app/shared/ngxbootstrap/ngxbootstrap.module.ts","./src/app/shared/pipes/pipes.module.ts","./src/app/shared/block-ui-template/block-ui-template.component.ts","./src/app/shared/block-ui-template/block-ui-template.component.html","./src/app/shared/shared.module.ts","./src/app/shared/table/table.component.ts","./src/app/shared/table/table.component.html","./src/environments/environment.prod.ts","./src/app/shared/models/filtroDashboard.ts","./src/app/core/services/dashboard.service.ts","./src/app/modules/home/home.component.html","./src/app/modules/home/home.component.ts","./src/app/core/not-found/not-found.component.ts","./src/app/core/not-found/not-found.component.html","./src/app/app-routing.module.ts","./src/app/shared/models/filtros/filtroNotificacao.ts","./src/app/core/services/notificacao.service.ts","./src/app/core/notificacao/notificacao.component.html","./src/app/core/notificacao/notificacao.component.ts","./src/app/shared/models/listas-paginadas/listaPaginadaUsuariosEmpresa.ts","./src/app/core/auth/auth.service.ts","./src/app/core/services/util.service.ts","./src/app/core/menu-usuario/menu-usuario.component.html","./src/app/core/menu-usuario/menu-usuario.component.ts","./src/app/core/header/header.component.html","./src/app/core/header/header.component.ts","./src/app/shared/pipes/moduloPlano.pipe.ts","./src/app/shared/modal-bloqueio-plano/modal-bloqueio-plano.component.html","./src/app/shared/modal-bloqueio-plano/modal-bloqueio-plano.component.ts","./src/app/core/config/page-menus.ts","./src/app/core/config/page-menu-admin.ts","./src/app/core/config/page-menu-financeiro.ts","./src/app/core/config/page-menu-cliente-responsavel.ts","./src/app/core/menu-empresa/menu-empresa.component.html","./src/app/core/menu-empresa/menu-empresa.component.ts","./src/app/core/sidebar/sidebar.component.html","./src/app/core/sidebar/sidebar.component.ts","./src/app/app.component.html","./src/app/app.component.ts","./src/app/core/auth/jwtinterceptor.ts","./src/app/app.module.ts","./src/main.ts","./node_modules/moment/locale|sync|/^/.*$"],"sourcesContent":["import { Injectable } from '@angular/core';\r\nimport constants from '../config/constants';\r\nimport pageMenus from '../config/page-menus';\r\nimport { LocalStorageObject } from '../services/localStorageObject.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class PermissoesService {\r\n\r\n constructor(\r\n private readonly localStorageObject: LocalStorageObject\r\n ) {\r\n }\r\n\r\n verificarPermissaoSomenteVisualizar(moduloId: string) {\r\n const usuario = this.localStorageObject.usuario;\r\n if (usuario) {\r\n if (usuario.superAdmin) { return false; }\r\n\r\n const permissao = usuario.permissoes[moduloId];\r\n const somenteVisualizar = permissao === constants.PERMISSOES.SOMENTE_VISUALIZAR;\r\n return somenteVisualizar;\r\n }\r\n }\r\n\r\n verificarPermissaoAdminModulo(moduloId: string) {\r\n const usuario = this.localStorageObject.usuario;\r\n if (usuario) {\r\n if (usuario.superAdmin) { return false; }\r\n\r\n const permissao = usuario.permissoes[moduloId];\r\n const adminModulo = permissao === constants.PERMISSOES.ADMIN_MODULO;\r\n return adminModulo;\r\n }\r\n }\r\n\r\n podeExibirModulo(moduloId: string | number) {\r\n\r\n // Se ainda não foi definido regras de permissão para esse menu, pode exibir\r\n if (!moduloId) { return true; }\r\n\r\n const usuario = this.localStorageObject.usuario;\r\n\r\n if (usuario?.superAdmin) { return true; }\r\n\r\n if (!usuario?.permissoes) { return false; }\r\n\r\n // Verificando e o modulo informado está na listas de permissões do usuário\r\n const permissao = usuario.permissoes[moduloId];\r\n\r\n const podeExibir = (permissao === constants.PERMISSOES.SOMENTE_VISUALIZAR || permissao === constants.PERMISSOES.CONTROLE_TOTAL || permissao === constants.PERMISSOES.ADMIN_MODULO);\r\n\r\n return podeExibir;\r\n }\r\n\r\n podeExibirModuloPlano(moduloPlano: string[]): boolean {\r\n let retorno = false;\r\n\r\n // SuperAdmin\r\n const usuario = this.localStorageObject.usuario;\r\n if (usuario?.superAdmin) { return true; }\r\n\r\n // Plano Empresa\r\n const empresaSelecionada = this.localStorageObject.empresaSelecionada;\r\n retorno = empresaSelecionada?.planoEmpresa?.plano[moduloPlano[0]] ? true : false;\r\n\r\n return retorno;\r\n }\r\n\r\n isModuloPlanoVisivel(moduloPlano: string[]): boolean {\r\n\r\n // SuperAdmin\r\n const usuario = this.localStorageObject.usuario;\r\n if (usuario?.superAdmin) { return true; }\r\n\r\n //Modulo Visivel\r\n if (this.podeExibirModuloPlano(moduloPlano)) {\r\n return true\r\n }\r\n else {\r\n if (constants.modulosPlanos[moduloPlano[0]][1] === 'invisivel') {\r\n return false\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n quantidadeAcessoPlanoEmpresa(): number {\r\n let retorno = 0;\r\n\r\n const empresaSelecionada = this.localStorageObject.empresaSelecionada;\r\n\r\n retorno = empresaSelecionada?.planoEmpresa?.plano?.quantidadeAcesso ?? 0;\r\n\r\n if (empresaSelecionada?.planoEmpresa?.planoEmpresaItem) {\r\n empresaSelecionada.planoEmpresa.planoEmpresaItem.forEach(planoEmpresaItem => {\r\n if (planoEmpresaItem.tipo === 1) {\r\n retorno += planoEmpresaItem.quantidadeAcesso ? planoEmpresaItem.quantidadeAcesso : 0;\r\n }\r\n });\r\n }\r\n\r\n return retorno;\r\n }\r\n\r\n quantidadeFichaTecnicaPlanoEmpresa(): number {\r\n let retorno = 0;\r\n\r\n const empresaSelecionada = this.localStorageObject.empresaSelecionada;\r\n\r\n retorno = empresaSelecionada?.planoEmpresa?.plano?.quantidadeFichaTecnica ?? 0;\r\n\r\n if (empresaSelecionada?.planoEmpresa?.planoEmpresaItem) {\r\n empresaSelecionada.planoEmpresa.planoEmpresaItem.forEach(planoEmpresaItem => {\r\n if (planoEmpresaItem.tipo === 2) {\r\n retorno += planoEmpresaItem.quantidadeFichaTecnica ? planoEmpresaItem.quantidadeFichaTecnica : 0;\r\n }\r\n });\r\n }\r\n\r\n return retorno;\r\n }\r\n\r\n quantidadeMapaProducaoPlanoEmpresa(): number {\r\n let retorno = 0;\r\n\r\n const empresaSelecionada = this.localStorageObject.empresaSelecionada;\r\n\r\n retorno = empresaSelecionada?.planoEmpresa?.plano?.quantidadeMapaProducao ?? 0;\r\n\r\n if (empresaSelecionada?.planoEmpresa?.planoEmpresaItem) {\r\n empresaSelecionada.planoEmpresa.planoEmpresaItem.forEach(planoEmpresaItem => {\r\n if (planoEmpresaItem.tipo === 3) {\r\n retorno += planoEmpresaItem.quantidadeMapaProducao ? planoEmpresaItem.quantidadeMapaProducao : 0;\r\n }\r\n });\r\n }\r\n\r\n return retorno;\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, CanLoad, Route, UrlSegment, Router } from '@angular/router';\r\nimport { Observable } from 'rxjs';\r\nimport { Empresa } from 'src/app/shared/models/empresa';\r\nimport { TipoUsuarioEnum } from 'src/app/shared/models/enum/tipoUsuario.enum';\r\nimport { Usuario } from 'src/app/shared/models/usuario';\r\nimport { PermissoesService } from '../auth/permissoes.service';\r\nimport { LocalStorageObject } from '../services/localStorageObject.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AuthGuard implements CanLoad, CanActivate {\r\n\r\n constructor(\r\n private readonly router: Router,\r\n private readonly permissoesService: PermissoesService,\r\n private readonly localStorageObject: LocalStorageObject\r\n ) {\r\n }\r\n\r\n canLoad(route: Route, segments: UrlSegment[]): Observable|Promise|boolean {\r\n const token = this.localStorageObject.token;\r\n\r\n if (!token) {\r\n return this.router.navigate(['/auth/login']);\r\n }\r\n\r\n return true;\r\n }\r\n\r\n canActivate(routeAc: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable | Promise | boolean {\r\n const token = this.localStorageObject.token;\r\n const moduloId = routeAc.data.moduloId;\r\n if (!token) {\r\n return this.router.navigate(['/auth/login']);\r\n }\r\n\r\n if (moduloId) {\r\n const podeExibir = this.permissoesService.podeExibirModulo(moduloId);\r\n if (!podeExibir) {\r\n return this.router.navigate(['']);\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n redirecionarRotaRaizPermissao(usuario: Usuario, empresaSelecionada: Empresa): void {\r\n if (usuario.tipoUsuario !== TipoUsuarioEnum.ClienteResponsavel) {\r\n if (empresaSelecionada.tipo === 0) {\r\n const rotaAtual = this.router.url;\r\n if (rotaAtual === '/') {\r\n window.location.reload();\r\n } else {\r\n this.router.navigate(['']);\r\n }\r\n }\r\n if (empresaSelecionada.tipo === 1) {\r\n this.router.navigate(['financeiro/movimentacoes']);\r\n }\r\n } else {\r\n this.router.navigate(['cardapio-cliente']);\r\n }\r\n }\r\n\r\n\r\n}\r\n","const constants = {\r\n PERMISSOES: {\r\n SEM_ACESSO: 'semAcesso',\r\n SOMENTE_VISUALIZAR: 'somenteVisualizar',\r\n CONTROLE_TOTAL: 'controleTotal',\r\n ADMIN_MODULO: 'adminModulo',\r\n },\r\n MODULOS: {\r\n ALIMENTOS: 'alimentos',\r\n MATERIAIS_DIVERSOS: 'materiaisDiversos',\r\n FICHAS_TECNICAS: 'fichasTecnicas',\r\n PRODUTO: 'produto',\r\n CARDAPIO: 'cardapio',\r\n PEDIDO: 'pedido',\r\n MAPA_PRODUCAO: 'mapaProducao',\r\n MOVIMENTACOES: 'movimentacoes',\r\n INVENTARIO: 'inventario',\r\n ORDEM_SAIDA: 'ordemSaida',\r\n CONFIGURACOES: 'configuracoes',\r\n PAINEL_ADMIN: 'painelAdmin',\r\n COMPRAS: 'compras',\r\n EXECUCAO: 'execucao',\r\n EXPEDICAO: 'expedicao',\r\n FORNECEDORES: 'fornecedores',\r\n CLIENTES: 'clientes',\r\n TIPOS_CLASSES: 'tiposClasses',\r\n RECEITAS_CALCULADAS: 'receitasCalculadas',\r\n RELATORIOS: 'relatorios',\r\n FINANCEIRO_MOVIMENTACOES: 'movimentacaoFinanceira',\r\n FINANCEIRO_CATEGORIAS: 'categoriaCusto',\r\n FINANCEIRO_CENTROS_DE_CUSTO: 'centroDeCusto',\r\n\r\n },\r\n modulosPlanos: {\r\n moduloFinanceiroMovimentacoes: ['moduloFinanceiroMovimentacoes','visivel'],\r\n moduloFinanceiroCategorias: ['moduloFinanceiroCategorias','visivel'],\r\n moduloFinanceiroCentroCusto: ['moduloFinanceiroCentroCusto','visivel'],\r\n moduloAlimento: ['moduloAlimento','visivel'],\r\n moduloMaterialDiverso: ['moduloMaterialDiverso','visivel'],\r\n moduloProduto: ['moduloProduto','visivel'],\r\n moduloCardapio: ['moduloCardapio','visivel'],\r\n moduloPedidos: ['moduloPedidos','visivel'],\r\n moduloFornecedores: ['moduloFornecedores','visivel'],\r\n moduloClientes: ['moduloClientes','visivel'],\r\n moduloFichaTecnica: ['moduloFichaTecnica','visivel'],\r\n submoduloFichaTecnicaBanco: ['submoduloFichaTecnicaBanco','visivel'],\r\n submoduloFichaTecnicaExcel: ['submoduloFichaTecnicaExcel','visivel'],\r\n submoduloFichaTecnicaImpressoes: ['submoduloFichaTecnicaImpressoes','visivel'],\r\n moduloTiposClasses: ['moduloTiposClasses','visivel'],\r\n submoduloTiposClassesMotivo: ['submoduloTiposClassesMotivo','visivel'],\r\n submoduloTiposClassesGrupoClientes: ['submoduloTiposClassesGrupoClientes','visivel'],\r\n submoduloTiposClassesCategoriaItemCardapio: ['submoduloTiposClassesCategoriaItemCardapio','visivel'],\r\n moduloMapaProducao: ['moduloMapaProducao','visivel'],\r\n moduloReceitasCalculadas: ['moduloReceitasCalculadas','visivel'],\r\n moduloExecucao: ['moduloExecucao','visivel'],\r\n moduloExpedicao: ['moduloExpedicao','visivel'],\r\n moduloMovimentacao: ['moduloMovimentacao','visivel'],\r\n moduloInventario: ['moduloInventario','visivel'],\r\n moduloListaCompras: ['moduloListaCompras','visivel'],\r\n moduloGerarCompras: ['moduloGerarCompras','invisivel'],\r\n moduloRelatorioCompras: ['moduloRelatorioCompras','visivel'],\r\n moduloDashboard: ['moduloDashboard','visivel'],\r\n }\r\n};\r\n\r\nexport default constants;","const pageSettings = {\r\n pageSidebarMinified: false,\r\n pageContentFullHeight: false,\r\n pageContentFullWidth: false,\r\n pageContentInverseMode: false,\r\n pageWithFooter: false,\r\n pageWithoutSidebar: false,\r\n pageSidebarRight: false,\r\n pageSidebarRightCollapsed: false,\r\n pageSidebarTwo: false,\r\n pageSidebarWide: false,\r\n pageSidebarTransparent: false,\r\n pageSidebarLight: false,\r\n pageTopMenu: false,\r\n pageEmpty: false,\r\n pageBodyWhite: false,\r\n pageMegaMenu: false,\r\n pageLanguageBar: false,\r\n pageMobileSidebarToggled: false,\r\n pageMobileSidebarFirstClicked: false,\r\n pageMobileSidebarRightToggled: false,\r\n pageMobileSidebarRightFirstClicked: false,\r\n pageMobileTopMenuToggled: false,\r\n pageMobileMegaMenuToggled: false\r\n};\r\n\r\nexport default pageSettings;\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { BaseService } from './base.service';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { CadastrarCliente } from 'src/app/shared/models/cadastrarCliente';\r\nimport { Usuario } from 'src/app/shared/models/usuario';\r\nimport { FiltroEmpresa } from 'src/app/shared/models/filtros/filtroEmpresa';\r\nimport { ListaPaginadaEmpresa } from 'src/app/shared/models/listas-paginadas/listaPaginadaEmpresa';\r\nimport { Empresa } from 'src/app/shared/models/empresa';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AdminService extends BaseService {\r\n\r\n constructor(private http: HttpClient) {\r\n super();\r\n }\r\n\r\n obterListaPaginadaEmpresa(filtroEmpresa: FiltroEmpresa): Observable {\r\n // tslint:disable-next-line: max-line-length\r\n return this.http.post(this.urlService + 'admin/obterListaPaginadaEmpresa', filtroEmpresa, super.ObterAuthHeaderJson());\r\n }\r\n\r\n obterListaPaginadaEmpresasPrincipais(filtroEmpresa: FiltroEmpresa): Observable {\r\n // tslint:disable-next-line: max-line-length\r\n return this.http.post(this.urlService + 'admin/obterListaPaginadaEmpresasPrincipais', filtroEmpresa, super.ObterAuthHeaderJson());\r\n }\r\n\r\n obterEmpresaPorId(id: string): Observable {\r\n // tslint:disable-next-line: max-line-length\r\n return this.http.get(this.urlService + 'admin/obterEmpresaPorId?id=' + id, super.ObterAuthHeaderJson());\r\n }\r\n\r\n cadastrarCliente(cadastrarCliente: CadastrarCliente): Observable {\r\n return this.http.post(this.urlService + 'admin/cadastrarCliente', cadastrarCliente, super.ObterAuthHeaderJson());\r\n }\r\n\r\n editarCliente(empresa: Empresa): Observable {\r\n return this.http.put(this.urlService + 'admin/editarCliente', empresa, super.ObterAuthHeaderJson());\r\n }\r\n\r\n editarClientePlanoBase(id: string): Observable {\r\n return this.http.put(this.urlService + 'admin/editarClientePlanoBase?id=' + id, super.ObterAuthHeaderJson());\r\n }\r\n\r\n obterFiliaisPorId(id: string): Observable {\r\n // tslint:disable-next-line: max-line-length\r\n return this.http.get(this.urlService + 'admin/obterFiliaisPorId?id=' + id, super.ObterAuthHeaderJson());\r\n }\r\n}\r\n\r\n","import { HttpHeaders } from '@angular/common/http';\r\nimport { environment } from './../../../environments/environment';\r\nimport { Empresa } from 'src/app/shared/models/empresa';\r\nimport { PlanoEmpresa } from 'src/app/shared/models/planoEmpresa';\r\nimport { Usuario } from 'src/app/shared/models/usuario';\r\n\r\nexport abstract class BaseService {\r\n public urlService = environment.api;\r\n\r\n protected ObterHeaderJson() {\r\n return {\r\n headers: new HttpHeaders({\r\n 'Content-Type': 'application/json',\r\n }),\r\n };\r\n }\r\n\r\n protected ObterAuthHeaderJson() {\r\n return {\r\n headers: new HttpHeaders({\r\n 'Content-Type': 'application/json',\r\n Authorization: `Bearer ${this.obterTokenUsuario()}`,\r\n }),\r\n };\r\n }\r\n\r\n protected ObterAuthHeaderString() {\r\n return {\r\n headers: new HttpHeaders({\r\n 'Content-Type': 'application/json',\r\n responseType: 'text',\r\n Authorization: `Bearer ${this.obterTokenUsuario()}`,\r\n }),\r\n };\r\n }\r\n\r\n public obterEmpresaSelecionada(): Empresa {\r\n let empresaSelecionada = new Empresa();\r\n empresaSelecionada = JSON.parse(localStorage.getItem('rotulagem.empresaSelecionada'));\r\n return empresaSelecionada;\r\n }\r\n\r\n public obterUsuario(): Usuario {\r\n let usuario = new Usuario();\r\n usuario = JSON.parse(localStorage.getItem('rotulagem.usuario'));\r\n return usuario;\r\n }\r\n\r\n public obterTokenUsuario(): string {\r\n return localStorage.getItem('rotulagem.token');\r\n }\r\n\r\n protected extractData(response: any) {\r\n return response.data || {};\r\n }\r\n\r\n protected serviceError(error: Response | any) {\r\n let errMsg: string;\r\n\r\n if (error instanceof Response) {\r\n errMsg = `${error.status} - ${error.statusText || ''}`;\r\n } else {\r\n errMsg = error.message ? error.message : error.toString();\r\n }\r\n console.error(error);\r\n throw new Error(error);\r\n }\r\n\r\n protected obterPlanoEmpresa(): PlanoEmpresa {\r\n let planoEmpresa = new PlanoEmpresa();\r\n const empresaSelecionada = JSON.parse(localStorage.getItem('rotulagem.empresaSelecionada'));\r\n planoEmpresa = empresaSelecionada.planoEmpresa as PlanoEmpresa;\r\n return planoEmpresa;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Observable, throwError } from 'rxjs';\r\nimport { catchError, retry } from 'rxjs/operators';\r\nimport { Endereco } from '../../shared/models/endereco';\r\nimport { ToastrService } from 'ngx-toastr';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ConsultaCepService {\r\n\r\n constructor(\r\n private http: HttpClient,\r\n private toastr: ToastrService\r\n ) { }\r\n\r\n apiURL = 'https://viacep.com.br/ws/';\r\n httpOptions = {\r\n headers: new HttpHeaders({\r\n 'Content-Type': 'application/json'\r\n })\r\n };\r\n\r\n getEnderecoCep(cep: string): Observable {\r\n return this.http.get(this.apiURL + cep + '/json/')\r\n .pipe(\r\n retry(1),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n handleError(error: { error: any; }) {\r\n const errorMessage = '';\r\n if (error.error instanceof ErrorEvent) {\r\n this.toastr.warning(`Cep Não encontrado`);\r\n }\r\n return throwError(errorMessage);\r\n }\r\n\r\n}\r\n","import { BaseService } from './base.service';\r\nimport { EventEmitter, Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { Empresa } from 'src/app/shared/models/empresa';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { ListaPaginadaEmpresa } from 'src/app/shared/models/listas-paginadas/listaPaginadaEmpresa';\r\nimport { FiltroEmpresa } from 'src/app/shared/models/filtros/filtroEmpresa';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class EmpresaService extends BaseService {\r\n\r\n notificadorAlterarEmpresa = new EventEmitter();\r\n\r\n constructor(private http: HttpClient) {\r\n super();\r\n }\r\n\r\n notificarAlterarEmpresa() {\r\n this.notificadorAlterarEmpresa.emit();\r\n }\r\n\r\n obterPeloId(id: string): Observable {\r\n return this.http.get(this.urlService + 'empresa/obterPeloId?id=' + id, super.ObterAuthHeaderJson());\r\n }\r\n\r\n alterar(empresa: Empresa): Observable {\r\n return this.http.put(this.urlService + 'empresa/alterar', empresa, super.ObterAuthHeaderJson());\r\n }\r\n\r\n obterEmpresasMesmoGrupo(id: string): Observable {\r\n return this.http.get(this.urlService + 'empresa/obterEmpresasMesmoGrupo?id=' + id, super.ObterAuthHeaderJson());\r\n }\r\n\r\n alterarCustoMedioAtivo(custoMedioAtivo: boolean, empresaId: string): Observable {\r\n return this.http.get(`${this.urlService}empresa/alterarCustoMedioAtivo?custoMedioAtivo=${custoMedioAtivo}&empresaId=${empresaId}`, super.ObterAuthHeaderJson());\r\n }\r\n\r\n alterarOrdemSaidaPorServico(ordemSaidaPorServico: boolean, empresaId: string): Observable {\r\n return this.http.get(`${this.urlService}empresa/alterarOrdemSaidaPorServico?ordemSaidaPorServico=${ordemSaidaPorServico}&empresaId=${empresaId}`, super.ObterAuthHeaderJson());\r\n }\r\n\r\n obterListaEmpresaVinculadaModuloFinanceiro(filtroEmpresa: FiltroEmpresa): Observable {\r\n return this.http.post(`${this.urlService}empresa/obterListaEmpresaVinculadaModuloFinanceiro`, filtroEmpresa, super.ObterAuthHeaderJson());\r\n }\r\n\r\n adicionarEmpresaModuloFinanceiro(empresaIdModuloFinanceiro: string, empresaIdVincular: string): Observable {\r\n return this.http.get(`${this.urlService}empresa/adicionarEmpresaModuloFinanceiro?empresaIdModuloFinanceiro=${empresaIdModuloFinanceiro}&empresaIdVincular=${empresaIdVincular}`, super.ObterAuthHeaderJson());\r\n }\r\n\r\n removerEmpresaModuloFinanceiro(empresaIdModuloFinanceiro: string, empresaIdDesvincular: string): Observable {\r\n return this.http.get(`${this.urlService}empresa/removerEmpresaModuloFinanceiro?empresaIdModuloFinanceiro=${empresaIdModuloFinanceiro}&empresaIdDesvincular=${empresaIdDesvincular}`, super.ObterAuthHeaderJson());\r\n }\r\n exclusaoFisicaEmpresaPorId(id: string): Observable {\r\n return this.http.delete(`${this.urlService}empresa/exclusaoFisicaEmpresaPorId?id=${id}`, super.ObterAuthHeaderJson());\r\n }\r\n\r\n}\r\n","import { EventEmitter, Injectable } from '@angular/core';\r\nimport { Empresa } from 'src/app/shared/models/empresa';\r\nimport { TipoUsuarioEnum } from 'src/app/shared/models/enum/tipoUsuario.enum';\r\nimport { Usuario } from 'src/app/shared/models/usuario';\r\nimport { BaseService } from './base.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class LocalStorageObject extends BaseService {\r\n\r\n notificadorAlterarUsuario = new EventEmitter();\r\n notificadorAlterarEmpresa = new EventEmitter();\r\n notificadorAlterarToken = new EventEmitter();\r\n\r\n usuario: Usuario;\r\n empresaSelecionada: Empresa;\r\n token: string;\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n notificarAlterarUsuario() {\r\n this.notificadorAlterarUsuario.emit();\r\n }\r\n\r\n notificarAlterarEmpresa() {\r\n this.notificadorAlterarEmpresa.emit();\r\n }\r\n\r\n notificarAlterarToken() {\r\n this.notificadorAlterarToken.emit();\r\n }\r\n\r\n popularVariavelGlobalUsuario(): void {\r\n this.usuario = this.obterUsuario();\r\n if (this.usuario) {\r\n this.notificarAlterarUsuario();\r\n }\r\n }\r\n\r\n popularVariavelGlobalEmpresa(): void {\r\n this.empresaSelecionada = this.obterEmpresaSelecionada();\r\n if (this.empresaSelecionada) {\r\n this.notificarAlterarEmpresa();\r\n }\r\n }\r\n\r\n popularVariavelGlobalToken(): void {\r\n this.token = this.obterTokenUsuario();\r\n if (this.token) {\r\n this.notificarAlterarToken();\r\n }\r\n }\r\n\r\n validarTipoUsuarioResponsavel(): boolean {\r\n let response = false;\r\n response = this.usuario?.tipoUsuario === TipoUsuarioEnum.ClienteResponsavel ? true : false;\r\n return response;\r\n }\r\n\r\n}\r\n\r\n\r\n\r\n\r\n\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { BaseService } from './base.service';\r\nimport { Usuario } from 'src/app/shared/models/usuario';\r\nimport { UsuarioEmpresa } from 'src/app/shared/models/usuarioEmpresa';\r\nimport { CadastrarCliente } from 'src/app/shared/models/cadastrarCliente';\r\nimport { Auth } from 'src/app/shared/models/auth';\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class LoginService extends BaseService {\r\n\r\n constructor(private http: HttpClient) {\r\n super();\r\n }\r\n\r\n login(email: string, senha: string): Observable {\r\n return this.http.post(this.urlService + 'usuario/login', { email, senha }, super.ObterHeaderJson());\r\n }\r\n\r\n cadastrar(usuario: Usuario): Observable {\r\n return this.http.post(this.urlService + 'usuario/cadastrar', usuario, super.ObterHeaderJson());\r\n }\r\n\r\n confirmacaoCadastro(dadosConfirmacaoCadastro: any): Observable {\r\n return this.http.post(this.urlService + 'usuario/confirmacaoCadastro', dadosConfirmacaoCadastro, super.ObterHeaderJson());\r\n }\r\n\r\n alterar(usuario: Usuario): Observable {\r\n return this.http.post(this.urlService + 'usuario/alterar', usuario, super.ObterHeaderJson());\r\n }\r\n\r\n reenviarConfirmacaoCadastro(email: string): Observable {\r\n return this.http.post(this.urlService + 'usuario/reenviarConfirmacaoCadastro?email=' + email, super.ObterHeaderJson());\r\n }\r\n\r\n alterarSenha(usuario: any): Observable {\r\n return this.http.post(this.urlService + 'usuario/alterarSenha', usuario, super.ObterHeaderJson());\r\n }\r\n\r\n recuperarSenha(email: string): Observable {\r\n return this.http.post(this.urlService + 'usuario/recuperarSenha?email=' + email, super.ObterHeaderJson());\r\n }\r\n\r\n logout(): Observable {\r\n return this.http.post(this.urlService + 'usuario/logout', super.ObterHeaderJson());\r\n }\r\n\r\n tokenPermissoesEmpresa(usuarioId, usuarioEmpresaId): Observable {\r\n return this.http.get(`${this.urlService}usuario/TokenPermissoesEmpresa?usuarioId=${usuarioId}&usuarioEmpresaId=${usuarioEmpresaId}`, super.ObterHeaderJson());\r\n }\r\n\r\n alterarEmpresaPrincipal(usuarioEmpresa: UsuarioEmpresa): Observable {\r\n return this.http.post(this.urlService + 'usuario/alterarEmpresaPrincipal', usuarioEmpresa, super.ObterAuthHeaderJson());\r\n }\r\n\r\n obterPorId(id: string): Observable {\r\n return this.http.get(this.urlService + 'usuario/obterPeloId?id=' + id, super.ObterAuthHeaderJson());\r\n }\r\n\r\n obterPeloEmail(email: string): Observable {\r\n return this.http.get(this.urlService + 'usuario/obterPeloEmail?email=' + email, super.ObterAuthHeaderJson());\r\n }\r\n\r\n gerarLinkRegistrarClienteResponsavel(usuario: Usuario): Observable {\r\n return this.http.post(`${this.urlService}usuario/gerarLinkRegistrarClienteResponsavel`, usuario, super.ObterHeaderJson());\r\n }\r\n\r\n cadastrarUsuarioCliente(cadastrarCliente: CadastrarCliente): Observable {\r\n return this.http.post(this.urlService + 'usuario/cadastrarUsuarioCliente', cadastrarCliente, super.ObterAuthHeaderJson());\r\n }\r\n\r\n refreshToken(): Observable {\r\n return this.http.get(`${this.urlService}usuario/refreshToken`, super.ObterAuthHeaderJson());\r\n }\r\n \r\n}\r\n","import { BaseService } from './base.service';\r\nimport { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Planejamento } from 'src/app/shared/models/planejamento';\r\nimport { FiltroPlanejamento } from 'src/app/shared/models/filtros/filtroPlanejamento';\r\nimport { Observable } from 'rxjs';\r\nimport { NdpCal } from 'src/app/modules/mapa-producao/models/ndpCal';\r\nimport { LocalStorageObject } from './localStorageObject.service';\r\nimport { TipoRefeicaoPlanejamento } from 'src/app/modules/mapa-producao/models/tipoRefeicaoPlanejamento';\r\nimport { PlanejamentoCusto } from 'src/app/modules/mapa-producao/models/planejamentoCusto';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class PlanejamentoService extends BaseService {\r\n\r\n constructor(\r\n private readonly http: HttpClient,\r\n private readonly localStorageObject: LocalStorageObject\r\n ) {\r\n super();\r\n }\r\n\r\n obterLista(token: string) {\r\n const filtroPlanejamento = new FiltroPlanejamento();\r\n filtroPlanejamento.nome = token;\r\n filtroPlanejamento.empresaId = this.localStorageObject?.empresaSelecionada?.id;\r\n return this.http.post(this.urlService + 'planejamento/obterLista', filtroPlanejamento, super.ObterAuthHeaderJson());\r\n }\r\n\r\n obterPlanejamento(filtroPlanejamento: FiltroPlanejamento): Observable {\r\n filtroPlanejamento.empresaId = this.localStorageObject?.empresaSelecionada?.id;\r\n return this.http.post(this.urlService + 'planejamento/obterPlanejamento', filtroPlanejamento, super.ObterAuthHeaderJson());\r\n }\r\n\r\n calcularIngredientesFichaTecnicaPlanejamentoDia(filtroPlanejamento: FiltroPlanejamento): Observable {\r\n filtroPlanejamento.empresaId = this.localStorageObject?.empresaSelecionada?.id;\r\n return this.http.post(this.urlService + 'planejamento/calcularIngredientesFichaTecnicaPlanejamentoDia', filtroPlanejamento, super.ObterAuthHeaderJson());\r\n }\r\n\r\n cadastrarListaPlanejamento(listaPlanejamento: Planejamento[]): Observable {\r\n return this.http.post(this.urlService + 'planejamento/cadastrarListaPlanejamento', listaPlanejamento, super.ObterAuthHeaderJson());\r\n }\r\n\r\n editarListaPlanejamento(listaPlanejamento: Planejamento[]): Observable {\r\n return this.http.post(this.urlService + 'planejamento/editarListaPlanejamento', listaPlanejamento, super.ObterAuthHeaderJson());\r\n }\r\n\r\n obterNutrientesPlanejamento(filtroPlanejamento: FiltroPlanejamento): Observable {\r\n return this.http.post(this.urlService + 'planejamento/obterNutrientesPlanejamento', filtroPlanejamento, super.ObterAuthHeaderJson());\r\n }\r\n\r\n duplicarPlanejamentos(filtroPlanejamento: FiltroPlanejamento): Observable {\r\n filtroPlanejamento.empresaId = this.localStorageObject?.empresaSelecionada?.id;\r\n return this.http.post(this.urlService + 'planejamento/duplicarPlanejamentos', filtroPlanejamento, super.ObterAuthHeaderJson());\r\n }\r\n\r\n duplicarRangePlanejamentos(filtroPlanejamento: FiltroPlanejamento): Observable {\r\n filtroPlanejamento.empresaId = this.localStorageObject?.empresaSelecionada?.id;\r\n return this.http.post(this.urlService + 'planejamento/duplicarRangePlanejamentos', filtroPlanejamento, super.ObterAuthHeaderJson());\r\n }\r\n\r\n excluirPlanejamentosDia(filtroPlanejamento: FiltroPlanejamento): Observable {\r\n filtroPlanejamento.empresaId = this.localStorageObject?.empresaSelecionada?.id;\r\n return this.http.post(this.urlService + 'planejamento/excluirPlanejamentosDia', filtroPlanejamento, super.ObterAuthHeaderJson());\r\n }\r\n\r\n calcularNdpCalRefeicao(filtroPlanejamento: FiltroPlanejamento): Observable {\r\n filtroPlanejamento.empresaId = this.localStorageObject?.empresaSelecionada?.id;\r\n return this.http.post(this.urlService + 'planejamento/calcularNdpCalRefeicao', filtroPlanejamento, super.ObterAuthHeaderJson());\r\n }\r\n\r\n obterPlanejamentoMapaProducao(filtroPlanejamento: FiltroPlanejamento): Observable {\r\n filtroPlanejamento.empresaId = this.localStorageObject?.empresaSelecionada?.id;\r\n return this.http.post(this.urlService + 'planejamento/obterPlanejamentoMapaProducao', filtroPlanejamento, super.ObterAuthHeaderJson());\r\n }\r\n\r\n obterPlanejamentoMapaProducaoCusto(filtroPlanejamento: FiltroPlanejamento): Observable {\r\n filtroPlanejamento.empresaId = this.localStorageObject?.empresaSelecionada?.id;\r\n return this.http.post(this.urlService + 'planejamento/obterPlanejamentoMapaProducaoCusto', filtroPlanejamento, super.ObterAuthHeaderJson());\r\n }\r\n\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { BaseService } from './base.service';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { FiltroUsuarioEmpresa } from 'src/app/shared/models/filtros/filtroUsuarioEmpresa';\r\nimport { ListaPaginadaUsuariosDaEmpresa } from 'src/app/shared/models/listas-paginadas/listaPaginadaUsuariosDaEmpresa';\r\nimport { UsuarioDaEmpresa } from 'src/app/shared/models/usuarioDaEmpresa';\r\nimport { UsuarioEmpresa } from 'src/app/shared/models/usuarioEmpresa';\r\nimport { ListaPaginadaEmpresa } from 'src/app/shared/models/listas-paginadas/listaPaginadaEmpresa';\r\nimport { ListaPaginadaUsuarioEmpresa } from 'src/app/shared/models/listas-paginadas/listaPaginadaUsuariosEmpresa';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UsuarioEmpresaService extends BaseService {\r\n\r\n constructor(private http: HttpClient) {\r\n super();\r\n }\r\n\r\n obterListaPaginadaEmpresasDoUsuario(filtro: FiltroUsuarioEmpresa): Observable {\r\n return this.http.post(this.urlService + 'usuarioEmpresa/ObterListaPaginadaEmpresasDoUsuario', filtro, super.ObterAuthHeaderJson());\r\n }\r\n\r\n obterListaPaginadaUsuariosDaEmpresa(filtro: FiltroUsuarioEmpresa): Observable {\r\n return this.http.post(this.urlService + 'usuarioEmpresa/ObterListaPaginadaUsuariosDaEmpresa', filtro, super.ObterAuthHeaderJson());\r\n }\r\n\r\n obterListaUsuariosDaEmpresa(filtro: FiltroUsuarioEmpresa): Observable {\r\n return this.http.post(this.urlService + 'usuarioEmpresa/obterListaUsuariosDaEmpresa', filtro, super.ObterAuthHeaderJson());\r\n }\r\n\r\n incluir(membro: UsuarioDaEmpresa) {\r\n return this.http.post(this.urlService + 'usuarioEmpresa/IncluirMembroEmpresa', membro, super.ObterAuthHeaderJson());\r\n }\r\n\r\n alterar(membro: UsuarioDaEmpresa) {\r\n return this.http.put(this.urlService + 'usuarioEmpresa/Alterar', membro, super.ObterAuthHeaderJson());\r\n }\r\n\r\n excluir(id: string): Observable {\r\n return this.http.delete(this.urlService + 'usuarioEmpresa/excluir?id=' + id, super.ObterAuthHeaderJson());\r\n }\r\n\r\n}\r\n\r\n","\r\n\r\nimport { Injectable } from '@angular/core';\r\nimport { ItemMovimentacao } from 'src/app/shared/models/itemMovimentacao';\r\nimport { MovimentacaoTransferenciaItem } from 'src/app/shared/models/movimentacaoTransferenciaItem';\r\nimport { NomeItemNotaFiscal } from 'src/app/shared/models/nomeItemNotaFiscal';\r\nimport { ItemOrdemSaida } from './ordem-saida/models/itemOrdemSaida';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class EstoqueHelperService {\r\n\r\n nomeItemNotaFiscalUnidadeCompra(nomeItemNotaFiscal: NomeItemNotaFiscal, itemNotaFiscal: NomeItemNotaFiscal): string {\r\n let retorno = '';\r\n\r\n if (nomeItemNotaFiscal.unidadeCompraId != null) {\r\n const unidadeCompraSelecionada = itemNotaFiscal.alimento != null ?\r\n itemNotaFiscal.alimento.unidadeCompra.find(x => x.id === nomeItemNotaFiscal.unidadeCompraId) :\r\n itemNotaFiscal.materialDiverso.unidadeCompra.find(x => x.id === nomeItemNotaFiscal.unidadeCompraId);\r\n\r\n if (unidadeCompraSelecionada != null) {\r\n retorno = unidadeCompraSelecionada.nome;\r\n } else {\r\n if (itemNotaFiscal.alimento != null) {\r\n retorno = itemNotaFiscal.alimento.unidadeCompra.length > 0 ? itemNotaFiscal.alimento.unidadeCompra[0].nome : '';\r\n }\r\n\r\n if (itemNotaFiscal.materialDiverso != null) {\r\n retorno = itemNotaFiscal.materialDiverso.unidadeCompra.length > 0 ? itemNotaFiscal.materialDiverso.unidadeCompra[0].nome : '';\r\n }\r\n }\r\n }\r\n\r\n return retorno;\r\n }\r\n\r\n nomeUnidadeCompraSelecionada(itemMovimentacao: ItemMovimentacao): string {\r\n let retorno = '';\r\n\r\n if (itemMovimentacao.unidadeCompraId.length > 0) {\r\n const unidadeCompraSelecionada = itemMovimentacao.alimento != null ?\r\n itemMovimentacao.alimento.unidadeCompra.find(x => x.id === itemMovimentacao.unidadeCompraId) :\r\n itemMovimentacao.materialDiverso.unidadeCompra.find(x => x.id === itemMovimentacao.unidadeCompraId);\r\n\r\n if (unidadeCompraSelecionada != null) {\r\n retorno = unidadeCompraSelecionada.nome;\r\n } else {\r\n if (itemMovimentacao.alimento != null) {\r\n retorno = itemMovimentacao.alimento.unidadeCompra.length > 0 ? itemMovimentacao.alimento.unidadeCompra[0].nome : '';\r\n }\r\n\r\n if (itemMovimentacao.materialDiverso != null) {\r\n retorno = itemMovimentacao.materialDiverso.unidadeCompra.length > 0 ? itemMovimentacao.materialDiverso.unidadeCompra[0].nome : '';\r\n }\r\n }\r\n\r\n }\r\n return retorno;\r\n }\r\n\r\n calcularValorTotalItemMovimentacao(listaItemMovimentacao: ItemMovimentacao[]): number {\r\n let valorTotal = 0;\r\n listaItemMovimentacao?.forEach(item => {\r\n if (item.valorTotal !== 0 || item.valorTotal !== null) {\r\n valorTotal += item.valorTotal;\r\n }\r\n });\r\n return valorTotal;\r\n }\r\n\r\n calcularQuantidades(itemOrdemSaida: ItemOrdemSaida): void {\r\n this.calcularCampoQuantidadeEstoque(itemOrdemSaida);\r\n this.calcularCampoQuantidadePlanejada(itemOrdemSaida);\r\n\r\n itemOrdemSaida.quantidadeTotal = itemOrdemSaida.quantidadePlanejadaTemp;\r\n }\r\n\r\n calcularCampoQuantidadeEstoque(itemOrdemSaida: ItemOrdemSaida): number {\r\n itemOrdemSaida.quantidadeEstoque = this.calcularUnidadeCompraQuantidadeEstoque(itemOrdemSaida);\r\n return itemOrdemSaida.quantidadeEstoque;\r\n }\r\n\r\n calcularUnidadeCompraQuantidadeEstoque(itemOrdemSaida: ItemOrdemSaida): number {\r\n let retorno = 0;\r\n\r\n if (itemOrdemSaida.unidadeCompraId != null) {\r\n if (itemOrdemSaida.alimento) {\r\n const unidadeCompraSelecionada = itemOrdemSaida.alimento.unidadeCompra.find(x => x.id === itemOrdemSaida.unidadeCompraId);\r\n\r\n let quantidadeUnidadeCompra = 0;\r\n if (unidadeCompraSelecionada.unidadeQuantidadeReferencia != null) {\r\n if (unidadeCompraSelecionada.unidadeQuantidadeReferencia === 'kg' || unidadeCompraSelecionada.unidadeQuantidadeReferencia === 'L') {\r\n quantidadeUnidadeCompra = unidadeCompraSelecionada.quantidadeReferencia * 1000;\r\n } else {\r\n quantidadeUnidadeCompra = unidadeCompraSelecionada.quantidadeReferencia;\r\n }\r\n } else {\r\n quantidadeUnidadeCompra = unidadeCompraSelecionada.quantidadeReferencia;\r\n }\r\n\r\n retorno = itemOrdemSaida.alimento.quantidadeEstoque / quantidadeUnidadeCompra;\r\n }\r\n if (itemOrdemSaida.materialDiverso) {\r\n const unidadeCompraSelecionada = itemOrdemSaida.materialDiverso.unidadeCompra.find(x => x.id === itemOrdemSaida.unidadeCompraId);\r\n\r\n let quantidadeUnidadeCompra = 0;\r\n if (unidadeCompraSelecionada.unidadeQuantidadeReferencia != null) {\r\n if (unidadeCompraSelecionada.unidadeQuantidadeReferencia === 'kg' || unidadeCompraSelecionada.unidadeQuantidadeReferencia === 'L') {\r\n quantidadeUnidadeCompra = unidadeCompraSelecionada.quantidadeReferencia * 1000;\r\n } else {\r\n quantidadeUnidadeCompra = unidadeCompraSelecionada.quantidadeReferencia;\r\n }\r\n } else {\r\n quantidadeUnidadeCompra = unidadeCompraSelecionada.quantidadeReferencia;\r\n }\r\n\r\n retorno = itemOrdemSaida.materialDiverso.quantidadeEstoque / quantidadeUnidadeCompra;\r\n }\r\n }\r\n\r\n return retorno;\r\n }\r\n\r\n calcularCampoQuantidadePlanejada(itemOrdemSaida: ItemOrdemSaida): number {\r\n itemOrdemSaida.quantidadePlanejadaTemp = this.calcularUnidadeCompraQuantidadePlanejada(itemOrdemSaida);\r\n return itemOrdemSaida.quantidadePlanejadaTemp;\r\n }\r\n\r\n calcularUnidadeCompraQuantidadePlanejada(itemOrdemSaida: ItemOrdemSaida): number {\r\n let retorno = 0;\r\n\r\n if (itemOrdemSaida.unidadeCompraId != null) {\r\n if (itemOrdemSaida.alimento) {\r\n const unidadeCompraSelecionada = itemOrdemSaida.alimento.unidadeCompra.find(x => x.id === itemOrdemSaida.unidadeCompraId);\r\n\r\n let quantidadeUnidadeCompra = 0;\r\n if (unidadeCompraSelecionada.unidadeQuantidadeReferencia != null) {\r\n if (unidadeCompraSelecionada.unidadeQuantidadeReferencia === 'kg' || unidadeCompraSelecionada.unidadeQuantidadeReferencia === 'L') {\r\n quantidadeUnidadeCompra = unidadeCompraSelecionada.quantidadeReferencia * 1000;\r\n } else {\r\n quantidadeUnidadeCompra = unidadeCompraSelecionada.quantidadeReferencia;\r\n }\r\n } else {\r\n quantidadeUnidadeCompra = unidadeCompraSelecionada.quantidadeReferencia;\r\n }\r\n\r\n retorno = itemOrdemSaida.quantidadePlanejada / quantidadeUnidadeCompra;\r\n }\r\n if (itemOrdemSaida.materialDiverso) {\r\n const unidadeCompraSelecionada = itemOrdemSaida.materialDiverso.unidadeCompra.find(x => x.id === itemOrdemSaida.unidadeCompraId);\r\n\r\n let quantidadeUnidadeCompra = 0;\r\n if (unidadeCompraSelecionada.unidadeQuantidadeReferencia != null) {\r\n if (unidadeCompraSelecionada.unidadeQuantidadeReferencia === 'kg' || unidadeCompraSelecionada.unidadeQuantidadeReferencia === 'L') {\r\n quantidadeUnidadeCompra = unidadeCompraSelecionada.quantidadeReferencia * 1000;\r\n } else {\r\n quantidadeUnidadeCompra = unidadeCompraSelecionada.quantidadeReferencia;\r\n }\r\n } else {\r\n quantidadeUnidadeCompra = unidadeCompraSelecionada.quantidadeReferencia;\r\n }\r\n\r\n retorno = itemOrdemSaida.quantidadePlanejada / quantidadeUnidadeCompra;\r\n }\r\n }\r\n\r\n return retorno;\r\n }\r\n\r\n nomeItemMovimentacao(itemMovimentacao: ItemMovimentacao): string {\r\n let retorno = '';\r\n\r\n if (itemMovimentacao?.alimento) {\r\n retorno = itemMovimentacao?.alimento?.nome;\r\n }\r\n\r\n if (itemMovimentacao?.materialDiverso) {\r\n retorno = itemMovimentacao?.materialDiverso?.nome;\r\n }\r\n\r\n if (itemMovimentacao?.fichaTecnica) {\r\n retorno = itemMovimentacao?.fichaTecnica?.nome;\r\n }\r\n\r\n return retorno;\r\n }\r\n\r\n nomeMovimentacaoTransferenciaItem(movimentacaoTransferenciaItem: MovimentacaoTransferenciaItem): string {\r\n let retorno = '';\r\n\r\n if (movimentacaoTransferenciaItem?.alimento) {\r\n retorno = movimentacaoTransferenciaItem?.alimento?.nome;\r\n }\r\n\r\n if (movimentacaoTransferenciaItem?.materialDiverso) {\r\n retorno = movimentacaoTransferenciaItem?.materialDiverso?.nome;\r\n }\r\n\r\n if (movimentacaoTransferenciaItem?.fichaTecnica) {\r\n retorno = movimentacaoTransferenciaItem?.fichaTecnica?.nome;\r\n }\r\n\r\n return retorno;\r\n }\r\n\r\n calcularCustoFichaTecnica(itemMovimentacao: ItemMovimentacao): void {\r\n if (itemMovimentacao.fichaTecnica) {\r\n\r\n if (itemMovimentacao.unidadeQuantidadeTotal === 'porcao') {\r\n itemMovimentacao.valorTotal = itemMovimentacao.fichaTecnica.custoTotal * itemMovimentacao.quantidadeTotal;\r\n } else {\r\n let quantidadeTotalEmGramas = 0;\r\n let quantidadePorcaoEmGramas = 0;\r\n\r\n if (itemMovimentacao.unidadeQuantidadeTotal === 'L' || itemMovimentacao.unidadeQuantidadeTotal === 'kg') {\r\n quantidadeTotalEmGramas = itemMovimentacao.quantidadeTotal * 1000;\r\n } else {\r\n quantidadeTotalEmGramas = itemMovimentacao.quantidadeTotal;\r\n }\r\n\r\n if (itemMovimentacao.fichaTecnica.unidadeQuantidadePorcao === 'L' || itemMovimentacao.fichaTecnica.unidadeQuantidadePorcao === 'kg') {\r\n quantidadePorcaoEmGramas = itemMovimentacao.fichaTecnica.quantidadePorcao * 1000;\r\n } else {\r\n quantidadePorcaoEmGramas = itemMovimentacao.fichaTecnica.quantidadePorcao;\r\n }\r\n\r\n itemMovimentacao.valorTotal = quantidadeTotalEmGramas * itemMovimentacao.fichaTecnica.custoTotal / quantidadePorcaoEmGramas;\r\n }\r\n }\r\n }\r\n\r\n converterQuantidadeTotalPorUnidade(itemMovimentacao: ItemMovimentacao, unidade: string): void {\r\n if (itemMovimentacao.unidadeQuantidadeTotal === 'porcao') {\r\n itemMovimentacao.quantidadeTotal = 0;\r\n itemMovimentacao.valorTotal = 0;\r\n }\r\n\r\n if (unidade === 'porcao' && (itemMovimentacao.unidadeQuantidadeTotal === 'kg' ||\r\n itemMovimentacao.unidadeQuantidadeTotal === 'g')) {\r\n itemMovimentacao.valorTotal = 0;\r\n }\r\n\r\n itemMovimentacao.unidadeQuantidadeTotal = unidade;\r\n itemMovimentacao.quantidadeTotal = this.truncarValor(itemMovimentacao.quantidadeTotal);\r\n\r\n if (unidade === 'porcao') {\r\n itemMovimentacao.quantidadeTotal = 0;\r\n itemMovimentacao.unidadeQuantidadeTotal = unidade;\r\n }\r\n }\r\n\r\n truncarValor(valor: number): number {\r\n const valorTemp = valor * 100;\r\n return Math.trunc(valorTemp) / 100;\r\n }\r\n\r\n campoPreenchido(quantidadeTotal: number): boolean {\r\n return !quantidadeTotal || quantidadeTotal === 0;\r\n }\r\n\r\n verificarValorMaiorQueEstoque(itemMovimentacao: ItemMovimentacao): boolean {\r\n let retorno = false;\r\n let quantidadeEstoque = 0;\r\n let quantidadeTotal = 0;\r\n\r\n quantidadeTotal = this.calcularQuantidadeTotalItemMovimentacao(itemMovimentacao);\r\n\r\n if (itemMovimentacao.alimentoId) {\r\n quantidadeEstoque = itemMovimentacao.alimento.quantidadeEstoque;\r\n retorno = quantidadeEstoque < quantidadeTotal;\r\n }\r\n\r\n if (itemMovimentacao.materialDiversoId) {\r\n quantidadeEstoque = itemMovimentacao.materialDiverso.quantidadeEstoque;\r\n retorno = quantidadeEstoque < quantidadeTotal;\r\n }\r\n if (itemMovimentacao.fichaTecnicaId) {\r\n quantidadeEstoque = itemMovimentacao.fichaTecnica.quantidadeEstoque;\r\n retorno = quantidadeEstoque < quantidadeTotal;\r\n }\r\n\r\n return retorno;\r\n }\r\n\r\n verificarValorMaiorQueEstoqueMovimentacaoTransferenciaItem(movimentacaoTransferenciaItem: MovimentacaoTransferenciaItem): boolean {\r\n let retorno = false;\r\n let quantidadeEstoque = 0;\r\n let quantidadeTotal = 0;\r\n\r\n quantidadeTotal = this.calcularQuantidadeTotalMovimentacaoTransferenciaItem(movimentacaoTransferenciaItem);\r\n\r\n if (movimentacaoTransferenciaItem.alimentoId) {\r\n quantidadeEstoque = movimentacaoTransferenciaItem.alimento.quantidadeEstoque;\r\n retorno = quantidadeEstoque < quantidadeTotal;\r\n }\r\n\r\n if (movimentacaoTransferenciaItem.materialDiversoId) {\r\n quantidadeEstoque = movimentacaoTransferenciaItem.materialDiverso.quantidadeEstoque;\r\n retorno = quantidadeEstoque < quantidadeTotal;\r\n }\r\n if (movimentacaoTransferenciaItem.fichaTecnicaId) {\r\n quantidadeEstoque = movimentacaoTransferenciaItem.fichaTecnica.quantidadeEstoque;\r\n retorno = quantidadeEstoque < quantidadeTotal;\r\n }\r\n\r\n return retorno;\r\n }\r\n\r\n calcularQuantidadeTotalItemMovimentacao(itemMovimentacao: ItemMovimentacao): number {\r\n let retorno = 0;\r\n\r\n if (itemMovimentacao.unidadeCompraId != null) {\r\n if (itemMovimentacao.alimento) {\r\n const unidadeCompraSelecionada = itemMovimentacao.alimento.unidadeCompra.find(x => x.id === itemMovimentacao.unidadeCompraId);\r\n\r\n let quantidadeUnidadeCompra = 0;\r\n if (unidadeCompraSelecionada.unidadeQuantidadeReferencia != null) {\r\n if (unidadeCompraSelecionada.unidadeQuantidadeReferencia === 'kg' || unidadeCompraSelecionada.unidadeQuantidadeReferencia === 'L') {\r\n quantidadeUnidadeCompra = unidadeCompraSelecionada.quantidadeReferencia * 1000;\r\n } else {\r\n quantidadeUnidadeCompra = unidadeCompraSelecionada.quantidadeReferencia;\r\n }\r\n } else {\r\n quantidadeUnidadeCompra = unidadeCompraSelecionada.quantidadeReferencia;\r\n }\r\n\r\n retorno = itemMovimentacao.quantidadeTotal * quantidadeUnidadeCompra;\r\n }\r\n\r\n if (itemMovimentacao.materialDiverso) {\r\n const unidadeCompraSelecionada = itemMovimentacao.materialDiverso.unidadeCompra.find(x => x.id === itemMovimentacao.unidadeCompraId);\r\n\r\n let quantidadeUnidadeCompra = 0;\r\n if (unidadeCompraSelecionada.unidadeQuantidadeReferencia != null) {\r\n if (unidadeCompraSelecionada.unidadeQuantidadeReferencia === 'kg' || unidadeCompraSelecionada.unidadeQuantidadeReferencia === 'L') {\r\n quantidadeUnidadeCompra = unidadeCompraSelecionada.quantidadeReferencia * 1000;\r\n } else {\r\n quantidadeUnidadeCompra = unidadeCompraSelecionada.quantidadeReferencia;\r\n }\r\n } else {\r\n quantidadeUnidadeCompra = unidadeCompraSelecionada.quantidadeReferencia;\r\n }\r\n\r\n retorno = itemMovimentacao.quantidadeTotal * quantidadeUnidadeCompra;\r\n }\r\n }\r\n\r\n if (itemMovimentacao.fichaTecnica) {\r\n if (itemMovimentacao.unidadeQuantidadeTotal === 'kg' || itemMovimentacao.unidadeQuantidadeTotal === 'g') {\r\n retorno = this.converterParaGrama(itemMovimentacao.quantidadeTotal, itemMovimentacao.unidadeQuantidadeTotal);\r\n }\r\n\r\n if (itemMovimentacao.unidadeQuantidadeTotal === 'porcao') {\r\n if (itemMovimentacao.fichaTecnica) {\r\n retorno = this.converterParaGrama(itemMovimentacao.fichaTecnica.quantidadePorcao, itemMovimentacao.fichaTecnica.unidadeQuantidadePorcao) * itemMovimentacao.quantidadeTotal;\r\n }\r\n }\r\n }\r\n\r\n return retorno;\r\n }\r\n\r\n calcularQuantidadeTotalMovimentacaoTransferenciaItem(movimentacaoTransferenciaItem: MovimentacaoTransferenciaItem): number {\r\n let retorno = 0;\r\n\r\n if (movimentacaoTransferenciaItem.unidadeCompraId != null) {\r\n if (movimentacaoTransferenciaItem.alimento) {\r\n const unidadeCompraSelecionada = movimentacaoTransferenciaItem.alimento.unidadeCompra.find(x => x.id === movimentacaoTransferenciaItem.unidadeCompraId);\r\n\r\n let quantidadeUnidadeCompra = 0;\r\n if (unidadeCompraSelecionada.unidadeQuantidadeReferencia != null) {\r\n if (unidadeCompraSelecionada.unidadeQuantidadeReferencia === 'kg' || unidadeCompraSelecionada.unidadeQuantidadeReferencia === 'L') {\r\n quantidadeUnidadeCompra = unidadeCompraSelecionada.quantidadeReferencia * 1000;\r\n } else {\r\n quantidadeUnidadeCompra = unidadeCompraSelecionada.quantidadeReferencia;\r\n }\r\n } else {\r\n quantidadeUnidadeCompra = unidadeCompraSelecionada.quantidadeReferencia;\r\n }\r\n\r\n retorno = movimentacaoTransferenciaItem.quantidadeTotal * quantidadeUnidadeCompra;\r\n }\r\n\r\n if (movimentacaoTransferenciaItem.materialDiverso) {\r\n const unidadeCompraSelecionada = movimentacaoTransferenciaItem.materialDiverso.unidadeCompra.find(x => x.id === movimentacaoTransferenciaItem.unidadeCompraId);\r\n\r\n let quantidadeUnidadeCompra = 0;\r\n if (unidadeCompraSelecionada.unidadeQuantidadeReferencia != null) {\r\n if (unidadeCompraSelecionada.unidadeQuantidadeReferencia === 'kg' || unidadeCompraSelecionada.unidadeQuantidadeReferencia === 'L') {\r\n quantidadeUnidadeCompra = unidadeCompraSelecionada.quantidadeReferencia * 1000;\r\n } else {\r\n quantidadeUnidadeCompra = unidadeCompraSelecionada.quantidadeReferencia;\r\n }\r\n } else {\r\n quantidadeUnidadeCompra = unidadeCompraSelecionada.quantidadeReferencia;\r\n }\r\n\r\n retorno = movimentacaoTransferenciaItem.quantidadeTotal * quantidadeUnidadeCompra;\r\n }\r\n }\r\n\r\n if (movimentacaoTransferenciaItem.fichaTecnica) {\r\n if (movimentacaoTransferenciaItem.unidadeQuantidadeTotal === 'kg' || movimentacaoTransferenciaItem.unidadeQuantidadeTotal === 'g') {\r\n retorno = this.converterParaGrama(movimentacaoTransferenciaItem.quantidadeTotal, movimentacaoTransferenciaItem.unidadeQuantidadeTotal);\r\n }\r\n\r\n if (movimentacaoTransferenciaItem.unidadeQuantidadeTotal === 'porcao') {\r\n if (movimentacaoTransferenciaItem.fichaTecnica) {\r\n retorno = this.converterParaGrama(movimentacaoTransferenciaItem.fichaTecnica.quantidadePorcao, movimentacaoTransferenciaItem.fichaTecnica.unidadeQuantidadePorcao)\r\n * movimentacaoTransferenciaItem.quantidadeTotal;\r\n }\r\n }\r\n }\r\n\r\n return retorno;\r\n }\r\n\r\n converterParaGrama(item: number, unidadeItem: string): number {\r\n let response = unidadeItem === 'kg' || unidadeItem === 'L' ? (item * 1000) : item;\r\n return response;\r\n }\r\n\r\n}\r\n","import { ItemOrdemSaida } from './itemOrdemSaida';\r\nimport { Motivo } from 'src/app/shared/models/motivo';\r\nimport { NotaFiscal } from 'src/app/shared/models/notaFiscal';\r\n\r\n\r\nexport class OrdemSaida {\r\n id: string;\r\n nome: string;\r\n dataCadastro: Date;\r\n dataAtualizacao: Date;\r\n tipo: boolean;\r\n qtdItens: number;\r\n empresaId: string;\r\n usuarioId: string;\r\n fornecedor: string;\r\n valor: number;\r\n status: boolean;\r\n planejamentoId: string;\r\n itemOrdemSaida: ItemOrdemSaida[];\r\n motivo: Motivo[];\r\n collapse: boolean;\r\n notaFiscal: NotaFiscal;\r\n dataPlanejamento: Date;\r\n ordemSaidaMapaProducaoNome: string;\r\n ordemSaidaServicoNome: string;\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { LocalStorageObject } from 'src/app/core/services/localStorageObject.service';\r\nimport { Planejamento } from 'src/app/shared/models/planejamento';\r\nimport { ProdutoItem } from 'src/app/shared/models/produtoItem';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class MapaProducaoHelperService {\r\n\r\n constructor(\r\n private readonly localStorageObject: LocalStorageObject,\r\n ) {\r\n }\r\n\r\n today() {\r\n return this.dateOnly(new Date());\r\n }\r\n\r\n beginningOfPeriod(d, periodUom, startDow) {\r\n switch (periodUom) {\r\n case 'year':\r\n return new Date(d.getFullYear(), 0);\r\n case 'month':\r\n return new Date(d.getFullYear(), d.getMonth());\r\n case 'week':\r\n return this.beginningOfWeek(d, startDow);\r\n default:\r\n return null;\r\n }\r\n }\r\n\r\n daysOfWeek(weekStart: any): Date[] {\r\n return Array(7)\r\n .fill('')\r\n .map((_, i: number) => this.addDays(weekStart, i));\r\n }\r\n\r\n addDays(d: any, days: number) {\r\n return new Date(\r\n d.getFullYear(),\r\n d.getMonth(),\r\n d.getDate() + days,\r\n d.getHours(),\r\n d.getMinutes(),\r\n d.getSeconds()\r\n );\r\n }\r\n\r\n supportsIntl() {\r\n return typeof Intl !== 'undefined';\r\n }\r\n\r\n // Nome dias da semana formatado - Inicio\r\n\r\n getFormattedWeekdayNames(locale: string, format: any, startingDayOfWeek: number) {\r\n if (!this.supportsIntl()) {\r\n return Array(7).fill('');\r\n }\r\n\r\n const formatter = new Intl.DateTimeFormat(locale, { weekday: format });\r\n return Array(7)\r\n .fill('')\r\n .map((_, i) =>\r\n formatter.format(new Date(2017, 0, (i + 1 + startingDayOfWeek) % 7))\r\n );\r\n }\r\n\r\n // Nome dias da semana formatado - Fim\r\n\r\n getDefaultBrowserLocale() {\r\n if (typeof navigator === 'undefined') { return 'unk'; }\r\n\r\n return (navigator.languages && navigator.languages.length\r\n ? navigator.languages[0]\r\n : navigator.language\r\n ).toLowerCase();\r\n }\r\n\r\n beginningOfWeek(d, startDow) {\r\n return this.addDays(d, (startDow - d.getDay() - 7) % -7);\r\n }\r\n\r\n endOfWeek(d, startDow) {\r\n return this.addDays(this.beginningOfWeek(d, startDow), 7);\r\n }\r\n\r\n dateOnly(d) {\r\n\r\n const d2 = new Date(d);\r\n d2.setHours(0, 0, 0, 0);\r\n return d2;\r\n }\r\n\r\n incrementPeriod(d: Date, uom: string, count: number) {\r\n return new Date(\r\n d.getFullYear() + (uom === 'year' ? count : 0),\r\n d.getMonth() + (uom === 'month' ? count : 0),\r\n d.getDate() + (uom === 'week' ? count * 7 : 0)\r\n );\r\n }\r\n\r\n dayDiff(d1: any, d2: any) {\r\n const startDate = new Date(d1.getFullYear(), d1.getMonth(), d1.getDate());\r\n const endDate = new Date(d2.getFullYear(), d2.getMonth(), d2.getDate());\r\n endDate.setUTCHours(0, 0, 0, 0);\r\n startDate.setUTCHours(0, 0, 0, 0);\r\n return (endDate.getTime() - startDate.getTime()) / 86400000;\r\n }\r\n\r\n\r\n\r\n isSameMonth(d1, d2) {\r\n return (\r\n d1.getFullYear() === d2.getFullYear() && d1.getMonth() === d2.getMonth()\r\n );\r\n }\r\n\r\n getFormattedMonthNames(locale, format) {\r\n\r\n if (!this.supportsIntl()) { return Array(12).fill(''); }\r\n const formatter = new Intl.DateTimeFormat(locale, { month: format });\r\n\r\n return Array(12)\r\n .fill('')\r\n .map((_, i) => formatter.format(new Date(2017, i, 1)));\r\n }\r\n\r\n formattedPeriod(startDate: Date, endDate: Date, periodUom: string, monthNames: Array) {\r\n const singleYear = startDate.getFullYear() === endDate.getFullYear();\r\n const singleMonth = this.isSameMonth(startDate, endDate);\r\n const isYear = periodUom === 'year';\r\n const isMonth = periodUom === 'month';\r\n const isWeek = !isYear && !isMonth;\r\n const s = [];\r\n\r\n if (singleMonth && singleYear) {\r\n s.push(startDate.getDate());\r\n s.push(' \\u2013 ');\r\n s.push(endDate.getDate());\r\n s.push(', ');\r\n s.push(monthNames[startDate.getMonth()]);\r\n s.push(' ');\r\n s.push(endDate.getFullYear());\r\n }\r\n\r\n if (!singleMonth && singleYear) {\r\n s.push(startDate.getDate());\r\n s.push(', ');\r\n s.push(monthNames[startDate.getMonth()]);\r\n s.push(' até ');\r\n s.push(endDate.getDate());\r\n s.push(', ');\r\n s.push(monthNames[endDate.getMonth()]);\r\n s.push(' ');\r\n s.push(endDate.getFullYear());\r\n }\r\n\r\n if (!singleMonth && !singleYear) {\r\n s.push(startDate.getDate());\r\n s.push(', ');\r\n s.push(monthNames[startDate.getMonth()]);\r\n s.push(' ');\r\n s.push(startDate.getFullYear());\r\n s.push(' até ');\r\n s.push(endDate.getDate());\r\n s.push(', ');\r\n s.push(monthNames[endDate.getMonth()]);\r\n s.push(' ');\r\n s.push(endDate.getFullYear());\r\n }\r\n\r\n return s.join('');\r\n }\r\n\r\n nomeItemPlanejamento(planejamento: Planejamento): string {\r\n let response = '';\r\n\r\n if (planejamento?.alimento) {\r\n response = planejamento?.alimento?.nome;\r\n }\r\n\r\n if (planejamento?.materialDiverso) {\r\n response = planejamento?.materialDiverso?.nome;\r\n }\r\n\r\n if (planejamento?.fichaTecnica) {\r\n response = planejamento?.fichaTecnica?.nome;\r\n }\r\n\r\n if (planejamento?.produto) {\r\n response = planejamento?.produto?.nome;\r\n }\r\n\r\n return response;\r\n }\r\n\r\n nomeClassePlanejamento(planejamento: Planejamento, tipoVisivel?: boolean): string {\r\n let response = '';\r\n\r\n if (planejamento?.alimento?.classe) {\r\n response = `${planejamento?.alimento?.classe?.nome} ${tipoVisivel ? '(Classe Alimento)' : ''}`;\r\n }\r\n\r\n if (planejamento?.materialDiverso?.classeMaterialDiverso) {\r\n response = `${planejamento?.materialDiverso?.classeMaterialDiverso?.nome} ${tipoVisivel ? '(Classe Material Diverso)' : ''}`;\r\n }\r\n\r\n if (planejamento?.fichaTecnica?.tipoPreparacao) {\r\n response = `${planejamento?.fichaTecnica?.tipoPreparacao?.nome} ${tipoVisivel ? '(Tipo Preparação)' : ''}`;\r\n }\r\n\r\n if (planejamento?.produtoId) {\r\n response = `Produto`;\r\n }\r\n\r\n return response;\r\n }\r\n\r\n formatarTelefone(v: string) {\r\n let response = '';\r\n if (v) {\r\n let r = v.replace(/\\D/g, '');\r\n r = r.replace(/^0/, '');\r\n if (r.length > 10) {\r\n r = r.replace(/^(\\d\\d)(\\d{5})(\\d{4}).*/, '($1) $2-$3');\r\n } else if (r.length > 5) {\r\n r = r.replace(/^(\\d\\d)(\\d{4})(\\d{0,4}).*/, '($1) $2-$3');\r\n } else if (r.length > 2) {\r\n r = r.replace(/^(\\d\\d)(\\d{0,5})/, '($1) $2');\r\n } else {\r\n r = r.replace(/^(\\d*)/, '($1');\r\n }\r\n response = r;\r\n }\r\n return response;\r\n }\r\n\r\n // Calculos\r\n\r\n calcularCustoPercapita(planejamento: Planejamento, filtroTipoValor: boolean): number {\r\n let response = 0;\r\n\r\n if (planejamento?.fichaTecnica) {\r\n\r\n if (planejamento.pesoRendimento > 0) {\r\n if (planejamento.numeroComensais > 0) {\r\n response = ((this.converterParaGrama(planejamento.pesoRendimento, planejamento.unidadePesoRendimento) /\r\n this.converterParaGrama(planejamento.fichaTecnica.rendimentoTotal, planejamento.fichaTecnica.unidadeRendimentoTotal)) *\r\n (planejamento.fichaTecnica.custoTotal * planejamento.fichaTecnica.numeroPorcao)) / planejamento.numeroComensais;\r\n } else {\r\n response = 0;\r\n }\r\n }\r\n\r\n if (planejamento.numeroPorcoes > 0 && !planejamento.pesoRendimento && !planejamento.pesoPerCapita) {\r\n if (planejamento.fichaTecnica) {\r\n response = (planejamento.numeroComensais * planejamento.fichaTecnica.custoTotal) / planejamento.numeroComensais;\r\n }\r\n }\r\n\r\n if (planejamento.pesoPerCapita > 0) {\r\n response = (planejamento.fichaTecnica.custoTotal * this.converterParaGrama(planejamento.pesoPerCapita, planejamento.unidadePesoPerCapita)) /\r\n this.converterParaGrama(planejamento.fichaTecnica.quantidadePorcao, planejamento.fichaTecnica.unidadeQuantidadePorcao);\r\n }\r\n\r\n if (planejamento.numeroComensais === 0) {\r\n response = 0;\r\n } else {\r\n if (filtroTipoValor) {\r\n response = response * planejamento.numeroComensais;\r\n }\r\n }\r\n\r\n }\r\n\r\n if (planejamento?.alimento) {\r\n if (planejamento.pesoRendimento > 0) {\r\n response = this.truncarValor(((this.localStorageObject?.empresaSelecionada?.custoMedioAtivo ? planejamento?.alimento?.custoMedio : planejamento?.alimento?.precoQuilo) *\r\n this.converterParaGrama(planejamento.pesoRendimento, planejamento.unidadePesoRendimento)) / 1000);\r\n if (planejamento.numeroComensais === 0) {\r\n response = 0;\r\n } else {\r\n if (filtroTipoValor) {\r\n response = response;\r\n } else {\r\n response = response / planejamento.numeroComensais;\r\n }\r\n }\r\n }\r\n\r\n if (planejamento.pesoPerCapita > 0) {\r\n response = this.truncarValor(((this.localStorageObject?.empresaSelecionada?.custoMedioAtivo ? planejamento?.alimento?.custoMedio : planejamento?.alimento?.precoQuilo) *\r\n this.converterParaGrama(planejamento.pesoPerCapita, planejamento.unidadePesoPerCapita)) / 1000);\r\n if (planejamento.numeroComensais === 0) {\r\n response = 0;\r\n } else {\r\n if (filtroTipoValor) {\r\n response = response;\r\n } else {\r\n response = response / planejamento.numeroComensais;\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (planejamento?.materialDiverso) {\r\n // tslint:disable-next-line: max-line-length\r\n response = (this.localStorageObject?.empresaSelecionada?.custoMedioAtivo ? planejamento?.materialDiverso?.custoMedio : planejamento?.materialDiverso?.precoUnidade) * planejamento.quantidadeMaterialDiverso;\r\n if (planejamento.numeroComensais === 0) {\r\n response = 0;\r\n } else {\r\n if (filtroTipoValor) {\r\n response = response;\r\n } else {\r\n response = response / planejamento.numeroComensais;\r\n }\r\n }\r\n }\r\n\r\n if (planejamento?.produto?.produtoItem) {\r\n planejamento?.produto?.produtoItem.forEach(produtoItem => {\r\n\r\n if (produtoItem?.fichaTecnica) {\r\n\r\n if (produtoItem.pesoRendimento > 0) {\r\n if (planejamento.numeroComensais > 0) {\r\n response = ((this.converterParaGrama(produtoItem.pesoRendimento, produtoItem.unidadePesoRendimento) /\r\n this.converterParaGrama(produtoItem.fichaTecnica.rendimentoTotal, produtoItem.fichaTecnica.unidadeRendimentoTotal)) *\r\n (produtoItem.fichaTecnica.custoTotal * produtoItem.fichaTecnica.numeroPorcao)) / planejamento.numeroComensais;\r\n } else {\r\n response = 0;\r\n }\r\n }\r\n\r\n if (produtoItem.numeroPorcoes > 0 && !produtoItem.pesoRendimento && !produtoItem.pesoPerCapita) {\r\n if (produtoItem.fichaTecnica) {\r\n response = (planejamento.numeroComensais * produtoItem.fichaTecnica.custoTotal) / planejamento.numeroComensais;\r\n }\r\n }\r\n\r\n if (produtoItem.pesoPerCapita > 0) {\r\n response = (produtoItem.fichaTecnica.custoTotal * this.converterParaGrama(produtoItem.pesoPerCapita, produtoItem.unidadePesoPerCapita)) /\r\n this.converterParaGrama(produtoItem.fichaTecnica.quantidadePorcao, produtoItem.fichaTecnica.unidadeQuantidadePorcao);\r\n }\r\n\r\n if (planejamento.numeroComensais === 0) {\r\n response = 0;\r\n } else {\r\n if (filtroTipoValor) {\r\n response = response * planejamento.numeroComensais;\r\n }\r\n }\r\n\r\n }\r\n\r\n if (produtoItem?.alimento) {\r\n response = this.truncarValor(((this.localStorageObject?.empresaSelecionada?.custoMedioAtivo ? produtoItem?.alimento?.custoMedio : produtoItem?.alimento?.precoQuilo) *\r\n this.converterParaGrama(produtoItem.pesoRendimento, produtoItem.unidadePesoRendimento)) / 1000);\r\n if (planejamento.numeroComensais === 0) {\r\n response = 0;\r\n } else {\r\n if (filtroTipoValor) {\r\n response = response;\r\n } else {\r\n response = response / planejamento.numeroComensais;\r\n }\r\n }\r\n }\r\n\r\n if (produtoItem?.materialDiverso) {\r\n // tslint:disable-next-line: max-line-length\r\n response = (this.localStorageObject?.empresaSelecionada?.custoMedioAtivo ? produtoItem?.materialDiverso?.custoMedio : produtoItem?.materialDiverso?.precoUnidade) * produtoItem.quantidadeMaterialDiverso;\r\n if (planejamento.numeroComensais === 0) {\r\n response = 0;\r\n } else {\r\n if (filtroTipoValor) {\r\n response = response;\r\n } else {\r\n response = response / planejamento.numeroComensais;\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n if (response > 0) {\r\n return response;\r\n } else {\r\n return 0;\r\n }\r\n }\r\n\r\n calcularSomaCustoTotalPercapita(listaPlanejamentoTemp: Planejamento[]) {\r\n let response = 0;\r\n\r\n listaPlanejamentoTemp.forEach(planejamentoTemp => {\r\n const calculo = this.calcularCustoPercapita(planejamentoTemp, false);\r\n if (calculo > 0) {\r\n response += calculo;\r\n }\r\n });\r\n\r\n return response;\r\n }\r\n\r\n calcularRendimento(planejamento: Planejamento): number {\r\n let response = 0;\r\n\r\n if (planejamento.pesoRendimento > 0) {\r\n response = this.converterParaGrama(planejamento.pesoRendimento, planejamento.unidadePesoRendimento);\r\n }\r\n\r\n if (planejamento.pesoPerCapita > 0) {\r\n response = this.converterParaGrama(planejamento.pesoPerCapita, planejamento.unidadePesoPerCapita) * planejamento.numeroComensais;\r\n }\r\n\r\n if (planejamento.numeroPorcoes > 0 && !planejamento.pesoRendimento && !planejamento.pesoPerCapita) {\r\n if (planejamento.fichaTecnica) {\r\n response = this.converterParaGrama(planejamento.fichaTecnica.quantidadePorcao, planejamento.fichaTecnica.unidadeQuantidadePorcao) * planejamento.numeroComensais;\r\n }\r\n }\r\n\r\n return response;\r\n }\r\n\r\n calcularRendimentoProdutoItem(produtoItem: ProdutoItem, numeroComensais: number): number {\r\n let response = 0;\r\n\r\n if (produtoItem.pesoRendimento > 0) {\r\n response = this.converterParaGrama(produtoItem.pesoRendimento, produtoItem.unidadePesoRendimento) * numeroComensais;\r\n }\r\n\r\n if (produtoItem.pesoPerCapita > 0) {\r\n response = this.converterParaGrama(produtoItem.pesoPerCapita, produtoItem.unidadePesoPerCapita) * numeroComensais;\r\n }\r\n\r\n if (produtoItem.numeroPorcoes > 0 && !produtoItem.pesoRendimento && !produtoItem.pesoPerCapita) {\r\n if (produtoItem.fichaTecnica) {\r\n response = this.converterParaGrama(produtoItem.fichaTecnica.quantidadePorcao, produtoItem.fichaTecnica.unidadeQuantidadePorcao) * numeroComensais;\r\n }\r\n }\r\n\r\n return response;\r\n }\r\n\r\n calcularPerCapita(planejamento: Planejamento): number {\r\n let response = 0;\r\n\r\n if (planejamento?.pesoRendimento > 0) {\r\n response = this.converterParaGrama(planejamento.pesoRendimento, planejamento.unidadePesoRendimento) / planejamento.numeroComensais;\r\n }\r\n\r\n if (planejamento?.pesoPerCapita > 0) {\r\n response = this.converterParaGrama(planejamento.pesoPerCapita, planejamento.unidadePesoPerCapita);\r\n }\r\n\r\n if (planejamento?.numeroPorcoes > 0 && !planejamento?.pesoRendimento && !planejamento?.pesoPerCapita) {\r\n if (planejamento?.fichaTecnica) {\r\n response = this.converterParaGrama(planejamento.fichaTecnica.quantidadePorcao, planejamento.fichaTecnica.unidadeQuantidadePorcao);\r\n }\r\n }\r\n\r\n if (planejamento?.numeroComensais > 0 && planejamento?.materialDiverso) {\r\n if (planejamento?.quantidadeMaterialDiverso > 0 && planejamento?.unidadeMaterialDiverso) {\r\n response = planejamento?.quantidadeMaterialDiverso / planejamento.numeroComensais;\r\n }\r\n\r\n if (planejamento?.quantidadeMaterialDiversoPerCapita > 0 && planejamento?.unidadeMaterialDiversoPerCapita) {\r\n response = planejamento?.quantidadeMaterialDiversoPerCapita;\r\n }\r\n }\r\n\r\n return response;\r\n }\r\n\r\n calcularTotalMaterialDiverso(planejamento: Planejamento): number {\r\n let response = 0;\r\n\r\n if (planejamento?.quantidadeMaterialDiverso > 0) {\r\n response = planejamento?.quantidadeMaterialDiverso;\r\n }\r\n\r\n if (planejamento?.quantidadeMaterialDiversoPerCapita > 0) {\r\n response = planejamento?.quantidadeMaterialDiversoPerCapita * planejamento.numeroComensais;\r\n }\r\n\r\n return response;\r\n }\r\n\r\n calcularPerCapitaProdutoItem(produtoItem: ProdutoItem, numeroComensais: number): number {\r\n let response = 0;\r\n\r\n if (produtoItem?.pesoRendimento > 0) {\r\n response = this.converterParaGrama(produtoItem.pesoRendimento, produtoItem.unidadePesoRendimento) / numeroComensais;\r\n }\r\n\r\n if (produtoItem?.pesoPerCapita > 0) {\r\n response = this.converterParaGrama(produtoItem.pesoPerCapita, produtoItem.unidadePesoPerCapita);\r\n }\r\n\r\n if (produtoItem?.numeroPorcoes > 0 && !produtoItem?.pesoRendimento && !produtoItem?.pesoPerCapita) {\r\n if (produtoItem?.fichaTecnica) {\r\n response = this.converterParaGrama(produtoItem.fichaTecnica.quantidadePorcao, produtoItem.fichaTecnica.unidadeQuantidadePorcao);\r\n }\r\n }\r\n\r\n if (numeroComensais > 0 && produtoItem?.quantidadeMaterialDiverso && produtoItem?.unidadeMaterialDiverso) {\r\n if (produtoItem?.materialDiverso) {\r\n response = produtoItem.quantidadeMaterialDiverso / numeroComensais;\r\n }\r\n }\r\n\r\n return response;\r\n }\r\n\r\n truncarValor(valor: number) {\r\n const valorTemp = Math.trunc(valor * 100) / 100;\r\n return valorTemp;\r\n }\r\n\r\n converterParaGrama(item: number, unidadeItem: string) {\r\n let response = 0;\r\n\r\n if (unidadeItem === 'kg' || unidadeItem === 'L') {\r\n response = item * 1000;\r\n } else {\r\n response = item;\r\n }\r\n\r\n return response;\r\n }\r\n\r\n toKj(kcal: number) {\r\n let response = kcal * 4.184;\r\n\r\n response = Math.trunc(response * 100) / 100;\r\n\r\n return response;\r\n }\r\n\r\n formatarDecimal(\r\n valor: any,\r\n decimalCount = 2,\r\n decimal = ',',\r\n thousands = '.'\r\n ) {\r\n if (valor === 0 || valor === null) {\r\n return '-';\r\n }\r\n let i;\r\n try {\r\n decimalCount = Math.abs(decimalCount);\r\n decimalCount = isNaN(decimalCount) ? 2 : decimalCount;\r\n\r\n const negativeSign = valor < 0 ? '-' : '';\r\n\r\n // tslint:disable-next-line: radix\r\n i = parseInt(\r\n (valor = Math.abs(Number(valor) || 0).toFixed(decimalCount))\r\n ).toString();\r\n const j = i.length > 3 ? i.length % 3 : 0;\r\n\r\n return (\r\n negativeSign +\r\n (j ? i.substr(0, j) + thousands : '') +\r\n i.substr(j).replace(/(\\d{3})(?=\\d)/g, '$1' + thousands) +\r\n (decimalCount\r\n ? decimal +\r\n Math.abs(valor - i)\r\n .toFixed(decimalCount)\r\n .slice(2)\r\n : '')\r\n );\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n }\r\n\r\n converterUnidadeMedida(value: any, unidadeMedida: any, liquido: boolean): any {\r\n\r\n if (value === '-') {\r\n value = 0;\r\n }\r\n\r\n if (unidadeMedida === 'L' || unidadeMedida === 'kg') {\r\n value = value * 1000;\r\n if (liquido === true) {\r\n if (value < 1000) {\r\n value = (Math.trunc(value * 100) / 100).toString();\r\n value = value.replace('.', ',');\r\n value = value + ' mL';\r\n } else {\r\n value = ((Math.trunc(value * 100) / 100) / 1000).toString();\r\n value = value.replace('.', ',');\r\n value = value + ' L';\r\n }\r\n } else {\r\n if (value < 1000) {\r\n value = (Math.trunc(value * 100) / 100).toString();\r\n value = value.replace('.', ',');\r\n value = value + ' g';\r\n } else {\r\n value = ((Math.trunc(value * 100) / 100) / 1000).toString();\r\n value = value.replace('.', ',');\r\n value = value + ' kg';\r\n }\r\n }\r\n } else {\r\n if (liquido === true) {\r\n if (value < 1000) {\r\n value = (Math.trunc(value * 100) / 100).toString();\r\n value = value.replace('.', ',');\r\n value = value + ' mL';\r\n } else {\r\n value = ((Math.trunc(value * 100) / 100) / 1000).toString();\r\n value = value.replace('.', ',');\r\n value = value + ' L';\r\n }\r\n } else {\r\n if (value < 1000) {\r\n value = (Math.trunc(value * 100) / 100).toString();\r\n value = value.replace('.', ',');\r\n value = value + ' g';\r\n } else {\r\n value = ((Math.trunc(value * 100) / 100) / 1000).toString();\r\n value = value.replace('.', ',');\r\n value = value + ' kg';\r\n }\r\n }\r\n }\r\n\r\n return value;\r\n }\r\n\r\n calcularUnidadeCompra(planejamento: Planejamento): number {\r\n let response = 0;\r\n\r\n if (planejamento.unidadeCompraId != null) {\r\n if (planejamento?.alimento) {\r\n let quantidadeUnidadeCompra = 1;\r\n const unidadeCompraSelecionada = planejamento.alimento?.unidadeCompra?.find(x => x.id === planejamento.unidadeCompraId);\r\n if (unidadeCompraSelecionada.unidadeQuantidadeReferencia != null) {\r\n if (unidadeCompraSelecionada.unidadeQuantidadeReferencia === 'kg' || unidadeCompraSelecionada.unidadeQuantidadeReferencia === 'L') {\r\n quantidadeUnidadeCompra = unidadeCompraSelecionada.quantidadeReferencia * 1000;\r\n } else {\r\n quantidadeUnidadeCompra = unidadeCompraSelecionada.quantidadeReferencia;\r\n }\r\n } else {\r\n quantidadeUnidadeCompra = unidadeCompraSelecionada.quantidadeReferencia;\r\n }\r\n\r\n response = planejamento.alimento.quantidadeEstoque / quantidadeUnidadeCompra;\r\n }\r\n\r\n if (planejamento?.materialDiverso) {\r\n const unidadeCompraSelecionada = planejamento.materialDiverso?.unidadeCompra?.find(x => x.id === planejamento.unidadeCompraId);\r\n response = planejamento.materialDiverso.quantidadeEstoque / unidadeCompraSelecionada.quantidadeReferencia;\r\n }\r\n }\r\n\r\n response = response > Math.round(response) ? Math.round(response) + 1 : response;\r\n\r\n return response;\r\n }\r\n\r\n calcularCampoQuantidadeEstoque(planejamento: Planejamento): number {\r\n planejamento.quantidadeEstoque = this.calcularUnidadeCompra(planejamento);\r\n return planejamento.quantidadeEstoque;\r\n }\r\n\r\n calcularCampoQuantidadeEstoqueFichaTecnica(planejamento: Planejamento): number {\r\n let response = 0;\r\n\r\n if (planejamento?.fichaTecnica) {\r\n response = planejamento.fichaTecnica.quantidadeEstoque / planejamento.fichaTecnica.quantidadePorcao;\r\n }\r\n\r\n return response;\r\n }\r\n\r\n}\r\n","import { DataPlanejamento } from './dataPlanejamento';\r\nimport { Planejamento } from 'src/app/shared/models/planejamento';\r\n\r\nexport class ClasseTipoPreparacaoPlanejamento {\r\n id: string;\r\n nome: string;\r\n dataCadastro: Date;\r\n dataAtualizacao: Date;\r\n empresaId: string;\r\n tipo: string;\r\n dataPlanejamento: DataPlanejamento[];\r\n planejamento: Planejamento[];\r\n}\r\n","import { TipoRefeicao } from 'src/app/shared/models/tipoRefeicao';\r\nimport { ClasseTipoPreparacaoPlanejamento } from './classeTipoPreparacaoPlanejamento';\r\nimport { DataPlanejamento } from './dataPlanejamento';\r\nimport { Planejamento } from 'src/app/shared/models/planejamento';\r\nimport { FichaTecnica } from 'src/app/shared/models/fichaTecnica';\r\nimport { ResumoNutrientes } from 'src/app/shared/models/resumoNutrientes';\r\n\r\nexport class TipoRefeicaoPlanejamento extends TipoRefeicao {\r\n classeTipoPreparacaoPlanejamento: ClasseTipoPreparacaoPlanejamento[];\r\n dataPlanejamento: DataPlanejamento[];\r\n\r\n\r\n planejamento: Planejamento[];\r\n listaFichaTecnica: FichaTecnica[];\r\n resumoNutrientes: ResumoNutrientes;\r\n}\r\n\r\n","
\r\n \r\n \r\n \r\n {{errorMessage}}\r\n
\r\n","import { Component, OnInit, Input, ContentChild, AfterContentInit } from '@angular/core';\r\nimport { NgModel, FormControlName } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'app-input',\r\n templateUrl: './input.component.html'\r\n})\r\nexport class InputComponent implements OnInit, AfterContentInit {\r\n\r\n @Input() label !: string;\r\n @Input() errorMessage !: string;\r\n @Input() showTip = true;\r\n\r\n input: any;\r\n\r\n @ContentChild(NgModel) model !: NgModel;\r\n\r\n @ContentChild(FormControlName) control !: FormControlName;\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n ngAfterContentInit() {\r\n this.input = this.model || this.control;\r\n if (this.input === undefined) {\r\n throw new Error('Esse componente precisa ser usado com uma diretiva ngModel ou formControlName');\r\n }\r\n }\r\n\r\n hasSuccess() {\r\n return this.input.valid && (this.input.dirty || this.input.touched);\r\n }\r\n\r\n hasError() {\r\n return this.input.invalid && (this.input.dirty || this.input.touched);\r\n }\r\n\r\n}\r\n","import { EventEmitter } from '@angular/core';\r\n\r\nexport class ModalBloqueioPlanoService {\r\n\r\n notificador = new EventEmitter();\r\n\r\n notificar(dados: any) {\r\n this.notificador.emit(dados);\r\n }\r\n\r\n}\r\n","import { SegmentoAtuacao } from './segmentoAtuacao';\r\nimport { UsuarioEmpresa } from './usuarioEmpresa';\r\nimport { ModulosImplementacao } from './modulosImplementacao';\r\nimport { Endereco } from './endereco';\r\nimport { PlanoEmpresa } from './planoEmpresa';\r\nimport { Impressao } from './impressao';\r\n\r\nexport class Empresa {\r\n id: string;\r\n nome: string;\r\n nomeFantasia: string;\r\n segmentoAtuacaoId: string;\r\n dataCadastro: Date;\r\n empresa: Empresa[];\r\n empresaPrincipalId: string;\r\n usuarioEmpresa: UsuarioEmpresa[];\r\n statusAcesso: boolean;\r\n cnpj: number;\r\n cpf: number;\r\n profissao: string;\r\n pagamentoAtual: boolean;\r\n implementacao: ModulosImplementacao[];\r\n endereco: Endereco;\r\n urlFoto: string;\r\n segmentoAtuacao: SegmentoAtuacao;\r\n permissaoPainelAdmin: string;\r\n ativo: boolean;\r\n planoEmpresaId: string;\r\n planoEmpresa: PlanoEmpresa;\r\n custoMedioAtivo: boolean;\r\n tipo: number;\r\n impressao: Impressao;\r\n impressaoId: string;\r\n ordemSaidaPorServico: boolean;\r\n}\r\n","export enum TipoUsuarioEnum {\r\n Sistema,\r\n ClienteResponsavel,\r\n}\r\n","export class FiltroMapaProducao {\r\n nome: string;\r\n empresaId: string;\r\n tamanhoPagina: number;\r\n pagina: number;\r\n}\r\n","export class FiltroOrdemSaida {\r\n dataPlanejamento: Date;\r\n mapaProducao: string[];\r\n tipoRefeicao: string[];\r\n empresaId: string;\r\n tamanhoPagina: number;\r\n pagina: number;\r\n}\r\n","export class FiltroPlanejamento {\r\n nome: string;\r\n dataInicio: Date;\r\n dataFim: Date;\r\n mapaProducaoId: string;\r\n listaMapaProducaoId: string[];\r\n mapaProducao: string[];\r\n tipoRefeicaoId: string[];\r\n empresaId: string;\r\n data: Date;\r\n dataDuplicar: Date[];\r\n dataRangerOrigem: Date[];\r\n dataInicioDuplicar: Date;\r\n quantidadeComensais: number;\r\n}\r\n","export class FiltroUsuarioEmpresa {\r\n nome: string;\r\n empresaId: string;\r\n usuarioId: string;\r\n ativo: boolean | null;\r\n excluido: boolean | null;\r\n termo: string;\r\n tamanhoPagina: number;\r\n pagina: number;\r\n}\r\n","import { PlanoEmpresaItem } from './planoEmpresaItem';\r\nimport { Plano } from './plano';\r\n\r\nexport class PlanoEmpresa {\r\n id: string;\r\n excluido: boolean;\r\n dataCadastro: Date;\r\n dataAtualizacao: Date;\r\n cancelado: boolean;\r\n dataInicio: Date;\r\n dataTermino: Date;\r\n planoId: string;\r\n plano: Plano;\r\n planoEmpresaItem: PlanoEmpresaItem[];\r\n}\r\n","import { Planejamento } from './planejamento';\r\n\r\nexport class TipoRefeicao {\r\n id: string;\r\n nome: string;\r\n dataCadastro: Date;\r\n dataAtualizacao: Date;\r\n empresaId: string;\r\n posicao: number;\r\n\r\n planejamento: Planejamento[];\r\n}\r\n","import { UsuarioEmpresa } from './usuarioEmpresa';\r\n\r\nexport class Usuario {\r\n id: string;\r\n nome: string;\r\n sobrenome: string;\r\n foto: string;\r\n email: string;\r\n senha: string;\r\n phoneNumber: string;\r\n urlFoto: string;\r\n senhaConfirmacao: string;\r\n usuarioEmpresa: UsuarioEmpresa[];\r\n tipoUsuario: number;\r\n permissoes: Object;\r\n superAdmin: boolean;\r\n\r\n perfilId: string;\r\n perfilNome: string;\r\n}\r\n","\r\n tamanhoNome ? nome : ''\" triggers=\"mouseenter:mouseleave\" [placement]=\"popoverPlacement\">\r\n \r\n {{nomeReduzido(nome, tamanhoNome)}}\r\n \r\n\r\n\r\n tamanhoNome ? nome : ''\" triggers=\"mouseenter:mouseleave\" [placement]=\"popoverPlacement\">\r\n \r\n {{nomeReduzido(nome, tamanhoNome)}}\r\n \r\n\r\n\r\n tamanhoNome ? nome : ''\" triggers=\"mouseenter:mouseleave\" [placement]=\"popoverPlacement\">\r\n \r\n {{nomeReduzido(nome, tamanhoNome)}}\r\n \r\n\r\n tamanhoNome ? nome : ''\" triggers=\"mouseenter:mouseleave\" [placement]=\"popoverPlacement\">\r\n \r\n {{nomeReduzido(nome, tamanhoNome)}}\r\n \r\n\r\n","import { Component, OnInit, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-nome-reduzido',\r\n templateUrl: './nome-reduzido.component.html',\r\n styleUrls: ['./nome-reduzido.component.scss']\r\n})\r\nexport class NomeReduzidoComponent implements OnInit {\r\n\r\n @Input() nome = '';\r\n @Input() alimentoId: string;\r\n @Input() fichaTecnicaId: string;\r\n @Input() materialDiversoId: string;\r\n @Input() produtoId: string;\r\n @Input() tamanhoNome = 16;\r\n @Input() popoverPlacement = 'top';\r\n @Input() popoverDisabled = false;\r\n @Input() cor: string;\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n nomeReduzido(nome: string, tamanhoNome): string {\r\n let retorno = '';\r\n\r\n if (nome.length > tamanhoNome) {\r\n retorno = nome.substring(0, tamanhoNome) + '...';\r\n } else {\r\n retorno = nome;\r\n }\r\n return retorno;\r\n }\r\n\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { Utils } from '../utils/index';\r\n\r\n@Pipe({\r\n name: 'decimal'\r\n})\r\nexport class DecimalPipe implements PipeTransform {\r\n\r\n // tslint:disable-next-line: max-line-length\r\n transform(value: any, unidadeMedida: any, digits: any, sufix: any, prefix: any, skipZero: any, qtdNaoSignificativa: any, emptyDesc: any, signed: any): any {\r\n if (emptyDesc === undefined) {\r\n emptyDesc = '-';\r\n }\r\n\r\n if (qtdNaoSignificativa && value <= qtdNaoSignificativa) {\r\n return emptyDesc;\r\n }\r\n\r\n if (value === undefined) {\r\n return emptyDesc;\r\n }\r\n\r\n // tslint:disable-next-line: triple-equals\r\n if (digits == 'regra-rotulo') {\r\n\r\n digits = (value < 10) ? 1 : 0;\r\n }\r\n\r\n let fixed;\r\n if (digits === 0) {\r\n fixed = parseFloat(value).toFixed(digits);\r\n } else {\r\n fixed = parseFloat(value).toFixed((digits || 2));\r\n }\r\n\r\n if (skipZero && parseFloat(fixed) === 0) {\r\n return emptyDesc;\r\n }\r\n\r\n let v = Utils.decimalMask(fixed, digits, ',', '.');\r\n\r\n if (!v) {\r\n return emptyDesc;\r\n }\r\n\r\n if (signed && fixed.startsWith('-')) {\r\n v = '-' + v;\r\n }\r\n\r\n return (prefix || '') + v + (sufix || '');\r\n }\r\n\r\n}\r\n","export class Utils {\r\n /**\r\n * filtrar array por string\r\n *\r\n * @param mainArr\r\n * @param searchText\r\n * @returns {any}\r\n */\r\n public static filtrarArrayPorString(mainArr, searchText): any {\r\n if (searchText === '') {\r\n return mainArr;\r\n }\r\n\r\n searchText = searchText.toLowerCase();\r\n\r\n return mainArr.filter(itemObj => {\r\n return this.searchInObj(itemObj, searchText);\r\n });\r\n }\r\n\r\n /**\r\n * Search in object\r\n *\r\n * @param itemObj\r\n * @param searchText\r\n * @returns {boolean}\r\n */\r\n public static searchInObj(itemObj, searchText): boolean {\r\n for (const prop in itemObj) {\r\n if (!itemObj.hasOwnProperty(prop)) {\r\n continue;\r\n }\r\n\r\n const value = itemObj[prop];\r\n\r\n if (typeof value === 'string') {\r\n if (this.searchInString(value, searchText)) {\r\n return true;\r\n }\r\n } else if (Array.isArray(value)) {\r\n if (this.searchInArray(value, searchText)) {\r\n return true;\r\n }\r\n }\r\n\r\n if (typeof value === 'object') {\r\n if (this.searchInObj(value, searchText)) {\r\n return true;\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Search in array\r\n *\r\n * @param arr\r\n * @param searchText\r\n * @returns {boolean}\r\n */\r\n public static searchInArray(arr, searchText): boolean {\r\n for (const value of arr) {\r\n if (typeof value === 'string') {\r\n if (this.searchInString(value, searchText)) {\r\n return true;\r\n }\r\n }\r\n\r\n if (typeof value === 'object') {\r\n if (this.searchInObj(value, searchText)) {\r\n return true;\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Search in string\r\n *\r\n * @param value\r\n * @param searchText\r\n * @returns {any}\r\n */\r\n public static searchInString(value, searchText): any {\r\n return value.toLowerCase().includes(searchText);\r\n }\r\n\r\n /**\r\n * Generate a unique GUID\r\n *\r\n * @returns {string}\r\n */\r\n public static generateGUID(): string {\r\n function S4(): string {\r\n return Math.floor((1 + Math.random()) * 0x10000)\r\n .toString(16)\r\n .substring(1);\r\n }\r\n\r\n return S4() + S4();\r\n }\r\n\r\n /**\r\n * Toggle in array\r\n *\r\n * @param item\r\n * @param array\r\n */\r\n public static toggleInArray(item, array): void {\r\n if (array.indexOf(item) === -1) {\r\n array.push(item);\r\n } else {\r\n array.splice(array.indexOf(item), 1);\r\n }\r\n }\r\n\r\n /**\r\n * Handleize\r\n *\r\n * @param text\r\n * @returns {string}\r\n */\r\n public static handleize(text): string {\r\n return text.toString().toLowerCase()\r\n .replace(/\\s+/g, '-') // Replace spaces with -\r\n .replace(/[^\\w\\-]+/g, '') // Remove all non-word chars\r\n .replace(/\\-\\-+/g, '-') // Replace multiple - with single -\r\n .replace(/^-+/, '') // Trim - from start of text\r\n .replace(/-+$/, ''); // Trim - from end of text\r\n }\r\n\r\n public static decimalMask(currentVal: any, decimalDigits: any, decimalSeparator: any, miliarSeparator: any) {\r\n\r\n if (decimalDigits === undefined) { decimalDigits = 2; }\r\n if (decimalSeparator === undefined) { decimalSeparator = ','; }\r\n if (miliarSeparator === undefined) { miliarSeparator = '.'; }\r\n\r\n currentVal = currentVal !== undefined && currentVal.toString().replace(/(?!-)\\D/g, '');\r\n\r\n if (currentVal) {\r\n\r\n currentVal = currentVal.replace(/^0+/, '');\r\n if (!currentVal) {\r\n currentVal = '0';\r\n }\r\n\r\n let decimal = currentVal;\r\n if (currentVal.length >= decimalDigits) {\r\n decimal = currentVal.substr(currentVal.length - decimalDigits, decimalDigits);\r\n }\r\n\r\n const num = currentVal.substring(0, currentVal.length - decimalDigits);\r\n\r\n let masked = '';\r\n\r\n if (decimal) {\r\n\r\n masked = decimal;\r\n\r\n const diff = decimalDigits - decimal.length;\r\n for (let i = 0; i < diff; i++) {\r\n masked = '0' + masked;\r\n }\r\n masked = ',' + masked;\r\n }\r\n\r\n if (num) {\r\n\r\n let fNum = '';\r\n for (let j = 0; j < num.length; j++) {\r\n if (j !== 0 && j % 3 === 0) {\r\n fNum = num[num.length - 1 - j] + miliarSeparator + fNum;\r\n } else {\r\n fNum = num[num.length - 1 - j] + fNum;\r\n }\r\n }\r\n\r\n masked = fNum + masked;\r\n } else {\r\n masked = '0' + masked;\r\n }\r\n\r\n currentVal = masked;\r\n }\r\n\r\n return currentVal;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { Utils } from '../utils';\r\n\r\n@Pipe({\r\n name: 'unidadeMedida'\r\n})\r\nexport class UnidadeMedidaPipe implements PipeTransform {\r\n\r\n transform(value: any, unidadeMedida: any, liquido: boolean): any {\r\n\r\n if (value === '-') {\r\n value = 0;\r\n }\r\n\r\n if (unidadeMedida === 'L' || unidadeMedida === 'kg') {\r\n value = value * 1000;\r\n if (liquido === true) {\r\n if (value < 1000) {\r\n value = (Math.trunc(value * 100) / 100).toString();\r\n value = value.replace('.', ',');\r\n value = value + ' mL';\r\n } else {\r\n value = ((Math.trunc(value * 100) / 100) / 1000).toString();\r\n value = value.replace('.', ',');\r\n value = value + ' L';\r\n }\r\n } else {\r\n if (value < 1000) {\r\n value = (Math.trunc(value * 100) / 100).toString();\r\n value = value.replace('.', ',');\r\n value = value + ' g';\r\n } else {\r\n value = ((Math.trunc(value * 100) / 100) / 1000).toString();\r\n value = value.replace('.', ',');\r\n value = value + ' kg';\r\n }\r\n }\r\n } else {\r\n if (liquido === true) {\r\n if (value < 1000) {\r\n value = (Math.trunc(value * 100) / 100).toString();\r\n value = value.replace('.', ',');\r\n value = value + ' mL';\r\n } else {\r\n value = ((Math.trunc(value * 100) / 100) / 1000).toString();\r\n value = value.replace('.', ',');\r\n value = value + ' L';\r\n }\r\n } else {\r\n if (value < 1000) {\r\n value = (Math.trunc(value * 100) / 100).toString();\r\n value = value.replace('.', ',');\r\n value = value + ' g';\r\n } else {\r\n value = ((Math.trunc(value * 100) / 100) / 1000).toString();\r\n value = value.replace('.', ',');\r\n value = value + ' kg';\r\n }\r\n }\r\n }\r\n\r\n return value;\r\n }\r\n}\r\n","import { CurrencyMaskConfig } from \"ng2-currency-mask\";\r\n\r\n\r\nexport const CustomCurrencyMaskConfig: CurrencyMaskConfig = {\r\n align: 'left',\r\n allowNegative: false,\r\n decimal: ',',\r\n precision: 2,\r\n prefix: '',\r\n suffix: '',\r\n thousands: '.'\r\n};\r\n","import { DropzoneConfigInterface } from 'ngx-dropzone-wrapper';\r\nimport { environment } from './../../../environments/environment';\r\n\r\nexport const DropzoneConfig: DropzoneConfigInterface = {\r\n // Change this to your upload POST address:\r\n url: environment.api + 'imagem/uploadFile',\r\n maxFilesize: 50,\r\n acceptedFiles: 'image/*'\r\n };\r\n","import { NgModule } from '@angular/core';\r\nimport { AccordionModule } from 'ngx-bootstrap/accordion';\r\nimport { BsDatepickerModule } from 'ngx-bootstrap/datepicker';\r\nimport { AlertModule } from 'ngx-bootstrap/alert';\r\nimport { BsDropdownModule } from 'ngx-bootstrap/dropdown';\r\nimport { PaginationModule } from 'ngx-bootstrap/pagination';\r\nimport { TabsModule } from 'ngx-bootstrap/tabs';\r\nimport { ModalModule } from 'ngx-bootstrap/modal';\r\n// import { TypeaheadModule } from 'ngx-bootstrap/typeahead';\r\nimport { ProgressbarModule } from 'ngx-bootstrap/progressbar';\r\nimport { TooltipModule } from 'ngx-bootstrap/tooltip';\r\nimport { PopoverModule } from 'ngx-bootstrap/popover';\r\nimport { SortableModule } from 'ngx-bootstrap/sortable';\r\nimport { ButtonsModule } from 'ngx-bootstrap/buttons';\r\n\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [\r\n AccordionModule.forRoot(),\r\n BsDatepickerModule.forRoot(),\r\n AlertModule.forRoot(),\r\n BsDropdownModule.forRoot(),\r\n PaginationModule.forRoot(),\r\n TabsModule.forRoot(),\r\n ModalModule.forRoot(),\r\n // TypeaheadModule.forRoot(),\r\n ProgressbarModule.forRoot(),\r\n TooltipModule.forRoot(),\r\n PopoverModule.forRoot(),\r\n SortableModule.forRoot(),\r\n ButtonsModule.forRoot()\r\n ],\r\n exports: [\r\n AccordionModule,\r\n BsDatepickerModule,\r\n AlertModule,\r\n BsDropdownModule,\r\n PaginationModule,\r\n TabsModule,\r\n ModalModule,\r\n // TypeaheadModule,\r\n TooltipModule,\r\n PopoverModule,\r\n SortableModule,\r\n ButtonsModule\r\n ]\r\n})\r\nexport class NgxbootstrapModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { FilterValueBooleanPipe } from './filterValueBoolean.pipe';\r\nimport { UnidadeMedidaPipe } from './unidadeMedida.pipe';\r\nimport { OrganizarListaPipe } from './organizarLista.pipe';\r\nimport { DecimalPipe } from './decimal.pipe';\r\nimport { CNPJPipe } from './cnpj.pipe';\r\nimport { PermissaoPipe } from './permissao.pipe';\r\nimport { DescricaoModuloPipe } from './descricaoModulo.pipe';\r\nimport { TipoPlanoPipe } from './tipo-plano.pipe';\r\nimport { ModuloPlanoPipe } from './moduloPlano.pipe';\r\nimport { TipoEmpresaPipe } from './tipoEmpresa.pipe';\r\nimport { MovimentacaoTransferenciaStatusPipe } from './movimentacaoTransferenciaStatus.pipe';\r\nimport { StatusPedidoClienteResponsavelPipe } from './statusPedidoClienteResponsavel.pipe';\r\n\r\n@NgModule({\r\n declarations: [\r\n FilterValueBooleanPipe,\r\n UnidadeMedidaPipe,\r\n OrganizarListaPipe,\r\n DecimalPipe,\r\n CNPJPipe,\r\n PermissaoPipe,\r\n DescricaoModuloPipe,\r\n TipoPlanoPipe,\r\n ModuloPlanoPipe,\r\n TipoEmpresaPipe,\r\n StatusPedidoClienteResponsavelPipe,\r\n MovimentacaoTransferenciaStatusPipe,\r\n ],\r\n imports: [],\r\n exports: [\r\n FilterValueBooleanPipe,\r\n UnidadeMedidaPipe,\r\n OrganizarListaPipe,\r\n DecimalPipe,\r\n CNPJPipe,\r\n PermissaoPipe,\r\n DescricaoModuloPipe,\r\n TipoPlanoPipe,\r\n ModuloPlanoPipe,\r\n TipoEmpresaPipe,\r\n StatusPedidoClienteResponsavelPipe,\r\n MovimentacaoTransferenciaStatusPipe,\r\n ],\r\n})\r\nexport class PipesModule {}\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-block-ui-template',\r\n templateUrl: './block-ui-template.component.html',\r\n styleUrls: ['./block-ui-template.component.scss']\r\n})\r\nexport class BlockUiTemplateComponent implements OnInit {\r\n\r\n mensagem: any;\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n}\r\n","
\r\n \"\"\r\n
\r\n","import { NgModule, ModuleWithProviders } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms';\r\nimport { MomentModule } from 'ngx-moment';\r\nimport { CustomCurrencyMaskConfig } from './currency-mask-config/currency-mask-config';\r\n\r\nimport { DropzoneModule, DROPZONE_CONFIG } from 'ngx-dropzone-wrapper';\r\nimport { DropzoneConfig } from './dropzone-config/dropzone-config';\r\n\r\n\r\n// Módulos\r\nimport { NgxbootstrapModule } from './ngxbootstrap/ngxbootstrap.module';\r\nimport { BlockUIModule } from 'ng-block-ui';\r\nimport { CurrencyMaskModule, CURRENCY_MASK_CONFIG } from 'ng2-currency-mask';\r\nimport { NgSelectModule } from '@ng-select/ng-select';\r\nimport { ColorGithubModule } from 'ngx-color/github';\r\nimport { ColorCircleModule } from 'ngx-color/circle';\r\nimport { TagInputModule } from 'ngx-chips';\r\nimport { PipesModule } from './pipes/pipes.module';\r\nimport {NgxMaskModule} from 'ngx-mask';\r\nimport { ToastrModule } from 'ngx-toastr';\r\nimport { FileSaverModule } from 'ngx-filesaver';\r\nimport {DpDatePickerModule} from 'ng2-date-picker';\r\nimport { UiSwitchModule } from 'ngx-toggle-switch';\r\nimport { NgxChartsModule } from '@swimlane/ngx-charts';\r\nimport { NgxTreeDndModule } from 'ngx-tree-dnd';\r\n\r\n// Componentes Compartilhados\r\nimport { InputComponent } from './input/input.component';\r\nimport { BlockUiTemplateComponent } from './block-ui-template/block-ui-template.component';\r\nimport { TableComponent } from './table/table.component';\r\nimport * as moment from 'moment';\r\n\r\n\r\n\r\nimport { ModalExcluirItemComponent } from './modal-excluir-item/modal-excluir-item.component';\r\nimport { ImagemComponent } from './imagem/imagem.component';\r\n\r\n// Serviços\r\nimport { LoginService } from '../core/services/login.service';\r\nimport { ConsultaCepService } from '../core/services/consulta-cep.service';\r\nimport { DatapickerComponent } from './datapicker/datapicker.component';\r\nimport { DatapickerRangeComponent } from './datapicker-range/datapicker-range.component';\r\nimport { CadastroRapidoComponent } from './cadastro-rapido/cadastro-rapido.component';\r\nimport { CurrencyComponent } from './currency/currency.component';\r\nimport { NomeReduzidoComponent } from './nome-reduzido/nome-reduzido.component';\r\nimport { RouterModule } from '@angular/router';\r\nimport { DaterangepickerInlineComponent } from './daterangepicker-inline/daterangepicker-inline.component';\r\nimport { DataComponent } from './data/data.component';\r\nimport { ModalBloqueioPlanoService } from './modal-bloqueio-plano/modal-bloqueio-plano.service';\r\nimport { ImprimirRelatorioComprasComponent } from './imprimir-relatorio-compras/imprimir-relatorio-compras.component';\r\nimport { DataFilterComponent } from './data-filter/data-filter.component';\r\nimport { AuthGuard } from '../core/authentication/auth.guard';\r\nimport { ColorPickerModule } from 'ngx-color-picker';\r\n\r\nmoment.locale('pt-br');\r\n\r\n@NgModule({\r\n declarations: [\r\n InputComponent,\r\n BlockUiTemplateComponent,\r\n TableComponent,\r\n ModalExcluirItemComponent,\r\n ImagemComponent,\r\n DatapickerComponent,\r\n DatapickerRangeComponent,\r\n CadastroRapidoComponent,\r\n CurrencyComponent,\r\n NomeReduzidoComponent,\r\n DaterangepickerInlineComponent,\r\n DataComponent,\r\n ImprimirRelatorioComprasComponent,\r\n DataFilterComponent\r\n ],\r\n imports: [\r\n RouterModule,\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MomentModule,\r\n NgxbootstrapModule,\r\n CurrencyMaskModule,\r\n PipesModule,\r\n NgSelectModule,\r\n ColorGithubModule,\r\n ColorCircleModule,\r\n DropzoneModule,\r\n TagInputModule,\r\n FileSaverModule,\r\n UiSwitchModule,\r\n NgxChartsModule,\r\n ToastrModule.forRoot(),\r\n NgxMaskModule.forRoot(),\r\n BlockUIModule.forRoot({\r\n template: BlockUiTemplateComponent\r\n }),\r\n DpDatePickerModule,\r\n NgxTreeDndModule\r\n ],\r\n exports: [\r\n InputComponent,\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MomentModule,\r\n NgxbootstrapModule,\r\n BlockUIModule,\r\n TableComponent,\r\n ModalExcluirItemComponent,\r\n CurrencyMaskModule,\r\n PipesModule,\r\n NgSelectModule,\r\n ColorGithubModule,\r\n ColorCircleModule,\r\n DropzoneModule,\r\n TagInputModule,\r\n ImagemComponent,\r\n DatapickerComponent,\r\n DatapickerRangeComponent,\r\n NgxMaskModule,\r\n ToastrModule,\r\n CadastroRapidoComponent,\r\n FileSaverModule,\r\n DpDatePickerModule,\r\n CurrencyComponent,\r\n UiSwitchModule,\r\n NgxChartsModule,\r\n NomeReduzidoComponent,\r\n DaterangepickerInlineComponent,\r\n DataComponent,\r\n ImprimirRelatorioComprasComponent,\r\n NgxTreeDndModule,\r\n DataFilterComponent,\r\n ColorPickerModule,\r\n ]\r\n})\r\nexport class SharedModule {\r\n static forRoot(): ModuleWithProviders {\r\n return {\r\n ngModule: SharedModule,\r\n providers: [\r\n AuthGuard,\r\n LoginService,\r\n ConsultaCepService,\r\n ModalBloqueioPlanoService,\r\n { provide: CURRENCY_MASK_CONFIG, useValue: CustomCurrencyMaskConfig },\r\n { provide: DROPZONE_CONFIG, useValue: DropzoneConfig }\r\n ]\r\n };\r\n }\r\n}\r\n","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\r\nimport { PageChangedEvent } from 'ngx-bootstrap/pagination/public_api';\r\n\r\n@Component({\r\n selector: 'app-table',\r\n templateUrl: './table.component.html',\r\n styleUrls: ['./table.component.scss']\r\n})\r\nexport class TableComponent implements OnInit {\r\n\r\n @Input() totalItems: number;\r\n\r\n @Input() centralizar = true;\r\n @Input() tamanhoMaximo = 5;\r\n @Input() isResponsive = false;\r\n @Input() tabelaComBorda = false;\r\n @Input() tabelaHover = false;\r\n @Input() tabelaSm = true;\r\n @Input() tableStriped = true;\r\n @Input() itensPorPagina = 10;\r\n\r\n @Output() alterouPagina = new EventEmitter();\r\n\r\n alterouQuantidadePorPagina = new EventEmitter();\r\n\r\n\r\n constructor() { }\r\n\r\n ngOnInit() { }\r\n\r\n alterarPagina(event: PageChangedEvent): void {\r\n event.itemsPerPage = this.itensPorPagina;\r\n this.alterouPagina.emit(event);\r\n }\r\n\r\n}\r\n","
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n","export const environment = {\r\n production: true,\r\n // api: 'https://192.241.152.151:5001/',\r\n // homolog\r\n api: 'http://167.172.134.95:5000/',\r\n blog: 'https://blog.cookgo.com.br/',\r\n app: 'http://167.172.134.95',\r\n\r\n // tslint:disable-next-line: max-line-length\r\n imagemPadrao: 'data:image/png;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsNFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT/wAARCABgAZADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD9U6KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoor5z/aa/ayt/g3MNA0K3i1LxQ6CSTziTDaKfulwCCzEchcjjk+4B9F5x1o3D1r8pPEP7TnxQ8TXDy3PjTVLbcciPT5vsqL7AR7apab+0J8TNJmEsHjrXnccj7TfSTr+UhYGgD9aaK+LP2f/ANuS91TWrPw/8QRb7bp1hg1qBBHiQnAEyj5cEkDcoAHcY5H2kDuGRzQAtFU9X1ey0HTLnUdRuY7OxtYzLNcTNtSNQMkk18QfGT9vbVby+uNO+H0EdhYoSo1a7iDzS+6Rtwo/3gT9KAPurNFfkrqX7QXxL1SYyz+O9fRic4t7+SBf++UIFXdB/aY+KPh24SW28batOVOdt9N9qU/US7qAP1eor5a/Zx/bOg+JGqW/hrxdbwaXr052Wt5b5W3um7IQSdjntyQenBwD9S0AFFfFf7Znxy8dfDX4o2GmeGvEM2lWEmlx3DwxxRsDIZJQWyyk9FH5V4L/AMNa/Fz/AKHO6/8AAeD/AON0AfqdRX5Y/wDDWvxc/wCh0uv/AAHg/wDjdH/DWvxc/wCh0uv/AAHg/wDjdAH6nUV8ufsP/Fjxb8UrXxg/inWZdXaxe0Fv5kaLs3ibd91R12r19K+o6ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigBG6V+QXxc1q78QfFDxZf3zM11NqlxuDfw4kYBfoAAPwr9fa/Oz9sr4A6n4L8b6l4y0y1kufDerzG5nliXP2S4Y5cP6KzZYN0yxHYZAPf/ANlr4E/Di4+FOga+dIsPEOq30Aluru9RZ/Llyd0QVshdp+Xpnjmu/wDiF+zL8P8Ax9odzZP4c0/S7tkIhv8ATrZIJYXxw3yAbhnscg1+Z3gv4keKPh1eNceG9dvdHkcgyLbykJJjpvQ/K34g17x4Q/b98e6KI4tcsdM8RQr96RozbTt/wJPl/wDHKAPJZv2e/iVDfT26+CNemMMjR+amny+W+CRuViuCDjg+lfpj8Ep9Zm+E/hf/AISK2uLTW4rGOC7iulKy70GzLA9yFDfjXA/B/wDbA8EfFW9g0pzN4e1yYhY7PUCuyZv7scg4J9jtJ7A17rxjigD4f/b9+L1xJqlj8P8AT52jto41vNS2HHmMeYoz7AfNjuWX0rxT9mz4AXXx28VzQyzSWXh/Twr313GPnOc7Y0zxubB57AE+gOP+0drEmufHTxvcyMWI1OWBc/3Yz5a/ogr7W/YM0SHTfgWt6ijztR1GeZ27nbiMD6fIfzNAHpHhj9nf4ceE7OO3sfB+lybV2mW8t1uJG9y0mTXFfGT9kHwX8QtCu30TSrXw34hVC1td2SeVEzjoska/KVPTIGR+h9y1LULfSdPub67lEFpbRNNNK3REUEsx+gBrzT/hqT4U/wDQ7ab/AOP/APxNAH5j2Hg3xNJrcllYaNqc+qWk5jaOztnkkjlRsEDYCQQw7elfq/8ACfWtX8QfDjw/feILG407W5LRFvbe6iMUgmX5WJUjjcRuA9GFcsn7UHwnjzs8Z6YuTk7d4yfX7td14Q8aaJ490ddV8P6jDqmnM7Ri4gJ27l6jkdaAPgz/AIKC/wDJaNM/7AsP/o6atv8AYN+Hvhnx1H4yPiLQdP1s2xtfJ+3W6y+Xu83dtyOM4H5Vif8ABQX/AJLRpn/YFh/9HTV5l8F/2hPEnwJGrDw/a6bcjUvL87+0IpHxs3bdu11x989c9qAP0b/4Z9+Gn/QiaB/4L4/8KP8Ahn34af8AQiaB/wCC+P8Awr4x/wCHg/xH/wCgV4a/8BJ//j9H/Dwf4j/9Arw1/wCAk/8A8foA+7vCnw+8NeBftI8O6FYaILnaZhYwLEJNudu7A5xuP5muhrzP9nT4kap8WfhRpfiXWYrWDULqWZHSzRkiASRlGAzMegHevTKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigBskiQxtJIyoijLMxwAPU1zeqfEHwfaRtDqXiTRIEf5Gjur+FQ2eMEM3Oa0vFWhxeKPDGr6NOcQajZzWkhxn5ZEKH9DX47+INDvfDGu6hpGowtb39jO9vPG3VXViD+ooA/Szx1+xx8MvHE0twNHfQruTJM+jy+SM+vlkFPyWvB/G3/BO/VLOKWfwp4mg1HaMrZ6lEYXPsJFyCfqAPevWfgB+154U8ZeFbCw8Uaxb6F4lto1hn+3uI4rkgY8xJD8uW7qSDnOARg16Z4n/AGgfh34T06S7vvF+kuiqSI7S6WeR/ZUQkmgD8qdf0HU/COvXelapay6fqljKY5oZOGjce4/Agjgggiv00/ZL+Jd58UPgxp19qUrT6nYSvp11O3JlaMKVc+5Rkye5zX53fGj4hL8VPidr3iiO3a1hvpl8qJsbljRFjTOO+1AT7192fsI+Gbrw/wDAxLm6Ro/7W1Ca+iVv+ee1I1P4+WT9CKAPif8AaS0aTQfjt42tZF2ltSkuFB/uy4kX9HFfZv7AviCLVPgnLpwcGfTdSmjZO4Vwsit9CWYf8BNec/t//CKf7ZYfEHToC9uUWy1PYPuEE+VKfYg7CfZPWvBv2dPjzefAnxg975L32iXyrFqFmhwzKDlXTtvXJxnggkcZyAD9NfH2mXOteBfEWnWcfm3d5p1xbwx7gu53iZVGTwMkjrX5x/8ADFvxf/6FiP8A8GNt/wDHK+8vCf7Rnw48ZWKXNl4u0uHcuTBfXC20qexSTB/LisTx5+1n8NPAlpKza/BrV6oytlpJFw7H03D5F/FhQB+ZvinwvqXgvxDfaHrFv9l1OxkMU8IdX2sOcblJB69jX6F/sG/8kFj/AOwnc/8AstfA/wAUPGv/AAsb4ga74l+y/YhqVyZxb79+wYAAzgZ6V98fsG/8kFj/AOwnc/8AstAHz3/wUF/5LRpn/YFh/wDR01R/sa/A3wl8ZY/FR8UWk90dPNt5Hk3Dxbd/mbs7Tz90VJ/wUF/5LRpn/YFh/wDR01bn7BnxB8M+BY/GQ8Ra9p+iG5Nr5P264WLzNvm7tu484yPzoA92/wCGHfhN/wBAm+/8GEv+NH/DDvwm/wCgTff+DCX/ABrvf+GgPhp/0Pnh/wD8GMX/AMVR/wANAfDT/ofPD/8A4MYv/iqAN34f+ANH+GXhe28P6DDJb6Zbs7xxySmRgWYs3zHnqTXR1zPhf4meEvG15La+H/Emma1cxJ5skNjdJKyrkDcQp4GSPzrpqACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigBK+cv2lv2R7T4w3R8QaBcQ6T4oChJfOBEF4oGF34BKuBxuweAARwCPo6igD8pvEX7L/xS8M3DxXHgzUrsKeJNOj+1qw9QY9361l2PwB+JV/MI4vAfiFWPGZtNliH5uoFfrbRQB8DfBv8AYP8AEGrapbah47ePSNKjcO2mwyiS5nx/CxXKop7nJPsOtfeGm6dbaRp9tZWcKW1pbxrDFDGMKiKMKoHoAKs0UAVdU0u01rTrmwv7aO8sriNopoJlDJIpGCCO4Ir4l+MP7At9BeXGo/D67iuLRyWGj30mySP/AGY5Tww9nwfc19yUUAfkxqn7O/xN0eZop/AuuyMDgm1snuFP/AowwNT6H+zT8UNfmWO38EavBuON19bm1UfUy7a/WCigD4h+Fn/BPu5a4hvfHmrRxwqQx0zS2LM3+y8pHHvtB9iK+yvDPhjS/B2i22kaNYw6dp1su2K3gXCqP6n1J5NalFAHxX+2Z8DfHPxK+KNhqfhrw/NqthHpcdu00csagSCWUlcMwPRh+deCf8Ml/Fr/AKEy6/7/AMH/AMXX6n0UAflh/wAMl/Fr/oTLr/v/AAf/ABdH/DJfxa/6Ey6/7/wf/F1+p9FAHxv+xV8FfGvwy8fa3feJ9Am0m0uNN8mKWSSNgz+ah2/Kx7A/lX2RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAV8cfti/Hfx/8MfidpOj+E9cfTrS40uOdrdLSCUvIZZVyC6MeiqMA9q+x6+I/2rrZLz9rf4awSoJIpIrBGRuhBvJMigD379mz4rXHxI+Cdh4h1q8W51O2M8OoXGxU+aNidxCgAfuyh4A618g6F+118Udd+JGmwp4jeHRL/V44ktvsNtgQtMBsDGPdwpxnOfepvBvjx/gz8Pfjl4DmmaK7jka3swWwxLyG2lYe+wo2fauWv/CY8J6r8DVZds1/BbahJx1829ZlP/fGz8qAP093BVLMQABkk9BXhfhNfG3jL45a3qN/4pj03wfYSbLDQrC+gle72jG+QIWKKTliCQeQMAZrzH9sTxhrviv4n+EfhPpF++m2eqtbteSIxXzWllKKGx1RQpbHcn2FY/x0/ZL0f4O/DlvGfg3V9Ws9a0NopZZZLgZkDOqFlKhSjAsDwcYBGO9AH230HJri/iB40gtPAPi270TVrVtV03TbidDBLHK8MixsVJXnoQOCK+UvjB+0V4g1/wDZR8IXkdy1pq+vTy2Oo3Fv8jOsG5XwR03/ACE49WHSrup/sb6X4X+Blz4ksNY1ODxfb6S19NNHOBDIDEWlg2gZ2lSy9ee/HFAHqf7GnxS8S/FH4e63qnivVf7Tu7XU2gSZoYodkYhjbGEVR1Zjk+te/Q3EVwpaKRJVBwWRgRn8K+Jv2WP+TRvi5/1z1H/0gWu2/wCCeX/JJdd/7DT/APoiGgD6hju4ZnaOOaN5F6qrAkfhXzJ8GPjF4w8U/tSeO/CWq6w134f003otbM28SiPy7hET51QMcKSOSa4f9kz/AJOq+KH0vv8A0tSpf2ef+T2vib/val/6VR0AfZd/qVrpdu095cw2kC9ZZ5Aij8SaTT9Us9WtxPY3cF5B0EtvIrr+YNfC/h7Rbn9sP9oLxHF4i1O8g8KaH5nkWNtJtxGJNiKuQQC2CzNjPbjjEHxQ8My/sX/Fjw3rPhHUr1/D2qBjc6fcy7t6oyiSNsABhtcFSRkHPNAH3zXyN+2Z8bfHXwv8aeHNO8I60+nRX1k0kkKWsMxkk8wqMb0Y57cV9cAhgCORXxN+24vmfHT4ZrjO5Yh/5NCgD3D9lD4sah8VvhGmpa5efbNasbua1vLhkSPfgh1baoAHyOo4A+6a+Sda/bC+J194+uzpfiR7XQJ9UeO0g+xW7BYfM+VNzRkkhSvOc81ueD/GTfAO9+PfhESfZ9lvK+nAnGHMnkxlfcrcRt/wCvL/ABL4R/4RfwT8Jbhl2z6u9zfvx2M8ap/44in8aAP1QkmS3haSV1RFGWZjgAfU1V0vXdN1tXbTtQtb9UOHNtMsgU++0nFfGH7avxAbVvit4e8A6hrU2heEkSG41SeJXbPmMwLMqglwqDhcHkmvLPH2pfD34T654e8S/Bfxjf3Wp28uy7tbhJlDKADuJeNAVbBVl56jAFAH6VzXUNuyrLNHGzfdDsAT9Kr2+s2F1fS2cN7by3cP+st45VaRP95Qcj8a+I/29taOpt8LNXsi0TXFrPdwY5Klvs7r/MV2Wn/A2L9mXwd4g+KB1m51rxPHosikXSKUS6mZB5gPUgMcc5yCT7UAfU194i0rTbpLa71KztbiT7kM06I7fQE5NaBYBckgDrmvzO+HGl/CPxp4b1PVvif481S38Y300hUrFPJ5X912IiYOScnG7GOOK9v/AGJ/iRqOveC/GXhPUL19Rg0aHzbGeRixELq6lBnnaCgIHbcR7AA+uZdVsobZ7iS7gS3j+/M0ihF+pzgUun6nZ6tbi4sbqG8gJwJbeQSKT9QcV+eX7IfwTtPjZZeIrXXtT1CPw7pssUv9m2U/lLNcSKwDvwc7VTj6/XPW/syafc/Cz9rDxL4Gsb2ebRlW5hMcz/fCYeN2AwC4HGcdz0zQB9ualrVho0ayahfW1jGxwHuZljBPpliK+Yv2jvjX4v8ABPx08CaH4e1z7JomqJaNcQJBDKsu+5ZGIZkJGVAHBry3wd4Uf9rj9ojxZJ4p1G8GhaT5nk2tvJtKxrLsjjXOQoIBZiBknPrmue+MHwni+Dv7Q3gXRLHUby+0V7iyuLGO9k3tbK11hogf7u4FhgD73c5JAP0XuruCxgaa5mjghUZaSRgqj6k1V0vxBpet7/7O1K0v9v3vss6yY+u0mvnX9qv4f6X4s8QaBeeMPiHa+GfB9qBv0dvlmuGyS7pydzY2qPlO3n15+XPEWpeB/BHxi8KX/wAI9a1Oa3juIhcSXG5RuMgBVSyqxVlJBBH86AP09r5W/bX+M/jL4T3nhRPCmtHSVvkuTcAW8Mu/YY9v+sRsY3Hp619U18Q/8FHP+P8A8C/9crz+cVAG/D4c/axmiSRfFel7WAYZW06H/thXt3wF0/4madoupp8TdRt9S1FrhTaSWwiAWLbyD5aLzuz1FeGWtn+1r9ni8q+03yto25Ww6Y4/g9K9U04fFm1/Z98TnxE6zeP1huTZtZiLJXaNm0RALu+9jvnFAHrd14q0WyvBaXGrWNvdE4EMtyiv/wB8k5rUBDAEcg1+WXw/Hwk1XQryz8ezeJdN8VSPIP7VjxLbo2flLJguSP4gQc88jt9i/AnUh8Nv2eNc1K38aWvjzTNKt57qzlt43T7OEi3fZ2DEsACAQCAQG6YxQB7zqXiDS9FZRqGo2liX+79pnWPd9MmrkMyXEayROskbDcrKcgj1Br4P/Zz+BNl+0zZ+I/Gnj3VdSv7tr1raIQzBCG2K7MSQeBvUBRgDFeyfCv4beKf2XfCfji71LXbfXPCdnaz31hYgv5sTR7mUnICrvXG4Lxu6epAPoHUte03RQp1DULWxDfdNzMsYP03EVbt7iO6hSWGRZYnGVdGDKR6givhP9nv4IxftRL4g8c/EHV9Rv3a8a1hit5tmGCqxOSDhQGUKoxjFaPwfvNW/Z1/ail+GMepz6l4V1J8QxXDZ2F4vMjkAHAcEbGxgNycdMAHe+HfjF4xvv2zNU8DzayX8LQ+b5dh9niG3FsHHzhN/3ufvV9L6jq9jo8PnX95b2UPTzLiVY1/MmvjXwj/ykM1n6Tf+kYrU+O/w48G6h8WrnXPil8SoYtG8nFpoFruW4gXA2Dau84+8SQoySKAPrbTdWstYg86xu4LyHOPMt5VkXP1BNSPfW8cjRtPGsijJUuMgYznH0r88v2f9Z0Xw5+1lp9j8P9T1CfwjqDPAVvMq0qfZ2YhhgZCyDKkjPA982vjd4Zv/ABt+2pfeHtPv5NMm1Rra1kuovvJE1nH5v/jgbjv070Aff+natZavC0tjeQXkSttL28qyKCOoyCeat15d8B/gJpfwH0jVbHTr2fUTqFys7XFwiq4VUCqhxwQDuOePvV6jQAUUUUAFFFFABXyL+0R4I8Q67+1Z8OtW07QdTv8ASrVbEXF9bWckkEO27kZt7gbVwCCcnoa+uqKAPz6/aq+AvinWv2grm70Hw7qmo6drQtpXvLOykkghcgRuHdVKrgpuOTwGzXeftNfDPXLj4xfCw6B4e1TUdI0qC0t5LiyspJYoEjuB95lUhcKM8npX2TRQB8r/ALWnwZ8V6x4u8N/EnwRatqGs6L5Yls4hulPlSGSN1X+PBJBUckYwDzXE/Er4wfEr9obwqPAmj/DTVNGuLxo11G4uUk8tQrBsbmRQi7gCSxzgYr7eooA+UPit+ypfyfs1eH/C+hkahr/h+Rrwopx9qZ9xmVM98sCucZ2AdTXMWvxg+Kvjz4Vz/Du1+HOpW+uLp5sLzV7qOSOJIVTazFGQfvGUEYzyTwD0r7WooA+Tv2S/hnr8f7P/AI98M6zpV9oF7q011bxJqdrJA22S0SMPhgCVznkDsa85/Z/8bfEX4Aw654Kb4ZavrOoXV159uEjdFSTaEJLhSrRkKp3A44PPNfe9FAHxn+yP4A8Z+Fvj141v/FOg31g1za3G++e0kS1mma4jZvLkI2sD8xGCeBWl8CfBPiLSf2vviHrV9oGqWWkXTX5t9QuLOSO3m3XKMuyQrtbIBIweRX11RQB8Sah4T8c/sr/G7XPFegeGLrxX4P1gyNIlkjM0aO+/a20EoyMOGIKkHrk4EGpeHvHH7YXxS0PUdV8LXfhTwVpPBN8jAum4M4BZRvdsBeBgAfn9xUUAJXyL+1x4H8ReJvjZ8Or7SdA1PVLG18r7Rc2VnJNHDi5BO9lUheOee1fXdFAHwN+2Z8EfE2s/GpdW8OeHNV1i21WzgeeewspJo45lzEQzKpC/KiHn1rpP2rPhNrv2j4T6b4c8P6nq9notkLSV9PspJ1iCGEAuUU7chSefQ19q0UAfJX7WXwl8Tr8RvDnxO8JaQ2vTacIlvNOjiMzN5bllYoBllZSVOORgfhkQ/Fr4j/FTxNpOm+C/hdb+GIFO3ULvWNNEsKk4ySzRptC4PA+Y5r7MooA+O/25vAfiPxRqXgAaD4f1LWks47lZ20uxkmWLLQ43bFO0HacA+ntX0t8TPA6fEb4a614Zkk+znULMwpIwOEk4KMR6BgpP0rrqKAPgj4c+NfG37Pvh+/8ABmufCW6129jmkbT71bUuhZu28RsJF3cjac8kV9DfAe38e3vw/wBX1HxzpdjpuoXcTLaWVpYrb3ATYeZQvck8LjIx74HuNFAHyd+wN4L8Q+DdL8Zpr+g6nobzzWphXUrOS3MgCy5K71GcZHT1ql4A8D+I7X9t/wARa7ceH9Ug0OU3Pl6nJZyLbPmJQMSldpyeOtfX1FAHw5daJ4z/AGUfjvrviLS/C154n8J620mDZozYR3EgUsqtsdG4G4YYdOvGH8RtL+JvxX+NHgrxlqXgPVtM0w3VqlvaxWsszWtvHOrF52CfISWZvmxwOnGa+/6KAPhz9qrwV4j0v4/6b40u/Clx418JiOD/AEOON5IgEGGhfaDty2WGRg7u/Irkfit4e8ZeO9W8J+JtH+EN94b8P2coSDT9M09pLhwrI7SSJGgKg9FJHO081+iNFADI5BLGrgEBhkbgQfyPSvj/APb48DeJPGV94NOgeHtU1xbeO6Ex02yluPL3GLG7YpxnB6+lfYdFAHx/b/tRfGi3gjiHwT1UhFC5/s697D/rnXo3gD4ifFD4seB/Fyz+GZPh94jtY4xpU2oWkqpK53E5Ey8j5QuQDjdmveqKAPgvUPiJ4kl0u70X4p/BKfxd4n8x1h1UWHkvIDkKN8UR3AZwGRuRjvzXoH7I/wAAtd0X4c+N4PFdrPpEHiiAWkenzAiWKMJIpkZT91j5nAPPy819aUUAfCHws8UfET9kefXvDGqeAdQ8R6bdXPn2t1YLJ5Ty7Qu5XCMCrKq/Lwwx0r1P4EeFfiT8RrLxpqPxJu9SsNC8QW89raaHdEgwrMSWdUblAqnaoPvxwK+nKKAPhb4Z698Rv2QbnWvDmqeBr7xNoNzcGe2vNOVzGZMBdyuqsMMFXKthhiuo+Bvwx8Y/E/46T/FvxtpEvh63iJexsLhWSRm8vy4xtYBtqrzuIGTjAxX2DRQB8ieGPBPiK3/bq1fX5dA1SPQnE23VHspBatm1CjEu3aeeOvXivNfFHhnXvhl+0l4k17xX8Orv4g6VqVzPLZYgeaJhI+6JlIRlLKoCbCOPyNfoLRQB8IeE/CnjY/tVeFvGGp/Du98OaRdujLb6dYvJb2UTRPCglZF2o2QGbOMBskCus1TwL4kk/b0tvEC+H9UbQFkjJ1RbKU2o/wBA2f63bt+98vXrxX2HRQAUUUUAFFFFAH//2Q==',\r\n backgroundLogoRetrato: 'data:image/png;base64,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',\r\n backgroundLogoPaisagem: '',\r\n};\r\n","export class FiltroDashboard{\r\n empresaId: string;\r\n diasParaVencer: number;\r\n \r\n}","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { BaseService } from './base.service';\r\nimport { FiltroDashboard } from 'src/app/shared/models/filtroDashboard';\r\nimport { Observable } from 'rxjs';\r\nimport { ItemInventario } from 'src/app/shared/models/itemInventario';\r\nimport { OrdemSaida } from 'src/app/modules/estoque/ordem-saida/models/ordemSaida';\r\nimport { FiltroOrdemSaida } from 'src/app/shared/models/filtros/filtroOrdemSaida';\r\nimport { MapaProducao } from 'src/app/shared/models/mapaProducao';\r\nimport { FiltroMapaProducao } from 'src/app/shared/models/filtros/filtroMapaProducao';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DashboardService extends BaseService {\r\n\r\n constructor(private http: HttpClient) {\r\n super();\r\n }\r\n\r\n obterItensEstoqueMinimo(filtroDashboard: FiltroDashboard): Observable {\r\n // tslint:disable-next-line: max-line-length\r\n return this.http.post(this.urlService + 'dashboard/obterItensEstoqueMinimo', filtroDashboard, super.ObterAuthHeaderJson());\r\n }\r\n\r\n obterItensEstoqueProximoValidade(filtroDashboard: FiltroDashboard) {\r\n return this.http.post(this.urlService + 'dashboard/obterItensEstoqueProximoValidade', filtroDashboard, super.ObterAuthHeaderJson());\r\n }\r\n\r\n obterListasDeComprasPendentes(filtroDashboard: FiltroDashboard) {\r\n return this.http.post(this.urlService + 'dashboard/obterListasDeComprasPendentes', filtroDashboard, super.ObterAuthHeaderJson());\r\n }\r\n\r\n obterItensOrdemSaida(filtroOrdemSaida: FiltroOrdemSaida): Observable {\r\n return this.http.post(this.urlService + 'dashboard/obterItensOrdemSaida', filtroOrdemSaida, super.ObterAuthHeaderJson());\r\n }\r\n\r\n obterListaMapaProducao(filtroMapaProducao: FiltroMapaProducao): Observable {\r\n return this.http.post(this.urlService + 'dashboard/obterListaMapaProducao', filtroMapaProducao, super.ObterAuthHeaderJson());\r\n }\r\n\r\n}\r\n","
\r\n\r\n\r\n \r\n \r\n\r\n \r\n
\r\n
\r\n

Mapa de produção

\r\n \r\n
\r\n
\r\n Selecione um mapa de produção\r\n \r\n \r\n
{{item?.nome}}
\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
ServiçoTipoNome
\r\n {{nomeReduzido(tipoRefeicao?.nome)}}\r\n \r\n
\r\n
{{nomeReduzido(classeTipoPreparacaoPlanejamento?.nome)}}
\r\n
\r\n
\r\n
    \r\n
  • \r\n \r\n \r\n \r\n \r\n
  • \r\n
\r\n
\r\n Nenhum item na lista\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n

\r\n \r\n Mapa de Produção\r\n \r\n \r\n

\r\n
\r\n
\r\n
\r\n\r\n\r\n\r\n\r\n\r\n \r\n
\r\n
\r\n

Próximas validades

\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
Nome do alimento Marca Data de validade
\r\n \r\n \r\n \r\n {{item.alimento?.marca}}\r\n {{item?.validade | date: 'dd/MM/yyyy - HH:mm:ss'}}
\r\n Nenhum item na lista\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n

\r\n \r\n Próximas validades\r\n \r\n \r\n

\r\n
\r\n
\r\n
\r\n\r\n\r\n \r\n
\r\n
\r\n

Lista de compras

\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
NomeData PlanejamentoStatus
{{item?.nome}}{{item?.dataInicio | date: 'dd/MM/yyyy - HH:mm:ss'}} a\r\n {{item?.dataFim | date: 'dd/MM/yyyy - HH:mm:ss'}}\r\n \r\n \r\n
\r\n Nenhum item na lista\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n

\r\n \r\n Lista de compras\r\n \r\n \r\n

\r\n
\r\n
\r\n
\r\n\r\n\r\n \r\n
\r\n
\r\n

Saídas planejadas

\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
Nome do itemQuantidadeUnidade de compra
\r\n \r\n \r\n \r\n \r\n {{item?.quantidadePlanejadaTemp | decimal}}\r\n {{estoqueHelperService.nomeUnidadeCompraSelecionada(item)}}\r\n \r\n {{item?.unidadeCompra?.nome}}\r\n
\r\n Nenhum item na lista\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n

\r\n \r\n Saídas planejadas\r\n \r\n \r\n

\r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n

Estoque mínimo

\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
Nome do item Marca Mínimo em estoque Quantidade
\r\n \r\n \r\n \r\n \r\n {{item.alimento?.marca}}\r\n \r\n \r\n {{item.materialDiverso?.marca}}\r\n \r\n {{item?.quantidadeMinimaEstoque}}\r\n {{item.unidadeQuantidadeMinimaEstoque}} \r\n \r\n {{item?.quantidadeEstoque | unidadeMedida : '' : item.alimento.liquido}}\r\n \r\n \r\n {{item?.quantidadeEstoque}} unidade 1\">s\r\n \r\n
\r\n Nenhum item na lista\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n

\r\n \r\n Estoque mínimo\r\n \r\n \r\n

\r\n
\r\n
\r\n
\r\n\r\n
\r\n","import { DashboardService } from './../../core/services/dashboard.service';\r\nimport { FiltroDashboard } from './../../shared/models/filtroDashboard';\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { Planejamento } from 'src/app/shared/models/planejamento';\r\nimport { MapaProducao } from 'src/app/shared/models/mapaProducao';\r\nimport { NgBlockUI, BlockUI } from 'ng-block-ui';\r\nimport { DatepickerDateCustomClasses } from 'ngx-bootstrap/datepicker/models';\r\nimport { Data, Router } from '@angular/router';\r\nimport { ItemInventario } from 'src/app/shared/models/itemInventario';\r\nimport { BsLocaleService } from 'ngx-bootstrap/datepicker';\r\nimport { LocalStorageObject } from 'src/app/core/services/localStorageObject.service';\r\nimport { Empresa } from 'src/app/shared/models/empresa';\r\nimport { PermissoesService } from 'src/app/core/auth/permissoes.service';\r\nimport { PlanejamentoService } from 'src/app/core/services/planejamento.service';\r\nimport { FiltroPlanejamento } from 'src/app/shared/models/filtros/filtroPlanejamento';\r\nimport { TipoRefeicaoPlanejamento } from '../mapa-producao/models/tipoRefeicaoPlanejamento';\r\nimport { ClasseTipoPreparacaoPlanejamento } from '../mapa-producao/models/classeTipoPreparacaoPlanejamento';\r\nimport { DataPlanejamento } from '../mapa-producao/models/dataPlanejamento';\r\nimport { MapaProducaoHelperService } from '../mapa-producao/mapa-producao-helper.service';\r\nimport { FiltroOrdemSaida } from 'src/app/shared/models/filtros/filtroOrdemSaida';\r\nimport { OrdemSaida } from '../estoque/ordem-saida/models/ordemSaida';\r\nimport { EstoqueHelperService } from '../estoque/estoque-helper.service';\r\nimport { Observable, forkJoin , of, EMPTY} from 'rxjs';\r\nimport { FiltroMapaProducao } from 'src/app/shared/models/filtros/filtroMapaProducao';\r\n@Component({\r\n selector: 'app-home',\r\n templateUrl: './home.component.html',\r\n styleUrls: ['./home.component.scss']\r\n})\r\nexport class HomeComponent implements OnInit {\r\n\r\n @BlockUI() blockUI: NgBlockUI;\r\n date = new Date();\r\n listaPlanejamentoNutrientes: Planejamento[];\r\n ultimoDia = new Date(this.date.getFullYear(), this.date.getMonth() + 1, 0);\r\n datasDesabilitadas: Data[];\r\n isDisabled = true;\r\n dateCustomClasses: DatepickerDateCustomClasses[];\r\n qtdFichaTecnica: any;\r\n itensEstoqueMinimo: ItemInventario[];\r\n itensEstoqueProximoVal: any;\r\n itensListaCompra: any;\r\n itensMapaDeProducao: MapaProducao[];\r\n itensPlanejamentos: Planejamento[];\r\n ordemSaida: OrdemSaida;\r\n listaTipoRefeicao: TipoRefeicaoPlanejamento[];\r\n mapaProducaoSelecionado: MapaProducao;\r\n mapaProducaoSelecionadoId: string;\r\n\r\n constructor(\r\n private readonly localeService: BsLocaleService,\r\n private readonly dashboardService: DashboardService,\r\n private readonly localStorageObject: LocalStorageObject,\r\n private readonly permissoesService: PermissoesService,\r\n private readonly planejamentoService: PlanejamentoService,\r\n public readonly mPHelperService: MapaProducaoHelperService,\r\n private readonly router: Router,\r\n public readonly estoqueHelperService: EstoqueHelperService,\r\n ) {\r\n\r\n this.datasDesabilitadas = new Array();\r\n this.localeService.use('pt-br');\r\n this.date.setDate(1);\r\n this.date.toLocaleDateString('pt-BR');\r\n this.itensEstoqueMinimo = new Array();\r\n this.itensEstoqueProximoVal = new Array();\r\n this.itensListaCompra = new Array();\r\n this.itensMapaDeProducao = new Array();\r\n this.ordemSaida = new OrdemSaida();\r\n this.qtdFichaTecnica = 0;\r\n this.listaTipoRefeicao = new Array();\r\n }\r\n\r\n ngOnInit() {\r\n if (!this.localStorageObject?.empresaSelecionada?.id) { return; }\r\n\r\n this.blockUI.start();\r\n\r\n const filtroDashboard = new FiltroDashboard();\r\n filtroDashboard.empresaId = this.localStorageObject?.empresaSelecionada?.id;\r\n\r\n const observables: Observable[] = [];\r\n\r\n // Estoque Minimo\r\n if (this.podeExibirModuloPlano(['moduloMovimentacao'])) {\r\n observables.push(this.dashboardService.obterItensEstoqueMinimo(filtroDashboard));\r\n } else {\r\n observables.push(of({}));\r\n }\r\n\r\n // Próximas Validades\r\n if (this.podeExibirModuloPlano(['moduloMovimentacao'])) {\r\n observables.push(this.dashboardService.obterItensEstoqueProximoValidade(filtroDashboard));\r\n }else {\r\n observables.push(of({}));\r\n }\r\n\r\n // Lista de compras\r\n if (this.podeExibirModuloPlano(['moduloListaCompras'])) {\r\n observables.push(this.dashboardService.obterListasDeComprasPendentes(filtroDashboard));\r\n }else {\r\n observables.push(of({}));\r\n }\r\n\r\n // Saídas Planejadas\r\n if (this.podeExibirModuloPlano(['moduloMovimentacao'])) {\r\n const filtroOrdemSaida = new FiltroOrdemSaida();\r\n filtroOrdemSaida.empresaId = this.localStorageObject?.empresaSelecionada?.id;\r\n filtroOrdemSaida.dataPlanejamento = new Date();\r\n filtroOrdemSaida.dataPlanejamento.setHours(0, 0, 0);\r\n observables.push(this.dashboardService.obterItensOrdemSaida(filtroOrdemSaida));\r\n }else {\r\n observables.push(of({}));\r\n }\r\n\r\n // Mapas de produção.\r\n if (this.podeExibirModuloPlano(['moduloMapaProducao'])) {\r\n const filtroMapaProducao = new FiltroMapaProducao();\r\n filtroMapaProducao.empresaId = this.localStorageObject?.empresaSelecionada?.id;\r\n observables.push(this.dashboardService.obterListaMapaProducao(filtroMapaProducao));\r\n }else {\r\n observables.push(of({}));\r\n }\r\n\r\n forkJoin(observables).subscribe(([itensEstoqueMinimo, itensEstoqueProximoValidade, listasDeCompras, listaOrdemSaida, listaMapaProducao]) => {\r\n this.itensEstoqueMinimo = itensEstoqueMinimo;\r\n this.itensEstoqueProximoVal = itensEstoqueProximoValidade;\r\n this.itensListaCompra = listasDeCompras;\r\n\r\n if (listaOrdemSaida.itemOrdemSaida) {\r\n this.listaCarregadaSucessoOrdemSaida(listaOrdemSaida);\r\n }\r\n\r\n this.itensMapaDeProducao = listaMapaProducao;\r\n\r\n if (this.itensMapaDeProducao.length > 0) {\r\n this.mapaProducaoSelecionadoId = this.itensMapaDeProducao[0].id;\r\n this.mapaProducaoSelecionado = this.itensMapaDeProducao[0];\r\n this.obterPlanejamento();\r\n }\r\n\r\n this.blockUI.reset();\r\n\r\n });\r\n }\r\n\r\n listaCarregadaSucessoOrdemSaida(resultado: OrdemSaida): void {\r\n this.ordemSaida = resultado;\r\n\r\n this.ordemSaida.itemOrdemSaida.forEach(itemOrdemSaida => {\r\n\r\n itemOrdemSaida.quantidadePlanejada = itemOrdemSaida.quantidadeTotal;\r\n itemOrdemSaida.quantidadeSaida = itemOrdemSaida.quantidadeTotal;\r\n itemOrdemSaida.unidadeQuantidadeSaida = itemOrdemSaida.unidadeQuantidadeTotal;\r\n itemOrdemSaida.quantidadeCozinha = 0;\r\n\r\n\r\n if (itemOrdemSaida.alimento) {\r\n\r\n const unidadeCompraPrincipal = itemOrdemSaida.alimento.unidadeCompra.find(x => x.principal === true);\r\n itemOrdemSaida.unidadeCompraId = unidadeCompraPrincipal ? unidadeCompraPrincipal.id : null;\r\n itemOrdemSaida.unidadeCompra = unidadeCompraPrincipal ? unidadeCompraPrincipal : null;\r\n\r\n if (itemOrdemSaida.alimento.liquido) {\r\n itemOrdemSaida.unidadeQuantidadeCozinha = 'L';\r\n } else {\r\n itemOrdemSaida.unidadeQuantidadeCozinha = 'kg';\r\n }\r\n\r\n if (itemOrdemSaida.alimento.quantidadeEstoque < itemOrdemSaida.quantidadeTotal) {\r\n itemOrdemSaida.selecionado = false;\r\n itemOrdemSaida.bloqueado = true;\r\n\r\n if (itemOrdemSaida.quantidadeTotal === 0) {\r\n itemOrdemSaida.totalRetirado = true;\r\n itemOrdemSaida.bloqueado = true;\r\n itemOrdemSaida.selecionado = false;\r\n }\r\n itemOrdemSaida.quantidadeTotal = 0;\r\n if (itemOrdemSaida.alimento.quantidadeEstoque > 0) {\r\n itemOrdemSaida.TotalEstoqueMenorQuantidadeTotal = true;\r\n itemOrdemSaida.bloqueado = false;\r\n }\r\n } else {\r\n itemOrdemSaida.selecionado = true;\r\n itemOrdemSaida.bloqueado = false;\r\n\r\n if (itemOrdemSaida.quantidadeTotal === 0) {\r\n itemOrdemSaida.totalRetirado = true;\r\n itemOrdemSaida.bloqueado = true;\r\n itemOrdemSaida.selecionado = false;\r\n }\r\n }\r\n\r\n if (itemOrdemSaida.alimento.quantidadeEstoque === 0) {\r\n itemOrdemSaida.totalEstoqueZero = true;\r\n }\r\n\r\n } else {\r\n const unidadeCompraPrincipal = itemOrdemSaida.materialDiverso.unidadeCompra.find(x => x.principal === true);\r\n itemOrdemSaida.unidadeCompraId = unidadeCompraPrincipal ? unidadeCompraPrincipal.id : null;\r\n itemOrdemSaida.unidadeCompra = unidadeCompraPrincipal ? unidadeCompraPrincipal : null;\r\n\r\n if (itemOrdemSaida.materialDiverso.quantidadeEstoque < itemOrdemSaida.quantidadeTotal) {\r\n itemOrdemSaida.selecionado = false;\r\n itemOrdemSaida.bloqueado = true;\r\n\r\n if (itemOrdemSaida.quantidadeTotal === 0) {\r\n itemOrdemSaida.totalRetirado = true;\r\n itemOrdemSaida.bloqueado = true;\r\n itemOrdemSaida.selecionado = false;\r\n }\r\n itemOrdemSaida.quantidadeTotal = 0;\r\n if (itemOrdemSaida.materialDiverso.quantidadeEstoque > 0) {\r\n itemOrdemSaida.TotalEstoqueMenorQuantidadeTotal = true;\r\n itemOrdemSaida.bloqueado = false;\r\n }\r\n } else {\r\n itemOrdemSaida.selecionado = true;\r\n itemOrdemSaida.bloqueado = false;\r\n\r\n\r\n if (itemOrdemSaida.quantidadeTotal === 0) {\r\n itemOrdemSaida.totalRetirado = true;\r\n itemOrdemSaida.bloqueado = true;\r\n itemOrdemSaida.selecionado = false;\r\n }\r\n }\r\n\r\n if (itemOrdemSaida.materialDiverso.quantidadeEstoque === 0) {\r\n itemOrdemSaida.totalEstoqueZero = true;\r\n }\r\n\r\n }\r\n this.estoqueHelperService.calcularQuantidades(itemOrdemSaida);\r\n itemOrdemSaida.quantidadeTotal = 0;\r\n });\r\n }\r\n\r\n selecionarMapaProducao() {\r\n this.mapaProducaoSelecionado = this.itensMapaDeProducao.find(x => x.id === this.mapaProducaoSelecionadoId);\r\n this.obterPlanejamento();\r\n }\r\n\r\n obterPlanejamento() {\r\n\r\n const filtroPlanejamento = new FiltroPlanejamento();\r\n filtroPlanejamento.listaMapaProducaoId = new Array();\r\n filtroPlanejamento.listaMapaProducaoId.push(this.mapaProducaoSelecionadoId);\r\n filtroPlanejamento.empresaId = this.localStorageObject?.empresaSelecionada?.id;\r\n filtroPlanejamento.dataInicio = new Date();\r\n filtroPlanejamento.dataFim = new Date();\r\n\r\n this.planejamentoService.obterPlanejamento(filtroPlanejamento)\r\n .subscribe(resultadoitensPlanejamentos => {\r\n this.itensPlanejamentos = resultadoitensPlanejamentos;\r\n\r\n this.listaTipoRefeicao = new Array();\r\n\r\n this.itensPlanejamentos.forEach(planejamentoTemp => {\r\n\r\n const tipoRefeicaoNaLista = this.listaTipoRefeicao.find(x => x.id === planejamentoTemp.tipoRefeicaoId);\r\n\r\n if (!tipoRefeicaoNaLista) {\r\n const tipoRefeicaoPlanjamento = new TipoRefeicaoPlanejamento();\r\n tipoRefeicaoPlanjamento.id = planejamentoTemp.tipoRefeicao.id;\r\n tipoRefeicaoPlanjamento.nome = planejamentoTemp.tipoRefeicao.nome;\r\n\r\n if (planejamentoTemp?.alimento) {\r\n if (!tipoRefeicaoPlanjamento.classeTipoPreparacaoPlanejamento) {\r\n tipoRefeicaoPlanjamento.classeTipoPreparacaoPlanejamento = new Array();\r\n }\r\n // tslint:disable-next-line: max-line-length\r\n const classeNaLista = tipoRefeicaoPlanjamento.classeTipoPreparacaoPlanejamento.find(x => x.id === (planejamentoTemp.alimento && planejamentoTemp.alimento.classe.id));\r\n if (!classeNaLista && planejamentoTemp.alimento) {\r\n const classeTipoPreparacaoPlanejamentoTemp = new ClasseTipoPreparacaoPlanejamento();\r\n classeTipoPreparacaoPlanejamentoTemp.id = planejamentoTemp.alimento.classe.id;\r\n classeTipoPreparacaoPlanejamentoTemp.nome = planejamentoTemp.alimento.classe.nome;\r\n classeTipoPreparacaoPlanejamentoTemp.tipo = 'Classe Alimento';\r\n classeTipoPreparacaoPlanejamentoTemp.dataPlanejamento = new Array();\r\n classeTipoPreparacaoPlanejamentoTemp.planejamento = new Array();\r\n classeTipoPreparacaoPlanejamentoTemp.planejamento.push(planejamentoTemp);\r\n tipoRefeicaoPlanjamento.classeTipoPreparacaoPlanejamento.push(classeTipoPreparacaoPlanejamentoTemp);\r\n }\r\n }\r\n\r\n if (planejamentoTemp?.materialDiverso) {\r\n if (!tipoRefeicaoPlanjamento.classeTipoPreparacaoPlanejamento) {\r\n tipoRefeicaoPlanjamento.classeTipoPreparacaoPlanejamento = new Array();\r\n }\r\n // tslint:disable-next-line: max-line-length\r\n const classeNaLista = tipoRefeicaoPlanjamento.classeTipoPreparacaoPlanejamento.find(x => x.id === (planejamentoTemp.materialDiverso && planejamentoTemp.materialDiverso.classeMaterialDiverso.id));\r\n if (!classeNaLista && planejamentoTemp.materialDiverso) {\r\n const classeTipoPreparacaoPlanejamentoTemp = new ClasseTipoPreparacaoPlanejamento();\r\n classeTipoPreparacaoPlanejamentoTemp.id = planejamentoTemp.materialDiverso.classeMaterialDiverso.id;\r\n classeTipoPreparacaoPlanejamentoTemp.nome = planejamentoTemp.materialDiverso.classeMaterialDiverso.nome;\r\n classeTipoPreparacaoPlanejamentoTemp.tipo = 'Classe Material Diverso';\r\n classeTipoPreparacaoPlanejamentoTemp.dataPlanejamento = new Array();\r\n classeTipoPreparacaoPlanejamentoTemp.planejamento = new Array();\r\n classeTipoPreparacaoPlanejamentoTemp.planejamento.push(planejamentoTemp);\r\n tipoRefeicaoPlanjamento.classeTipoPreparacaoPlanejamento.push(classeTipoPreparacaoPlanejamentoTemp);\r\n }\r\n }\r\n\r\n if (planejamentoTemp?.fichaTecnica) {\r\n if (!tipoRefeicaoPlanjamento.classeTipoPreparacaoPlanejamento) {\r\n tipoRefeicaoPlanjamento.classeTipoPreparacaoPlanejamento = new Array();\r\n }\r\n // tslint:disable-next-line: max-line-length\r\n const tipoPreparacaoNaLista = tipoRefeicaoPlanjamento.classeTipoPreparacaoPlanejamento.find(x => x.id === (planejamentoTemp.fichaTecnica && planejamentoTemp.fichaTecnica.tipoPreparacao.id));\r\n if (!tipoPreparacaoNaLista && planejamentoTemp.fichaTecnica) {\r\n const classeTipoPreparacaoPlanejamentoTemp = new ClasseTipoPreparacaoPlanejamento();\r\n classeTipoPreparacaoPlanejamentoTemp.id = planejamentoTemp.fichaTecnica.tipoPreparacao.id;\r\n classeTipoPreparacaoPlanejamentoTemp.nome = planejamentoTemp.fichaTecnica.tipoPreparacao.nome;\r\n classeTipoPreparacaoPlanejamentoTemp.tipo = 'Tipo Preparação';\r\n classeTipoPreparacaoPlanejamentoTemp.dataPlanejamento = new Array();\r\n classeTipoPreparacaoPlanejamentoTemp.planejamento = new Array();\r\n classeTipoPreparacaoPlanejamentoTemp.planejamento.push(planejamentoTemp);\r\n tipoRefeicaoPlanjamento.classeTipoPreparacaoPlanejamento.push(classeTipoPreparacaoPlanejamentoTemp);\r\n }\r\n }\r\n\r\n if (planejamentoTemp?.produto) {\r\n if (!tipoRefeicaoPlanjamento.classeTipoPreparacaoPlanejamento) {\r\n tipoRefeicaoPlanjamento.classeTipoPreparacaoPlanejamento = new Array();\r\n }\r\n // tslint:disable-next-line: max-line-length\r\n const classeNaLista = tipoRefeicaoPlanjamento.classeTipoPreparacaoPlanejamento.find(x => x.nome === 'Produto');\r\n if (!classeNaLista && planejamentoTemp.produto) {\r\n const classeTipoPreparacaoPlanejamentoTemp = new ClasseTipoPreparacaoPlanejamento();\r\n classeTipoPreparacaoPlanejamentoTemp.id = null;\r\n classeTipoPreparacaoPlanejamentoTemp.nome = 'Produto';\r\n classeTipoPreparacaoPlanejamentoTemp.tipo = 'Produto';\r\n classeTipoPreparacaoPlanejamentoTemp.dataPlanejamento = new Array();\r\n classeTipoPreparacaoPlanejamentoTemp.planejamento = new Array();\r\n classeTipoPreparacaoPlanejamentoTemp.planejamento.push(planejamentoTemp);\r\n tipoRefeicaoPlanjamento.classeTipoPreparacaoPlanejamento.push(classeTipoPreparacaoPlanejamentoTemp);\r\n }\r\n }\r\n\r\n this.listaTipoRefeicao.push(tipoRefeicaoPlanjamento);\r\n\r\n } else {\r\n\r\n if (planejamentoTemp?.alimento) {\r\n if (!tipoRefeicaoNaLista.classeTipoPreparacaoPlanejamento) {\r\n tipoRefeicaoNaLista.classeTipoPreparacaoPlanejamento = new Array();\r\n }\r\n // tslint:disable-next-line: max-line-length\r\n const classeNaLista = tipoRefeicaoNaLista.classeTipoPreparacaoPlanejamento.find(x => x.id === (planejamentoTemp.alimento && planejamentoTemp.alimento.classe.id));\r\n if (!classeNaLista && planejamentoTemp.alimento) {\r\n const classeTipoPreparacaoPlanejamentoTemp = new ClasseTipoPreparacaoPlanejamento();\r\n classeTipoPreparacaoPlanejamentoTemp.id = planejamentoTemp.alimento.classe.id;\r\n classeTipoPreparacaoPlanejamentoTemp.nome = planejamentoTemp.alimento.classe.nome;\r\n classeTipoPreparacaoPlanejamentoTemp.tipo = 'Classe Alimento';\r\n classeTipoPreparacaoPlanejamentoTemp.dataPlanejamento = new Array();\r\n classeTipoPreparacaoPlanejamentoTemp.planejamento = new Array();\r\n classeTipoPreparacaoPlanejamentoTemp.planejamento.push(planejamentoTemp);\r\n tipoRefeicaoNaLista.classeTipoPreparacaoPlanejamento.push(classeTipoPreparacaoPlanejamentoTemp);\r\n } else {\r\n classeNaLista.planejamento.push(planejamentoTemp);\r\n }\r\n }\r\n\r\n if (planejamentoTemp?.materialDiverso) {\r\n if (!tipoRefeicaoNaLista.classeTipoPreparacaoPlanejamento) {\r\n tipoRefeicaoNaLista.classeTipoPreparacaoPlanejamento = new Array();\r\n }\r\n // tslint:disable-next-line: max-line-length\r\n const classeNaLista = tipoRefeicaoNaLista.classeTipoPreparacaoPlanejamento.find(x => x.id === (planejamentoTemp.materialDiverso && planejamentoTemp.materialDiverso.classeMaterialDiverso.id));\r\n if (!classeNaLista && planejamentoTemp.materialDiverso) {\r\n const classeTipoPreparacaoPlanejamentoTemp = new ClasseTipoPreparacaoPlanejamento();\r\n classeTipoPreparacaoPlanejamentoTemp.id = planejamentoTemp.materialDiverso.classeMaterialDiverso.id;\r\n classeTipoPreparacaoPlanejamentoTemp.nome = planejamentoTemp.materialDiverso.classeMaterialDiverso.nome;\r\n classeTipoPreparacaoPlanejamentoTemp.tipo = 'Classe Material Diverso';\r\n classeTipoPreparacaoPlanejamentoTemp.dataPlanejamento = new Array();\r\n classeTipoPreparacaoPlanejamentoTemp.planejamento = new Array();\r\n classeTipoPreparacaoPlanejamentoTemp.planejamento.push(planejamentoTemp);\r\n tipoRefeicaoNaLista.classeTipoPreparacaoPlanejamento.push(classeTipoPreparacaoPlanejamentoTemp);\r\n } else {\r\n\r\n classeNaLista.planejamento.push(planejamentoTemp);\r\n\r\n }\r\n }\r\n\r\n if (planejamentoTemp?.fichaTecnica) {\r\n\r\n if (!tipoRefeicaoNaLista.classeTipoPreparacaoPlanejamento) {\r\n tipoRefeicaoNaLista.classeTipoPreparacaoPlanejamento = new Array();\r\n }\r\n // tslint:disable-next-line: max-line-length\r\n const tipoPreparacaoNaLista = tipoRefeicaoNaLista.classeTipoPreparacaoPlanejamento.find(x => x.id === (planejamentoTemp.fichaTecnica && planejamentoTemp.fichaTecnica.tipoPreparacao.id));\r\n if (!tipoPreparacaoNaLista && planejamentoTemp.fichaTecnica) {\r\n const classeTipoPreparacaoPlanejamentoTemp = new ClasseTipoPreparacaoPlanejamento();\r\n classeTipoPreparacaoPlanejamentoTemp.id = planejamentoTemp.fichaTecnica.tipoPreparacao.id;\r\n classeTipoPreparacaoPlanejamentoTemp.nome = planejamentoTemp.fichaTecnica.tipoPreparacao.nome;\r\n classeTipoPreparacaoPlanejamentoTemp.tipo = 'Tipo Preparação';\r\n classeTipoPreparacaoPlanejamentoTemp.dataPlanejamento = new Array();\r\n classeTipoPreparacaoPlanejamentoTemp.planejamento = new Array();\r\n classeTipoPreparacaoPlanejamentoTemp.planejamento.push(planejamentoTemp);\r\n tipoRefeicaoNaLista.classeTipoPreparacaoPlanejamento.push(classeTipoPreparacaoPlanejamentoTemp);\r\n } else {\r\n\r\n tipoRefeicaoNaLista?.planejamento?.push(planejamentoTemp);\r\n\r\n }\r\n }\r\n\r\n if (planejamentoTemp?.produto) {\r\n if (!tipoRefeicaoNaLista.classeTipoPreparacaoPlanejamento) {\r\n tipoRefeicaoNaLista.classeTipoPreparacaoPlanejamento = new Array();\r\n }\r\n // tslint:disable-next-line: max-line-length\r\n const classeNaLista = tipoRefeicaoNaLista.classeTipoPreparacaoPlanejamento.find(x => x.nome === 'Produto');\r\n if (!classeNaLista && planejamentoTemp.produto) {\r\n const classeTipoPreparacaoPlanejamentoTemp = new ClasseTipoPreparacaoPlanejamento();\r\n classeTipoPreparacaoPlanejamentoTemp.id = null;\r\n classeTipoPreparacaoPlanejamentoTemp.nome = 'Produto';\r\n classeTipoPreparacaoPlanejamentoTemp.tipo = 'Produto';\r\n classeTipoPreparacaoPlanejamentoTemp.dataPlanejamento = new Array();\r\n classeTipoPreparacaoPlanejamentoTemp.planejamento = new Array();\r\n classeTipoPreparacaoPlanejamentoTemp.planejamento.push(planejamentoTemp);\r\n tipoRefeicaoNaLista.classeTipoPreparacaoPlanejamento.push(classeTipoPreparacaoPlanejamentoTemp);\r\n } else {\r\n\r\n tipoRefeicaoNaLista?.planejamento?.push(planejamentoTemp);\r\n\r\n }\r\n }\r\n }\r\n });\r\n\r\n this.blockUI.stop();\r\n });\r\n }\r\n\r\n\r\n redirecionarMapaProducao() {\r\n this.router.navigateByUrl('/mapa-producao', { state: { mapaProducaoId: this.mapaProducaoSelecionado.id } });\r\n }\r\n\r\n nomeReduzido(nome: string, caracteres = 16): string {\r\n let retorno = '';\r\n\r\n if (nome.length > caracteres) {\r\n retorno = nome.substring(0, caracteres) + '...';\r\n } else {\r\n retorno = nome;\r\n }\r\n return retorno;\r\n }\r\n\r\n podeExibirModuloPlano(moduloPlano: string[]) {\r\n return this.permissoesService.podeExibirModuloPlano(moduloPlano);\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-not-found',\r\n templateUrl: './not-found.component.html',\r\n})\r\nexport class NotFoundComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n}\r\n","
\r\n
\r\n

404

\r\n

Página Não Encontrada

\r\n

\r\n Volta para a tela principal Dashboard.\r\n

\r\n
\r\n
\r\n","\r\nimport { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\nimport { HomeComponent } from './modules/home/home.component';\r\nimport { NotFoundComponent } from './core/not-found/not-found.component';\r\nimport { AuthGuard } from './core/authentication/auth.guard';\r\n\r\nconst routes: Routes = [\r\n { path: '', canActivate: [AuthGuard], component: HomeComponent },\r\n { path: 'dashboard', canActivate: [AuthGuard], component: HomeComponent },\r\n { path: 'cadastros', loadChildren: () => import('./modules/configuracao/configuracao.module').then(m => m.ConfiguracaoModule) },\r\n { path: 'auth', loadChildren: () => import('./core/auth/auth.module').then(m => m.AuthModule) },\r\n { path: 'alimentos', loadChildren: () => import('./modules/alimentos/alimentos.module').then(m => m.AlimentosModule) },\r\n { path: 'materiais-diversos', loadChildren: () => import('./modules/materiais-diversos/materiais-diversos.module').then(m => m.MateriaisDiversosModule) },\r\n { path: 'fichas-tecnicas', loadChildren: () => import('./modules/fichas-tecnicas/fichas-tecnicas.module').then(m => m.FichasTecnicasModule) },\r\n { path: 'produto', loadChildren: () => import('./modules/produto/produto.module').then(m => m.ProdutoModule) },\r\n { path: 'cardapio', loadChildren: () => import('./modules/cardapio/cardapio.module').then(m => m.CardapioModule) },\r\n { path: 'mapa-producao', loadChildren: () => import('./modules/mapa-producao/mapa-producao.module').then(m => m.MapaProducaoModule) },\r\n { path: 'compras', loadChildren: () => import('./modules/compras/compras.module').then(m => m.ComprasModule) },\r\n { path: 'estoque', loadChildren: () => import('./modules/estoque/estoque.module').then(m => m.EstoqueModule) },\r\n { path: 'admin', loadChildren: () => import('./modules/admin/admin.module').then(m => m.AdminModule) },\r\n { path: 'painel-admin', loadChildren: () => import('./modules/painel-admin/painel-admin.module').then(m => m.PainelAdminModule) },\r\n { path: 'usuario', loadChildren: () => import('./modules/usuario/usuario.module').then(m => m.UsuarioModule) },\r\n { path: 'execucao', loadChildren: () => import('./modules/execucao/execucao.module').then(m => m.ExecucaoModule) },\r\n { path: 'relatorios', loadChildren: () => import('./modules/relatorios/relatorios.module').then(m => m.RelatoriosModule) },\r\n { path: 'expedicao', loadChildren: () => import('./modules/expedicao/expedicao.module').then(m => m.ExpedicaoModule) },\r\n { path: 'pedido', loadChildren: () => import('./modules/pedido/pedido.module').then(m => m.PedidoModule) },\r\n { path: 'financeiro', loadChildren: () => import('./modules/financeiro/financeiro.module').then(m => m.FinanceiroModule) },\r\n { path: 'cardapio-cliente', loadChildren: () => import('./modules/cliente-responsavel/cliente-responsavel.module').then(m => m.ClienteResponsavelModule) },\r\n { path: '**', component: NotFoundComponent }\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forRoot(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class AppRoutingModule { }\r\n","export class FiltroNotificacao {\r\n empresaId: string;\r\n tamanhoPagina: number;\r\n pagina: number;\r\n}\r\n","import { Injectable, EventEmitter } from '@angular/core';\r\nimport { BaseService } from './base.service';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { FiltroNotificacao } from 'src/app/shared/models/filtros/filtroNotificacao';\r\nimport { Observable } from 'rxjs';\r\nimport { Notificacao } from 'src/app/shared/models/notificacao';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class NotificacaoService extends BaseService {\r\n\r\n notificador = new EventEmitter();\r\n notificadorLoop = new EventEmitter();\r\n notificadorComanda = new EventEmitter();\r\n notificadorComandaFechada = new EventEmitter();\r\n\r\n constructor(private http: HttpClient) {\r\n super();\r\n }\r\n\r\n notificar() {\r\n this.notificador.emit();\r\n }\r\n\r\n notificarLoop() {\r\n this.notificadorLoop.emit();\r\n }\r\n\r\n notificarComanda() {\r\n this.notificadorComanda.emit();\r\n }\r\n\r\n notificarComandaFechada() {\r\n this.notificadorComandaFechada.emit();\r\n }\r\n\r\n obterLista(filtroNotificacao: FiltroNotificacao): Observable {\r\n return this.http.post(this.urlService + 'notificacao/obterLista', filtroNotificacao, super.ObterAuthHeaderJson());\r\n }\r\n\r\n inserir(notificacao: Notificacao): Observable {\r\n return this.http.post(this.urlService + 'notificacao/inserir', notificacao, super.ObterAuthHeaderJson());\r\n }\r\n\r\n alterar(notificacao: Notificacao): Observable {\r\n return this.http.put(this.urlService + 'notificacao/alterar', notificacao, super.ObterAuthHeaderJson());\r\n }\r\n\r\n excluir(id: string): Observable {\r\n return this.http.delete(this.urlService + 'notificacao/excluir?id=' + id, super.ObterAuthHeaderJson());\r\n }\r\n\r\n marcarTodasNotificacoesComoVisualizada(filtroNotificacao: FiltroNotificacao): Observable {\r\n return this.http.post(this.urlService + 'notificacao/marcarTodasNotificacoesComoVisualizada',\r\n filtroNotificacao, super.ObterAuthHeaderJson());\r\n }\r\n\r\n}\r\n","
\r\n
    \r\n
  • \r\n \r\n \r\n {{listaNotificacao.length}}\r\n \r\n\r\n
    \r\n
    \r\n
    \r\n {{listaNotificacao.length}} 1; else templateQuantidadeNotificacao\">Novas Notificações\r\n \r\n Nova Notificação\r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
      \r\n \r\n
    • 0\"\r\n [ngClass]=\"{'unread': !notificacao.visualizado}\">\r\n
      \r\n
      \r\n
      \r\n {{notificacao?.mensagem}}\r\n
      \r\n
      {{notificacao?.tempoPassouNotificacao}}
      \r\n
      \r\n
      \r\n \r\n
      \r\n
      \r\n
    • \r\n
      \r\n
    • \r\n
      \r\n Não existe notificações\r\n
      \r\n
    • \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
  • \r\n
\r\n
\r\n","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { NotificacaoService } from 'src/app/core/services/notificacao.service';\r\nimport { Notificacao } from 'src/app/shared/models/notificacao';\r\nimport { FiltroNotificacao } from 'src/app/shared/models/filtros/filtroNotificacao';\r\nimport * as moment from 'moment';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { BlockUI, NgBlockUI } from 'ng-block-ui';\r\nimport { PerfectScrollbarConfigInterface } from 'ngx-perfect-scrollbar';\r\nimport { Subscription } from 'rxjs';\r\nimport * as favicon from 'favico.js';\r\nimport { trigger, state, style, transition, animate, keyframes } from '@angular/animations';\r\nimport { Router } from '@angular/router';\r\nimport { LocalStorageObject } from '../services/localStorageObject.service';\r\n\r\nmoment.locale('pt-br');\r\n\r\n@Component({\r\n selector: 'app-notificacao',\r\n templateUrl: './notificacao.component.html',\r\n styleUrls: ['./notificacao.component.scss'],\r\n animations: [\r\n trigger('icone-animado', [\r\n state(\r\n 'ativo',\r\n style({\r\n })\r\n ),\r\n transition('inativo => ativo', [\r\n animate(\r\n '1500ms ease-in-out',\r\n keyframes([\r\n style({\r\n transform: 'rotate(0deg)',\r\n transformOrigin: 'top center',\r\n }),\r\n style({\r\n transform: 'rotate(25deg)',\r\n transformOrigin: 'top center',\r\n }),\r\n style({\r\n transform: 'rotate(-25deg)',\r\n transformOrigin: 'top center',\r\n }),\r\n style({\r\n transform: 'rotate(25deg)',\r\n transformOrigin: 'top center',\r\n }),\r\n style({\r\n transform: 'rotate(-25deg)',\r\n transformOrigin: 'top center',\r\n }),\r\n style({\r\n transform: 'rotate(25deg)',\r\n transformOrigin: 'top center',\r\n }),\r\n style({\r\n transform: 'rotate(-25deg)',\r\n transformOrigin: 'top center',\r\n }),\r\n style({\r\n transform: 'rotate(0deg)',\r\n transformOrigin: 'top center',\r\n }),\r\n ])\r\n ),\r\n ]),\r\n state(\r\n 'inativo',\r\n style({\r\n })\r\n ),\r\n transition('ativo => inativo', [\r\n animate(\r\n '500ms ease-in-out',\r\n keyframes([\r\n style({\r\n transform: 'rotate(0deg)',\r\n transformOrigin: 'top center',\r\n }),\r\n ])\r\n ),\r\n ]),\r\n ]),\r\n]\r\n})\r\nexport class NotificacaoComponent implements OnInit, OnDestroy {\r\n @BlockUI() blockUI: NgBlockUI;\r\n\r\n listaNotificacao: Notificacao[];\r\n filtroNotificacao: FiltroNotificacao;\r\n config: PerfectScrollbarConfigInterface = {\r\n suppressScrollX: true,\r\n maxScrollbarLength: 363,\r\n };\r\n\r\n requestLoopNotificacao: Subscription;\r\n fav: any;\r\n iconeAnimado = 'inativo';\r\n animacaoAtiva = false;\r\n audio = new Audio('/assets/sound/bigbox.ogg');\r\n\r\n constructor(\r\n private readonly notificacaoService: NotificacaoService,\r\n private readonly toastr: ToastrService,\r\n private readonly router: Router,\r\n private readonly localStorageObject: LocalStorageObject\r\n ) {\r\n this.filtroNotificacao = new FiltroNotificacao();\r\n this.listaNotificacao = new Array();\r\n }\r\n\r\n ngOnInit(): void {\r\n\r\n\r\n this.filtroNotificacao.empresaId = this.localStorageObject?.empresaSelecionada?.id;\r\n this.criarFavicon();\r\n\r\n this.requestLoopNotificacao = this.notificacaoService.notificadorLoop.subscribe(() => {\r\n this.obterListaLoop();\r\n });\r\n\r\n this.obterListaNotificacao();\r\n\r\n setTimeout(() => {\r\n this.notificacaoService.notificarLoop();\r\n }, 3000);\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.requestLoopNotificacao) {\r\n this.requestLoopNotificacao.unsubscribe();\r\n }\r\n }\r\n\r\n playAudio() {\r\n // this.audio.play();\r\n }\r\n\r\n onEndAnimate(event: any) {\r\n if (this.animacaoAtiva) {\r\n this.iconeAnimado = 'ativo';\r\n if (event.toState === 'ativo') {\r\n setTimeout(() => {\r\n this.iconeAnimado = 'inativo';\r\n }, 0);\r\n }\r\n }\r\n }\r\n\r\n criarFavicon() {\r\n this.fav = new favicon({\r\n position: 'up',\r\n animation: 'popFade',\r\n bgColor: '#d10000',\r\n fontFamily: 'Roboto',\r\n });\r\n }\r\n\r\n resetarFavicon() {\r\n this.fav.reset();\r\n }\r\n\r\n abrirDropDownNotificacao() {\r\n this.obterListaNotificacao();\r\n }\r\n\r\n obterListaLoop() {\r\n this.animacaoAtiva = false;\r\n this.iconeAnimado = 'inativo';\r\n\r\n this.notificacaoService.obterLista(this.filtroNotificacao)\r\n .subscribe((response) => {\r\n this.listaNotificacao = response;\r\n this.resetarFavicon();\r\n\r\n if (this.listaNotificacao.length > 0) {\r\n this.listaNotificacao.forEach((notificacao) => {\r\n notificacao.tempoPassouNotificacao = this.tempoPassou(\r\n notificacao.dataCadastro\r\n );\r\n });\r\n this. animacaoAtiva = true;\r\n this.iconeAnimado = 'ativo';\r\n this.playAudio();\r\n this.fav.badge(this.listaNotificacao.length);\r\n const newTitle = '(' + this.listaNotificacao.length + ') ' + 'SGE';\r\n document.title = newTitle;\r\n } else {\r\n this.animacaoAtiva = false;\r\n this.iconeAnimado = 'inativo';\r\n const newTitle = 'SGE';\r\n document.title = newTitle;\r\n }\r\n\r\n setTimeout(() => {\r\n this.notificacaoService.notificarLoop();\r\n }, 10000);\r\n\r\n }, error => {\r\n setTimeout(() => {\r\n const token = this.localStorageObject.token;\r\n if (token) {\r\n this.obterListaLoop();\r\n console.log(`erro no request`);\r\n }\r\n }, 10000);\r\n });\r\n }\r\n\r\n obterListaNotificacao() {\r\n this.blockUI.start();\r\n this.resetarFavicon();\r\n this.animacaoAtiva = false;\r\n this.iconeAnimado = 'inativo';\r\n this.notificacaoService\r\n .obterLista(this.filtroNotificacao)\r\n .subscribe((response) => {\r\n this.listaNotificacao = response;\r\n\r\n if (this.listaNotificacao.length > 0) {\r\n this.listaNotificacao.forEach((notificacao) => {\r\n notificacao.tempoPassouNotificacao = this.tempoPassou(\r\n notificacao.dataCadastro\r\n );\r\n });\r\n this.animacaoAtiva = true;\r\n this.iconeAnimado = 'ativo';\r\n this.fav.badge(this.listaNotificacao.length);\r\n const newTitle =\r\n '(' + this.listaNotificacao.length + ') ' + 'Cookgo';\r\n document.title = newTitle;\r\n } else {\r\n this.animacaoAtiva = false;\r\n this.iconeAnimado = 'inativo';\r\n const newTitle = 'Cookgo';\r\n document.title = newTitle;\r\n }\r\n\r\n this.blockUI.stop();\r\n });\r\n }\r\n\r\n excluirNotificacao(id: string) {\r\n this.notificacaoService.excluir(id).subscribe((response) => {\r\n this.toastr.success('Notificação excluída com sucesso.');\r\n this.obterListaNotificacao();\r\n });\r\n }\r\n\r\n visualizarNotificacao(notificacao: Notificacao) {\r\n notificacao.visualizado = true;\r\n\r\n this.notificacaoService.alterar(notificacao).subscribe((response) => {\r\n this.obterListaNotificacao();\r\n\r\n if (response.movimentacaoId) {\r\n this.router.navigate(['/estoque/recebimento-itens', notificacao.movimentacaoId]);\r\n }\r\n\r\n if (response.movimentacaoTransferenciaId) {\r\n this.router.navigate(['/estoque/movimentacao-transferencia-recebimento', notificacao.movimentacaoTransferenciaId]);\r\n }\r\n });\r\n }\r\n\r\n marcarTodasNotificacoesComoVisualizada() {\r\n this.notificacaoService\r\n .marcarTodasNotificacoesComoVisualizada(this.filtroNotificacao)\r\n .subscribe((response) => {\r\n this.toastr.success(\r\n 'Todas Notificações foram marcadas como visualizadas.'\r\n );\r\n this.obterListaNotificacao();\r\n });\r\n }\r\n\r\n tempoPassou(data: Date): string {\r\n let retorno = '';\r\n if (data) {\r\n retorno = moment(data).fromNow();\r\n }\r\n return retorno;\r\n }\r\n}\r\n","import { UsuarioEmpresa } from '../usuarioEmpresa';\r\n\r\nexport class ListaPaginadaUsuarioEmpresa {\r\n tamanhoPagina: number;\r\n pagina: number;\r\n itensTotal: number;\r\n itens: Array;\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { BlockUI, BlockUIService, NgBlockUI } from 'ng-block-ui';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { LocalStorageObject } from '../services/localStorageObject.service';\r\nimport { Intercom } from 'ng-intercom';\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AuthService {\r\n\r\n @BlockUI() blockUI: NgBlockUI;\r\n\r\n constructor(\r\n private readonly router: Router,\r\n private readonly toastr: ToastrService,\r\n private readonly localStorageObject: LocalStorageObject,\r\n public intercom: Intercom\r\n ) { }\r\n\r\n logout(tokenExpirou?: boolean): void {\r\n this.blockUI.start();\r\n\r\n setTimeout(() => {\r\n localStorage.removeItem('rotulagem.token');\r\n localStorage.removeItem('rotulagem.expira');\r\n localStorage.removeItem('rotulagem.usuario');\r\n localStorage.removeItem('rotulagem.empresaSelecionada');\r\n localStorage.setItem('rotulagem.empresaSelecionada', JSON.stringify(null));\r\n localStorage.removeItem('rotulagem.sidebarScroll');\r\n localStorage.removeItem('intercom-state');\r\n\r\n this.localStorageObject.popularVariavelGlobalEmpresa();\r\n this.localStorageObject.popularVariavelGlobalUsuario();\r\n this.localStorageObject.popularVariavelGlobalToken();\r\n\r\n this.router.navigateByUrl('/auth/login');\r\n // this.intercom.shutdown();\r\n\r\n if (tokenExpirou) {\r\n this.toastr.warning('Sua sessão expirou, insira login e senha para continuar utilizando o sge.');\r\n }\r\n\r\n this.blockUI.reset();\r\n }, 1000);\r\n }\r\n\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class UtilService {\r\n constructor() {}\r\n\r\n setCache(key: string, value: T): void {\r\n localStorage.setItem(key, JSON.stringify(value));\r\n }\r\n\r\n removeCache(key: string) {\r\n localStorage.removeItem(key);\r\n }\r\n\r\n getCache(key: string): T {\r\n return JSON.parse(localStorage.getItem(key));\r\n }\r\n\r\n formatarDecimal(valor: any, decimalCount = 2, decimal = ',', thousands = '.') {\r\n if (valor === 0 || valor === null) {\r\n return '-';\r\n }\r\n\r\n let i: number;\r\n\r\n try {\r\n decimalCount = Math.abs(decimalCount);\r\n decimalCount = isNaN(decimalCount) ? 2 : decimalCount;\r\n\r\n const negativeSign = valor < 0 ? '-' : '';\r\n\r\n i = parseInt((valor = Math.abs(Number(valor) || 0).toFixed(decimalCount)));\r\n\r\n const j = i > 3 ? i % 3 : 0;\r\n\r\n return (\r\n negativeSign +\r\n (j ? i.toString().substr(0, j) + thousands : '') +\r\n i.toString().substr(j).replace(/(\\d{3})(?=\\d)/g, '$1' + thousands) +\r\n (decimalCount ? decimal + Math.abs(valor - i).toFixed(decimalCount).slice(2) : '')\r\n );\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n }\r\n}\r\n","\r\n
\r\n \r\n
\r\n\r\n\r\n
\r\n
\r\n
\r\n
\r\n
Trocar empresa selecionada
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n Empresa\r\n \r\n \r\n \r\n \r\n \r\n \r\n
Razão Social: {{usuarioEmpresa?.empresa?.nome}}
\r\n
Nome Fantasia: {{usuarioEmpresa?.empresa?.nomeFantasia}}
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n Nenhum item na lista\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n","import { Component, OnInit, ViewChild } from '@angular/core';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { LoginService } from 'src/app/core/services/login.service';\r\nimport { NgBlockUI, BlockUI } from 'ng-block-ui';\r\nimport { UsuarioEmpresa } from 'src/app/shared/models/usuarioEmpresa';\r\nimport constants from '../config/constants';\r\nimport { ModalDirective } from 'ngx-bootstrap/modal';\r\nimport { LocalStorageObject } from '../services/localStorageObject.service';\r\nimport { PermissoesService } from '../auth/permissoes.service';\r\nimport { AuthService } from '../auth/auth.service';\r\nimport { AuthGuard } from '../authentication/auth.guard';\r\nimport { AdminService } from '../services/admin.service';\r\nimport { ListaPaginadaUsuarioEmpresa } from 'src/app/shared/models/listas-paginadas/listaPaginadaUsuariosEmpresa';\r\nimport { FiltroUsuarioEmpresa } from 'src/app/shared/models/filtros/filtroUsuarioEmpresa';\r\nimport { PageChangedEvent } from 'ngx-bootstrap/pagination';\r\nimport { UsuarioEmpresaService } from '../services/usuarioEmpresa.service';\r\nimport { UtilService } from '../services/util.service';\r\n\r\n@Component({\r\n selector: 'app-menu-usuario',\r\n templateUrl: './menu-usuario.component.html',\r\n styleUrls: ['./menu-usuario.component.scss']\r\n})\r\nexport class MenuUsuarioComponent implements OnInit {\r\n\r\n @BlockUI() blockUI: NgBlockUI;\r\n\r\n @ViewChild('staticModalEscolherEmpresa', { static: true }) staticModalEscolherEmpresa: ModalDirective;\r\n\r\n token: string;\r\n expira: string;\r\n listaUsuarioEmpresa: ListaPaginadaUsuarioEmpresa;\r\n modulos: any;\r\n mensagem: string;\r\n usuarioSuperAdmin: boolean;\r\n filtroUsuarioEmpresa: FiltroUsuarioEmpresa;\r\n nome: string;\r\n\r\n config = {\r\n backdrop: false,\r\n ignoreBackdropClick: true\r\n };\r\n\r\n constructor(\r\n public readonly authService: AuthService,\r\n private readonly toastr: ToastrService,\r\n private readonly loginService: LoginService,\r\n public readonly localStorageObject: LocalStorageObject,\r\n private readonly permissoesService: PermissoesService,\r\n private readonly authGuard: AuthGuard,\r\n private readonly adminService: AdminService,\r\n private readonly usuarioEmpresaService: UsuarioEmpresaService,\r\n private readonly utilService: UtilService\r\n ) {\r\n this.modulos = constants.MODULOS;\r\n this.listaUsuarioEmpresa = new ListaPaginadaUsuarioEmpresa();\r\n this.filtroUsuarioEmpresa = new FiltroUsuarioEmpresa();\r\n }\r\n\r\n ngOnInit() { }\r\n\r\n usuarioComFoto(): boolean {\r\n let retorno = true;\r\n if (this.localStorageObject.usuario.urlFoto) {\r\n retorno = false;\r\n }\r\n return retorno;\r\n }\r\n\r\n selecionarEmpresa(usuarioEmpresa: UsuarioEmpresa): void {\r\n if (this.superAdmin()) {\r\n localStorage.setItem('rotulagem.empresaSelecionada', JSON.stringify(usuarioEmpresa.empresa));\r\n this.localStorageObject.popularVariavelGlobalEmpresa();\r\n\r\n this.fecharModalTrocarEmpresa();\r\n this.authGuard.redirecionarRotaRaizPermissao(this.localStorageObject.usuario, this.localStorageObject.empresaSelecionada);\r\n return;\r\n }\r\n\r\n this.blockUI.start();\r\n\r\n this.loginService.tokenPermissoesEmpresa(this.localStorageObject.usuario.id, usuarioEmpresa.id).subscribe(responseTokenPermissoesEmpresa => {\r\n\r\n // Plano expirado\r\n const dataAtual = new Date().getTime();\r\n const dataTerminoDate = new Date(usuarioEmpresa.empresa.planoEmpresa.dataTermino);\r\n const dataTermino = dataTerminoDate.setDate(dataTerminoDate.getDate() + 1);\r\n\r\n if (!usuarioEmpresa.empresa.planoEmpresa.plano.planoBase && (dataAtual > dataTermino)) {\r\n\r\n this.adminService.editarClientePlanoBase(usuarioEmpresa.empresa.id).subscribe(response => {\r\n usuarioEmpresa.empresa = response;\r\n localStorage.setItem('rotulagem.empresaSelecionada', JSON.stringify(usuarioEmpresa.empresa));\r\n this.carregarTelaInicial(responseTokenPermissoesEmpresa);\r\n });\r\n\r\n } else {\r\n localStorage.setItem('rotulagem.empresaSelecionada', JSON.stringify(usuarioEmpresa.empresa));\r\n this.carregarTelaInicial(responseTokenPermissoesEmpresa);\r\n }\r\n },\r\n falhou => {\r\n this.blockUI.stop();\r\n console.error(falhou);\r\n this.toastr.error('Não foi possível trocar de empresa.');\r\n }\r\n );\r\n }\r\n\r\n carregarTelaInicial(response: any): void {\r\n localStorage.setItem('rotulagem.token', response.access_token);\r\n localStorage.setItem('rotulagem.expira', response.expires_in);\r\n\r\n this.localStorageObject.usuario.permissoes = response.permissoes;\r\n this.localStorageObject.usuario.perfilId = response.perfilId;\r\n this.localStorageObject.usuario.perfilNome = response.perfilNome;\r\n this.localStorageObject.usuario.superAdmin = response.superAdmin;\r\n localStorage.setItem('rotulagem.usuario', JSON.stringify(this.localStorageObject.usuario));\r\n\r\n this.localStorageObject.popularVariavelGlobalEmpresa();\r\n this.localStorageObject.popularVariavelGlobalUsuario();\r\n\r\n this.fecharModalTrocarEmpresa();\r\n this.blockUI.stop();\r\n this.authGuard.redirecionarRotaRaizPermissao(this.localStorageObject.usuario, this.localStorageObject.empresaSelecionada);\r\n }\r\n\r\n podeExibirModulo(moduloId: string | number): boolean {\r\n return this.permissoesService.podeExibirModulo(moduloId);\r\n }\r\n\r\n abrirModalListaEmpresa(): void {\r\n this.filtroUsuarioEmpresa.pagina = 1;\r\n this.filtroUsuarioEmpresa.tamanhoPagina = 10;\r\n this.obterListaEmpresa();\r\n }\r\n\r\n obterListaEmpresa(): void {\r\n this.blockUI.start();\r\n this.filtroUsuarioEmpresa.usuarioId = this.localStorageObject.usuario.id;\r\n this.usuarioEmpresaService.obterListaPaginadaEmpresasDoUsuario(this.filtroUsuarioEmpresa).subscribe((listaPaginadaUsuariosDaEmpresa) => {\r\n this.localStorageObject.usuario.usuarioEmpresa = listaPaginadaUsuariosDaEmpresa.itens;\r\n this.utilService.setCache('rotulagem.usuario', this.localStorageObject.usuario);\r\n\r\n this.localStorageObject.popularVariavelGlobalEmpresa();\r\n this.localStorageObject.popularVariavelGlobalUsuario();\r\n\r\n if (this.localStorageObject.usuario) {\r\n this.listaUsuarioEmpresa = listaPaginadaUsuariosDaEmpresa;\r\n }\r\n this.staticModalEscolherEmpresa.show();\r\n this.blockUI.stop();\r\n });\r\n }\r\n\r\n superAdmin(): boolean {\r\n const superAdmin = !!this.localStorageObject.usuario.superAdmin;\r\n return superAdmin;\r\n }\r\n\r\n fecharModalTrocarEmpresa(): void {\r\n this.staticModalEscolherEmpresa.hide();\r\n }\r\n\r\n buscarPorNome(): void {\r\n this.filtroUsuarioEmpresa.nome = this.nome;\r\n this.obterListaEmpresa();\r\n }\r\n\r\n alterarPagina(event: PageChangedEvent): void {\r\n this.filtroUsuarioEmpresa.pagina = event.page;\r\n this.filtroUsuarioEmpresa.tamanhoPagina = event.itemsPerPage;\r\n this.obterListaEmpresa();\r\n }\r\n\r\n logout(): void {\r\n this.authService.logout();\r\n }\r\n\r\n}\r\n","\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \"\"\r\n \r\n \r\n \r\n \r\n
\r\n \r\n\r\n \r\n\r\n
    \r\n
  • \r\n Ambiente Dev\r\n
  • \r\n \r\n
  • \r\n \r\n
  • \r\n 0\">\r\n
  • \r\n
  • \r\n \r\n
  • \r\n
  • \r\n
  • \r\n \r\n \r\n \r\n
  • \r\n
\r\n \r\n
\r\n \r\n
\r\n","import { Component, EventEmitter, Input, Output, OnDestroy } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport pageSettings from '../config/page-settings';\r\nimport { LocalStorageObject } from '../services/localStorageObject.service';\r\nimport { environment } from './../../../environments/environment';\r\n\r\n\r\n@Component({\r\n selector: 'app-header',\r\n templateUrl: './header.component.html',\r\n styleUrls: ['./header.component.scss']\r\n})\r\nexport class HeaderComponent implements OnDestroy {\r\n\r\n @Input() pageSidebarTwo;\r\n @Output() toggleSidebarRightCollapsed = new EventEmitter();\r\n @Output() toggleMobileSidebar = new EventEmitter();\r\n @Output() toggleMobileRightSidebar = new EventEmitter();\r\n pageSettings = pageSettings;\r\n token: string;\r\n url: string;\r\n\r\n ambiente = environment.api;\r\n tipoAmbiente = environment.production;\r\n\r\n isExpanded = false;\r\n\r\n constructor(\r\n private readonly activatedRoute: ActivatedRoute,\r\n public readonly localStorageObject: LocalStorageObject,\r\n ) {\r\n this.token = this.localStorageObject.token;\r\n\r\n }\r\n\r\n mobileSidebarToggle() {\r\n this.toggleMobileSidebar.emit(true);\r\n }\r\n mobileRightSidebarToggle() {\r\n this.toggleMobileRightSidebar.emit(true);\r\n }\r\n toggleSidebarRight() {\r\n this.toggleSidebarRightCollapsed.emit(true);\r\n }\r\n\r\n mobileTopMenuToggle() {\r\n this.pageSettings.pageMobileTopMenuToggled = !this.pageSettings.pageMobileTopMenuToggled;\r\n }\r\n\r\n mobileMegaMenuToggle() {\r\n this.pageSettings.pageMobileMegaMenuToggled = !this.pageSettings.pageMobileMegaMenuToggled;\r\n }\r\n\r\n ngOnDestroy() {\r\n this.pageSettings.pageMobileTopMenuToggled = false;\r\n this.pageSettings.pageMobileMegaMenuToggled = false;\r\n }\r\n\r\n collapse() {\r\n this.isExpanded = false;\r\n }\r\n\r\n toggle() {\r\n this.isExpanded = !this.isExpanded;\r\n }\r\n\r\n usuarioLogado(): boolean {\r\n this.token = this.localStorageObject.token;\r\n if (!this.token) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n rotaAdmin() {\r\n if (this.activatedRoute.firstChild != null) {\r\n this.activatedRoute.firstChild.url.subscribe((urlPath) => {\r\n if (urlPath[0] != null) {\r\n this.url = urlPath[0].path;\r\n } else {\r\n return false;\r\n }\r\n });\r\n }\r\n\r\n if (this.url === 'admin') {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'moduloPlano'\r\n})\r\nexport class ModuloPlanoPipe implements PipeTransform {\r\n\r\n transform(value: any, args?: any): any {\r\n let retorno = '';\r\n\r\n if (value === 'moduloAlimento') {\r\n retorno = 'Módulo Alimento';\r\n }\r\n if (value === 'moduloMaterialDiverso') {\r\n retorno = 'Módulo Material';\r\n }\r\n if (value === 'moduloProduto') {\r\n retorno = 'Módulo Produto';\r\n }\r\n if (value === 'moduloCardapio') {\r\n retorno = 'Módulo Cardápio';\r\n }\r\n if (value === 'moduloPedidos') {\r\n retorno = 'Módulo Pedidos';\r\n }\r\n if (value === 'moduloFornecedores') {\r\n retorno = 'Módulo Fornecedores';\r\n }\r\n if (value === 'moduloClientes') {\r\n retorno = 'Módulo Clientes';\r\n }\r\n if (value === 'submoduloFichaTecnicaBanco') {\r\n retorno = 'Submódulo Ficha Técnica Importações';\r\n }\r\n if (value === 'submoduloFichaTecnicaExcel') {\r\n retorno = 'Submódulo Ficha Técnica Excel';\r\n }\r\n if (value === 'submoduloFichaTecnicaImpressoes') {\r\n retorno = 'Submódulo Ficha Técnica Impressoes Personalizadas';\r\n }\r\n if (value === 'submoduloTiposClassesMotivo') {\r\n retorno = 'Submódulo Tipos e Classes ClassesMotivo';\r\n }\r\n if (value === 'submoduloTiposClassesGrupoClientes') {\r\n retorno = 'Submódulo Tipos e Classes Grupo Clientes';\r\n }\r\n if (value === 'submoduloTiposClassesCategoriaItemCardapio') {\r\n retorno = 'Submódulo Tipos e Classes CategoriaItemCardapio';\r\n }\r\n if (value === 'moduloMapaProducao') {\r\n retorno = 'Módulo Mapa de produção';\r\n }\r\n if (value === 'moduloReceitasCalculadas') {\r\n retorno = 'Módulo Receitas Calculadas';\r\n }\r\n if (value === 'moduloExecucao') {\r\n retorno = 'Módulo Execução';\r\n }\r\n if (value === 'moduloExpedicao') {\r\n retorno = 'Módulo Expedição';\r\n }\r\n if (value === 'moduloMovimentacao') {\r\n retorno = 'Módulo Movimentação';\r\n }\r\n if (value === 'moduloInventario') {\r\n retorno = 'Módulo Inventário';\r\n }\r\n if (value === 'impressaoLogo') {\r\n retorno = 'Impressão Logo';\r\n }\r\n if (value === 'quantidadeAcesso') {\r\n retorno = 'Quantidade Acessos';\r\n }\r\n if (value === 'quantidadeFichaTecnica') {\r\n retorno = 'Quantidade FTP';\r\n }\r\n if (value === 'quantidadeMapaProducao') {\r\n retorno = 'Quantidade Mapa de Produção';\r\n }\r\n if (value === 'moduloListaCompras') {\r\n retorno = 'Módulo Lista Compras';\r\n }\r\n if (value === 'moduloGerarCompras') {\r\n retorno = 'Módulo Gerar Compras';\r\n }\r\n if (value === 'moduloRelatorioCompras') {\r\n retorno = 'Módulo Relatorio Compras';\r\n }\r\n if (value === 'moduloFinanceiroMovimentacoes') {\r\n retorno = 'Módulo Financeiro Movimentações';\r\n }\r\n if (value === 'moduloFinanceiroCategorias') {\r\n retorno = 'Módulo Financeiro Categorias';\r\n }\r\n if (value === 'moduloFinanceiroCentroCusto') {\r\n retorno = 'Módulo Financeiro Centro de Custo';\r\n }\r\n if (value === 'moduloDashboard') {\r\n retorno = 'Módulo Dashboard';\r\n }\r\n if (value === 'moduloFichaTecnica') {\r\n retorno = 'Módulo Ficha Técnica';\r\n }\r\n if (value === 'moduloTiposClasses') {\r\n retorno = 'Módulo Tipos de Classes';\r\n }\r\n\r\n //Grupos de menus\r\n if (value === 'moduloEstoque') {\r\n retorno = 'Módulo Estoque';\r\n }\r\n if (value === 'moduloCompras') {\r\n retorno = 'Módulo Compras';\r\n }\r\n if (value === 'moduloRelatórios') {\r\n retorno = 'Módulo Relatórios';\r\n }\r\n if (value === 'moduloProdução') {\r\n retorno = 'Módulo Produção';\r\n }\r\n\r\n \r\n return retorno;\r\n }\r\n\r\n}","\r\n
\r\n
\r\n Aviso\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n

\r\n O plano {{plano.nome}} vinculado a sua empresa não possui acesso ao\r\n {{nomeModuloPlano | moduloPlano}}.\r\n

\r\n

Por favor entre em contato para ter mais informações de como obter acesso.

\r\n \r\n
\r\n\r\n \r\n

\r\n Você já possui a quantidade máxima de Acessos permitidas pelo seu plano: {{quantidadeAcesso}}.\r\n

\r\n

Por favor, entre em contato para ter mais informações de como obter acessos.

\r\n \r\n
\r\n \r\n

\r\n Você já possui a quantidade máxima de Fichas Técnica permitidas pelo seu plano: {{quantidadeFichaTecnica}}.\r\n

\r\n

Por favor, entre em contato para ter mais informações de como adicionar fichas técnicas ao seu plano.

\r\n \r\n
\r\n \r\n

\r\n Você já possui a quantidade máxima de Mapas de Produção permitidos pelo seu plano: {{quantidadeMapaProducao}}.\r\n

\r\n

Por favor, entre em contato para ter mais informações de como adicionar mapas de produção ao seu plano.

\r\n \r\n
\r\n \r\n

\r\n {{texto}}\r\n

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n\r\n
\r\n","import { Component, OnInit, ViewChild, ElementRef, TemplateRef } from '@angular/core';\r\nimport { ModalDirective, BsModalRef, BsModalService } from 'ngx-bootstrap/modal';\r\nimport { Empresa } from '../models/empresa';\r\nimport { Plano } from '../models/plano';\r\nimport { ModalBloqueioPlanoService } from './modal-bloqueio-plano.service';\r\nimport { tap, switchMap } from 'rxjs/operators';\r\nimport { isString } from 'util';\r\nimport { LocalStorageObject } from 'src/app/core/services/localStorageObject.service';\r\n\r\n@Component({\r\n selector: 'app-modal-bloqueio-plano',\r\n templateUrl: './modal-bloqueio-plano.component.html',\r\n styleUrls: ['./modal-bloqueio-plano.component.scss']\r\n})\r\nexport class ModalBloqueioPlanoComponent implements OnInit {\r\n\r\n // @ViewChild(TemplateRef, { static: true }) modalMensagemPlano: TemplateRef;\r\n @ViewChild(TemplateRef, { static: false }) modalMensagemPlano: TemplateRef;\r\n\r\n bsModalRef: BsModalRef;\r\n\r\n config = {\r\n backdrop: false,\r\n ignoreBackdropClick: true,\r\n class: 'modal-md'\r\n };\r\n\r\n empresaSelecionada: Empresa;\r\n plano?: Plano;\r\n nomeModuloPlano?: string;\r\n quantidadeAcesso?: number;\r\n quantidadeFichaTecnica?: number;\r\n quantidadeMapaProducao?: number;\r\n texto?: number;\r\n\r\n constructor(\r\n private readonly modalBloqueioPlanoService: ModalBloqueioPlanoService,\r\n private readonly modalService: BsModalService,\r\n private readonly localStorageObject: LocalStorageObject\r\n ) {\r\n this.nomeModuloPlano = '';\r\n }\r\n\r\n ngOnInit() {\r\n this.obterPlanoEmpresaSelecionada();\r\n\r\n this.modalBloqueioPlanoService.notificador.subscribe((dados: any) => this.abrirModal(this.modalMensagemPlano, dados));\r\n }\r\n\r\n abrirModal(modalMapaProducao: TemplateRef, dados: any) {\r\n this.nomeModuloPlano = null;\r\n this.quantidadeAcesso = null;\r\n this.quantidadeFichaTecnica = null;\r\n this.quantidadeMapaProducao = null;\r\n this.texto = null;\r\n if (dados.quantidadeAcesso) {\r\n this.quantidadeAcesso = dados.quantidadeAcesso;\r\n }\r\n if (dados.quantidadeFichaTecnica) {\r\n this.quantidadeFichaTecnica = dados.quantidadeFichaTecnica;\r\n }\r\n if (dados.quantidadeMapaProducao) {\r\n this.quantidadeMapaProducao = dados.quantidadeMapaProducao;\r\n }\r\n if (dados.modulo) {\r\n this.nomeModuloPlano = dados.modulo;\r\n }\r\n if (dados.mensagemCadastroConta) {\r\n this.texto = dados.mensagemCadastroConta;\r\n }\r\n this.obterPlanoEmpresaSelecionada();\r\n this.bsModalRef = this.modalService.show(modalMapaProducao, this.config);\r\n }\r\n\r\n obterPlanoEmpresaSelecionada() {\r\n this.empresaSelecionada = this.localStorageObject.empresaSelecionada;\r\n if (this.empresaSelecionada && this.empresaSelecionada.planoEmpresa && this.empresaSelecionada.planoEmpresa.plano) {\r\n this.plano = this.empresaSelecionada.planoEmpresa.plano;\r\n }\r\n }\r\n\r\n fecharModal() {\r\n this.bsModalRef.hide();\r\n }\r\n\r\n}\r\n","import constants from './constants';\r\n\r\nconst pageMenus = [\r\n {\r\n title: 'MENU USUÁRIO',\r\n isTitle: true\r\n },\r\n {\r\n icon: 'fas fa-th-large',\r\n title: 'Dashboard',\r\n url: '/dashboard'\r\n },\r\n {\r\n icon: 'fa fa-file-invoice',\r\n title: 'Cadastro',\r\n url: '',\r\n caret: true,\r\n submenu: [\r\n {\r\n title: 'Alimentos',\r\n url: '/alimentos/',\r\n moduloId: constants.MODULOS.ALIMENTOS,\r\n moduloPlano: constants.modulosPlanos.moduloAlimento\r\n },\r\n {\r\n title: 'Materiais',\r\n url: '/materiais-diversos/',\r\n moduloId: constants.MODULOS.MATERIAIS_DIVERSOS,\r\n moduloPlano: constants.modulosPlanos.moduloMaterialDiverso\r\n },\r\n {\r\n title: 'Fichas Técnicas',\r\n url: '/fichas-tecnicas/',\r\n moduloId: constants.MODULOS.FICHAS_TECNICAS,\r\n moduloPlano: constants.modulosPlanos.moduloFichaTecnica\r\n },\r\n {\r\n title: 'Produtos',\r\n url: '/produto/',\r\n moduloId: constants.MODULOS.PRODUTO,\r\n moduloPlano: constants.modulosPlanos.moduloProduto\r\n },\r\n {\r\n title: 'Cardápios',\r\n url: '/cardapio/',\r\n moduloId: constants.MODULOS.CARDAPIO,\r\n moduloPlano: constants.modulosPlanos.moduloCardapio\r\n },\r\n {\r\n title: 'Pedidos',\r\n url: '/pedido/',\r\n moduloId: constants.MODULOS.PEDIDO,\r\n moduloPlano: constants.modulosPlanos.moduloPedidos\r\n },\r\n {\r\n title: 'Fornecedores',\r\n url: '/cadastros/fornecedores/',\r\n moduloId: constants.MODULOS.FORNECEDORES,\r\n moduloPlano: constants.modulosPlanos.moduloFornecedores\r\n },\r\n {\r\n title: 'Clientes',\r\n url: '/cadastros/clientes/',\r\n moduloId: constants.MODULOS.CLIENTES,\r\n moduloPlano: constants.modulosPlanos.moduloClientes\r\n },\r\n {\r\n title: 'Tipos e Classes',\r\n url: '/cadastros/tipos-classes/',\r\n moduloId: constants.MODULOS.TIPOS_CLASSES,\r\n moduloPlano: constants.modulosPlanos.moduloTiposClasses\r\n }\r\n ]\r\n },\r\n {\r\n icon: 'fa fa-people-carry',\r\n title: 'Produção',\r\n url: '',\r\n caret: true,\r\n // caretRight: true,\r\n submenu: [\r\n {\r\n title: 'Mapa de Produção',\r\n url: '/mapa-producao/',\r\n moduloId: constants.MODULOS.MAPA_PRODUCAO,\r\n moduloPlano: constants.modulosPlanos.moduloMapaProducao\r\n },\r\n {\r\n title: 'Receitas Calculadas',\r\n url: '/mapa-producao/receitas-calculadas',\r\n moduloId: constants.MODULOS.MAPA_PRODUCAO,\r\n moduloPlano: constants.modulosPlanos.moduloReceitasCalculadas\r\n },\r\n {\r\n title: 'Execução',\r\n url: '/execucao/',\r\n moduloId: constants.MODULOS.EXECUCAO,\r\n moduloPlano: constants.modulosPlanos.moduloExecucao\r\n },\r\n {\r\n title: 'Expedição',\r\n url: '/expedicao/',\r\n moduloId: constants.MODULOS.EXPEDICAO,\r\n moduloPlano: constants.modulosPlanos.moduloExpedicao\r\n }\r\n ]\r\n },\r\n {\r\n icon: 'fa fa-dolly-flatbed',\r\n title: 'Estoque',\r\n url: '',\r\n caret: true,\r\n // caretRight: true,\r\n submenu: [\r\n {\r\n url: 'estoque/lista-movimentacoes-estoque',\r\n title: 'Movimentações',\r\n moduloId: constants.MODULOS.MOVIMENTACOES,\r\n moduloPlano: constants.modulosPlanos.moduloMovimentacao\r\n },\r\n {\r\n url: 'estoque/inventario',\r\n title: 'Inventário',\r\n moduloId: constants.MODULOS.INVENTARIO,\r\n moduloPlano: constants.modulosPlanos.moduloInventario\r\n }\r\n ]\r\n },\r\n {\r\n icon: 'fa fa-file-invoice-dollar',\r\n title: 'Compras',\r\n url: '',\r\n caret: true,\r\n // caretRight: true,\r\n submenu: [\r\n {\r\n url: 'compras/lista-compras',\r\n title: 'Lista de Compras',\r\n moduloId: constants.MODULOS.COMPRAS,\r\n moduloPlano: constants.modulosPlanos.moduloListaCompras\r\n },\r\n {\r\n url: 'compras/gerar-compras',\r\n title: 'Gerar Compras',\r\n moduloId: constants.MODULOS.COMPRAS,\r\n moduloPlano: constants.modulosPlanos.moduloGerarCompras\r\n }\r\n ]\r\n },\r\n {\r\n icon: 'fa fa-poll',\r\n title: 'Relatórios',\r\n url: '',\r\n caret: true,\r\n submenu: [\r\n {\r\n url: 'relatorios/estoque',\r\n title: 'Estoque',\r\n moduloId: constants.MODULOS.MOVIMENTACOES,\r\n moduloPlano: constants.modulosPlanos.moduloMovimentacao\r\n },\r\n {\r\n url: 'relatorios/execucao',\r\n title: 'Execução',\r\n moduloId: constants.MODULOS.EXECUCAO,\r\n moduloPlano: constants.modulosPlanos.moduloExecucao\r\n },\r\n {\r\n url: 'relatorios/mapa-producao',\r\n title: 'Mapa Produção',\r\n moduloId: constants.MODULOS.MAPA_PRODUCAO,\r\n moduloPlano: constants.modulosPlanos.moduloMapaProducao\r\n },\r\n ]\r\n },\r\n {\r\n icon: 'fa fa-users-cog',\r\n title: 'Painel Administrativo',\r\n url: '/painel-admin/gerenciar-empresa',\r\n caret: false,\r\n moduloId: constants.MODULOS.PAINEL_ADMIN,\r\n },\r\n {\r\n title: 'MENU CLIENTE',\r\n isTitle: true\r\n },\r\n {\r\n icon: 'fas fa-list',\r\n title: 'Cardápio',\r\n url: '/cardapio-cliente',\r\n },\r\n];\r\n\r\nexport default pageMenus;\r\n","\r\n\r\nconst pageMenuAdmin = [\r\n {\r\n icon: 'fa fa-arrow-left',\r\n title: 'Voltar Menu Principal',\r\n url: '/dashboard'\r\n },\r\n {\r\n icon: 'fa fa-users',\r\n title: 'Clientes',\r\n url: 'admin/clientes/lista-clientes'\r\n },\r\n {\r\n icon: 'fa fa-box',\r\n title: 'Planos',\r\n url: 'admin/planos/lista-planos'\r\n }\r\n];\r\n\r\n\r\nexport default pageMenuAdmin;\r\n","import constants from './constants';\r\n\r\nconst pageMenuFinanceiro = [\r\n {\r\n icon: 'fa fa-dollar-sign',\r\n title: 'Financeiro',\r\n url: '',\r\n caret: true,\r\n submenu: [\r\n {\r\n url: 'financeiro/movimentacoes',\r\n title: 'Movimentações',\r\n moduloId: constants.MODULOS.FINANCEIRO_MOVIMENTACOES,\r\n moduloPlano: constants.modulosPlanos.moduloFinanceiroMovimentacoes\r\n },\r\n {\r\n url: 'financeiro/categorias',\r\n title: 'Categorias',\r\n moduloId: constants.MODULOS.FINANCEIRO_CATEGORIAS,\r\n moduloPlano: constants.modulosPlanos.moduloFinanceiroCategorias\r\n },\r\n {\r\n url: 'financeiro/centro-de-custo',\r\n title: 'Centros de custo',\r\n moduloId: constants.MODULOS.FINANCEIRO_CENTROS_DE_CUSTO,\r\n moduloPlano: constants.modulosPlanos.moduloFinanceiroCentroCusto\r\n },\r\n ]\r\n },\r\n {\r\n icon: 'fa fa-poll',\r\n title: 'Relatórios',\r\n url: '',\r\n caret: true,\r\n submenu: [\r\n {\r\n url: 'relatorios/fluxo-de-caixa',\r\n title: 'Custos',\r\n moduloId: constants.MODULOS.RELATORIOS,\r\n moduloPlano: constants.modulosPlanos.moduloFinanceiroMovimentacoes\r\n },\r\n {\r\n url: 'relatorios/demonstracao-resultado-exercicio',\r\n title: 'DRE',\r\n moduloId: constants.MODULOS.RELATORIOS,\r\n moduloPlano: constants.modulosPlanos.moduloFinanceiroMovimentacoes\r\n }\r\n ]\r\n },\r\n {\r\n icon: 'fa fa-users-cog',\r\n title: 'Painel Administrativo',\r\n url: '/painel-admin/gerenciar-empresa',\r\n caret: false,\r\n moduloId: constants.MODULOS.PAINEL_ADMIN,\r\n }\r\n];\r\n\r\n\r\nexport default pageMenuFinanceiro;\r\n","const pageMenuClienteResponsavel = [\r\n {\r\n title: 'MENU CLIENTE',\r\n isTitle: true\r\n },\r\n {\r\n icon: 'fas fa-list',\r\n title: 'Cardápio',\r\n url: '/cardapio-cliente',\r\n },\r\n];\r\n\r\nexport default pageMenuClienteResponsavel;\r\n","
\r\n
\r\n \"\"\r\n
\r\n
\r\n
{{localStorageObject?.empresaSelecionada?.nomeFantasia}}
\r\n {{planoEmpresa?.plano?.nome}} - {{planoEmpresa?.dataTermino | date: 'dd/MM/yyyy - HH:mm:ss'}}\r\n \r\n
\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
ItemAtivo
{{item.key | moduloPlano}}\r\n Sim\r\n \r\n {{item?.value}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { PlanoEmpresa } from 'src/app/shared/models/planoEmpresa';\r\nimport { LocalStorageObject } from '../services/localStorageObject.service';\r\n\r\n@Component({\r\n selector: 'app-menu-empresa',\r\n templateUrl: './menu-empresa.component.html',\r\n styleUrls: ['./menu-empresa.component.scss']\r\n})\r\nexport class MenuEmpresaComponent implements OnInit {\r\n\r\n @Input() logoEmpresa: string;\r\n\r\n planoEmpresa: PlanoEmpresa;\r\n\r\n constructor(\r\n public readonly localStorageObject: LocalStorageObject,\r\n ) {\r\n this.planoEmpresa = new PlanoEmpresa();\r\n }\r\n\r\n ngOnInit() {\r\n this.planoEmpresa = this.localStorageObject?.empresaSelecionada?.planoEmpresa;\r\n }\r\n}\r\n","\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n\r\n \r\n \r\n \r\n
    \r\n
  • \r\n
    \r\n
    \r\n \r\n
    \r\n
  • \r\n
  • \r\n \"\"\r\n
  • \r\n
\r\n
\r\n\r\n \r\n
    \r\n
  • \r\n \r\n \r\n
  • \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n\r\n\r\n\r\n {{ menu.badge }}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n {{ menu?.title }}\r\n {{menu?.label}}\r\n \r\n\r\n\r\n\r\n\r\n \r\n {{' ' + menu.title }}\r\n \r\n\r\n","import { animate, style, trigger, transition, state } from '@angular/animations';\r\nimport { Component, Input, Output, EventEmitter, ElementRef, HostListener, ViewChild, OnInit, AfterViewChecked, OnDestroy } from '@angular/core';\r\nimport pageSettings from '../config/page-settings';\r\nimport { NavigationEnd, Router } from '@angular/router';\r\nimport { NgBlockUI, BlockUI } from 'ng-block-ui';\r\nimport { UsuarioEmpresa } from 'src/app/shared/models/usuarioEmpresa';\r\nimport { Usuario } from 'src/app/shared/models/usuario';\r\nimport constants from '../config/constants';\r\nimport { ModalBloqueioPlanoComponent } from 'src/app/shared/modal-bloqueio-plano/modal-bloqueio-plano.component';\r\nimport { ModalBloqueioPlanoService } from 'src/app/shared/modal-bloqueio-plano/modal-bloqueio-plano.service';\r\nimport pageMenus from '../config/page-menus';\r\nimport pageMenuAdmin from '../config/page-menu-admin';\r\nimport pageMenuFinanceiro from '../config/page-menu-financeiro';\r\nimport { LocalStorageObject } from '../services/localStorageObject.service';\r\nimport { PermissoesService } from '../auth/permissoes.service';\r\nimport { TipoUsuarioEnum } from 'src/app/shared/models/enum/tipoUsuario.enum';\r\nimport pageMenuClienteResponsavel from '../config/page-menu-cliente-responsavel';\r\nimport { Subscription } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'app-sidebar',\r\n templateUrl: './sidebar.component.html',\r\n styleUrls: ['./sidebar.component.scss'],\r\n animations: [\r\n trigger('expandCollapse', [\r\n state('expand', style({ height: '*', overflow: 'hidden', display: 'block' })),\r\n state('collapse', style({ height: '0px', overflow: 'hidden', display: 'block' })),\r\n state('active', style({ height: '*', overflow: 'hidden', display: 'block' })),\r\n transition('expand <=> collapse', animate(100)),\r\n transition('active => collapse', animate(100))\r\n ])\r\n ]\r\n})\r\n\r\nexport class SidebarComponent implements OnInit, AfterViewChecked, OnDestroy {\r\n\r\n @BlockUI() blockUI: NgBlockUI;\r\n\r\n @ViewChild(ModalBloqueioPlanoComponent, { static: false }) 'modalBloqueioPlanoComponent': ModalBloqueioPlanoComponent;\r\n @ViewChild('sidebarScrollbar', { static: true }) sidebarScrollbar: ElementRef;\r\n @Output() toggleSidebarMinified = new EventEmitter();\r\n @Output() hideMobileSidebar = new EventEmitter();\r\n @Input() pageSidebarTransparent;\r\n @Input() pageSidebarMinified;\r\n\r\n usuarioEmpresas: Array;\r\n usuario: Usuario;\r\n modulos: any;\r\n navProfileState = 'collapse';\r\n isExpand: boolean;\r\n isCaretActive: boolean;\r\n\r\n menus: any;\r\n pageSettings = pageSettings;\r\n\r\n mobileMode: boolean;\r\n desktopMode: boolean;\r\n scrollTop: number;\r\n token: string;\r\n url: string;\r\n subscriptionRouter: Subscription;\r\n subscriptionEmpresaSelecionada: Subscription;\r\n\r\n constructor(\r\n private readonly eRef: ElementRef,\r\n private readonly router: Router,\r\n private readonly modalBloqueioPlanoService: ModalBloqueioPlanoService,\r\n private readonly localStorageObject: LocalStorageObject,\r\n private readonly permissoesService: PermissoesService\r\n ) {\r\n this.isExpand = false;\r\n this.usuario = this.localStorageObject.usuario;\r\n this.usuarioEmpresas = this.usuario.usuarioEmpresa;\r\n this.token = this.localStorageObject.token;\r\n this.modulos = constants.MODULOS;\r\n\r\n if (window.innerWidth <= 767) {\r\n this.mobileMode = true;\r\n this.desktopMode = false;\r\n } else {\r\n this.mobileMode = false;\r\n this.desktopMode = true;\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n this.validarMenu(null);\r\n this.subscribes();\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.subscriptionRouter) {\r\n this.subscriptionRouter.unsubscribe();\r\n }\r\n if (this.subscriptionEmpresaSelecionada) {\r\n this.subscriptionEmpresaSelecionada.unsubscribe();\r\n }\r\n }\r\n\r\n ngAfterViewChecked() {\r\n if (typeof (Storage) !== 'undefined' && localStorage.sidebarScroll) {\r\n if (this.sidebarScrollbar && this.sidebarScrollbar.nativeElement) {\r\n this.sidebarScrollbar.nativeElement.scrollTop = localStorage.sidebarScroll;\r\n }\r\n }\r\n }\r\n\r\n @HostListener('document:click', ['$event'])\r\n clickout(event) {\r\n if (!this.eRef.nativeElement.contains(event.target)) {\r\n this.hideMobileSidebar.emit(true);\r\n }\r\n }\r\n\r\n @HostListener('scroll', ['$event'])\r\n onScroll(event) {\r\n this.scrollTop = (this.pageSettings.pageSidebarMinified) ? event.srcElement.scrollTop + 40 : 0;\r\n if (typeof (Storage) !== 'undefined') {\r\n localStorage.setItem('sidebarScroll', event.srcElement.scrollTop);\r\n }\r\n }\r\n\r\n @HostListener('window:resize', ['$event'])\r\n onResize(event) {\r\n if (window.innerWidth <= 767) {\r\n this.mobileMode = true;\r\n this.desktopMode = false;\r\n } else {\r\n this.mobileMode = false;\r\n this.desktopMode = true;\r\n }\r\n }\r\n\r\n subscribes(): void {\r\n this.subscriptionRouter = this.router.events.subscribe(response => {\r\n if (response instanceof NavigationEnd) {\r\n const route = response.url.substring(0, 6);\r\n this.validarMenu(route);\r\n }\r\n });\r\n\r\n this.subscriptionEmpresaSelecionada = this.localStorageObject.notificadorAlterarEmpresa.subscribe(response => {\r\n const rotaAtual = this.router.url;\r\n this.validarMenu(rotaAtual);\r\n });\r\n }\r\n\r\n validarMenu(route: string): void {\r\n if (route === '/admin') {\r\n this.menus = pageMenuAdmin;\r\n } else {\r\n if (this.localStorageObject?.empresaSelecionada && this.localStorageObject?.empresaSelecionada?.id !== '') {\r\n if (this.localStorageObject?.empresaSelecionada?.tipo === 0) {\r\n this.menus = pageMenus;\r\n }\r\n\r\n if (this.localStorageObject?.empresaSelecionada?.tipo === 1) {\r\n this.menus = pageMenuFinanceiro;\r\n }\r\n } else {\r\n if (this.localStorageObject?.usuario?.tipoUsuario === TipoUsuarioEnum.ClienteResponsavel) {\r\n this.menus = pageMenuClienteResponsavel;\r\n }\r\n }\r\n }\r\n }\r\n\r\n toggleNavProfile(): void {\r\n if (this.navProfileState === 'collapse') {\r\n this.navProfileState = 'expand';\r\n } else {\r\n this.navProfileState = 'collapse';\r\n }\r\n }\r\n\r\n toggleMinified(): void {\r\n this.toggleSidebarMinified.emit(true);\r\n this.scrollTop = 0;\r\n this.isExpand = !this.isExpand;\r\n\r\n }\r\n\r\n expandCollapseSubmenu(currentMenu, allMenu, active): void {\r\n for (const menu of allMenu) {\r\n if (menu !== currentMenu) {\r\n menu.state = 'collapse';\r\n }\r\n }\r\n if (currentMenu.state === 'expand' || (active.isActive && !currentMenu.state)) {\r\n currentMenu.state = 'collapse';\r\n } else {\r\n currentMenu.state = 'expand';\r\n }\r\n }\r\n\r\n usuarioLogado(): boolean {\r\n this.token = this.localStorageObject.token;\r\n if (!this.token) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n navigateMenu(menu){\r\n if (this.podeExibirModuloPlano(menu.moduloPlano)) {\r\n this.router.navigate([menu.url]);\r\n }\r\n else{\r\n this.abrirModalModuloBloqueadoPlano(menu);\r\n }\r\n }\r\n\r\n podeExibirGrupoModulosPlano(submenu): boolean {\r\n // Verificando se tem permissao em pelo menos um dos itens\r\n let podeExibir = false;\r\n\r\n\r\n for (let i = 0; i < submenu.length; i++) {\r\n const subItem = submenu[i];\r\n\r\n if (this.permissoesService.podeExibirModuloPlano(subItem.moduloPlano)) {\r\n podeExibir = true;\r\n break;\r\n }\r\n }\r\n\r\n return podeExibir;\r\n }\r\n\r\n podeExibirModuloPlano(moduloPlano: string[]): boolean {\r\n return this.permissoesService.podeExibirModuloPlano(moduloPlano);\r\n }\r\n\r\n isModuloPlanoVisivel(moduloPlano: string[]): boolean {\r\n return this.permissoesService.isModuloPlanoVisivel(moduloPlano);\r\n }\r\n\r\n abrirModalModuloBloqueadoPlano(menu) {\r\n if (menu.moduloPlano) {\r\n this.modalBloqueioPlanoService.notificar({ modulo: menu.moduloPlano });\r\n }\r\n else {\r\n const moduloPlano = 'modulo' + menu.title;\r\n this.modalBloqueioPlanoService.notificar({ modulo: moduloPlano });\r\n }\r\n }\r\n\r\n podeExibirModulo(moduloId): boolean {\r\n return this.permissoesService.podeExibirModulo(moduloId);\r\n }\r\n\r\n podeExibirGrupoModulos(submenu): boolean {\r\n // Verificando se tem permissao em pelo menos um dos itens\r\n let podeExibir = false;\r\n\r\n\r\n for (let i = 0; i < submenu.length; i++) {\r\n const subItem = submenu[i];\r\n\r\n if (this.permissoesService.podeExibirModulo(subItem.moduloId)) {\r\n podeExibir = true;\r\n break;\r\n }\r\n }\r\n\r\n\r\n return podeExibir;\r\n }\r\n\r\n logoEmpresa(): string {\r\n let retorno = '';\r\n const empresaSelecionada = this.localStorageObject.empresaSelecionada;\r\n\r\n if (empresaSelecionada && empresaSelecionada.urlFoto && empresaSelecionada.urlFoto.length > 0 && empresaSelecionada.planoEmpresa.plano.impressaoLogo) {\r\n retorno = empresaSelecionada.urlFoto;\r\n } else {\r\n retorno = '/assets/img/avatar-empresa_1.jpg';\r\n }\r\n\r\n return retorno;\r\n }\r\n}\r\n\r\n\r\n\r\n","\r\n \r\n
\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n
\r\n \r\n \r\n
\r\n\r\n","import { Component, HostListener, OnDestroy, OnInit } from '@angular/core';\r\nimport { Router, NavigationStart } from '@angular/router';\r\nimport { forkJoin, lastValueFrom, Subscription } from 'rxjs';\r\nimport pageSettings from '../../src/app/core/config/page-settings';\r\nimport { LocalStorageObject } from './core/services/localStorageObject.service';\r\nimport { Intercom } from 'ng-intercom';\r\nimport { LoginService } from './core/services/login.service';\r\nimport { EmpresaService } from './core/services/empresa.service';\r\nimport { BlockUI, NgBlockUI } from 'ng-block-ui';\r\n@Component({\r\n selector: 'app-root',\r\n templateUrl: './app.component.html',\r\n styleUrls: ['./app.component.scss']\r\n})\r\nexport class AppComponent implements OnInit, OnDestroy {\r\n\r\n @BlockUI() blockUI: NgBlockUI;\r\n\r\n subscription: Subscription;\r\n pageSettings;\r\n token: string;\r\n url: string;\r\n pageHasScroll: boolean;\r\n\r\n constructor(\r\n private readonly router: Router,\r\n private readonly localStorageObject: LocalStorageObject,\r\n private readonly intercom: Intercom,\r\n private readonly loginService: LoginService,\r\n private readonly empresaService: EmpresaService,\r\n ) {\r\n this.subscription = this.router.events.subscribe((e) => {\r\n if (e instanceof NavigationStart) {\r\n if (window.innerWidth < 768) {\r\n this.pageSettings.pageMobileSidebarToggled = false;\r\n }\r\n }\r\n });\r\n\r\n this.localStorageObject.popularVariavelGlobalEmpresa();\r\n this.localStorageObject.popularVariavelGlobalUsuario();\r\n this.localStorageObject.popularVariavelGlobalToken();\r\n }\r\n\r\n ngOnInit() {\r\n this.pageSettings = pageSettings;\r\n\r\n if (this.localStorageObject.empresaSelecionada && this.localStorageObject.usuario) {\r\n\r\n this.blockUI.start();\r\n forkJoin(\r\n [\r\n this.empresaService.obterPeloId(this.localStorageObject?.empresaSelecionada?.id),\r\n this.loginService.obterPorId(this.localStorageObject.usuario.id)\r\n ]\r\n ).subscribe(async response => {\r\n\r\n const usuarioEmpresaSelecionada = response[1].usuarioEmpresa.find(x => x.empresa.id === response[0].id);\r\n\r\n if (usuarioEmpresaSelecionada) {\r\n const tokenPermissoesEmpresa = await lastValueFrom(this.loginService.tokenPermissoesEmpresa(this.localStorageObject.usuario.id, usuarioEmpresaSelecionada.id));\r\n\r\n if (tokenPermissoesEmpresa) {\r\n response[1].permissoes = tokenPermissoesEmpresa?.permissoes;\r\n response[1].perfilId = tokenPermissoesEmpresa?.perfilId;\r\n response[1].perfilNome = tokenPermissoesEmpresa?.perfilNome;\r\n response[1].superAdmin = tokenPermissoesEmpresa?.superAdmin;\r\n\r\n localStorage.setItem('rotulagem.token', tokenPermissoesEmpresa?.access_token);\r\n localStorage.setItem('rotulagem.expira', tokenPermissoesEmpresa?.expires_in);\r\n this.localStorageObject.popularVariavelGlobalToken();\r\n }\r\n }\r\n\r\n localStorage.setItem('rotulagem.empresaSelecionada', JSON.stringify(response[0]));\r\n localStorage.setItem('rotulagem.usuario', JSON.stringify(response[1]));\r\n this.localStorageObject.popularVariavelGlobalEmpresa();\r\n this.localStorageObject.popularVariavelGlobalUsuario();\r\n\r\n //this.intercom.boot({\r\n // app_id: 'myjflzle',\r\n // // Supports all optional configuration.\r\n // user_id: this.localStorageObject.usuario?.id,\r\n // name: this.localStorageObject.usuario?.nome,\r\n // email: this.localStorageObject.usuario?.email,\r\n // phone: this.localStorageObject.usuario?.phoneNumber,\r\n // plano: this.localStorageObject.empresaSelecionada?.planoEmpresa?.plano?.nome,\r\n // empresa: this.localStorageObject.empresaSelecionada?.nomeFantasia,\r\n // widget: {\r\n // activator: '#intercom'\r\n // }\r\n //});\r\n\r\n this.blockUI.stop();\r\n });\r\n }\r\n\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.subscription) {\r\n this.subscription.unsubscribe();\r\n }\r\n }\r\n\r\n @HostListener('window:scroll', ['$event'])\r\n onWindowScroll() {\r\n const doc = document.documentElement;\r\n const top = (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0);\r\n if (top > 0) {\r\n this.pageHasScroll = true;\r\n } else {\r\n this.pageHasScroll = false;\r\n }\r\n }\r\n\r\n // set page minified\r\n onToggleSidebarMinified(): void {\r\n if (this.pageSettings.pageSidebarMinified) {\r\n this.pageSettings.pageSidebarMinified = false;\r\n } else {\r\n this.pageSettings.pageSidebarMinified = true;\r\n }\r\n }\r\n\r\n // set page right collapse\r\n onToggleSidebarRight(): void {\r\n if (this.pageSettings.pageSidebarRightCollapsed) {\r\n this.pageSettings.pageSidebarRightCollapsed = false;\r\n } else {\r\n this.pageSettings.pageSidebarRightCollapsed = true;\r\n }\r\n }\r\n\r\n // hide mobile sidebar\r\n onHideMobileSidebar(): void {\r\n if (this.pageSettings.pageMobileSidebarToggled) {\r\n if (this.pageSettings.pageMobileSidebarFirstClicked) {\r\n this.pageSettings.pageMobileSidebarFirstClicked = false;\r\n } else {\r\n this.pageSettings.pageMobileSidebarToggled = false;\r\n }\r\n }\r\n }\r\n\r\n // toggle mobile sidebar\r\n onToggleMobileSidebar(): void {\r\n if (this.pageSettings.pageMobileSidebarToggled) {\r\n this.pageSettings.pageMobileSidebarToggled = false;\r\n } else {\r\n this.pageSettings.pageMobileSidebarToggled = true;\r\n this.pageSettings.pageMobileSidebarFirstClicked = true;\r\n }\r\n }\r\n\r\n // hide right mobile sidebar\r\n onHideMobileRightSidebar(): void {\r\n if (this.pageSettings.pageMobileRightSidebarToggled) {\r\n if (this.pageSettings.pageMobileRightSidebarFirstClicked) {\r\n this.pageSettings.pageMobileRightSidebarFirstClicked = false;\r\n } else {\r\n this.pageSettings.pageMobileRightSidebarToggled = false;\r\n }\r\n }\r\n }\r\n\r\n // toggle right mobile sidebar\r\n onToggleMobileRightSidebar(): void {\r\n if (this.pageSettings.pageMobileRightSidebarToggled) {\r\n this.pageSettings.pageMobileRightSidebarToggled = false;\r\n } else {\r\n this.pageSettings.pageMobileRightSidebarToggled = true;\r\n this.pageSettings.pageMobileRightSidebarFirstClicked = true;\r\n }\r\n }\r\n\r\n usuarioLogado(): boolean {\r\n return this.localStorageObject.token ? true : false;\r\n }\r\n}\r\n\r\n\r\n\r\n","import { HttpInterceptor, HttpRequest, HttpEvent, HttpHandler, HttpResponse, HttpErrorResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { Injectable } from '@angular/core';\r\nimport * as moment from 'moment';\r\nimport { tap } from 'rxjs/operators';\r\nimport { AuthService } from './auth.service';\r\n\r\n@Injectable()\r\nexport class JwtInterceptor implements HttpInterceptor {\r\n\r\n constructor(\r\n private readonly authService: AuthService,\r\n ) { }\r\n\r\n intercept(request: HttpRequest, next: HttpHandler): Observable> {\r\n\r\n return next.handle(request).pipe(tap ((event: HttpEvent) => {\r\n\r\n if (event instanceof HttpResponse) {\r\n // do stuff with response if you want\r\n\r\n // Verificando se o Token ainda está válido\r\n const expira = localStorage.getItem('rotulagem.expira');\r\n if (expira) {\r\n\r\n const dtExpira = moment(expira);\r\n if (moment().isAfter(dtExpira)) {\r\n this.authService.logout(true);\r\n\r\n }\r\n }\r\n }\r\n }, (err: any) => {\r\n\r\n if (err instanceof HttpErrorResponse) {\r\n if (err.status === 401) {\r\n // redirect to the login route\r\n this.authService.logout(false);\r\n }\r\n }\r\n }));\r\n }\r\n\r\n}\r\n","import { BrowserModule } from '@angular/platform-browser';\r\nimport { NgModule, LOCALE_ID, CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA } from '@angular/core';\r\nimport { AppRoutingModule } from './app-routing.module';\r\nimport { AppComponent } from './app.component';\r\nimport { HeaderComponent } from './core/header/header.component';\r\nimport { SharedModule } from './shared/shared.module';\r\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\r\nimport { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';\r\nimport locatePt from '@angular/common/locales/pt';\r\nimport { registerLocaleData } from '@angular/common';\r\nimport { MenuUsuarioComponent } from './core/menu-usuario/menu-usuario.component';\r\nimport { MenuEmpresaComponent } from './core/menu-empresa/menu-empresa.component';\r\nimport { MenuComponent } from './core/menu/menu.component';\r\nimport { HomeComponent } from './modules/home/home.component';\r\nimport { NotFoundComponent } from './core/not-found/not-found.component';\r\nimport { MenuAdminComponent } from './core/header/menu-admin/menu-admin.component';\r\nimport { MenuUsuarioAdminComponent } from './core/menu-usuario-admin/menu-usuario-admin.component';\r\nimport { SidebarComponent } from './core/sidebar/sidebar.component';\r\nimport { NgbModule } from '@ng-bootstrap/ng-bootstrap';\r\nimport { ModalModule, BsModalRef } from 'ngx-bootstrap/modal';\r\nimport { ToastrModule } from 'ngx-toastr';\r\nimport { JwtInterceptor } from './core/auth/jwtinterceptor';\r\nimport { ModalOnboardHomeComponent } from './core/onboard/modal-onboard-home/modal-onboard-home.component';\r\nimport { ModalBloqueioPlanoComponent } from './shared/modal-bloqueio-plano/modal-bloqueio-plano.component';\r\nimport { NgxTreeDndModule } from 'ngx-tree-dnd';\r\nimport { NotificacaoComponent } from './core/notificacao/notificacao.component';\r\nimport { IntercomModule } from 'ng-intercom';\r\n\r\nregisterLocaleData(locatePt, 'pt');\r\n\r\n@NgModule({\r\n declarations: [\r\n AppComponent,\r\n HeaderComponent,\r\n HomeComponent,\r\n NotFoundComponent,\r\n MenuUsuarioComponent,\r\n MenuEmpresaComponent,\r\n MenuComponent,\r\n NotFoundComponent,\r\n MenuAdminComponent,\r\n MenuUsuarioAdminComponent,\r\n SidebarComponent,\r\n ModalOnboardHomeComponent,\r\n ModalBloqueioPlanoComponent,\r\n NotificacaoComponent\r\n ],\r\n imports: [\r\n BrowserModule,\r\n BrowserAnimationsModule,\r\n HttpClientModule,\r\n SharedModule.forRoot(),\r\n AppRoutingModule,\r\n NgbModule,\r\n ModalModule.forRoot(),\r\n ToastrModule.forRoot(),\r\n NgxTreeDndModule,\r\n IntercomModule.forRoot({\r\n appId: 'myjflzle', // from your Intercom config\r\n updateOnRouterChange: true // will automatically run `update` on router event changes. Default: `false`\r\n })\r\n ],\r\n exports: [],\r\n providers: [\r\n BsModalRef,\r\n { provide: LOCALE_ID, useValue: 'pt' },\r\n { provide: HTTP_INTERCEPTORS, useClass: JwtInterceptor, multi: true }\r\n ],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA],\r\n bootstrap: [AppComponent]\r\n})\r\nexport class AppModule {}\r\n","import { enableProdMode } from '@angular/core';\r\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\r\n\r\nimport { AppModule } from './app/app.module';\r\nimport { environment } from './environments/environment';\r\n\r\nif (environment.production) {\r\n enableProdMode();\r\n}\r\n\r\nplatformBrowserDynamic().bootstrapModule(AppModule)\r\n .catch(err => console.error(err));\r\n","var map = {\n\t\"./af\": 58685,\n\t\"./af.js\": 58685,\n\t\"./ar\": 254,\n\t\"./ar-dz\": 4312,\n\t\"./ar-dz.js\": 4312,\n\t\"./ar-kw\": 32614,\n\t\"./ar-kw.js\": 32614,\n\t\"./ar-ly\": 18630,\n\t\"./ar-ly.js\": 18630,\n\t\"./ar-ma\": 28674,\n\t\"./ar-ma.js\": 28674,\n\t\"./ar-sa\": 49032,\n\t\"./ar-sa.js\": 49032,\n\t\"./ar-tn\": 24730,\n\t\"./ar-tn.js\": 24730,\n\t\"./ar.js\": 254,\n\t\"./az\": 53052,\n\t\"./az.js\": 53052,\n\t\"./be\": 60150,\n\t\"./be.js\": 60150,\n\t\"./bg\": 63069,\n\t\"./bg.js\": 63069,\n\t\"./bm\": 13466,\n\t\"./bm.js\": 13466,\n\t\"./bn\": 18516,\n\t\"./bn-bd\": 90557,\n\t\"./bn-bd.js\": 90557,\n\t\"./bn.js\": 18516,\n\t\"./bo\": 26273,\n\t\"./bo.js\": 26273,\n\t\"./br\": 9588,\n\t\"./br.js\": 9588,\n\t\"./bs\": 19815,\n\t\"./bs.js\": 19815,\n\t\"./ca\": 83331,\n\t\"./ca.js\": 83331,\n\t\"./cs\": 21320,\n\t\"./cs.js\": 21320,\n\t\"./cv\": 72219,\n\t\"./cv.js\": 72219,\n\t\"./cy\": 68266,\n\t\"./cy.js\": 68266,\n\t\"./da\": 66427,\n\t\"./da.js\": 66427,\n\t\"./de\": 67435,\n\t\"./de-at\": 52871,\n\t\"./de-at.js\": 52871,\n\t\"./de-ch\": 12994,\n\t\"./de-ch.js\": 12994,\n\t\"./de.js\": 67435,\n\t\"./dv\": 82357,\n\t\"./dv.js\": 82357,\n\t\"./el\": 95649,\n\t\"./el.js\": 95649,\n\t\"./en-au\": 59961,\n\t\"./en-au.js\": 59961,\n\t\"./en-ca\": 19878,\n\t\"./en-ca.js\": 19878,\n\t\"./en-gb\": 3924,\n\t\"./en-gb.js\": 3924,\n\t\"./en-ie\": 70864,\n\t\"./en-ie.js\": 70864,\n\t\"./en-il\": 91579,\n\t\"./en-il.js\": 91579,\n\t\"./en-in\": 30940,\n\t\"./en-in.js\": 30940,\n\t\"./en-nz\": 16181,\n\t\"./en-nz.js\": 16181,\n\t\"./en-sg\": 44301,\n\t\"./en-sg.js\": 44301,\n\t\"./eo\": 85291,\n\t\"./eo.js\": 85291,\n\t\"./es\": 54529,\n\t\"./es-do\": 53764,\n\t\"./es-do.js\": 53764,\n\t\"./es-mx\": 12584,\n\t\"./es-mx.js\": 12584,\n\t\"./es-us\": 63425,\n\t\"./es-us.js\": 63425,\n\t\"./es.js\": 54529,\n\t\"./et\": 35203,\n\t\"./et.js\": 35203,\n\t\"./eu\": 70678,\n\t\"./eu.js\": 70678,\n\t\"./fa\": 83483,\n\t\"./fa.js\": 83483,\n\t\"./fi\": 96262,\n\t\"./fi.js\": 96262,\n\t\"./fil\": 52521,\n\t\"./fil.js\": 52521,\n\t\"./fo\": 34555,\n\t\"./fo.js\": 34555,\n\t\"./fr\": 63131,\n\t\"./fr-ca\": 88239,\n\t\"./fr-ca.js\": 88239,\n\t\"./fr-ch\": 21702,\n\t\"./fr-ch.js\": 21702,\n\t\"./fr.js\": 63131,\n\t\"./fy\": 267,\n\t\"./fy.js\": 267,\n\t\"./ga\": 23821,\n\t\"./ga.js\": 23821,\n\t\"./gd\": 71753,\n\t\"./gd.js\": 71753,\n\t\"./gl\": 4074,\n\t\"./gl.js\": 4074,\n\t\"./gom-deva\": 92762,\n\t\"./gom-deva.js\": 92762,\n\t\"./gom-latn\": 5969,\n\t\"./gom-latn.js\": 5969,\n\t\"./gu\": 82809,\n\t\"./gu.js\": 82809,\n\t\"./he\": 45402,\n\t\"./he.js\": 45402,\n\t\"./hi\": 315,\n\t\"./hi.js\": 315,\n\t\"./hr\": 10410,\n\t\"./hr.js\": 10410,\n\t\"./hu\": 38288,\n\t\"./hu.js\": 38288,\n\t\"./hy-am\": 67928,\n\t\"./hy-am.js\": 67928,\n\t\"./id\": 71334,\n\t\"./id.js\": 71334,\n\t\"./is\": 86959,\n\t\"./is.js\": 86959,\n\t\"./it\": 34864,\n\t\"./it-ch\": 51124,\n\t\"./it-ch.js\": 51124,\n\t\"./it.js\": 34864,\n\t\"./ja\": 36141,\n\t\"./ja.js\": 36141,\n\t\"./jv\": 29187,\n\t\"./jv.js\": 29187,\n\t\"./ka\": 42136,\n\t\"./ka.js\": 42136,\n\t\"./kk\": 94332,\n\t\"./kk.js\": 94332,\n\t\"./km\": 18607,\n\t\"./km.js\": 18607,\n\t\"./kn\": 84305,\n\t\"./kn.js\": 84305,\n\t\"./ko\": 70234,\n\t\"./ko.js\": 70234,\n\t\"./ku\": 16003,\n\t\"./ku.js\": 16003,\n\t\"./ky\": 75061,\n\t\"./ky.js\": 75061,\n\t\"./lb\": 32786,\n\t\"./lb.js\": 32786,\n\t\"./lo\": 66183,\n\t\"./lo.js\": 66183,\n\t\"./lt\": 50029,\n\t\"./lt.js\": 50029,\n\t\"./lv\": 24169,\n\t\"./lv.js\": 24169,\n\t\"./me\": 68577,\n\t\"./me.js\": 68577,\n\t\"./mi\": 68177,\n\t\"./mi.js\": 68177,\n\t\"./mk\": 50337,\n\t\"./mk.js\": 50337,\n\t\"./ml\": 65260,\n\t\"./ml.js\": 65260,\n\t\"./mn\": 52325,\n\t\"./mn.js\": 52325,\n\t\"./mr\": 14695,\n\t\"./mr.js\": 14695,\n\t\"./ms\": 75334,\n\t\"./ms-my\": 37151,\n\t\"./ms-my.js\": 37151,\n\t\"./ms.js\": 75334,\n\t\"./mt\": 63570,\n\t\"./mt.js\": 63570,\n\t\"./my\": 97963,\n\t\"./my.js\": 97963,\n\t\"./nb\": 88028,\n\t\"./nb.js\": 88028,\n\t\"./ne\": 86638,\n\t\"./ne.js\": 86638,\n\t\"./nl\": 50302,\n\t\"./nl-be\": 66782,\n\t\"./nl-be.js\": 66782,\n\t\"./nl.js\": 50302,\n\t\"./nn\": 33501,\n\t\"./nn.js\": 33501,\n\t\"./oc-lnc\": 50563,\n\t\"./oc-lnc.js\": 50563,\n\t\"./pa-in\": 50869,\n\t\"./pa-in.js\": 50869,\n\t\"./pl\": 65302,\n\t\"./pl.js\": 65302,\n\t\"./pt\": 49687,\n\t\"./pt-br\": 74884,\n\t\"./pt-br.js\": 74884,\n\t\"./pt.js\": 49687,\n\t\"./ro\": 79107,\n\t\"./ro.js\": 79107,\n\t\"./ru\": 33627,\n\t\"./ru.js\": 33627,\n\t\"./sd\": 30355,\n\t\"./sd.js\": 30355,\n\t\"./se\": 83427,\n\t\"./se.js\": 83427,\n\t\"./si\": 11848,\n\t\"./si.js\": 11848,\n\t\"./sk\": 54590,\n\t\"./sk.js\": 54590,\n\t\"./sl\": 20184,\n\t\"./sl.js\": 20184,\n\t\"./sq\": 56361,\n\t\"./sq.js\": 56361,\n\t\"./sr\": 78965,\n\t\"./sr-cyrl\": 81287,\n\t\"./sr-cyrl.js\": 81287,\n\t\"./sr.js\": 78965,\n\t\"./ss\": 25456,\n\t\"./ss.js\": 25456,\n\t\"./sv\": 70451,\n\t\"./sv.js\": 70451,\n\t\"./sw\": 77558,\n\t\"./sw.js\": 77558,\n\t\"./ta\": 51356,\n\t\"./ta.js\": 51356,\n\t\"./te\": 73693,\n\t\"./te.js\": 73693,\n\t\"./tet\": 21243,\n\t\"./tet.js\": 21243,\n\t\"./tg\": 42500,\n\t\"./tg.js\": 42500,\n\t\"./th\": 55768,\n\t\"./th.js\": 55768,\n\t\"./tk\": 77761,\n\t\"./tk.js\": 77761,\n\t\"./tl-ph\": 35780,\n\t\"./tl-ph.js\": 35780,\n\t\"./tlh\": 29590,\n\t\"./tlh.js\": 29590,\n\t\"./tr\": 33807,\n\t\"./tr.js\": 33807,\n\t\"./tzl\": 93857,\n\t\"./tzl.js\": 93857,\n\t\"./tzm\": 60654,\n\t\"./tzm-latn\": 8806,\n\t\"./tzm-latn.js\": 8806,\n\t\"./tzm.js\": 60654,\n\t\"./ug-cn\": 30845,\n\t\"./ug-cn.js\": 30845,\n\t\"./uk\": 19232,\n\t\"./uk.js\": 19232,\n\t\"./ur\": 47052,\n\t\"./ur.js\": 47052,\n\t\"./uz\": 77967,\n\t\"./uz-latn\": 32233,\n\t\"./uz-latn.js\": 32233,\n\t\"./uz.js\": 77967,\n\t\"./vi\": 98615,\n\t\"./vi.js\": 98615,\n\t\"./x-pseudo\": 12320,\n\t\"./x-pseudo.js\": 12320,\n\t\"./yo\": 31313,\n\t\"./yo.js\": 31313,\n\t\"./zh-cn\": 64490,\n\t\"./zh-cn.js\": 64490,\n\t\"./zh-hk\": 55910,\n\t\"./zh-hk.js\": 55910,\n\t\"./zh-mo\": 98262,\n\t\"./zh-mo.js\": 98262,\n\t\"./zh-tw\": 44223,\n\t\"./zh-tw.js\": 44223\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 46700;"],"sourceRoot":"webpack:///","file":"main.9ac4e26ff8b8efd7.js"}